File indexing completed on 2024-05-05 17:39:54
0001 /* 0002 * KSysGuard, the KDE System Guard 0003 * 0004 * SPDX-FileCopyrightText: 2022 Eugene Popov <popov895@ukr.net> 0005 * 0006 * SPDX-License-Identifier: LGPL-2.0-or-later 0007 */ 0008 0009 #include "GeneralTab.h" 0010 0011 #include <QGraphicsOpacityEffect> 0012 #include <QHeaderView> 0013 #include <QLabel> 0014 #include <QLayout> 0015 #include <QTreeWidget> 0016 0017 #include <KLocalizedString> 0018 0019 GeneralTab::GeneralTab(QWidget *parent) 0020 : QWidget(parent) 0021 { 0022 m_dataTreeWidget = new QTreeWidget; 0023 m_dataTreeWidget->setAlternatingRowColors(true); 0024 m_dataTreeWidget->setColumnCount(2); 0025 m_dataTreeWidget->setHeaderHidden(true); 0026 m_dataTreeWidget->setRootIsDecorated(false); 0027 m_dataTreeWidget->header()->setSectionResizeMode(0, QHeaderView::ResizeToContents); 0028 m_dataTreeWidget->header()->setStretchLastSection(true); 0029 0030 QVBoxLayout *rootLayout = new QVBoxLayout; 0031 rootLayout->addWidget(m_dataTreeWidget); 0032 setLayout(rootLayout); 0033 0034 m_placeholderLabel = new QLabel; 0035 m_placeholderLabel->setAlignment(Qt::AlignCenter); 0036 m_placeholderLabel->setMargin(20); 0037 m_placeholderLabel->setTextInteractionFlags(Qt::NoTextInteraction); 0038 m_placeholderLabel->setWordWrap(true); 0039 m_placeholderLabel->setText(i18nc("@info:status", "No data to display")); 0040 // To match the size of a level 2 Heading/KTitleWidget 0041 QFont placeholderFont = m_placeholderLabel->font(); 0042 placeholderFont.setPointSize(qRound(placeholderFont.pointSize() * 1.3)); 0043 m_placeholderLabel->setFont(placeholderFont); 0044 // Match opacity of QML placeholder label component 0045 QGraphicsOpacityEffect *opacityEffect = new QGraphicsOpacityEffect(m_placeholderLabel); 0046 opacityEffect->setOpacity(0.5); 0047 m_placeholderLabel->setGraphicsEffect(opacityEffect); 0048 0049 QVBoxLayout *placeholderLayout = new QVBoxLayout; 0050 placeholderLayout->addWidget(m_placeholderLabel); 0051 m_dataTreeWidget->setLayout(placeholderLayout); 0052 } 0053 0054 void GeneralTab::setData(const QVariantMap &data) 0055 { 0056 m_dataTreeWidget->clear(); 0057 0058 QList<QTreeWidgetItem*> items; 0059 for (QVariantMap::const_iterator i = data.cbegin(); i != data.cend(); ++i) { 0060 items << new QTreeWidgetItem({ i.key(), i.value().toString() }); 0061 } 0062 0063 if (items.isEmpty()) { 0064 m_placeholderLabel->show(); 0065 } else { 0066 m_placeholderLabel->hide(); 0067 m_dataTreeWidget->addTopLevelItems(items); 0068 } 0069 }