From 9d0b0664f1993780ec7172c0b723e73727533211 Mon Sep 17 00:00:00 2001 From: thunder2 Date: Sun, 9 Aug 2015 22:07:24 +0200 Subject: [PATCH] Fixed hide offline friends in ServicePermissionsPage --- .../gui/settings/RSPermissionMatrixWidget.cpp | 44 +++++++++++-------- .../gui/settings/RSPermissionMatrixWidget.h | 5 +++ .../gui/settings/ServicePermissionsPage.cpp | 20 ++++----- .../src/gui/settings/ServicePermissionsPage.h | 3 -- 4 files changed, 39 insertions(+), 33 deletions(-) diff --git a/retroshare-gui/src/gui/settings/RSPermissionMatrixWidget.cpp b/retroshare-gui/src/gui/settings/RSPermissionMatrixWidget.cpp index cf9486ae5..cd2ffcf72 100644 --- a/retroshare-gui/src/gui/settings/RSPermissionMatrixWidget.cpp +++ b/retroshare-gui/src/gui/settings/RSPermissionMatrixWidget.cpp @@ -67,6 +67,18 @@ RSPermissionMatrixWidget::RSPermissionMatrixWidget(QWidget *parent) _max_width = 400 ; _max_height = 0 ; + + mHideOffline = false; +} + +void RSPermissionMatrixWidget::setHideOffline(bool hide) +{ + if (mHideOffline == hide) { + return; + } + + mHideOffline = hide; + repaint(); } void RSPermissionMatrixWidget::updateDisplay() @@ -238,25 +250,21 @@ void RSPermissionMatrixWidget::paintEvent(QPaintEvent *) // sort list { - // RSPermissionMatrixWidgets parent is ServicePermissionsPage which holds the checkbox - ServicePermissionsPage *spp = dynamic_cast(parentWidget()); - if(spp != NULL) { - // sort out offline peers - if(spp->isHideOfflineChecked()) { - RsPeerDetails peerDetails; - for(std::list::iterator it = ssllist.begin(); it != ssllist.end();) { - rsPeers->getPeerDetails(*it, peerDetails); + // sort out offline peers + if(mHideOffline) { + RsPeerDetails peerDetails; + for(std::list::iterator it = ssllist.begin(); it != ssllist.end();) { + rsPeers->getPeerDetails(*it, peerDetails); - switch (peerDetails.connectState) { - case RS_PEER_CONNECTSTATE_OFFLINE: - case RS_PEER_CONNECTSTATE_TRYING_TCP: - case RS_PEER_CONNECTSTATE_TRYING_UDP: - it = ssllist.erase(it); - break; - default: - it++; - break; - } + switch (peerDetails.connectState) { + case RS_PEER_CONNECTSTATE_OFFLINE: + case RS_PEER_CONNECTSTATE_TRYING_TCP: + case RS_PEER_CONNECTSTATE_TRYING_UDP: + it = ssllist.erase(it); + break; + default: + it++; + break; } } } diff --git a/retroshare-gui/src/gui/settings/RSPermissionMatrixWidget.h b/retroshare-gui/src/gui/settings/RSPermissionMatrixWidget.h index 356521c78..b56c76a61 100644 --- a/retroshare-gui/src/gui/settings/RSPermissionMatrixWidget.h +++ b/retroshare-gui/src/gui/settings/RSPermissionMatrixWidget.h @@ -60,6 +60,9 @@ public: RSPermissionMatrixWidget(QWidget *parent=NULL); virtual ~RSPermissionMatrixWidget() ; +public slots: + void setHideOffline(bool hide); + protected slots: // Calls the internal source for a new data points; called by the timer. You might want to overload this // if the collection system needs it. Otherwise, the default method will call getValues() @@ -100,6 +103,8 @@ private: /** The current dimensions of the graph. */ QRect _rec; + bool mHideOffline; + static const float fROW_SIZE ; static const float fCOL_SIZE ; static const float fICON_SIZE_X ; diff --git a/retroshare-gui/src/gui/settings/ServicePermissionsPage.cpp b/retroshare-gui/src/gui/settings/ServicePermissionsPage.cpp index e755ec90e..5cf0a59c0 100644 --- a/retroshare-gui/src/gui/settings/ServicePermissionsPage.cpp +++ b/retroshare-gui/src/gui/settings/ServicePermissionsPage.cpp @@ -28,16 +28,19 @@ #include #include -#define PermissionStateUserRole (Qt::UserRole) -#define ServiceIdUserRole (Qt::UserRole + 1) -#define PeerIdUserRole (Qt::UserRole + 2) - -ServicePermissionsPage::ServicePermissionsPage(QWidget * parent, Qt::WindowFlags /*flags*/) +ServicePermissionsPage::ServicePermissionsPage(QWidget * parent, Qt::WindowFlags flags) : + ConfigPage(parent, flags) { /* Invoke the Qt Designer generated object setup routine */ ui.setupUi(this); + connect(ui.cb_hideOffline, SIGNAL(toggled(bool)), ui.frame, SLOT(setHideOffline(bool))); //QObject::connect(ui.tableWidget,SIGNAL(itemChanged(QTableWidgetItem *)), this, SLOT(tableItemChanged(QTableWidgetItem *))); + + ui.frame->setHideOffline(ui.cb_hideOffline->isChecked()); + + // Not implemented? + ui.pushButton->hide(); } QString ServicePermissionsPage::helpText() const @@ -52,10 +55,3 @@ QString ServicePermissionsPage::helpText() const

Be very careful: Some services depend on each other. For instance turning turtle OFF will also\ stop all anonymous transfer, distant chat and distant messaging.

"); } - -bool ServicePermissionsPage::isHideOfflineChecked() -{ - return ui.cb_hideOffline->checkState() == Qt::Checked; -} - - diff --git a/retroshare-gui/src/gui/settings/ServicePermissionsPage.h b/retroshare-gui/src/gui/settings/ServicePermissionsPage.h index 7566e6d92..1e4f5c973 100644 --- a/retroshare-gui/src/gui/settings/ServicePermissionsPage.h +++ b/retroshare-gui/src/gui/settings/ServicePermissionsPage.h @@ -44,10 +44,7 @@ public: virtual QString pageName() const { return tr("Permissions") ; } virtual QString helpText() const ; - bool isHideOfflineChecked(); - private: - Ui::ServicePermissionsPage ui; };