diff --git a/CommitDialog.cpp b/CommitDialog.cpp index e0c8108..3a68012 100644 --- a/CommitDialog.cpp +++ b/CommitDialog.cpp @@ -1,95 +1,95 @@ -#include "CommitDialog.h" -#include -#include "ui_CommitDialog.h" -#include "MainWindow.h" // Ugly. I know. - -CommitDialog::CommitDialog(QWidget *parent, const QStringList &commitMsgHistory, QStringList &files) : - QDialog(parent, Qt::Sheet), - ui(new Ui::CommitDialog) -{ - ui->setupUi(this); - ui->plainTextEdit->clear(); - ui->listView->setModel(&itemModel); - - // Generate the history combo - foreach(const QString msg, commitMsgHistory) - { - QString trimmed = msg.trimmed(); - if(trimmed.isEmpty()) - continue; - - commitMessages.append(trimmed); - QStringList lines = trimmed.split('\n'); - QString first_line; - if(!lines.empty()) - first_line = lines[0] + "..."; - - ui->comboBox->addItem(first_line); - } - - // Populate file list - for(QStringList::const_iterator it=files.begin(); it!=files.end(); ++it) - { - QStandardItem *si = new QStandardItem(*it); - si->setCheckable(true); - si->setCheckState(Qt::Checked); - itemModel.appendRow(si); - } -} - -//------------------------------------------------------------------------------ -CommitDialog::~CommitDialog() -{ - delete ui; -} - -//------------------------------------------------------------------------------ -bool CommitDialog::run(QWidget *parent, QString &commitMsg, const QStringList &commitMsgHistory, QStringList &files) -{ - CommitDialog dlg(parent, commitMsgHistory, files); - int res = dlg.exec(); - commitMsg = dlg.ui->plainTextEdit->toPlainText(); - - if(res!=QDialog::Accepted) - return false; - - files.clear(); - for(int i=0; icheckState()!=Qt::Checked) - continue; - files.append(si->text()); - } - - return true; -} - -//------------------------------------------------------------------------------ -void CommitDialog::on_comboBox_activated(int index) -{ +#include "CommitDialog.h" +#include +#include "ui_CommitDialog.h" +#include "MainWindow.h" // Ugly. I know. + +CommitDialog::CommitDialog(QWidget *parent, const QStringList &commitMsgHistory, QStringList &files) : + QDialog(parent, Qt::Sheet), + ui(new Ui::CommitDialog) +{ + ui->setupUi(this); + ui->plainTextEdit->clear(); + ui->listView->setModel(&itemModel); + + // Generate the history combo + foreach(const QString msg, commitMsgHistory) + { + QString trimmed = msg.trimmed(); + if(trimmed.isEmpty()) + continue; + + commitMessages.append(trimmed); + QStringList lines = trimmed.split('\n'); + QString first_line; + if(!lines.empty()) + first_line = lines[0] + "..."; + + ui->comboBox->addItem(first_line); + } + + // Populate file list + for(QStringList::const_iterator it=files.begin(); it!=files.end(); ++it) + { + QStandardItem *si = new QStandardItem(*it); + si->setCheckable(true); + si->setCheckState(Qt::Checked); + itemModel.appendRow(si); + } +} + +//------------------------------------------------------------------------------ +CommitDialog::~CommitDialog() +{ + delete ui; +} + +//------------------------------------------------------------------------------ +bool CommitDialog::run(QWidget *parent, QString &commitMsg, const QStringList &commitMsgHistory, QStringList &files) +{ + CommitDialog dlg(parent, commitMsgHistory, files); + int res = dlg.exec(); + commitMsg = dlg.ui->plainTextEdit->toPlainText(); + + if(res!=QDialog::Accepted) + return false; + + files.clear(); + for(int i=0; icheckState()!=Qt::Checked) + continue; + files.append(si->text()); + } + + return true; +} + +//------------------------------------------------------------------------------ +void CommitDialog::on_comboBox_activated(int index) +{ Q_ASSERT(index < commitMessages.length()); - ui->plainTextEdit->setPlainText(commitMessages[index]); -} - -//------------------------------------------------------------------------------ -void CommitDialog::on_listView_doubleClicked(const QModelIndex &index) -{ - QVariant data = itemModel.data(index); - QString filename = data.toString(); - reinterpret_cast(parent())->diffFile(filename); -} - -//------------------------------------------------------------------------------ -void CommitDialog::on_listView_clicked(const QModelIndex &) -{ - int num_selected = 0; - for(int i=0; icheckState()==Qt::Checked) - ++num_selected; - } - - ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(num_selected>0); -} + ui->plainTextEdit->setPlainText(commitMessages[index]); +} + +//------------------------------------------------------------------------------ +void CommitDialog::on_listView_doubleClicked(const QModelIndex &index) +{ + QVariant data = itemModel.data(index); + QString filename = data.toString(); + reinterpret_cast(parent())->diffFile(filename); +} + +//------------------------------------------------------------------------------ +void CommitDialog::on_listView_clicked(const QModelIndex &) +{ + int num_selected = 0; + for(int i=0; icheckState()==Qt::Checked) + ++num_selected; + } + + ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(num_selected>0); +} diff --git a/MainWindow.cpp b/MainWindow.cpp index c36d66f..807b73b 100644 --- a/MainWindow.cpp +++ b/MainWindow.cpp @@ -1057,12 +1057,15 @@ void MainWindow::loadSettings() // Windows: HKEY_CURRENT_USER\Software\organizationName\Fuel QSettings qsettings(QSettings::UserScope, QCoreApplication::organizationName(), QCoreApplication::applicationName()); - if(qsettings.contains("FossilPath")) - settings.Mappings[FUEL_SETTING_FOSSIL_PATH].Value = qsettings.value("FossilPath").toString(); + if(qsettings.contains(FUEL_SETTING_FOSSIL_PATH)) + settings.Mappings[FUEL_SETTING_FOSSIL_PATH].Value = qsettings.value(FUEL_SETTING_FOSSIL_PATH); if(qsettings.contains(FUEL_SETTING_COMMIT_MSG)) settings.Mappings[FUEL_SETTING_COMMIT_MSG].Value = qsettings.value(FUEL_SETTING_COMMIT_MSG); + if(qsettings.contains(FUEL_SETTING_FILE_DBLCLICK)) + settings.Mappings[FUEL_SETTING_FILE_DBLCLICK].Value = qsettings.value(FUEL_SETTING_FILE_DBLCLICK); + int num_wks = qsettings.beginReadArray("Workspaces"); for(int i=0; isetupUi(this); + + ui->cmbDoubleClickAction->addItem(tr("Diff File")); + ui->cmbDoubleClickAction->addItem(tr("Open File")); + ui->cmbDoubleClickAction->addItem(tr("Open Containing Folder")); + + // App Settings ui->lineFossilPath->setText(QDir::toNativeSeparators(settings->Mappings[FUEL_SETTING_FOSSIL_PATH].Value.toString())); ui->lineGDiffCommand->setText(QDir::toNativeSeparators(settings->Mappings[FUEL_SETTING_GDIFF_CMD].Value.toString())); ui->lineGMergeCommand->setText(QDir::toNativeSeparators(settings->Mappings[FUEL_SETTING_GMERGE_CMD].Value.toString())); + ui->cmbDoubleClickAction->setCurrentIndex(settings->Mappings[FUEL_SETTING_FILE_DBLCLICK].Value.toInt()); + + // Repo Settings ui->lineRemoteURL->setText(settings->Mappings[FUEL_SETTING_REMOTE_URL].Value.toString()); ui->lineIgnore->setText(settings->Mappings[FUEL_SETTING_IGNORE_GLOB].Value.toString()); ui->lineIgnoreCRNL->setText(settings->Mappings[FUEL_SETTING_CRNL_GLOB].Value.toString()); @@ -57,6 +66,9 @@ void SettingsDialog::on_buttonBox_accepted() settings->Mappings[FUEL_SETTING_FOSSIL_PATH].Value = QDir::fromNativeSeparators(ui->lineFossilPath->text()); settings->Mappings[FUEL_SETTING_GDIFF_CMD].Value = QDir::fromNativeSeparators(ui->lineGDiffCommand->text()); settings->Mappings[FUEL_SETTING_GMERGE_CMD].Value = QDir::fromNativeSeparators(ui->lineGMergeCommand->text()); + Q_ASSERT(ui->cmbDoubleClickAction->currentIndex()>=FILE_DLBCLICK_ACTION_DIFF && ui->cmbDoubleClickAction->currentIndex()Mappings[FUEL_SETTING_FILE_DBLCLICK].Value = ui->cmbDoubleClickAction->currentIndex(); + settings->Mappings[FUEL_SETTING_REMOTE_URL].Value = ui->lineRemoteURL->text(); settings->Mappings[FUEL_SETTING_IGNORE_GLOB].Value = ui->lineIgnore->text(); settings->Mappings[FUEL_SETTING_CRNL_GLOB].Value = ui->lineIgnoreCRNL->text(); diff --git a/SettingsDialog.h b/SettingsDialog.h index 45ba50c..d9040db 100644 --- a/SettingsDialog.h +++ b/SettingsDialog.h @@ -9,13 +9,22 @@ namespace Ui { class SettingsDialog; } -#define FUEL_SETTING_FOSSIL_PATH "FossilPath" -#define FUEL_SETTING_COMMIT_MSG "CommitMsgHistory" -#define FUEL_SETTING_GDIFF_CMD "gdiff-command" -#define FUEL_SETTING_GMERGE_CMD "gmerge-command" -#define FUEL_SETTING_IGNORE_GLOB "ignore-glob" -#define FUEL_SETTING_CRNL_GLOB "crnl-glob" -#define FUEL_SETTING_REMOTE_URL "remote-url" +#define FUEL_SETTING_FOSSIL_PATH "FossilPath" +#define FUEL_SETTING_COMMIT_MSG "CommitMsgHistory" +#define FUEL_SETTING_FILE_DBLCLICK "FileDblClickAction" +#define FUEL_SETTING_GDIFF_CMD "gdiff-command" +#define FUEL_SETTING_GMERGE_CMD "gmerge-command" +#define FUEL_SETTING_IGNORE_GLOB "ignore-glob" +#define FUEL_SETTING_CRNL_GLOB "crnl-glob" +#define FUEL_SETTING_REMOTE_URL "remote-url" + +enum FileDblClickAction +{ + FILE_DLBCLICK_ACTION_DIFF, + FILE_DLBCLICK_ACTION_OPEN, + FILE_DLBCLICK_ACTION_OPENCONTAINING, + FILE_DLBCLICK_ACTION_MAX +}; struct Settings { @@ -42,6 +51,7 @@ struct Settings { Mappings[FUEL_SETTING_FOSSIL_PATH] = Setting(); Mappings[FUEL_SETTING_COMMIT_MSG] = Setting(); + Mappings[FUEL_SETTING_FILE_DBLCLICK] = Setting(0); // Maps to FileDblClickAction Mappings[FUEL_SETTING_GDIFF_CMD] = Setting("", Setting::TYPE_FOSSIL_GLOBAL); Mappings[FUEL_SETTING_GMERGE_CMD] = Setting("", Setting::TYPE_FOSSIL_GLOBAL); Mappings[FUEL_SETTING_IGNORE_GLOB] = Setting("", Setting::TYPE_FOSSIL_LOCAL); diff --git a/SettingsDialog.ui b/SettingsDialog.ui index 16d76b3..ab83d1b 100644 --- a/SettingsDialog.ui +++ b/SettingsDialog.ui @@ -9,8 +9,8 @@ 0 0 - 526 - 211 + 528 + 239 @@ -183,6 +183,26 @@ + + + + + 100 + 0 + + + + File double click + + + + + + + -1 + + + diff --git a/manifest b/manifest index ef5a774..5b944a4 100644 --- a/manifest +++ b/manifest @@ -1,17 +1,17 @@ -C Added\scrnl-glob\sto\ssettings\n\n -D 2011-10-21T15:55:36.627 -F CommitDialog.cpp 1b7eff42cbf75805df61c5b7d8edf6253aeaaf15 +C Added\ssetting\sto\scustomize\sthe\sdouble-click\saction\sin\sthe\sfile\sview\n +D 2011-10-21T17:38:02.111 +F CommitDialog.cpp bc05504be08d9ffe2b24d341a18e37035e1941b7 F CommitDialog.h 65a7238dcdd41b578536a0b0ac2a65f2e7f23c9a F CommitDialog.ui 5067623f6af6f5a42c87df903278e383e945e154 F FileActionDialog.cpp fcaebf9986f789b3440d5390b3458ad5f86fe0c8 F FileActionDialog.h 15db1650b3a13d70bc338371e4c033c66e3b79ce F FileActionDialog.ui c63644428579741aeb5fa052e237ba799ced9ad7 -F MainWindow.cpp 3ece15d6215da3f74172a55ea8b223d6980dd7a1 +F MainWindow.cpp 9554c5f08dbe7bfede32dfeb5a92ab81e7c4dcb7 F MainWindow.h 6efb750454037a2a9f7984fce46b5138ff47eac5 F MainWindow.ui 7f9e5cda55cffd5da8c01de7729a1806126c0d6b -F SettingsDialog.cpp 8990d8e16a1300d184d88eee52f976fe872e8f49 -F SettingsDialog.h 9a711860c4f2b491d543c2a01a904c6fb225a8d9 -F SettingsDialog.ui fb24cd91621cdd3c9dcf7de285a3fa65ea6d50a9 +F SettingsDialog.cpp b9dc5eebf3a2404f4ea8a573fc46cce19ab3d639 +F SettingsDialog.h f5da6cab4ccc82e2eb78ec835fb849c4c104d6cc +F SettingsDialog.ui f69c68cfa6c6d30a1e017fb77f853b492b162595 F Utils.cpp 4bd6f104d7d666bdae2bbe54e392e8372f6ca186 F Utils.h e5ebab82b3455f2ea06d92e6b9eb18355470076c F fuel.pro 3dc8e31fde8137143dea0ae44a81eb6733d86168 @@ -174,7 +174,7 @@ F installer/fuel.iss 13b6a938bcdf273cbd3649d2549887baa1577214 F installer/license.txt 4cc77b90af91e615a64ae04893fdffa7939db84c F main.cpp f67a9b5c9ca0b634b19ef08e7136032372d37f93 F resources.qrc e98383ed205f4e37100c60057e0129c3b86dea53 -P 6f0dadf863a147669f09e5661541e2ae6043e2a5 -R 26afbf882288a832383c0e00c91b97f6 +P 457fb31debab309e4932ca3fb8e6fe6d3c111c6c +R 1315a42142211c8b31593a76897f6c1b U kostas -Z 3328aecb6f740da2db47c3b81fc47ab1 +Z 6cc01b07abe22caec55570f6fbb0b85e diff --git a/manifest.uuid b/manifest.uuid index 0e18480..99be7a3 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -457fb31debab309e4932ca3fb8e6fe6d3c111c6c \ No newline at end of file +b0fda22886a7415ddf5d70457f3f7c8fe7ecf636 \ No newline at end of file