diff options
author | Darrell Anderson <humanreadable@yahoo.com> | 2013-08-18 10:14:48 -0500 |
---|---|---|
committer | Darrell Anderson <humanreadable@yahoo.com> | 2013-08-18 10:14:48 -0500 |
commit | dad42352f4ad47d34caf50040367dc2a95772baa (patch) | |
tree | 6d2887d13f9b1403b8ce15be48a6ea7cec32fd96 /kstyles/highcontrast/highcontrast.cpp | |
parent | 365f03061337a81bcffb4a45c4ad637edad27019 (diff) | |
download | tdelibs-dad42352f4ad47d34caf50040367dc2a95772baa.tar.gz tdelibs-dad42352f4ad47d34caf50040367dc2a95772baa.zip |
Rename KStyle to TDEStyle to avoid conflicts with KDE4.
Diffstat (limited to 'kstyles/highcontrast/highcontrast.cpp')
-rw-r--r-- | kstyles/highcontrast/highcontrast.cpp | 1867 |
1 files changed, 0 insertions, 1867 deletions
diff --git a/kstyles/highcontrast/highcontrast.cpp b/kstyles/highcontrast/highcontrast.cpp deleted file mode 100644 index af021a91a..000000000 --- a/kstyles/highcontrast/highcontrast.cpp +++ /dev/null @@ -1,1867 +0,0 @@ -/* - * High Contrast Style (version 1.0) - * Copyright (C) 2004 Olaf Schmidt <ojschmidt@kde.org> - * - * Derived from Axes Style - * Copyright (C) 2003 Maksim Orlovich <orlovich@cs.rochester.edu> - * - * Axes Style based on KDE 3 HighColor Style, - * Copyright (C) 2001-2002 Karol Szwed <gallium@kde.org> - * (C) 2001-2002 Fredrik Höglund <fredrik@kde.org> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License version 2 as published by the Free Software Foundation. - * - * This library 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 - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; see the file COPYING.LIB. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - */ - -#include <tqdrawutil.h> -#include <tqpainter.h> -#include <tqpointarray.h> -#include <tqstyleplugin.h> - -#include <tqfont.h> -#include <tqcombobox.h> -#include <tqheader.h> -#include <tqmenubar.h> -#include <tqpushbutton.h> -#include <tqscrollbar.h> -#include <tqslider.h> -#include <tqtabbar.h> -#include <tqtoolbutton.h> -#include <tqtoolbar.h> -#include <tqpopupmenu.h> -#include <tqprogressbar.h> -#include <tqlistview.h> -#include <tqsettings.h> - -#include <tqimage.h> -#include <tqapplication.h> - -#include <kdrawutil.h> -#include <kpixmapeffect.h> - -#include "highcontrast.h" -#include "highcontrast.moc" - -// -- Style Plugin Interface ------------------------- -class HighContrastStylePlugin : public TQStylePlugin -{ - public: - HighContrastStylePlugin() {} - ~HighContrastStylePlugin() {} - - TQStringList keys() const - { - return TQStringList() << "HighContrast"; - } - - TQStyle* create( const TQString& key ) - { - if ( key == "highcontrast" ) - return new HighContrastStyle(); - return 0; - } -}; - -KDE_Q_EXPORT_PLUGIN (HighContrastStylePlugin) -// --------------------------------------------------- - - - -static const int itemFrame = 1; -static const int itemHMargin = 3; -static const int itemVMargin = 0; -static const int arrowHMargin = 6; -static const int rightBorder = 12; - - -void addOffset (TQRect* r, int offset, int lineWidth = 0) -{ - int offset1 = offset; - int offset2 = offset; - - *r = r->normalize(); - - if (lineWidth > 0) - { - offset1 += lineWidth/2; - offset2 += lineWidth - lineWidth/2 - 1; - } - - if (offset1 + offset2 > r->width()) - r->addCoords (r->width()/2, 0, - (r->width() - r->width()/2), 0); - else - r->addCoords (offset1, 0, -offset2, 0); - - if (offset1 + offset2 > r->height()) - r->addCoords (0, r->height()/2, 0, - (r->height() - r->height()/2)); - else - r->addCoords (0, offset1, 0, -offset2); -} - - -// --------------------------------------------------------------------------- - -HighContrastStyle::HighContrastStyle() - : TDEStyle( 0, ThreeButtonScrollBar ) -{ - TQSettings settings; - settings.beginGroup("/highcontraststyle/Settings/"); - bool useWideLines = settings.readBoolEntry("wideLines", false); - basicLineWidth = useWideLines ? 4 : 2; -} - - -HighContrastStyle::~HighContrastStyle() -{ -} - - -void HighContrastStyle::polish( TQPalette& pal ) -{ - //We do not want the disabled widgets to be greyed out, - //as that may be hard indeed (and since we use crossed-out text instead), - //so we make disabled colors be the same as active foreground and - //background colour - for (int c = 0; c < TQColorGroup::NColorRoles; ++c) - switch (c) - { - case TQColorGroup::Button: - case TQColorGroup::Base: - case TQColorGroup::Highlight: - pal.setColor(TQPalette::Disabled, TQColorGroup::ColorRole(c), pal.color(TQPalette::Active, TQColorGroup::Background)); - break; - case TQColorGroup::ButtonText: - case TQColorGroup::Text: - case TQColorGroup::HighlightedText: - pal.setColor(TQPalette::Disabled, TQColorGroup::ColorRole(c), pal.color(TQPalette::Active, TQColorGroup::Foreground)); - break; - default: - pal.setColor(TQPalette::Disabled, TQColorGroup::ColorRole(c), pal.color(TQPalette::Active, TQColorGroup::ColorRole(c))); - } -} - - -void HighContrastStyle::polish (const TQStyleControlElementData &ceData, ControlElementFlags elementFlags, void *ptr) -{ - if (ceData.widgetObjectTypes.contains(TQWIDGET_OBJECT_NAME_STRING)) { - TQWidget *widget = reinterpret_cast<TQWidget*>(ptr); - - if (widget->inherits (TQBUTTON_OBJECT_NAME_STRING) - || widget->inherits (TQCOMBOBOX_OBJECT_NAME_STRING) - || widget->inherits (TQSPINWIDGET_OBJECT_NAME_STRING) - || widget->inherits (TQLINEEDIT_OBJECT_NAME_STRING) - || widget->inherits (TQTEXTEDIT_OBJECT_NAME_STRING)) - { - installObjectEventHandler(ceData, elementFlags, ptr, this); - - TQSpinWidget* spinwidget = dynamic_cast<TQSpinWidget*>(widget); - if (spinwidget && spinwidget->editWidget()) { - TQWidget* spinEditWidget = spinwidget->editWidget(); - TQStyleControlElementData swCeData = populateControlElementDataFromWidget(spinEditWidget, TQStyleOption()); - ControlElementFlags swElementFlags = getControlElementFlagsForObject(spinEditWidget, swCeData.widgetObjectTypes, TQStyleOption()); - installObjectEventHandler(swCeData, swElementFlags, spinEditWidget, this); - } - } - } - - TDEStyle::polish (ceData, elementFlags, ptr); -} - - -void HighContrastStyle::unPolish (const TQStyleControlElementData &ceData, ControlElementFlags elementFlags, void *ptr) -{ - if (ceData.widgetObjectTypes.contains(TQWIDGET_OBJECT_NAME_STRING)) { - TQWidget *widget = reinterpret_cast<TQWidget*>(ptr); - if (widget->inherits (TQWIDGET_OBJECT_NAME_STRING) || widget->inherits (TQCOMBOBOX_OBJECT_NAME_STRING) || widget->inherits (TQSPINWIDGET_OBJECT_NAME_STRING) || widget->inherits (TQLINEEDIT_OBJECT_NAME_STRING) || widget->inherits (TQTEXTEDIT_OBJECT_NAME_STRING)) { - installObjectEventHandler(ceData, elementFlags, ptr, this); - } - } - - TDEStyle::unPolish (ceData, elementFlags, ptr); -} - -void HighContrastStyle::setColorsNormal (TQPainter* p, const TQColorGroup& cg, int flags, int highlight) const -{ - setColorsByState (p, cg, cg.foreground(), cg.background(), flags, highlight); -} - -void HighContrastStyle::setColorsButton (TQPainter* p, const TQColorGroup& cg, int flags, int highlight) const -{ - setColorsByState (p, cg, cg.buttonText(), cg.button(), flags, highlight); -} - -void HighContrastStyle::setColorsText (TQPainter* p, const TQColorGroup& cg, int flags, int highlight) const -{ - setColorsByState (p, cg, cg.text(), cg.base(), flags, highlight); -} - -void HighContrastStyle::setColorsHighlight (TQPainter* p, const TQColorGroup& cg, int flags) const -{ - setColorsByState (p, cg, cg.highlightedText(), cg.highlight(), flags, 0); -} - -void HighContrastStyle::setColorsByState (TQPainter* p, const TQColorGroup& cg, const TQColor& fg, const TQColor& bg, int flags, int highlight) const -{ - TQFont font = p->font(); - font.setStrikeOut (! (flags & Style_Enabled)); - p->setFont (font); - - if ((flags & Style_Enabled) && (flags & highlight)) - { - p->setPen (TQPen (cg.highlightedText(), basicLineWidth, flags & Style_Enabled ? Qt::SolidLine : Qt::DotLine)); - p->setBackgroundColor (cg.highlight()); - } - else - { - p->setPen (TQPen (fg, basicLineWidth, flags & Style_Enabled ? Qt::SolidLine : Qt::DotLine)); - p->setBackgroundColor (bg); - } - - p->setBrush (TQBrush ()); -} - -void HighContrastStyle::drawRect (TQPainter* p, TQRect r, int offset, bool filled) const -{ - addOffset (&r, offset, p->pen().width()); - if (filled) - p->fillRect (r, p->backgroundColor()); - - p->drawRect (r); -} - -void HighContrastStyle::drawRoundRect (TQPainter* p, TQRect r, int offset, bool filled) const -{ - int lineWidth = p->pen().width(); - if ((r.width() >= 5*lineWidth + 2*offset) && (r.height() >= 5*lineWidth + 2*offset)) - { - TQRect r2 (r); - addOffset (&r2, offset, lineWidth); - - addOffset (&r, offset); - TQRect r3 (r); - addOffset (&r3, lineWidth); - - p->save(); - p->setPen (Qt::NoPen); - if (filled) - p->fillRect (r3, p->backgroundColor()); - p->drawRect (r3); - p->restore(); - - p->drawLine (r.left()+lineWidth, r2.top(), r.right()+1-lineWidth, r2.top()); - p->fillRect (r.left()+1, r.top()+1, lineWidth, lineWidth, p->pen().color()); - p->drawLine (r2.left(), r.top()+lineWidth, r2.left(), r.bottom()+1-lineWidth); - p->fillRect (r.left()+1, r.bottom()-lineWidth, lineWidth, lineWidth, p->pen().color()); - p->drawLine (r.left()+lineWidth, r2.bottom(), r.right()+1-lineWidth, r2.bottom()); - p->fillRect (r.right()-lineWidth, r.bottom()-lineWidth, lineWidth, lineWidth, p->pen().color()); - p->drawLine (r2.right(), r.top()+lineWidth, r2.right(), r.bottom()+1-lineWidth); - p->fillRect (r.right()-lineWidth, r.top()+1, lineWidth, lineWidth, p->pen().color()); - } - else - drawRect (p, r, offset, filled); -} - -void HighContrastStyle::drawEllipse (TQPainter* p, TQRect r, int offset, bool filled) const -{ - addOffset (&r, offset, p->pen().width()); - - if (filled) { - p->save(); - p->setBrush (p->backgroundColor()); - p->drawRoundRect (r, 99, 99); - p->restore(); - } - - p->drawRoundRect (r, 99, 99); -} - -void HighContrastStyle::drawArrow (TQPainter* p, TQRect r, TQ_PrimitiveElement arrow, int offset) const -{ - p->save(); - addOffset (&r, offset); - - TQPoint center = r.center(); - if (r.height() < r.width()) - r.setWidth (r.height()); - if (r.width() % 2 != 0) - r.setWidth (r.width() - 1); - r.setHeight (r.width()); - r.moveCenter (center); - - TQPointArray points (3); - switch (arrow) { - case PE_ArrowUp: - case PE_SpinWidgetUp: - case PE_SpinWidgetPlus: { - points.setPoint (0, r.bottomLeft()); - points.setPoint (1, r.bottomRight()); - points.setPoint (2, r.center().x(), r.top() + r.height()/7); - break; - } - case PE_ArrowDown: - case PE_SpinWidgetDown: - case PE_SpinWidgetMinus: { - points.setPoint (0, r.topLeft()); - points.setPoint (1, r.topRight()); - points.setPoint (2, r.center().x(), r.bottom() - r.height()/7); - break; - } - case PE_ArrowLeft: { - points.setPoint (0, r.topRight()); - points.setPoint (1, r.bottomRight()); - points.setPoint (2, r.left() + r.width()/7, r.center().y()); - break; - } - default: { - points.setPoint (0, r.topLeft()); - points.setPoint (1, r.bottomLeft()); - points.setPoint (2, r.right() - r.width()/7, r.center().y()); - } - } - - p->setPen (p->pen().color()); - p->setBrush (p->pen().color()); - p->drawPolygon (points); - p->restore(); -} - -// This function draws primitive elements -void HighContrastStyle::drawPrimitive (TQ_PrimitiveElement pe, - TQPainter *p, - const TQStyleControlElementData &ceData, - ControlElementFlags elementFlags, - const TQRect &r, - const TQColorGroup &cg, - SFlags flags, - const TQStyleOption& opt ) const -{ - switch(pe) - { - case PE_StatusBarSection: { - //### TODO: Not everything uses this! - setColorsNormal (p, cg, Style_Enabled); - drawRect (p, r); - break; - } - // BUTTONS - // ------------------------------------------------------------------- - case PE_ButtonDefault: - case PE_ButtonDropDown: - case PE_ButtonCommand: - case PE_ButtonTool: - case PE_ButtonBevel: { - setColorsButton (p, cg, flags, Style_On|Style_MouseOver|Style_Down); - drawRoundRect (p, r, 0, false); - break; - } - - // FOCUS RECT - // ------------------------------------------------------------------- - case PE_FocusRect: { - p->save(); - p->setBrush (TQBrush ()); - p->setPen (TQPen (cg.highlight(), basicLineWidth, Qt::SolidLine)); - drawRoundRect (p, r, basicLineWidth, false); - p->setPen (TQPen (cg.highlightedText(), basicLineWidth, Qt::DashLine)); - drawRoundRect (p, r, basicLineWidth, false); - p->restore(); - break; - } - - case PE_HeaderArrow: { - setColorsButton (p, cg, flags, 0); - drawArrow (p, r, flags & Style_Down ? PE_ArrowDown : PE_ArrowUp, 2*basicLineWidth); - break; - } - // HEADER SECTION - // ------------------------------------------------------------------- - case PE_HeaderSectionMenu: - case PE_HeaderSection: { - setColorsButton (p, cg, flags, 0); - drawRect (p, r); - break; - } - - - // SCROLLBAR - // ------------------------------------------------------------------- - case PE_ScrollBarSlider: { - setColorsNormal (p, cg); - p->fillRect (r, p->backgroundColor()); - - if (flags & Style_Enabled) { - setColorsHighlight (p, cg, flags); - drawRoundRect (p, r); - - if (r.width() >= 7*basicLineWidth && r.height() >= 7*basicLineWidth) { - TQRect r2 (r); - r2.setWidth (4*basicLineWidth); - r2.setHeight (4*basicLineWidth); - r2.moveCenter (r.center()); - drawRect (p, r2, 0, false); - } - } - break; - } - - case PE_ScrollBarAddPage: - case PE_ScrollBarSubPage: { - setColorsNormal (p, cg); - p->fillRect (r, p->backgroundColor()); - - TQRect r2 (r); - if (flags & Style_Horizontal) - { - if (r2.height() > 5*basicLineWidth) - { - r2.setHeight (5*basicLineWidth); - r2.moveCenter (r.center()); - } - } - else - { - if (r2.width() > 5*basicLineWidth) - { - r2.setWidth (5*basicLineWidth); - r2.moveCenter (r.center()); - } - } - setColorsText (p, cg, flags); - drawRect (p, r2); - - if (flags & Style_Horizontal) - r2.addCoords (0, basicLineWidth, 0, -basicLineWidth); - else - r2.addCoords (basicLineWidth, 0, -basicLineWidth, 0); - TQPen pen = p->pen(); - pen.setColor (p->backgroundColor()); - p->setPen (pen); - drawRect (p, r2); - - break; - } - - case PE_ScrollBarAddLine: - case PE_ScrollBarSubLine: - case PE_ScrollBarFirst: - case PE_ScrollBarLast: { - setColorsNormal (p, cg); - p->fillRect (r, p->backgroundColor()); - - if (flags & Style_Enabled) { - setColorsButton (p, cg, flags); - drawRoundRect (p, r); - if (pe == PE_ScrollBarAddLine) - drawArrow (p, r, flags & Style_Horizontal ? PE_ArrowRight : PE_ArrowDown, r.height()/3); - else if (pe == PE_ScrollBarSubLine) - drawArrow (p, r, flags & Style_Horizontal ? PE_ArrowLeft : PE_ArrowUp, r.height()/3); - } - break; - } - - - case PE_ProgressBarChunk: { - p->fillRect (r, Qt::color1); - break; - } - - - // CHECKBOX - // ------------------------------------------------------------------- - case PE_Indicator: { - setColorsText (p, cg, flags); - - //Draw the outer rect - drawRect (p, r); - - if (!(flags & Style_Off)) - { - TQRect r2 (r); - addOffset (&r2, basicLineWidth); - if (flags & Style_On) - { - p->drawLine (r2.topLeft(), r2.bottomRight()); - p->drawLine (r2.bottomLeft(), r2.topRight()); - } - else - { // Tristate - p->drawLine (r2.left(), r2.top()+r2.width()/2, r2.right(), r2.top()+r2.width()/2); - } - TQPen pen = p->pen(); - pen.setColor (p->backgroundColor()); - p->setPen (pen); - drawRect (p, r2, 0, false); - } - break; - } - case PE_IndicatorMask: { - p->fillRect (r, Qt::color1); - break; - } - case PE_CheckMark: { - setColorsText (p, cg, flags); - - if (flags & Style_On) - { - p->drawLine (r.topLeft(), r.bottomRight()); - p->drawLine (r.bottomLeft(), r.topRight()); - } - break; - } - - // RADIOBUTTON (exclusive indicator) - // ------------------------------------------------------------------- - case PE_ExclusiveIndicator: { - setColorsText (p, cg, flags); - drawEllipse (p, r); - - // Indicator "dot" - if (flags & Style_On) { - p->setBackgroundColor (p->pen().color()); - drawEllipse (p, r, 2*p->pen().width()); - } - - break; - } - case PE_ExclusiveIndicatorMask: { - p->fillRect (r, Qt::color0); - p->setBackgroundColor (Qt::color1); - p->setPen (Qt::NoPen); - p->setBrush (Qt::color1); - p->drawEllipse (r); - break; - } - - - // SPLITTER/DOCKWINDOW HANDLES - // ------------------------------------------------------------------- - case PE_DockWindowResizeHandle: - case PE_Splitter: { - setColorsButton (p, cg, flags); - p->fillRect (r, p->backgroundColor()); - - p->setPen (TQPen (p->pen().color(), 1, Qt::DashLine)); - if (flags & Style_Horizontal) - p->drawLine (r.center().x(), r.top(), r.center().x(), r.bottom()); - else - p->drawLine (r.left(), r.center().y(), r.right(), r.center().y()); - break; - } - - - // GENERAL PANELS - // ------------------------------------------------------------------- - case PE_Panel: - case PE_GroupBoxFrame: - case PE_PanelPopup: { - setColorsNormal (p, cg, flags, 0); - if (!opt.isDefault()) - { - TQPen pen = p->pen(); - pen.setWidth (opt.lineWidth()); - p->setPen (pen); - } - if (pe == PE_PanelPopup) - drawRect (p, r, 0, false); - else - drawRoundRect (p, r, 0, false); - break; - } - case PE_WindowFrame: - case PE_TabBarBase: { - setColorsNormal (p, cg, flags, 0); - drawRect (p, r, 0, false); - break; - } - case PE_PanelLineEdit: { - setColorsText (p, cg, flags, 0); - drawRoundRect (p, r); - if (flags & (Style_HasFocus | Style_Active)) - drawPrimitive (PE_FocusRect, p, ceData, elementFlags, r, cg, flags, TQStyleOption (p->backgroundColor())); - break; - } - case PE_PanelTabWidget: - case PE_PanelGroupBox: { - setColorsNormal (p, cg, flags, 0); - drawRoundRect (p, r); - break; - } - case PE_PanelMenuBar: { // Menu - p->fillRect (r, cg.background()); - break; - } - case PE_PanelDockWindow: { // Toolbar - p->fillRect (r, cg.button()); - break; - } - - - - // SEPARATORS - // ------------------------------------------------------------------- - case PE_Separator: { - setColorsNormal (p, cg); - p->fillRect (r, p->backgroundColor()); - p->setPen (p->pen().color()); - if (flags & Style_Horizontal) - p->drawLine (r.center().x(), r.top()+basicLineWidth, r.center().x(), r.bottom()-basicLineWidth + 1); - else - p->drawLine (r.left()+basicLineWidth, r.center().y(), r.right()-basicLineWidth + 1, r.center().y()); - break; - } - case PE_DockWindowSeparator: { - setColorsButton (p, cg); - p->fillRect (r, p->backgroundColor()); - p->setPen (p->pen().color()); - if (flags & Style_Horizontal) - p->drawLine (r.center().x(), r.top()+basicLineWidth, r.center().x(), r.bottom()-basicLineWidth); - else - p->drawLine (r.left()+basicLineWidth, r.center().y(), r.right()-basicLineWidth, r.center().y()); - break; - } - - - case PE_MenuItemIndicatorFrame: - { - // Draw nothing - break; - } - break; - case PE_MenuItemIndicatorIconFrame: - { - int x, y, w, h; - r.rect( &x, &y, &w, &h ); - int checkcol = styleHint(SH_MenuIndicatorColumnWidth, ceData, elementFlags, opt, NULL, NULL); - TQRect cr = visualRect( TQRect(x, y, checkcol, h), r ); - drawRect (p, cr, 0, false); - break; - } - case PE_MenuItemIndicatorCheck: - { - int x, y, w, h; - r.rect( &x, &y, &w, &h ); - int checkcol = styleHint(SH_MenuIndicatorColumnWidth, ceData, elementFlags, opt, NULL, NULL); - - TQRect cr = visualRect( TQRect(x, y, checkcol, h), r ); - bool reverse = TQApplication::reverseLayout(); - int cx = reverse ? x+w - checkcol : x; - TQRect rc (cx, y, checkcol, h); - addOffset (&rc, 2*basicLineWidth); - TQPoint center = rc.center(); - if (rc.width() > rc.height()) - rc.setWidth (rc.height()); - else - rc.setHeight (rc.width()); - rc.moveCenter (center); - - p->drawLine (rc.topLeft(), rc.bottomRight()); - p->drawLine (rc.topRight(), rc.bottomLeft()); - break; - } - - - // ARROWS - // ------------------------------------------------------------------- - case PE_ArrowUp: - case PE_ArrowDown: - case PE_ArrowRight: - case PE_ArrowLeft: - case PE_SpinWidgetPlus: - case PE_SpinWidgetUp: - case PE_SpinWidgetMinus: - case PE_SpinWidgetDown: { - setColorsNormal (p, cg, flags); - drawArrow (p, r, pe); - break; - } - - default: { - TDEStyle::drawPrimitive( pe, p, ceData, elementFlags, r, cg, flags, opt ); - } - } -} - - -void HighContrastStyle::drawTDEStylePrimitive (TDEStylePrimitive kpe, - TQPainter* p, - const TQStyleControlElementData &ceData, - ControlElementFlags elementFlags, - const TQRect &r, - const TQColorGroup &cg, - SFlags flags, - const TQStyleOption &opt, - const TQWidget* widget ) const -{ - switch ( kpe ) - { - // TOOLBAR HANDLE - // ------------------------------------------------------------------- - case KPE_ToolBarHandle: - case KPE_DockWindowHandle: - case KPE_GeneralHandle: - { - setColorsButton (p, cg); - p->fillRect (r, p->backgroundColor()); - p->setBrush (TQBrush (p->pen().color(), Qt::BDiagPattern)); - drawRoundRect (p, r); - break; - } - - - // SLIDER GROOVE - // ------------------------------------------------------------------- - case KPE_SliderGroove: { - setColorsText (p, cg, flags); - TQRect r2 (r); - if (ceData.widgetObjectTypes.contains(TQSLIDER_OBJECT_NAME_STRING)) - { - if (ceData.orientation == TQt::Horizontal) - { - if (r2.height() > 5*basicLineWidth) - { - r2.setHeight (5*basicLineWidth); - r2.moveCenter (r.center()); - } - } - else - { - if (r2.width() > 5*basicLineWidth) - { - r2.setWidth (5*basicLineWidth); - r2.moveCenter (r.center()); - } - } - } - - drawRoundRect (p, r2); - break; - } - - // SLIDER HANDLE - // ------------------------------------------------------------------- - case KPE_SliderHandle: { - setColorsHighlight (p, cg, flags); - drawRoundRect (p, r); - break; - } - - case KPE_ListViewExpander: { - // TODO There is no pixelMetric associated with the - // ListViewExpander in TDEStyle. - // To have a properly large expander, the CC_ListView case of - // drawComplexControl should be handled. - // Probably it would be better to add a KPM_ListViewExpander metric - // to the TDEStyle TDEStylePixelMetric enum, and have the TDEStyle - // drawComplexControl handle it. - TQ_PrimitiveElement direction; - if (flags & Style_On) { // Collapsed = On - direction = PE_ArrowRight; - - } else { - direction = PE_ArrowDown; - } - setColorsText (p, cg, flags); - drawArrow (p, r, direction); - break; - } - case KPE_ListViewBranch: - // TODO Draw (thick) dotted line. Check tdestyle.cpp - // Fall down for now - default: - TDEStyle::drawTDEStylePrimitive( kpe, p, ceData, elementFlags, r, cg, flags, opt, widget); - } -} - - -void HighContrastStyle::drawControl (TQ_ControlElement element, - TQPainter *p, - const TQStyleControlElementData &ceData, - ControlElementFlags elementFlags, - const TQRect &r, - const TQColorGroup &cg, - SFlags flags, - const TQStyleOption& opt, - const TQWidget *widget ) const -{ - switch (element) - { - // TABS - // ------------------------------------------------------------------- - case CE_ToolBoxTab: { - setColorsNormal (p, cg, flags, Style_Selected); - drawRoundRect (p, r); - break; - } - - case CE_TabBarTab: { - setColorsNormal (p, cg, flags, Style_Selected); - drawRoundRect (p, r); - - TQTabBar::Shape shape = ceData.tabBarData.shape; - if (shape == TQTabBar::TriangularBelow || - shape == TQTabBar::RoundedBelow) { - p->fillRect (r.left(), r.top(), - r.width(), 2*basicLineWidth, - p->pen().color()); - p->fillRect (r.left()+basicLineWidth, - flags & Style_Selected ? basicLineWidth : 2*basicLineWidth, - r.width()-2*basicLineWidth, - basicLineWidth, - p->backgroundColor()); - } else { - p->fillRect (r.left(), r.bottom()-2*basicLineWidth+1, - r.width(), 2*basicLineWidth, - p->pen().color()); - p->fillRect (r.left()+basicLineWidth, - r.bottom()-2*basicLineWidth+1, - r.width()-2*basicLineWidth, - flags & Style_Selected ? 2*basicLineWidth : basicLineWidth, - p->backgroundColor()); - } - break; - } - - - // PUSHBUTTON - // ------------------------------------------------------------------- - case CE_PushButton: { - TQPushButton *button = (TQPushButton*) widget; - TQRect br = r; - bool btnDefault = (elementFlags & CEF_IsDefault); - - if (( btnDefault || (elementFlags & CEF_AutoDefault) ) && (elementFlags & CEF_IsEnabled)) { - // Compensate for default indicator - static int di = pixelMetric( PM_ButtonDefaultIndicator, ceData, elementFlags ); - addOffset (&br, di); - } - - if ( btnDefault && (elementFlags & CEF_IsEnabled)) - drawPrimitive( PE_ButtonDefault, p, ceData, elementFlags, r, cg, flags ); - - drawPrimitive( PE_ButtonCommand, p, ceData, elementFlags, br, cg, flags ); - - break; - } - - - // LABEL - // ------------------------------------------------------------------- - case CE_ProgressBarLabel: - case CE_TabBarLabel: - case CE_RadioButtonLabel: - case CE_CheckBoxLabel: - case CE_ToolButtonLabel: - case CE_PushButtonLabel: { - const TQPixmap* pixmap = 0; - TQPixmap icon; - TQString text; - bool popup = false; - - TQIconSet::Mode mode = flags & Style_Enabled ? ((flags & Style_HasFocus) ? TQIconSet::Active : TQIconSet::Normal) : TQIconSet::Disabled; - TQIconSet::State state = flags & Style_On ? TQIconSet::On : TQIconSet::Off; - - int x, y, w, h; - r.rect( &x, &y, &w, &h ); - - if (element == CE_ProgressBarLabel) { - text = ceData.progressText; - setColorsNormal (p, cg, flags); - } - else if (element == CE_TabBarLabel) { - if (!opt.isDefault()) { - TQTab* tab = opt.tab(); - text = tab->text(); - } - setColorsNormal (p, cg, flags, Style_Selected); - } - else if (element == CE_ToolButtonLabel) { - text = ceData.text; - pixmap = (ceData.fgPixmap.isNull())?NULL:&ceData.fgPixmap; - if (!ceData.iconSet.isNull()) - icon = ceData.iconSet.pixmap (TQIconSet::Small, mode, state); - popup = (elementFlags & CEF_HasPopupMenu); - setColorsButton (p, cg, flags); - } - else if (element == CE_PushButtonLabel) { - text = ceData.text; - pixmap = (ceData.fgPixmap.isNull())?NULL:&ceData.fgPixmap; - if (!ceData.iconSet.isNull()) - icon = ceData.iconSet.pixmap (TQIconSet::Small, mode, state); - popup = (elementFlags & CEF_HasPopupMenu); - setColorsButton (p, cg, flags); - } - else { - pixmap = (ceData.fgPixmap.isNull())?NULL:&ceData.fgPixmap; - text = ceData.text; - setColorsNormal (p, cg); - } - - // Does the button have a popup menu? - if (popup) { - int dx = pixelMetric (PM_MenuButtonIndicator, ceData, elementFlags, widget); - drawArrow (p, TQRect(x + w - dx - 2, y + 2, dx, h - 4), PE_ArrowDown); - w -= dx; - } - - // Draw the icon if there is one - if (!icon.isNull()) - { - // Center the iconset if there's no text or pixmap - if (text.isEmpty() && ((pixmap == 0) || pixmap->isNull())) - p->drawPixmap (x + (w - icon.width()) / 2, - y + (h - icon.height()) / 2, icon); - else - p->drawPixmap (x + 4, y + (h - icon.height()) / 2, icon); - - int pw = icon.width(); - x += pw + 4; - w -= pw + 4; - } - - // Draw a focus rect if the button has focus - if (flags & Style_HasFocus) - drawPrimitive (PE_FocusRect, p, ceData, elementFlags, r, cg, flags, TQStyleOption (p->backgroundColor())); - - // Draw the label itself - TQColor color = p->pen().color(); - drawItem (p, TQRect(x, y, w, h), - (element == CE_RadioButtonLabel || element == CE_CheckBoxLabel || element == CE_ProgressBarLabel) ? AlignVCenter|AlignLeft|ShowPrefix : AlignCenter|ShowPrefix, - cg, flags & Style_Enabled, pixmap, text, -1, &color); - break; - } - - // MENUBAR BACKGROUND - // ------------------------------------------------------------------- - case CE_MenuBarEmptyArea: - { - p->fillRect (r, cg.background()); - break; - } - - // DOCKWINDOW BACKGROUND - // ------------------------------------------------------------------- - case CE_DockWindowEmptyArea: - { - p->fillRect (r, cg.button()); - break; - } - - // MENUBAR ITEM - // ------------------------------------------------------------------- - case CE_MenuBarItem: { - setColorsNormal (p, cg, flags, Style_Active|Style_MouseOver); - p->fillRect (r, p->backgroundColor ()); - if (!opt.isDefault()) { - TQMenuItem *mi = opt.menuItem(); - - TQColor color = p->pen().color(); - drawItem (p, r, AlignCenter | AlignVCenter | ShowPrefix - | DontClip | SingleLine, cg, flags, - mi->pixmap(), mi->text(), -1, &color); - } - break; - } - - // CHECKBOX - // ------------------------------------------------------------------- - case CE_CheckBox: { - drawPrimitive (PE_Indicator, p, ceData, elementFlags, r, cg, flags); - break; - } - - // RADIOBUTTON - // ------------------------------------------------------------------- - case CE_RadioButton: { - drawPrimitive (PE_ExclusiveIndicator, p, ceData, elementFlags, r, cg, flags); - break; - } - - // PROGRESSBAR - // ------------------------------------------------------------------- - case CE_ProgressBarGroove: { - setColorsText (p, cg, flags); - TQRect r2 (r); - r2.setLeft (p->boundingRect (r, AlignVCenter|AlignLeft|ShowPrefix, ceData.progressText).right() - + 4*basicLineWidth); - drawRoundRect (p, r2); - break; - } - case CE_ProgressBarContents: { - TQRect r2 (r); - r2.setLeft (p->boundingRect (r, AlignVCenter|AlignLeft|ShowPrefix, ceData.progressText).right() - + 4*basicLineWidth); - long progress = r2.width() * ceData.currentStep; - if (ceData.totalSteps > 0) - { - r2.setWidth (progress / ceData.totalSteps); - } - else - { - int width = r2.width() / 5; - int left = ceData.currentStep % (2*(r2.width() - width)); - if (left > r2.width() - width) - left = 2*(r2.width() - width) - left; - r2.setLeft (r2.left() + left); - r2.setWidth (width); - } - setColorsHighlight (p, cg, flags); - if (r2.width() > 0) - drawRoundRect (p, r2); - break; - } - - // POPUPMENU ITEM - // ------------------------------------------------------------------- - case CE_PopupMenuItem: { - setColorsNormal (p, cg, flags, Style_Active|Style_MouseOver); - p->fillRect (r, p->backgroundColor ()); - - TQMenuItem *mi = opt.menuItem(); - if (!mi) - break; - - int tab = opt.tabWidth(); - int checkcol = opt.maxIconWidth(); - bool checkable = (elementFlags & CEF_IsCheckable); - bool reverse = TQApplication::reverseLayout(); - int x, y, w, h; - r.rect( &x, &y, &w, &h ); - - if ( checkable ) - checkcol = QMAX( checkcol, 20 ); - - // Are we a menu item separator? - if ( mi->isSeparator() ) { - p->drawLine (r.left() + 1, r.center().y(), r.right(), r.center().y()); - break; - } - - // Do we have an icon? - if ( mi->iconSet() && !mi->iconSet()->isNull() ) { - TQIconSet::Mode mode; - TQRect cr = visualRect( TQRect(x, y, checkcol, h), r ); - - // Select the correct icon from the iconset - if (!(flags & Style_Enabled)) - mode = TQIconSet::Disabled; - else if (flags & Style_Active) - mode = TQIconSet::Active; - else - mode = TQIconSet::Normal; - - // Draw the icon - TQPixmap pixmap = mi->iconSet()->pixmap( TQIconSet::Small, mode ); - TQRect pmr( 0, 0, pixmap.width(), pixmap.height() ); - pmr.moveCenter( cr.center() ); - p->drawPixmap( pmr.topLeft(), pixmap ); - - // Do we have an icon and are checked at the same time? - // Then draw a square border around the icon - if ( checkable && mi->isChecked() ) - { - drawPrimitive(PE_MenuItemIndicatorIconFrame, p, ceData, elementFlags, r, cg, flags, opt); - } - } - - // Are we checked? (This time without an icon) - else if ( checkable && mi->isChecked() ) { - drawPrimitive(PE_MenuItemIndicatorCheck, p, ceData, elementFlags, r, cg, flags, opt); - } - - // Time to draw the menu item label... - int xm = itemFrame + checkcol + itemHMargin; // X position margin - - int xp = reverse ? // X position - x + tab + rightBorder + itemHMargin + itemFrame - 1 : - x + xm; - - // Label width (minus the width of the accelerator portion) - int tw = w - xm - tab - arrowHMargin - itemHMargin * 3 - itemFrame + 1; - - // Does the menu item draw it's own label? - if ( mi->custom() ) { - int m = itemVMargin; - // Save the painter state in case the custom - // paint method changes it in some way - p->save(); - mi->custom()->paint( p, cg, flags & Style_Active, flags & Style_Enabled, xp, y+m, tw, h-2*m ); - p->restore(); - } - else { - // The menu item doesn't draw it's own label - TQString s = mi->text(); - - // Does the menu item have a text label? - if ( !s.isNull() ) { - int t = s.find( '\t' ); - int m = itemVMargin; - int text_flags = AlignVCenter | ShowPrefix | DontClip | SingleLine; - text_flags |= reverse ? AlignRight : AlignLeft; - - // Does the menu item have a tabstop? (for the accelerator text) - if ( t >= 0 ) { - int tabx = reverse ? x + rightBorder + itemHMargin + itemFrame : - x + w - tab - rightBorder - itemHMargin - itemFrame; - - // Draw the right part of the label (accelerator text) - p->drawText( tabx, y+m, tab, h-2*m, text_flags, s.mid( t+1 ) ); - s = s.left( t ); - } - - // Draw the left part of the label (or the whole label - // if there's no accelerator) - - p->drawText( xp, y+m, tw, h-2*m, text_flags, s, t ); - - } - - // The menu item doesn't have a text label - // Check if it has a pixmap instead - else if ( mi->pixmap() ) { - TQPixmap *pixmap = mi->pixmap(); - - // Draw the pixmap - if ( pixmap->depth() == 1 ) - p->setBackgroundMode( Qt::OpaqueMode ); - - int diffw = ( ( w - pixmap->width() ) / 2 ) - + ( ( w - pixmap->width() ) % 2 ); - p->drawPixmap( x+diffw, y+itemFrame, *pixmap ); - - if ( pixmap->depth() == 1 ) - p->setBackgroundMode( Qt::TransparentMode ); - } - } - - // Does the menu item have a submenu? - if ( mi->popup() ) { - TQ_PrimitiveElement arrow = reverse ? PE_ArrowLeft : PE_ArrowRight; - int dim = pixelMetric(PM_MenuButtonIndicator, ceData, elementFlags); - TQRect vr = visualRect( TQRect( x + w - arrowHMargin - 2*itemFrame - dim, - y + h / 2 - dim / 2, dim, dim), r ); - - // Draw an arrow at the far end of the menu item - drawArrow (p, vr, arrow); - } - break; - } - - default: - TDEStyle::drawControl(element, p, ceData, elementFlags, r, cg, flags, opt, widget); - } -} - -void HighContrastStyle::drawControlMask (TQ_ControlElement element, - TQPainter *p, - const TQStyleControlElementData &ceData, - ControlElementFlags elementFlags, - const TQRect &r, - const TQStyleOption &opt, - const TQWidget *w) const -{ - switch (element) { - case CE_PushButton: - case CE_ToolBoxTab: - case CE_TabBarTab: - case CE_ProgressBarLabel: - case CE_TabBarLabel: - case CE_RadioButtonLabel: - case CE_CheckBoxLabel: - case CE_ToolButtonLabel: - case CE_PushButtonLabel: - case CE_MenuBarEmptyArea: - case CE_MenuBarItem: - case CE_PopupMenuItem: { - p->fillRect (r, color0); - break; - } - - default: { - TDEStyle::drawControlMask (element, p, ceData, elementFlags, r, opt, w); - } - } -} - -// Helper to find the next sibling that's not hidden -// Lifted from tdestyle.cpp -static TQListViewItem* nextVisibleSibling(TQListViewItem* item) -{ - TQListViewItem* sibling = item; - do - { - sibling = sibling->nextSibling(); - } - while (sibling && !sibling->isVisible()); - - return sibling; -} - -void HighContrastStyle::drawComplexControl (TQ_ComplexControl control, - TQPainter *p, - const TQStyleControlElementData &ceData, - ControlElementFlags elementFlags, - const TQRect &r, - const TQColorGroup &cg, - SFlags flags, - SCFlags controls, - SCFlags active, - const TQStyleOption& opt, - const TQWidget *widget ) const -{ - switch(control) - { - // COMBOBOX - // ------------------------------------------------------------------- - case CC_ComboBox: { - setColorsText (p, cg, flags); - drawRoundRect (p, r); - - TQRect r2 = TQStyle::visualRect (querySubControlMetrics (CC_ComboBox, ceData, elementFlags, SC_ComboBoxArrow, TQStyleOption::Default, widget), ceData, elementFlags); - if (flags & Style_HasFocus) { - TQRect r3 (r); - if (r2.left() > 0) - r3.setRight (r2.left()+basicLineWidth-1); - else - r3.setLeft (r2.right()-basicLineWidth+1); - - drawPrimitive (PE_FocusRect, p, ceData, elementFlags, r3, cg, flags, TQStyleOption (p->backgroundColor())); - } - - setColorsButton (p, cg, flags); - // Draw arrow if required - if (controls & SC_ComboBoxArrow) { - drawRoundRect (p, r2); - drawArrow (p, r2, PE_ArrowDown, 2*basicLineWidth); - } - - setColorsText (p, cg, flags); - break; - } - - // SPINWIDGET - // ------------------------------------------------------------------- - case CC_SpinWidget: { - if (controls & SC_SpinWidgetFrame) { - setColorsText (p, cg, flags); - drawRoundRect (p, r); - if (flags & Style_HasFocus) - drawPrimitive(PE_FocusRect, p, ceData, elementFlags, r, cg, flags, TQStyleOption (p->backgroundColor())); - } - - setColorsButton (p, cg, flags); - // Draw arrows if required - if (controls & SC_SpinWidgetDown) { - TQRect r2 = TQStyle::visualRect (querySubControlMetrics ((TQ_ComplexControl)CC_SpinWidget, ceData, elementFlags, SC_SpinWidgetDown, TQStyleOption::Default, widget), ceData, elementFlags); - drawRoundRect (p, r2); - drawArrow (p, r2, PE_SpinWidgetDown, 2*basicLineWidth); - } - if (controls & SC_SpinWidgetUp) { - TQRect r2 = TQStyle::visualRect (querySubControlMetrics ((TQ_ComplexControl)CC_SpinWidget, ceData, elementFlags, SC_SpinWidgetUp, TQStyleOption::Default, widget), ceData, elementFlags); - drawRoundRect (p, r2); - drawArrow (p, r2, PE_SpinWidgetUp, 2*basicLineWidth); - } - - setColorsText (p, cg, flags); - break; - } - - // TOOLBUTTON - // ------------------------------------------------------------------- - case CC_ToolButton: { - setColorsButton (p, cg, flags); - p->fillRect (r, p->backgroundColor ()); - - TQRect button, menuarea; - button = querySubControlMetrics(control, ceData, elementFlags, SC_ToolButton, opt, widget); - menuarea = querySubControlMetrics(control, ceData, elementFlags, SC_ToolButtonMenu, opt, widget); - - SFlags bflags = flags, - mflags = flags; - - if (active & SC_ToolButton) - bflags |= Style_Down; - if (active & SC_ToolButtonMenu) - mflags |= Style_Down; - - if (controls & SC_ToolButton) - { - // If we're pressed, on, or raised... - if (bflags & (Style_Down | Style_On | Style_Raised)) - drawPrimitive(PE_ButtonTool, p, ceData, elementFlags, button, cg, bflags, opt); - - // Check whether to draw a background pixmap - else if ( !ceData.parentWidgetData.bgPixmap.isNull() ) - { - TQPixmap pixmap = ceData.parentWidgetData.bgPixmap; - p->drawTiledPixmap( r, pixmap, ceData.pos ); - } - } - - // Draw a toolbutton menu indicator if required - if (controls & SC_ToolButtonMenu) - { - if (mflags & (Style_Down | Style_On | Style_Raised)) - drawPrimitive(PE_ButtonDropDown, p, ceData, elementFlags, menuarea, cg, mflags, opt); - drawArrow (p, menuarea, PE_ArrowDown); - } - - if ((elementFlags & CEF_HasFocus) && !(elementFlags & CEF_HasFocusProxy)) { - TQRect fr = ceData.rect; - addOffset (&fr, 3); - drawPrimitive(PE_FocusRect, p, ceData, elementFlags, fr, cg, flags, TQStyleOption (p->backgroundColor())); - } - - break; - } - - // LISTVIEW - // ------------------------------------------------------------------- - case CC_ListView: { - /* - * Sigh... Lifted and modified from tdestyle.cpp - */ - /* - * Many thanks to TrollTech AS for donating CC_ListView from TQWindowsStyle. - * CC_ListView code is Copyright (C) 1998-2000 TrollTech AS. - */ - - // Paint the icon and text. - if ( controls & SC_ListView ) - TQCommonStyle::drawComplexControl( control, p, ceData, elementFlags, r, cg, flags, controls, active, opt, widget ); - - // If we're have a branch or are expanded... - if ( controls & (SC_ListViewBranch | SC_ListViewExpand) ) - { - // If no list view item was supplied, break - if (opt.isDefault()) - break; - - TQListViewItem *item = opt.listViewItem(); - TQListViewItem *child = item->firstChild(); - - int y = r.y(); - int c; // dotline vertice count - int dotoffset = 0; - TQPointArray dotlines; - - if ( active == SC_All && controls == SC_ListViewExpand ) { - // We only need to draw a vertical line - c = 2; - dotlines.resize(2); - dotlines[0] = TQPoint( r.right(), r.top() ); - dotlines[1] = TQPoint( r.right(), r.bottom() ); - - } else { - - int linetop = 0, linebot = 0; - // each branch needs at most two lines, ie. four end points - dotoffset = (item->itemPos() + item->height() - y) % 2; - dotlines.resize( item->childCount() * 4 ); - c = 0; - - // skip the stuff above the exposed rectangle - while ( child && y + child->height() <= 0 ) - { - y += child->totalHeight(); - child = nextVisibleSibling(child); - } - - int bx = r.width() / 2; - - // paint stuff in the magical area - TQListView* v = item->listView(); - int lh = QMAX( p->fontMetrics().height() + 2 * v->itemMargin(), - TQApplication::globalStrut().height() ); - if ( lh % 2 > 0 ) - lh++; - - // Draw all the expand/close boxes... - TQRect boxrect; - TQStyle::StyleFlags boxflags; - while ( child && y < r.height() ) - { - linebot = y + lh/2; - if ( (child->isExpandable() || child->childCount()) && - (child->height() > 0) ) - { - int h = QMIN(lh, 24) - 4*basicLineWidth; - if (h < 10) - h = 10; - else - h &= ~1; // Force an even number of pixels - - // The primitive requires a rect. - boxrect = TQRect( bx-h/2, linebot-h/2, h, h ); - boxflags = child->isOpen() ? TQStyle::Style_Off : TQStyle::Style_On; - - // TDEStyle extension: Draw the box and expand/collapse indicator - drawTDEStylePrimitive( KPE_ListViewExpander, p, ceData, elementFlags, boxrect, cg, boxflags, opt, NULL ); - - // dotlinery - p->setPen( cg.mid() ); - dotlines[c++] = TQPoint( bx, linetop ); - dotlines[c++] = TQPoint( bx, linebot - 5 ); - dotlines[c++] = TQPoint( bx + 5, linebot ); - dotlines[c++] = TQPoint( r.width(), linebot ); - linetop = linebot + 5; - } else { - // just dotlinery - dotlines[c++] = TQPoint( bx+1, linebot ); - dotlines[c++] = TQPoint( r.width(), linebot ); - } - - y += child->totalHeight(); - child = nextVisibleSibling(child); - } - - if ( child ) // there's a child to draw, so move linebot to edge of rectangle - linebot = r.height(); - - if ( linetop < linebot ) - { - dotlines[c++] = TQPoint( bx, linetop ); - dotlines[c++] = TQPoint( bx, linebot ); - } - } - - // Draw all the branches... - static int thickness = kPixelMetric( KPM_ListViewBranchThickness, ceData, elementFlags ); - int line; // index into dotlines - TQRect branchrect; - TQStyle::StyleFlags branchflags; - for( line = 0; line < c; line += 2 ) - { - // assumptions here: lines are horizontal or vertical. - // lines always start with the numerically lowest - // coordinate. - - // point ... relevant coordinate of current point - // end ..... same coordinate of the end of the current line - // other ... the other coordinate of the current point/line - if ( dotlines[line].y() == dotlines[line+1].y() ) - { - // Horizontal branch - int end = dotlines[line+1].x(); - int point = dotlines[line].x(); - int other = dotlines[line].y(); - - branchrect = TQRect( point, other-(thickness/2), end-point, thickness ); - branchflags = TQStyle::Style_Horizontal; - - // TDEStyle extension: Draw the horizontal branch - drawTDEStylePrimitive( KPE_ListViewBranch, p, ceData, elementFlags, branchrect, cg, branchflags, opt, NULL ); - - } else { - // Vertical branch - int end = dotlines[line+1].y(); - int point = dotlines[line].y(); - int other = dotlines[line].x(); - int pixmapoffset = ((point & 1) != dotoffset ) ? 1 : 0; - - branchrect = TQRect( other-(thickness/2), point, thickness, end-point ); - if (!pixmapoffset) // ### Hackish - used to hint the offset - branchflags = TQStyle::Style_NoChange; - else - branchflags = TQStyle::Style_Default; - - // TDEStyle extension: Draw the vertical branch - drawTDEStylePrimitive( KPE_ListViewBranch, p, ceData, elementFlags, branchrect, cg, branchflags, opt, NULL ); - } - } - } - break; - } - - default: - TDEStyle::drawComplexControl(control, p, ceData, elementFlags, - r, cg, flags, controls, active, opt, widget); - break; - } -} - -void HighContrastStyle::drawComplexControlMask(TQ_ComplexControl c, - TQPainter *p, - const TQStyleControlElementData &ceData, - const ControlElementFlags elementFlags, - const TQRect &r, - const TQStyleOption &o, - const TQWidget *w) const -{ - switch (c) { - case CC_SpinWidget: - case CC_ToolButton: - case CC_ComboBox: { - p->fillRect (r, color0); - break; - } - default: { - TDEStyle::drawComplexControlMask (c, p, ceData, elementFlags, r, o, w); - } - } -} - -void HighContrastStyle::drawItem( TQPainter *p, - const TQRect &r, - int flags, - const TQColorGroup &cg, - bool enabled, - const TQPixmap *pixmap, - const TQString &text, - int len, - const TQColor *penColor ) const -{ - p->save(); - - // make the disabled things use the cross-line - TQFont font = p->font(); - font.setStrikeOut (!enabled); - p->setFont (font); - - enabled = true; //do not ghost it in Qt - - TDEStyle::drawItem (p, r, flags, cg, enabled, pixmap, text, len, penColor); - - p->restore(); -} - -TQRect HighContrastStyle::querySubControlMetrics( TQ_ComplexControl control, - const TQStyleControlElementData &ceData, - ControlElementFlags elementFlags, - SubControl subcontrol, - const TQStyleOption& opt, - const TQWidget* widget ) const -{ - switch (control) - { - case CC_ComboBox : { - int arrow = pixelMetric (PM_ScrollBarExtent, ceData, elementFlags, widget); - switch (subcontrol) - { - case SC_ComboBoxFrame: - return TQRect (0, 0, ceData.rect.width(), ceData.rect.height()); - case SC_ComboBoxArrow: - return TQRect (ceData.rect.width() - arrow, 0, arrow, ceData.rect.height()); - case SC_ComboBoxEditField: - return TQRect (2*basicLineWidth, 2*basicLineWidth, - ceData.rect.width() - arrow - 3*basicLineWidth, ceData.rect.height() - 4*basicLineWidth); - - default: break; - } - break; - } - case CC_SpinWidget : { - int arrow = pixelMetric (PM_ScrollBarExtent, ceData, elementFlags, 0); - switch (subcontrol) - { - case SC_SpinWidgetFrame: - return TQRect (0, 0, ceData.rect.width(), ceData.rect.height()); - case SC_SpinWidgetButtonField: - return TQRect (ceData.rect.width() - arrow, 0, arrow, ceData.rect.height()); - case SC_SpinWidgetUp: - return TQRect (ceData.rect.width() - arrow, 0, arrow, ceData.rect.height()/2); - case SC_SpinWidgetDown: - return TQRect (ceData.rect.width() - arrow, ceData.rect.height()/2, - arrow, ceData.rect.height()-ceData.rect.height()/2); - case SC_SpinWidgetEditField: - return TQRect (2*basicLineWidth, 2*basicLineWidth, - ceData.rect.width() - arrow - 3*basicLineWidth, ceData.rect.height() - 4*basicLineWidth); - - default: break; - } - break; - } - - default: break; - } - - return TDEStyle::querySubControlMetrics (control, ceData, elementFlags, subcontrol, opt, widget); -} - - -int HighContrastStyle::pixelMetric(PixelMetric m, const TQStyleControlElementData &ceData, ControlElementFlags elementFlags, const TQWidget *widget) const -{ - //### TODO: Use the tab metrics changes from Ker. - switch(m) - { - // BUTTONS - // ------------------------------------------------------------------- - case PM_ButtonMargin: // Space btw. frame and label - return 2*basicLineWidth; - - case PM_ButtonDefaultIndicator: { - if ((widget != 0) && !(elementFlags & CEF_IsEnabled)) - return 0; - else - return 2*basicLineWidth; - } - - case PM_ButtonShiftHorizontal: - case PM_ButtonShiftVertical: - return 0; - - case PM_ScrollBarExtent: { - int h = 0; - if (widget != 0) - h = (2*TQFontMetrics(ceData.font).lineSpacing())/3; - - if (h > 9*basicLineWidth+4) - return h; - else - return 9*basicLineWidth+4; - } - - case PM_DefaultFrameWidth: { - if (widget && (ceData.widgetObjectTypes.contains (TQLINEEDIT_OBJECT_NAME_STRING) || ceData.widgetObjectTypes.contains (TQTEXTEDIT_OBJECT_NAME_STRING))) - return 2*basicLineWidth; - else - return basicLineWidth; - } - - case PM_SpinBoxFrameWidth: { - return 2*basicLineWidth; - } - - case PM_MenuButtonIndicator: { // Arrow width - int h = 0; - if (widget != 0) - h = TQFontMetrics(ceData.font).lineSpacing()/2; - - if (h > 3*basicLineWidth) - return h; - else - return 3*basicLineWidth; - } - - // CHECKBOXES / RADIO BUTTONS - // ------------------------------------------------------------------- - case PM_ExclusiveIndicatorWidth: // Radiobutton size - case PM_ExclusiveIndicatorHeight: - case PM_IndicatorWidth: // Checkbox size - case PM_IndicatorHeight: { - int h = 0; - if (widget != 0) - h = TQFontMetrics(ceData.font).lineSpacing()-2*basicLineWidth; - - if (h > 6*basicLineWidth) - return h; - else - return 6*basicLineWidth; - } - - case PM_DockWindowSeparatorExtent: { - return 2*basicLineWidth + 1; - } - case PM_DockWindowHandleExtent: { - int w = 0; - if (widget != 0) - w = TQFontMetrics(ceData.font).lineSpacing()/4; - if (w > 5*basicLineWidth) - return w; - else - return 5*basicLineWidth; - } - - case PM_MenuIndicatorFrameHBorder: - case PM_MenuIndicatorFrameVBorder: - case PM_MenuIconIndicatorFrameHBorder: - case PM_MenuIconIndicatorFrameVBorder: - return 0; - - default: - return TDEStyle::pixelMetric(m, ceData, elementFlags, widget); - } -} - -int HighContrastStyle::kPixelMetric( TDEStylePixelMetric kpm, const TQStyleControlElementData &ceData, ControlElementFlags elementFlags, const TQWidget *widget ) const -{ - switch (kpm) { - case KPM_ListViewBranchThickness: - // XXX Proper support of thick branches requires reimplementation of - // the drawTDEStylePrimitive KPE_ListViewBranch case. - return basicLineWidth; - default: - return TDEStyle::kPixelMetric(kpm, ceData, elementFlags, widget); - } -} - -TQSize HighContrastStyle::sizeFromContents( ContentsType contents, - const TQStyleControlElementData &ceData, - ControlElementFlags elementFlags, - const TQSize &contentSize, - const TQStyleOption& opt, - const TQWidget* widget ) const -{ - switch (contents) - { - // PUSHBUTTON SIZE - // ------------------------------------------------------------------ - case CT_PushButton: { - const TQPushButton* button = (const TQPushButton*) widget; - int w = contentSize.width(); - int h = contentSize.height(); - int bm = pixelMetric( PM_ButtonMargin, ceData, elementFlags, widget ); - int fw = pixelMetric( PM_DefaultFrameWidth, ceData, elementFlags, widget ) * 2; - - w += bm + fw + 6; // ### Add 6 to make way for bold font. - h += bm + fw; - - // Ensure we stick to standard width and heights. - if (( button->isDefault() || button->autoDefault() ) && (button->isEnabled())) { - if ( w < 80 && !button->text().isEmpty() ) - w = 80; - - // Compensate for default indicator - int di = pixelMetric( PM_ButtonDefaultIndicator, ceData, elementFlags ); - w += di * 2; - h += di * 2; - } - - if ( h < 22 ) - h = 22; - - return TQSize( w + basicLineWidth*2, h + basicLineWidth*2 ); - } - - // TOOLBUTTON SIZE - // ----------------------------------------------------------------- - case CT_ToolButton: { - int w = contentSize.width(); - int h = contentSize.height(); - return TQSize(w + basicLineWidth*2 + 6, h + basicLineWidth*2 + 5); - break; - } - - // COMBOBOX SIZE - // ----------------------------------------------------------------- - case CT_ComboBox: { - const TQComboBox *cb = static_cast< const TQComboBox* > (widget); - int borderSize = (cb->editable() ? 4 : 2) * basicLineWidth; - int arrowSize = pixelMetric (PM_ScrollBarExtent, ceData, elementFlags, cb); - return TQSize(borderSize + basicLineWidth + arrowSize, borderSize) + contentSize; - } - - // POPUPMENU ITEM SIZE - // ----------------------------------------------------------------- - case CT_PopupMenuItem: { - if ( ! widget || opt.isDefault() ) - return contentSize; - - const TQPopupMenu *popup = (const TQPopupMenu *) widget; - bool checkable = popup->isCheckable(); - TQMenuItem *mi = opt.menuItem(); - int maxpmw = opt.maxIconWidth(); - int w = contentSize.width(), h = contentSize.height(); - - if ( mi->custom() ) { - w = mi->custom()->sizeHint().width(); - h = mi->custom()->sizeHint().height(); - if ( ! mi->custom()->fullSpan() ) - h += 2*itemVMargin + 2*itemFrame; - } - else if ( mi->widget() ) { - } else if ( mi->isSeparator() ) { - w = 10; // Arbitrary - h = 4; - } - else { - if ( mi->pixmap() ) - h = QMAX( h, mi->pixmap()->height() + 2*itemFrame ); - else { - // Ensure that the minimum height for text-only menu items - // is the same as the icon size used by KDE. - h = QMAX( h, 16 + 2*itemFrame ); - h = QMAX( h, popup->fontMetrics().height() - + 2*itemVMargin + 2*itemFrame ); - } - - if ( mi->iconSet() && ! mi->iconSet()->isNull() ) - h = QMAX( h, mi->iconSet()->pixmap( - TQIconSet::Small, TQIconSet::Normal).height() + - 2 * itemFrame ); - } - - if ( ! mi->text().isNull() && mi->text().find('\t') >= 0 ) - w += 12; - else if ( mi->popup() ) - w += 2 * arrowHMargin; - - if ( maxpmw ) - w += maxpmw + 6; - if ( checkable && maxpmw < 20 ) - w += 20 - maxpmw; - if ( checkable || maxpmw > 0 ) - w += 12; - - w += rightBorder; - - return TQSize( w, h ); - } - - - // LINEDIT SIZE - // ----------------------------------------------------------------- - case CT_LineEdit: { - return contentSize + TQSize (4*basicLineWidth, 4*basicLineWidth); - } - - - default: - return TDEStyle::sizeFromContents( contents, ceData, elementFlags, contentSize, opt, widget ); - } -} - -TQRect HighContrastStyle::subRect (SubRect subrect, const TQStyleControlElementData &ceData, const ControlElementFlags elementFlags, const TQWidget * widget) const -{ - switch (subrect) { - case SR_ProgressBarGroove: - case SR_ProgressBarContents: - case SR_ProgressBarLabel: - return ceData.rect; - default: - return TDEStyle::subRect (subrect, ceData, elementFlags, widget); - } -} - -bool HighContrastStyle::objectEventHandler( const TQStyleControlElementData &ceData, ControlElementFlags elementFlags, void* source, TQEvent *event ) -{ - return TDEStyle::objectEventHandler (ceData, elementFlags, source, event); -} - -/*! \reimp */ -int HighContrastStyle::styleHint(StyleHint sh, const TQStyleControlElementData &ceData, ControlElementFlags elementFlags, const TQStyleOption &opt, TQStyleHintReturn *returnData, const TQWidget *w) const -{ - int ret; - - switch (sh) { - case SH_MenuIndicatorColumnWidth: - { - int checkcol = opt.maxIconWidth(); - bool checkable = (elementFlags & CEF_IsCheckable); - - if ( checkable ) - checkcol = QMAX( checkcol, 20 ); - - ret = checkcol; - } - break; - default: - ret = TDEStyle::styleHint(sh, ceData, elementFlags, opt, returnData, w); - break; - } - - return ret; -} - -// vim: set noet ts=4 sw=4: -// kate: indent-width 4; replace-tabs off; smart-indent on; tab-width 4; |