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.
00069 { 00070 //----------------------------- 00071 //Determine settings filename 00072 //----------------------------- 00073 00074 //PLATFORM_SPECIFIC_CODE 00075 00076 //Mac OS X 00077 #if defined(Q_OS_MACX) 00078 settingsFilename = QDir::homeDirPath() + QString("/Library/Preferences/net.sourceforge.albumshaper.xml"); 00079 //----------------------------- 00080 //Windows 00081 #elif defined(Q_OS_WIN) 00082 //attempt to get folder location using windows api, if this fails try hard coded path as a last resort 00083 QString tmp; 00084 if( !getWindowsFolderLocation(LOCAL_SETTINGS_APPLICATION_DATA, tmp) ) 00085 { 00086 tmp = getenv("USERPROFILE") + QString("/Local Settings/Application Data"); 00087 } 00088 settingsFilename = QDir::convertSeparators( tmp + "/Album Shaper/settings.xml" ); 00089 //----------------------------- 00090 //Unix/Linux/BSD 00091 #else 00092 settingsFilename = QDir::homeDirPath() + QString("/.albumShaper/settings.xml"); 00093 #endif 00094 //----------------------------- 00095 00096 //no groups by default 00097 firstGroup = NULL; 00098 lastGroup = NULL; 00099 00100 //no group selected by default 00101 curGroup = NULL; 00102 }
Configuration::~Configuration | ( | ) |
Destructor saves settings to disk.
Definition at line 104 of file configuration.cpp.
References firstGroup, and SettingGroup::getNext().
00105 { 00106 //delete all setting groups 00107 SettingGroup* cur = firstGroup; 00108 while(cur != NULL) 00109 { 00110 SettingGroup* next = cur->getNext(); 00111 delete cur; 00112 cur = next; 00113 } 00114 }
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().
00030 { 00031 //PLATFORM_SPECIFIC_CODE 00032 00033 //----------------------------- 00034 //Mac OSX requires no directories to be created 00035 #if defined(Q_OS_MACX) 00036 return true; 00037 //----------------------------- 00038 //Windows 00039 #elif defined(Q_OS_WIN) 00040 bool configDirMade = true; 00041 00042 //attempt to get folder location using windows api, if this fails try hard coded path as a last resort 00043 QString folderLoc; 00044 if( !getWindowsFolderLocation(LOCAL_SETTINGS_APPLICATION_DATA, folderLoc) ) 00045 { 00046 folderLoc = getenv("USERPROFILE") + QString("/Local Settings/Application Data"); 00047 } 00048 QDir dataDir( folderLoc ); 00049 if(!dataDir.exists("Album Shaper")) 00050 { 00051 configDirMade = dataDir.mkdir("Album Shaper"); 00052 } 00053 return configDirMade; 00054 //----------------------------- 00055 //Unix/Linux/BSD 00056 #else 00057 bool configDirMade = true; 00058 QDir homeDir( QDir::homeDirPath() ); 00059 if(!homeDir.exists(".albumShaper")) 00060 { 00061 configDirMade = homeDir.mkdir(".albumShaper"); 00062 } 00063 return configDirMade; 00064 #endif 00065 //----------------------------- 00066 }
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(), LoadingSavingWidget::loadSettings(), LayoutSettingsWidget::loadSettings(), AlertsWidget::loadSettings(), main(), TitleWidget::newAlbum(), TitleWidget::proceedWithLoad(), TitleWidget::removeSelectedPhotoDesc(), TitleWidget::revertToSaved(), LayoutSettingsWidget::saveSettings(), and Window::Window().
00207 { 00208 return ( getString(group,key).compare("1") == 0 ); 00209 }
double Configuration::getDouble | ( | QString | group, | |
QString | key | |||
) |
Fetch double setting.
Definition at line 221 of file configuration.cpp.
References getString().
00222 { 00223 return getString(group,key).toDouble(); 00224 }
float Configuration::getFloat | ( | QString | group, | |
QString | key | |||
) |
Fetch float setting.
Definition at line 216 of file configuration.cpp.
References getString().
00217 { 00218 return getString(group,key).toFloat(); 00219 }
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().
00212 { 00213 return getString(group,key).toInt(); 00214 }
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().
00159 { 00160 //check if cached group is correct group, if not find correct group 00161 if(curGroup == NULL || curGroup->getName().compare(group) != 0) 00162 { 00163 curGroup = firstGroup; 00164 while(curGroup != NULL) 00165 { 00166 if(curGroup->getName().compare(group) == 0) 00167 break; 00168 curGroup = curGroup->getNext(); 00169 } 00170 00171 //if we have not found the group return error value (-1) 00172 if(curGroup == NULL) 00173 { 00174 return "-1"; 00175 } 00176 } 00177 00178 //return setting value from group 00179 return curGroup->getValue(key); 00180 }
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().
00269 { 00270 //----------------------------------- 00271 //attempt to load xml settings file and construct dom, if either action failes return false 00272 QFile settingsFile( settingsFilename ); 00273 if( !settingsFile.open( IO_ReadOnly ) ) 00274 return false; 00275 00276 QDomDocument DOM; 00277 if( !DOM.setContent( &settingsFile ) ) 00278 return false; 00279 00280 settingsFile.close(); 00281 00282 //----------------------------------- 00283 //walk though DOM and look for setting nodes. 00284 //for each setting fetch, type, key, and value 00285 //walk through list of settings and find previous setting 00286 //if previous setting found replace value, otherwise add new setting to list 00287 QDomElement root = DOM.documentElement(); 00288 QDomNode node = root.firstChild(); 00289 00290 while( !node.isNull() ) 00291 { 00292 if( node.isElement() && node.nodeName() == "group" ) 00293 { 00294 //find group name, if no name found then move on to next group 00295 QDomNamedNodeMap attributes = node.attributes(); 00296 if(attributes.namedItem("name").isNull()) 00297 { 00298 node = node.nextSibling(); 00299 continue; 00300 } 00301 00302 //create group if it does not already exist 00303 SettingGroup* loadedGroup = NULL; 00304 00305 //last used group is the one we are looking for 00306 if(curGroup->getName().compare( attributes.namedItem("name").nodeValue()) == 0) 00307 loadedGroup = curGroup; 00308 //search list of groups 00309 else 00310 { 00311 SettingGroup* cur = firstGroup; 00312 while(cur != NULL) 00313 { 00314 //found it! 00315 if(cur->getName().compare( attributes.namedItem("name").nodeValue()) == 0) 00316 { 00317 loadedGroup = cur; 00318 break; 00319 } 00320 //nope, move on to next group 00321 cur = cur->getNext(); 00322 } 00323 } 00324 //if group to be loaded is not found then create it 00325 if(loadedGroup == NULL) 00326 { 00327 loadedGroup = new SettingGroup( attributes.namedItem("name").nodeValue() ); 00328 if(firstGroup == NULL) 00329 firstGroup = loadedGroup; 00330 else 00331 lastGroup->setNext(loadedGroup); 00332 lastGroup = loadedGroup; 00333 } 00334 00335 loadedGroup->loadSettings(node); 00336 } 00337 //move on to next setting 00338 node = node.nextSibling(); 00339 } 00340 //----------------------------------- 00341 //loading of settingings was successful 00342 return true; 00343 }
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().
00227 { 00228 //iterate through groups, remove group once found 00229 SettingGroup* prev = NULL; 00230 curGroup = firstGroup; 00231 while(curGroup != NULL) 00232 { 00233 //found 00234 if(curGroup->getName().compare(group) == 0) 00235 { 00236 //keep handle on group for deletion purposes 00237 SettingGroup* temp = curGroup; 00238 00239 //fix head if necessary 00240 if(curGroup == firstGroup) 00241 firstGroup = curGroup->getNext(); 00242 00243 //fix tail if necessary 00244 if(lastGroup == curGroup) 00245 lastGroup = prev; 00246 00247 //splice out group 00248 if(prev != NULL) 00249 prev->setNext( curGroup->getNext() ); 00250 00251 //update curGroup pointer so valid 00252 curGroup = curGroup->getNext(); 00253 00254 //free group 00255 delete temp; 00256 temp = NULL; 00257 00258 //done 00259 return; 00260 } 00261 00262 //update prev and cur pointers and move along 00263 prev = curGroup; 00264 curGroup = curGroup->getNext(); 00265 } 00266 }
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().
00183 { 00184 //check if cached group is correct group, if not find correct group 00185 if(curGroup == NULL || curGroup->getName().compare(group) != 0) 00186 { 00187 curGroup = firstGroup; 00188 while(curGroup != NULL) 00189 { 00190 if(curGroup->getName().compare(group) == 0) 00191 break; 00192 curGroup = curGroup->getNext(); 00193 } 00194 00195 //if we have not found the group return error value (-1) 00196 if(curGroup == NULL) 00197 { 00198 return; 00199 } 00200 } 00201 00202 //return setting value from group 00203 curGroup->resetSetting(key); 00204 }
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().
00346 { 00347 //create/open html file 00348 QFile file( settingsFilename ); 00349 if(file.open(IO_WriteOnly)) 00350 { 00351 //----- 00352 QTextStream stream; 00353 stream.setDevice( &file ); 00354 stream.setEncoding( QTextStream::UnicodeUTF8 ); 00355 00356 //write header 00357 stream << "<settings app=\"Album Shaper\" version=\"" << ALBUMSHAPER_VERSION << "\">\n"; 00358 00359 //iterate over every group 00360 curGroup = firstGroup; 00361 while(curGroup != NULL) 00362 { 00363 curGroup->saveSettings( stream ); 00364 curGroup = curGroup->getNext(); 00365 } 00366 00367 //end xml file 00368 stream << "</settings>\n"; 00369 00370 //success saving settings! 00371 file.close(); 00372 return true; 00373 } 00374 00375 //opening file for saving failed 00376 file.close(); 00377 return false; 00378 }
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(), LoadingSavingWidget::saveSettings(), LayoutSettingsWidget::saveSettings(), AlertsWidget::saveSettings(), MiscSettings::setDefaults(), LoadingSavingWidget::setDefaults(), LayoutSettingsWidget::setDefaults(), and AlertsWidget::setDefaults().
00149 { 00150 setString( group, key, (val ? "1" : "0" ) ); 00151 }
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().
00154 { 00155 setString( group, key, QString("%1").arg(val) ); 00156 }
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(), LoadingSavingWidget::setDefaults(), LayoutSettingsWidget::setDefaults(), AlertsWidget::setDefaults(), setInt(), and Window::~Window().
00117 { 00118 //check if cached group has same name, if not find group, create it if group does not exist 00119 if(curGroup == NULL || curGroup->getName().compare(group) != 0) 00120 { 00121 curGroup = firstGroup; 00122 while(curGroup != NULL) 00123 { 00124 if(curGroup->getName().compare(group) == 0) 00125 break; 00126 curGroup = curGroup->getNext(); 00127 } 00128 00129 //if we have not found the group create it and add to list 00130 if(curGroup == NULL) 00131 { 00132 //create new group 00133 curGroup = new SettingGroup(group); 00134 00135 //add group to list 00136 if(firstGroup == NULL) 00137 firstGroup = curGroup; 00138 else 00139 lastGroup->setNext(curGroup); 00140 lastGroup = curGroup; 00141 } 00142 } 00143 00144 //set setting value 00145 curGroup->setValue(key, value); 00146 }
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().