# # # patch "guitone/src/main.cpp" # from [4ffc63e768c96cee761b318d8477e3377a4f6489] # to [92d2ce54c77084266ffe867f28d04cd8fc09af24] # # patch "guitone/src/util/Settings.cpp" # from [f09f5c4e4725d265908c62c75790ac842df850a8] # to [7c9541d2328e46bfbcf5ef069734ce0863a207f4] # # patch "guitone/src/util/Settings.h" # from [81d4810800baf63a95af60eb5804783e36e9985e] # to [3e2c304fa391e02e3e8a634384cd7ea27b639b38] # # patch "guitone/src/view/Guitone.cpp" # from [9066ddf1354789f89e97f9c7a39bcdefe16bab04] # to [beca131cde79945069a4421e00ed30a2bc0c2fdb] # # patch "guitone/src/view/Guitone.h" # from [96eccb1d5f751913045a031be2062e2ed72c0037] # to [22aa80a4eacb7a5a83c2e211dc4de7323a37fa54] # # patch "guitone/src/view/Splitter.cpp" # from [95757ad05f6665e2ad79fb8480ff26f6c3fcda88] # to [2f96d679289c9aa956617aee5380243c39bbf1ea] # # patch "guitone/src/view/dialogs/DatabaseView.cpp" # from [4e20a37e9b2bb57976cbed6d2edac3f317b78f4d] # to [dc384679d5d64a9c78e94354b9d32d260f931c08] # # patch "guitone/src/view/dialogs/DatabaseView.h" # from [d58a7df6429d44d7d8a0abc9fb3e250cd0ee4a21] # to [aae2e29c55690c1e0c3b48d9910a89d981019e3c] # ============================================================ --- guitone/src/main.cpp 4ffc63e768c96cee761b318d8477e3377a4f6489 +++ guitone/src/main.cpp 92d2ce54c77084266ffe867f28d04cd8fc09af24 @@ -49,7 +49,7 @@ int main(int argc, char** argv) mainWnd->show(); - app.connect(&app, SIGNAL(lastWindowClosed()), &app, SLOT(quit())); + app.connect(&app, SIGNAL(lastWindowClosed()), mainWnd, SLOT(quit())); return app.exec(); } ============================================================ --- guitone/src/util/Settings.cpp f09f5c4e4725d265908c62c75790ac842df850a8 +++ guitone/src/util/Settings.cpp 7c9541d2328e46bfbcf5ef069734ce0863a207f4 @@ -37,17 +37,34 @@ Settings::~Settings() {} Settings::~Settings() {} -QSize Settings::getStartupSize(void) +QSize Settings::getStartupSize(const QString &name) { - return singleton()->value("StartupSize", QSize(640, 480)).toSize(); + return singleton()->value(name, QSize(640, 480)).toSize(); } -void Settings::setStartupSize(QSize size) +void Settings::setStartupSize(const QString &name, QSize size) { Settings *settings = singleton(); - settings->setValue("StartupSize", size); + settings->setValue(name, size); } +void Settings::sync() +{ + Settings *settings = singleton(); + settings->QSettings::sync(); +} + +Qt::WindowStates Settings::getWindowState(const QString &name) +{ + return singleton()->value(name, Qt::WindowNoState).toInt(); +} + +void Settings::setWindowState(const QString &name, Qt::WindowStates state) +{ + Settings *settings = singleton(); + settings->setValue(name, (int) state); +} + QString Settings::getMtnExePath() { return singleton()->value("MtnExePath", "mtn").toString(); ============================================================ --- guitone/src/util/Settings.h 81d4810800baf63a95af60eb5804783e36e9985e +++ guitone/src/util/Settings.h 3e2c304fa391e02e3e8a634384cd7ea27b639b38 @@ -29,8 +29,10 @@ public: { public: - static QSize getStartupSize(void); - static void setStartupSize(QSize); + static QSize getStartupSize(const QString &name); + static void setStartupSize(const QString &name, QSize size); + static Qt::WindowStates getWindowState(const QString &name); + static void setWindowState(const QString &name, Qt::WindowStates state); static QStringList getItemList(const QString &); static void setItemList(const QString &, const QStringList &); static void addItemToList(const QString&, const QString &, int); @@ -41,6 +43,7 @@ public: static void restoreHeaderViewState(QHeaderView*, QString); static QByteArray getSplitterState(QString); static void setSplitterState(const QByteArray&, QString); + static void sync(); private: Settings(); ============================================================ --- guitone/src/view/Guitone.cpp 9066ddf1354789f89e97f9c7a39bcdefe16bab04 +++ guitone/src/view/Guitone.cpp beca131cde79945069a4421e00ed30a2bc0c2fdb @@ -46,6 +46,11 @@ Guitone::Guitone() gotError = false; } +void Guitone::quit() +{ + Settings::sync(); +} + bool Guitone::init() { setWindowTitle(tr("guitone - a frontend for monotone")); @@ -85,10 +90,10 @@ bool Guitone::init() buildMenu(); buildModelView(); buildConnections(); - - // FIXME: doesn't really work... - resize(Settings::getStartupSize()); + resize(Settings::getStartupSize("GuitoneStartupSize")); + setWindowState(Settings::getWindowState("GuitoneWindowState")); + // load the most recent previous workspace, if there is any QStringList list = Settings::getItemList("RecentWorkspaceList"); if (list.size() > 0) @@ -363,10 +368,18 @@ void Guitone::loadWorkspace(QString fn) statusBar()->showMessage(tr("Loading workspace..."), 2000 ); } +void Guitone::resizeEvent ( QResizeEvent * event ) +{ + if(windowState() == Qt::WindowNoState) + curSize = size(); + event->accept(); +} + void Guitone::closeEvent(QCloseEvent *event) { // Do some cleanup before closing down the application - Settings::setStartupSize(size()); + Settings::setStartupSize("GuitoneStartupSize", curSize); + Settings::setWindowState("GuitoneWindowState", windowState()); event->accept(); } ============================================================ --- guitone/src/view/Guitone.h 96eccb1d5f751913045a031be2062e2ed72c0037 +++ guitone/src/view/Guitone.h 22aa80a4eacb7a5a83c2e211dc4de7323a37fa54 @@ -54,11 +54,15 @@ private slots: void openDatabaseDialog(); void aboutGuitone(); +private slots: + void quit(); + private: void buildMenu(); void buildModelView(); void buildConnections(); void closeEvent(QCloseEvent *); + void resizeEvent ( QResizeEvent * event ); void loadWorkspace(QString); void updatePreviousWorkspacesMenu(); @@ -76,6 +80,7 @@ private: AttributesView *attrView; bool gotError; + QSize curSize; }; ============================================================ --- guitone/src/view/Splitter.cpp 95757ad05f6665e2ad79fb8480ff26f6c3fcda88 +++ guitone/src/view/Splitter.cpp 2f96d679289c9aa956617aee5380243c39bbf1ea @@ -40,7 +40,8 @@ void Splitter::init(QString objName) void Splitter::init(QString objName) { setObjectName(objName); - + restoreState(); + connect( qApp, SIGNAL(lastWindowClosed(void)), this, SLOT(saveState(void)) ============================================================ --- guitone/src/view/dialogs/DatabaseView.cpp 4e20a37e9b2bb57976cbed6d2edac3f317b78f4d +++ guitone/src/view/dialogs/DatabaseView.cpp dc384679d5d64a9c78e94354b9d32d260f931c08 @@ -20,6 +20,7 @@ #include "DatabaseView.h" +#include "../../util/Settings.h" DatabaseView::DatabaseView(QWidget *parent) : QDialog(parent) { @@ -30,6 +31,8 @@ DatabaseView::DatabaseView(QWidget *pare initTreeWidget(); readBranches(); + resize(Settings::getStartupSize("DatabaseViewStartupSize")); + setWindowState(Settings::getWindowState("DatabaseViewWindowState")); } DatabaseView::~DatabaseView() @@ -59,6 +62,23 @@ void DatabaseView::initTreeWidget() } +void DatabaseView::closeEvent(QCloseEvent *event) +{ + // Do some cleanup before closing down the application + Settings::setStartupSize("DatabaseViewStartupSize", curSize); + Settings::setWindowState("DatabaseViewWindowState", windowState()); + Settings::setSplitterState(outerSplitter->saveState(), "OuterSplitter"); + Settings::setSplitterState(innerSplitter->saveState(), "InnerSplitter"); + event->accept(); +} + +void DatabaseView::resizeEvent ( QResizeEvent * event ) +{ + if(windowState() == Qt::WindowNoState) + curSize = size(); + event->accept(); +} + void DatabaseView::readChangesets(const QString &branch) { qDebug() << branch; @@ -77,7 +97,7 @@ void DatabaseView::setupSplitterGUI(QWid void DatabaseView::setupSplitterGUI(QWidget *parent) { - outerSplitter->setSizes(QList() << 200 << 422); - innerSplitter->setSizes(QList() << 200 << 400); + outerSplitter->restoreState(Settings::getSplitterState("OuterSplitter")); + innerSplitter->restoreState(Settings::getSplitterState("InnerSplitter")); } ============================================================ --- guitone/src/view/dialogs/DatabaseView.h d58a7df6429d44d7d8a0abc9fb3e250cd0ee4a21 +++ guitone/src/view/dialogs/DatabaseView.h aae2e29c55690c1e0c3b48d9910a89d981019e3c @@ -43,8 +43,11 @@ private: void readBranches(); void initTreeWidget(); void readChangesets(const QString &branch); + void resizeEvent ( QResizeEvent * event ); + void closeEvent(QCloseEvent *); Monotone *mtn; TreeBuilder *builder; + QSize curSize; }; #endif //DATABASEVIEW_H