From f4005553e9626add874ad813e06c5aae7e997ea3 Mon Sep 17 00:00:00 2001 From: pei-jiankang Date: Tue, 21 Dec 2021 19:24:55 +0800 Subject: [PATCH] Fix the segmentfault without org.ukui.style --- ...-segmentfault-without-org.ukui.style.patch | 877 ++++++++++++++++++ ukui-system-monitor.spec | 7 +- 2 files changed, 883 insertions(+), 1 deletion(-) create mode 100644 0007-Fix-the-segmentfault-without-org.ukui.style.patch diff --git a/0007-Fix-the-segmentfault-without-org.ukui.style.patch b/0007-Fix-the-segmentfault-without-org.ukui.style.patch new file mode 100644 index 0000000..ca2cce0 --- /dev/null +++ b/0007-Fix-the-segmentfault-without-org.ukui.style.patch @@ -0,0 +1,877 @@ +From a7e4e6a9dc65a51c2027f0fe2ca5d09acaf352a9 Mon Sep 17 00:00:00 2001 +From: pei-jiankang +Date: Tue, 21 Dec 2021 19:19:57 +0800 +Subject: [PATCH] Fix the segmentfault without org.ukui.style + +--- + src/cpuballwidget.cpp | 32 +++------------- + src/cpuratewidget.cpp | 32 ++++------------ + src/filesystemlistitem.cpp | 3 ++ + src/filesystemlistwidget.cpp | 9 +++-- + src/monitortitlewidget.cpp | 27 +++----------- + src/netcatogoryshow.cpp | 10 +++-- + src/networkflow.cpp | 10 ++--- + src/networkindicator.cpp | 10 +++-- + src/processlistitem.cpp | 11 +++--- + src/processlistwidget.cpp | 23 +++++++----- + src/resourcesindicator.cpp | 15 +++----- + src/src.pro | 10 ++--- + src/systemmonitor.cpp | 5 +++ + widgets/mysearchedit.cpp | 70 +++-------------------------------- + widgets/myunderlinebutton.cpp | 27 ++++---------- + 15 files changed, 91 insertions(+), 203 deletions(-) + +diff --git a/src/cpuballwidget.cpp b/src/cpuballwidget.cpp +index 2901a5c..6e3ff7c 100755 +--- a/src/cpuballwidget.cpp ++++ b/src/cpuballwidget.cpp +@@ -34,6 +34,7 @@ qreal gradientDistance(qreal x) + } + + CpuBallWidget::CpuBallWidget(QWidget *parent) : QWidget(parent) ++ , qtSettings(nullptr) + { + const QByteArray idd(THEME_QT_SCHEMA); + +@@ -92,16 +93,16 @@ CpuBallWidget::~CpuBallWidget() + + void CpuBallWidget::initThemeMode() + { ++ if (!qtSettings) { ++// qWarning() << "Failed to load the gsettings: " << THEME_QT_SCHEMA; ++ return; ++ } + //监听主题改变 + connect(qtSettings, &QGSettings::changed, this, [=](const QString &key) + { + if (key == "styleName") + { +-// auto style = qtSettings->get(key).toString(); +-// qApp->setStyle(new InternalStyle(style)); + currentThemeMode = qtSettings->get(MODE_QT_KEY).toString(); +- qDebug()<<"监听主题改变-------------------->"<setStyle(new InternalStyle(currentThemeMode)); + repaint(); + } + }); +@@ -113,34 +114,19 @@ void CpuBallWidget::loadWaveImage() + QImageReader frontReader(m_frontImagePath); + int w = frontReader.size().width(); + int h = frontReader.size().height(); +-// w = w * this->width() / 100; +-// h = h * this->height() / 100; + QImage image(w, h, QImage::Format_ARGB32_Premultiplied);//QImage::Format_ARGB32 + image.fill(Qt::transparent); //Qt::transparent + image.load(m_frontImagePath); +- /*QPainter painter(&image); +-// painter.setCompositionMode(QPainter::CompositionMode_Source); +-// painter.fillRect(image.rect(), Qt::transparent); +-// painter.setCompositionMode(QPainter::CompositionMode_SourceOver); +- painter.drawImage(QPoint(0,0), image); +- painter.end();*/ + m_frontImage = image; + + QImageReader backReader(m_backimagePath); + w = backReader.size().width(); + h = backReader.size().height(); +-// w = w * this->width() / 100; +-// h = h * this->height() / 100; ++ + QImage backImage(w, h, QImage::Format_ARGB32_Premultiplied);//QImage::Format_ARGB32 + backImage = backImage.scaled(QSize(w, h), Qt::KeepAspectRatio, Qt::SmoothTransformation); + backImage.fill(Qt::transparent); + backImage.load(m_backimagePath); +- /*QPainter backPainter(&backImage); +-// backPainter.setCompositionMode(QPainter::CompositionMode_Source); +-// backPainter.fillRect(image.rect(), Qt::transparent); +-// backPainter.setCompositionMode(QPainter::CompositionMode_SourceOver); +- backPainter.drawImage(QPoint(0,0), backImage); +- backPainter.end();*/ + m_backImage = backImage; + } + +@@ -161,7 +147,6 @@ void CpuBallWidget::onRepaintWaveImage() + } else { + m_waveTimer->stop(); + } +-// this->update();//this->repaint(); + } + + //value:0 ~ 100 +@@ -214,13 +199,9 @@ void CpuBallWidget::paintEvent(QPaintEvent *) + } else if (currentPercent > 55) { + m_shadowEffect->setColor(QColor(255, 193, 37));//黄 + } else { +-// m_shadowEffect->setColor(QColor(232, 232, 232, 127));//灰 the last parameters stands for the degree of the background +-// m_shadowEffect->setColor(QColor(204,0,255,50)); + m_shadowEffect->setColor(QColor(255,255,255,255)); +-// m_shadowEffect->setColor(palette().color(QPalette::Base)); + } + wavePainter.fillRect(waveRectImage.rect(), QColor(255, 255, 255, 50)); +-// wavePainter.fillRect(waveRectImage.rect(),palette().color("QPalette::Base)"); + + //Step2:波浪区域 + //CompositionMode_SourceOver保证波浪出现的时候其背景为通明的 +@@ -248,7 +229,6 @@ void CpuBallWidget::paintEvent(QPaintEvent *) + QFont font = wavePainter.font(); + font.setPixelSize(40);//waveSize.height() * 20 / this->height() + wavePainter.setFont(font); +-// wavePainter.setPen(Qt::white); + wavePainter.setPen(QPen(palette().color(QPalette::WindowText))); + wavePainter.drawText(QRect(rect.x(), rect.y() + rect.height()*2/3, rect.width(), rect.height()/3), Qt::AlignHCenter, m_progressText); + wavePainter.end(); +diff --git a/src/cpuratewidget.cpp b/src/cpuratewidget.cpp +index 4cdf485..cace1ae 100755 +--- a/src/cpuratewidget.cpp ++++ b/src/cpuratewidget.cpp +@@ -204,6 +204,7 @@ inline void readFile(const QString &fileName) + } + + CpuRateWidget::CpuRateWidget(QWidget *parent) : QWidget(parent) ++, qtSettings(nullptr) + { + const QByteArray idd(THEME_QT_SCHEMA); + if(QGSettings::isSchemaInstalled(idd)) +@@ -225,40 +226,23 @@ CpuRateWidget::CpuRateWidget(QWidget *parent) : QWidget(parent) + initThemeMode(); + + m_cpuBall->startTimer(); +- +- /*unsigned long runtime; +- unsigned long idletime; +- QString rate = getIdelRate(runtime, idletime); +- qDebug() << "rate="<get(key).toString(); +-// qApp->setStyle(new InternalStyle(style)); + currentThemeMode = qtSettings->get(MODE_QT_KEY).toString(); +- qDebug()<<"监听主题改变-------------------->"<setStyle(new InternalStyle(currentThemeMode)); +- //repaint(); +- if(currentThemeMode == "ukui-light" || currentThemeMode == "ukui-default" || currentThemeMode =="ukui-white") ++ ++ if(currentThemeMode == "ukui-light" || currentThemeMode == "ukui-default" || currentThemeMode =="ukui-white") + { + m_cpuRateTitle->setStyleSheet("QLabel{background:transparent;font-size:12px;color:rgba(0,0,0,0.57);}"); //#999999 + m_cpuIdleRateTitle->setStyleSheet("QLabel{background:transparent;font-size:12px;color:rgba(0,0,0,0.57);}"); +diff --git a/src/filesystemlistitem.cpp b/src/filesystemlistitem.cpp +index 72d4193..d6ee7f3 100755 +--- a/src/filesystemlistitem.cpp ++++ b/src/filesystemlistitem.cpp +@@ -32,6 +32,7 @@ + + FileSystemListItem::FileSystemListItem(FileSystemData *info) + :fontSettings(nullptr) ++ ,qtSettings(nullptr) + { + m_data = info; + iconSize = 20; +@@ -69,8 +70,10 @@ FileSystemListItem::~FileSystemListItem() + void FileSystemListItem::initThemeMode() + { + if (!qtSettings) { ++// qWarning() << "Failed to load the gsettings: " << THEME_QT_SCHEMA; + return; + } ++ + //监听主题改变 + connect(qtSettings, &QGSettings::changed, this, [=](const QString &key) + { +diff --git a/src/filesystemlistwidget.cpp b/src/filesystemlistwidget.cpp +index 45eb7ea..3deb69e 100755 +--- a/src/filesystemlistwidget.cpp ++++ b/src/filesystemlistwidget.cpp +@@ -44,6 +44,7 @@ FileSystemListWidget::FileSystemListWidget(QList toBeDisplayedColumns, QWi + ,m_mouseAtScrollArea(false) + ,m_mouseDragScrollbar(false) + ,fontSettings(nullptr) ++ ,qtSettings(nullptr) + { + const QByteArray idd(THEME_QT_SCHEMA); + +@@ -124,17 +125,17 @@ void FileSystemListWidget::clearItems() + + void FileSystemListWidget::initThemeMode() + { ++ if (!qtSettings) { ++// qWarning() << "Failed to load the gsettings: " << THEME_QT_SCHEMA; ++ return; ++ } + //监听主题改变 + connect(qtSettings, &QGSettings::changed, this, [=](const QString &key) + { + + if (key == "styleName") + { +-// auto style = qtSettings->get(key).toString(); +-// qApp->setStyle(new InternalStyle(style)); + currentThemeMode = qtSettings->get(MODE_QT_KEY).toString(); +- qDebug()<<"监听主题改变-------------------->"<setStyle(new InternalStyle(currentThemeMode)); + repaint(); + } + }); +diff --git a/src/monitortitlewidget.cpp b/src/monitortitlewidget.cpp +index 9fbcf5f..f81f636 100755 +--- a/src/monitortitlewidget.cpp ++++ b/src/monitortitlewidget.cpp +@@ -43,6 +43,7 @@ MonitorTitleWidget::MonitorTitleWidget(QSettings *settings, QWidget *parent) + :QFrame(parent) + ,proSettings(settings) + ,fontSettings(nullptr) ++ ,qtSettings(nullptr) + { + whichBox = new QList(); + const QByteArray idd(THEME_QT_SCHEMA); +@@ -81,32 +82,12 @@ MonitorTitleWidget::MonitorTitleWidget(QSettings *settings, QWidget *parent) + + initThemeMode(); + +- this->setWindowFlags(Qt::FramelessWindowHint);//this->setWindowFlags(this->windowFlags() | Qt::FramelessWindowHint | Qt::WindowCloseButtonHint); +-// this->setWindowFlags(Qt::Window | Qt::FramelessWindowHint | Qt::WindowMinimizeButtonHint);//Attention: Qt::WindowCloseButtonHint make showMinimized() valid ++ this->setWindowFlags(Qt::FramelessWindowHint); + + installEventFilter(this); +-// setMouseTracking(true); + setFixedHeight(MONITOR_TITLE_WIDGET_HEIGHT); + + this->setAutoFillBackground(true); +-// this->setAttribute(Qt::WA_TranslucentBackground); +- +-// QPalette palette; +-// palette.setColor(QPalette::Background, QColor("#0d87ca")); +-// this->setPalette(palette); +-// this->setStyleSheet("QFrame{background:transparent;background-color:#0d87ca;border-radius:5px;border:1px solid red;}"); +-// this->setStyleSheet("QFrame {padding: 5px 0;} QFrame:hover {background-color: rgba(255, 245, 250, 0.1);border-radius: 5px;}"); +- +-// if(currentThemeMode == "ukui-white") +-// { +-// this->setObjectName("MonitorTitle"); +-// this->setStyleSheet("QFrame#MonitorTitle{background:rgba(255,255,255,0.9);border-top-left-radius:6px;border-top-right-radius:6px;color: palette(windowText);}"); +-// } +-// else +-// { +-// this->setObjectName("MonitorTitle"); +-// this->setStyleSheet("QFrame#MonitorTitle{background:rgba(13,14,14,0.9);border-top-left-radius:6px;border-top-right-radius:6px;color: palette(windowText);}"); +-// } + + m_searchTimer = new QTimer(this); + m_searchTimer->setSingleShot(true); +@@ -118,6 +99,10 @@ MonitorTitleWidget::MonitorTitleWidget(QSettings *settings, QWidget *parent) + + void MonitorTitleWidget::initThemeMode() + { ++ if (!qtSettings) { ++// qWarning() << "Failed to load the gsettings: " << THEME_QT_SCHEMA; ++ return; ++ } + //监听主题改变 + connect(qtSettings, &QGSettings::changed, this, [=](const QString &key) + { +diff --git a/src/netcatogoryshow.cpp b/src/netcatogoryshow.cpp +index db59352..bbf22a1 100755 +--- a/src/netcatogoryshow.cpp ++++ b/src/netcatogoryshow.cpp +@@ -35,6 +35,7 @@ NetCatogoryShow::NetCatogoryShow(QWidget *parent) + ,m_rectTotalHeight(38) + ,m_rectTotalWidth(58) + ,m_outsideBorderColor(Qt::transparent) ++ ,qtSettings(nullptr) + { + + const QByteArray idd(THEME_QT_SCHEMA); +@@ -66,16 +67,17 @@ NetCatogoryShow::NetCatogoryShow(QWidget *parent) + + void NetCatogoryShow::initThemeMode() + { ++ if (!qtSettings) { ++// qWarning() << "Failed to load the gsettings: " << THEME_QT_SCHEMA; ++ return; ++ } ++ + //监听主题改变 + connect(qtSettings, &QGSettings::changed, this, [=](const QString &key) + { + if (key == "styleName") + { +-// auto style = qtSettings->get(key).toString(); +-// qApp->setStyle(new InternalStyle(style)); + currentThemeMode = qtSettings->get(MODE_QT_KEY).toString(); +-// qDebug()<<"监听主题改变-------------------->"<setStyle(new InternalStyle(currentThemeMode)); + updateBgColor(); + repaint(); + } +diff --git a/src/networkflow.cpp b/src/networkflow.cpp +index ecac95b..c139395 100755 +--- a/src/networkflow.cpp ++++ b/src/networkflow.cpp +@@ -105,6 +105,7 @@ NetworkFlow::NetworkFlow(QWidget *parent) : QWidget(parent) + ,m_outsideBorderColor(QColor("transparent")) + ,m_downloadColor(QColor("#009944")) + ,m_uploadColor(QColor("#e60012")) ++ ,qtSettings(nullptr) + { + + const QByteArray idd(THEME_QT_SCHEMA); +@@ -146,20 +147,19 @@ NetworkFlow::NetworkFlow(QWidget *parent) : QWidget(parent) + + void NetworkFlow::initThemeMode() + { ++ if (!qtSettings) { ++// qWarning() << "Failed to load the gsettings: " << THEME_QT_SCHEMA; ++ return; ++ } + + //监听主题改变 + connect(qtSettings, &QGSettings::changed, this, [=](const QString &key) + { + if (key == "styleName") + { +-// auto style = qtSettings->get(key).toString(); +-// qApp->setStyle(new InternalStyle(style)); + currentThemeMode = qtSettings->get(MODE_QT_KEY).toString(); +- qDebug()<<"监听主题改变-------------------->"<setStyle(new InternalStyle(currentThemeMode)); + } + repaint(); +-// update(); + }); + currentThemeMode = qtSettings->get(MODE_QT_KEY).toString(); + } +diff --git a/src/networkindicator.cpp b/src/networkindicator.cpp +index eb4c4f6..af12711 100755 +--- a/src/networkindicator.cpp ++++ b/src/networkindicator.cpp +@@ -100,6 +100,7 @@ NetworkIndicator::NetworkIndicator(QWidget *parent) + ,m_rectTotalHeight(38) + ,m_rectTotalWidth(58) + ,m_outsideBorderColor(Qt::transparent) ++ ,qtSettings(nullptr) + { + const QByteArray idd(THEME_QT_SCHEMA); + +@@ -198,16 +199,17 @@ void NetworkIndicator::initWidgets() + + void NetworkIndicator::initThemeMode() + { ++ if (!qtSettings) { ++// qWarning() << "Failed to load the gsettings: " << THEME_QT_SCHEMA; ++ return; ++ } ++ + //监听主题改变 + connect(qtSettings, &QGSettings::changed, this, [=](const QString &key) + { + if (key == "styleName") + { +-// auto style = qtSettings->get(key).toString(); +-// qApp->setStyle(new InternalStyle(style)); + currentThemeMode = qtSettings->get(MODE_QT_KEY).toString(); +- qDebug()<<"监听主题改变-------------------->"<setStyle(new InternalStyle(currentThemeMode)); + repaint(); + updateBgColor(); + } +diff --git a/src/processlistitem.cpp b/src/processlistitem.cpp +index b3b512e..d976771 100755 +--- a/src/processlistitem.cpp ++++ b/src/processlistitem.cpp +@@ -49,7 +49,7 @@ ProcessListItem::ProcessListItem(ProcData info) + iconSize = 20; + padding = 14; + textPadding = 10; +- //initThemeMode(); ++ initThemeMode(); + } + + ProcessListItem::~ProcessListItem() +@@ -66,6 +66,7 @@ ProcessListItem::~ProcessListItem() + void ProcessListItem::initThemeMode() + { + if (!qtSettings) { ++// qWarning() << "Failed to load the gsettings: " << THEME_QT_SCHEMA; + return; + } + //监听主题改变 +@@ -124,12 +125,12 @@ void ProcessListItem::drawBackground(QRect rect, QPainter *painter, int index, b + if(currentThemeMode == "ukui-light" || currentThemeMode == "ukui-default" || currentThemeMode == "ukui-white") + { + painter->fillPath(path, QColor("#ffffff")); +- } +- +- if(currentThemeMode == "ukui-dark" || currentThemeMode == "ukui-black") ++ } else if (currentThemeMode == "ukui-dark" || currentThemeMode == "ukui-black") + { + painter->fillPath(path,QColor("#131414")); +- } ++ } else { ++ painter->fillPath(path, QColor("000000")); ++ } + } + } + +diff --git a/src/processlistwidget.cpp b/src/processlistwidget.cpp +index c2001ae..1260c89 100755 +--- a/src/processlistwidget.cpp ++++ b/src/processlistwidget.cpp +@@ -51,6 +51,8 @@ ProcessListWidget::ProcessListWidget(QList toBeDisplayedColumns, QWidget * + ,m_titlePressColumn(-1) + ,m_mouseAtScrollArea(false) + ,m_mouseDragScrollbar(false) ++ ,fontSettings(nullptr) ++ ,qtSettings(nullptr) + { + + const QByteArray idd(THEME_QT_SCHEMA); +@@ -116,17 +118,17 @@ ProcessListWidget::ProcessListWidget(QList toBeDisplayedColumns, QWidget * + + void ProcessListWidget::initThemeMode() + { ++ if (!qtSettings) { ++// qWarning() << "Failed to load the gsettings: " << THEME_QT_SCHEMA; ++ return; ++ } + //监听主题改变 + connect(qtSettings, &QGSettings::changed, this, [=](const QString &key) + { + + if (key == "styleName") + { +-// auto style = qtSettings->get(key).toString(); +-// qApp->setStyle(new InternalStyle(style)); + currentThemeMode = qtSettings->get(MODE_QT_KEY).toString(); +- qDebug()<<"监听主题改变-------------------->"<setStyle(new InternalStyle(currentThemeMode)); + repaint(); + } + }); +@@ -135,6 +137,10 @@ void ProcessListWidget::initThemeMode() + + void ProcessListWidget::initFontSize() + { ++ if (!fontSettings) { ++ fontSize = DEFAULT_FONT_SIZE; ++ return; ++ } + connect(fontSettings,&QGSettings::changed,[=](QString key) + { + if("systemFont" == key || "systemFontSize" == key) +@@ -839,11 +845,9 @@ void ProcessListWidget::paintEvent(QPaintEvent *) + { + if(counter == 0 || counter == 5) + { +- qDebug()<<"m_currentSortIndex------"<m_isSort) + { +- qDebug()<<"m_isSort----------"<m_isSort) + { +- qDebug()<<"m_isSort----------"<setFixedSize(188, 56); + + initThemeMode(); +@@ -65,11 +63,9 @@ ResourcesIndicator::ResourcesIndicator(int flag, QWidget *parent) + } + + if (flag == 0) { +-// m_borderColor = palette().color(QPalette::WindowText); //#0973b4 + m_borderColor = QColor(0x09,0x73,0xb4,0xff); + } + else if (flag == 1) { +-// m_borderColor = palette().color(QPalette::WindowText); //QColor("#9528b4") + m_borderColor = QColor(0x95,0x28,0xb4,0xff); + } + else { +@@ -84,6 +80,10 @@ ResourcesIndicator::~ResourcesIndicator() + + void ResourcesIndicator::initThemeMode() + { ++ if (!qtSettings) { ++// qWarning() << "Failed to load the gsettings: " << THEME_QT_SCHEMA; ++ return; ++ } + //监听主题改变 + connect(qtSettings, &QGSettings::changed, this, [=](const QString &key) + { +@@ -292,16 +292,11 @@ void ResourcesIndicator::paintEvent(QPaintEvent *event) + // QPainterPath picPath; + // picPath.addRoundedRect(); + +- qDebug()<<"this->m_rectTotalWidth"<<"----"<<"convertPercent"<m_rectTotalWidth<<"----"<width()<<"My width my height"<height(); + + if(typeObject == 0) + { + painter.setOpacity(0.46); + painter.setBrush(QColor("#0973b4")); +-// painter.setOpacity(0.46); +-// pen.setColor(QColor("#0973b4")); //#fc7416 + } + + if(typeObject == 1) +diff --git a/src/src.pro b/src/src.pro +index d9efd90..83b876f 100755 +--- a/src/src.pro ++++ b/src/src.pro +@@ -18,13 +18,12 @@ DESTDIR = .. + + LIBS += -L/usr/lib/ -lX11 -lpcap -lm + +-CONFIG += link_pkgconfig \ +- C++11 ++CONFIG += link_pkgconfig \ ++ c++11 ++ + #gio-2.0 + #LIBS +=-lgio-2.0 -lglib-2.0 + +-CONFIG += c++11\ +- link_pkgconfig + PKGCONFIG += libgtop-2.0 \ + libsystemd \ + gsettings-qt \ +@@ -175,9 +174,6 @@ SOURCES += \ + OTHER_FILES += \ + systemmonitor.json + +-#RESOURCES += \ +-# img.qrc +- + RESOURCES += \ + res.qrc + +diff --git a/src/systemmonitor.cpp b/src/systemmonitor.cpp +index 5698e14..e9971d2 100755 +--- a/src/systemmonitor.cpp ++++ b/src/systemmonitor.cpp +@@ -109,6 +109,11 @@ SystemMonitor::SystemMonitor(QWidget *parent) + + void SystemMonitor::initThemeMode() + { ++ if (!qtSettings) { ++// qWarning() << "Failed to load the gsettings: " << THEME_QT_SCHEMA; ++ return; ++ } ++ + //监听主题改变 + connect(qtSettings, &QGSettings::changed, this, [=](const QString &key) + { +diff --git a/widgets/mysearchedit.cpp b/widgets/mysearchedit.cpp +index 75d9fce..366eae1 100755 +--- a/widgets/mysearchedit.cpp ++++ b/widgets/mysearchedit.cpp +@@ -32,6 +32,7 @@ MySearchEdit::MySearchEdit(QWidget *parent) + ,m_showCurve(QEasingCurve::OutCubic) + ,m_hideCurve(QEasingCurve::InCubic) + ,fontSettings(nullptr) ++ ,qtSettings(nullptr) + { + const QByteArray idd(THEME_QT_SCHEMA); + +@@ -53,13 +54,6 @@ MySearchEdit::MySearchEdit(QWidget *parent) + m_searchBtn->setStyleSheet("QLabel{background-color:transparent;border:none;background-image:url(:/img/search.png);}"); + m_searchBtn->setFixedSize(SEARCHBUTTON, SEARCHBUTTON); + +-// m_clearBtn = new MyTristateButton; +-// QPushButton *m_clearBtn = new QPushButton(); +-// QIcon icon(tr(":/img/close.png")); +-// m_clearBtn->setIcon(icon); +-// m_clearBtn->setObjectName("ClearIcon"); +-// m_clearBtn->hide(); +- + m_pClearTextButton = new QPushButton; + m_pClearTextButton->setFixedSize(19, 21); + m_pClearTextButton->setIconSize(QSize(19, 19)); +@@ -68,15 +62,9 @@ MySearchEdit::MySearchEdit(QWidget *parent) + m_edit = new QLineEdit; + + QIcon ClearTextEditIcon; +-// ClearTextEditIcon.addFile(":/img/button-close-default-add-background-three.svg"); +-// m_pClearTextButton->setIcon(ClearTextEditIcon); +- //m_pClearTextButton->setIcon(drawSymbolicColoredPixmap(QPixmap::fromImage(QIcon::fromTheme(":/img/button-close-default-add-background-three.svg").pixmap(24,24).toImage()))); + m_pClearTextButton->setCursor(Qt::ArrowCursor); + +- +- + m_edit->setAttribute(Qt::WA_Hover, true); +-// m_edit->setStyle(new InternalStyle("ukui-default")); + m_edit->setTextMargins(8,0,0,0); + + connect(m_edit, &QLineEdit::textChanged, this, &MySearchEdit::textChageSlots); +@@ -108,8 +96,6 @@ MySearchEdit::MySearchEdit(QWidget *parent) + + m_animation = new QPropertyAnimation(m_edit, "minimumWidth"); + +-// m_size = QSize(m_searchBtn->sizeHint().width() + m_edit->sizeHint().width() + m_clearBtn->sizeHint().width() + 6, +-// qMax(m_searchBtn->sizeHint().height(), m_edit->sizeHint().height())); + m_edit->setFixedWidth(0); + m_edit->installEventFilter(this); + +@@ -130,20 +116,12 @@ MySearchEdit::MySearchEdit(QWidget *parent) + layout->addWidget(m_pClearTextButton); + layout->setAlignment(m_pClearTextButton,Qt::AlignCenter); + layout->addStretch(); +-// layout->addWidget(m_clearBtn); +-// layout->setAlignment(m_clearBtn, Qt::AlignCenter); +- + layout->setSpacing(0); + layout->setContentsMargins(0, 0, 0, 0); + + setFocusPolicy(Qt::StrongFocus); + +-// connect(m_edit, &QLineEdit::textChanged, [this] {m_clearBtn->setVisible(!m_edit->text().isEmpty());}); + connect(m_edit, &QLineEdit::textChanged, this, &MySearchEdit::textChanged, Qt::DirectConnection); +-// connect(m_clearBtn, SIGNAL(clicked()), this, SLOT(clearAndFocusEdit())); +-// connect(m_clearBtn, &MyTristateButton::clicked, this, [=] { +-// this->clearAndFocusEdit(); +-// }); + } + + +@@ -210,7 +188,6 @@ MySearchEdit::~MySearchEdit() + delete m_edit; + delete m_searchBtn; + delete m_placeHolder; +-// delete m_clearBtn; + if(fontSettings) + { + delete fontSettings; +@@ -282,7 +259,6 @@ void MySearchEdit::setEditFocus() + m_animation->start(); + m_placeHolder->hide(); + m_edit->setFocus(); +- //this->setStyleSheet("QFrame{background-color:rgba(19,19,20,0.2);border:1px solid #CC00FF;border-radius:4px;}"); + } + + void MySearchEdit::setPlaceHolder(const QString &text) +@@ -332,50 +308,18 @@ void MySearchEdit::textChageSlots(const QString &text) + } + } + +-//void MySearchEdit::paintEvent(QEvent *event) +-//{ +-//// QStyleOption opt; +-//// opt.init(this); +-//// QPainter p(this); +-//// p.setBrush(QBrush(QColor(0x19,0x19,0x20,0xFF))); +-//// p.setPen(Qt::NoPen); +-//// QPainterPath path; +-//// opt.rect.adjust(0,0,0,0); +-//// path.addRoundedRect(opt.rect,6,6); +-//// p.setRenderHint(QPainter::Antialiasing); // 反锯齿; +-//// style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this); +-//// p.drawRoundedRect(opt.rect, 6, 6); +-// QStyleOption opt; +-// opt.init(this); +-// QPainter p(this); +-// p.setBrush(QBrush(QColor(0x19,0x19,0x20,0x19))); +-// //p.setPen(Qt::NoPen); +-// QPainterPath path; +-// //opt.rect.adjust(0,0,0,0); +-//// path.addRoundRect(opt.rect.topLeft(),6); +- +-// path.addPath(path); +-// path.addRoundedRect(opt.rect,6,6); +-// p.setRenderHint(QPainter::Antialiasing); // 反锯齿; +-//// p.drawRoundedRect(opt.rect,6,6); +-// style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this); +-//// p.setPen(QPen(QColor("#e9eef0"), 0));//边框颜色 +-//// p.setBrush(QColor("#0d87ca"));//背景色 +-//// QRectF r(1, 1, width() - 2, height() - 2);//左边 上边 右边 下边 +-// p.drawPath(path); +-//} +- + void MySearchEdit::initThemeMode() + { ++ if (!qtSettings) { ++// qWarning() << "Failed to load the gsettings: " << THEME_QT_SCHEMA; ++ return; ++ } ++ + //监听主题改变 + connect(qtSettings, &QGSettings::changed, this, [=](const QString &key){ + + if (key == "styleName") { +-// auto style = qtSettings->get(key).toString(); +-// qApp->setStyle(new InternalStyle(style)); + currentThemeMode = qtSettings->get(MODE_QT_KEY).toString(); +-// qDebug()<<"监听主题改变-------------------->"<setStyle(new InternalStyle(currentThemeMode)); + m_pClearTextButton->setIcon(drawSymbolicColoredPixmap(QPixmap::fromImage(QIcon::fromTheme(":/img/button-close-default-add-background-three.svg").pixmap(24,24).toImage()))); + + if(currentThemeMode == "ukui-light" || currentThemeMode == "ukui-default" || currentThemeMode == "ukui-white") +@@ -398,8 +342,6 @@ void MySearchEdit::initThemeMode() + }); + //获取当前主题 + currentThemeMode = qtSettings->get(MODE_QT_KEY).toString(); +-// qDebug()<<"监听主题改变-------------------->"<setStyle(new InternalStyle(currentThemeMode)); + m_pClearTextButton->setIcon(drawSymbolicColoredPixmap(QPixmap::fromImage(QIcon::fromTheme(":/img/button-close-default-add-background-three.svg").pixmap(24,24).toImage()))); + if(currentThemeMode == "ukui-light" || currentThemeMode == "ukui-default" || currentThemeMode == "ukui-white") + { +diff --git a/widgets/myunderlinebutton.cpp b/widgets/myunderlinebutton.cpp +index 548b2cd..3da8549 100755 +--- a/widgets/myunderlinebutton.cpp ++++ b/widgets/myunderlinebutton.cpp +@@ -31,6 +31,7 @@ MyUnderLineButton::MyUnderLineButton(QWidget *parent) + ,m_state(Normal) + ,m_isChecked(false) + ,fontSettings(nullptr) ++ ,qtSettings(nullptr) + { + const QByteArray idd(THEME_QT_SCHEMA); + +@@ -50,27 +51,22 @@ MyUnderLineButton::MyUnderLineButton(QWidget *parent) + + this->setFixedSize(NORMALWIDTH, NORMALHEIGHT+2); + m_textLabel = new QLabel; +-// QFont ftSize; +-// ftSize.setPointSize(fontSize); +-// m_textLabel->setFont(ftSize); + + initThemeMode(); + initFontSize(); + +-// m_underlineLabel = new QLabel; +-// m_underlineLabel->setFixedSize(52, 2); +-// m_underlineLabel->setStyleSheet("QLabel{background-color:#ffffff;}"); +-// m_underlineLabel->hide(); +- + m_layout = new QVBoxLayout(this); + m_layout->setContentsMargins(0,0,0,0); + + m_layout->addWidget(m_textLabel, 0, Qt::AlignVCenter| Qt::AlignCenter); +- //m_layout->addWidget(m_underlineLabel, 0, Qt::AlignBottom | Qt::AlignHCenter); + } + + void MyUnderLineButton::initThemeMode() + { ++ if (!qtSettings) { ++// qWarning() << "Failed to load the gsettings: " << THEME_QT_SCHEMA; ++ return; ++ } + + //监听主题改变 + connect(qtSettings, &QGSettings::changed, this, [=](const QString &key) +@@ -78,12 +74,7 @@ void MyUnderLineButton::initThemeMode() + + if (key == "styleName") + { +-// auto style = qtSettings->get(key).toString(); +-// qApp->setStyle(new InternalStyle(style)); + currentThemeMode = qtSettings->get(MODE_QT_KEY).toString(); +- qDebug()<<"监听主题改变-------------------->"<setStyle(new InternalStyle(currentThemeMode)); +- //repaint(); + if (currentThemeMode == "ukui-light" || currentThemeMode == "ukui-default" || currentThemeMode == "ukui-white") + { + m_textLabel->setStyleSheet("QLabel{background-color:transparent;color:rgba(0,0,0,0.57);text-align:center;}"); //ffffff +@@ -95,8 +86,6 @@ void MyUnderLineButton::initThemeMode() + m_textLabel->setStyleSheet("QLabel{background-color:transparent;color:rgba(255,255,255,0.57); text-align:center;}"); //ffffff + } + } +-// repaint(); +-// updateStyleSheet(); + }); + currentThemeMode = qtSettings->get(MODE_QT_KEY).toString(); + if (currentThemeMode == "ukui-light" || currentThemeMode == "ukui-default" || currentThemeMode == "ukui-white") +@@ -227,11 +216,11 @@ void MyUnderLineButton::updateStyleSheet() + case Normal: + if(currentThemeMode == "ukui-light" || currentThemeMode == "ukui-default" || currentThemeMode == "ukui-white") + { +- m_textLabel->setStyleSheet("QLabel{back-color:transparent;color:rgba(0,0,0,0.57); text-align:center;}"); ++ m_textLabel->setStyleSheet("QLabel{background-color:transparent;color:rgba(0,0,0,0.57); text-align:center;}"); + } + else + { +- m_textLabel->setStyleSheet("QLabel{back-color:transparent;color:rgba(255,255,255,0.57); text-align:center;}"); ++ m_textLabel->setStyleSheet("QLabel{background-color:transparent;color:rgba(255,255,255,0.57); text-align:center;}"); + } + // case Normal: + +@@ -244,7 +233,7 @@ void MyUnderLineButton::updateStyleSheet() + // //m_underlineLabel->hide(); + // break; + } +-// ////////////// m_textLabel->setStyleSheet("QLabel{color:white};"); ++// m_textLabel->setStyleSheet("QLabel{color:white};"); + } + + void MyUnderLineButton::setState(MyUnderLineButton::ButtonState state) +-- +2.30.0 + diff --git a/ukui-system-monitor.spec b/ukui-system-monitor.spec index 14dee72..b85527e 100644 --- a/ukui-system-monitor.spec +++ b/ukui-system-monitor.spec @@ -1,7 +1,7 @@ %define debug_package %{nil} Name: ukui-system-monitor Version: 1.0.1 -Release: 10 +Release: 11 Summary: A simple system monitor written in QT License: GPL-3+ GPL-2+ URL: http://www.ukui.org @@ -41,6 +41,7 @@ patch5: 0004-Update-README.md.patch patch6: 0005-Remove-LICENSE-which-is-same-with-COPYING.patch patch7: 0006-Update-modification-record-in-changelog.patch patch8: fix-the-bug-about-process-filesystem.patch +patch9: 0007-Fix-the-segmentfault-without-org.ukui.style.patch %description A simple system monitor written in QT @@ -55,6 +56,7 @@ A simple system monitor written in QT %patch6 -p1 %patch7 -p1 %patch8 -p1 +%patch9 -p1 %build export PATH=%{_qt5_bindir}:$PATH @@ -85,6 +87,9 @@ rm -rf $RPM_BUILD_ROOT %{_datadir}/glib-2.0/schemas/org.ukui.system-monitor.menu.gschema.xml %changelog +* Tue Dec 21 2021 pei-jiankang - 1.0.1-11 +- Fix the segmentfault without org.ukui.style + * Tue Dec 09 2021 douyan - 1.0.1-10 - fix the bug about process and filesystem