diff --git a/sources/qetproject.cpp b/sources/qetproject.cpp index cb50d896f..23887e739 100644 --- a/sources/qetproject.cpp +++ b/sources/qetproject.cpp @@ -29,6 +29,8 @@ #include "qetmessagebox.h" #include "titleblocktemplate.h" +#include "ui/dialogwaiting.h" + QString QETProject::integration_category_name = "import"; /** @@ -956,15 +958,24 @@ void QETProject::readDiagramsXml() { // map destinee a accueillir les schemas QMultiMap loaded_diagrams; + //show DialogWaiting + DialogWaiting* dlgWaiting = new DialogWaiting(); + dlgWaiting -> setModal(true); + dlgWaiting -> show(); + dlgWaiting -> setTitle( tr("Ouverture du projet en cours...") ); + // recherche les schemas dans le projet QDomNodeList diagram_nodes = document_root_.elementsByTagName("diagram"); + dlgWaiting->setProgressBarRange(0, diagram_nodes.length()); for (uint i = 0 ; i < diagram_nodes.length() ; ++ i) { + dlgWaiting->setProgressBar(i+1); if (diagram_nodes.at(i).isElement()) { QDomElement diagram_xml_element = diagram_nodes.at(i).toElement(); Diagram *diagram = new Diagram(); diagram -> setProject(this); bool diagram_loading = diagram -> initFromXml(diagram_xml_element); if (diagram_loading) { + dlgWaiting->setDetail( diagram->title() ); // recupere l'attribut order du schema int diagram_order = -1; if (!QET::attributeIsAnInteger(diagram_xml_element, "order", &diagram_order)) diagram_order = 500000; @@ -979,6 +990,8 @@ void QETProject::readDiagramsXml() { foreach(Diagram *diagram, loaded_diagrams.values()) { addDiagram(diagram); } + //delete dialog object + delete dlgWaiting; } /** diff --git a/sources/qetproject.h b/sources/qetproject.h index 898143c2e..8098b1a72 100644 --- a/sources/qetproject.h +++ b/sources/qetproject.h @@ -25,6 +25,7 @@ #include "conductorproperties.h" #include "titleblockproperties.h" #include "templatescollection.h" + class Diagram; class ElementsCollection; class ElementsCategory; @@ -35,6 +36,7 @@ class TitleBlockTemplate; class XmlElementsCollection; class MoveElementsHandler; class MoveTitleBlockTemplatesHandler; + /** This class represents a QET project. Typically saved as a .qet file, it consists in an XML document grouping 0 to n diagrams and embedding an elements diff --git a/sources/ui/dialogwaiting.cpp b/sources/ui/dialogwaiting.cpp new file mode 100644 index 000000000..798286de7 --- /dev/null +++ b/sources/ui/dialogwaiting.cpp @@ -0,0 +1,83 @@ +/* + Copyright 2006-2013 The QElectroTech Team + This file is part of QElectroTech. + + QElectroTech is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + QElectroTech is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QElectroTech. If not, see . +*/ + +#include "dialogwaiting.h" +#include "ui_dialogwaiting.h" +#include + +/** + * @brief DialogWaiting::DialogWaiting + * @param parent + */ +DialogWaiting::DialogWaiting(QWidget *parent) : + QDialog(parent), + ui(new Ui::DialogWaiting) +{ + ui->setupUi(this); + setTitle( "..." ); + setDetail( "..." ); +} + +/** + * @brief DialogWaiting::~DialogWaiting + */ +DialogWaiting::~DialogWaiting() { + delete ui; +} + +/** + * @brief DialogWaiting::setProgressBar + * @param val is the progressBar value + */ +void DialogWaiting::setProgressBar(int val){ + ui->progressBar->setValue(val); +} + +/** + * @brief DialogWaiting::setProgressReset, clear progressBar and reset + */ +void DialogWaiting::setProgressReset(){ + ui->progressBar->reset(); +} + +/** + * @brief DialogWaiting::setProgressBarRange + * @param min is the minimum of progressBar + * @param max is the maximun of progressBar + */ +void DialogWaiting::setProgressBarRange(int min, int max){ + ui->progressBar->setRange(min,max); +} + +/** + * @brief DialogWaiting::setTitle of action + * @param val is the string of action + */ +void DialogWaiting::setTitle(const QString& val){ + QString title=" "+val+" "; + ui->labelTitle->setText(title); +} + +/** + * @brief DialogWaiting::setDetail of action + * @param val is the string of detail action + */ +void DialogWaiting::setDetail(const QString& val){ + ui->label_detail->setText(val); +} + diff --git a/sources/ui/dialogwaiting.h b/sources/ui/dialogwaiting.h new file mode 100644 index 000000000..ca4dbabbf --- /dev/null +++ b/sources/ui/dialogwaiting.h @@ -0,0 +1,46 @@ +/* + Copyright 2006-2013 The QElectroTech Team + This file is part of QElectroTech. + + QElectroTech is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + QElectroTech is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QElectroTech. If not, see . +*/ + +#ifndef DIALOGWAITING_H +#define DIALOGWAITING_H + +#include + +namespace Ui { + class DialogWaiting; +} + +class DialogWaiting : public QDialog +{ + Q_OBJECT + +public: + explicit DialogWaiting(QWidget *parent = 0); + ~DialogWaiting(); + + void setProgressBar(int val); + void setProgressBarRange(int min, int max); + void setProgressReset(); + void setTitle(const QString& val); + void setDetail(const QString& val); + + private: + Ui::DialogWaiting *ui; +}; + +#endif // DIALOGWAITING_H diff --git a/sources/ui/dialogwaiting.ui b/sources/ui/dialogwaiting.ui new file mode 100644 index 000000000..353641d71 --- /dev/null +++ b/sources/ui/dialogwaiting.ui @@ -0,0 +1,69 @@ + + + DialogWaiting + + + + 0 + 0 + 400 + 136 + + + + Merci de patienter + + + + :/app/process:/app/process + + + + + + + + TextLabel + + + Qt::AutoText + + + Qt::AlignCenter + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + 24 + + + + + + + TextLabel + + + + + + + + + +