From 53fde645f9134b08ddfb19d97785d77395f9ad51 Mon Sep 17 00:00:00 2001
From: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Date: Mon, 9 Feb 2009 17:33:31 +0100
Subject: [PATCH] Fixes: Add "Describe" to svn plugin.

Details: Also remove unused change number dialog.
---
 src/plugins/subversion/changenumberdialog.cpp | 53 -------------
 src/plugins/subversion/changenumberdialog.h   | 58 --------------
 src/plugins/subversion/changenumberdialog.ui  | 79 -------------------
 src/plugins/subversion/subversion.pro         |  5 +-
 src/plugins/subversion/subversionplugin.cpp   | 63 ++++++++++-----
 src/plugins/subversion/subversionplugin.h     |  3 +
 6 files changed, 49 insertions(+), 212 deletions(-)
 delete mode 100644 src/plugins/subversion/changenumberdialog.cpp
 delete mode 100644 src/plugins/subversion/changenumberdialog.h
 delete mode 100644 src/plugins/subversion/changenumberdialog.ui

diff --git a/src/plugins/subversion/changenumberdialog.cpp b/src/plugins/subversion/changenumberdialog.cpp
deleted file mode 100644
index dad23a7490c..00000000000
--- a/src/plugins/subversion/changenumberdialog.cpp
+++ /dev/null
@@ -1,53 +0,0 @@
-/***************************************************************************
-**
-** This file is part of Qt Creator
-**
-** Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
-**
-** Contact:  Qt Software Information (qt-info@nokia.com)
-**
-**
-** Non-Open Source Usage
-**
-** Licensees may use this file in accordance with the Qt Beta Version
-** License Agreement, Agreement version 2.2 provided with the Software or,
-** alternatively, in accordance with the terms contained in a written
-** agreement between you and Nokia.
-**
-** GNU General Public License Usage
-**
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License versions 2.0 or 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the packaging
-** of this file.  Please review the following information to ensure GNU
-** General Public Licensing requirements will be met:
-**
-** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt GPL Exception
-** version 1.3, included in the file GPL_EXCEPTION.txt in this package.
-**
-***************************************************************************/
-
-#include <QtGui/QIntValidator>
-
-#include "changenumberdialog.h"
-
-using namespace Subversion::Internal;
-
-ChangeNumberDialog::ChangeNumberDialog(QWidget *parent)
-    : QDialog(parent)
-{
-    m_ui.setupUi(this);
-    m_ui.numberLineEdit->setValidator(new QIntValidator(0, 1000000, this));
-}
-
-int ChangeNumberDialog::number() const
-{
-    if (m_ui.numberLineEdit->text().isEmpty())
-        return -1;
-    bool ok;
-    return m_ui.numberLineEdit->text().toInt(&ok);
-}
diff --git a/src/plugins/subversion/changenumberdialog.h b/src/plugins/subversion/changenumberdialog.h
deleted file mode 100644
index 933860e45c2..00000000000
--- a/src/plugins/subversion/changenumberdialog.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/***************************************************************************
-**
-** This file is part of Qt Creator
-**
-** Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
-**
-** Contact:  Qt Software Information (qt-info@nokia.com)
-**
-**
-** Non-Open Source Usage
-**
-** Licensees may use this file in accordance with the Qt Beta Version
-** License Agreement, Agreement version 2.2 provided with the Software or,
-** alternatively, in accordance with the terms contained in a written
-** agreement between you and Nokia.
-**
-** GNU General Public License Usage
-**
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License versions 2.0 or 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the packaging
-** of this file.  Please review the following information to ensure GNU
-** General Public Licensing requirements will be met:
-**
-** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt GPL Exception
-** version 1.3, included in the file GPL_EXCEPTION.txt in this package.
-**
-***************************************************************************/
-
-#ifndef CHANGENUMBERDIALOG_H
-#define CHANGENUMBERDIALOG_H
-
-#include "ui_changenumberdialog.h"
-
-#include <QtGui/QDialog>
-
-namespace Subversion {
-namespace Internal {
-
-class ChangeNumberDialog : public QDialog
-{
-    Q_OBJECT
-public:
-    ChangeNumberDialog(QWidget *parent = 0);
-    int number() const;
-
-private:
-    Ui::ChangeNumberDialog m_ui;
-};
-
-} // namespace Subversion
-} // namespace Internal
-
-#endif // CHANGENUMBERDIALOG_H
diff --git a/src/plugins/subversion/changenumberdialog.ui b/src/plugins/subversion/changenumberdialog.ui
deleted file mode 100644
index ff3e6517508..00000000000
--- a/src/plugins/subversion/changenumberdialog.ui
+++ /dev/null
@@ -1,79 +0,0 @@
-<ui version="4.0" >
- <class>Subversion::Internal::ChangeNumberDialog</class>
- <widget class="QDialog" name="Subversion::Internal::ChangeNumberDialog" >
-  <property name="geometry" >
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>319</width>
-    <height>76</height>
-   </rect>
-  </property>
-  <property name="windowTitle" >
-   <string>Change Number</string>
-  </property>
-  <layout class="QGridLayout" >
-   <property name="margin" >
-    <number>9</number>
-   </property>
-   <property name="spacing" >
-    <number>6</number>
-   </property>
-   <item row="0" column="1" >
-    <widget class="QLineEdit" name="numberLineEdit" />
-   </item>
-   <item row="0" column="0" >
-    <widget class="QLabel" name="label" >
-     <property name="text" >
-      <string>Change Number:</string>
-     </property>
-    </widget>
-   </item>
-   <item row="1" column="0" colspan="2" >
-    <widget class="QDialogButtonBox" name="buttonBox" >
-     <property name="orientation" >
-      <enum>Qt::Horizontal</enum>
-     </property>
-     <property name="standardButtons" >
-      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
-     </property>
-    </widget>
-   </item>
-  </layout>
- </widget>
- <resources/>
- <connections>
-  <connection>
-   <sender>buttonBox</sender>
-   <signal>accepted()</signal>
-   <receiver>Subversion::Internal::ChangeNumberDialog</receiver>
-   <slot>accept()</slot>
-   <hints>
-    <hint type="sourcelabel" >
-     <x>59</x>
-     <y>24</y>
-    </hint>
-    <hint type="destinationlabel" >
-     <x>160</x>
-     <y>38</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>buttonBox</sender>
-   <signal>rejected()</signal>
-   <receiver>Subversion::Internal::ChangeNumberDialog</receiver>
-   <slot>reject()</slot>
-   <hints>
-    <hint type="sourcelabel" >
-     <x>59</x>
-     <y>24</y>
-    </hint>
-    <hint type="destinationlabel" >
-     <x>160</x>
-     <y>38</y>
-    </hint>
-   </hints>
-  </connection>
- </connections>
-</ui>
diff --git a/src/plugins/subversion/subversion.pro b/src/plugins/subversion/subversion.pro
index 7de5499fa76..993d22eb6a3 100644
--- a/src/plugins/subversion/subversion.pro
+++ b/src/plugins/subversion/subversion.pro
@@ -14,7 +14,6 @@ HEADERS += annotationhighlighter.h \
     subversionoutputwindow.h \
     settingspage.h \
     subversioneditor.h \
