aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/git/branchdialog.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/git/branchdialog.h')
-rw-r--r--src/plugins/git/branchdialog.h60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/plugins/git/branchdialog.h b/src/plugins/git/branchdialog.h
new file mode 100644
index 00000000000..064719b8ff0
--- /dev/null
+++ b/src/plugins/git/branchdialog.h
@@ -0,0 +1,60 @@
+#ifndef BRANCHDIALOG_H
+#define BRANCHDIALOG_H
+
+#include <QtGui/QDialog>
+
+QT_BEGIN_NAMESPACE
+class QPushButton;
+QT_END_NAMESPACE
+
+namespace Git {
+ namespace Internal {
+ namespace Ui {
+ class BranchDialog;
+ }
+
+ class GitClient;
+ class BranchModel;
+
+ /* Branch dialog: Display a list of local branches at the top
+ * and remote branches below. Offers to checkout/delete local
+ * branches.
+ * TODO: Add new branch (optionally tracking a remote one).
+ * How to find out that a local branch is a tracking one? */
+ class BranchDialog : public QDialog {
+ Q_OBJECT
+ Q_DISABLE_COPY(BranchDialog)
+ public:
+ explicit BranchDialog(QWidget *parent = 0);
+
+ bool init(GitClient *client, const QString &workingDirectory, QString *errorMessage);
+
+ virtual ~BranchDialog();
+
+ protected:
+ virtual void changeEvent(QEvent *e);
+
+ private slots:
+ void slotEnableButtons();
+ void slotCheckoutSelectedBranch();
+ void slotDeleteSelectedBranch();
+ void slotLocalBranchActivated();
+
+ private:
+ bool ask(const QString &title, const QString &what, bool defaultButton);
+
+ int selectedLocalBranchIndex() const;
+ int selectedRemoteBranchIndex() const;
+
+ GitClient *m_client;
+ Ui::BranchDialog *m_ui;
+ QPushButton *m_checkoutButton;
+ QPushButton *m_deleteButton;
+
+ BranchModel *m_localModel;
+ BranchModel *m_remoteModel;
+ QString m_repoDirectory;
+ };
+ } // namespace Internal
+} // namespace Git
+#endif // BRANCHDIALOG_H