From 8ba60ea89a0ddc98fbfe04126fe597a6f010bacf Mon Sep 17 00:00:00 2001 From: Michail Vourlakos Date: Sat, 10 Apr 2021 13:45:45 +0300 Subject: [PATCH] viewsdialog:show active screens with bold --- app/data/screendata.cpp | 7 +++++++ app/data/screendata.h | 1 + app/screenpool.cpp | 2 +- .../viewsdialog/delegates/singleoptiondelegate.cpp | 11 +++++++++++ app/settings/viewsdialog/viewsmodel.cpp | 5 +++++ 5 files changed, 25 insertions(+), 1 deletion(-) diff --git a/app/data/screendata.cpp b/app/data/screendata.cpp index f0d7d0dc3..a9af7236c 100644 --- a/app/data/screendata.cpp +++ b/app/data/screendata.cpp @@ -28,6 +28,7 @@ namespace Data { Screen::Screen() : Generic(), hasExplicitViews(false), + isActive(false), geometry(QRect(0, 0, 1920, 1080)) { } @@ -35,6 +36,7 @@ Screen::Screen() Screen::Screen(Screen &&o) : Generic(o), hasExplicitViews(o.hasExplicitViews), + isActive(o.isActive), geometry(o.geometry) { } @@ -42,6 +44,7 @@ Screen::Screen(Screen &&o) Screen::Screen(const Screen &o) : Generic(o), hasExplicitViews(o.hasExplicitViews), + isActive(o.isActive), geometry(o.geometry) { } @@ -57,6 +60,7 @@ Screen &Screen::operator=(const Screen &rhs) id = rhs.id; name = rhs.name; hasExplicitViews = rhs.hasExplicitViews; + isActive = rhs.isActive; geometry = rhs.geometry; return (*this); @@ -67,6 +71,7 @@ Screen &Screen::operator=(Screen &&rhs) id = rhs.id; name = rhs.name; hasExplicitViews = rhs.hasExplicitViews; + isActive = rhs.isActive; geometry = rhs.geometry; return (*this); @@ -77,6 +82,7 @@ bool Screen::operator==(const Screen &rhs) const return (id == rhs.id) && (name == rhs.name) && (hasExplicitViews == rhs.hasExplicitViews) + //&& (isActive == rhs.isActive) /*Disabled because this is not a data but a screen state*/ && (geometry == rhs.geometry); } @@ -91,6 +97,7 @@ void Screen::init(const QString &screenId, const QString &serialized) id = screenId; name = parts[0]; + isActive = false; if (parts.count() > 1) { geometry = Latte::stringToRect(parts[1]); diff --git a/app/data/screendata.h b/app/data/screendata.h index 7c0b88828..985308a37 100644 --- a/app/data/screendata.h +++ b/app/data/screendata.h @@ -46,6 +46,7 @@ public: //! Screen data bool hasExplicitViews{false}; + bool isActive{false}; QRect geometry; //! Operators diff --git a/app/screenpool.cpp b/app/screenpool.cpp index fbf42b25d..49d3f9976 100644 --- a/app/screenpool.cpp +++ b/app/screenpool.cpp @@ -146,7 +146,7 @@ void ScreenPool::updateScreenGeometry(const int &screenId, const QRect &screenGe Latte::Data::ScreensTable ScreenPool::screensTable() -{ +{ return m_screensTable; } diff --git a/app/settings/viewsdialog/delegates/singleoptiondelegate.cpp b/app/settings/viewsdialog/delegates/singleoptiondelegate.cpp index ba4cadba6..2cf035d14 100644 --- a/app/settings/viewsdialog/delegates/singleoptiondelegate.cpp +++ b/app/settings/viewsdialog/delegates/singleoptiondelegate.cpp @@ -59,12 +59,17 @@ QWidget *SingleOption::createEditor(QWidget *parent, const QStyleOptionViewItem QString currentChoice = index.data(Qt::UserRole).toString(); Latte::Data::GenericBasicTable choices; + QStringList activeChoices; if (column == Model::Views::SCREENCOLUMN) { Latte::Data::ScreensTable screens = index.data(Model::Views::CHOICESROLE).value(); for (int i=0; i(); @@ -78,6 +83,12 @@ QWidget *SingleOption::createEditor(QWidget *parent, const QStyleOptionViewItem action->setIcon(QIcon::fromTheme("dialog-yes")); } + if (activeChoices.contains(choices[i].id)) { + QFont font = action->font(); + font.setBold(true); + action->setFont(font); + } + connect(action, &QAction::triggered, this, [this, button, menu, action](bool checked) { menu->setProperty(PRESSEDPROPERTY, action->data()); button->clearFocus(); diff --git a/app/settings/viewsdialog/viewsmodel.cpp b/app/settings/viewsdialog/viewsmodel.cpp index f0f6dd513..f76e368f0 100644 --- a/app/settings/viewsdialog/viewsmodel.cpp +++ b/app/settings/viewsdialog/viewsmodel.cpp @@ -214,8 +214,13 @@ void Views::populateScreens() Data::Screen primary(QString::number(Data::Screen::ONPRIMARYID), i18nc("primary screen", " - Follow Primary Screen - ")); + primary.isActive = true; s_screens << primary; s_screens << m_corona->screenPool()->screensTable(); + + for (int i=1; iscreenPool()->isScreenActive(s_screens[i].id.toInt()); + } } void Views::setOriginalData(Latte::Data::ViewsTable &data)