diff options
Diffstat (limited to 'src/plugins/git/branchdialog.h')
-rw-r--r-- | src/plugins/git/branchdialog.h | 60 |
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 |