From e8be603a997f44fb6c8efb127d59394fb7d7bef2 Mon Sep 17 00:00:00 2001 From: ZHANGTINGAN Date: Thu, 23 Nov 2023 15:18:53 +0800 Subject: [PATCH] feat: DTK-changed consolewidget Dtk-changed and consoleWidget backgroundColor changes with system theme --- src/plugins/console/consolewidget.cpp | 29 ++++++++++++++++++++++----- src/plugins/console/consolewidget.h | 5 ++++- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/plugins/console/consolewidget.cpp b/src/plugins/console/consolewidget.cpp index 6ae56e3c2..02123b378 100644 --- a/src/plugins/console/consolewidget.cpp +++ b/src/plugins/console/consolewidget.cpp @@ -3,14 +3,19 @@ // SPDX-License-Identifier: GPL-3.0-or-later #include "consolewidget.h" + +#include + #include -#include + +DWIDGET_USE_NAMESPACE + static ConsoleWidget *ins{nullptr}; class ConsoleWidgetPrivate { public: - QMenu *menu = nullptr; + DMenu *menu = nullptr; QAction *consoleCopy = nullptr; QAction *consolePaste = nullptr; }; @@ -30,10 +35,13 @@ ConsoleWidget::ConsoleWidget(QWidget *parent) setTerminalOpacity(0); setForegroundRole(QPalette::ColorRole::Window); setAutoFillBackground(true); - if (availableColorSchemes().contains("Linux")) - setColorScheme("Linux"); + setTerminalOpacity(1); + + auto theme = DGuiApplicationHelper::instance()->themeType(); + updateColorScheme(theme); if (availableKeyBindings().contains("linux")) setKeyBindings("linux"); + setScrollBarPosition(QTermWidget::ScrollBarRight); setTerminalSizeHint(false); setAutoClose(false); @@ -44,6 +52,8 @@ ConsoleWidget::ConsoleWidget(QWidget *parent) d->consolePaste = new QAction(tr("paste")); QObject::connect(d->consoleCopy, &QAction::triggered, this, &QTermWidget::copyClipboard); QObject::connect(d->consolePaste, &QAction::triggered, this, &QTermWidget::pasteClipboard); + QObject::connect(DGuiApplicationHelper::instance(), &DGuiApplicationHelper::themeTypeChanged, + this, &ConsoleWidget::updateColorScheme); } ConsoleWidget::~ConsoleWidget() @@ -54,7 +64,7 @@ ConsoleWidget::~ConsoleWidget() void ConsoleWidget::contextMenuEvent(QContextMenuEvent *event) { if (nullptr == d->menu) { - d->menu = new QMenu(this); + d->menu = new DMenu(this); d->menu->setParent(this); d->menu->addAction(d->consoleCopy); d->menu->addAction(d->consolePaste); @@ -66,3 +76,12 @@ void ConsoleWidget::contextMenuEvent(QContextMenuEvent *event) } d->menu->exec(event->globalPos()); } + +void ConsoleWidget::updateColorScheme(DGuiApplicationHelper::ColorType themetype) +{ + if (themetype == DGuiApplicationHelper::DarkType + && availableColorSchemes().contains("Linux")) + this->setColorScheme("Linux"); + else if (availableColorSchemes().contains("BlackOnWhite")) + this->setColorScheme("BlackOnWhite"); +} diff --git a/src/plugins/console/consolewidget.h b/src/plugins/console/consolewidget.h index 96c9f7729..f01d67e2a 100644 --- a/src/plugins/console/consolewidget.h +++ b/src/plugins/console/consolewidget.h @@ -8,7 +8,10 @@ #include "qtermwidget.h" // 3drparty #include "ColorScheme.h" +#include + #include +DGUI_USE_NAMESPACE class ConsoleWidgetPrivate; class ConsoleWidget : public QTermWidget @@ -21,7 +24,7 @@ class ConsoleWidget : public QTermWidget protected: void contextMenuEvent(QContextMenuEvent *event); - + void updateColorScheme(DGuiApplicationHelper::ColorType themetype); private: ConsoleWidgetPrivate *const d; };