From 23fe87e7364b27419d77d8c57655962d42f8548f Mon Sep 17 00:00:00 2001 From: Michail Vourlakos Date: Thu, 8 Apr 2021 13:39:44 +0300 Subject: [PATCH] viewsdialog:add properly new temporary views --- app/data/viewdata.cpp | 13 ------------ app/data/viewdata.h | 2 -- app/data/viewstable.cpp | 22 +++++++++++++++++++- app/data/viewstable.h | 2 ++ app/settings/viewsdialog/viewscontroller.cpp | 5 +++++ app/settings/viewsdialog/viewscontroller.h | 2 ++ app/settings/viewsdialog/viewshandler.cpp | 10 +++++++++ app/settings/viewsdialog/viewsmodel.cpp | 10 ++------- app/settings/viewsdialog/viewsmodel.h | 2 +- 9 files changed, 43 insertions(+), 25 deletions(-) diff --git a/app/data/viewdata.cpp b/app/data/viewdata.cpp index 4b06ad699..6c4a7aac0 100644 --- a/app/data/viewdata.cpp +++ b/app/data/viewdata.cpp @@ -23,8 +23,6 @@ namespace Latte { namespace Data { -const char *TEMPIDPREFIX = "temp:"; - View::View() : Generic() { @@ -189,17 +187,6 @@ bool View::hasSubContainment(const QString &subId) const return subcontainments.containsId(subId); } -QString View::tempId() const -{ - if (isCreated()) { - return id; - } - - QString tid = id; - tid.remove(0, QString(TEMPIDPREFIX).count()); - return tid; -} - View::State View::state() const { return m_state; diff --git a/app/data/viewdata.h b/app/data/viewdata.h index e8db9d64b..0ad46601b 100644 --- a/app/data/viewdata.h +++ b/app/data/viewdata.h @@ -66,8 +66,6 @@ public: bool hasLayoutOrigin() const; bool hasSubContainment(const QString &subId) const; - QString tempId() const; - View::State state() const; void setState(View::State state, QString file = QString(), QString view = QString()); diff --git a/app/data/viewstable.cpp b/app/data/viewstable.cpp index 1eefe584e..024ccda71 100644 --- a/app/data/viewstable.cpp +++ b/app/data/viewstable.cpp @@ -25,6 +25,8 @@ namespace Latte { namespace Data { +const char *TEMPIDPREFIX = "temp:"; + ViewsTable::ViewsTable() : GenericTable() { @@ -71,6 +73,25 @@ bool ViewsTable::operator!=(const ViewsTable &rhs) const return !(*this == rhs); } +void ViewsTable::appendTemporaryView(const Data::View &view) +{ + int maxTempId = 0; + + for(int i=0; i maxTempId) { + maxTempId = tid.toInt(); + } + } + } + + Data::View newview = view; + newview.id = QString(TEMPIDPREFIX + QString::number(maxTempId+1)); + m_list << newview; +} + void ViewsTable::print() { qDebug().noquote() << "Views initialized : " + (isInitialized ? QString("true") : QString("false")); @@ -81,6 +102,5 @@ void ViewsTable::print() } } - } } diff --git a/app/data/viewstable.h b/app/data/viewstable.h index 83992008e..a8be1ad2c 100644 --- a/app/data/viewstable.h +++ b/app/data/viewstable.h @@ -43,6 +43,8 @@ public: void print(); + void appendTemporaryView(const Data::View &view); + //! Operators ViewsTable &operator=(const ViewsTable &rhs); ViewsTable &operator=(ViewsTable &&rhs); diff --git a/app/settings/viewsdialog/viewscontroller.cpp b/app/settings/viewsdialog/viewscontroller.cpp index 240be6924..d89856a0a 100644 --- a/app/settings/viewsdialog/viewscontroller.cpp +++ b/app/settings/viewsdialog/viewscontroller.cpp @@ -124,6 +124,11 @@ bool Views::hasSelectedView() const return (selectedRow >= 0); } +void Views::appendViewFromViewTemplate(const Data::View &view) +{ + m_model->appendTemporaryView(view); +} + void Views::selectRow(const QString &id) { // m_view->selectRow(rowForId(id)); diff --git a/app/settings/viewsdialog/viewscontroller.h b/app/settings/viewsdialog/viewscontroller.h index 37b559d33..496f98cbd 100644 --- a/app/settings/viewsdialog/viewscontroller.h +++ b/app/settings/viewsdialog/viewscontroller.h @@ -70,6 +70,8 @@ public: // const Latte::Data::Layout selectedViewCurrentData() const; // const Latte::Data::Layout selectedViewOriginalData() const; + void appendViewFromViewTemplate(const Data::View &view); + void selectRow(const QString &id); //! actions diff --git a/app/settings/viewsdialog/viewshandler.cpp b/app/settings/viewsdialog/viewshandler.cpp index 28730738c..2a452933f 100644 --- a/app/settings/viewsdialog/viewshandler.cpp +++ b/app/settings/viewsdialog/viewshandler.cpp @@ -29,10 +29,12 @@ #include "../settingsdialog/delegates/layoutcmbitemdelegate.h" #include "../../data/layoutstable.h" #include "../../data/genericbasictable.h" +#include "../../data/viewstable.h" #include "../../lattecorona.h" #include "../../layout/abstractlayout.h" #include "../../layout/centrallayout.h" #include "../../layouts/manager.h" +#include "../../layouts/storage.h" #include "../../layouts/synchronizer.h" #include "../../templates/templatesmanager.h" #include "../../tools/commontools.h" @@ -214,6 +216,14 @@ void ViewsHandler::save() void ViewsHandler::newView(const QString &templateId) { qDebug() << "new view from template :: " << templateId; + + Data::ViewsTable views = Latte::Layouts::Storage::self()->views(templateId); + + if (views.rowCount() > 0) { + Data::View viewfromtemplate = views[0]; + viewfromtemplate.setState(Data::View::OriginFromViewTemplate, templateId); + m_viewsController->appendViewFromViewTemplate(views[0]); + } } void ViewsHandler::onCurrentLayoutIndexChanged(int row) diff --git a/app/settings/viewsdialog/viewsmodel.cpp b/app/settings/viewsdialog/viewsmodel.cpp index efc74594a..04250e0f9 100644 --- a/app/settings/viewsdialog/viewsmodel.cpp +++ b/app/settings/viewsdialog/viewsmodel.cpp @@ -131,18 +131,12 @@ void Views::resetData() setOriginalData(o_viewsTable); } -void Views::appendView(const Latte::Data::View &view) +void Views::appendTemporaryView(const Latte::Data::View &view) { //int newRow = m_layoutsTable.sortedPosForName(layout.name); - Data::View newview = view; - - if (!newview.isCreated()) { - - } - beginInsertRows(QModelIndex(), m_viewsTable.rowCount(), m_viewsTable.rowCount()); - m_viewsTable << view; + m_viewsTable.appendTemporaryView(view); endInsertRows(); emit rowsInserted(); diff --git a/app/settings/viewsdialog/viewsmodel.h b/app/settings/viewsdialog/viewsmodel.h index 59db919ff..5da5271eb 100644 --- a/app/settings/viewsdialog/viewsmodel.h +++ b/app/settings/viewsdialog/viewsmodel.h @@ -77,7 +77,7 @@ public: //! all original data will become also current void resetData(); - void appendView(const Latte::Data::View &view); + void appendTemporaryView(const Latte::Data::View &view); void removeView(const QString &id); int rowCount() const;