You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
247 lines
11 KiB
247 lines
11 KiB
#ifndef __QTCURVE_H__
|
|
#define __QTCURVE_H__
|
|
|
|
/*
|
|
QtCurve (C) Craig Drummond, 2003 - 2007 Craig.Drummond@lycos.co.uk
|
|
|
|
----
|
|
|
|
Based upon B???Curve style (Copyright (c) 2002 R?d H?t, Inc)
|
|
Bernhard Rosenkrazer <bero@r?dh?t.com>
|
|
Preston Brown <pbrown@r?dh?t.com>
|
|
Than Ngo <than@r?dh?t.com>
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public
|
|
License version 2 as published by the Free Software Foundation.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; see the file COPYING. If not, write to
|
|
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
Boston, MA 02110-1301, USA.
|
|
|
|
----
|
|
|
|
B???Curve is based on the KDE Light style, 2nd revision:
|
|
Copyright (c) 2000-2001 Trolltech AS (info@trolltech.com). The light style
|
|
license is as follows:
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a
|
|
copy of this software and associated documentation files (the "Software"),
|
|
to deal in the Software without restriction, including without limitation
|
|
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
and/or sell copies of the Software, and to permit persons to whom the
|
|
Software is furnished to do so, subject to the following conditions:
|
|
|
|
The above copyright notice and this permission notice shall be included in
|
|
all copies or substantial portions of the Software.
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
DEALINGS IN THE SOFTWARE.
|
|
*/
|
|
|
|
#include "config.h"
|
|
#include <kdeversion.h>
|
|
#include <kstyle.h>
|
|
#include <qcolor.h>
|
|
#include <qpoint.h>
|
|
#include <qpalette.h>
|
|
#include <qpixmap.h>
|
|
#include <qcache.h>
|
|
#include "common.h"
|
|
|
|
class QTimer;
|
|
class QSlider;
|
|
|
|
class HighContrastStyle : public KStyle
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
|
|
HighContrastStyle();
|
|
virtual ~HighContrastStyle() { }
|
|
|
|
const char * className();
|
|
};
|
|
|
|
class QtCurveStyle : public HighContrastStyle
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
|
|
enum EApp
|
|
{
|
|
APP_KICKER,
|
|
APP_KORN,
|
|
APP_OPENOFFICE,
|
|
APP_MACTOR,
|
|
APP_KPRESENTER,
|
|
APP_KONQUEROR,
|
|
APP_SKIP_TASKBAR,
|
|
APP_KPRINTER,
|
|
APP_KDIALOG,
|
|
APP_KDIALOGD,
|
|
APP_TORA,
|
|
APP_KONTACT,
|
|
APP_OPERA,
|
|
APP_OTHER
|
|
};
|
|
|
|
enum EHover
|
|
{
|
|
HOVER_NONE,
|
|
HOVER_CHECK,
|
|
HOVER_RADIO,
|
|
HOVER_SB_ADD,
|
|
HOVER_SB_SUB,
|
|
HOVER_SB_SUB2,
|
|
HOVER_SB_SLIDER,
|
|
HOVER_HEADER,
|
|
HOVER_KICKER,
|
|
HOVER_SW_UP,
|
|
HOVER_SW_DOWN,
|
|
HOVER_CB_ARROW
|
|
};
|
|
|
|
QtCurveStyle(const QString &name=QString());
|
|
virtual ~QtCurveStyle();
|
|
|
|
void polish(QApplication *app);
|
|
void polish(QPalette &pal);
|
|
void polish(QWidget *widget);
|
|
void unPolish(QWidget *widget);
|
|
void drawLightBevel(QPainter *p, const QRect &r, const QColorGroup &cg, SFlags flags,
|
|
int round, const QColor &fill, const QColor *custom=NULL,
|
|
bool doBorder=true, bool doCorners=true, EWidget w=WIDGET_OTHER) const
|
|
{ drawLightBevel(cg.background(), p, r, cg, flags, round, fill, custom, doBorder, doCorners, w); }
|
|
void drawLightBevel(const QColor &bgnd, QPainter *p, const QRect &r, const QColorGroup &cg,
|
|
SFlags flags, int round, const QColor &fill, const QColor *custom=NULL,
|
|
bool doBorder=true, bool doCorners=true, EWidget w=WIDGET_OTHER) const;
|
|
void drawEtch(QPainter *p, const QRect &r, const QColorGroup &cg, bool top, bool bot, bool raised=false) const;
|
|
void drawBorder(const QColor &bgnd, QPainter *p, const QRect &r, const QColorGroup &cg,
|
|
SFlags flags, int round, const QColor *custom=NULL, EWidget w=WIDGET_OTHER,
|
|
bool doCorners=true, EBorder borderProfile=BORDER_FLAT, bool blendBorderColors=true, int borderVal=QT_STD_BORDER) const;
|
|
void drawEntryField(QPainter *p, const QRect &r, const QColorGroup &cg, SFlags flags,
|
|
bool highlight, int round, EWidget=WIDGET_OTHER) const;
|
|
void drawArrow(QPainter *p, const QRect &r, const QColorGroup &cg, SFlags flags,
|
|
QStyle::PrimitiveElement pe, bool small=false, bool checkActive=false) const;
|
|
void drawPrimitive(PrimitiveElement, QPainter *, const QRect &, const QColorGroup &,
|
|
SFlags = Style_Default, const QStyleOption & = QStyleOption::Default) const;
|
|
void drawKStylePrimitive(KStylePrimitive kpe, QPainter* p, const QWidget* widget, const QRect &r,
|
|
const QColorGroup &cg, SFlags flags, const QStyleOption &opt ) const;
|
|
void drawControl(ControlElement, QPainter *, const QWidget *, const QRect &, const QColorGroup &,
|
|
SFlags = Style_Default, const QStyleOption & = QStyleOption::Default) const;
|
|
void drawControlMask(ControlElement, QPainter *, const QWidget *, const QRect &,
|
|
const QStyleOption & = QStyleOption::Default) const;
|
|
void drawComplexControlMask(ComplexControl control, QPainter *p, const QWidget *widget,
|
|
const QRect &r, const QStyleOption &data) const;
|
|
QRect subRect(SubRect, const QWidget *) const;
|
|
void drawComplexControl(ComplexControl, QPainter *, const QWidget *, const QRect &,
|
|
const QColorGroup &, SFlags = Style_Default, SCFlags = SC_All,
|
|
SCFlags = SC_None, const QStyleOption & = QStyleOption::Default) const;
|
|
QRect querySubControlMetrics(ComplexControl, const QWidget *, SubControl,
|
|
const QStyleOption & = QStyleOption::Default) const;
|
|
int pixelMetric(PixelMetric, const QWidget *widget= 0) const;
|
|
int kPixelMetric(KStylePixelMetric kpm, const QWidget *widget) const;
|
|
QSize sizeFromContents(ContentsType, const QWidget *, const QSize &,
|
|
const QStyleOption & = QStyleOption::Default) const;
|
|
int styleHint(StyleHint, const QWidget *widget= 0, const QStyleOption & = QStyleOption::Default,
|
|
QStyleHintReturn *returnData= 0) const;
|
|
|
|
protected:
|
|
|
|
bool appIsNotEmbedded(QDialog *dlg);
|
|
bool eventFilter(QObject *object, QEvent *event);
|
|
void drawMenuItem(QPainter *p, const QRect &r, const QColorGroup &cg,
|
|
bool mbi, int round, const QColor &bgnd, const QColor *cols) const;
|
|
void drawProgress(QPainter *p, const QRect &r, const QColorGroup &cg, SFlags flags, int round,
|
|
const QWidget *widget) const;
|
|
void drawBevelGradient(const QColor &base, bool increase, QPainter *p, QRect const &r,
|
|
bool horiz, double shadeTop, double shadeBot, bool sel, EAppearance bevApp,
|
|
EWidget w=WIDGET_OTHER) const;
|
|
void drawGradient(const QColor &top, const QColor &bot, bool increase, QPainter *p,
|
|
const QRect &r, bool horiz=true) const;
|
|
void drawSbSliderHandle(QPainter *p, const QRect &r, const QColorGroup &cg, SFlags flags, bool slider=false) const;
|
|
void drawSliderHandle(QPainter *p, const QRect &r, const QColorGroup &cg, SFlags flags, QSlider *slider, bool tb=false) const;
|
|
void drawSliderGroove(QPainter *p, const QRect &r, const QColorGroup &cg, SFlags flags,
|
|
const QWidget *widget) const;
|
|
void drawMenuOrToolBarBackground(QPainter *p, const QRect &r, const QColorGroup &cg, bool menu=true,
|
|
bool horiz=true) const;
|
|
void drawHandleMarkers(QPainter *p, const QRect &r, SFlags flags, bool tb, ELine handles) const;
|
|
|
|
private:
|
|
|
|
void shadeColors(const QColor &base, QColor *vals) const;
|
|
const QColor * buttonColors(const QColorGroup &cg) const;
|
|
const QColor * sliderColors(/*const QColorGroup &cg, */SFlags flags) const;
|
|
const QColor * backgroundColors(const QColor &c) const;
|
|
const QColor * backgroundColors(const QColorGroup &cg) const
|
|
{ return backgroundColors(cg.background()); }
|
|
const QColor * borderColors(SFlags flags, const QColor *use) const;
|
|
const QColor * getSidebarButtons() const;
|
|
void setMenuColors(const QColorGroup &cg);
|
|
bool redrawHoverWidget(const QPoint &pos);
|
|
const QColor & getFill(SFlags flags, const QColor *use) const;
|
|
const QColor & getListViewFill(SFlags flags, const QColor *use) const;
|
|
const QColor & getTabFill(bool current, bool highlight, const QColor *use) const;
|
|
|
|
QPixmap * getPixelPixmap(const QColor col) const;
|
|
QPixmap * getPixmap(const QColor col, EPixmap pix, double shade=1.0) const;
|
|
void setSbType();
|
|
bool isFormWidget(const QWidget *w) const { return itsKhtmlWidgets.contains(w); }
|
|
|
|
private slots:
|
|
|
|
void updateProgressPos();
|
|
void progressBarDestroyed(QObject *bar);
|
|
void sliderThumbMoved(int val);
|
|
void khtmlWidgetDestroyed(QObject *o);
|
|
|
|
private:
|
|
|
|
Options opts;
|
|
QColor itsMenuitemCols[TOTAL_SHADES+1],
|
|
itsBackgroundCols[TOTAL_SHADES+1],
|
|
itsMenubarCols[TOTAL_SHADES+1],
|
|
*itsSliderCols,
|
|
*itsDefBtnCols,
|
|
*itsMouseOverCols,
|
|
itsButtonCols[TOTAL_SHADES+1],
|
|
itsLighterPopupMenuBgndCol,
|
|
itsCheckRadioCol;
|
|
mutable QColor *itsSidebarButtonsCols;
|
|
mutable QColor itsColoredButtonCols[TOTAL_SHADES+1];
|
|
mutable QColor itsColoredBackgroundCols[TOTAL_SHADES+1];
|
|
EApp itsThemedApp;
|
|
mutable QCache<QPixmap> itsPixmapCache;
|
|
#if KDE_VERSION >= 0x30200
|
|
bool itsIsTransKicker;
|
|
#endif
|
|
EHover itsHover;
|
|
QPoint itsOldPos;
|
|
mutable bool itsFormMode;
|
|
QWidget *itsHoverWidget;
|
|
int itsHoverSect;
|
|
QTab *itsHoverTab;
|
|
QPalette *itsMactorPal;
|
|
QMap<QWidget*, int> itsProgAnimWidgets;
|
|
QMap<const QWidget*, bool> itsKhtmlWidgets;
|
|
QTimer *itsAnimationTimer;
|
|
mutable bool itsActive,
|
|
itsIsSpecialHover;
|
|
};
|
|
|
|
#endif
|