• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

mcallegari / qlcplus / 15805077468

22 Jun 2025 08:36AM UTC coverage: 31.876% (-0.01%) from 31.89%
15805077468

push

github

mcallegari
plugins/dmxusb: fix RDM discovery and commands while DMX is running

0 of 1 new or added line in 1 file covered. (0.0%)

3722 existing lines in 175 files now uncovered.

16438 of 51569 relevant lines covered (31.88%)

19266.08 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/ui/src/universeitemwidget.cpp
1
/*
2
  Q Light Controller Plus
3
  universeitemwidget.cpp
4

5
  Copyright (c) Massimo Callegari
6

7
  Licensed under the Apache License, Version 2.0 (the "License");
8
  you may not use this file except in compliance with the License.
9
  You may obtain a copy of the License at
10

11
      http://www.apache.org/licenses/LICENSE-2.0.txt
12

13
  Unless required by applicable law or agreed to in writing, software
14
  distributed under the License is distributed on an "AS IS" BASIS,
15
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
  See the License for the specific language governing permissions and
17
  limitations under the License.
18
*/
19

20
#include <QApplication>
21
#include <QWidget>
22
#include <QFont>
23
#include <QDebug>
24

25
#include "universeitemwidget.h"
26

27
UniverseItemWidget::UniverseItemWidget(QWidget *parent)
×
28
    : QItemDelegate(parent)
×
29
{
30
    setClipping(false);
×
31
}
×
32

33
UniverseItemWidget::~UniverseItemWidget()
×
34
{
35
}
×
36

37
void UniverseItemWidget::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
×
38
{
UNCOV
39
    QWidget *list = qobject_cast<QWidget *>(parent());
×
40
    qreal pWidth = list->geometry().width();
×
41
    QRect r = option.rect;
×
42
    QFont font = qApp->font();
×
UNCOV
43
    font.setBold(true);
×
44
    font.setPixelSize(18);
×
45
    painter->setRenderHint(QPainter::Antialiasing, true);
×
46

47
    // draw background gradient
48
    QLinearGradient linearGrad(r.left(), r.top(), r.left(), r.height() + r.top());
×
49

50
    if (option.state & QStyle::State_Selected)
×
51
    {
52
        linearGrad.setColorAt(0, QColor(50, 64, 75, 255));
×
53
        linearGrad.setColorAt(1, QColor(76, 98, 115, 255));
×
54
        painter->setPen(QPen(QColor(48, 61, 72, 255), 2));
×
55
    }
56
    else
57
    {
58
        linearGrad.setColorAt(0, QColor(255, 255, 255, 255));
×
59
        linearGrad.setColorAt(1, QColor(128, 128, 128, 255));
×
60
        painter->setPen(QPen(QColor(30, 30, 30, 255), 2));
×
61
    }
62
    painter->setBrush(linearGrad);
×
63
    painter->drawRoundedRect(r.left() + 2, r.top() + 2, pWidth - 6, r.height() - 4, 5, 5);
×
64

65
    if (option.state & QStyle::State_Selected)
×
66
        painter->setPen(QPen(QColor(200, 200, 200, 255), 2));
×
67
    else
68
        painter->setPen(QPen(QColor(0, 0, 0, 255), 2));
×
69

70
    // draw universe name
71
    painter->setFont(font);
×
72
    painter->drawText(QRect(10, r.top() + 5, 150, r.height() - 10),
×
73
                      Qt::AlignLeft | Qt::TextWordWrap | Qt::AlignVCenter, index.data(Qt::DisplayRole).toString());
×
74

75
    font.setPixelSize(12);
×
76
    painter->setFont(font);
×
77

UNCOV
78
    QVariant var = index.data(Qt::DecorationRole);
×
79
    if (var.isValid())
×
80
    {
UNCOV
81
        QIcon icon = var.value<QIcon>();
×
82
        if (icon.isNull() == false)
×
83
            painter->drawPixmap(pWidth - 36, r.top() + 9, 32, 32, icon.pixmap(32, 32));
×
84
    }
×
85

86
    // draw input output labels
87
    int midPos = (pWidth - 10 - 150) / 2;
×
88
    midPos += 170;
×
UNCOV
89
    QString inStr = tr("Input:");
×
UNCOV
90
    QString proStr = tr("Profile:");
×
UNCOV
91
    QString outStr = tr("Output:");
×
UNCOV
92
    QString fbStr = tr("Feedback:");
×
93
    painter->drawText(QRect(170, r.top() + 10, 150, 20), Qt::AlignLeft, inStr);
×
94
    painter->drawText(QRect(midPos, r.top() + 10, 150, 20), Qt::AlignLeft, proStr);
×
95
    painter->drawText(QRect(170, r.top() + 30, 150, 20), Qt::AlignLeft, outStr);
×
96
    painter->drawText(QRect(midPos, r.top() + 30, 150, 20), Qt::AlignLeft, fbStr);
×
97

98
    QFontMetrics fm(font);
×
99
#if (QT_VERSION < QT_VERSION_CHECK(5, 11, 0))
100
    int inPos = fm.width(inStr) + 170 + 5;
101
    int proPos = fm.width(proStr) + midPos + 5;
102
    int outPos = fm.width(outStr) + 170 + 5;
103
    int fbPos = fm.width(fbStr) + midPos + 5;
104
#else
105
    int inPos = fm.horizontalAdvance(inStr) + 170 + 5;
×
106
    int proPos = fm.horizontalAdvance(proStr) + midPos + 5;
×
107
    int outPos = fm.horizontalAdvance(outStr) + 170 + 5;
×
108
    int fbPos = fm.horizontalAdvance(fbStr) + midPos + 5;
×
109
#endif
UNCOV
110
    font.setBold(false);
×
111
    painter->setFont(font);
×
112

113
    // draw input output plugin/profile names
114
    QString inputName = index.data(Qt::UserRole + 1).toString();
×
115
    if (inputName == "None") inputName = tr("None");
×
116
    QString profileName = index.data(Qt::UserRole + 2).toString();
×
117
    if (profileName == "None") profileName = tr("None");
×
118
    QString outputName = index.data(Qt::UserRole + 3).toString();
×
119
    if (outputName == "None") outputName = tr("None");
×
120
    QString fbName = index.data(Qt::UserRole + 4).toString();
×
121
    if (fbName == "None") fbName = tr("None");
×
122

123
    painter->drawText(QRect(inPos, r.top() + 10, midPos - inPos, 20),
×
124
                      Qt::AlignLeft, inputName);
125
    painter->drawText(QRect(proPos, r.top() + 10, pWidth - proPos, 20),
×
126
                      Qt::AlignLeft, profileName);
127
    painter->drawText(QRect(outPos, r.top() + 30, midPos - outPos, 20),
×
128
                      Qt::AlignLeft, outputName);
129
    painter->drawText(QRect(fbPos, r.top() + 30, pWidth - fbPos, 20),
×
130
                      Qt::AlignLeft, fbName);
131
}
×
132

133

134

STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc