From a07e8d889af63b7d82d02123c4eb9768cd7538a5 Mon Sep 17 00:00:00 2001
From: csoler
Date: Thu, 18 Jul 2013 19:32:12 +0000
Subject: [PATCH] added help system to the MainPage class. Each page can now
derive its own help string and show it using a two-states help button. To try
it, I have implemented it on the NewsFeed page
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@6514 b45a01b8-16f6-495d-af2f-9b41ad6348cc
---
retroshare-gui/src/gui/MainPage.cpp | 35 +++++++++++++++++++
retroshare-gui/src/gui/NewsFeed.cpp | 20 +++++++++++
retroshare-gui/src/gui/NewsFeed.h | 2 ++
retroshare-gui/src/gui/NewsFeed.ui | 23 ++++++++++++
retroshare-gui/src/gui/images.qrc | 1 +
retroshare-gui/src/gui/images/64px_help.png | Bin 0 -> 6761 bytes
retroshare-gui/src/retroshare-gui.pro | 1 +
retroshare-gui/src/retroshare-gui/mainpage.h | 24 ++++++++++---
8 files changed, 101 insertions(+), 5 deletions(-)
create mode 100644 retroshare-gui/src/gui/MainPage.cpp
create mode 100644 retroshare-gui/src/gui/images/64px_help.png
diff --git a/retroshare-gui/src/gui/MainPage.cpp b/retroshare-gui/src/gui/MainPage.cpp
new file mode 100644
index 000000000..2bb79a758
--- /dev/null
+++ b/retroshare-gui/src/gui/MainPage.cpp
@@ -0,0 +1,35 @@
+#include
+#include
+#include
+#include
+
+MainPage::MainPage(QWidget *parent , Qt::WindowFlags flags ) : QWidget(parent, flags)
+{
+ help_browser = NULL ;
+}
+
+
+void MainPage::showHelp(bool b)
+{
+ if(help_browser == NULL)
+ {
+ help_browser = new QTextBrowser(this) ;
+ help_browser->setHtml(helpHtmlText()) ;
+
+ QGraphicsDropShadowEffect * effect = new QGraphicsDropShadowEffect(help_browser) ;
+ effect->setBlurRadius(30.0);
+ help_browser->setGraphicsEffect(effect);
+
+ help_browser->setSizePolicy(QSizePolicy(QSizePolicy::Minimum,QSizePolicy::Minimum)) ;
+ help_browser->resize(size()*0.5) ;
+ help_browser->move(width()/2 - help_browser->width()/2,height()/2 - help_browser->height()/2);
+ help_browser->update() ;
+ }
+ std::cerr << "Toggling help to " << b << std::endl;
+ if(b)
+ help_browser->show() ;
+ else
+ help_browser->hide() ;
+}
+
+
diff --git a/retroshare-gui/src/gui/NewsFeed.cpp b/retroshare-gui/src/gui/NewsFeed.cpp
index 062034b39..acbe22be7 100644
--- a/retroshare-gui/src/gui/NewsFeed.cpp
+++ b/retroshare-gui/src/gui/NewsFeed.cpp
@@ -84,6 +84,7 @@ NewsFeed::NewsFeed(QWidget *parent)
connect(removeAllButton, SIGNAL(clicked()), this, SLOT(removeAll()));
connect(feedOptionsButton, SIGNAL(clicked()), this, SLOT(feedoptions()));
+ connect(helpButton, SIGNAL(toggled(bool)), (MainPage*)this, SLOT(showHelp(bool)));
}
NewsFeed::~NewsFeed()
@@ -93,6 +94,25 @@ NewsFeed::~NewsFeed()
}
}
+const QString& NewsFeed::helpHtmlText() const
+{
+ static const QString str = tr(
+ " News Feed
\
+ The News Feed displays the last events on your network, sorted by the time you received them. \
+ This gives you a summary of the activity of your friends. \
+ You can configure which events to show by pressing on Options.
\
+ The various events shown are: \
+
\
+ - Connection attempts (useful to make friends with new people and control who's trying to reach you)
\
+ - Channel and Forum posts
\
+ - New Channels and Forums you can subscribe to
\
+ - Private messages from your friends
\
+
\
+ ") ;
+
+ return str ;
+}
+
UserNotify *NewsFeed::getUserNotify(QObject *parent)
{
return new NewsFeedUserNotify(this, parent);
diff --git a/retroshare-gui/src/gui/NewsFeed.h b/retroshare-gui/src/gui/NewsFeed.h
index 4daf2f5d6..9ce8f82d7 100644
--- a/retroshare-gui/src/gui/NewsFeed.h
+++ b/retroshare-gui/src/gui/NewsFeed.h
@@ -52,6 +52,8 @@ public:
virtual void openChat(std::string peerId);
virtual void openComments(uint32_t type, const RsGxsGroupId &groupId, const RsGxsMessageId &msgId, const QString &title);
+ virtual const QString& helpHtmlText() const ;
+
static void testFeeds(uint notifyFlags);
static void testFeed(FeedNotify *feedNotify);
diff --git a/retroshare-gui/src/gui/NewsFeed.ui b/retroshare-gui/src/gui/NewsFeed.ui
index fc5d7d0e8..8ae0de9df 100644
--- a/retroshare-gui/src/gui/NewsFeed.ui
+++ b/retroshare-gui/src/gui/NewsFeed.ui
@@ -97,6 +97,29 @@
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+ :/images/64px_help.png:/images/64px_help.png
+
+
+ true
+
+
+ true
+
+
+
-
diff --git a/retroshare-gui/src/gui/images.qrc b/retroshare-gui/src/gui/images.qrc
index d3ead3723..204f667a6 100644
--- a/retroshare-gui/src/gui/images.qrc
+++ b/retroshare-gui/src/gui/images.qrc
@@ -10,6 +10,7 @@
images/help/addafriend.png
images/help/addfriendkey.png
images/help/dhtgreen.png
+ images/64px_help.png
images/help/natgreen.png
images/help/natred.png
images/attach.png
diff --git a/retroshare-gui/src/gui/images/64px_help.png b/retroshare-gui/src/gui/images/64px_help.png
new file mode 100644
index 0000000000000000000000000000000000000000..f58d478a733a8d0fdc251b5de26f93f0e05b41dd
GIT binary patch
literal 6761
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
literal 0
HcmV?d00001
diff --git a/retroshare-gui/src/retroshare-gui.pro b/retroshare-gui/src/retroshare-gui.pro
index 52e2d89f8..b4397b355 100644
--- a/retroshare-gui/src/retroshare-gui.pro
+++ b/retroshare-gui/src/retroshare-gui.pro
@@ -623,6 +623,7 @@ SOURCES += main.cpp \
gui/FileTransfer/TurtleRouterStatistics.cpp \
gui/FileTransfer/DetailsDialog.cpp \
gui/FileTransfer/TransferUserNotify.cpp \
+ gui/MainPage.cpp \
gui/HelpDialog.cpp \
gui/LogoBar.cpp \
lang/languagesupport.cpp \
diff --git a/retroshare-gui/src/retroshare-gui/mainpage.h b/retroshare-gui/src/retroshare-gui/mainpage.h
index f8dfee9e8..3b0b42e8e 100644
--- a/retroshare-gui/src/retroshare-gui/mainpage.h
+++ b/retroshare-gui/src/retroshare-gui/mainpage.h
@@ -24,17 +24,31 @@
#define _MAINPAGE_H
#include
+#include
class UserNotify;
class MainPage : public QWidget
{
-public:
- /** Default Constructor */
- MainPage(QWidget *parent = 0, Qt::WindowFlags flags = 0) : QWidget(parent, flags) {}
+ Q_OBJECT
- virtual void retranslateUi() {}
- virtual UserNotify *getUserNotify(QObject */*parent*/) { return NULL; }
+ public:
+ /** Default Constructor */
+ MainPage(QWidget *parent = 0, Qt::WindowFlags flags = 0) ;
+
+ virtual void retranslateUi() {}
+ virtual UserNotify *getUserNotify(QObject */*parent*/) { return NULL; }
+
+ // Overload this to add some help info to the page. The way the info is
+ // shown is handled by showHelp() below;
+ //
+ virtual const QString& helpHtmlText() const { static QString s ; return s ; }
+
+ public slots:
+ void showHelp(bool b) ;
+
+ private:
+ QTextBrowser *help_browser ;
};
#endif