From 826e8f3728533abd68e0b0d64d6d43018adf8972 Mon Sep 17 00:00:00 2001 From: csoler Date: Tue, 21 Feb 2012 21:53:25 +0000 Subject: [PATCH] - added ability to plugins to add a tab in transfers dialog - improved VOIP plugin to add RTT statistics tab to RS gui. - added comments in rsplugins.h - added big tooltip in transfers that would be stuck in checking... mode git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@4979 b45a01b8-16f6-495d-af2f-9b41ad6348cc --- libretroshare/src/retroshare/rsplugin.h | 52 +++++++++++++++++++--- plugins/VOIP/VOIPPlugin.cpp | 13 ++++++ plugins/VOIP/VOIPPlugin.h | 2 + plugins/VOIP/services/p3vors.cc | 2 + plugins/VOIP/services/rsvoipitems.cc | 25 +++++++++++ plugins/VOIP/services/rsvoipitems.h | 5 +-- retroshare-gui/src/gui/TransfersDialog.cpp | 18 +++++--- retroshare-gui/src/gui/TransfersDialog.h | 2 +- 8 files changed, 102 insertions(+), 17 deletions(-) diff --git a/libretroshare/src/retroshare/rsplugin.h b/libretroshare/src/retroshare/rsplugin.h index 9de9ccb4d..25e50869b 100644 --- a/libretroshare/src/retroshare/rsplugin.h +++ b/libretroshare/src/retroshare/rsplugin.h @@ -47,6 +47,7 @@ class RsCacheService ; class ftServer ; class ConfigPage ; class RsPQIService ; +class RsAutoUpdatePage ; // Used for the status of plugins. // @@ -77,23 +78,60 @@ public: class RsPlugin { public: - virtual RsCacheService *rs_cache_service() const { return NULL ; } + // + //================================ Services ==================================// + // + // Cache service. Use this for providing cache-based services, such as channels, forums. + // Example plugin: LinksCloud + // + virtual RsCacheService *rs_cache_service() const { return NULL ; } + + // Peer-to-Peer service. Use this for providing a service based to friend to friend + // exchange of data, such as chat, messages, etc. + // Example plugin: VOIP + // virtual RsPQIService *rs_pqi_service() const { return NULL ; } virtual uint16_t rs_service_id() const { return 0 ; } - virtual MainPage *qt_page() const { return NULL ; } - virtual QWidget *qt_config_panel() const { return NULL ; } - virtual QIcon *qt_icon() const { return NULL ; } - virtual ConfigPage *qt_config_page() const { return NULL ; } + // Filename used for saving the specific plugin configuration. Both RsCacheService and RsPQIService + // derive from p3Config, which means that the service provided by the plugin can load/save its own + // config by deriving loadList() and saveList() from p3Config. + // + virtual std::string configurationFileName() const { return std::string() ; } + + // + //=================================== GUI ====================================// + // + // Derive the following methods to provide GUI additions to RetroShare's GUI. + // + // Main page: like Transfers, Channels, Forums, etc. + // + virtual MainPage *qt_page() const { return NULL ; } // The page itself + virtual QIcon *qt_icon() const { return NULL ; } // the page icon. Todo: put icon as virtual in MainPage + + virtual QWidget *qt_config_panel() const { return NULL ; } // Config panel, to appear config->plugins->[]-> + virtual ConfigPage *qt_config_page() const { return NULL ; } // Config tab to add in config panel. + virtual RsAutoUpdatePage *qt_transfers_tab() const { return NULL ; } // Tab to add in transfers, after turtle statistics. + virtual std::string qt_transfers_tab_name()const { return "Tab" ; } // Tab name virtual QTranslator *qt_translator(QApplication * /* app */, const QString& /* languageCode */ ) const { return NULL ; } - virtual std::string configurationFileName() const { return std::string() ; } + // + //========================== Plugin Description ==============================// + // + // All these items appear in the config->plugins tab, as a description of the plugin. + // virtual std::string getShortPluginDescription() const = 0 ; virtual std::string getPluginName() const = 0 ; virtual void getPluginVersion(int& major,int& minor,int& svn_rev) const = 0 ; - virtual void setPlugInHandler(RsPluginHandler* pgHandler) = 0; + + // + //========================== Plugin Interface ================================// + // + // Use these methods to access main objects from RetroShare. + // virtual void setInterfaces(RsPlugInInterfaces& interfaces) = 0; + virtual void setPlugInHandler(RsPluginHandler* pgHandler) = 0; }; class RsPluginHandler diff --git a/plugins/VOIP/VOIPPlugin.cpp b/plugins/VOIP/VOIPPlugin.cpp index 995aa46e5..37cba30d9 100644 --- a/plugins/VOIP/VOIPPlugin.cpp +++ b/plugins/VOIP/VOIPPlugin.cpp @@ -1,9 +1,13 @@ #include +#include #include #include +#include #include "VOIPPlugin.h" #include "interface/rsvoip.h" + +#include "gui/VoipStatistics.h" #include "gui/AudioInputConfig.h" static void *inited = new VOIPPlugin() ; @@ -42,6 +46,15 @@ ConfigPage *VOIPPlugin::qt_config_page() const return new AudioInputConfig() ; } +std::string VOIPPlugin::qt_transfers_tab_name() const +{ + return QObject::tr("RTT Statistics").toStdString() ; +} +RsAutoUpdatePage *VOIPPlugin::qt_transfers_tab() const +{ + return new VoipStatistics ; +} + RsPQIService *VOIPPlugin::rs_pqi_service() const { if(mVoip == NULL) diff --git a/plugins/VOIP/VOIPPlugin.h b/plugins/VOIP/VOIPPlugin.h index 8459c180d..89981a48c 100644 --- a/plugins/VOIP/VOIPPlugin.h +++ b/plugins/VOIP/VOIPPlugin.h @@ -12,6 +12,8 @@ class VOIPPlugin: public RsPlugin virtual RsPQIService *rs_pqi_service() const ; virtual uint16_t rs_service_id() const { return RS_SERVICE_TYPE_VOIP_PLUGIN ; } virtual ConfigPage *qt_config_page() const ; + virtual RsAutoUpdatePage *qt_transfers_tab() const ; + virtual std::string qt_transfers_tab_name() const ; virtual QTranslator *qt_translator(QApplication *app, const QString& languageCode) const; diff --git a/plugins/VOIP/services/p3vors.cc b/plugins/VOIP/services/p3vors.cc index 49a4002ea..c08b34d2a 100644 --- a/plugins/VOIP/services/p3vors.cc +++ b/plugins/VOIP/services/p3vors.cc @@ -154,6 +154,8 @@ p3VoRS::p3VoRS(RsPluginHandler *handler) int p3VoRS::tick() { + std::cerr << "ticking p3VoRS" << std::endl; + processIncoming(); sendPackets(); diff --git a/plugins/VOIP/services/rsvoipitems.cc b/plugins/VOIP/services/rsvoipitems.cc index b23c76c68..f283f02d8 100644 --- a/plugins/VOIP/services/rsvoipitems.cc +++ b/plugins/VOIP/services/rsvoipitems.cc @@ -68,7 +68,32 @@ std::ostream& RsVoipPongItem::print(std::ostream &out, uint16_t indent) printRsItemEnd(out, "RsVoipPongItem", indent); return out; } +std::ostream& RsVoipProtocolItem::print(std::ostream &out, uint16_t indent) +{ + printRsItemBase(out, "RsVoipProtocolItem", indent); + uint16_t int_Indent = indent + 2; + printIndent(out, int_Indent); + out << "flags: " << flags << std::endl; + printIndent(out, int_Indent); + out << "protocol: " << std::hex << protocol << std::dec << std::endl; + + printRsItemEnd(out, "RsVoipProtocolItem", indent); + return out; +} +std::ostream& RsVoipDataItem::print(std::ostream &out, uint16_t indent) +{ + printRsItemBase(out, "RsVoipDataItem", indent); + uint16_t int_Indent = indent + 2; + printIndent(out, int_Indent); + out << "flags: " << flags << std::endl; + + printIndent(out, int_Indent); + out << "data size: " << std::hex << data_size << std::dec << std::endl; + + printRsItemEnd(out, "RsVoipDataItem", indent); + return out; +} /*************************************************************************/ uint32_t RsVoipDataItem::serial_size() const diff --git a/plugins/VOIP/services/rsvoipitems.h b/plugins/VOIP/services/rsvoipitems.h index c7f22a068..5a2373125 100644 --- a/plugins/VOIP/services/rsvoipitems.h +++ b/plugins/VOIP/services/rsvoipitems.h @@ -122,9 +122,8 @@ class RsVoipPongItem: public RsVoipItem virtual bool serialise(void *data,uint32_t& size) ; virtual uint32_t serial_size() const ; - virtual ~RsVoipPongItem(); - virtual void clear(); - virtual std::ostream& print(std::ostream &out, uint16_t indent = 0); + virtual ~RsVoipPongItem() {} + virtual std::ostream& print(std::ostream &out, uint16_t indent = 0); uint32_t mSeqNo; uint64_t mPingTS; diff --git a/retroshare-gui/src/gui/TransfersDialog.cpp b/retroshare-gui/src/gui/TransfersDialog.cpp index 56d9269d7..c061ab1f1 100644 --- a/retroshare-gui/src/gui/TransfersDialog.cpp +++ b/retroshare-gui/src/gui/TransfersDialog.cpp @@ -51,6 +51,7 @@ #include #include #include +#include /**** * #define SHOW_RTT_STATISTICS 1 @@ -304,10 +305,9 @@ TransfersDialog::TransfersDialog(QWidget *parent) ui.tabWidget->addTab( new TurtleRouterDialog(), tr("Router Requests")) ; -#ifdef SHOW_RTT_STATISTICS - ui.tabWidget->addTab( new VoipStatistics(), tr("RTT Statistics")) ; -#endif - + for(int i=0;inbPlugins();++i) + if(rsPlugins->plugin(i) != NULL && rsPlugins->plugin(i)->qt_transfers_tab() != NULL) + ui.tabWidget->addTab( rsPlugins->plugin(i)->qt_transfers_tab(),QString::fromStdString(rsPlugins->plugin(i)->qt_transfers_tab_name()) ) ; // TurtleRouterDialog *trdl = new TurtleRouterDialog(); // ui.tunnelInfoWidget->setWidget(trdl); @@ -595,7 +595,7 @@ void TransfersDialog::downloadListCostumPopupMenu( QPoint /*point*/ ) } int TransfersDialog::addItem(const QString&, const QString& name, const QString& coreID, qlonglong fileSize, const FileProgressInfo& pinfo, double dlspeed, - const QString& sources, const QString& status, const QString& priority, qlonglong completed, qlonglong remaining, qlonglong downloadtime) + const QString& sources, const QString& status, const QString& priority, qlonglong completed, qlonglong remaining, qlonglong downloadtime,const QString& tooltip) { int rowCount = DLListModel->rowCount(); int row ; @@ -626,6 +626,7 @@ int TransfersDialog::addItem(const QString&, const QString& name, const QString& DLListModel->setData(DLListModel->index(row, ID), QVariant((QString)coreID)); DLListModel->setData(DLListModel->index(row,NAME), FilesDefs::getIconFromFilename(name), Qt::DecorationRole); + DLListModel->item(row,STATUS)->setToolTip(tooltip) ; return row ; } @@ -897,7 +898,12 @@ void TransfersDialog::insertTransfers() for(uint32_t i=0;i::iterator vit; diff --git a/retroshare-gui/src/gui/TransfersDialog.h b/retroshare-gui/src/gui/TransfersDialog.h index 31376769f..87380357e 100644 --- a/retroshare-gui/src/gui/TransfersDialog.h +++ b/retroshare-gui/src/gui/TransfersDialog.h @@ -168,7 +168,7 @@ private: public slots: // these two functions add entries to the transfers dialog, and return the row id of the entry modified/added // - int addItem(const QString& symbol, const QString& name, const QString& coreID, qlonglong size, const FileProgressInfo& pinfo, double dlspeed, const QString& sources, const QString& status, const QString& priority, qlonglong completed, qlonglong remaining, qlonglong downloadtime); + int addItem(const QString& symbol, const QString& name, const QString& coreID, qlonglong size, const FileProgressInfo& pinfo, double dlspeed, const QString& sources, const QString& status, const QString& priority, qlonglong completed, qlonglong remaining, qlonglong downloadtime,const QString& tooltip); int addPeerToItem(int row, const QString& name, const QString& coreID, double dlspeed, uint32_t status, const FileProgressInfo& peerInfo); // void delItem(int row);