-    changenumberdialog.h \
     subversionsubmiteditor.h \
     subversionsettings.h
 
@@ -24,11 +23,9 @@ SOURCES += annotationhighlighter.cpp \
     subversionoutputwindow.cpp \
     settingspage.cpp \
     subversioneditor.cpp \
-    changenumberdialog.cpp \
     subversionsubmiteditor.cpp \
     subversionsettings.cpp
 
-FORMS += settingspage.ui \
-    changenumberdialog.ui
+FORMS += settingspage.ui
 
 RESOURCES += subversion.qrc
diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp
index 7f6ea476eb2..a41525fe19e 100644
--- a/src/plugins/subversion/subversionplugin.cpp
+++ b/src/plugins/subversion/subversionplugin.cpp
@@ -38,7 +38,6 @@
 
 #include "subversionoutputwindow.h"
 #include "subversionsubmiteditor.h"
-#include "changenumberdialog.h"
 #include "subversionconstants.h"
 #include "subversioncontrol.h"
 
@@ -70,6 +69,9 @@
 #include <QtGui/QMainWindow>
 #include <QtGui/QMenu>
 #include <QtGui/QMessageBox>
+#include <QtGui/QInputDialog>
+
+#include <limits.h>
 
 using namespace Subversion::Internal;
 
