From 42e579a294f600e9d063d12af90e7c95943f35b7 Mon Sep 17 00:00:00 2001 From: thunder2 Date: Thu, 24 Jul 2014 14:54:23 +0000 Subject: [PATCH] - Added settings page for Posted. - Added new base class for GroupFrame settings for settings pages. - Moved usage of GroupFrame settings (forum, channel and posted) to base class. git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@7468 b45a01b8-16f6-495d-af2f-9b41ad6348cc --- .../src/gui/Posted/PostedDialog.cpp | 12 +--- retroshare-gui/src/gui/Posted/PostedDialog.h | 4 +- .../src/gui/gxs/GxsGroupFrameDialog.cpp | 14 +++++ .../src/gui/gxs/GxsGroupFrameDialog.h | 8 ++- .../src/gui/gxschannels/GxsChannelDialog.cpp | 9 --- .../src/gui/gxschannels/GxsChannelDialog.h | 5 +- .../src/gui/gxsforums/GxsForumsDialog.cpp | 15 ----- .../src/gui/gxsforums/GxsForumsDialog.h | 7 +-- .../src/gui/settings/ChannelPage.cpp | 7 +-- .../src/gui/settings/ChannelPage.ui | 21 +++---- retroshare-gui/src/gui/settings/ForumPage.cpp | 9 ++- retroshare-gui/src/gui/settings/ForumPage.ui | 21 +++---- .../gui/settings/GroupFrameSettingsWidget.cpp | 39 ++++++++++++ .../gui/settings/GroupFrameSettingsWidget.h | 28 +++++++++ .../gui/settings/GroupFrameSettingsWidget.ui | 47 +++++++++++++++ .../src/gui/settings/PostedPage.cpp | 50 ++++++++++++++++ retroshare-gui/src/gui/settings/PostedPage.h | 53 ++++++++++++++++ retroshare-gui/src/gui/settings/PostedPage.ui | 51 ++++++++++++++++ .../src/gui/settings/rsettingswin.cpp | 2 + .../src/gui/settings/rsharesettings.cpp | 60 +++++++++---------- .../src/gui/settings/rsharesettings.h | 29 ++++++--- retroshare-gui/src/retroshare-gui.pro | 8 ++- 22 files changed, 377 insertions(+), 122 deletions(-) create mode 100644 retroshare-gui/src/gui/settings/GroupFrameSettingsWidget.cpp create mode 100644 retroshare-gui/src/gui/settings/GroupFrameSettingsWidget.h create mode 100644 retroshare-gui/src/gui/settings/GroupFrameSettingsWidget.ui create mode 100644 retroshare-gui/src/gui/settings/PostedPage.cpp create mode 100644 retroshare-gui/src/gui/settings/PostedPage.h create mode 100644 retroshare-gui/src/gui/settings/PostedPage.ui diff --git a/retroshare-gui/src/gui/Posted/PostedDialog.cpp b/retroshare-gui/src/gui/Posted/PostedDialog.cpp index cdd70f2df..bc2826e0e 100644 --- a/retroshare-gui/src/gui/Posted/PostedDialog.cpp +++ b/retroshare-gui/src/gui/Posted/PostedDialog.cpp @@ -27,8 +27,7 @@ #include "PostedListWidget.h" #include "PostedUserNotify.h" //#include "gui/channels/ShareKey.h" -//#include "gui/settings/rsharesettings.h" -//#include "gui/notifyqt.h" +#include "gui/settings/rsharesettings.h" #include @@ -36,9 +35,6 @@ PostedDialog::PostedDialog(QWidget *parent) : GxsGroupFrameDialog(rsPosted, parent) { -// connect(NotifyQt::getInstance(), SIGNAL(settingsChanged()), this, SLOT(settingsChanged())); - - settingsChanged(); } PostedDialog::~PostedDialog() @@ -98,12 +94,6 @@ QString PostedDialog::icon(IconType type) return ""; } -void PostedDialog::settingsChanged() -{ - setSingleTab(true /*!Settings->getPostedOpenAllInNewTab()*/); - setHideTabBarWithOneTab(true /*Settings->getPostedHideTabBarWithOneTab()*/); -} - GxsGroupDialog *PostedDialog::createNewGroupDialog(TokenQueue *tokenQueue) { return new PostedGroupDialog(tokenQueue, this); diff --git a/retroshare-gui/src/gui/Posted/PostedDialog.h b/retroshare-gui/src/gui/Posted/PostedDialog.h index c8fa2993c..ac3c66965 100644 --- a/retroshare-gui/src/gui/Posted/PostedDialog.h +++ b/retroshare-gui/src/gui/Posted/PostedDialog.h @@ -46,9 +46,7 @@ public: protected: virtual RetroShareLink::enumType getLinkType() { return RetroShareLink::TYPE_UNKNOWN; } - -private slots: - void settingsChanged(); + virtual GroupFrameSettings::Type groupFrameSettingsType() { return GroupFrameSettings::Posted; } private: /* GxsGroupFrameDialog */ diff --git a/retroshare-gui/src/gui/gxs/GxsGroupFrameDialog.cpp b/retroshare-gui/src/gui/gxs/GxsGroupFrameDialog.cpp index f7fb8bf96..e3ce33afc 100644 --- a/retroshare-gui/src/gui/gxs/GxsGroupFrameDialog.cpp +++ b/retroshare-gui/src/gui/gxs/GxsGroupFrameDialog.cpp @@ -138,6 +138,11 @@ void GxsGroupFrameDialog::initUi() // load settings mSettingsName = settingsGroupName(); processSettings(true); + + if (groupFrameSettingsType() != GroupFrameSettings::Nothing) { + connect(NotifyQt::getInstance(), SIGNAL(settingsChanged()), this, SLOT(settingsChanged())); + settingsChanged(); + } } void GxsGroupFrameDialog::showEvent(QShowEvent *event) @@ -177,6 +182,15 @@ void GxsGroupFrameDialog::processSettings(bool load) Settings->endGroup(); } +void GxsGroupFrameDialog::settingsChanged() +{ + GroupFrameSettings groupFrameSettings; + if (Settings->getGroupFrameSettings(groupFrameSettingsType(), groupFrameSettings)) { + setSingleTab(!groupFrameSettings.mOpenAllInNewTab); + setHideTabBarWithOneTab(groupFrameSettings.mHideTabBarWithOneTab); + } +} + void GxsGroupFrameDialog::setSingleTab(bool singleTab) { if (singleTab) { diff --git a/retroshare-gui/src/gui/gxs/GxsGroupFrameDialog.h b/retroshare-gui/src/gui/gxs/GxsGroupFrameDialog.h index f3242fdd5..aecdf74c4 100644 --- a/retroshare-gui/src/gui/gxs/GxsGroupFrameDialog.h +++ b/retroshare-gui/src/gui/gxs/GxsGroupFrameDialog.h @@ -25,6 +25,7 @@ #include "gui/gxs/RsGxsUpdateBroadcastPage.h" #include "RsAutoUpdatePage.h" #include "gui/RetroShareLink.h" +#include "gui/settings/rsharesettings.h" #include @@ -84,15 +85,16 @@ protected: RsGxsGroupId groupId() { return mGroupId; } void setSingleTab(bool singleTab); void setHideTabBarWithOneTab(bool hideTabBarWithOneTab); - bool getCurrentGroupName(QString& name); - virtual RetroShareLink::enumType getLinkType() = 0; - + bool getCurrentGroupName(QString& name); + virtual RetroShareLink::enumType getLinkType() = 0; + virtual GroupFrameSettings::Type groupFrameSettingsType() { return GroupFrameSettings::Nothing; } private slots: void todo(); /** Create the context popup menu and it's submenus */ void groupTreeCustomPopupMenu(QPoint point); + void settingsChanged(); void restoreGroupKeys(); void newGroup(); diff --git a/retroshare-gui/src/gui/gxschannels/GxsChannelDialog.cpp b/retroshare-gui/src/gui/gxschannels/GxsChannelDialog.cpp index 95a867236..4b7189b6d 100644 --- a/retroshare-gui/src/gui/gxschannels/GxsChannelDialog.cpp +++ b/retroshare-gui/src/gui/gxschannels/GxsChannelDialog.cpp @@ -32,9 +32,6 @@ GxsChannelDialog::GxsChannelDialog(QWidget *parent) : GxsGroupFrameDialog(rsGxsChannels, parent) { - connect(NotifyQt::getInstance(), SIGNAL(settingsChanged()), this, SLOT(settingsChanged())); - - settingsChanged(); } GxsChannelDialog::~GxsChannelDialog() @@ -97,12 +94,6 @@ QString GxsChannelDialog::icon(IconType type) return ""; } -void GxsChannelDialog::settingsChanged() -{ - setSingleTab(!Settings->getChannelOpenAllInNewTab()); - setHideTabBarWithOneTab(Settings->getChannelHideTabBarWithOneTab()); -} - GxsGroupDialog *GxsChannelDialog::createNewGroupDialog(TokenQueue *tokenQueue) { return new GxsChannelGroupDialog(tokenQueue, this); diff --git a/retroshare-gui/src/gui/gxschannels/GxsChannelDialog.h b/retroshare-gui/src/gui/gxschannels/GxsChannelDialog.h index 3272ff18a..c363b9d80 100644 --- a/retroshare-gui/src/gui/gxschannels/GxsChannelDialog.h +++ b/retroshare-gui/src/gui/gxschannels/GxsChannelDialog.h @@ -43,9 +43,10 @@ public: virtual UserNotify *getUserNotify(QObject *parent); protected: - RetroShareLink::enumType getLinkType() { return RetroShareLink::TYPE_CHANNEL; } + virtual RetroShareLink::enumType getLinkType() { return RetroShareLink::TYPE_CHANNEL; } + virtual GroupFrameSettings::Type groupFrameSettingsType() { return GroupFrameSettings::Channel; } + private slots: - void settingsChanged(); void toggleAutoDownload(); private: diff --git a/retroshare-gui/src/gui/gxsforums/GxsForumsDialog.cpp b/retroshare-gui/src/gui/gxsforums/GxsForumsDialog.cpp index ac2f59ea6..6709b3b58 100644 --- a/retroshare-gui/src/gui/gxsforums/GxsForumsDialog.cpp +++ b/retroshare-gui/src/gui/gxsforums/GxsForumsDialog.cpp @@ -23,7 +23,6 @@ #include "GxsForumGroupDialog.h" #include "GxsForumThreadWidget.h" #include "GxsForumUserNotify.h" -#include "gui/settings/rsharesettings.h" #include "gui/notifyqt.h" #include "gui/channels/ShareKey.h" @@ -31,9 +30,6 @@ GxsForumsDialog::GxsForumsDialog(QWidget *parent) : GxsGroupFrameDialog(rsGxsForums, parent) { - connect(NotifyQt::getInstance(), SIGNAL(settingsChanged()), this, SLOT(settingsChanged())); - - settingsChanged(); } GxsForumsDialog::~GxsForumsDialog() @@ -74,11 +70,6 @@ QString GxsForumsDialog::text(TextType type) return ""; } -RetroShareLink::enumType GxsForumsDialog::getLinkType() -{ - return RetroShareLink::TYPE_FORUM; -} - QString GxsForumsDialog::icon(IconType type) { switch (type) { @@ -101,12 +92,6 @@ QString GxsForumsDialog::icon(IconType type) return ""; } -void GxsForumsDialog::settingsChanged() -{ - setSingleTab(!Settings->getForumOpenAllInNewTab()); - setHideTabBarWithOneTab(Settings->getForumHideTabBarWithOneTab()); -} - GxsGroupDialog *GxsForumsDialog::createNewGroupDialog(TokenQueue *tokenQueue) { return new GxsForumGroupDialog(tokenQueue, this); diff --git a/retroshare-gui/src/gui/gxsforums/GxsForumsDialog.h b/retroshare-gui/src/gui/gxsforums/GxsForumsDialog.h index 5664ad12c..58e0f66de 100644 --- a/retroshare-gui/src/gui/gxsforums/GxsForumsDialog.h +++ b/retroshare-gui/src/gui/gxsforums/GxsForumsDialog.h @@ -41,11 +41,8 @@ public: virtual UserNotify *getUserNotify(QObject *parent); protected: - - RetroShareLink::enumType getLinkType(); - -private slots: - void settingsChanged(); + virtual RetroShareLink::enumType getLinkType() { return RetroShareLink::TYPE_FORUM; } + virtual GroupFrameSettings::Type groupFrameSettingsType() { return GroupFrameSettings::Forum; } private: /* GxsGroupFrameDialog */ diff --git a/retroshare-gui/src/gui/settings/ChannelPage.cpp b/retroshare-gui/src/gui/settings/ChannelPage.cpp index 1e19f22ec..d9b40b632 100644 --- a/retroshare-gui/src/gui/settings/ChannelPage.cpp +++ b/retroshare-gui/src/gui/settings/ChannelPage.cpp @@ -20,7 +20,6 @@ ****************************************************************/ #include "ChannelPage.h" -#include "rshare.h" #include "rsharesettings.h" ChannelPage::ChannelPage(QWidget * parent, Qt::WindowFlags flags) @@ -37,8 +36,7 @@ ChannelPage::~ChannelPage() /** Saves the changes on this page */ bool ChannelPage::save(QString &/*errmsg*/) { - Settings->setChannelOpenAllInNewTab(ui.openAllInNewTabCheckBox->isChecked()); - Settings->setChannelHideTabBarWithOneTab(ui.hideTabBarWithOneTabCheckBox->isChecked()); + ui.groupFrameSettingsWidget->saveSettings(GroupFrameSettings::Channel); return true; } @@ -46,6 +44,5 @@ bool ChannelPage::save(QString &/*errmsg*/) /** Loads the settings for this page */ void ChannelPage::load() { - ui.openAllInNewTabCheckBox->setChecked(Settings->getChannelOpenAllInNewTab()); - ui.hideTabBarWithOneTabCheckBox->setChecked(Settings->getChannelHideTabBarWithOneTab()); + ui.groupFrameSettingsWidget->loadSettings(GroupFrameSettings::Channel); } diff --git a/retroshare-gui/src/gui/settings/ChannelPage.ui b/retroshare-gui/src/gui/settings/ChannelPage.ui index 2454c2f5e..48159fd9e 100644 --- a/retroshare-gui/src/gui/settings/ChannelPage.ui +++ b/retroshare-gui/src/gui/settings/ChannelPage.ui @@ -31,24 +31,21 @@ - - - Open all forums in new tab - - - - - - - Hide tabbar with one open tab - - + + + + GroupFrameSettingsWidget + QWidget +
gui/settings/GroupFrameSettingsWidget.h
+ 1 +
+
diff --git a/retroshare-gui/src/gui/settings/ForumPage.cpp b/retroshare-gui/src/gui/settings/ForumPage.cpp index 1f5debc36..ac8fe275e 100644 --- a/retroshare-gui/src/gui/settings/ForumPage.cpp +++ b/retroshare-gui/src/gui/settings/ForumPage.cpp @@ -20,7 +20,6 @@ ****************************************************************/ #include "ForumPage.h" -#include "rshare.h" #include "rsharesettings.h" ForumPage::ForumPage(QWidget * parent, Qt::WindowFlags flags) @@ -39,10 +38,10 @@ bool ForumPage::save(QString &/*errmsg*/) { Settings->setForumMsgSetToReadOnActivate(ui.setMsgToReadOnActivate->isChecked()); Settings->setForumExpandNewMessages(ui.expandNewMessages->isChecked()); - Settings->setForumOpenAllInNewTab(ui.openAllInNewTabCheckBox->isChecked()); - Settings->setForumHideTabBarWithOneTab(ui.hideTabBarWithOneTabCheckBox->isChecked()); Settings->setForumLoadEmbeddedImages(ui.loadEmbeddedImages->isChecked()); + ui.groupFrameSettingsWidget->saveSettings(GroupFrameSettings::Forum); + return true; } @@ -51,7 +50,7 @@ void ForumPage::load() { ui.setMsgToReadOnActivate->setChecked(Settings->getForumMsgSetToReadOnActivate()); ui.expandNewMessages->setChecked(Settings->getForumExpandNewMessages()); - ui.openAllInNewTabCheckBox->setChecked(Settings->getForumOpenAllInNewTab()); - ui.hideTabBarWithOneTabCheckBox->setChecked(Settings->getForumHideTabBarWithOneTab()); ui.loadEmbeddedImages->setChecked(Settings->getForumLoadEmbeddedImages()); + + ui.groupFrameSettingsWidget->loadSettings(GroupFrameSettings::Forum); } diff --git a/retroshare-gui/src/gui/settings/ForumPage.ui b/retroshare-gui/src/gui/settings/ForumPage.ui index 7de72a798..1ef297ede 100644 --- a/retroshare-gui/src/gui/settings/ForumPage.ui +++ b/retroshare-gui/src/gui/settings/ForumPage.ui @@ -61,24 +61,21 @@ - - - Open all forums in new tab - - - - - - - Hide tabbar with one open tab - - + + + + GroupFrameSettingsWidget + QWidget +
gui/settings/GroupFrameSettingsWidget.h
+ 1 +
+
diff --git a/retroshare-gui/src/gui/settings/GroupFrameSettingsWidget.cpp b/retroshare-gui/src/gui/settings/GroupFrameSettingsWidget.cpp new file mode 100644 index 000000000..f6ccddef5 --- /dev/null +++ b/retroshare-gui/src/gui/settings/GroupFrameSettingsWidget.cpp @@ -0,0 +1,39 @@ +#include "GroupFrameSettingsWidget.h" +#include "ui_GroupFrameSettingsWidget.h" + +GroupFrameSettingsWidget::GroupFrameSettingsWidget(QWidget *parent) : + QWidget(parent), + ui(new Ui::GroupFrameSettingsWidget) +{ + ui->setupUi(this); + + mEnable = true; +} + +GroupFrameSettingsWidget::~GroupFrameSettingsWidget() +{ + delete ui; +} + +void GroupFrameSettingsWidget::loadSettings(GroupFrameSettings::Type type) +{ + GroupFrameSettings groupFrameSettings; + if (Settings->getGroupFrameSettings(type, groupFrameSettings)) { + ui->openAllInNewTabCheckBox->setChecked(groupFrameSettings.mOpenAllInNewTab); + ui->hideTabBarWithOneTabCheckBox->setChecked(groupFrameSettings.mHideTabBarWithOneTab); + } else { + hide(); + mEnable = false; + } +} + +void GroupFrameSettingsWidget::saveSettings(GroupFrameSettings::Type type) +{ + if (mEnable) { + GroupFrameSettings groupFrameSettings; + groupFrameSettings.mOpenAllInNewTab = ui->openAllInNewTabCheckBox->isChecked(); + groupFrameSettings.mHideTabBarWithOneTab = ui->hideTabBarWithOneTabCheckBox->isChecked(); + + Settings->setGroupFrameSettings(type, groupFrameSettings); + } +} diff --git a/retroshare-gui/src/gui/settings/GroupFrameSettingsWidget.h b/retroshare-gui/src/gui/settings/GroupFrameSettingsWidget.h new file mode 100644 index 000000000..c68155fa5 --- /dev/null +++ b/retroshare-gui/src/gui/settings/GroupFrameSettingsWidget.h @@ -0,0 +1,28 @@ +#ifndef GROUPFRAMESETTINGSWIDGET_H +#define GROUPFRAMESETTINGSWIDGET_H + +#include + +#include "gui/settings/rsharesettings.h" + +namespace Ui { +class GroupFrameSettingsWidget; +} + +class GroupFrameSettingsWidget : public QWidget +{ + Q_OBJECT + +public: + explicit GroupFrameSettingsWidget(QWidget *parent = 0); + ~GroupFrameSettingsWidget(); + + void loadSettings(GroupFrameSettings::Type type); + void saveSettings(GroupFrameSettings::Type type); + +private: + bool mEnable; + Ui::GroupFrameSettingsWidget *ui; +}; + +#endif // GROUPFRAMESETTINGSWIDGET_H diff --git a/retroshare-gui/src/gui/settings/GroupFrameSettingsWidget.ui b/retroshare-gui/src/gui/settings/GroupFrameSettingsWidget.ui new file mode 100644 index 000000000..07924172b --- /dev/null +++ b/retroshare-gui/src/gui/settings/GroupFrameSettingsWidget.ui @@ -0,0 +1,47 @@ + + + GroupFrameSettingsWidget + + + + 0 + 0 + 400 + 40 + + + + Form + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Open all forums in new tab + + + + + + + Hide tabbar with one open tab + + + + + + + + diff --git a/retroshare-gui/src/gui/settings/PostedPage.cpp b/retroshare-gui/src/gui/settings/PostedPage.cpp new file mode 100644 index 000000000..3d51e1ad2 --- /dev/null +++ b/retroshare-gui/src/gui/settings/PostedPage.cpp @@ -0,0 +1,50 @@ +/**************************************************************** + * RetroShare is distributed under the following license: + * + * Copyright (C) 2014, RetroShare Team + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + ****************************************************************/ + +#include "PostedPage.h" +#include "ui_PostedPage.h" +#include "rsharesettings.h" + +PostedPage::PostedPage(QWidget * parent, Qt::WindowFlags flags) + : ConfigPage(parent, flags), + ui(new Ui::PostedPage) +{ + ui->setupUi(this); + setAttribute(Qt::WA_QuitOnClose, false); +} + +PostedPage::~PostedPage() +{ +} + +/** Saves the changes on this page */ +bool PostedPage::save(QString &/*errmsg*/) +{ + ui->groupFrameSettingsWidget->saveSettings(GroupFrameSettings::Posted); + + return true; +} + +/** Loads the settings for this page */ +void PostedPage::load() +{ + ui->groupFrameSettingsWidget->loadSettings(GroupFrameSettings::Posted); +} diff --git a/retroshare-gui/src/gui/settings/PostedPage.h b/retroshare-gui/src/gui/settings/PostedPage.h new file mode 100644 index 000000000..d04850f5e --- /dev/null +++ b/retroshare-gui/src/gui/settings/PostedPage.h @@ -0,0 +1,53 @@ +/**************************************************************** + * RetroShare is distributed under the following license: + * + * Copyright (C) 2014, RetroShare Team + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + ****************************************************************/ + +#ifndef POSTEDPAGE_H +#define POSTEDPAGE_H + +#include + +namespace Ui { +class PostedPage; +} + +class PostedPage : public ConfigPage +{ + Q_OBJECT + +public: + PostedPage(QWidget * parent = 0, Qt::WindowFlags flags = 0); + ~PostedPage(); + + /** Saves the changes on this page */ + virtual bool save(QString &errmsg); + /** Loads the settings for this page */ + virtual void load(); + + virtual QPixmap iconPixmap() const { return QPixmap(":/images/posted_32.png") ; } + virtual QString pageName() const { return tr("Posted") ; } + virtual QString helpText() const { return ""; } + +private: + Ui::PostedPage *ui; +}; + +#endif // !POSTEDPAGE_H + diff --git a/retroshare-gui/src/gui/settings/PostedPage.ui b/retroshare-gui/src/gui/settings/PostedPage.ui new file mode 100644 index 000000000..44547bf1f --- /dev/null +++ b/retroshare-gui/src/gui/settings/PostedPage.ui @@ -0,0 +1,51 @@ + + + PostedPage + + + + 0 + 0 + 423 + 340 + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Tabs + + + + + + + + + + + + + GroupFrameSettingsWidget + QWidget +
gui/settings/GroupFrameSettingsWidget.h
+ 1 +
+
+ + +
diff --git a/retroshare-gui/src/gui/settings/rsettingswin.cpp b/retroshare-gui/src/gui/settings/rsettingswin.cpp index e42813c60..fc089f530 100644 --- a/retroshare-gui/src/gui/settings/rsettingswin.cpp +++ b/retroshare-gui/src/gui/settings/rsettingswin.cpp @@ -38,6 +38,7 @@ #include "ChannelPage.h" #include "MessagePage.h" #include "ForumPage.h" +#include "PostedPage.h" #include "PluginsPage.h" #include "ServicePermissionsPage.h" #include "rsharesettings.h" @@ -143,6 +144,7 @@ RSettingsWin::initStackedWidget() addPage(new MessagePage()); addPage(new ChannelPage()); addPage(new ForumPage()); + addPage(new PostedPage()); addPage(new ChatPage()); addPage(new AppearancePage()); addPage(new SoundPage() ); diff --git a/retroshare-gui/src/gui/settings/rsharesettings.cpp b/retroshare-gui/src/gui/settings/rsharesettings.cpp index 31eca6505..c07b717f9 100644 --- a/retroshare-gui/src/gui/settings/rsharesettings.cpp +++ b/retroshare-gui/src/gui/settings/rsharesettings.cpp @@ -983,44 +983,44 @@ void RshareSettings::setForumExpandNewMessages(bool value) setValueToGroup("ForumDialog", "ExpandNewMessages", value); } -bool RshareSettings::getForumOpenAllInNewTab() +static QString groupFrameSettingsTypeToString(GroupFrameSettings::Type type) { - return valueFromGroup("ForumDialog", "OpenAllInNewTab", false).toBool(); + switch (type) { + case GroupFrameSettings::Nothing: + return ""; + case GroupFrameSettings::Forum: + return "Forum"; + case GroupFrameSettings::Channel: + return "Channel"; + case GroupFrameSettings::Posted: + return "Posted"; + } + + return ""; } -void RshareSettings::setForumOpenAllInNewTab(bool value) +bool RshareSettings::getGroupFrameSettings(GroupFrameSettings::Type type, GroupFrameSettings &groupFrameSettings) { - setValueToGroup("ForumDialog", "OpenAllInNewTab", value); + QString group = groupFrameSettingsTypeToString(type); + if (group.isEmpty()) { + return false; + } + + groupFrameSettings.mOpenAllInNewTab = valueFromGroup(group, "OpenAllInNewTab", false).toBool(); + groupFrameSettings.mHideTabBarWithOneTab = valueFromGroup(group, "HideTabBarWithOneTab", true).toBool(); + + return true; } -bool RshareSettings::getForumHideTabBarWithOneTab() +void RshareSettings::setGroupFrameSettings(GroupFrameSettings::Type type, const GroupFrameSettings &groupFrameSettings) { - return valueFromGroup("ForumDialog", "HideTabBarWithOneTab", true).toBool(); -} + QString group = groupFrameSettingsTypeToString(type); + if (group.isEmpty()) { + return; + } -void RshareSettings::setForumHideTabBarWithOneTab(bool value) -{ - setValueToGroup("ForumDialog", "HideTabBarWithOneTab", value); -} - -bool RshareSettings::getChannelOpenAllInNewTab() -{ - return valueFromGroup("ChannelDialog", "OpenAllInNewTab", false).toBool(); -} - -void RshareSettings::setChannelOpenAllInNewTab(bool value) -{ - setValueToGroup("ChannelDialog", "OpenAllInNewTab", value); -} - -bool RshareSettings::getChannelHideTabBarWithOneTab() -{ - return valueFromGroup("ChannelDialog", "HideTabBarWithOneTab", true).toBool(); -} - -void RshareSettings::setChannelHideTabBarWithOneTab(bool value) -{ - setValueToGroup("ChannelDialog", "HideTabBarWithOneTab", value); + setValueToGroup(group, "OpenAllInNewTab", groupFrameSettings.mOpenAllInNewTab); + setValueToGroup(group, "HideTabBarWithOneTab", groupFrameSettings.mHideTabBarWithOneTab); } /* time before idle */ diff --git a/retroshare-gui/src/gui/settings/rsharesettings.h b/retroshare-gui/src/gui/settings/rsharesettings.h index 3a1b88059..e663550e5 100644 --- a/retroshare-gui/src/gui/settings/rsharesettings.h +++ b/retroshare-gui/src/gui/settings/rsharesettings.h @@ -64,6 +64,23 @@ class QTableWidget; class QToolBar; class QMainWindow; +class GroupFrameSettings +{ +public: + enum Type { Nothing, Forum, Channel, Posted }; + +public: + GroupFrameSettings() + { + mOpenAllInNewTab = false; + mHideTabBarWithOneTab = true; + } + +public: + bool mOpenAllInNewTab; + bool mHideTabBarWithOneTab; +}; + /** Handles saving and restoring RShares's settings * * NOTE: Qt 4.1 documentation states that constructing a QSettings object is @@ -303,18 +320,12 @@ public: void setForumMsgSetToReadOnActivate(bool value); bool getForumExpandNewMessages(); void setForumExpandNewMessages(bool value); - bool getForumOpenAllInNewTab(); - void setForumOpenAllInNewTab(bool value); - bool getForumHideTabBarWithOneTab(); - void setForumHideTabBarWithOneTab(bool value); bool getForumLoadEmbeddedImages(); void setForumLoadEmbeddedImages(bool value); - /* Channels */ - bool getChannelOpenAllInNewTab(); - void setChannelOpenAllInNewTab(bool value); - bool getChannelHideTabBarWithOneTab(); - void setChannelHideTabBarWithOneTab(bool value); + /* GroupFrameSettings */ + bool getGroupFrameSettings(GroupFrameSettings::Type type, GroupFrameSettings &groupFrameSettings); + void setGroupFrameSettings(GroupFrameSettings::Type type, const GroupFrameSettings &groupFrameSettings); /* time before idle */ uint getMaxTimeBeforeIdle(); diff --git a/retroshare-gui/src/retroshare-gui.pro b/retroshare-gui/src/retroshare-gui.pro index 884d1e95e..e3caa4a89 100644 --- a/retroshare-gui/src/retroshare-gui.pro +++ b/retroshare-gui/src/retroshare-gui.pro @@ -420,9 +420,11 @@ HEADERS += rshare.h \ gui/settings/TransferPage.h \ gui/settings/ChatPage.h \ gui/settings/ChannelPage.h \ + gui/settings/PostedPage.h \ gui/settings/RelayPage.h \ gui/settings/ServicePermissionsPage.h \ - gui/settings/AddFileAssociationDialog.h \ + gui/settings/AddFileAssociationDialog.h \ + gui/settings/GroupFrameSettingsWidget.h \ gui/toaster/MessageToaster.h \ gui/toaster/OnlineToaster.h \ gui/toaster/DownloadToaster.h \ @@ -581,10 +583,12 @@ FORMS += gui/StartDialog.ui \ gui/settings/SoundPage.ui \ gui/settings/ChatPage.ui \ gui/settings/ChannelPage.ui \ + gui/settings/PostedPage.ui \ gui/settings/RelayPage.ui \ gui/settings/ServicePermissionsPage.ui \ gui/settings/GlobalRouterStatistics.ui \ gui/settings/PluginItem.ui \ + gui/settings/GroupFrameSettingsWidget.ui \ gui/toaster/MessageToaster.ui \ gui/toaster/OnlineToaster.ui \ gui/toaster/DownloadToaster.ui \ @@ -783,9 +787,11 @@ SOURCES += main.cpp \ gui/settings/TransferPage.cpp \ gui/settings/ChatPage.cpp \ gui/settings/ChannelPage.cpp \ + gui/settings/PostedPage.cpp \ gui/settings/RelayPage.cpp \ gui/settings/ServicePermissionsPage.cpp \ gui/settings/AddFileAssociationDialog.cpp \ + gui/settings/GroupFrameSettingsWidget.cpp \ gui/statusbar/peerstatus.cpp \ gui/statusbar/natstatus.cpp \ gui/statusbar/dhtstatus.cpp \