From c54575e670fa6de8f8ba6450d6fa7278ae0627e7 Mon Sep 17 00:00:00 2001
From: Tobias Hunger <tobias.hunger@nokia.com>
Date: Thu, 26 May 2011 22:34:22 +0200
Subject: [PATCH] Git: remote dialog improvements

 * Add shortcuts
 * Add refresh button

Change-Id: Idfe5c86459d654ea75fb90542eaa4d9cc1405d33
Reviewed-on: http://codereview.qt.nokia.com/220
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com>
---
 src/plugins/git/remotedialog.cpp |  6 +++++
 src/plugins/git/remotedialog.h   |  1 +
 src/plugins/git/remotedialog.ui  | 38 ++++++++++++++++++++++----
 src/plugins/git/remotemodel.cpp  | 46 +++++++++++++-------------------
 src/plugins/git/remotemodel.h    |  8 ++----
 5 files changed, 60 insertions(+), 39 deletions(-)

diff --git a/src/plugins/git/remotedialog.cpp b/src/plugins/git/remotedialog.cpp
index 4f2efcee4ad..b666abddaa4 100644
--- a/src/plugins/git/remotedialog.cpp
+++ b/src/plugins/git/remotedialog.cpp
@@ -103,6 +103,7 @@ RemoteDialog::RemoteDialog(QWidget *parent) :
     connect(m_ui->addButton, SIGNAL(clicked()), this, SLOT(addRemote()));
     connect(m_ui->fetchButton, SIGNAL(clicked()), this, SLOT(fetchFromRemote()));
     connect(m_ui->removeButton, SIGNAL(clicked()), this, SLOT(removeRemote()));
+    connect(m_ui->refreshButton, SIGNAL(clicked()), this, SLOT(refreshRemotes()));
 }
 
 RemoteDialog::~RemoteDialog()
@@ -126,6 +127,11 @@ void RemoteDialog::refresh(const QString &repository, bool force)
     }
 }
 
+void RemoteDialog::refreshRemotes()
+{
+    refresh(m_remoteModel->workingDirectory(), true);
+}
+
 void RemoteDialog::addRemote()
 {
     if (!m_addDialog)
diff --git a/src/plugins/git/remotedialog.h b/src/plugins/git/remotedialog.h
index 72683b5292c..4458bf544c7 100644
--- a/src/plugins/git/remotedialog.h
+++ b/src/plugins/git/remotedialog.h
@@ -80,6 +80,7 @@ public:
 public slots:
     void refresh(const QString &repository, bool force);
 
+    void refreshRemotes();
     void addRemote();
     void removeRemote();
     void fetchFromRemote();
diff --git a/src/plugins/git/remotedialog.ui b/src/plugins/git/remotedialog.ui
index 718a6d8663e..bb52f12b1e6 100644
--- a/src/plugins/git/remotedialog.ui
+++ b/src/plugins/git/remotedialog.ui
@@ -16,14 +16,33 @@
   <layout class="QVBoxLayout" name="verticalLayout_3">
    <item>
     <widget class="QGroupBox" name="infoGroupBox">
-     <layout class="QFormLayout" name="formLayout">
-      <item row="0" column="0" colspan="2">
+     <layout class="QHBoxLayout" name="horizontalLayout_2">
+      <property name="topMargin">
+       <number>4</number>
+      </property>
+      <property name="bottomMargin">
+       <number>4</number>
+      </property>
+      <item>
        <widget class="QLabel" name="repositoryLabel">
         <property name="text">
          <string notr="true">Repository: Dummy</string>
         </property>
        </widget>
       </item>
+      <item>
+       <widget class="QPushButton" name="refreshButton">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Maximum" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text">
+         <string>Re&amp;fresh</string>
+        </property>
+       </widget>
+      </item>
      </layout>
     </widget>
    </item>
@@ -33,6 +52,15 @@
       <string>Remotes</string>
      </property>
      <layout class="QVBoxLayout" name="verticalLayout">
+      <property name="spacing">
+       <number>9</number>
+      </property>
+      <property name="topMargin">
+       <number>4</number>
+      </property>
+      <property name="bottomMargin">
+       <number>4</number>
+      </property>
       <item>
        <widget class="QTableView" name="remoteView">
         <property name="editTriggers">
@@ -63,7 +91,7 @@
         <item>
          <widget class="QPushButton" name="addButton">
           <property name="text">
-           <string>Add...</string>
+           <string>&amp;Add...</string>
           </property>
           <property name="autoDefault">
            <bool>false</bool>
@@ -73,14 +101,14 @@
         <item>
          <widget class="QPushButton" name="fetchButton">
           <property name="text">
-           <string>Fetch</string>
+           <string>F&amp;etch</string>
           </property>
          </widget>
         </item>
         <item>
          <widget class="QPushButton" name="removeButton">
           <property name="text">
-           <string>Remove</string>
+           <string>&amp;Remove</string>
           </property>
           <property name="autoDefault">
            <bool>false</bool>
diff --git a/src/plugins/git/remotemodel.cpp b/src/plugins/git/remotemodel.cpp
index 8499f6d9c67..d6a122fd9e1 100644
--- a/src/plugins/git/remotemodel.cpp
+++ b/src/plugins/git/remotemodel.cpp
@@ -58,11 +58,6 @@ RemoteModel::RemoteModel(GitClient *client, QObject *parent) :
     m_client(client)
 { }
 
-bool RemoteModel::refresh(const QString &workingDirectory, QString *errorMessage)
-{
-    return refreshRemotes(workingDirectory, errorMessage);
-}
-
 QString RemoteModel::remoteName(int row) const
 {
     return m_remotes.at(row).name;
@@ -77,11 +72,11 @@ bool RemoteModel::removeRemote(int row)
 {
     QString output;
     QString error;
-    bool success = runGitRemoteCommand(m_workingDirectory,
-                                       QStringList() << QLatin1String("rm") << remoteName(row),
-                                       &output, &error);
+    bool success = m_client->synchronousRemoteCmd(m_workingDirectory,
+                                                  QStringList() << QLatin1String("rm") << remoteName(row),
+                                                  &output, &error);
     if (success)
-        success = refreshRemotes(m_workingDirectory, &error);
+        success = refresh(m_workingDirectory, &error);
     return success;
 }
 
@@ -92,11 +87,11 @@ bool RemoteModel::addRemote(const QString &name, const QString &url)
     if (name.isEmpty() || url.isEmpty())
         return false;
 
-    bool success = runGitRemoteCommand(m_workingDirectory,
-                                       QStringList() << QLatin1String("add") << name << url,
-                                       &output, &error);
+    bool success = m_client->synchronousRemoteCmd(m_workingDirectory,
+                                                  QStringList() << QLatin1String("add") << name << url,
+                                                  &output, &error);
     if (success)
-        success = refreshRemotes(m_workingDirectory, &error);
+        success = refresh(m_workingDirectory, &error);
     return success;
 }
 
@@ -104,11 +99,11 @@ bool RemoteModel::renameRemote(const QString &oldName, const QString &newName)
 {
     QString output;
     QString error;
-    bool success = runGitRemoteCommand(m_workingDirectory,
-                                       QStringList() << QLatin1String("rename") << oldName << newName,
-                                       &output, &error);
+    bool success = m_client->synchronousRemoteCmd(m_workingDirectory,
+                                                  QStringList() << QLatin1String("rename") << oldName << newName,
+                                                  &output, &error);
     if (success)
-        success = refreshRemotes(m_workingDirectory, &error);
+        success = refresh(m_workingDirectory, &error);
     return success;
 }
 
@@ -116,11 +111,11 @@ bool RemoteModel::updateUrl(const QString &name, const QString &newUrl)
 {
     QString output;
     QString error;
-    bool success = runGitRemoteCommand(m_workingDirectory,
-                                       QStringList() << QLatin1String("set-url") << name << newUrl,
-                                       &output, &error);
+    bool success = m_client->synchronousRemoteCmd(m_workingDirectory,
+                                                  QStringList() << QLatin1String("set-url") << name << newUrl,
+                                                  &output, &error);
     if (success)
-        success = refreshRemotes(m_workingDirectory, &error);
+        success = refresh(m_workingDirectory, &error);
     return success;
 }
 
@@ -189,11 +184,6 @@ Qt::ItemFlags RemoteModel::flags(const QModelIndex &index) const
     return m_flags;
 }
 
