Added setting to customize the double-click action in the file view

FossilOrigin-Name: b0fda22886a7415ddf5d70457f3f7c8fe7ecf636
This commit is contained in:
kostas 2011-10-21 17:38:02 +00:00
parent 2529f35520
commit ff622939e9
7 changed files with 171 additions and 121 deletions

View File

@ -1,95 +1,95 @@
#include "CommitDialog.h"
#include <QPushButton>
#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; i<dlg.itemModel.rowCount(); ++i)
{
QStandardItem *si = dlg.itemModel.item(i);
if(si->checkState()!=Qt::Checked)
continue;
files.append(si->text());
}
return true;
}
//------------------------------------------------------------------------------
void CommitDialog::on_comboBox_activated(int index)
{
#include "CommitDialog.h"
#include <QPushButton>
#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; i<dlg.itemModel.rowCount(); ++i)
{
QStandardItem *si = dlg.itemModel.item(i);
if(si->checkState()!=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<MainWindow*>(parent())->diffFile(filename);
}
//------------------------------------------------------------------------------
void CommitDialog::on_listView_clicked(const QModelIndex &)
{
int num_selected = 0;
for(int i=0; i<itemModel.rowCount(); ++i)
{
QStandardItem *si = itemModel.item(i);
if(si->checkState()==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<MainWindow*>(parent())->diffFile(filename);
}
//------------------------------------------------------------------------------
void CommitDialog::on_listView_clicked(const QModelIndex &)
{
int num_selected = 0;
for(int i=0; i<itemModel.rowCount(); ++i)
{
QStandardItem *si = itemModel.item(i);
if(si->checkState()==Qt::Checked)
++num_selected;
}
ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(num_selected>0);
}

View File

@ -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; i<num_wks; ++i)
{
@ -1116,10 +1119,9 @@ void MainWindow::saveSettings()
// If we have a customize fossil path, save it
QString fossil_path = settings.Mappings[FUEL_SETTING_FOSSIL_PATH].Value.toString();
qsettings.setValue("FossilPath", fossil_path);
if(!settings.Mappings[FUEL_SETTING_COMMIT_MSG].Value.toStringList().empty() )
qsettings.setValue(FUEL_SETTING_COMMIT_MSG, settings.Mappings[FUEL_SETTING_COMMIT_MSG].Value);
qsettings.setValue(FUEL_SETTING_FOSSIL_PATH, fossil_path);
qsettings.setValue(FUEL_SETTING_COMMIT_MSG, settings.Mappings[FUEL_SETTING_COMMIT_MSG].Value);
qsettings.setValue(FUEL_SETTING_FILE_DBLCLICK, settings.Mappings[FUEL_SETTING_FILE_DBLCLICK].Value);
qsettings.beginWriteArray("Workspaces", workspaceHistory.size());
for(int i=0; i<workspaceHistory.size(); ++i)
@ -1381,7 +1383,13 @@ void MainWindow::on_actionHistory_triggered()
//------------------------------------------------------------------------------
void MainWindow::on_tableView_doubleClicked(const QModelIndex &/*index*/)
{
on_actionDiff_triggered();
int action = settings.Mappings[FUEL_SETTING_FILE_DBLCLICK].Value.toInt();
if(action==FILE_DLBCLICK_ACTION_DIFF)
on_actionDiff_triggered();
else if(action==FILE_DLBCLICK_ACTION_OPEN)
on_actionOpenFile_triggered();
else if(action==FILE_DLBCLICK_ACTION_OPENCONTAINING)
on_actionOpenContaining_triggered();
}
//------------------------------------------------------------------------------

View File

@ -30,9 +30,18 @@ SettingsDialog::SettingsDialog(QWidget *parent, Settings &_settings) :
settings(&_settings)
{
ui->setupUi(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()<FILE_DLBCLICK_ACTION_MAX);
settings->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();

View File

@ -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);

View File

@ -9,8 +9,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>526</width>
<height>211</height>
<width>528</width>
<height>239</height>
</rect>
</property>
<property name="windowTitle">
@ -183,6 +183,26 @@
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_8">
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>File double click</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QComboBox" name="cmbDoubleClickAction">
<property name="currentIndex">
<number>-1</number>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tabRepo">

View File

@ -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

View File

@ -1 +1 @@
457fb31debab309e4932ca3fb8e6fe6d3c111c6c
b0fda22886a7415ddf5d70457f3f7c8fe7ecf636