Le systray reduit ou restaure desormais toutes les fenetres

git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@130 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
xavierqet
2007-09-21 18:07:05 +00:00
parent 438c7ae69e
commit 2ad6c27998
7 changed files with 37 additions and 114 deletions

View File

@@ -60,6 +60,7 @@ QETDiagramEditor::QETDiagramEditor(QWidget *parent) : QMainWindow(parent) {
// ajout du panel d'Appareils en tant que QDockWidget
qdw_pa = new QDockWidget(tr("Panel d'appareils"), this);
qdw_pa -> setObjectName("elements panel");
qdw_pa -> setAllowedAreas(Qt::AllDockWidgetAreas);
qdw_pa -> setFeatures(QDockWidget::AllDockWidgetFeatures);
qdw_pa -> setMinimumWidth(160);
@@ -75,18 +76,6 @@ QETDiagramEditor::QETDiagramEditor(QWidget *parent) : QMainWindow(parent) {
// mise en place des menus
menus();
// systray de l'application
if (QSystemTrayIcon::isSystemTrayAvailable()) {
qsti = new QSystemTrayIcon(QIcon(":/ico/qet.png"), this);
qsti -> setToolTip(tr("QElectroTech"));
connect(qsti, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(systray(QSystemTrayIcon::ActivationReason)));
menu_systray = new QMenu(tr("QElectroTech"));
menu_systray -> addAction(reduce_appli);
menu_systray -> addAction(quitter_qet);
qsti -> setContextMenu(menu_systray);
qsti -> show();
}
// la fenetre est maximisee par defaut
setMinimumWidth(500);
setMinimumHeight(350);
@@ -103,67 +92,11 @@ QETDiagramEditor::QETDiagramEditor(QWidget *parent) : QMainWindow(parent) {
QETDiagramEditor::~QETDiagramEditor() {
}
/**
Gere les evenements relatifs au QSystemTrayIcon
@param raison un entier representant l'evenement survenu sur le systray
*/
void QETDiagramEditor::systray(QSystemTrayIcon::ActivationReason reason) {
if (!QSystemTrayIcon::isSystemTrayAvailable()) return;
switch(reason) {
case QSystemTrayIcon::Context:
// affichage du menu
(qsti -> contextMenu()) -> show();
break;
case QSystemTrayIcon::DoubleClick:
case QSystemTrayIcon::Trigger:
// reduction ou restauration de l'application
if (isVisible()) systrayReduce(); else systrayRestore();
break;
case QSystemTrayIcon::Unknown:
default: // ne rien faire
break;
}
}
/**
Reduit l'application dans le systray
*/
void QETDiagramEditor::systrayReduce() {
// on sauvegarde la position et les dimensions de l'application
wg = saveGeometry();
// on cache l'application
hide();
// on ajoute le menu "Restaurer" et on enleve le menu "Masquer"
menu_systray -> insertAction(reduce_appli, restore_appli);
menu_systray -> removeAction(reduce_appli);
}
/**
Restaure l'application reduite dans le systray
*/
void QETDiagramEditor::systrayRestore() {
// on restaure la position et les dimensions de l'application
restoreGeometry(wg);
// on affiche l'application
show();
// on ajoute le menu "Masquer" et on enleve le menu "Restaurer"
menu_systray -> insertAction(restore_appli, reduce_appli);
menu_systray -> removeAction(restore_appli);
}
/**
Permet de quitter l'application lors de la fermeture de la fenetre principale
@param qce Le QCloseEvent correspondant a l'evenement de fermeture
*/
void QETDiagramEditor::closeEvent(QCloseEvent *qce) {
quit(qce);
}
/**
Gere la sortie de l'application
@param e Le QCloseEvent correspondant a l'evenement de fermeture
*/
void QETDiagramEditor::quit(QCloseEvent *e) {
// quitte directement s'il n'y a aucun schema ouvert
bool peut_quitter = true;
if (diagramEnCours()) {
@@ -173,15 +106,15 @@ void QETDiagramEditor::quit(QCloseEvent *e) {
workspace.setActiveWindow(fenetre);
if (!fermer()) {
peut_quitter = false;
if (e != NULL) e -> ignore();
qce -> ignore();
break;
}
}
}
}
if (peut_quitter) {
if (QSystemTrayIcon::isSystemTrayAvailable()) qsti -> hide();
qApp -> quit();
setAttribute(Qt::WA_DeleteOnClose);
qce -> accept();
}
}
@@ -256,13 +189,6 @@ void QETDiagramEditor::actions() {
a_propos_de_qet = new QAction(QIcon(":/ico/qet.png"), tr("\300 &propos de QElectroTech"), this);
a_propos_de_qt = new QAction(QIcon(":/ico/qt.png"), tr("\300 propos de &Qt"), this);
reduce_appli = new QAction(QIcon(":/ico/masquer.png"), tr("&Masquer"), this);
restore_appli = new QAction(QIcon(":/ico/restaurer.png"), tr("&Restaurer"), this);
// info-bulles
reduce_appli -> setToolTip(tr("Reduire QElectroTech dans le systray"));
restore_appli -> setToolTip(tr("Restaurer QElectroTech"));
// raccourcis clavier
nouveau_fichier -> setShortcut(QKeySequence::New);
ouvrir_fichier -> setShortcut(QKeySequence::Open);
@@ -354,7 +280,7 @@ void QETDiagramEditor::actions() {
grp_visu_sel -> setExclusive(true);
// connexion a des slots
connect(quitter_qet, SIGNAL(triggered()), this, SLOT(quit()) );
connect(quitter_qet, SIGNAL(triggered()), this, SLOT(close()) );
connect(sel_tout, SIGNAL(triggered()), this, SLOT(slot_selectAll()) );
connect(sel_rien, SIGNAL(triggered()), this, SLOT(slot_selectNothing()) );
connect(sel_inverse, SIGNAL(triggered()), this, SLOT(slot_selectInvert()) );
@@ -366,8 +292,6 @@ void QETDiagramEditor::actions() {
connect(mode_visualise, SIGNAL(triggered()), this, SLOT(slot_setVisualisationMode()));
connect(a_propos_de_qet, SIGNAL(triggered()), this, SLOT(aPropos()) );
connect(a_propos_de_qt, SIGNAL(triggered()), qApp, SLOT(aboutQt()) );
connect(reduce_appli, SIGNAL(triggered()), this, SLOT(systrayReduce()) );
connect(restore_appli, SIGNAL(triggered()), this, SLOT(systrayRestore()) );
connect(zoom_avant, SIGNAL(triggered()), this, SLOT(slot_zoomPlus()) );
connect(zoom_arriere, SIGNAL(triggered()), this, SLOT(slot_zoomMoins()) );
connect(zoom_adapte, SIGNAL(triggered()), this, SLOT(slot_zoomFit()) );
@@ -487,6 +411,7 @@ void QETDiagramEditor::menus() {
*/
void QETDiagramEditor::toolbar() {
barre_outils = new QToolBar(tr("Outils"), this);
barre_outils -> setObjectName("toolbar");
// Modes selection / visualisation
barre_outils -> addAction(mode_selection);