Create project
This commit is contained in:
commit
a36a44fa0b
|
@ -0,0 +1,87 @@
|
|||
# This file is used to ignore files which are generated
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
*~
|
||||
*.autosave
|
||||
*.a
|
||||
*.core
|
||||
*.moc
|
||||
*.o
|
||||
*.obj
|
||||
*.orig
|
||||
*.rej
|
||||
*.so
|
||||
*_pch.h.cpp
|
||||
*_resource.rc
|
||||
*.qm
|
||||
.#*
|
||||
*.*#
|
||||
core
|
||||
!core/
|
||||
tags
|
||||
.DS_Store
|
||||
*.debug
|
||||
Makefile*
|
||||
*.prl
|
||||
*.app
|
||||
moc_*.cpp
|
||||
ui_*.h
|
||||
qrc_*.cpp
|
||||
.qmake.stash
|
||||
.qmake.cache
|
||||
Thumbs.db
|
||||
.directory
|
||||
*.orig
|
||||
|
||||
# Version project
|
||||
version.h
|
||||
|
||||
# qtcreator generated files
|
||||
*.pro.user*
|
||||
*.txt.user*
|
||||
*.qbs.user*
|
||||
*.qmlproject.user*
|
||||
*.pluginspec
|
||||
|
||||
# xemacs temporary files
|
||||
*.flc
|
||||
|
||||
# Vim temporary files
|
||||
.*.swp
|
||||
|
||||
# Visual Studio generated files
|
||||
*.ib_pdb_index
|
||||
*.idb
|
||||
*.ilk
|
||||
*.pdb
|
||||
*.sln
|
||||
*.suo
|
||||
*.vcproj
|
||||
*vcproj.*.*.user
|
||||
*.ncb
|
||||
|
||||
# MinGW generated files
|
||||
*.Debug
|
||||
*.Release
|
||||
|
||||
# translation related:
|
||||
share/qtcreator/translations/*_tr.h
|
||||
share/qtcreator/translations/qtcreator_untranslated.ts
|
||||
|
||||
# Directories to ignore
|
||||
# ---------------------
|
||||
|
||||
debug
|
||||
lib/*
|
||||
lib64/*
|
||||
release
|
||||
.rcc
|
||||
.pch
|
||||
doc/doxygen/html
|
||||
qch/*
|
||||
|
||||
# Binaries
|
||||
# --------
|
||||
bin
|
||||
build
|
||||
target_wrapper.sh
|
|
@ -0,0 +1,25 @@
|
|||
cmake_minimum_required(VERSION 3.5)
|
||||
|
||||
project(rtptheme LANGUAGES CXX)
|
||||
|
||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||
set(CMAKE_AUTOUIC ON)
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_AUTORCC ON)
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
find_package(Qt5 COMPONENTS Widgets REQUIRED)
|
||||
|
||||
add_library(rtptheme SHARED
|
||||
main.cpp
|
||||
rtptheme.cpp
|
||||
rtptheme.h
|
||||
rtptheme.json
|
||||
)
|
||||
|
||||
target_link_libraries(rtptheme PRIVATE Qt5::Widgets)
|
||||
target_link_libraries(rtptheme PRIVATE Qt5::GuiPrivate)
|
||||
|
||||
target_compile_definitions(rtptheme PRIVATE RTPTHEME_LIBRARY)
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
#include <qpa/qplatformthemeplugin.h>
|
||||
#include "rtptheme.h"
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class RTPThemePlugin : public QPlatformThemePlugin
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PLUGIN_METADATA(IID QPlatformThemeFactoryInterface_iid FILE "rtptheme.json")
|
||||
|
||||
public:
|
||||
QPlatformTheme *create(const QString &key, const QStringList ¶ms) override;
|
||||
};
|
||||
|
||||
QPlatformTheme *RTPThemePlugin::create(const QString &key, const QStringList ¶ms)
|
||||
{
|
||||
Q_UNUSED(params);
|
||||
if (!key.compare(QLatin1String("rtptheme"), Qt::CaseInsensitive))
|
||||
return new RTPTheme;
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#include "main.moc"
|
|
@ -0,0 +1,189 @@
|
|||
#include "rtptheme.h"
|
||||
|
||||
#include <private/qguiapplication_p.h>
|
||||
#include <qpa/qplatformtheme_p.h>
|
||||
#include <qpa/qplatformthemefactory_p.h>
|
||||
#include <qpa/qplatformintegration.h>
|
||||
|
||||
#include <QPalette>
|
||||
#include <QFont>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class RTPThemePrivate : public QPlatformThemePrivate
|
||||
{
|
||||
public:
|
||||
RTPThemePrivate()
|
||||
: QPlatformThemePrivate()
|
||||
{ }
|
||||
|
||||
~RTPThemePrivate()
|
||||
{
|
||||
delete baseTheme;
|
||||
}
|
||||
|
||||
QPlatformTheme *baseTheme;
|
||||
};
|
||||
|
||||
RTPTheme::RTPTheme()
|
||||
: d_ptr(new RTPThemePrivate)
|
||||
{
|
||||
Q_D(RTPTheme);
|
||||
|
||||
QStringList themeNames;
|
||||
themeNames += QGuiApplicationPrivate::platform_integration->themeNames();
|
||||
// 1) Look for a theme plugin.
|
||||
for (const QString &themeName : qAsConst(themeNames)) {
|
||||
d->baseTheme = QPlatformThemeFactory::create(themeName, nullptr);
|
||||
if (d->baseTheme)
|
||||
break;
|
||||
}
|
||||
|
||||
// 2) If no theme plugin was found ask the platform integration to
|
||||
// create a theme
|
||||
if (!d->baseTheme) {
|
||||
for (const QString &themeName : qAsConst(themeNames)) {
|
||||
d->baseTheme = QGuiApplicationPrivate::platform_integration->createPlatformTheme(themeName);
|
||||
if (d->baseTheme)
|
||||
break;
|
||||
}
|
||||
// No error message; not having a theme plugin is allowed.
|
||||
}
|
||||
|
||||
// 3) Fall back on the built-in "null" platform theme.
|
||||
if (!d->baseTheme)
|
||||
d->baseTheme = new QPlatformTheme;
|
||||
}
|
||||
|
||||
QPlatformMenuItem* RTPTheme::createPlatformMenuItem() const
|
||||
{
|
||||
Q_D(const RTPTheme);
|
||||
return d->baseTheme->createPlatformMenuItem();
|
||||
}
|
||||
|
||||
QPlatformMenu* RTPTheme::createPlatformMenu() const
|
||||
{
|
||||
Q_D(const RTPTheme);
|
||||
return d->baseTheme->createPlatformMenu();
|
||||
}
|
||||
|
||||
QPlatformMenuBar* RTPTheme::createPlatformMenuBar() const
|
||||
{
|
||||
Q_D(const RTPTheme);
|
||||
return d->baseTheme->createPlatformMenuBar();
|
||||
}
|
||||
|
||||
void RTPTheme::showPlatformMenuBar()
|
||||
{
|
||||
Q_D(const RTPTheme);
|
||||
return d->baseTheme->showPlatformMenuBar();
|
||||
}
|
||||
|
||||
bool RTPTheme::usePlatformNativeDialog(DialogType type) const
|
||||
{
|
||||
Q_D(const RTPTheme);
|
||||
|
||||
if (type == FileDialog)
|
||||
return true;
|
||||
|
||||
return d->baseTheme->usePlatformNativeDialog(type);
|
||||
}
|
||||
|
||||
QPlatformDialogHelper* RTPTheme::createPlatformDialogHelper(DialogType type) const
|
||||
{
|
||||
Q_D(const RTPTheme);
|
||||
|
||||
return d->baseTheme->createPlatformDialogHelper(type);
|
||||
}
|
||||
|
||||
#ifndef QT_NO_SYSTEMTRAYICON
|
||||
QPlatformSystemTrayIcon* RTPTheme::createPlatformSystemTrayIcon() const
|
||||
{
|
||||
Q_D(const RTPTheme);
|
||||
return d->baseTheme->createPlatformSystemTrayIcon();
|
||||
}
|
||||
#endif
|
||||
|
||||
const QPalette *RTPTheme::palette(Palette type) const
|
||||
{
|
||||
Q_D(const RTPTheme);
|
||||
|
||||
if (type == SystemPalette) {
|
||||
QStringList active {
|
||||
"#000000", "#d3d3d3", "#ffffff", "#e9e9e9", "#696969", "#8d8d8d",
|
||||
"#000000", "#ffffff", "#000000", "#fdfcfa", "#d3d3d3", "#000000",
|
||||
"#232323", "#ffffff", "#0000ff", "#644a9b", "#faf6ef", "#000000",
|
||||
"#ffffdc", "#000000" };
|
||||
QStringList disabled {
|
||||
"#808080", "#d3d3d3", "#ffffff", "#f3f3f3", "#696969", "#8d8d8d",
|
||||
"#808080", "#ffffff", "#808080", "#fdfcfa", "#d3d3d3", "#000000",
|
||||
"#232323", "#808080", "#0000ff", "#644a9b", "#faf6ef", "#000000",
|
||||
"#ffffdc", "#000000" };
|
||||
QStringList inactive {
|
||||
"#000000", "#d3d3d3", "#ffffff", "#f3f3f3", "#696969", "#8d8d8d",
|
||||
"#000000", "#ffffff", "#000000", "#fdfcfa", "#d3d3d3", "#000000",
|
||||
"#232323", "#ffffff", "#0000ff", "#644a9b", "#faf6ef", "#000000",
|
||||
"#ffffdc", "#000000" };
|
||||
|
||||
QPalette *pal = new QPalette(Qt::black);
|
||||
for (int i = 0; i < qMin(active.count(), int(QPalette::NColorRoles)); ++i)
|
||||
{
|
||||
QPalette::ColorRole colorRole = (QPalette::ColorRole)i;
|
||||
pal->setColor(QPalette::Active, colorRole, QColor(active[i]));
|
||||
pal->setColor(QPalette::Disabled, colorRole, QColor(disabled[i]));
|
||||
pal->setColor(QPalette::Inactive, colorRole, QColor(inactive[i]));
|
||||
}
|
||||
|
||||
return pal;
|
||||
}
|
||||
|
||||
return d->baseTheme->palette(type);
|
||||
}
|
||||
|
||||
const QFont* RTPTheme::font(Font type) const
|
||||
{
|
||||
Q_D(const RTPTheme);
|
||||
|
||||
return new QFont("Verdana",8);
|
||||
}
|
||||
|
||||
QVariant RTPTheme::themeHint(ThemeHint hint) const
|
||||
{
|
||||
Q_D(const RTPTheme);
|
||||
return d->baseTheme->themeHint(hint);
|
||||
}
|
||||
|
||||
QPixmap RTPTheme::standardPixmap(StandardPixmap sp, const QSizeF &size) const
|
||||
{
|
||||
Q_D(const RTPTheme);
|
||||
return d->baseTheme->standardPixmap(sp, size);
|
||||
}
|
||||
|
||||
QIcon RTPTheme::fileIcon(const QFileInfo &fileInfo,
|
||||
QPlatformTheme::IconOptions iconOptions) const
|
||||
{
|
||||
Q_D(const RTPTheme);
|
||||
return d->baseTheme->fileIcon(fileInfo, iconOptions);
|
||||
}
|
||||
|
||||
QIconEngine * RTPTheme::createIconEngine(const QString &iconName) const
|
||||
{
|
||||
Q_D(const RTPTheme);
|
||||
return d->baseTheme->createIconEngine(iconName);
|
||||
}
|
||||
|
||||
#if QT_CONFIG(shortcut)
|
||||
QList<QKeySequence> RTPTheme::keyBindings(QKeySequence::StandardKey key) const
|
||||
{
|
||||
Q_D(const RTPTheme);
|
||||
return d->baseTheme->keyBindings(key);
|
||||
}
|
||||
#endif
|
||||
|
||||
QString RTPTheme::standardButtonText(int button) const
|
||||
{
|
||||
Q_D(const RTPTheme);
|
||||
return d->baseTheme->standardButtonText(button);
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
|
@ -0,0 +1,53 @@
|
|||
#ifndef RTPTHEME_H
|
||||
#define RTPTHEME_H
|
||||
|
||||
#include <qpa/qplatformtheme.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class RTPThemePrivate;
|
||||
|
||||
class RTPTheme : public QPlatformTheme
|
||||
{
|
||||
Q_DECLARE_PRIVATE(RTPTheme)
|
||||
public:
|
||||
RTPTheme();
|
||||
|
||||
QPlatformMenuItem *createPlatformMenuItem() const override;
|
||||
QPlatformMenu *createPlatformMenu() const override;
|
||||
QPlatformMenuBar *createPlatformMenuBar() const override;
|
||||
void showPlatformMenuBar() override;
|
||||
|
||||
bool usePlatformNativeDialog(DialogType type) const override;
|
||||
QPlatformDialogHelper *createPlatformDialogHelper(DialogType type) const override;
|
||||
|
||||
#ifndef QT_NO_SYSTEMTRAYICON
|
||||
QPlatformSystemTrayIcon *createPlatformSystemTrayIcon() const override;
|
||||
#endif
|
||||
|
||||
const QPalette *palette(Palette type = SystemPalette) const override;
|
||||
|
||||
const QFont *font(Font type = SystemFont) const override;
|
||||
|
||||
QVariant themeHint(ThemeHint hint) const override;
|
||||
|
||||
QPixmap standardPixmap(StandardPixmap sp, const QSizeF &size) const override;
|
||||
QIcon fileIcon(const QFileInfo &fileInfo,
|
||||
QPlatformTheme::IconOptions iconOptions = nullptr) const override;
|
||||
|
||||
QIconEngine *createIconEngine(const QString &iconName) const override;
|
||||
|
||||
#if QT_CONFIG(shortcut)
|
||||
QList<QKeySequence> keyBindings(QKeySequence::StandardKey key) const override;
|
||||
#endif
|
||||
|
||||
QString standardButtonText(int button) const override;
|
||||
|
||||
private:
|
||||
QScopedPointer<RTPThemePrivate> d_ptr;
|
||||
Q_DISABLE_COPY_MOVE(RTPTheme)
|
||||
};
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QXDGDESKTOPPORTALTHEME_H
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"Keys": [ "rtptheme"]
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
TARGET = rtptheme
|
||||
CONFIG += plugin
|
||||
TEMPLATE = lib
|
||||
|
||||
PLUGIN_TYPE = platformthemes
|
||||
PLUGIN_EXTENDS = -
|
||||
PLUGIN_CLASS_NAME = RTPThemePlugin
|
||||
|
||||
QT += gui-private
|
||||
|
||||
HEADERS += \
|
||||
rtptheme.h
|
||||
|
||||
SOURCES += \
|
||||
main.cpp \
|
||||
rtptheme.cpp
|
Loading…
Reference in New Issue