diff --git a/retroshare-gui/src/gui/settings/ServicePermissionsPage.cpp b/retroshare-gui/src/gui/settings/ServicePermissionsPage.cpp index abc7f62cd..a4218ebeb 100644 --- a/retroshare-gui/src/gui/settings/ServicePermissionsPage.cpp +++ b/retroshare-gui/src/gui/settings/ServicePermissionsPage.cpp @@ -35,7 +35,6 @@ #define PeerIdUserRole (Qt::UserRole + 2) ServicePermissionsPage::ServicePermissionsPage(QWidget * parent, Qt::WindowFlags flags) - : ConfigPage(parent, flags) { /* Invoke the Qt Designer generated object setup routine */ ui.setupUi(this); @@ -61,356 +60,5 @@ QString ServicePermissionsPage::helpText() const stop all anonymous transfer, distant chat and distant messaging.

"); } - /** Saves the changes on this page */ -bool ServicePermissionsPage::save(QString &/*errmsg*/) -{ -#ifdef SUSPENDED - std::cerr << "ServicePermissionsPage::save()"; - std::cerr << std::endl; - size_t row, column; - for(row = 0; row < mStdRowCount; ++row) - { - bool requiresSaving = false; - bool defaultOn = true; - uint32_t serviceId; - - { - QTableWidgetItem *item = ui.tableWidget->item (row, 0); - QVariant qvDefault = item->data(PermissionStateUserRole); - QVariant qvServiceId = item->data(ServiceIdUserRole); - serviceId = qvServiceId.toUInt(); - Qt::CheckState currentState = item->checkState(); - Qt::CheckState origState = (Qt::CheckState) qvDefault.toUInt(); - - if (currentState != origState) - { - requiresSaving = true; - } - defaultOn = (currentState == Qt::Checked); - } - - if (!requiresSaving) - { - for(column = 1; column < mStdColumnCount; ++column) - { - QTableWidgetItem *item = ui.tableWidget->item (row, column); - Qt::CheckState currentState = item->checkState(); - QVariant qvOrigState = item->data(PermissionStateUserRole); - Qt::CheckState origState = (Qt::CheckState) qvOrigState.toUInt(); - - if (currentState != origState) - { - requiresSaving = true; - break; - } - } - } - - if (requiresSaving) - { - RsServicePermissions permissions; - permissions.mDefaultAllowed = defaultOn; - permissions.mServiceId = serviceId; - - std::cerr << "ServicePermissionsPage::save() saving row: " << row; - std::cerr << " serviceId: " << serviceId; - std::cerr << " defaultAllowed: " << defaultOn; - std::cerr << std::endl; - - for(column = 1; column < mStdColumnCount; ++column) - { - QTableWidgetItem *item = ui.tableWidget->item (row, column); - Qt::CheckState currentState = item->checkState(); - - QTableWidgetItem *iditem = ui.tableWidget->item (0, column); - RsPeerId peerId(iditem->data(PeerIdUserRole).toString().toStdString()); - - switch(currentState) - { - case Qt::Checked: - std::cerr << "ServicePermissionsPage::save() peer: " << peerId.toStdString(); - std::cerr << " Allowed"; - std::cerr << std::endl; - permissions.mPeersAllowed.insert(peerId); - break; - case Qt::Unchecked: - std::cerr << "ServicePermissionsPage::save() peer: " << peerId.toStdString(); - std::cerr << " Allowed"; - std::cerr << std::endl; - permissions.mPeersDenied.insert(peerId); - break; - case Qt::PartiallyChecked: - std::cerr << "ServicePermissionsPage::save() peer: " << peerId.toStdString(); - std::cerr << " Default"; - std::cerr << std::endl; - /* default */ - break; - } - } - rsServiceControl->updateServicePermissions(serviceId, permissions); - } - } -#endif - return true; -} - - -QBrush getColor(bool defaultOn, Qt::CheckState checkState) -{ - switch(checkState) - { - case Qt::Unchecked: - return QBrush(Qt::red); - break; - case Qt::Checked: - return QBrush(Qt::green); - break; - case Qt::PartiallyChecked: - default: - if (defaultOn) - { - return QBrush(Qt::darkGreen); - } - else - { - return QBrush(Qt::darkRed); - } - break; - } - return QBrush(Qt::gray); -} - - /** Loads the settings for this page */ -void ServicePermissionsPage::load() -{ - std::list peerList; - std::list::const_iterator pit; - rsPeers->getFriendList(peerList); - - RsPeerServiceInfo ownServices; - std::map::const_iterator sit; - rsServiceControl->getOwnServices(ownServices); - -#ifdef SUSPENDED - mStdRowCount = ownServices.mServiceList.size(); - mStdColumnCount = peerList.size() + 1; - ui.tableWidget->setRowCount(mStdRowCount); - ui.tableWidget->setColumnCount(mStdColumnCount); - - QStringList columnHeaders; - QStringList rowHeaders; - columnHeaders.push_back(tr("Default")); - for(pit = peerList.begin(); pit != peerList.end(); ++pit) - { - columnHeaders.push_back(QString::fromUtf8(rsPeers->getPeerName(*pit).c_str())); - } - - // Fill in CheckBoxes. - size_t row; - size_t column; - for(row = 0, sit = ownServices.mServiceList.begin(); sit != ownServices.mServiceList.end(); ++sit, ++row) - { - rowHeaders.push_back(QString::fromStdString(sit->second.mServiceName)); - RsServicePermissions permissions; - if (!rsServiceControl->getServicePermissions(sit->first, permissions)) - { - continue; - } - - { - QTableWidgetItem *item = new QTableWidgetItem(tr("Default")); - Qt::ItemFlags flags(Qt::ItemIsUserCheckable); - flags |= Qt::ItemIsEnabled; - item->setFlags(flags); - - if (permissions.mDefaultAllowed) - { - item->setCheckState(Qt::Checked); - item->setData(PermissionStateUserRole, QVariant((int) (Qt::Checked))); - } - else - { - item->setCheckState(Qt::Unchecked); - item->setData(PermissionStateUserRole, QVariant((int) (Qt::Unchecked))); - } - item->setData(ServiceIdUserRole, QVariant((uint) sit->first)); - ui.tableWidget->setItem(row, 0, item); - } - - for(column = 1, pit = peerList.begin(); - pit != peerList.end(); ++pit, ++column) - { - QTableWidgetItem *item = new QTableWidgetItem(); - Qt::ItemFlags flags(Qt::ItemIsUserCheckable); - flags |= Qt::ItemIsEnabled; - flags |= Qt::ItemIsTristate; - item->setFlags(flags); - if (permissions.mPeersAllowed.end() != permissions.mPeersAllowed.find(*pit)) - { - item->setCheckState(Qt::Checked); - item->setData(PermissionStateUserRole, QVariant((int) (Qt::Checked))); - - } - else if (permissions.mPeersDenied.end() != permissions.mPeersDenied.find(*pit)) - { - item->setCheckState(Qt::Unchecked); - item->setData(PermissionStateUserRole, QVariant((int) (Qt::Unchecked))); - } - else - { - item->setCheckState(Qt::PartiallyChecked); - item->setData(PermissionStateUserRole, QVariant((int) (Qt::PartiallyChecked))); - } - ui.tableWidget->setItem(row, column, item); - - if (row == 0) - { - item->setData(PeerIdUserRole, QVariant(QString::fromStdString(pit->toStdString()))); - } - } - } - - // Now Get a List of Services Provided by Peers - and add text. - int maxRowCount = mStdRowCount; - for(column = 1, pit = peerList.begin(); - pit != peerList.end(); ++pit, ++column) - { - RsPeerServiceInfo peerInfo; - if (rsServiceControl->getServicesProvided(*pit, peerInfo)) - { - std::map::const_iterator eit, sit2, eit2; - sit = ownServices.mServiceList.begin(); - eit = ownServices.mServiceList.end(); - sit2 = peerInfo.mServiceList.begin(); - eit2 = peerInfo.mServiceList.end(); - row = 0; - int extraRowIndex = mStdRowCount; - - while((sit != eit) && (sit2 != eit2)) - { - if (sit->first < sit2->first) - { - // A Service they don't have. - QTableWidgetItem *item = ui.tableWidget->item(row, column); - item->setText(tr("No")); - - ++sit; - ++row; - } - else if (sit2->first < sit->first) - { - // They have a service we dont! - // Add extra item on the end. (TODO) - if (extraRowIndex + 1 > maxRowCount) - { - maxRowCount = extraRowIndex + 1; - ui.tableWidget->setRowCount(maxRowCount); - rowHeaders.push_back(tr("Other Service")); - } - - QTableWidgetItem *item = new QTableWidgetItem(); - item->setText(QString::fromStdString(sit2->second.mServiceName)); - ui.tableWidget->setItem(extraRowIndex, column, item); - ++extraRowIndex; - ++sit2; - } - else - { - QTableWidgetItem *item = ui.tableWidget->item(row, column); - if (ServiceInfoCompatible(sit->second, sit2->second)) - { - item->setText(tr("Yes")); - } - else - { - item->setText(tr("Incompatible")); - } - - // Matching service. - ++row; - ++sit; - ++sit2; - } - } - - // More Services they don't have. - for(; sit != eit; ++sit) - { - // A Service they don't have. - QTableWidgetItem *item = ui.tableWidget->item(row, column); - item->setText(tr("No")); - - ++row; - } - - // Services we don't have. - for(; sit2 != eit2; ++sit2) - { - // A Service they don't have. - // Add extra item on the end. (TODO) - if (extraRowIndex + 1 > maxRowCount) - { - maxRowCount = extraRowIndex + 1; - ui.tableWidget->setRowCount(maxRowCount); - rowHeaders.push_back(tr("Other Service")); - } - - QTableWidgetItem *item = new QTableWidgetItem(); - item->setText(QString::fromStdString(sit2->second.mServiceName)); - ui.tableWidget->setItem(extraRowIndex, column, item); - ++extraRowIndex; - } - } - else - { - for(row = 0; row < mStdRowCount; ++row) - { - QTableWidgetItem *item = ui.tableWidget->item(row, column); - item->setText(tr("N/A")); - } - } - } - - ui.tableWidget->setHorizontalHeaderLabels(columnHeaders); - ui.tableWidget->setVerticalHeaderLabels(rowHeaders); -#endif -} - -void ServicePermissionsPage::tableItemChanged ( int row, int col ) -{ -#ifdef SUSPENDED - std::cerr << "ServicePermissionsPage::tableItemChanged()"; - std::cerr << std::endl; - std::cerr << "\t Node: Row: " << item->row() << " Column: " << item->column(); - std::cerr << std::endl; - std::cerr << "\t IsChecked: " << (Qt::Checked == item->checkState()); - std::cerr << std::endl; - - if (item->column() == 0) - { - /* update the row */ - bool defaultOn = (Qt::Checked == item->checkState()); - item->setBackground(getColor(defaultOn, Qt::PartiallyChecked)); - for(int column = 1; column < ui.tableWidget->columnCount(); ++column) - { - QTableWidgetItem *rowitem = ui.tableWidget->item (item->row(), column); - if (rowitem) - { - rowitem->setBackground(getColor(defaultOn, rowitem->checkState())); - } - } - } - else - { - QTableWidgetItem *defitem = ui.tableWidget->item (item->row(), 0); - if (defitem) - { - bool defaultOn = (Qt::Checked == defitem->checkState()); - item->setBackground(getColor(defaultOn, item->checkState())); - } - } -#endif -} - diff --git a/retroshare-gui/src/gui/settings/ServicePermissionsPage.h b/retroshare-gui/src/gui/settings/ServicePermissionsPage.h index 217bdc60f..96a06b859 100644 --- a/retroshare-gui/src/gui/settings/ServicePermissionsPage.h +++ b/retroshare-gui/src/gui/settings/ServicePermissionsPage.h @@ -36,20 +36,16 @@ public: ~ServicePermissionsPage() {} /** Saves the changes on this page */ - virtual bool save(QString &/*errmsg*/); + virtual bool save(QString &/*errmsg*/) { return true ;} /** Loads the settings for this page */ - virtual void load(); + virtual void load() {} virtual QPixmap iconPixmap() const { return QPixmap(":/images/admin-24.png") ; } virtual QString pageName() const { return tr("Permissions") ; } virtual QString helpText() const ; -public slots: - void tableItemChanged(int row,int col); private: - size_t mStdRowCount; - size_t mStdColumnCount; Ui::ServicePermissionsPage ui; };