From 466129c1d0e83bac03203032b729eac36c36e961 Mon Sep 17 00:00:00 2001 From: Michail Vourlakos Date: Thu, 19 Mar 2020 18:56:03 +0200 Subject: [PATCH] update shared layouts activities icons --- .../delegates/backgroundcmbdelegate.cpp | 15 ++++++++++-- app/settings/models/layoutsmodel.cpp | 24 +++++++++++++++++++ app/settings/models/layoutsmodel.h | 3 +++ 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/app/settings/delegates/backgroundcmbdelegate.cpp b/app/settings/delegates/backgroundcmbdelegate.cpp index 0dae6e9e6..592a38cee 100644 --- a/app/settings/delegates/backgroundcmbdelegate.cpp +++ b/app/settings/delegates/backgroundcmbdelegate.cpp @@ -124,7 +124,12 @@ void BackgroundCmbBox::paint(QPainter *painter, const QStyleOptionViewItem &opti //! activities icons Data::ActivitiesMap allActivitiesData = index.data(Model::Layouts::ALLACTIVITIESDATAROLE).value(); - QStringList assignedIds = index.data(Model::Layouts::ASSIGNEDACTIVITIESROLE).toStringList(); + + bool isShared = index.data(Model::Layouts::LAYOUTISSHAREDROLE).toBool() && index.data(Model::Layouts::INMULTIPLELAYOUTSROLE).toBool(); + QStringList assignedIds = isShared ? index.data(Model::Layouts::ASSIGNEDACTIVITIESFROMSHAREDROLE).toStringList() : + index.data(Model::Layouts::ASSIGNEDACTIVITIESROLE).toStringList(); + + int freeActivitiesPos = -1; for(int i=0; i=0) { + IconData freeActsData = icons.takeAt(freeActivitiesPos); + icons.prepend(freeActsData); + } + //! background image if (background.isValid() && icons.count() == 0) { QString backgroundStr = background.toString(); @@ -152,7 +163,7 @@ void BackgroundCmbBox::paint(QPainter *painter, const QStyleOptionViewItem &opti } if (icons.count() > 0) { - int localMargin = icons[0].isBackground ? MARGIN+1 : MARGIN-1; + int localMargin = icons[0].isBackground ? qMin(option.rect.height()/4,MARGIN+5) : MARGIN-1; if (icons[0].isFreeActivities) { localMargin = 0; diff --git a/app/settings/models/layoutsmodel.cpp b/app/settings/models/layoutsmodel.cpp index 57827141a..503a5c019 100644 --- a/app/settings/models/layoutsmodel.cpp +++ b/app/settings/models/layoutsmodel.cpp @@ -223,6 +223,28 @@ void Layouts::setLayoutNameForFreeActivities(const QString &name) } } +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) { @@ -343,6 +365,8 @@ QVariant Layouts::data(const QModelIndex &index, int role) const return m_layoutsTable[row].nameWasEdited(); } else if (role == ASSIGNEDACTIVITIESROLE) { return m_layoutsTable[row].activities; + } else if (role == ASSIGNEDACTIVITIESFROMSHAREDROLE) { + return assignedActivitiesFromShared(row); } else if (role == ALLACTIVITIESSORTEDROLE) { QStringList activities; activities << QString(Data::Layout::FREEACTIVITIESID); diff --git a/app/settings/models/layoutsmodel.h b/app/settings/models/layoutsmodel.h index f4bbecb3d..e2c9c03d8 100644 --- a/app/settings/models/layoutsmodel.h +++ b/app/settings/models/layoutsmodel.h @@ -61,6 +61,7 @@ public: LAYOUTNAMEWASEDITEDROLE, INMULTIPLELAYOUTSROLE, ASSIGNEDACTIVITIESROLE, + ASSIGNEDACTIVITIESFROMSHAREDROLE, ALLACTIVITIESSORTEDROLE, ALLACTIVITIESDATAROLE, ALLLAYOUTSROLE, @@ -132,6 +133,8 @@ private: QStringList cleanStrings(const QStringList &original, const QStringList &occupied); + QStringList assignedActivitiesFromShared(const int &row) const; + private: bool m_inMultipleMode{false}; Data::LayoutsTable m_layoutsTable;