/***************************************************************************
knapster.h - description
-------------------
begin : Mon Dec 6 23:50:46 CST 1999
copyright : (C) 1999-2000 by John Donoghue
email : donoghue@chariot.net.au
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef KNAPSTER_H
#define KNAPSTER_H
#include <kapp.h>
#include <ktmainwindow.h>
#include <kprocess.h>
#include "napsterconnection.h"
#include "songinfo.h"
#include <qlist.h>
#include <qdatetime.h>
#include "../config.h" // for version etc
// class to hold info about panding pings that have been sent to the server
class PingItem
{
public:
PingItem(const QString &n)
{
user=n;
time.start(); // set to current time
}
QString user;
QTime time;
};
class QMultiLineEdit;
class QComboBox;
class QLineEdit;
class QListView;
class QListViewItem;
class QPoint;
class KSocket;
class QPopupMenu;
class SearchPanel;
class ConsolePanel;
class DownloadPanel;
class LibraryPanel;
class UploadPanel;
//class KHTMLView;
class Knapster : public KTMainWindow
{
Q_OBJECT
private slots:
// menu slots
void menuConsoleClear();
void menuLogon();
void menuRelogon();
void menuProperties();
// on app closedown
void closeDown();
// search slot - for the search win
void startSearch(int,const char *);
void searchDownload(QListViewItem *it);
// slot for the ConsolePanel command entry
void startConsoleCommand(const char *str);
// slot for capture of napster pending reads & close
void napsterRead(KSocket *);
void napsterClose(KSocket *);
// download slots
void downloadTerminate(QListViewItem *);
void playsong_dl(const char *);
// timer slot to update the download list info
void timeout();
// other slots
void addPingItem(const char *user);
void sendWhois(const char *user);
// playsong from mp3 library
void playsong(const char *);
public slots:
// load the mp3 paths from the prefs
void loadMP3LibraryPaths();
private:
NapsterConnection connection;
// listener for the napster connection
KSocket *listener;
// the external mp3 player process
KProcess player;
// tab1
ConsolePanel *console;
// tab2
SearchPanel *searchpanel;
// tab3
DownloadPanel *downloadpanel;
QList<SongInfo> downloadlist;
int dloadval;
// tab4
UploadPanel *uploadpanel;
QList<SongInfo> uploadlist;
// tab5
LibraryPanel *librarypanel;
// list of pending pings sent to the server
QList<PingItem> pinglist;
// shared song names
QStrList songnames;
int songpos; // pos in the list we are at in sending to the server
public:
/** constructor */
Knapster(const char *name=0);
/** destructor */
virtual ~Knapster();
private:
void setupMenus();
void setupTabs();
void writeConsole(char *s);
void writeConsole(QString s);
void addSearchItem(SongInfo *tmpinfo);
void addDownloadItem(SongInfo *tmpinfo);
void delDownloadItem(SongInfo *tmpinfo);
void showServerStats(NAPBLOCKPTR);
QString convertSecondsToDurationString(long s);
bool checkForConnections();
bool processDownloadConnection(int sock);
bool processUploadConnection(int sock);
bool startDownload(SongInfo *song);
SongInfo *parseSearchBuffer(char *buff);
SongInfo *parseBrowseBuffer(char *buff);
SongInfo *parseDownloadBuffer(char *buff);
SongInfo *parseRemoteQueueBuffer(char *buff);
void processWhoisResult(char *data);
void processWhoisOffline(char *data);
void processUploadRequest(char *data);
void processChanMessage(char *data);
void processChanUserJoined(char *data);
void processChanUserLeft(char *data);
void processUserMessage(char *data);
void processPingResult(char *data);
bool parsePathItem(const QString &str,QString &path,bool *share,int *depth);
void updateDownloadList();
void updateUploadList();
void sendSharedSongs();
};
#endif
| Generated by: jade@lost on Fri Mar 31 09:01:35 2000, using kdoc 2.0a22. |