diff --git a/app/data/layoutdata.cpp b/app/data/layoutdata.cpp index c6219b538..6dae3e027 100644 --- a/app/data/layoutdata.cpp +++ b/app/data/layoutdata.cpp @@ -43,7 +43,6 @@ Layout::Layout(Layout &&o) isTemplate(o.isTemplate), hasDisabledBorders(o.hasDisabledBorders), activities(o.activities), - shares(o.shares), backgroundStyle(o.backgroundStyle) { } @@ -60,7 +59,6 @@ Layout::Layout(const Layout &o) isTemplate(o.isTemplate), hasDisabledBorders(o.hasDisabledBorders), activities(o.activities), - shares(o.shares), backgroundStyle(o.backgroundStyle) { } @@ -79,7 +77,6 @@ Layout &Layout::operator=(Layout &&rhs) isTemplate = rhs.isTemplate; hasDisabledBorders = rhs.hasDisabledBorders; activities = rhs.activities; - shares = rhs.shares; backgroundStyle = rhs.backgroundStyle; return (*this); @@ -99,7 +96,6 @@ Layout &Layout::operator=(const Layout &rhs) isTemplate = rhs.isTemplate; hasDisabledBorders = rhs.hasDisabledBorders; activities = rhs.activities; - shares = rhs.shares; backgroundStyle = rhs.backgroundStyle; return (*this); @@ -119,7 +115,6 @@ bool Layout::operator==(const Layout &rhs) const && (isTemplate == rhs.isTemplate) && (hasDisabledBorders == rhs.hasDisabledBorders) && (activities == rhs.activities) - && (shares == rhs.shares) && (backgroundStyle == rhs.backgroundStyle); } @@ -153,11 +148,6 @@ bool Layout::isNull() const return (id.isEmpty() && name.isEmpty()); } -bool Layout::isShared() const -{ - return !shares.isEmpty(); -} - bool Layout::isSystemTemplate() const { return isTemplate && !id.startsWith(QDir::tempPath()) && !id.startsWith(QDir::homePath()); diff --git a/app/data/layoutdata.h b/app/data/layoutdata.h index ba0950326..957ff7270 100644 --- a/app/data/layoutdata.h +++ b/app/data/layoutdata.h @@ -54,12 +54,10 @@ public: bool isTemplate{false}; bool hasDisabledBorders{false}; QStringList activities; - QStringList shares; Latte::Layout::BackgroundStyle backgroundStyle{Latte::Layout::ColorBackgroundStyle}; //! Functionality - bool isShared() const; bool isOnAllActivities() const; bool isForFreeActivities() const; bool isTemporary() const; diff --git a/app/data/layoutstable.cpp b/app/data/layoutstable.cpp index edbc07276..f446bcd1a 100644 --- a/app/data/layoutstable.cpp +++ b/app/data/layoutstable.cpp @@ -72,59 +72,6 @@ LayoutsTable LayoutsTable::subtracted(const LayoutsTable &rhs) const return subtract; } -QStringList LayoutsTable::allSharesIds() const -{ - QStringList sharesIds; - - for(int i=0; isynchronizer()->centralLayout(name); - if (!tempCentral) { - //! Identify best active layout to be used for metrics calculations. - //! Active layouts are always take into account their shared layouts for their metrics - SharedLayout *sharedLayout = m_layoutsManager->synchronizer()->sharedLayout(name); - - if (sharedLayout) { - tempCentral = sharedLayout->currentCentralLayout(); - } - } - if (tempCentral) { result = tempCentral; } diff --git a/app/layout/CMakeLists.txt b/app/layout/CMakeLists.txt index d4d2b2f1b..af70f1e73 100644 --- a/app/layout/CMakeLists.txt +++ b/app/layout/CMakeLists.txt @@ -3,6 +3,5 @@ set(lattedock-app_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/abstractlayout.cpp ${CMAKE_CURRENT_SOURCE_DIR}/centrallayout.cpp ${CMAKE_CURRENT_SOURCE_DIR}/genericlayout.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/sharedlayout.cpp PARENT_SCOPE ) diff --git a/app/layout/centrallayout.cpp b/app/layout/centrallayout.cpp index c77186d24..500472736 100644 --- a/app/layout/centrallayout.cpp +++ b/app/layout/centrallayout.cpp @@ -22,7 +22,6 @@ // local #include -#include "sharedlayout.h" #include "../apptypes.h" #include "../lattecorona.h" #include "../screenpool.h" @@ -52,21 +51,10 @@ CentralLayout::~CentralLayout() { } -void CentralLayout::unloadContainments() -{ - Layout::GenericLayout::unloadContainments(); - - if (m_sharedLayout) { - disconnectSharedConnections(); - m_sharedLayout->removeCentralLayout(this); - } -} - void CentralLayout::init() { connect(this, &CentralLayout::activitiesChanged, this, &CentralLayout::saveConfig); connect(this, &CentralLayout::disableBordersForMaximizedWindowsChanged, this, &CentralLayout::saveConfig); - connect(this, &CentralLayout::sharedLayoutNameChanged, this, &CentralLayout::saveConfig); connect(this, &CentralLayout::showInMenuChanged, this, &CentralLayout::saveConfig); } @@ -91,13 +79,6 @@ void CentralLayout::initToCorona(Latte::Corona *corona) } }); } - - //! Request the SharedLayout in case there is one and Latte is functioning in MultipleLayouts mode - if (m_corona->layoutsManager()->memoryUsage() == MemoryUsage::MultipleLayouts && !m_sharedLayoutName.isEmpty()) { - if (m_corona->layoutsManager()->synchronizer()->registerAtSharedLayout(this, m_sharedLayoutName)) { - setSharedLayout(m_corona->layoutsManager()->synchronizer()->sharedLayout(m_sharedLayoutName)); - } - } } } @@ -182,85 +163,6 @@ void CentralLayout::setActivities(QStringList activities) emit activitiesChanged(); } -QString CentralLayout::sharedLayoutName() const -{ - return m_sharedLayoutName; -} - -void CentralLayout::setSharedLayoutName(QString name) -{ - if (m_sharedLayoutName == name || (!Layouts::Importer::layoutExists(name) && !name.isEmpty())) { - return; - } - - m_sharedLayoutName = name; - emit sharedLayoutNameChanged(); -} - -SharedLayout *CentralLayout::sharedLayout() const -{ - return m_sharedLayout; -} - -void CentralLayout::setSharedLayout(SharedLayout *layout) -{ - if (m_sharedLayout == layout) { - return; - } - - disconnectSharedConnections(); - - m_sharedLayout = layout; - - if (layout) { - setSharedLayoutName(m_sharedLayout->name()); - - //! attach new signals - m_sharedConnections << connect(m_sharedLayout, &Layout::GenericLayout::viewsCountChanged, this, &Layout::GenericLayout::viewsCountChanged); - m_sharedConnections << connect(m_sharedLayout, &Layout::AbstractLayout::nameChanged, this, [this]() { - setSharedLayoutName(m_sharedLayout->name()); - }); - m_sharedConnections << connect(m_sharedLayout, &Layout::GenericLayout::viewEdgeChanged, this, [this]() { - syncLatteViewsToScreens(); - }); - - m_sharedConnections << connect(m_sharedLayout, &GenericLayout::lastConfigViewForChanged, this, &GenericLayout::lastConfigViewForChanged); - } else { - setSharedLayoutName(QString()); - } - - syncLatteViewsToScreens(); - emit viewsCountChanged(); -} - -void CentralLayout::disconnectSharedConnections() -{ - //! drop old signals - for (const auto &sc : m_sharedConnections) { - QObject::disconnect(sc); - } - - m_sharedConnections.clear(); -} - -void CentralLayout::setLastConfigViewFor(Latte::View *view) -{ - if (m_sharedLayout) { - m_sharedLayout->setLastConfigViewFor(view); - } else { - GenericLayout::setLastConfigViewFor(view); - } -} - -Latte::View *CentralLayout::lastConfigViewFor() -{ - if (m_sharedLayout) { - return m_sharedLayout->lastConfigViewFor(); - } else { - return GenericLayout::lastConfigViewFor(); - } -} - Data::Layout CentralLayout::data() const { Data::Layout cdata; @@ -286,12 +188,6 @@ void CentralLayout::loadConfig() m_showInMenu = m_layoutGroup.readEntry("showInMenu", false); m_activities = m_layoutGroup.readEntry("activities", QStringList()); - QString sharedLayoutName = m_layoutGroup.readEntry("sharedLayout", QString()); - - if (Layouts::Importer::layoutExists(sharedLayoutName)) { - m_sharedLayoutName = sharedLayoutName; - } - emit activitiesChanged(); } @@ -300,24 +196,11 @@ void CentralLayout::saveConfig() qDebug() << "CENTRAL layout is saving... for layout:" << m_layoutName; m_layoutGroup.writeEntry("showInMenu", m_showInMenu); m_layoutGroup.writeEntry("disableBordersForMaximizedWindows", m_disableBordersForMaximizedWindows); - m_layoutGroup.writeEntry("sharedLayout", m_sharedLayoutName); m_layoutGroup.writeEntry("activities", m_activities); } //! OVERRIDES -void CentralLayout::addView(Plasma::Containment *containment, bool forceOnPrimary, int explicitScreen, Layout::ViewsMap *occupied) -{ - if (m_sharedLayout) { - //! consider already occupied edges from SharedLayout - Layout::ViewsMap ocMap = m_sharedLayout->validViewsMap(); - qDebug() << " HIGH PRIORITY ALREADY OCCUPIED EDGES :: " << ocMap; - Layout::GenericLayout::addView(containment, forceOnPrimary, explicitScreen, &ocMap); - } else { - Layout::GenericLayout::addView(containment, forceOnPrimary, explicitScreen, occupied); - } -} - const QStringList CentralLayout::appliedActivities() { if (!m_corona) { @@ -331,149 +214,6 @@ const QStringList CentralLayout::appliedActivities() } } -QList CentralLayout::latteViews() -{ - if (m_sharedLayout) { - QList views = Layout::GenericLayout::latteViews(); - views << m_sharedLayout->latteViews(); - - return views; - } - - return Layout::GenericLayout::latteViews(); -} - -int CentralLayout::viewsCount(int screen) const -{ - if (!m_corona) { - return 0; - } - - int views = Layout::GenericLayout::viewsCount(screen); - - if (m_sharedLayout) { - QScreen *scr = m_corona->screenPool()->screenForId(screen); - - for (const auto view : m_sharedLayout->latteViews()) { - if (view && view->screen() == scr && !view->containment()->destroyed()) { - ++views; - } - } - } - - return views; -} - -int CentralLayout::viewsCount(QScreen *screen) const -{ - if (!m_corona) { - return 0; - } - - int views = Layout::GenericLayout::viewsCount(screen); - - if (m_sharedLayout) { - for (const auto view : m_sharedLayout->latteViews()) { - if (view && view->screen() == screen && !view->containment()->destroyed()) { - ++views; - } - } - } - - return views; -} - -int CentralLayout::viewsCount() const -{ - if (!m_corona) { - return 0; - } - - int views = Layout::GenericLayout::viewsCount(); - - if (m_sharedLayout) { - for (const auto view : m_sharedLayout->latteViews()) { - if (view && view->containment() && !view->containment()->destroyed()) { - ++views; - } - } - } - - return views; -} - -QList CentralLayout::availableEdgesForView(QScreen *scr, Latte::View *forView) const -{ - using Plasma::Types; - QList edges{Types::BottomEdge, Types::LeftEdge, - Types::TopEdge, Types::RightEdge}; - - if (!m_corona) { - return edges; - } - - edges = Layout::GenericLayout::availableEdgesForView(scr, forView); - - if (m_sharedLayout) { - for (const auto view : m_sharedLayout->latteViews()) { - //! make sure that availabe edges takes into account only views that should be excluded, - //! this is why the forView should not be excluded - if (view && view != forView && view->positioner()->currentScreenName() == scr->name()) { - edges.removeOne(view->location()); - } - } - } - - return edges; -} - -QList CentralLayout::freeEdges(QScreen *scr) const -{ - using Plasma::Types; - QList edges{Types::BottomEdge, Types::LeftEdge, - Types::TopEdge, Types::RightEdge}; - - if (!m_corona) { - return edges; - } - - edges = Layout::GenericLayout::freeEdges(scr); - - if (m_sharedLayout) { - for (const auto view : m_sharedLayout->latteViews()) { - if (view && view->positioner()->currentScreenName() == scr->name()) { - edges.removeOne(view->location()); - } - } - } - - return edges; -} - -QList CentralLayout::freeEdges(int screen) const -{ - using Plasma::Types; - QList edges{Types::BottomEdge, Types::LeftEdge, - Types::TopEdge, Types::RightEdge}; - - if (!m_corona) { - return edges; - } - - edges = Layout::GenericLayout::freeEdges(screen); - QScreen *scr = m_corona->screenPool()->screenForId(screen); - - if (m_sharedLayout) { - for (const auto view : m_sharedLayout->latteViews()) { - if (view && scr && view->positioner()->currentScreenName() == scr->name()) { - edges.removeOne(view->location()); - } - } - } - - return edges; -} - Types::ViewType CentralLayout::latteViewType(uint containmentId) const { for (const auto view : m_latteViews) { @@ -482,39 +222,7 @@ Types::ViewType CentralLayout::latteViewType(uint containmentId) const } } - if (m_sharedLayout) { - return m_sharedLayout->latteViewType(containmentId); - } - return Types::DockView; } -QList CentralLayout::sortedLatteViews(QList views) -{ - QList vws = latteViews(); - - return Layout::GenericLayout::sortedLatteViews(vws); -} - -QList CentralLayout::viewsWithPlasmaShortcuts() -{ - QList combined = Layout::GenericLayout::viewsWithPlasmaShortcuts(); - - if (m_sharedLayout) { - combined << m_sharedLayout->viewsWithPlasmaShortcuts(); - } - - return combined; -} - -void CentralLayout::syncLatteViewsToScreens(Layout::ViewsMap *occupiedMap) -{ - if (m_sharedLayout) { - Layout::ViewsMap map = m_sharedLayout->validViewsMap(); - Layout::GenericLayout::syncLatteViewsToScreens(&map); - } else { - Layout::GenericLayout::syncLatteViewsToScreens(); - } -} - } diff --git a/app/layout/centrallayout.h b/app/layout/centrallayout.h index 9a79250f0..68db028bd 100644 --- a/app/layout/centrallayout.h +++ b/app/layout/centrallayout.h @@ -30,20 +30,18 @@ namespace Latte { class Corona; -class SharedLayout; } namespace Latte { -//! CentralLayout is a very IMPORTANT layout that is responsible for specific Activities or not -//! and it is used for all memory modes (SINGLE/MULTIPLE) at all times. +//! CentralLayout is a layout that is assigned to ALL Activities, FREE Activities or SPRECIFIC Activities. +//! It is a real running layout instance. //! //! It holds all the important settings in order to provide specific //! behavior for the Activities is assigned at. //! for example: activities for which its views should be shown, //! if the maximized windows will be borderless, -//! if the layout will be shown at user layout contextmenu, -//! which shared layout will be used on top of that layout. +//! if the layout will be shown at user layout contextmenu. //! class CentralLayout : public Layout::GenericLayout @@ -65,51 +63,21 @@ public: bool isForFreeActivities() const; bool isOnAllActivities() const; - QString sharedLayoutName() const; - void setSharedLayoutName(QString name); - QStringList activities() const; void setActivities(QStringList activities); - SharedLayout *sharedLayout() const; - void setSharedLayout(SharedLayout *layout); - - //! OVERRIDE GeneralLayout implementations - void addView(Plasma::Containment *containment, bool forceOnPrimary = false, int explicitScreen = -1, Layout::ViewsMap *occupied = nullptr) override; - void syncLatteViewsToScreens(Layout::ViewsMap *occupiedMap = nullptr) override; - void unloadContainments() override; const QStringList appliedActivities() override; Types::ViewType latteViewType(uint containmentId) const override; - QList latteViews() override; - - int viewsCount(int screen) const override; - int viewsCount(QScreen *screen) const override; - int viewsCount() const override; Layout::Type type() const override; Data::Layout data() const; - void setLastConfigViewFor(Latte::View *view) override; - Latte::View *lastConfigViewFor() override; - - //! Available edges for specific view in that screen - QList availableEdgesForView(QScreen *scr, Latte::View *forView) const override; - //! All free edges in that screen - QList freeEdges(QScreen *scr) const override; - QList freeEdges(int screen) const override; - - QList sortedLatteViews(QList views = QList()) override; - QList viewsWithPlasmaShortcuts() override; - signals: void activitiesChanged(); void disableBordersForMaximizedWindowsChanged(); void showInMenuChanged(); - void sharedLayoutNameChanged(); private slots: - void disconnectSharedConnections(); - void loadConfig(); void saveConfig(); @@ -123,14 +91,7 @@ private: private: bool m_disableBordersForMaximizedWindows{false}; bool m_showInMenu{false}; - QString m_sharedLayoutName; QStringList m_activities; - - QPointer m_lastSettingsView; - - QPointer m_sharedLayout; - - QList m_sharedConnections; }; } diff --git a/app/layout/sharedlayout.cpp b/app/layout/sharedlayout.cpp deleted file mode 100644 index 3d6e450b1..000000000 --- a/app/layout/sharedlayout.cpp +++ /dev/null @@ -1,263 +0,0 @@ -/* -* Copyright 2019 Michail Vourlakos -* -* This file is part of Latte-Dock -* -* Latte-Dock is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public License as -* published by the Free Software Foundation; either version 2 of -* the License, or (at your option) any later version. -* -* Latte-Dock is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see . -*/ - -#include "sharedlayout.h" - -// local -#include "centrallayout.h" -#include "../lattecorona.h" -#include "../screenpool.h" -#include "../layouts/manager.h" -#include "../view/view.h" - -namespace Latte { - -SharedLayout::SharedLayout(CentralLayout *assigned, QObject *parent, QString layoutFile, QString layoutName) - : Layout::GenericLayout (parent, layoutFile, layoutName) -{ - initToCorona(assigned->corona()); - - connect(m_corona->layoutsManager(), &Layouts::Manager::currentLayoutNameChanged, this, &SharedLayout::updateLastUsedCentralLayout); - - addCentralLayout(assigned); - updateLastUsedCentralLayout(); -} - - -SharedLayout::~SharedLayout() -{ - qDebug() << " SHARED LAYOUT destroying ::: " << name(); -} - -bool SharedLayout::contains(const QString &layoutName) -{ - for (const auto &layout : m_centralLayouts) { - if (layout->name() == layoutName) { - return true; - } - } - - return false; -} - -bool SharedLayout::isCurrent() const -{ - for (const auto &layout : m_centralLayouts) { - if (layout->isCurrent()) { - return true; - } - } - - return false; -} - -Layout::Type SharedLayout::type() const -{ - return Layout::Type::Shared; -} - - -const QStringList SharedLayout::appliedActivities() -{ - if (!m_corona) { - return {}; - } - - QStringList activities; - - for (const auto &layout : m_centralLayouts) { - activities << layout->appliedActivities(); - } - - return activities; -} - -void SharedLayout::updateLastUsedCentralLayout() -{ - for (const auto &layout : m_centralLayouts) { - if (layout->isCurrent()) { - m_lastUsedCentralLayout = layout->name(); - break; - } - } -} - -CentralLayout *SharedLayout::currentCentralLayout() const -{ - //! first the current active one - for (const auto &layout : m_centralLayouts) { - if (layout->isCurrent()) { - return layout; - } - } - - //! the last used - for (const auto &layout : m_centralLayouts) { - if (layout->name() == m_lastUsedCentralLayout) { - return layout; - } - } - - return nullptr; -} - -void SharedLayout::addCentralLayout(CentralLayout *layout) -{ - if (layout != nullptr && !m_centralLayouts.contains(layout)) { - m_centralLayouts.append(layout); - - qDebug() << " ADDING Central : " << layout->name() << " at Shared: " << name(); - connect(layout, &GenericLayout::activitiesChanged, this, &GenericLayout::activitiesChanged); - emit activitiesChanged(); - emit viewsCountChanged(); - - updateLastUsedActivity(); - } -} - -void SharedLayout::removeCentralLayout(CentralLayout *layout) -{ - if (m_centralLayouts.contains(layout)) { - qDebug() << "SHAREDLAYOUT <" << name() << "> : Removing active layout, " << layout->name(); - m_centralLayouts.removeAll(layout); - - disconnect(layout, &GenericLayout::activitiesChanged, this, &GenericLayout::activitiesChanged); - - if (m_centralLayouts.count() > 0) { - emit activitiesChanged(); - } else { - //! all assigned layouts have been unloaded so the shared layout should be destroyed also - emit layoutDestroyed(this); - } - - //! viewsCount signal is not needed to be trigerred here because - //! in such case the views number has not been changed for the rest - //! active layouts - } -} - -//! OVERRIDE -int SharedLayout::viewsCount(int screen) const -{ - if (!m_corona) { - return 0; - } - - CentralLayout *current = currentCentralLayout(); - - if (current) { - return current->viewsCount(screen); - } - - return Layout::GenericLayout::viewsCount(screen); -} - -int SharedLayout::viewsCount(QScreen *screen) const -{ - if (!m_corona) { - return 0; - } - - CentralLayout *current = currentCentralLayout(); - - if (current) { - return current->viewsCount(screen); - } - - return Layout::GenericLayout::viewsCount(screen);; -} - -int SharedLayout::viewsCount() const -{ - if (!m_corona) { - return 0; - } - - CentralLayout *current = currentCentralLayout(); - - if (current) { - return current->viewsCount(); - } - - return Layout::GenericLayout::viewsCount(); -} - -QList SharedLayout::availableEdgesForView(QScreen *scr, Latte::View *forView) const -{ - /* using Plasma::Types; - QList edges{Types::BottomEdge, Types::LeftEdge, - Types::TopEdge, Types::RightEdge}; - - if (!m_corona) { - return edges; - }*/ - - return Layout::GenericLayout::availableEdgesForView(scr, forView); -} - -QList SharedLayout::freeEdges(QScreen *scr) const -{ - /* using Plasma::Types; - QList edges{Types::BottomEdge, Types::LeftEdge, - Types::TopEdge, Types::RightEdge}; - - if (!m_corona) { - return edges; - } - - CentralLayout *current = currentCentralLayout(); - - if (current) { - return current->freeEdges(scr); - }*/ - - return Layout::GenericLayout::freeEdges(scr); -} - -QList SharedLayout::freeEdges(int screen) const -{ - /* using Plasma::Types; - QList edges{Types::BottomEdge, Types::LeftEdge, - Types::TopEdge, Types::RightEdge}; - - if (!m_corona) { - return edges; - } - - CentralLayout *current = currentCentralLayout(); - - if (current) { - return current->freeEdges(screen); - }*/ - - return Layout::GenericLayout::freeEdges(screen); -} - -QList SharedLayout::sortedLatteViews(QList views) -{ - CentralLayout *current = currentCentralLayout(); - - if (current) { - return current->sortedLatteViews(); - } - - return Layout::GenericLayout::sortedLatteViews(); -} - -} diff --git a/app/layout/sharedlayout.h b/app/layout/sharedlayout.h deleted file mode 100644 index 90cdf6a4f..000000000 --- a/app/layout/sharedlayout.h +++ /dev/null @@ -1,91 +0,0 @@ -/* -* Copyright 2019 Michail Vourlakos -* -* This file is part of Latte-Dock -* -* Latte-Dock is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public License as -* published by the Free Software Foundation; either version 2 of -* the License, or (at your option) any later version. -* -* Latte-Dock is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see . -*/ - -#ifndef SHAREDLAYOUT_H -#define SHAREDLAYOUT_H - -// local -#include "genericlayout.h" - -// Qt -#include - -namespace Latte { -class CentralLayout; -} - - -namespace Latte { - -//! SharedLayout is a layout that exists only as long as it belongs to one or -//! more CentralLayout(s). It is a layer above a central or more layouts and can -//! be used from CentralLayouts to share Latte:View(s) . Much of its functionality -//! is provided by the CentralLayouts it belongs to. For example the activities -//! that its views should be shown is identified only from the central layouts -//! it belongs to - -class SharedLayout : public Layout::GenericLayout -{ - Q_OBJECT - -public: - SharedLayout(CentralLayout *assigned, QObject *parent, QString layoutFile, QString layoutName = QString()); - ~SharedLayout() override; - - const QStringList appliedActivities() override; - CentralLayout *currentCentralLayout() const; - - //! OVERRIDE GeneralLayout implementations - bool isCurrent() const override; - bool contains(const QString &layoutName); - - int viewsCount(int screen) const override; - int viewsCount(QScreen *screen) const override; - int viewsCount() const override; - - Layout::Type type() const override; - - //! Available edges for specific view in that screen - QList availableEdgesForView(QScreen *scr, Latte::View *forView) const override; - //! All free edges in that screen - QList freeEdges(QScreen *scr) const override; - QList freeEdges(int screen) const override; - - QList sortedLatteViews(QList views = QList()) override; - -public slots: - void addCentralLayout(CentralLayout *layout); - void removeCentralLayout(CentralLayout *layout); - -signals: - void layoutDestroyed(SharedLayout *layout); - -private slots: - void updateLastUsedCentralLayout(); - -private: - QString m_lastUsedCentralLayout; - - QList m_centralLayouts; - -}; - -} - -#endif //SHAREDLAYOUT_H diff --git a/app/layouts/manager.cpp b/app/layouts/manager.cpp index e93527ad4..a25ed0e74 100644 --- a/app/layouts/manager.cpp +++ b/app/layouts/manager.cpp @@ -178,16 +178,6 @@ QStringList Manager::centralLayoutsNames() return m_synchronizer->centralLayoutsNames(); } -QStringList Manager::sharedLayoutsNames() -{ - return m_synchronizer->sharedLayoutsNames(); -} - -QStringList Manager::storedSharedLayouts() const -{ - return m_synchronizer->storedSharedLayouts(); -} - CentralLayout *Manager::currentLayout() const { return m_synchronizer->currentLayout(); diff --git a/app/layouts/manager.h b/app/layouts/manager.h index 57261865f..9340a8784 100644 --- a/app/layouts/manager.h +++ b/app/layouts/manager.h @@ -93,7 +93,6 @@ public: QStringList layouts() const; QStringList menuLayouts() const; - QStringList storedSharedLayouts() const; MemoryUsage::LayoutsMemory memoryUsage() const; void setMemoryUsage(MemoryUsage::LayoutsMemory memoryUsage); @@ -113,7 +112,6 @@ public slots: Q_INVOKABLE bool switchToLayout(QString layoutName, int previousMemoryUsage = -1); Q_INVOKABLE QStringList centralLayoutsNames(); - Q_INVOKABLE QStringList sharedLayoutsNames(); signals: void centralLayoutsChanged(); diff --git a/app/layouts/synchronizer.cpp b/app/layouts/synchronizer.cpp index 0f5774c43..06bf7b8cd 100644 --- a/app/layouts/synchronizer.cpp +++ b/app/layouts/synchronizer.cpp @@ -26,7 +26,6 @@ #include "../lattecorona.h" #include "../layout/centrallayout.h" #include "../layout/genericlayout.h" -#include "../layout/sharedlayout.h" #include "../settings/universalsettings.h" #include "../templates/templatesmanager.h" #include "../view/view.h" @@ -104,51 +103,12 @@ bool Synchronizer::layoutIsAssigned(QString layoutName) return m_assignedLayouts.values().contains(layoutName); } -bool Synchronizer::mapHasRecord(const QString &record, SharesMap &map) -{ - for (SharesMap::iterator i=map.begin(); i!=map.end(); ++i) { - if (i.value().contains(record)) { - return true; - } - } - - return false; -} - -bool Synchronizer::registerAtSharedLayout(CentralLayout *central, QString id) -{ - if (m_manager->memoryUsage() == MemoryUsage::SingleLayout || centralLayout(id)) { - //! if memory is functioning to SINGLE mode OR shared layout has already - //! been loaded as CentralLayout - return false; - } - - for (int i = 0; i < m_sharedLayouts.size(); ++i) { - SharedLayout *layout = m_sharedLayouts.at(i); - - if (layout->name() == id) { - layout->addCentralLayout(central); - return true; - } - } - - //! If SharedLayout was not found, we must create it - SharedLayout *top = new SharedLayout(central, this, Importer::layoutUserFilePath(id)); - m_sharedLayouts.append(top); - top->importToCorona(); - - connect(top, &SharedLayout::layoutDestroyed, this, &Synchronizer::unloadSharedLayout); - - return true; -} - int Synchronizer::centralLayoutPos(QString id) const { for (int i = 0; i < m_centralLayouts.size(); ++i) { CentralLayout *layout = m_centralLayouts.at(i); if (layout->name() == id) { - return i; } } @@ -279,23 +239,6 @@ QString Synchronizer::shouldSwitchToLayout(QString activityId) return QString(); } -QStringList Synchronizer::sharedLayoutsNames() -{ - QStringList names; - - for (int i = 0; i < m_sharedLayouts.size(); ++i) { - SharedLayout *layout = m_sharedLayouts.at(i); - names << layout->name(); - } - - return names; -} - -QStringList Synchronizer::storedSharedLayouts() const -{ - return m_sharedLayoutIds; -} - QStringList Synchronizer::validActivities(QStringList currentList) { QStringList validIds; @@ -348,26 +291,9 @@ Layout::GenericLayout *Synchronizer::layout(QString id) const { Layout::GenericLayout *l = centralLayout(id); - if (!l) { - l = sharedLayout(id); - } - return l; } -SharedLayout *Synchronizer::sharedLayout(QString id) const -{ - for (int i = 0; i < m_sharedLayouts.size(); ++i) { - SharedLayout *layout = m_sharedLayouts.at(i); - - if (layout->name() == id) { - return layout; - } - } - - return nullptr; -} - Latte::View *Synchronizer::viewForContainment(Plasma::Containment *containment) { for (auto layout : m_centralLayouts) { @@ -378,14 +304,6 @@ Latte::View *Synchronizer::viewForContainment(Plasma::Containment *containment) } } - for (auto layout : m_sharedLayouts) { - Latte::View *view = layout->viewForContainment(containment); - - if (view) { - return view; - } - } - return nullptr; } @@ -397,31 +315,6 @@ void Synchronizer::addLayout(CentralLayout *layout) } } -void Synchronizer::clearSharedLayoutsFromCentralLists() -{ - QStringList unassign; - - for(const QString &name : m_sharedLayoutIds) { - //! remove from ContextMenu - m_menuLayouts.removeAll(name); - - //! remove from layouts assigned to activities - QHashIterator i(m_assignedLayouts); - - while (i.hasNext()) { - i.next(); - - if (i.value() == name) { - unassign << i.key(); - } - } - } - - for(const QString &activity : unassign) { - m_assignedLayouts.remove(activity); - } -} - void Synchronizer::confirmDynamicSwitch() { QString tempShouldSwitch = shouldSwitchToLayout(m_manager->corona()->activitiesConsumer()->currentActivity()); @@ -495,19 +388,11 @@ void Synchronizer::syncActiveLayoutsToOriginalFiles() for (const auto layout : m_centralLayouts) { layout->syncToLayoutFile(); } - - for (const auto layout : m_sharedLayouts) { - layout->syncToLayoutFile(); - } } } void Synchronizer::syncLatteViewsToScreens() { - for (const auto layout : m_sharedLayouts) { - layout->syncLatteViewsToScreens(); - } - for (const auto layout : m_centralLayouts) { layout->syncLatteViewsToScreens(); } @@ -535,28 +420,11 @@ void Synchronizer::unloadCentralLayout(CentralLayout *layout) } } -void Synchronizer::unloadSharedLayout(SharedLayout *layout) -{ - if (m_sharedLayouts.contains(layout)) { - emit currentLayoutIsSwitching(layout->name()); - disconnect(layout, &SharedLayout::layoutDestroyed, this, &Synchronizer::unloadSharedLayout); - int pos = m_sharedLayouts.indexOf(layout); - SharedLayout *shared = m_sharedLayouts.takeAt(pos); - shared->syncToLayoutFile(true); - shared->unloadLatteViews(); - shared->unloadContainments(); - m_manager->clearUnloadedContainmentsFromLinkedFile(shared->unloadedContainmentsIds(), true); - - delete layout; - } -} - void Synchronizer::loadLayouts() { m_layouts.clear(); m_menuLayouts.clear(); m_assignedLayouts.clear(); - m_sharedLayoutIds.clear(); QDir layoutDir(Layouts::Importer::layoutUserDir()); QStringList filter; @@ -573,9 +441,6 @@ void Synchronizer::loadLayouts() onLayoutAdded(layoutpath); } - //! Shared Layouts should not be used for Activities->Layouts assignments or published lists - clearSharedLayoutsFromCentralLists(); - m_layouts.sort(Qt::CaseInsensitive); m_menuLayouts.sort(Qt::CaseInsensitive); @@ -605,12 +470,6 @@ void Synchronizer::onLayoutAdded(const QString &layout) m_menuLayouts.append(centralLayout.name()); } - QString sharedName = centralLayout.sharedLayoutName(); - - if (!sharedName.isEmpty() && !m_sharedLayoutIds.contains(sharedName)) { - m_sharedLayoutIds << sharedName; - } - if (m_isLoaded) { m_layouts.sort(Qt::CaseInsensitive); m_menuLayouts.sort(Qt::CaseInsensitive); @@ -688,10 +547,6 @@ bool Synchronizer::switchToLayout(QString layoutName, int previousMemoryUsage) for (const auto layout : m_centralLayouts) { emit currentLayoutIsSwitching(layout->name()); } - - for (const auto layout : m_sharedLayouts) { - emit currentLayoutIsSwitching(layout->name()); - } } QString lPath = layoutPath(layoutName); @@ -854,11 +709,8 @@ void Synchronizer::syncMultipleLayoutsToActivities(QString layoutForFreeActiviti //! discover layouts that are needed based on running activities for (const auto &activity : runningActivities()) { if (KWindowSystem::isPlatformWayland() && (m_activitiesController->currentActivity() != activity)){ - //! Wayland Protection: Plasma wayland does not support yet Activities but on the other hand that - //! does not mean that Central layouts can not be accompanied by their relevant shared layout. - //! The optimal behavior is that only ONE central layout and ONE shared layout can be loaded each time. - //! If the user changes in an activity that needs a different central layout then in that case - //! the new central layout is loaded and the old one is unloaded. + //! Wayland Protection: Plasma wayland does not support yet Activities for windows + //! but we can load the layouts that belong OnAllActivities + (ForFreeActivities OR SpecificActivity) continue; } @@ -906,9 +758,8 @@ void Synchronizer::syncMultipleLayoutsToActivities(QString layoutForFreeActiviti //! Add Layout for free activities if (layoutForFreeActivitiesIsNeeded) { - if (!centralLayout(layoutForFreeActivities) && !sharedLayout(layoutForFreeActivities)) { - //! CENTRAL Layout for FreeActivities is not loaded and at the same time - //! that layout is not already configured as SHARED for other CENTRAL layouts + if (!centralLayout(layoutForFreeActivities)) { + //! CENTRAL Layout for FreeActivities is not loaded CentralLayout *newLayout = new CentralLayout(this, layoutPath(layoutForFreeActivities), layoutForFreeActivities); if (newLayout) { @@ -940,90 +791,5 @@ void Synchronizer::syncMultipleLayoutsToActivities(QString layoutForFreeActiviti emit centralLayoutsChanged(); } -void Synchronizer::syncActiveShares(SharesMap &sharesMap, QStringList &deprecatedShares) -{ - if (m_manager->memoryUsage() != MemoryUsage::MultipleLayouts) { - return; - } - - qDebug() << " CURRENT SHARES MAP :: " << sharesMap; - qDebug() << " DEPRECATED SHARES :: " << deprecatedShares; - - QHash unassign; - - //! CENTRAL (inactive) layouts that must update their SharedLayoutName because they - //! were unassigned from a Shared Layout - for (const auto &share : deprecatedShares) { - CentralLayout *central = centralLayout(share); - if (!central) { - //! Central Layout is not loaded - CentralLayout centralInStorage(this, Importer::layoutUserFilePath(share)); - centralInStorage.setSharedLayoutName(QString()); - } - } - - //! CENTRAL (active) layouts that will become SHARED must be unloaded first - for (SharesMap::iterator i=sharesMap.begin(); i!=sharesMap.end(); ++i) { - CentralLayout *central = centralLayout(i.key()); - if (central) { - unloadCentralLayout(central); - } - } - - //! CENTRAL (active) layouts that update their (active) SHARED layouts - //! AND load SHARED layouts that are NOT ACTIVE - for (SharesMap::iterator i=sharesMap.begin(); i!=sharesMap.end(); ++i) { - SharedLayout *shared = sharedLayout(i.key()); - qDebug() << " SHARED :: " << i.key(); - for (const auto ¢ralName : i.value()) { - CentralLayout *central = centralLayout(centralName); - qDebug() << " CENTRAL NAME :: " << centralName; - if (central) { - //! Assign this Central Layout at a different Shared Layout - SharedLayout *oldShared = central->sharedLayout(); - - if (!shared) { - //Shared not loaded and it must be loaded before proceed - registerAtSharedLayout(central, i.key()); - shared = sharedLayout(i.key()); - } - - if (shared != oldShared) { - shared->addCentralLayout(central); - central->setSharedLayout(shared); - if (oldShared) { - //! CENTRAL layout that changed from one ACTIVESHARED layout to another - unassign[central] = oldShared; - } - } - } else { - //! Central Layout is not loaded - CentralLayout centralInStorage(this, Importer::layoutUserFilePath(centralName)); - centralInStorage.setSharedLayoutName(i.key()); - } - } - } - - //! CENTRAL Layouts that wont have any SHARED Layout any more - for (const auto ¢ralName : centralLayoutsNames()) { - if (!mapHasRecord(centralName, sharesMap)) { - CentralLayout *central = centralLayout(centralName); - if (central && central->sharedLayout()) { - central->sharedLayout()->removeCentralLayout(central); - central->setSharedLayoutName(QString()); - central->setSharedLayout(nullptr); - } - } - } - - //! Unassing from Shared Layouts Central ones that are not assigned any more - //! IMPORTANT: This must be done after all the ASSIGNMENTS in order to avoid - //! to unload a SharedLayout that it should not - for (QHash::iterator i=unassign.begin(); i!=unassign.end(); ++i) { - qDebug() << " REMOVING CENTRAL :: " << i.key()->name() << " FROM :: " << i.value()->name(); - i.value()->removeCentralLayout(i.key()); - } -} - } } // end of namespace diff --git a/app/layouts/synchronizer.h b/app/layouts/synchronizer.h index fcca13f2e..c0961931c 100644 --- a/app/layouts/synchronizer.h +++ b/app/layouts/synchronizer.h @@ -28,7 +28,6 @@ namespace Latte { class CentralLayout; -class SharedLayout; class View; namespace Layout{ class GenericLayout; @@ -49,10 +48,9 @@ class Controller; namespace Latte { namespace Layouts { -//! This is a Shares map in the following structure: -//! SHARED LAYOUT NAME -> CENTRAL LAYOUT NAMES acting as SHARES -typedef QHash SharesMap; - +//! This is a Layouts map in the following structure: +//! ACTIVITY ID -> Layout Names for that activity +typedef QHash AssignedLayoutsHash; //! Layouts::Synchronizer is a very IMPORTANT class which is responsible //! for all ACTIVE layouts, meaning layouts that have been loaded @@ -78,12 +76,9 @@ public: void syncActiveLayoutsToOriginalFiles(); void syncLatteViewsToScreens(); void syncMultipleLayoutsToActivities(QString layoutForFreeActivities = QString()); - void syncActiveShares(SharesMap &sharesMap, QStringList &deprecatedShares); bool latteViewExists(Latte::View *view) const; bool layoutExists(QString layoutName) const; - bool mapHasRecord(const QString &record, SharesMap &map); - bool registerAtSharedLayout(CentralLayout *central, QString id); //! switch to specified layout, default previousMemoryUsage means that it didn't change bool switchToLayout(QString layoutName, int previousMemoryUsage = -1); @@ -100,8 +95,6 @@ public: QStringList layouts() const; QStringList menuLayouts() const; void setMenuLayouts(QStringList layouts); - QStringList sharedLayoutsNames(); - QStringList storedSharedLayouts() const; QStringList activities(); QStringList runningActivities(); @@ -111,7 +104,6 @@ public: CentralLayout *currentLayout() const; CentralLayout *centralLayout(QString id) const; - SharedLayout *sharedLayout(QString id) const; Layout::GenericLayout *layout(QString id) const; KActivities::Controller *activitiesController() const; @@ -135,11 +127,8 @@ private slots: void onLayoutAdded(const QString &layoutpath); private: - void clearSharedLayoutsFromCentralLists(); - void addLayout(CentralLayout *layout); void unloadCentralLayout(CentralLayout *layout); - void unloadSharedLayout(SharedLayout *layout); bool layoutIsAssigned(QString layoutName); @@ -156,14 +145,12 @@ private: QStringList m_layouts; QStringList m_menuLayouts; - QStringList m_sharedLayoutIds; QHash m_assignedLayouts; QTimer m_dynamicSwitchTimer; QList m_centralLayouts; - QList m_sharedLayouts; Layouts::Manager *m_manager; KActivities::Controller *m_activitiesController; diff --git a/app/settings/controllers/layoutscontroller.cpp b/app/settings/controllers/layoutscontroller.cpp index 23e4ce372..c80304a03 100644 --- a/app/settings/controllers/layoutscontroller.cpp +++ b/app/settings/controllers/layoutscontroller.cpp @@ -28,13 +28,11 @@ #include "../delegates/backgrounddelegate.h" #include "../delegates/checkboxdelegate.h" #include "../delegates/layoutnamedelegate.h" -#include "../delegates/shareddelegate.h" #include "../handlers/tablayoutshandler.h" #include "../tools/settingstools.h" #include "../../data/uniqueidinfo.h" #include "../../layout/genericlayout.h" #include "../../layout/centrallayout.h" -#include "../../layout/sharedlayout.h" #include "../../layouts/importer.h" #include "../../layouts/manager.h" #include "../../layouts/synchronizer.h" @@ -152,7 +150,6 @@ void Layouts::initView() m_view->setItemDelegateForColumn(Model::Layouts::MENUCOLUMN, new Settings::Layout::Delegate::CheckBox(this)); m_view->setItemDelegateForColumn(Model::Layouts::BORDERSCOLUMN, new Settings::Layout::Delegate::CheckBox(this)); m_view->setItemDelegateForColumn(Model::Layouts::ACTIVITYCOLUMN, new Settings::Layout::Delegate::Activities(this)); - m_view->setItemDelegateForColumn(Model::Layouts::SHAREDCOLUMN, new Settings::Layout::Delegate::Shared(this)); connect(m_view, &QObject::destroyed, this, &Controller::Layouts::storeColumnWidths); } @@ -227,14 +224,10 @@ void Layouts::setInMultipleMode(bool inMultiple) void Layouts::updateLastColumnWidth() { if (m_model->inMultipleMode()) { - m_view->setColumnHidden(Model::Layouts::SHAREDCOLUMN, false); - //! column widths if (m_viewColumnWidths.count()>=5) { m_view->setColumnWidth(Model::Layouts::ACTIVITYCOLUMN, m_viewColumnWidths[4].toInt()); } - } else { - m_view->setColumnHidden(Model::Layouts::SHAREDCOLUMN, true); } } @@ -324,41 +317,6 @@ void Layouts::toggleLockedForSelected() m_proxyModel->setData(m_proxyModel->index(m_view->currentIndex().row(), Model::Layouts::NAMECOLUMN), !selected.isLocked, Settings::Model::Layouts::ISLOCKEDROLE); } -void Layouts::toggleSharedForSelected() -{ - if (!hasSelectedLayout()) { - return; - } - - int row = m_view->currentIndex().row(); - - Latte::Data::Layout selected = selectedLayoutCurrentData(); - - if (selected.isShared()) { - m_proxyModel->setData(m_proxyModel->index(row, Model::Layouts::SHAREDCOLUMN), QStringList(), Qt::UserRole); - } else { - QStringList assignedIds; - QStringList availableShareIds = m_model->availableShareIdsFor(selected.id); - - for (const auto &id : availableShareIds) { - Latte::Data::Layout iLayoutCurrent = m_model->currentData(id); - Latte::Data::Layout iLayoutOriginal = m_model->originalData(id); - iLayoutOriginal = iLayoutOriginal.isEmpty() ? iLayoutCurrent : iLayoutOriginal; - - if (m_handler->corona()->layoutsManager()->synchronizer()->layout(iLayoutOriginal.name)) { - assignedIds << id; - m_proxyModel->setData(m_proxyModel->index(row, Model::Layouts::SHAREDCOLUMN), assignedIds, Qt::UserRole); - break; - } - } - - if (assignedIds.isEmpty() && availableShareIds.count()>0) { - assignedIds << availableShareIds[0]; - m_proxyModel->setData(m_proxyModel->index(row, Model::Layouts::SHAREDCOLUMN), assignedIds, Qt::UserRole); - } - } -} - void Layouts::selectRow(const QString &id) { m_view->selectRow(rowForId(id)); @@ -386,11 +344,6 @@ void Layouts::loadLayouts() bool inMultiple{m_handler->corona()->layoutsManager()->memoryUsage() == MemoryUsage::MultipleLayouts}; setInMultipleMode(inMultiple); - //! The shares map needs to be constructed for start/scratch. - //! We start feeding information with layout_names and during the process - //! we update them to valid layout_ids - Latte::Layouts::SharesMap sharesMap; - int i = 0; QStringList brokenLayouts; @@ -420,12 +373,6 @@ void Layouts::loadLayouts() m_layouts[original.id] = central; - //! create initial SHARES maps - QString shared = central->sharedLayoutName(); - if (!shared.isEmpty()) { - sharesMap[shared].append(original.id); - } - layoutsBuffer << original; qDebug() << "counter:" << i << " total:" << m_model->rowCount(); @@ -439,33 +386,6 @@ void Layouts::loadLayouts() } } - //! update SHARES map keys in order to use the #settingsid(s) - QStringList tempSharedNames; - - //! remove these records after updating - for (QHash::iterator i=sharesMap.begin(); i!=sharesMap.end(); ++i) { - tempSharedNames << i.key(); - } - - //! update keys - for (QHash::iterator i=sharesMap.begin(); i!=sharesMap.end(); ++i) { - QString shareid = layoutsBuffer.idForName(i.key()); - if (!shareid.isEmpty()) { - sharesMap[shareid] = i.value(); - } - } - - //! remove deprecated keys - for (const auto &key : tempSharedNames) { - sharesMap.remove(key); - } - - qDebug() << "SHARES MAP ::: " << sharesMap; - - for (QHash::iterator i=sharesMap.begin(); i!=sharesMap.end(); ++i) { - layoutsBuffer[i.key()].shares = i.value(); - } - //! Send original loaded data to model m_model->setOriginalData(layoutsBuffer, inMultiple); m_model->setOriginalLayoutForFreeActivities(layoutsBuffer.idForName(m_handler->corona()->universalSettings()->lastNonAssignedLayoutName())); @@ -608,7 +528,6 @@ void Layouts::copySelectedLayout() copied.isActive = false; copied.isLocked = false; copied.activities = QStringList(); - copied.shares = QStringList(); QFile(selectedLayoutCurrent.id).copy(copied.id); QFileInfo newFileInfo(copied.id); @@ -619,7 +538,6 @@ void Layouts::copySelectedLayout() CentralLayout *settings = new CentralLayout(this, copied.id); settings->clearLastUsedActivity(); - settings->setSharedLayoutName(""); settings->setActivities(QStringList()); m_layouts[copied.id] = settings; @@ -680,15 +598,6 @@ bool Layouts::importLayoutsFromV1ConfigFile(QString file) return false; } -void Layouts::onSharedToInEditChanged(const QString &id, const bool &inEdit) -{ - int row = m_model->rowForId(id); - - if (row >= 0) { - m_model->setData(m_model->index(row, Model::Layouts::SHAREDCOLUMN), inEdit, Model::Layouts::SHAREDTOINEDITROLE); - } -} - void Layouts::reset() { m_model->resetData(); @@ -845,9 +754,6 @@ void Layouts::save() } } - //! update SharedLayouts that are Active - syncActiveShares(); - //! reload layouts in layoutsmanager m_handler->corona()->layoutsManager()->synchronizer()->loadLayouts(); @@ -879,38 +785,6 @@ void Layouts::save() emit dataChanged(); } -void Layouts::syncActiveShares() -{ - if (m_handler->corona()->layoutsManager()->memoryUsage() != MemoryUsage::MultipleLayouts) { - return; - } - - Latte::Data::LayoutsTable currentLayoutsData = m_model->currentLayoutsData(); - Latte::Data::LayoutsTable originalLayoutsData = m_model->originalLayoutsData(); - - Latte::Layouts::SharesMap currentSharesNamesMap = currentLayoutsData.sharesMap(); - QStringList originalSharesIds = originalLayoutsData.allSharesIds(); - QStringList currentSharesIds = currentLayoutsData.allSharesIds(); - - QStringList deprecatedSharesIds = Latte::subtracted(originalSharesIds, currentSharesIds); - QStringList deprecatedSharesNames; - - for(int i=0; icorona()->layoutsManager()->synchronizer()->syncActiveShares(currentSharesNamesMap, deprecatedSharesNames); -} - void Layouts::storeColumnWidths() { //! save column widths diff --git a/app/settings/controllers/layoutscontroller.h b/app/settings/controllers/layoutscontroller.h index 0604a8596..6b0d24027 100644 --- a/app/settings/controllers/layoutscontroller.h +++ b/app/settings/controllers/layoutscontroller.h @@ -83,7 +83,6 @@ public: void loadLayouts(); void removeSelected(); void toggleLockedForSelected(); - void toggleSharedForSelected(); QString iconsPath() const; QString colorPath(const QString color) const; @@ -101,10 +100,6 @@ public: signals: void dataChanged(); -public slots: - //! needed for Delegate::Shared - void onSharedToInEditChanged(const QString &row, const bool &inEdit); - private slots: void loadConfig(); void saveConfig(); @@ -115,7 +110,6 @@ private slots: private: void initView(); - void syncActiveShares(); int rowForId(QString id) const; int rowForName(QString layoutName) const; diff --git a/app/settings/delegates/CMakeLists.txt b/app/settings/delegates/CMakeLists.txt index f78cf6caf..fc79968c1 100644 --- a/app/settings/delegates/CMakeLists.txt +++ b/app/settings/delegates/CMakeLists.txt @@ -6,7 +6,6 @@ set(lattedock-app_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/checkboxdelegate.cpp ${CMAKE_CURRENT_SOURCE_DIR}/layoutcmbitemdelegate.cpp ${CMAKE_CURRENT_SOURCE_DIR}/layoutnamedelegate.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/shareddelegate.cpp ${CMAKE_CURRENT_SOURCE_DIR}/persistentmenu.cpp PARENT_SCOPE ) diff --git a/app/settings/delegates/activitiesdelegate.cpp b/app/settings/delegates/activitiesdelegate.cpp index 424743909..934a01ac8 100644 --- a/app/settings/delegates/activitiesdelegate.cpp +++ b/app/settings/delegates/activitiesdelegate.cpp @@ -203,12 +203,6 @@ bool Activities::editorEvent(QEvent *event, QAbstractItemModel *model, const QSt Q_ASSERT(event); Q_ASSERT(model); - bool isSharedCapable = index.data(Model::Layouts::ISSHAREDROLE).toBool() && index.data(Model::Layouts::INMULTIPLELAYOUTSROLE).toBool(); - - if (isSharedCapable) { - return false; - } - return QStyledItemDelegate::editorEvent(event, model, option, index); } @@ -219,114 +213,55 @@ void Activities::paint(QPainter *painter, const QStyleOptionViewItem &option, co myOptions.state = (myOptions.state & ~QStyle::State_HasFocus); bool isLayoutActive = index.data(Model::Layouts::ISACTIVEROLE).toBool(); - bool isSharedCapable = index.data(Model::Layouts::ISSHAREDROLE).toBool() && index.data(Model::Layouts::INMULTIPLELAYOUTSROLE).toBool(); - if (!isSharedCapable) { - painter->save(); + painter->save(); - QList assignedActivities; - QStringList assignedIds = index.model()->data(index, Qt::UserRole).toStringList(); - QStringList assignedOriginalIds = index.model()->data(index, Model::Layouts::ORIGINALASSIGNEDACTIVITIESROLE).toStringList(); + QList assignedActivities; + QStringList assignedIds = index.model()->data(index, Qt::UserRole).toStringList(); + QStringList assignedOriginalIds = index.model()->data(index, Model::Layouts::ORIGINALASSIGNEDACTIVITIESROLE).toStringList(); - Latte::Data::ActivitiesMap allActivitiesData = index.data(Model::Layouts::ALLACTIVITIESDATAROLE).value(); + Latte::Data::ActivitiesMap allActivitiesData = index.data(Model::Layouts::ALLACTIVITIESDATAROLE).value(); - for (int i=0; i 0) { - myOptions.text = joinedActivities(assignedActivities, assignedOriginalIds, isLayoutActive); - - QTextDocument doc; - QString css; - QString activitiesText = myOptions.text; - - QPalette::ColorRole applyColor = Latte::isSelected(option) ? QPalette::HighlightedText : QPalette::Text; - QBrush nBrush = option.palette.brush(Latte::colorGroup(option), applyColor); - - css = QString("body { color : %1; }").arg(nBrush.color().name()); - - doc.setDefaultStyleSheet(css); - doc.setHtml("" + myOptions.text + ""); - - myOptions.text = ""; - myOptions.widget->style()->drawControl(QStyle::CE_ItemViewItem, &myOptions, painter); - - //we need an offset to be in the same vertical center of TextEdit - int offsetY = ((myOptions.rect.height() - doc.size().height()) / 2); - - if ((qApp->layoutDirection() == Qt::RightToLeft) && !activitiesText.isEmpty()) { - int textWidth = doc.size().width(); - - painter->translate(qMax(myOptions.rect.left(), myOptions.rect.right() - textWidth), myOptions.rect.top() + offsetY + 1); - } else { - painter->translate(myOptions.rect.left(), myOptions.rect.top() + offsetY + 1); - } - - QRect clip(0, 0, myOptions.rect.width(), myOptions.rect.height()); - doc.drawContents(painter, clip); - } else { - QApplication::style()->drawControl(QStyle::CE_ItemViewItem, &myOptions, painter); - } - - painter->restore(); - } else { - bool sharedInEdit = index.data(Model::Layouts::SHAREDTOINEDITROLE).toBool(); - - // Disabled - bool isSelected{Latte::isSelected(option)}; - QPalette::ColorRole backColorRole = isSelected ? QPalette::Highlight : QPalette::Base; - QPalette::ColorRole textColorRole = isSelected ? QPalette::HighlightedText : QPalette::Text; - - //! draw background - //! HIDDENTEXTCOLUMN is just needed to draw empty background rectangles properly based on states - QStyledItemDelegate::paint(painter, option, index.model()->index(index.row(), Model::Layouts::HIDDENTEXTCOLUMN)); - - // text - QPen pen(Qt::DotLine); - QColor textColor = option.palette.brush(Latte::colorGroup(option), textColorRole).color(); - - pen.setWidth(2); pen.setColor(textColor); - int y = option.rect.y()+option.rect.height()/2; - - int space = option.rect.height() / 2; - - painter->setPen(pen); - - if (sharedInEdit) { - //! shareto cell is in edit mode so circle indicator is moved inside - //! the activities cell - if (qApp->layoutDirection() == Qt::LeftToRight) { - painter->drawLine(option.rect.x(), y, option.rect.x()+option.rect.width() - space, y); - - int xm = option.rect.x() + option.rect.width() - space; - int thick = option.rect.height() / 2; - int ym = option.rect.y() + ((option.rect.height() - thick) / 2); - - pen.setStyle(Qt::SolidLine); - painter->setPen(pen); - painter->setBrush(textColor); - - //! draw ending cirlce - painter->drawEllipse(QPoint(xm, ym + thick/2), thick/4, thick/4); - } else { - painter->drawLine(option.rect.x() + space, y, option.rect.x() + option.rect.width(), y); - - int xm = option.rect.x() + space; - int thick = option.rect.height() / 2; - int ym = option.rect.y() + ((option.rect.height() - thick) / 2); - - pen.setStyle(Qt::SolidLine); - painter->setPen(pen); - painter->setBrush(textColor); - - //! draw ending cirlce - painter->drawEllipse(QPoint(xm, ym + thick/2), thick/4, thick/4); - } - } else { - painter->drawLine(option.rect.x(), y, option.rect.x()+option.rect.width(), y); - } + for (int i=0; i 0) { + myOptions.text = joinedActivities(assignedActivities, assignedOriginalIds, isLayoutActive); + + QTextDocument doc; + QString css; + QString activitiesText = myOptions.text; + + QPalette::ColorRole applyColor = Latte::isSelected(option) ? QPalette::HighlightedText : QPalette::Text; + QBrush nBrush = option.palette.brush(Latte::colorGroup(option), applyColor); + + css = QString("body { color : %1; }").arg(nBrush.color().name()); + + doc.setDefaultStyleSheet(css); + doc.setHtml("" + myOptions.text + ""); + + myOptions.text = ""; + myOptions.widget->style()->drawControl(QStyle::CE_ItemViewItem, &myOptions, painter); + + //we need an offset to be in the same vertical center of TextEdit + int offsetY = ((myOptions.rect.height() - doc.size().height()) / 2); + + if ((qApp->layoutDirection() == Qt::RightToLeft) && !activitiesText.isEmpty()) { + int textWidth = doc.size().width(); + + painter->translate(qMax(myOptions.rect.left(), myOptions.rect.right() - textWidth), myOptions.rect.top() + offsetY + 1); + } else { + painter->translate(myOptions.rect.left(), myOptions.rect.top() + offsetY + 1); + } + + QRect clip(0, 0, myOptions.rect.width(), myOptions.rect.height()); + doc.drawContents(painter, clip); + } else { + QApplication::style()->drawControl(QStyle::CE_ItemViewItem, &myOptions, painter); + } + + painter->restore(); } QString Activities::joinedActivities(const QList &activities, const QStringList &originalIds, bool isActive, bool formatText) const diff --git a/app/settings/delegates/checkboxdelegate.cpp b/app/settings/delegates/checkboxdelegate.cpp index c7c56ebf0..3c56aa486 100644 --- a/app/settings/delegates/checkboxdelegate.cpp +++ b/app/settings/delegates/checkboxdelegate.cpp @@ -52,100 +52,42 @@ void CheckBox::paint(QPainter *painter, const QStyleOptionViewItem &option, cons adjustedOption.state = (adjustedOption.state & ~QStyle::State_HasFocus); adjustedOption.displayAlignment = Qt::AlignHCenter | Qt::AlignVCenter; - bool isSharedCapable = index.data(Model::Layouts::ISSHAREDROLE).toBool() && index.data(Model::Layouts::INMULTIPLELAYOUTSROLE).toBool(); + bool originalChecked{false}; + bool currentChecked = index.data(Qt::UserRole).toBool(); - if (!isSharedCapable) { - bool originalChecked{false}; - bool currentChecked = index.data(Qt::UserRole).toBool(); - - if (index.column() == Model::Layouts::MENUCOLUMN) { - originalChecked = index.data(Model::Layouts::ORIGINALISSHOWNINMENUROLE).toBool(); - } else if (index.column() == Model::Layouts::BORDERSCOLUMN) { - originalChecked = index.data(Model::Layouts::ORIGINALHASBORDERSROLE).toBool(); - } else { - originalChecked = currentChecked; - } - - bool isChanged = (originalChecked != currentChecked); - - if (isChanged) { - adjustedOption.font.setPointSize(adjustedOption.font.pointSize() + 2); - adjustedOption.font.setBold(true); - } else { - // normal appearance - } - - if (currentChecked) { - adjustedOption.text = isChanged ? HeavyCheckMark : CheckMark; - } else { - adjustedOption.text = ""; - } - - - QStyledItemDelegate::paint(painter, adjustedOption, index); + if (index.column() == Model::Layouts::MENUCOLUMN) { + originalChecked = index.data(Model::Layouts::ORIGINALISSHOWNINMENUROLE).toBool(); + } else if (index.column() == Model::Layouts::BORDERSCOLUMN) { + originalChecked = index.data(Model::Layouts::ORIGINALHASBORDERSROLE).toBool(); } else { - // Disabled - bool isSelected{Latte::isSelected(option)}; - QPalette::ColorRole backColorRole = isSelected ? QPalette::Highlight : QPalette::Base; - QPalette::ColorRole textColorRole = isSelected ? QPalette::HighlightedText : QPalette::Text; - - //! draw background - //! HIDDENTEXTCOLUMN is just needed to draw empty background rectangles properly based on states - QStyledItemDelegate::paint(painter, option, index.model()->index(index.row(), Model::Layouts::HIDDENTEXTCOLUMN)); - - // text - QPen pen(Qt::DotLine); - pen.setWidth(2); pen.setColor(option.palette.brush(Latte::colorGroup(option), textColorRole).color()); - int y = option.rect.y()+option.rect.height()/2; - - bool inMenu = (index.column() == Model::Layouts::MENUCOLUMN); - int space = inMenu ? option.rect.height() / 2 : 0; - - painter->setPen(pen); - - if (qApp->layoutDirection() == Qt::LeftToRight) { - painter->drawLine(option.rect.x() + space, y, - option.rect.x() + option.rect.width(), y); - - if (inMenu) { - int xm = option.rect.x() + space; - int thick = option.rect.height() / 2; - int ym = option.rect.y() + ((option.rect.height() - thick) / 2); - - pen.setStyle(Qt::SolidLine); - painter->setPen(pen); - painter->drawLine(xm, ym, xm, ym + thick); - } - - } else { - painter->drawLine(option.rect.x(), y, - option.rect.x()+option.rect.width() - space, y); - - if (inMenu) { - int xm = option.rect.x() + option.rect.width() - space; - int thick = option.rect.height() / 2; - int ym = option.rect.y() + ((option.rect.height() - thick) / 2); - - pen.setStyle(Qt::SolidLine); - painter->setPen(pen); - painter->drawLine(xm, ym, xm, ym + thick); - } - } + originalChecked = currentChecked; } + + bool isChanged = (originalChecked != currentChecked); + + if (isChanged) { + adjustedOption.font.setPointSize(adjustedOption.font.pointSize() + 2); + adjustedOption.font.setBold(true); + } else { + // normal appearance + } + + if (currentChecked) { + adjustedOption.text = isChanged ? HeavyCheckMark : CheckMark; + } else { + adjustedOption.text = ""; + } + + + QStyledItemDelegate::paint(painter, adjustedOption, index); } bool CheckBox::editorEvent(QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option, - const QModelIndex &index) + const QModelIndex &index) { Q_ASSERT(event); Q_ASSERT(model); - bool isSharedCapable = index.data(Model::Layouts::ISSHAREDROLE).toBool() && index.data(Model::Layouts::INMULTIPLELAYOUTSROLE).toBool(); - - if (isSharedCapable) { - return false; - } - if (event->type() == QEvent::MouseButtonDblClick) { if (!option.rect.contains(static_cast(event)->pos())) return false; diff --git a/app/settings/delegates/layoutnamedelegate.cpp b/app/settings/delegates/layoutnamedelegate.cpp index 744b0b6bf..20fdeb99b 100644 --- a/app/settings/delegates/layoutnamedelegate.cpp +++ b/app/settings/delegates/layoutnamedelegate.cpp @@ -76,7 +76,6 @@ void LayoutName::paint(QPainter *painter, const QStyleOptionViewItem &option, co bool inMultiple = index.data(Model::Layouts::INMULTIPLELAYOUTSROLE).toBool(); bool isLocked = index.data(Model::Layouts::ISLOCKEDROLE).toBool(); - bool isShared = inMultiple && index.data(Model::Layouts::ISSHAREDROLE).toBool(); bool isActive = index.data(Model::Layouts::ISACTIVEROLE).toBool(); bool isNewLayout = index.data(Model::Layouts::ISNEWLAYOUTROLE).toBool(); @@ -86,8 +85,6 @@ void LayoutName::paint(QPainter *painter, const QStyleOptionViewItem &option, co bool isChanged = (isNewLayout || hasChanges); - bool showTwoIcons = isLocked && isShared; - QStyleOptionViewItem adjustedOption = option; //! Remove the focus dotted lines @@ -96,7 +93,7 @@ void LayoutName::paint(QPainter *painter, const QStyleOptionViewItem &option, co painter->setRenderHint(QPainter::Antialiasing, true); - if (isLocked || isShared) { + if (isLocked) { QStandardItemModel *model = (QStandardItemModel *) index.model(); @@ -110,7 +107,7 @@ void LayoutName::paint(QPainter *painter, const QStyleOptionViewItem &option, co QFontMetrics fm(option.font); int textWidth = fm.boundingRect(name).width(); int thick = option.rect.height(); - int length = showTwoIcons ? (2 * thick + 2) : thick; + int length = thick; int startWidth = (qApp->layoutDirection() == Qt::RightToLeft) ? length : 0; int endWidth = (qApp->layoutDirection() == Qt::RightToLeft) ? 0 : length; @@ -137,24 +134,15 @@ void LayoutName::paint(QPainter *painter, const QStyleOptionViewItem &option, co QStyledItemDelegate::paint(painter, myOptionS, model->index(index.row(), Model::Layouts::HIDDENTEXTCOLUMN)); QStyledItemDelegate::paint(painter, myOptionE, model->index(index.row(), Model::Layouts::HIDDENTEXTCOLUMN)); - //! Lock Icon - QIcon firstIcon = isLocked && !showTwoIcons ? QIcon::fromTheme("object-locked") : QIcon::fromTheme("document-share"); - QIcon::Mode mode = ((active && (selected || focused)) ? QIcon::Selected : QIcon::Normal); - if (qApp->layoutDirection() == Qt::RightToLeft) { - painter->drawPixmap(QRect(option.rect.x(), option.rect.y(), thick, thick), firstIcon.pixmap(thick, thick, mode)); + if (isLocked) { + QIcon lockIcon = QIcon::fromTheme("object-locked"); - if (showTwoIcons) { - QIcon secondIcon = QIcon::fromTheme("object-locked"); - painter->drawPixmap(QRect(option.rect.x() + thick + 2, option.rect.y(), thick, thick), secondIcon.pixmap(thick, thick, mode)); - } - } else { - painter->drawPixmap(QRect(option.rect.x() + option.rect.width() - endWidth, option.rect.y(), thick, thick), firstIcon.pixmap(thick, thick, mode)); - - if (showTwoIcons) { - QIcon secondIcon = QIcon::fromTheme("object-locked"); - painter->drawPixmap(QRect(option.rect.x() + option.rect.width() - thick, option.rect.y(), thick, thick), secondIcon.pixmap(thick, thick, mode)); + if (qApp->layoutDirection() == Qt::RightToLeft) { + painter->drawPixmap(QRect(option.rect.x(), option.rect.y(), thick, thick), lockIcon.pixmap(thick, thick, mode)); + } else { + painter->drawPixmap(QRect(option.rect.x() + option.rect.width() - endWidth, option.rect.y(), thick, thick), lockIcon.pixmap(thick, thick, mode)); } } diff --git a/app/settings/delegates/shareddelegate.cpp b/app/settings/delegates/shareddelegate.cpp deleted file mode 100644 index 8b5f6e830..000000000 --- a/app/settings/delegates/shareddelegate.cpp +++ /dev/null @@ -1,342 +0,0 @@ -/* -* Copyright 2019 Michail Vourlakos -* -* This file is part of Latte-Dock -* -* Latte-Dock is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public License as -* published by the Free Software Foundation; either version 2 of -* the License, or (at your option) any later version. -* -* Latte-Dock is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see . -*/ - -#include "shareddelegate.h" - -// local -#include "persistentmenu.h" -#include "../models/layoutsmodel.h" -#include "../tools/settingstools.h" -#include "../../data/layoutdata.h" - -// Qt -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define OKPRESSED "OKPRESSED" - -namespace Latte { -namespace Settings { -namespace Layout { -namespace Delegate { - - -Shared::Shared(Controller::Layouts *parent) - : QStyledItemDelegate(parent), - m_controller(parent) -{ -} - -QWidget *Shared::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const -{ - bool inMultiple = index.data(Model::Layouts::INMULTIPLELAYOUTSROLE).toBool(); - - QString layoutId = index.data(Model::Layouts::IDROLE).toString(); - Latte::Data::LayoutsTable allLayouts = qvariant_cast(index.data(Model::Layouts::ALLLAYOUTSROLE)); - QStringList assignedShares = index.data(Qt::UserRole).toStringList(); - - QPushButton *button = new QPushButton(parent); - PersistentMenu *menu = new PersistentMenu(button); - button->setMenu(menu); - - menu->setMinimumWidth(option.rect.width()); - - for (int i = 0; i < allLayouts.rowCount(); ++i) { - if ((inMultiple && allLayouts[i].isShared()) || (allLayouts[i].id == layoutId)) { - continue; - } - - QAction *action = new QAction(allLayouts[i].name); - action->setData(allLayouts[i].id); - action->setCheckable(true); - action->setChecked(assignedShares.contains(allLayouts[i].id)); - - if (allLayouts[i].isActive) { - QFont font = action->font(); - font.setBold(true); - action->setFont(font); - } - - menu->addAction(action); - - connect(action, &QAction::toggled, this, [this, button, index]() { - updateButtonText(button, index); - }); - } - - updateButtonText(button, index); - - m_controller->onSharedToInEditChanged(layoutId, true); - - //! Ok, Apply Buttons behavior - menu->addSeparator(); - - QDialogButtonBox *menuDialogButtons = new QDialogButtonBox(menu); - menuDialogButtons->setStandardButtons(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); - menuDialogButtons->setContentsMargins(3, 0, 3, 3); - - QWidgetAction* menuDialogButtonsWidgetAction = new QWidgetAction(menu); - menuDialogButtonsWidgetAction->setDefaultWidget(menuDialogButtons); - - menu->addAction(menuDialogButtonsWidgetAction); - - connect(menuDialogButtons->button(QDialogButtonBox::Ok), &QPushButton::clicked, [this, menu, button]() { - button->setProperty(OKPRESSED, true); - menu->hide(); - }); - - connect(menuDialogButtons->button(QDialogButtonBox::Cancel), &QPushButton::clicked, menu, &QMenu::hide); - connect(menu, &QMenu::aboutToHide, button, &QWidget::clearFocus); - - return button; -} - -void Shared::setEditorData(QWidget *editor, const QModelIndex &index) const -{ - Latte::Data::LayoutsTable allLayouts = qvariant_cast(index.data(Model::Layouts::ALLLAYOUTSROLE)); - updateButtonText(editor, index); -} - -void Shared::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const -{ - QPushButton *button = static_cast(editor); - - QString layoutId = index.data(Model::Layouts::IDROLE).toString(); - - if (button->property(OKPRESSED).isNull() || !button->property(OKPRESSED).toBool()) { - m_controller->onSharedToInEditChanged(layoutId, false); - return; - } - - QStringList assignedLayouts; - foreach (QAction *action, button->menu()->actions()) { - if (action->isChecked()) { - assignedLayouts << action->data().toString(); - } - } - - model->setData(index, assignedLayouts, Qt::UserRole); - - m_controller->onSharedToInEditChanged(layoutId, false); -} - -void Shared::updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const -{ - Q_UNUSED(index) - - editor->setGeometry(option.rect); -} - -void Shared::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const -{ - bool sharedInEdit = index.data(Model::Layouts::SHAREDTOINEDITROLE).toBool(); - Latte::Data::LayoutsTable allLayouts = qvariant_cast(index.data(Model::Layouts::ALLLAYOUTSROLE)); - QStringList assignedIds = index.data(Qt::UserRole).toStringList(); - QStringList originalIds = index.data(Model::Layouts::ORIGINALSHARESROLE).toStringList(); - - Latte::Data::LayoutsTable assignedLayouts; - - for (const auto &id : assignedIds) { - if (allLayouts.containsId(id)) { - assignedLayouts << allLayouts[id]; - } - } - - QStyleOptionViewItem myOptions = option; - //! Remove the focus dotted lines - myOptions.state = (myOptions.state & ~QStyle::State_HasFocus); - painter->save(); - - if (assignedLayouts.rowCount() > 0 && !sharedInEdit) { - //! indicator - if (!sharedInEdit) { - paintSharedToIndicator(painter, myOptions, index); - } - - //! Text code - myOptions.text = joined(assignedLayouts, originalIds); - - int thick = option.rect.height(); - - if (qApp->layoutDirection() == Qt::LeftToRight) { - myOptions.rect = QRect(myOptions.rect.x() + thick, myOptions.rect.y(), myOptions.rect.width() - thick, myOptions.rect.height()); - } else { - myOptions.rect = QRect(myOptions.rect.x(), myOptions.rect.y(), myOptions.rect.width() - thick, myOptions.rect.height()); - } - - QTextDocument doc; - QString css; - QString sharesText = myOptions.text; - - QPalette::ColorRole applyColor = Latte::isSelected(option) ? QPalette::HighlightedText : QPalette::Text; - QBrush nBrush = option.palette.brush(Latte::colorGroup(option), applyColor); - - css = QString("body { color : %1; }").arg(nBrush.color().name()); - - doc.setDefaultStyleSheet(css); - doc.setHtml("" + myOptions.text + ""); - - myOptions.text = ""; - myOptions.widget->style()->drawControl(QStyle::CE_ItemViewItem, &myOptions, painter); - - //we need an offset to be in the same vertical center of TextEdit - int offsetY = ((myOptions.rect.height() - doc.size().height()) / 2); - - if ((qApp->layoutDirection() == Qt::RightToLeft) && !sharesText.isEmpty()) { - int textWidth = doc.size().width(); - - painter->translate(qMax(myOptions.rect.left(), myOptions.rect.right() - textWidth), myOptions.rect.top() + offsetY + 1); - } else { - painter->translate(myOptions.rect.left(), myOptions.rect.top() + offsetY + 1); - } - - QRect clip(0, 0, myOptions.rect.width(), myOptions.rect.height()); - doc.drawContents(painter, clip); - } else { - QApplication::style()->drawControl(QStyle::CE_ItemViewItem, &myOptions, painter); - } - - painter->restore(); -} - -void Shared::paintSharedToIndicator(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const -{ - // Disabled - bool isSelected{Latte::isSelected(option)}; - QPalette::ColorRole backColorRole = isSelected ? QPalette::Highlight : QPalette::Base; - QPalette::ColorRole textColorRole = isSelected ? QPalette::HighlightedText : QPalette::Text; - - int space = option.rect.height() / 2; - - //! draw background below icons - //! HIDDENTEXTCOLUMN is just needed to draw empty background rectangles properly based on states - QStyleOptionViewItem backOptions = option; - if (qApp->layoutDirection() == Qt::LeftToRight) { - backOptions.rect = QRect(option.rect.x(), option.rect.y(), 2 * space, 2 * space); - } else { - backOptions.rect = QRect(option.rect.x() + option.rect.width() - (2*space), option.rect.y(), 2 * space, 2 * space); - } - - QStyledItemDelegate::paint(painter, backOptions, index.model()->index(index.row(), Model::Layouts::HIDDENTEXTCOLUMN)); - - // text - QPen pen(Qt::DotLine); - QColor textColor = option.palette.brush(Latte::colorGroup(option), textColorRole).color(); - - pen.setWidth(2); pen.setColor(textColor); - int y = option.rect.y()+option.rect.height()/2; - - painter->setPen(pen); - - if (qApp->layoutDirection() == Qt::LeftToRight) { - int xStart = option.rect.x(); - painter->drawLine(xStart, y, xStart + space, y); - - int xm = option.rect.x() + space; - int thick = option.rect.height() / 2; - int ym = option.rect.y() + ((option.rect.height() - thick) / 2); - - pen.setStyle(Qt::SolidLine); - painter->setPen(pen); - painter->setBrush(textColor); - - //! draw ending cirlce - painter->drawEllipse(QPoint(xm, ym + thick/2), thick/4, thick/4); - } else { - int xEnd = option.rect.x() + option.rect.width(); - painter->drawLine(xEnd, y, xEnd-space, y); - - int xm = option.rect.x() + option.rect.width() - space; - int thick = option.rect.height() / 2; - int ym = option.rect.y() + ((option.rect.height() - thick) / 2); - - pen.setStyle(Qt::SolidLine); - painter->setPen(pen); - painter->setBrush(textColor); - - //! draw ending cirlce - painter->drawEllipse(QPoint(xm, ym + thick/2), thick/4, thick/4); - } -} - -void Shared::updateButtonText(QWidget *editor, const QModelIndex &index) const -{ - if (!editor) { - return; - } - - Latte::Data::LayoutsTable allLayouts = qvariant_cast(index.data(Model::Layouts::ALLLAYOUTSROLE)); - - QPushButton *button = static_cast(editor); - Latte::Data::LayoutsTable assignedLayouts; - - foreach (QAction *action, button->menu()->actions()) { - if (action->isChecked()) { - QString id = action->data().toString(); - if (allLayouts.containsId(id)) { - assignedLayouts << allLayouts[action->data().toString()]; - } - } - } - - button->setText(joined(assignedLayouts, QStringList(), false)); -} - -QString Shared::joined(const Latte::Data::LayoutsTable &layouts, const QStringList &originalIds, bool formatText) const -{ - QString finalText; - - for (int i = 0; i < layouts.rowCount(); ++i) { - if (i > 0) { - finalText += ", "; - } - - bool bold = layouts[i].isActive; - bool italic = !originalIds.contains(layouts[i].id); - - QString name = layouts[i].name; - - if (bold && formatText) { - name = "" + name + ""; - } - - if (italic && formatText) { - name = "" + name + ""; - } - - finalText += name; - } - - return finalText; -} - -} -} -} -} diff --git a/app/settings/delegates/shareddelegate.h b/app/settings/delegates/shareddelegate.h deleted file mode 100644 index 906d87766..000000000 --- a/app/settings/delegates/shareddelegate.h +++ /dev/null @@ -1,66 +0,0 @@ -/* -* Copyright 2019 Michail Vourlakos -* -* This file is part of Latte-Dock -* -* Latte-Dock is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public License as -* published by the Free Software Foundation; either version 2 of -* the License, or (at your option) any later version. -* -* Latte-Dock is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see . -*/ - -#ifndef SHAREDDELEGATE_H -#define SHAREDDELEGATE_H - -// local -#include "../controllers/layoutscontroller.h" -#include "../../data/layoutstable.h" - -// Qt -#include - -class QModelIndex; -class QWidget; - -namespace Latte { -namespace Settings { -namespace Layout { -namespace Delegate { - -class Shared : public QStyledItemDelegate -{ - Q_OBJECT -public: - Shared(Controller::Layouts *parent); - - QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override; - void setEditorData(QWidget *editor, const QModelIndex &index) const override; - void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override; - void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const override; - void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override; - -private: - void paintSharedToIndicator(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const; - void updateButtonText(QWidget *editor, const QModelIndex &index) const; - - QString joined(const Latte::Data::LayoutsTable &layouts, const QStringList &originalIds, bool formatText = true) const; - -private: - // we need it in order to send to the model the information when the SHARETO cell is edited - Controller::Layouts *m_controller{nullptr}; -}; - -} -} -} -} - -#endif diff --git a/app/settings/dialogs/settingsdialog.ui b/app/settings/dialogs/settingsdialog.ui index 86cc7a494..2464934fa 100644 --- a/app/settings/dialogs/settingsdialog.ui +++ b/app/settings/dialogs/settingsdialog.ui @@ -29,7 +29,7 @@ - 1 + 0 @@ -287,20 +287,6 @@ - - - - Shared - - - - .. - - - true - - - diff --git a/app/settings/handlers/tablayoutshandler.cpp b/app/settings/handlers/tablayoutshandler.cpp index 386b79f40..f0c1dc0ec 100644 --- a/app/settings/handlers/tablayoutshandler.cpp +++ b/app/settings/handlers/tablayoutshandler.cpp @@ -165,14 +165,6 @@ void TabLayouts::initLayoutMenu() connectActionWithButton(m_ui->lockedButton, m_lockedLayoutAction); connect(m_lockedLayoutAction, &QAction::triggered, this, &TabLayouts::lockLayout); - m_sharedLayoutAction = m_layoutMenu->addAction(i18nc("shared layout", "Sha&red")); - m_sharedLayoutAction->setToolTip(i18n("Share selected layout with other central layouts")); - m_sharedLayoutAction->setIcon(QIcon::fromTheme("document-share")); - m_sharedLayoutAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_R)); - m_sharedLayoutAction->setCheckable(true); - connectActionWithButton(m_ui->sharedButton, m_sharedLayoutAction); - connect(m_sharedLayoutAction, &QAction::triggered, this, &TabLayouts::shareLayout); - m_detailsAction = m_layoutMenu->addAction(i18nc("layout details", "De&tails...")); m_detailsAction->setToolTip(i18n("Show selected layout details")); m_detailsAction->setIcon(QIcon::fromTheme("view-list-details")); @@ -311,10 +303,9 @@ void TabLayouts::switchLayout() } if (!m_layoutsController->selectedLayoutIsCurrentActive()) { - bool appliedShared = m_layoutsController->inMultipleMode() && selectedLayoutCurrent.isShared(); bool freeActivitiesLayoutUpdated{false}; - if (!appliedShared && selectedLayoutCurrent.activities.isEmpty()) { + if (selectedLayoutCurrent.activities.isEmpty()) { m_layoutsController->setOriginalLayoutForFreeActivities(selectedLayoutOriginal.id); freeActivitiesLayoutUpdated = true; } @@ -362,13 +353,6 @@ void TabLayouts::updatePerLayoutButtonsState() { //! UI Elements that need to be enabled/disabled - //! Shared Button - visible - if (m_layoutsController->inMultipleMode()) { - setTwinProperty(m_sharedLayoutAction, TWINVISIBLE, true); - } else { - setTwinProperty(m_sharedLayoutAction, TWINVISIBLE, false); - } - //! Pause Button - visible if (!m_layoutsController->inMultipleMode()) { //! Single Layout mode @@ -384,8 +368,7 @@ void TabLayouts::updatePerLayoutButtonsState() Latte::Data::Layout selectedLayout = m_layoutsController->selectedLayoutCurrentData(); //! Switch Button - if ((m_layoutsController->inMultipleMode() && selectedLayout.isShared()) - || m_layoutsController->selectedLayoutIsCurrentActive()) { + if (m_layoutsController->selectedLayoutIsCurrentActive()) { setTwinProperty(m_switchLayoutAction, TWINENABLED, false); } else { setTwinProperty(m_switchLayoutAction, TWINENABLED, true); @@ -394,8 +377,7 @@ void TabLayouts::updatePerLayoutButtonsState() //! Pause Button - enabled if (m_layoutsController->inMultipleMode()) { if (selectedLayout.isActive - && !selectedLayout.isForFreeActivities() - && !selectedLayout.isShared()) { + && !selectedLayout.isForFreeActivities()) { setTwinProperty(m_pauseLayoutAction, TWINENABLED, true); } else { setTwinProperty(m_pauseLayoutAction, TWINENABLED, false); @@ -416,13 +398,6 @@ void TabLayouts::updatePerLayoutButtonsState() setTwinProperty(m_lockedLayoutAction, TWINCHECKED, false); } - //! Layout Shared Button - if (selectedLayout.isShared()) { - setTwinProperty(m_sharedLayoutAction, TWINCHECKED, true); - } else { - setTwinProperty(m_sharedLayoutAction, TWINCHECKED, false); - } - setTwinProperty(m_detailsAction, TWINENABLED, true); } @@ -529,19 +504,6 @@ void TabLayouts::lockLayout() updatePerLayoutButtonsState(); } -void TabLayouts::shareLayout() -{ - qDebug() << Q_FUNC_INFO; - - if (!isCurrentTab() || !m_sharedLayoutAction->isEnabled()) { - return; - } - - m_layoutsController->toggleSharedForSelected(); - - updatePerLayoutButtonsState(); -} - void TabLayouts::importLayout() { qDebug() << Q_FUNC_INFO; diff --git a/app/settings/handlers/tablayoutshandler.h b/app/settings/handlers/tablayoutshandler.h index 24a4b6f13..960189d96 100644 --- a/app/settings/handlers/tablayoutshandler.h +++ b/app/settings/handlers/tablayoutshandler.h @@ -99,7 +99,6 @@ private slots: void exportLayoutAsTemplate(); void lockLayout(); void removeLayout(); - void shareLayout(); void detailsLayout(); void onCurrentPageChanged(int page); @@ -137,7 +136,6 @@ private: QAction *m_copyLayoutAction{nullptr}; QAction *m_removeLayoutAction{nullptr}; QAction *m_lockedLayoutAction{nullptr}; - QAction *m_sharedLayoutAction{nullptr}; QAction *m_importLayoutAction{nullptr}; QAction *m_exportLayoutAction{nullptr}; QAction *m_downloadLayoutAction{nullptr}; diff --git a/app/settings/models/layoutsmodel.cpp b/app/settings/models/layoutsmodel.cpp index aebc82c70..0b0372ed0 100644 --- a/app/settings/models/layoutsmodel.cpp +++ b/app/settings/models/layoutsmodel.cpp @@ -53,10 +53,9 @@ Layouts::Layouts(QObject *parent, Latte::Corona *corona) QVector roles; roles << Qt::DisplayRole; roles << Qt::UserRole; - roles << ISSHAREDROLE; roles << INMULTIPLELAYOUTSROLE; - emit dataChanged(index(0, NAMECOLUMN), index(rowCount()-1, SHAREDCOLUMN), roles); + emit dataChanged(index(0, NAMECOLUMN), index(rowCount()-1, ACTIVITYCOLUMN), roles); }); connect(this, &Layouts::inMultipleModeChanged, this, &Layouts::updateActiveStates); @@ -115,7 +114,7 @@ int Layouts::columnCount(const QModelIndex &parent) const { Q_UNUSED(parent); - return SHAREDCOLUMN+1; + return ACTIVITYCOLUMN+1; } void Layouts::clear() @@ -147,7 +146,7 @@ void Layouts::applyData() o_inMultipleMode = m_inMultipleMode; o_layoutsTable = m_layoutsTable; - emit dataChanged(index(0, BACKGROUNDCOLUMN), index(rowCount()-1,SHAREDCOLUMN), roles); + emit dataChanged(index(0, BACKGROUNDCOLUMN), index(rowCount()-1, ACTIVITYCOLUMN), roles); } void Layouts::resetData() @@ -174,7 +173,7 @@ void Layouts::setLayoutProperties(const Latte::Data::Layout &layout) QVector roles; roles << Qt::DisplayRole; roles << Qt::UserRole; - emit dataChanged(index(dataRow, IDCOLUMN), index(dataRow, SHAREDCOLUMN), roles); + emit dataChanged(index(dataRow, IDCOLUMN), index(dataRow, ACTIVITYCOLUMN), roles); } } @@ -248,28 +247,6 @@ void Layouts::setOriginalLayoutForFreeActivities(const QString &id) } } -QStringList Layouts::assignedActivitiesFromShared(const int &row) const -{ - QStringList assigns; - - if (!m_layoutsTable.rowExists(row)) { - return assigns; - } - - if (m_layoutsTable[row].isShared()) { - for (int i=0; i=0 && !m_layoutsTable[shareRow].activities.isEmpty()) { - assigns << m_layoutsTable[shareRow].activities; - } - } - } - - return assigns; -} - QVariant Layouts::headerData(int section, Qt::Orientation orientation, int role) const { if (orientation != Qt::Horizontal) { @@ -332,15 +309,6 @@ QVariant Layouts::headerData(int section, Qt::Orientation orientation, int role) return QVariant::fromValue(Qt::AlignLeft | Qt::AlignVCenter); }*/ break; - case SHAREDCOLUMN: - if (role == Qt::DisplayRole) { - return QString(i18nc("column for shared layout to show which layouts is assigned to", "Shared To")); - } else if (role == Qt::DecorationRole) { - return QIcon::fromTheme("document-share"); - }/* else if (role == Qt::TextAlignmentRole ){ - return QVariant::fromValue(Qt::AlignLeft | Qt::AlignVCenter); - }*/ - break; default: break; }; @@ -360,8 +328,7 @@ Qt::ItemFlags Layouts::flags(const QModelIndex &index) const } if (column == ACTIVITYCOLUMN - || column == NAMECOLUMN - || column == SHAREDCOLUMN) { + || column == NAMECOLUMN) { flags |= Qt::ItemIsEditable; } @@ -441,56 +408,9 @@ QList Layouts::iconsForCentralLayout(const int &row) co return icons; } -QList Layouts::iconsForSharedLayout(const int &row) const -{ - //! SHARED layout case - QList icons; - - if (!m_layoutsTable[row].icon.isEmpty()) { - //! if there is specific icon set from the user for this layout - //! we draw only that icon - Latte::Data::LayoutIcon icon; - icon.name = m_layoutsTable[row].icon; - icon.isFreeActivities = false; - icon.isBackgroundFile = false; - icons << icon; - return icons; - } - - for (int i=0; i=0) { - icons << iconsForCentralLayout(shareRow); - } - } - - int freeActivitiesPos = -1; - - for (int i=0; i= 0) { - //! Put FreeActivities icon on top of the rest icons - Latte::Data::LayoutIcon freeActsData = icons.takeAt(freeActivitiesPos); - icons << freeActsData; - } - - return icons; -} - QList Layouts::icons(const int &row) const { - if (!m_layoutsTable[row].isShared()) { - return iconsForCentralLayout(row); - } else { - return iconsForSharedLayout(row); - } + return iconsForCentralLayout(row); } QString Layouts::sortableText(const int &priority, const int &row) const @@ -545,14 +465,10 @@ QVariant Layouts::data(const QModelIndex &index, int role) const return m_layoutsTable[row].isActive; } else if (role == ISLOCKEDROLE) { return m_layoutsTable[row].isLocked; - } else if (role == ISSHAREDROLE) { - return m_layoutsTable[row].isShared(); } else if (role == INMULTIPLELAYOUTSROLE) { return inMultipleMode(); } else if (role == ASSIGNEDACTIVITIESROLE) { return m_layoutsTable[row].activities; - } else if (role == ASSIGNEDACTIVITIESFROMSHAREDROLE) { - return assignedActivitiesFromShared(row); } else if (role == ALLACTIVITIESSORTEDROLE) { QStringList activities; activities << QString(Latte::Data::Layout::FREEACTIVITIESID); @@ -566,8 +482,6 @@ QVariant Layouts::data(const QModelIndex &index, int role) const QVariant layouts; layouts.setValue(m_layoutsTable); return layouts; - } else if (role == SHAREDTOINEDITROLE) { - return (m_sharedToInEditRow == row); } else if (role == ISNEWLAYOUTROLE) { return isNewLayout; } else if (role == LAYOUTHASCHANGESROLE) { @@ -612,9 +526,7 @@ QVariant Layouts::data(const QModelIndex &index, int role) const break; case MENUCOLUMN: if (role == SORTINGROLE) { - if ((m_inMultipleMode && m_layoutsTable[row].isShared())) { - return sortingPriority(MEDIUMPRIORITY, row); - } else if (m_layoutsTable[row].isShownInMenu) { + if (m_layoutsTable[row].isShownInMenu) { return sortingPriority(HIGHESTPRIORITY, row); } @@ -631,9 +543,7 @@ QVariant Layouts::data(const QModelIndex &index, int role) const break; case BORDERSCOLUMN: if (role == SORTINGROLE) { - if ((m_inMultipleMode && m_layoutsTable[row].isShared())) { - return sortingPriority(MEDIUMPRIORITY, row); - } else if (m_layoutsTable[row].hasDisabledBorders) { + if (m_layoutsTable[row].hasDisabledBorders) { return sortingPriority(HIGHESTPRIORITY, row); } @@ -650,9 +560,7 @@ QVariant Layouts::data(const QModelIndex &index, int role) const break; case ACTIVITYCOLUMN: if (role == SORTINGROLE) { - if ((m_inMultipleMode && m_layoutsTable[row].isShared())) { - return sortingPriority(MEDIUMPRIORITY, row) + m_layoutsTable[row].shares.count(); - } else if (m_layoutsTable[row].activities.count() > 0) { + if (m_layoutsTable[row].activities.count() > 0) { if (m_layoutsTable[row].activities.contains(Latte::Data::Layout::FREEACTIVITIESID)) { return sortingPriority(HIGHESTPRIORITY, row); } else { @@ -671,29 +579,6 @@ QVariant Layouts::data(const QModelIndex &index, int role) const return m_layoutsTable[row].activities; } break; - case SHAREDCOLUMN: - if (role == SORTINGROLE) { - if (m_layoutsTable[row].shares.count() > 0) { - //! highest priority based on number of shares - return HIGHESTPRIORITY + m_layoutsTable[row].shares.count(); - } - - if (m_layoutsTable[row].activities.contains(Latte::Data::Layout::FREEACTIVITIESID)) { - //! high activity priority - return HIGHPRIORITY; - } - - return NORMALPRIORITY; - } - - if (role == ORIGINALSHARESROLE) { - return isNewLayout ? QStringList() : original.shares; - } - - if (role == Qt::UserRole) { - return m_layoutsTable[row].shares; - } - break; default: return QVariant{}; }; @@ -728,7 +613,6 @@ void Layouts::assignFreeActivitiesLayoutAt(const QString &layoutName) int row = m_layoutsTable.indexOf(reqId); setActivities(row, QStringList(Latte::Data::Layout::FREEACTIVITIESID)); - setShares(row, QStringList()); } void Layouts::autoAssignFreeActivitiesLayout() @@ -741,7 +625,7 @@ void Layouts::autoAssignFreeActivitiesLayout() QString activeCurrentId = o_layoutsTable.idForName(m_corona->layoutsManager()->currentLayoutName()); int row = m_layoutsTable.indexOf(activeCurrentId); - if (row>=0 && !(m_inMultipleMode && m_layoutsTable[row].isShared()) && m_layoutsTable[row].activities.isEmpty()) { + if (row>=0 && m_layoutsTable[row].activities.isEmpty()) { m_layoutsTable[row].activities << Latte::Data::Layout::FREEACTIVITIESID; emit dataChanged(index(row,BACKGROUNDCOLUMN), index(row,ACTIVITYCOLUMN), roles); return; @@ -749,7 +633,7 @@ void Layouts::autoAssignFreeActivitiesLayout() //! Active layouts with no activities have mid priority for(int i=0; i= 0) { - m_layoutsTable[i].shares[pos] = newId; - emit dataChanged(index(i, NAMECOLUMN), index(i, NAMECOLUMN), roles); - } - } -} - -bool Layouts::shareIsAvailable(const QString id) const -{ - for(int i=0; i roles; - roles << Qt::DisplayRole; - roles << Qt::UserRole; - - m_layoutsTable[row].shares = shares; - emit dataChanged(index(row,IDCOLUMN), index(row,SHAREDCOLUMN), roles); - - for(int i=0; i SHAREDCOLUMN) { + if (!m_layoutsTable.rowExists(row) || column<0 || column > ACTIVITYCOLUMN) { return false; } @@ -906,7 +718,7 @@ bool Layouts::setData(const QModelIndex &index, const QVariant &value, int role) //! common roles for all row cells if (role == ISLOCKEDROLE) { m_layoutsTable[row].isLocked = value.toBool(); - emit dataChanged(this->index(row,0), this->index(row,SHAREDCOLUMN), roles); + emit dataChanged(this->index(row,0), this->index(row, ACTIVITYCOLUMN), roles); return true; } @@ -974,22 +786,6 @@ bool Layouts::setData(const QModelIndex &index, const QVariant &value, int role) return true; } break; - case SHAREDCOLUMN: - if (role == Qt::UserRole) { - setShares(row, value.toStringList()); - emit dataChanged(this->index(row, NAMECOLUMN), this->index(row,NAMECOLUMN), roles); - return true; - } else if (role == SHAREDTOINEDITROLE) { - bool inEdit = value.toBool(); - m_sharedToInEditRow = inEdit ? row : -1; - roles << Qt::DisplayRole; - roles << Qt::UserRole; - roles << SHAREDTOINEDITROLE; - emit dataChanged(this->index(row, ACTIVITYCOLUMN), this->index(row, SHAREDCOLUMN), roles); - emit dataChanged(this->index(row, NAMECOLUMN), this->index(row,NAMECOLUMN), roles); - return true; - } - break; }; return false; @@ -1013,7 +809,7 @@ void Layouts::updateActiveStates() if (m_layoutsTable[i].isActive != iActive) { m_layoutsTable[i].isActive = iActive; - emit dataChanged(index(i, BACKGROUNDCOLUMN), index(i,SHAREDCOLUMN), roles); + emit dataChanged(index(i, BACKGROUNDCOLUMN), index(i,ACTIVITYCOLUMN), roles); } } } diff --git a/app/settings/models/layoutsmodel.h b/app/settings/models/layoutsmodel.h index 79c0b83a3..38ed8b21c 100644 --- a/app/settings/models/layoutsmodel.h +++ b/app/settings/models/layoutsmodel.h @@ -51,8 +51,7 @@ public: NAMECOLUMN, MENUCOLUMN, BORDERSCOLUMN, - ACTIVITYCOLUMN, - SHAREDCOLUMN + ACTIVITYCOLUMN }; enum LayoutUserRoles @@ -60,22 +59,18 @@ public: IDROLE = Qt::UserRole + 1, ISACTIVEROLE, ISLOCKEDROLE, - ISSHAREDROLE, INMULTIPLELAYOUTSROLE, BACKGROUNDUSERROLE, ASSIGNEDACTIVITIESROLE, - ASSIGNEDACTIVITIESFROMSHAREDROLE, ALLACTIVITIESSORTEDROLE, ALLACTIVITIESDATAROLE, ALLLAYOUTSROLE, - SHAREDTOINEDITROLE, SORTINGROLE, ISNEWLAYOUTROLE, LAYOUTHASCHANGESROLE, ORIGINALISSHOWNINMENUROLE, ORIGINALHASBORDERSROLE, ORIGINALASSIGNEDACTIVITIESROLE, - ORIGINALSHARESROLE }; enum SortingPriority @@ -129,9 +124,6 @@ public: void setIconsPath(QString iconsPath); - bool shareIsAvailable(const QString id) const; - QStringList availableShareIdsFor(const QString id) const; - QList alteredLayouts() const; const Latte::Data::LayoutsTable ¤tLayoutsData(); @@ -160,25 +152,16 @@ private: void setActivities(const int &row, const QStringList &activities); void setId(const int &row, const QString &newId); - void setShares(const int &row, const QStringList &shares); QString sortingPriority(const SortingPriority &priority, const int &row) const; QString sortableText(const int &priority, const int &row) const; QStringList cleanStrings(const QStringList &original, const QStringList &occupied); - QStringList assignedActivitiesFromShared(const int &row) const; - QList icons(const int &row) const; QList iconsForCentralLayout(const int &row) const; - QList iconsForSharedLayout(const int &row) const; private: - //! break MVC only when a SharedTo editor is created - //! because we want to move the dot indicator in the Activities delegate - //! when that happens - int m_sharedToInEditRow; - QString m_iconsPath; Latte::Data::ActivitiesMap m_activitiesMap; diff --git a/app/view/positioner.cpp b/app/view/positioner.cpp index 652eb687b..9f529e840 100644 --- a/app/view/positioner.cpp +++ b/app/view/positioner.cpp @@ -27,7 +27,6 @@ #include "../lattecorona.h" #include "../screenpool.h" #include "../layout/centrallayout.h" -#include "../layout/sharedlayout.h" #include "../layouts/manager.h" #include "../settings/universalsettings.h" #include "../wm/abstractwindowinterface.h" @@ -1026,10 +1025,10 @@ void Positioner::hideDockDuringMovingToLayout(QString layoutName) auto layout = m_view->layout(); auto central = qobject_cast(layout); - auto shared = qobject_cast(layout); - bool inVisibleWorkarea = ((central && central->sharedLayout() && central->sharedLayout()->name() == layoutName) - || (shared && shared->contains(layoutName) && m_corona->layoutsManager()->currentLayoutName() == layoutName)); + //! Needs to be updated; when the next layout is in the same Visible Workarea + //! with the old one changing layouts should be instant + bool inVisibleWorkarea{true}; if (inVisibleWorkarea) { m_view->moveToLayout(layoutName);