OSDN Git Service

VCS: Add WizardPage asking to configure the VCS
authorTobias Hunger <tobias.hunger@nokia.com>
Wed, 20 Apr 2011 13:48:35 +0000 (15:48 +0200)
committerTobias Hunger <tobias.hunger@nokia.com>
Wed, 20 Apr 2011 13:50:30 +0000 (15:50 +0200)
src/plugins/vcsbase/vcsbase.pro
src/plugins/vcsbase/vcsconfigurationpage.cpp [new file with mode: 0644]
src/plugins/vcsbase/vcsconfigurationpage.h [new file with mode: 0644]
src/plugins/vcsbase/vcsconfigurationpage.ui [new file with mode: 0644]

index 7e383f0..6a4cc9e 100644 (file)
@@ -5,6 +5,7 @@ include(../../qtcreatorplugin.pri)
 include(vcsbase_dependencies.pri)
 HEADERS += vcsbase_global.h \
     vcsbaseconstants.h \
+    vcsconfigurationpage.h \
     vcsplugin.h \
     corelistener.h \
     vcsbaseplugin.h \
@@ -35,6 +36,7 @@ HEADERS += vcsbase_global.h \
 
 SOURCES += vcsplugin.cpp \
     vcsbaseplugin.cpp \
+    vcsconfigurationpage.cpp \
     corelistener.cpp \
     baseannotationhighlighter.cpp \
     diffhighlighter.cpp \
@@ -67,4 +69,6 @@ FORMS += commonsettingspage.ui \
     nicknamedialog.ui \
     checkoutprogresswizardpage.ui \
     basecheckoutwizardpage.ui \
-    cleandialog.ui
+    cleandialog.ui \
+    vcsconfigurationpage.ui \
+
diff --git a/src/plugins/vcsbase/vcsconfigurationpage.cpp b/src/plugins/vcsbase/vcsconfigurationpage.cpp
new file mode 100644 (file)
index 0000000..6a8a4f6
--- /dev/null
@@ -0,0 +1,96 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (info@qt.nokia.com)
+**
+**
+** GNU Lesser General Public License Usage
+**
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this file.
+** Please review the following information to ensure the GNU Lesser General
+** Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** Other Usage
+**
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**************************************************************************/
+
+#include "vcsconfigurationpage.h"
+
+#include "vcsbaseconstants.h"
+
+#include "ui_vcsconfigurationpage.h"
+
+#include <coreplugin/dialogs/iwizard.h>
+#include <coreplugin/icore.h>
+#include <coreplugin/iversioncontrol.h>
+
+namespace VCSBase {
+
+class VcsConfigurationPagePrivate
+{
+public:
+    VcsConfigurationPagePrivate() :
+        m_ui(new Ui::VcsConfigurationPage)
+    { }
+
+    ~VcsConfigurationPagePrivate()
+    {
+        delete m_ui;
+    }
+
+    Ui::VcsConfigurationPage *m_ui;
+    const Core::IVersionControl *m_versionControl;
+};
+
+VcsConfigurationPage::VcsConfigurationPage(const Core::IVersionControl *vc, QWidget *parent) :
+    QWizardPage(parent),
+    m_d(new VcsConfigurationPagePrivate)
+{
+    Q_ASSERT(vc);
+    setTitle(tr("Configuration"));
+    setSubTitle(tr("Please configure <b>%1</b> now.").arg(vc->displayName()));
+
+    m_d->m_versionControl = vc;
+
+    connect(m_d->m_versionControl, SIGNAL(configurationChanged()),
+            this, SIGNAL(completeChanged()));
+
+    m_d->m_ui->setupUi(this);
+
+    connect(m_d->m_ui->configureButton, SIGNAL(clicked()),
+            this, SLOT(openConfiguration()));
+}
+
+VcsConfigurationPage::~VcsConfigurationPage()
+{
+    delete m_d->m_ui;
+}
+
+bool VcsConfigurationPage::isComplete() const
+{
+    return m_d->m_versionControl->isConfigured();
+}
+
+void VcsConfigurationPage::openConfiguration()
+{
+    Core::ICore *core = Core::ICore::instance();
+    core->showOptionsDialog(VCSBase::Constants::VCS_SETTINGS_CATEGORY, m_d->m_versionControl->id());
+}
+
+} // namespace VCSBase
diff --git a/src/plugins/vcsbase/vcsconfigurationpage.h b/src/plugins/vcsbase/vcsconfigurationpage.h
new file mode 100644 (file)
index 0000000..252f5dc
--- /dev/null
@@ -0,0 +1,65 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (info@qt.nokia.com)
+**
+**
+** GNU Lesser General Public License Usage
+**
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this file.
+** Please review the following information to ensure the GNU Lesser General
+** Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** Other Usage
+**
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**************************************************************************/
+
+#ifndef VCSCONFIGURATIONPAGE_H
+#define VCSCONFIGURATIONPAGE_H
+
+#include "vcsbase_global.h"
+
+#include <QtGui/QWizardPage>
+
+namespace Core {
+class IVersionControl;
+} // namespace Core
+
+namespace VCSBase {
+
+class VcsConfigurationPagePrivate;
+
+class VCSBASE_EXPORT VcsConfigurationPage : public QWizardPage {
+    Q_OBJECT
+
+public:
+    explicit VcsConfigurationPage(const Core::IVersionControl *, QWidget *parent = 0);
+    ~VcsConfigurationPage();
+
+    bool isComplete() const;
+
+private slots:
+    void openConfiguration();
+private:
+    VcsConfigurationPagePrivate *const m_d;
+};
+
+} // namespace VCSBase
+
+#endif // VCSCONFIGURATIONPAGE_H
diff --git a/src/plugins/vcsbase/vcsconfigurationpage.ui b/src/plugins/vcsbase/vcsconfigurationpage.ui
new file mode 100644 (file)
index 0000000..2b3eba9
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>VCSBase::VcsConfigurationPage</class>
+ <widget class="QWizardPage" name="VCSBase::VcsConfigurationPage">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>264</width>
+    <height>200</height>
+   </rect>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QPushButton" name="configureButton">
+     <property name="text">
+      <string>Configure</string>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>