From 63e7fe19b98116803e06c2ceb0589d7cc1a80855 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh <orgad.shaneh@audiocodes.com> Date: Sun, 29 Sep 2013 23:30:22 +0300 Subject: [PATCH] Git: Remove setting for side-by-side diff Use the diff switcher state as a permanent setting Change-Id: I6c3669090082787ae750596cf3e62973c04d94c3 Reviewed-by: Jarek Kobus <jaroslaw.kobus@digia.com> Reviewed-by: Tobias Hunger <tobias.hunger@digia.com> --- src/plugins/git/gitclient.cpp | 89 ++++++++++++-------------------- src/plugins/git/gitclient.h | 19 ++----- src/plugins/git/settingspage.cpp | 2 - src/plugins/git/settingspage.ui | 79 +++++++++++++--------------- 4 files changed, 73 insertions(+), 116 deletions(-) diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index d48d5805f26..c952df8b1bf 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -99,19 +99,19 @@ public: DiffShow }; - GitDiffSwitcher(Core::IEditor *parentEditor, GitClient *gitClient, GitClient::DiffEditorType switchToType) + GitDiffSwitcher(Core::IEditor *parentEditor, GitClient *gitClient) : QObject(parentEditor), m_editor(parentEditor), - m_gitClient(gitClient), - m_editorType(switchToType) + m_gitClient(gitClient) { - QIcon actionIcon = switchToType == GitClient::SideBySideDiffEditor - ? QIcon(QLatin1String(Core::Constants::ICON_SIDE_BY_SIDE_DIFF)) - : QIcon(QLatin1String(Core::Constants::ICON_TEXT_DIFF)); + m_usingDiffEditor = gitClient->settings()->boolValue(GitSettings::useDiffEditorKey); + QIcon actionIcon = m_usingDiffEditor + ? QIcon(QLatin1String(Core::Constants::ICON_TEXT_DIFF)) + : QIcon(QLatin1String(Core::Constants::ICON_SIDE_BY_SIDE_DIFF)); - const QString actionToolTip = switchToType == GitClient::SideBySideDiffEditor - ? tr("Switch to Side By Side Diff Editor") - : tr("Switch to Text Diff Editor"); + const QString actionToolTip = m_usingDiffEditor + ? tr("Switch to Text Diff Editor") + : tr("Switch to Side By Side Diff Editor"); QAction *switchAction = new QAction(actionIcon, actionToolTip, parentEditor); parentEditor->toolBar()->addAction(switchAction); @@ -140,7 +140,7 @@ private: GitClient *m_gitClient; QString m_workingDirectory; DiffType m_diffType; - GitClient::DiffEditorType m_editorType; + bool m_usingDiffEditor; QString m_fileName; QStringList m_stagedFiles; QStringList m_unstagedFiles; @@ -153,24 +153,25 @@ private: void GitDiffSwitcher::execute() { + m_gitClient->settings()->setValue(GitSettings::useDiffEditorKey, !m_usingDiffEditor); switch (m_diffType) { case DiffRepository: - m_gitClient->diff(m_workingDirectory, QStringList(), QStringList(), m_editorType); + m_gitClient->diff(m_workingDirectory, QStringList(), QStringList()); break; case DiffFile: - m_gitClient->diff(m_workingDirectory, m_fileName, m_editorType); + m_gitClient->diff(m_workingDirectory, m_fileName); break; case DiffFileList: - m_gitClient->diff(m_workingDirectory, m_unstagedFiles, m_stagedFiles, m_editorType); + m_gitClient->diff(m_workingDirectory, m_unstagedFiles, m_stagedFiles); break; case DiffProjectList: - m_gitClient->diff(m_workingDirectory, m_projectFiles, QStringList(), m_editorType); + m_gitClient->diff(m_workingDirectory, m_projectFiles, QStringList()); break; case DiffBranch: - m_gitClient->diffBranch(m_workingDirectory, m_baseArguments, m_branchName, m_editorType); + m_gitClient->diffBranch(m_workingDirectory, m_baseArguments, m_branchName); break; case DiffShow: - m_gitClient->show(m_fileName, m_id, m_baseArguments, m_displayName, m_editorType); + m_gitClient->show(m_fileName, m_id, m_baseArguments, m_displayName); break; default: break; @@ -594,8 +595,7 @@ public: void executeCommand() { - m_client->diff(m_workingDirectory, m_unstagedFileNames, m_stagedFileNames, - GitClient::SimpleTextDiffEditor); + m_client->diff(m_workingDirectory, m_unstagedFileNames, m_stagedFileNames); } private: @@ -615,7 +615,7 @@ public: void executeCommand() { - m_client->diff(m_workingDirectory, m_fileName, GitClient::SimpleTextDiffEditor); + m_client->diff(m_workingDirectory, m_fileName); } private: @@ -634,8 +634,7 @@ public: void executeCommand() { - m_client->diffBranch(m_workingDirectory, baseArguments(), m_branchName, - GitClient::SimpleTextDiffEditor); + m_client->diffBranch(m_workingDirectory, baseArguments(), m_branchName); } private: @@ -670,8 +669,7 @@ public: void executeCommand() { - m_client->show(m_workingDirectory, m_id, baseArguments(), QString(), - GitClient::SimpleTextDiffEditor); + m_client->show(m_workingDirectory, m_id, baseArguments()); } private: @@ -1064,16 +1062,12 @@ VcsBase::VcsBaseEditorWidget *GitClient::createVcsEditor( void GitClient::diff(const QString &workingDirectory, const QStringList &unstagedFileNames, - const QStringList &stagedFileNames, - DiffEditorType editorType) + const QStringList &stagedFileNames) { const QString title = tr("Git Diff"); const int timeout = settings()->intValue(GitSettings::timeoutKey); - const bool showSideBySideEditor = (editorType == DefaultDiffEditor - && settings()->boolValue(GitSettings::useDiffEditorKey)) - || editorType == SideBySideDiffEditor; Core::IEditor *newEditor = 0; - if (showSideBySideEditor) { + if (settings()->boolValue(GitSettings::useDiffEditorKey)) { const char *propertyName = "sideBySideOriginalFileName"; DiffEditor::DiffEditor *diffEditor = findExistingDiffEditor(propertyName, workingDirectory); if (!diffEditor) { @@ -1168,8 +1162,7 @@ void GitClient::diff(const QString &workingDirectory, command->execute(); } if (newEditor) { - GitDiffSwitcher *switcher = new GitDiffSwitcher(newEditor, this, - showSideBySideEditor ? SimpleTextDiffEditor : SideBySideDiffEditor); + GitDiffSwitcher *switcher = new GitDiffSwitcher(newEditor, this); switcher->setWorkingDirectory(workingDirectory); if (unstagedFileNames.empty() && stagedFileNames.empty()) { // local repository diff @@ -1186,17 +1179,12 @@ void GitClient::diff(const QString &workingDirectory, } } -void GitClient::diff(const QString &workingDirectory, - const QString &fileName, - DiffEditorType editorType) +void GitClient::diff(const QString &workingDirectory, const QString &fileName) { const QString title = tr("Git Diff \"%1\"").arg(fileName); - const bool showSideBySideEditor = (editorType == DefaultDiffEditor - && settings()->boolValue(GitSettings::useDiffEditorKey)) - || editorType == SideBySideDiffEditor; const QString sourceFile = VcsBase::VcsBaseEditorWidget::getSource(workingDirectory, fileName); Core::IEditor *newEditor = 0; - if (showSideBySideEditor) { + if (settings()->boolValue(GitSettings::useDiffEditorKey)) { const char *propertyName = "sideBySideOriginalFileName"; DiffEditor::DiffEditor *diffEditor = findExistingDiffEditor(propertyName, sourceFile); if (!diffEditor) { @@ -1244,8 +1232,7 @@ void GitClient::diff(const QString &workingDirectory, executeGit(workingDirectory, cmdArgs, vcsEditor); } if (newEditor) { - GitDiffSwitcher *switcher = new GitDiffSwitcher(newEditor, this, - showSideBySideEditor ? SimpleTextDiffEditor : SideBySideDiffEditor); + GitDiffSwitcher *switcher = new GitDiffSwitcher(newEditor, this); switcher->setWorkingDirectory(workingDirectory); switcher->setDiffType(GitDiffSwitcher::DiffFile); switcher->setFileName(fileName); @@ -1254,15 +1241,11 @@ void GitClient::diff(const QString &workingDirectory, void GitClient::diffBranch(const QString &workingDirectory, const QStringList &diffArgs, - const QString &branchName, - DiffEditorType editorType) + const QString &branchName) { const QString title = tr("Git Diff Branch \"%1\"").arg(branchName); - const bool showSideBySideEditor = (editorType == DefaultDiffEditor - && settings()->boolValue(GitSettings::useDiffEditorKey)) - || editorType == SideBySideDiffEditor; Core::IEditor *newEditor = 0; - if (showSideBySideEditor) { + if (settings()->boolValue(GitSettings::useDiffEditorKey)) { const char *propertyName = "sideBySideBranchName"; DiffEditor::DiffEditor *diffEditor = findExistingDiffEditor(propertyName, branchName); if (!diffEditor) { @@ -1308,8 +1291,7 @@ void GitClient::diffBranch(const QString &workingDirectory, executeGit(workingDirectory, cmdArgs, vcsEditor); } if (newEditor) { - GitDiffSwitcher *switcher = new GitDiffSwitcher(newEditor, this, - showSideBySideEditor ? SimpleTextDiffEditor : SideBySideDiffEditor); + GitDiffSwitcher *switcher = new GitDiffSwitcher(newEditor, this); switcher->setWorkingDirectory(workingDirectory); switcher->setDiffType(GitDiffSwitcher::DiffBranch); switcher->setBaseArguments(diffArgs); @@ -1409,8 +1391,7 @@ static inline QString msgCannotShow(const QString &sha) } void GitClient::show(const QString &source, const QString &id, - const QStringList &args, const QString &name, - DiffEditorType editorType) + const QStringList &args, const QString &name) { if (!canShow(id)) { outputWindow()->appendError(msgCannotShow(id)); @@ -1420,11 +1401,8 @@ void GitClient::show(const QString &source, const QString &id, const QString title = tr("Git Show \"%1\"").arg(name.isEmpty() ? id : name); const QFileInfo sourceFi(source); const QString workingDirectory = sourceFi.isDir() ? sourceFi.absoluteFilePath() : sourceFi.absolutePath(); - const bool showSideBySideEditor = (editorType == DefaultDiffEditor - && settings()->boolValue(GitSettings::useDiffEditorKey)) - || editorType == SideBySideDiffEditor; Core::IEditor *newEditor = 0; - if (showSideBySideEditor) { + if (settings()->boolValue(GitSettings::useDiffEditorKey)) { const char *propertyName = "sideBySideShow"; DiffEditor::DiffEditor *diffEditor = findExistingDiffEditor(propertyName, id); if (!diffEditor) { @@ -1470,8 +1448,7 @@ void GitClient::show(const QString &source, const QString &id, executeGit(workingDirectory, arguments, vcsEditor); } if (newEditor) { - GitDiffSwitcher *switcher = new GitDiffSwitcher(newEditor, this, - showSideBySideEditor ? SimpleTextDiffEditor : SideBySideDiffEditor); + GitDiffSwitcher *switcher = new GitDiffSwitcher(newEditor, this); switcher->setDiffType(GitDiffSwitcher::DiffShow); switcher->setFileName(source); switcher->setBaseArguments(args); diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h index 6e4a990baf7..610a08498ed 100644 --- a/src/plugins/git/gitclient.h +++ b/src/plugins/git/gitclient.h @@ -127,12 +127,6 @@ public: StashFlag m_flags; }; - enum DiffEditorType { - DefaultDiffEditor, // value taken from settings - SideBySideDiffEditor, - SimpleTextDiffEditor - }; - static const char *stashNamePrefix; explicit GitClient(GitSettings *settings); @@ -144,17 +138,13 @@ public: QString findRepositoryForDirectory(const QString &dir); QString findGitDirForRepository(const QString &repositoryDir) const; - void diff(const QString &workingDirectory, - const QString &fileName, - DiffEditorType editorType = DefaultDiffEditor); + void diff(const QString &workingDirectory, const QString &fileName); void diff(const QString &workingDirectory, const QStringList &unstagedFileNames, - const QStringList &stagedFileNames = QStringList(), - DiffEditorType editorType = DefaultDiffEditor); + const QStringList &stagedFileNames = QStringList()); void diffBranch(const QString &workingDirectory, const QStringList &diffArgs, - const QString &branchName, - DiffEditorType editorType = DefaultDiffEditor); + const QString &branchName); void merge(const QString &workingDirectory, const QStringList &unmergedFileNames = QStringList()); void status(const QString &workingDirectory); @@ -341,8 +331,7 @@ public slots: void show(const QString &source, const QString &id, const QStringList &args = QStringList(), - const QString &name = QString(), - DiffEditorType editorType = DefaultDiffEditor); + const QString &name = QString()); void saveSettings(); private slots: diff --git a/src/plugins/git/settingspage.cpp b/src/plugins/git/settingspage.cpp index 08b4875e44c..a76d07bc2cc 100644 --- a/src/plugins/git/settingspage.cpp +++ b/src/plugins/git/settingspage.cpp @@ -70,7 +70,6 @@ GitSettings SettingsPageWidget::settings() const rc.setValue(GitSettings::pathKey, m_ui.pathLineEdit->text()); rc.setValue(GitSettings::logCountKey, m_ui.logCountSpinBox->value()); rc.setValue(GitSettings::timeoutKey, m_ui.timeoutSpinBox->value()); - rc.setValue(GitSettings::useDiffEditorKey, m_ui.useDiffEditorCheckBox->isChecked()); rc.setValue(GitSettings::pullRebaseKey, m_ui.pullRebaseCheckBox->isChecked()); rc.setValue(GitSettings::showTagsKey, m_ui.showTagsCheckBox->isChecked()); rc.setValue(GitSettings::promptOnSubmitKey, m_ui.promptToSubmitCheckBox->isChecked()); @@ -85,7 +84,6 @@ void SettingsPageWidget::setSettings(const GitSettings &s) m_ui.pathLineEdit->setText(s.stringValue(GitSettings::pathKey)); m_ui.logCountSpinBox->setValue(s.intValue(GitSettings::logCountKey)); m_ui.timeoutSpinBox->setValue(s.intValue(GitSettings::timeoutKey)); - m_ui.useDiffEditorCheckBox->setChecked(s.boolValue(GitSettings::useDiffEditorKey)); m_ui.pullRebaseCheckBox->setChecked(s.boolValue(GitSettings::pullRebaseKey)); m_ui.showTagsCheckBox->setChecked(s.boolValue(GitSettings::showTagsKey)); m_ui.promptToSubmitCheckBox->setChecked(s.boolValue(GitSettings::promptOnSubmitKey)); diff --git a/src/plugins/git/settingspage.ui b/src/plugins/git/settingspage.ui index 26b51f527f7..5e010df2a3b 100644 --- a/src/plugins/git/settingspage.ui +++ b/src/plugins/git/settingspage.ui @@ -7,7 +7,7 @@ <x>0</x> <y>0</y> <width>705</width> - <height>436</height> + <height>459</height> </rect> </property> <layout class="QVBoxLayout" name="verticalLayout"> @@ -60,32 +60,25 @@ <string>Miscellaneous</string> </property> <layout class="QGridLayout" name="gridLayout"> - <item row="0" column="0"> - <widget class="QLabel" name="logCountLabel"> + <item row="2" column="0" colspan="2"> + <widget class="QCheckBox" name="pullRebaseCheckBox"> <property name="text"> - <string>Log count:</string> + <string>Pull with rebase</string> </property> </widget> </item> - <item row="0" column="1"> - <widget class="QSpinBox" name="logCountSpinBox"> - <property name="toolTip"> - <string>Note that huge amount of commits might take some time.</string> - </property> - <property name="maximum"> - <number>1000</number> - </property> - <property name="value"> - <number>1000</number> + <item row="0" column="4"> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> </property> - </widget> - </item> - <item row="0" column="2"> - <widget class="QLabel" name="timeoutLabel"> - <property name="text"> - <string>Timeout:</string> + <property name="sizeHint" stdset="0"> + <size> + <width>211</width> + <height>20</height> + </size> </property> - </widget> + </spacer> </item> <item row="0" column="3"> <widget class="QSpinBox" name="timeoutSpinBox"> @@ -103,19 +96,6 @@ </property> </widget> </item> - <item row="0" column="4"> - <spacer name="horizontalSpacer"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>211</width> - <height>20</height> - </size> - </property> - </spacer> - </item> <item row="1" column="0" colspan="2"> <widget class="QCheckBox" name="promptToSubmitCheckBox"> <property name="text"> @@ -123,24 +103,37 @@ </property> </widget> </item> - <item row="2" column="0" colspan="2"> - <widget class="QCheckBox" name="pullRebaseCheckBox"> + <item row="0" column="0"> + <widget class="QLabel" name="logCountLabel"> <property name="text"> - <string>Pull with rebase</string> + <string>Log count:</string> </property> </widget> </item> - <item row="1" column="3" colspan="2"> - <widget class="QCheckBox" name="showTagsCheckBox"> + <item row="0" column="2"> + <widget class="QLabel" name="timeoutLabel"> <property name="text"> - <string>Show tags in Branches dialog</string> + <string>Timeout:</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QSpinBox" name="logCountSpinBox"> + <property name="toolTip"> + <string>Note that huge amount of commits might take some time.</string> + </property> + <property name="maximum"> + <number>1000</number> + </property> + <property name="value"> + <number>1000</number> </property> </widget> </item> - <item row="2" column="3"> - <widget class="QCheckBox" name="useDiffEditorCheckBox"> + <item row="3" column="0"> + <widget class="QCheckBox" name="showTagsCheckBox"> <property name="text"> - <string>Show diff side-by-side</string> + <string>Show tags in Branches dialog</string> </property> </widget> </item> -- GitLab