@@ -96,6 +98,7 @@ const char * const SubversionPlugin::ANNOTATE_CURRENT   = "Subversion.AnnotateCu
 const char * const SubversionPlugin::SEPARATOR3         = "Subversion.Separator3";
 const char * const SubversionPlugin::STATUS             = "Subversion.Status";
 const char * const SubversionPlugin::UPDATE             = "Subversion.Update";
+const char * const SubversionPlugin::DESCRIBE           = "Subversion.Describe";
 
 static const VCSBase::VCSBaseEditorParameters editorParameters[] = {
 {
@@ -186,6 +189,7 @@ SubversionPlugin::SubversionPlugin() :
     m_annotateCurrentAction(0),
     m_statusAction(0),
     m_updateProjectAction(0),
+    m_describeAction(0),
     m_submitCurrentLogAction(0),
     m_submitDiffAction(0),
     m_submitUndoAction(0),
@@ -248,6 +252,16 @@ static const VCSBase::VCSBaseSubmitEditorParameters submitParameters = {
     Subversion::Constants::SUBVERSIONCOMMITEDITOR
 };
 
+static inline Core::Command *createSeparator(QObject *parent,
+                                             Core::ActionManager *ami,
+                                             const char*id,
+                                             const QList<int> &globalcontext)
+{
+    QAction *tmpaction = new QAction(parent);
+    tmpaction->setSeparator(true);
+    return ami->registerAction(tmpaction, id, globalcontext);
+}
+
 bool SubversionPlugin::initialize(const QStringList &arguments, QString *errorMessage)
 {
     Q_UNUSED(arguments);
@@ -330,10 +344,7 @@ bool SubversionPlugin::initialize(const QStringList &arguments, QString *errorMe
     connect(m_revertAction, SIGNAL(triggered()), this, SLOT(revertCurrentFile()));
     subversionMenu->addAction(command);
 
-    QAction *tmpaction = new QAction(this);
-    tmpaction->setSeparator(true);
-    subversionMenu->addAction(ami->registerAction(tmpaction,
-        SubversionPlugin::SEPARATOR0, globalcontext));
+    subversionMenu->addAction(createSeparator(this, ami, SubversionPlugin::SEPARATOR0, globalcontext));
 
     m_diffProjectAction = new QAction(tr("Diff Project"), this);
     command = ami->registerAction(m_diffProjectAction, SubversionPlugin::DIFF_PROJECT,
@@ -349,10 +360,7 @@ bool SubversionPlugin::initialize(const QStringList &arguments, QString *errorMe
     connect(m_diffCurrentAction, SIGNAL(triggered()), this, SLOT(diffCurrentFile()));
     subversionMenu->addAction(command);
 
-    tmpaction = new QAction(this);
-    tmpaction->setSeparator(true);
-    subversionMenu->addAction(ami->registerAction(tmpaction,
-        SubversionPlugin::SEPARATOR1, globalcontext));
+    subversionMenu->addAction(createSeparator(this, ami, SubversionPlugin::SEPARATOR1, globalcontext));
 
     m_commitAllAction = new QAction(tr("Commit All Files"), this);
     command = ami->registerAction(m_commitAllAction, SubversionPlugin::COMMIT_ALL,
@@ -368,10 +376,7 @@ bool SubversionPlugin::initialize(const QStringList &arguments, QString *errorMe
     connect(m_commitCurrentAction, SIGNAL(triggered()), this, SLOT(startCommitCurrentFile()));
     subversionMenu->addAction(command);
 
-    tmpaction = new QAction(this);
-    tmpaction->setSeparator(true);
-    subversionMenu->addAction(ami->registerAction(tmpaction,
-        SubversionPlugin::SEPARATOR2, globalcontext));
+    subversionMenu->addAction(createSeparator(this, ami, SubversionPlugin::SEPARATOR2, globalcontext));
 
     m_filelogCurrentAction = new QAction(tr("Filelog Current File"), this);
     command = ami->registerAction(m_filelogCurrentAction,
@@ -389,10 +394,12 @@ bool SubversionPlugin::initialize(const QStringList &arguments, QString *errorMe
         SLOT(annotateCurrentFile()));
     subversionMenu->addAction(command);
 
-    tmpaction = new QAction(this);
-    tmpaction->setSeparator(true);
-    subversionMenu->addAction(ami->registerAction(tmpaction,
-        SubversionPlugin::SEPARATOR3, globalcontext));
+    m_describeAction = new QAction(tr("Describe..."), this);
+    command = ami->registerAction(m_describeAction, SubversionPlugin::DESCRIBE, globalcontext);
+    connect(m_describeAction, SIGNAL(triggered()), this, SLOT(slotDescribe()));
+    subversionMenu->addAction(command);
+
+    subversionMenu->addAction(createSeparator(this, ami, SubversionPlugin::SEPARATOR3, globalcontext));
 
     m_statusAction = new QAction(tr("Project Status"), this);
     command = ami->registerAction(m_statusAction, SubversionPlugin::STATUS,
@@ -536,7 +543,7 @@ SubversionSubmitEditor *SubversionPlugin::openSubversionSubmitEditor(const QStri
 
 void SubversionPlugin::updateActions()
 {
-    QString fileName = currentFileName();
+    const QString fileName = currentFileName();
     const bool hasFile = !fileName.isEmpty();
 
     m_addAction->setEnabled(hasFile);
@@ -549,6 +556,7 @@ void SubversionPlugin::updateActions()
     m_filelogCurrentAction->setEnabled(hasFile);
     m_annotateCurrentAction->setEnabled(hasFile);
     m_statusAction->setEnabled(true);
+    m_describeAction->setEnabled(true);
 
     QString baseName;
     if (hasFile)
@@ -881,6 +889,25 @@ void SubversionPlugin::describe(const QString &source, const QString &changeNr)
     }
 }
 
+void SubversionPlugin::slotDescribe()
+{
+    const QStringList topLevels = currentProjectsTopLevels();
+    if (topLevels.size() != 1)
+        return;
+
+    QInputDialog inputDialog(Core::ICore::instance()->mainWindow());
+    inputDialog.setWindowFlags(inputDialog.windowFlags() & ~Qt::WindowContextHelpButtonHint);
+    inputDialog.setInputMode(QInputDialog::IntInput);
+    inputDialog.setIntRange(2, INT_MAX);
+    inputDialog.setWindowTitle(tr("Describe"));
+    inputDialog.setLabelText(tr("Revision number:"));
+    if (inputDialog.exec() != QDialog::Accepted)
+        return;
+
+    const int revision = inputDialog.intValue();
+    describe(topLevels.front(), QString::number(revision));
+}
+
 void SubversionPlugin::submitCurrentLog()
 {
     Core::EditorManager::instance()->closeEditors(QList<Core::IEditor*>()
diff --git a/src/plugins/subversion/subversionplugin.h b/src/plugins/subversion/subversionplugin.h
index f589468e40f..fc1c4063a88 100644
--- a/src/plugins/subversion/subversionplugin.h
+++ b/src/plugins/subversion/subversionplugin.h
@@ -119,6 +119,7 @@ private slots:
     void annotateCurrentFile();
     void projectStatus();
     void describe(const QString &source, const QString &changeNr);
+    void slotDescribe();
     void updateProject();
     void submitCurrentLog();
     void diffFiles(const QStringList &);
@@ -165,6 +166,7 @@ private:
     QAction *m_annotateCurrentAction;
     QAction *m_statusAction;
     QAction *m_updateProjectAction;
+    QAction *m_describeAction;
 
     QAction *m_submitCurrentLogAction;
     QAction *m_submitDiffAction;
@@ -187,6 +189,7 @@ private:
     static const char * const SEPARATOR3;
     static const char * const STATUS;
     static const char * const UPDATE;
+    static const char * const DESCRIBE;
 
     static SubversionPlugin *m_subversionPluginInstance;
 
-- 
GitLab