mirror of
https://github.com/KDE/latte-dock.git
synced 2025-03-09 16:58:16 +03:00
viewsdialog:provide context menu for views
This commit is contained in:
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…
x
Reference in New Issue
Block a user