mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	core: create qPrefGeocoding from SettingsObjectWrapper
Update set/get functions to follow common name scheme: - get function have same name as in struct preferences - set function have set_<name> - signal function have <name>_changed one class one .h/.cpp is the C++ idiom. Having load/sync of each variable in 1 functions (in contrast to the distributed way SettingsObjectWrapper handles it) secures the same storage name is used. Having the set/get/load/sync functions grouped together makes it easier to get an overview. REMARK: this commit only defines the class, it is not active in production Signed-off-by: Jan Iversen <jani@apache.org>
This commit is contained in:
		
							parent
							
								
									d72546e799
								
							
						
					
					
						commit
						3cd698361c
					
				
					 6 changed files with 122 additions and 0 deletions
				
			
		|  | @ -109,6 +109,7 @@ set(SUBSURFACE_CORE_LIB_SRCS | ||||||
| 	settings/qPrefDiveComputer.cpp | 	settings/qPrefDiveComputer.cpp | ||||||
| 	settings/qPrefDivePlanner.cpp | 	settings/qPrefDivePlanner.cpp | ||||||
| 	settings/qPrefFacebook.cpp | 	settings/qPrefFacebook.cpp | ||||||
|  | 	settings/qPrefGeocoding.cpp | ||||||
| 	settings/qPrefLanguage.cpp | 	settings/qPrefLanguage.cpp | ||||||
| 	settings/qPrefLocationService.cpp | 	settings/qPrefLocationService.cpp | ||||||
| 	settings/qPrefPrivate.cpp | 	settings/qPrefPrivate.cpp | ||||||
|  |  | ||||||
|  | @ -11,6 +11,7 @@ | ||||||
| #include "qPrefDiveComputer.h" | #include "qPrefDiveComputer.h" | ||||||
| #include "qPrefDivePlanner.h" | #include "qPrefDivePlanner.h" | ||||||
| #include "qPrefFacebook.h" | #include "qPrefFacebook.h" | ||||||
|  | #include "qPrefGeocoding.h" | ||||||
| #include "qPrefLanguage.h" | #include "qPrefLanguage.h" | ||||||
| #include "qPrefLocationService.h" | #include "qPrefLocationService.h" | ||||||
| #include "qPrefProxy.h" | #include "qPrefProxy.h" | ||||||
|  |  | ||||||
							
								
								
									
										72
									
								
								core/settings/qPrefGeocoding.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								core/settings/qPrefGeocoding.cpp
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,72 @@ | ||||||
|  | // SPDX-License-Identifier: GPL-2.0
 | ||||||
|  | #include "qPref.h" | ||||||
|  | #include "qPrefPrivate.h" | ||||||
|  | 
 | ||||||
|  | static const QString group = QStringLiteral("geocoding"); | ||||||
|  | 
 | ||||||
|  | qPrefGeocoding::qPrefGeocoding(QObject *parent) : QObject(parent) | ||||||
|  | { | ||||||
|  | } | ||||||
|  | qPrefGeocoding *qPrefGeocoding::instance() | ||||||
|  | { | ||||||
|  | 	static qPrefGeocoding *self = new qPrefGeocoding; | ||||||
|  | 	return self; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void qPrefGeocoding::loadSync(bool doSync) | ||||||
|  | { | ||||||
|  | 	disk_first_taxonomy_category(doSync); | ||||||
|  | 	disk_second_taxonomy_category(doSync); | ||||||
|  | 	disk_third_taxonomy_category(doSync); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | void qPrefGeocoding::set_first_taxonomy_category(taxonomy_category value) | ||||||
|  | { | ||||||
|  | 	if (value != prefs.geocoding.category[0]) { | ||||||
|  | 		prefs.geocoding.category[0] = value; | ||||||
|  | 		disk_first_taxonomy_category(true); | ||||||
|  | 		emit first_taxonomy_category_changed(value); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | void qPrefGeocoding::disk_first_taxonomy_category(bool doSync) | ||||||
|  | { | ||||||
|  | 	if (doSync) | ||||||
|  | 		qPrefPrivate::instance()->setting.setValue(group + "/cat0", prefs.geocoding.category[0]); | ||||||
|  | 	else | ||||||
|  | 		prefs.geocoding.category[0] = (enum taxonomy_category)qPrefPrivate::instance()->setting.value(group + "/cat0", default_prefs.geocoding.category[0]).toInt(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | void qPrefGeocoding::set_second_taxonomy_category(taxonomy_category value) | ||||||
|  | { | ||||||
|  | 	if (value != prefs.geocoding.category[1]) { | ||||||
|  | 		prefs.geocoding.category[1] = value; | ||||||
|  | 		disk_second_taxonomy_category(true); | ||||||
|  | 		emit second_taxonomy_category_changed(value); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | void qPrefGeocoding::disk_second_taxonomy_category(bool doSync) | ||||||
|  | { | ||||||
|  | 	if (doSync) | ||||||
|  | 		qPrefPrivate::instance()->setting.setValue(group + "/cat1", prefs.geocoding.category[1]); | ||||||
|  | 	else | ||||||
|  | 		prefs.geocoding.category[1] = (enum taxonomy_category)qPrefPrivate::instance()->setting.value(group + "/cat1", default_prefs.geocoding.category[1]).toInt(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | void qPrefGeocoding::set_third_taxonomy_category(taxonomy_category value) | ||||||
|  | { | ||||||
|  | 	if (value != prefs.geocoding.category[2]) { | ||||||
|  | 		prefs.geocoding.category[2] = value; | ||||||
|  | 		disk_third_taxonomy_category(true); | ||||||
|  | 		emit third_taxonomy_category_changed(value); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | void qPrefGeocoding::disk_third_taxonomy_category(bool doSync) | ||||||
|  | { | ||||||
|  | 	if (doSync) | ||||||
|  | 		qPrefPrivate::instance()->setting.setValue(group + "/cat2", prefs.geocoding.category[2]); | ||||||
|  | 	else | ||||||
|  | 		prefs.geocoding.category[2] = (enum taxonomy_category)qPrefPrivate::instance()->setting.value(group + "/cat2", default_prefs.geocoding.category[2]).toInt(); | ||||||
|  | } | ||||||
							
								
								
									
										45
									
								
								core/settings/qPrefGeocoding.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								core/settings/qPrefGeocoding.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,45 @@ | ||||||
|  | // SPDX-License-Identifier: GPL-2.0
 | ||||||
|  | #ifndef QPREFGEOCODING_H | ||||||
|  | #define QPREFGEOCODING_H | ||||||
|  | #include "core/pref.h" | ||||||
|  | 
 | ||||||
|  | #include <QObject> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class qPrefGeocoding : public QObject { | ||||||
|  | 	Q_OBJECT | ||||||
|  | 	Q_PROPERTY(taxonomy_category first_taxonomy_category READ first_taxonomy_category WRITE set_first_taxonomy_category NOTIFY first_taxonomy_category_changed); | ||||||
|  | 	Q_PROPERTY(taxonomy_category second_taxonomy_category READ second_taxonomy_category WRITE set_second_taxonomy_category NOTIFY second_taxonomy_category_changed); | ||||||
|  | 	Q_PROPERTY(taxonomy_category third_taxonomy_category READ third_taxonomy_category WRITE set_third_taxonomy_category NOTIFY third_taxonomy_category_changed); | ||||||
|  | 
 | ||||||
|  | public: | ||||||
|  | 	qPrefGeocoding(QObject *parent = NULL); | ||||||
|  | 	static qPrefGeocoding *instance(); | ||||||
|  | 
 | ||||||
|  | 	// Load/Sync local settings (disk) and struct preference
 | ||||||
|  | 	void loadSync(bool doSync); | ||||||
|  | 	void load() { loadSync(false); } | ||||||
|  | 	void sync() { loadSync(true); } | ||||||
|  | 
 | ||||||
|  | public: | ||||||
|  | 	taxonomy_category first_taxonomy_category() { return prefs.geocoding.category[0]; } | ||||||
|  | 	taxonomy_category second_taxonomy_category() { return prefs.geocoding.category[1]; } | ||||||
|  | 	taxonomy_category third_taxonomy_category() { return prefs.geocoding.category[2]; } | ||||||
|  | 
 | ||||||
|  | public slots: | ||||||
|  | 	void set_first_taxonomy_category(taxonomy_category value); | ||||||
|  | 	void set_second_taxonomy_category(taxonomy_category value); | ||||||
|  | 	void set_third_taxonomy_category(taxonomy_category value); | ||||||
|  | 
 | ||||||
|  | signals: | ||||||
|  | 	void first_taxonomy_category_changed(taxonomy_category value); | ||||||
|  | 	void second_taxonomy_category_changed(taxonomy_category value); | ||||||
|  | 	void third_taxonomy_category_changed(taxonomy_category value); | ||||||
|  | 
 | ||||||
|  | private: | ||||||
|  | 	void disk_first_taxonomy_category(bool doSync); | ||||||
|  | 	void disk_second_taxonomy_category(bool doSync); | ||||||
|  | 	void disk_third_taxonomy_category(bool doSync); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
|  | @ -20,6 +20,7 @@ public: | ||||||
| 	friend class qPrefDiveComputer; | 	friend class qPrefDiveComputer; | ||||||
| 	friend class qPrefDivePlanner; | 	friend class qPrefDivePlanner; | ||||||
| 	friend class qPrefFacebook; | 	friend class qPrefFacebook; | ||||||
|  | 	friend class qPrefGeocoding; | ||||||
| 	friend class qPrefLanguage; | 	friend class qPrefLanguage; | ||||||
| 	friend class qPrefLocationService; | 	friend class qPrefLocationService; | ||||||
| 	friend class qPrefProxy; | 	friend class qPrefProxy; | ||||||
|  |  | ||||||
|  | @ -84,6 +84,7 @@ SOURCES += ../../subsurface-mobile-main.cpp \ | ||||||
| 	../../core/settings/qPrefDiveComputer.cpp \ | 	../../core/settings/qPrefDiveComputer.cpp \ | ||||||
| 	../../core/settings/qPrefDivePlanner.cpp \ | 	../../core/settings/qPrefDivePlanner.cpp \ | ||||||
| 	../../core/settings/qPrefFacebook.cpp \ | 	../../core/settings/qPrefFacebook.cpp \ | ||||||
|  | 	../../core/settings/qPrefGeocoding.cpp \ | ||||||
| 	../../core/settings/qPrefLanguage.cpp \ | 	../../core/settings/qPrefLanguage.cpp \ | ||||||
| 	../../core/settings/qPrefLocationService.cpp \ | 	../../core/settings/qPrefLocationService.cpp \ | ||||||
| 	../../core/settings/qPrefPrivate.cpp \ | 	../../core/settings/qPrefPrivate.cpp \ | ||||||
|  | @ -204,6 +205,7 @@ HEADERS += \ | ||||||
| 	../../core/settings/qPrefDiveComputer.h \ | 	../../core/settings/qPrefDiveComputer.h \ | ||||||
| 	../../core/settings/qPrefDivePlanner.h \ | 	../../core/settings/qPrefDivePlanner.h \ | ||||||
| 	../../core/settings/qPrefFacebook.h \ | 	../../core/settings/qPrefFacebook.h \ | ||||||
|  | 	../../core/settings/qPrefGeocoding.h \ | ||||||
| 	../../core/settings/qPrefLanguage.h \ | 	../../core/settings/qPrefLanguage.h \ | ||||||
| 	../../core/settings/qPrefLocationService.h \ | 	../../core/settings/qPrefLocationService.h \ | ||||||
| 	../../core/settings/qPrefPrivate.h \ | 	../../core/settings/qPrefPrivate.h \ | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue