|
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().
1.7.5.1