1 /**************************************************************************** 2 ** 3 ** Copyright (C) 2016 Petar Perisin. 4 ** Contact: petar.perisin@gmail.com 5 ** 6 ** This file is part of Qt Creator. 7 ** 8 ** Commercial License Usage 9 ** Licensees holding valid commercial Qt licenses may use this file in 10 ** accordance with the commercial license agreement provided with the 11 ** Software or, alternatively, in accordance with the terms contained in 12 ** a written agreement between you and The Qt Company. For licensing terms 13 ** and conditions see https://www.qt.io/terms-conditions. For further 14 ** information use the contact form at https://www.qt.io/contact-us. 15 ** 16 ** GNU General Public License Usage 17 ** Alternatively, this file may be used under the terms of the GNU 18 ** General Public License version 3 as published by the Free Software 19 ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT 20 ** included in the packaging of this file. Please review the following 21 ** information to ensure the GNU General Public License requirements will 22 ** be met: https://www.gnu.org/licenses/gpl-3.0.html. 23 ** 24 ****************************************************************************/ 25 26 #pragma once 27 28 #include <QDialog> 29 #include <QMultiMap> 30 #include <QDate> 31 #include <QSharedPointer> 32 33 namespace Git { 34 namespace Internal { class GitClient; } 35 } 36 37 namespace Gerrit { 38 namespace Internal { 39 40 class GerritParameters; 41 42 namespace Ui { class GerritPushDialog; } 43 44 class GerritPushDialog : public QDialog 45 { 46 Q_OBJECT 47 48 public: 49 GerritPushDialog(const QString &workingDir, const QString &reviewerList, 50 QSharedPointer<GerritParameters> parameters, QWidget *parent); 51 ~GerritPushDialog() override; 52 53 QString selectedCommit() const; 54 QString selectedRemoteName() const; 55 QString selectedRemoteBranchName() const; 56 QString selectedTopic() const; 57 QString reviewers() const; 58 QString initErrorMessage() const; 59 QString pushTarget() const; 60 void storeTopic(); 61 62 private: 63 void setChangeRange(); 64 void onRemoteChanged(bool force = false); 65 void setRemoteBranches(bool includeOld = false); 66 void updateCommits(int index); 67 void validate(); 68 69 using BranchDate = QPair<QString, QDate>; 70 using RemoteBranchesMap = QMultiMap<QString, BranchDate>; 71 72 QString determineRemoteBranch(const QString &localBranch); 73 void initRemoteBranches(); 74 QString calculateChangeRange(const QString &branch); 75 QString m_workingDir; 76 QString m_suggestedRemoteBranch; 77 QString m_initErrorMessage; 78 Ui::GerritPushDialog *m_ui; 79 RemoteBranchesMap m_remoteBranches; 80 bool m_hasLocalCommits = false; 81 bool m_currentSupportsWip = false; 82 }; 83 84 85 } // namespace Internal 86 } // namespace Gerrit 87