17#include "displaycutoutsmodel.h"
20#include <deviceinfo.h>
22QRect parseRect(QString rect)
24 auto parts = rect.split(
" ");
25 if (parts.size() != 4) {
29 parts[0].toInt(), parts[1].toInt(),
30 parts[2].toInt(), parts[3].toInt()
34DisplayCutoutsModel::DisplayCutoutsModel(QObject *parent)
35 : QAbstractListModel(parent)
40void DisplayCutoutsModel::loadConfig()
43 if (!info.contains(
"DisplayCutoutsCollapsed")) {
44 qWarning() <<
"DisplayCutouts not configured, not enabling";
48 m_collapsedCutouts.clear();
49 m_collapsedLightCutouts.clear();
50 m_expandedCutouts.clear();
51 auto collapsedCutouts = QString::fromStdString(info.get(
"DisplayCutoutsCollapsed",
""));
52 for (
auto cutout : collapsedCutouts.split(
",")) {
53 m_collapsedCutouts.append(parseRect(cutout));
55 if (info.contains(
"DisplayCutoutsCollapsedLight")) {
56 auto collapsedLightCutouts = QString::fromStdString(info.get(
"DisplayCutoutsCollapsedLight",
""));
57 for (
auto cutout : collapsedLightCutouts.split(
",")) {
58 m_collapsedLightCutouts.append(parseRect(cutout));
61 if (info.contains(
"DisplayCutoutsExpanded")) {
62 auto expandedCutouts = QString::fromStdString(info.get(
"DisplayCutoutsExpanded",
""));
63 for (
auto cutout : expandedCutouts.split(
",")) {
64 m_expandedCutouts.append(parseRect(cutout));
69void DisplayCutoutsModel::setExpanded(
bool value)
71 if (m_expanded != value) {
78void DisplayCutoutsModel::setOrientation(Qt::ScreenOrientation value)
80 if (m_orientation != value) {
82 m_orientation = value;
87void DisplayCutoutsModel::setEnabled(
bool value)
89 if (m_enabled != value) {
96void DisplayCutoutsModel::setLightMode(
bool value)
98 if (m_lightMode != value) {
105int DisplayCutoutsModel::rowCount(
const QModelIndex &parent)
const
109 if (m_orientation != Qt::PortraitOrientation || !m_enabled) {
112 auto collapsed = m_lightMode && !m_collapsedLightCutouts.empty()
113 ? &m_collapsedLightCutouts : &m_collapsedCutouts;
114 return m_expanded ? m_expandedCutouts.count() : collapsed->count();
117QVariant DisplayCutoutsModel::data(
const QModelIndex &index,
int role)
const
121 auto collapsed = m_lightMode && !m_collapsedLightCutouts.empty()
122 ? &m_collapsedLightCutouts : &m_collapsedCutouts;
123 auto data = m_expanded ? &m_expandedCutouts : collapsed;
124 if (!index.isValid() || index.row() >= data->count()) {
128 return QVariant(data->at(index.row()));
131void DisplayCutoutsModel::reloadConfig()
133 qDebug() <<
"config reload requested...";