[qet] [3946] link single element widget : minor improvement |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/qet Archives
]
Revision: 3946
Author: blacksun
Date: 2015-05-09 13:35:00 +0200 (Sat, 09 May 2015)
Log Message:
-----------
link single element widget : minor improvement
Modified Paths:
--------------
trunk/sources/PropertiesEditor/propertieseditorwidget.h
trunk/sources/ui/elementselectorwidget.cpp
trunk/sources/ui/linksingleelementwidget.cpp
trunk/sources/ui/linksingleelementwidget.h
Modified: trunk/sources/PropertiesEditor/propertieseditorwidget.h
===================================================================
--- trunk/sources/PropertiesEditor/propertieseditorwidget.h 2015-05-08 18:05:10 UTC (rev 3945)
+++ trunk/sources/PropertiesEditor/propertieseditorwidget.h 2015-05-09 11:35:00 UTC (rev 3946)
@@ -37,6 +37,7 @@
virtual void reset() {}
virtual QUndoCommand *associatedUndo () const;
virtual QString title() const;
+ virtual void updateUi() {}
};
#endif // PROPERTIESEDITORWIDGET_H
Modified: trunk/sources/ui/elementselectorwidget.cpp
===================================================================
--- trunk/sources/ui/elementselectorwidget.cpp 2015-05-08 18:05:10 UTC (rev 3945)
+++ trunk/sources/ui/elementselectorwidget.cpp 2015-05-09 11:35:00 UTC (rev 3946)
@@ -81,6 +81,7 @@
elements_list.clear();
in_filter.clear();
out_filter.clear();
+ selected_element = nullptr;
if(showed_element) showed_element->setHighlighted(false);
foreach(QWidget *w, content_list) {
ui->scroll_layout_->removeWidget(w);
Modified: trunk/sources/ui/linksingleelementwidget.cpp
===================================================================
--- trunk/sources/ui/linksingleelementwidget.cpp 2015-05-08 18:05:10 UTC (rev 3945)
+++ trunk/sources/ui/linksingleelementwidget.cpp 2015-05-09 11:35:00 UTC (rev 3946)
@@ -57,8 +57,7 @@
* @brief LinkSingleElementWidget::~LinkSingleElementWidget
* Default destructor
*/
-LinkSingleElementWidget::~LinkSingleElementWidget()
-{
+LinkSingleElementWidget::~LinkSingleElementWidget() {
delete ui;
}
@@ -66,7 +65,8 @@
* @brief LinkSingleElementWidget::apply
* Apply the new property of the edited element
*/
-void LinkSingleElementWidget::apply() {
+void LinkSingleElementWidget::apply()
+{
QUndoCommand *undo = associatedUndo();
if (undo)
element_->diagram()->undoStack().push(undo);
@@ -96,14 +96,28 @@
}
/**
+ * @brief LinkSingleElementWidget::updateUi
+ * Update the content of this widget
+ */
+void LinkSingleElementWidget::updateUi()
+{
+ setNewList();
+ buildLinkUnlinkButton();
+ buildSearchField();
+ unlink_ = false;
+}
+
+/**
* @brief LinkSingleElementWidget::buildInterface
* Build the interface of this widget
*/
-void LinkSingleElementWidget::buildInterface() {
+void LinkSingleElementWidget::buildInterface()
+{
ui->folio_combo_box->addItem(tr("Tous"));
- //Fill the combo box for filter the result by folio
- foreach (Diagram *d, diagram_list) {
+ //Fill the combo box for filter the result by folio
+ foreach (Diagram *d, diagram_list)
+ {
QString title = d->title();
if (title.isEmpty()) title = tr("Sans titre");
title.prepend(QString::number(d->folioIndex() + 1) + " ");
@@ -111,11 +125,7 @@
}
buildList();
-
- element_->isFree() ?
- ui->button_linked->setDisabled(true) :
- buildUnlinkButton();
-
+ buildLinkUnlinkButton();
buildSearchField();
}
@@ -125,26 +135,42 @@
* the list is fill with the element find in the
* required folio (folio selected with the combo box)
*/
-void LinkSingleElementWidget::buildList() {
+void LinkSingleElementWidget::buildList()
+{
esw_ = new ElementSelectorWidget(availableElements(), this);
ui->content_layout->addWidget(esw_);
}
/**
- * @brief LinkSingleElementWidget::buildUnlinkButton
- * Build a widget with button 'unlink' if the edited
- * element is already linked with a master element
+ * @brief LinkSingleElementWidget::buildLinkUnlinkButton
+ * Build the button link or unlink according to the current edited
+ * element, if is already linked with a master element or not
*/
-void LinkSingleElementWidget::buildUnlinkButton() {
- unlink_widget = new QWidget(this);
- QHBoxLayout *unlink_layout = new QHBoxLayout(unlink_widget);
- QLabel *lb = new QLabel(tr("Cet élément est déjà lié."), unlink_widget);
- QPushButton *pb = new QPushButton(tr("Délier"), unlink_widget);
- connect(pb, SIGNAL(clicked()), this, SLOT(unlinkClicked()));
- unlink_layout->addWidget(lb);
- unlink_layout->addStretch();
- unlink_layout->addWidget(pb);
- ui->main_layout->insertWidget(0, unlink_widget);
+void LinkSingleElementWidget::buildLinkUnlinkButton()
+{
+ if (element_->isFree())
+ {
+ ui->button_linked->setEnabled(true);
+ if (unlink_widget)
+ {
+ ui->main_layout->removeWidget(unlink_widget);
+ delete unlink_widget; unlink_widget = nullptr;
+ }
+ }
+ else if (!unlink_widget)
+ {
+ ui->button_linked->setDisabled(true);
+ unlink_widget = new QWidget(this);
+ QHBoxLayout *unlink_layout = new QHBoxLayout(unlink_widget);
+ QLabel *lb = new QLabel(tr("Cet élément est déjà lié."), unlink_widget);
+ QPushButton *pb = new QPushButton(tr("Délier"), unlink_widget);
+ connect(pb, SIGNAL(clicked()), this, SLOT(unlinkClicked()));
+ unlink_layout->addWidget(lb);
+ unlink_layout->addStretch();
+ unlink_layout->addWidget(pb);
+ ui->main_layout->insertWidget(0, unlink_widget);
+ }
+
}
/**
@@ -152,7 +178,8 @@
* Build a line edit for search element by they information,
* like label or information
*/
-void LinkSingleElementWidget::buildSearchField() {
+void LinkSingleElementWidget::buildSearchField()
+{
//If there isn't string to filter, we remove the search field
if (esw_->filter().isEmpty()) {
if (search_field) {
@@ -163,13 +190,14 @@
return;
}
- if(!search_field) search_field = new QLineEdit(this);
-#if QT_VERSION >= 0x040700
- search_field -> setPlaceholderText(tr("Rechercher"));
-#endif
+ if(!search_field)
+ {
+ search_field = new QLineEdit(this);
+ search_field -> setPlaceholderText(tr("Rechercher"));
+ connect(search_field, SIGNAL(textChanged(QString)), esw_, SLOT(filtered(QString)));
+ ui->header_layout->addWidget(search_field);
+ }
setUpCompleter();
- connect(search_field, SIGNAL(textChanged(QString)), esw_, SLOT(filtered(QString)));
- ui->header_layout->addWidget(search_field);
}
/**
@@ -178,29 +206,32 @@
* to be linked with the edited element.
* This methode take care of the combo box "find in diagram"
*/
-QList <Element *> LinkSingleElementWidget::availableElements() {
+QList <Element *> LinkSingleElementWidget::availableElements()
+{
QList <Element *> elmt_list;
- //if element isn't free and unlink isn't pressed, return an empty list
+ //if element isn't free and unlink isn't pressed, return an empty list
if (!element_->isFree() && !unlink_) return elmt_list;
int i = ui->folio_combo_box->currentIndex();
- //find in all diagram of this project
- if (i == 0) {
+ //find in all diagram of this project
+ if (i == 0)
+ {
ElementProvider ep(element_->diagram()->project());
if (filter_ & Element::AllReport)
elmt_list = ep.freeElement(filter_);
else
elmt_list = ep.find(filter_);
}
- //find in single diagram
- else {
+ //find in single diagram
+ else
+ {
ElementProvider ep (diagram_list.at(i-1));
if (filter_ & Element::AllReport)
elmt_list = ep.freeElement(filter_);
else
elmt_list = ep.find(filter_);
}
- //If element is linked, remove is parent from the list
+ //If element is linked, remove is parent from the list
if(!element_->isFree()) elmt_list.removeAll(element_->linkedElements().first());
return elmt_list;
@@ -210,8 +241,10 @@
* @brief LinkSingleElementWidget::setUpCompleter
* Setup the completer of search_field
*/
-void LinkSingleElementWidget::setUpCompleter() {
- if (search_field) {
+void LinkSingleElementWidget::setUpCompleter()
+{
+ if (search_field)
+ {
search_field -> clear();
delete search_field -> completer();
@@ -227,7 +260,8 @@
* @brief LinkSingleElementWidget::setNewList
* Set the list according to the selected diagram in the combo_box
*/
-void LinkSingleElementWidget::setNewList() {
+void LinkSingleElementWidget::setNewList()
+{
esw_->setList(availableElements());
buildSearchField();
}
@@ -236,10 +270,10 @@
* @brief LinkSingleElementWidget::unlinkClicked
* Action when 'unlink' button is clicked
*/
-void LinkSingleElementWidget::unlinkClicked() {
+void LinkSingleElementWidget::unlinkClicked()
+{
ui->main_layout->removeWidget(unlink_widget);
- delete unlink_widget;
- unlink_widget = 0;
+ delete unlink_widget; unlink_widget = nullptr;
unlink_ = true;
setNewList();
}
@@ -256,7 +290,8 @@
* @brief FolioReportProperties::on_button_linked_clicked
* Action when push button "linked report" is clicked
*/
-void LinkSingleElementWidget::on_button_linked_clicked() {
+void LinkSingleElementWidget::on_button_linked_clicked()
+{
if (element_->isFree()) return;
esw_->showElement(element_->linkedElements().first());
}
Modified: trunk/sources/ui/linksingleelementwidget.h
===================================================================
--- trunk/sources/ui/linksingleelementwidget.h 2015-05-08 18:05:10 UTC (rev 3945)
+++ trunk/sources/ui/linksingleelementwidget.h 2015-05-09 11:35:00 UTC (rev 3946)
@@ -51,14 +51,15 @@
void apply();
QUndoCommand *associatedUndo() const;
QString title() const;
+ void updateUi();
private:
- void buildInterface();
- void buildList();
- void buildUnlinkButton();
- void buildSearchField();
- QList <Element *> availableElements();
- void setUpCompleter();
+ void buildInterface();
+ void buildList();
+ void buildLinkUnlinkButton();
+ void buildSearchField();
+ QList <Element *> availableElements();
+ void setUpCompleter();
private slots:
void setNewList();