Qt and Symbian settings management comparison
This article provides a comparison of settings management between Symbian OS and Qt. Sample code for creating, setting, and getting settings values is also given below.
Settings are stored in form of key/value pairs in both Symbian and Qt. However, there are differences in the paths where the settings files are stored in Symbian OS and Qt.
|Settings mechanism||Central Repository||Conf file|
|Key creation||Settings (keys) are predefined through xls or confml. A default value is assigned to them.||Settings (keys) are created dynamically from the application and stored in the .conf file.|
|Storage format of settings file||Platform creates a .cre file where the values set by the application are stored/restored. The .cre file is not in human readable format.||No .cre file generated. Directly stored in human readable .conf file.|
|Organisation of settings keys||No hierarchy of settings.||There is a hierarchy that can be maintained in keys. For example, all settings pertaining to UI can be put as subkeys under the main UI key.|
|Accessing settings that are stored in platform-specific format||Possible to access platform/other application settings because all are in .cre format.||Possible to access keys/values stored in central repository through extension classes such as XQSettingsManager.|
|Creating instance of setting class||CRepository::NewL||QSettings settings("CompName", "AppName"); A directory is created which has CompName and a conf file is created in the directory with AppName.|
|Setting a value||CRepository::Set||QSettings::setValue|
|Getting a value||CRepository::Get||QSettings::value<tt>|
|Notifications for change in settings||Possible through class <tt style="font-family:monospace;">CCenRepNotifyHandler.||No direct class to monitor changes in values of QSettings keys. Possible to monitor cenrep key changes through XQSettingsManager and their associated classes.|
In a Qt application you can use either QSettings or continue to use cenrep (through the CRepository class or preferably Mobile Extensions Archived:Mobile Extensions#13. Settings Manager API). The QSettings class provides persistent platform-independent platform settings.
The following example illustrates the creation of settings in Qt.
//The company name and application name need to be passed as a parameter.
//The path of storing the settings is based on these input parameters
QSettings setting(“Company", "MyApplication");
//Setting an int value
QVariant value = 10; //or we can also assign int value = 10
//Setting a string value
QString string (“This is sample”); //or we can also assign QVariant string(“This is sample”)
//Getting an int value;
int settingval = setting.value("Engine/TimeOutPeriod ").toInt();
//Getting a string value
QString title = setting.value("Engine/MessageTitle ").toString();