-bool RemoteModel::runGitRemoteCommand(const QString &workingDirectory, const QStringList &additionalArgs, QString *output, QString *errorMessage)
-{
-    return m_client->synchronousRemoteCmd(workingDirectory, additionalArgs, output, errorMessage);
-}
-
 void RemoteModel::clear()
 {
     if (m_remotes.isEmpty())
@@ -202,13 +192,13 @@ void RemoteModel::clear()
     reset();
 }
 
-bool RemoteModel::refreshRemotes(const QString &workingDirectory, QString *errorMessage)
+bool RemoteModel::refresh(const QString &workingDirectory, QString *errorMessage)
 {
     // Run branch command with verbose.
     QStringList remoteArgs;
     remoteArgs << QLatin1String("-v");
     QString output;
-    if (!runGitRemoteCommand(workingDirectory, remoteArgs, &output, errorMessage))
+    if (!m_client->synchronousRemoteCmd(workingDirectory, remoteArgs, &output, errorMessage))
         return false;
     // Parse output
     m_workingDirectory = workingDirectory;
diff --git a/src/plugins/git/remotemodel.h b/src/plugins/git/remotemodel.h
index 60939e0172d..312fc755c96 100644
--- a/src/plugins/git/remotemodel.h
+++ b/src/plugins/git/remotemodel.h
@@ -47,8 +47,8 @@ class RemoteModel : public QAbstractTableModel {
 public:
     explicit RemoteModel(GitClient *client, QObject *parent = 0);
 
-    virtual void clear();
-    virtual bool refresh(const QString &workingDirectory, QString *errorMessage);
+    void clear();
+    bool refresh(const QString &workingDirectory, QString *errorMessage);
 
     QString remoteName(int row) const;
     QString remoteUrl(int row) const;
@@ -80,10 +80,6 @@ protected:
     };
     typedef QList<Remote> RemoteList;
 
-    /* Parse git output and populate m_branches. */
-    bool refreshRemotes(const QString &workingDirectory, QString *errorMessage);
-    bool runGitRemoteCommand(const QString &workingDirectory, const QStringList &additionalArgs, QString *output, QString *errorMessage);
-
 private:
     const Qt::ItemFlags m_flags;
 
-- 
GitLab