mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	Add support for remembering settings
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@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
		
							parent
							
								
									1d0d42f861
								
							
						
					
					
						commit
						89f02c42aa
					
				
					 2 changed files with 42 additions and 0 deletions
				
			
		|  | @ -12,6 +12,8 @@ | ||||||
| #include <QtDebug> | #include <QtDebug> | ||||||
| #include <QDateTime> | #include <QDateTime> | ||||||
| #include <QSortFilterProxyModel> | #include <QSortFilterProxyModel> | ||||||
|  | #include <QSettings> | ||||||
|  | #include <QCloseEvent> | ||||||
| 
 | 
 | ||||||
| #include "divelistview.h" | #include "divelistview.h" | ||||||
| #include "starwidget.h" | #include "starwidget.h" | ||||||
|  | @ -31,6 +33,7 @@ MainWindow::MainWindow() : ui(new Ui::MainWindow()), | ||||||
| 	ui->ListWidget->setModel(sortModel); | 	ui->ListWidget->setModel(sortModel); | ||||||
| 
 | 
 | ||||||
| 	setWindowIcon(QIcon(":subsurface-icon")); | 	setWindowIcon(QIcon(":subsurface-icon")); | ||||||
|  | 	readSettings(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void MainWindow::on_actionNew_triggered() | void MainWindow::on_actionNew_triggered() | ||||||
|  | @ -138,6 +141,11 @@ void MainWindow::on_actionPreferences_triggered() | ||||||
| void MainWindow::on_actionQuit_triggered() | void MainWindow::on_actionQuit_triggered() | ||||||
| { | { | ||||||
| 	qDebug("actionQuit"); | 	qDebug("actionQuit"); | ||||||
|  | 	if (unsaved_changes() && (askSaveChanges() == FALSE)) | ||||||
|  | 	{ | ||||||
|  | 		return; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void MainWindow::on_actionDownloadDC_triggered() | void MainWindow::on_actionDownloadDC_triggered() | ||||||
|  | @ -284,3 +292,32 @@ bool MainWindow::askSaveChanges() | ||||||
| 	} | 	} | ||||||
| 	return false; | 	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 */ | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void MainWindow::closeEvent(QCloseEvent *event) | ||||||
|  | { | ||||||
|  | 	if (unsaved_changes() && (askSaveChanges() == FALSE)) | ||||||
|  | 	{ | ||||||
|  | 		event->ignore(); | ||||||
|  | 		return; | ||||||
|  | 	} | ||||||
|  | 	event->accept(); | ||||||
|  | 	writeSettings(); | ||||||
|  | } | ||||||
|  | @ -66,12 +66,17 @@ private Q_SLOTS: | ||||||
| 	void on_actionAboutSubsurface_triggered(); | 	void on_actionAboutSubsurface_triggered(); | ||||||
| 	void on_actionUserManual_triggered(); | 	void on_actionUserManual_triggered(); | ||||||
| 
 | 
 | ||||||
|  | protected: | ||||||
|  | 	void closeEvent(QCloseEvent *); | ||||||
|  | 
 | ||||||
| private: | private: | ||||||
| 	Ui::MainWindow *ui; | 	Ui::MainWindow *ui; | ||||||
| 	DiveTripModel *model; | 	DiveTripModel *model; | ||||||
| 	QSortFilterProxyModel *sortModel; | 	QSortFilterProxyModel *sortModel; | ||||||
| 	QString filter(); | 	QString filter(); | ||||||
| 	bool askSaveChanges(); | 	bool askSaveChanges(); | ||||||
|  | 	void readSettings(); | ||||||
|  | 	void writeSettings(); | ||||||
| 
 | 
 | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue