viewsdialog:provide context menu for views

work/spdx
Michail Vourlakos 4 years ago
parent 945b8ba5ea
commit 05b2a59f25

@ -107,6 +107,26 @@ void Views::init()
applyColumnWidths();
m_view->setContextMenuPolicy(Qt::ActionsContextMenu);
m_cutAction = new QAction(QIcon::fromTheme("edit-cut"), i18n("Cut"), m_view);
m_cutAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_X));
m_copyAction = new QAction(QIcon::fromTheme("edit-copy"), i18n("Copy"), m_view);
m_copyAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_C));
m_pasteAction = new QAction(QIcon::fromTheme("edit-paste"), i18n("Paste"), m_view);
m_pasteAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_V));
m_duplicateAction = new QAction(QIcon::fromTheme("edit-copy"), i18n("Duplicate Here"), m_view);
m_duplicateAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_D));
connect(m_duplicateAction, &QAction::triggered, this, &Views::duplicateSelectedView);
m_view->addAction(m_cutAction);
m_view->addAction(m_copyAction);
m_view->addAction(m_pasteAction);
m_view->addAction(m_duplicateAction);
connect(m_view, &QObject::destroyed, this, &Views::storeColumnWidths);
connect(m_view->horizontalHeader(), &QObject::destroyed, this, [&]() {
@ -172,6 +192,32 @@ const Latte::Data::View Views::appendViewFromViewTemplate(const Data::View &view
return newview;
}
void Views::duplicateSelectedView()
{
qDebug() << Q_FUNC_INFO;
if (!hasSelectedView()) {
return;
}
Latte::Data::View selectedview = selectedViewCurrentData();
if (selectedview.state() == Data::View::IsCreated) {
Latte::Data::Layout originallayout = m_handler->originalData();
Latte::Data::Layout currentlayout = m_handler->currentData();
Latte::CentralLayout *centralActive = m_handler->isSelectedLayoutOriginal() ? m_handler->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);
appendViewFromViewTemplate(duplicatedview);
} else if (selectedview.state() == Data::View::OriginFromViewTemplate) {
Latte::Data::View duplicatedview = selectedview;
appendViewFromViewTemplate(duplicatedview);
}
}
void Views::removeSelected()
{
int row = m_view->currentIndex().row();

@ -81,6 +81,9 @@ public:
void save();
void removeSelected();
public slots:
void duplicateSelectedView();
signals:
void dataChanged();
@ -110,6 +113,12 @@ private:
KConfigGroup m_storage;
//! context menu actions for docks panels
QAction *m_cutAction;
QAction *m_copyAction;
QAction *m_duplicateAction;
QAction *m_pasteAction;
//! current data
Model::Views *m_model{nullptr};
QSortFilterProxyModel *m_proxyModel{nullptr};

@ -97,7 +97,7 @@ void ViewsHandler::init()
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);
connect(m_duplicateViewAction, &QAction::triggered, m_viewsController, &Controller::Views::duplicateSelectedView);
//! Remove Button
m_removeViewAction = new QAction(i18nc("remove layout", "Remove"), this);
@ -250,32 +250,6 @@ void ViewsHandler::newView(const Data::Generic &templateData)
}
}
void ViewsHandler::duplicateSelectedView()
{
qDebug() << Q_FUNC_INFO;
if (!m_duplicateViewAction->isEnabled() || !m_viewsController->hasSelectedView()) {
return;
}
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;

@ -85,7 +85,6 @@ signals:
private slots:
void initViewTemplatesSubMenu();
void duplicateSelectedView();
void removeSelectedView();
void updateWindowTitle();

Loading…
Cancel
Save