diff --git a/libretroshare/src/retroshare/rsfiles.h b/libretroshare/src/retroshare/rsfiles.h index 6e436246e..e1661d8df 100644 --- a/libretroshare/src/retroshare/rsfiles.h +++ b/libretroshare/src/retroshare/rsfiles.h @@ -334,6 +334,7 @@ public: * @jsonapi{development} * @param[in] hash file identifier * @param[in] flags action to perform. Pict into { RS_FILE_CTRL_PAUSE, RS_FILE_CTRL_START, RS_FILE_CTRL_FORCE_CHECK } } + * @return false if error occured such as unknown hash. */ virtual bool FileControl(const RsFileHash& hash, uint32_t flags) = 0; diff --git a/retroshare-gui/src/gui/ChatLobbyWidget.cpp b/retroshare-gui/src/gui/ChatLobbyWidget.cpp index e1c486130..f93d9a501 100644 --- a/retroshare-gui/src/gui/ChatLobbyWidget.cpp +++ b/retroshare-gui/src/gui/ChatLobbyWidget.cpp @@ -54,8 +54,7 @@ #define COLUMN_NAME 0 #define COLUMN_USER_COUNT 1 #define COLUMN_TOPIC 2 -#define COLUMN_SUBSCRIBED 3 -#define COLUMN_COUNT 4 +#define COLUMN_COUNT 3 #define COLUMN_DATA 0 #define ROLE_SORT Qt::UserRole @@ -115,17 +114,14 @@ ChatLobbyWidget::ChatLobbyWidget(QWidget *parent, Qt::WindowFlags flags) headerItem->setText(COLUMN_NAME, tr("Name")); headerItem->setText(COLUMN_USER_COUNT, tr("Count")); headerItem->setText(COLUMN_TOPIC, tr("Topic")); - headerItem->setText(COLUMN_SUBSCRIBED, tr("Subscribed")); headerItem->setTextAlignment(COLUMN_NAME, Qt::AlignHCenter | Qt::AlignVCenter); headerItem->setTextAlignment(COLUMN_TOPIC, Qt::AlignHCenter | Qt::AlignVCenter); headerItem->setTextAlignment(COLUMN_USER_COUNT, Qt::AlignHCenter | Qt::AlignVCenter); - headerItem->setTextAlignment(COLUMN_SUBSCRIBED, Qt::AlignHCenter | Qt::AlignVCenter); QHeaderView *header = ui.lobbyTreeWidget->header(); QHeaderView_setSectionResizeModeColumn(header, COLUMN_NAME, QHeaderView::Interactive); QHeaderView_setSectionResizeModeColumn(header, COLUMN_USER_COUNT, QHeaderView::Interactive); QHeaderView_setSectionResizeModeColumn(header, COLUMN_TOPIC, QHeaderView::Interactive); - QHeaderView_setSectionResizeModeColumn(header, COLUMN_SUBSCRIBED, QHeaderView::Interactive); privateSubLobbyItem = new RSTreeWidgetItem(compareRole, TYPE_FOLDER); privateSubLobbyItem->setText(COLUMN_NAME, tr("Private Subscribed chat rooms")); @@ -159,7 +155,6 @@ ChatLobbyWidget::ChatLobbyWidget(QWidget *parent, Qt::WindowFlags flags) ui.lobbyTreeWidget->setColumnHidden(COLUMN_NAME,false) ; ui.lobbyTreeWidget->setColumnHidden(COLUMN_USER_COUNT,true) ; ui.lobbyTreeWidget->setColumnHidden(COLUMN_TOPIC,true) ; - ui.lobbyTreeWidget->setColumnHidden(COLUMN_SUBSCRIBED,true) ; ui.lobbyTreeWidget->setSortingEnabled(true) ; float fact = QFontMetricsF(font()).height()/14.0f; @@ -176,9 +171,6 @@ ChatLobbyWidget::ChatLobbyWidget(QWidget *parent, Qt::WindowFlags flags) showTopicAct= new QAction(headerItem->text(COLUMN_TOPIC),this); showTopicAct->setCheckable(true); showTopicAct->setToolTip(tr("Show")+" "+showTopicAct->text()+" "+tr("column")); connect(showTopicAct,SIGNAL(triggered(bool)),this,SLOT(setShowTopicColumn(bool))) ; - showSubscribeAct= new QAction(headerItem->text(COLUMN_SUBSCRIBED),this); - showSubscribeAct->setCheckable(true); showSubscribeAct->setToolTip(tr("Show")+" "+showSubscribeAct->text()+" "+tr("column")); - connect(showSubscribeAct,SIGNAL(triggered(bool)),this,SLOT(setShowSubscribeColumn(bool))) ; // Set initial size of the splitter ui.splitter->setStretchFactor(0, 0); @@ -351,12 +343,10 @@ void ChatLobbyWidget::lobbyTreeWidgetCustomPopupMenu(QPoint) showUserCountAct->setChecked(!ui.lobbyTreeWidget->isColumnHidden(COLUMN_USER_COUNT)); showTopicAct->setChecked(!ui.lobbyTreeWidget->isColumnHidden(COLUMN_TOPIC)); - showSubscribeAct->setChecked(!ui.lobbyTreeWidget->isColumnHidden(COLUMN_SUBSCRIBED)); QMenu *menu = contextMnu.addMenu(tr("Columns")); menu->addAction(showUserCountAct); menu->addAction(showTopicAct); - menu->addAction(showSubscribeAct); contextMnu.exec(QCursor::pos()); } @@ -385,8 +375,6 @@ static void updateItem(QTreeWidget *treeWidget, QTreeWidgetItem *item, ChatLobby //item->setText(COLUMN_USER_COUNT, QString::number(count)); item->setData(COLUMN_USER_COUNT, Qt::EditRole, count); - item->setText(COLUMN_SUBSCRIBED, subscribed?qApp->translate("ChatLobbyWidget", "Yes"):qApp->translate("ChatLobbyWidget", "No")); - item->setData(COLUMN_DATA, ROLE_ID, (qulonglong)id); item->setData(COLUMN_DATA, ROLE_SUBSCRIBED, subscribed); item->setData(COLUMN_DATA, ROLE_FLAGS, lobby_flags.toUInt32()); @@ -1283,7 +1271,6 @@ void ChatLobbyWidget::processSettings(bool bLoad) setShowUserCountColumn(Settings->value("showUserCountColumn", !ui.lobbyTreeWidget->isColumnHidden(COLUMN_USER_COUNT)).toBool()); setShowTopicColumn(Settings->value("showTopicColumn", !ui.lobbyTreeWidget->isColumnHidden(COLUMN_TOPIC)).toBool()); - setShowSubscribeColumn(Settings->value("showSubscribeColumn", !ui.lobbyTreeWidget->isColumnHidden(COLUMN_SUBSCRIBED)).toBool()); } else { // save settings Settings->setValue("splitter", ui.splitter->saveState()); @@ -1292,7 +1279,6 @@ void ChatLobbyWidget::processSettings(bool bLoad) Settings->setValue("showUserCountColumn", !ui.lobbyTreeWidget->isColumnHidden(COLUMN_USER_COUNT)); Settings->setValue("showTopicColumn", !ui.lobbyTreeWidget->isColumnHidden(COLUMN_TOPIC)); - Settings->setValue("showSubscribeColumn", !ui.lobbyTreeWidget->isColumnHidden(COLUMN_SUBSCRIBED)); } Settings->endGroup(); @@ -1315,14 +1301,6 @@ void ChatLobbyWidget::setShowTopicColumn(bool show) ui.lobbyTreeWidget->header()->setVisible(getNumColVisible()>1); } -void ChatLobbyWidget::setShowSubscribeColumn(bool show) -{ - if (ui.lobbyTreeWidget->isColumnHidden(COLUMN_SUBSCRIBED) == show) { - ui.lobbyTreeWidget->setColumnHidden(COLUMN_SUBSCRIBED, !show); - } - ui.lobbyTreeWidget->header()->setVisible(getNumColVisible()>1); -} - int ChatLobbyWidget::getNumColVisible() { int iNumColVis=0; diff --git a/retroshare-gui/src/gui/ChatLobbyWidget.h b/retroshare-gui/src/gui/ChatLobbyWidget.h index 9464a514e..39422ec6a 100644 --- a/retroshare-gui/src/gui/ChatLobbyWidget.h +++ b/retroshare-gui/src/gui/ChatLobbyWidget.h @@ -105,7 +105,6 @@ private slots: void setShowUserCountColumn(bool show); void setShowTopicColumn(bool show); - void setShowSubscribeColumn(bool show); void updateNotify(ChatLobbyId id, unsigned int count) ; void idChooserCurrentIndexChanged(int index); @@ -136,7 +135,6 @@ private: /** Defines the actions for the header context menu */ QAction* showUserCountAct; QAction* showTopicAct; - QAction* showSubscribeAct; int getNumColVisible(); ChatLobbyUserNotify* myChatLobbyUserNotify; diff --git a/retroshare-gui/src/gui/NetworkDialog/pgpid_item_model.cpp b/retroshare-gui/src/gui/NetworkDialog/pgpid_item_model.cpp index eb5ed41bd..96ab24e92 100644 --- a/retroshare-gui/src/gui/NetworkDialog/pgpid_item_model.cpp +++ b/retroshare-gui/src/gui/NetworkDialog/pgpid_item_model.cpp @@ -228,14 +228,10 @@ QVariant pgpid_item_model::data(const QModelIndex &index, int role) const break; case COLUMN_CHECK: { - if (detail.accept_connection) - { + if (detail.accept_connection || rsPeers->getGPGOwnId() == detail.gpg_id) return tr("Accepted"); - } - else - { + else return tr("Denied"); - } } break; diff --git a/retroshare-gui/src/gui/chat/ChatLobbyDialog.cpp b/retroshare-gui/src/gui/chat/ChatLobbyDialog.cpp index 0305ff6c0..f31f8c456 100644 --- a/retroshare-gui/src/gui/chat/ChatLobbyDialog.cpp +++ b/retroshare-gui/src/gui/chat/ChatLobbyDialog.cpp @@ -277,7 +277,7 @@ void ChatLobbyDialog::initParticipantsContextMenu(QMenu *contextMnu, QListaddAction(showInPeopleAct); distantChatAct->setEnabled(false); - sendMessageAct->setEnabled(true); + sendMessageAct->setEnabled(false); muteAct->setEnabled(false); muteAct->setCheckable(true); muteAct->setChecked(false); @@ -299,6 +299,7 @@ void ChatLobbyDialog::initParticipantsContextMenu(QMenu *contextMnu, QListisOwnId(gxsid)) { distantChatAct->setEnabled(true); + sendMessageAct->setEnabled(true); votePositiveAct->setEnabled(rsReputations->overallReputationLevel(gxsid) != RsReputations::REPUTATION_LOCALLY_POSITIVE); voteNeutralAct->setEnabled((rsReputations->overallReputationLevel(gxsid) == RsReputations::REPUTATION_LOCALLY_POSITIVE) || (rsReputations->overallReputationLevel(gxsid) == RsReputations::REPUTATION_LOCALLY_NEGATIVE) ); voteNegativeAct->setEnabled(rsReputations->overallReputationLevel(gxsid) != RsReputations::REPUTATION_LOCALLY_NEGATIVE); diff --git a/retroshare-gui/src/gui/gxs/GxsGroupFrameDialog.cpp b/retroshare-gui/src/gui/gxs/GxsGroupFrameDialog.cpp index 3e5f5f76f..5d35d02bf 100644 --- a/retroshare-gui/src/gui/gxs/GxsGroupFrameDialog.cpp +++ b/retroshare-gui/src/gui/gxs/GxsGroupFrameDialog.cpp @@ -335,6 +335,26 @@ void GxsGroupFrameDialog::removeAllSearches() mSearchGroupsItems.clear(); mKnownGroups.clear(); } + +// Same function than the one in rsgxsnetservice.cc, so that all times are automatically consistent + +static uint32_t checkDelay(uint32_t time_in_secs) +{ + if(time_in_secs < 1 * 86400) + return 0 ; + if(time_in_secs <= 10 * 86400) + return 5 * 86400; + if(time_in_secs <= 20 * 86400) + return 15 * 86400; + if(time_in_secs <= 60 * 86400) + return 30 * 86400; + if(time_in_secs <= 120 * 86400) + return 90 * 86400; + if(time_in_secs <= 250 * 86400) + return 180 * 86400; + + return 365 * 86400; +} void GxsGroupFrameDialog::groupTreeCustomPopupMenu(QPoint point) { // First separately handle the case of search top level items @@ -402,8 +422,8 @@ void GxsGroupFrameDialog::groupTreeCustomPopupMenu(QPoint point) action = contextMnu.addAction(QIcon(IMAGE_EDIT), tr("Edit Details"), this, SLOT(editGroupDetails())); action->setEnabled (!mGroupId.isNull() && isAdmin); - uint32_t current_store_time = mInterface->getStoragePeriod(mGroupId)/86400 ; - uint32_t current_sync_time = mInterface->getSyncPeriod(mGroupId)/86400 ; + uint32_t current_store_time = checkDelay(mInterface->getStoragePeriod(mGroupId))/86400 ; + uint32_t current_sync_time = checkDelay(mInterface->getSyncPeriod(mGroupId))/86400 ; std::cerr << "Got sync=" << current_sync_time << ". store=" << current_store_time << std::endl; QAction *actnn = NULL; @@ -414,7 +434,7 @@ void GxsGroupFrameDialog::groupTreeCustomPopupMenu(QPoint point) actnn = ctxMenu2->addAction(tr(" 1 month" ),this,SLOT(setSyncPostsDelay())) ; actnn->setData(QVariant( 30)) ; if(current_sync_time == 30) { actnn->setEnabled(false);actnn->setIcon(QIcon(":/images/start.png"));} actnn = ctxMenu2->addAction(tr(" 3 months" ),this,SLOT(setSyncPostsDelay())) ; actnn->setData(QVariant( 90)) ; if(current_sync_time == 90) { actnn->setEnabled(false);actnn->setIcon(QIcon(":/images/start.png"));} actnn = ctxMenu2->addAction(tr(" 6 months" ),this,SLOT(setSyncPostsDelay())) ; actnn->setData(QVariant(180)) ; if(current_sync_time ==180) { actnn->setEnabled(false);actnn->setIcon(QIcon(":/images/start.png"));} - actnn = ctxMenu2->addAction(tr(" 1 year " ),this,SLOT(setSyncPostsDelay())) ; actnn->setData(QVariant(372)) ; if(current_sync_time ==372) { actnn->setEnabled(false);actnn->setIcon(QIcon(":/images/start.png"));} + actnn = ctxMenu2->addAction(tr(" 1 year " ),this,SLOT(setSyncPostsDelay())) ; actnn->setData(QVariant(365)) ; if(current_sync_time ==365) { actnn->setEnabled(false);actnn->setIcon(QIcon(":/images/start.png"));} actnn = ctxMenu2->addAction(tr(" Indefinitly"),this,SLOT(setSyncPostsDelay())) ; actnn->setData(QVariant( 0)) ; if(current_sync_time == 0) { actnn->setEnabled(false);actnn->setIcon(QIcon(":/images/start.png"));} ctxMenu2 = contextMnu.addMenu(tr("Store posts for at most...")) ; @@ -423,7 +443,7 @@ void GxsGroupFrameDialog::groupTreeCustomPopupMenu(QPoint point) actnn = ctxMenu2->addAction(tr(" 1 month" ),this,SLOT(setStorePostsDelay())) ; actnn->setData(QVariant( 30)) ; if(current_store_time == 30) { actnn->setEnabled(false);actnn->setIcon(QIcon(":/images/start.png"));} actnn = ctxMenu2->addAction(tr(" 3 months" ),this,SLOT(setStorePostsDelay())) ; actnn->setData(QVariant( 90)) ; if(current_store_time == 90) { actnn->setEnabled(false);actnn->setIcon(QIcon(":/images/start.png"));} actnn = ctxMenu2->addAction(tr(" 6 months" ),this,SLOT(setStorePostsDelay())) ; actnn->setData(QVariant(180)) ; if(current_store_time ==180) { actnn->setEnabled(false);actnn->setIcon(QIcon(":/images/start.png"));} - actnn = ctxMenu2->addAction(tr(" 1 year " ),this,SLOT(setStorePostsDelay())) ; actnn->setData(QVariant(372)) ; if(current_store_time ==372) { actnn->setEnabled(false);actnn->setIcon(QIcon(":/images/start.png"));} + actnn = ctxMenu2->addAction(tr(" 1 year " ),this,SLOT(setStorePostsDelay())) ; actnn->setData(QVariant(365)) ; if(current_store_time ==365) { actnn->setEnabled(false);actnn->setIcon(QIcon(":/images/start.png"));} actnn = ctxMenu2->addAction(tr(" Indefinitly"),this,SLOT(setStorePostsDelay())) ; actnn->setData(QVariant( 0)) ; if(current_store_time == 0) { actnn->setEnabled(false);actnn->setIcon(QIcon(":/images/start.png"));} if (shareKeyType()) { diff --git a/retroshare-gui/src/gui/gxs/GxsIdChooser.cpp b/retroshare-gui/src/gui/gxs/GxsIdChooser.cpp index 919b19fa7..260121c7e 100644 --- a/retroshare-gui/src/gui/gxs/GxsIdChooser.cpp +++ b/retroshare-gui/src/gui/gxs/GxsIdChooser.cpp @@ -128,10 +128,6 @@ static void loadPrivateIdsCallback(GxsIdDetailsType type, const RsIdentityDetail if (!chooser) return; - int current_index = chooser->currentIndex(); - - QString current_id = (current_index >= 0)? chooser->itemData(current_index).toString() : "" ; - // this prevents the objects that depend on what's in the combo-box to activate and // perform any change.Only user-changes should cause this. chooser->blockSignals(true) ; @@ -187,15 +183,29 @@ static void loadPrivateIdsCallback(GxsIdDetailsType type, const RsIdentityDetail chooser->model()->sort(0); // now restore the current item. Problem is, we cannot use the ID position because it may have changed. - - if(current_id != "") +#ifdef IDCHOOSER_DEBUG + std::cerr << "GxsIdChooser: default ID = " << chooser->defaultId() << std::endl; +#endif + if(!chooser->defaultId().isNull()) + { for(int indx=0;indxcount();++indx) - if(chooser->itemData(indx).toString() == current_id) + if(RsGxsId(chooser->itemData(indx).toString().toStdString()) == chooser->defaultId()) { chooser->setCurrentIndex(indx); - std::cerr << "GxsIdChooser-003" << (void*)chooser << " setting current index to " << indx << std::endl; +#ifdef IDCHOOSER_DEBUG + std::cerr << "GxsIdChooser-003 " << (void*)chooser << " setting current index to " << indx << " because it has ID=" << chooser->defaultId() << std::endl; +#endif break; } + } + else + { + RsGxsId id; + GxsIdChooser::ChosenId_Ret cid = chooser->getChosenId(id) ; + + if(cid == GxsIdChooser::UnKnowId || cid == GxsIdChooser::KnowId) + chooser->setDefaultId(id) ; + } chooser->blockSignals(false) ; } @@ -395,6 +405,11 @@ void GxsIdChooser::myCurrentIndexChanged(int index) } else { setToolTip(""); } + QVariant var = itemData(index); + RsGxsId gxsId(var.toString().toStdString()); + + if(!gxsId.isNull()) + mDefaultId = gxsId; } void GxsIdChooser::indexActivated(int index) diff --git a/retroshare-gui/src/gui/gxs/GxsIdChooser.h b/retroshare-gui/src/gui/gxs/GxsIdChooser.h index a5a946e8d..2677a8233 100644 --- a/retroshare-gui/src/gui/gxs/GxsIdChooser.h +++ b/retroshare-gui/src/gui/gxs/GxsIdChooser.h @@ -50,15 +50,17 @@ public: enum ChosenId_Ret {None, KnowId, UnKnowId, NoId} ; void loadIds(uint32_t chooserFlags, const RsGxsId &defId); + void setDefaultId(const RsGxsId &defId); + const RsGxsId defaultId() const { return mDefaultId ; } bool setChosenId(const RsGxsId &gxsId); ChosenId_Ret getChosenId(RsGxsId &gxsId); void setEntryEnabled(int index, bool enabled); - void setIdConstraintSet(const std::set& s) ; - bool isInConstraintSet(const RsGxsId& id) const ; + void setIdConstraintSet(const std::set& s) ; + bool isInConstraintSet(const RsGxsId& id) const ; uint32_t countEnabledEntries() const ; signals: