6 changed files with 304 additions and 5 deletions
			
			
		@ -0,0 +1,138 @@ | 
				
			|||||
 | 
					/*! | 
				
			||||
 | 
					@class QtMvvm::SettingsViewModel | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					It's a ready made viewmodel to show a settings dialog. See @ref settings_xml. To show the | 
				
			||||
 | 
					dialog, call show from another ViewModel or the CoreApp: | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@code{.cpp} | 
				
			||||
 | 
					show<QtMvvm::SettingsViewModel>(); | 
				
			||||
 | 
					@endcode | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					TODO link to image page | 
				
			||||
 | 
					*/ | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					/*! | 
				
			||||
 | 
					@property QtMvvm::SettingsViewModel::canRestoreDefaults | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@default{`true`} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Restoring defaults is only allowed if both this property and the attribute of the settings XML | 
				
			||||
 | 
					are true. | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@accessors{ | 
				
			||||
 | 
						@readAc{canRestoreDefaults} | 
				
			||||
 | 
						@constantAc | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@sa @ref settings_xml_elements_config_attribs | 
				
			||||
 | 
					*/ | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					/*! | 
				
			||||
 | 
					@property QtMvvm::SettingsViewModel::restoreConfig | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@default{`<i>A basic question messagebox</i>`} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					If you want to modify the text or options, you can replace the messagebox with another dialog. | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@accessors{ | 
				
			||||
 | 
						@readAc{restoreConfig} | 
				
			||||
 | 
						@constantAc | 
				
			||||
 | 
					} | 
				
			||||
 | 
					*/ | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					/*! | 
				
			||||
 | 
					@var QtMvvm::SettingsViewModel::paramSettings | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					<b>Value:</b> `"settings"` | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@sa SettingsViewModel::showParams | 
				
			||||
 | 
					*/ | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					/*! | 
				
			||||
 | 
					@var QtMvvm::SettingsViewModel::paramSetupFile | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					<b>Value:</b> `"setupFile"` | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@sa SettingsViewModel::showParams | 
				
			||||
 | 
					*/ | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					/*! | 
				
			||||
 | 
					@fn QtMvvm::SettingsViewModel::showParams | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@param settings The QSettings to operate on. Can be null to use the default settings | 
				
			||||
 | 
					@param setupFile The path to a file to be used to create the settings. Can be empty to use the | 
				
			||||
 | 
					default path | 
				
			||||
 | 
					@return A paramater hash to be passed to ViewModel::show | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					It's a shortcut to generate parameters for the show methods to show a settings viewmodel. Use | 
				
			||||
 | 
					them as: | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@code{.cpp} | 
				
			||||
 | 
					show<QtMvvm::SettingsViewModel>(QtMvvm::SettingsViewModel::showParams(...)); | 
				
			||||
 | 
					@endcode | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@note Unless you need to explicitly set the settings or setup file a normal show without any | 
				
			||||
 | 
					parameters will just do fine. | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@sa ViewModel::show, SettingsViewModel::paramSettings, SettingsViewModel::paramSetupFile | 
				
			||||
 | 
					*/ | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					/*! | 
				
			||||
 | 
					@fn QtMvvm::SettingsViewModel::loadSetup | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@param frontend The name of the current frontend | 
				
			||||
 | 
					@returns The loaded settings setup | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					If loading fails an empty setup is returned. Logging is performed internally, so you can just | 
				
			||||
 | 
					proceed without error checking and show an empty settings dialog. | 
				
			||||
 | 
					*/ | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					/*! | 
				
			||||
 | 
					@fn QtMvvm::SettingsViewModel::loadValue | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@param key The full key of the settings entry to be loaded | 
				
			||||
 | 
					@param defaultValue a default value to return in case the value is not found in the settings | 
				
			||||
 | 
					@returns The value found under the given key | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					You can override this method if you want to support loading and saving settings from a | 
				
			||||
 | 
					different source then the normally used QSettings | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@sa SettingsViewModel::saveValue, SettingsViewModel::resetValue | 
				
			||||
 | 
					*/ | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					/*! | 
				
			||||
 | 
					@fn QtMvvm::SettingsViewModel::saveValue | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@param key The full key of the settings entry to be saved | 
				
			||||
 | 
					@param value The value to be stored under the key | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					You can override this method if you want to support loading and saving settings from a | 
				
			||||
 | 
					different source then the normally used QSettings | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@sa SettingsViewModel::loadValue, SettingsViewModel::resetValue | 
				
			||||
 | 
					*/ | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					/*! | 
				
			||||
 | 
					@fn QtMvvm::SettingsViewModel::resetValue | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@param key The full key of the settings entry to be resetted | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					You can override this method if you want to support loading and saving settings from a | 
				
			||||
 | 
					different source then the normally used QSettings | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@sa SettingsViewModel::loadValue, SettingsViewModel::saveValue | 
				
			||||
 | 
					*/ | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					/*! | 
				
			||||
 | 
					@fn QtMvvm::SettingsViewModel::callAction | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@param key The key of the entry that triggered the action | 
				
			||||
 | 
					@param parameters A map with additional parameters for the action call | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					This method is called by the GUI when an entry with the | 
				
			||||
 | 
					@ref settings_xml_types_action "action" type is pressed by the user. The key is what would | 
				
			||||
 | 
					normally be used as the settings key. The parameters are deduced from the settings XML. See | 
				
			||||
 | 
					the type documentation for more details. | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@sa @ref settings_xml_types_action | 
				
			||||
 | 
					*/ | 
				
			||||
