mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Separate declaration and definition of CalibreStyle
This commit is contained in:
parent
a5eedb9f22
commit
aea448a5a4
@ -4,8 +4,6 @@
|
||||
#include <QtWidgets/QStyle>
|
||||
#include <QtWidgets/QApplication>
|
||||
#include <QDebug>
|
||||
#include <QStyleFactory>
|
||||
#include <QtWidgets/QProxyStyle>
|
||||
#include <QStyleOptionToolButton>
|
||||
#include <QFormLayout>
|
||||
#include <QDialogButtonBox>
|
||||
@ -120,15 +118,7 @@ dpiScaled(qreal value) {
|
||||
#endif
|
||||
}
|
||||
|
||||
class CalibreStyle: public QProxyStyle {
|
||||
private:
|
||||
const QHash<unsigned long, QString> icon_map;
|
||||
QByteArray desktop_environment;
|
||||
QDialogButtonBox::ButtonLayout button_layout;
|
||||
int transient_scroller;
|
||||
|
||||
public:
|
||||
CalibreStyle(QStyle *base, const QHash<unsigned long, QString> &icmap, int transient_scroller) : QProxyStyle(base), icon_map(icmap), transient_scroller(transient_scroller) {
|
||||
CalibreStyle::CalibreStyle(const QHash<unsigned long, QString> &icmap, int transient_scroller) : QProxyStyle(QString::fromUtf8("Fusion")), icon_map(icmap), transient_scroller(transient_scroller) {
|
||||
setObjectName(QString("calibre"));
|
||||
desktop_environment = detectDesktopEnvironment();
|
||||
button_layout = static_cast<QDialogButtonBox::ButtonLayout>(QProxyStyle::styleHint(SH_DialogButtonLayout));
|
||||
@ -136,8 +126,7 @@ class CalibreStyle: public QProxyStyle {
|
||||
button_layout = QDialogButtonBox::GnomeLayout;
|
||||
}
|
||||
|
||||
int styleHint(StyleHint hint, const QStyleOption *option = 0,
|
||||
const QWidget *widget = 0, QStyleHintReturn *returnData = 0) const {
|
||||
int CalibreStyle::styleHint(StyleHint hint, const QStyleOption *option, const QWidget *widget, QStyleHintReturn *returnData) const {
|
||||
switch (hint) {
|
||||
case SH_DialogButtonBox_ButtonsHaveIcons:
|
||||
return 1; // We want icons on dialog button box buttons
|
||||
@ -163,7 +152,7 @@ class CalibreStyle: public QProxyStyle {
|
||||
return QProxyStyle::styleHint(hint, option, widget, returnData);
|
||||
}
|
||||
|
||||
QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption * option = 0, const QWidget * widget = 0) const {
|
||||
QIcon CalibreStyle::standardIcon(StandardPixmap standardIcon, const QStyleOption * option, const QWidget * widget) const {
|
||||
if (standardIcon == QStyle::SP_DialogCloseButton) {
|
||||
bool is_dark_theme = QApplication::instance()->property("is_dark_theme").toBool();
|
||||
return QIcon(icon_map.value(QStyle::SP_CustomBase + (is_dark_theme ? 2 : 1)));
|
||||
@ -172,7 +161,7 @@ class CalibreStyle: public QProxyStyle {
|
||||
return QProxyStyle::standardIcon(standardIcon, option, widget);
|
||||
}
|
||||
|
||||
int pixelMetric(PixelMetric metric, const QStyleOption * option = 0, const QWidget * widget = 0) const {
|
||||
int CalibreStyle::pixelMetric(PixelMetric metric, const QStyleOption * option, const QWidget * widget) const {
|
||||
switch (metric) {
|
||||
case PM_TabBarTabVSpace:
|
||||
return 8; // Make tab bars a little narrower, the value for the Fusion style is 12
|
||||
@ -184,7 +173,7 @@ class CalibreStyle: public QProxyStyle {
|
||||
return QProxyStyle::pixelMetric(metric, option, widget);
|
||||
}
|
||||
|
||||
void drawComplexControl(ComplexControl control, const QStyleOptionComplex * option, QPainter * painter, const QWidget * widget = 0) const {
|
||||
void CalibreStyle::drawComplexControl(ComplexControl control, const QStyleOptionComplex * option, QPainter * painter, const QWidget * widget) const {
|
||||
const QStyleOptionToolButton *toolbutton = NULL;
|
||||
switch (control) {
|
||||
case CC_ToolButton: // {{{
|
||||
@ -202,7 +191,7 @@ class CalibreStyle: public QProxyStyle {
|
||||
return QProxyStyle::drawComplexControl(control, option, painter, widget);
|
||||
}
|
||||
|
||||
void drawPrimitive(PrimitiveElement element, const QStyleOption * option, QPainter * painter, const QWidget * widget = 0) const {
|
||||
void CalibreStyle::drawPrimitive(PrimitiveElement element, const QStyleOption * option, QPainter * painter, const QWidget * widget) const {
|
||||
const QStyleOptionViewItem *vopt = NULL;
|
||||
switch (element) {
|
||||
case PE_FrameTabBarBase: // {{{
|
||||
@ -322,7 +311,8 @@ class CalibreStyle: public QProxyStyle {
|
||||
}
|
||||
}
|
||||
return; // }}}
|
||||
case PE_FrameFocusRect: // }}}
|
||||
|
||||
case PE_FrameFocusRect: // {{{
|
||||
if (!widget || !widget->property("frame_for_focus").toBool())
|
||||
break;
|
||||
if (const QStyleOptionFocusRect *fropt = qstyleoption_cast<const QStyleOptionFocusRect *>(option)) {
|
||||
@ -344,8 +334,7 @@ class CalibreStyle: public QProxyStyle {
|
||||
return QProxyStyle::drawPrimitive(element, option, painter, widget);
|
||||
}
|
||||
|
||||
void drawControl(ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const {
|
||||
const QStyleOptionViewItem *vopt = NULL;
|
||||
void CalibreStyle::drawControl(ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const {
|
||||
switch(element) {
|
||||
case CE_ItemViewItem: {
|
||||
if (option->state & QStyle::State_HasFocus && (vopt = qstyleoption_cast<const QStyleOptionViewItem *>(option)) && widget && widget->property("highlight_current_item").toBool()) {
|
||||
@ -357,6 +346,7 @@ class CalibreStyle: public QProxyStyle {
|
||||
}
|
||||
}
|
||||
} break;
|
||||
|
||||
case CE_MenuItem: // {{{
|
||||
// Draw menu separators that work in both light and dark modes
|
||||
if (const QStyleOptionMenuItem *menuItem = qstyleoption_cast<const QStyleOptionMenuItem *>(option)) {
|
||||
@ -386,11 +376,9 @@ class CalibreStyle: public QProxyStyle {
|
||||
}
|
||||
QProxyStyle::drawControl(element, option, painter, widget);
|
||||
}
|
||||
};
|
||||
|
||||
int load_style(const QHash<unsigned long,QString> &icon_map, int transient_scroller) {
|
||||
QStyle *base_style = QStyleFactory::create(QString("Fusion"));
|
||||
QApplication::setStyle(new CalibreStyle(base_style, icon_map, transient_scroller));
|
||||
QApplication::setStyle(new CalibreStyle(icon_map, transient_scroller));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -8,6 +8,8 @@
|
||||
#include <QMenu>
|
||||
#include <QPropertyAnimation>
|
||||
#include <QParallelAnimationGroup>
|
||||
#include <QProxyStyle>
|
||||
#include <QDialogButtonBox>
|
||||
|
||||
#define arc_length_max 0.734f
|
||||
#define arc_length_min 0.02f
|
||||
@ -87,6 +89,23 @@ private:
|
||||
QParallelAnimationGroup m_animation;
|
||||
};
|
||||
|
||||
class CalibreStyle : public QProxyStyle {
|
||||
private:
|
||||
const QHash<unsigned long, QString> icon_map;
|
||||
QByteArray desktop_environment;
|
||||
QDialogButtonBox::ButtonLayout button_layout;
|
||||
int transient_scroller;
|
||||
|
||||
public:
|
||||
CalibreStyle(const QHash<unsigned long, QString> &icmap, int transient_scroller);
|
||||
virtual int styleHint(StyleHint hint, const QStyleOption *option = 0, const QWidget *widget = 0, QStyleHintReturn *returnData = 0) const;
|
||||
virtual QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption * option = 0, const QWidget * widget = 0) const;
|
||||
virtual int pixelMetric(PixelMetric metric, const QStyleOption * option = 0, const QWidget * widget = 0) const;
|
||||
virtual void drawComplexControl(ComplexControl control, const QStyleOptionComplex * option, QPainter * painter, const QWidget * widget = 0) const;
|
||||
virtual void drawPrimitive(PrimitiveElement element, const QStyleOption * option, QPainter * painter, const QWidget * widget = 0) const;
|
||||
virtual void drawControl(ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const;
|
||||
};
|
||||
|
||||
/*!
|
||||
\class QProgressIndicator
|
||||
\brief The QProgressIndicator class lets an application display a progress indicator to show that a lengthy task is under way.
|
||||
|
Loading…
x
Reference in New Issue
Block a user