#ifndef _DCTC_HUB_H #define _DCTC_HUB_H #include #include #include #include using namespace std; class dc_user; class dctc_connection; class dctc_hub : public QObject { Q_OBJECT public: dctc_hub(QObject *parent = 0, const char* name = 0); ~dctc_hub(); int hubconnect(const QString &ip,const QString &pwd, int pid = 0); int hubconnect(const QString &ip,const QString &pwd, const QString &profile); void hubdisconnect(); void connectToMaster(); void get_ulist() { send_command("/ULIST"); } const QString &get_hubip() const { return hubip; } void send_privmsg(const QString &msg,const QString &nick); static void killMaster(); void doPostInit(); static bool hasMasterConnection() {return master!=0;} // Used by the hubdisconnect signal to tell the receiver what caused the disconnection. enum {DISCONNECT_DIED,DISCONNECT_HUB}; public slots: void get_hub_name(); void search_for(const QString &pattern, bool multiHub); void get_file (int,const QString& user, const QString& file,const QString& localName, unsigned long int size); void addSource(int gdlid,const QString& user, const QString& file, unsigned long int size); void send_chatmsg(const QString &msg); void cancel_transfer(unsigned int id); void delete_gdl(unsigned int id,const QString&,const QString&); void get_user_list(const QString&); void get_uinfo(const QString &user); void attachFile(const QString&); void detachId(const unsigned int); void retryTransfer(const QString&); void sendPassword(const QString&); void request_dlist(); void reshare(); void updateDescription(); void getUserInfos(); void send_command(const QString &command); signals: // Signals used, AFAIK, only by transfer widget. void uploadAdded(const QString &info); void uploadUpdated(const QString &info); void uploadClosed(const QString &user, const QString &file); void gdlUpdated(const QString &info); void gdlListEnd(); // End of signals used only by transfer widget. void hub_name(const QString&); void user_added(const QString &, bool = false); void user_removed(const QString &); //void user_info(const QString&, const QString&, const QString&, const QString&); void user_info(const QString& nick, const QString& share, const QString& cnx, const QString &email, const QString& desc, bool away); void userIsOp(const QString& user); void data_to_send(const QString&); void logging(const QString &); void hubDisconnect(int); void hubReached(); //void connectionReady(); void progressBar(const QString& name,const QString& progress,const QStringList& messages); /// Emitted when dctc has a search result. void search_file(const QString&, const QString&, const QString &, const QString &, const QString&); /* // Signals related to downloads void new_transfer(int, const QString &nick); void transfer_info(int, const QString &fname, int, int, int, const QString &users, const QString &status); */ void active_transfers( list &llGdlIds ); void unattachedGDL(const QString&); // Emitted when the requested download already exists but is unattached /* // Signals related to uploads void new_upload(int,const QString&, const QString&); void transfer_info(int,int,int); void done_transfer(const QString &, const QString &); void done_transfer(int); */ void chat_msg(const QString&); void privchat_msg(const QString &,const QString &); // Emitted when a user file list has been received. void userFileList( const QString& ); void passwordRequired(); void userListArrived(const QStringList&); private slots: void dc_string(const QString&); void masterString(const QString&); void connection_died(); // void request_dlist(); -- moving this to public slots /estrato private: void parse_dctc_string(const QString &str); void parse_uinfo(const QString &str); void parse_file(const QString &str, QString& user, QString &file, QString &size); void parse_srest(const QString &str, QString& user, QString &file, QString &size, QString &slot, QString &); void parse_xferr(const QString &str); QString dctc_command_type(const QString &str); QString dctc_command_data(const QString &str); void parseGDLContent( const QString &str ); dctc_connection *connection; // This is the master connection, it is only created once when the first hub is created static dctc_connection *master; void send_command_master(const QString &cmd); QString message; QString hubip; bool incoming_info; bool incoming_xfer_info; // for all individual transfers, not same as gdl info // map idMap; QStringList userList; bool userListSent; }; #endif