20 #define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1
29 #include <qtextstream.h>
34 static const int _strBufferSize = 64;
64 const QString& currentDirectory)
79 std::vector<QString> nodenames;
83 nodenames.push_back(key.first);
93 defaultSettings.
readXML(filePath);
98 for (
int i = 0; i < nodenames.size(); i++)
100 if (!
exists(nodenames[i]))
111 for (
int i = 0; i < nbParams; i++)
135 QFile file(fileName);
136 if (!file.open(QIODevice::ReadOnly))
138 std::cerr <<
"\nError when open '" << fileName.toLatin1().data() <<
"'\n";
144 if (!doc.setContent(&file, &errorMsg, &errorLine, &errorColumn))
146 std::cerr <<
"\nError during parsing: '" << fileName.toLatin1().data() <<
"'\n"
147 <<
"error message is: \n"
148 << errorMsg.toLatin1().constData() <<
"\n"
149 <<
"in line:" << errorLine <<
" in column:" << errorColumn << std::endl;
155 QDomDocument domDocument = doc;
158 QDomElement rootElement = domDocument.documentElement();
161 QDomNodeList nodeList = rootElement.childNodes();
165 int nodecount = nodeList.length();
168 for (
int i = 0; i < nodecount; i++)
170 QDomNode curElem = nodeList.item(i);
172 if (curElem.isElement())
175 QString dir = curElem.nodeName();
177 QDomNodeList nodeList2 = curElem.childNodes();
179 int nodecount2 = nodeList2.length();
181 for (
int j = 0; j < nodecount2; j++)
183 QDomElement curElem2 = nodeList2.item(j).toElement();
188 QString
name = curElem2.attribute(
"key");
189 QString value = curElem2.attribute(
"value");
209 QDomImplementation domImpl;
212 QString systemId =
"";
214 QDomDocumentType docType = domImpl.createDocumentType(qualifiedName, QString(), systemId);
216 QDomDocument domDocument = domImpl.createDocument(QString(),
220 QDomElement rootElement = domDocument.documentElement();
226 QString dir = (*iter).first;
229 QDomElement dirElem = domDocument.createElement(dir);
231 rootElement.appendChild(dirElem);
240 dirElem.appendChild(prefElem);
243 prefElem.setAttribute(
"key", ((*iter2).first));
244 prefElem.setAttribute(
"value", ((*iter2).second));
248 QFile file(fileName);
249 if (!file.open(QIODevice::WriteOnly))
254 QTextStream ts(&file);
255 ts.setEncoding(QStringConverter::Utf8);
256 ts << domDocument.toString();
333 const int& sizeArray)
340 for (
int i = 0; i < sizeArray; i++)
367 QString* strs =
new QString[sizeArray];
369 for (
int i = 0; i < sizeArray; i++)
377 #if TY_ARCH_TYPE == TY_ARCHITECTURE_64
400 #if TY_COMPILER == TY_COMPILER_MSVC
455 int res = str.toFloat();
482 if (sValue.isEmpty())
538 const int& sizeX,
const int& sizeY)
645 #if TY_ARCH_TYPE == TY_ARCHITECTURE_64
648 char buffer[_strBufferSize];
649 sprintf(buffer,
"%d", val);
656 char buffer[_strBufferSize];
657 sprintf(buffer,
"%zd", val);
661 #if TY_COMPILER == TY_COMPILER_MSVC
664 char buffer[_strBufferSize];
665 sprintf(buffer,
"%lu", val);
673 char buffer[_strBufferSize];
674 sprintf(buffer,
"%d", val);
681 char buffer[_strBufferSize];
682 sprintf(buffer,
"%lu", val);
690 char buffer[_strBufferSize];
691 sprintf(buffer,
"%d", val);
698 char buffer[_strBufferSize];
699 char* saved_locale = std::setlocale(LC_NUMERIC,
"en_US.UTF-8");
700 sprintf(buffer,
"%f", val);
701 std::setlocale(LC_NUMERIC, saved_locale);
708 char buffer[_strBufferSize];
709 char* saved_locale = std::setlocale(LC_NUMERIC,
"en_US.UTF-8");
710 sprintf(buffer,
"%f", val);
711 std::setlocale(LC_NUMERIC, saved_locale);
Systeme de gestion des preferences.
QString _xmlParamNodeName
Nom des noeuds des parametres du fichier XML.
void loadDefault(const char *defaultParams[][2], int nbParams)
Charge le tableau associatif preference/valeur avec les valeurs par defaut.
void getColor(const QString &pref, float &r, float &g, float &b)
Charge les composantes RGB d'une couleur, en float.Utilise la categorie courante.
void setDouble(const QString &pref, const double &value)
Met a jour la valeur associee a une preference.
virtual ~OPreferenceManager()
ODirMap _prefDirs
Tableau associatif parametre/valeur.
static QString doubleToString(const double &val)
QString getDirectory(const QString &pref)
Recherche le nom de la categorie pour une preference donnee.
void setBool(const QString &pref, const bool &value)
Met a jour la valeur associee a une preference. Si la preference n'existe pas, celle-ci est ajoutee a...
static QString floatToString(const float &val)
void setString(const QString &pref, const QString &value)
Met a jour la valeur associee a une preference.
static QString intToString(const int &val)
double getDouble(const QString &pref)
Recherche une ressource et retourne sa valeur associee. Utilise la categorie courante.
float getFloat(const QString &pref)
Recherche une ressource et retourne sa valeur associee. Utilise la categorie courante.
QString _curDir
Le nom de la categorie courante.
QString _xmlRootNodeName
Nom du noeud root du fichier XML.
void setUInt(const QString &pref, const unsigned int &value)
void completePreferences(QString filePath)
Complete les préférences utilisateur manquante avec les valeurs par défaut.
static QString uintToString(const unsigned int &val)
std::vector< QString > getPreferenceNames()
bool writeXML(QString fileName)
Enregistre le fichier de preference au format XML.
bool getBool(const QString &pref)
Recherche une ressource et retourne sa valeur associee. Utilise la categorie courante.
void setFrame(const QString &pref, const int &posX, const int &posY, const int &sizeX, const int &sizeY)
Sauvegarde la position et la taille d'une fenetre.
int getInt(const QString &pref)
Recherche une ressource et retourne sa valeur associee.Utilise la categorie courante.
void setFloat(const QString &pref, const float &value)
Met a jour la valeur associee a une preference.
void setXMLParamNodeName(QString name)
Change le nom des noeuds de parametres dans le fichier XML.
void setXMLRootNodeName(QString name)
Change le nom du noeud root du fichier XML.
bool readXML(QString fileName)
Ouvre un fichier de preference en XML et le parcours pour mettre a jour la tableau de preferences.
QString * getStringArray(const QString &pref, int &sizeArray)
Recherche une ressource et retourne son tableau de valeurs associees. Utilise la categorie courante.
void getPoint(const QString &pref, int &x, int &y)
Charge les coordonnees en pixel d'un point. Utilise la categorie courante.
int _nPreferenceModificationStamp
void setColor(const QString &pref, const float &r, const float &g, const float &b)
Sauvegarde les composantes RGB d'une couleur, en float.Utilise la categorie courante.
void setStringArray(const QString &pref, const QString *valueArray, const int &sizeArray)
Met a jour un tableau de valeurs associees a une preference.
void reset()
Vide le tableau associatif preference/valeur.
bool exists(const QString &pref)
Test si une preference est presente dans le tableau de preferences. Utilise la categorie courante.
void setInt(const QString &pref, const int &value)
Met a jour la valeur associee a une preference.
void setPoint(const QString &pref, const int &x, const int &y)
Sauvegarde les coordonnees en pixel d'un point.
void setCurrentDirectory(QString dir)
Defini la categorie courante pour la lecture et l'ecriture de parametres.
void getFrame(const QString &pref, int &posX, int &posY, int &sizeX, int &sizeY)
Charge la position et la taille d'une fenetre. Utilise la categorie courante.
QString getString(const QString &pref)
Recherche une ressource et retourne sa valeur associee. Utilise la categorie courante.
std::map< QString, OPrefMap >::iterator ODirMapIt
std::map< QString, OPrefMap > _dirMap
std::map< QString, QString >::iterator OPrefMapIt