implemented SH_KCustomElement from KStyle, to have them working in KDE4.

wilder-pre-rebase
Hugo Pereira Da Costa 11 years ago
parent d284dd4ef6
commit 53d25d9558
  1. 4
      kstyle/breezestyle.cpp
  2. 41
      kstyle/kstylekde4compat.cpp
  3. 24
      kstyle/kstylekde4compat.h

@ -173,7 +173,7 @@ namespace Breeze
, _splitterFactory( new SplitterFactory( this ) ) , _splitterFactory( new SplitterFactory( this ) )
, _widgetExplorer( new WidgetExplorer( this ) ) , _widgetExplorer( new WidgetExplorer( this ) )
, _tabBarData( new BreezePrivate::TabBarData( this ) ) , _tabBarData( new BreezePrivate::TabBarData( this ) )
#if BREEZE_HAVE_KSTYLE #if BREEZE_HAVE_KSTYLE||BREEZE_USE_KDE4
, SH_ArgbDndWindow( newStyleHint( QStringLiteral( "SH_ArgbDndWindow" ) ) ) , SH_ArgbDndWindow( newStyleHint( QStringLiteral( "SH_ArgbDndWindow" ) ) )
, CE_CapacityBar( newControlElement( QStringLiteral( "CE_CapacityBar" ) ) ) , CE_CapacityBar( newControlElement( QStringLiteral( "CE_CapacityBar" ) ) )
#endif #endif
@ -822,7 +822,7 @@ namespace Breeze
StyleControl fcn( nullptr ); StyleControl fcn( nullptr );
#if BREEZE_HAVE_KSTYLE #if BREEZE_HAVE_KSTYLE||BREEZE_USE_KDE4
if( element == CE_CapacityBar ) if( element == CE_CapacityBar )
{ {
fcn = &Style::drawProgressBarControl; fcn = &Style::drawProgressBarControl;

@ -23,16 +23,55 @@
#include <QToolBar> #include <QToolBar>
#include <KSharedConfig> #include <KSharedConfig>
static const QStyle::StyleHint SH_KCustomStyleElement = (QStyle::StyleHint)0xff000001;
static const int X_KdeBase = 0xff000000;
//_____________________________________________________________________
KStyleKDE4Compat::KStyleKDE4Compat() KStyleKDE4Compat::KStyleKDE4Compat()
{ {
controlCounter = subElementCounter = X_KdeBase;
hintCounter = X_KdeBase + 1; //sic! X_KdeBase is covered by SH_KCustomStyleElement
} }
//_____________________________________________________________________
KStyleKDE4Compat::~KStyleKDE4Compat() KStyleKDE4Compat::~KStyleKDE4Compat()
{}
//_____________________________________________________________________
static inline int newStyleElement(const QString &element, const char *check, int &counter, QHash<QString, int> *elements)
{ {
if (!element.contains(check)) {
return 0;
}
int id = elements->value(element, 0);
if (!id) {
++counter;
id = counter;
elements->insert(element, id);
}
return id;
} }
//_____________________________________________________________________
QStyle::StyleHint KStyleKDE4Compat::newStyleHint(const QString &element)
{ return (StyleHint)newStyleElement(element, "SH_", hintCounter, &styleElements); }
//_____________________________________________________________________
QStyle::ControlElement KStyleKDE4Compat::newControlElement(const QString &element)
{ return (ControlElement)newStyleElement(element, "CE_", controlCounter, &styleElements); }
//_____________________________________________________________________
QStyle::SubElement KStyleKDE4Compat::newSubElement(const QString &element)
{ return (SubElement)newStyleElement(element, "SE_", subElementCounter, &styleElements); }
//_____________________________________________________________________
int KStyleKDE4Compat::styleHint(StyleHint hint, const QStyleOption *option, const QWidget *widget, QStyleHintReturn *returnData) const int KStyleKDE4Compat::styleHint(StyleHint hint, const QStyleOption *option, const QWidget *widget, QStyleHintReturn *returnData) const
{ {
if( hint == SH_KCustomStyleElement && widget )
{ return styleElements.value(widget->objectName(), 0); }
switch (hint) { switch (hint) {
case SH_ItemView_ActivateItemOnSingleClick: { case SH_ItemView_ActivateItemOnSingleClick: {
KConfigGroup g(KSharedConfig::openConfig(), "KDE"); KConfigGroup g(KSharedConfig::openConfig(), "KDE");
@ -81,4 +120,4 @@ int KStyleKDE4Compat::styleHint(StyleHint hint, const QStyleOption *option, cons
}; };
return QCommonStyle::styleHint(hint, option, widget, returnData); return QCommonStyle::styleHint(hint, option, widget, returnData);
} }

@ -28,15 +28,31 @@
#define KSTYLE_KDE4_COMPAT_H #define KSTYLE_KDE4_COMPAT_H
#include <QCommonStyle> #include <QCommonStyle>
#include <QHash>
class KStyleKDE4Compat : public QCommonStyle class KStyleKDE4Compat : public QCommonStyle
{ {
Q_OBJECT Q_OBJECT
public:
public:
KStyleKDE4Compat(); KStyleKDE4Compat();
~KStyleKDE4Compat(); ~KStyleKDE4Compat();
virtual int styleHint(StyleHint hint, const QStyleOption *opt, virtual int styleHint(StyleHint hint, const QStyleOption *opt, const QWidget *w, QStyleHintReturn *returnData) const;
const QWidget *w, QStyleHintReturn *returnData) const;
protected:
StyleHint newStyleHint(const QString &element);
ControlElement newControlElement(const QString &element);
SubElement newSubElement(const QString &element);
private:
QHash<QString, int> styleElements;
int hintCounter;
int controlCounter;
int subElementCounter;
}; };
#endif #endif

Loading…
Cancel
Save