La classe CustomElement utilise desormais la classe NamesList pour gerer ses noms

git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@93 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
xavierqet 2007-04-16 20:38:58 +00:00
parent 8cb3499469
commit 0472392977
5 changed files with 32 additions and 42 deletions

View File

@ -94,33 +94,15 @@ CustomElement::CustomElement(QString &nom_fichier, QGraphicsItem *qgi, Diagram *
t.setJoinStyle(Qt::MiterJoin);
qp.setPen(t);
// recupere les deux premiers caracteres de la locale en cours du systeme
QString system_language = QLocale::system().name().left(2);
// extrait les noms de la definition XML
names.fromXml(racine);
// au depart, le nom de l'element est celui du fichier le decrivant
bool name_found = false;
QString name_elmt = infos_file.baseName();
// parcours des enfants de la definition : noms et parties du dessin
// parcours des enfants de la definition : parties du dessin
int nb_elements_parses = 0;
for (QDomNode node = racine.firstChild() ; !node.isNull() ; node = node.nextSibling()) {
QDomElement elmts = node.toElement();
if (elmts.isNull()) continue;
if (elmts.tagName() == "names") {
// gestion des noms de l'element
if (name_found) continue;
for (QDomNode n = node.firstChild() ; !n.isNull() ; n = n.nextSibling()) {
QDomElement qde = n.toElement();
if (qde.isNull() || qde.tagName() != "name" || !qde.hasAttribute("lang")) continue;
if (qde.attribute("lang") == system_language) {
name_elmt = qde.text();
name_found = true;
break;
} else if (qde.attribute("lang") == "en") {
name_elmt = qde.text();
}
}
} else if (elmts.tagName() == "description") {
if (elmts.tagName() == "description") {
// gestion de la description graphique de l'element
// = parcours des differentes parties du dessin
for (QDomNode n = node.firstChild() ; !n.isNull() ; n = n.nextSibling()) {
@ -136,9 +118,6 @@ CustomElement::CustomElement(QString &nom_fichier, QGraphicsItem *qgi, Diagram *
}
}
// on garde le nom trouve
priv_nom = name_elmt;
// fin du dessin
qp.end();

View File

@ -2,6 +2,7 @@
#define ELEMENTPERSO_H
#include "fixedelement.h"
#include <QtGui>
#include "nameslist.h"
/**
Cette classe represente un element electrique. Elle est utilisable
comme un element fixe. La difference est que l'element perso lit
@ -20,7 +21,7 @@ class CustomElement : public FixedElement {
// attributs
private:
int elmt_etat; // contient le code d'erreur si l'instanciation a echoue ou 0 si l'instanciation s'est bien passe
QString priv_nom;
NamesList names;
QString nomfichier;
QPicture dessin;
int nb_terminals;
@ -96,7 +97,7 @@ inline int CustomElement::etat() const {
@return Le nom de l'element
*/
inline QString CustomElement::nom() const {
return(priv_nom);
return(names.name(QFileInfo(nomfichier).baseName()));
}
#endif

View File

@ -65,24 +65,10 @@ void ElementsCategory::loadNames() {
/**
Methode permettant d'obtenir le nom affichable de cette categorie.
Par ordre de preference, on prendra :
- le nom dans la langue du systeme
- le nom en anglais
- le nom du dossier
@return Le nom affichable de la categorie
*/
QString ElementsCategory::name() const {
// recupere les deux premiers caracteres de la locale en cours du systeme
QString system_language = QLocale::system().name().left(2);
QString category_name;
if (category_names[system_language] != QString()) {
category_name = category_names[system_language];
} else if (category_names["en"] != QString()) {
category_name = category_names["en"];
} else {
category_name = dirName();
}
return(category_name);
return(category_names.name(dirName()));
}
/**

View File

@ -126,3 +126,26 @@ QDomElement NamesList::toXml(QDomDocument &xml_document) const {
}
return(names_elmt);
}
/**
Retourne le nom approprie en fonction de la langue du systeme
Par ordre de preference, on prendra :
- le nom dans la langue du systeme
- le nom en anglais
- le nom du dossier
@param fallback_name Le nom a retourner si aucun nom approprie n'est trouve
@return Le nom approprie en fonction de la langue du systeme
*/
const QString &NamesList::name(const QString &fallback_name) const {
// recupere les deux premiers caracteres de la locale en cours du systeme
QString system_language = QLocale::system().name().left(2);
QString *returned_name;
if (hash_names[system_language] != QString()) {
returned_name = new QString(hash_names[system_language]);
} else if (hash_names["en"] != QString()) {
returned_name = new QString(hash_names["en"]);
} else {
returned_name = new QString(fallback_name);
}
return(*returned_name);
}

View File

@ -23,6 +23,7 @@ class NamesList {
int count() const;
QString &operator[](const QString &);
const QString operator[](const QString &) const;
const QString &name(const QString & = QString()) const;
// methodes relatives a XML
void fromXml(const QDomElement &);