mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-09-13 20:23:04 +02:00
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@4 bfdf4180-ca20-0410-9c96-a3a8aa849046
109 lines
3.3 KiB
C++
109 lines
3.3 KiB
C++
#include "panelappareils.h"
|
||
#include "elementperso.h"
|
||
|
||
/**
|
||
Constructeur
|
||
@param parent Le QWidget parent du panel d'appareils
|
||
@todo : definir une classe heritant de QListWidgetItem et automatiser tout ca
|
||
*/
|
||
PanelAppareils::PanelAppareils(QWidget *parent) : QListWidget(parent) {
|
||
|
||
// selection unique
|
||
setSelectionMode(QAbstractItemView::SingleSelection);
|
||
|
||
// drag'n drop autorise
|
||
setDragEnabled(true);
|
||
setAcceptDrops(false);
|
||
setDropIndicatorShown(false);
|
||
|
||
// style, mouvement et taille des elements
|
||
setIconSize(QSize(50, 50));
|
||
setMovement(QListView::Free);
|
||
setViewMode(QListView::ListMode);
|
||
|
||
// donnees
|
||
/*Element *del = new DEL(0,0);
|
||
Element *contacteur = new Contacteur(0,0);
|
||
Element *entree = new Entree(0, 0);*/
|
||
|
||
QListWidgetItem *qlwi;
|
||
QString whats_this = tr("Ceci est un \351l\351ment que vous pouvez ins\351rer dans votre sch\351ma par cliquer-d\351placer");
|
||
QString tool_tip = tr("Cliquer-d\351posez cet \351l\351ment sur le sch\351ma pour ins\351rer un \351l\351ment ");
|
||
|
||
// remplissage de la liste
|
||
QDir dossier_elements("elements/");
|
||
QStringList filtres;
|
||
filtres << "*.elmt";
|
||
QStringList fichiers = dossier_elements.entryList(filtres, QDir::Files, QDir::Name);
|
||
foreach(QString fichier, fichiers) {
|
||
int etat;
|
||
ElementPerso *elmt_perso = new ElementPerso(fichier, 0, 0, &etat);
|
||
if (etat != 0) {
|
||
qDebug() << "Le chargement du composant" << fichier << "a echoue avec le code d'erreur" << etat;
|
||
continue;
|
||
}
|
||
qlwi = new QListWidgetItem(QIcon(elmt_perso -> pixmap()), elmt_perso -> nom(), this);
|
||
qlwi -> setStatusTip(tool_tip + "\253 " + elmt_perso -> nom() + " \273");
|
||
qlwi -> setToolTip(elmt_perso -> nom());
|
||
qlwi -> setWhatsThis(whats_this);
|
||
qlwi -> setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled);
|
||
qlwi -> setData(42, fichier);
|
||
}
|
||
|
||
// force du noir sur une alternance de blanc (comme le schema) et de bleu clair
|
||
QPalette qp = palette();
|
||
setAlternatingRowColors(true);
|
||
qp.setColor(QPalette::Text, Qt::black);
|
||
qp.setColor(QPalette::Base, Qt::white);
|
||
//qp.setColor(QPalette::AlternateBase, QColor(240, 255, 255));
|
||
setPalette(qp);
|
||
}
|
||
|
||
/**
|
||
Gere le mouvement lors d'un drag'n drop
|
||
*/
|
||
void PanelAppareils::dragMoveEvent(QDragMoveEvent */*e*/) {
|
||
}
|
||
|
||
/**
|
||
Gere le depot lors d'un drag'n drop
|
||
*/
|
||
void PanelAppareils::dropEvent(QDropEvent */*e*/) {
|
||
}
|
||
|
||
/**
|
||
Gere le debut des drag'n drop
|
||
@param supportedActions Les actions supportees
|
||
@todo virer les lignes type <20>if ("tel appareil") construire TelAppareil<69> => trouver un moyen d'automatiser ca
|
||
*/
|
||
void PanelAppareils::startDrag(Qt::DropActions /*supportedActions*/) {
|
||
// objet QDrag pour realiser le drag'n drop
|
||
QDrag *drag = new QDrag(this);
|
||
|
||
// donnees qui seront transmises par le drag'n drop
|
||
QMimeData *mimeData = new QMimeData();
|
||
|
||
// appareil temporaire pour fournir un apercu
|
||
Element *appar;
|
||
int etat;
|
||
QString nom_fichier = currentItem() -> data(42).toString();
|
||
appar = new ElementPerso(nom_fichier, 0, 0, &etat);
|
||
if (etat != 0) {
|
||
delete appar;
|
||
return;
|
||
}
|
||
|
||
mimeData -> setText(nom_fichier);
|
||
drag -> setMimeData(mimeData);
|
||
|
||
// accrochage d'une pixmap representant l'appareil au pointeur
|
||
drag -> setPixmap(appar -> pixmap());
|
||
drag -> setHotSpot(appar -> hotspot());
|
||
|
||
// realisation du drag'n drop
|
||
drag -> start(Qt::CopyAction);
|
||
|
||
// suppression de l'appareil temporaire
|
||
delete appar;
|
||
}
|