LayerDock::LayerDock(QWidget *parent): QDockWidget(parent), mOpacityLabel(new QLabel), mOpacitySlider(new QSlider(Qt::Horizontal)), mLayerView(new LayerView), mMapDocument(0) { setObjectName(QLatin1String("layerDock")); QWidget *widget = new QWidget(this); QVBoxLayout *layout = new QVBoxLayout(widget); layout->setMargin(5); QHBoxLayout *opacityLayout = new QHBoxLayout; mOpacitySlider->setRange(0, 100); mOpacitySlider->setEnabled(false); opacityLayout->addWidget(mOpacityLabel); opacityLayout->addWidget(mOpacitySlider); mOpacityLabel->setBuddy(mOpacitySlider); MapDocumentActionHandler *handler = MapDocumentActionHandler::instance(); QMenu *newLayerMenu = new QMenu(this); newLayerMenu->addAction(handler->actionAddTileLayer()); newLayerMenu->addAction(handler->actionAddObjectGroup()); newLayerMenu->addAction(handler->actionAddImageLayer()); const QIcon newIcon(QLatin1String(":/images/16x16/document-new.png")); QToolButton *newLayerButton = new QToolButton; newLayerButton->setPopupMode(QToolButton::InstantPopup); newLayerButton->setMenu(newLayerMenu); newLayerButton->setIcon(newIcon); Utils::setThemeIcon(newLayerButton, "document-new"); QToolBar *buttonContainer = new QToolBar; buttonContainer->setFloatable(false); buttonContainer->setMovable(false); buttonContainer->setIconSize(QSize(16, 16)); buttonContainer->addWidget(newLayerButton); buttonContainer->addAction(handler->actionMoveLayerUp()); buttonContainer->addAction(handler->actionMoveLayerDown()); buttonContainer->addAction(handler->actionDuplicateLayer()); buttonContainer->addAction(handler->actionRemoveLayer()); buttonContainer->addSeparator(); buttonContainer->addAction(handler->actionToggleOtherLayers()); layout->addLayout(opacityLayout); layout->addWidget(mLayerView); layout->addWidget(buttonContainer); setWidget(widget); retranslateUi(); connect(mOpacitySlider, SIGNAL(valueChanged(int)), this, SLOT(setLayerOpacity(int))); updateOpacitySlider(); // Workaround since a tabbed dockwidget that is not currently visible still // returns true for isVisible() connect(this, SIGNAL(visibilityChanged(bool)), mLayerView, SLOT(setVisible(bool))); }
ObjectsDock::ObjectsDock(QWidget *parent) : QDockWidget(parent) , mObjectsView(new ObjectsView) , mMapDocument(nullptr) { setObjectName(QLatin1String("ObjectsDock")); mActionObjectProperties = new QAction(this); mActionObjectProperties->setIcon(QIcon(QLatin1String(":/images/16x16/document-properties.png"))); connect(mActionObjectProperties, SIGNAL(triggered()), SLOT(objectProperties())); MapDocumentActionHandler *handler = MapDocumentActionHandler::instance(); QWidget *widget = new QWidget(this); QVBoxLayout *layout = new QVBoxLayout(widget); layout->setMargin(0); layout->setSpacing(0); layout->addWidget(mObjectsView); mActionNewLayer = new QAction(this); mActionNewLayer->setIcon(QIcon(QLatin1String(":/images/16x16/document-new.png"))); connect(mActionNewLayer, SIGNAL(triggered()), handler->actionAddObjectGroup(), SIGNAL(triggered())); mActionMoveToGroup = new QAction(this); mActionMoveToGroup->setIcon(QIcon(QLatin1String(":/images/16x16/layer-object.png"))); mActionMoveUp = new QAction(this); mActionMoveUp->setIcon(QIcon(QLatin1String(":/images/16x16/go-up.png"))); mActionMoveDown = new QAction(this); mActionMoveDown->setIcon(QIcon(QLatin1String(":/images/16x16/go-down.png"))); Utils::setThemeIcon(mActionObjectProperties, "document-properties"); Utils::setThemeIcon(mActionMoveUp, "go-up"); Utils::setThemeIcon(mActionMoveDown, "go-down"); QToolBar *toolBar = new QToolBar; toolBar->setFloatable(false); toolBar->setMovable(false); toolBar->setIconSize(QSize(16, 16)); toolBar->addAction(mActionNewLayer); toolBar->addAction(handler->actionDuplicateObjects()); toolBar->addAction(handler->actionRemoveObjects()); toolBar->addAction(mActionMoveUp); toolBar->addAction(mActionMoveDown); toolBar->addAction(mActionMoveToGroup); QToolButton *button; button = dynamic_cast<QToolButton*>(toolBar->widgetForAction(mActionMoveToGroup)); mMoveToMenu = new QMenu(this); button->setPopupMode(QToolButton::InstantPopup); button->setMenu(mMoveToMenu); connect(mMoveToMenu, SIGNAL(aboutToShow()), SLOT(aboutToShowMoveToMenu())); connect(mMoveToMenu, SIGNAL(triggered(QAction*)), SLOT(triggeredMoveToMenu(QAction*))); toolBar->addAction(mActionObjectProperties); layout->addWidget(toolBar); setWidget(widget); retranslateUi(); connect(DocumentManager::instance(), &DocumentManager::documentAboutToClose, this, &ObjectsDock::documentAboutToClose); connect(mActionMoveUp, &QAction::triggered, this, &ObjectsDock::moveObjectsUp); connect(mActionMoveDown, &QAction::triggered, this, &ObjectsDock::moveObjectsDown); }