viewsdialog:support remove dock/panel action

work/spdx
Michail Vourlakos 4 years ago
parent a13e157686
commit ac7e7b1c6d

@ -124,6 +124,38 @@ bool Views::hasSelectedView() const
return (selectedRow >= 0);
}
int Views::rowForId(QString id) const
{
for (int i = 0; i < m_proxyModel->rowCount(); ++i) {
QString rowId = m_proxyModel->data(m_proxyModel->index(i, Model::Views::IDCOLUMN), Qt::UserRole).toString();
if (rowId == id) {
return i;
}
}
return -1;
}
const Latte::Data::View Views::selectedViewCurrentData() const
{
int selectedRow = m_view->currentIndex().row();
if (selectedRow >= 0) {
QString selectedId = m_proxyModel->data(m_proxyModel->index(selectedRow, Model::Views::IDCOLUMN), Qt::UserRole).toString();
return m_model->currentData(selectedId);
} else {
return Latte::Data::View();
}
}
const Latte::Data::View Views::selectedViewOriginalData() const
{
int selectedRow = m_view->currentIndex().row();
QString selectedId = m_proxyModel->data(m_proxyModel->index(selectedRow, Model::Layouts::IDCOLUMN), Qt::UserRole).toString();
return m_model->originalData(selectedId);
}
const Latte::Data::View Views::appendViewFromViewTemplate(const Data::View &view)
{
Data::View newview = view;
@ -132,9 +164,24 @@ const Latte::Data::View Views::appendViewFromViewTemplate(const Data::View &view
return newview;
}
void Views::removeSelected()
{
int row = m_view->currentIndex().row();
if (row < 0) {
return;
}
row = qMin(row, m_proxyModel->rowCount() - 1);
m_view->selectRow(row);
Latte::Data::View selected = selectedViewCurrentData();
m_model->removeView(selected.id);
}
void Views::selectRow(const QString &id)
{
// m_view->selectRow(rowForId(id));
m_view->selectRow(rowForId(id));
}
void Views::onCurrentLayoutChanged()

@ -67,8 +67,8 @@ public:
void sortByColumn(int column, Qt::SortOrder order);
bool hasSelectedView() const;
// const Latte::Data::Layout selectedViewCurrentData() const;
// const Latte::Data::Layout selectedViewOriginalData() const;
const Latte::Data::View selectedViewCurrentData() const;
const Latte::Data::View selectedViewOriginalData() const;
const Latte::Data::View appendViewFromViewTemplate(const Data::View &view);
@ -77,7 +77,7 @@ public:
//! actions
void reset();
// void save();
// void removeSelected();
void removeSelected();
signals:
void dataChanged();
@ -85,6 +85,7 @@ signals:
private:
void init();
int rowForId(QString id) const;
QString uniqueViewName(QString name);
private slots:

@ -95,6 +95,14 @@ void ViewsHandler::init()
connect(corona()->templatesManager(), &Latte::Templates::Manager::viewTemplatesChanged, this, &ViewsHandler::initViewTemplatesSubMenu);
//! Remove Button
m_removeViewAction = new QAction(i18nc("remove layout", "Remove"), this);
m_removeViewAction->setToolTip(i18n("Remove selected view"));
m_removeViewAction->setIcon(QIcon::fromTheme("delete"));
m_removeViewAction->setShortcut(QKeySequence(Qt::Key_Delete));
connectActionWithButton(m_ui->removeBtn, m_removeViewAction);
connect(m_removeViewAction, &QAction::triggered, this, &ViewsHandler::removeSelectedView);
//! signals
connect(this, &ViewsHandler::currentLayoutChanged, this, &ViewsHandler::reload);
@ -229,6 +237,22 @@ void ViewsHandler::newView(const Data::Generic &templateData)
}
}
void ViewsHandler::removeSelectedView()
{
qDebug() << Q_FUNC_INFO;
if (!m_removeViewAction->isEnabled()) {
return;
}
if (!m_viewsController->hasSelectedView()) {
return;
}
Latte::Data::View selectedView = m_viewsController->selectedViewCurrentData();
m_viewsController->removeSelected();
}
void ViewsHandler::onCurrentLayoutIndexChanged(int row)
{
bool switchtonewlayout{true};

@ -82,6 +82,7 @@ signals:
private slots:
void initViewTemplatesSubMenu();
void removeSelectedView();
void updateWindowTitle();
void onCurrentLayoutIndexChanged(int row);
@ -108,6 +109,7 @@ private:
//! Actions
QAction *m_newViewAction{nullptr};
QAction *m_removeViewAction{nullptr};
//! Menus
QMenu *m_viewTemplatesSubMenu{nullptr};

@ -73,6 +73,31 @@ int Views::columnCount(const QModelIndex &parent) const
return columnCount();
}
int Views::rowForId(const QString &id) const
{
return m_viewsTable.indexOf(id);
}
const Latte::Data::View &Views::at(const int &row)
{
return m_viewsTable[row];
}
const Latte::Data::View &Views::currentData(const QString &id)
{
return m_viewsTable[id];
}
const Latte::Data::View Views::originalData(const QString &id)
{
if (o_viewsTable.containsId(id)){
return o_viewsTable[id];
}
return Latte::Data::View();
}
const Latte::Data::ViewsTable &Views::currentViewsData()
{
return m_viewsTable;

@ -92,6 +92,12 @@ public:
bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override;
bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()) override;
int rowForId(const QString &id) const;
const Latte::Data::View &at(const int &row);
const Latte::Data::View &currentData(const QString &id);
const Latte::Data::View originalData(const QString &id);
const Latte::Data::ViewsTable &currentViewsData();
const Latte::Data::ViewsTable &originalViewsData();

Loading…
Cancel
Save