From 097ba1655dfabe51b5865eac221f9f19c7ae91a5 Mon Sep 17 00:00:00 2001 From: thunder2 Date: Thu, 8 May 2014 17:17:48 +0000 Subject: [PATCH] Add a new Channel Page in settings (Patch from Phenom) git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@7355 b45a01b8-16f6-495d-af2f-9b41ad6348cc --- .../src/gui/gxschannels/GxsChannelDialog.cpp | 20 +++++--- .../src/gui/gxschannels/GxsChannelDialog.h | 1 + .../src/gui/settings/ChannelPage.cpp | 49 ++++++++++++++++++ retroshare-gui/src/gui/settings/ChannelPage.h | 50 +++++++++++++++++++ .../src/gui/settings/ChannelPage.ui | 47 +++++++++++++++++ .../src/gui/settings/rsettingswin.cpp | 2 + .../src/gui/settings/rsharesettings.cpp | 10 ++++ .../src/gui/settings/rsharesettings.h | 2 + retroshare-gui/src/retroshare-gui.pro | 39 ++++++++------- 9 files changed, 196 insertions(+), 24 deletions(-) create mode 100644 retroshare-gui/src/gui/settings/ChannelPage.cpp create mode 100644 retroshare-gui/src/gui/settings/ChannelPage.h create mode 100644 retroshare-gui/src/gui/settings/ChannelPage.ui diff --git a/retroshare-gui/src/gui/gxschannels/GxsChannelDialog.cpp b/retroshare-gui/src/gui/gxschannels/GxsChannelDialog.cpp index 7683ef6b9..e404828c2 100644 --- a/retroshare-gui/src/gui/gxschannels/GxsChannelDialog.cpp +++ b/retroshare-gui/src/gui/gxschannels/GxsChannelDialog.cpp @@ -24,6 +24,8 @@ #include "GxsChannelPostsWidget.h" #include "gui/channels/ShareKey.h" #include "gui/feeds/GxsChannelPostItem.h" +#include "gui/settings/rsharesettings.h" +#include "gui/notifyqt.h" /**** * #define DEBUG_CHANNEL @@ -33,14 +35,20 @@ GxsChannelDialog::GxsChannelDialog(QWidget *parent) : GxsGroupFrameDialog(rsGxsChannels, parent) { - //#TODO: add settings like forums - setSingleTab(true); + connect(NotifyQt::getInstance(), SIGNAL(settingsChanged()), this, SLOT(settingsChanged())); + + settingsChanged(); } GxsChannelDialog::~GxsChannelDialog() { } +//UserNotify *GxsChannelDialog::getUserNotify(QObject *parent) +//{ +// return new ChannelUserNotify(parent); +//} + QString GxsChannelDialog::text(TextType type) { switch (type) { @@ -94,10 +102,10 @@ QString GxsChannelDialog::icon(IconType type) return ""; } -//UserNotify *GxsChannelDialog::getUserNotify(QObject *parent) -//{ -// return new ChannelUserNotify(parent); -//} +void GxsChannelDialog::settingsChanged() +{ + setSingleTab(!Settings->getChannelOpenAllInNewTab()); +} GxsGroupDialog *GxsChannelDialog::createNewGroupDialog(TokenQueue *tokenQueue) { diff --git a/retroshare-gui/src/gui/gxschannels/GxsChannelDialog.h b/retroshare-gui/src/gui/gxschannels/GxsChannelDialog.h index 59e751982..7d5873482 100644 --- a/retroshare-gui/src/gui/gxschannels/GxsChannelDialog.h +++ b/retroshare-gui/src/gui/gxschannels/GxsChannelDialog.h @@ -37,6 +37,7 @@ public: // virtual UserNotify *getUserNotify(QObject *parent); private slots: + void settingsChanged(); void toggleAutoDownload(); private: diff --git a/retroshare-gui/src/gui/settings/ChannelPage.cpp b/retroshare-gui/src/gui/settings/ChannelPage.cpp new file mode 100644 index 000000000..8fe5b8bd1 --- /dev/null +++ b/retroshare-gui/src/gui/settings/ChannelPage.cpp @@ -0,0 +1,49 @@ +/**************************************************************** + * RetroShare is distributed under the following license: + * + * Copyright (C) 2006, crypton + * + * 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 "ChannelPage.h" +#include "rshare.h" +#include "rsharesettings.h" + +ChannelPage::ChannelPage(QWidget * parent, Qt::WindowFlags flags) + : ConfigPage(parent, flags) +{ + ui.setupUi(this); + setAttribute(Qt::WA_QuitOnClose, false); +} + +ChannelPage::~ChannelPage() +{ +} + +/** Saves the changes on this page */ +bool ChannelPage::save(QString &/*errmsg*/) +{ + Settings->setChannelOpenAllInNewTab(ui.openAllInNewTabCheckBox->isChecked()); + + return true; +} + +/** Loads the settings for this page */ +void ChannelPage::load() +{ + ui.openAllInNewTabCheckBox->setChecked(Settings->getChannelOpenAllInNewTab()); +} diff --git a/retroshare-gui/src/gui/settings/ChannelPage.h b/retroshare-gui/src/gui/settings/ChannelPage.h new file mode 100644 index 000000000..2e603bb36 --- /dev/null +++ b/retroshare-gui/src/gui/settings/ChannelPage.h @@ -0,0 +1,50 @@ +/**************************************************************** + * RetroShare is distributed under the following license: + * + * Copyright (C) 2006, crypton + * + * 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 CHANNELPAGE_H +#define CHANNELPAGE_H + +#include +#include "ui_ChannelPage.h" + +class ChannelPage : public ConfigPage +{ + Q_OBJECT + +public: + ChannelPage(QWidget * parent = 0, Qt::WindowFlags flags = 0); + ~ChannelPage(); + + /** 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/channels.png") ; } + virtual QString pageName() const { return tr("Channels") ; } + virtual QString helpText() const { return ""; } + +private: + Ui::ChannelPage ui; +}; + +#endif // !CHANNELPAGE_H + diff --git a/retroshare-gui/src/gui/settings/ChannelPage.ui b/retroshare-gui/src/gui/settings/ChannelPage.ui new file mode 100644 index 000000000..53882695a --- /dev/null +++ b/retroshare-gui/src/gui/settings/ChannelPage.ui @@ -0,0 +1,47 @@ + + + ChannelPage + + + + 0 + 0 + 423 + 340 + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + New channel + + + + + + Open all forums in new tab + + + + + + + + + + + diff --git a/retroshare-gui/src/gui/settings/rsettingswin.cpp b/retroshare-gui/src/gui/settings/rsettingswin.cpp index 986d258ff..cc75df973 100644 --- a/retroshare-gui/src/gui/settings/rsettingswin.cpp +++ b/retroshare-gui/src/gui/settings/rsettingswin.cpp @@ -35,6 +35,7 @@ #include "TransferPage.h" #include "RelayPage.h" #include "ChatPage.h" +#include "ChannelPage.h" #include "MessagePage.h" #include "ForumPage.h" #include "PluginsPage.h" @@ -132,6 +133,7 @@ RSettingsWin::initStackedWidget() addPage(new NotifyPage()); addPage(new CryptoPage()); addPage(new MessagePage()); + addPage(new ChannelPage()); addPage(new ForumPage()); addPage(new ChatPage()); addPage(new AppearancePage()); diff --git a/retroshare-gui/src/gui/settings/rsharesettings.cpp b/retroshare-gui/src/gui/settings/rsharesettings.cpp index 531b7460e..a92c80777 100644 --- a/retroshare-gui/src/gui/settings/rsharesettings.cpp +++ b/retroshare-gui/src/gui/settings/rsharesettings.cpp @@ -778,6 +778,16 @@ void RshareSettings::setForumOpenAllInNewTab(bool value) setValueToGroup("ForumDialog", "OpenAllInNewTab", value); } +bool RshareSettings::getChannelOpenAllInNewTab() +{ + return valueFromGroup("ChannelDialog", "OpenAllInNewTab", true).toBool(); +} + +void RshareSettings::setChannelOpenAllInNewTab(bool value) +{ + setValueToGroup("ChannelDialog", "OpenAllInNewTab", value); +} + /* time before idle */ uint RshareSettings::getMaxTimeBeforeIdle() { diff --git a/retroshare-gui/src/gui/settings/rsharesettings.h b/retroshare-gui/src/gui/settings/rsharesettings.h index 673046c54..7eeff68a6 100644 --- a/retroshare-gui/src/gui/settings/rsharesettings.h +++ b/retroshare-gui/src/gui/settings/rsharesettings.h @@ -256,6 +256,8 @@ public: void setForumOpenAllInNewTab(bool value); bool getForumLoadEmbeddedImages(); void setForumLoadEmbeddedImages(bool value); + bool getChannelOpenAllInNewTab(); + void setChannelOpenAllInNewTab(bool value); /* time before idle */ uint getMaxTimeBeforeIdle(); diff --git a/retroshare-gui/src/retroshare-gui.pro b/retroshare-gui/src/retroshare-gui.pro index bc018c245..4d86940bf 100644 --- a/retroshare-gui/src/retroshare-gui.pro +++ b/retroshare-gui/src/retroshare-gui.pro @@ -406,12 +406,13 @@ HEADERS += rshare.h \ gui/settings/PluginItem.h \ gui/settings/AppearancePage.h \ gui/settings/FileAssociationsPage.h \ - gui/settings/SoundPage.h \ - gui/settings/TransferPage.h \ - gui/settings/ChatPage.h \ - gui/settings/RelayPage.h \ - gui/settings/ServicePermissionsPage.h \ - gui/settings/AddFileAssociationDialog.h \ + gui/settings/SoundPage.h \ + gui/settings/TransferPage.h \ + gui/settings/ChatPage.h \ + gui/settings/ChannelPage.h \ + gui/settings/RelayPage.h \ + gui/settings/ServicePermissionsPage.h \ + gui/settings/AddFileAssociationDialog.h \ gui/toaster/MessageToaster.h \ gui/toaster/OnlineToaster.h \ gui/toaster/DownloadToaster.h \ @@ -565,12 +566,13 @@ FORMS += gui/StartDialog.ui \ gui/settings/ForumPage.ui \ gui/settings/PluginsPage.ui \ gui/settings/AppearancePage.ui \ - gui/settings/TransferPage.ui \ - gui/settings/SoundPage.ui \ - gui/settings/ChatPage.ui \ - gui/settings/RelayPage.ui \ - gui/settings/ServicePermissionsPage.ui \ - gui/settings/GlobalRouterStatistics.ui \ + gui/settings/TransferPage.ui \ + gui/settings/SoundPage.ui \ + gui/settings/ChatPage.ui \ + gui/settings/ChannelPage.ui \ + gui/settings/RelayPage.ui \ + gui/settings/ServicePermissionsPage.ui \ + gui/settings/GlobalRouterStatistics.ui \ gui/settings/PluginItem.ui \ gui/toaster/MessageToaster.ui \ gui/toaster/OnlineToaster.ui \ @@ -766,12 +768,13 @@ SOURCES += main.cpp \ gui/settings/PluginItem.cpp \ gui/settings/AppearancePage.cpp \ gui/settings/FileAssociationsPage.cpp \ - gui/settings/SoundPage.cpp \ - gui/settings/TransferPage.cpp \ - gui/settings/ChatPage.cpp \ - gui/settings/RelayPage.cpp \ - gui/settings/ServicePermissionsPage.cpp \ - gui/settings/AddFileAssociationDialog.cpp \ + gui/settings/SoundPage.cpp \ + gui/settings/TransferPage.cpp \ + gui/settings/ChatPage.cpp \ + gui/settings/ChannelPage.cpp \ + gui/settings/RelayPage.cpp \ + gui/settings/ServicePermissionsPage.cpp \ + gui/settings/AddFileAssociationDialog.cpp \ gui/statusbar/peerstatus.cpp \ gui/statusbar/natstatus.cpp \ gui/statusbar/dhtstatus.cpp \