[PATCH] Add support for remembering settings

Amit Chaudhuri amit.k.chaudhuri at gmail.com
Sat Apr 27 08:45:01 PDT 2013


Syntax police: fair cop.
New Line @ EOF - wonder why?
Using ini & / or leaving as is - let's see how Dirk feels after his black
belt sparring sessions ;)


On Sat, Apr 27, 2013 at 1:05 PM, Lubomir I. Ivanov <neolit123 at gmail.com>wrote:

> On 27 April 2013 12:09,  <amit.k.chaudhuri at gmail.com> wrote:
> > From: Amit Chaudhuri <amit.k.chaudhuri at gmail.com>
> >
> > Use QSettings to provide persistent storage of settings. For example, we
> > store and restore the size of the MainWindow.
> >
> > We use the organisation name hohndel.org and keep subsurface as the
> > application name.
> >
> > A section is specified for things to do with the MainWindow; other
> > sections could be added e.g. for preferred units?
> >
> > Signed-off-by: Amit Chaudhuri <amit.k.chaudhuri at gmail.com>
>
>
> oh hai, i'm the annoying syntax police. :-)
> a couple of quick things bellow.
>
> > ---
> >  qt-ui/mainwindow.cpp |   37 +++++++++++++++++++++++++++++++++++++
> >  qt-ui/mainwindow.h   |    5 +++++
> >  2 files changed, 42 insertions(+)
> >
> > diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp
> > index 8cdc601..0c6691a 100644
> > --- a/qt-ui/mainwindow.cpp
> > +++ b/qt-ui/mainwindow.cpp
> > @@ -12,6 +12,8 @@
> >  #include <QtDebug>
> >  #include <QDateTime>
> >  #include <QSortFilterProxyModel>
> > +#include <QSettings>
> > +#include <QCloseEvent>
> >
> >  #include "divelistview.h"
> >  #include "starwidget.h"
> > @@ -31,6 +33,7 @@ MainWindow::MainWindow() : ui(new Ui::MainWindow()),
> >         ui->ListWidget->setModel(sortModel);
> >
> >         setWindowIcon(QIcon(":subsurface-icon"));
> > +       readSettings();
> >  }
> >
> >  void MainWindow::on_actionNew_triggered()
> > @@ -138,6 +141,11 @@ void MainWindow::on_actionPreferences_triggered()
> >  void MainWindow::on_actionQuit_triggered()
> >  {
> >         qDebug("actionQuit");
> > +       if (unsaved_changes() && (askSaveChanges() == FALSE))
> > +       {
> > +               return;
> > +       }
> > +
> >  }
> >
>
> opening curly brace for branches _should be_ at the same line as the
> "if", "else" conditions:
>
> if (hello) {
> }
>
> >  void MainWindow::on_actionDownloadDC_triggered()
> > @@ -284,3 +292,32 @@ bool MainWindow::askSaveChanges()
> >         }
> >         return false;
> >  }
> > +
> > +void MainWindow::readSettings()
> > +{
> > +       QSettings settings("hohndel.org","subsurface");
> > +
> > +       /* note: section/key i.e. forward slash to separate */
> > +       QSize sz = settings.value("MainWindow/size").value<QSize>();
> > +       resize(sz);
> > +}
> > +
> > +void MainWindow::writeSettings()
> > +{
> > +       QSettings settings("hohndel.org","subsurface");
> > +       settings.beginGroup("MainWindow");
> > +       settings.setValue("size",size());
> > +       settings.endGroup();
> > +       /* other groups here; avoid '/' and '\' in keys with
> setValue(...) please */
> > +}
> > +
>
> we might want to use IniFormat for portability instead of native
> formats, i.e. writing to similar OS locations and with the same
> format:
> http://qt-project.org/doc/qt-4.8/qsettings.html#Format-enum
>
> i think i've already suggested that before and i'm personally against
> using the Windows registry for writing, regardless of it being the
> "native" Windows format.
>
> > +void MainWindow::closeEvent(QCloseEvent *event)
> > +{
> > +       if (unsaved_changes() && (askSaveChanges() == FALSE))
> > +       {
> > +               event->ignore();
> > +               return;
> > +       }
> > +       event->accept();
> > +       writeSettings();
>
> same as the first comment.
>
> > +}
> > \ No newline at end of file
>
> hmm, it says no newline at EOF?
>
> lubomir
> --
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.hohndel.org/pipermail/subsurface/attachments/20130427/873d7ade/attachment.html>


More information about the subsurface mailing list