update shared layouts activities icons

pull/11/head
Michail Vourlakos 5 years ago
parent 7dacde2d3a
commit 466129c1d0

@ -124,7 +124,12 @@ void BackgroundCmbBox::paint(QPainter *painter, const QStyleOptionViewItem &opti
//! activities icons
Data::ActivitiesMap allActivitiesData = index.data(Model::Layouts::ALLACTIVITIESDATAROLE).value<Data::ActivitiesMap>();
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<assignedIds.count(); ++i) {
QString id = assignedIds[i];
@ -134,9 +139,15 @@ void BackgroundCmbBox::paint(QPainter *painter, const QStyleOptionViewItem &opti
icon.isFreeActivities = (id == Data::Layout::FREEACTIVITIESID);
icon.name = allActivitiesData[id].icon;
icons << icon;
freeActivitiesPos = icons.count()-1;
}
}
if (freeActivitiesPos>=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;

@ -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<m_layoutsTable[row].shares.count(); ++i) {
QString shareId = m_layoutsTable[row].shares[i];
int shareRow = rowForId(shareId);
if (shareRow>=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);

@ -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;

Loading…
Cancel
Save