AlbumShaper
1.0a3
|
Configuration object manages all user-specific application settings. More...
#include <configuration.h>
Public Member Functions | |
Configuration () | |
Creates configuration variables using default values, then attempts to load settings from disk. | |
~Configuration () | |
Destructor saves settings to disk. | |
bool | loadSettings () |
Loads settings. | |
bool | saveSettings () |
Saves settings. | |
void | setString (QString group, QString key, QString value) |
Sets a setting value, if group does not exist it is created, if setting does not exist it is also created. | |
void | setBool (QString group, QString key, bool val) |
Set bool setting. | |
void | setInt (QString group, QString key, int val) |
Set int setting. | |
QString | getString (QString group, QString key) |
Fetch string setting. | |
bool | getBool (QString group, QString key) |
Fetch bool setting. | |
int | getInt (QString group, QString key) |
Fetch int setting. | |
float | getFloat (QString group, QString key) |
Fetch float setting. | |
double | getDouble (QString group, QString key) |
Fetch double setting. | |
void | resetSetting (QString group, QString key) |
Resets a setting to it's default value. | |
void | removeGroup (QString group) |
Removes an entire group of settings. | |
Static Public Member Functions | |
static bool | constructSettingsDirectory () |
Constructs any necessary directories for loading and saving user settings, returns false if unsuccessful. | |
Private Attributes | |
QString | settingsFilename |
Settings filename. | |
SettingGroup * | firstGroup |
pointer to first group | |
SettingGroup * | lastGroup |
pointer to last group | |
SettingGroup * | curGroup |
pointer to currently selected group |
Configuration object manages all user-specific application settings.
Definition at line 24 of file configuration.h.
Configuration::Configuration | ( | ) |
Creates configuration variables using default values, then attempts to load settings from disk.
Definition at line 68 of file configuration.cpp.
References curGroup, firstGroup, lastGroup, and settingsFilename.
{ //----------------------------- //Determine settings filename //----------------------------- //PLATFORM_SPECIFIC_CODE //Mac OS X #if defined(Q_OS_MACX) settingsFilename = QDir::homeDirPath() + QString("/Library/Preferences/net.sourceforge.albumshaper.xml"); //----------------------------- //Windows #elif defined(Q_OS_WIN) //attempt to get folder location using windows api, if this fails try hard coded path as a last resort QString tmp; if( !getWindowsFolderLocation(LOCAL_SETTINGS_APPLICATION_DATA, tmp) ) { tmp = getenv("USERPROFILE") + QString("/Local Settings/Application Data"); } settingsFilename = QDir::convertSeparators( tmp + "/Album Shaper/settings.xml" ); //----------------------------- //Unix/Linux/BSD #else settingsFilename = QDir::homeDirPath() + QString("/.albumShaper/settings.xml"); #endif //----------------------------- //no groups by default firstGroup = NULL; lastGroup = NULL; //no group selected by default curGroup = NULL; }
Configuration::~Configuration | ( | ) |
Destructor saves settings to disk.
Definition at line 104 of file configuration.cpp.
References firstGroup, and SettingGroup::getNext().
{ //delete all setting groups SettingGroup* cur = firstGroup; while(cur != NULL) { SettingGroup* next = cur->getNext(); delete cur; cur = next; } }
bool Configuration::constructSettingsDirectory | ( | ) | [static] |
Constructs any necessary directories for loading and saving user settings, returns false if unsuccessful.
Definition at line 29 of file configuration.cpp.
Referenced by main().
{ //PLATFORM_SPECIFIC_CODE //----------------------------- //Mac OSX requires no directories to be created #if defined(Q_OS_MACX) return true; //----------------------------- //Windows #elif defined(Q_OS_WIN) bool configDirMade = true; //attempt to get folder location using windows api, if this fails try hard coded path as a last resort QString folderLoc; if( !getWindowsFolderLocation(LOCAL_SETTINGS_APPLICATION_DATA, folderLoc) ) { folderLoc = getenv("USERPROFILE") + QString("/Local Settings/Application Data"); } QDir dataDir( folderLoc ); if(!dataDir.exists("Album Shaper")) { configDirMade = dataDir.mkdir("Album Shaper"); } return configDirMade; //----------------------------- //Unix/Linux/BSD #else bool configDirMade = true; QDir homeDir( QDir::homeDirPath() ); if(!homeDir.exists(".albumShaper")) { configDirMade = homeDir.mkdir(".albumShaper"); } return configDirMade; #endif //----------------------------- }
bool Configuration::getBool | ( | QString | group, |
QString | key | ||
) |
Fetch bool setting.
Definition at line 206 of file configuration.cpp.
References getString().
Referenced by Window::closeEvent(), TitleWidget::loadAlbum(), AlertsWidget::loadSettings(), LoadingSavingWidget::loadSettings(), LayoutSettingsWidget::loadSettings(), main(), TitleWidget::newAlbum(), TitleWidget::proceedWithLoad(), TitleWidget::removeSelectedPhotoDesc(), TitleWidget::revertToSaved(), LayoutSettingsWidget::saveSettings(), and Window::Window().
{ return ( getString(group,key).compare("1") == 0 ); }
double Configuration::getDouble | ( | QString | group, |
QString | key | ||
) |
Fetch double setting.
Definition at line 221 of file configuration.cpp.
References getString().
{ return getString(group,key).toDouble(); }
float Configuration::getFloat | ( | QString | group, |
QString | key | ||
) |
Fetch float setting.
Definition at line 216 of file configuration.cpp.
References getString().
{ return getString(group,key).toFloat(); }
int Configuration::getInt | ( | QString | group, |
QString | key | ||
) |
Fetch int setting.
Definition at line 211 of file configuration.cpp.
References getString().
Referenced by LayoutSettingsWidget::loadSettings(), and main().
{ return getString(group,key).toInt(); }
QString Configuration::getString | ( | QString | group, |
QString | key | ||
) |
Fetch string setting.
Definition at line 158 of file configuration.cpp.
References curGroup, firstGroup, SettingGroup::getName(), SettingGroup::getNext(), and SettingGroup::getValue().
Referenced by SubalbumWidget::addImageAction(), TitleWidget::createTmpDir(), TitleWidget::exportLargeImages(), TitleWidget::exportSmallWebGallery(), getBool(), getDouble(), getFloat(), getInt(), TitleWidget::loadAlbum(), LoadingSavingWidget::loadSettings(), MosaicOptionsDialog::MosaicOptionsDialog(), TitleWidget::newAlbum(), TitleWidget::saveAsAlbum(), LoadingSavingWidget::setDefaults(), TitleWidget::TitleWidget(), and Window::Window().
{ //check if cached group is correct group, if not find correct group if(curGroup == NULL || curGroup->getName().compare(group) != 0) { curGroup = firstGroup; while(curGroup != NULL) { if(curGroup->getName().compare(group) == 0) break; curGroup = curGroup->getNext(); } //if we have not found the group return error value (-1) if(curGroup == NULL) { return "-1"; } } //return setting value from group return curGroup->getValue(key); }
bool Configuration::loadSettings | ( | ) |
Loads settings.
Definition at line 268 of file configuration.cpp.
References curGroup, firstGroup, SettingGroup::getName(), SettingGroup::getNext(), lastGroup, SettingGroup::loadSettings(), SettingGroup::setNext(), and settingsFilename.
Referenced by Window::Window().
{ //----------------------------------- //attempt to load xml settings file and construct dom, if either action failes return false QFile settingsFile( settingsFilename ); if( !settingsFile.open( IO_ReadOnly ) ) return false; QDomDocument DOM; if( !DOM.setContent( &settingsFile ) ) return false; settingsFile.close(); //----------------------------------- //walk though DOM and look for setting nodes. //for each setting fetch, type, key, and value //walk through list of settings and find previous setting //if previous setting found replace value, otherwise add new setting to list QDomElement root = DOM.documentElement(); QDomNode node = root.firstChild(); while( !node.isNull() ) { if( node.isElement() && node.nodeName() == "group" ) { //find group name, if no name found then move on to next group QDomNamedNodeMap attributes = node.attributes(); if(attributes.namedItem("name").isNull()) { node = node.nextSibling(); continue; } //create group if it does not already exist SettingGroup* loadedGroup = NULL; //last used group is the one we are looking for if(curGroup->getName().compare( attributes.namedItem("name").nodeValue()) == 0) loadedGroup = curGroup; //search list of groups else { SettingGroup* cur = firstGroup; while(cur != NULL) { //found it! if(cur->getName().compare( attributes.namedItem("name").nodeValue()) == 0) { loadedGroup = cur; break; } //nope, move on to next group cur = cur->getNext(); } } //if group to be loaded is not found then create it if(loadedGroup == NULL) { loadedGroup = new SettingGroup( attributes.namedItem("name").nodeValue() ); if(firstGroup == NULL) firstGroup = loadedGroup; else lastGroup->setNext(loadedGroup); lastGroup = loadedGroup; } loadedGroup->loadSettings(node); } //move on to next setting node = node.nextSibling(); } //----------------------------------- //loading of settingings was successful return true; }
void Configuration::removeGroup | ( | QString | group | ) |
Removes an entire group of settings.
Definition at line 226 of file configuration.cpp.
References curGroup, firstGroup, SettingGroup::getName(), SettingGroup::getNext(), lastGroup, and SettingGroup::setNext().
Referenced by Window::~Window().
{ //iterate through groups, remove group once found SettingGroup* prev = NULL; curGroup = firstGroup; while(curGroup != NULL) { //found if(curGroup->getName().compare(group) == 0) { //keep handle on group for deletion purposes SettingGroup* temp = curGroup; //fix head if necessary if(curGroup == firstGroup) firstGroup = curGroup->getNext(); //fix tail if necessary if(lastGroup == curGroup) lastGroup = prev; //splice out group if(prev != NULL) prev->setNext( curGroup->getNext() ); //update curGroup pointer so valid curGroup = curGroup->getNext(); //free group delete temp; temp = NULL; //done return; } //update prev and cur pointers and move along prev = curGroup; curGroup = curGroup->getNext(); } }
void Configuration::resetSetting | ( | QString | group, |
QString | key | ||
) |
Resets a setting to it's default value.
Definition at line 182 of file configuration.cpp.
References curGroup, firstGroup, SettingGroup::getName(), SettingGroup::getNext(), and SettingGroup::resetSetting().
Referenced by SubalbumWidget::addImageAction(), TitleWidget::createTmpDir(), TitleWidget::loadAlbum(), MosaicOptionsDialog::MosaicOptionsDialog(), and Window::Window().
{ //check if cached group is correct group, if not find correct group if(curGroup == NULL || curGroup->getName().compare(group) != 0) { curGroup = firstGroup; while(curGroup != NULL) { if(curGroup->getName().compare(group) == 0) break; curGroup = curGroup->getNext(); } //if we have not found the group return error value (-1) if(curGroup == NULL) { return; } } //return setting value from group curGroup->resetSetting(key); }
bool Configuration::saveSettings | ( | ) |
Saves settings.
Definition at line 345 of file configuration.cpp.
References ALBUMSHAPER_VERSION, curGroup, firstGroup, SettingGroup::getNext(), SettingGroup::saveSettings(), and settingsFilename.
Referenced by Window::~Window().
{ //create/open html file QFile file( settingsFilename ); if(file.open(IO_WriteOnly)) { //----- QTextStream stream; stream.setDevice( &file ); stream.setEncoding( QTextStream::UnicodeUTF8 ); //write header stream << "<settings app=\"Album Shaper\" version=\"" << ALBUMSHAPER_VERSION << "\">\n"; //iterate over every group curGroup = firstGroup; while(curGroup != NULL) { curGroup->saveSettings( stream ); curGroup = curGroup->getNext(); } //end xml file stream << "</settings>\n"; //success saving settings! file.close(); return true; } //opening file for saving failed file.close(); return false; }
void Configuration::setBool | ( | QString | group, |
QString | key, | ||
bool | val | ||
) |
Set bool setting.
Definition at line 148 of file configuration.cpp.
References setString().
Referenced by main(), AlertsWidget::saveSettings(), LoadingSavingWidget::saveSettings(), LayoutSettingsWidget::saveSettings(), MiscSettings::setDefaults(), AlertsWidget::setDefaults(), LoadingSavingWidget::setDefaults(), and LayoutSettingsWidget::setDefaults().
{ setString( group, key, (val ? "1" : "0" ) ); }
void Configuration::setInt | ( | QString | group, |
QString | key, | ||
int | val | ||
) |
Set int setting.
Definition at line 153 of file configuration.cpp.
References setString().
Referenced by LayoutSettingsWidget::saveSettings(), MiscSettings::setDefaults(), LoadingSavingWidget::setDefaults(), LayoutSettingsWidget::setDefaults(), and Window::~Window().
{ setString( group, key, QString("%1").arg(val) ); }
void Configuration::setString | ( | QString | group, |
QString | key, | ||
QString | value | ||
) |
Sets a setting value, if group does not exist it is created, if setting does not exist it is also created.
Definition at line 116 of file configuration.cpp.
References curGroup, firstGroup, SettingGroup::getName(), SettingGroup::getNext(), lastGroup, SettingGroup::setNext(), and SettingGroup::setValue().
Referenced by SubalbumWidget::addImageAction(), TitleWidget::loadAlbum(), TitleWidget::saveAlbum(), TitleWidget::saveAsAlbum(), LoadingSavingWidget::saveSettings(), setBool(), AlertsWidget::setDefaults(), LoadingSavingWidget::setDefaults(), LayoutSettingsWidget::setDefaults(), setInt(), and Window::~Window().
{ //check if cached group has same name, if not find group, create it if group does not exist if(curGroup == NULL || curGroup->getName().compare(group) != 0) { curGroup = firstGroup; while(curGroup != NULL) { if(curGroup->getName().compare(group) == 0) break; curGroup = curGroup->getNext(); } //if we have not found the group create it and add to list if(curGroup == NULL) { //create new group curGroup = new SettingGroup(group); //add group to list if(firstGroup == NULL) firstGroup = curGroup; else lastGroup->setNext(curGroup); lastGroup = curGroup; } } //set setting value curGroup->setValue(key, value); }
SettingGroup* Configuration::curGroup [private] |
pointer to currently selected group
Definition at line 84 of file configuration.h.
Referenced by Configuration(), getString(), loadSettings(), removeGroup(), resetSetting(), saveSettings(), and setString().
SettingGroup* Configuration::firstGroup [private] |
pointer to first group
Definition at line 78 of file configuration.h.
Referenced by Configuration(), getString(), loadSettings(), removeGroup(), resetSetting(), saveSettings(), setString(), and ~Configuration().
SettingGroup* Configuration::lastGroup [private] |
pointer to last group
Definition at line 81 of file configuration.h.
Referenced by Configuration(), loadSettings(), removeGroup(), and setString().
QString Configuration::settingsFilename [private] |
Settings filename.
Definition at line 75 of file configuration.h.
Referenced by Configuration(), loadSettings(), and saveSettings().