diff --git a/app/settings/delegates/backgroundcmbdelegate.cpp b/app/settings/delegates/backgroundcmbdelegate.cpp index 5c9860576..b9b567fc0 100644 --- a/app/settings/delegates/backgroundcmbdelegate.cpp +++ b/app/settings/delegates/backgroundcmbdelegate.cpp @@ -121,7 +121,7 @@ void BackgroundCmbBox::paint(QPainter *painter, const QStyleOptionViewItem &opti QList icons = index.data(Qt::UserRole).value>(); if (icons.count() > 0) { - int localMargin = icons[0].isBackgroundFile && icons.count() == 1 ? qMin(option.rect.height()/4,MARGIN+5) : MARGIN-1; + int localMargin = MARGIN-1;// icons[0].isBackgroundFile && icons.count() == 1 ? qMin(option.rect.height()/4,MARGIN+5) : MARGIN-1; int aY = option.rect.y() + localMargin; int thick = option.rect.height() - localMargin*2; @@ -153,8 +153,11 @@ void BackgroundCmbBox::drawIcon(QPainter *painter, const QStyleOptionViewItem &o painter->setRenderHint(QPainter::Antialiasing, true); if (icon.isBackgroundFile) { + int backImageMargin = qMin(option.rect.height()/4, MARGIN+2); + QRect backTarget(target.x() + backImageMargin, target.y() + backImageMargin, target.width() - 2*backImageMargin, target.height() - 2*backImageMargin); + QPixmap backImage(icon.name); - backImage = backImage.copy(QRect(MARGIN, MARGIN, target.width(),target.height())); + backImage = backImage.copy(backTarget); QPalette::ColorRole textColorRole = selected ? QPalette::HighlightedText : QPalette::Text; @@ -165,7 +168,7 @@ void BackgroundCmbBox::drawIcon(QPainter *painter, const QStyleOptionViewItem &o painter->setBrush(imageBrush); painter->setPen(pen); - painter->drawEllipse(target); + painter->drawEllipse(backTarget); } else { QIcon::Mode mode = ((active && (selected || focused)) ? QIcon::Selected : QIcon::Normal); diff --git a/app/settings/models/layoutsmodel.cpp b/app/settings/models/layoutsmodel.cpp index 31b4ea27c..703d98151 100644 --- a/app/settings/models/layoutsmodel.cpp +++ b/app/settings/models/layoutsmodel.cpp @@ -373,12 +373,11 @@ void Layouts::setIconsPath(QString iconsPath) m_iconsPath = iconsPath; } -QList Layouts::icons(const int &row) const +QList Layouts::iconsForCentralLayout(const int &row) const { QList icons; - QStringList activitiesIds = m_layoutsTable[row].isShared() ? - assignedActivitiesFromShared(row) : m_layoutsTable[row].activities; + QStringList activitiesIds = m_layoutsTable[row].activities; int freeActivitiesPos = -1; @@ -403,7 +402,9 @@ QList Layouts::icons(const int &row) const if (freeActivitiesPos >= 0) { Data::LayoutIcon freeActsData = icons.takeAt(freeActivitiesPos); - icons.prepend(freeActsData); + icons.clear(); + icons << freeActsData; + return icons; } if (!m_layoutsTable[row].icon.isEmpty() && freeActivitiesPos<0) { @@ -440,6 +441,58 @@ QList Layouts::icons(const int &row) const 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 + 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 + 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); + } +} + QString Layouts::sortableText(const int &priority, const int &row) const { QString numberPart; diff --git a/app/settings/models/layoutsmodel.h b/app/settings/models/layoutsmodel.h index 9c64e8bd5..8b0de88ee 100644 --- a/app/settings/models/layoutsmodel.h +++ b/app/settings/models/layoutsmodel.h @@ -169,6 +169,8 @@ private: 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