demo: update

This commit is contained in:
Yuhang Zhao 2023-10-08 10:16:58 +08:00
parent ad595c59e4
commit c8511bacf6
6 changed files with 59 additions and 21 deletions

View File

@ -41,7 +41,7 @@ int main(int argc, char *argv[])
// Not necessary, but better call this function, before the construction
// of any Q(Core|Gui)Application instances.
FramelessHelper::Widgets::initialize();
FramelessHelperWidgetsInitialize();
#if 0
if (!qEnvironmentVariableIsSet("QT_WIDGETS_RHI")) {
@ -54,7 +54,7 @@ int main(int argc, char *argv[])
// Must be called after QGuiApplication has been constructed, we are using
// some private functions from QPA which won't be available until there's
// a QGuiApplication instance.
FramelessHelper::Core::setApplicationOSThemeAware();
FramelessHelperEnableThemeAware();
FramelessConfig::instance()->set(Global::Option::EnableBlurBehindWindow);
//FramelessConfig::instance()->set(Global::Option::DisableLazyInitializationForMicaMaterial);

View File

@ -41,7 +41,7 @@ int main(int argc, char *argv[])
// Not necessary, but better call this function, before the construction
// of any Q(Core|Gui)Application instances.
FramelessHelper::Widgets::initialize();
FramelessHelperWidgetsInitialize();
#if 0
if (!qEnvironmentVariableIsSet("QT_WIDGETS_RHI")) {
@ -54,7 +54,7 @@ int main(int argc, char *argv[])
// Must be called after QGuiApplication has been constructed, we are using
// some private functions from QPA which won't be available until there's
// a QGuiApplication instance.
FramelessHelper::Core::setApplicationOSThemeAware();
FramelessHelperEnableThemeAware();
FramelessConfig::instance()->set(Global::Option::EnableBlurBehindWindow);
//FramelessConfig::instance()->set(Global::Option::DisableLazyInitializationForMicaMaterial);

View File

@ -56,14 +56,14 @@ int main(int argc, char *argv[])
// Not necessary, but better call this function, before the construction
// of any Q(Core|Gui)Application instances.
FramelessHelper::Quick::initialize();
FramelessHelperQuickInitialize();
const auto application = std::make_unique<QGuiApplication>(argc, argv);
// Must be called after QGuiApplication has been constructed, we are using
// some private functions from QPA which won't be available until there's
// a QGuiApplication instance.
FramelessHelper::Core::setApplicationOSThemeAware();
FramelessHelperEnableThemeAware();
FramelessConfig::instance()->set(Global::Option::EnableBlurBehindWindow);
//FramelessConfig::instance()->set(Global::Option::DisableLazyInitializationForMicaMaterial);
@ -116,7 +116,7 @@ int main(int argc, char *argv[])
#if (((QT_VERSION < QT_VERSION_CHECK(6, 2, 0)) || defined(QUICK_USE_QMAKE)) && !QMLTC_ENABLED)
// Don't forget to register our own custom QML types!
FramelessHelper::Quick::registerTypes(engine.get());
FramelessHelperQuickRegisterTypes(engine.get());
qmlRegisterSingletonType<QuickSettings>("Demo", 1, 0, "Settings",
[](QQmlEngine *engine, QJSEngine *scriptEngine) -> QObject * {

View File

@ -41,7 +41,7 @@ int main(int argc, char *argv[])
// Not necessary, but better call this function, before the construction
// of any Q(Core|Gui)Application instances.
FramelessHelper::Widgets::initialize();
FramelessHelperWidgetsInitialize();
#if 0
if (!qEnvironmentVariableIsSet("QT_WIDGETS_RHI")) {
@ -54,7 +54,7 @@ int main(int argc, char *argv[])
// Must be called after QGuiApplication has been constructed, we are using
// some private functions from QPA which won't be available until there's
// a QGuiApplication instance.
FramelessHelper::Core::setApplicationOSThemeAware();
FramelessHelperEnableThemeAware();
FramelessConfig::instance()->set(Global::Option::EnableBlurBehindWindow);
//FramelessConfig::instance()->set(Global::Option::DisableLazyInitializationForMicaMaterial);

View File

@ -24,6 +24,7 @@
#include "widget.h"
#include <QtCore/qdatetime.h>
#include <QtCore/qcoreevent.h>
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
# include <QtGui/qshortcut.h>
#else
@ -54,7 +55,7 @@ FRAMELESSHELPER_STRING_CONSTANT(DevicePixelRatio)
Widget::Widget(QWidget *parent) : FramelessWidget(parent)
{
initialize();
startTimer(100);
m_timerId = startTimer(100);
connect(FramelessManager::instance(), &FramelessManager::systemThemeChanged, this, &Widget::updateStyleSheet);
}
@ -63,7 +64,7 @@ Widget::~Widget() = default;
void Widget::timerEvent(QTimerEvent *event)
{
FramelessWidget::timerEvent(event);
if (m_clockLabel) {
if ((event->timerId() == m_timerId) && m_clockLabel) {
m_clockLabel->setText(QTime::currentTime().toString(FRAMELESSHELPER_STRING_LITERAL("hh:mm:ss")));
}
}
@ -89,23 +90,55 @@ void Widget::initialize()
#endif
m_clockLabel = new QLabel(this);
m_clockLabel->setFrameShape(QFrame::NoFrame);
m_clockLabel->setAlignment(Qt::AlignCenter);
QFont clockFont = font();
clockFont.setBold(true);
clockFont.setPointSize(70);
m_clockLabel->setFont(clockFont);
const auto contentLayout = new QHBoxLayout;
contentLayout->setContentsMargins(0, 0, 0, 0);
contentLayout->setSpacing(0);
contentLayout->addStretch();
contentLayout->addWidget(m_clockLabel);
contentLayout->addStretch();
m_compilerInfoLabel = new QLabel(this);
m_compilerInfoLabel->setFrameShape(QFrame::NoFrame);
m_compilerInfoLabel->setAlignment(Qt::AlignCenter);
static const VersionInfo versionInfo = FramelessHelperVersion();
m_compilerInfoLabel->setText(
FRAMELESSHELPER_STRING_LITERAL("Compiler: %1 %2")
.arg(QString::fromUtf8(versionInfo.compiler.name),
QString::fromUtf8(versionInfo.compiler.version)));
m_commitInfoLabel = new QLabel(this);
m_commitInfoLabel->setFrameShape(QFrame::NoFrame);
m_commitInfoLabel->setAlignment(Qt::AlignCenter);
m_commitInfoLabel->setText(
FRAMELESSHELPER_STRING_LITERAL("Commit: %1 (%2)")
.arg(QString::fromUtf8(versionInfo.commit.hash),
QString::fromUtf8(versionInfo.commit.author)));
const auto clockLabelLayout = new QHBoxLayout;
clockLabelLayout->setContentsMargins(0, 0, 0, 0);
clockLabelLayout->setSpacing(0);
clockLabelLayout->addStretch();
clockLabelLayout->addWidget(m_clockLabel);
clockLabelLayout->addStretch();
const auto compilerInfoLabelLayout = new QHBoxLayout;
compilerInfoLabelLayout->setContentsMargins(0, 0, 0, 0);
compilerInfoLabelLayout->setSpacing(0);
compilerInfoLabelLayout->addStretch();
compilerInfoLabelLayout->addWidget(m_compilerInfoLabel);
compilerInfoLabelLayout->addStretch();
const auto commitInfoLabelLayout = new QHBoxLayout;
commitInfoLabelLayout->setContentsMargins(0, 0, 0, 0);
commitInfoLabelLayout->setSpacing(0);
commitInfoLabelLayout->addStretch();
commitInfoLabelLayout->addWidget(m_commitInfoLabel);
commitInfoLabelLayout->addStretch();
const auto mainLayout = new QVBoxLayout(this);
mainLayout->setSpacing(0);
mainLayout->setContentsMargins(0, 0, 0, 0);
#if FRAMELESSHELPER_CONFIG(titlebar)
mainLayout->addWidget(m_titleBar);
#endif
mainLayout->addLayout(contentLayout);
mainLayout->addStretch();
mainLayout->addLayout(clockLabelLayout);
mainLayout->addStretch();
mainLayout->addLayout(compilerInfoLabelLayout);
mainLayout->addLayout(commitInfoLabelLayout);
updateStyleSheet();
m_cancelShortcut = new QShortcut(this);
@ -149,9 +182,11 @@ void Widget::initialize()
void Widget::updateStyleSheet()
{
const bool dark = (FramelessManager::instance()->systemTheme() == SystemTheme::Dark);
const QColor clockLabelTextColor = (dark ? kDefaultWhiteColor : kDefaultBlackColor);
m_clockLabel->setStyleSheet(FRAMELESSHELPER_STRING_LITERAL("background-color: transparent; color: %1;")
.arg(clockLabelTextColor.name()));
const QColor labelTextColor = (dark ? kDefaultWhiteColor : kDefaultBlackColor);
const QString labelStyleSheet = FRAMELESSHELPER_STRING_LITERAL("background-color: transparent; color: %1;").arg(labelTextColor.name());
m_clockLabel->setStyleSheet(labelStyleSheet);
m_compilerInfoLabel->setStyleSheet(labelStyleSheet);
m_commitInfoLabel->setStyleSheet(labelStyleSheet);
if (FramelessWidgetsHelper::get(this)->isBlurBehindWindowEnabled()) {
setStyleSheet(FRAMELESSHELPER_STRING_LITERAL("background-color: transparent;"));
} else {

View File

@ -65,6 +65,9 @@ private:
FRAMELESSHELPER_PREPEND_NAMESPACE(StandardTitleBar) *m_titleBar = nullptr;
#endif
QLabel *m_clockLabel = nullptr;
QLabel *m_compilerInfoLabel = nullptr;
QLabel *m_commitInfoLabel = nullptr;
QShortcut *m_fullScreenShortcut = nullptr;
QShortcut *m_cancelShortcut = nullptr;
int m_timerId = -1;
};