Here is the class I use. Works decently well on Symbian for me.
Source:
Code:
/*
* ApplicationPrefs.cpp
*
* Created on: Dec 31, 2009
* Author: TAMHAN
*/
#include <QDir>
#include <QFile>
#include "ApplicationPrefs.h"
bool ApplicationPrefs::playMusic;
hintparamt ApplicationPrefs::hintsettings;
highscoretype ApplicationPrefs::highscores[6];
int ApplicationPrefs::volume;
ApplicationPrefs::ApplicationPrefs()
{
// TODO Auto-generated constructor stub
}
ApplicationPrefs::~ApplicationPrefs()
{
// TODO Auto-generated destructor stub
}
void ApplicationPrefs::initPrefs()
{
QFile prefFile(QDir::currentPath() + "/prefs.tmgn");
if(!prefFile.open(QIODevice::ReadOnly))
{
defaultPrefs();
return;
}
QDataStream in(&prefFile);
quint32 version;
in >> version; // not needed for this v
in.readRawData((char*) ApplicationPrefs::highscores, sizeof(ApplicationPrefs::highscores[0])*6);
in.readRawData((char*) &ApplicationPrefs::hintsettings, sizeof(ApplicationPrefs::hintsettings));
in >> ApplicationPrefs::playMusic;
in >> ApplicationPrefs::volume;
prefFile.close();
}
void ApplicationPrefs::savePrefs()
{
QFile prefFile(QDir::currentPath() +"/prefs.tmgn");
if(!prefFile.open(QIODevice::WriteOnly))
{
defaultPrefs();
return;
}
QDataStream out(&prefFile);
quint32 version=1;
out << version; // not needed for this v
out.writeRawData((char*) ApplicationPrefs::highscores, sizeof(ApplicationPrefs::highscores[0])*6);
out.writeRawData((char*) &ApplicationPrefs::hintsettings, sizeof(ApplicationPrefs::hintsettings));
out << ApplicationPrefs::playMusic;
out << ApplicationPrefs::volume;
prefFile.close();
}
void ApplicationPrefs::defaultPrefs()
{//Complex structure needed for TR while keeping old char prefs intact
QByteArray esyArray=tr("ESY").toLatin1();
QByteArray vsyArray=tr("VSY").toLatin1();
QByteArray emperorArray=tr("The emperor").toLatin1();
QByteArray kingArray=tr("The king").toLatin1();
QByteArray lordArray=tr("The lord").toLatin1();
QByteArray commanderArray=tr("The commander").toLatin1();
QByteArray controllerArray=tr("The controller").toLatin1();
QByteArray stArray=tr("The subject teacher").toLatin1();
strcpy(ApplicationPrefs::highscores[0].difficulty,esyArray.data());
strcpy(ApplicationPrefs::highscores[0].name,emperorArray.data());
ApplicationPrefs::highscores[0].secs=30*15;
strcpy(ApplicationPrefs::highscores[1].difficulty,esyArray.data());
strcpy(ApplicationPrefs::highscores[1].name,kingArray.data());
ApplicationPrefs::highscores[1].secs=30*20;
strcpy(ApplicationPrefs::highscores[2].difficulty,esyArray.data());
strcpy(ApplicationPrefs::highscores[2].name,lordArray.data());
ApplicationPrefs::highscores[2].secs=30*25;
strcpy(ApplicationPrefs::highscores[3].difficulty,esyArray.data());
strcpy(ApplicationPrefs::highscores[3].name,commanderArray.data());
ApplicationPrefs::highscores[3].secs=30*30;
strcpy(ApplicationPrefs::highscores[4].difficulty,esyArray.data());
strcpy(ApplicationPrefs::highscores[4].name,controllerArray.data());
ApplicationPrefs::highscores[4].secs=30*35;
strcpy(ApplicationPrefs::highscores[5].difficulty,vsyArray.data());
strcpy(ApplicationPrefs::highscores[5].name,stArray.data());
ApplicationPrefs::highscores[5].secs=30*50;
ApplicationPrefs::playMusic=true;
ApplicationPrefs::volume=70;
}