diff --git a/CommitDialog.cpp b/CommitDialog.cpp index 4800890..cd5f4f9 100644 --- a/CommitDialog.cpp +++ b/CommitDialog.cpp @@ -7,8 +7,6 @@ CommitDialog::CommitDialog(QWidget *parent, const QStringList &commitMsgHistory, QDialog(parent, Qt::Sheet), ui(new Ui::CommitDialog) { - setModal(true); - setWindowModality(Qt::WindowModal); ui->setupUi(this); ui->comboBox->clear(); ui->comboBox->insertItems(0, commitMsgHistory); diff --git a/CommitDialog.ui b/CommitDialog.ui index 61b2529..5f0102d 100644 --- a/CommitDialog.ui +++ b/CommitDialog.ui @@ -2,6 +2,9 @@ CommitDialog + + Qt::WindowModal + 0 @@ -13,6 +16,9 @@ Commit + + true + diff --git a/FileActionDialog.cpp b/FileActionDialog.cpp index ceeb0fa..ef4e4f7 100644 --- a/FileActionDialog.cpp +++ b/FileActionDialog.cpp @@ -5,8 +5,6 @@ FileActionDialog::FileActionDialog(QWidget *parent, const QString &title, const QDialog(parent, Qt::Sheet), ui(new Ui::FileActionDialog) { - setModal(true); - setWindowModality(Qt::WindowModal); ui->setupUi(this); setWindowTitle(title); ui->label->setText(message); diff --git a/FileActionDialog.ui b/FileActionDialog.ui index 2b97047..9d287a8 100644 --- a/FileActionDialog.ui +++ b/FileActionDialog.ui @@ -2,6 +2,9 @@ FileActionDialog + + Qt::WindowModal + 0 @@ -13,6 +16,9 @@ File Action + + true + diff --git a/MainWindow.cpp b/MainWindow.cpp index 44928fb..302acec 100644 --- a/MainWindow.cpp +++ b/MainWindow.cpp @@ -84,8 +84,6 @@ MainWindow::MainWindow(QWidget *parent) : statusLabel->setMinimumSize( statusLabel->sizeHint() ); ui->statusBar->addWidget( statusLabel, 1 ); - settingsFile = QDir::homePath() + QDir::separator() + ".fuelrc"; - #ifdef DEV_SETTINGS currentWorkspace = "/home/kostas/tmp/testfossil"; fossilPath = "fossil"; @@ -128,7 +126,10 @@ bool MainWindow::openWorkspace(const QString &dir) bool ok = refresh(); if(ok) + { + QDir::setCurrent(dir); rebuildRecent(); + } return ok; } @@ -456,17 +457,17 @@ bool MainWindow::runFossilRaw(const QStringList &args, QStringList *output, int if(detached) { - return QProcess::startDetached(fossilPath, args, wkdir); + return QProcess::startDetached(settings.fossilPath, args, wkdir); } QProcess process(this); process.setProcessChannelMode(QProcess::MergedChannels); process.setWorkingDirectory(wkdir); - process.start(fossilPath, args); + process.start(settings.fossilPath, args); if(!process.waitForStarted()) { - log("Could not start fossil executable '"+fossilPath + "''\n"); + log("Could not start fossil executable '"+settings.fossilPath + "''\n"); return false; } @@ -512,46 +513,46 @@ void MainWindow::addWorkspace(const QString &dir) //------------------------------------------------------------------------------ void MainWindow::loadSettings() { - QSettings settings(settingsFile, QSettings::NativeFormat); + QSettings qsettings(QSettings::UserScope, QCoreApplication::organizationName(), QCoreApplication::applicationName()); - if(settings.contains("FossilPath")) - fossilPath = settings.value("FossilPath").toString(); + if(qsettings.contains("FossilPath")) + settings.fossilPath = qsettings.value("FossilPath").toString(); else - fossilPath = "fossil"; + settings.fossilPath = "fossil"; int num_wks = 0; - if(settings.contains("NumWorkspaces")) - num_wks = settings.value("NumWorkspaces").toInt(); + if(qsettings.contains("NumWorkspaces")) + num_wks = qsettings.value("NumWorkspaces").toInt(); for(int i=0; i-1) - settings.setValue("LastWorkspace", curr_wkspace); + qsettings.setValue("LastWorkspace", curr_wkspace); - settings.setValue("WindowX", x()); - settings.setValue("WindowY", y()); - settings.setValue("WindowWidth", width()); - settings.setValue("WindowHeight", height()); + qsettings.setValue("WindowX", x()); + qsettings.setValue("WindowY", y()); + qsettings.setValue("WindowWidth", width()); + qsettings.setValue("WindowHeight", height()); } @@ -642,10 +643,10 @@ bool MainWindow::startUI() log("> fossil ui\n"); - fossilUI.start(fossilPath, QStringList() << "ui"); + fossilUI.start(settings.fossilPath, QStringList() << "ui"); if(!fossilUI.waitForStarted()) { - log(fossilPath + tr(" does not exist") +"\n"); + log(settings.fossilPath + tr(" does not exist") +"\n"); return false; } @@ -994,3 +995,9 @@ void MainWindow::on_actionUpdate_triggered() refresh(); } + +//------------------------------------------------------------------------------ +void MainWindow::on_actionSettings_triggered() +{ + SettingsDialog::run(this, settings); +} diff --git a/MainWindow.h b/MainWindow.h index 7355149..e101abe 100644 --- a/MainWindow.h +++ b/MainWindow.h @@ -8,6 +8,7 @@ #include #include #include +#include "SettingsDialog.h" namespace Ui { class MainWindow; @@ -154,6 +155,8 @@ private slots: void on_actionAbout_triggered(); void on_actionUpdate_triggered(); + void on_actionSettings_triggered(); + private: enum { @@ -167,12 +170,9 @@ private: class QAction *recentWorkspaceActs[MAX_RECENT]; class QLabel *statusLabel; - QString settingsFile; - - // Settings + Settings settings; QString projectName; QString repositoryFile; - QString fossilPath; QStringList workspaceHistory; QString currentWorkspace; QStringList commitMessages; diff --git a/MainWindow.ui b/MainWindow.ui index 470286b..bd9ccf4 100644 --- a/MainWindow.ui +++ b/MainWindow.ui @@ -132,11 +132,11 @@ false + + - - @@ -153,6 +153,7 @@ + @@ -432,6 +433,18 @@ Ctrl+U + + + + :/icons/icons/Gear-01.png:/icons/icons/Gear-01.png + + + Settings + + + Settings + + diff --git a/SettingsDialog.cpp b/SettingsDialog.cpp new file mode 100644 index 0000000..d4b3d1e --- /dev/null +++ b/SettingsDialog.cpp @@ -0,0 +1,49 @@ +#include "SettingsDialog.h" +#include "ui_SettingsDialog.h" +#include + +SettingsDialog::SettingsDialog(QWidget *parent, Settings &_settings) : + QDialog(parent, Qt::Sheet), + ui(new Ui::SettingsDialog), + settings(&_settings) +{ + ui->setupUi(this); + ui->lineEdit->setText(settings->fossilPath); +} + +SettingsDialog::~SettingsDialog() +{ + delete ui; +} + +void SettingsDialog::on_btnSelectFossil_clicked() +{ +#ifdef Q_WS_WIN + QString filter(tr("Fossil Executables (*.exe)")); +#else + QString filter(tr("Fossil Executables (*)")); +#endif + QString path = QFileDialog::getOpenFileName( + this, + tr("Select Fossil Executable"), + QString(), + filter, + &filter); + + if(QFile::exists(path)) + { + ui->lineEdit->setText(path) ; + } +} + + +bool SettingsDialog::run(QWidget *parent, Settings &settings) +{ + SettingsDialog dlg(parent, settings); + return dlg.exec() == QDialog::Accepted; +} + +void SettingsDialog::on_buttonBox_accepted() +{ + settings->fossilPath = ui->lineEdit->text(); +} diff --git a/SettingsDialog.h b/SettingsDialog.h new file mode 100644 index 0000000..3dcd0b6 --- /dev/null +++ b/SettingsDialog.h @@ -0,0 +1,38 @@ +#ifndef SETTINGSDIALOG_H +#define SETTINGSDIALOG_H + +#include + +namespace Ui { + class SettingsDialog; +} + +struct Settings +{ + QString fossilPath; + +}; + + +class SettingsDialog : public QDialog +{ + Q_OBJECT + +public: + explicit SettingsDialog(QWidget *parent, Settings &_settings); + ~SettingsDialog(); + + static bool run(QWidget *parent, Settings &_settings); + + +private slots: + void on_btnSelectFossil_clicked(); + + void on_buttonBox_accepted(); + +private: + Ui::SettingsDialog *ui; + Settings *settings; +}; + +#endif // SETTINGSDIALOG_H diff --git a/SettingsDialog.ui b/SettingsDialog.ui new file mode 100644 index 0000000..5541a04 --- /dev/null +++ b/SettingsDialog.ui @@ -0,0 +1,95 @@ + + + SettingsDialog + + + Qt::WindowModal + + + + 0 + 0 + 400 + 100 + + + + Settings + + + true + + + + + + + + Fossil Path + + + + + + + true + + + + + + + ... + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + + buttonBox + accepted() + SettingsDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + SettingsDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/fuel.pro b/fuel.pro index 02f7358..1557f31 100644 --- a/fuel.pro +++ b/fuel.pro @@ -19,17 +19,20 @@ SOURCES += main.cpp\ MainWindow.cpp \ CommitDialog.cpp \ FileActionDialog.cpp \ - RepoDialog.cpp + RepoDialog.cpp \ + SettingsDialog.cpp HEADERS += MainWindow.h \ CommitDialog.h \ FileActionDialog.h \ - RepoDialog.h + RepoDialog.h \ + SettingsDialog.h FORMS += MainWindow.ui \ CommitDialog.ui \ FileActionDialog.ui \ - RepoDialog.ui + RepoDialog.ui \ + SettingsDialog.ui RESOURCES += \ resources.qrc @@ -43,3 +46,10 @@ RESOURCES += \ + + + + + + + diff --git a/main.cpp b/main.cpp index c052757..c3e4696 100644 --- a/main.cpp +++ b/main.cpp @@ -4,7 +4,11 @@ int main(int argc, char *argv[]) { QApplication a(argc, argv); - MainWindow w; + a.setApplicationName("Fuel"); + a.setApplicationVersion("1.0.0"); + a.setOrganizationDomain("karanik.com"); + a.setOrganizationName("karanik"); + MainWindow w; w.show(); return a.exec(); diff --git a/manifest b/manifest index 8e814d6..fc87e14 100644 --- a/manifest +++ b/manifest @@ -1,18 +1,21 @@ -C Fixed\sQt\swarning\son\smy\scustom\sworkspace\schange\sslot\nAdded\sWindows\sicon\n -D 2011-08-06T06:03:06.064 -F CommitDialog.cpp e3d9da638dd3a1df1f7c6676f87602501299297e +C Added\ssettings\sdialog\nAdded\splatform\sspecific\ssettings\sstorage/retrieval +D 2011-08-06T08:31:19.360 +F CommitDialog.cpp a1fcdc94933f4e1a144224c7c70f1e067d3ee31e F CommitDialog.h 0550b1b652924ae54b6f6c9274cad2d4c491808a -F CommitDialog.ui 3589fe539108343ea90f269f74a6a9e7a00dd2a9 -F FileActionDialog.cpp 36a8ac047f45932aa5977dbbbf043911a0b00e05 +F CommitDialog.ui 5067623f6af6f5a42c87df903278e383e945e154 +F FileActionDialog.cpp ed26a6f9dd1debd6926d4bbff7ba18acb63dacc0 F FileActionDialog.h 873a9f720753a37d67071563ed7954f91b0d4699 -F FileActionDialog.ui 2d7a0fa47f9555f4a4a7485feacd5bce504415a0 -F MainWindow.cpp 44982070dd96913a6d6177325c23d791c6fc628e -F MainWindow.h b9c42e6c2eb01e6b04525ec9b346b1b00c00bb0e -F MainWindow.ui 65536bfe40bc9ee69ac55b1669359878172e7cad +F FileActionDialog.ui 3d4f7ad0665d51dc3ba405edbc472dd317138c5f +F MainWindow.cpp baa17293fc095dd2aa485dd830fb78ef0da683fb +F MainWindow.h 8a23caf1a70d41fe60a25894649a88b1efb851ba +F MainWindow.ui a68b2f41fc5edec06235504a88575463fa365590 F RepoDialog.cpp 8f20e1511526973555c774350ec413dcecf51c9e F RepoDialog.h a958c5f98f1e6882bf41dbdd2e4df3cb89700802 F RepoDialog.ui 8fe9b7f7528332ca9a45e919cf116aaf144a3286 -F fuel.pro 920964ebcbc2aa8c035e4faa3d1e1bda59008b72 +F SettingsDialog.cpp 4e4cd109baed184bf0d1bb506e98aebf81ca43f0 +F SettingsDialog.h 0da162b0bf9656f5ca5e6977ef669c24a44659e5 +F SettingsDialog.ui 998b2bf7cf84df8247493c0f948b4193808494cd +F fuel.pro 295944fd817518c7c2412c5e52ce5ecad11dd8f8 F fuel.rc 8e9ac966f283102c11a77cd7f936cdc09e09bd79 F icons/Address\sBook-01.png ef2cec80ea5a559b72e8be4a344a1869fe69cbd8 F icons/Adobe\sIllustrator\sCS3\sDocument-01.png 2e44e933d58eefee7ccfa1650fed4ceadcf3c2be @@ -168,9 +171,9 @@ F icons/Zoom\sOut-01.png 8eda092100d9e00c9097f43a80d1e26695947448 F icons/Zoom-01.png 67ca532922e9166325c5c75fce1ca3fbb0d2b6a6 F icons/fuel.icns 81e535004b62db801a02f3e15d0a33afc9d4070b F icons/fuel.ico eb529ab3332a17b9302ef3e851db5b9ebce2a038 -F main.cpp f53e9e1e34f65565f06b2d37d7be5c38e2113a03 +F main.cpp 8e60cd775217ab3ab76d576b967186923e8cb9ab F resources.qrc e98383ed205f4e37100c60057e0129c3b86dea53 -P 3b6f4f542c7c6daedf1eb7aff03ef988cbb5100f -R f99b9b68fb5220c904ccfdfd2ac560ca +P dc4d1a0ea7eea22ee41170f366c08f09368735a7 +R c5696a2a2cc67a5876ce07be3131bc73 U kostas -Z 42a29c0daccbc520d3edb5b0bd58af16 +Z e87aeac6860a9baf9498236b899d9a66 diff --git a/manifest.uuid b/manifest.uuid index 2324107..549b753 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -dc4d1a0ea7eea22ee41170f366c08f09368735a7 \ No newline at end of file +66205d14199523228d7f6fa0241a7ef7162f6940 \ No newline at end of file