Debut de gestion des categories sous forme de dossiers

git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@19 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
xavierqet 2006-11-11 18:25:42 +00:00
parent dd3a9f8894
commit 0f3b2926bc
4 changed files with 70 additions and 23 deletions

View File

@ -20,26 +20,20 @@ PanelAppareils::PanelAppareils(QWidget *parent) : QTreeWidget(parent) {
// taille des elements // taille des elements
setIconSize(QSize(50, 50)); setIconSize(QSize(50, 50));
QTreeWidgetItem *elmts_qet = new QTreeWidgetItem(this, QStringList(tr("Collection QET"))); // chargement des elements de la collection QET
elmts_qet -> setExpanded(true); ajouterDossier(invisibleRootItem(), QETApp::commonElementsDir(), tr("Collection QET"));
QTreeWidgetItem *elmts_perso = new QTreeWidgetItem(this, QStringList(tr("Collection utilisateur")));
elmts_perso -> setExpanded(true);
// remplissage de la liste // chargement des elements de la collection utilisateur
QDir dossier_elmts_qet(QETApp::commonElementsDir()); ajouterDossier(invisibleRootItem(), QETApp::customElementsDir(), tr("Collection utilisateur"));
QDir dossier_elmts_perso(QETApp::customElementsDir());
QStringList filtres("*.elmt");
QStringList fichiers1 = dossier_elmts_qet.entryList(filtres, QDir::Files, QDir::Name);
foreach(QString fichier, fichiers1) ajouterFichier(elmts_qet, QETApp::commonElementsDir()+fichier);
QStringList fichiers2 = dossier_elmts_perso.entryList(filtres, QDir::Files, QDir::Name);
foreach(QString fichier, fichiers2) ajouterFichier(elmts_perso, QETApp::customElementsDir()+fichier);
// force du noir sur une alternance de blanc (comme le schema) et de bleu clair // force du noir sur une alternance de blanc (comme le schema) et de gris
// clair, avec du blanc sur bleu pas trop fonce pour la selection
QPalette qp = palette(); QPalette qp = palette();
setAlternatingRowColors(true);
qp.setColor(QPalette::Text, Qt::black); qp.setColor(QPalette::Text, Qt::black);
qp.setColor(QPalette::Base, Qt::white); qp.setColor(QPalette::Base, Qt::white);
//qp.setColor(QPalette::AlternateBase, QColor(240, 255, 255)); qp.setColor(QPalette::AlternateBase, QColor("#e8e8e8"));
qp.setColor(QPalette::Highlight, QColor("#678db2"));
qp.setColor(QPalette::HighlightedText, Qt::white);
setPalette(qp); setPalette(qp);
} }
@ -93,6 +87,56 @@ void PanelAppareils::startDrag(Qt::DropActions /*supportedActions*/) {
delete appar; delete appar;
} }
/**
Methode privee permettant d'ajouter un dossier au panel d'appareils
@param qtwi_parent QTreeWidgetItem parent sous lequel sera insere l'element
@param dossier Chemin absolu du dossier a inserer
@param nom Parametre facultatif permettant de forcer le nom du dossier.
S'il n'est pas precise, la fonction ouvre le fichier qet_directory situe
dans le dossier et y lit le nom du dossier ; si ce fichier n'existe pas ou
est invalide, la fonction utilise le nom du dossier.
*/
void PanelAppareils::ajouterDossier(QTreeWidgetItem *qtwi_parent, QString adr_dossier, QString nom) {
QDir dossier(adr_dossier);
if (!dossier.exists()) return;
adr_dossier = dossier.canonicalPath() + "/";
// recupere le nom de la categorie
QString nom_categorie = nom;
if (nom == QString()) {
QFile config_dossier(adr_dossier + "qet_directory");
// verifie l'existence du fichier
if (config_dossier.exists()) {
// ouvre le fichier
if (config_dossier.open(QIODevice::ReadOnly | QIODevice::Text)) {
// lit la premiere ligne
char data[512];
if (config_dossier.readLine(data, sizeof(data)) != -1) {
nom_categorie = QString(data).trimmed();
}
}
}
if (nom_categorie == QString()) nom_categorie = dossier.dirName();
}
// creation du QTreeWidgetItem representant le dossier
QTreeWidgetItem *qtwi_dossier = new QTreeWidgetItem(qtwi_parent, QStringList(nom_categorie));
QLinearGradient t(0, 0, 200, 0);
t.setColorAt(0, QColor("#e8e8e8"));
t.setColorAt(1, QColor("#ffffff"));
qtwi_dossier -> setBackground(0, QBrush(t));
qtwi_dossier -> setExpanded(true);
// ajout des sous-categories / sous-dossiers
QStringList dossiers = dossier.entryList(QStringList(), QDir::AllDirs | QDir::NoSymLinks | QDir::NoDotAndDotDot, QDir::Name);
foreach(QString dossier, dossiers) ajouterDossier(qtwi_dossier, adr_dossier + dossier);
// ajout des elements / fichiers
QStringList fichiers = dossier.entryList(QStringList("*.elmt"), QDir::Files, QDir::Name);
foreach(QString fichier, fichiers) ajouterFichier(qtwi_dossier, adr_dossier + fichier);
}
/** /**
Methode privee permettant d'ajouter un element au panel d'appareils Methode privee permettant d'ajouter un element au panel d'appareils
@param qtwi_parent QTreeWidgetItem parent sous lequel sera insere l'element @param qtwi_parent QTreeWidgetItem parent sous lequel sera insere l'element

View File

@ -17,5 +17,6 @@
void startDrag(Qt::DropActions); void startDrag(Qt::DropActions);
private: private:
void ajouterFichier(QTreeWidgetItem *, QString); void ajouterFichier(QTreeWidgetItem *, QString);
void ajouterDossier(QTreeWidgetItem *, QString, QString = QString());
}; };
#endif #endif

View File

@ -63,8 +63,11 @@ void Schema::drawBackground(QPainter *p, const QRectF &r) {
p -> restore(); p -> restore();
} }
/**
Exporte le schema vers une image
@return Une QImage representant le schema
*/
QImage Schema::toImage() { QImage Schema::toImage() {
QRectF vue = itemsBoundingRect(); QRectF vue = itemsBoundingRect();
// la marge = 5 % de la longueur necessaire // la marge = 5 % de la longueur necessaire
qreal marge = 0.05 * vue.width(); qreal marge = 0.05 * vue.width();
@ -90,7 +93,8 @@ QImage Schema::toImage() {
/** /**
Exporte tout ou partie du schema Exporte tout ou partie du schema
@param schema Booleen (a vrai par defaut) indiquant si le XML genere doit representer tout le schema ou seulement les elements selectionnes @param schema Booleen (a vrai par defaut) indiquant si le XML genere doit
representer tout le schema ou seulement les elements selectionnes
@return Un Document XML (QDomDocument) @return Un Document XML (QDomDocument)
*/ */
QDomDocument Schema::toXml(bool schema) { QDomDocument Schema::toXml(bool schema) {
@ -189,12 +193,11 @@ QDomDocument Schema::toXml(bool schema) {
return(document); return(document);
} }
void Schema::reset() {
/// @todo implementer cette fonction
}
/** /**
Importe le schema decrit dans un document XML. Si une position est precisee, les elements importes sont positionnes de maniere a ce que le coin superieur gauche du plus petit rectangle pouvant les entourant tous (le bounding rect) soit a cette position. Importe le schema decrit dans un document XML. Si une position est
precisee, les elements importes sont positionnes de maniere a ce que le
coin superieur gauche du plus petit rectangle pouvant les entourant tous
(le bounding rect) soit a cette position.
@param document Le document XML a analyser @param document Le document XML a analyser
@param position La position du schema importe @param position La position du schema importe
@return true si l'import a reussi, false sinon @return true si l'import a reussi, false sinon

View File

@ -24,7 +24,6 @@
QImage toImage(); QImage toImage();
QDomDocument toXml(bool = true); QDomDocument toXml(bool = true);
bool fromXml(QDomDocument &, QPointF = QPointF()); bool fromXml(QDomDocument &, QPointF = QPointF());
void reset();
QGraphicsItem *getElementById(uint id); QGraphicsItem *getElementById(uint id);
inline void setAffichageGrille(bool ddg) { doit_dessiner_grille = ddg; } inline void setAffichageGrille(bool ddg) { doit_dessiner_grille = ddg; }