File 0018-Add-a-feature-to-tell-the-user-to-refresh-his-cache-.patch of Package apper

From 7a633895144838dca5b9850308dffd030ff24946 Mon Sep 17 00:00:00 2001
From: Daniel Nicoletti <dantti12@gmail.com>
Date: Fri, 18 Jan 2013 00:58:04 -0200
Subject: [PATCH 18/20] Add a feature to tell the user to refresh his cache
 after a repo change

---
 ApperKCM/ApperKCM.cpp          | 17 ++++++++++++++---
 ApperKCM/Settings/Settings.cpp |  9 +++++++++
 ApperKCM/Settings/Settings.h   |  1 +
 ApperKCM/Settings/Settings.ui  | 19 +++++++++++++++++--
 4 files changed, 41 insertions(+), 5 deletions(-)

diff --git a/ApperKCM/ApperKCM.cpp b/ApperKCM/ApperKCM.cpp
index 6189149..74f7fd8 100644
--- a/ApperKCM/ApperKCM.cpp
+++ b/ApperKCM/ApperKCM.cpp
@@ -488,6 +488,8 @@ void ApperKCM::setPage(const QString &page)
                 m_settingsPage = new Settings(m_roles, this);
                 connect(m_settingsPage, SIGNAL(changed(bool)),
                         this, SLOT(checkChanged()));
+                connect(m_settingsPage, SIGNAL(refreshCache()),
+                        SLOT(refreshCache()));
                 ui->stackedWidget->addWidget(m_settingsPage);
 
                 connect(ui->generalSettingsPB, SIGNAL(toggled(bool)),
@@ -748,6 +750,8 @@ void ApperKCM::refreshCache()
 {
     emit changed(false);
 
+    QWidget *currentWidget = ui->stackedWidget->currentWidget();
+
     PkTransactionWidget *transactionW = new PkTransactionWidget(this);
     connect(transactionW, SIGNAL(titleChangedProgress(QString)), this, SIGNAL(caption(QString)));
     QPointer<PkTransaction> transaction = new PkTransaction(transactionW);
@@ -776,9 +780,16 @@ void ApperKCM::refreshCache()
         m_forceRefreshCache = transaction->exitStatus() == PkTransaction::Failed;
     }
 
-    // Go back to the updates page
-    m_updaterPage->getUpdates();
-    setPage("updates");
+    if (m_updaterPage) {
+        m_updaterPage->getUpdates();
+    }
+
+    if (currentWidget == m_settingsPage) {
+        setPage("settings");
+    } else {
+        setPage("updates");
+    }
+
     QTimer::singleShot(0, this, SLOT(checkChanged()));
 }
 
diff --git a/ApperKCM/Settings/Settings.cpp b/ApperKCM/Settings/Settings.cpp
index d526494..7745611 100644
--- a/ApperKCM/Settings/Settings.cpp
+++ b/ApperKCM/Settings/Settings.cpp
@@ -50,6 +50,13 @@ Settings::Settings(Transaction::Roles roles, QWidget *parent) :
 {
     ui->setupUi(this);
 
+    QAction *action = new QAction(i18n("Refresh Cache"), this);
+    connect(action, SIGNAL(triggered()), SIGNAL(refreshCache()));
+    connect(action, SIGNAL(triggered()), ui->messageWidget, SLOT(animatedHide()));
+    ui->messageWidget->addAction(action);
+    ui->messageWidget->setText(i18n("A repository was changed, it's highly recommended to refresh the cache"));
+    ui->messageWidget->hide();
+
     if (!(m_roles & Transaction::RoleRefreshCache)) {
         ui->intervalL->setEnabled(false);
         ui->intervalCB->setEnabled(false);
@@ -62,6 +69,8 @@ Settings::Settings(Transaction::Roles roles, QWidget *parent) :
     m_originModel = new OriginModel(this);
     connect(m_originModel, SIGNAL(refreshRepoList()),
             SLOT(refreshRepoModel()));
+    connect(m_originModel, SIGNAL(refreshRepoList()),
+            ui->messageWidget, SLOT(animatedShow()));
     QSortFilterProxyModel *proxy = new QSortFilterProxyModel(this);
     proxy->setDynamicSortFilter(true);
     proxy->setSourceModel(m_originModel);
diff --git a/ApperKCM/Settings/Settings.h b/ApperKCM/Settings/Settings.h
index f73d91d..29d48ae 100644
--- a/ApperKCM/Settings/Settings.h
+++ b/ApperKCM/Settings/Settings.h
@@ -51,6 +51,7 @@ public slots:
 
 signals:
     void changed(bool state);
+    void refreshCache();
 
 private slots:
     void refreshRepoModel();
diff --git a/ApperKCM/Settings/Settings.ui b/ApperKCM/Settings/Settings.ui
index 9ba5837..b4bfd80 100644
--- a/ApperKCM/Settings/Settings.ui
+++ b/ApperKCM/Settings/Settings.ui
@@ -15,18 +15,21 @@
   </property>
   <layout class="QGridLayout" name="gridLayout_2">
    <property name="verticalSpacing">
-    <number>1</number>
+    <number>0</number>
    </property>
    <property name="margin">
     <number>0</number>
    </property>
-   <item row="0" column="0">
+   <item row="1" column="0">
     <widget class="QStackedWidget" name="stackedWidget">
      <property name="currentIndex">
       <number>0</number>
      </property>
      <widget class="QWidget" name="page">
       <layout class="QGridLayout" name="gridLayout_3">
+       <property name="margin">
+        <number>0</number>
+       </property>
        <item row="0" column="0">
         <widget class="QWidget" name="widget" native="true">
          <layout class="QHBoxLayout" name="horizontalLayout">
@@ -199,6 +202,9 @@
      </widget>
      <widget class="QWidget" name="page_2">
       <layout class="QGridLayout" name="gridLayout">
+       <property name="margin">
+        <number>0</number>
+       </property>
        <item row="0" column="0" colspan="3">
         <widget class="QTreeView" name="originTV">
          <property name="editTriggers">
@@ -252,6 +258,9 @@
      </widget>
     </widget>
    </item>
+   <item row="0" column="0">
+    <widget class="KMessageWidget" name="messageWidget" native="true"/>
+   </item>
   </layout>
  </widget>
  <customwidgets>
@@ -260,6 +269,12 @@
    <extends>QComboBox</extends>
    <header>kcombobox.h</header>
   </customwidget>
+  <customwidget>
+   <class>KMessageWidget</class>
+   <extends>QWidget</extends>
+   <header>KMessageWidget</header>
+   <container>1</container>
+  </customwidget>
  </customwidgets>
  <resources/>
  <connections/>
-- 
1.8.1

openSUSE Build Service is sponsored by