//
#include "layerwidget.h"
+#include "global.h"
#include "layeritemwidget.h"
LayerWidget::LayerWidget(void): QWidget(),
- list(new QListWidget)
+ addLayer(new QToolButton), removeLayer(new QToolButton),
+ editLayer(new QToolButton), layerUp(new QToolButton),
+ layerDown(new QToolButton), list(new QListWidget)
{
- LayerItemWidget * liw1 = new LayerItemWidget("Guidelines");
- LayerItemWidget * liw2 = new LayerItemWidget("Floor #1");
- LayerItemWidget * liw3 = new LayerItemWidget("Mechanical");
- LayerItemWidget * liw4 = new LayerItemWidget("List Widget");
- LayerItemWidget * liw5 = new LayerItemWidget("Background");
-
-// QListWidget * qlw = new QListWidget;
- QListWidgetItem * qli1 = new QListWidgetItem(list);
- QListWidgetItem * qli2 = new QListWidgetItem(list);
- QListWidgetItem * qli3 = new QListWidgetItem(list);
- QListWidgetItem * qli4 = new QListWidgetItem(list);
- QListWidgetItem * qli5 = new QListWidgetItem(list);
- list->setItemWidget(qli1, liw1);
- list->setItemWidget(qli2, liw2);
- list->setItemWidget(qli3, liw3);
- list->setItemWidget(qli4, liw4);
- list->setItemWidget(qli5, liw5);
-
-#if 0
- QPushButton * pb1 = new QPushButton("+");
- QPushButton * pb2 = new QPushButton("-");
- QPushButton * pb3 = new QPushButton("Edit");
- QPushButton * pb4 = new QPushButton("^");
- QPushButton * pb5 = new QPushButton("v");
-#else
- QToolButton * pb1 = new QToolButton;
- QToolButton * pb2 = new QToolButton;
- QToolButton * pb3 = new QToolButton;
- QToolButton * pb4 = new QToolButton;
- QToolButton * pb5 = new QToolButton;
-
- pb1->setIcon(QIcon(":/res/generic-tool.png"));
- pb2->setIcon(QIcon(":/res/generic-tool.png"));
- pb3->setIcon(QIcon(":/res/generic-tool.png"));
- pb4->setIcon(QIcon(":/res/generic-tool.png"));
- pb5->setIcon(QIcon(":/res/generic-tool.png"));
-#endif
+ LayerItemWidget * liw = new LayerItemWidget("Background");
+ QListWidgetItem * qlwi = new QListWidgetItem(list);
+ list->setItemWidget(qlwi, liw);
+
+// QToolButton * pb1 = new QToolButton;
+// QToolButton * pb2 = new QToolButton;
+// QToolButton * pb3 = new QToolButton;
+// QToolButton * pb4 = new QToolButton;
+// QToolButton * pb5 = new QToolButton;
+
+ addLayer->setIcon(QIcon(":/res/layer-add.png"));
+ removeLayer->setIcon(QIcon(":/res/layer-delete.png"));
+ editLayer->setIcon(QIcon(":/res/layer-edit.png"));
+ layerUp->setIcon(QIcon(":/res/layer-up.png"));
+ layerDown->setIcon(QIcon(":/res/layer-down.png"));
+
+ addLayer->setToolTip(tr("Add layer"));
+ removeLayer->setToolTip(tr("Remove layer"));
+ editLayer->setToolTip(tr("Edit layer"));
+ layerUp->setToolTip(tr("Move layer up"));
+ layerDown->setToolTip(tr("Move layer down"));
QHBoxLayout * hbox1 = new QHBoxLayout;
- hbox1->addWidget(pb1);
- hbox1->addWidget(pb2);
- hbox1->addWidget(pb3);
- hbox1->addWidget(pb4);
- hbox1->addWidget(pb5);
+ hbox1->addWidget(addLayer);
+ hbox1->addWidget(removeLayer);
+ hbox1->addWidget(editLayer);
+ hbox1->addWidget(layerUp);
+ hbox1->addWidget(layerDown);
hbox1->addStretch();
QVBoxLayout * mainLayout = new QVBoxLayout;
setLayout(mainLayout);
connect(list, SIGNAL(currentRowChanged(int)), this, SLOT(HandleLayerSelected(int)));
- list->setCurrentRow(4);
- connect(pb1, SIGNAL(clicked()), this, SLOT(AddLayer()));
- connect(pb2, SIGNAL(clicked()), this, SLOT(DeleteLayer()));
- connect(pb3, SIGNAL(clicked()), this, SLOT(EditLayer()));
- connect(pb4, SIGNAL(clicked()), this, SLOT(MoveLayerUp()));
- connect(pb5, SIGNAL(clicked()), this, SLOT(MoveLayerDown()));
+ connect(addLayer, SIGNAL(clicked()), this, SLOT(AddLayer()));
+ connect(removeLayer, SIGNAL(clicked()), this, SLOT(DeleteLayer()));
+ connect(editLayer, SIGNAL(clicked()), this, SLOT(EditLayer()));
+ connect(layerUp, SIGNAL(clicked()), this, SLOT(MoveLayerUp()));
+ connect(layerDown, SIGNAL(clicked()), this, SLOT(MoveLayerDown()));
+
+ list->setCurrentRow(0);
}
void LayerWidget::HandleLayerSelected(int currentRow)
{
//printf("LayerWidget::HandleLayerSelected(): currentRow = %i\n", currentRow);
- emit(LayerSelected(currentRow));
+// emit(LayerSelected(currentRow));
+
+ QListWidgetItem * qlwi = list->item(currentRow);
+ LayerItemWidget * li = (LayerItemWidget *)list->itemWidget(qlwi);
+ Global::activeLayer = currentRow;
+ Global::layerIsLocked = li->editibility->isChecked();
+
+ // Set button states to sane values
+ SetButtonStates();
}
QListWidgetItem * qlwi = new QListWidgetItem();
list->insertItem(0, qlwi);
list->setItemWidget(qlwi, liw);
+
+ SetButtonStates();
}
void LayerWidget::DeleteLayer(void)
{
+ int numItems = list->count();
+
+ if (numItems == 1)
+ return;
+
+ QListWidgetItem * qlwi = list->currentItem();
+ list->removeItemWidget(qlwi);
+ delete qlwi;
+
+ SetButtonStates();
+
+ // N.B.: Also, we need to delete the layer in the Drawing as well!
}
void LayerWidget::EditLayer(void)
{
+ // Get the LayerItemWidget so we can edit it (its name, anyway)...
+ QListWidgetItem * qlwi = list->currentItem();
+ LayerItemWidget * li = (LayerItemWidget *)list->itemWidget(qlwi);
+ QString s = li->name->text();
+
+ bool ok;
+ QString result = QInputDialog::getText(this, tr("Edit Layer Name"), tr("Layer Name:"), QLineEdit::Normal, s, &ok);
+
+ if (ok && !result.isEmpty())
+ li->name->setText(result);
}
void LayerWidget::MoveLayerUp(void)
{
+ // Get information out of the LayerItemWidget (& get it from the list!)
+ int currentRow = list->currentRow();
+ QListWidgetItem * qlwi = list->currentItem();
+ LayerItemWidget * li = (LayerItemWidget *)list->itemWidget(qlwi);
+ QString s = li->name->text();
+ bool visible = li->visibility->isChecked();
+ bool editible = li->editibility->isChecked();
+
+ // We have to make a new LayerItemWidget because it destroys the old one!
+ list->takeItem(currentRow);
+ list->insertItem(currentRow - 1, qlwi);
+ li = new LayerItemWidget(s, visible, editible);
+ list->setItemWidget(qlwi, li);
+ list->setCurrentItem(qlwi);
}
void LayerWidget::MoveLayerDown(void)
{
+ // Get information out of the LayerItemWidget (& get it from the list!)
+ int currentRow = list->currentRow();
+ QListWidgetItem * qlwi = list->currentItem();
+ LayerItemWidget * li = (LayerItemWidget *)list->itemWidget(qlwi);
+ QString s = li->name->text();
+ bool visible = li->visibility->isChecked();
+ bool editible = li->editibility->isChecked();
+
+ // We have to make a new LayerItemWidget because it destroys the old one!
+ list->takeItem(currentRow);
+ list->insertItem(currentRow + 1, qlwi);
+ li = new LayerItemWidget(s, visible, editible);
+ list->setItemWidget(qlwi, li);
+ list->setCurrentItem(qlwi);
+}
+
+
+//
+// Set button states in this widget to sane values
+//
+void LayerWidget::SetButtonStates(void)
+{
+ int numItems = list->count();
+ int currentRow = list->currentRow();
+
+ layerDown->setEnabled(currentRow == (numItems - 1) ? false : true);
+ layerUp->setEnabled(currentRow == 0 ? false : true);
+ removeLayer->setEnabled(numItems == 1 ? false : true);
}