Commit 63e7fe19 authored by Orgad Shaneh's avatar Orgad Shaneh Committed by Orgad Shaneh

Git: Remove setting for side-by-side diff

Use the diff switcher state as a permanent setting

Change-Id: I6c3669090082787ae750596cf3e62973c04d94c3
Reviewed-by: default avatarJarek Kobus <jaroslaw.kobus@digia.com>
Reviewed-by: default avatarTobias Hunger <tobias.hunger@digia.com>
parent 003e25d4
...@@ -99,19 +99,19 @@ public: ...@@ -99,19 +99,19 @@ public:
DiffShow DiffShow
}; };
GitDiffSwitcher(Core::IEditor *parentEditor, GitClient *gitClient, GitClient::DiffEditorType switchToType) GitDiffSwitcher(Core::IEditor *parentEditor, GitClient *gitClient)
: QObject(parentEditor), : QObject(parentEditor),
m_editor(parentEditor), m_editor(parentEditor),
m_gitClient(gitClient), m_gitClient(gitClient)
m_editorType(switchToType)
{ {
QIcon actionIcon = switchToType == GitClient::SideBySideDiffEditor m_usingDiffEditor = gitClient->settings()->boolValue(GitSettings::useDiffEditorKey);
? QIcon(QLatin1String(Core::Constants::ICON_SIDE_BY_SIDE_DIFF)) QIcon actionIcon = m_usingDiffEditor
: QIcon(QLatin1String(Core::Constants::ICON_TEXT_DIFF)); ? QIcon(QLatin1String(Core::Constants::ICON_TEXT_DIFF))
: QIcon(QLatin1String(Core::Constants::ICON_SIDE_BY_SIDE_DIFF));
const QString actionToolTip = switchToType == GitClient::SideBySideDiffEditor const QString actionToolTip = m_usingDiffEditor
? tr("Switch to Side By Side Diff Editor") ? tr("Switch to Text Diff Editor")
: tr("Switch to Text Diff Editor"); : tr("Switch to Side By Side Diff Editor");
QAction *switchAction = new QAction(actionIcon, actionToolTip, parentEditor); QAction *switchAction = new QAction(actionIcon, actionToolTip, parentEditor);
parentEditor->toolBar()->addAction(switchAction); parentEditor->toolBar()->addAction(switchAction);
...@@ -140,7 +140,7 @@ private: ...@@ -140,7 +140,7 @@ private:
GitClient *m_gitClient; GitClient *m_gitClient;
QString m_workingDirectory; QString m_workingDirectory;
DiffType m_diffType; DiffType m_diffType;
GitClient::DiffEditorType m_editorType; bool m_usingDiffEditor;
QString m_fileName; QString m_fileName;
QStringList m_stagedFiles; QStringList m_stagedFiles;
QStringList m_unstagedFiles; QStringList m_unstagedFiles;
...@@ -153,24 +153,25 @@ private: ...@@ -153,24 +153,25 @@ private:
void GitDiffSwitcher::execute() void GitDiffSwitcher::execute()
{ {
m_gitClient->settings()->setValue(GitSettings::useDiffEditorKey, !m_usingDiffEditor);
switch (m_diffType) { switch (m_diffType) {
case DiffRepository: case DiffRepository:
m_gitClient->diff(m_workingDirectory, QStringList(), QStringList(), m_editorType); m_gitClient->diff(m_workingDirectory, QStringList(), QStringList());
break; break;
case DiffFile: case DiffFile:
m_gitClient->diff(m_workingDirectory, m_fileName, m_editorType); m_gitClient->diff(m_workingDirectory, m_fileName);
break; break;
case DiffFileList: case DiffFileList:
m_gitClient->diff(m_workingDirectory, m_unstagedFiles, m_stagedFiles, m_editorType); m_gitClient->diff(m_workingDirectory, m_unstagedFiles, m_stagedFiles);
break; break;
case DiffProjectList: case DiffProjectList:
m_gitClient->diff(m_workingDirectory, m_projectFiles, QStringList(), m_editorType); m_gitClient->diff(m_workingDirectory, m_projectFiles, QStringList());
break; break;
case DiffBranch: case DiffBranch:
m_gitClient->diffBranch(m_workingDirectory, m_baseArguments, m_branchName, m_editorType); m_gitClient->diffBranch(m_workingDirectory, m_baseArguments, m_branchName);
break; break;
case DiffShow: 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; break;
default: default:
break; break;
...@@ -594,8 +595,7 @@ public: ...@@ -594,8 +595,7 @@ public:
void executeCommand() void executeCommand()
{ {
m_client->diff(m_workingDirectory, m_unstagedFileNames, m_stagedFileNames, m_client->diff(m_workingDirectory, m_unstagedFileNames, m_stagedFileNames);
GitClient::SimpleTextDiffEditor);
} }
private: private:
...@@ -615,7 +615,7 @@ public: ...@@ -615,7 +615,7 @@ public:
void executeCommand() void executeCommand()
{ {
m_client->diff(m_workingDirectory, m_fileName, GitClient::SimpleTextDiffEditor); m_client->diff(m_workingDirectory, m_fileName);
} }
private: private:
...@@ -634,8 +634,7 @@ public: ...@@ -634,8 +634,7 @@ public:
void executeCommand() void executeCommand()
{ {
m_client->diffBranch(m_workingDirectory, baseArguments(), m_branchName, m_client->diffBranch(m_workingDirectory, baseArguments(), m_branchName);
GitClient::SimpleTextDiffEditor);
} }
private: private:
...@@ -670,8 +669,7 @@ public: ...@@ -670,8 +669,7 @@ public:
void executeCommand() void executeCommand()
{ {
m_client->show(m_workingDirectory, m_id, baseArguments(), QString(), m_client->show(m_workingDirectory, m_id, baseArguments());
GitClient::SimpleTextDiffEditor);
} }
private: private:
...@@ -1064,16 +1062,12 @@ VcsBase::VcsBaseEditorWidget *GitClient::createVcsEditor( ...@@ -1064,16 +1062,12 @@ VcsBase::VcsBaseEditorWidget *GitClient::createVcsEditor(
void GitClient::diff(const QString &workingDirectory, void GitClient::diff(const QString &workingDirectory,
const QStringList &unstagedFileNames, const QStringList &unstagedFileNames,
const QStringList &stagedFileNames, const QStringList &stagedFileNames)
DiffEditorType editorType)
{ {
const QString title = tr("Git Diff"); const QString title = tr("Git Diff");
const int timeout = settings()->intValue(GitSettings::timeoutKey); const int timeout = settings()->intValue(GitSettings::timeoutKey);
const bool showSideBySideEditor = (editorType == DefaultDiffEditor
&& settings()->boolValue(GitSettings::useDiffEditorKey))
|| editorType == SideBySideDiffEditor;
Core::IEditor *newEditor = 0; Core::IEditor *newEditor = 0;
if (showSideBySideEditor) { if (settings()->boolValue(GitSettings::useDiffEditorKey)) {
const char *propertyName = "sideBySideOriginalFileName"; const char *propertyName = "sideBySideOriginalFileName";
DiffEditor::DiffEditor *diffEditor = findExistingDiffEditor(propertyName, workingDirectory); DiffEditor::DiffEditor *diffEditor = findExistingDiffEditor(propertyName, workingDirectory);
if (!diffEditor) { if (!diffEditor) {
...@@ -1168,8 +1162,7 @@ void GitClient::diff(const QString &workingDirectory, ...@@ -1168,8 +1162,7 @@ void GitClient::diff(const QString &workingDirectory,
command->execute(); command->execute();
} }
if (newEditor) { if (newEditor) {
GitDiffSwitcher *switcher = new GitDiffSwitcher(newEditor, this, GitDiffSwitcher *switcher = new GitDiffSwitcher(newEditor, this);
showSideBySideEditor ? SimpleTextDiffEditor : SideBySideDiffEditor);
switcher->setWorkingDirectory(workingDirectory); switcher->setWorkingDirectory(workingDirectory);
if (unstagedFileNames.empty() && stagedFileNames.empty()) { if (unstagedFileNames.empty() && stagedFileNames.empty()) {
// local repository diff // local repository diff
...@@ -1186,17 +1179,12 @@ void GitClient::diff(const QString &workingDirectory, ...@@ -1186,17 +1179,12 @@ void GitClient::diff(const QString &workingDirectory,
} }
} }
void GitClient::diff(const QString &workingDirectory, void GitClient::diff(const QString &workingDirectory, const QString &fileName)
const QString &fileName,
DiffEditorType editorType)
{ {
const QString title = tr("Git Diff \"%1\"").arg(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); const QString sourceFile = VcsBase::VcsBaseEditorWidget::getSource(workingDirectory, fileName);
Core::IEditor *newEditor = 0; Core::IEditor *newEditor = 0;
if (showSideBySideEditor) { if (settings()->boolValue(GitSettings::useDiffEditorKey)) {
const char *propertyName = "sideBySideOriginalFileName"; const char *propertyName = "sideBySideOriginalFileName";
DiffEditor::DiffEditor *diffEditor = findExistingDiffEditor(propertyName, sourceFile); DiffEditor::DiffEditor *diffEditor = findExistingDiffEditor(propertyName, sourceFile);
if (!diffEditor) { if (!diffEditor) {
...@@ -1244,8 +1232,7 @@ void GitClient::diff(const QString &workingDirectory, ...@@ -1244,8 +1232,7 @@ void GitClient::diff(const QString &workingDirectory,
executeGit(workingDirectory, cmdArgs, vcsEditor); executeGit(workingDirectory, cmdArgs, vcsEditor);
} }
if (newEditor) { if (newEditor) {
GitDiffSwitcher *switcher = new GitDiffSwitcher(newEditor, this, GitDiffSwitcher *switcher = new GitDiffSwitcher(newEditor, this);
showSideBySideEditor ? SimpleTextDiffEditor : SideBySideDiffEditor);
switcher->setWorkingDirectory(workingDirectory); switcher->setWorkingDirectory(workingDirectory);
switcher->setDiffType(GitDiffSwitcher::DiffFile); switcher->setDiffType(GitDiffSwitcher::DiffFile);
switcher->setFileName(fileName); switcher->setFileName(fileName);
...@@ -1254,15 +1241,11 @@ void GitClient::diff(const QString &workingDirectory, ...@@ -1254,15 +1241,11 @@ void GitClient::diff(const QString &workingDirectory,
void GitClient::diffBranch(const QString &workingDirectory, void GitClient::diffBranch(const QString &workingDirectory,
const QStringList &diffArgs, const QStringList &diffArgs,
const QString &branchName, const QString &branchName)
DiffEditorType editorType)
{ {
const QString title = tr("Git Diff Branch \"%1\"").arg(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; Core::IEditor *newEditor = 0;
if (showSideBySideEditor) { if (settings()->boolValue(GitSettings::useDiffEditorKey)) {
const char *propertyName = "sideBySideBranchName"; const char *propertyName = "sideBySideBranchName";
DiffEditor::DiffEditor *diffEditor = findExistingDiffEditor(propertyName, branchName); DiffEditor::DiffEditor *diffEditor = findExistingDiffEditor(propertyName, branchName);
if (!diffEditor) { if (!diffEditor) {
...@@ -1308,8 +1291,7 @@ void GitClient::diffBranch(const QString &workingDirectory, ...@@ -1308,8 +1291,7 @@ void GitClient::diffBranch(const QString &workingDirectory,
executeGit(workingDirectory, cmdArgs, vcsEditor); executeGit(workingDirectory, cmdArgs, vcsEditor);
} }
if (newEditor) { if (newEditor) {
GitDiffSwitcher *switcher = new GitDiffSwitcher(newEditor, this, GitDiffSwitcher *switcher = new GitDiffSwitcher(newEditor, this);
showSideBySideEditor ? SimpleTextDiffEditor : SideBySideDiffEditor);
switcher->setWorkingDirectory(workingDirectory); switcher->setWorkingDirectory(workingDirectory);
switcher->setDiffType(GitDiffSwitcher::DiffBranch); switcher->setDiffType(GitDiffSwitcher::DiffBranch);
switcher->setBaseArguments(diffArgs); switcher->setBaseArguments(diffArgs);
...@@ -1409,8 +1391,7 @@ static inline QString msgCannotShow(const QString &sha) ...@@ -1409,8 +1391,7 @@ static inline QString msgCannotShow(const QString &sha)
} }
void GitClient::show(const QString &source, const QString &id, void GitClient::show(const QString &source, const QString &id,
const QStringList &args, const QString &name, const QStringList &args, const QString &name)
DiffEditorType editorType)
{ {
if (!canShow(id)) { if (!canShow(id)) {
outputWindow()->appendError(msgCannotShow(id)); outputWindow()->appendError(msgCannotShow(id));
...@@ -1420,11 +1401,8 @@ void GitClient::show(const QString &source, const QString &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 QString title = tr("Git Show \"%1\"").arg(name.isEmpty() ? id : name);
const QFileInfo sourceFi(source); const QFileInfo sourceFi(source);
const QString workingDirectory = sourceFi.isDir() ? sourceFi.absoluteFilePath() : sourceFi.absolutePath(); const QString workingDirectory = sourceFi.isDir() ? sourceFi.absoluteFilePath() : sourceFi.absolutePath();
const bool showSideBySideEditor = (editorType == DefaultDiffEditor
&& settings()->boolValue(GitSettings::useDiffEditorKey))
|| editorType == SideBySideDiffEditor;
Core::IEditor *newEditor = 0; Core::IEditor *newEditor = 0;
if (showSideBySideEditor) { if (settings()->boolValue(GitSettings::useDiffEditorKey)) {
const char *propertyName = "sideBySideShow"; const char *propertyName = "sideBySideShow";
DiffEditor::DiffEditor *diffEditor = findExistingDiffEditor(propertyName, id); DiffEditor::DiffEditor *diffEditor = findExistingDiffEditor(propertyName, id);
if (!diffEditor) { if (!diffEditor) {
...@@ -1470,8 +1448,7 @@ void GitClient::show(const QString &source, const QString &id, ...@@ -1470,8 +1448,7 @@ void GitClient::show(const QString &source, const QString &id,
executeGit(workingDirectory, arguments, vcsEditor); executeGit(workingDirectory, arguments, vcsEditor);
} }
if (newEditor) { if (newEditor) {
GitDiffSwitcher *switcher = new GitDiffSwitcher(newEditor, this, GitDiffSwitcher *switcher = new GitDiffSwitcher(newEditor, this);
showSideBySideEditor ? SimpleTextDiffEditor : SideBySideDiffEditor);
switcher->setDiffType(GitDiffSwitcher::DiffShow); switcher->setDiffType(GitDiffSwitcher::DiffShow);
switcher->setFileName(source); switcher->setFileName(source);
switcher->setBaseArguments(args); switcher->setBaseArguments(args);
......
...@@ -127,12 +127,6 @@ public: ...@@ -127,12 +127,6 @@ public:
StashFlag m_flags; StashFlag m_flags;
}; };
enum DiffEditorType {
DefaultDiffEditor, // value taken from settings
SideBySideDiffEditor,
SimpleTextDiffEditor
};
static const char *stashNamePrefix; static const char *stashNamePrefix;
explicit GitClient(GitSettings *settings); explicit GitClient(GitSettings *settings);
...@@ -144,17 +138,13 @@ public: ...@@ -144,17 +138,13 @@ public:
QString findRepositoryForDirectory(const QString &dir); QString findRepositoryForDirectory(const QString &dir);
QString findGitDirForRepository(const QString &repositoryDir) const; QString findGitDirForRepository(const QString &repositoryDir) const;
void diff(const QString &workingDirectory, void diff(const QString &workingDirectory, const QString &fileName);
const QString &fileName,
DiffEditorType editorType = DefaultDiffEditor);
void diff(const QString &workingDirectory, void diff(const QString &workingDirectory,
const QStringList &unstagedFileNames, const QStringList &unstagedFileNames,
const QStringList &stagedFileNames = QStringList(), const QStringList &stagedFileNames = QStringList());
DiffEditorType editorType = DefaultDiffEditor);
void diffBranch(const QString &workingDirectory, void diffBranch(const QString &workingDirectory,
const QStringList &diffArgs, const QStringList &diffArgs,
const QString &branchName, const QString &branchName);
DiffEditorType editorType = DefaultDiffEditor);
void merge(const QString &workingDirectory, const QStringList &unmergedFileNames = QStringList()); void merge(const QString &workingDirectory, const QStringList &unmergedFileNames = QStringList());
void status(const QString &workingDirectory); void status(const QString &workingDirectory);
...@@ -341,8 +331,7 @@ public slots: ...@@ -341,8 +331,7 @@ public slots:
void show(const QString &source, void show(const QString &source,
const QString &id, const QString &id,
const QStringList &args = QStringList(), const QStringList &args = QStringList(),
const QString &name = QString(), const QString &name = QString());
DiffEditorType editorType = DefaultDiffEditor);
void saveSettings(); void saveSettings();
private slots: private slots:
......
...@@ -70,7 +70,6 @@ GitSettings SettingsPageWidget::settings() const ...@@ -70,7 +70,6 @@ GitSettings SettingsPageWidget::settings() const
rc.setValue(GitSettings::pathKey, m_ui.pathLineEdit->text()); rc.setValue(GitSettings::pathKey, m_ui.pathLineEdit->text());
rc.setValue(GitSettings::logCountKey, m_ui.logCountSpinBox->value()); rc.setValue(GitSettings::logCountKey, m_ui.logCountSpinBox->value());
rc.setValue(GitSettings::timeoutKey, m_ui.timeoutSpinBox->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::pullRebaseKey, m_ui.pullRebaseCheckBox->isChecked());
rc.setValue(GitSettings::showTagsKey, m_ui.showTagsCheckBox->isChecked()); rc.setValue(GitSettings::showTagsKey, m_ui.showTagsCheckBox->isChecked());
rc.setValue(GitSettings::promptOnSubmitKey, m_ui.promptToSubmitCheckBox->isChecked()); rc.setValue(GitSettings::promptOnSubmitKey, m_ui.promptToSubmitCheckBox->isChecked());
...@@ -85,7 +84,6 @@ void SettingsPageWidget::setSettings(const GitSettings &s) ...@@ -85,7 +84,6 @@ void SettingsPageWidget::setSettings(const GitSettings &s)
m_ui.pathLineEdit->setText(s.stringValue(GitSettings::pathKey)); m_ui.pathLineEdit->setText(s.stringValue(GitSettings::pathKey));
m_ui.logCountSpinBox->setValue(s.intValue(GitSettings::logCountKey)); m_ui.logCountSpinBox->setValue(s.intValue(GitSettings::logCountKey));
m_ui.timeoutSpinBox->setValue(s.intValue(GitSettings::timeoutKey)); 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.pullRebaseCheckBox->setChecked(s.boolValue(GitSettings::pullRebaseKey));
m_ui.showTagsCheckBox->setChecked(s.boolValue(GitSettings::showTagsKey)); m_ui.showTagsCheckBox->setChecked(s.boolValue(GitSettings::showTagsKey));
m_ui.promptToSubmitCheckBox->setChecked(s.boolValue(GitSettings::promptOnSubmitKey)); m_ui.promptToSubmitCheckBox->setChecked(s.boolValue(GitSettings::promptOnSubmitKey));
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>705</width> <width>705</width>
<height>436</height> <height>459</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
...@@ -60,32 +60,25 @@ ...@@ -60,32 +60,25 @@
<string>Miscellaneous</string> <string>Miscellaneous</string>
</property> </property>
<layout class="QGridLayout" name="gridLayout"> <layout class="QGridLayout" name="gridLayout">
<item row="0" column="0"> <item row="2" column="0" colspan="2">
<widget class="QLabel" name="logCountLabel"> <widget class="QCheckBox" name="pullRebaseCheckBox">
<property name="text"> <property name="text">
<string>Log count:</string> <string>Pull with rebase</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="1"> <item row="0" column="4">
<widget class="QSpinBox" name="logCountSpinBox"> <spacer name="horizontalSpacer">
<property name="toolTip"> <property name="orientation">
<string>Note that huge amount of commits might take some time.</string> <enum>Qt::Horizontal</enum>
</property>
<property name="maximum">
<number>1000</number>
</property>
<property name="value">
<number>1000</number>
</property> </property>
</widget> <property name="sizeHint" stdset="0">
</item> <size>
<item row="0" column="2"> <width>211</width>
<widget class="QLabel" name="timeoutLabel"> <height>20</height>
<property name="text"> </size>
<string>Timeout:</string>
</property> </property>
</widget> </spacer>
</item> </item>
<item row="0" column="3"> <item row="0" column="3">
<widget class="QSpinBox" name="timeoutSpinBox"> <widget class="QSpinBox" name="timeoutSpinBox">
...@@ -103,19 +96,6 @@ ...@@ -103,19 +96,6 @@
</property> </property>
</widget> </widget>
</item> </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"> <item row="1" column="0" colspan="2">
<widget class="QCheckBox" name="promptToSubmitCheckBox"> <widget class="QCheckBox" name="promptToSubmitCheckBox">
<property name="text"> <property name="text">
...@@ -123,24 +103,37 @@ ...@@ -123,24 +103,37 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="0" colspan="2"> <item row="0" column="0">
<widget class="QCheckBox" name="pullRebaseCheckBox"> <widget class="QLabel" name="logCountLabel">
<property name="text"> <property name="text">
<string>Pull with rebase</string> <string>Log count:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="3" colspan="2"> <item row="0" column="2">
<widget class="QCheckBox" name="showTagsCheckBox"> <widget class="QLabel" name="timeoutLabel">
<property name="text"> <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> </property>
</widget> </widget>
</item> </item>
<item row="2" column="3"> <item row="3" column="0">
<widget class="QCheckBox" name="useDiffEditorCheckBox"> <widget class="QCheckBox" name="showTagsCheckBox">
<property name="text"> <property name="text">
<string>Show diff side-by-side</string> <string>Show tags in Branches dialog</string>
</property> </property>
</widget> </widget>
</item> </item>
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment