viewsdialog:provide duplicate action

work/spdx
Michail Vourlakos 4 years ago
parent e94f3ba475
commit 1a910a73e4

@ -121,6 +121,16 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="QPushButton" name="duplicateBtn">
<property name="text">
<string>Duplicate</string>
</property>
<property name="icon">
<iconset theme="edit-copy"/>
</property>
</widget>
</item>
<item> <item>
<widget class="QPushButton" name="removeBtn"> <widget class="QPushButton" name="removeBtn">
<property name="text"> <property name="text">

@ -91,6 +91,14 @@ void ViewsHandler::init()
connect(corona()->templatesManager(), &Latte::Templates::Manager::viewTemplatesChanged, this, &ViewsHandler::initViewTemplatesSubMenu); connect(corona()->templatesManager(), &Latte::Templates::Manager::viewTemplatesChanged, this, &ViewsHandler::initViewTemplatesSubMenu);
//! Duplicate Button
m_duplicateViewAction = new QAction(i18nc("duplicate dock or panel", "&Duplicate"), this);
m_duplicateViewAction->setToolTip(i18n("Duplicate selected dock or panel"));
m_duplicateViewAction->setIcon(QIcon::fromTheme("edit-copy"));
m_duplicateViewAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_D));
connectActionWithButton(m_ui->duplicateBtn, m_duplicateViewAction);
connect(m_duplicateViewAction, &QAction::triggered, this, &ViewsHandler::duplicateSelectedView);
//! Remove Button //! Remove Button
m_removeViewAction = new QAction(i18nc("remove layout", "Remove"), this); m_removeViewAction = new QAction(i18nc("remove layout", "Remove"), this);
m_removeViewAction->setToolTip(i18n("Remove selected view")); m_removeViewAction->setToolTip(i18n("Remove selected view"));
@ -242,15 +250,37 @@ void ViewsHandler::newView(const Data::Generic &templateData)
} }
} }
void ViewsHandler::removeSelectedView() void ViewsHandler::duplicateSelectedView()
{ {
qDebug() << Q_FUNC_INFO; qDebug() << Q_FUNC_INFO;
if (!m_removeViewAction->isEnabled()) { if (!m_duplicateViewAction->isEnabled() || !m_viewsController->hasSelectedView()) {
return; return;
} }
if (!m_viewsController->hasSelectedView()) { Latte::Data::View selectedview = m_viewsController->selectedViewCurrentData();
if (selectedview.state() == Data::View::IsCreated) {
Latte::Data::Layout originallayout = originalData();
Latte::Data::Layout currentlayout = currentData();
Latte::CentralLayout *centralActive = isSelectedLayoutOriginal() ? m_dialog->corona()->layoutsManager()->synchronizer()->centralLayout(originallayout.name) : nullptr;
Latte::CentralLayout *central = centralActive ? centralActive : new Latte::CentralLayout(this, currentlayout.id);
QString storedviewpath = central->storedView(selectedview.id.toInt());
Latte::Data::View duplicatedview = selectedview;
duplicatedview.setState(Data::View::OriginFromViewTemplate, storedviewpath);
m_viewsController->appendViewFromViewTemplate(duplicatedview);
} else if (selectedview.state() == Data::View::OriginFromViewTemplate) {
Latte::Data::View duplicatedview = selectedview;
m_viewsController->appendViewFromViewTemplate(duplicatedview);
}
}
void ViewsHandler::removeSelectedView()
{
qDebug() << Q_FUNC_INFO;
if (!m_removeViewAction->isEnabled() || !m_viewsController->hasSelectedView()) {
return; return;
} }

@ -85,6 +85,7 @@ signals:
private slots: private slots:
void initViewTemplatesSubMenu(); void initViewTemplatesSubMenu();
void duplicateSelectedView();
void removeSelectedView(); void removeSelectedView();
void updateWindowTitle(); void updateWindowTitle();
@ -115,6 +116,7 @@ private:
//! Actions //! Actions
QAction *m_newViewAction{nullptr}; QAction *m_newViewAction{nullptr};
QAction *m_duplicateViewAction{nullptr};
QAction *m_removeViewAction{nullptr}; QAction *m_removeViewAction{nullptr};
//! Menus //! Menus

Loading…
Cancel
Save