X-Git-Url: https://git.sven.stormbind.net/?a=blobdiff_plain;f=src%2Fbranchpropeditor.cpp;fp=src%2Fbranchpropeditor.cpp;h=1a002d345fefc007a74bcb4968c2ca8feed6c9d3;hb=d483bd8e6523c23c6f1d8908a2e0611c2bc9ff4f;hp=0000000000000000000000000000000000000000;hpb=7dfa3fe589d1722d49681f42cdb0bf1e6efb5223;p=sven%2Fvym.git diff --git a/src/branchpropeditor.cpp b/src/branchpropeditor.cpp new file mode 100644 index 0000000..1a002d3 --- /dev/null +++ b/src/branchpropeditor.cpp @@ -0,0 +1,477 @@ +#include "branchpropeditor.h" + +#include + +#include "attributeitem.h" +#include "branchitem.h" +#include "frameobj.h" +#include "settings.h" +#include "vymmodel.h" + +extern Settings settings; +extern QString vymName; + +BranchPropertyEditor::BranchPropertyEditor(QWidget *parent) + : QDialog(parent) // FIXME-4 not updating when data is set elsewhere + // (connect to dataCHanged) + +{ + ui.setupUi(this); + + setWindowTitle(vymName + " - " + tr("Property Editor", "Window caption")); + + branchObj = NULL; + branchItem = NULL; + model = NULL; + + ui.tabWidget->setEnabled(false); + + penColor = QColor(Qt::black); + brushColor = QColor(Qt::black); + QPixmap pix(16, 16); + pix.fill(penColor); + ui.framePenColorButton->setIcon(pix); + ui.frameBrushColorButton->setIcon(pix); + + if (!settings.value("/mainwindow/showTestMenu", false).toBool()) + ui.tabWidget->widget(3)->hide(); + + //Create Model and View to hold attributes + attributeModel = new QStandardItemModel (1, 3, this); + attributeModel->setHeaderData(0, + Qt::Horizontal, + tr("Name","Branchprop window: Attribute name")); + attributeModel->setHeaderData(1, + Qt::Horizontal, + tr("Value","Branchprop window: Attribute value")); + attributeModel->setHeaderData(2, + Qt::Horizontal, + tr("Type","Branchprop window: Attribute type")); + ui.attributeTableView->setModel (attributeModel); + + // Load Settings + resize( + settings + .value("/satellite/propertywindow/geometry/size", QSize(450, 600)) + .toSize()); + move(settings + .value("/satellite/propertywindow/geometry/pos", QPoint(250, 50)) + .toPoint()); + + if (settings.value("/satellite/propertywindow/showWithMain", true).toBool()) + show(); + else + hide(); + + connectSignals(); +} + +BranchPropertyEditor::~BranchPropertyEditor() +{ + settings.setValue("/satellite/propertywindow/geometry/size", size()); + settings.setValue("/satellite/propertywindow/geometry/pos", pos()); + settings.setValue("/satellite/propertywindow/showWithMain", isVisible()); + + delete (attributeModel); +} + +void BranchPropertyEditor::setItem(TreeItem *ti) +{ + disconnectSignals(); + if (!ti) + ui.tabWidget->setEnabled(false); + else if (ti->isBranchLikeType()) { + branchItem = (BranchItem *)ti; + + branchObj = (BranchObj *)(branchItem->getLMO()); + if (branchObj) // FIXME-4 replace by branchItem later, when Frame is + // ported... + { + ui.tabWidget->setEnabled(true); + for (int i = 0; i < 4; ++i) + ui.tabWidget->setTabEnabled(i, true); + ui.tabWidget->setTabEnabled(4, false); + + // Frame + FrameObj::FrameType t = branchObj->getFrameType(); + if (t == FrameObj::NoFrame) // FIXME-3 Check if all below depends on + // frame type??? + { + ui.frameTypeCombo->setCurrentIndex(0); + penColor = Qt::white; + brushColor = Qt::white; + ui.colorGroupBox->setEnabled(false); + ui.framePaddingSpinBox->setEnabled(false); + ui.frameWidthSpinBox->setEnabled(false); + ui.framePaddingLabel->setEnabled(false); + ui.frameBorderLabel->setEnabled(false); + ui.includeChildrenCheckBox->setEnabled(false); + ui.includeChildrenCheckBox->setEnabled(false); + } + else { + penColor = branchObj->getFramePenColor(); + brushColor = branchObj->getFrameBrushColor(); + QPixmap pix(16, 16); + pix.fill(penColor); + ui.framePenColorButton->setIcon(pix); + pix.fill(brushColor); + ui.frameBrushColorButton->setIcon(pix); + ui.colorGroupBox->setEnabled(true); + ui.framePaddingSpinBox->setEnabled(true); + ui.framePaddingSpinBox->setValue(branchObj->getFramePadding()); + ui.frameWidthSpinBox->setEnabled(true); + ui.frameWidthSpinBox->setValue( + branchObj->getFrameBorderWidth()); + ui.framePaddingLabel->setEnabled(true); + ui.frameBorderLabel->setEnabled(true); + ui.includeChildrenCheckBox->setEnabled(true); + + switch (t) { + case FrameObj::Rectangle: + ui.frameTypeCombo->setCurrentIndex(1); + break; + case FrameObj::RoundedRectangle: + ui.frameTypeCombo->setCurrentIndex(2); + break; + case FrameObj::Ellipse: + ui.frameTypeCombo->setCurrentIndex(3); + break; + case FrameObj::Cloud: + ui.frameTypeCombo->setCurrentIndex(4); + break; + default: + break; + } + if (branchItem->getFrameIncludeChildren()) + ui.includeChildrenCheckBox->setCheckState(Qt::Checked); + else + ui.includeChildrenCheckBox->setCheckState(Qt::Unchecked); + } + // Link + if (branchItem->getHideLinkUnselected()) + ui.hideLinkIfUnselected->setCheckState(Qt::Checked); + else + ui.hideLinkIfUnselected->setCheckState(Qt::Unchecked); + + // Layout + if (branchItem->getIncludeImagesVer()) + ui.incImgVer->setCheckState(Qt::Checked); + else + ui.incImgVer->setCheckState(Qt::Unchecked); + if (branchItem->getIncludeImagesHor()) + ui.incImgHor->setCheckState(Qt::Checked); + else + ui.incImgHor->setCheckState(Qt::Unchecked); + if (branchItem->getChildrenLayout() == BranchItem::FreePositioning) + ui.childrenFreePositioning->setCheckState(Qt::Checked); + else + ui.childrenFreePositioning->setCheckState(Qt::Unchecked); + + // Task + Task *task = branchItem->getTask(); + if (task) { + ui.taskPrioDelta->setEnabled(true); + ui.taskPrioDelta->setValue(task->getPriorityDelta()); + ui.lineEditDateCreation->setText( + task->getDateCreation().toString() + " - " + + QString(tr("%1 days ago", "task related times")) + .arg(task->getAgeCreation())); + QDateTime dt = task->getDateModification(); + if (dt.isValid()) { + ui.lineEditDateModification->setText( + dt.toString() + " - " + + QString(tr("%1 days ago", "task related times")) + .arg(task->getAgeModification())); + } + else { + ui.lineEditDateModification->setText(""); + } + + dt = task->getSleep(); + if (dt.isValid()) { + QString s; + qint64 daysSleep = task->getDaysSleep(); + daysSleep >= 0 ? s = QString(dt.toString() + " - " + + tr("sleeping %1 days", + "task related times")) + .arg(daysSleep) + : s = QString(tr("Task is awake", + "task related times")); + ui.lineEditSleep->setText(s); + } + else { + ui.lineEditSleep->setText(""); + } + } + else { + ui.taskPrioDelta->setEnabled(false); + ui.taskPrioDelta->setValue(0); + ui.lineEditDateCreation->setText(""); + ui.lineEditDateModification->setText(""); + ui.lineEditSleep->setText(""); + } + + // Attributes + attributeModel->removeRows(0, attributeModel->rowCount(), QModelIndex()); + + for (int i = 0; i < branchItem->attributeCount(); i++) + { + AttributeItem *ai = branchItem->getAttributeNum(i); + if (ai) { + attributeModel->insertRow (i, QModelIndex ()); + attributeModel->setData(attributeModel->index(i, 0, QModelIndex()), + ai->getKey()); + attributeModel->setData(attributeModel->index(i, 1, QModelIndex()), + ai->getValue().toString()); + attributeModel->setData(attributeModel->index(i, 2, QModelIndex()), + ai->getAttributeTypeString()); + } + } + + ui.attributeTableView->resizeColumnsToContents(); + + // Initialize Delegate + //attributeDelegate.setAttributeTable (mapEditor->attributeTable()); + //ui.attributeTableView->setItemDelegate (&attributeDelegate); + + } // BranchItem + } + else if (ti->getType() == TreeItem::Image) { + ui.tabWidget->setEnabled(true); + for (int i = 0; i < ui.tabWidget->count(); ++i) + ui.tabWidget->setTabEnabled(i, false); + ui.tabWidget->setTabEnabled(3, true); + ui.tabWidget->setCurrentIndex(3); + } + else if (ti->getType() == TreeItem::Attribute) { + ui.tabWidget->setEnabled(true); + for (int i = 0; i < 3; ++i) + ui.tabWidget->setTabEnabled(i, false); + ui.tabWidget->setTabEnabled(3, true); + } + else { + ui.tabWidget->setEnabled(false); + } + connectSignals(); +} + +void BranchPropertyEditor::setModel(VymModel *m) +{ + model = m; + if (model) + setItem(model->getSelectedItem()); + else + ui.tabWidget->setEnabled(false); +} + +void BranchPropertyEditor::frameTypeChanged(int i) +{ + if (model) { + switch (i) { + case 0: + model->setFrameType(FrameObj::NoFrame); + break; + case 1: + model->setFrameType(FrameObj::Rectangle); + break; + case 2: + model->setFrameType(FrameObj::RoundedRectangle); + break; + case 3: + model->setFrameType(FrameObj::Ellipse); + break; + case 4: + model->setFrameType(FrameObj::Cloud); + break; + } + setItem(branchItem); + } +} + +void BranchPropertyEditor::framePenColorClicked() +{ + if (model) { + QColor col = QColorDialog::getColor(penColor, this); + if (col.isValid()) { + penColor = col; + model->setFramePenColor(penColor); + } + } +} + +void BranchPropertyEditor::frameBrushColorClicked() +{ + if (model) { + QColor col = QColorDialog::getColor(brushColor, this); + if (col.isValid()) { + brushColor = col; + model->setFrameBrushColor(brushColor); + } + } +} + +void BranchPropertyEditor::framePaddingChanged(int i) +{ + if (model) + model->setFramePadding(i); +} + +void BranchPropertyEditor::frameBorderWidthChanged(int i) +{ + if (model) + model->setFrameBorderWidth(i); +} + +void BranchPropertyEditor::frameIncludeChildrenChanged(int i) +{ + if (model) + model->setFrameIncludeChildren(i); +} + +void BranchPropertyEditor::linkHideUnselectedChanged(int i) +{ + model->setHideLinkUnselected(i); +} + +void BranchPropertyEditor::incImgVerChanged(int i) +{ + if (model) + model->setIncludeImagesVer(i); +} + +void BranchPropertyEditor::incImgHorChanged(int i) +{ + if (model) + model->setIncludeImagesHor(i); +} + +void BranchPropertyEditor::childrenFreePositioningChanged(int i) +{ + if (model) { + if (i > 0) + model->setChildrenLayout(BranchItem::FreePositioning); + else + model->setChildrenLayout(BranchItem::AutoPositioning); + } +} + +void BranchPropertyEditor::taskPriorityDeltaChanged(int n) +{ + if (model) + model->setTaskPriorityDelta(n); +} + +void BranchPropertyEditor::closeEvent(QCloseEvent *ce) +{ + ce->accept(); // can be reopened with show() + hide(); + emit(windowClosed()); + return; +} + +void BranchPropertyEditor::addAttributeClicked() +{ + qDebug() << "BranchPropEditor::addAttribute"; + +/* + // Add empty line for adding attributes + attributeModel->insertRow (attributeModel->rowCount (),QModelIndex ()); + attributeModel->setData(attributeModel->index(attributeModel->rowCount()-1, +0, QModelIndex()), "Add new"); + attributeModel->setData(attributeModel->index(attributeModel->rowCount()-1, +2, QModelIndex()), "Undefined"); + + // Select attribute from list + ui.attributeTableView->edit +(attributeModel->index(attributeModel->rowCount()-1,0, QModelIndex() )); + ui.attributeTableView->resizeColumnsToContents(); + +// QString attname=attributeModel->in +// attributeModel->setData(attributeModel->index(attributeModel->rowCount()-1, +2, QModelIndex()), ); + + + + ui.attributeTableView->edit +(attributeModel->index(attributeModel->rowCount()-1,1, QModelIndex() )); +*/ + +} + +void BranchPropertyEditor::deleteAttributeClicked() +{ + qDebug() << "BranchPropEditor::deleteAttribute"; +} + +void BranchPropertyEditor::connectSignals() +{ + // Frame + connect(ui.framePenColorButton, SIGNAL(clicked()), this, + SLOT(framePenColorClicked())); + connect(ui.framePaddingSpinBox, SIGNAL(valueChanged(int)), this, + SLOT(framePaddingChanged(int))); + connect(ui.frameWidthSpinBox, SIGNAL(valueChanged(int)), this, + SLOT(frameBorderWidthChanged(int))); + connect(ui.frameBrushColorButton, SIGNAL(clicked()), this, + SLOT(frameBrushColorClicked())); + connect(ui.frameTypeCombo, SIGNAL(currentIndexChanged(int)), this, + SLOT(frameTypeChanged(int))); + connect(ui.includeChildrenCheckBox, SIGNAL(stateChanged(int)), this, + SLOT(frameIncludeChildrenChanged(int))); + + // Link + connect(ui.hideLinkIfUnselected, SIGNAL(stateChanged(int)), this, + SLOT(linkHideUnselectedChanged(int))); + + // Layout + connect(ui.incImgVer, SIGNAL(stateChanged(int)), this, + SLOT(incImgVerChanged(int))); + connect(ui.incImgHor, SIGNAL(stateChanged(int)), this, + SLOT(incImgHorChanged(int))); + connect(ui.childrenFreePositioning, SIGNAL(stateChanged(int)), this, + SLOT(childrenFreePositioningChanged(int))); + + // Tasks + connect(ui.taskPrioDelta, SIGNAL(valueChanged(int)), this, + SLOT(taskPriorityDeltaChanged(int))); + + // Attributes + // For the time being hide above buttons, not used + /* + connect ( + ui.addAttributeButton, SIGNAL (clicked()), + this, SLOT (addAttributeClicked())); + connect ( + ui.deleteAttributeButton, SIGNAL (clicked()), + this, SLOT (deleteAttributeClicked())); + + */ + ui.addAttributeButton->hide(); + ui.deleteAttributeButton->hide(); +} + +void BranchPropertyEditor::disconnectSignals() +{ + // Frame + disconnect(ui.framePenColorButton, 0, 0, 0); + disconnect(ui.framePaddingSpinBox, 0, 0, 0); + disconnect(ui.frameWidthSpinBox, 0, 0, 0); + disconnect(ui.frameBrushColorButton, 0, 0, 0); + disconnect(ui.frameTypeCombo, 0, 0, 0); + disconnect(ui.includeChildrenCheckBox, 0, 0, 0); + + // Link + disconnect(ui.hideLinkIfUnselected, 0, 0, 0); + + // Layout + disconnect(ui.incImgVer, 0, 0, 0); + disconnect(ui.incImgHor, 0, 0, 0); + disconnect(ui.childrenFreePositioning, 0, 0, 0); + + // Task + disconnect(ui.taskPrioDelta, 0, 0, 0); + + // Attributes + disconnect (ui.addAttributeButton, 0, 0, 0); + disconnect (ui.deleteAttributeButton, 0, 0, 0); +}