From 26ba385b46277df09e2e003c3f631ab33a2452ef Mon Sep 17 00:00:00 2001 From: Craig Drummond Date: Mon, 20 Jul 2015 16:42:10 +0100 Subject: [PATCH] Remember current page --- gui/playlistspage.cpp | 5 +++++ online/onlineservicespage.cpp | 6 ++++++ widgets/multipagewidget.cpp | 31 +++++++++++++++++++++++++++++++ widgets/multipagewidget.h | 3 +++ 4 files changed, 45 insertions(+) diff --git a/gui/playlistspage.cpp b/gui/playlistspage.cpp index 2ae862a1a..4ab38fe6e 100644 --- a/gui/playlistspage.cpp +++ b/gui/playlistspage.cpp @@ -30,6 +30,7 @@ #include "widgets/icons.h" #include "stdactions.h" #include "support/actioncollection.h" +#include "support/configuration.h" #include "widgets/tableview.h" #include "widgets/spacerwidget.h" #include "widgets/menubutton.h" @@ -446,10 +447,14 @@ PlaylistsPage::PlaylistsPage(QWidget *p) addPage(Dynamic::self()->name(), Dynamic::self()->icon(), Dynamic::self()->title(), Dynamic::self()->descr(), dynamic); connect(stored, SIGNAL(addToDevice(QString,QString,QList)), SIGNAL(addToDevice(QString,QString,QList))); + Configuration config(metaObject()->className()); + load(config); } PlaylistsPage::~PlaylistsPage() { + Configuration config(metaObject()->className()); + save(config); } #ifdef ENABLE_DEVICES_SUPPORT diff --git a/online/onlineservicespage.cpp b/online/onlineservicespage.cpp index 8c4018dbf..b6f76c966 100644 --- a/online/onlineservicespage.cpp +++ b/online/onlineservicespage.cpp @@ -31,6 +31,7 @@ #include "podcastwidget.h" #include "streams/streamspage.h" #include "models/streamsmodel.h" +#include "support/configuration.h" OnlineServicesPage::OnlineServicesPage(QWidget *p) : MultiPageWidget(p) @@ -51,10 +52,15 @@ OnlineServicesPage::OnlineServicesPage(QWidget *p) podcast=new PodcastService(this); addPage(podcast->name(), podcast->icon(), podcast->title(), podcast->descr(), new PodcastWidget(podcast, this)); connect(podcast, SIGNAL(error(QString)), this, SIGNAL(error(QString))); + + Configuration config(metaObject()->className()); + load(config); } OnlineServicesPage::~OnlineServicesPage() { + Configuration config(metaObject()->className()); + save(config); } bool OnlineServicesPage::isDownloading() diff --git a/widgets/multipagewidget.cpp b/widgets/multipagewidget.cpp index 849985d55..c50c255b8 100644 --- a/widgets/multipagewidget.cpp +++ b/widgets/multipagewidget.cpp @@ -26,6 +26,7 @@ #include "support/utils.h" #include "support/squeezedtextlabel.h" #include "support/proxystyle.h" +#include "support/configuration.h" #include "listview.h" #include "sizewidget.h" #include "singlepagewidget.h" @@ -124,6 +125,36 @@ MultiPageWidget::~MultiPageWidget() { } +static const char *constCurrentPageKey="currentPage"; + +void MultiPageWidget::load(Configuration &config) +{ + QString p=config.get(constCurrentPageKey, QString()); + + if (!p.isEmpty()) { + QMap::ConstIterator it=entries.find(p); + if (it!=entries.constEnd()) { + setCurrentWidget(it.value().page); + } + } +} + +void MultiPageWidget::save(Configuration &config) const +{ + QString p; + QWidget *cw=currentWidget(); + + QMap::ConstIterator it=entries.constBegin(); + QMap::ConstIterator end=entries.constEnd(); + + for (; it!=end; ++it) { + if (it.value().page==cw) { + p=it.key(); + break; + } + } + config.set(constCurrentPageKey, p); +} void MultiPageWidget::setInfoText(const QString &text) { infoLabel->setText(text); diff --git a/widgets/multipagewidget.h b/widgets/multipagewidget.h index e28c3430f..686c73a00 100644 --- a/widgets/multipagewidget.h +++ b/widgets/multipagewidget.h @@ -33,6 +33,7 @@ class Icon; class SelectorButton; class SizeWidget; class QLabel; +class Configuration; class MultiPageWidget : public StackedPageWidget { @@ -49,6 +50,8 @@ public: MultiPageWidget(QWidget *p); virtual ~MultiPageWidget(); + void load(Configuration &config); + void save(Configuration &config) const; void setInfoText(const QString &text); void addPage(const QString &name, const QString &icon, const QString &text, const QString &subText, QWidget *widget); void addPage(const QString &name, const Icon &icon, const QString &text, const QString &subText, QWidget *widget);