@ -0,0 +1,117 @@ | 
				
			|||||
 | 
					/*! | 
				
			||||
 | 
					@class QtMvvm::ViewModel | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					The ViewModel is the primary class of the core library is must be implemented to create | 
				
			||||
 | 
					custom viewmodels to be shown via the mvvm mechanism. To create a custom viewmodel, simply | 
				
			||||
 | 
					implement this class and show the viewmodel via one of the show methods. Viewmodels presented | 
				
			||||
 | 
					that way support automatic injection via injectable properties. | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@attention In order for a viewmodel be showble, it must implement an invokable constructor | 
				
			||||
 | 
					with a single QObject* parameter for the parent. It basically should look like this: | 
				
			||||
 | 
					@code{.cpp} | 
				
			||||
 | 
					Q_INVOKABLE explicit MyViewModel(QObject *parent = nullptr); | 
				
			||||
 | 
					@endcode | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@sa CoreApp::show, #QTMVVM_INJECT | 
				
			||||
 | 
					*/ | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					/*! | 
				
			||||
 | 
					@fn QtMvvm::ViewModel::onInit | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@param params The parameters to initialize the viewmodel with | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					This method is called by the presenter right after creating the view and reparenting the | 
				
			||||
 | 
					viewmodel to the view. The parameters are the ones that have been passed to the show method | 
				
			||||
 | 
					called to show this viewmodel instance. Reimplement this method if you need to perform | 
				
			||||
 | 
					initializations after beeing assigned to a viewmodel or if you want to support a parametrized | 
				
			||||
 | 
					viewmodel. | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@sa ViewModel::show, ViewModel::showForResult, CoreApp::show | 
				
			||||
 | 
					*/ | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					/*! | 
				
			||||
 | 
					@fn QtMvvm::ViewModel::onResult | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@param requestCode The request code of the show request for the viewmodel that triggered the | 
				
			||||
 | 
					result | 
				
			||||
 | 
					@param result The result passed from the viewmodel | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					When showing a child viewmodel via showForResult(), then the result of that show request is | 
				
			||||
 | 
					reported back via this function. The requestCode is the one that was passed to the | 
				
			||||
 | 
					showForResult() method, and the result what the viewmodel reported back. If the showed | 
				
			||||
 | 
					viewmodel emitted resultReady() before beeing destroyed, this value passed to that signal is | 
				
			||||
 | 
					whats reported as result. If the child viewmodel gets destroyed without ever emitting that | 
				
			||||
 | 
					signal, this method is still called, but with an invalid QVariant as result. | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@sa ViewModel::showForResult, ViewModel::resultReady | 
				
			||||
 | 
					*/ | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					/*! | 
				
			||||
 | 
					@fn QtMvvm::ViewModel::resultReady | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@param result The result that should be passed to the parent viewmodel | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Viewmodels that have been created via showForResult() must emit this signal to report back the | 
				
			||||
 | 
					result of the show request. Doing so will lead to the onResult() method of the showing | 
				
			||||
 | 
					viewmodel beeing with the emitted result as second parameter. Not emitting this signal before | 
				
			||||
 | 
					the viewmodel gets destroy leads to the onResult() beeing called with an invalid result. | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@sa ViewModel::showForResult, ViewModel::onResult | 
				
			||||
 | 
					*/ | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					/*! | 
				
			||||
 | 
					@fn QtMvvm::ViewModel::show(const QVariantHash &) const | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@param params The show parameters to be passed to the created viewmodel | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					This method will send a show request to the core app to show a viewmodel of the given type. | 
				
			||||
 | 
					The parameters are passed to the onInit() method by the presenter after creating and parenting | 
				
			||||
 | 
					the view. The viewmodel will be shown asynchronously, so this method will return immediatly. | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@sa ViewModel::showForResult, ViewModel::onInit, CoreApp::show | 
				
			||||
 | 
					*/ | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					/*! | 
				
			||||
 | 
					@fn QtMvvm::ViewModel::show(const char *, const QVariantHash &) const | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@param viewModelName The name of the viewmodel class to be shown | 
				
			||||
 | 
					@copydetails ViewModel::show(const QVariantHash &) const | 
				
			||||
 | 
					*/ | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					/*! | 
				
			||||
 | 
					@fn QtMvvm::ViewModel::show(const QMetaObject *, const QVariantHash &) const | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@param viewMetaObject The metaobject of the viewmodel class to be shown | 
				
			||||
 | 
					@copydetails ViewModel::show(const QVariantHash &) const | 
				
			||||
 | 
					*/ | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					/*! | 
				
			||||
 | 
					@fn QtMvvm::ViewModel::showForResult(quint32, const QVariantHash &) const | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@param requestCode The code of the show request | 
				
			||||
 | 
					@param params The show parameters to be passed to the created viewmodel | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					This method will send a show request to the core app to show a viewmodel of the given type. | 
				
			||||
 | 
					The parameters are passed to the onInit() method by the presenter after creating and parenting | 
				
			||||
 | 
					the view. The viewmodel will be shown asynchronously, so this method will return immediatly. | 
				
			||||
 | 
					The viewmodel is show for a result, meaning that a result is reported back via onInit() as | 
				
			||||
 | 
					soon as the shown viewmodel emits resultReady() or has been destroyed. The request code is | 
				
			||||
 | 
					passed to the onResult() method in order to identify the show request. | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@sa ViewModel::show, ViewModel::onInit, ViewModel::resultReady, ViewModel::onResult, | 
				
			||||
 | 
					CoreApp::show | 
				
			||||
 | 
					*/ | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					/*! | 
				
			||||
 | 
					@fn QtMvvm::ViewModel::showForResult(quint32, const char *, const QVariantHash &) const | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@param viewModelName The name of the viewmodel class to be shown | 
				
			||||
 | 
					@copydetails ViewModel::showForResult(quint32, const QVariantHash &) const | 
				
			||||
 | 
					*/ | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					/*! | 
				
			||||
 | 
					@fn QtMvvm::ViewModel::showForResult(quint32, const QMetaObject *, const QVariantHash &) const | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@param viewMetaObject The metaobject of the viewmodel class to be shown | 
				
			||||
 | 
					@copydetails ViewModel::showForResult(quint32, const QVariantHash &) const | 
				
			||||
 | 
					*/ | 
				
			||||
					Loading…
					
					
				
		Reference in new issue