From b23b8edce7cbd48165084dbd852875afeb800735 Mon Sep 17 00:00:00 2001
From: tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>
Date: Tue, 5 Oct 2010 18:12:45 +0000
Subject: Update qtcurve to latest upstream version

git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/kde-style-qtcurve@1182805 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
---
 AUTHORS                      |    1 +
 CMakeLists.txt               |   82 +-
 COPYING                      |    4 +-
 ChangeLog                    |  610 ++++-
 README                       |   36 +-
 cmake/QtCurveQt3.cmake       |   27 +
 colors/CMakeLists.txt        |    1 +
 colors/QtCurve.kcsrc         |   27 +
 common/colorutils.c          |  305 +++
 common/common.h              | 1726 ++++++++++---
 common/config_file.c         | 2756 +++++++++++++++++---
 common/dot.png               |  Bin 0 -> 130 bytes
 common/radio_inner.png       |  Bin 0 -> 276 bytes
 common/radio_on.png          |  Bin 231 -> 221 bytes
 common/radio_on_small.png    |  Bin 0 -> 258 bytes
 config.h.cmake               |    6 +
 config/CMakeLists.txt        |    9 +-
 config/exportthemedialog.cpp |    6 +-
 config/exportthemedialog.h   |    4 +-
 config/qtcurveconfig.cpp     | 1337 +++++++++-
 config/qtcurveconfig.h       |   77 +-
 config/qtcurveconfigbase.ui  | 2940 +++++++++++++++++-----
 po/CMakeLists.txt            |   25 +
 po/generate.sh               |   48 +
 po/qtcurve.pot               | 1423 +++++++++++
 po/tr.po                     | 1509 +++++++++++
 style/CMakeLists.txt         |   32 +-
 style/pixmaps.h              |  167 +-
 style/qtc_fixx11h.h          |  233 ++
 style/qtc_kstyle.cpp         | 1717 +++++++++++++
 style/qtc_kstyle.h           |  324 +++
 style/qtcurve.cpp            | 5675 +++++++++++++++++++++++++++++-------------
 style/qtcurve.h              |  114 +-
 style/qtcurve.themerc        |    2 +-
 themes/Agua.qtcurve          |   34 +
 themes/Agua_II.qtcurve       |  165 ++
 themes/CMakeLists.txt        |    6 +-
 themes/Curve.qtcurve         |   20 +-
 themes/Flat.qtcurve          |   69 +
 themes/Human.qtcurve         |   28 +-
 themes/Inverted.qtcurve      |   22 +-
 themes/Klearlooks.qtcurve    |   74 +
 themes/Milk.qtcurve          |   69 +
 themes/Murrine.qtcurve       |   22 +-
 themes/Ozone.qtcurve         |  170 ++
 themes/Plastic.qtcurve       |  140 +-
 themes/Silk.qtcurve          |   89 +
 47 files changed, 18926 insertions(+), 3205 deletions(-)
 create mode 100644 AUTHORS
 create mode 100644 cmake/QtCurveQt3.cmake
 create mode 100644 colors/CMakeLists.txt
 create mode 100644 colors/QtCurve.kcsrc
 create mode 100644 common/colorutils.c
 create mode 100644 common/dot.png
 create mode 100644 common/radio_inner.png
 create mode 100644 common/radio_on_small.png
 create mode 100644 po/CMakeLists.txt
 create mode 100755 po/generate.sh
 create mode 100644 po/qtcurve.pot
 create mode 100644 po/tr.po
 create mode 100644 style/qtc_fixx11h.h
 create mode 100644 style/qtc_kstyle.cpp
 create mode 100644 style/qtc_kstyle.h
 create mode 100644 themes/Agua.qtcurve
 create mode 100644 themes/Agua_II.qtcurve
 create mode 100644 themes/Flat.qtcurve
 create mode 100644 themes/Klearlooks.qtcurve
 create mode 100755 themes/Milk.qtcurve
 create mode 100644 themes/Ozone.qtcurve
 create mode 100644 themes/Silk.qtcurve

diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..5f68aed
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1 @@
+Craig Drummond <craig.p.drummond@gmail.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 803ff67..ad2c3ed 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -6,24 +6,53 @@ set(CPACK_GENERATOR "DEB;RPM;TGZ")
 set(DEBIAN_PACKAGE_DESCRIPTION "QtCurve for Qt3/KDE3")
 set(DEBIAN_PACKAGE_SECTION "kde")
 set(CPACK_SOURCE_GENERATOR "TBZ2")
-set(CPACK_PACKAGE_VERSION_MAJOR "0")
-set(CPACK_PACKAGE_VERSION_MINOR "55")
+set(CPACK_PACKAGE_VERSION_MAJOR "1")
+set(CPACK_PACKAGE_VERSION_MINOR "6")
 set(CPACK_PACKAGE_VERSION_PATCH "2")
-set(CPACK_PACKAGE_CONTACT "Craig Drummond <Craig.Drummond@lycos.co.uk>")
+set(CPACK_PACKAGE_CONTACT "Craig Drummond <craig.p.drummond@gmail.com>")
 set(QTCURVE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}")
 set(QTCURVE_VERSION_FULL "${QTCURVE_VERSION}.${CPACK_PACKAGE_VERSION_PATCH}")
 set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${QTCURVE_VERSION_FULL}")
 set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${QTCURVE_VERSION_FULL}")
 include(CPack)
 
-set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules )
+if(COMMAND cmake_policy)
+    cmake_policy(SET CMP0003 NEW)
+endif(COMMAND cmake_policy)
 
-find_package(KDE3 REQUIRED)
-include(KDE3Macros)
+if (QTC_BUILD_CONFIG_MODULE)
+    if (NOT QTC_QT_ONLY)
+        find_package(KDE3)
+        if (NOT KDE3_FOUND)
+            set(QTC_QT_ONLY true)
+            message("INFO: KDE3 not found! Compiling for Qt only! (Not building the config module)")
+        endif (NOT KDE3_FOUND)
+    endif (NOT QTC_QT_ONLY)
+else (QTC_BUILD_CONFIG_MODULE)
+    set(QTC_QT_ONLY true)
+endif (QTC_BUILD_CONFIG_MODULE)
 
+if (NOT QTC_QT_ONLY)
+    include(KDE3Macros)
+else (NOT QTC_QT_ONLY)
+    set(QT_MT_REQUIRED TRUE)
+    find_package(Qt3 REQUIRED)
+    set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake )
+    include(QtCurveQt3)
+    if (QT_PLUGINS_DIR MATCHES NOTFOUND)
+        message(SEND_ERROR "ERROR: Failed to detemine Qt3 plugins folder. Please pass -DQT_PLUGINS_DIR=<folder> to cmake")
+    endif (QT_PLUGINS_DIR MATCHES NOTFOUND)
+endif (NOT QTC_QT_ONLY)
+
+if (NOT QTC_QT_ONLY)
 exec_program(kde-config
-             ARGS --prefix
+             ARGS --prefix --expandvars
              OUTPUT_VARIABLE CMAKE_INSTALL_PREFIX)
+endif (NOT QTC_QT_ONLY)
+
+exec_program(kde-config
+             ARGS --install locale --expandvars
+             OUTPUT_VARIABLE KDE3_LOCALE_PREFIX)
 
 file(TO_CMAKE_PATH "$ENV{KDEDIRS}" _KDEDIRS)
 
@@ -47,11 +76,42 @@ if(NOT KDE4PREFIX)
 endif(NOT KDE4PREFIX)
 
 configure_file (config.h.cmake ${CMAKE_BINARY_DIR}/config.h)
-add_definitions(${QT_DEFINITIONS} ${KDE3_DEFINITIONS})
-include_directories (${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${KDE3_INCLUDES})
+if (NOT QTC_QT_ONLY)
+    add_definitions(${QT_DEFINITIONS} ${KDE3_DEFINITIONS})
+    include_directories (${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${KDE3_INCLUDES})
+else (NOT QTC_QT_ONLY)
+    add_definitions(${QT_DEFINITIONS})
+    include_directories (${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR})
+endif (NOT QTC_QT_ONLY)
 
 set(DATA_INSTALL_DIR ${KDE3PREFIX}/share/apps)
+
+if(QTC_DEFAULT_TO_KDE3)
+    message("INFO: Defaulting to reading KDE3 settings if KDE_SESSION_VERSION is not set")
+else(QTC_DEFAULT_TO_KDE3)
+    message("INFO: Defaulting to reading KDE4 settings if KDE_SESSION_VERSION is not set")
+endif(QTC_DEFAULT_TO_KDE3)
+
 add_subdirectory(style)
-add_subdirectory(config)
-add_subdirectory(themes)
+if (NOT QTC_QT_ONLY)
+    if (QTC_BUILD_CONFIG_MODULE)
+        message("**************************************************************\n"
+                "Warning: The KDE3 config module is deprecated, and is no longer\n"
+                "         actively maintained. This module NO LONGER COMPILES!\n"
+                "         It is recommended to use the KDE4 version instead.\n"
+                "**************************************************************\n")
+        add_subdirectory(config)
+        add_subdirectory(po)
+    endif (QTC_BUILD_CONFIG_MODULE)
+    add_subdirectory(themes)
+    add_subdirectory(colors)
+endif (NOT QTC_QT_ONLY)
 
+if (QTC_ENABLE_PARENTLESS_DIALOG_FIX_SUPPORT)
+    message("**************************************************************\n"
+            "Warning: You have enabled support for the 'fix parentless dialogs'\n"
+            "         option. This is known to BREAK some applications. Please\n"
+            "         DO NOT report errors to application authors when you have\n"
+            "         this enabled. Please reconsider DISABLING this option.\n"
+            "**************************************************************\n")
+endif (QTC_ENABLE_PARENTLESS_DIALOG_FIX_SUPPORT)
diff --git a/COPYING b/COPYING
index 623b625..d60c31a 100644
--- a/COPYING
+++ b/COPYING
@@ -2,7 +2,7 @@
 		       Version 2, June 1991
 
  Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  Everyone is permitted to copy and distribute verbatim copies
  of this license document, but changing it is not allowed.
 
@@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found.
 
     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
 
 Also add information on how to contact you by electronic and paper mail.
diff --git a/ChangeLog b/ChangeLog
index 6d6fb0f..d66ae34 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,589 @@
+1.6.2
+-----
+1. Disable the support for 'fix parent-less dialog' option - this causes too many
+   issues with applications to be worth the fuss. If you really want this enabled,
+   use the -DQTC_ENABLE_PARENTLESS_DIALOG_FIX_SUPPORT=true cmake option.
+
+1.6.1
+-----
+1. Use same radius for all corners of progressbar.
+
+1.6.0
+-----
+1. Add 'glow' focus option - this is now the default.
+2. Fix potential crash in rgbToHsv
+3. Enable glow/shadow/etch for square and slight round settings.
+4. Draw coloured mouse over for 'checked' toggle buttons.
+5. Use Highlight colour for default button glow.
+6. Default sub-menu popup delay to 225 - matches Gtk2 standard default.
+7. Fix glow-mouse over for radio buttons.
+
+1.5.0
+-----
+1. Add option to set progressbar colour.
+2. Add options to have squared sliders and/or scrollbar sliders even when
+   general setting set to round.
+
+1.4.1
+-----
+1. Fix config dialog compilation.
+
+1.4.0
+-----
+1. Add striped window and menu background options.
+2. Added options to not square frames and tab frames.
+3. Add option to drag windows by menubar.
+4. Blend menubar and window titlebar gradients if:
+         menubar, titlebar, and inactive titlebar gradients match AND
+         not blending titlebar gradient AND
+         using window titlebar colour for menubar AND
+         extending window drag into menubar
+5. Default titlebar colours to window colours - matches KDE4 default.
+6. Fix drawing of scrollbar background.
+
+1.3.1
+-----
+1. Fix compilation of config module. Please note that this module is deprecated,
+   and might be out-of sync with the maintained KDE4 version.
+2. Fix compile when style support is enabled.
+
+1.3.0
+-----
+1. Add option to use kwin titlebar colours as menubar shade.
+2. Fix(?) compilation of config module.
+3. Dont use KStandardDirs to create config folder.
+4. Use 'kde' to disable parent-less dialog fix for all KDE applications.
+
+1.2.0
+-----
+1. Draw etch effect on radios if using a button effect, and not using button-like
+   check/radios.
+2. If drawing square non-gtk style scrollviews, use a dark/light borders.
+3. If drawing square scrollviews, set frame width to 1 if using thin scrollbar
+   groove.
+4. Add options to draw square progress and entry fields when rounding.
+5. Add option to control whether progressbars have a border on all sides, or just
+   top/bottom.
+6. Add option to colour default buttons using highlight colour.
+7. Expand selected check/radio colour option so as to be able to specify colour.
+8. Allow to draw focus highlight for square scrollviews.
+
+1.1.1
+-----
+1. #include config.h before using QTC_QT_ONLY
+
+1.1.0
+-----
+1. Add option to not embolden progressbar text.
+2. Add option to allow coloured mouse over for toolbar buttons.
+3. Config module is deprecated, and no longer updated - use KDE4 config module
+   to change settings. If KDE3 version is required, pass -DQTC_BUILD_CONFIG_MODULE=true
+   to cmake.
+
+1.0.1
+-----
+1. Apply cygwin patches from Yaakov S - use MODULE istead of SHARED.
+
+1.0.0
+-----
+ 1. Added option to colour selected check/radios.
+ 2. Added option to use a smaller dot for radios.
+ 3. Made check/radio and splitter highlight options a configurable % - i.e.
+    not based on standard hightlight %
+ 4. When highlighting check/radio/splitter background, use the selection gradient.
+ 5. Added new splitter/handle/thumb style: single dot.
+ 6. Default check/radio/splitter/expander highlight set to 3%
+ 7. Don't do coloured mouse over for buttons of editable combos, spin buttons,
+    or scrollbar buttons.
+ 8. Don't do regular coloured mouse over of sliders when these are set to be
+    coloured on mouse over.
+ 9. Allow to specify strength when colouring selected tab.
+10. Remove support for QtCurve styles (these appear as unique KDE styles in the
+    main KDE style selection dialog). Re-enable support by passing
+    -DQTC_STYLE_SUPPORT=true to cmake.
+11. Slightly lighter shade used for coloured mouse over of arrows.
+12. Add option to specify appearance of dock-widget titlebars.
+13. When saving settings to $XDG_CONFIG_HOME/qtcurve/stylerc, remove the older
+    $XDG_CONFIG_HOME/qtcurvestylerc, and $XDG_CONFIG_HOME/qtcurve.gtk-icons if they
+    exist.
+14. Use split gradient for dock-widget titlebars.
+15. Reduce number of supplied presets.
+16. Allow to compile style against just Qt3 - tarball includes a simplified copy
+    of KStyle. Need to pass -DQTC_QT_ONLY=true to cmake. NOTE: May also need to set QTDIR
+    *before* calling cmake.
+17. If KDE3 development files not found, then automatically set -DQTC_QT_ONLY=true
+    
+0.69.1
+------
+1. Remove line beneath dock widget titles.
+
+0.69.0
+------
+1. Add option to control whether bottom tabs should have their gradient
+   shades inverted.
+2. Config files now stored under $XDG_CONFIG_HOME/qtcurve (e.g. ~/.config/qtcurve)
+3. Fix some issue with 'flat' appearance.
+4. Fix shaded listview headers sometime being uninitialised.
+
+0.68.1
+------
+1. Fix reading, and saving, of 'dark inverted gradient' setting.
+
+0.68.0
+------
+1. New options:
+    Control whether icons are displayed in menus
+    Force alternate colours in listviews
+
+0.67.3
+------
+1. Fix saving of menubar item 'colour on mouse over' setting.
+2. Offset sunken slider thumbs to improve appearance.
+
+0.67.2
+------
+1. Only do mouse over for entries if combos and spin widgets are unified.
+2. If not etching/shadowing, when mouse over set to 'glow' use 'thick coloured'
+3. If not etching/shadowing, decrease thinner scrollbar groove.
+4. Fix shaded button on combos when not etching/shadowing.
+5. Remove hard-coding of light border in progressbars - use gradient setting.
+
+0.67.1
+------
+1. Disable combobox mouse over for OpenOffice.
+
+0.67.0
+------
+1. Add option to draw insider border of inactive tabs.
+2. Add option to colour the sorted listview header.
+3. Disable spin button when at min/max - matches Gtk2.
+4. Disable scrollbar buttons when at min/max - to match spin buttons.
+5. Place non-V arrows of unified spin widgets closer together.
+6. Fix shadows on radio buttons.
+
+0.66.0
+------
+ 1. Add a new 'Dark Inverted Gradient' and use this as the default gradient
+    for menu stripes.
+ 2. New 'Agua' style gradient - looks better under KDE4 and Gtk2.
+ 3. Add option to lighten/darken the background of tabs.
+ 4. Make inactive tabs more consistent with active tabs.
+ 5. Remove sunken scroll views config item, and replace with option to control
+    if entries and scroll views should be etched (sunken).
+ 6. Modify defaults:
+        Scrollbars outside of scrollview (Gtk/oxygen style)
+        Thin scrollbar groove.
+ 7. Use KDE_SESSION_VERSION to determine which KDE prefix (KDE3, or KDE4) to
+    seach first for qtc_xxx.themerc files.
+ 8. Update Klearlooks to be more consistent with Clearlooks (lighten tab background,
+    use highlight strip on active tab, dont colour active tab)
+ 9. Use default KDE4 settings to determine colour of text for disabled items.
+10. When calling kde-config/kde4-config pipe stderr to /dev/null
+
+0.65.4
+------
+1. Use 'MS Windows' and not 'Windows' for scrollbar type - to aid
+   translations.
+2. Fix installation location of translation files.
+
+0.65.3
+------
+1. When not using button-like check/radio boxes, use view text as the
+   indicator colour.
+2. Fix slight tab glitches when using glow tab mouse over and square
+   tabs.
+3. Fix usage of custom menu text colours.
+4. Fix custom menu stripe colour.
+5. In config dialog - for gradient directions, use "Top to bottom" instead of
+   "Horizontal" and "Left to right" instead of "Vertical"
+6. Add support for translations of config dialogs.
+    Turkish translation by Necmettin Begiter
+
+0.65.2
+------
+1. Add option to draw list view lines in pre 0.65 style.
+
+0.65.1
+------
+1. Use a border width of 1 if gradienting popupmenus.
+2. When using darkened menu stripe use popupmenu background colour as the
+   base colour.
+3. Fix gradient menus when not using lighter popup menu backgrounds.
+4. Dont fill background of PE_PanelLineEdit
+5. When readining kicker's settings, and window colours, use the correct KDE home.
+6. Fix blank menus in Amarok when using gradient menu background.
+
+0.65.0
+------
+ 1. Add options to draw editable combos, and spin widgets, as edit fields with
+    embedded arrows - oxygen style.
+ 2. Add option to draw a light border around tab widgets, as opposed to 3d look.
+ 3. Added ability to specify scrollbar width (11 -> 31, default 15)
+ 4. Base slider dimensions off of scrollbar width, unless using triangular slider.
+ 5. Add option to have thinner buttons.
+ 6. Add option to specify gradient for background of popupmenus.
+ 7. Enable mouse-over for entry fields.
+ 8. For mouse-over and focus, use same colour for top and bottom inner parts
+    of entry fields.
+ 9. When using full focus with coloured mouse over, then mouse over takes
+    precedence.
+10. Alter default settings:
+        Place arrows of spin buttons, and editable combos, in the edit field.
+        Draw a light border around tab widget.
+        Thinner buttons.
+        Use soft gradient for active tab.
+        Use glow style highlight for tab mouse-over (this introduces gaps between tabs).
+11. Modified how button, and combo, heights are calculated - no longer set a
+    minimum height.
+12. Fix some re-draw errors with thin scrollbar grooves.
+13. Default to reading KDE4 settings if KDE_SESSION_VERSION is not set.
+    Pass -DQTC_DEFAULT_TO_KDE3=true to cmake to force this to default to KDE3.
+14. Call kde-config / kde4-config to ascertain users KDEHOME.
+15. Fix slight redraw error with glow style mouse over tabs.
+16. Remove box from listview arrows when configured to drawn listview lines.
+
+0.64.2
+------
+1. When using shaded combo buttons, use button colours for border.
+
+0.64.1
+------
+1. When using shaded combo buttons, use the combo splitter setting to
+   determine if there should be a border between the shaded and unshaded parts.
+2. Fix background of some QTextEdits.
+
+0.64.0
+------
+ 1. Add option to not draw border around popupmenus.
+ 2. Add option to unify spinbuttons.
+ 3. Add option to set sub-menu delay (default 100ms)
+ 4. Use equal top/bottom padding on popupmenu separators.
+ 5. Add option to colour arrow part of combobox.
+ 6. Draw resize grip as a darkend triangle.
+ 7. Add a 'thick coloured border' mouse over type.
+ 8. Allow to darken sliders.
+ 9. Add new default button indicator - darken.
+10. Fix mispainted spin widget entry field.
+11. Fix reading of KDE4 palette.
+12. Fix setting of check/radio shade.
+13. Fix storing of custom menu stripe colour.
+14. In config dialog, place '%'symbol on the right for the "popup menu background"
+    setting.
+15. Fix kaffeine's slider benig completely filled at start of song.
+16. Fix LineEdit in qtconfig.
+17. Under KDE4 (KDE_SESSION_VERSION>=4), default hover/focus colours to the
+    KDE4 defaults.
+
+0.63.0
+------
+ 1. Add '3dfull' to gradient border options. This forces the
+    dark, as well as the light, portion to be drawn.
+ 2. Use a lighter shade for the dark portion of gradient border.
+ 3. Flat dot for radio buttons.
+ 4. Option to use button colour for listview headers.
+ 5. Use KDE4 colours for focus and mouse-over.
+ 6. Removal of background focus option.
+ 7. Softer colouration of selected tab.
+ 8. Tab mouse over options; top (as before), below, or glow.
+ 9. Modified defaults:
+     Tab mouse-over highlight drawn at the bottom
+     Plain slider style
+     Align titlebars text in center
+10. Add appearance setting for background of flat scrollbar buttons.
+11. Add HCY colour space.
+12. Use tint and mix colour routines from KDE4's KColourUtils.
+13. Remove QtCurve's 'inactiveHighlight' option, and use KDE4s setting
+    instead.
+14. Add option to specify appearance setting of filler part of sliders.
+15. Increase number of custom gradients - now matches number of gradient
+    config items.
+16. When using glow style mouse over, use mouse over colour for arrows.
+17. Option to use a thinner groove for scrollbars (only when using flat, or no, buttons).
+18. Option to only colour sliders on mouse over.
+19. Option to round all tabs.
+20. Add option to specify menu stripe colour.
+21. Update gradient preview when change colour space.
+22. Remove 'Custom sunken gradient' setting, as this was not
+    actually used.
+23. Better handling of 'full centered' titlebar texts when
+    window size is small.
+24. Fix scrolbar sliders appearing rounded when round=none, sliders
+    are shaded, and flat scrollbar buttons.
+25. Fix faded menuitems when not rounding.
+26. Make popup menu titles more KDE4-like.
+27. Fix use of base colour in disabled listviews. (Fixes bug introduced in 0.62.0)
+
+0.62.7
+------
+1. Show 'extra' as the default round setting in the config UI, as this is
+   actually the default. Note, that KDE3 does not support this and will use
+   'full' instead.
+
+0.62.6
+------
+1. Allow ability to specify if titlebar center alignment is for the full window
+   width, or just the text area.
+   
+0.62.5
+------
+1. Use gradient for filled slider - unless appearance is flat/raised.
+2. Remove menubar item size adjust code when toolbar borders are set - not
+   needed for KDE3, as it has padding anyway.
+3. Don't highlight slider groove on mouse-over.
+4. Fix coloured bottom tabs.
+5. Fix faded menuitems when not lightening popupmenus.
+
+0.62.4
+------
+1. When drawing filled slider groove, use fill colour for border as well.
+2. Better positioning of V arrows on secondary scrollbar buttons.
+
+0.62.3
+------
+1. Fix misdrawing of filled slider groove when slider is at 0.
+2. Use correct appearance setting for slider groove.
+3. Fix potentional palette issues if Qt3 and KDE3 have difference palettes.
+4. Override QStyle::drawItem to remove etched disabled text, as opposed to
+   just setting GUIStyle styleHint. This fixes the 'click on menubaritem' to
+   close menu issue.
+5. When menubars have a border, adjust the menubar items accordingly.
+6. When filling the used part of a slider groove, use the slider colour 
+   if set, otherwise use the highlight colour.
+
+0.62.2
+------
+1. Fix crash when coloured mouse over is set to none, and focus is set to full.
+2. Make focus full like KDE4/Gtk2
+3. Fix some issues gradient issues (tabs and menuitems).
+
+0.62.1
+------
+1. Use highlight colour for unselected focused view items.
+2. Fix saving/reading of custom shades.
+3. Fix striped progress.
+4. Fix background of disabled spin widgets.
+
+0.62.0
+------
+ 1. Reduce gradient code complexity - makes predefined gradients
+    work in the same vein as custom gradients.
+ 2. Add scrollbar/slider groove and 'sunken' appearance options.
+ 3. Added new soft and harsh gradients.
+ 4. Change defaults:
+        Soft gradient
+        Fade menuitems
+        Don't use highlight for menu.
+        Default highlight set to 3%
+        Toolbar separators set to sunken
+        Flat menubar appearance
+        Button like check/radios
+        Supply, and use, predefined custom shades
+        Plain progress
+        Don't highlight active tab
+        Sunken scrollviews
+        Sunken appearance set to soft
+        Line focus
+        Set custom appearances for titlebars
+ 5. Allow all bar flat and raised tabs to bol coloured.
+ 6. Only save appearance settings if different from default.
+ 7. If a gradient does not define the values for positions 0 and 100, then add these.
+ 8. Better colouring of selected tab.
+ 9. Added new focus options - full and line.
+10. Add new round options - extra and max.
+11. Don't etch disabled items.
+12. Use text colour for focus indicator in tree/list/etc views.
+13. When specifying custom gradients, add the pssibility to have no
+    internal border - options are now none, light, 3d
+14. Only apply plastik style mouse-over scrollbars and sliders when
+    plastik is set as the mouse-over style.
+15. Add option to specify titlebar text alignment.
+16. When setting palette, also set link and link visited colours.
+
+0.61.4
+------
+1. Fix gradient of faded menuitems when not using lighter background.
+2. Disable usage of group box lines - has too many issues.
+
+0.61.3
+------
+1. Fix settings for sliderThumbs, handles, toolbarSeparators, and splitters.
+2. Disable 'group box line' for ksysguard.
+
+0.61.2
+------
+1. Fix setting of options if no qtcurvestylerc is found!
+2. Fix border of tabs.
+
+0.61.1
+------
+1. Fix setting of default style. Fixes odd behaviour of config dialog!
+2. Fix position of dark part of sunken lines.
+3. Improve KDE dock widget titles.
+4. Read in custom gradients and shades from any system config file.
+
+0.61
+----
+1. Only draw coloured border for moused-over items if they are enabled!
+2. Add option to draw line after frameless groupbox title.
+3. Dont darken background of dock widget titlebars, just draw a line underneath.
+4. Add 'none' to toolbar handles and splitters style.
+5. Change defaults:
+        Button effect: Shadow
+        Mouse over: Glow
+        Default button indicator: Glow
+        V arrows
+        Flat toolbars
+        Use highlight colour for focus
+        Flat scrollbar buttons
+        No combo line
+        Sunken toolbar handles
+        Only lighten popupmenus by 2%
+        Flat active tab
+        Don't shade sliders
+        Don't darken menubars
+        Use darkened background for progressbars
+6. Allow to darken popup menu background.
+
+0.60
+----
+ 1. Add more safety checks for destruction of hover widgets.
+ 2. New focus rect options - standard, highlight, background.
+ 3. Add the ability to specify popup menu light factor.
+ 4. Add option to use darkened background colour for menuitem selection.
+ 5. Add 'fade' to menuitem appearance.
+ 6. Option to have flat scrollbar buttons.
+ 7. New slider styles - plain rotated, and round rotated.
+ 8. Increase size of busy progressbar.
+ 9. Draw border around filled progress.
+10. Option to have button-like checks/radios.
+11. Use base for light part of lineedit border, and background for scrollview.
+12. Nicer 'V' arrows.
+13. Add option to specify appearance of inactive titlebars.
+14. Round internal corners of plain coloured mouse over effect.
+15. Remove reading of Qt3 palette - this 'hack' only worked for pure Qt apps.
+
+0.59.5
+------
+1. In config dialog, rename the 'Fill' progressbar option to 'No border',
+   and place it on the 'Bar' line.
+
+0.59.4
+------
+1. Left align dock widget titles - more KDE4 like. (Right align for RTL)
+2. Dont activate menubar when Alt key is pressed alone - matches Gtk.
+
+0.59.3
+------
+1. Fix background drawng of sliders on toolbars (such as in Kaffeine), when
+   coloured mouse over is disabled and highlight factor is set to 1.0.
+
+0.59.2
+------
+1. Also check in share/kde4/apps/kstyle/themes for qtc_*.themerc files.
+
+0.59.1
+------
+1. Fix appearance of shiny glass defult buttons.
+2. Give glass default buttons a light border.
+
+0.59
+----
+ 1. When drawing gray focus rect, draw only slightly rounded.
+ 2. Etch/shadow effect now applied to widget sides as well as
+    top/bottom.
+ 3. Add etching to checks, radios, slider grooves, and progressbars.
+ 4. Option to have progress fill groove - default to true.
+ 5. Option to display non-editable combo splitter - defaults to true.
+ 6. Dont do coloured mouse over for mdi buttons, dock widget buttons,
+    or toolbar buttons.
+ 7. Better coloured mouse over for checks and radios.
+ 8. Don't use background colour for non-coloured mouse over of
+    check/radios if highlighting text backgroud.
+ 9. When colouring menubars, correctly draw menubar text colour
+    of inactive windows.
+10. Fix potential crash when using pixmap cache.
+11. Fix tab coloured mouse-over when not rounded.
+12. Implement size grip.
+13. New mouse over effect - glow. Only applicable if etching or shadowing.
+14. New default button indicator - glow. Only applicable if etching
+    or shadowing.
+15. Allow up to 10 custom defined gradients.
+16. Allow custom shades to be specified.
+17. Add option to specify active tab appearance.
+18. Don't do coloured mouse-overs for sunken buttons.
+19. Apply 'border menuitems' only to popup menus.
+20. If lightening popup menus, and not bordering menuitems, then remove 1
+    pix border arund popup menus.
+21. Change default to not border menuitems.
+22. Re-arrange config GUI.
+23. Remove some frames from kate.
+24. Scrolview options: allow sunken, highlight, and square.
+25. Option to specify progressbar groove appearance.
+
+0.58
+----
+1. Add a config option for menu stripe appearance - defaults to gradient.
+2. Add a config option for selection appearance - defaults to flat. KDE4 (Qt4.4) & Gtk2 only.
+3. Use background colour for disabled scrollbar buttons.
+4. Remove some frames from systemsettings.
+5. Don't draw menu separators through stripe.
+6. Draw menu stripe on the right for RTL languages.
+7. Supply a QtCurve colours file.
+8. Lighter menustripe when not lightening menus.
+9. Lighter menu separators.
+
+0.57.1
+------
+1. Fix for frameless groupboxes krusader's config dialog.
+2. Draw QDockWindowResize handles like QSplitters.
+3. Make dock windows more KDE4 like.
+4. Don't draw frames around kicker buttons.
+5. Fix kicker menu stripe.
+
+0.57
+----
+1. Modify defaults:
+     Turn off shade menubar only of active window
+     Set default button indicator to tint
+2. Re-added option to highlight background of check/radio text on mouseover.
+
+0.56.3
+------
+1. Don't set sliders to flat just because appearance is flat.
+
+0.56.2
+------
+1. Use case-insesitive string compares when checking Qt and KDE config files.
+2. Fix for (sometimes) ever-boldening frameless groupbox titles.
+3. Don't colour non-maxed sliders of disabled scrollviews.
+
+0.56.1
+------
+1. Fix crash when using corner default button indicator and no coloured
+   mouse over.
+
+0.56
+----
+1. Change default settings:
+        Dont animate progressbars
+        Frameless groupboxes
+        Gradient KDE4 window titlebars
+2. Correctly position corner indicator.
+3. Use mouse over colours for corner indicator.
+4. Add option to control window titlebar appearance - default to
+   gradient.
+5. Read in KWin's pallete, and use to colour MDI windows.
+6. Draw own icons for titlebar buttons - more KDE4 like.
+7. Option to tint the default button colour.
+8. Option to draw a stripe on the left hand side of popupmenus.
+9. Only mark default button if it is enabled.
+
+0.55.3
+------
+1. Style "Ideal::Button"s on "Ideal::ButtonBar"s as per KMultiTabBar tabs.
+   (Makes KTorrent's tab buttons look like Kate's sidebar buttons)
+2. Read KDE4's contrast setting if running under KDE4.
+
 0.55.2
 ------
 1. Add ability to import qtc_*.themerc settings into config dialog.
@@ -23,7 +609,7 @@
  6. Optional diagonal progressbar sripes.
  7. Use alternating dark/light for dashed toolbar handles.
  8. New 'split' style gradient.
- 9. Option to specift slider style: plain, round (only when appearance=round),
+ 9. Option to specify slider style: plain, round (only when appearance=round),
     and triangular (plastik-ish)
 10. Modify default style: flat splitter lines, flat slider thumbs, no
     toolbar separators, triangular slider, diagonal progressbar stripes.
@@ -113,7 +699,7 @@
     light colour schemes.
  9. Dont draw sunken panel around checked menuitems.
 10. Fix karm (and others?) statusbar icon.
-11. Fix for radio buttons in apps where QApplication::NormalColor!=QApplication::colorSpec()
+11. Fix for radio buttons in apps where QApplication::NormalColour!=QApplication::colourSpec()
     (e.g. designer)
 
 0.50
@@ -221,7 +807,7 @@
                             follows general appearance.
         Tab appearance - set from general appearace.
         Draw dock window titles - never.
-        Colored sidebar buttons - always.
+        Coloured sidebar buttons - always.
  3. Changed appearance of check/radios - now filled with base
     colour.
  4. Etch look for button, combos, line edits, and spin boxes.
@@ -294,7 +880,7 @@
 0.45
 ----
 1. Option to control whether highlighted items should use
-   the highlight color in inactive windows.
+   the highlight colour in inactive windows.
 2. Option to control whether menubars should be shaded in
    inactive windows.
 3. Fix loading / selection of options.
@@ -334,7 +920,7 @@
     next, or none.
  9. Slightly better radios in khtml.
 10. Slightly smaller buttons.
-11. Option to have colored side-bar buttons - e.g. the buttons on the
+11. Option to have coloured side-bar buttons - e.g. the buttons on the
     edge of kate's windows.
 12. Improvement to Opera's MDI buttons in menubar area. Not
     perfect, but better.
@@ -343,7 +929,7 @@
 
 0.43.2
 ------
-1. Fix the config dialog to notice changes in menu text color settings.
+1. Fix the config dialog to notice changes in menu text colour settings.
 2. Dont draw menubar text twice!
 
 0.43.1
@@ -359,7 +945,7 @@
  5. Really fix KDE 3.5.5 taskbar flicker...
  6. Slight improvement to combobox when right-to-left
  7. Seperate specification of scollbar slider, and range slider, settings.
- 8. Option to specify menubar text colors.
+ 8. Option to specify menubar text colours.
  9. New 'flat' appearance.
 10. Options to use a coloured border for mouse-over.
 11. Nicer looking check and radio buttons - using pixmaps.
@@ -508,7 +1094,7 @@
  7. KDE: Use dots also for general handles - more consistent.
  8. KDE: Theme dock window handles - i.e. no more text.
  9. KDE: Fix/hack look of MDI window buttons.
-10. GTK2: Hackish fix for firefox and KDE's "apply colors to non-KDE apps" 
+10. GTK2: Hackish fix for firefox and KDE's "apply colours to non-KDE apps"
           setting.
 11. GTK: Fix for tear of menu background.
 
@@ -569,7 +1155,7 @@
  6. ALL: New gradient style: bevelled - gradient top/bot, and plain in the
          middle. Affects listview headers, buttons, and combos.
  7. ALL: Allow setting of listview appearance.
- 8. ALL: Allow setting of listview header color - background, button, or
+ 8. ALL: Allow setting of listview header colour - background, button, or
         custom.
  9. ALL: Option to only round top of selected menubar items.
 10. ALL: New toolbar handle style: dashes
@@ -605,8 +1191,8 @@
          wont happen in Gtk2 apps until they are restarted.
 4. GTK: Dont draw dividers in listview headers, unless header is >10 pixels
 5. ALL: Gradient non-selected tabs as well as selected.
-6. GTK2: Also look in "hicolor" for icons. Search order will be:
-             <chosen theme>, crystalsvg, hicolor
+6. GTK2: Also look in "hicolour" for icons. Search order will be:
+             <chosen theme>, crystalsvg, hicolour
 7. GTK2: Map gt-add and gtk-remove stock icons
 
 0.30
@@ -691,7 +1277,7 @@
 11. ALL: Fix for tab-bar highlight when using light selection colours.
 12. KDE: Fix for non-bordered gradient radio buttons.
 13. GTK: More KDE like menu sizing.
-14. KDE: Fix/hack for OO.o2.x menubars. If the selected menu color is toodark,
+14. KDE: Fix/hack for OO.o2.x menubars. If the selected menu colour is toodark,
          then lighten. This is required as OO.o always draws the menu text
          dark! It seems to have a check for plastik style though, and then
          it draws selected popup menu items white.
diff --git a/README b/README
index acd7309..733220f 100644
--- a/README
+++ b/README
@@ -8,6 +8,27 @@ To build and install:
 4. make
 5. make install
 
+The following options may be supplied to cmake:
+
+    -DQTC_QT_ONLY=true
+        Build style as a pure Qt3 style. NOTE: May also need to set QTDIR *before*
+        calling cmake.
+        This is the default as from QtCurve 1.0.0
+
+    -DQTC_BUILD_CONFIG_MODULE=true
+        Build KDE3 config module. NOTE: This is no longer maintained.
+
+    -DQTC_DEFAULT_TO_KDE3=true
+       If the KDE_SESSION_VERSION is not set, then assume we are running
+       under KDE3. If this cmake option is not set, then KDE4 is assumed.
+
+    -DQTC_STYLE_SUPPORT=true
+       Support QtCurve style files. These are stored as
+       <kde prefix>/share/apps/kstyle/themes/qtc_<stylename>.themerc
+
+    -DQTC_ENABLE_PARENTLESS_DIALOG_FIX_SUPPORT=true
+        Enable support for the 'fixParentlessDialogs' config option. NOTE: This is
+        known to break some applications - hence is disabled by default!
 
 Themes
 ------
@@ -36,10 +57,20 @@ or copy to <kde install prefix>/share/apps/kstyle/themes/ (usually
 
 When KDE's style panel is restarted, your new theme should appear in the list.
 
+NOTE: As of QtCurve 1.0.0 style support has been disabled by default, and you will
+need to explicitly enable it via QTC_STYLE_SUPPORT
+
+Testing
+-------
+As of v1.2.1, QtCurve can be forced to read its settings from an alternate config
+file via the QTCURVE_CONFIG_FILE environment variable. This is only really useful
+for testing alternate config settings without changing the users current settings.
+Usage:
+
+    QTCURVE_CONFIG_FILE=~/testfile kcalc
 
 Creating Distribution Packages
 ------------------------------
-
 CMake (as of v2.4.x) does not support building rpm or deb packages, and a simple
 checkinstall will not work. CMake 2.6 should support rpm and deb packages, but until
 then I have supplied a simple shell script to build a package with checkinstall.
@@ -52,7 +83,6 @@ To use this:
 
 pixmaps.h
 ---------
-
 To regenerate this, run the following:
 
-    qembed radio_frame.png radio_light.png radio_on.png check_on.png slider.png slider_light.png slider_v.png slider_light_v.png check_x_on.png > pixmaps.h
\ No newline at end of file
+    qembed radio_frame.png radio_inner.png radio_light.png radio_on.png radio_on_small.png check_on.png slider.png slider_light.png check_x_on.png dot.png > pixmaps.h
diff --git a/cmake/QtCurveQt3.cmake b/cmake/QtCurveQt3.cmake
new file mode 100644
index 0000000..dac1b1b
--- /dev/null
+++ b/cmake/QtCurveQt3.cmake
@@ -0,0 +1,27 @@
+FILE(GLOB GLOB_PATHS_BIN /usr/lib/qt-3*/bin/)
+FIND_PATH(QT_PLUGINS_DIR imageformats
+  $ENV{QTDIR}/plugins
+  ${GLOB_PATHS_BIN}
+  /usr/local/qt/plugins
+  /usr/lib/qt/plugins
+  /usr/lib/qt3/plugins
+  /usr/share/qt3/plugins
+  )
+
+MACRO(QTCURVE_QT_WRAP_CPP outfiles )
+  # get include dirs
+  GET_DIRECTORY_PROPERTY(moc_includes_tmp INCLUDE_DIRECTORIES)
+  SET(moc_includes)
+
+  FOREACH(it ${ARGN})
+    GET_FILENAME_COMPONENT(outfilename ${it} NAME_WE)
+    GET_FILENAME_COMPONENT(infile ${it} ABSOLUTE)
+    SET(outfile ${CMAKE_CURRENT_BINARY_DIR}/${outfilename}.moc)
+    ADD_CUSTOM_COMMAND(OUTPUT ${outfile}
+        COMMAND ${QT_MOC_EXECUTABLE}
+        ARGS -o ${outfile} ${infile}
+        DEPENDS ${infile})
+    SET(${outfiles} ${${outfiles}} ${outfile})
+  ENDFOREACH(it)
+
+ENDMACRO(QTCURVE_QT_WRAP_CPP)
diff --git a/colors/CMakeLists.txt b/colors/CMakeLists.txt
new file mode 100644
index 0000000..423bda3
--- /dev/null
+++ b/colors/CMakeLists.txt
@@ -0,0 +1 @@
+install(FILES QtCurve.kcsrc DESTINATION ${DATA_INSTALL_DIR}/kdisplay/color-schemes)
diff --git a/colors/QtCurve.kcsrc b/colors/QtCurve.kcsrc
new file mode 100644
index 0000000..d7409dc
--- /dev/null
+++ b/colors/QtCurve.kcsrc
@@ -0,0 +1,27 @@
+[Color Scheme]
+Name=QtCurve
+activeBackground=169,195,228
+activeBlend=169,195,228
+activeForeground=255,255,255
+activeTitleBtnBg=220,220,220
+alternateBackground=240,240,240
+background=239,236,231
+buttonBackground=239,236,231
+buttonForeground=0,0,0
+contrast=7
+foreground=0,0,0
+frame=238,238,230
+handle=238,238,230
+inactiveBackground=244,244,244
+inactiveBlend=244,244,244
+inactiveForeground=20,19,18
+inactiveFrame=238,238,230
+inactiveHandle=238,238,230
+inactiveTitleBtnBg=220,220,220
+linkColor=0,0,192
+selectBackground=69,126,224
+selectForeground=255,255,255
+shadeSortColumn=true
+visitedLinkColor=128,0,128
+windowBackground=224,232,238
+windowForeground=0,0,0
diff --git a/common/colorutils.c b/common/colorutils.c
new file mode 100644
index 0000000..05aaaea
--- /dev/null
+++ b/common/colorutils.c
@@ -0,0 +1,305 @@
+/*
+ This file is taken from kcolorspaces.cpp and kcolorutils.cpp from kdelibs
+The code has been modified to work with QColor (Qt3 &Qt4) and GdkColor
+*/
+
+/* This file is part of the KDE project
+ * Copyright (C) 2007 Matthew Woehlke <mw_triad@users.sourceforge.net>
+ * Copyright (C) 2007 Olaf Schmidt <ojschmidt@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 as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * 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 <math.h>
+
+#ifdef __cplusplus
+#if defined QT_VERSION && (QT_VERSION >= 0x040000)
+#define FLOAT_COLOR(VAL, COL) (VAL).COL##F()
+#define TO_COLOR(R, G, B) QColor::fromRgbF(R, G, B)
+#else
+#define FLOAT_COLOR(VAL, COL) ((double)(((VAL).COL()*1.0)/255.0))
+#define TO_COLOR(R, G, B) QColor(limit(R*255.0), limit(G*255.0), limit(B*255.0))
+#endif
+#else
+#define inline
+#define FLOAT_COLOR(VAL, COL) ((double)(((VAL).COL*1.0)/65535.0))
+static GdkColor qtcGdkColor(double r, double g, double b)
+{
+    GdkColor col;
+
+    col.red=limit(r*65535);
+    col.green=limit(g*65535);
+    col.blue=limit(b*65535);
+
+    return col;
+}
+
+#define TO_COLOR(R, G, B) qtcGdkColor(R, G, B)
+#endif
+
+static inline double ColorUtils_normalize(double a)
+{
+    return (a < 1.0 ? (a > 0.0 ? a : 0.0) : 1.0);
+}
+
+static inline double ColorUtils_wrap(double a)
+{
+    static double d = 1.0;
+    double r = fmod(a, d);
+    return (r < 0.0 ? d + r : (r > 0.0 ? r : 0.0));
+}
+
+#define HCY_REC 709 // use 709 for now
+#if   HCY_REC == 601
+static const double yc[3] = { 0.299, 0.587, 0.114 };
+#elif HCY_REC == 709
+static const double yc[3] = {0.2126, 0.7152, 0.0722};
+#else // use Qt values
+static const double yc[3] = { 0.34375, 0.5, 0.15625 };
+#endif
+
+static inline double ColorUtils_HCY_gamma(double n)
+{
+    return pow(ColorUtils_normalize(n), 2.2);
+}
+
+static inline double ColorUtils_HCY_igamma(double n)
+{
+    return pow(ColorUtils_normalize(n), 1.0/2.2);
+}
+
+static inline double ColorUtils_HCY_lumag(double r, double g, double b)
+{
+    return r*yc[0] + g*yc[1] + b*yc[2];
+}
+
+typedef struct
+{
+    double h, c, y;
+} ColorUtils_HCY;
+
+// static ColorUtils_HCY ColorUtils_HCY_fromValues(double h_, double c_, double y_/*, double a_*/)
+// {
+//     h = h_;
+//     c = c_;
+//     y = y_;
+// //    a = a_;
+// }
+
+static ColorUtils_HCY ColorUtils_HCY_fromColor(const color *color)
+{
+    ColorUtils_HCY hcy;
+    double r = ColorUtils_HCY_gamma(FLOAT_COLOR(*color, red));
+    double g = ColorUtils_HCY_gamma(FLOAT_COLOR(*color, green));
+    double b = ColorUtils_HCY_gamma(FLOAT_COLOR(*color, blue));
+//     a = color.alphaF();
+
+    // luma component
+    hcy.y = ColorUtils_HCY_lumag(r, g, b);
+
+    // hue component
+    double p = MAX(MAX(r, g), b);
+    double n = MIN(MIN(r, g), b);
+    double d = 6.0 * (p - n);
+    if (n == p)
+        hcy.h = 0.0;
+    else if (r == p)
+        hcy.h = ((g - b) / d);
+    else if (g == p)
+        hcy.h = ((b - r) / d) + (1.0 / 3.0);
+    else
+        hcy.h = ((r - g) / d) + (2.0 / 3.0);
+
+    // chroma component
+    if (0.0 == hcy.y || 1.0 == hcy.y)
+        hcy.c = 0.0;
+    else
+        hcy.c = MAX( (hcy.y - n) / hcy.y, (p - hcy.y) / (1 - hcy.y) );
+    return hcy;
+}
+
+static color ColorUtils_HCY_toColor(ColorUtils_HCY *hcy)
+{
+    // start with sane component values
+    double _h = ColorUtils_wrap(hcy->h);
+    double _c = ColorUtils_normalize(hcy->c);
+    double _y = ColorUtils_normalize(hcy->y);
+
+    // calculate some needed variables
+    double _hs = _h * 6.0, th, tm;
+    if (_hs < 1.0) {
+        th = _hs;
+        tm = yc[0] + yc[1] * th;
+    }
+    else if (_hs < 2.0) {
+        th = 2.0 - _hs;
+        tm = yc[1] + yc[0] * th;
+    }
+    else if (_hs < 3.0) {
+        th = _hs - 2.0;
+        tm = yc[1] + yc[2] * th;
+    }
+    else if (_hs < 4.0) {
+        th = 4.0 - _hs;
+        tm = yc[2] + yc[1] * th;
+    }
+    else if (_hs < 5.0) {
+        th = _hs - 4.0;
+        tm = yc[2] + yc[0] * th;
+    }
+    else {
+        th = 6.0 - _hs;
+        tm = yc[0] + yc[2] * th;
+    }
+
+    // calculate RGB channels in sorted order
+    double tn, to, tp;
+    if (tm >= _y) {
+        tp = _y + _y * _c * (1.0 - tm) / tm;
+        to = _y + _y * _c * (th - tm) / tm;
+        tn = _y - (_y * _c);
+    }
+    else {
+        tp = _y + (1.0 - _y) * _c;
+        to = _y + (1.0 - _y) * _c * (th - tm) / (1.0 - tm);
+        tn = _y - (1.0 - _y) * _c * tm / (1.0 - tm);
+    }
+
+    // return RGB channels in appropriate order
+    if (_hs < 1.0)
+        return TO_COLOR(ColorUtils_HCY_igamma(tp), ColorUtils_HCY_igamma(to), ColorUtils_HCY_igamma(tn));
+    else if (_hs < 2.0)
+        return TO_COLOR(ColorUtils_HCY_igamma(to), ColorUtils_HCY_igamma(tp), ColorUtils_HCY_igamma(tn));
+    else if (_hs < 3.0)
+        return TO_COLOR(ColorUtils_HCY_igamma(tn), ColorUtils_HCY_igamma(tp), ColorUtils_HCY_igamma(to));
+    else if (_hs < 4.0)
+        return TO_COLOR(ColorUtils_HCY_igamma(tn), ColorUtils_HCY_igamma(to), ColorUtils_HCY_igamma(tp));
+    else if (_hs < 5.0)
+        return TO_COLOR(ColorUtils_HCY_igamma(to), ColorUtils_HCY_igamma(tn), ColorUtils_HCY_igamma(tp));
+    else
+        return TO_COLOR(ColorUtils_HCY_igamma(tp), ColorUtils_HCY_igamma(tn), ColorUtils_HCY_igamma(to));
+}
+
+// #ifndef __cplusplus
+static inline double ColorUtils_HCY_luma(const color *color)
+{
+    return ColorUtils_HCY_lumag(ColorUtils_HCY_gamma(FLOAT_COLOR(*color, red)),
+                                ColorUtils_HCY_gamma(FLOAT_COLOR(*color, green)),
+                                ColorUtils_HCY_gamma(FLOAT_COLOR(*color, blue)));
+}
+
+static inline double ColorUtils_mixQreal(double a, double b, double bias)
+{
+    return a + (b - a) * bias;
+}
+
+static inline double ColorUtils_luma(const color *color)
+{
+    return ColorUtils_HCY_luma(color);
+}
+
+static double ColorUtils_contrastRatio(const color *c1, const color *c2)
+{
+    double y1 = ColorUtils_luma(c1), y2 = ColorUtils_luma(c2);
+    if (y1 > y2)
+        return (y1 + 0.05) / (y2 + 0.05);
+    else
+        return (y2 + 0.05) / (y1 + 0.05);
+}
+
+static color ColorUtils_lighten(const color *color, double ky, double kc)
+{
+    ColorUtils_HCY c=ColorUtils_HCY_fromColor(color);
+
+    c.y = 1.0 - ColorUtils_normalize((1.0 - c.y) * (1.0 - ky));
+    c.c = 1.0 - ColorUtils_normalize((1.0 - c.c) * kc);
+    return ColorUtils_HCY_toColor(&c);
+}
+
+static color ColorUtils_darken(const color *color, double ky, double kc)
+{
+    ColorUtils_HCY c=ColorUtils_HCY_fromColor(color);
+    c.y = ColorUtils_normalize(c.y * (1.0 - ky));
+    c.c = ColorUtils_normalize(c.c * kc);
+    return ColorUtils_HCY_toColor(&c);
+}
+
+static color ColorUtils_shade(const color *color, double ky, double kc)
+{
+    ColorUtils_HCY c=ColorUtils_HCY_fromColor(color);
+    c.y = ColorUtils_normalize(c.y + ky);
+    c.c = ColorUtils_normalize(c.c + kc);
+    return ColorUtils_HCY_toColor(&c);
+}
+
+static color ColorUtils_mix(const color *c1, const color *c2, double bias);
+
+static color ColorUtils_tintHelper(const color *base, const color *col, double amount)
+{
+    color          mixed=ColorUtils_mix(base, col, pow(amount, 0.3));
+    ColorUtils_HCY c=ColorUtils_HCY_fromColor(&mixed);
+    c.y = ColorUtils_mixQreal(ColorUtils_luma(base), c.y, amount);
+
+    return ColorUtils_HCY_toColor(&c);
+}
+
+static color ColorUtils_tint(const color *base, const color *col, double amount)
+{
+    if (amount <= 0.0) return *base;
+    if (amount >= 1.0) return *col;
+    if (isnan(amount)) return *base;
+
+    double ri = ColorUtils_contrastRatio(base, col);
+    double rg = 1.0 + ((ri + 1.0) * amount * amount * amount);
+    double u = 1.0, l = 0.0;
+    color result;
+    int i;
+    for (i = 12 ; i ; --i) {
+        double a = 0.5 * (l+u);
+        result = ColorUtils_tintHelper(base, col, a);
+        double ra = ColorUtils_contrastRatio(base, &result);
+        if (ra > rg)
+            u = a;
+        else
+            l = a;
+    }
+    return result;
+}
+
+static color ColorUtils_mix(const color *c1, const color *c2, double bias)
+{
+    if (bias <= 0.0) return *c1;
+    if (bias >= 1.0) return *c2;
+    if (isnan(bias)) return *c1;
+
+    {
+    double r = ColorUtils_mixQreal(FLOAT_COLOR(*c1, red),   FLOAT_COLOR(*c2, red),    bias);
+    double g = ColorUtils_mixQreal(FLOAT_COLOR(*c1, green), FLOAT_COLOR(*c2, green), bias);
+    double b = ColorUtils_mixQreal(FLOAT_COLOR(*c1, blue),  FLOAT_COLOR(*c2, blue),  bias);
+    /*double a = ColorUtils_mixQreal(FLOAT_COLOR(*c1, alpha),   FLOAT_COLOR(*c2, alpha),   bias);*/
+
+    return TO_COLOR(r, g, b);
+    }
+}
+
+// #endif
+/* Added!!! */
+// static color ColorUtils_shade_qtc(const color *color, double k)
+// {
+//     ColorUtils_HCY c=ColorUtils_HCY_fromColor(color);
+//     c.y = ColorUtils_normalize(c.y * (k>1.0 ? (k*1.1) : (k<1.0 ? (k*0.9) : k)));
+//     return ColorUtils_HCY_toColor(&c);
+// }
diff --git a/common/common.h b/common/common.h
index 21f6bae..c64872b 100644
--- a/common/common.h
+++ b/common/common.h
@@ -2,7 +2,7 @@
 #define __COMMON_H__
 
 /*
-  QtCurve (C) Craig Drummond, 2003 - 2007 Craig.Drummond@lycos.co.uk
+  QtCurve (C) Craig Drummond, 2003 - 2010 craig.p.drummond@gmail.com
 
   ----
 
@@ -25,17 +25,29 @@
    between Qt and Gtk, but not polute the namespace with exported functions... */
 
 #include <string.h>
+#include <stdarg.h>
 #include <math.h>
 #include "config.h"
 
-/*
-    The following #define disables the rounding when scrollbar type==none.
-#define QTC_SIMPLE_SCROLLBARS
-*/
+#if defined _WIN32 && defined QT_VERSION && (QT_VERSION >= 0x040000)
+#include <sys/stat.h>
+#include <float.h>
+#include <direct.h>
+
+static int isnan(double x)
+{
+    return _isnan(x);
+}
+
+static int lstat(const char* fileName, struct stat* s)
+{
+    return stat(fileName, s);
+}
+#endif
 
 /*
-    The following #define disables the custom focus rectangle
-#define QTC_PLAIN_FOCUS_ONLY
+    The following #define disables the rounding when scrollbar type==none.
+#define SIMPLE_SCROLLBARS
 */
 
 /*
@@ -43,64 +55,62 @@
     the scrollbar buttons when at min/max. This removes the thick looking line
     between the slider and the buttons.
 */
-#define QTC_INCREASE_SB_SLIDER
-
-/*
-    Enable this to do focus highlighting for scrollviews... NOTE: Gtk2 currently does not do this.
-#define QTC_HIGHLIGHT_SCROLVIEWS
-*/
-
-/*
-    Control shading used for glass variants.
-    0 => As used in 0.51.1 +
-    1 => As used in 0.51
-    2 => As used in <0.51
-*/
-#define QTC_GLASS_SHADING 0
+#define INCREASE_SB_SLIDER
 
 typedef enum
 {
     SHADING_SIMPLE=0,
     SHADING_HSL=1,
-    SHADING_HSV=2
+    SHADING_HSV=2,
+    SHADING_HCY=3
 } EShading;
 
-#if (!defined QTC_CONFIG_DIALOG) && (!defined QTC_KWIN)
-static EShading shading=SHADING_HSL;
-#endif
-
 #ifdef __cplusplus
 #include <qconfig.h>
-#ifdef QTC_CONFIG_DIALOG
+#ifdef CONFIG_DIALOG
 #include <qapplication.h>
 #endif
+#include <map>
+#include <set>
+#if !defined CONFIG_DIALOG && defined QT_VERSION && (QT_VERSION >= 0x040000)
+#include <QtCore/QString>
+#endif
 #else
 #include <glib.h>
 #endif
 
 #ifdef __cplusplus
+#include <qpixmap.h>
 typedef QColor color;
+
+#if defined QT_VERSION && (QT_VERSION >= 0x040000)
+#include <QtCore/QSet>
+typedef QSet<QString> Strings;
+#else
+typedef QStringList Strings;
+#endif
+
 #else
 typedef gboolean bool;
 typedef GdkColor color;
+typedef gchar ** Strings;
 #define true TRUE
 #define false FALSE
 #endif
 
-#define QTC_GROUP        "Settings"
-/*#define QTC_DESCR_GROUP  "Description"*/
+#define SETTINGS_GROUP        "Settings"
+#define KWIN_GROUP            "KWin"
+/*#define DESCR_GROUP  "Description"*/
 
 /* qtc_<theme name>.themerc support */
 #define KDE_PREFIX(V) ((4==(V)) ? KDE4PREFIX : KDE3PREFIX)
-#define QTC_THEME_DIR    "/share/apps/kstyle/themes/"
-#define QTC_THEME_PREFIX "qtc_"
-#define QTC_THEME_SUFFIX ".themerc"
-
+#define THEME_DIR    "/share/apps/kstyle/themes/"
+#define THEME_DIR4   "/share/kde4/apps/kstyle/themes/"
+#define THEME_PREFIX "qtc_"
+#define THEME_SUFFIX ".themerc"
+#define BORDER_SIZE_FILE "windowBorderSizes"
 
-#define QTC_CHECK_SIZE   13
-#define QTC_RADIO_SIZE   13
-#define QTC_MIN_BTN_SIZE 8
-#define QTC_LV_SIZE      7
+#define LV_SIZE      7
 
 #define LARGE_ARR_WIDTH  7
 #define LARGE_ARR_HEIGHT 4
@@ -110,6 +120,13 @@ typedef GdkColor color;
 #define NUM_STD_SHADES   6
 #define NUM_EXTRA_SHADES 3
 
+enum
+{
+    ALPHA_ETCH_LIGHT = 0,
+    ALPHA_ETCH_DARK,
+    NUM_STD_ALPHAS
+};
+
 #define TOTAL_SHADES     NUM_STD_SHADES+NUM_EXTRA_SHADES
 #define ORIGINAL_SHADE   TOTAL_SHADES
 
@@ -118,7 +135,7 @@ typedef GdkColor color;
 #define SHADE_2_HIGHLIGHT    NUM_STD_SHADES+2
 
 /* 3d effect - i.e. buttons, etc */
-#define QTC_SHADES \
+#define SHADES \
     static const double shades[2][11][NUM_STD_SHADES]=\
     { \
         { /* HSV & HSL */ \
@@ -149,88 +166,70 @@ typedef GdkColor color;
         } \
     } ;
 
-#define QTC_SIMPLE_SHADING (!shading)
-
-#define QT_STD_BORDER      5
-#define QT_DISABLED_BORDER QT_STD_BORDER /*3*/
-#define QT_BORDER(E) (/*(E) ?*/ QT_STD_BORDER/* : QT_DISABLED_BORDER*/)
-
-#define QT_FRAME_DARK_SHADOW 2
-#define QT_FOCUS             3
-
-#define QTC_SHADE(c, s) \
+#define SIMPLE_SHADING (!shading)
+#define DEFAULT_CONTRAST 7
+
+#define THIN_SBAR_MOD  ((opts.sliderWidth<DEFAULT_SLIDER_WIDTH ? 3 : opts.sliderWidth>DEFAULT_SLIDER_WIDTH ? (opts.sliderWidth-9)/2 : 4)+(EFFECT_NONE==opts.buttonEffect ? 1 : 0))
+#define SLIDER_SIZE (opts.sliderWidth<DEFAULT_SLIDER_WIDTH ? DEFAULT_SLIDER_WIDTH-2 : opts.sliderWidth)
+#define CIRCULAR_SLIDER_SIZE 15
+#define GLOW_MO           1 /*ORIGINAL_SHADE*/
+#define GLOW_DEFBTN       1
+#define GLOW_ALPHA(DEF)   ((DEF) ? 0.5 : 0.65)
+#define DEF_BNT_TINT      0.4
+#define ENTRY_INNER_ALPHA 0.4
+#define INACTIVE_SEL_ALPHA 0.5
+
+#define SUNKEN_BEVEL_DARK_ALPHA(X)  (X.value()/800.0) // 0.25
+#define SUNKEN_BEVEL_LIGHT_ALPHA(X) (X.value()/500.0) // 0.40
+
+#define MENU_SIZE_ATOM        "_QTCURVE_MENUBAR_SIZE_"
+#define STATUSBAR_ATOM        "_QTCURVE_STATUSBAR_"
+#define TITLEBAR_SIZE_ATOM    "_QTCURVE_TITLEBAR_SIZE_"
+#define ACTIVE_WINDOW_ATOM    "_QTCURVE_ACTIVE_WINDOW_"
+#define TOGGLE_MENUBAR_ATOM   "_QTCURVE_TOGGLE_MENUBAR_"
+#define TOGGLE_STATUSBAR_ATOM "_QTCURVE_TOGGLE_STATUSBAR_"
+#define OPACITY_ATOM          "_QTCURVE_OPACITY_"
+#define BGND_ATOM             "_QTCURVE_BGND_"
+#define BLEND_TITLEBAR     (opts.menubarAppearance==opts.titlebarAppearance && opts.menubarAppearance==opts.inactiveTitlebarAppearance && \
+                           !(opts.windowBorder&WINDOW_BORDER_BLEND_TITLEBAR) && SHADE_WINDOW_BORDER==opts.shadeMenubars && opts.windowDrag)
+
+#define STD_BORDER         5
+#define STD_BORDER_BR      2
+#define PBAR_BORDER        4
+#define ARROW_MO_SHADE     4
+#define LOWER_BORDER_ALPHA 0.35
+#define DISABLED_BORDER STD_BORDER /*3*/
+#define BORDER_VAL(E) (/*(E) ?*/ STD_BORDER/* : DISABLED_BORDER*/)
+#define SLIDER_MO_BORDER_VAL 3
+
+#define FRAME_DARK_SHADOW 2
+#define FOCUS_SHADE(SEL)         (FOCUS_GLOW==opts.focus ? GLOW_MO : ((SEL) ? 3 : ORIGINAL_SHADE))
+#define MENU_STRIPE_SHADE (USE_LIGHTER_POPUP_MENU ? ORIGINAL_SHADE : 2)
+#define MENU_SEP_SHADE    (USE_LIGHTER_POPUP_MENU ? 4 : 3)
+
+#define BGND_STRIPE_SHADE 0.95
+
+#define SHADE(c, s) \
     (c>10 || c<0 || s>=NUM_STD_SHADES || s<0 \
         ? 1.0 \
-        : opts.darkerBorders && (QT_STD_BORDER==i || QT_DISABLED_BORDER==i) \
-            ? shades[SHADING_SIMPLE==shading ? 1 : 0][c][s] - 0.1 \
-            : shades[SHADING_SIMPLE==shading ? 1 : 0][c][s] )
+        : opts.darkerBorders && (STD_BORDER==i || DISABLED_BORDER==i) \
+            ? shades[SHADING_SIMPLE==opts.shading ? 1 : 0][c][s] - 0.1 \
+            : shades[SHADING_SIMPLE==opts.shading ? 1 : 0][c][s] )
 
 #define TAB_APPEARANCE(A)   (A) /* (APPEARANCE_GLASS==(A) ? APPEARANCE_GRADIENT : (A)) */
-#define QTC_COLOR_SEL_TAB_FACTOR 1.2
-
-#define QTC_ROUNDED (ROUND_NONE!=opts.round)
-
-#define QTC_ETCHED_DARK            0.95
-#define SHADE_BEVEL_GRAD_LIGHT     (QTC_SIMPLE_SHADING ? 1.05 : 1.07)
-#define SHADE_BEVEL_GRAD_DARK      (QTC_SIMPLE_SHADING ? 0.93 : 0.91)
-#define SHADE_BEVEL_GRAD_SEL_LIGHT (QTC_SIMPLE_SHADING ? 1.05 : 1.07)
-#define SHADE_BEVEL_GRAD_SEL_DARK  (QTC_SIMPLE_SHADING ? 0.95 : 0.93)
-
-#define SHADE_BEVEL_MENU_ITEM_LIGHT (QTC_SIMPLE_SHADING ? 1.07 : 1.09)
-#define SHADE_BEVEL_MENU_ITEM_DARK  (QTC_SIMPLE_SHADING ? 0.85 : 0.83)
-
-#define SHADE_SLIDER_LIGHT          1.1
-#define SHADE_SLIDER_DARK           0.8
-
-#define SHADE_SBAR_LIGHT            1.02
-#define SHADE_SBAR_DARK             0.95
-
-#define SHADE_MENU_LIGHT            1.02
-#define SHADE_MENU_DARK             0.96
-
-#define SHADE_TAB_SEL_LIGHT         1.1
-#define SHADE_TAB_SEL_DARK          1.0
 
-#define SHADE_BOTTOM_TAB_SEL_LIGHT  1.0
-#define SHADE_BOTTOM_TAB_SEL_DARK   0.96
-
-#define SPLIT_GRADIENT_FACTOR       0.415
-
-#if !defined QTC_GLASS_SHADING || QTC_GLASS_SHADING==0
-
-    #define SHADE_GLASS_TOP_A(A, W) (APPEARANCE_DULL_GLASS==A \
-                                        ? (WIDGET_DEF_BUTTON==W ? 0.99 : 0.98) \
-                                        : (WIDGET_DEF_BUTTON==W ? 1.08 : 1.55))
-    #define SHADE_GLASS_TOP_B(A, W) (APPEARANCE_DULL_GLASS==A \
-                                        ? (WIDGET_DEF_BUTTON==W ? 0.94 : 0.92) \
-                                        : 0.92)
-    #define SHADE_GLASS_BOT_A(A) (APPEARANCE_DULL_GLASS==A ? 1.02 : 0.99)
-    #define SHADE_GLASS_BOT_B(A) (APPEARANCE_DULL_GLASS==A ? 1.10 : 1.16)
-
-#elif QTC_GLASS_SHADING==1
-
-    #define SHADE_GLASS_TOP_A(A, W) (APPEARANCE_DULL_GLASS==A \
-                                        ? (WIDGET_DEF_BUTTON==W ? 1.0 : 1.0) \
-                                        : (WIDGET_DEF_BUTTON==W ? 1.08 : 1.7))
-    #define SHADE_GLASS_TOP_B(A, W) (APPEARANCE_DULL_GLASS==A ? 0.96 : 0.96)
-    #define SHADE_GLASS_BOT_A(A) 0.99
-    #define SHADE_GLASS_BOT_B(A) (APPEARANCE_DULL_GLASS==A ? 1.08 : 1.16)
-
-#else
+#define INVERT_SHADE(A) (1.0+(1.0-(A)))
 
-    #define SHADE_GLASS_TOP_A(A, W) (APPEARANCE_DULL_GLASS==A \
-                                        ? (WIDGET_DEF_BUTTON==W ? 1.05 : 1.05) \
-                                        : (WIDGET_DEF_BUTTON==W ? 1.08 : 1.7))
-    #define SHADE_GLASS_TOP_B(A, W) 0.96
-    #define SHADE_GLASS_BOT_A(A) 0.99
-    #define SHADE_GLASS_BOT_B(A) (APPEARANCE_DULL_GLASS==A ? 1.08 : 1.16)
+#define ROUNDED (ROUND_NONE!=opts.round)
 
-#endif
+#define TOOLBAR_SEP_GAP        (opts.fadeLines ? 5 : 6)
+#define FADE_SIZE              0.4
+#define ETCHED_DARK            0.95
 
-#define IS_GLASS(A) (APPEARANCE_DULL_GLASS==A || APPEARANCE_SHINY_GLASS==A)
-#define IS_FLAT(A)  (APPEARANCE_FLAT==A || APPEARANCE_RAISED==A)
-#define SHADE_SELECTION_TOP 1.15
-#define SHADE_SELECTION_BOT 0.9
+#define IS_GLASS(A) (APPEARANCE_DULL_GLASS==(A) || APPEARANCE_SHINY_GLASS==(A))
+#define IS_CUSTOM(A) ((A)>=APPEARANCE_CUSTOM1 && (A)<(APPEARANCE_CUSTOM1+NUM_CUSTOM_GRAD))
+#define IS_FLAT(A)  (APPEARANCE_FLAT==(A) || APPEARANCE_RAISED==(A) || APPEARANCE_FADE==(A))
+#define IS_FLAT_BGND(A)  (APPEARANCE_FLAT==(A) || APPEARANCE_RAISED==(A))
 
 #ifdef __cplusplus
 #define MENUBAR_DARK_LIMIT 160
@@ -240,71 +239,338 @@ typedef GdkColor color;
 #define TOO_DARK(A) ((A).red<MENUBAR_DARK_LIMIT || (A).green<MENUBAR_DARK_LIMIT || (A).blue<MENUBAR_DARK_LIMIT)
 #endif
 
-#define DEFAULT_HIGHLIGHT_FACTOR   1.05
-#define MAX_HIGHLIGHT_FACTOR         50
-#define MIN_HIGHLIGHT_FACTOR        -50
-#define MENUBAR_DARK_FACTOR        0.97
-#define POPUPMENU_LIGHT_FACTOR     1.15
-#define INACTIVE_HIGHLIGHT_FACTOR  1.20
+#define TO_FACTOR(A) ((100.0+((double)(A)))/100.0)
+#define DEFAULT_HIGHLIGHT_FACTOR                   3
+#define DEFAULT_SPLITTER_HIGHLIGHT_FACTOR          3
+#define DEFAULT_CR_HIGHLIGHT_FACTOR                0
+#define DEFAULT_EXPANDER_HIGHLIGHT_FACTOR          3
+#define MAX_HIGHLIGHT_FACTOR                      50
+#define MIN_HIGHLIGHT_FACTOR                     -50
+#define MENUBAR_DARK_FACTOR        TO_FACTOR(-3)
+#define INACTIVE_HIGHLIGHT_FACTOR  TO_FACTOR(20)
+#define LV_HEADER_DARK_FACTOR      TO_FACTOR(-10)
+#define DEF_POPUPMENU_LIGHT_FACTOR                 2
+#define MIN_LIGHTER_POPUP_MENU                  -100
+#define MAX_LIGHTER_POPUP_MENU                   100
+
+#define MIN_GB_FACTOR -50
+#define MAX_GB_FACTOR  50
+#define DEF_GB_FACTOR  -3
+
+#define TO_ALPHA(A) (((double)((A)<0 ? -(A) : (A)))/100.0)
+#define DEF_COLOR_SEL_TAB_FACTOR  25
+#define MIN_COLOR_SEL_TAB_FACTOR   0
+#define MAX_COLOR_SEL_TAB_FACTOR 100
+
+#define DEF_TAB_BGND         0
+#define MIN_TAB_BGND        -5
+#define MAX_TAB_BGND         5
+
+#define DEFAULT_MENU_DELAY 225
+#define MIN_MENU_DELAY       0
+#define MAX_MENU_DELAY     500
+
+#define DEFAULT_SLIDER_WIDTH 15
+#define MIN_SLIDER_WIDTH     11
+#define MAX_SLIDER_WIDTH     31
+
+#define SIZE_GRIP_SIZE 12
+
+#define USE_LIGHTER_POPUP_MENU (opts.lighterPopupMenuBgnd)
+#define USE_GLOW_FOCUS(mouseOver) (FOCUS_GLOW==opts.focus && (MO_GLOW!=opts.coloredMouseOver || !(mouseOver)))
 
 #define USE_SHADED_MENU_BAR_COLORS (SHADE_CUSTOM==opts.shadeMenubars || SHADE_BLEND_SELECTED==opts.shadeMenubars)
 #define MENUBAR_GLASS_SELECTED_DARK_FACTOR 0.9
-#define GLASS_BORDER         0.4
-#define BEVEL_BORDER(w)      (WIDGET_LISTVIEW_HEADER==w ? 6 : 4)
-#define SHADE_BEVEL_TOP      1.07
-#define SHADE_BEVEL_MID_TOP  1.03
-#define SHADE_BEVEL_MID_BOT  0.975
-#define SHADE_BEVEL_BOT(w)   (WIDGET_LISTVIEW_HEADER==(w) ? 0.88 : 0.90)
+
+#define MENUITEM_FADE_SIZE 48
 
 #define NUM_SPLITTER_DASHES 21
 
-#define WIDGET_BUTTON(w) (WIDGET_STD_BUTTON==w || WIDGET_DEF_BUTTON==w || WIDGET_TOGGLE_BUTTON==w || WIDGET_CHECKBOX==w)
 #ifdef __cplusplus
-#define ETCH_WIDGET(w) (WIDGET_STD_BUTTON==w || WIDGET_DEF_BUTTON==w || WIDGET_TOGGLE_BUTTON==w)
+#define WIDGET_BUTTON(w) (WIDGET_STD_BUTTON==(w) || WIDGET_DEF_BUTTON==(w) || \
+                          WIDGET_CHECKBOX==(w) || WIDGET_RADIO_BUTTON==(w) || WIDGET_DIAL==(w) || \
+                          WIDGET_COMBO==(w) || WIDGET_COMBO_BUTTON==(w) || WIDGET_MDI_WINDOW_BUTTON==(w) || \
+                          WIDGET_TOOLBAR_BUTTON==(w) )
+#define ETCH_WIDGET(w) (WIDGET_STD_BUTTON==(w) || WIDGET_DEF_BUTTON==(w) || WIDGET_SLIDER_TROUGH==(w) || \
+                        WIDGET_CHECKBOX==(w) || WIDGET_RADIO_BUTTON==(w) || WIDGET_DIAL==(w) || \
+                        (WIDGET_SLIDER==(w) && MO_GLOW==opts.coloredMouseOver) || \
+                        WIDGET_FILLED_SLIDER_TROUGH==(w) || WIDGET_MDI_WINDOW_BUTTON==(w) || WIDGET_TOOLBAR_BUTTON==(w))
+#define AGUA_WIDGET(w) (WIDGET_STD_BUTTON==(w) || WIDGET_DEF_BUTTON==(w) || IS_SLIDER((w)) || \
+                        WIDGET_CHECKBOX==(w) || WIDGET_RADIO_BUTTON==(w) || \
+                        WIDGET_COMBO==(w) WIDGET_COMBO_BUTTON==(w) || WIDGET_MDI_WINDOW_BUTTON==(w))
 #else
-#define ETCH_WIDGET(w) (WIDGET_STD_BUTTON==w || WIDGET_DEF_BUTTON==w || WIDGET_TOGGLE_BUTTON==w || \
-                        WIDGET_SPIN_UP==w || WIDGET_SPIN_DOWN==w)
+#define WIDGET_BUTTON(w) (WIDGET_STD_BUTTON==(w) || WIDGET_DEF_BUTTON==(w) || WIDGET_TOGGLE_BUTTON==(w) || \
+                          WIDGET_CHECKBOX==(w) || WIDGET_RADIO_BUTTON==(w) || \
+                          WIDGET_RADIO_BUTTON==(w) || WIDGET_COMBO==(w) || WIDGET_COMBO_BUTTON==(w) || WIDGET_UNCOLOURED_MO_BUTTON==(w) || \
+                          WIDGET_TOOLBAR_BUTTON==(w))
+#define ETCH_WIDGET(w) (WIDGET_STD_BUTTON==(w) || WIDGET_DEF_BUTTON==(w) || WIDGET_TOGGLE_BUTTON==(w) || WIDGET_SLIDER_TROUGH==(w) || \
+                        WIDGET_CHECKBOX==(w) || WIDGET_RADIO_BUTTON==(w) || \
+                        (WIDGET_SLIDER==(w) && MO_GLOW==opts.coloredMouseOver) || \
+                        WIDGET_FILLED_SLIDER_TROUGH==(w) || WIDGET_COMBO==(w) || WIDGET_UNCOLOURED_MO_BUTTON==(w) || \
+                        WIDGET_TOOLBAR_BUTTON==(w))
+#define AGUA_WIDGET(w) (WIDGET_STD_BUTTON==(w) || WIDGET_DEF_BUTTON==(w) || WIDGET_TOGGLE_BUTTON==(w) || IS_SLIDER((w)) || \
+                        WIDGET_CHECKBOX==(w) || WIDGET_RADIO_BUTTON==(w) || \
+                        WIDGET_COMBO==(w) WIDGET_COMBO_BUTTON==(w))
 #endif
+
+#define SLIDER(w) (WIDGET_SB_SLIDER==(w) || WIDGET_SLIDER==(w))
+#define CIRCULAR_SLIDER(w) (WIDGET_SLIDER==(w) && SLIDER_CIRCULAR==opts.sliderStyle)
+
+#define MODIFY_AGUA_X(A, X) (APPEARANCE_AGUA==(A) ?  (X) : (A))
+#define MODIFY_AGUA(A)      MODIFY_AGUA_X((A), APPEARANCE_AGUA_MOD)
+#define AGUA_MAX 32.0
+#define AGUA_MID_SHADE 0.85
+
 #define COLORED_BORDER_SIZE 3
 #define PROGRESS_CHUNK_WIDTH 10
-#define QTC_DRAW_LIGHT_BORDER(SUKEN, WIDGET, APP) \
-    ((!SUKEN && IS_GLASS(APP) && WIDGET_MENU_ITEM!=WIDGET && WIDGET_DEF_BUTTON!=WIDGET) || \
-                          (WIDGET_PROGRESSBAR==WIDGET && APPEARANCE_FLAT!=APP && \
-                           APPEARANCE_RAISED!=APP && APPEARANCE_INVERTED!=APP))
+#define STRIPE_WIDTH 10
+#define DRAW_LIGHT_BORDER(SUKEN, WIDGET, APP) \
+    (!(SUKEN) && (GB_LIGHT==getGradient(APP, &opts)->border) && WIDGET_MENU_ITEM!=(WIDGET) && !IS_TROUGH(WIDGET) && \
+                          (WIDGET_DEF_BUTTON!=(WIDGET) || IND_COLORED!=opts.defBtnIndicator))
+
+#define DRAW_3D_FULL_BORDER(SUNKEN, APP) \
+    (!(SUNKEN) && GB_3D_FULL==getGradient((APP), &opts)->border)
+    
+#define DRAW_3D_BORDER(SUNKEN, APP) \
+    (!(SUNKEN) && GB_3D==getGradient((APP), &opts)->border)
+
+#define DRAW_SHINE(SUNKEN, APP) \
+    (!(SUNKEN) && GB_SHINE==getGradient((APP), &opts)->border)
+
+#define LIGHT_BORDER(APP) (APPEARANCE_DULL_GLASS==(APP) ? 1 : 0)
 
 #define PROGRESS_ANIMATION 100
-#define MIN_SLIDER_SIZE(A) (LINE_DOTS==A ? 24 : 20)
-
-#define QTC_NORM_TAB_APP (APPEARANCE_BEVELLED==opts.tabAppearance || APPEARANCE_SPLIT_GRADIENT==opts.appearance \
-                            ? APPEARANCE_GRADIENT : opts.tabAppearance)
-#define QTC_SEL_TAB_APP (APPEARANCE_INVERTED==opts.tabAppearance ? APPEARANCE_FLAT : (QTC_NORM_TAB_APP))
-#define QTC_SLIDER_MO_SHADE  (SHADE_SELECTED==opts.shadeSliders ? 1 : (SHADE_BLEND_SELECTED==opts.shadeSliders ? 0 : ORIGINAL_SHADE))
-#define QTC_SLIDER_MO_BORDER (SHADE_SELECTED==opts.shadeSliders || SHADE_BLEND_SELECTED==opts.shadeSliders ? 2 : 1)
-#define QTC_SLIDER_MO_LEN (SLIDER_TRIANGULAR==opts.sliderStyle ? 2 : (SHADE_SELECTED==opts.shadeSliders || SHADE_BLEND_SELECTED==opts.shadeSliders ? 4 : 3))
-#define QTC_SB_SLIDER_MO_LEN(A) ((A)<22 && ROUND_FULL!=opts.round \
+#define MIN_SLIDER_SIZE(A) (LINE_DOTS==(A) ? 24 : 20)
+
+#define CR_SMALL_SIZE 13
+#define CR_LARGE_SIZE 15
+
+#define TAB_APP(A)   (APPEARANCE_BEVELLED==(A) || APPEARANCE_SPLIT_GRADIENT==(A) ? APPEARANCE_GRADIENT : (A))
+#define NORM_TAB_APP TAB_APP(opts.tabAppearance)
+#define SEL_TAB_APP  TAB_APP(opts.activeTabAppearance)
+
+#define SLIDER_MO_SHADE  (SHADE_SELECTED==opts.shadeSliders ? 1 : (SHADE_BLEND_SELECTED==opts.shadeSliders ? 0 : ORIGINAL_SHADE))
+#define SLIDER_MO_PLASTIK_BORDER (SHADE_SELECTED==opts.shadeSliders || SHADE_BLEND_SELECTED==opts.shadeSliders ? 2 : 1)
+#define SLIDER_MO_LEN    (SLIDER_TRIANGULAR==opts.sliderStyle ? 2 : (SHADE_SELECTED==opts.shadeSliders || SHADE_BLEND_SELECTED==opts.shadeSliders ? 4 : 3))
+#define SB_SLIDER_MO_LEN(A) ((A)<22 && !FULLLY_ROUNDED \
                                     ? 2 \
                                     : ((A)<32 || (SHADE_SELECTED!=opts.shadeSliders && SHADE_BLEND_SELECTED!=opts.shadeSliders) \
                                         ? 4 \
                                         : 6))
 
-#define QTC_CR_MO_FILL          (SHADE_BLEND_SELECTED==opts.shadeCheckRadio || SHADE_SELECTED==opts.shadeCheckRadio ? 1 : 2)
-#define QTC_MO_DEF_BTN          2
-#define QTC_MO_PLASTIK_DARK(W)  (WIDGET_DEF_BUTTON==W && IND_COLORED==opts.defBtnIndicator ? 3 : 2) /*? 2 : 1) */
-#define QTC_MO_PLASTIK_LIGHT(W) (WIDGET_DEF_BUTTON==W && IND_COLORED==opts.defBtnIndicator ? 4 : 1) /*? 2 : 0) */
+#define CR_MO_FILL          1
+#define MO_DEF_BTN          2
+#define MO_PLASTIK_DARK(W)  (WIDGET_DEF_BUTTON==(W) && IND_COLORED==opts.defBtnIndicator ? 3 : 2) /*? 2 : 1) */
+#define MO_PLASTIK_LIGHT(W) (WIDGET_DEF_BUTTON==(W) && IND_COLORED==opts.defBtnIndicator ? 4 : 1) /*? 2 : 0) */
+
+#define MO_STD_DARK(W)     (MO_GLOW==opts.coloredMouseOver \
+                                    ? 1 \
+                                    : MO_PLASTIK_DARK(W))
+#define MO_STD_LIGHT(W, S) (MO_GLOW==opts.coloredMouseOver \
+                                    ? 1 \
+                                    : MO_PLASTIK_LIGHT(W))
+
+#define FULLLY_ROUNDED     (opts.round>=ROUND_FULL)
+#define DO_EFFECT          (EFFECT_NONE!=opts.buttonEffect)
+#if !defined __cplusplus || (defined QT_VERSION && (QT_VERSION >= 0x040000))
+#define SLIDER_GLOW        (DO_EFFECT && MO_GLOW==opts.coloredMouseOver /*&& SLIDER_TRIANGULAR!=opts.sliderStyle*/ ? 2 : 0)
+#endif
 
-#define QTC_MO_STD_DARK(W)     QTC_MO_PLASTIK_DARK(W)  /*(WIDGET_DEF_BUTTON==W && IND_COLORED==opts.defBtnIndicator ? 4 : 1) */
-#define QTC_MO_STD_LIGHT(W, S) QTC_MO_PLASTIK_LIGHT(W) /*(WIDGET_DEF_BUTTON==W && IND_COLORED==opts.defBtnIndicator ? 2 : (S ? 1 : 0))*/
+#define ENTRY_MO (opts.unifyCombo && opts.unifySpin)
+
+#if !defined __cplusplus || (defined QT_VERSION && (QT_VERSION >= 0x040000))
+#define FOCUS_ALPHA              0.08
+#define FOCUS_GLOW_LINE_ALPHA    0.5
+#define BORDER_BLEND_ALPHA       0.7
+#define ETCH_TOP_ALPHA           0.055
+#define ETCH_BOTTOM_ALPHA        0.1
+// #if defined QT_VERSION && (QT_VERSION >= 0x040000)
+// #define ETCH_RADIO_TOP_ALPHA     0.055
+// #define ETCH_RADIO_BOTTOM_ALPHA  0.80
+// #else
+#define ETCH_RADIO_TOP_ALPHA     0.09
+#define ETCH_RADIO_BOTTOM_ALPHA  1.0
+// #endif
+
+#define RINGS_INNER_ALPHA(T) qtcRingAlpha[IMG_PLAIN_RINGS==(T) ? 1 : 0] //(IMG_PLAIN_RINGS==opts.bgndImage.type ? 0.25 :  0.125)
+#define RINGS_OUTER_ALPHA    qtcRingAlpha[2] //0.5
+#define RINGS_WIDTH(T)       (IMG_SQUARE_RINGS==T ? 260 : 450)
+#define RINGS_HEIGHT(T)      (IMG_SQUARE_RINGS==T ? 220 : 360)
+
+#define RINGS_SQUARE_LARGE_ALPHA (RINGS_OUTER_ALPHA*0.675)
+#define RINGS_SQUARE_SMALL_ALPHA (RINGS_OUTER_ALPHA*0.50)
+#define RINGS_SQUARE_LINE_WIDTH  20.0
+#define RINGS_SQUARE_RADIUS      18.0
+#define RINGS_SQUARE_LARGE_SIZE  120.0
+#define RINGS_SQUARE_SMALL_SIZE  100.0
+
+#if !defined __cplusplus
+#define MENU_AND_TOOLTIP_RADIUS   (opts.round>=ROUND_FULL ? 5.0 : 3.5)
+#else
+#define MENU_AND_TOOLTIP_RADIUS   (opts.round>=ROUND_FULL ? 5.0 : 2.5)
+#endif
 
-#define QTC_DO_EFFECT          (ROUND_FULL==opts.round && EFFECT_NONE!=opts.buttonEffect)
+#define CUSTOM_BGND (!(IS_FLAT_BGND(opts.bgndAppearance)) || IMG_NONE!=opts.bgndImage.type || 100!=opts.bgndOpacity || 100!=opts.dlgOpacity)
+
+#define GLOW_PROG_ALPHA 0.55
+
+#endif
+
+#if defined __cplusplus && defined QT_VERSION && (QT_VERSION >= 0x040000)
 
-#ifdef __cplusplus
 #include <qstyle.h>
 typedef enum
 {
-    QtC_Round = QStyle::PM_CustomBase
+    QtC_Round = QStyle::PM_CustomBase,
+    QtC_TitleBarButtonAppearance,
+    QtC_TitleAlignment,
+    QtC_TitleBarButtons,
+    QtC_TitleBarIcon,
+    QtC_TitleBarIconColor,
+    QtC_TitleBarEffect,
+    QtC_BlendMenuAndTitleBar,
+    QtC_ShadeMenubarOnlyWhenActive,
+    QtC_ToggleButtons,
+    QtC_MenubarColor,
+    QtC_WindowBorder,
+    QtC_CustomBgnd,
+    QtC_TitleBarApp
 } QtCMetrics;
+
+#define QtC_StateKWin            ((QStyle::StateFlag)0x10000000)
+// PE_FrameWindow
+#define QtC_StateKWinNotFull     ((QStyle::StateFlag)0x20000000)
+// CC_TitleBar
+#define QtC_StateKWinFillBgnd    ((QStyle::StateFlag)0x20000000)
+#define QtC_StateKWinNoBorder    ((QStyle::StateFlag)0x40000000)
+#define QtC_StateKWinCompositing ((QStyle::StateFlag)0x80000000)
+#define QtC_StateKWinTabDrag     ((QStyle::StateFlag)0x00000001)
+
+#define QtC_PE_DrawBackground    ((QStyle::PrimitiveElement)(QStyle::PE_CustomBase+10000))
+
+#define CLOSE_COLOR              QColor(191, 82, 82)
+#define DARK_WINDOW_TEXT(A)  ((A).red()<230 || (A).green()<230 || (A).blue()<230)
+#define HOVER_BUTTON_ALPHA(A)    (DARK_WINDOW_TEXT(A) ? 0.25 : 0.65)
+#define WINDOW_TEXT_SHADOW_ALPHA(A) (EFFECT_SHADOW==(A) ? 0.10 : 0.60)
+#define WINDOW_SHADOW_COLOR(A)      (EFFECT_SHADOW==(A) ? Qt::black : Qt::white)
+#endif
+
+#if defined CONFIG_DIALOG || (defined QT_VERSION && (QT_VERSION >= 0x040000))
+#define QTCURVE_PREVIEW_CONFIG      "QTCURVE_PREVIEW_CONFIG"
+#define QTCURVE_PREVIEW_CONFIG_FULL "QTCURVE_PREVIEW_CONFIG_FULL"
+
+typedef enum
+{
+    DWT_BUTTONS_AS_PER_TITLEBAR    = 0x0001,
+    DWT_COLOR_AS_PER_TITLEBAR      = 0x0002,
+    DWT_FONT_AS_PER_TITLEBAR       = 0x0004,
+    DWT_TEXT_ALIGN_AS_PER_TITLEBAR = 0x0008,
+    DWT_EFFECT_AS_PER_TITLEBAR     = 0x0010,
+    DWT_ROUND_TOP_ONLY             = 0x0020,
+    DWT_ICON_COLOR_AS_PER_TITLEBAR = 0x0040
+} EDwtSettingsFlags;
+
+typedef enum
+{
+    TITLEBAR_BUTTON_ROUND                   = 0x0001,
+    TITLEBAR_BUTTON_HOVER_FRAME             = 0x0002,
+    TITLEBAR_BUTTON_HOVER_SYMBOL            = 0x0004,
+    TITLEBAR_BUTTON_NO_FRAME                = 0x0008,
+    TITLEBAR_BUTTON_COLOR                   = 0x0010,
+    TITLEBAR_BUTTON_COLOR_INACTIVE          = 0x0020,
+    TITLEBAR_BUTTON_COLOR_MOUSE_OVER        = 0x0040,
+    TITLEBAR_BUTTON_STD_COLOR               = 0x0080,
+    TITLEBAR_BUTTON_COLOR_SYMBOL            = 0x0100,
+    TITLEBAR_BUTTON_HOVER_SYMBOL_FULL       = 0x0200,
+    TITLEBAR_BUTTON_SUNKEN_BACKGROUND       = 0x0400,
+    TITLEBAR_BUTTOM_ARROW_MIN_MAX           = 0x0800,
+    TITLEBAR_BUTTOM_HIDE_ON_INACTIVE_WINDOW = 0x1000,
+    TITLEBAR_BUTTON_ICON_COLOR              = 0x2000
+} ETitleBarButtonFlags;
+
+typedef enum
+{
+    TITLEBAR_ICON_NONE,
+    TITLEBAR_ICON_MENU_BUTTON,
+    TITLEBAR_ICON_NEXT_TO_TITLE
+} ETitleBarIcon;
+
+typedef enum
+{
+    TITLEBAR_CLOSE,
+    TITLEBAR_MIN,
+    TITLEBAR_MAX,
+    TITLEBAR_HELP,
+    TITLEBAR_MENU,
+    TITLEBAR_SHADE,
+    TITLEBAR_ALL_DESKTOPS,
+    TITLEBAR_KEEP_ABOVE,
+    TITLEBAR_KEEP_BELOW,
+    NUM_TITLEBAR_BUTTONS
+} ETitleBarButtons;
+
+#define TBAR_VERSION_HACK        65535
+#define TBAR_BORDER_VERSION_HACK (TBAR_VERSION_HACK+1000)
+
+typedef std::map<int, QColor> TBCols;
 #endif
 
+typedef enum
+{
+    WINDOW_BORDER_COLOR_TITLEBAR_ONLY            = 0x01, // colorTitlebarOnly
+    WINDOW_BORDER_USE_MENUBAR_COLOR_FOR_TITLEBAR = 0x02, // titlebarMenuColor
+    WINDOW_BORDER_ADD_LIGHT_BORDER               = 0x04, // titlebarBorder
+    WINDOW_BORDER_BLEND_TITLEBAR                 = 0x08, // titlebarBlend
+    WINDOW_BORDER_SEPARATOR                      = 0x10
+} EWindowBorder;
+
+typedef enum
+{
+    IMG_NONE,
+    IMG_BORDERED_RINGS,
+    IMG_PLAIN_RINGS,
+    IMG_SQUARE_RINGS,
+    IMG_FILE
+} EImageType;
+
+typedef struct
+{
+    EImageType type;
+    bool       loaded;
+#if defined __cplusplus
+    QString    file;
+    QPixmap    pix;
+#else // __cplusplus
+    const char *file;
+    GdkPixbuf  *pix;
+#endif // __cplusplus
+    int width, height;
+} QtCImage;
+
+typedef enum
+{
+    SQUARE_NONE               = 0x0000,
+    SQUARE_ENTRY              = 0x0001,
+    SQUARE_PROGRESS           = 0x0002,
+    SQUARE_SCROLLVIEW         = 0x0004,
+    SQUARE_LISTVIEW_SELECTION = 0x0008,
+    SQUARE_FRAME              = 0x0010,
+    SQUARE_TAB_FRAME          = 0x0020,
+    SQUARE_SLIDER             = 0x0040,
+    SQUARE_SB_SLIDER          = 0x0080,
+    SQUARE_WINDOWS            = 0x0100,
+    SQUARE_TOOLTIPS           = 0x0200,
+    SQUARE_POPUP_MENUS        = 0x0400
+} ESquare;
+
+typedef enum
+{
+    WM_DRAG_NONE             = 0,
+    WM_DRAG_MENUBAR          = 1,
+    WM_DRAG_MENU_AND_TOOLBAR = 2,
+    WM_DRAG_ALL              = 3
+} EWmDrag;
+
 typedef enum
 {
     EFFECT_NONE,
@@ -314,14 +580,22 @@ typedef enum
 
 typedef enum
 {
+    PIX_CHECK,
+#ifdef __cplusplus
+#if defined QT_VERSION && (QT_VERSION < 0x040000)
+    PIX_RADIO_ON,
     PIX_RADIO_BORDER,
+    PIX_RADIO_INNER,
     PIX_RADIO_LIGHT,
-    PIX_RADIO_ON,
-    PIX_CHECK,
     PIX_SLIDER,
     PIX_SLIDER_LIGHT,
     PIX_SLIDER_V,
-    PIX_SLIDER_LIGHT_V
+    PIX_SLIDER_LIGHT_V,
+#endif
+    PIX_DOT
+#else
+    PIX_BLANK
+#endif
 } EPixmap;
 
 typedef enum
@@ -330,46 +604,109 @@ typedef enum
     WIDGET_TAB_BOT,
     WIDGET_STD_BUTTON,
     WIDGET_DEF_BUTTON,
+    WIDGET_TOOLBAR_BUTTON,
     WIDGET_LISTVIEW_HEADER,
     WIDGET_SLIDER,
     WIDGET_SLIDER_TROUGH,
+    WIDGET_FILLED_SLIDER_TROUGH,
     WIDGET_SB_SLIDER,
     WIDGET_SB_BUTTON,
+    WIDGET_SB_BGND,
     WIDGET_TROUGH,
     WIDGET_CHECKBOX,
-    WIDGET_TOGGLE_BUTTON,
+    WIDGET_RADIO_BUTTON,
+    WIDGET_COMBO,
+    WIDGET_COMBO_BUTTON,
     WIDGET_MENU_ITEM,
     WIDGET_PROGRESSBAR,
+    WIDGET_PBAR_TROUGH,
 #ifndef __cplusplus
+    WIDGET_ENTRY_PROGRESSBAR,
+    WIDGET_TOGGLE_BUTTON,
     WIDGET_SPIN_UP,
     WIDGET_SPIN_DOWN,
+    WIDGET_UNCOLOURED_MO_BUTTON,
+#else
+    WIDGET_CHECKBUTTON,        // Qt4 only
+    WIDGET_MDI_WINDOW,         // Qt4 only
+    WIDGET_MDI_WINDOW_TITLE,   // Qt4 only
+    WIDGET_MDI_WINDOW_BUTTON,  // Qt4 only
+    WIDGET_DOCK_WIDGET_TITLE,
+    WIDGET_DIAL,
 #endif
     WIDGET_SPIN,
-#ifdef __cplusplus
-    WIDGET_CHECKBUTTON,  // Qt4 only
-    WIDGET_MDI_WINDOW,   // Qt4 only
-    WIDGET_MDI_WINDOW_TITLE,   // Qt4 only
     WIDGET_ENTRY,
+    WIDGET_SCROLLVIEW,
+    WIDGET_SELECTION,
     WIDGET_FRAME,
     WIDGET_NO_ETCH_BTN,
-#endif
+    WIDGET_MENU_BUTTON,        // Qt4 only
+    WIDGET_FOCUS,
+    WIDGET_TAB_FRAME,
     WIDGET_OTHER
 } EWidget;
 
 typedef enum
 {
-    APPEARANCE_FLAT,
+    APP_ALLOW_BASIC,
+    APP_ALLOW_FADE,
+    APP_ALLOW_STRIPED,
+    APP_ALLOW_NONE
+} EAppAllow;
+
+typedef enum
+{
+    APPEARANCE_CUSTOM1,
+    APPEARANCE_CUSTOM2,
+    APPEARANCE_CUSTOM3,
+    APPEARANCE_CUSTOM4,
+    APPEARANCE_CUSTOM5,
+    APPEARANCE_CUSTOM6,
+    APPEARANCE_CUSTOM7,
+    APPEARANCE_CUSTOM8,
+    APPEARANCE_CUSTOM9,
+    APPEARANCE_CUSTOM10,
+    APPEARANCE_CUSTOM11,
+    APPEARANCE_CUSTOM12,
+    APPEARANCE_CUSTOM13,
+    APPEARANCE_CUSTOM14,
+    APPEARANCE_CUSTOM15,
+    APPEARANCE_CUSTOM16,
+    APPEARANCE_CUSTOM17,
+    APPEARANCE_CUSTOM18,
+    APPEARANCE_CUSTOM19,
+    APPEARANCE_CUSTOM20,
+    APPEARANCE_CUSTOM21,
+    APPEARANCE_CUSTOM22,
+
+        NUM_CUSTOM_GRAD,
+
+    APPEARANCE_FLAT = NUM_CUSTOM_GRAD,
     APPEARANCE_RAISED,
     APPEARANCE_DULL_GLASS,
     APPEARANCE_SHINY_GLASS,
+    APPEARANCE_AGUA,
+    APPEARANCE_SOFT_GRADIENT,
     APPEARANCE_GRADIENT,
+    APPEARANCE_HARSH_GRADIENT,
     APPEARANCE_INVERTED,
+    APPEARANCE_DARK_INVERTED,
     APPEARANCE_SPLIT_GRADIENT,
-    APPEARANCE_BEVELLED
+    APPEARANCE_BEVELLED,
+        APPEARANCE_FADE, /* Only for poupmenu items! */
+        APPEARANCE_STRIPED = APPEARANCE_FADE, /* Only for windows  and menus */
+        APPEARANCE_NONE = APPEARANCE_FADE, /* Only for titlebars */
+        APPEARANCE_LV_BEVELLED, /* To be used only with getGradient */
+        APPEARANCE_AGUA_MOD,
+        APPEARANCE_LV_AGUA,
+    NUM_STD_APP = (APPEARANCE_LV_AGUA-NUM_CUSTOM_GRAD)+1
 } EAppearance;
 
-#define IS_SLIDER(W)        (WIDGET_SLIDER==W || WIDGET_SB_SLIDER==W)
-#define IS_TOGGLE_BUTTON(W) (WIDGET_TOGGLE_BUTTON==W || WIDGET_CHECKBOX==W)
+#define IS_SLIDER(W)        (WIDGET_SLIDER==(W) || WIDGET_SB_SLIDER==(W))
+#define IS_TROUGH(W)        (WIDGET_SLIDER_TROUGH==(W) || WIDGET_PBAR_TROUGH==(W) || WIDGET_TROUGH==(W) || WIDGET_FILLED_SLIDER_TROUGH==(W))
+#ifndef __cplusplus
+#define IS_TOGGLE_BUTTON(W) (WIDGET_TOGGLE_BUTTON==(W) || WIDGET_CHECKBOX==(W))
+#endif
 
 typedef enum
 {
@@ -379,49 +716,54 @@ typedef enum
     CORNER_BL = 0x8
 } ECornerBits;
 
-#define ROUNDED_NONE            0x0
-#define ROUNDED_TOP             (CORNER_TL|CORNER_TR)
-#define ROUNDED_BOTTOM          (CORNER_BL|CORNER_BR)
-#define ROUNDED_LEFT            (CORNER_TL|CORNER_BL)
-#define ROUNDED_RIGHT           (CORNER_TR|CORNER_BR)
-#define ROUNDED_TOPRIGHT        CORNER_TR
-#define ROUNDED_BOTTOMRIGHT     CORNER_BR
-#define ROUNDED_TOPLEFT         CORNER_TL
-#define ROUNDED_BOTTOMLEFT      CORNER_BL
-#define ROUNDED_ALL             (CORNER_TL|CORNER_TR|CORNER_BR|CORNER_BL)
+#define ROUNDED_NONE        0x0
+#define ROUNDED_TOP         (CORNER_TL|CORNER_TR)
+#define ROUNDED_BOTTOM      (CORNER_BL|CORNER_BR)
+#define ROUNDED_LEFT        (CORNER_TL|CORNER_BL)
+#define ROUNDED_RIGHT       (CORNER_TR|CORNER_BR)
+#define ROUNDED_TOPRIGHT    CORNER_TR
+#define ROUNDED_BOTTOMRIGHT CORNER_BR
+#define ROUNDED_TOPLEFT     CORNER_TL
+#define ROUNDED_BOTTOMLEFT  CORNER_BL
+#define ROUNDED_ALL         (CORNER_TL|CORNER_TR|CORNER_BR|CORNER_BL)
 
 typedef enum
 {
     IND_CORNER,
     IND_FONT_COLOR,
     IND_COLORED,
+    IND_TINT,
+    IND_GLOW,
+    IND_DARKEN,
+    IND_SELECTED,
     IND_NONE
 } EDefBtnIndicator;
 
 typedef enum
 {
+    LINE_NONE,
     LINE_SUNKEN,
     LINE_FLAT,
     LINE_DOTS,
-    LINE_DASHES
+    LINE_1DOT,
+    LINE_DASHES,
 } ELine;
 
-#define LINE_NONE LINE_DASHES
-
 typedef enum
 {
     TB_NONE,
     TB_LIGHT,
     TB_DARK,
     TB_LIGHT_ALL,
-    TB_DARK_ALL,
+    TB_DARK_ALL
 } ETBarBorder;
 
 typedef enum
 {
     BORDER_FLAT,
     BORDER_RAISED,
-    BORDER_SUNKEN
+    BORDER_SUNKEN,
+    BORDER_LIGHT
 } EBorder;
 
 /*
@@ -433,16 +775,26 @@ typedef enum
 {
     SHADE_NONE,
     SHADE_CUSTOM,
-    SHADE_BLEND_SELECTED,  /* In the case of check/radios this is SHADE_SELECTED */
-      SHADE_SELECTED,
-      SHADE_DARKEN = SHADE_SELECTED ,  /* For menubar only! */
+    SHADE_SELECTED,
+    SHADE_BLEND_SELECTED,
+    SHADE_DARKEN,
+    SHADE_WINDOW_BORDER
 } EShade;
 
+typedef enum
+{
+    ECOLOR_BASE,
+    ECOLOR_BACKGROUND,
+    ECOLOR_DARK,
+} EColor;
+
 typedef enum
 {
     ROUND_NONE,
     ROUND_SLIGHT,
-    ROUND_FULL
+    ROUND_FULL,
+    ROUND_EXTRA,
+    ROUND_MAX
 } ERound;
 
 typedef enum
@@ -454,68 +806,439 @@ typedef enum
     SCROLLBAR_NONE
 } EScrollbar;
 
+typedef enum
+{
+    FRAME_NONE,
+    FRAME_PLAIN,
+    FRAME_LINE,
+    FRAME_SHADED,
+    FRAME_FADED
+} EFrame;
+
+typedef enum
+{
+    GB_LBL_BOLD     = 0x01,
+    GB_LBL_CENTRED  = 0x02,
+    GB_LBL_INSIDE   = 0x04,
+    GB_LBL_OUTSIDE  = 0x08
+} EGBLabel;
+
+#define NO_FRAME(A) (FRAME_NONE==(A) || FRAME_LINE==(A))
+
 typedef enum
 {
     MO_NONE,
     MO_COLORED,
-    MO_PLASTIK
+    MO_COLORED_THICK,
+    MO_PLASTIK,
+    MO_GLOW
 } EMouseOver;
 
 typedef enum
 {
     STRIPE_NONE,
     STRIPE_PLAIN,
-    STRIPE_DIAGONAL
+    STRIPE_DIAGONAL,
+    STRIPE_FADE
 } EStripe;
 
 typedef enum
 {
     SLIDER_PLAIN,
     SLIDER_ROUND,
+    SLIDER_PLAIN_ROTATED,
+    SLIDER_ROUND_ROTATED,
     SLIDER_TRIANGULAR,
+    SLIDER_CIRCULAR
 } ESliderStyle;
 
-#define DEF_IND_STR                "fontcolor"
-#define DEF_LINE_STR               "dots"
-#define DEF_TB_BORDER              "none"
-#define DEF_APPEARANCE_STR         "bevelled"
-#define DEF_MENU_APPEARANCE_STR    "gradient"
-#define DEF_TOOLBAR_APPEARANCE_STR "gradient"
-#define DEF_SLIDER_SHADE_STR       "selected"
-#define DEF_TBS_STR                "dots"
-#define DEF_COLOR_STR              "background"
-#define DEF_TOOLBAR_SHADE_STR      "none"
+#define ROTATED_SLIDER (SLIDER_PLAIN_ROTATED==opts.sliderStyle || SLIDER_ROUND_ROTATED==opts.sliderStyle)
 
-#ifdef QTC_COMMON_FUNCTIONS
-static double getWidgetShade(EWidget w, bool light, bool sunken, EAppearance app)
+typedef enum
 {
-    switch(w)
+    FOCUS_STANDARD,
+    FOCUS_RECTANGLE,
+    FOCUS_FULL,
+    FOCUS_FILLED,
+    FOCUS_LINE,
+    FOCUS_GLOW
+} EFocus;
+
+typedef enum
+{
+    TAB_MO_TOP,
+    TAB_MO_BOTTOM,
+    TAB_MO_GLOW
+} ETabMo;
+
+typedef enum
+{
+    GT_HORIZ,
+    GT_VERT
+} EGradType;
+
+typedef enum
+{
+    GLOW_NONE,
+    GLOW_START,
+    GLOW_MIDDLE,
+    GLOW_END
+} EGlow;
+
+#define FULL_FOCUS     (FOCUS_FULL==opts.focus  || FOCUS_FILLED==opts.focus)
+
+enum
+{
+    HIDE_NONE     = 0x00,
+    HIDE_KEYBOARD = 0x01,
+    HIDE_KWIN     = 0x02
+};
+
+#if defined __cplusplus
+typedef enum
+{
+    ALIGN_LEFT,
+    ALIGN_CENTER,
+    ALIGN_FULL_CENTER,
+    ALIGN_RIGHT
+} EAlign;
+#endif
+
+#ifdef __cplusplus
+inline
+#else
+static
+#endif
+bool equal(double d1, double d2)
+{
+    return (fabs(d1 - d2) < 0.0001);
+}
+
+#ifdef __cplusplus
+struct GradientStop
+#else
+typedef struct
+#endif
+{
+#ifdef __cplusplus
+    GradientStop(double p=0.0, double v=0.0, double a=1.0) : pos(p), val(v), alpha(a) { }
+
+    bool operator==(const GradientStop &o) const
     {
-        case WIDGET_TROUGH:
-            return light ? SHADE_SBAR_LIGHT : SHADE_SBAR_DARK;
-        case WIDGET_SLIDER_TROUGH:
-            return light ? SHADE_SLIDER_LIGHT : SHADE_SLIDER_DARK;
-        case WIDGET_MENU_ITEM:
-            if(APPEARANCE_DULL_GLASS!=app && APPEARANCE_SHINY_GLASS!=app)
-                return light ? SHADE_BEVEL_MENU_ITEM_LIGHT : SHADE_BEVEL_MENU_ITEM_DARK;
-        default:
-            return light
-                    ? sunken
-                        ? SHADE_BEVEL_GRAD_SEL_LIGHT
-                        : SHADE_BEVEL_GRAD_LIGHT
-                    : sunken
-                        ? SHADE_BEVEL_GRAD_SEL_DARK
-                        : SHADE_BEVEL_GRAD_DARK;
+        return equal(pos, o.pos) && equal(val, o.val) && equal(alpha, o.alpha);
+    }
+
+    bool operator<(const GradientStop &o) const
+    {
+        return pos<o.pos || (equal(pos, o.pos) && (val<o.val || (equal(val, o.val) && alpha<o.alpha)));
     }
+#endif
+
+    double pos,
+           val,
+           alpha;
 }
+#ifndef __cplusplus
+GradientStop
+#endif
+;
 
-#define QTC_MIN(a, b) ((a) < (b) ? (a) : (b))
-#define QTC_MAX(a, b) ((b) < (a) ? (a) : (b))
+typedef enum
+{
+    GB_NONE,
+    GB_LIGHT,
+    GB_3D,
+    GB_3D_FULL,
+    GB_SHINE
+} EGradientBorder;
 
-static bool equal(double d1, double d2)
+typedef enum
 {
-    return (fabs(d1 - d2) < 0.0001);
+    LV_NONE,
+    LV_NEW,
+    LV_OLD
+} ELvLines;
+
+typedef struct
+{
+    int titleHeight,
+        toolTitleHeight,
+        bottom,
+        sides;
+} WindowBorders;
+
+#ifdef __cplusplus
+struct GradientStopCont : public std::set<GradientStop>
+{
+    GradientStopCont fix() const
+    {
+        GradientStopCont c(*this);
+        if(size())
+        {
+            GradientStopCont::const_iterator   first(c.begin());
+            GradientStopCont::reverse_iterator last(c.rbegin());
+
+            if((*first).pos>0.001)
+                c.insert(GradientStop(0.0, 1.0));
+            if((*last).pos<0.999)
+                c.insert(GradientStop(1.0, 1.0));
+        }
+        return c;                                  
+    }
+};
+struct Gradient
+#else
+typedef struct
+#endif
+{
+#ifdef __cplusplus
+    Gradient() : border(GB_3D) { }
+
+#ifdef CONFIG_DIALOG
+    bool operator==(const Gradient &o) const
+    {
+        return border==o.border && stops==o.stops;
+    }
+#endif
+#endif
+    EGradientBorder  border;
+#ifdef __cplusplus
+    GradientStopCont stops;
+#else
+    int              numStops;
+    GradientStop     *stops;
+#endif
 }
+#ifndef __cplusplus
+Gradient
+#endif
+;
+
+#define USE_CUSTOM_SHADES(A) ((A).customShades[0]>0.00001)
+#define USE_CUSTOM_ALPHAS(A) ((A).customAlphas[0]>0.00001)
+
+#ifdef __cplusplus
+typedef std::map<EAppearance, Gradient> GradientCont;
+struct Options
+#else
+typedef struct
+#endif
+{
+
+    int              version,
+                     contrast,
+                     passwordChar,
+                     highlightFactor,
+                     lighterPopupMenuBgnd,
+                     menuDelay,
+                     sliderWidth,
+                     tabBgnd,
+                     colorSelTab,
+                     expanderHighlight,
+                     crHighlight,
+                     splitterHighlight,
+                     crSize,
+                     gbFactor,
+                     gbLabel;
+    ERound           round;
+    bool             embolden,
+                     highlightTab,
+                     roundAllTabs,
+                     animatedProgress,
+#ifdef QTC_ENABLE_PARENTLESS_DIALOG_FIX_SUPPORT
+                     fixParentlessDialogs,
+#endif
+                     customMenuTextColor,
+                     menubarMouseOver,
+                     useHighlightForMenu,
+                     shadeMenubarOnlyWhenActive,
+                     thinnerMenuItems,
+                     thinnerBtns,
+                     lvButton,
+                     drawStatusBarFrames,
+                     fillSlider,
+                     roundMbTopOnly,
+                     gtkScrollViews,
+                     stdSidebarButtons,
+                     toolbarTabs,
+#ifdef __cplusplus
+                     gtkComboMenus,
+/*
+#else
+                     setDialogButtonOrder,
+*/
+#endif
+                     mapKdeIcons,
+#if defined CONFIG_DIALOG || (defined QT_VERSION && (QT_VERSION >= 0x040000)) || !defined __cplusplus
+                     gtkButtonOrder,
+                     fadeLines,
+#endif
+                     reorderGtkButtons,
+                     borderMenuitems,
+                     colorMenubarMouseOver,
+                     darkerBorders,
+                     vArrows,
+                     xCheck,
+                     crButton,
+                     smallRadio,
+                     fillProgress,
+                     comboSplitter,
+                     highlightScrollViews,
+                     sunkenScrollViews,
+                     etchEntry,
+                     colorSliderMouseOver,
+                     thinSbarGroove,
+                     flatSbarButtons,
+                     borderSbarGroove,
+                     borderProgress,
+                     popupBorder,
+                     unifySpinBtns,
+                     unifyCombo,
+                     unifySpin,
+                     borderTab,
+                     borderInactiveTab,
+                     doubleGtkComboArrow,
+                     menuIcons,
+#if defined CONFIG_DIALOG || (defined QT_VERSION && (QT_VERSION >= 0x040000))
+                     stdBtnSizes,
+#endif
+#if defined QT_VERSION && (QT_VERSION >= 0x040000)
+                     xbar,
+#endif
+                     forceAlternateLvCols,
+                     invertBotTab,
+                     boldProgress,
+                     coloredTbarMo,
+                     borderSelection,
+                     stripedSbar,
+                     shadePopupMenu;
+    EFrame           groupBox;
+    EGlow            glowProgress;
+    ELvLines         lvLines;
+    EGradType        bgndGrad,
+                     menuBgndGrad;
+    int              menubarHiding,
+                     statusbarHiding,
+                     square,
+                     windowDrag,
+                     windowBorder,
+                     bgndOpacity,
+                     menuBgndOpacity,
+                     dlgOpacity;
+#if defined QT_VERSION && (QT_VERSION >= 0x040000)
+    int              dwtSettings;
+#endif
+#if defined CONFIG_DIALOG || (defined QT_VERSION && (QT_VERSION >= 0x040000))
+    int              titlebarButtons;
+    TBCols           titlebarButtonColors;
+    ETitleBarIcon    titlebarIcon;
+#endif
+    EStripe          stripedProgress;
+    ESliderStyle     sliderStyle;
+    EMouseOver       coloredMouseOver;
+    ETBarBorder      toolbarBorders;
+    EDefBtnIndicator defBtnIndicator;
+    ELine            sliderThumbs,
+                     handles,
+                     toolbarSeparators,
+                     splitters;
+    ETabMo           tabMouseOver;
+/* NOTE: If add an appearance setting, increase the number of custmo gradients to match! */
+    EAppearance      appearance,
+                     bgndAppearance,
+                     menuBgndAppearance,
+                     menubarAppearance,
+                     menuitemAppearance,
+                     toolbarAppearance,
+                     lvAppearance,
+                     tabAppearance,
+                     activeTabAppearance,
+                     sliderAppearance,
+                     titlebarAppearance,
+                     inactiveTitlebarAppearance,
+#ifdef __cplusplus
+                     titlebarButtonAppearance,
+                     dwtAppearance,
+#endif
+                     selectionAppearance,
+                     menuStripeAppearance,
+                     progressAppearance,
+                     progressGrooveAppearance,
+                     grooveAppearance,
+                     sunkenAppearance,
+                     sbarBgndAppearance,
+                     sliderFill,
+                     tooltipAppearance;
+    EShade           shadeSliders,
+                     shadeMenubars,
+                     menuStripe,
+                     shadeCheckRadio,
+                     comboBtn,
+                     sortedLv,
+                     crColor,
+                     progressColor;
+    EColor           progressGrooveColor;
+    EEffect          buttonEffect;
+    EScrollbar       scrollbarType;
+    EFocus           focus;
+    color            customMenubarsColor,
+                     customSlidersColor,
+                     customMenuNormTextColor,
+                     customMenuSelTextColor,
+                     customMenuStripeColor,
+                     customCheckRadioColor,
+                     customComboBtnColor,
+                     customSortedLvColor,
+                     customCrBgndColor,
+                     customProgressColor;
+    EShading         shading;
+#if defined __cplusplus
+    EAlign           titlebarAlignment;
+    EEffect          titlebarEffect;
+    bool             centerTabText;
+#endif
+    double           customShades[NUM_STD_SHADES],
+                     customAlphas[NUM_STD_ALPHAS];
+#ifdef __cplusplus
+    GradientCont     customGradient;
+#else
+    Gradient         *customGradient[NUM_CUSTOM_GRAD];
+#endif
+    QtCImage         bgndImage,
+                     menuBgndImage;
+#if !defined __cplusplus || (defined QT_VERSION && (QT_VERSION >= 0x040000))
+    /* NOTE: If add any more settings here, need to alter copyOpts/freeOpts/defaultSettings in config_file.c */
+    Strings          noBgndGradientApps,
+                     noBgndOpacityApps,
+                     noMenuBgndOpacityApps,
+                     noBgndImageApps;
+#endif
+#ifdef QTC_ENABLE_PARENTLESS_DIALOG_FIX_SUPPORT
+    Strings          noDlgFixApps;
+#endif
+    Strings          noMenuStripeApps;
+#if defined QT_VERSION && (QT_VERSION >= 0x040000)
+    Strings          menubarApps,
+                     statusbarApps,
+                     useQtFileDialogApps,
+                     windowDragWhiteList,
+                     windowDragBlackList;
+#endif
+
+#ifndef __cplusplus
+} Options;
+#else
+};
+#endif
+
+#ifdef COMMON_FUNCTIONS
+
+#ifndef MIN
+#define MIN(a, b) ((a) < (b) ? (a) : (b))
+#endif
+#ifndef MAX
+#define MAX(a, b) ((b) < (a) ? (a) : (b))
+#endif
 
 /* Taken from rgb->hsl routines taken from KColor
     Copyright 2007 Matthew Woehlke <mw_triad@users.sourceforge.net>
@@ -551,8 +1274,8 @@ static inline double h2c(double h, double m1, double m2)
 
 static inline void rgbToHsl(double r, double g, double b, double *h, double *s, double *l)
 {
-    double min=QTC_MIN(QTC_MIN(r, g), b),
-           max=QTC_MAX(QTC_MAX(r, g), b);
+    double min=MIN(MIN(r, g), b),
+           max=MAX(MAX(r, g), b);
 
     *l = 0.5 * (max + min);
     *s = 0.0;
@@ -600,29 +1323,30 @@ static inline void hslToRgb(double h, double s, double l, double *r, double *g,
 
 static void rgbToHsv(double r, double g, double b, double *h, double *s, double *v)
 {
-    double min=QTC_MIN(QTC_MIN(r, g), b),
-           max=QTC_MAX(QTC_MAX(r, g), b),
+    double min=MIN(MIN(r, g), b),
+           max=MAX(MAX(r, g), b),
            delta=max - min;
 
     *v=max;
     if(max != 0)
         *s=delta / max;
     else
-    {
-        /* r=g=b=0                  s=0, v is undefined */
         *s=0;
-        *h=-1;
-        return;
-    }
-    if(r == max)
-        *h=(g - b) / delta;         /* between yellow & magenta */
-    else if(g == max)
-        *h=2 + (b - r) / delta;     /* between cyan & yellow */
+
+    if (*s==0.0)
+        *h = 0.0;
     else
-        *h=4 + (r - g) / delta;     /* between magenta & cyan */
-    *h *= 60;                       /* degrees */
-    if(*h < 0)
-        *h += 360;
+    {
+        if(r == max)
+            *h=(g - b) / delta;         /* between yellow & magenta */
+        else if(g == max)
+            *h=2 + (b - r) / delta;     /* between cyan & yellow */
+        else if(b == max)
+            *h=4 + (r - g) / delta;     /* between magenta & cyan */
+        *h *= 60;                       /* degrees */
+        if(*h < 0)
+            *h += 360;
+    }
 }
 
 static void hsvToRgb(double *r, double *g, double *b, double h, double s, double v)
@@ -692,10 +1416,26 @@ inline int limit(double c)
 }
 #endif
 
+#if defined QT_VERSION && (QT_VERSION >= 0x040000) && !defined QTC_QT_ONLY
+#include <KDE/KColorUtils>
+#define tint(COLA, COLB, FACTOR) KColorUtils::tint((COLA), (COLB), (FACTOR))
+#define midColor(COLA, COLB) KColorUtils::mix((COLA), (COLB), 0.5)
+#else
+#include "colorutils.c"
+#ifdef __cplusplus
+#define tint(COLA, COLB, FACTOR) ColorUtils_tint(&(COLA), &(COLB), (FACTOR))
+#define midColor(COLA, COLB) ColorUtils_mix(&(COLA), &(COLB), 0.5)
+#define midColorF(COLA, COLB, FACTOR) ColorUtils_mix(&(COLA), &(COLB), FACTOR-0.5)
+#else
+#define tint(COLA, COLB, FACTOR) ColorUtils_tint((COLA), (COLB), (FACTOR))
+#define midColor(COLA, COLB) ColorUtils_mix((COLA), (COLB), 0.5)
+#endif
+#endif
+
 #ifdef __cplusplus
-static void shade(const color &ca, color *cb, double k)
+static void shade(const Options *opts, const color &ca, color *cb, double k)
 #else
-static void shade(const color *ca, color *cb, double k)
+static void shade(const Options *opts, const color *ca, color *cb, double k)
 #endif
 {
     if(equal(k, 1.0))
@@ -709,7 +1449,7 @@ static void shade(const color *ca, color *cb, double k)
 #endif
     }
     else
-        switch(shading)
+        switch(opts->shading)
         {
             case SHADING_SIMPLE:
             {
@@ -782,11 +1522,39 @@ static void shade(const color *ca, color *cb, double k)
                 cb->red=limit(r*65535.0);
                 cb->green=limit(g*65535.0);
                 cb->blue=limit(b*65535.0);
+    #endif
+                break;
+            }
+            case SHADING_HCY:
+            {
+    #define HCY_FACTOR 0.15
+    #if defined QT_VERSION && (QT_VERSION >= 0x040000) && !defined QTC_QT_ONLY
+                if(k>1.0)
+                    *cb=KColorUtils::lighten(ca, (k*(1+HCY_FACTOR))-1.0, 1.0);
+                else
+                    *cb=KColorUtils::darken(ca, 1.0-(k*(1-HCY_FACTOR)), 1.0);
+    #elif defined __cplusplus
+                if(k>1.0)
+                    *cb=ColorUtils_lighten(&ca, (k*(1+HCY_FACTOR))-1.0, 1.0);
+                else
+                    *cb=ColorUtils_darken(&ca, 1.0-(k*(1-HCY_FACTOR)), 1.0);
+    #else
+                if(k>1.0)
+                    *cb=ColorUtils_lighten(ca, (k*(1+HCY_FACTOR))-1.0, 1.0);
+                else
+                    *cb=ColorUtils_darken(ca, 1.0-(k*(1-HCY_FACTOR)), 1.0);
     #endif
             }
         }
+#if defined __cplusplus && defined QT_VERSION && (QT_VERSION >= 0x040000)
+    cb->setAlpha(ca.alpha());
+#endif
+#ifndef __cplusplus
+    cb->pixel = ca->pixel;
+#endif
 }
 
+#if (!defined CONFIG_DIALOG)
 static unsigned char checkBounds(int num)
 {
     return num < 0   ? 0   :
@@ -835,121 +1603,445 @@ static void adjustPix(unsigned char *data, int numChannels, int w, int h, int st
         offset+=stride;
     }
 }
-#endif /* QTC_COMMON_NO_FUNCTIONS */
+#endif
+
+static void setupGradient(Gradient *grad, EGradientBorder border, int numStops, ...)
+{
+    va_list  ap;
+    int      i;
 
+    grad->border=border;
+#ifndef __cplusplus
+    grad->numStops=numStops;
+    grad->stops=malloc(sizeof(GradientStop) * numStops);
+#endif
+    va_start(ap, numStops);
+    for(i=0; i<numStops; ++i)
+    {
+        double pos=va_arg(ap, double),
+               val=va_arg(ap, double);
 #ifdef __cplusplus
-struct Options
+        grad->stops.insert(GradientStop(pos, val));
 #else
-typedef struct
+        grad->stops[i].pos=pos;
+        grad->stops[i].val=val;
+        grad->stops[i].alpha=1.0;
 #endif
+    }
+    va_end(ap);
+}
+
+static const Gradient * getGradient(EAppearance app, const Options *opts)
 {
-    int              contrast,
-                     passwordChar;
-    double           highlightFactor;
-    ERound           round;
-    bool             embolden,
-                     lighterPopupMenuBgnd,
-                     highlightTab,
-                     colorSelTab,
-                     animatedProgress,
-                     fixParentlessDialogs,
-                     customMenuTextColor,
-                     menubarMouseOver,
-                     shadeMenubarOnlyWhenActive,
-                     thinnerMenuItems,
-#ifndef QTC_PLAIN_FOCUS_ONLY
-                     stdFocus,
-#endif
-                     lvLines,
-                     drawStatusBarFrames,
-                     fillSlider,
-                     roundMbTopOnly,
-                     gradientPbGroove,
+    if(IS_CUSTOM(app))
+    {
 #ifdef __cplusplus
-                     stdSidebarButtons,
-                     gtkScrollViews,
-                     gtkComboMenus,
-/*
+        GradientCont::const_iterator grad(opts->customGradient.find(app));
+
+        if(grad!=opts->customGradient.end())
+            return &((*grad).second);
 #else
-                     setDialogButtonOrder,
-*/
-#endif
-#if !defined __cplusplus || defined QTC_CONFIG_DIALOG
-                     mapKdeIcons,
-#endif
-#if defined QTC_CONFIG_DIALOG || (defined QT_VERSION && (QT_VERSION >= 0x040000)) || !defined __cplusplus
-                     gtkButtonOrder,
+        Gradient *grad=opts->customGradient[app-APPEARANCE_CUSTOM1];
+
+        if(grad)
+            return grad;
 #endif
-                     borderMenuitems,
-                     colorMenubarMouseOver,
-                     darkerBorders,
-                     vArrows,
-                     xCheck,
-                     framelessGroupBoxes,
-                     inactiveHighlight;
-    EStripe          stripedProgress;
-    ESliderStyle     sliderStyle;
-    EMouseOver       coloredMouseOver;
-    ETBarBorder      toolbarBorders;
-    EDefBtnIndicator defBtnIndicator;
-    ELine            sliderThumbs,
-                     handles,
-                     toolbarSeparators,
-                     splitters;
-    EAppearance      appearance,
-                     menubarAppearance,
-                     menuitemAppearance,
-                     toolbarAppearance,
-                     lvAppearance,
-                     tabAppearance,
-                     sliderAppearance,
-                     progressAppearance;
-    EShade           shadeSliders,
-                     shadeMenubars,
-                     shadeCheckRadio;
-    EEffect          buttonEffect;
-    EScrollbar       scrollbarType;
-    color            customMenubarsColor,
-                     customSlidersColor,
-                     customMenuNormTextColor,
-                     customMenuSelTextColor,
-                     customCheckRadioColor;
-    #ifdef QTC_CONFIG_DIALOG
-    EShading         shading;
-    #endif
-#ifndef __cplusplus
-} Options;
-#else
-};
+        app=APPEARANCE_RAISED;
+    }
+
+    {
+    static Gradient stdGradients[NUM_STD_APP];
+    static bool     init=false;
+
+    if(!init)
+    {
+        setupGradient(&stdGradients[APPEARANCE_FLAT-APPEARANCE_FLAT], GB_3D,2,0.0,1.0,1.0,1.0);
+        setupGradient(&stdGradients[APPEARANCE_RAISED-APPEARANCE_FLAT], GB_3D_FULL,2,0.0,1.0,1.0,1.0);
+        setupGradient(&stdGradients[APPEARANCE_DULL_GLASS-APPEARANCE_FLAT], GB_LIGHT,4,0.0,1.05,0.499,0.984,0.5,0.928,1.0,1.0);
+        setupGradient(&stdGradients[APPEARANCE_SHINY_GLASS-APPEARANCE_FLAT], GB_LIGHT,4,0.0,1.2,0.499,0.984,0.5,0.9,1.0,1.06);
+        setupGradient(&stdGradients[APPEARANCE_AGUA-APPEARANCE_FLAT], GB_SHINE, 2,0.0,0.6,1.0,1.1);
+        setupGradient(&stdGradients[APPEARANCE_SOFT_GRADIENT-APPEARANCE_FLAT], GB_3D,2,0.0,1.04,1.0,0.98);
+        setupGradient(&stdGradients[APPEARANCE_GRADIENT-APPEARANCE_FLAT], GB_3D,2,0.0,1.1,1.0,0.94);
+        setupGradient(&stdGradients[APPEARANCE_HARSH_GRADIENT-APPEARANCE_FLAT], GB_3D,2,0.0,1.3,1.0,0.925);
+        setupGradient(&stdGradients[APPEARANCE_INVERTED-APPEARANCE_FLAT], GB_3D,2,0.0,0.93,1.0,1.04);
+        setupGradient(&stdGradients[APPEARANCE_DARK_INVERTED-APPEARANCE_FLAT], GB_NONE,3,0.0,0.8,0.7,0.95,1.0,1.0);
+        setupGradient(&stdGradients[APPEARANCE_SPLIT_GRADIENT-APPEARANCE_FLAT], GB_3D,4,0.0,1.06,0.499,1.004,0.5,0.986,1.0,0.92);
+        setupGradient(&stdGradients[APPEARANCE_BEVELLED-APPEARANCE_FLAT], GB_3D,4,0.0,1.05,0.1,1.02,0.9,0.985,1.0,0.94);
+        setupGradient(&stdGradients[APPEARANCE_LV_BEVELLED-APPEARANCE_FLAT], GB_3D,3,0.0,1.00,0.85,1.0,1.0,0.90);
+        setupGradient(&stdGradients[APPEARANCE_AGUA_MOD-APPEARANCE_FLAT], GB_NONE,3,0.0,1.5,0.49,0.85,1.0,1.3);
+        setupGradient(&stdGradients[APPEARANCE_LV_AGUA-APPEARANCE_FLAT], GB_NONE,4,0.0,0.98,0.35,0.95,0.4,0.93,1.0,1.15);
+        init=true;
+    }
+
+    return &stdGradients[app-APPEARANCE_FLAT];
+    }
+
+    return 0L; /* Will never happen! */
+}
+
 #endif
 
-#if defined QTC_COMMON_FUNCTIONS && !defined QTC_CONFIG_DIALOG
+#if defined COMMON_FUNCTIONS && !defined CONFIG_DIALOG
+
+#ifdef __cplusplus
+static EAppearance widgetApp(EWidget w, const Options *opts, bool active=true)
+#else
 static EAppearance widgetApp(EWidget w, const Options *opts)
+#endif
 {
     switch(w)
     {
+        case WIDGET_SB_BGND:
+            return opts->sbarBgndAppearance;
         case WIDGET_LISTVIEW_HEADER:
             return opts->lvAppearance;
         case WIDGET_SB_BUTTON:
         case WIDGET_SLIDER:
         case WIDGET_SB_SLIDER:
             return opts->sliderAppearance;
+        case WIDGET_FILLED_SLIDER_TROUGH:
+            return opts->sliderFill;
         case WIDGET_TAB_TOP:
         case WIDGET_TAB_BOT:
             return opts->tabAppearance;
         case WIDGET_MENU_ITEM:
             return opts->menuitemAppearance;
         case WIDGET_PROGRESSBAR:
+#ifndef __cplusplus
+        case WIDGET_ENTRY_PROGRESSBAR:
+#endif
             return opts->progressAppearance;
+        case WIDGET_PBAR_TROUGH:
+            return opts->progressGrooveAppearance;
+        case WIDGET_SELECTION:
+            return opts->selectionAppearance;
+#ifdef __cplusplus
+        case WIDGET_DOCK_WIDGET_TITLE:
+            return opts->dwtAppearance;
+        case WIDGET_MDI_WINDOW:
+        case WIDGET_MDI_WINDOW_TITLE:
+            return active ? opts->titlebarAppearance : opts->inactiveTitlebarAppearance;
+        case WIDGET_MDI_WINDOW_BUTTON:
+            return opts->titlebarButtonAppearance;
+        case WIDGET_DIAL:
+            return IS_FLAT(opts->appearance) ? APPEARANCE_RAISED : APPEARANCE_SOFT_GRADIENT;
+#endif
+        case WIDGET_TROUGH:
         case WIDGET_SLIDER_TROUGH:
-            return APPEARANCE_FLAT==opts->appearance || APPEARANCE_RAISED==opts->appearance
-                    ? APPEARANCE_FLAT : APPEARANCE_GRADIENT;
+            return opts->grooveAppearance;
+#ifndef __cplusplus
+        case WIDGET_SPIN_UP:
+        case WIDGET_SPIN_DOWN:
+#endif
+        case WIDGET_SPIN:
+            return MODIFY_AGUA(opts->appearance);
         default:
             break;
     }
 
     return opts->appearance;
 };
+
+#define MIN_ROUND_FULL_SIZE     8
+#ifdef __cplusplus
+#define MIN_ROUND_EXTRA_SIZE(W) (WIDGET_SPIN==(W) ? 7 : 14)
+#else
+#define MIN_ROUND_EXTRA_SIZE(W) (WIDGET_SPIN_UP==(W) || WIDGET_SPIN_DOWN==(W) || WIDGET_SPIN==(W) ? 7 : 14)
+#endif
+#define MIN_ROUND_MAX_HEIGHT    12
+#define MIN_ROUND_MAX_WIDTH     24
+
+#if !defined __cplusplus || (defined QT_VERSION && (QT_VERSION >= 0x040000))
+
+#if defined __cplusplus
+#define EXTRA_INNER_RADIUS   3.5
+#define EXTRA_OUTER_RADIUS   4.5
+#define EXTRA_ETCH_RADIUS    5.5
+#define FULL_INNER_RADIUS    1.5
+#define FULL_OUTER_RADIUS    2.5
+#define FULL_ETCH_RADIUS     3.5
+
+#if defined QT_VERSION && (QT_VERSION < 0x040600)
+#define SLIGHT_INNER_RADIUS  0.5
+#define SLIGHT_OUTER_RADIUS  1.5
+#define SLIGHT_ETCH_RADIUS   2.5
+#else
+#define SLIGHT_INNER_RADIUS  0.75
+#define SLIGHT_OUTER_RADIUS  1.75
+#define SLIGHT_ETCH_RADIUS   2.75
 #endif
 
+#else
+#define EXTRA_INNER_RADIUS   4
+#define EXTRA_OUTER_RADIUS   5
+#define EXTRA_ETCH_RADIUS    6
+#define FULL_INNER_RADIUS    2
+#define FULL_OUTER_RADIUS    3
+#define FULL_ETCH_RADIUS     4
+#define SLIGHT_INNER_RADIUS  1
+#define SLIGHT_OUTER_RADIUS  2
+#define SLIGHT_ETCH_RADIUS   3
 #endif
+
+#define MAX_RADIUS_INTERNAL 9.0
+#define MAX_RADIUS_EXTERNAL (MAX_RADIUS_INTERNAL+2.0)
+
+typedef enum
+{
+    RADIUS_SELECTION,
+    RADIUS_INTERNAL,
+    RADIUS_EXTERNAL,
+    RADIUS_ETCH
+} ERadius;
+
+#ifdef __cplusplus
+#define IS_MAX_ROUND_WIDGET(A) \
+            (WIDGET_STD_BUTTON==A || WIDGET_DEF_BUTTON==A /*|| WIDGET_MENU_BUTTON==A*/)
+#define IS_EXTRA_ROUND_WIDGET(A) \
+            (A!=WIDGET_MENU_ITEM && A!=WIDGET_TAB_FRAME && A!=WIDGET_PBAR_TROUGH && A!=WIDGET_PROGRESSBAR && \
+             A!=WIDGET_MDI_WINDOW && A!=WIDGET_MDI_WINDOW_TITLE)
+#else
+#define IS_MAX_ROUND_WIDGET(A) \
+            (WIDGET_STD_BUTTON==A || WIDGET_DEF_BUTTON==A || WIDGET_TOGGLE_BUTTON==A /*|| WIDGET_MENU_BUTTON==A*/)
+#define IS_EXTRA_ROUND_WIDGET(A) \
+            (A!=WIDGET_MENU_ITEM && A!=WIDGET_TAB_FRAME && A!=WIDGET_PBAR_TROUGH && A!=WIDGET_PROGRESSBAR)
+#endif
+
+#define CAN_EXTRA_ROUND(MOD) \
+            (IS_EXTRA_ROUND_WIDGET(widget) && \
+            (IS_SLIDER(widget) || WIDGET_TROUGH==widget || \
+            ( ( (w>(MIN_ROUND_EXTRA_SIZE(widget)+MOD)) || (WIDGET_NO_ETCH_BTN==widget || WIDGET_MENU_BUTTON==widget) ) &&\
+                                             (h>(MIN_ROUND_EXTRA_SIZE(widget)+MOD)))))
+#define CAN_FULL_ROUND(MOD) (w>(MIN_ROUND_FULL_SIZE+MOD) && h>(MIN_ROUND_FULL_SIZE+MOD))
+
+// **NOTE** MUST KEEP IN SYNC WITH getRadius/RADIUS_ETCH !!!
+ERound getWidgetRound(const Options *opts, int w, int h, EWidget widget)
+{
+    ERound r=opts->round;
+
+    if( ((WIDGET_PBAR_TROUGH==widget || WIDGET_PROGRESSBAR==widget) && (opts->square&SQUARE_PROGRESS)) ||
+        (WIDGET_ENTRY==widget && (opts->square&SQUARE_ENTRY)) )
+        return ROUND_NONE;
+
+    if((WIDGET_CHECKBOX==widget || WIDGET_FOCUS==widget) && ROUND_NONE!=r)
+        r=ROUND_SLIGHT;
+
+#if defined __cplusplus && (defined QT_VERSION && (QT_VERSION >= 0x040000))
+    if((WIDGET_MDI_WINDOW_BUTTON==widget && (opts->titlebarButtons&TITLEBAR_BUTTON_ROUND)) ||
+       WIDGET_RADIO_BUTTON==widget || WIDGET_DIAL==widget)
+       return ROUND_MAX;
+#endif
+#ifndef __cplusplus
+    if(WIDGET_RADIO_BUTTON==widget)
+       return ROUND_MAX;
+#endif
+
+#if !defined __cplusplus || (defined QT_VERSION && (QT_VERSION >= 0x040000))
+    if(WIDGET_SLIDER==widget &&
+       (SLIDER_ROUND==opts->sliderStyle || SLIDER_ROUND_ROTATED==opts->sliderStyle || SLIDER_CIRCULAR==opts->sliderStyle))
+        return ROUND_MAX;
+#endif
+
+    switch(r)
+    {
+        case ROUND_MAX:
+            if(IS_SLIDER(widget) || WIDGET_TROUGH==widget ||
+               (w>(MIN_ROUND_MAX_WIDTH+2) && h>(MIN_ROUND_MAX_HEIGHT+2) && IS_MAX_ROUND_WIDGET(widget)))
+                return ROUND_MAX;
+        case ROUND_EXTRA:
+            if(CAN_EXTRA_ROUND(2))
+                return ROUND_EXTRA;
+        case ROUND_FULL:
+            if(CAN_FULL_ROUND(2))
+                return ROUND_FULL;
+        case ROUND_SLIGHT:
+            return ROUND_SLIGHT;
+        case ROUND_NONE:
+            return ROUND_NONE;
+    }
+    
+    return ROUND_NONE;
+}
+
+static double getRadius(const Options *opts, int w, int h, EWidget widget, ERadius rad)
+{
+    ERound r=opts->round;
+
+    if((WIDGET_CHECKBOX==widget || WIDGET_FOCUS==widget) && ROUND_NONE!=r)
+        r=ROUND_SLIGHT;
+
+    if( ((WIDGET_PBAR_TROUGH==widget || WIDGET_PROGRESSBAR==widget) && (opts->square&SQUARE_PROGRESS)) ||
+        (WIDGET_ENTRY==widget && (opts->square&SQUARE_ENTRY)) )
+        return 0.0;
+
+#if defined __cplusplus && (defined QT_VERSION && (QT_VERSION >= 0x040000))
+    if((WIDGET_MDI_WINDOW_BUTTON==widget && (opts->titlebarButtons&TITLEBAR_BUTTON_ROUND)) ||
+       WIDGET_RADIO_BUTTON==widget || WIDGET_DIAL==widget) 
+        return (w>h ? h : w)/2.0;
+#endif
+#ifndef __cplusplus
+    if(WIDGET_RADIO_BUTTON==widget)
+        return (w>h ? h : w)/2.0;
+#endif
+
+#if !defined __cplusplus || (defined QT_VERSION && (QT_VERSION >= 0x040000))
+    if(WIDGET_SLIDER==widget &&
+       (SLIDER_ROUND==opts->sliderStyle || SLIDER_ROUND_ROTATED==opts->sliderStyle || SLIDER_CIRCULAR==opts->sliderStyle))
+        return (w>h ? h : w)/2.0;
+#endif
+
+    if(RADIUS_EXTERNAL==rad && !opts->fillProgress && (WIDGET_PROGRESSBAR==widget
+#ifndef __cplusplus
+                                                        || WIDGET_ENTRY_PROGRESSBAR==widget
+#endif
+      ))
+        rad=RADIUS_INTERNAL;
+
+    switch(rad)
+    {
+        case RADIUS_SELECTION:
+            switch(r)
+            {
+                case ROUND_MAX:
+                case ROUND_EXTRA:
+                    if(/* (WIDGET_RUBBER_BAND==widget && w>14 && h>14) || */(w>48 && h>48))
+                        return 6.0;
+                case ROUND_FULL:
+//                     if( /*(WIDGET_RUBBER_BAND==widget && w>11 && h>11) || */(w>48 && h>48))
+//                         return 3.0;
+                    if(w>MIN_ROUND_FULL_SIZE && h>MIN_ROUND_FULL_SIZE)
+                        return 3.0;
+                case ROUND_SLIGHT:
+                    return 2.0;
+                case ROUND_NONE:
+                    return 0;
+            }
+        case RADIUS_INTERNAL:
+            switch(r)
+            {
+                case ROUND_MAX:
+                    if(IS_SLIDER(widget) || WIDGET_TROUGH==widget)
+                    {
+                        double r=((w>h ? h : w)-(WIDGET_SLIDER==widget ? 1 : 0))/2.0;
+                        return r>MAX_RADIUS_INTERNAL ? MAX_RADIUS_INTERNAL : r;
+                    }
+                    if(w>(MIN_ROUND_MAX_WIDTH-2) && h>(MIN_ROUND_MAX_HEIGHT-2) && IS_MAX_ROUND_WIDGET(widget))
+                    {
+                        double r=((w>h ? h : w)-2.0)/2.0;
+                        return r>9.5 ? 9.5 : r;
+                    }
+                case ROUND_EXTRA:
+                    if(CAN_EXTRA_ROUND(-2))
+                        return EXTRA_INNER_RADIUS;
+                case ROUND_FULL:
+                    if(CAN_FULL_ROUND(-2))
+                        return FULL_INNER_RADIUS;
+                case ROUND_SLIGHT:
+                    return SLIGHT_INNER_RADIUS;
+                case ROUND_NONE:
+                    return 0;
+            }
+        case RADIUS_EXTERNAL:
+            switch(r)
+            {
+                case ROUND_MAX:
+                    if(IS_SLIDER(widget) || WIDGET_TROUGH==widget)
+                    {
+                        double r=((w>h ? h : w)-(WIDGET_SLIDER==widget ? 1 : 0))/2.0;
+                        return r>MAX_RADIUS_EXTERNAL ? MAX_RADIUS_EXTERNAL : r;
+                    }
+                    if(w>MIN_ROUND_MAX_WIDTH && h>MIN_ROUND_MAX_HEIGHT && IS_MAX_ROUND_WIDGET(widget))
+                    {
+                        double r=((w>h ? h : w)-2.0)/2.0;
+                        return r>10.5 ? 10.5 : r;
+                    }
+                case ROUND_EXTRA:
+                    if(CAN_EXTRA_ROUND(0))
+                        return EXTRA_OUTER_RADIUS;
+                case ROUND_FULL:
+                    if(CAN_FULL_ROUND(0))
+                        return FULL_OUTER_RADIUS;
+                case ROUND_SLIGHT:
+                    return SLIGHT_OUTER_RADIUS;
+                case ROUND_NONE:
+                    return 0;
+            }
+        case RADIUS_ETCH:
+            // **NOTE** MUST KEEP IN SYNC WITH getWidgetRound !!!
+            switch(r)
+            {
+                case ROUND_MAX:
+                    if(IS_SLIDER(widget) || WIDGET_TROUGH==widget)
+                    {
+                        double r=((w>h ? h : w)-(WIDGET_SLIDER==widget ? 1 : 0))/2.0;
+                        return r>MAX_RADIUS_EXTERNAL ? MAX_RADIUS_EXTERNAL : r;
+                    }
+                    if(w>(MIN_ROUND_MAX_WIDTH+2) && h>(MIN_ROUND_MAX_HEIGHT+2) && IS_MAX_ROUND_WIDGET(widget))
+                    {
+                        double r=((w>h ? h : w)-2.0)/2.0;
+                        return r>11.5 ? 11.5 : r;
+                    }
+                case ROUND_EXTRA:
+                    if(CAN_FULL_ROUND(2))
+                        return EXTRA_ETCH_RADIUS;
+                case ROUND_FULL:
+                    if(w>(MIN_ROUND_FULL_SIZE+2) && h>(MIN_ROUND_FULL_SIZE+2))
+                        return FULL_ETCH_RADIUS;
+                case ROUND_SLIGHT:
+                    return SLIGHT_ETCH_RADIUS;
+                case ROUND_NONE:
+                    return 0;
+            }
+    }
+
+    return 0;
+}
+
+static double qtcRingAlpha[3]={0.125, 0.125, 0.5};
+
+static void calcRingAlphas(const color *bgnd)
+{
+#ifdef __cplusplus
+    double r=bgnd->red()/255.0,
+           g=bgnd->green()/255.0,
+           b=bgnd->blue()/255.0,
+#else
+    double r=bgnd->red/65535.0,
+           g=bgnd->green/65535.0,
+           b=bgnd->blue/65535.0,
+#endif
+           h=0,
+           s=0,
+           v=0;
+    rgbToHsv(r, g, b, &h, &s, &v);
+    qtcRingAlpha[0]=v*0.26;
+    qtcRingAlpha[1]=v*0.14;
+    qtcRingAlpha[2]=v*0.55;
+}
+
+#define BGND_SHINE_SIZE 300
+#define BGND_SHINE_STEPS  8
+
+static double shineAlpha(const color *bgnd)
+{
+#ifdef __cplusplus
+    double r=bgnd->red()/255.0,
+           g=bgnd->green()/255.0,
+           b=bgnd->blue()/255.0,
+#else
+    double r=bgnd->red/65535.0,
+           g=bgnd->green/65535.0,
+           b=bgnd->blue/65535.0,
+#endif
+           h=0,
+           s=0,
+           v=0;
+    rgbToHsv(r, g, b, &h, &s, &v);
+    return v*0.8;
+}
+
+#endif
+
+#endif
+
+#endif // __COMMON_H__
diff --git a/common/config_file.c b/common/config_file.c
index 930ce21..7174286 100644
--- a/common/config_file.c
+++ b/common/config_file.c
@@ -1,5 +1,5 @@
-/*
-  QtCurve (C) Craig Drummond, 2003 - 2007 Craig.Drummond@lycos.co.uk
+ /*
+  QtCurve (C) Craig Drummond, 2003 - 2010 craig.p.drummond@gmail.com
 
   ----
 
@@ -23,15 +23,40 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <unistd.h>
 #include <sys/types.h>
 #include <sys/stat.h>
-#include <pwd.h>
 #include <sys/types.h>
 
-#define QTC_MAX_FILENAME_LEN   1024
-#define QTC_MAX_INPUT_LINE_LEN 256
-#define QTC_FILE               "qtcurvestylerc"
+#ifndef _WIN32
+#include <unistd.h>
+#include <pwd.h>
+#endif
+
+#define MAKE_VERSION(a, b) (((a) << 16) | ((b) << 8))
+#define MAKE_VERSION3(a, b, c) (((a) << 16) | ((b) << 8) | (c))
+
+#define MAX_CONFIG_FILENAME_LEN   1024
+#define MAX_CONFIG_INPUT_LINE_LEN 256
+#define CONFIG_FILE               "stylerc"
+#define OLD_CONFIG_FILE           "qtcurvestylerc"
+#define VERSION_KEY               "version"
+
+#ifdef __cplusplus
+
+#if QT_VERSION >= 0x040000
+#include <QMap>
+#include <QFile>
+#include <QTextStream>
+#define TO_LATIN1(A) A.toLatin1().constData()
+#else
+#define TO_LATIN1(A) A.latin1()
+
+#include <qmap.h>
+#include <qfile.h>
+#include <qtextstream.h>
+#endif
+
+#endif // __cplusplus
 
 #ifdef CONFIG_READ
 static int c2h(char ch)
@@ -78,6 +103,14 @@ static EDefBtnIndicator toInd(const char *str, EDefBtnIndicator def)
             return IND_CORNER;
         if(0==memcmp(str, "colored", 7))
             return IND_COLORED;
+        if(0==memcmp(str, "tint", 4))
+            return IND_TINT;
+        if(0==memcmp(str, "glow", 4))
+            return IND_GLOW;
+        if(0==memcmp(str, "darken", 6))
+            return IND_DARKEN;
+        if(0==memcmp(str, "origselected", 12))
+            return IND_SELECTED;
     }
 
     return def;
@@ -97,6 +130,8 @@ static ELine toLine(const char *str, ELine def)
             return LINE_DOTS;
         if(0==memcmp(str, "flat", 4))
             return LINE_FLAT;
+        if(0==memcmp(str, "1dot", 5))
+            return LINE_1DOT;
     }
     return def;
 }
@@ -121,15 +156,19 @@ static EMouseOver toMouseOver(const char *str, EMouseOver def)
     {
         if(0==memcmp(str, "true", 4) || 0==memcmp(str, "colored", 7))
             return MO_COLORED;
+        if(0==memcmp(str, "thickcolored", 12))
+            return MO_COLORED_THICK;
         if(0==memcmp(str, "plastik", 7))
             return MO_PLASTIK;
+        if(0==memcmp(str, "glow", 4))
+            return MO_GLOW;
         if(0==memcmp(str, "false", 4) || 0==memcmp(str, "none", 4))
             return MO_NONE;
     }
     return def;
 }
 
-static EAppearance toAppearance(const char *str, EAppearance def)
+static EAppearance toAppearance(const char *str, EAppearance def, EAppAllow allow)
 {
     if(str)
     {
@@ -137,35 +176,69 @@ static EAppearance toAppearance(const char *str, EAppearance def)
             return APPEARANCE_FLAT;
         if(0==memcmp(str, "raised", 6))
             return APPEARANCE_RAISED;
-        if(0==memcmp(str, "gradient", 8) || 0==memcmp(str, "lightgradient", 13))
-            return APPEARANCE_GRADIENT;
-        if(0==memcmp(str, "splitgradient", 13))
-            return APPEARANCE_SPLIT_GRADIENT;
-        if(0==memcmp(str, "glass", 5) || 0==memcmp(str, "shinyglass", 10))
-            return APPEARANCE_SHINY_GLASS;
         if(0==memcmp(str, "dullglass", 9))
             return APPEARANCE_DULL_GLASS;
+        if(0==memcmp(str, "glass", 5) || 0==memcmp(str, "shinyglass", 10))
+            return APPEARANCE_SHINY_GLASS;
+        if(0==memcmp(str, "agua", 4))
+#if defined __cplusplus && !defined CONFIG_DIALOG  && defined QT_VERSION && QT_VERSION < 0x040000
+            return APPEARANCE_AGUA_MOD;
+#else
+            return APPEARANCE_AGUA;
+#endif
+        if(0==memcmp(str, "soft", 4))
+            return APPEARANCE_SOFT_GRADIENT;
+        if(0==memcmp(str, "gradient", 8) || 0==memcmp(str, "lightgradient", 13))
+            return APPEARANCE_GRADIENT;
+        if(0==memcmp(str, "harsh", 5))
+            return APPEARANCE_HARSH_GRADIENT;
         if(0==memcmp(str, "inverted", 8))
             return APPEARANCE_INVERTED;
+        if(0==memcmp(str, "darkinverted", 12))
+            return APPEARANCE_DARK_INVERTED;
+        if(0==memcmp(str, "splitgradient", 13))
+            return APPEARANCE_SPLIT_GRADIENT;
         if(0==memcmp(str, "bevelled", 8))
             return APPEARANCE_BEVELLED;
+        if(APP_ALLOW_FADE==allow && 0==memcmp(str, "fade", 4))
+            return APPEARANCE_FADE;
+        if(APP_ALLOW_STRIPED==allow && 0==memcmp(str, "striped", 7))
+            return APPEARANCE_STRIPED;
+        if(APP_ALLOW_NONE==allow && 0==memcmp(str, "none", 4))
+            return APPEARANCE_NONE;
+
+        if(0==memcmp(str, "customgradient", 14) && strlen(str)>14)
+        {
+            int i=atoi(&str[14]);
+
+            i--;
+            if(i>=0 && i<NUM_CUSTOM_GRAD)
+                return (EAppearance)(APPEARANCE_CUSTOM1+i);
+        }
     }
     return def;
 }
 
-static EShade toShade(const char *str, bool allowDarken, EShade def)
+static EShade toShade(const char *str, bool allowMenu, EShade def, bool menuShade, color *col)
 {
     if(str)
     {
         /* true/false is from 0.25... */
-        if(0==memcmp(str, "true", 4) || 0==memcmp(str, "selected", 8))
+        if((!menuShade && 0==memcmp(str, "true", 4)) || 0==memcmp(str, "selected", 8))
             return SHADE_BLEND_SELECTED;
         if(0==memcmp(str, "origselected", 12))
             return SHADE_SELECTED;
-        if(allowDarken && 0==memcmp(str, "darken", 6))
+        if(allowMenu && (0==memcmp(str, "darken", 6) || (menuShade && 0==memcmp(str, "true", 4))))
             return SHADE_DARKEN;
+        if(allowMenu && 0==memcmp(str, "wborder", 7))
+            return SHADE_WINDOW_BORDER;
         if(0==memcmp(str, "custom", 6))
             return SHADE_CUSTOM;
+        if('#'==str[0] && col)
+        {
+            setRgb(col, str);
+            return SHADE_CUSTOM;
+        }
         if(0==memcmp(str, "none", 4))
             return SHADE_NONE;
     }
@@ -184,6 +257,10 @@ static ERound toRound(const char *str, ERound def)
             return ROUND_SLIGHT;
         if(0==memcmp(str, "full", 4))
             return ROUND_FULL;
+        if(0==memcmp(str, "extra", 5))
+            return ROUND_EXTRA;
+        if(0==memcmp(str, "max", 3))
+            return ROUND_MAX;
     }
 
     return def;
@@ -208,6 +285,25 @@ static EScrollbar toScrollbar(const char *str, EScrollbar def)
     return def;
 }
 
+static EFrame toFrame(const char *str, EFrame def)
+{
+    if(str)
+    {
+        if(0==memcmp(str, "none", 4))
+            return FRAME_NONE;
+        if(0==memcmp(str, "plain", 5))
+            return FRAME_PLAIN;
+        if(0==memcmp(str, "line", 4))
+            return FRAME_LINE;
+        if(0==memcmp(str, "shaded", 6))
+            return FRAME_SHADED;
+        if(0==memcmp(str, "faded", 5))
+            return FRAME_FADED;
+    }
+
+    return def;
+}
+
 static EEffect toEffect(const char *str, EEffect def)
 {
     if(str)
@@ -223,7 +319,7 @@ static EEffect toEffect(const char *str, EEffect def)
     return def;
 }
 
-static EShading toShading(const char * str, EShading def)
+static EShading toShading(const char *str, EShading def)
 {
     if(str)
     {
@@ -233,12 +329,14 @@ static EShading toShading(const char * str, EShading def)
             return SHADING_HSL;
         if(0==memcmp(str, "hsv", 3))
             return SHADING_HSV;
+        if(0==memcmp(str, "hcy", 3))
+            return SHADING_HCY;
     }
 
     return def;
 }
 
-static EStripe toStripe(const char * str, EStripe def)
+static EStripe toStripe(const char *str, EStripe def)
 {
     if(str)
     {
@@ -248,12 +346,14 @@ static EStripe toStripe(const char * str, EStripe def)
             return STRIPE_NONE;
         if(0==memcmp(str, "diagonal", 8))
             return STRIPE_DIAGONAL;
+        if(0==memcmp(str, "fade", 4))
+            return STRIPE_FADE;
     }
 
     return def;
 }
 
-static ESliderStyle toSlider(const char * str, ESliderStyle def)
+static ESliderStyle toSlider(const char *str, ESliderStyle def)
 {
     if(str)
     {
@@ -261,23 +361,191 @@ static ESliderStyle toSlider(const char * str, ESliderStyle def)
             return SLIDER_ROUND;
         if(0==memcmp(str, "plain", 5))
             return SLIDER_PLAIN;
+        if(0==memcmp(str, "r-round", 7))
+            return SLIDER_ROUND_ROTATED;
+        if(0==memcmp(str, "r-plain", 7))
+            return SLIDER_PLAIN_ROTATED;
         if(0==memcmp(str, "triangular", 10))
             return SLIDER_TRIANGULAR;
+        if(0==memcmp(str, "circular", 8))
+            return SLIDER_CIRCULAR;
+    }
+
+    return def;
+}
+
+static EColor toEColor(const char *str, EColor def)
+{
+    if(str)
+    {
+        if(0==memcmp(str, "base", 4))
+            return ECOLOR_BASE;
+        if(0==memcmp(str, "dark", 4))
+            return ECOLOR_DARK;
+        if(0==memcmp(str, "background", 10))
+            return ECOLOR_BACKGROUND;
+    }
+
+    return def;
+}
+
+static EFocus toFocus(const char *str, EFocus def)
+{
+    if(str)
+    {
+        if(0==memcmp(str, "standard", 8))
+            return FOCUS_STANDARD;
+        if(0==memcmp(str, "rect", 4) || 0==memcmp(str, "highlight", 9))
+            return FOCUS_RECTANGLE;
+        if(0==memcmp(str, "filled", 6))
+            return FOCUS_FILLED;
+        if(0==memcmp(str, "full", 4))
+            return FOCUS_FULL;
+        if(0==memcmp(str, "line", 4))
+            return FOCUS_LINE;
+        if(0==memcmp(str, "glow", 4))
+            return FOCUS_GLOW;
+    }
+
+    return def;
+}
+
+static ETabMo toTabMo(const char *str, ETabMo def)
+{
+    if(str)
+    {
+        if(0==memcmp(str, "top", 3))
+            return TAB_MO_TOP;
+        if(0==memcmp(str, "bot", 3))
+            return TAB_MO_BOTTOM;
+        if(0==memcmp(str, "glow", 4))
+            return TAB_MO_GLOW;
+    }
+
+    return def;
+}
+
+static EGradType toGradType(const char *str, EGradType def)
+{
+    if(str)
+    {
+        if(0==memcmp(str, "horiz", 5))
+            return GT_HORIZ;
+        if(0==memcmp(str, "vert", 4))
+            return GT_VERT;
+    }
+    return def;
+}
+
+static ELvLines toLvLines(const char *str, ELvLines def)
+{
+    if(str)
+    {
+        if(0==memcmp(str, "true", 4) || 0==memcmp(str, "new", 3))
+            return LV_NEW;
+        if(0==memcmp(str, "old", 3))
+            return LV_OLD;
+        if(0==memcmp(str, "false", 5) || 0==memcmp(str, "none", 4))
+            return LV_NONE;
+    }
+    return def;
+}
+
+static EGradientBorder toGradientBorder(const char *str, bool *haveAlpha)
+{
+    if(str)
+    {
+        *haveAlpha=strstr(str, "-alpha") ? true : false;
+        if(0==memcmp(str, "light", 5) || 0==memcmp(str, "true", 4))
+            return GB_LIGHT;
+        if(0==memcmp(str, "none", 4))
+            return GB_NONE;
+        if(0==memcmp(str, "3dfull", 6))
+            return GB_3D_FULL;
+        if(0==memcmp(str, "3d", 2) || 0==memcmp(str, "false", 5))
+            return GB_3D;
+        if(0==memcmp(str, "shine", 5))
+            return GB_SHINE;
     }
+    return GB_3D;
+}
 
+#ifdef __cplusplus
+static EAlign toAlign(const char *str, EAlign def)
+{
+    if(str)
+    {
+        if(0==memcmp(str, "left", 4))
+            return ALIGN_LEFT;
+        if(0==memcmp(str, "center-full", 11))
+            return ALIGN_FULL_CENTER;
+        if(0==memcmp(str, "center", 6))
+            return ALIGN_CENTER;
+        if(0==memcmp(str, "right", 5))
+            return ALIGN_RIGHT;
+    }
     return def;
 }
+#endif
 
+#if defined CONFIG_DIALOG || (defined QT_VERSION && (QT_VERSION >= 0x040000))
+static ETitleBarIcon toTitlebarIcon(const char *str, ETitleBarIcon def)
+{
+    if(str)
+    {
+        if(0==memcmp(str, "none", 4))
+            return TITLEBAR_ICON_NONE;
+        if(0==memcmp(str, "menu", 4))
+            return TITLEBAR_ICON_MENU_BUTTON;
+        if(0==memcmp(str, "title", 5))
+            return TITLEBAR_ICON_NEXT_TO_TITLE;
+    }
+    return def;
+}
 #endif
 
-#ifdef CONFIG_WRITE
-#include <kstandarddirs.h>
+static EImageType toImageType(const char *str, EImageType def)
+{
+    if(str)
+    {
+        if(0==memcmp(str, "none", 4))
+            return IMG_NONE;
+        if(0==memcmp(str, "plainrings", 10))
+            return IMG_PLAIN_RINGS;
+        if(0==memcmp(str, "rings", 5))
+            return IMG_BORDERED_RINGS;
+        if(0==memcmp(str, "squarerings", 11))
+            return IMG_SQUARE_RINGS;
+        if(0==memcmp(str, "file", 4))
+            return IMG_FILE;
+    }
+    return def;
+}
+
+static EGlow toGlow(const char *str, EGlow def)
+{
+    if(str)
+    {
+        if(0==memcmp(str, "none", 4))
+            return GLOW_NONE;
+        if(0==memcmp(str, "start", 5))
+            return GLOW_START;
+        if(0==memcmp(str, "middle", 6))
+            return GLOW_MIDDLE;
+        if(0==memcmp(str, "end", 3))
+            return GLOW_END;
+    }
+    return def;
+}
 #endif
 
 static const char * getHome()
 {
     static const char *home=NULL;
 
+#ifdef _WIN32
+    home = getenv("HOMEPATH");
+#else
     if(!home)
     {
         struct passwd *p=getpwuid(getuid());
@@ -295,15 +563,82 @@ static const char * getHome()
         if(!home)
             home="/tmp";
     }
-
+#endif
     return home;
 }
 
-static const char *xdgConfigFolder()
+#ifdef __cplusplus
+
+#if defined QTC_QT_ONLY || QT_VERSION < 0x040000
+#if QT_VERSION < 0x040000
+#include <qdir.h>
+#include <qfile.h>
+#endif
+// Take from KStandardDirs::makeDir
+static bool makeDir(const QString& dir, int mode)
+{
+    // we want an absolute path
+    if (QDir::isRelativePath(dir))
+        return false;
+
+#ifdef Q_WS_WIN
+    return QDir().mkpath(dir);
+#else
+    QString target = dir;
+    uint len = target.length();
+
+    // append trailing slash if missing
+    if (dir.at(len - 1) != '/')
+        target += '/';
+
+    QString base;
+    uint i = 1;
+
+    while( i < len )
+    {
+        struct stat st;
+#if QT_VERSION >= 0x040000
+        int pos = target.indexOf('/', i);
+#else
+        int pos = target.find('/', i);
+#endif
+        base += target.mid(i - 1, pos - i + 1);
+        QByteArray baseEncoded = QFile::encodeName(base);
+        // bail out if we encountered a problem
+        if (stat(baseEncoded, &st) != 0)
+        {
+            // Directory does not exist....
+            // Or maybe a dangling symlink ?
+            if (lstat(baseEncoded, &st) == 0)
+                (void)unlink(baseEncoded); // try removing
+
+            if (mkdir(baseEncoded, static_cast<mode_t>(mode)) != 0)
+            {
+#if QT_VERSION >= 0x040000
+                baseEncoded.prepend("trying to create local folder ");
+                perror(baseEncoded.constData());
+#else
+                perror("trying to create QtCurve config folder ");
+#endif
+                return false; // Couldn't create it :-(
+            }
+        }
+        i = pos + 1;
+    }
+    return true;
+#endif
+}
+
+#else
+#include <kstandarddirs.h>
+#endif
+#endif
+
+static const char *qtcConfDir()
 {
-    static char xdgDir[QTC_MAX_FILENAME_LEN]={'\0'};
+    static char *cfgDir=NULL;
 
-    if(!xdgDir[0])
+    if(!cfgDir)
     {
         static const char *home=NULL;
 
@@ -333,7 +668,12 @@ static const char *xdgConfigFolder()
            "sudo su" / "kcmshell style". The 1st would write to ~/.config, but
            if root has a XDG_ set then that would be used on the second :-(
         */
+#ifndef _WIN32
         char *env=0==getuid() ? NULL : getenv("XDG_CONFIG_HOME");
+#else
+        char *env=0;
+#endif
+
 #endif
 
         if(!env)
@@ -341,59 +681,210 @@ static const char *xdgConfigFolder()
             if(!home)
                 home=getHome();
 
-            sprintf(xdgDir, "%s/.config", home);
+            cfgDir=(char *)malloc(strlen(home)+18);
+            sprintf(cfgDir, "%s/.config/qtcurve/", home);
         }
         else
-            strcpy(xdgDir, env);
+        {
+            cfgDir=(char *)malloc(strlen(env)+10);
+            sprintf(cfgDir, "%s/qtcurve/", env);
+        }
 
-#if defined CONFIG_WRITE || !defined __cplusplus
+//#if defined CONFIG_WRITE || !defined __cplusplus
         {
         struct stat info;
 
-        if(0!=lstat(xdgDir, &info))
+        if(0!=lstat(cfgDir, &info))
         {
 #ifdef __cplusplus
-            KStandardDirs::makeDir(xdgDir, 0755);
+#if defined QTC_QT_ONLY || QT_VERSION < 0x040000
+            makeDir(cfgDir, 0755);
 #else
-            g_mkdir_with_parents(xdgDir, 0755);
+            KStandardDirs::makeDir(cfgDir, 0755);
+#endif
+#else
+            g_mkdir_with_parents(cfgDir, 0755);
 #endif
         }
         }
+//#endif
+    }
+
+    return cfgDir;
+}
+
+#ifdef __cplusplus
+static WindowBorders qtcGetWindowBorderSize(bool force=false)
+#else
+static WindowBorders qtcGetWindowBorderSize(bool force)
+#endif
+{
+    static WindowBorders def={24, 18, 4, 4};
+    static WindowBorders sizes={-1, -1, -1, -1};
+
+    if(-1==sizes.titleHeight || force)
+    {
+#ifdef __cplusplus
+        QFile f(qtcConfDir()+QString(BORDER_SIZE_FILE));
+
+#if QT_VERSION >= 0x040000
+        if(f.open(QIODevice::ReadOnly))
+#else
+        if(f.open(IO_ReadOnly))
 #endif
+        {
+            QTextStream stream(&f);
+            QString     line;
+
+            sizes.titleHeight=stream.readLine().toInt();
+            sizes.toolTitleHeight=stream.readLine().toInt();
+            sizes.bottom=stream.readLine().toInt();
+            sizes.sides=stream.readLine().toInt();
+            f.close();
+        }
+#else // __cplusplus
+        char *filename=(char *)malloc(strlen(qtcConfDir())+strlen(BORDER_SIZE_FILE)+1);
+        FILE *f=NULL;
+
+        sprintf(filename, "%s"BORDER_SIZE_FILE, qtcConfDir());
+        if((f=fopen(filename, "r")))
+        {
+            char *line=NULL;
+            size_t len;
+            getline(&line, &len, f);
+            sizes.titleHeight=atoi(line);
+            getline(&line, &len, f);
+            sizes.toolTitleHeight=atoi(line);
+            getline(&line, &len, f);
+            sizes.bottom=atoi(line);
+            getline(&line, &len, f);
+            sizes.sides=atoi(line);
+            if(line)
+                free(line);
+            fclose(f);
+        }
+        free(filename);
+#endif // __cplusplus
+    }
+
+    return sizes.titleHeight<12 ? def : sizes;
+}
+
+#if (!defined QT_VERSION || QT_VERSION >= 0x040000) && !defined CONFIG_DIALOG
+
+#define MENU_FILE_PREFIX   "menubar-"
+#define STATUS_FILE_PREFIX "statusbar-"
+
+#define qtcMenuBarHidden(A)         qtcBarHidden((A), MENU_FILE_PREFIX)
+#define qtcSetMenuBarHidden(A, H)   qtcSetBarHidden((A), (H), MENU_FILE_PREFIX)
+#define qtcStatusBarHidden(A)       qtcBarHidden((A), STATUS_FILE_PREFIX)
+#define qtcSetStatusBarHidden(A, H) qtcSetBarHidden((A), (H), STATUS_FILE_PREFIX)
+
+#ifdef __cplusplus
+static bool qtcBarHidden(const QString &app, const char *prefix)
+{
+    return QFile::exists(QFile::decodeName(qtcConfDir())+prefix+app);
+}
+
+static void qtcSetBarHidden(const QString &app, bool hidden, const char *prefix)
+{
+    if(!hidden)
+        QFile::remove(QFile::decodeName(qtcConfDir())+prefix+app);
+    else
+        QFile(QFile::decodeName(qtcConfDir())+prefix+app).open(QIODevice::WriteOnly);
+}
+
+#else // __cplusplus
+static bool qtcFileExists(const char *name)
+{
+    struct stat info;
+
+    return 0==lstat(name, &info) && S_ISREG(info.st_mode);
+}
+
+static char * qtcGetBarFileName(const char *app, const char *prefix)
+{
+    char *filename=NULL;
+
+    if(!filename)
+    {
+        filename=(char *)malloc(strlen(qtcConfDir())+strlen(prefix)+strlen(app)+1);
+        sprintf(filename, "%s%s%s", qtcConfDir(), prefix, app);
+    }
+
+    return filename;
+}
+
+static bool qtcBarHidden(const char *app, const char *prefix)
+{
+    return qtcFileExists(qtcGetBarFileName(app, prefix));
+}
+
+static void qtcSetBarHidden(const char *app, bool hidden, const char *prefix)
+{
+    if(!hidden)
+        unlink(qtcGetBarFileName(app, prefix));
+    else
+    {
+        FILE *f=fopen(qtcGetBarFileName(app, prefix), "w");
+
+        if(f)
+            fclose(f);
     }
+}
+
+#endif // __cplusplus
+
+#ifdef __cplusplus
+#include <QtSvg/QSvgRenderer>
+#endif // __cplusplus
+
+static void loadBgndImage(QtCImage *img)
+{
+    if(!img->loaded &&
+        img->width>16 && img->width<1024 && img->height>16 && img->height<1024)
+    {
+        img->loaded=true;
+#ifdef __cplusplus
+        if(!img->file.isEmpty())
+        {
+            QSvgRenderer svg(img->file);
 
-    return xdgDir;
+            if(svg.isValid())
+            {
+                img->pix=QPixmap(img->width, img->height);
+                img->pix.fill(Qt::transparent);
+                QPainter painter(&img->pix);
+                svg.render(&painter);
+                painter.end();
+            }
+        }
+#else // __cplusplus
+        img->pix=0L;
+        if(img->file)
+            img->pix=gdk_pixbuf_new_from_file_at_scale(img->file, img->width, img->height, FALSE, NULL);
+#endif // __cplusplus
+    }
 }
 
+#endif // (!defined QT_VERSION || QT_VERSION >= 0x040000) && !defined CONFIG_DIALOG
+
 #ifdef CONFIG_READ
 
 #ifdef __cplusplus
-#define QTC_IS_BLACK(A) (0==(A).red() && 0==(A).green() && 0==(A).blue())
+#define IS_BLACK(A) (0==(A).red() && 0==(A).green() && 0==(A).blue())
 #else
-#define QTC_IS_BLACK(A) (0==(A).red && 0==(A).green && 0==(A).blue)
+#define IS_BLACK(A) (0==(A).red && 0==(A).green && 0==(A).blue)
 #endif
 
 static void checkColor(EShade *s, color *c)
 {
-    if(SHADE_CUSTOM==*s && QTC_IS_BLACK(*c))
+    if(SHADE_CUSTOM==*s && IS_BLACK(*c))
         *s=SHADE_NONE;
 }
 
 #ifdef __cplusplus
 
-#if QT_VERSION >= 0x040000
-#include <QMap>
-#include <QFile>
-#include <QTextStream>
-#define QTC_LATIN1(A) A.toLatin1()
-#else
-#define QTC_LATIN1(A) A.latin1()
-
-#include <qmap.h>
-#include <qfile.h>
-#include <qtextstream.h>
-#endif
-
 class QtCConfig
 {
     public:
@@ -401,7 +892,8 @@ class QtCConfig
     QtCConfig(const QString &filename);
 
     bool            ok() const { return values.count()>0; }
-    const QString & readEntry(const char *key, const QString &def=QString::null);
+    bool            hasKey(const QString &key) { return values.contains(key); }
+    const QString & readEntry(const QString &key, const QString &def=QString::null);
 
     private:
 
@@ -436,47 +928,105 @@ QtCConfig::QtCConfig(const QString &filename)
     }
 }
 
-inline const QString & QtCConfig::readEntry(const char *key, const QString &def)
+inline const QString & QtCConfig::readEntry(const QString &key, const QString &def)
 {
     return values.contains(key) ? values[key] : def;
 }
 
-inline QString readStringEntry(QtCConfig &cfg, const char *key)
+inline QString readStringEntry(QtCConfig &cfg, const QString &key)
 {
     return cfg.readEntry(key);
 }
 
-static int readNumEntry(QtCConfig &cfg, const char *key, int def)
+static int readNumEntry(QtCConfig &cfg, const QString &key, int def)
 {
     const QString &val(readStringEntry(cfg, key));
 
     return val.isEmpty() ? def : val.toInt();
 }
 
-static bool readBoolEntry(QtCConfig &cfg, const char *key, bool def)
+static int readVersionEntry(QtCConfig &cfg, const QString &key)
 {
     const QString &val(readStringEntry(cfg, key));
+    int           major, minor, patch;
 
-    return val.isEmpty() ? def : (val=="true" ? true : false);
+    return !val.isEmpty() && 3==sscanf(TO_LATIN1(val), "%d.%d.%d", &major, &minor, &patch)
+            ? MAKE_VERSION3(major, minor, patch)
+            : 0;
 }
 
-#if QT_VERSION >= 0x040000
-#define QTC_LATIN1(A) A.toLatin1()
-#else
-#define QTC_LATIN1(A) A.latin1()
-#endif
+static bool readBoolEntry(QtCConfig &cfg, const QString &key, bool def)
+{
+    const QString &val(readStringEntry(cfg, key));
+
+    return val.isEmpty() ? def : (val=="true" ? true : false);
+}
+
+static void readDoubleList(QtCConfig &cfg, const char *key, double *list, int count)
+{
+#if (defined QT_VERSION && (QT_VERSION >= 0x040000))
+    QStringList strings(readStringEntry(cfg, key).split(',', QString::SkipEmptyParts));
+#else
+    QStringList strings(QStringList::split(',', readStringEntry(cfg, key)));
+#endif
+    bool ok(count==strings.size());
+
+    if(ok)
+    {
+        QStringList::ConstIterator it(strings.begin());
+        int                        i;
 
-#define QTC_CFG_READ_COLOR(ENTRY) \
+        for(i=0; i<count && ok; ++i, ++it)
+            list[i]=(*it).toDouble(&ok);
+    }
+
+    if(!ok && strings.size())
+        list[0]=0;
+}
+            
+#define CFG_READ_COLOR(ENTRY) \
     { \
         QString sVal(cfg.readEntry(#ENTRY)); \
         if(sVal.isEmpty()) \
             opts->ENTRY=def->ENTRY; \
         else \
-            setRgb(&(opts->ENTRY), QTC_LATIN1(sVal)); \
+            setRgb(&(opts->ENTRY), TO_LATIN1(sVal)); \
     }
 
+#define CFG_READ_IMAGE(ENTRY) \
+    { \
+        opts->ENTRY.type=toImageType(TO_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY.type); \
+        opts->ENTRY.loaded=false; \
+        if(IMG_FILE==opts->ENTRY.type) \
+        { \
+            QString file(cfg.readEntry(#ENTRY ".file")); \
+            if(!file.isEmpty()) \
+            { \
+                opts->ENTRY.file=file; \
+                opts->ENTRY.width=readNumEntry(cfg, #ENTRY ".width", 0); \
+                opts->ENTRY.height=readNumEntry(cfg, #ENTRY ".height", 0); \
+            } \
+        } \
+    }
+
+#if QT_VERSION >= 0x040000
+    #define CFG_READ_STRING_LIST(ENTRY) \
+        { \
+            QString val=readStringEntry(cfg, #ENTRY); \
+            Strings set=val.isEmpty() ? Strings() : Strings::fromList(val.split(",", QString::SkipEmptyParts)); \
+            opts->ENTRY=set.count() || cfg.hasKey(#ENTRY) ? set : def->ENTRY; \
+        }
 #else
+    #define CFG_READ_STRING_LIST(ENTRY) \
+        { \
+            QString val=readStringEntry(cfg, #ENTRY); \
+            Strings list=val.isEmpty() ? Strings() : Strings::split(",", val, false); \
+            opts->ENTRY=list.count() || cfg.hasKey(#ENTRY) ? list : def->ENTRY; \
+        }
+#endif
 
+#else
+         
 static char * lookupCfgHash(GHashTable **cfg, char *key, char *val)
 {
     char *rv=NULL;
@@ -502,9 +1052,9 @@ static GHashTable * loadConfig(const char *filename)
 
     if(f)
     {
-        char line[QTC_MAX_INPUT_LINE_LEN];
+        char line[MAX_CONFIG_INPUT_LINE_LEN];
 
-        while(NULL!=fgets(line, QTC_MAX_INPUT_LINE_LEN-1, f))
+        while(NULL!=fgets(line, MAX_CONFIG_INPUT_LINE_LEN-1, f))
         {
             char *eq=strchr(line, '=');
             int  pos=eq ? eq-line : -1;
@@ -545,6 +1095,16 @@ static int readNumEntry(GHashTable *cfg, char *key, int def)
     return str ? atoi(str) : def;
 }
 
+static int readVersionEntry(GHashTable *cfg, char *key)
+{
+    char *str=readStringEntry(cfg, key);
+    int  major, minor, patch;
+
+    return str && 3==sscanf(str, "%d.%d.%d", &major, &minor, &patch)
+            ? MAKE_VERSION3(major, minor, patch)
+            : 0;
+}
+
 static gboolean readBoolEntry(GHashTable *cfg, char *key, gboolean def)
 {
     char *str=readStringEntry(cfg, key);
@@ -552,9 +1112,47 @@ static gboolean readBoolEntry(GHashTable *cfg, char *key, gboolean def)
     return str ? (0==memcmp(str, "true", 4) ? true : false) : def;
 }
 
-#define QTC_LATIN1(A) A
+static void readDoubleList(GHashTable *cfg, char *key, double *list, int count)
+{
+    char *str=readStringEntry(cfg, key);
+
+    if(str)
+    {
+        int  j,
+             comma=0;
+        bool ok=true;
+
+        for(j=0; str[j]; ++j)
+            if(','==str[j])
+                comma++;
+
+        ok=(count-1)==comma;
+        if(ok)
+        {
+            for(j=0; j<comma+1 && str && ok; ++j)
+            {
+                char *c=strchr(str, ',');
+
+                if(c || (str && count-1==comma))
+                {
+                    if(c)
+                        *c='\0';
+                    list[j]=g_ascii_strtod(str, NULL);
+                    str=c+1;
+                }
+                else
+                    ok=false;
+            }
+        }
+
+        if(!ok)
+            list[0]=0;
+    }
+}
+            
+#define TO_LATIN1(A) A
 
-#define QTC_CFG_READ_COLOR(ENTRY) \
+#define CFG_READ_COLOR(ENTRY) \
     { \
         const char *str=readStringEntry(cfg, #ENTRY); \
     \
@@ -563,93 +1161,485 @@ static gboolean readBoolEntry(GHashTable *cfg, char *key, gboolean def)
         else \
             opts->ENTRY=def->ENTRY; \
     }
-#endif
+#define CFG_READ_IMAGE(ENTRY) \
+    { \
+        opts->ENTRY.type=toImageType(TO_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY.type); \
+        opts->ENTRY.loaded=false; \
+        if(IMG_FILE==opts->ENTRY.type) \
+        { \
+            const char *file=readStringEntry(cfg, #ENTRY ".file"); \
+            if(file) \
+            { \
+                opts->ENTRY.file=file; \
+                opts->ENTRY.width=readNumEntry(cfg, #ENTRY ".width", 0); \
+                opts->ENTRY.height=readNumEntry(cfg, #ENTRY ".height", 0); \
+            } \
+        } \
+    }
+#define CFG_READ_STRING_LIST(ENTRY) \
+    { \
+        const gchar *str=readStringEntry(cfg, #ENTRY); \
+        if(str) \
+            opts->ENTRY=g_strsplit(str, ",", -1); \
+        else if(def->ENTRY) \
+        { \
+            opts->ENTRY=def->ENTRY; \
+            def->ENTRY=NULL; \
+        } \
+    }
 
-#define QTC_CFG_READ_NUM(ENTRY) \
-    opts->ENTRY=readNumEntry(cfg, #ENTRY, def->ENTRY);
+#endif
 
-#define QTC_CFG_READ_BOOL(ENTRY) \
+#define CFG_READ_BOOL(ENTRY) \
     opts->ENTRY=readBoolEntry(cfg, #ENTRY, def->ENTRY);
 
-#define QTC_CFG_READ_ROUND(ENTRY) \
-    opts->ENTRY=toRound(QTC_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
+#define CFG_READ_ROUND(ENTRY) \
+    opts->ENTRY=toRound(TO_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
 
-#define QTC_CFG_READ_DI(ENTRY) \
-    opts->ENTRY=((double)(readNumEntry(cfg, #ENTRY, ((int)(def->ENTRY*100))-100)+100))/100.0;
+#define CFG_READ_INT(ENTRY) \
+    opts->ENTRY=readNumEntry(cfg, #ENTRY, def->ENTRY);
 
-#define QTC_CFG_READ_TB_BORDER(ENTRY) \
-    opts->ENTRY=toTBarBorder(QTC_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
+#define CFG_READ_INT_BOOL(ENTRY, DEF) \
+    if(readBoolEntry(cfg, #ENTRY, false)) \
+        opts->ENTRY=DEF; \
+    else \
+        opts->ENTRY=readNumEntry(cfg, #ENTRY, def->ENTRY);
+    
+#define CFG_READ_TB_BORDER(ENTRY) \
+    opts->ENTRY=toTBarBorder(TO_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
 
-#define QTC_CFG_READ_MOUSE_OVER(ENTRY) \
-    opts->ENTRY=toMouseOver(QTC_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
+#define CFG_READ_MOUSE_OVER(ENTRY) \
+    opts->ENTRY=toMouseOver(TO_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
 
-#define QTC_CFG_READ_APPEARANCE(ENTRY, DEF) \
-    opts->ENTRY=toAppearance(QTC_LATIN1(readStringEntry(cfg, #ENTRY)), DEF);
+#define CFG_READ_APPEARANCE(ENTRY, ALLOW) \
+    opts->ENTRY=toAppearance(TO_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY, ALLOW);
 
 /*
-#define QTC_CFG_READ_APPEARANCE(ENTRY) \
-    opts->ENTRY=toAppearance(QTC_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
+#define CFG_READ_APPEARANCE(ENTRY) \
+    opts->ENTRY=toAppearance(TO_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
 */
 
-#define QTC_CFG_READ_STRIPE(ENTRY) \
-    opts->ENTRY=toStripe(QTC_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
+#define CFG_READ_STRIPE(ENTRY) \
+    opts->ENTRY=toStripe(TO_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
+
+#define CFG_READ_SLIDER(ENTRY) \
+    opts->ENTRY=toSlider(TO_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
+
+#define CFG_READ_DEF_BTN(ENTRY) \
+    opts->ENTRY=toInd(TO_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
 
-#define QTC_CFG_READ_SLIDER(ENTRY) \
-    opts->ENTRY=toSlider(QTC_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
+#define CFG_READ_LINE(ENTRY) \
+    opts->ENTRY=toLine(TO_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
 
-#define QTC_CFG_READ_DEF_BTN(ENTRY) \
-    opts->ENTRY=toInd(QTC_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
+#define CFG_READ_SHADE(ENTRY, AD, MENU_STRIPE, COL) \
+    opts->ENTRY=toShade(TO_LATIN1(readStringEntry(cfg, #ENTRY)), AD, def->ENTRY, MENU_STRIPE, COL);
 
-#define QTC_CFG_READ_LINE(ENTRY) \
-    opts->ENTRY=toLine(QTC_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
+#define CFG_READ_SCROLLBAR(ENTRY) \
+    opts->ENTRY=toScrollbar(TO_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
 
-#define QTC_CFG_READ_SHADE(ENTRY, AD) \
-    opts->ENTRY=toShade(QTC_LATIN1(readStringEntry(cfg, #ENTRY)), AD, def->ENTRY);
+#define CFG_READ_FRAME(ENTRY) \
+    opts->ENTRY=toFrame(TO_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
 
-#define QTC_CFG_READ_SCROLLBAR(ENTRY) \
-    opts->ENTRY=toScrollbar(QTC_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
+#define CFG_READ_EFFECT(ENTRY) \
+    opts->ENTRY=toEffect(TO_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
 
-#define QTC_CFG_READ_EFFECT(ENTRY) \
-    opts->ENTRY=toEffect(QTC_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
+#define CFG_READ_SHADING(ENTRY) \
+    opts->ENTRY=toShading(TO_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
 
-#ifdef QTC_CONFIG_DIALOG
-#define QTC_CFG_READ_SHADING(ENTRY, UNUSED) \
-    opts->ENTRY=toShading(QTC_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
+#define CFG_READ_ECOLOR(ENTRY) \
+    opts->ENTRY=toEColor(TO_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
+
+#define CFG_READ_FOCUS(ENTRY) \
+    opts->ENTRY=toFocus(TO_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
+
+#define CFG_READ_TAB_MO(ENTRY) \
+    opts->ENTRY=toTabMo(TO_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
+
+#define CFG_READ_GRAD_TYPE(ENTRY) \
+    opts->ENTRY=toGradType(TO_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
+
+#define CFG_READ_LV_LINES(ENTRY) \
+    opts->ENTRY=toLvLines(TO_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
+
+#ifdef __cplusplus
+#define CFG_READ_ALIGN(ENTRY) \
+    opts->ENTRY=toAlign(TO_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
+#endif
+
+#if defined CONFIG_DIALOG || (defined QT_VERSION && (QT_VERSION >= 0x040000))
+#define CFG_READ_TB_ICON(ENTRY) \
+    opts->ENTRY=toTitlebarIcon(TO_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
+#endif
+
+#define CFG_READ_GLOW(ENTRY) \
+    opts->ENTRY=toGlow(TO_LATIN1(readStringEntry(cfg, #ENTRY)), def->ENTRY);
+
+static void checkAppearance(EAppearance *ap, Options *opts)
+{
+    if(*ap>=APPEARANCE_CUSTOM1 && *ap<(APPEARANCE_CUSTOM1+NUM_CUSTOM_GRAD))
+    {
+#ifdef __cplusplus
+        if(opts->customGradient.end()==opts->customGradient.find(*ap))
 #else
-#define QTC_CFG_READ_SHADING(ENTRY, DEF) \
-    ENTRY=toShading(QTC_LATIN1(readStringEntry(cfg, #ENTRY)), DEF);
+        if(!opts->customGradient[*ap-APPEARANCE_CUSTOM1])
+#endif
+        {
+            if(ap==&opts->appearance)
+                *ap=APPEARANCE_FLAT;
+            else
+                *ap=opts->appearance;
+        }
+    }
+}
+
+static void defaultSettings(Options *opts);
+
+#ifndef __cplusplus
+static void copyGradients(Options *src, Options *dest)
+{
+    if(src && dest && src!=dest)
+    {
+        int i;
+
+        for(i=0; i<NUM_CUSTOM_GRAD; ++i)
+            if(src->customGradient[i] && src->customGradient[i]->numStops>0)
+            {
+                dest->customGradient[i]=malloc(sizeof(Gradient));
+                dest->customGradient[i]->numStops=src->customGradient[i]->numStops;
+                dest->customGradient[i]->stops=malloc(sizeof(GradientStop) * dest->customGradient[i]->numStops);
+                memcpy(dest->customGradient[i]->stops, src->customGradient[i]->stops,
+                        sizeof(GradientStop) * dest->customGradient[i]->numStops);
+                dest->customGradient[i]->border=src->customGradient[i]->border;
+            }
+            else
+                dest->customGradient[i]=NULL;
+    }
+}
+
+static void copyOpts(Options *src, Options *dest)
+{
+    if(src && dest && src!=dest)
+    {
+        memcpy(dest, src, sizeof(Options));
+        dest->noBgndGradientApps=src->noBgndGradientApps;
+        dest->noBgndOpacityApps=src->noBgndOpacityApps;
+        dest->noMenuBgndOpacityApps=src->noMenuBgndOpacityApps;
+        dest->noBgndImageApps=src->noBgndImageApps;
+#ifdef QTC_ENABLE_PARENTLESS_DIALOG_FIX_SUPPORT
+        dest->noDlgFixApps=src->noDlgFixApps;
+        src->noDlgFixApps=NULL;
 #endif
+        dest->noMenuStripeApps=src->noMenuStripeApps;
+        src->noBgndGradientApps=src->noBgndOpacityApps=src->noMenuBgndOpacityApps=src->noBgndImageApps=src->noMenuStripeApps=NULL;
+        memcpy(dest->customShades, src->customShades, sizeof(double)*NUM_STD_SHADES);
+        memcpy(dest->customAlphas, src->customAlphas, sizeof(double)*NUM_STD_ALPHAS);
+        copyGradients(src, dest);
+    }
+}
 
+static void freeOpts(Options *opts)
+{
+    if(opts)
+    {
+        int i;
+
+        if(opts->noBgndGradientApps)
+            g_strfreev(opts->noBgndGradientApps);
+        if(opts->noBgndOpacityApps)
+            g_strfreev(opts->noBgndOpacityApps);
+        if(opts->noMenuBgndOpacityApps)
+            g_strfreev(opts->noMenuBgndOpacityApps);
+        if(opts->noBgndImageApps)
+            g_strfreev(opts->noBgndImageApps);
+#ifdef QTC_ENABLE_PARENTLESS_DIALOG_FIX_SUPPORT
+        if(opts->noDlgFixApps)
+            g_strfreev(opts->noDlgFixApps);
+        opts->noDlgFixApps=NULL
+#endif
+        if(opts->noMenuStripeApps)
+            g_strfreev(opts->noMenuStripeApps); 
+        opts->noBgndGradientApps=opts->noBgndOpacityApps=opts->noMenuBgndOpacityApps=opts->noBgndImageApps=opts->noMenuStripeApps=NULL;
+        for(i=0; i<NUM_CUSTOM_GRAD; ++i)
+            if(opts->customGradient[i])
+            {
+                if(opts->customGradient[i]->stops)
+                    free(opts->customGradient[i]->stops);
+                free(opts->customGradient[i]);
+                opts->customGradient[i]=NULL;
+            }
+    }
+}
+#endif
+
+static void checkConfig(Options *opts)
+{
+    /* **Must** check appearance first, as the rest will default to this */
+    checkAppearance(&opts->appearance, opts);
+    checkAppearance(&opts->bgndAppearance, opts);
+    checkAppearance(&opts->menuBgndAppearance, opts);
+    checkAppearance(&opts->menubarAppearance, opts);
+    checkAppearance(&opts->menuitemAppearance, opts);
+    checkAppearance(&opts->toolbarAppearance, opts);
+    checkAppearance(&opts->lvAppearance, opts);
+    checkAppearance(&opts->tabAppearance, opts);
+    checkAppearance(&opts->activeTabAppearance, opts);
+    checkAppearance(&opts->sliderAppearance, opts);
+    checkAppearance(&opts->selectionAppearance, opts);
+    checkAppearance(&opts->titlebarAppearance, opts);
+    checkAppearance(&opts->inactiveTitlebarAppearance, opts);
 #ifdef __cplusplus
-static bool readConfig(const QString &file, Options *opts, Options *def)
+    checkAppearance(&opts->titlebarButtonAppearance, opts);
+    checkAppearance(&opts->selectionAppearance, opts);
+    checkAppearance(&opts->dwtAppearance, opts);
+#endif
+    checkAppearance(&opts->menuStripeAppearance, opts);
+    checkAppearance(&opts->progressAppearance, opts);
+    checkAppearance(&opts->progressGrooveAppearance, opts);
+    checkAppearance(&opts->grooveAppearance, opts);
+    checkAppearance(&opts->sunkenAppearance, opts);
+    checkAppearance(&opts->sbarBgndAppearance, opts);
+    checkAppearance(&opts->sliderFill, opts);
+    checkAppearance(&opts->tooltipAppearance, opts);
+
+    if(SHADE_BLEND_SELECTED==opts->shadeCheckRadio)
+        opts->shadeCheckRadio=SHADE_SELECTED;
+
+    checkColor(&opts->shadeMenubars, &opts->customMenubarsColor);
+    checkColor(&opts->shadeSliders, &opts->customSlidersColor);
+    checkColor(&opts->shadeCheckRadio, &opts->customCheckRadioColor);
+    checkColor(&opts->menuStripe, &opts->customMenuStripeColor);
+    checkColor(&opts->comboBtn, &opts->customComboBtnColor);
+    checkColor(&opts->sortedLv, &opts->customSortedLvColor);
+    if(APPEARANCE_BEVELLED==opts->toolbarAppearance)
+        opts->toolbarAppearance=APPEARANCE_GRADIENT;
+    else if(APPEARANCE_RAISED==opts->toolbarAppearance)
+        opts->toolbarAppearance=APPEARANCE_FLAT;
+
+    if(APPEARANCE_BEVELLED==opts->menubarAppearance)
+        opts->menubarAppearance=APPEARANCE_GRADIENT;
+    else if(APPEARANCE_RAISED==opts->menubarAppearance)
+        opts->menubarAppearance=APPEARANCE_FLAT;
+
+    if(APPEARANCE_BEVELLED==opts->sliderAppearance)
+        opts->sliderAppearance=APPEARANCE_GRADIENT;
+
+    if(APPEARANCE_BEVELLED==opts->tabAppearance)
+        opts->tabAppearance=APPEARANCE_GRADIENT;
+
+    if(APPEARANCE_BEVELLED==opts->activeTabAppearance)
+        opts->activeTabAppearance=APPEARANCE_GRADIENT;
+
+    if(APPEARANCE_RAISED==opts->selectionAppearance)
+        opts->selectionAppearance=APPEARANCE_FLAT;
+    else if(APPEARANCE_BEVELLED==opts->selectionAppearance)
+        opts->selectionAppearance=APPEARANCE_GRADIENT;
+
+    if(APPEARANCE_RAISED==opts->menuStripeAppearance)
+        opts->menuStripeAppearance=APPEARANCE_FLAT;
+    else if(APPEARANCE_BEVELLED==opts->menuStripeAppearance)
+        opts->menuStripeAppearance=APPEARANCE_GRADIENT;
+
+    if(opts->highlightFactor<MIN_HIGHLIGHT_FACTOR || opts->highlightFactor>MAX_HIGHLIGHT_FACTOR)
+        opts->highlightFactor=DEFAULT_HIGHLIGHT_FACTOR;
+
+    if(opts->crHighlight<MIN_HIGHLIGHT_FACTOR || opts->crHighlight>MAX_HIGHLIGHT_FACTOR)
+        opts->crHighlight=DEFAULT_CR_HIGHLIGHT_FACTOR;
+
+    if(opts->splitterHighlight<MIN_HIGHLIGHT_FACTOR || opts->splitterHighlight>MAX_HIGHLIGHT_FACTOR)
+        opts->splitterHighlight=DEFAULT_SPLITTER_HIGHLIGHT_FACTOR;
+
+#if !defined __cplusplus || defined CONFIG_DIALOG
+    if(opts->expanderHighlight<MIN_HIGHLIGHT_FACTOR || opts->expanderHighlight>MAX_HIGHLIGHT_FACTOR)
+        opts->expanderHighlight=DEFAULT_EXPANDER_HIGHLIGHT_FACTOR;
+#endif
+
+    if(opts->menuDelay<MIN_MENU_DELAY || opts->menuDelay>MAX_MENU_DELAY)
+        opts->menuDelay=DEFAULT_MENU_DELAY;
+
+    if(0==opts->sliderWidth%2)
+        opts->sliderWidth++;
+
+    if(opts->sliderWidth<MIN_SLIDER_WIDTH || opts->sliderWidth>MAX_SLIDER_WIDTH)
+        opts->sliderWidth=DEFAULT_SLIDER_WIDTH;
+
+    if(opts->sliderWidth<DEFAULT_SLIDER_WIDTH)
+        opts->sliderThumbs=LINE_NONE;
+
+    if(opts->lighterPopupMenuBgnd<MIN_LIGHTER_POPUP_MENU || opts->lighterPopupMenuBgnd>MAX_LIGHTER_POPUP_MENU)
+        opts->lighterPopupMenuBgnd=DEF_POPUPMENU_LIGHT_FACTOR;
+
+    if(opts->tabBgnd<MIN_TAB_BGND || opts->tabBgnd>MAX_TAB_BGND)
+        opts->tabBgnd=DEF_TAB_BGND;
+
+    if(opts->animatedProgress && !opts->stripedProgress)
+        opts->animatedProgress=false;
+
+    if(0==opts->gbFactor)
+        opts->groupBox=FRAME_PLAIN;
+
+    if(opts->gbFactor<MIN_GB_FACTOR || opts->gbFactor>MAX_GB_FACTOR)
+        opts->gbFactor=DEF_GB_FACTOR;
+
+#if defined __cplusplus && defined QT_VERSION && QT_VERSION < 0x040000 && !defined CONFIG_DIALOG
+    opts->crSize=CR_SMALL_SIZE;
+    if(SLIDER_CIRCULAR==opts->sliderStyle)
+        opts->sliderStyle=SLIDER_ROUND;
+    if(STRIPE_FADE==opts->stripedProgress)
+        opts->stripedProgress=STRIPE_PLAIN;
+#endif
+    /* For now, only 2 sizes... */
+    if(opts->crSize!=CR_SMALL_SIZE && opts->crSize!=CR_LARGE_SIZE)
+        opts->crSize=CR_SMALL_SIZE;
+
+/*
+??
+    if(SHADE_CUSTOM==opts->shadeMenubars || SHADE_BLEND_SELECTED==opts->shadeMenubars || !opts->borderMenuitems)
+        opts->colorMenubarMouseOver=true;
+*/
+
+#if defined __cplusplus && defined QT_VERSION && QT_VERSION < 0x040000 && !defined CONFIG_DIALOG
+    if(opts->round>ROUND_FULL)
+        opts->round=ROUND_FULL;
+#endif
+#ifndef CONFIG_DIALOG
+    if(MO_GLOW==opts->coloredMouseOver && EFFECT_NONE==opts->buttonEffect)
+        opts->coloredMouseOver=MO_COLORED_THICK;
+
+    if(IND_GLOW==opts->defBtnIndicator && EFFECT_NONE==opts->buttonEffect)
+        opts->defBtnIndicator=IND_TINT;
+
+    if(opts->round>ROUND_EXTRA && FOCUS_GLOW!=opts->focus)
+        opts->focus=FOCUS_LINE;
+
+    if(EFFECT_NONE==opts->buttonEffect)
+    {
+        opts->etchEntry=false;
+        if(FOCUS_GLOW==opts->focus)
+            opts->focus=FOCUS_FULL;
+    }
+
+//     if(opts->squareScrollViews)
+//         opts->highlightScrollViews=false;
+
+    if(SHADE_WINDOW_BORDER==opts->shadeMenubars)
+        opts->shadeMenubarOnlyWhenActive=true;
+
+    if(MO_GLOW==opts->coloredMouseOver)
+        opts->coloredTbarMo=true;
+
+    if(opts->round<ROUND_SLIGHT)
+        opts->square|=SQUARE_POPUP_MENUS|SQUARE_TOOLTIPS;
+#endif
+
+    if(opts->bgndOpacity<0 || opts->bgndOpacity>100)
+        opts->bgndOpacity=100;
+    if(opts->dlgOpacity<0 || opts->dlgOpacity>100)
+        opts->dlgOpacity=100;
+    if(opts->menuBgndOpacity<0 || opts->menuBgndOpacity>100)
+        opts->menuBgndOpacity=100;
+
+#ifndef CONFIG_DIALOG
+    opts->bgndAppearance=MODIFY_AGUA(opts->bgndAppearance);
+    opts->selectionAppearance=MODIFY_AGUA(opts->selectionAppearance);
+    opts->lvAppearance=MODIFY_AGUA_X(opts->lvAppearance, APPEARANCE_LV_AGUA);
+    opts->sbarBgndAppearance=MODIFY_AGUA(opts->sbarBgndAppearance);
+    opts->tooltipAppearance=MODIFY_AGUA(opts->tooltipAppearance);
+    opts->progressGrooveAppearance=MODIFY_AGUA(opts->progressGrooveAppearance);
+    opts->menuBgndAppearance=MODIFY_AGUA(opts->menuBgndAppearance);
+    opts->menuStripeAppearance=MODIFY_AGUA(opts->menuStripeAppearance);
+    opts->grooveAppearance=MODIFY_AGUA(opts->grooveAppearance);
+    opts->progressAppearance=MODIFY_AGUA(opts->progressAppearance);
+    opts->sliderFill=MODIFY_AGUA(opts->sliderFill);
+    opts->tabAppearance=MODIFY_AGUA(opts->tabAppearance);
+    opts->activeTabAppearance=MODIFY_AGUA(opts->activeTabAppearance);
+    opts->menuitemAppearance=MODIFY_AGUA(opts->menuitemAppearance);
+
+    if(!opts->borderProgress && (!opts->fillProgress || !(opts->square&SQUARE_PROGRESS)))
+        opts->borderProgress=true;
+
+    opts->titlebarAppearance=MODIFY_AGUA(opts->titlebarAppearance);
+    opts->inactiveTitlebarAppearance=MODIFY_AGUA(opts->inactiveTitlebarAppearance);
+
+    if(opts->shadePopupMenu && SHADE_NONE==opts->shadeMenubars)
+        opts->shadePopupMenu=false;
+
+    if(opts->shadePopupMenu)
+        opts->lighterPopupMenuBgnd=0;
+#ifdef __cplusplus
+
+#if defined QT_VERSION && QT_VERSION >= 0x040000
+    if(!(opts->titlebarButtons&TITLEBAR_BUTTON_ROUND))
+#endif
+        opts->titlebarButtonAppearance=MODIFY_AGUA(opts->titlebarButtonAppearance);
+    opts->dwtAppearance=MODIFY_AGUA(opts->dwtAppearance);
+#endif
+    if(opts->windowBorder&WINDOW_BORDER_USE_MENUBAR_COLOR_FOR_TITLEBAR &&
+        (opts->windowBorder&WINDOW_BORDER_BLEND_TITLEBAR || SHADE_WINDOW_BORDER==opts->shadeMenubars))
+        opts->windowBorder-=WINDOW_BORDER_USE_MENUBAR_COLOR_FOR_TITLEBAR;
+
+    if(APPEARANCE_FLAT==opts->tabAppearance)
+        opts->tabAppearance=APPEARANCE_RAISED;
+    if(EFFECT_NONE==opts->buttonEffect)
+        opts->etchEntry=false;
+    if(opts->colorSliderMouseOver &&
+        (SHADE_NONE==opts->shadeSliders || SHADE_DARKEN==opts->shadeSliders))
+        opts->colorSliderMouseOver=false;
+#endif /* ndef CONFIG_DIALOG */
+
+    if(LINE_1DOT==opts->toolbarSeparators)
+        opts->toolbarSeparators=LINE_DOTS;
+}
+
+#ifdef __cplusplus
+static bool readConfig(const QString &file, Options *opts, Options *defOpts=0L)
 #else
-static bool readConfig(const char *file, Options *opts, Options *def)
+static bool readConfig(const char *file, Options *opts, Options *defOpts)
 #endif
 {
 #ifdef __cplusplus
     if(file.isEmpty())
     {
-        const char *xdg=xdgConfigFolder();
+        const char *env=getenv("QTCURVE_CONFIG_FILE");
 
-        if(xdg)
+        if(NULL!=env)
+            return readConfig(env, opts, defOpts);
+        else
         {
-            QString filename(xdg);
+            const char *cfgDir=qtcConfDir();
 
-            filename+="/"QTC_FILE;
-            return readConfig(filename, opts, def);
+            if(cfgDir)
+            {
+                QString filename(QFile::decodeName(cfgDir)+CONFIG_FILE);
+
+                if(!QFile::exists(filename))
+                    filename=QFile::decodeName(cfgDir)+"../"OLD_CONFIG_FILE;
+                return readConfig(filename, opts, defOpts);
+            }
         }
     }
 #else
     if(!file)
     {
-        const char *xdg=xdgConfigFolder();
+        const char *env=getenv("QTCURVE_CONFIG_FILE");
 
-        if(xdg)
+        if(NULL!=env)
+            return readConfig(env, opts, defOpts);
+        else
         {
-            char filename[QTC_MAX_FILENAME_LEN];
+            const char *cfgDir=qtcConfDir();
 
-            sprintf(filename, "%s/"QTC_FILE, xdg);
-            return readConfig(filename, opts, def);
+            if(cfgDir)
+            {
+                char *filename=(char *)malloc(strlen(cfgDir)+strlen(OLD_CONFIG_FILE)+4);
+                bool rv=false;
+
+                sprintf(filename, "%s"CONFIG_FILE, cfgDir);
+                if(!qtcFileExists(filename))
+                    sprintf(filename, "%s../"OLD_CONFIG_FILE, cfgDir);
+                rv=readConfig(filename, opts, defOpts);
+                free(filename);
+                return rv;
+            }
         }
     }
 #endif
@@ -666,117 +1656,638 @@ static bool readConfig(const char *file, Options *opts, Options *def)
         if(cfg)
         {
 #endif
-            QTC_CFG_READ_NUM(passwordChar)
-            QTC_CFG_READ_ROUND(round)
-            QTC_CFG_READ_DI(highlightFactor)
-            QTC_CFG_READ_TB_BORDER(toolbarBorders)
-            QTC_CFG_READ_APPEARANCE(appearance, def->appearance)
-            QTC_CFG_READ_BOOL(fixParentlessDialogs)
-            QTC_CFG_READ_STRIPE(stripedProgress)
-            QTC_CFG_READ_SLIDER(sliderStyle)
-            QTC_CFG_READ_BOOL(animatedProgress)
-            QTC_CFG_READ_BOOL(lighterPopupMenuBgnd)
-            QTC_CFG_READ_BOOL(embolden)
-            QTC_CFG_READ_DEF_BTN(defBtnIndicator)
-            QTC_CFG_READ_LINE(sliderThumbs)
-            QTC_CFG_READ_LINE(handles)
-            QTC_CFG_READ_BOOL(highlightTab)
-            QTC_CFG_READ_BOOL(colorSelTab)
-            QTC_CFG_READ_SHADE(shadeSliders, false)
-            QTC_CFG_READ_SHADE(shadeMenubars, true)
-            QTC_CFG_READ_SHADE(shadeCheckRadio, false)
-            QTC_CFG_READ_APPEARANCE(menubarAppearance, def->menubarAppearance)
-            QTC_CFG_READ_APPEARANCE(menuitemAppearance, opts->appearance)
-            QTC_CFG_READ_APPEARANCE(toolbarAppearance, def->toolbarAppearance)
-            QTC_CFG_READ_LINE(toolbarSeparators)
-            QTC_CFG_READ_LINE(splitters)
-            QTC_CFG_READ_BOOL(customMenuTextColor)
-            QTC_CFG_READ_MOUSE_OVER(coloredMouseOver)
-            QTC_CFG_READ_BOOL(menubarMouseOver)
-            QTC_CFG_READ_BOOL(shadeMenubarOnlyWhenActive)
-            QTC_CFG_READ_BOOL(thinnerMenuItems)
-            QTC_CFG_READ_COLOR(customSlidersColor)
-            QTC_CFG_READ_COLOR(customMenubarsColor)
-            QTC_CFG_READ_COLOR(customMenuSelTextColor)
-            QTC_CFG_READ_COLOR(customMenuNormTextColor)
-            QTC_CFG_READ_COLOR(customCheckRadioColor)
-            QTC_CFG_READ_SCROLLBAR(scrollbarType)
-            QTC_CFG_READ_EFFECT(buttonEffect)
-            QTC_CFG_READ_APPEARANCE(lvAppearance, opts->appearance)
-            QTC_CFG_READ_APPEARANCE(tabAppearance, opts->appearance)
-            QTC_CFG_READ_APPEARANCE(sliderAppearance, opts->appearance)
-            QTC_CFG_READ_APPEARANCE(progressAppearance, opts->appearance)
-#ifndef QTC_PLAIN_FOCUS_ONLY
-            QTC_CFG_READ_BOOL(stdFocus)
-#endif
-            QTC_CFG_READ_BOOL(lvLines)
-            QTC_CFG_READ_BOOL(drawStatusBarFrames)
-            QTC_CFG_READ_BOOL(fillSlider)
-            QTC_CFG_READ_BOOL(roundMbTopOnly)
-            QTC_CFG_READ_BOOL(borderMenuitems)
-            QTC_CFG_READ_BOOL(gradientPbGroove)
-            QTC_CFG_READ_BOOL(darkerBorders)
-            QTC_CFG_READ_BOOL(vArrows)
-            QTC_CFG_READ_BOOL(xCheck)
-            QTC_CFG_READ_BOOL(framelessGroupBoxes)
-            QTC_CFG_READ_BOOL(inactiveHighlight)
-            QTC_CFG_READ_BOOL(colorMenubarMouseOver)
+            int     i;
+            
+            opts->version=readVersionEntry(cfg, VERSION_KEY);
+
 #ifdef __cplusplus
-            QTC_CFG_READ_BOOL(stdSidebarButtons)
-            QTC_CFG_READ_BOOL(gtkScrollViews)
-            QTC_CFG_READ_BOOL(gtkComboMenus)
-/*
+            Options newOpts;
+
+            if(defOpts)
+                newOpts=*defOpts;
+            else
+                defaultSettings(&newOpts);
+
+            Options *def=&newOpts;
+
+            if(opts!=def)
+                opts->customGradient=def->customGradient;
+
 #else
-            QTC_CFG_READ_BOOL(setDialogButtonOrder)
-*/
-#endif
-#if !defined __cplusplus || defined QTC_CONFIG_DIALOG
-            QTC_CFG_READ_BOOL(mapKdeIcons)
+            Options newOpts;
+            Options *def=&newOpts;
+#ifdef QTC_ENABLE_PARENTLESS_DIALOG_FIX_SUPPORT
+            opts->noDlgFixApps=NULL;
 #endif
-#if defined QTC_CONFIG_DIALOG || (defined QT_VERSION && (QT_VERSION >= 0x040000)) || !defined __cplusplus
-            QTC_CFG_READ_BOOL(gtkButtonOrder)
+            opts->noBgndGradientApps=opts->noBgndOpacityApps=opts->noMenuBgndOpacityApps=opts->noBgndImageApps=opts->noMenuStripeApps=NULL;
+            for(i=0; i<NUM_CUSTOM_GRAD; ++i)
+                opts->customGradient[i]=NULL;
+            
+            if(defOpts)
+                copyOpts(defOpts, &newOpts);
+            else
+                defaultSettings(&newOpts);
+            if(opts!=def)
+                copyGradients(def, opts);
 #endif
-            QTC_CFG_READ_SHADING(shading, shading);
 
-#ifndef __cplusplus
-            releaseConfig(cfg);
+            /* Check if the config file expects old default values... */
+            if(opts->version<MAKE_VERSION(1, 6))
+            {
+                bool framelessGroupBoxes=readBoolEntry(cfg, "framelessGroupBoxes", true),
+                     groupBoxLine=readBoolEntry(cfg, "groupBoxLine", true);
+                opts->groupBox=framelessGroupBoxes ? (groupBoxLine ? FRAME_LINE : FRAME_NONE) : FRAME_PLAIN;
+                opts->gbLabel=framelessGroupBoxes ? GB_LBL_BOLD : 0;
+                opts->gbFactor=0;
+                def->focus=FOCUS_LINE;
+                def->crHighlight=3;
+            }
+            else
+            {
+                CFG_READ_FRAME(groupBox)
+                CFG_READ_INT(gbLabel)
+            }
+
+            if(opts->version<MAKE_VERSION(1, 5))
+            {
+                opts->windowBorder=
+                    (readBoolEntry(cfg, "colorTitlebarOnly", def->windowBorder&WINDOW_BORDER_COLOR_TITLEBAR_ONLY)
+                                                                ? WINDOW_BORDER_COLOR_TITLEBAR_ONLY : 0)+
+                    (readBoolEntry(cfg, "titlebarBorder", def->windowBorder&WINDOW_BORDER_ADD_LIGHT_BORDER)
+                                                                ? WINDOW_BORDER_ADD_LIGHT_BORDER : 0)+
+                    (readBoolEntry(cfg, "titlebarBlend", def->windowBorder&WINDOW_BORDER_BLEND_TITLEBAR)
+                                                                ? WINDOW_BORDER_BLEND_TITLEBAR : 0);
+            }
+            else
+                CFG_READ_INT(windowBorder);
+
+            if(opts->version<MAKE_VERSION(1, 4))
+            {
+                opts->square=
+                    (readBoolEntry(cfg, "squareLvSelection", def->square&SQUARE_LISTVIEW_SELECTION) ? SQUARE_LISTVIEW_SELECTION : SQUARE_NONE)+
+                    (readBoolEntry(cfg, "squareScrollViews", def->square&SQUARE_SCROLLVIEW) ? SQUARE_SCROLLVIEW : SQUARE_NONE)+
+                    (readBoolEntry(cfg, "squareProgress", def->square&SQUARE_PROGRESS) ? SQUARE_PROGRESS : SQUARE_NONE)+
+                    (readBoolEntry(cfg, "squareEntry", def->square&SQUARE_ENTRY)? SQUARE_ENTRY : SQUARE_NONE);
+            }
+            else
+                CFG_READ_INT(square)
+
+            if(opts->version<MAKE_VERSION(1, 6))
+                opts->square|=SQUARE_TOOLTIPS;
+            if(opts->version<MAKE_VERSION3(1, 6, 1))
+                opts->square|=SQUARE_POPUP_MENUS;
+            if(opts->version<MAKE_VERSION(1, 2))
+                def->crSize=CR_SMALL_SIZE;
+            if(opts->version<MAKE_VERSION(1, 0))
+            {
+                def->roundAllTabs=false;
+                def->smallRadio=false;
+                def->splitters=LINE_FLAT;
+                def->handles=LINE_SUNKEN;
+                def->crHighlight=0;
+#ifdef __cplusplus
+                def->dwtAppearance=APPEARANCE_FLAT;
+#if defined QT_VERSION && (QT_VERSION >= 0x040000)
+                def->dwtSettings=0;
+#endif
+#endif
+                def->inactiveTitlebarAppearance=APPEARANCE_CUSTOM2;
+            }
+            if(opts->version<MAKE_VERSION(0, 67))
+                def->doubleGtkComboArrow=false;
+            if(opts->version<MAKE_VERSION(0, 66))
+            {
+                def->menuStripeAppearance=APPEARANCE_GRADIENT;
+                def->etchEntry=true;
+                def->gtkScrollViews=false;
+                def->thinSbarGroove=false;
+#if defined CONFIG_DIALOG || (defined QT_VERSION && (QT_VERSION >= 0x040000))
+                def->titlebarButtons=TITLEBAR_BUTTON_HOVER_FRAME;
+                def->titlebarIcon=TITLEBAR_ICON_MENU_BUTTON;
+#endif
+            }
+            if(opts->version<MAKE_VERSION(0, 65))
+            {
+                def->tabMouseOver=TAB_MO_BOTTOM;
+                def->activeTabAppearance=APPEARANCE_FLAT;
+                def->unifySpin=false;
+                def->unifyCombo=false;
+                def->borderTab=false;
+                def->thinnerBtns=false;
+            }
+            if(opts->version<MAKE_VERSION(0, 63))
+            {
+                def->tabMouseOver=TAB_MO_TOP;
+                def->sliderStyle=SLIDER_TRIANGULAR;
+#ifdef __cplusplus
+                def->titlebarAlignment=ALIGN_LEFT;
 #endif
-            if(SHADE_SELECTED==opts->shadeCheckRadio)
-                opts->shadeCheckRadio=SHADE_BLEND_SELECTED;
+            }
+            if(opts->version<MAKE_VERSION(0, 62))
+            {
+                def->titlebarAppearance=APPEARANCE_GRADIENT;
+                def->inactiveTitlebarAppearance=APPEARANCE_GRADIENT;
+                def->round=ROUND_FULL;
+                def->appearance=APPEARANCE_DULL_GLASS;
+                def->sliderAppearance=APPEARANCE_DULL_GLASS;
+                def->menuitemAppearance=APPEARANCE_DULL_GLASS;
+                def->useHighlightForMenu=true;
+                def->tabAppearance=APPEARANCE_GRADIENT;
+                def->highlightFactor=5;
+                def->toolbarSeparators=LINE_NONE;
+                def->menubarAppearance=APPEARANCE_SOFT_GRADIENT;
+                def->crButton=false;
+                def->customShades[0]=0;
+                def->stripedProgress=STRIPE_DIAGONAL;
+                def->sunkenAppearance=APPEARANCE_INVERTED;
+                def->focus=FOCUS_FILLED;
+            }
+            if(opts->version<MAKE_VERSION(0, 61))
+            {
+                def->coloredMouseOver=MO_PLASTIK;
+                def->buttonEffect=EFFECT_NONE;
+                def->defBtnIndicator=IND_TINT;
+                def->vArrows=false;
+                def->toolbarAppearance=APPEARANCE_GRADIENT;
+                def->focus=FOCUS_STANDARD;
+                def->selectionAppearance=APPEARANCE_FLAT;
+                def->flatSbarButtons=false;
+                def->comboSplitter=true;
+                def->handles=LINE_DOTS;
+                def->lighterPopupMenuBgnd=15;
+                def->activeTabAppearance=APPEARANCE_GRADIENT;
+                def->gbLabel=GB_LBL_BOLD;
+                def->groupBox=FRAME_NONE;
+                def->shadeSliders=SHADE_BLEND_SELECTED;
+                def->progressGrooveColor=ECOLOR_BASE;
+                def->shadeMenubars=SHADE_DARKEN;
+                opts->highlightTab=true;
+            }
 
-            checkColor(&opts->shadeMenubars, &opts->customMenubarsColor);
-            checkColor(&opts->shadeSliders, &opts->customSlidersColor);
-            checkColor(&opts->shadeCheckRadio, &opts->customCheckRadioColor);
+            if(opts!=def)
+            {
+                opts->customShades[0]=0;
+                opts->customAlphas[0]=0;
+                if(USE_CUSTOM_SHADES(*def))
+                    memcpy(opts->customShades, def->customShades, sizeof(double)*NUM_STD_SHADES);
+            }
 
-            if(APPEARANCE_BEVELLED==opts->toolbarAppearance)
-                opts->toolbarAppearance=APPEARANCE_GRADIENT;
-            else if(APPEARANCE_RAISED==opts->toolbarAppearance)
-                opts->toolbarAppearance=APPEARANCE_FLAT;
+            CFG_READ_INT(gbFactor)
+            CFG_READ_INT(passwordChar)
+            CFG_READ_ROUND(round)
+            CFG_READ_INT(highlightFactor)
+            CFG_READ_INT(menuDelay)
+            CFG_READ_INT(sliderWidth)
+            CFG_READ_INT_BOOL(lighterPopupMenuBgnd, def->lighterPopupMenuBgnd)
+            CFG_READ_INT(tabBgnd)
+            CFG_READ_TB_BORDER(toolbarBorders)
+            CFG_READ_APPEARANCE(appearance, APP_ALLOW_BASIC)
+            CFG_READ_APPEARANCE(bgndAppearance, APP_ALLOW_STRIPED)
+            CFG_READ_GRAD_TYPE(bgndGrad)
+            CFG_READ_GRAD_TYPE(menuBgndGrad)
+            CFG_READ_APPEARANCE(menuBgndAppearance, APP_ALLOW_STRIPED)
+#ifdef QTC_ENABLE_PARENTLESS_DIALOG_FIX_SUPPORT
+            CFG_READ_BOOL(fixParentlessDialogs)
+            CFG_READ_STRING_LIST(noDlgFixApps)
+#endif
+            CFG_READ_STRIPE(stripedProgress)
+            CFG_READ_SLIDER(sliderStyle)
+            CFG_READ_BOOL(animatedProgress)
+            CFG_READ_BOOL(embolden)
+            CFG_READ_DEF_BTN(defBtnIndicator)
+            CFG_READ_LINE(sliderThumbs)
+            CFG_READ_LINE(handles)
+            CFG_READ_BOOL(highlightTab)
+            CFG_READ_INT_BOOL(colorSelTab, DEF_COLOR_SEL_TAB_FACTOR)
+            CFG_READ_BOOL(roundAllTabs)
+            CFG_READ_TAB_MO(tabMouseOver)
+            CFG_READ_SHADE(shadeSliders, true, false, &opts->customSlidersColor)
+            CFG_READ_SHADE(shadeMenubars, true, false, &opts->customMenubarsColor)
+            CFG_READ_SHADE(shadeCheckRadio, false, false, &opts->customCheckRadioColor)
+            CFG_READ_SHADE(sortedLv, true, false, &opts->customSortedLvColor)
+            CFG_READ_SHADE(crColor,  true, false, &opts->customCrBgndColor)
+            CFG_READ_SHADE(progressColor, false, false, &opts->customProgressColor)
+            CFG_READ_APPEARANCE(menubarAppearance, APP_ALLOW_BASIC)
+            CFG_READ_APPEARANCE(menuitemAppearance, APP_ALLOW_FADE)
+            CFG_READ_APPEARANCE(toolbarAppearance, APP_ALLOW_BASIC)
+            CFG_READ_APPEARANCE(selectionAppearance, APP_ALLOW_BASIC)
+#ifdef __cplusplus
+            CFG_READ_APPEARANCE(dwtAppearance, APP_ALLOW_BASIC)
+#endif
+            CFG_READ_LINE(toolbarSeparators)
+            CFG_READ_LINE(splitters)
+            CFG_READ_BOOL(customMenuTextColor)
+            CFG_READ_MOUSE_OVER(coloredMouseOver)
+            CFG_READ_BOOL(menubarMouseOver)
+            CFG_READ_BOOL(useHighlightForMenu)
+            CFG_READ_BOOL(shadeMenubarOnlyWhenActive)
+            CFG_READ_BOOL(thinnerMenuItems)
+            CFG_READ_BOOL(thinnerBtns)
+            if(opts->version<MAKE_VERSION(0, 63))
+            {
+                if(IS_BLACK(opts->customSlidersColor))
+                    CFG_READ_COLOR(customSlidersColor)
+                if(IS_BLACK(opts->customMenubarsColor))
+                    CFG_READ_COLOR(customMenubarsColor)
+                if(IS_BLACK(opts->customCheckRadioColor))
+                    CFG_READ_COLOR(customCheckRadioColor)
+            }
+            CFG_READ_COLOR(customMenuSelTextColor)
+            CFG_READ_COLOR(customMenuNormTextColor)
+            CFG_READ_SCROLLBAR(scrollbarType)
+            CFG_READ_EFFECT(buttonEffect)
+            CFG_READ_APPEARANCE(lvAppearance, APP_ALLOW_BASIC)
+            CFG_READ_APPEARANCE(tabAppearance, APP_ALLOW_BASIC)
+            CFG_READ_APPEARANCE(activeTabAppearance, APP_ALLOW_BASIC)
+            CFG_READ_APPEARANCE(sliderAppearance, APP_ALLOW_BASIC)
+            CFG_READ_APPEARANCE(progressAppearance, APP_ALLOW_BASIC)
+            CFG_READ_APPEARANCE(progressGrooveAppearance, APP_ALLOW_BASIC)
+            CFG_READ_APPEARANCE(grooveAppearance, APP_ALLOW_BASIC)
+            CFG_READ_APPEARANCE(sunkenAppearance, APP_ALLOW_BASIC)
+            CFG_READ_APPEARANCE(sbarBgndAppearance, APP_ALLOW_BASIC)
+            if(opts->version<MAKE_VERSION(1, 6))
+                opts->tooltipAppearance=APPEARANCE_FLAT;
+            else
+            {
+                CFG_READ_APPEARANCE(tooltipAppearance, APP_ALLOW_BASIC)
+            }
 
-            if(APPEARANCE_BEVELLED==opts->menubarAppearance)
-                opts->menubarAppearance=APPEARANCE_GRADIENT;
-            else if(APPEARANCE_RAISED==opts->menubarAppearance)
-                opts->menubarAppearance=APPEARANCE_FLAT;
+            if(opts->version<MAKE_VERSION(0, 63))
+                opts->sliderFill=IS_FLAT(opts->appearance) ? opts->grooveAppearance : APPEARANCE_GRADIENT;
+            else
+            {
+                CFG_READ_APPEARANCE(sliderFill, APP_ALLOW_BASIC)
+            }
+            CFG_READ_ECOLOR(progressGrooveColor)
+            CFG_READ_FOCUS(focus)
+            CFG_READ_BOOL(lvButton)
+            CFG_READ_LV_LINES(lvLines)
+            CFG_READ_BOOL(drawStatusBarFrames)
+            CFG_READ_BOOL(fillSlider)
+            CFG_READ_BOOL(roundMbTopOnly)
+            CFG_READ_BOOL(borderMenuitems)
+            CFG_READ_BOOL(darkerBorders)
+            CFG_READ_BOOL(vArrows)
+            CFG_READ_BOOL(xCheck)
+#if defined CONFIG_DIALOG || (defined QT_VERSION && (QT_VERSION >= 0x040000)) || !defined __cplusplus
+            CFG_READ_BOOL(fadeLines)
+            CFG_READ_GLOW(glowProgress)
+#endif
+            CFG_READ_BOOL(colorMenubarMouseOver)
+            CFG_READ_INT_BOOL(crHighlight, opts->highlightFactor)
+            CFG_READ_BOOL(crButton)
+            CFG_READ_BOOL(smallRadio)
+            CFG_READ_BOOL(fillProgress)
+            CFG_READ_BOOL(comboSplitter)
+            CFG_READ_BOOL(highlightScrollViews)
+            CFG_READ_BOOL(etchEntry)
+            CFG_READ_INT_BOOL(splitterHighlight, opts->highlightFactor)
+            CFG_READ_INT(crSize)
+            CFG_READ_BOOL(flatSbarButtons)
+            CFG_READ_BOOL(borderSbarGroove)
+            CFG_READ_BOOL(borderProgress)
+            CFG_READ_BOOL(popupBorder)
+            CFG_READ_BOOL(unifySpinBtns)
+            CFG_READ_BOOL(unifySpin)
+            CFG_READ_BOOL(unifyCombo)
+            CFG_READ_BOOL(borderTab)
+            CFG_READ_BOOL(borderInactiveTab)
+            CFG_READ_BOOL(thinSbarGroove)
+            CFG_READ_BOOL(colorSliderMouseOver)
+            CFG_READ_BOOL(menuIcons)
+            CFG_READ_BOOL(forceAlternateLvCols)
+            CFG_READ_BOOL(invertBotTab)
+            CFG_READ_INT_BOOL(menubarHiding, HIDE_KEYBOARD)
+            CFG_READ_INT_BOOL(statusbarHiding, HIDE_KEYBOARD)
+            CFG_READ_BOOL(boldProgress)
+            CFG_READ_BOOL(coloredTbarMo)
+            CFG_READ_BOOL(borderSelection)
+            CFG_READ_BOOL(stripedSbar)
+            CFG_READ_INT_BOOL(windowDrag, WM_DRAG_MENUBAR)
+            CFG_READ_BOOL(shadePopupMenu)
+            
+#if defined CONFIG_DIALOG || (defined QT_VERSION && (QT_VERSION >= 0x040000))
+            CFG_READ_BOOL(stdBtnSizes)
+            CFG_READ_INT(titlebarButtons)
+            CFG_READ_TB_ICON(titlebarIcon)
+#endif
+#if defined QT_VERSION && (QT_VERSION >= 0x040000)
+            CFG_READ_BOOL(xbar)
+            CFG_READ_INT(dwtSettings)
+#endif
+            CFG_READ_INT(bgndOpacity)
+            CFG_READ_INT(menuBgndOpacity)
+            CFG_READ_INT(dlgOpacity)
+            CFG_READ_SHADE(menuStripe, true, true, &opts->customMenuStripeColor)
+            CFG_READ_APPEARANCE(menuStripeAppearance, APP_ALLOW_BASIC)
+            if(opts->version<MAKE_VERSION(0, 63) && IS_BLACK(opts->customMenuStripeColor))
+                CFG_READ_COLOR(customMenuStripeColor)
+            CFG_READ_SHADE(comboBtn, true, false, &opts->customComboBtnColor);
+            CFG_READ_BOOL(gtkScrollViews)
+            CFG_READ_BOOL(doubleGtkComboArrow)
+            CFG_READ_BOOL(stdSidebarButtons)
+            CFG_READ_BOOL(toolbarTabs)
+#ifdef __cplusplus
+            CFG_READ_ALIGN(titlebarAlignment)
+            CFG_READ_EFFECT(titlebarEffect)
+            CFG_READ_BOOL(gtkComboMenus)
+            CFG_READ_BOOL(centerTabText)
+/*
+#else
+            CFG_READ_BOOL(setDialogButtonOrder)
+*/
+#endif
+#if !defined __cplusplus || defined CONFIG_DIALOG
+            CFG_READ_INT(expanderHighlight)
+            CFG_READ_BOOL(mapKdeIcons)
+#endif
+#if defined CONFIG_DIALOG || (defined QT_VERSION && (QT_VERSION >= 0x040000)) || !defined __cplusplus
+            CFG_READ_BOOL(gtkButtonOrder)
+#endif
+#if !defined __cplusplus || (defined CONFIG_DIALOG && defined QT_VERSION && (QT_VERSION >= 0x040000))
+            CFG_READ_BOOL(reorderGtkButtons)
+#endif
+            CFG_READ_APPEARANCE(titlebarAppearance, APP_ALLOW_NONE)
+            CFG_READ_APPEARANCE(inactiveTitlebarAppearance, APP_ALLOW_NONE)
+
+            if(APPEARANCE_BEVELLED==opts->titlebarAppearance)
+                opts->titlebarAppearance=APPEARANCE_GRADIENT;
+            else if(APPEARANCE_RAISED==opts->titlebarAppearance)
+                opts->titlebarAppearance=APPEARANCE_FLAT;
+            if((opts->windowBorder&WINDOW_BORDER_BLEND_TITLEBAR) && !(opts->windowBorder&WINDOW_BORDER_COLOR_TITLEBAR_ONLY))
+                opts->windowBorder-=WINDOW_BORDER_BLEND_TITLEBAR;
+            if(APPEARANCE_BEVELLED==opts->inactiveTitlebarAppearance)
+                opts->inactiveTitlebarAppearance=APPEARANCE_GRADIENT;
+            else if(APPEARANCE_RAISED==opts->inactiveTitlebarAppearance)
+                opts->inactiveTitlebarAppearance=APPEARANCE_FLAT;
+#ifdef __cplusplus
+            CFG_READ_APPEARANCE(titlebarButtonAppearance, APP_ALLOW_BASIC)
+#if defined QT_VERSION && (QT_VERSION >= 0x040000)
+            if(opts->xbar && opts->menubarHiding)
+                opts->xbar=false;
+#endif
+#endif
+            CFG_READ_SHADING(shading)
+            CFG_READ_IMAGE(bgndImage)
+            CFG_READ_IMAGE(menuBgndImage)
+            CFG_READ_STRING_LIST(noMenuStripeApps)
+#if !defined __cplusplus || (defined QT_VERSION && (QT_VERSION >= 0x040000))
+            CFG_READ_STRING_LIST(noBgndGradientApps)
+            CFG_READ_STRING_LIST(noBgndOpacityApps)
+            CFG_READ_STRING_LIST(noMenuBgndOpacityApps)
+            CFG_READ_STRING_LIST(noBgndImageApps)
+#endif 
+#if defined QT_VERSION && (QT_VERSION >= 0x040000)
+            CFG_READ_STRING_LIST(menubarApps)
+            CFG_READ_STRING_LIST(statusbarApps)
+            CFG_READ_STRING_LIST(useQtFileDialogApps)
+            CFG_READ_STRING_LIST(windowDragWhiteList)
+            CFG_READ_STRING_LIST(windowDragBlackList)
+#endif
+            readDoubleList(cfg, "customShades", opts->customShades, NUM_STD_SHADES);
+            readDoubleList(cfg, "customAlphas", opts->customAlphas, NUM_STD_ALPHAS);
+            
+#ifdef __cplusplus
+#if defined CONFIG_DIALOG || (defined QT_VERSION && (QT_VERSION >= 0x040000))
+            if(opts->titlebarButtons&TITLEBAR_BUTTON_COLOR || opts->titlebarButtons&TITLEBAR_BUTTON_ICON_COLOR)
+            {
+#if (defined QT_VERSION && (QT_VERSION >= 0x040000))
+                QStringList cols(readStringEntry(cfg, "titlebarButtonColors").split(',', QString::SkipEmptyParts));
+#else
+                QStringList cols(QStringList::split(',', readStringEntry(cfg, "titlebarButtonColors")));
+#endif
+                if(cols.count() && 0==(cols.count()%NUM_TITLEBAR_BUTTONS) && cols.count()<=(NUM_TITLEBAR_BUTTONS*3))
+                {
+                    QStringList::ConstIterator it(cols.begin()),
+                                               end(cols.end());
+
+                    for(int i=0; it!=end; ++it, ++i)
+                    {
+                        QColor col;
+                        setRgb(&col, TO_LATIN1((*it)));
+                        opts->titlebarButtonColors[i]=col;
+                    }
+                    if(cols.count()<(NUM_TITLEBAR_BUTTONS+1))
+                        opts->titlebarButtons&=~TITLEBAR_BUTTON_ICON_COLOR;
+                }
+                else
+                {
+                    opts->titlebarButtons&=~TITLEBAR_BUTTON_COLOR;
+                    opts->titlebarButtons&=~TITLEBAR_BUTTON_ICON_COLOR;
+                }
+            }
+#endif
 
-            if(APPEARANCE_BEVELLED==opts->sliderAppearance)
-                opts->sliderAppearance=APPEARANCE_GRADIENT;
+            for(i=APPEARANCE_CUSTOM1; i<(APPEARANCE_CUSTOM1+NUM_CUSTOM_GRAD); ++i)
+            {
+                QString gradKey;
 
-            if(APPEARANCE_BEVELLED==opts->tabAppearance)
-                opts->tabAppearance=APPEARANCE_GRADIENT;
+                gradKey.sprintf("customgradient%d", (i-APPEARANCE_CUSTOM1)+1);
 
-            if(opts->highlightFactor<((100.0+MIN_HIGHLIGHT_FACTOR)/100.0) ||
-               opts->highlightFactor>((100.0+MAX_HIGHLIGHT_FACTOR)/100.0))
-                opts->highlightFactor=DEFAULT_HIGHLIGHT_FACTOR;
+#if (defined QT_VERSION && (QT_VERSION >= 0x040000))
+                QStringList vals(readStringEntry(cfg, gradKey).split(',', QString::SkipEmptyParts));
+#else
+                QStringList vals(QStringList::split(',', readStringEntry(cfg, gradKey)));
+#endif
 
-            if(opts->animatedProgress && !opts->stripedProgress)
-                opts->animatedProgress=false;
+                if(vals.size())
+                    opts->customGradient.erase((EAppearance)i);
+
+                if(vals.size()>=5)
+                {
+                    QStringList::ConstIterator it(vals.begin()),
+                                               end(vals.end());
+                    bool                       ok(true),
+                                               haveAlpha(false);
+                    Gradient                   grad;
+                    int                        j;
+
+                    grad.border=toGradientBorder(TO_LATIN1((*it)), &haveAlpha);
+                    ok=vals.size()%(haveAlpha ? 3 : 2);
+
+                    for(++it, j=0; it!=end && ok; ++it, ++j)
+                    {
+                        double pos=(*it).toDouble(&ok),
+                               val=ok ? (*(++it)).toDouble(&ok) : 0.0,
+                               alpha=haveAlpha && ok ? (*(++it)).toDouble(&ok) : 1.0;
+
+                        ok=ok && (pos>=0 && pos<=1.0) && (val>=0.0 && val<=2.0) && (alpha>=0.0 && alpha<=1.0);
+
+                        if(ok)
+                            grad.stops.insert(GradientStop(pos, val, alpha));
+                    }
+
+                    if(ok)
+                    {
+                        opts->customGradient[(EAppearance)i]=grad;
+                        opts->customGradient[(EAppearance)i].stops=grad.stops.fix();
+                    }
+                }
+            }
+#else
+            for(i=0; i<NUM_CUSTOM_GRAD; ++i)
+            {
+                char gradKey[18];
+                char *str;
+
+                sprintf(gradKey, "customgradient%d", i+1);
+                if((str=readStringEntry(cfg, gradKey)))
+                {
+                    int j,
+                        comma=0;
+
+                    for(j=0; str[j]; ++j)
+                        if(','==str[j])
+                            comma++;
+
+                    if(comma && opts->customGradient[i])
+                    {
+                        if(opts->customGradient[i]->stops)
+                            free(opts->customGradient[i]->stops);
+                        free(opts->customGradient[i]);
+                        opts->customGradient[i]=0L;
+                    }
+
+                    if(comma>=4)
+                    {
+                        char *c=strchr(str, ',');
+
+                        if(c)
+                        {
+                            bool            haveAlpha=false;
+                            EGradientBorder border=toGradientBorder(str, &haveAlpha);
+                            int             parts=haveAlpha ? 3 : 2;
+                            bool            ok=0==comma%parts;
+
+                            *c='\0';
+
+                            if(ok)
+                            {
+                                opts->customGradient[i]=malloc(sizeof(Gradient));
+                                opts->customGradient[i]->numStops=comma/parts;
+                                opts->customGradient[i]->stops=malloc(sizeof(GradientStop) * opts->customGradient[i]->numStops);
+                                opts->customGradient[i]->border=border;
+                                str=c+1;
+                                for(j=0; j<comma && str && ok; j+=parts)
+                                {
+                                    int stop=j/parts;
+                                    c=strchr(str, ',');
+
+                                    if(c)
+                                    {
+                                        *c='\0';
+                                        opts->customGradient[i]->stops[stop].pos=g_ascii_strtod(str, NULL);
+                                        str=c+1;
+                                        c=str ? strchr(str, ',') : 0L;
+
+                                        if(c || str)
+                                        {
+                                            if(c)
+                                                *c='\0';
+                                            opts->customGradient[i]->stops[stop].val=g_ascii_strtod(str, NULL);
+                                            str=c ? c+1 : c;
+                                            if(haveAlpha)
+                                            {
+                                                c=str ? strchr(str, ',') : 0L;
+                                                if(c || str)
+                                                {
+                                                    if(c)
+                                                        *c='\0';
+                                                    opts->customGradient[i]->stops[stop].alpha=g_ascii_strtod(str, NULL);
+                                                    str=c ? c+1 : c;
+                                                }
+                                                else
+                                                    ok=false;
+                                            }
+                                            else
+                                                opts->customGradient[i]->stops[stop].alpha=1.0;
+                                        }
+                                        else
+                                            ok=false;
+                                    }
+                                    else
+                                        ok=false;
+
+                                    ok=ok &&
+                                       (opts->customGradient[i]->stops[stop].pos>=0 && opts->customGradient[i]->stops[stop].pos<=1.0) &&
+                                       (opts->customGradient[i]->stops[stop].val>=0.0 && opts->customGradient[i]->stops[stop].val<=2.0) &&
+                                       (opts->customGradient[i]->stops[stop].alpha>=0.0 && opts->customGradient[i]->stops[stop].alpha<=1.0);
+                                }
+
+                                if(ok)
+                                {
+                                    int addStart=0,
+                                        addEnd=0;
+                                    if(opts->customGradient[i]->stops[0].pos>0.001)
+                                        addStart=1;
+                                    if(opts->customGradient[i]->stops[opts->customGradient[i]->numStops-1].pos<0.999)
+                                        addEnd=1;
+
+                                    if(addStart || addEnd)
+                                    {
+                                        int          newSize=opts->customGradient[i]->numStops+addStart+addEnd;
+                                        GradientStop *stops=malloc(sizeof(GradientStop) * newSize);
+
+                                        if(addStart)
+                                        {
+                                            stops[0].pos=0.0;
+                                            stops[0].val=1.0;
+                                            stops[0].alpha=1.0;
+                                        }
+                                        memcpy(&stops[addStart], opts->customGradient[i]->stops, sizeof(GradientStop) * opts->customGradient[i]->numStops);
+                                        if(addEnd)
+                                        {
+                                            stops[opts->customGradient[i]->numStops+addStart].pos=1.0;
+                                            stops[opts->customGradient[i]->numStops+addStart].val=1.0;
+                                            stops[opts->customGradient[i]->numStops+addStart].alpha=1.0;
+                                        }
+                                        opts->customGradient[i]->numStops=newSize;
+                                        free(opts->customGradient[i]->stops);
+                                        opts->customGradient[i]->stops=stops;
+                                    }
+                                }
+                                else
+                                {
+                                    free(opts->customGradient[i]->stops);
+                                    free(opts->customGradient[i]);
+                                    opts->customGradient[i]=0L;
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+#endif
 
-            if(opts->colorSelTab && APPEARANCE_GRADIENT!=opts->tabAppearance)
-                opts->colorSelTab=false;
+            checkConfig(opts);
 
-            if(SHADE_CUSTOM==opts->shadeMenubars || SHADE_BLEND_SELECTED==opts->shadeMenubars || !opts->borderMenuitems)
-                opts->colorMenubarMouseOver=true;
+#ifndef __cplusplus
+            if(!defOpts)
+            {
+                int i;
 
+                for(i=0; i<NUM_CUSTOM_GRAD; ++i)
+                    if(def->customGradient[i])
+                        free(def->customGradient[i]);
+            }
+            releaseConfig(cfg);
+            freeOpts(defOpts);
+#endif
+            return true;
+        }
+        else
+        {
+#ifdef __cplusplus
+            if(defOpts)
+                *opts=*defOpts;
+            else
+                defaultSettings(opts);
+#else
+            if(defOpts)
+                copyOpts(defOpts, opts);
+            else
+                defaultSettings(opts);
+#endif
             return true;
         }
     }
@@ -793,7 +2304,7 @@ static bool fileExists(const char *path)
 
 static const char * getSystemConfigFile()
 {
-    static const char * constFiles[]={ "/etc/qt4/"QTC_FILE, "/etc/qt3/"QTC_FILE, "/etc/qt/"QTC_FILE, NULL };
+    static const char * constFiles[]={ /*"/etc/qt4/"OLD_CONFIG_FILE, "/etc/qt3/"OLD_CONFIG_FILE, "/etc/qt/"OLD_CONFIG_FILE,*/ "/etc/"OLD_CONFIG_FILE, NULL };
 
     int i;
 
@@ -806,70 +2317,199 @@ static const char * getSystemConfigFile()
 static void defaultSettings(Options *opts)
 {
     /* Set hard-coded defaults... */
+#ifndef __cplusplus
+    int i;
+
+    for(i=0; i<NUM_CUSTOM_GRAD; ++i)
+        opts->customGradient[i]=0L;
+    opts->customGradient[APPEARANCE_CUSTOM1]=malloc(sizeof(Gradient));
+    opts->customGradient[APPEARANCE_CUSTOM2]=malloc(sizeof(Gradient));
+    setupGradient(opts->customGradient[APPEARANCE_CUSTOM1], GB_3D,3,0.0,1.2,0.5,1.0,1.0,1.0);
+    setupGradient(opts->customGradient[APPEARANCE_CUSTOM2], GB_3D,3,0.0,0.9,0.5,1.0,1.0,1.0);
+#else
+    // Setup titlebar gradients...
+    setupGradient(&(opts->customGradient[APPEARANCE_CUSTOM1]), GB_3D,3,0.0,1.2,0.5,1.0,1.0,1.0);
+    setupGradient(&(opts->customGradient[APPEARANCE_CUSTOM2]), GB_3D,3,0.0,0.9,0.5,1.0,1.0,1.0);
+#endif
+    opts->customShades[0]=1.16;
+    opts->customShades[1]=1.07;
+    opts->customShades[2]=0.9;
+    opts->customShades[3]=0.78;
+    opts->customShades[4]=0.84;
+    opts->customShades[5]=0.75;
+    opts->customAlphas[0]=0;
     opts->contrast=7;
     opts->passwordChar=0x25CF;
+    opts->gbFactor=DEF_GB_FACTOR;
     opts->highlightFactor=DEFAULT_HIGHLIGHT_FACTOR;
+    opts->crHighlight=DEFAULT_CR_HIGHLIGHT_FACTOR;
+    opts->splitterHighlight=DEFAULT_SPLITTER_HIGHLIGHT_FACTOR;
+    opts->crSize=CR_LARGE_SIZE;
+    opts->menuDelay=DEFAULT_MENU_DELAY;
+    opts->sliderWidth=DEFAULT_SLIDER_WIDTH;
+    opts->selectionAppearance=APPEARANCE_HARSH_GRADIENT;
+#if defined CONFIG_DIALOG || (defined QT_VERSION && (QT_VERSION >= 0x040000)) || !defined __cplusplus
+    opts->round=ROUND_EXTRA;
+    opts->fadeLines=true;
+    opts->glowProgress=GLOW_NONE;
+    opts->gtkButtonOrder=false;
+#else
     opts->round=ROUND_FULL;
-    opts->lighterPopupMenuBgnd=true;
-    opts->animatedProgress=true;
-    opts->stripedProgress=STRIPE_DIAGONAL;
-    opts->sliderStyle=SLIDER_TRIANGULAR;
-    opts->highlightTab=true;
-    opts->colorSelTab=false;
+#endif
+#ifdef __cplusplus
+    opts->dwtAppearance=APPEARANCE_CUSTOM1;
+#endif
+#if !defined __cplusplus || (defined CONFIG_DIALOG && defined QT_VERSION && (QT_VERSION >= 0x040000))
+    opts->reorderGtkButtons=false;
+#endif
+    opts->bgndImage.type=IMG_NONE;
+    opts->menuBgndImage.type=IMG_NONE;
+    opts->lighterPopupMenuBgnd=DEF_POPUPMENU_LIGHT_FACTOR;
+    opts->tabBgnd=DEF_TAB_BGND;
+    opts->animatedProgress=false;
+    opts->stripedProgress=STRIPE_NONE;
+    opts->sliderStyle=SLIDER_PLAIN;
+    opts->highlightTab=false;
+    opts->colorSelTab=0;
+    opts->roundAllTabs=true;
+    opts->tabMouseOver=TAB_MO_GLOW;
     opts->embolden=false;
-    opts->appearance=APPEARANCE_DULL_GLASS;
+    opts->bgndGrad=GT_HORIZ;
+    opts->menuBgndGrad=GT_HORIZ;
+    opts->appearance=APPEARANCE_SOFT_GRADIENT;
+    opts->bgndAppearance=APPEARANCE_FLAT;
+    opts->menuBgndAppearance=APPEARANCE_FLAT;
     opts->lvAppearance=APPEARANCE_BEVELLED;
-    opts->tabAppearance=APPEARANCE_GRADIENT;
-    opts->sliderAppearance=APPEARANCE_DULL_GLASS;
-    opts->menubarAppearance=APPEARANCE_GRADIENT;
-    opts->menuitemAppearance=APPEARANCE_DULL_GLASS;
+    opts->tabAppearance=APPEARANCE_SOFT_GRADIENT;
+    opts->activeTabAppearance=APPEARANCE_SOFT_GRADIENT;
+    opts->sliderAppearance=APPEARANCE_SOFT_GRADIENT;
+    opts->menubarAppearance=APPEARANCE_FLAT;
+    opts->menuitemAppearance=APPEARANCE_FADE;
     opts->toolbarAppearance=APPEARANCE_FLAT;
     opts->progressAppearance=APPEARANCE_DULL_GLASS;
-    opts->defBtnIndicator=IND_COLORED;
+    opts->progressGrooveAppearance=APPEARANCE_INVERTED;
+    opts->progressGrooveColor=ECOLOR_DARK;
+    opts->grooveAppearance=APPEARANCE_INVERTED;
+    opts->sunkenAppearance=APPEARANCE_SOFT_GRADIENT;
+    opts->sbarBgndAppearance=APPEARANCE_FLAT;
+    opts->tooltipAppearance=APPEARANCE_GRADIENT;
+    opts->sliderFill=APPEARANCE_GRADIENT;
+    opts->defBtnIndicator=IND_GLOW;
     opts->sliderThumbs=LINE_FLAT;
-    opts->handles=LINE_SUNKEN;
-    opts->shadeSliders=SHADE_BLEND_SELECTED;
+    opts->handles=LINE_1DOT;
+    opts->shadeSliders=SHADE_NONE;
     opts->shadeMenubars=SHADE_NONE;
     opts->shadeCheckRadio=SHADE_NONE;
+    opts->sortedLv=SHADE_NONE;
     opts->toolbarBorders=TB_NONE;
-    opts->toolbarSeparators=LINE_NONE;
-    opts->splitters=LINE_FLAT;
+    opts->toolbarSeparators=LINE_SUNKEN;
+    opts->splitters=LINE_1DOT;
+#ifdef QTC_ENABLE_PARENTLESS_DIALOG_FIX_SUPPORT
     opts->fixParentlessDialogs=false;
+#ifdef __cplusplus
+    opts->noDlgFixApps << "kate" << "plasma" << "plasma-desktop" << "plasma-netbook";
+#else
+    opts->noDlgFixApps=NULL;
+#endif
+#endif
     opts->customMenuTextColor=false;
-    opts->coloredMouseOver=MO_PLASTIK;
+    opts->coloredMouseOver=MO_GLOW;
     opts->menubarMouseOver=true;
-    opts->shadeMenubarOnlyWhenActive=true;
+    opts->useHighlightForMenu=false;
+    opts->shadeMenubarOnlyWhenActive=false;
     opts->thinnerMenuItems=false;
+    opts->thinnerBtns=true;
     opts->scrollbarType=SCROLLBAR_KDE;
-    opts->buttonEffect=EFFECT_NONE;
-#ifndef QTC_PLAIN_FOCUS_ONLY
-    opts->stdFocus=true;
-#endif
-    opts->lvLines=false;
+    opts->buttonEffect=EFFECT_SHADOW;
+    opts->focus=FOCUS_GLOW;
+    opts->lvButton=false;
+    opts->lvLines=LV_NONE;
     opts->drawStatusBarFrames=false;
     opts->fillSlider=true;
     opts->roundMbTopOnly=true;
-    opts->borderMenuitems=true;
-    opts->gradientPbGroove=true;
+    opts->borderMenuitems=false;
     opts->darkerBorders=false;
-    opts->vArrows=false;
+    opts->vArrows=true;
     opts->xCheck=false;
-    opts->framelessGroupBoxes=false;
-    opts->colorMenubarMouseOver=false;
-    opts->inactiveHighlight=false;
-#ifdef QTC_CONFIG_DIALOG
-    opts->shading=SHADING_HSL;
+    opts->colorMenubarMouseOver=true;
+    opts->crButton=true;
+    opts->crColor=SHADE_NONE;
+    opts->progressColor=SHADE_SELECTED;
+    opts->smallRadio=true;
+    opts->fillProgress=true;
+    opts->comboSplitter=false;
+    opts->highlightScrollViews=false;
+    opts->etchEntry=false;
+    opts->flatSbarButtons=true;
+    opts->borderSbarGroove=true;
+    opts->borderProgress=true;
+    opts->popupBorder=true;
+    opts->unifySpinBtns=false;
+    opts->unifySpin=true;
+    opts->unifyCombo=true;
+    opts->borderTab=true;
+    opts->borderInactiveTab=false;
+    opts->thinSbarGroove=true;
+    opts->colorSliderMouseOver=false;
+    opts->menuIcons=true;
+    opts->forceAlternateLvCols=false;
+    opts->invertBotTab=true;
+    opts->menubarHiding=HIDE_NONE;
+    opts->statusbarHiding=HIDE_NONE;
+    opts->boldProgress=true;
+    opts->coloredTbarMo=false;
+    opts->borderSelection=false;
+    opts->square=SQUARE_POPUP_MENUS;
+    opts->stripedSbar=false;
+    opts->windowDrag=WM_DRAG_NONE;
+    opts->shadePopupMenu=false;
+    opts->windowBorder=WINDOW_BORDER_ADD_LIGHT_BORDER;
+    opts->groupBox=FRAME_FADED;
+    opts->gbFactor=DEF_GB_FACTOR;
+    opts->gbLabel=GB_LBL_BOLD|GB_LBL_OUTSIDE;
+#if defined CONFIG_DIALOG || (defined QT_VERSION && (QT_VERSION >= 0x040000))
+    opts->stdBtnSizes=false;
+    opts->titlebarButtons=TITLEBAR_BUTTON_ROUND|TITLEBAR_BUTTON_HOVER_SYMBOL;
+    opts->titlebarIcon=TITLEBAR_ICON_NEXT_TO_TITLE;
 #endif
-#ifdef __cplusplus
+    opts->menuStripe=SHADE_NONE;
+    opts->menuStripeAppearance=APPEARANCE_DARK_INVERTED;
+    opts->shading=SHADING_HSL;
+    opts->gtkScrollViews=true;
+    opts->comboBtn=SHADE_NONE;
+    opts->doubleGtkComboArrow=true;
     opts->stdSidebarButtons=false;
-    opts->gtkScrollViews=false;
+    opts->toolbarTabs=false;
+    opts->bgndOpacity=opts->dlgOpacity=opts->menuBgndOpacity=100;
+#ifdef __cplusplus
     opts->gtkComboMenus=false;
     opts->customMenubarsColor.setRgb(0, 0, 0);
     opts->customSlidersColor.setRgb(0, 0, 0);
     opts->customMenuNormTextColor.setRgb(0, 0, 0);
     opts->customMenuSelTextColor.setRgb(0, 0, 0);
     opts->customCheckRadioColor.setRgb(0, 0, 0);
+    opts->customComboBtnColor.setRgb(0, 0, 0);
+    opts->customMenuStripeColor.setRgb(0, 0, 0);
+    opts->customProgressColor.setRgb(0, 0, 0);
+    opts->titlebarAlignment=ALIGN_FULL_CENTER;
+    opts->titlebarEffect=EFFECT_SHADOW;
+    opts->centerTabText=false;
+#if defined QT_VERSION && (QT_VERSION >= 0x040000)
+    opts->xbar=false;
+    opts->dwtSettings=DWT_BUTTONS_AS_PER_TITLEBAR|DWT_ROUND_TOP_ONLY;
+    opts->menubarApps << "amarok" << "arora" << "kaffeine" << "kcalc" << "smplayer" << "VirtualBox";
+    opts->statusbarApps << "kde";
+    opts->useQtFileDialogApps << "googleearth-bin";
+    opts->noMenuBgndOpacityApps << "inkscape" << "inkscape" << "sonata" << "totem";
+    opts->noBgndOpacityApps << "smplayer" << "kaffeine" << "dragon" << "kscreenlocker" << "inkscape" << "inkscape" << "sonata" << "totem";
+#endif
+    opts->noMenuStripeApps << "gtk" << "soffice.bin";
 #else
+    opts->noBgndGradientApps=NULL;
+    opts->noBgndOpacityApps=g_strsplit("inkscape,sonata,totem",",", -1);;
+    opts->noBgndImageApps=NULL;
+    opts->noMenuStripeApps=g_strsplit("gtk",",", -1);
+    opts->noMenuBgndOpacityApps=g_strsplit("inkscape,sonata,totem",",", -1);
 /*
     opts->setDialogButtonOrder=false;
 */
@@ -878,15 +2518,20 @@ static void defaultSettings(Options *opts)
     opts->customMenuNormTextColor.red=opts->customMenuNormTextColor.green=opts->customMenuNormTextColor.blue=0;
     opts->customMenuSelTextColor.red=opts->customMenuSelTextColor.green=opts->customMenuSelTextColor.blue=0;
     opts->customCheckRadioColor.red=opts->customCheckRadioColor.green=opts->customCheckRadioColor.blue=0;
+    opts->customComboBtnColor.red=opts->customCheckRadioColor.green=opts->customCheckRadioColor.blue=0;
+    opts->customMenuStripeColor.red=opts->customMenuStripeColor.green=opts->customMenuStripeColor.blue=0;
+    opts->customProgressColor.red=opts->customProgressColor.green=opts->customProgressColor.blue=0;
 #endif
 
-#if !defined __cplusplus || defined QTC_CONFIG_DIALOG
+#if !defined __cplusplus || defined CONFIG_DIALOG
     opts->mapKdeIcons=true;
+    opts->expanderHighlight=DEFAULT_EXPANDER_HIGHLIGHT_FACTOR;
 #endif
-#if defined QTC_CONFIG_DIALOG || (defined QT_VERSION && (QT_VERSION >= 0x040000)) || !defined __cplusplus
-    opts->gtkButtonOrder=false;
+    opts->titlebarAppearance=APPEARANCE_CUSTOM1;
+    opts->inactiveTitlebarAppearance=APPEARANCE_CUSTOM1;
+#ifdef __cplusplus
+    opts->titlebarButtonAppearance=APPEARANCE_GRADIENT;
 #endif
-
     /* Read system config file... */
     {
     static const char * systemFilename=NULL;
@@ -897,6 +2542,11 @@ static void defaultSettings(Options *opts)
     if(systemFilename)
         readConfig(systemFilename, opts, opts);
     }
+
+#if !defined CONFIG_DIALOG && defined QT_VERSION && (QT_VERSION < 0x040000)
+    if(FOCUS_FILLED==opts->focus)
+        opts->focus=FOCUS_FULL;
+#endif
 }
 
 #endif
@@ -912,19 +2562,31 @@ static const char *toStr(EDefBtnIndicator ind)
             return "fontcolor";
         case IND_CORNER:
             return "corner";
+        case IND_TINT:
+            return "tint";
+        case IND_GLOW:
+            return "glow";
+        case IND_DARKEN:
+            return "darken";
+        case IND_SELECTED:
+            return "origselected";
         default:
             return "colored";
     }
 }
 
-static const char *toStr(ELine ind, bool none)
+static const char *toStr(ELine ind, bool dashes)
 {
     switch(ind)
     {
+        case LINE_1DOT:
+            return "1dot";
         case LINE_DOTS:
             return "dots";
         case LINE_DASHES:
-            return none ? "none" : "dashes";
+            return dashes ? "dashes" : "none";
+        case LINE_NONE:
+            return "none";
         case LINE_FLAT:
             return "flat";
         default:
@@ -955,14 +2617,18 @@ static const char *toStr(EMouseOver mo)
     {
         case MO_COLORED:
             return "colored";
+        case MO_COLORED_THICK:
+            return "thickcolored";
         case MO_NONE:
             return "none";
+        case MO_GLOW:
+            return "glow";
         default:
             return "plastik";
     }
 }
 
-static const char *toStr(EAppearance exp)
+static QString toStr(EAppearance exp, EAppAllow allow)
 {
     switch(exp)
     {
@@ -970,22 +2636,56 @@ static const char *toStr(EAppearance exp)
             return "flat";
         case APPEARANCE_RAISED:
             return "raised";
+        case APPEARANCE_DULL_GLASS:
+            return "dullglass";
+        case APPEARANCE_SHINY_GLASS:
+            return "shinyglass";
+        case APPEARANCE_AGUA:
+            return "agua";
+        case APPEARANCE_SOFT_GRADIENT:
+            return "soft";
         case APPEARANCE_GRADIENT:
             return "gradient";
+        case APPEARANCE_HARSH_GRADIENT:
+            return "harsh";
+        case APPEARANCE_INVERTED:
+            return "inverted";
+        case APPEARANCE_DARK_INVERTED:
+            return "darkinverted";
         case APPEARANCE_SPLIT_GRADIENT:
             return "splitgradient";
-        case APPEARANCE_DULL_GLASS:
-            return "dullglass";
         case APPEARANCE_BEVELLED:
             return "bevelled";
-        case APPEARANCE_INVERTED:
-            return "inverted";
+        case APPEARANCE_FADE:
+            switch(allow)
+            {
+                case APP_ALLOW_BASIC: // Should not get here!
+                case APP_ALLOW_FADE:
+                    return "fade";
+                case APP_ALLOW_STRIPED:
+                    return "striped";
+                case APP_ALLOW_NONE:
+                    return "none";
+            }
         default:
-            return "shinyglass";
+        {
+            QString app;
+
+            app.sprintf("customgradient%d", (exp-APPEARANCE_CUSTOM1)+1);
+            return app;
+        }
     }
 }
 
-static const char *toStr(EShade exp, bool dark, bool convertBlendSelToSel)
+static QString toStr(const QColor &col)
+{
+    QString colorStr;
+
+    colorStr.sprintf("#%02X%02X%02X", col.red(), col.green(), col.blue());
+    return colorStr;
+}
+
+static QString toStr(EShade exp, const QColor &col)
 {
     switch(exp)
     {
@@ -993,12 +2693,15 @@ static const char *toStr(EShade exp, bool dark, bool convertBlendSelToSel)
         case SHADE_NONE:
             return "none";
         case SHADE_BLEND_SELECTED:
-            return dark || !convertBlendSelToSel ? "selected" : "origselected";
+            return "selected";
         case SHADE_CUSTOM:
-            return "custom";
-        /* case SHADE_SELECTED */
+            return toStr(col);
+        case SHADE_SELECTED:
+            return "origselected";
         case SHADE_DARKEN:
-            return dark ? "darken" : "origselected";
+            return "darken";
+        case SHADE_WINDOW_BORDER:
+            return "wborder";
     }
 }
 
@@ -1010,6 +2713,10 @@ static const char *toStr(ERound exp)
             return "none";
         case ROUND_SLIGHT:
             return "slight";
+        case ROUND_EXTRA:
+            return "extra";
+        case ROUND_MAX:
+            return "max";
         default:
         case ROUND_FULL:
             return "full";
@@ -1034,6 +2741,24 @@ static const char *toStr(EScrollbar sb)
     }
 }
 
+static const char *toStr(EFrame sb)
+{
+    switch(sb)
+    {
+        case FRAME_NONE:
+            return "none";
+        case FRAME_PLAIN:
+            return "plain";
+        case FRAME_LINE:
+            return "line";
+        case FRAME_SHADED:
+            return "shaded";
+        case FRAME_FADED:
+        default:
+            return "faded";
+    }
+}
+
 static const char *toStr(EEffect e)
 {
     switch(e)
@@ -1050,14 +2775,6 @@ static const char *toStr(EEffect e)
 
 inline const char * toStr(bool b) { return b ? "true" : "false"; }
 
-static QString toStr(const QColor &col)
-{
-    QString colorStr;
-
-    colorStr.sprintf("#%02X%02X%02X", col.red(), col.green(), col.blue());
-    return colorStr;
-}
-
 static const char *toStr(EShading s)
 {
     switch(s)
@@ -1069,6 +2786,8 @@ static const char *toStr(EShading s)
             return "hsl";
         case SHADING_HSV:
             return "hsv";
+        case SHADING_HCY:
+            return "hcy";
     }
 }
 
@@ -1083,6 +2802,8 @@ static const char *toStr(EStripe s)
             return "none";
         case STRIPE_DIAGONAL:
             return "diagonal";
+        case STRIPE_FADE:
+            return "fade";
     }
 }
 
@@ -1094,13 +2815,176 @@ static const char *toStr(ESliderStyle s)
             return "plain";
         case SLIDER_TRIANGULAR:
             return "triangular";
+        case SLIDER_ROUND_ROTATED:
+            return "r-round";
+        case SLIDER_PLAIN_ROTATED:
+            return "r-plain";
+        case SLIDER_CIRCULAR:
+            return "circular";
         default:
         case SLIDER_ROUND:
             return "round";
     }
 }
 
+static const char *toStr(EColor s)
+{
+    switch(s)
+    {
+        case ECOLOR_BACKGROUND:
+            return "background";
+        case ECOLOR_DARK:
+            return "dark";
+        default:
+        case ECOLOR_BASE:
+            return "base";
+    }
+}
+
+static const char *toStr(EFocus f)
+{
+    switch(f)
+    {
+        default:
+        case FOCUS_STANDARD:
+            return "standard";
+        case FOCUS_RECTANGLE:
+            return "rect";
+        case FOCUS_FILLED:
+            return "filled";
+        case FOCUS_FULL:
+            return "full";
+        case FOCUS_LINE:
+            return "line";
+        case FOCUS_GLOW:
+            return "glow";
+    }
+}
+
+static const char *toStr(ETabMo f)
+{
+    switch(f)
+    {
+        default:
+        case TAB_MO_BOTTOM:
+            return "bot";
+        case TAB_MO_TOP:
+            return "top";
+        case TAB_MO_GLOW:
+            return "glow";
+    }
+}
+
+static const char *toStr(EGradientBorder g)
+{
+    switch(g)
+    {
+        case GB_NONE:
+            return "none";
+        case GB_LIGHT:
+            return "light";
+        case GB_3D_FULL:
+            return "3dfull";
+        case GB_SHINE:
+            return "shine";
+        default:
+        case GB_3D:
+            return "3d";
+    }
+}
+
+static const char *toStr(EAlign ind)
+{
+    switch(ind)
+    {
+        default:
+        case ALIGN_LEFT:
+            return "left";
+        case ALIGN_CENTER:
+            return "center";
+        case ALIGN_FULL_CENTER:
+            return "center-full";
+        case ALIGN_RIGHT:
+            return "right";
+    }
+}
+
+static const char * toStr(ETitleBarIcon icn)
+{
+    switch(icn)
+    {
+        case TITLEBAR_ICON_NONE:
+            return "none";
+        default:
+        case TITLEBAR_ICON_MENU_BUTTON:
+            return "menu";
+        case TITLEBAR_ICON_NEXT_TO_TITLE:
+            return "title";
+    }
+}
+
+static const char * toStr(EGradType gt)
+{
+    switch(gt)
+    {
+        case GT_VERT:
+            return "vert";
+        default:
+        case GT_HORIZ:
+            return "horiz";
+    }
+}
+
+static const char * toStr(ELvLines lv)
+{
+    switch(lv)
+    {
+        case LV_NEW:
+            return "new";
+        case LV_OLD:
+            return "old";
+        default:
+        case LV_NONE:
+            return "none";
+    }
+}
+
+static const char * toStr(EImageType lv)
+{
+    switch(lv)
+    {
+        default:
+        case IMG_NONE:
+            return "none";
+        case IMG_PLAIN_RINGS:
+            return "plainrings";
+        case IMG_BORDERED_RINGS:
+            return "rings";
+        case IMG_SQUARE_RINGS:
+            return "squarerings";
+        case IMG_FILE:
+            return "file";
+    }
+}
+
+static const char * toStr(EGlow lv)
+{
+    switch(lv)
+    {
+        default:
+        case GLOW_NONE:
+            return "none";
+        case GLOW_START:
+            return "start";
+        case GLOW_MIDDLE:
+            return "middle";
+        case GLOW_END:
+            return "end";
+    }
+}
+
 #if QT_VERSION >= 0x040000
+#include <QTextStream>
 #define CFG config
 #else
 #define CFG (*cfg)
@@ -1112,124 +2996,362 @@ static const char *toStr(ESliderStyle s)
     else \
         CFG.writeEntry(#ENTRY, toStr(opts.ENTRY));
 
-#define CFG_WRITE_ENTRY_FORCE(ENTRY) \
-        CFG.writeEntry(#ENTRY, toStr(opts.ENTRY));
-
+#define CFG_WRITE_APPEARANCE_ENTRY(ENTRY, ALLOW) \
+    if (!exportingStyle && def.ENTRY==opts.ENTRY) \
+        CFG.deleteEntry(#ENTRY); \
+    else \
+        CFG.writeEntry(#ENTRY, toStr(opts.ENTRY, ALLOW));
+    
 #define CFG_WRITE_ENTRY_B(ENTRY, B) \
     if (!exportingStyle && def.ENTRY==opts.ENTRY) \
         CFG.deleteEntry(#ENTRY); \
     else \
         CFG.writeEntry(#ENTRY, toStr(opts.ENTRY, B));
 
-#define CFG_WRITE_ENTRY_SHADE(ENTRY, DARK, CONVERT_SHADE) \
+#define CFG_WRITE_ENTRY_NUM(ENTRY) \
     if (!exportingStyle && def.ENTRY==opts.ENTRY) \
         CFG.deleteEntry(#ENTRY); \
     else \
-        CFG.writeEntry(#ENTRY, toStr(opts.ENTRY, DARK, CONVERT_SHADE));
+        CFG.writeEntry(#ENTRY, opts.ENTRY);
 
-#define CFG_WRITE_ENTRY_D(ENTRY) \
+#define CFG_WRITE_SHADE_ENTRY(ENTRY, COL) \
     if (!exportingStyle && def.ENTRY==opts.ENTRY) \
         CFG.deleteEntry(#ENTRY); \
     else \
-        CFG.writeEntry(#ENTRY, ((int)(opts.ENTRY*100))-100);
+        CFG.writeEntry(#ENTRY, toStr(opts.ENTRY, opts.COL));
 
-#define CFG_WRITE_ENTRY_NUM(ENTRY) \
+#define CFG_WRITE_IMAGE_ENTRY(ENTRY) \
+    if (!exportingStyle && def.ENTRY.type==opts.ENTRY.type) \
+        CFG.deleteEntry(#ENTRY); \
+    else \
+        CFG.writeEntry(#ENTRY, toStr(opts.ENTRY.type)); \
+    if(IMG_FILE!=opts.ENTRY.type) \
+    { \
+        CFG.deleteEntry(#ENTRY ".file"); \
+        CFG.deleteEntry(#ENTRY ".width"); \
+        CFG.deleteEntry(#ENTRY ".height"); \
+    } \
+    else \
+    { \
+        CFG.writeEntry(#ENTRY ".file", opts.ENTRY.file); \
+        CFG.writeEntry(#ENTRY ".width", opts.ENTRY.width); \
+        CFG.writeEntry(#ENTRY ".height", opts.ENTRY.height); \
+    }
+
+#define CFG_WRITE_STRING_LIST_ENTRY(ENTRY) \
     if (!exportingStyle && def.ENTRY==opts.ENTRY) \
         CFG.deleteEntry(#ENTRY); \
     else \
-        CFG.writeEntry(#ENTRY, opts.ENTRY);
+        CFG.writeEntry(#ENTRY, QStringList(opts.ENTRY.toList()).join(",")); \
 
 bool static writeConfig(KConfig *cfg, const Options &opts, const Options &def, bool exportingStyle=false)
 {
     if(!cfg)
     {
-        const char *xdg=xdgConfigFolder();
+        const char *cfgDir=qtcConfDir();
 
-        if(xdg)
+        if(cfgDir)
         {
-            char filename[QTC_MAX_FILENAME_LEN];
-
-            sprintf(filename, "%s/"QTC_FILE, xdg);
-
 #if QT_VERSION >= 0x040000
-            KConfig defCfg(filename, KConfig::SimpleConfig);
+            KConfig defCfg(QFile::decodeName(cfgDir)+CONFIG_FILE, KConfig::SimpleConfig);
 #else
-            KConfig defCfg(filename, false, false);
+            KConfig defCfg(QFile::decodeName(cfgDir)+CONFIG_FILE, false, false);
 #endif
 
-            return writeConfig(&defCfg, opts, def, exportingStyle);
+            if(writeConfig(&defCfg, opts, def, exportingStyle))
+            {
+                const char *oldFiles[]={ OLD_CONFIG_FILE, "qtcurve.gtk-icons", 0};
+
+                for(int i=0; oldFiles[i]; ++i)
+                {
+                    QString oldFileName(QFile::decodeName(cfgDir)+QString("../")+oldFiles[i]);
+
+                    if(QFile::exists(oldFileName))
+                        QFile::remove(oldFileName);
+                }
+            }
         }
     }
     else
     {
 #if QT_VERSION >= 0x040000
-        KConfigGroup config(cfg, QTC_GROUP);
+        KConfigGroup config(cfg, SETTINGS_GROUP);
 #else
-        cfg->setGroup(QTC_GROUP);
+        cfg->setGroup(SETTINGS_GROUP);
 #endif
+        CFG.writeEntry(VERSION_KEY, VERSION);
         CFG_WRITE_ENTRY_NUM(passwordChar)
+        CFG_WRITE_ENTRY_NUM(gbFactor)
         CFG_WRITE_ENTRY(round)
-        CFG_WRITE_ENTRY_D(highlightFactor)
+        CFG_WRITE_ENTRY_NUM(highlightFactor)
+        CFG_WRITE_ENTRY_NUM(menuDelay)
+        CFG_WRITE_ENTRY_NUM(sliderWidth)
         CFG_WRITE_ENTRY(toolbarBorders)
-        CFG_WRITE_ENTRY_FORCE(appearance)
+        CFG_WRITE_APPEARANCE_ENTRY(appearance, APP_ALLOW_BASIC)
+        CFG_WRITE_APPEARANCE_ENTRY(bgndAppearance, APP_ALLOW_STRIPED)
+        CFG_WRITE_ENTRY(bgndGrad)
+        CFG_WRITE_ENTRY(menuBgndGrad)
+        CFG_WRITE_APPEARANCE_ENTRY(menuBgndAppearance, APP_ALLOW_STRIPED)
+#ifdef QTC_ENABLE_PARENTLESS_DIALOG_FIX_SUPPORT
         CFG_WRITE_ENTRY(fixParentlessDialogs)
+#if defined QT_VERSION && (QT_VERSION >= 0x040000)
+        CFG_WRITE_STRING_LIST_ENTRY(noDlgFixApps)
+#endif
+#endif
         CFG_WRITE_ENTRY(stripedProgress)
         CFG_WRITE_ENTRY(sliderStyle)
         CFG_WRITE_ENTRY(animatedProgress)
-        CFG_WRITE_ENTRY(lighterPopupMenuBgnd)
+        CFG_WRITE_ENTRY_NUM(lighterPopupMenuBgnd)
+        CFG_WRITE_ENTRY_NUM(tabBgnd)
         CFG_WRITE_ENTRY(embolden)
         CFG_WRITE_ENTRY(defBtnIndicator)
-        CFG_WRITE_ENTRY_B(sliderThumbs, true)
-        CFG_WRITE_ENTRY_B(handles, false)
+        CFG_WRITE_ENTRY_B(sliderThumbs, false)
+        CFG_WRITE_ENTRY_B(handles, true)
         CFG_WRITE_ENTRY(highlightTab)
-        CFG_WRITE_ENTRY(colorSelTab)
-        CFG_WRITE_ENTRY_SHADE(shadeSliders, false, false)
-        CFG_WRITE_ENTRY_SHADE(shadeMenubars, true, false)
-        CFG_WRITE_ENTRY_SHADE(shadeCheckRadio, false, true)
-        CFG_WRITE_ENTRY_FORCE(menubarAppearance)
-        CFG_WRITE_ENTRY_FORCE(menuitemAppearance)
-        CFG_WRITE_ENTRY_FORCE(toolbarAppearance)
-        CFG_WRITE_ENTRY_B(toolbarSeparators, true)
-        CFG_WRITE_ENTRY_B(splitters, false)
+        CFG_WRITE_ENTRY_NUM(colorSelTab)
+        CFG_WRITE_ENTRY(roundAllTabs)
+        CFG_WRITE_ENTRY(tabMouseOver)
+        CFG_WRITE_APPEARANCE_ENTRY(menubarAppearance, APP_ALLOW_BASIC)
+        CFG_WRITE_APPEARANCE_ENTRY(menuitemAppearance, APP_ALLOW_FADE)
+        CFG_WRITE_APPEARANCE_ENTRY(toolbarAppearance, APP_ALLOW_BASIC)
+        CFG_WRITE_APPEARANCE_ENTRY(selectionAppearance, APP_ALLOW_BASIC)
+#ifdef __cplusplus
+        CFG_WRITE_APPEARANCE_ENTRY(dwtAppearance, APP_ALLOW_BASIC)
+        CFG_WRITE_ENTRY(titlebarEffect)
+#endif
+        CFG_WRITE_APPEARANCE_ENTRY(menuStripeAppearance, APP_ALLOW_BASIC)
+        CFG_WRITE_ENTRY_B(toolbarSeparators, false)
+        CFG_WRITE_ENTRY_B(splitters, true)
         CFG_WRITE_ENTRY(customMenuTextColor)
         CFG_WRITE_ENTRY(coloredMouseOver)
         CFG_WRITE_ENTRY(menubarMouseOver)
+        CFG_WRITE_ENTRY(useHighlightForMenu)
         CFG_WRITE_ENTRY(shadeMenubarOnlyWhenActive)
         CFG_WRITE_ENTRY(thinnerMenuItems)
-        CFG_WRITE_ENTRY(customSlidersColor)
-        CFG_WRITE_ENTRY(customMenubarsColor)
+        CFG_WRITE_ENTRY(thinnerBtns)
+        CFG_WRITE_SHADE_ENTRY(shadeSliders, customSlidersColor)
+        CFG_WRITE_SHADE_ENTRY(shadeMenubars, customMenubarsColor)
+        CFG_WRITE_SHADE_ENTRY(sortedLv, customSortedLvColor)
         CFG_WRITE_ENTRY(customMenuSelTextColor)
         CFG_WRITE_ENTRY(customMenuNormTextColor)
-        CFG_WRITE_ENTRY(customCheckRadioColor)
+        CFG_WRITE_SHADE_ENTRY(shadeCheckRadio, customCheckRadioColor)
         CFG_WRITE_ENTRY(scrollbarType)
         CFG_WRITE_ENTRY(buttonEffect)
-        CFG_WRITE_ENTRY_FORCE(lvAppearance)
-        CFG_WRITE_ENTRY_FORCE(tabAppearance)
-        CFG_WRITE_ENTRY_FORCE(sliderAppearance)
-        CFG_WRITE_ENTRY_FORCE(progressAppearance)
-#ifndef QTC_PLAIN_FOCUS_ONLY
-        CFG_WRITE_ENTRY(stdFocus)
-#endif
+        CFG_WRITE_APPEARANCE_ENTRY(lvAppearance, APP_ALLOW_BASIC)
+        CFG_WRITE_APPEARANCE_ENTRY(tabAppearance, APP_ALLOW_BASIC)
+        CFG_WRITE_APPEARANCE_ENTRY(activeTabAppearance, APP_ALLOW_BASIC)
+        CFG_WRITE_APPEARANCE_ENTRY(sliderAppearance, APP_ALLOW_BASIC)
+        CFG_WRITE_APPEARANCE_ENTRY(progressAppearance, APP_ALLOW_BASIC)
+        CFG_WRITE_APPEARANCE_ENTRY(progressGrooveAppearance, APP_ALLOW_BASIC)
+        CFG_WRITE_APPEARANCE_ENTRY(grooveAppearance, APP_ALLOW_BASIC)
+        CFG_WRITE_APPEARANCE_ENTRY(sunkenAppearance, APP_ALLOW_BASIC)
+        CFG_WRITE_APPEARANCE_ENTRY(sbarBgndAppearance, APP_ALLOW_BASIC)
+        CFG_WRITE_APPEARANCE_ENTRY(tooltipAppearance, APP_ALLOW_BASIC)
+        CFG_WRITE_ENTRY(sliderFill)
+        CFG_WRITE_ENTRY(progressGrooveColor)
+        CFG_WRITE_ENTRY(focus)
+        CFG_WRITE_ENTRY(lvButton)
         CFG_WRITE_ENTRY(lvLines)
         CFG_WRITE_ENTRY(drawStatusBarFrames)
         CFG_WRITE_ENTRY(fillSlider)
         CFG_WRITE_ENTRY(roundMbTopOnly)
         CFG_WRITE_ENTRY(borderMenuitems)
-        CFG_WRITE_ENTRY(gradientPbGroove)
         CFG_WRITE_ENTRY(darkerBorders)
         CFG_WRITE_ENTRY(vArrows)
         CFG_WRITE_ENTRY(xCheck)
-        CFG_WRITE_ENTRY(framelessGroupBoxes)
-        CFG_WRITE_ENTRY(inactiveHighlight)
-#ifdef __cplusplus
-        CFG_WRITE_ENTRY(stdSidebarButtons)
+        CFG_WRITE_ENTRY(groupBox)
+        CFG_WRITE_ENTRY_NUM(gbLabel)
+        CFG_WRITE_ENTRY(fadeLines)
+        CFG_WRITE_ENTRY(glowProgress)
+        CFG_WRITE_IMAGE_ENTRY(bgndImage)
+        CFG_WRITE_IMAGE_ENTRY(menuBgndImage)
+        CFG_WRITE_ENTRY(colorMenubarMouseOver)
+        CFG_WRITE_ENTRY_NUM(crHighlight)
+        CFG_WRITE_ENTRY(crButton)
+        CFG_WRITE_SHADE_ENTRY(crColor, customCrBgndColor)
+        CFG_WRITE_SHADE_ENTRY(progressColor, customProgressColor)
+        CFG_WRITE_ENTRY(smallRadio)
+        CFG_WRITE_ENTRY(fillProgress)
+        CFG_WRITE_ENTRY(comboSplitter)
+        CFG_WRITE_ENTRY(highlightScrollViews)
+        CFG_WRITE_ENTRY(etchEntry)
+        CFG_WRITE_ENTRY_NUM(splitterHighlight)
+        CFG_WRITE_ENTRY_NUM(expanderHighlight)
+        CFG_WRITE_ENTRY_NUM(crSize)
+        CFG_WRITE_ENTRY(flatSbarButtons)
+        CFG_WRITE_ENTRY(borderSbarGroove)
+        CFG_WRITE_ENTRY(borderProgress)
+        CFG_WRITE_ENTRY(popupBorder)
+        CFG_WRITE_ENTRY(unifySpinBtns)
+        CFG_WRITE_ENTRY(unifySpin)
+        CFG_WRITE_ENTRY(unifyCombo)
+        CFG_WRITE_ENTRY(borderTab)
+        CFG_WRITE_ENTRY(borderInactiveTab)
+        CFG_WRITE_ENTRY(thinSbarGroove)
+        CFG_WRITE_ENTRY(colorSliderMouseOver)
+        CFG_WRITE_ENTRY(menuIcons)
+        CFG_WRITE_ENTRY(forceAlternateLvCols)
+        CFG_WRITE_ENTRY_NUM(square)
+        CFG_WRITE_ENTRY(invertBotTab)
+        CFG_WRITE_ENTRY_NUM(menubarHiding)
+        CFG_WRITE_ENTRY_NUM(statusbarHiding)
+        CFG_WRITE_ENTRY(boldProgress)
+        CFG_WRITE_ENTRY(coloredTbarMo)
+        CFG_WRITE_ENTRY(borderSelection)
+        CFG_WRITE_ENTRY(stripedSbar)
+        CFG_WRITE_ENTRY_NUM(windowDrag)
+        CFG_WRITE_ENTRY(shadePopupMenu)
+        CFG_WRITE_ENTRY_NUM(windowBorder)
+#if defined QT_VERSION && (QT_VERSION >= 0x040000)
+        CFG_WRITE_ENTRY(xbar)
+        CFG_WRITE_ENTRY_NUM(dwtSettings)
 #endif
-
+        CFG_WRITE_ENTRY_NUM(bgndOpacity)
+        CFG_WRITE_ENTRY_NUM(menuBgndOpacity)
+        CFG_WRITE_ENTRY_NUM(dlgOpacity)
+#if defined CONFIG_DIALOG || (defined QT_VERSION && (QT_VERSION >= 0x040000))
+        CFG_WRITE_ENTRY(stdBtnSizes)
+        CFG_WRITE_ENTRY_NUM(titlebarButtons)
+        CFG_WRITE_ENTRY(titlebarIcon)
+
+        if((opts.titlebarButtons&TITLEBAR_BUTTON_COLOR || opts.titlebarButtons&TITLEBAR_BUTTON_ICON_COLOR) &&
+            opts.titlebarButtonColors.size() && 0==(opts.titlebarButtonColors.size()%NUM_TITLEBAR_BUTTONS))
+        {
+            QString     val;
+#if QT_VERSION >= 0x040000
+            QTextStream str(&val);
+#else
+            QTextStream str(&val, IO_WriteOnly);
+#endif
+            for(unsigned int i=0; i<opts.titlebarButtonColors.size(); ++i)
+            {
+                TBCols::const_iterator c(opts.titlebarButtonColors.find((ETitleBarButtons)i));
+
+                if(c!=opts.titlebarButtonColors.end())
+                {
+                    if(i)
+                        str << ',';
+                    str << toStr((*c).second);
+                }
+            }
+            CFG.writeEntry("titlebarButtonColors", val);
+        }
+        else
+            CFG.deleteEntry("titlebarButtonColors");
+#endif
+        CFG_WRITE_SHADE_ENTRY(menuStripe, customMenuStripeColor)
+        CFG_WRITE_SHADE_ENTRY(comboBtn, customComboBtnColor)
+        CFG_WRITE_ENTRY(stdSidebarButtons)
+        CFG_WRITE_ENTRY(toolbarTabs)
+        CFG_WRITE_APPEARANCE_ENTRY(titlebarAppearance, APP_ALLOW_NONE)
+        CFG_WRITE_APPEARANCE_ENTRY(inactiveTitlebarAppearance, APP_ALLOW_NONE)
+        CFG_WRITE_APPEARANCE_ENTRY(titlebarButtonAppearance, APP_ALLOW_BASIC)
         CFG_WRITE_ENTRY(gtkScrollViews)
         CFG_WRITE_ENTRY(gtkComboMenus)
+        CFG_WRITE_ENTRY(doubleGtkComboArrow)
         CFG_WRITE_ENTRY(gtkButtonOrder)
+#if !defined __cplusplus || (defined CONFIG_DIALOG && defined QT_VERSION && (QT_VERSION >= 0x040000))
+        CFG_WRITE_ENTRY(reorderGtkButtons)
+#endif
         CFG_WRITE_ENTRY(mapKdeIcons)
         CFG_WRITE_ENTRY(shading)
+        CFG_WRITE_ENTRY(titlebarAlignment)
+        CFG_WRITE_ENTRY(centerTabText)
+#if defined QT_VERSION && (QT_VERSION >= 0x040000)
+        CFG_WRITE_STRING_LIST_ENTRY(noBgndGradientApps)
+        CFG_WRITE_STRING_LIST_ENTRY(noBgndOpacityApps)
+        CFG_WRITE_STRING_LIST_ENTRY(noMenuBgndOpacityApps)
+        CFG_WRITE_STRING_LIST_ENTRY(noBgndImageApps)
+        CFG_WRITE_STRING_LIST_ENTRY(noMenuStripeApps)
+        CFG_WRITE_STRING_LIST_ENTRY(menubarApps)
+        CFG_WRITE_STRING_LIST_ENTRY(statusbarApps)
+        CFG_WRITE_STRING_LIST_ENTRY(useQtFileDialogApps)
+#endif
+
+        for(int i=APPEARANCE_CUSTOM1; i<(APPEARANCE_CUSTOM1+NUM_CUSTOM_GRAD); ++i)
+        {
+            GradientCont::const_iterator cg(opts.customGradient.find((EAppearance)i));
+            QString                      gradKey;
+
+            gradKey.sprintf("customgradient%d", (i-APPEARANCE_CUSTOM1)+1);
+
+            if(cg==opts.customGradient.end())
+                CFG.deleteEntry(gradKey);
+            else
+            {
+                GradientCont::const_iterator d;
+
+                if(exportingStyle || (d=def.customGradient.find((EAppearance)i))==def.customGradient.end() || !((*d)==(*cg)))
+                {
+                    QString     gradVal;
+#if QT_VERSION >= 0x040000
+                    QTextStream str(&gradVal);
+#else
+                    QTextStream str(&gradVal, IO_WriteOnly);
+#endif
+                    GradientStopCont                 stops((*cg).second.stops.fix());
+                    GradientStopCont::const_iterator it(stops.begin()),
+                                                     end(stops.end());
+                    bool                             haveAlpha(false);
+
+                    for(; it!=end && !haveAlpha; ++it)
+                        if((*it).alpha<1.0)
+                            haveAlpha=true;
+
+                    str << toStr((*cg).second.border);
+                    if(haveAlpha)
+                        str << "-alpha";
+
+                    for(it=stops.begin(); it!=end; ++it)
+                        if(haveAlpha)
+                            str << ',' << (*it).pos << ',' << (*it).val << ',' << (*it).alpha;
+                        else
+                            str << ',' << (*it).pos << ',' << (*it).val;
+                    CFG.writeEntry(gradKey, gradVal);
+                }
+                else
+                    CFG.deleteEntry(gradKey);
+            }
+        }
+
+        if(opts.customShades[0]==0 ||
+           exportingStyle ||
+           opts.customShades[0]!=def.customShades[0] ||
+           opts.customShades[1]!=def.customShades[1] ||
+           opts.customShades[2]!=def.customShades[2] ||
+           opts.customShades[3]!=def.customShades[3] ||
+           opts.customShades[4]!=def.customShades[4] ||
+           opts.customShades[5]!=def.customShades[5])
+        {
+            QString     shadeVal;
+#if QT_VERSION >= 0x040000
+            QTextStream str(&shadeVal);
+#else
+            QTextStream str(&shadeVal, IO_WriteOnly);
+#endif
+            if(0==opts.customShades[0])
+                 str << 0;
+            else
+                for(int i=0; i<NUM_STD_SHADES; ++i)
+                    if(0==i)
+                        str << opts.customShades[i];
+                    else
+                        str << ',' << opts.customShades[i];
+            CFG.writeEntry("customShades", shadeVal);
+        }
+        else
+            CFG.deleteEntry("customShades");
+
+        // Removed from 1.5 onwards...
+        CFG.deleteEntry("colorTitlebarOnly");
+        CFG.deleteEntry("titlebarBorder");
+        CFG.deleteEntry("titlebarBlend");
+        // Removed from 1.4 onwards..
+        CFG.deleteEntry("squareLvSelection");
+        CFG.deleteEntry("squareScrollViews");
+        CFG.deleteEntry("squareProgress");
+        CFG.deleteEntry("squareEntry");
+
         cfg->sync();
         return true;
     }
diff --git a/common/dot.png b/common/dot.png
new file mode 100644
index 0000000..c1ba664
Binary files /dev/null and b/common/dot.png differ
diff --git a/common/radio_inner.png b/common/radio_inner.png
new file mode 100644
index 0000000..94201cd
Binary files /dev/null and b/common/radio_inner.png differ
diff --git a/common/radio_on.png b/common/radio_on.png
index 22236ac..7584dbf 100644
Binary files a/common/radio_on.png and b/common/radio_on.png differ
diff --git a/common/radio_on_small.png b/common/radio_on_small.png
new file mode 100644
index 0000000..72dc158
Binary files /dev/null and b/common/radio_on_small.png differ
diff --git a/config.h.cmake b/config.h.cmake
index 0ecd358..05fb811 100644
--- a/config.h.cmake
+++ b/config.h.cmake
@@ -4,4 +4,10 @@
 #define VERSION     "@QTCURVE_VERSION_FULL@"
 #define KDE3PREFIX  "@KDE3PREFIX@"
 #define KDE4PREFIX  "@KDE4PREFIX@"
+
+#cmakedefine QTC_QT_ONLY
+#cmakedefine QTC_DEFAULT_TO_KDE3
+#cmakedefine QTC_STYLE_SUPPORT
+#cmakedefine QTC_ENABLE_PARENTLESS_DIALOG_FIX_SUPPORT
+
 #endif
diff --git a/config/CMakeLists.txt b/config/CMakeLists.txt
index b9b391f..3c02ea9 100644
--- a/config/CMakeLists.txt
+++ b/config/CMakeLists.txt
@@ -1,7 +1,12 @@
-set(kstyle_qtcurve_config_PART_SRCS qtcurveconfig.cpp exportthemedialog.cpp)
+if (QTC_STYLE_SUPPORT)
+    set(kstyle_qtcurve_config_PART_SRCS qtcurveconfig.cpp exportthemedialog.cpp)
+else (QTC_STYLE_SUPPORT)
+    set(kstyle_qtcurve_config_PART_SRCS qtcurveconfig.cpp)
+endif (QTC_STYLE_SUPPORT)
+
 include_directories(${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/common ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_BINARY_DIR} ${KDE3_INCLUDE_DIR} ${QT_INCLUDE_DIR})
 kde3_add_ui_files(kstyle_qtcurve_config_PART_SRCS qtcurveconfigbase.ui)
 kde3_add_kpart(kstyle_qtcurve_config ${kstyle_qtcurve_config_PART_SRCS})
 kde3_automoc(${kstyle_qtcurve_config_PART_SRCS})
-target_link_libraries(kstyle_qtcurve_config ${KDE3_KDEUI_LIBS} ${KDE3_KIO_LIBS} ${KDE3_KDECORE_LIBS} ${QT_QTGUI_LIBRARY})
+target_link_libraries(kstyle_qtcurve_config ${QT_AND_KDECORE_LIBS} kio kdeui)
 install(TARGETS kstyle_qtcurve_config DESTINATION ${KDE3_LIB_DIR}/kde3)
diff --git a/config/exportthemedialog.cpp b/config/exportthemedialog.cpp
index 4d1eaf1..a677cb8 100644
--- a/config/exportthemedialog.cpp
+++ b/config/exportthemedialog.cpp
@@ -1,5 +1,5 @@
 /*
-  QtCurve (C) Craig Drummond, 2003 - 2007 Craig.Drummond@lycos.co.uk
+  QtCurve (C) Craig Drummond, 2003 - 2010 craig.p.drummond@gmail.com
 
   ----
 
@@ -64,7 +64,7 @@ void CExportThemeDialog::slotOk()
         KMessageBox::error(this, i18n("Name is empty!"));
     else
     {
-        QString fileName(themeUrl->url()+"/"QTC_THEME_PREFIX+name+".themerc");
+        QString fileName(themeUrl->url()+"/"THEME_PREFIX+name+".themerc");
 
         KConfig cfg(fileName, false, false);
         bool    rv(!cfg.isReadOnly());
@@ -75,7 +75,7 @@ void CExportThemeDialog::slotOk()
             cfg.writeEntry("Name", themeName->text().stripWhiteSpace());
             cfg.writeEntry("Comment", themeComment->text());
             cfg.setGroup("KDE");
-            cfg.writeEntry("WidgetStyle", QTC_THEME_PREFIX+name);
+            cfg.writeEntry("WidgetStyle", THEME_PREFIX+name);
 
             rv=writeConfig(&cfg, opts, opts, true);
         }
diff --git a/config/exportthemedialog.h b/config/exportthemedialog.h
index 0301b9e..2657dd3 100644
--- a/config/exportthemedialog.h
+++ b/config/exportthemedialog.h
@@ -2,7 +2,7 @@
 #define __EXPORT_THEME_DIALOG_H__
 
 /*
-  QtCurve (C) Craig Drummond, 2007 Craig.Drummond@lycos.co.uk
+  QtCurve (C) Craig Drummond, 2007 - 2010 craig.p.drummond@gmail.com
 
   ----
 
@@ -22,7 +22,7 @@
 */
 
 #include <kdialogbase.h>
-#define QTC_CONFIG_DIALOG
+#define CONFIG_DIALOG
 #include "common.h"
 
 class KURLRequester;
diff --git a/config/qtcurveconfig.cpp b/config/qtcurveconfig.cpp
index b9b36a6..b08fa2d 100644
--- a/config/qtcurveconfig.cpp
+++ b/config/qtcurveconfig.cpp
@@ -1,5 +1,5 @@
 /*
-  QtCurve (C) Craig Drummond, 2003 - 2007 Craig.Drummond@lycos.co.uk
+  QtCurve (C) Craig Drummond, 2003 - 2010 craig.p.drummond@gmail.com
 
   ----
 
@@ -19,7 +19,9 @@
 */
 
 #include "qtcurveconfig.h"
+#ifdef QTC_STYLE_SUPPORT
 #include "exportthemedialog.h"
+#endif
 #include <qcheckbox.h>
 #include <qcombobox.h>
 #include <qgroupbox.h>
@@ -30,6 +32,11 @@
 #include <qtabwidget.h>
 #include <qpopupmenu.h>
 #include <qfileinfo.h>
+#include <qlistview.h>
+#include <qpainter.h>
+#include <qregexp.h>
+#include <qsettings.h>
+#include <qwidgetstack.h>
 #include <klocale.h>
 #include <kcolorbutton.h>
 #include <kconfig.h>
@@ -39,23 +46,100 @@
 #include <kcharselect.h>
 #include <kdialogbase.h>
 #include <knuminput.h>
+#include <kguiitem.h>
+#include <kinputdialog.h>
+#include <knuminput.h>
+#include <kglobal.h>
+#include <kstandarddirs.h>
 #include <unistd.h>
+#include <errno.h>
 #include "config.h"
 #define CONFIG_READ
 #define CONFIG_WRITE
 #include "config_file.c"
 
-#define QTC_EXTENSION ".qtcurve"
+#define EXTENSION ".qtcurve"
 
 extern "C"
 {
     QWidget * allocate_kstyle_config(QWidget *parent)
     {
-        KGlobal::locale()->insertCatalogue("kstyle_qtcurve_config");
+        KGlobal::locale()->insertCatalogue("qtcurve");
         return new QtCurveConfig(parent);
     }
 }
 
+static void drawGradient(const QColor &top, const QColor &bot, bool increase,
+                         QPainter *p, QRect const &r, bool horiz)
+{
+    if(r.width()>0 && r.height()>0)
+    {
+        if(top==bot)
+            p->fillRect(r, top);
+        else
+        {
+            int rh(r.height()), rw(r.width()),
+                rTop(top.red()), gTop(top.green()), bTop(top.blue()),
+                rx, ry, rx2, ry2,
+                size(horiz ? rh : rw);
+
+            r.coords(&rx, &ry, &rx2, &ry2);
+
+            register int rl(rTop << 16);
+            register int gl(gTop << 16);
+            register int bl(bTop << 16);
+            register int i;
+
+            int dr(((1<<16) * (bot.red() - rTop)) / size),
+                dg(((1<<16) * (bot.green() - gTop)) / size),
+                db(((1<<16) * (bot.blue() - bTop)) / size);
+
+            if(increase)
+                if(horiz)
+                {
+                    for (i=0; i < size; i++)
+                    {
+                        p->setPen(QColor(rl>>16, gl>>16, bl>>16));
+                        p->drawLine(rx, ry+i, rx2, ry+i);
+                        rl += dr;
+                        gl += dg;
+                        bl += db;
+                    }
+                }
+                else
+                    for(i=0; i < size; i++)
+                    {
+                        p->setPen(QColor(rl>>16, gl>>16, bl>>16));
+                        p->drawLine(rx+i, ry, rx+i, ry2);
+                        rl += dr;
+                        gl += dg;
+                        bl += db;
+                    }
+            else
+                if(horiz)
+                {
+                    for(i=size-1; i>=0; i--)
+                    {
+                        p->setPen(QColor(rl>>16, gl>>16, bl>>16));
+                        p->drawLine(rx, ry+i, rx2, ry+i);
+                        rl += dr;
+                        gl += dg;
+                        bl += db;
+                    }
+                }
+                else
+                    for(i=size-1; i>=0; i--)
+                    {
+                        p->setPen(QColor(rl>>16, gl>>16, bl>>16));
+                        p->drawLine(rx+i, ry, rx+i, ry2);
+                        rl += dr;
+                        gl += dg;
+                        bl += db;
+                    }
+        }
+    }
+}
+
 class CharSelectDialog : public KDialogBase
 {
     public:
@@ -79,54 +163,268 @@ class CharSelectDialog : public KDialogBase
     KCharSelect *itsSelector;
 };
 
+class CStackItem : public QListViewItem
+{
+    public:
+
+    CStackItem(QListView *p, const QString &text, int s)
+        : QListViewItem(p, text),
+          stackId(s)
+    {
+    }
+
+    int compare(QListViewItem *i, int, bool) const
+    {
+        int b=((CStackItem *)i)->stackId;
+
+        return stackId==b
+                ? 0
+                : stackId<b
+                    ? -1
+                    : 1;
+    }
+
+    int stack() { return stackId; }
+
+    private:
+
+    int stackId;
+};
+
+//
+// QString.toDouble returns ok=true for "xx" ???
+static double toDouble(const QString &str, bool *ok)
+{
+    if(ok)
+    {
+        QString stripped(str.stripWhiteSpace());
+        int     size(stripped.length());
+
+        for(int i=0; i<size; ++i)
+            if(!stripped[i].isNumber() && stripped[i]!='.')
+            {
+                *ok=false;
+                return 0.0;
+            }
+    }
+
+    return str.toDouble(ok);
+}
+
+class CGradItem : public QListViewItem
+{
+    public:
+
+    CGradItem(QListView *p, const QString &a, const QString &b)
+        : QListViewItem(p, a, b)
+    {
+        setRenameEnabled(0, true);
+        setRenameEnabled(1, true);
+    }
+
+    virtual ~CGradItem() { }
+
+    void okRename(int col)
+    {
+        QString prevStr(text(col));
+
+        prev=prevStr.toDouble();
+        QListViewItem::okRename(col);
+
+        bool    ok(false);
+        double  val=toDouble(text(col), &ok)/100.0;
+
+        if(!ok || (0==col && (val<0.0 || val>1.0)) || (1==col && (val<0.0 || val>2.0)))
+        {
+            setText(col, prevStr);
+            startRename(col);
+        }
+    }
+
+    int compare(QListViewItem *i, int col, bool) const
+    {
+        double a(text(col).toDouble()),
+               b(i->text(col).toDouble());
+
+        return equal(a, b)
+                ? 0
+                : a<b
+                    ? -1
+                    : 1;
+    }
+
+    double prevVal() const { return prev; }
+
+    private:
+
+    double prev;
+};
+
+CGradientPreview::CGradientPreview(QtCurveConfig *c, QWidget *p)
+                : QWidget(p),
+                  cfg(c)
+{
+    setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred);
+}
+
+QSize CGradientPreview::sizeHint() const
+{
+    return QSize(64, 64);
+}
+
+QSize CGradientPreview::minimumSizeHint() const
+{
+    return sizeHint();
+}
+
+void CGradientPreview::paintEvent(QPaintEvent *)
+{
+    QRect    r(rect());
+    QPainter p(this);
+
+    if(stops.size())
+    {
+        GradientStopCont                 st(stops.fix());
+        GradientStopCont::const_iterator it(st.begin()),
+                                         end(st.end());
+        QColor                           bot;
+        bool                             horiz(true);
+        int                              lastPos(horiz ? r.y() : r.x()),
+                                         size(horiz ? r.height() : r.width());
+        Options                          opts;
+        
+        opts.shading=cfg->currentShading();
+            
+        for(int i=0; it!=end; ++it, ++i)
+        {
+            if(0==i)
+            {
+                lastPos=(int)(((*it).pos*size)+0.5);
+                shade(&opts, color, &bot, (*it).val);
+            }
+            else
+            {
+                QColor top(bot);
+                int    pos((int)(((*it).pos*size)+0.5));
+
+                shade(&opts, color, &bot, (*it).val);
+                drawGradient(top, bot, true, &p,
+                             horiz
+                                ? QRect(r.x(), lastPos, r.width(), pos-lastPos)
+                                : QRect(lastPos, r.y(), pos-lastPos, r.height()),
+                             horiz);
+                lastPos=pos;
+            }
+        }
+    }
+    else
+        p.fillRect(r, color);
+    p.end();
+}
+
+void CGradientPreview::setGrad(const GradientStopCont &s)
+{
+    stops=s;
+    repaint();
+}
+
+void CGradientPreview::setColor(const QColor &col)
+{
+    if(col!=color)
+    {
+        color=col;
+        repaint();
+    }
+}
+
 static int toInt(const QString &str)
 {
     return str.length()>1 ? str[0].unicode() : 0;
 }
 
-static void insertShadeEntries(QComboBox *combo, bool withDarken, bool checkRadio=false)
+enum ShadeWidget
 {
-    combo->insertItem(checkRadio ? i18n("Text")
-                                 : withDarken ? i18n("Background")
-                                              : i18n("Button"));
-    combo->insertItem(i18n("Custom:"));
+    SW_MENUBAR,
+    SW_SLIDER,
+    SW_CHECK_RADIO,
+    SW_MENU_STRIPE,
+    SW_COMBO,
+    SW_LV_HEADER
+};
 
-    if(checkRadio) // For check/radio, we dont blend, and dont allow darken
-        combo->insertItem(i18n("Selected background"));
-    else if(withDarken)
+static void insertShadeEntries(QComboBox *combo, ShadeWidget sw)
+{
+    switch(sw)
     {
-         // For menubars we dont actually blend...
-        combo->insertItem(i18n("Selected background"));
-        combo->insertItem(i18n("Darken"));
+        case SW_MENUBAR:
+            combo->insertItem(i18n("Background"));
+            break;
+        case SW_COMBO:
+        case SW_SLIDER:
+            combo->insertItem(i18n("Button"));
+            break;
+        case SW_CHECK_RADIO:
+            combo->insertItem(i18n("Text"));
+            break;
+        case SW_LV_HEADER:
+        case SW_MENU_STRIPE:
+            combo->insertItem(i18n("None"));
+            break;
     }
-    else
+
+    combo->insertItem(i18n("Custom:"));
+    combo->insertItem(i18n("Selected background"));
+    if(SW_CHECK_RADIO!=sw) // For check/radio, we dont blend, and dont allow darken
     {
         combo->insertItem(i18n("Blended selected background"));
-        combo->insertItem(i18n("Selected background"));
+        combo->insertItem(SW_MENU_STRIPE==sw ? i18n("Menu background") : i18n("Darken"));
     }
+
+    if(SW_MENUBAR==sw)
+        combo->insertItem(i18n("Titlebar border"));
 }
 
-static void insertAppearanceEntries(QComboBox *combo, bool all=true)
+static void insertAppearanceEntries(QComboBox *combo, bool split=true, bool bev=true, bool fade=false, bool striped=false)
 {
+    for(int i=APPEARANCE_CUSTOM1; i<(APPEARANCE_CUSTOM1+NUM_CUSTOM_GRAD); ++i)
+        combo->insertItem(i18n("Custom gradient %1").arg((i-APPEARANCE_CUSTOM1)+1));
+
     combo->insertItem(i18n("Flat"));
     combo->insertItem(i18n("Raised"));
     combo->insertItem(i18n("Dull glass"));
     combo->insertItem(i18n("Shiny glass"));
-    combo->insertItem(i18n("Gradient"));
+    combo->insertItem(i18n("Agua"));
+    combo->insertItem(i18n("Soft gradient"));
+    combo->insertItem(i18n("Standard gradient"));
+    combo->insertItem(i18n("Harsh gradient"));
     combo->insertItem(i18n("Inverted gradient"));
-    if(all)
+    combo->insertItem(i18n("Dark inverted gradient"));
+    if(split)
     {
         combo->insertItem(i18n("Split gradient"));
-        combo->insertItem(i18n("Bevelled"));
+        if(bev)
+        {
+            combo->insertItem(i18n("Bevelled"));
+            if(fade)
+                combo->insertItem(i18n("Fade out (popup menuitems)"));
+            else if(striped)
+                combo->insertItem(i18n("Striped"));
+        }
     }
 }
 
-static void insertLineEntries(QComboBox *combo, bool none)
+static void insertLineEntries(QComboBox *combo, bool singleDot, bool dashes)
 {
+    combo->insertItem(i18n("None"));
     combo->insertItem(i18n("Sunken lines"));
     combo->insertItem(i18n("Flat lines"));
     combo->insertItem(i18n("Dots"));
-    combo->insertItem(none ? i18n("None") : i18n("Dashes"));
+    if(singleDot)
+    {
+        combo->insertItem(i18n("Single dot (KDE4 & Gtk2 Only)"));
+        if(dashes)
+            combo->insertItem(i18n("Dashes"));
+    }
 }
 
 static void insertDefBtnEntries(QComboBox *combo)
@@ -134,15 +432,19 @@ static void insertDefBtnEntries(QComboBox *combo)
     combo->insertItem(i18n("Corner indicator"));
     combo->insertItem(i18n("Font color thin border"));
     combo->insertItem(i18n("Selected background thick border"));
-    combo->insertItem(i18n("None"));
+    combo->insertItem(i18n("Selected background tinting"));
+    combo->insertItem(i18n("A slight glow"));
+    combo->insertItem(i18n("Darken"));
+    combo->insertItem(i18n("Use selected background color"));
+    combo->insertItem(i18n("No indicator"));
 }
 
 static void insertScrollbarEntries(QComboBox *combo)
 {
     combo->insertItem(i18n("KDE"));
-    combo->insertItem(i18n("Windows"));
+    combo->insertItem(i18n("MS Windows"));
     combo->insertItem(i18n("Platinum"));
-    combo->insertItem(i18n("Next"));
+    combo->insertItem(i18n("NeXT"));
     combo->insertItem(i18n("No buttons"));
 }
 
@@ -151,13 +453,17 @@ static void insertRoundEntries(QComboBox *combo)
     combo->insertItem(i18n("Square"));
     combo->insertItem(i18n("Slightly rounded"));
     combo->insertItem(i18n("Fully rounded"));
+    combo->insertItem(i18n("Extra rounded (KDE4 & Gtk2)"));
+    combo->insertItem(i18n("Max rounded (KDE4 & Gtk2)"));
 }
 
 static void insertMouseOverEntries(QComboBox *combo)
 {
     combo->insertItem(i18n("No coloration"));
     combo->insertItem(i18n("Color border"));
+    combo->insertItem(i18n("Thick color border"));
     combo->insertItem(i18n("Plastik style"));
+    combo->insertItem(i18n("Glow"));
 }
 
 static void insertToolbarBorderEntries(QComboBox *combo)
@@ -181,42 +487,120 @@ static void insertShadingEntries(QComboBox *combo)
     combo->insertItem(i18n("Simple"));
     combo->insertItem(i18n("Use HSL color space"));
     combo->insertItem(i18n("Use HSV color space"));
+    combo->insertItem(i18n("Use HCY color space"));
 }
 
 static void insertStripeEntries(QComboBox *combo)
 {
     combo->insertItem(i18n("Plain"));
-    combo->insertItem(i18n("Striped"));
+    combo->insertItem(i18n("Stripes"));
     combo->insertItem(i18n("Diagonal stripes"));
+    combo->insertItem(i18n("Faded stripes"));
 }
 
 static void insertSliderStyleEntries(QComboBox *combo)
 {
     combo->insertItem(i18n("Plain"));
     combo->insertItem(i18n("Round"));
+    combo->insertItem(i18n("Plain - rotated"));
+    combo->insertItem(i18n("Round - rotated"));
     combo->insertItem(i18n("Triangular"));
+    combo->insertItem(i18n("Circular"));
+}
+
+static void insertEColorEntries(QComboBox *combo)
+{
+    combo->insertItem(i18n("Base color"));
+    combo->insertItem(i18n("Background color"));
+    combo->insertItem(i18n("Darkened background color"));
+}
+
+static void insertFocusEntries(QComboBox *combo)
+{
+    combo->insertItem(i18n("Standard (dotted)"));
+    combo->insertItem(i18n("Highlight color"));
+    combo->insertItem(i18n("Highlight color (full size)"));
+    combo->insertItem(i18n("Highlight color, full, and fill (Gtk2 & KDE4 only)"));
+    combo->insertItem(i18n("Line drawn with highlight color"));
+}
+
+static void insertGradBorderEntries(QComboBox *combo)
+{
+    combo->insertItem(i18n("No border"));
+    combo->insertItem(i18n("Light border"));
+    combo->insertItem(i18n("3D border (light only)"));
+    combo->insertItem(i18n("3D border (dark and light)"));
+    combo->insertItem(i18n("Shine"));
+}
+
+static void insertAlignEntries(QComboBox *combo)
+{
+    combo->insertItem(i18n("Left"));
+    combo->insertItem(i18n("Center (between controls)"));
+    combo->insertItem(i18n("Center (full width)"));
+    combo->insertItem(i18n("Right"));
+}
+
+static void insertTabMoEntriess(QComboBox *combo)
+{
+    combo->insertItem(i18n("Highlight on top"));
+    combo->insertItem(i18n("Highlight on bottom"));
+    combo->insertItem(i18n("Add a slight glow"));
+}
+
+static void insertGradTypeEntries(QComboBox *combo)
+{
+    combo->insertItem(i18n("Top to bottom"));
+    combo->insertItem(i18n("Left to right"));
+}
+
+static void insertLvLinesEntries(QComboBox *combo)
+{
+    combo->insertItem(i18n("None"));
+    combo->insertItem(i18n("New style (KDE and Gtk2 similar)"));
+    combo->insertItem(i18n("Old style (KDE and Gtk2 different)"));
 }
 
 QtCurveConfig::QtCurveConfig(QWidget *parent)
              : QtCurveConfigBase(parent),
-               exportDialog(NULL)
+#ifdef QTC_STYLE_SUPPORT
+               exportDialog(NULL),
+#endif
+               gradPreview(NULL),
+               lastCategory(NULL)
 {
-    titleLabel->setText("QtCurve " VERSION " - (C) Craig Drummond, 2003-2007");
-    insertShadeEntries(shadeSliders, false);
-    insertShadeEntries(shadeMenubars, true);
-    insertShadeEntries(shadeCheckRadio, false, true);
+    titleLabel->setText("QtCurve " VERSION " - (C) Craig Drummond, 2003-2009");
+    insertShadeEntries(shadeSliders, SW_SLIDER);
+    insertShadeEntries(shadeMenubars, SW_MENUBAR);
+    insertShadeEntries(shadeCheckRadio, SW_CHECK_RADIO);
+    insertShadeEntries(menuStripe, SW_MENU_STRIPE);
+    insertShadeEntries(comboBtn, SW_COMBO);
+    insertShadeEntries(sortedLv, SW_LV_HEADER);
     insertAppearanceEntries(appearance);
     insertAppearanceEntries(menubarAppearance);
     insertAppearanceEntries(toolbarAppearance);
     insertAppearanceEntries(lvAppearance);
     insertAppearanceEntries(sliderAppearance);
-    insertAppearanceEntries(tabAppearance, false);
+    insertAppearanceEntries(tabAppearance, false, false);
+    insertAppearanceEntries(activeTabAppearance, false, false);
     insertAppearanceEntries(progressAppearance);
-    insertAppearanceEntries(menuitemAppearance);
-    insertLineEntries(handles, false);
-    insertLineEntries(sliderThumbs, true);
-    insertLineEntries(toolbarSeparators, true);
-    insertLineEntries(splitters, false);
+    insertAppearanceEntries(progressGrooveAppearance);
+    insertAppearanceEntries(grooveAppearance);
+    insertAppearanceEntries(sunkenAppearance);
+    insertAppearanceEntries(menuitemAppearance, true, true, true);
+    insertAppearanceEntries(titlebarAppearance, true, false);
+    insertAppearanceEntries(inactiveTitlebarAppearance, true, false);
+    insertAppearanceEntries(titlebarButtonAppearance);
+    insertAppearanceEntries(selectionAppearance, true, false);
+    insertAppearanceEntries(menuStripeAppearance, true, false);
+    insertAppearanceEntries(sbarBgndAppearance);
+    insertAppearanceEntries(sliderFill);
+    insertAppearanceEntries(menuBgndAppearance, true, true, false, true);
+    insertAppearanceEntries(dwtAppearance);
+    insertLineEntries(handles, true, true);
+    insertLineEntries(sliderThumbs, true, false);
+    insertLineEntries(toolbarSeparators, false, false);
+    insertLineEntries(splitters, true, true);
     insertDefBtnEntries(defBtnIndicator);
     insertScrollbarEntries(scrollbarType);
     insertRoundEntries(round);
@@ -226,58 +610,118 @@ QtCurveConfig::QtCurveConfig(QWidget *parent)
     insertShadingEntries(shading);
     insertStripeEntries(stripedProgress);
     insertSliderStyleEntries(sliderStyle);
-
-    highlightFactor->setMinValue(MIN_HIGHLIGHT_FACTOR);
-    highlightFactor->setMaxValue(MAX_HIGHLIGHT_FACTOR);
-    highlightFactor->setValue(((int)(DEFAULT_HIGHLIGHT_FACTOR*100))-100);
-
-    connect(lighterPopupMenuBgnd, SIGNAL(toggled(bool)), SLOT(updateChanged()));
-    connect(round, SIGNAL(activated(int)), SLOT(updateChanged()));
+    insertEColorEntries(progressGrooveColor);
+    insertFocusEntries(focus);
+    insertGradBorderEntries(gradBorder);
+    insertAlignEntries(titlebarAlignment);
+    insertTabMoEntriess(tabMouseOver);
+    insertGradTypeEntries(menuBgndGrad);
+    insertLvLinesEntries(lvLines);
+
+    highlightFactor->setRange(MIN_HIGHLIGHT_FACTOR, MAX_HIGHLIGHT_FACTOR);
+    highlightFactor->setValue(DEFAULT_HIGHLIGHT_FACTOR);
+
+    crHighlight->setRange(MIN_HIGHLIGHT_FACTOR, MAX_HIGHLIGHT_FACTOR);
+    crHighlight->setValue(DEFAULT_CR_HIGHLIGHT_FACTOR);
+
+    splitterHighlight->setRange(MIN_HIGHLIGHT_FACTOR, MAX_HIGHLIGHT_FACTOR);
+    splitterHighlight->setValue(DEFAULT_SPLITTER_HIGHLIGHT_FACTOR);
+
+    lighterPopupMenuBgnd->setRange(MIN_LIGHTER_POPUP_MENU, MAX_LIGHTER_POPUP_MENU, 1, false);
+    lighterPopupMenuBgnd->setValue(DEF_POPUPMENU_LIGHT_FACTOR);
+
+    menuDelay->setRange(MIN_MENU_DELAY, MAX_MENU_DELAY, 1, false);
+    menuDelay->setValue(DEFAULT_MENU_DELAY);
+    
+    sliderWidth->setRange(MIN_SLIDER_WIDTH, MAX_SLIDER_WIDTH, 2, false);
+    sliderWidth->setValue(DEFAULT_SLIDER_WIDTH);
+    sliderWidth->setSuffix(i18n(" pixels"));
+
+    tabBgnd->setRange(MIN_TAB_BGND, MAX_TAB_BGND, 1, false);
+    tabBgnd->setValue(DEF_TAB_BGND);
+
+    colorSelTab->setRange(MIN_COLOR_SEL_TAB_FACTOR, MAX_COLOR_SEL_TAB_FACTOR, 5, false);
+    colorSelTab->setValue(DEF_COLOR_SEL_TAB_FACTOR);
+
+    connect(lighterPopupMenuBgnd, SIGNAL(valueChanged(int)), SLOT(updateChanged()));
+    connect(tabBgnd, SIGNAL(valueChanged(int)), SLOT(updateChanged()));
+    connect(menuDelay, SIGNAL(valueChanged(int)), SLOT(updateChanged()));
+    connect(sliderWidth, SIGNAL(valueChanged(int)), SLOT(sliderWidthChanged()));
+    connect(menuStripe, SIGNAL(activated(int)), SLOT(menuStripeChanged()));
+    connect(customMenuStripeColor, SIGNAL(changed(const QColor &)), SLOT(updateChanged()));
+    connect(menuStripeAppearance, SIGNAL(activated(int)), SLOT(updateChanged()));
+    connect(menuBgndAppearance, SIGNAL(activated(int)), SLOT(updateChanged()));
+    connect(menuBgndGrad, SIGNAL(activated(int)), SLOT(updateChanged()));
+    connect(round, SIGNAL(activated(int)), SLOT(roundChanged()));
     connect(toolbarBorders, SIGNAL(activated(int)), SLOT(updateChanged()));
-    connect(sliderThumbs, SIGNAL(activated(int)), SLOT(updateChanged()));
+    connect(sliderThumbs, SIGNAL(activated(int)), SLOT(sliderThumbChanged()));
     connect(handles, SIGNAL(activated(int)), SLOT(updateChanged()));
     connect(appearance, SIGNAL(activated(int)), SLOT(updateChanged()));
     connect(customMenuTextColor, SIGNAL(toggled(bool)), SLOT(customMenuTextColorChanged()));
     connect(stripedProgress, SIGNAL(activated(int)), SLOT(stripedProgressChanged()));
     connect(animatedProgress, SIGNAL(toggled(bool)), SLOT(updateChanged()));
     connect(embolden, SIGNAL(toggled(bool)), SLOT(emboldenToggled()));
-    connect(defBtnIndicator, SIGNAL(activated(int)), SLOT(dbiChanged()));
+    connect(defBtnIndicator, SIGNAL(activated(int)), SLOT(defBtnIndicatorChanged()));
     connect(highlightTab, SIGNAL(toggled(bool)), SLOT(updateChanged()));
     connect(menubarAppearance, SIGNAL(activated(int)), SLOT(updateChanged()));
     connect(toolbarAppearance, SIGNAL(activated(int)), SLOT(updateChanged()));
     connect(lvAppearance, SIGNAL(activated(int)), SLOT(updateChanged()));
     connect(sliderAppearance, SIGNAL(activated(int)), SLOT(updateChanged()));
-    connect(tabAppearance, SIGNAL(activated(int)), SLOT(tabAppearanceChanged()));
+    connect(tabAppearance, SIGNAL(activated(int)), SLOT(updateChanged()));
+    connect(activeTabAppearance, SIGNAL(activated(int)), SLOT(activeTabAppearanceChanged()));
     connect(toolbarSeparators, SIGNAL(activated(int)), SLOT(updateChanged()));
     connect(splitters, SIGNAL(activated(int)), SLOT(updateChanged()));
     connect(fixParentlessDialogs, SIGNAL(toggled(bool)), SLOT(updateChanged()));
     connect(fillSlider, SIGNAL(toggled(bool)), SLOT(updateChanged()));
     connect(sliderStyle, SIGNAL(activated(int)), SLOT(updateChanged()));
     connect(roundMbTopOnly, SIGNAL(toggled(bool)), SLOT(updateChanged()));
-    connect(gradientPbGroove, SIGNAL(toggled(bool)), SLOT(updateChanged()));
+    connect(fillProgress, SIGNAL(toggled(bool)), SLOT(updateChanged()));
     connect(darkerBorders, SIGNAL(toggled(bool)), SLOT(updateChanged()));
+    connect(comboSplitter, SIGNAL(toggled(bool)), SLOT(updateChanged()));
+    connect(comboBtn, SIGNAL(activated(int)), SLOT(comboBtnChanged()));
+    connect(sortedLv, SIGNAL(activated(int)), SLOT(sortedLvChanged()));
+    connect(customComboBtnColor, SIGNAL(changed(const QColor &)), SLOT(updateChanged()));
+    connect(customSortedLvColor, SIGNAL(changed(const QColor &)), SLOT(updateChanged()));
+    connect(unifySpinBtns, SIGNAL(toggled(bool)), SLOT(unifySpinBtnsToggled()));
+    connect(unifySpin, SIGNAL(toggled(bool)), SLOT(unifySpinToggled()));
+    connect(unifyCombo, SIGNAL(toggled(bool)), SLOT(updateChanged()));
     connect(vArrows, SIGNAL(toggled(bool)), SLOT(updateChanged()));
     connect(xCheck, SIGNAL(toggled(bool)), SLOT(updateChanged()));
-    connect(colorSelTab, SIGNAL(toggled(bool)), SLOT(updateChanged()));
+    connect(crHighlight, SIGNAL(valueChanged(int)), SLOT(updateChanged()));
+    connect(crButton, SIGNAL(toggled(bool)), SLOT(updateChanged()));
+    connect(colorSelTab, SIGNAL(valueChanged(int)), SLOT(updateChanged()));
+    connect(roundAllTabs, SIGNAL(toggled(bool)), SLOT(updateChanged()));
+    connect(borderTab, SIGNAL(toggled(bool)), SLOT(updateChanged()));
+    connect(borderInactiveTab, SIGNAL(toggled(bool)), SLOT(updateChanged()));
+    connect(invertBotTab, SIGNAL(toggled(bool)), SLOT(updateChanged()));
+    connect(doubleGtkComboArrow, SIGNAL(toggled(bool)), SLOT(updateChanged()));
+    connect(tabMouseOver, SIGNAL(activated(int)), SLOT(tabMoChanged()));
     connect(stdSidebarButtons, SIGNAL(toggled(bool)), SLOT(updateChanged()));
     connect(borderMenuitems, SIGNAL(toggled(bool)), SLOT(updateChanged()));
+    connect(popupBorder, SIGNAL(toggled(bool)), SLOT(updateChanged()));
     connect(progressAppearance, SIGNAL(activated(int)), SLOT(updateChanged()));
+    connect(progressGrooveAppearance, SIGNAL(activated(int)), SLOT(updateChanged()));
+    connect(grooveAppearance, SIGNAL(activated(int)), SLOT(updateChanged()));
+    connect(sunkenAppearance, SIGNAL(activated(int)), SLOT(updateChanged()));
+    connect(progressGrooveColor, SIGNAL(activated(int)), SLOT(updateChanged()));
     connect(menuitemAppearance, SIGNAL(activated(int)), SLOT(updateChanged()));
+    connect(titlebarAppearance, SIGNAL(activated(int)), SLOT(updateChanged()));
+    connect(inactiveTitlebarAppearance, SIGNAL(activated(int)), SLOT(updateChanged()));
+    connect(titlebarButtonAppearance, SIGNAL(activated(int)), SLOT(updateChanged()));
+    connect(colorTitlebarOnly, SIGNAL(toggled(bool)), SLOT(updateChanged()));
+    connect(selectionAppearance, SIGNAL(activated(int)), SLOT(updateChanged()));
     connect(shadeCheckRadio, SIGNAL(activated(int)), SLOT(shadeCheckRadioChanged()));
     connect(customCheckRadioColor, SIGNAL(changed(const QColor &)), SLOT(updateChanged()));
-
-#ifdef QTC_PLAIN_FOCUS_ONLY
-    delete stdFocus;
-#else
-    connect(stdFocus, SIGNAL(toggled(bool)), SLOT(updateChanged()));
-#endif
-    connect(lvLines, SIGNAL(toggled(bool)), SLOT(updateChanged()));
+    connect(focus, SIGNAL(activated(int)), SLOT(focusChanged()));
+    connect(lvLines, SIGNAL(activated(int)), SLOT(updateChanged()));
+    connect(lvButton, SIGNAL(toggled(bool)), SLOT(updateChanged()));
     connect(drawStatusBarFrames, SIGNAL(toggled(bool)), SLOT(updateChanged()));
-    connect(buttonEffect, SIGNAL(activated(int)), SLOT(updateChanged()));
-    connect(coloredMouseOver, SIGNAL(activated(int)), SLOT(updateChanged()));
+    connect(buttonEffect, SIGNAL(activated(int)), SLOT(buttonEffectChanged()));
+    connect(coloredMouseOver, SIGNAL(activated(int)), SLOT(coloredMouseOverChanged()));
     connect(menubarMouseOver, SIGNAL(toggled(bool)), SLOT(updateChanged()));
     connect(shadeMenubarOnlyWhenActive, SIGNAL(toggled(bool)), SLOT(updateChanged()));
     connect(thinnerMenuItems, SIGNAL(toggled(bool)), SLOT(updateChanged()));
+    connect(thinnerBtns, SIGNAL(toggled(bool)), SLOT(updateChanged()));
     connect(customSlidersColor, SIGNAL(changed(const QColor &)), SLOT(updateChanged()));
     connect(customMenubarsColor, SIGNAL(changed(const QColor &)), SLOT(updateChanged()));
     connect(customMenuSelTextColor, SIGNAL(changed(const QColor &)), SLOT(updateChanged()));
@@ -286,19 +730,41 @@ QtCurveConfig::QtCurveConfig(QWidget *parent)
     connect(shadeMenubars, SIGNAL(activated(int)), SLOT(shadeMenubarsChanged()));
     connect(highlightFactor, SIGNAL(valueChanged(int)), SLOT(updateChanged()));
     connect(scrollbarType, SIGNAL(activated(int)), SLOT(updateChanged()));
-    connect(shading, SIGNAL(activated(int)), SLOT(updateChanged()));
+    connect(shading, SIGNAL(activated(int)), SLOT(shadingChanged()));
     connect(gtkScrollViews, SIGNAL(toggled(bool)), SLOT(updateChanged()));
+    connect(squareScrollViews, SIGNAL(toggled(bool)), SLOT(updateChanged()));
+    connect(highlightScrollViews, SIGNAL(toggled(bool)), SLOT(updateChanged()));
+    connect(etchEntry, SIGNAL(toggled(bool)), SLOT(updateChanged()));
+    connect(flatSbarButtons, SIGNAL(toggled(bool)), SLOT(updateChanged()));
+    connect(thinSbarGroove, SIGNAL(toggled(bool)), SLOT(updateChanged()));
+    connect(colorSliderMouseOver, SIGNAL(toggled(bool)), SLOT(updateChanged()));
+    connect(titlebarBorder, SIGNAL(toggled(bool)), SLOT(updateChanged()));
+    connect(sbarBgndAppearance, SIGNAL(activated(int)), SLOT(updateChanged()));
+    connect(sliderFill, SIGNAL(activated(int)), SLOT(updateChanged()));
+    connect(dwtAppearance, SIGNAL(activated(int)), SLOT(updateChanged()));
+    connect(crColor, SIGNAL(toggled(bool)), SLOT(updateChanged()));
+    connect(smallRadio, SIGNAL(toggled(bool)), SLOT(updateChanged()));
+    connect(splitterHighlight, SIGNAL(valueChanged(int)), SLOT(updateChanged()));
     connect(gtkComboMenus, SIGNAL(toggled(bool)), SLOT(updateChanged()));
     connect(gtkButtonOrder, SIGNAL(toggled(bool)), SLOT(updateChanged()));
     connect(mapKdeIcons, SIGNAL(toggled(bool)), SLOT(updateChanged()));
     connect(passwordChar, SIGNAL(clicked()), SLOT(passwordCharClicked()));
     connect(framelessGroupBoxes, SIGNAL(toggled(bool)), SLOT(updateChanged()));
-    connect(inactiveHighlight, SIGNAL(toggled(bool)), SLOT(updateChanged()));
+    connect(colorMenubarMouseOver, SIGNAL(toggled(bool)), SLOT(updateChanged()));
+    connect(useHighlightForMenu, SIGNAL(toggled(bool)), SLOT(updateChanged()));
+    connect(groupBoxLine, SIGNAL(toggled(bool)), SLOT(updateChanged()));
+    connect(fadeLines, SIGNAL(toggled(bool)), SLOT(updateChanged()));
+    connect(menuIcons, SIGNAL(toggled(bool)), SLOT(updateChanged()));
+    connect(stdBtnSizes, SIGNAL(toggled(bool)), SLOT(updateChanged()));
+    connect(forceAlternateLvCols, SIGNAL(toggled(bool)), SLOT(updateChanged()));
+    connect(squareLvSelection, SIGNAL(toggled(bool)), SLOT(updateChanged()));
+    connect(titlebarAlignment, SIGNAL(activated(int)), SLOT(updateChanged()));
 
     defaultSettings(&defaultStyle);
     if(!readConfig(NULL, &currentStyle, &defaultStyle))
         currentStyle=defaultStyle;
 
+    setupShadesTab();
     setWidgetOptions(currentStyle);
 
     QPopupMenu *menu=new QPopupMenu(this),
@@ -310,10 +776,15 @@ QtCurveConfig::QtCurveConfig(QWidget *parent)
     menu->insertSeparator();
     menu->insertItem(i18n("Import..."), this, SLOT(importStyle()));
     menu->insertItem(i18n("Export..."), this, SLOT(exportStyle()));
+#ifdef QTC_STYLE_SUPPORT
     menu->insertSeparator();
     menu->insertItem(i18n("Export Theme..."), this, SLOT(exportTheme()));
+#endif
 
     loadStyles(subMenu);
+    setupGradientsTab();
+    setupStack();
+    resize(600, 400);
 }
 
 QtCurveConfig::~QtCurveConfig()
@@ -322,7 +793,7 @@ QtCurveConfig::~QtCurveConfig()
 
 void QtCurveConfig::loadStyles(QPopupMenu *menu)
 {
-    QStringList  files(KGlobal::dirs()->findAllResources("data", "QtCurve/*"QTC_EXTENSION, false, true));
+    QStringList  files(KGlobal::dirs()->findAllResources("data", "QtCurve/*"EXTENSION, false, true));
 
     files.sort();
 
@@ -332,7 +803,7 @@ void QtCurveConfig::loadStyles(QPopupMenu *menu)
 
     for(; it!=end; ++it)
         if(readConfig(*it, &opts, &defaultStyle))
-            styles[menu->insertItem(QFileInfo(*it).fileName().remove(QTC_EXTENSION).replace('_', ' '),
+            styles[menu->insertItem(QFileInfo(*it).fileName().remove(EXTENSION).replace('_', ' '),
                                     this, SLOT(setStyle(int)))]=*it;
 }
 
@@ -374,14 +845,42 @@ void QtCurveConfig::setStyle(int s)
 void QtCurveConfig::emboldenToggled()
 {
     if(!embolden->isChecked() && IND_NONE==defBtnIndicator->currentItem())
-        defBtnIndicator->setCurrentItem(IND_COLORED);
+        defBtnIndicator->setCurrentItem(IND_TINT);
     updateChanged();
 }
 
-void QtCurveConfig::dbiChanged()
+void QtCurveConfig::defBtnIndicatorChanged()
 {
     if(IND_NONE==defBtnIndicator->currentItem() && !embolden->isChecked())
         embolden->setChecked(true);
+    else if(IND_GLOW==defBtnIndicator->currentItem() && EFFECT_NONE==buttonEffect->currentItem())
+        buttonEffect->setCurrentItem(EFFECT_SHADOW);
+
+    if(IND_COLORED==defBtnIndicator->currentItem() && round->currentItem()>ROUND_FULL)
+        round->setCurrentItem(ROUND_FULL);
+
+    updateChanged();
+}
+
+void QtCurveConfig::buttonEffectChanged()
+{
+    if(EFFECT_NONE==buttonEffect->currentItem())
+    {
+        if(IND_GLOW==defBtnIndicator->currentItem())
+            defBtnIndicator->setCurrentItem(IND_TINT);
+        if(MO_GLOW==coloredMouseOver->currentItem())
+            coloredMouseOver->setCurrentItem(MO_PLASTIK);
+    }
+
+    updateChanged();
+}
+
+void QtCurveConfig::coloredMouseOverChanged()
+{
+    if(MO_GLOW==coloredMouseOver->currentItem() &&
+       EFFECT_NONE==buttonEffect->currentItem())
+        buttonEffect->setCurrentItem(EFFECT_SHADOW);
+
     updateChanged();
 }
 
@@ -410,29 +909,425 @@ void QtCurveConfig::customMenuTextColorChanged()
     updateChanged();
 }
 
+void QtCurveConfig::menuStripeChanged()
+{
+    customMenuStripeColor->setEnabled(SHADE_CUSTOM==menuStripe->currentItem());
+    menuStripeAppearance->setEnabled(SHADE_NONE!=menuStripe->currentItem());
+    updateChanged();
+}
+
+void QtCurveConfig::comboBtnChanged()
+{
+    customComboBtnColor->setEnabled(SHADE_CUSTOM==comboBtn->currentItem());
+    updateChanged();
+}
+
+void QtCurveConfig::sortedLvChanged()
+{
+    customSortedLvColor->setEnabled(SHADE_CUSTOM==sortedLv->currentItem());
+    updateChanged();
+}
+
 void QtCurveConfig::stripedProgressChanged()
 {
-    animatedProgress->setEnabled(STRIPE_NONE!=stripedProgress->currentItem());
-    if(animatedProgress->isChecked() && STRIPE_NONE==stripedProgress->currentItem())
+    bool allowAnimation=STRIPE_NONE!=stripedProgress->currentItem() &&
+                        STRIPE_FADE!=stripedProgress->currentItem();
+
+    animatedProgress->setEnabled(allowAnimation);
+    if(animatedProgress->isChecked() && !allowAnimation)
         animatedProgress->setChecked(false);
     updateChanged();
 }
 
-void QtCurveConfig::tabAppearanceChanged()
+void QtCurveConfig::activeTabAppearanceChanged()
 {
-    if(colorSelTab->isChecked() && APPEARANCE_GRADIENT!=tabAppearance->currentItem())
-        colorSelTab->setChecked(false);
-    colorSelTab->setEnabled(APPEARANCE_GRADIENT==tabAppearance->currentItem());
+    int  current(activeTabAppearance->currentItem());
+    bool disableCol(APPEARANCE_FLAT==current && APPEARANCE_RAISED==current);
+
+    if(colorSelTab->value() && disableCol)
+        colorSelTab->setValue(MIN_COLOR_SEL_TAB_FACTOR);
+    colorSelTab->setEnabled(!disableCol);
     updateChanged();
 }
 
+void QtCurveConfig::tabMoChanged()
+{
+    if(TAB_MO_GLOW==tabMouseOver->currentItem())
+        roundAllTabs->setChecked(true);
+    roundAllTabs->setEnabled(TAB_MO_GLOW!=tabMouseOver->currentItem());
+    updateChanged();
+}
+
+void QtCurveConfig::shadingChanged()
+{
+    updateChanged();
+    if(gradPreview)
+        gradPreview->repaint();
+}
+
 void QtCurveConfig::passwordCharClicked()
 {
     int              cur(toInt(passwordChar->text()));
     CharSelectDialog dlg(this, cur);
 
     if(QDialog::Accepted==dlg.exec() && dlg.currentChar()!=cur)
+    {
         setPasswordChar(dlg.currentChar());
+        updateChanged();
+    }
+}
+
+void QtCurveConfig::unifySpinBtnsToggled()
+{
+    if(unifySpinBtns->isChecked())
+        unifySpin->setChecked(false);
+    unifySpin->setDisabled(unifySpinBtns->isChecked());
+    updateChanged();
+}
+
+void QtCurveConfig::unifySpinToggled()
+{
+    if(unifySpin->isChecked())
+        unifySpinBtns->setChecked(false);
+    unifySpinBtns->setDisabled(unifySpin->isChecked());
+    updateChanged();
+}
+
+void QtCurveConfig::sliderThumbChanged()
+{
+    if(LINE_NONE!=sliderThumbs->currentItem() && sliderWidth->value()<DEFAULT_SLIDER_WIDTH)
+        sliderWidth->setValue(DEFAULT_SLIDER_WIDTH);
+    updateChanged();
+}
+
+void QtCurveConfig::sliderWidthChanged()
+{
+    if(0==sliderWidth->value()%2)
+        sliderWidth->setValue(sliderWidth->value()+1);
+
+    if(LINE_NONE!=sliderThumbs->currentItem() && sliderWidth->value()<DEFAULT_SLIDER_WIDTH)
+        sliderThumbs->setCurrentItem(LINE_NONE);
+    updateChanged();
+}
+    
+void QtCurveConfig::setupStack()
+{
+    int i=0;
+    lastCategory=new CStackItem(stackList, i18n("General"), i++);
+    new CStackItem(stackList, i18n("Combos"), i++);
+    new CStackItem(stackList, i18n("Spin Buttons"), i++);
+    new CStackItem(stackList, i18n("Splitters"), i++);
+    new CStackItem(stackList, i18n("Sliders and Scrollbars"), i++);
+    new CStackItem(stackList, i18n("Progressbars"), i++);
+    new CStackItem(stackList, i18n("Default Button"),i++);
+    new CStackItem(stackList, i18n("Mouse-over"), i++);
+    new CStackItem(stackList, i18n("Listviews"), i++);
+    new CStackItem(stackList, i18n("Scrollviews"), i++);
+    new CStackItem(stackList, i18n("Tabs"), i++);
+    new CStackItem(stackList, i18n("Checks and Radios"), i++);
+    new CStackItem(stackList, i18n("Windows"), i++);
+    new CStackItem(stackList, i18n("Menus and Toolbars"), i++);
+    new CStackItem(stackList, i18n("Dock windows"), i++);
+    new CStackItem(stackList, i18n("Advanced Settings"), i++);
+    new CStackItem(stackList, i18n("Custom Gradients"), i++);
+    new CStackItem(stackList, i18n("Custom Shades"), i++);
+
+    stackList->setSelected(lastCategory, true);
+    stackList->setCurrentItem(lastCategory);
+    stackList->setResizeMode(QListView::LastColumn);
+    connect(stackList, SIGNAL(selectionChanged()), SLOT(changeStack()));
+}
+
+void QtCurveConfig::changeStack()
+{
+    CStackItem *item=(CStackItem *)(stackList->selectedItem());
+
+    if(item)
+        lastCategory=item;
+    else
+    {
+        item=lastCategory;
+        if(item)
+        {
+            stackList->setSelected(item, true);
+            stackList->setCurrentItem(item);
+        }
+    }
+
+    if(item)
+        stack->raiseWidget(item->stack());
+}
+
+void QtCurveConfig::gradChanged(int i)
+{
+    GradientCont::const_iterator it(customGradient.find((EAppearance)i));
+
+    gradStops->clear();
+
+    if(it!=customGradient.end())
+    {
+        gradPreview->setGrad((*it).second.stops);
+        gradBorder->setCurrentItem((*it).second.border);
+
+        GradientStopCont::const_iterator git((*it).second.stops.begin()),
+                                         gend((*it).second.stops.end());
+
+        for(; git!=gend; ++git)
+            new CGradItem(gradStops, QString().setNum((*git).pos*100.0),
+                                     QString().setNum((*git).val*100.0));
+    }
+    else
+    {
+        gradPreview->setGrad(GradientStopCont());
+        gradBorder->setCurrentItem(GB_3D);
+    }
+
+    gradBorder->setEnabled(NUM_CUSTOM_GRAD!=i);
+}
+
+void QtCurveConfig::itemChanged(QListViewItem *i, int col)
+{
+    GradientCont::iterator it=customGradient.find((EAppearance)gradCombo->currentItem());
+
+    if(it!=customGradient.end())
+    {
+        bool   ok;
+        double newVal=toDouble(i->text(col), &ok)/100.0;
+
+        if(ok && ((0==col && (newVal>=0.0 && newVal<=1.0)) ||
+                  (1==col && newVal>=0.0 && newVal<=2.0)) )
+        {
+            double pos=0==(col ? newVal : i->text(0).toDouble())/100.0,
+                   val=1==(col ? newVal : i->text(1).toDouble())/100.0,
+                   prev=((CGradItem *)i)->prevVal();
+
+            (*it).second.stops.erase(GradientStop(col ? pos : prev, col ? prev : val));
+            (*it).second.stops.insert(GradientStop(pos, val));
+            gradPreview->setGrad((*it).second.stops);
+            i->setText(col, QString().setNum(val));
+            emit changed(true);
+        }
+    }
+}
+
+void QtCurveConfig::addGradStop()
+{
+    GradientCont::iterator cg=customGradient.find((EAppearance)gradCombo->currentItem());
+
+    if(cg==customGradient.end())
+    {
+        Gradient cust;
+
+        cust.border=(EGradientBorder)gradBorder->currentItem();
+        cust.stops.insert(GradientStop(stopPosition->value()/100.0, stopValue->value()/100.0));
+        customGradient[(EAppearance)gradCombo->currentItem()]=cust;
+        gradChanged(gradCombo->currentItem());
+        emit changed(true);
+    }
+    else
+    {
+        GradientStopCont::const_iterator it((*cg).second.stops.begin()),
+                                         end((*cg).second.stops.end());
+        double                           pos(stopPosition->value()/100.0),
+                                         val(stopValue->value()/100.0);
+
+        for(; it!=end; ++it)
+            if(equal(pos, (*it).pos))
+                if(equal(val, (*it).val))
+                    return;
+                else
+                {
+                    (*cg).second.stops.erase(it);
+                    break;
+                }
+
+        unsigned int b4=(*cg).second.stops.size();
+        (*cg).second.stops.insert(GradientStop(pos, val));
+
+        if((*cg).second.stops.size()!=b4)
+        {
+            gradPreview->setGrad((*cg).second.stops);
+
+            QListViewItem *prev=gradStops->selectedItem();
+
+            if(prev)
+                gradStops->setSelected(prev, false);
+
+            CGradItem *i=new CGradItem(gradStops, QString().setNum(pos*100.0),
+                                                  QString().setNum(val*100.0));
+
+            gradStops->setSelected(i, true);
+            emit changed(true);
+        }
+    }
+}
+
+void QtCurveConfig::removeGradStop()
+{
+    QListViewItem *cur=gradStops->selectedItem();
+
+    if(cur)
+    {
+        QListViewItem *next=cur->itemBelow();
+
+        if(!next)
+            next=cur->itemAbove();
+
+        GradientCont::iterator it=customGradient.find((EAppearance)gradCombo->currentItem());
+
+        if(it!=customGradient.end())
+        {
+            double pos=cur->text(0).toDouble()/100.0,
+                   val=cur->text(1).toDouble()/100.0;
+
+            (*it).second.stops.erase(GradientStop(pos, val));
+            gradPreview->setGrad((*it).second.stops);
+            emit changed(true);
+
+            delete cur;
+            if(next)
+                gradStops->setCurrentItem(next);
+        }
+    }
+}
+
+void QtCurveConfig::updateGradStop()
+{
+    QListViewItem *i=gradStops->selectedItem();
+
+    GradientCont::iterator cg=customGradient.find((EAppearance)gradCombo->currentItem());
+
+    if(i)
+    {
+        double curPos=i->text(0).toDouble()/100.0,
+               curVal=i->text(1).toDouble()/100.0,
+               newPos(stopPosition->value()/100.0),
+               newVal(stopValue->value()/100.0);
+
+        if(!equal(newPos, curPos) || !equal(newVal, curVal))
+        {
+            (*cg).second.stops.erase(GradientStop(curPos, curVal));
+            (*cg).second.stops.insert(GradientStop(newPos, newVal));
+
+            i->setText(0, QString().setNum(stopPosition->value()));
+            i->setText(1, QString().setNum(stopValue->value()));
+            gradPreview->setGrad((*cg).second.stops);
+            emit changed(true);
+        }
+    }
+    else
+        addGradStop();
+}
+
+void QtCurveConfig::stopSelected()
+{
+    QListViewItem *i=gradStops->selectedItem();
+
+    removeButton->setEnabled(i);
+    updateButton->setEnabled(i);
+
+    if(i)
+    {
+        stopPosition->setValue(i->text(0).toInt());
+        stopValue->setValue(i->text(1).toInt());
+    }
+    else
+    {
+        stopPosition->setValue(0);
+        stopValue->setValue(0);
+    }
+}
+
+void QtCurveConfig::setupGradientsTab()
+{
+    for(int i=APPEARANCE_CUSTOM1; i<(APPEARANCE_CUSTOM1+NUM_CUSTOM_GRAD); ++i)
+        gradCombo->insertItem(i18n("Custom gradient %1").arg((i-APPEARANCE_CUSTOM1)+1));
+
+    gradCombo->setCurrentItem(APPEARANCE_CUSTOM1);
+
+    gradPreview=new CGradientPreview(this, previewWidgetContainer);
+    QVBoxLayout *layout=new QVBoxLayout(previewWidgetContainer);
+    layout->addWidget(gradPreview);
+    layout->setMargin(0);
+    layout->setSpacing(0);
+    QColor col(palette().color(QPalette::Active, QColorGroup::Button));
+    previewColor->setColor(col);
+    gradPreview->setColor(col);
+    gradChanged(APPEARANCE_CUSTOM1);
+    addButton->setGuiItem(KGuiItem(i18n("Add"), "add"));
+    removeButton->setGuiItem(KGuiItem(i18n("Remove"), "remove"));
+    updateButton->setGuiItem(KGuiItem(i18n("Update"), "button_ok"));
+
+    gradStops->setDefaultRenameAction(QListView::Reject);
+    gradStops->setAllColumnsShowFocus(true);
+    gradStops->setSortColumn(0);
+    stopPosition->setRange(0, 100, 5);
+    stopValue->setRange(0, 200, 5);
+    removeButton->setEnabled(false);
+    updateButton->setEnabled(false);
+    gradStops->setResizeMode(QListView::AllColumns);
+    connect(gradCombo, SIGNAL(activated(int)), SLOT(gradChanged(int)));
+    connect(previewColor, SIGNAL(changed(const QColor &)), gradPreview, SLOT(setColor(const QColor &)));
+    connect(gradStops, SIGNAL(itemRenamed(QListViewItem *, int)), SLOT(itemChanged(QListViewItem *, int)));
+    connect(addButton, SIGNAL(clicked()), SLOT(addGradStop()));
+    connect(removeButton, SIGNAL(clicked()), SLOT(removeGradStop()));
+    connect(updateButton, SIGNAL(clicked()), SLOT(updateGradStop()));
+    connect(gradStops, SIGNAL(selectionChanged()), SLOT(stopSelected()));
+}
+
+void QtCurveConfig::setupShadesTab()
+{
+    int shade(0);
+
+    setupShade(shade0, shade++);
+    setupShade(shade1, shade++);
+    setupShade(shade2, shade++);
+    setupShade(shade3, shade++);
+    setupShade(shade4, shade++);
+    setupShade(shade5, shade++);
+    connect(customShading, SIGNAL(toggled(bool)), SLOT(updateChanged()));
+}
+
+void QtCurveConfig::setupShade(KDoubleNumInput *w, int shade)
+{
+    w->setRange(0.0, 2.0, 0.05, false);
+    connect(w, SIGNAL(valueChanged(double)), SLOT(updateChanged()));
+    shadeVals[shade]=w;
+}
+
+void QtCurveConfig::populateShades(const Options &opts)
+{
+    SHADES
+    int contrast=QSettings().readNumEntry("/Qt/KDE/contrast", 7);
+
+    if(contrast<0 || contrast>10)
+        contrast=7;
+
+    customShading->setChecked(USE_CUSTOM_SHADES(opts));
+
+    for(int i=0; i<NUM_STD_SHADES; ++i)
+        shadeVals[i]->setValue(USE_CUSTOM_SHADES(opts)
+                                  ? opts.customShades[i]
+                                  : shades[SHADING_SIMPLE==shading->currentItem()
+                                            ? 1 : 0]
+                                          [contrast]
+                                          [i]);
+}
+
+bool QtCurveConfig::diffShades(const Options &opts)
+{
+    if( (!USE_CUSTOM_SHADES(opts) && customShading->isChecked()) ||
+        (USE_CUSTOM_SHADES(opts) && !customShading->isChecked()) )
+        return true;
+
+    if(customShading->isChecked())
+    {
+        for(int i=0; i<NUM_STD_SHADES; ++i)
+            if(!equal(shadeVals[i]->value(), opts.customShades[i]))
+                return true;
+    }
+
+    return false;
 }
 
 void QtCurveConfig::setPasswordChar(int ch)
@@ -451,11 +1346,28 @@ void QtCurveConfig::updateChanged()
         emit changed(true);
 }
 
+void QtCurveConfig::focusChanged()
+{
+    if(ROUND_MAX==round->currentItem() && FOCUS_LINE!=focus->currentItem())
+        round->setCurrentItem(ROUND_EXTRA);
+    updateChanged();
+}
+
+void QtCurveConfig::roundChanged()
+{
+    if(ROUND_MAX==round->currentItem() && FOCUS_LINE!=focus->currentItem())
+        focus->setCurrentItem(FOCUS_LINE);
+
+    if(round->currentItem()>ROUND_FULL && IND_COLORED==defBtnIndicator->currentItem())
+        defBtnIndicator->setCurrentItem(IND_TINT);
+    updateChanged();
+}
+
 void QtCurveConfig::importStyle()
 {
     QString file(KFileDialog::getOpenFileName(QString::null,
-                                              i18n("*"QTC_EXTENSION"|QtCurve Settings Files\n"
-                                                   QTC_THEME_PREFIX"*"QTC_THEME_SUFFIX"|QtCurve KDE Theme Files"),
+                                              i18n("*"EXTENSION"|QtCurve Settings Files\n"
+                                                   THEME_PREFIX"*"THEME_SUFFIX"|QtCurve KDE Theme Files"),
                                               this));
 
     if(!file.isEmpty())
@@ -464,7 +1376,7 @@ void QtCurveConfig::importStyle()
 
 void QtCurveConfig::exportStyle()
 {
-    QString file(KFileDialog::getSaveFileName(QString::null, i18n("*"QTC_EXTENSION"|QtCurve Settings Files"), this));
+    QString file(KFileDialog::getSaveFileName(QString::null, i18n("*"EXTENSION"|QtCurve Settings Files"), this));
 
     if(!file.isEmpty())
     {
@@ -486,6 +1398,7 @@ void QtCurveConfig::exportStyle()
 
 void QtCurveConfig::exportTheme()
 {
+#ifdef QTC_STYLE_SUPPORT
     if(!exportDialog)
         exportDialog=new CExportThemeDialog(this);
 
@@ -493,6 +1406,7 @@ void QtCurveConfig::exportTheme()
 
     setOptions(opts);
     exportDialog->run(opts);
+#endif
 }
 
 void QtCurveConfig::loadStyle(const QString &file)
@@ -512,20 +1426,28 @@ void QtCurveConfig::setOptions(Options &opts)
     opts.round=(ERound)round->currentItem();
     opts.toolbarBorders=(ETBarBorder)toolbarBorders->currentItem();
     opts.appearance=(EAppearance)appearance->currentItem();
-#ifndef QTC_PLAIN_FOCUS_ONLY
-    opts.stdFocus=stdFocus->isChecked();
-#endif
-    opts.lvLines=lvLines->isChecked();
+    opts.focus=(EFocus)focus->currentItem();
+    opts.lvLines=(ELvLines)lvLines->currentItem();
+    opts.lvButton=lvButton->isChecked();
     opts.drawStatusBarFrames=drawStatusBarFrames->isChecked();
     opts.buttonEffect=(EEffect)buttonEffect->currentItem();
     opts.coloredMouseOver=(EMouseOver)coloredMouseOver->currentItem();
     opts.menubarMouseOver=menubarMouseOver->isChecked();
     opts.shadeMenubarOnlyWhenActive=shadeMenubarOnlyWhenActive->isChecked();
     opts.thinnerMenuItems=thinnerMenuItems->isChecked();
+    opts.thinnerBtns=thinnerBtns->isChecked();
     opts.fixParentlessDialogs=fixParentlessDialogs->isChecked();
     opts.animatedProgress=animatedProgress->isChecked();
     opts.stripedProgress=(EStripe)stripedProgress->currentItem();
-    opts.lighterPopupMenuBgnd=lighterPopupMenuBgnd->isChecked();
+    opts.lighterPopupMenuBgnd=lighterPopupMenuBgnd->value();
+    opts.tabBgnd=tabBgnd->value();
+    opts.menuDelay=menuDelay->value();
+    opts.sliderWidth=sliderWidth->value();
+    opts.menuStripe=(EShade)menuStripe->currentItem();
+    opts.customMenuStripeColor=customMenuStripeColor->color();
+    opts.menuStripeAppearance=(EAppearance)menuStripeAppearance->currentItem();
+    opts.menuBgndAppearance=(EAppearance)menuBgndAppearance->currentItem();
+    opts.menuBgndGrad=(EGradType)menuBgndGrad->currentItem();
     opts.embolden=embolden->isChecked();
     opts.scrollbarType=(EScrollbar)scrollbarType->currentItem();
     opts.defBtnIndicator=(EDefBtnIndicator)defBtnIndicator->currentItem();
@@ -539,57 +1461,120 @@ void QtCurveConfig::setOptions(Options &opts)
     opts.lvAppearance=(EAppearance)lvAppearance->currentItem();
     opts.sliderAppearance=(EAppearance)sliderAppearance->currentItem();
     opts.tabAppearance=(EAppearance)tabAppearance->currentItem();
+    opts.activeTabAppearance=(EAppearance)activeTabAppearance->currentItem();
     opts.toolbarSeparators=(ELine)toolbarSeparators->currentItem();
     opts.splitters=(ELine)splitters->currentItem();
     opts.customSlidersColor=customSlidersColor->color();
     opts.customMenubarsColor=customMenubarsColor->color();
-    opts.highlightFactor=((double)(highlightFactor->value()+100))/100.0;
+    opts.highlightFactor=highlightFactor->value();
     opts.customMenuNormTextColor=customMenuNormTextColor->color();
     opts.customMenuSelTextColor=customMenuSelTextColor->color();
     opts.customMenuTextColor=customMenuTextColor->isChecked();
     opts.fillSlider=fillSlider->isChecked();
     opts.sliderStyle=(ESliderStyle)sliderStyle->currentItem();
     opts.roundMbTopOnly=roundMbTopOnly->isChecked();
-    opts.gradientPbGroove=gradientPbGroove->isChecked();
+    opts.fillProgress=fillProgress->isChecked();
     opts.darkerBorders=darkerBorders->isChecked();
+    opts.comboSplitter=comboSplitter->isChecked();
+    opts.comboBtn=(EShade)comboBtn->currentItem();
+    opts.customComboBtnColor=customComboBtnColor->color();
+    opts.sortedLv=(EShade)sortedLv->currentItem();
+    opts.customSortedLvColor=customSortedLvColor->color();
+    opts.unifySpinBtns=unifySpinBtns->isChecked();
+    opts.unifySpin=unifySpin->isChecked();
+    opts.unifyCombo=unifyCombo->isChecked();
     opts.vArrows=vArrows->isChecked();
     opts.xCheck=xCheck->isChecked();
-    opts.colorSelTab=colorSelTab->isChecked();
+    opts.crHighlight=crHighlight->value();
+    opts.crButton=crButton->isChecked();
+    opts.colorSelTab=colorSelTab->value();
+    opts.roundAllTabs=roundAllTabs->isChecked();
+    opts.borderTab=borderTab->isChecked();
+    opts.doubleGtkComboArrow=doubleGtkComboArrow->isChecked();
+    opts.borderInactiveTab=borderInactiveTab->isChecked();
+    opts.invertBotTab=invertBotTab->isChecked();
+    opts.tabMouseOver=(ETabMo)tabMouseOver->currentItem();
     opts.stdSidebarButtons=stdSidebarButtons->isChecked();
     opts.borderMenuitems=borderMenuitems->isChecked();
+    opts.popupBorder=popupBorder->isChecked();
     opts.progressAppearance=(EAppearance)progressAppearance->currentItem();
+    opts.progressGrooveAppearance=(EAppearance)progressGrooveAppearance->currentItem();
+    opts.grooveAppearance=(EAppearance)grooveAppearance->currentItem();
+    opts.sunkenAppearance=(EAppearance)sunkenAppearance->currentItem();
+    opts.progressGrooveColor=(EColor)progressGrooveColor->currentItem();
     opts.menuitemAppearance=(EAppearance)menuitemAppearance->currentItem();
+    opts.titlebarAppearance=(EAppearance)titlebarAppearance->currentItem();
+    opts.inactiveTitlebarAppearance=(EAppearance)inactiveTitlebarAppearance->currentItem();
+    opts.titlebarButtonAppearance=(EAppearance)titlebarButtonAppearance->currentItem();
+    opts.selectionAppearance=(EAppearance)selectionAppearance->currentItem();
     opts.shadeCheckRadio=(EShade)shadeCheckRadio->currentItem();
     opts.customCheckRadioColor=customCheckRadioColor->color();
     opts.shading=(EShading)shading->currentItem();
     opts.gtkScrollViews=gtkScrollViews->isChecked();
+    opts.highlightScrollViews=highlightScrollViews->isChecked();
+    opts.etchEntry=etchEntry->isChecked();
+    opts.flatSbarButtons=flatSbarButtons->isChecked();
+    opts.thinSbarGroove=thinSbarGroove->isChecked();
+    opts.colorSliderMouseOver=colorSliderMouseOver->isChecked();
+    opts.sbarBgndAppearance=(EAppearance)sbarBgndAppearance->currentItem();
+    opts.sliderFill=(EAppearance)sliderFill->currentItem();
+    opts.dwtAppearance=(EAppearance)dwtAppearance->currentItem();
+    opts.crColor=crColor->isChecked() ? SHADE_BLEND_SELECTED : SHADE_NONE;
+    opts.smallRadio=smallRadio->isChecked();
+    opts.splitterHighlight=splitterHighlight->value();
     opts.gtkComboMenus=gtkComboMenus->isChecked();
     opts.gtkButtonOrder=gtkButtonOrder->isChecked();
     opts.mapKdeIcons=mapKdeIcons->isChecked();
     opts.passwordChar=toInt(passwordChar->text());
     opts.framelessGroupBoxes=framelessGroupBoxes->isChecked();
-    opts.inactiveHighlight=inactiveHighlight->isChecked();
+    opts.customGradient=customGradient;
+    opts.colorMenubarMouseOver=colorMenubarMouseOver->isChecked();
+    opts.useHighlightForMenu=useHighlightForMenu->isChecked();
+    opts.groupBoxLine=groupBoxLine->isChecked();
+    opts.fadeLines=fadeLines->isChecked();
+    opts.menuIcons=menuIcons->isChecked();
+    opts.stdBtnSizes=stdBtnSizes->isChecked();
+    opts.forceAlternateLvCols=forceAlternateLvCols->isChecked();
+    opts.titlebarAlignment=(EAlign)titlebarAlignment->currentItem();
+    opts.square=getSquareFlags();
+    opts.windowBorder=getWindowBorderFlags();
+
+    if(customShading->isChecked())
+    {
+        for(int i=0; i<NUM_STD_SHADES; ++i)
+            opts.customShades[i]=shadeVals[i]->value();
+    }
+    else
+        opts.customShades[0]=0;
 }
 
 void QtCurveConfig::setWidgetOptions(const Options &opts)
 {
     round->setCurrentItem(opts.round);
     scrollbarType->setCurrentItem(opts.scrollbarType);
-    lighterPopupMenuBgnd->setChecked(opts.lighterPopupMenuBgnd);
+    lighterPopupMenuBgnd->setValue(opts.lighterPopupMenuBgnd);
+    tabBgnd->setValue(opts.tabBgnd);
+    menuDelay->setValue(opts.menuDelay);
+    sliderWidth->setValue(opts.sliderWidth);
+    menuStripe->setCurrentItem(opts.menuStripe);
+    customMenuStripeColor->setColor(opts.customMenuStripeColor);
+    menuStripeAppearance->setCurrentItem(opts.menuStripeAppearance);
+    menuBgndAppearance->setCurrentItem(opts.menuBgndAppearance);
+    menuBgndGrad->setCurrentItem(opts.menuBgndGrad);
     toolbarBorders->setCurrentItem(opts.toolbarBorders);
     sliderThumbs->setCurrentItem(opts.sliderThumbs);
     handles->setCurrentItem(opts.handles);
     appearance->setCurrentItem(opts.appearance);
-#ifndef QTC_PLAIN_FOCUS_ONLY
-    stdFocus->setChecked(opts.stdFocus);
-#endif
-    lvLines->setChecked(opts.lvLines);
+    focus->setCurrentItem(opts.focus);
+    lvLines->setCurrentItem(opts.lvLines);
+    lvButton->setChecked(opts.lvButton);
     drawStatusBarFrames->setChecked(opts.drawStatusBarFrames);
     buttonEffect->setCurrentItem(opts.buttonEffect);
     coloredMouseOver->setCurrentItem(opts.coloredMouseOver);
     menubarMouseOver->setChecked(opts.menubarMouseOver);
     shadeMenubarOnlyWhenActive->setChecked(opts.shadeMenubarOnlyWhenActive);
     thinnerMenuItems->setChecked(opts.thinnerMenuItems);
+    thinnerBtns->setChecked(opts.thinnerBtns);
     fixParentlessDialogs->setChecked(opts.fixParentlessDialogs);
     animatedProgress->setChecked(opts.animatedProgress);
     stripedProgress->setCurrentItem(opts.stripedProgress);
@@ -601,11 +1586,12 @@ void QtCurveConfig::setWidgetOptions(const Options &opts)
     lvAppearance->setCurrentItem(opts.lvAppearance);
     sliderAppearance->setCurrentItem(opts.sliderAppearance);
     tabAppearance->setCurrentItem(opts.tabAppearance);
+    activeTabAppearance->setCurrentItem(opts.activeTabAppearance);
     toolbarSeparators->setCurrentItem(opts.toolbarSeparators);
     splitters->setCurrentItem(opts.splitters);
     shadeSliders->setCurrentItem(opts.shadeSliders);
     shadeMenubars->setCurrentItem(opts.shadeMenubars);
-    highlightFactor->setValue((int)(opts.highlightFactor*100)-100);
+    highlightFactor->setValue(opts.highlightFactor);
     customSlidersColor->setColor(opts.customSlidersColor);
     customMenubarsColor->setColor(opts.customMenubarsColor);
     customMenuNormTextColor->setColor(opts.customMenuNormTextColor);
@@ -617,32 +1603,117 @@ void QtCurveConfig::setWidgetOptions(const Options &opts)
     customMenuNormTextColor->setEnabled(customMenuTextColor->isChecked());
     customMenuSelTextColor->setEnabled(customMenuTextColor->isChecked());
     customCheckRadioColor->setEnabled(SHADE_CUSTOM==opts.shadeCheckRadio);
+    customMenuStripeColor->setEnabled(SHADE_CUSTOM==opts.menuStripe);
+    menuStripeAppearance->setEnabled(SHADE_NONE!=opts.menuStripe);
 
-    animatedProgress->setEnabled(STRIPE_NONE!=stripedProgress->currentItem());
+    animatedProgress->setEnabled(STRIPE_NONE!=stripedProgress->currentItem() &&
+                                 STRIPE_FADE!=stripedProgress->currentItem());
 
     fillSlider->setChecked(opts.fillSlider);
     sliderStyle->setCurrentItem(opts.sliderStyle);
     roundMbTopOnly->setChecked(opts.roundMbTopOnly);
-    gradientPbGroove->setChecked(opts.gradientPbGroove);
+    fillProgress->setChecked(opts.fillProgress);
     darkerBorders->setChecked(opts.darkerBorders);
+    comboSplitter->setChecked(opts.comboSplitter);
+    comboBtn->setCurrentItem(opts.comboBtn);
+    customComboBtnColor->setColor(opts.customComboBtnColor);
+    sortedLv->setCurrentItem(opts.sortedLv);
+    customSortedLvColor->setColor(opts.customSortedLvColor);
+    unifySpinBtns->setChecked(opts.unifySpinBtns);
+    unifySpin->setChecked(opts.unifySpin);
+    unifyCombo->setChecked(opts.unifyCombo);
     vArrows->setChecked(opts.vArrows);
     xCheck->setChecked(opts.xCheck);
-    colorSelTab->setChecked(opts.colorSelTab);
+    crHighlight->setValue(opts.crHighlight);
+    crButton->setChecked(opts.crButton);
+    colorSelTab->setValue(opts.colorSelTab);
+    roundAllTabs->setChecked(opts.roundAllTabs);
+    borderTab->setChecked(opts.borderTab);
+    doubleGtkComboArrow->setChecked(opts.doubleGtkComboArrow);
+    borderInactiveTab->setChecked(opts.borderInactiveTab);
+    invertBotTab->setChecked(opts.invertBotTab);
+    tabMouseOver->setCurrentItem(opts.tabMouseOver);
     stdSidebarButtons->setChecked(opts.stdSidebarButtons);
     borderMenuitems->setChecked(opts.borderMenuitems);
+    popupBorder->setChecked(opts.popupBorder);
     progressAppearance->setCurrentItem(opts.progressAppearance);
+    progressGrooveAppearance->setCurrentItem(opts.progressGrooveAppearance);
+    grooveAppearance->setCurrentItem(opts.grooveAppearance);
+    sunkenAppearance->setCurrentItem(opts.sunkenAppearance);
+    progressGrooveColor->setCurrentItem(opts.progressGrooveColor);
     menuitemAppearance->setCurrentItem(opts.menuitemAppearance);
+    titlebarAppearance->setCurrentItem(opts.titlebarAppearance);
+    inactiveTitlebarAppearance->setCurrentItem(opts.inactiveTitlebarAppearance);
+    titlebarButtonAppearance->setCurrentItem(opts.titlebarButtonAppearance);
+    colorTitlebarOnly->setChecked(opts.windowBorder&WINDOW_BORDER_COLOR_TITLEBAR_ONLY);
+    selectionAppearance->setCurrentItem(opts.selectionAppearance);
     shadeCheckRadio->setCurrentItem(opts.shadeCheckRadio);
     customCheckRadioColor->setColor(opts.customCheckRadioColor);
+    colorMenubarMouseOver->setChecked(opts.colorMenubarMouseOver);
+    useHighlightForMenu->setChecked(opts.useHighlightForMenu);
+    groupBoxLine->setChecked(opts.groupBoxLine);
+    fadeLines->setChecked(opts.fadeLines);
+    menuIcons->setChecked(opts.menuIcons);
+    stdBtnSizes->setChecked(opts.stdBtnSizes);
+    forceAlternateLvCols->setChecked(opts.forceAlternateLvCols);
+    squareLvSelection->setChecked(opts.square&SQUARE_LISTVIEW_SELECTION);
+    titlebarAlignment->setCurrentItem(opts.titlebarAlignment);
 
     shading->setCurrentItem(opts.shading);
     gtkScrollViews->setChecked(opts.gtkScrollViews);
+    highlightScrollViews->setChecked(opts.highlightScrollViews);
+    squareScrollViews->setChecked(opts.square&SQUARE_SCROLLVIEW);
+    etchEntry->setChecked(opts.etchEntry);
+    flatSbarButtons->setChecked(opts.flatSbarButtons);
+    thinSbarGroove->setChecked(opts.thinSbarGroove);
+    colorSliderMouseOver->setChecked(opts.colorSliderMouseOver);
+    titlebarBorder->setChecked(opts.windowBorder&WINDOW_BORDER_ADD_LIGHT_BORDER);
+    sbarBgndAppearance->setCurrentItem(opts.sbarBgndAppearance);
+    sliderFill->setCurrentItem(opts.sliderFill);
+    dwtAppearance->setCurrentItem(opts.dwtAppearance);
+    crColor->setChecked(SHADE_BLEND_SELECTED==opts.crColor);
+    smallRadio->setChecked(opts.smallRadio);
+    splitterHighlight->setValue(opts.splitterHighlight);
     gtkComboMenus->setChecked(opts.gtkComboMenus);
     gtkButtonOrder->setChecked(opts.gtkButtonOrder);
     mapKdeIcons->setChecked(opts.mapKdeIcons);
     setPasswordChar(opts.passwordChar);
     framelessGroupBoxes->setChecked(opts.framelessGroupBoxes);
-    inactiveHighlight->setChecked(opts.inactiveHighlight);
+    customGradient=opts.customGradient;
+    gradCombo->setCurrentItem(APPEARANCE_CUSTOM1);
+
+    populateShades(opts);
+}
+
+int QtCurveConfig::getSquareFlags()
+{
+    int square(0);
+/*
+    if(squareEntry->isChecked())
+        square|=SQUARE_ENTRY;
+    if(squareProgress->isChecked())
+        square|=SQUARE_PROGRESS;
+*/
+    if(squareScrollViews->isChecked())
+        square|=SQUARE_SCROLLVIEW;
+    if(squareLvSelection->isChecked())
+        square|=SQUARE_LISTVIEW_SELECTION;
+    return square;
+}
+
+int QtCurveConfig::getWindowBorderFlags()
+{
+    int flags(0);
+
+    if(colorTitlebarOnly->isChecked())
+        flags|=WINDOW_BORDER_COLOR_TITLEBAR_ONLY;
+//     if(windowBorder_menuColor->isChecked())
+//         flags|=WINDOW_BORDER_USE_MENUBAR_COLOR_FOR_TITLEBAR;
+    if(titlebarBorder->isChecked())
+        flags|=WINDOW_BORDER_ADD_LIGHT_BORDER;
+//     if(windowBorder_blend->isChecked())
+//         flags|=WINDOW_BORDER_BLEND_TITLEBAR;
+    return flags;
 }
 
 bool QtCurveConfig::settingsChanged()
@@ -650,31 +1721,53 @@ bool QtCurveConfig::settingsChanged()
     return round->currentItem()!=currentStyle.round ||
          toolbarBorders->currentItem()!=currentStyle.toolbarBorders ||
          appearance->currentItem()!=(int)currentStyle.appearance ||
-#ifndef QTC_PLAIN_FOCUS_ONLY
-         stdFocus->isChecked()!=currentStyle.stdFocus ||
-#endif
-         lvLines->isChecked()!=currentStyle.lvLines ||
+         focus->currentItem()!=(int)currentStyle.focus ||
+         lvLines->currentItem()!=(int)currentStyle.lvLines ||
+         lvButton->isChecked()!=currentStyle.lvButton ||
          drawStatusBarFrames->isChecked()!=currentStyle.drawStatusBarFrames ||
          buttonEffect->currentItem()!=(int)currentStyle.buttonEffect ||
          coloredMouseOver->currentItem()!=(int)currentStyle.coloredMouseOver ||
          menubarMouseOver->isChecked()!=currentStyle.menubarMouseOver ||
          shadeMenubarOnlyWhenActive->isChecked()!=currentStyle.shadeMenubarOnlyWhenActive ||
          thinnerMenuItems->isChecked()!=currentStyle.thinnerMenuItems ||
+         thinnerBtns->isChecked()!=currentStyle.thinnerBtns ||
          fixParentlessDialogs->isChecked()!=currentStyle.fixParentlessDialogs ||
          animatedProgress->isChecked()!=currentStyle.animatedProgress ||
          stripedProgress->currentItem()!=currentStyle.stripedProgress ||
-         lighterPopupMenuBgnd->isChecked()!=currentStyle.lighterPopupMenuBgnd ||
+         lighterPopupMenuBgnd->value()!=currentStyle.lighterPopupMenuBgnd ||
+         tabBgnd->value()!=currentStyle.tabBgnd ||
+         menuDelay->value()!=currentStyle.menuDelay ||
+         sliderWidth->value()!=currentStyle.sliderWidth ||
+         menuStripe->currentItem()!=currentStyle.menuStripe ||
+         menuStripeAppearance->currentItem()!=currentStyle.menuStripeAppearance ||
+         menuBgndAppearance->currentItem()!=currentStyle.menuBgndAppearance ||
+         menuBgndGrad->currentItem()!=currentStyle.menuBgndGrad ||
          embolden->isChecked()!=currentStyle.embolden ||
          fillSlider->isChecked()!=currentStyle.fillSlider ||
          sliderStyle->currentItem()!=currentStyle.sliderStyle ||
          roundMbTopOnly->isChecked()!=currentStyle.roundMbTopOnly ||
-         gradientPbGroove->isChecked()!=currentStyle.gradientPbGroove ||
+         fillProgress->isChecked()!=currentStyle.fillProgress ||
          darkerBorders->isChecked()!=currentStyle.darkerBorders ||
+         comboSplitter->isChecked()!=currentStyle.comboSplitter ||
+         comboBtn->currentItem()!=(int)currentStyle.comboBtn ||
+         sortedLv->currentItem()!=(int)currentStyle.sortedLv ||
+         unifySpinBtns->isChecked()!=currentStyle.unifySpinBtns ||
+         unifySpin->isChecked()!=currentStyle.unifySpin ||
+         unifyCombo->isChecked()!=currentStyle.unifyCombo ||
          vArrows->isChecked()!=currentStyle.vArrows ||
          xCheck->isChecked()!=currentStyle.xCheck ||
-         colorSelTab->isChecked()!=currentStyle.colorSelTab ||
+         crHighlight->value()!=currentStyle.crHighlight ||
+         crButton->isChecked()!=currentStyle.crButton ||
+         colorSelTab->value()!=currentStyle.colorSelTab ||
+         roundAllTabs->isChecked()!=currentStyle.roundAllTabs ||
+         borderTab->isChecked()!=currentStyle.borderTab ||
+         doubleGtkComboArrow->isChecked()!=currentStyle.doubleGtkComboArrow ||
+         borderInactiveTab->isChecked()!=currentStyle.borderInactiveTab ||
+         invertBotTab->isChecked()!=currentStyle.invertBotTab ||
+         tabMouseOver->currentItem()!=currentStyle.tabMouseOver ||
          stdSidebarButtons->isChecked()!=currentStyle.stdSidebarButtons ||
          borderMenuitems->isChecked()!=currentStyle.borderMenuitems ||
+         popupBorder->isChecked()!=currentStyle.popupBorder ||
          defBtnIndicator->currentItem()!=(int)currentStyle.defBtnIndicator ||
          sliderThumbs->currentItem()!=(int)currentStyle.sliderThumbs ||
          handles->currentItem()!=(int)currentStyle.handles ||
@@ -688,22 +1781,52 @@ bool QtCurveConfig::settingsChanged()
          lvAppearance->currentItem()!=currentStyle.lvAppearance ||
          sliderAppearance->currentItem()!=currentStyle.sliderAppearance ||
          tabAppearance->currentItem()!=currentStyle.tabAppearance ||
+         activeTabAppearance->currentItem()!=currentStyle.activeTabAppearance ||
          progressAppearance->currentItem()!=currentStyle.progressAppearance ||
+         progressGrooveAppearance->currentItem()!=currentStyle.progressGrooveAppearance ||
+         grooveAppearance->currentItem()!=currentStyle.grooveAppearance ||
+         sunkenAppearance->currentItem()!=currentStyle.sunkenAppearance ||
+         progressGrooveColor->currentItem()!=currentStyle.progressGrooveColor ||
          menuitemAppearance->currentItem()!=currentStyle.menuitemAppearance ||
+         titlebarAppearance->currentItem()!=currentStyle.titlebarAppearance ||
+         inactiveTitlebarAppearance->currentItem()!=currentStyle.inactiveTitlebarAppearance ||
+         titlebarButtonAppearance->currentItem()!=currentStyle.titlebarButtonAppearance ||
+         selectionAppearance->currentItem()!=currentStyle.selectionAppearance ||
          toolbarSeparators->currentItem()!=currentStyle.toolbarSeparators ||
          splitters->currentItem()!=currentStyle.splitters ||
+         colorMenubarMouseOver->isChecked()!=currentStyle.colorMenubarMouseOver ||
+         useHighlightForMenu->isChecked()!=currentStyle.useHighlightForMenu ||
+         groupBoxLine->isChecked()!=currentStyle.groupBoxLine ||
+         fadeLines->isChecked()!=currentStyle.fadeLines ||
+         menuIcons->isChecked()!=currentStyle.menuIcons ||
+         stdBtnSizes->isChecked()!=currentStyle.stdBtnSizes ||
+         forceAlternateLvCols->isChecked()!=currentStyle.forceAlternateLvCols ||
+         titlebarAlignment->currentItem()!=currentStyle.titlebarAlignment ||
 
          shading->currentItem()!=(int)currentStyle.shading ||
          gtkScrollViews->isChecked()!=currentStyle.gtkScrollViews ||
+         highlightScrollViews->isChecked()!=currentStyle.highlightScrollViews ||
+         etchEntry->isChecked()!=currentStyle.etchEntry ||
+         flatSbarButtons->isChecked()!=currentStyle.flatSbarButtons ||
+         thinSbarGroove->isChecked()!=currentStyle.thinSbarGroove ||
+         colorSliderMouseOver->isChecked()!=currentStyle.colorSliderMouseOver ||
+         sbarBgndAppearance->currentItem()!=currentStyle.sbarBgndAppearance ||
+         sliderFill->currentItem()!=currentStyle.sliderFill ||
+         dwtAppearance->currentItem()!=currentStyle.dwtAppearance ||
+         crColor->isChecked()!=(SHADE_BLEND_SELECTED==currentStyle.crColor ? true : false)||
+         smallRadio->isChecked()!=currentStyle.smallRadio ||
+         splitterHighlight->value()!=currentStyle.splitterHighlight ||
          gtkComboMenus->isChecked()!=currentStyle.gtkComboMenus ||
          gtkButtonOrder->isChecked()!=currentStyle.gtkButtonOrder ||
          mapKdeIcons->isChecked()!=currentStyle.mapKdeIcons ||
          framelessGroupBoxes->isChecked()!=currentStyle.framelessGroupBoxes ||
-         inactiveHighlight->isChecked()!=currentStyle.inactiveHighlight ||
+
+         getSquareFlags()!=currentStyle.square ||
+         getWindowBorderFlags()!=currentStyle.windowBorder||
 
          toInt(passwordChar->text())!=currentStyle.passwordChar ||
 
-         (highlightFactor->value()+100)!=(int)(currentStyle.highlightFactor*100) ||
+         highlightFactor->value()!=currentStyle.highlightFactor ||
          customMenuTextColor->isChecked()!=currentStyle.customMenuTextColor ||
          (SHADE_CUSTOM==currentStyle.shadeSliders &&
                customSlidersColor->color()!=currentStyle.customSlidersColor) ||
@@ -714,7 +1837,17 @@ bool QtCurveConfig::settingsChanged()
          (customMenuTextColor->isChecked() &&
                customMenuNormTextColor->color()!=currentStyle.customMenuNormTextColor) ||
          (customMenuTextColor->isChecked() &&
-               customMenuSelTextColor->color()!=currentStyle.customMenuSelTextColor);
+               customMenuSelTextColor->color()!=currentStyle.customMenuSelTextColor) ||
+         (SHADE_CUSTOM==currentStyle.menuStripe &&
+               customMenuStripeColor->color()!=currentStyle.customMenuStripeColor) ||
+         (SHADE_CUSTOM==currentStyle.comboBtn &&
+               customComboBtnColor->color()!=currentStyle.customComboBtnColor) ||
+         (SHADE_CUSTOM==currentStyle.sortedLv &&
+               customSortedLvColor->color()!=currentStyle.customSortedLvColor) ||
+
+         customGradient!=currentStyle.customGradient;
+
+         diffShades(currentStyle);
 }
 
 #include "qtcurveconfig.moc"
diff --git a/config/qtcurveconfig.h b/config/qtcurveconfig.h
index 8e69510..04d34cb 100644
--- a/config/qtcurveconfig.h
+++ b/config/qtcurveconfig.h
@@ -2,7 +2,7 @@
 #define __QTCURVECONFIG_H__
 
 /*
-  QtCurve (C) Craig Drummond, 2003 - 2007 Craig.Drummond@lycos.co.uk
+  QtCurve (C) Craig Drummond, 2003 - 2010 craig.p.drummond@gmail.com
 
   ----
 
@@ -21,15 +21,46 @@
   Boston, MA 02110-1301, USA.
 */
 
-#define QTC_COMMON_ONLY_COVERTERS
-#define QTC_CONFIG_DIALOG
+#define COMMON_FUNCTIONS
+#define CONFIG_DIALOG
 
 #include <qtcurveconfigbase.h>
+#include <qcombobox.h>
 #include <qmap.h>
 #include "common.h"
 
 class QPopupMenu;
+class QListViewItem;
+class KDoubleNumInput;
+#ifdef QTC_STYLE_SUPPORT
 class CExportThemeDialog;
+#endif
+class CStackItem;
+class QtCurveConfig;
+
+class CGradientPreview : public QWidget
+{
+    Q_OBJECT
+
+    public:
+
+    CGradientPreview(QtCurveConfig *c, QWidget *p);
+
+    QSize sizeHint() const;
+    QSize minimumSizeHint() const;
+    void paintEvent(QPaintEvent *);
+    void setGrad(const GradientStopCont &s);
+
+    public slots:
+
+    void setColor(const QColor &col);
+
+    private:
+
+    QtCurveConfig    *cfg;
+    QColor           color;
+    GradientStopCont stops;
+};
 
 class QtCurveConfig : public QtCurveConfigBase
 {
@@ -40,6 +71,8 @@ class QtCurveConfig : public QtCurveConfigBase
     QtCurveConfig(QWidget *parent);
     virtual ~QtCurveConfig();
 
+    EShading currentShading() const { return (EShading)shading->currentItem(); }
+
     signals:
 
     void changed(bool);
@@ -57,25 +90,53 @@ class QtCurveConfig : public QtCurveConfigBase
 
     void setStyle(int s);
     void updateChanged();
+    void focusChanged();
+    void roundChanged();
     void importStyle();
     void exportStyle();
     void exportTheme();
     void emboldenToggled();
-    void dbiChanged();
+    void defBtnIndicatorChanged();
+    void buttonEffectChanged();
+    void coloredMouseOverChanged();
     void shadeSlidersChanged();
     void shadeMenubarsChanged();
     void shadeCheckRadioChanged();
     void customMenuTextColorChanged();
+    void menuStripeChanged();
+    void comboBtnChanged();
+    void sortedLvChanged();
     void stripedProgressChanged();
-    void tabAppearanceChanged();
+    void activeTabAppearanceChanged();
+    void tabMoChanged();
+    void shadingChanged();
     void passwordCharClicked();
+    void unifySpinBtnsToggled();
+    void unifySpinToggled();
+    void sliderThumbChanged();
+    void sliderWidthChanged();
+    void changeStack();
+    void gradChanged(int i);
+    void itemChanged(QListViewItem *i, int col);
+    void addGradStop();
+    void removeGradStop();
+    void updateGradStop();
+    void stopSelected();
 
     private:
 
+    void setupStack();
+    void setupGradientsTab();
+    void setupShadesTab();
+    void setupShade(KDoubleNumInput *w, int shade);
+    void populateShades(const Options &opts);
+    bool diffShades(const Options &opts);
     void setPasswordChar(int ch);
     void loadStyle(const QString &file);
     void setOptions(Options &opts);
     void setWidgetOptions(const Options &opts);
+    int  getSquareFlags();
+    int  getWindowBorderFlags();
     bool settingsChanged();
 
     private:
@@ -83,7 +144,13 @@ class QtCurveConfig : public QtCurveConfigBase
     Options            currentStyle,
                        defaultStyle;
     QMap<int, QString> styles;
+#ifdef QTC_STYLE_SUPPORT
     CExportThemeDialog *exportDialog;
+#endif
+    CGradientPreview   *gradPreview;
+    GradientCont       customGradient;
+    KDoubleNumInput    *shadeVals[NUM_STD_SHADES];
+    CStackItem         *lastCategory;
 };
 
 #endif
diff --git a/config/qtcurveconfigbase.ui b/config/qtcurveconfigbase.ui
index 0e535ee..736a108 100644
--- a/config/qtcurveconfigbase.ui
+++ b/config/qtcurveconfigbase.ui
@@ -8,8 +8,8 @@
         <rect>
             <x>0</x>
             <y>0</y>
-            <width>666</width>
-            <height>556</height>
+            <width>862</width>
+            <height>638</height>
         </rect>
     </property>
     <property name="caption">
@@ -41,182 +41,208 @@
                 <set>AlignCenter</set>
             </property>
         </widget>
-        <spacer row="1" column="0">
+        <widget class="QListView" row="1" column="0">
+            <column>
+                <property name="text">
+                    <string>Category</string>
+                </property>
+                <property name="clickable">
+                    <bool>true</bool>
+                </property>
+                <property name="resizable">
+                    <bool>true</bool>
+                </property>
+            </column>
             <property name="name">
-                <cstring>spacer2</cstring>
-            </property>
-            <property name="orientation">
-                <enum>Vertical</enum>
+                <cstring>stackList</cstring>
             </property>
-            <property name="sizeType">
-                <enum>Fixed</enum>
+            <property name="sizePolicy">
+                <sizepolicy>
+                    <hsizetype>1</hsizetype>
+                    <vsizetype>7</vsizetype>
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                </sizepolicy>
             </property>
-            <property name="sizeHint">
+            <property name="minimumSize">
                 <size>
-                    <width>20</width>
-                    <height>16</height>
+                    <width>150</width>
+                    <height>0</height>
                 </size>
             </property>
-        </spacer>
-        <widget class="QTabWidget" row="2" column="0" rowspan="1" colspan="2">
+        </widget>
+        <widget class="KPushButton" row="2" column="0">
             <property name="name">
-                <cstring>optionsTab</cstring>
+                <cstring>optionBtn</cstring>
             </property>
-            <property name="sizePolicy">
-                <sizepolicy>
-                    <hsizetype>3</hsizetype>
-                    <vsizetype>3</vsizetype>
-                    <horstretch>0</horstretch>
-                    <verstretch>0</verstretch>
-                </sizepolicy>
+            <property name="text">
+                <string>Options</string>
+            </property>
+        </widget>
+        <widget class="QWidgetStack" row="1" column="1" rowspan="2" colspan="1">
+            <property name="name">
+                <cstring>stack</cstring>
             </property>
             <widget class="QWidget">
                 <property name="name">
-                    <cstring>tab</cstring>
+                    <cstring>WStackPage</cstring>
                 </property>
-                <attribute name="title">
-                    <string>General</string>
+                <attribute name="id">
+                    <number>0</number>
                 </attribute>
                 <grid>
                     <property name="name">
                         <cstring>unnamed</cstring>
                     </property>
-                    <widget class="QLabel" row="1" column="0">
+                    <widget class="QComboBox" row="0" column="1">
                         <property name="name">
-                            <cstring>textLabel1_6</cstring>
+                            <cstring>appearance</cstring>
                         </property>
-                        <property name="text">
-                            <string>Splitters:</string>
+                        <property name="whatsThis" stdset="0">
+                            <string>The setting here affects the general appearance - and will be applied to buttons, combo boxes, and spin buttons.</string>
                         </property>
                     </widget>
-                    <widget class="QLabel" row="3" column="0">
+                    <widget class="QLabel" row="0" column="0">
                         <property name="name">
-                            <cstring>textLabel1_2_3</cstring>
+                            <cstring>textLabel1</cstring>
                         </property>
                         <property name="text">
-                            <string>Scrollbars:</string>
+                            <string>Appearance:</string>
                         </property>
                     </widget>
-                    <widget class="QLabel" row="2" column="0">
+                    <spacer row="0" column="2">
                         <property name="name">
-                            <cstring>textLabel1_2_3_2</cstring>
+                            <cstring>spacer10_2</cstring>
                         </property>
-                        <property name="text">
-                            <string>Sliders:</string>
+                        <property name="orientation">
+                            <enum>Horizontal</enum>
                         </property>
-                    </widget>
-                    <widget class="QLabel" row="0" column="0">
-                        <property name="name">
-                            <cstring>textLabel1_7</cstring>
+                        <property name="sizeType">
+                            <enum>Expanding</enum>
                         </property>
-                        <property name="text">
-                            <string>Appearance:</string>
+                        <property name="sizeHint">
+                            <size>
+                                <width>571</width>
+                                <height>16</height>
+                            </size>
                         </property>
-                    </widget>
+                    </spacer>
                     <widget class="QLabel" row="4" column="0">
                         <property name="name">
-                            <cstring>textLabel1</cstring>
+                            <cstring>textLabel1_6</cstring>
                         </property>
                         <property name="text">
-                            <string>Progress bars:</string>
+                            <string>Focus rectangle:</string>
                         </property>
                     </widget>
-                    <widget class="QLabel" row="7" column="0">
+                    <widget class="QLabel" row="3" column="0">
                         <property name="name">
-                            <cstring>textLabel1_8_2</cstring>
+                            <cstring>textLabel3</cstring>
                         </property>
                         <property name="text">
-                            <string>Listviews:</string>
-                        </property>
-                        <property name="whatsThis" stdset="0">
-                            <string>This controls the % that widgets will be highlighted by when the mouse hovers over them</string>
+                            <string>Button effect:</string>
                         </property>
                     </widget>
-                    <widget class="QComboBox" row="7" column="1">
+                    <widget class="QComboBox" row="2" column="1">
                         <property name="name">
-                            <cstring>lvAppearance</cstring>
+                            <cstring>round</cstring>
                         </property>
                     </widget>
-                    <widget class="QCheckBox" row="5" column="1">
+                    <widget class="QCheckBox" row="9" column="0" rowspan="1" colspan="2">
                         <property name="name">
-                            <cstring>embolden</cstring>
+                            <cstring>darkerBorders</cstring>
                         </property>
                         <property name="text">
-                            <string>Bold text, and</string>
+                            <string>Darker borders</string>
                         </property>
                     </widget>
-                    <widget class="QComboBox" row="8" column="1">
+                    <widget class="QCheckBox" row="8" column="0" rowspan="1" colspan="2">
                         <property name="name">
-                            <cstring>tabAppearance</cstring>
+                            <cstring>stdSidebarButtons</cstring>
                         </property>
-                    </widget>
-                    <widget class="QComboBox" row="4" column="1">
-                        <property name="name">
-                            <cstring>progressAppearance</cstring>
+                        <property name="text">
+                            <string>Standard buttons for sidebars</string>
                         </property>
                         <property name="whatsThis" stdset="0">
-                            <string>The setting here affects the general appearance - and will be applied to buttons, scrollbars, sliders, combo boxes, and spin buttons.</string>
+                            <string>Select this to have the sidebar buttons in konqueror, kate, kaffeine, ktorrent, drawn as per normal buttons - otherwise they will be drawn in a more flat style.</string>
                         </property>
                     </widget>
                     <widget class="QComboBox" row="3" column="1">
                         <property name="name">
-                            <cstring>scrollbarType</cstring>
-                        </property>
-                        <property name="sizePolicy">
-                            <sizepolicy>
-                                <hsizetype>3</hsizetype>
-                                <vsizetype>0</vsizetype>
-                                <horstretch>0</horstretch>
-                                <verstretch>0</verstretch>
-                            </sizepolicy>
-                        </property>
-                    </widget>
-                    <widget class="QComboBox" row="4" column="4">
-                        <property name="name">
-                            <cstring>stripedProgress</cstring>
+                            <cstring>buttonEffect</cstring>
                         </property>
                     </widget>
-                    <widget class="QCheckBox" row="4" column="2" rowspan="1" colspan="2">
+                    <widget class="QLabel" row="2" column="0">
                         <property name="name">
-                            <cstring>gradientPbGroove</cstring>
+                            <cstring>textLabel2_4</cstring>
                         </property>
                         <property name="text">
-                            <string>Gradient groove</string>
-                        </property>
-                    </widget>
-                    <widget class="QComboBox" row="2" column="1">
-                        <property name="name">
-                            <cstring>sliderAppearance</cstring>
+                            <string>Roundedness:</string>
                         </property>
                     </widget>
-                    <widget class="QCheckBox" row="4" column="5">
+                    <widget class="QCheckBox" row="7" column="0" rowspan="1" colspan="2">
                         <property name="name">
-                            <cstring>animatedProgress</cstring>
+                            <cstring>vArrows</cstring>
                         </property>
                         <property name="text">
-                            <string>Animated</string>
+                            <string>'V' style arrows</string>
                         </property>
                     </widget>
-                    <widget class="QCheckBox" row="7" column="2" rowspan="1" colspan="4">
+                    <widget class="QComboBox" row="4" column="1">
                         <property name="name">
-                            <cstring>lvLines</cstring>
-                        </property>
-                        <property name="text">
-                            <string>Lines</string>
+                            <cstring>focus</cstring>
                         </property>
                     </widget>
-                    <widget class="QCheckBox" row="10" column="0" rowspan="1" colspan="2">
+                    <widget class="QFrame" row="6" column="0" rowspan="1" colspan="3">
                         <property name="name">
-                            <cstring>stdFocus</cstring>
+                            <cstring>frame4</cstring>
                         </property>
-                        <property name="text">
-                            <string>Dotted focus rectangle</string>
+                        <property name="frameShape">
+                            <enum>StyledPanel</enum>
                         </property>
-                        <property name="whatsThis" stdset="0">
-                            <string>Some applications, such as Qt Designer, and Krita, make use of 'dock windows' These have a handle strip along the top - enabling this option will draw the name of the window in the handle strip.</string>
+                        <property name="frameShadow">
+                            <enum>Raised</enum>
+                        </property>
+                        <property name="lineWidth">
+                            <number>0</number>
                         </property>
+                        <hbox>
+                            <property name="name">
+                                <cstring>unnamed</cstring>
+                            </property>
+                            <property name="margin">
+                                <number>0</number>
+                            </property>
+                            <property name="spacing">
+                                <number>0</number>
+                            </property>
+                            <widget class="QCheckBox">
+                                <property name="name">
+                                    <cstring>framelessGroupBoxes</cstring>
+                                </property>
+                                <property name="text">
+                                    <string>Frameless groupboxes,</string>
+                                </property>
+                            </widget>
+                            <widget class="QCheckBox">
+                                <property name="name">
+                                    <cstring>groupBoxLine</cstring>
+                                </property>
+                                <property name="sizePolicy">
+                                    <sizepolicy>
+                                        <hsizetype>3</hsizetype>
+                                        <vsizetype>0</vsizetype>
+                                        <horstretch>0</horstretch>
+                                        <verstretch>0</verstretch>
+                                    </sizepolicy>
+                                </property>
+                                <property name="text">
+                                    <string>draw line after title (KDE4 &amp;&amp; Gtk2)</string>
+                                </property>
+                            </widget>
+                        </hbox>
                     </widget>
-                    <widget class="QCheckBox" row="11" column="0" rowspan="1" colspan="2">
+                    <widget class="QCheckBox" row="5" column="0" rowspan="1" colspan="2">
                         <property name="name">
                             <cstring>drawStatusBarFrames</cstring>
                         </property>
@@ -224,158 +250,204 @@
                             <string>Draw statusbar frames</string>
                         </property>
                     </widget>
-                    <widget class="QCheckBox" row="12" column="0" rowspan="1" colspan="2">
+                    <widget class="QComboBox" row="1" column="1">
                         <property name="name">
-                            <cstring>framelessGroupBoxes</cstring>
-                        </property>
-                        <property name="text">
-                            <string>Frameless groupboxes</string>
+                            <cstring>sunkenAppearance</cstring>
                         </property>
                     </widget>
-                    <widget class="QComboBox" row="2" column="2" rowspan="1" colspan="2">
+                    <widget class="QLabel" row="1" column="0">
                         <property name="name">
-                            <cstring>shadeSliders</cstring>
+                            <cstring>textLabel1_12</cstring>
                         </property>
-                        <property name="sizePolicy">
-                            <sizepolicy>
-                                <hsizetype>3</hsizetype>
-                                <vsizetype>0</vsizetype>
-                                <horstretch>0</horstretch>
-                                <verstretch>0</verstretch>
-                            </sizepolicy>
+                        <property name="text">
+                            <string>Sunken appearance:</string>
                         </property>
                     </widget>
-                    <widget class="QLabel" row="8" column="0">
+                    <widget class="QCheckBox" row="10" column="0">
                         <property name="name">
-                            <cstring>textLabel1_8_2_2</cstring>
+                            <cstring>fadeLines</cstring>
                         </property>
                         <property name="text">
-                            <string>Tabs:</string>
+                            <string>Draw fading lines (KDE4 &amp;&amp; Gtk2)</string>
                         </property>
-                        <property name="whatsThis" stdset="0">
-                            <string>This controls the % that widgets will be highlighted by when the mouse hovers over them</string>
+                        <property name="accel">
+                            <string></string>
                         </property>
                     </widget>
-                    <widget class="QLabel" row="9" column="0">
+                    <widget class="QCheckBox" row="11" column="0">
                         <property name="name">
-                            <cstring>textLabel1_8_2_2_2</cstring>
+                            <cstring>thinnerBtns</cstring>
                         </property>
                         <property name="text">
-                            <string>Checks/radios:</string>
+                            <string>Thinner buttons when etched/shadowed</string>
                         </property>
-                        <property name="whatsThis" stdset="0">
-                            <string>This controls the % that widgets will be highlighted by when the mouse hovers over them</string>
+                        <property name="accel">
+                            <string></string>
                         </property>
                     </widget>
-                    <widget class="QComboBox" row="9" column="1">
+                    <spacer row="13" column="1">
                         <property name="name">
-                            <cstring>shadeCheckRadio</cstring>
+                            <cstring>spacer9</cstring>
                         </property>
-                        <property name="sizePolicy">
-                            <sizepolicy>
-                                <hsizetype>3</hsizetype>
-                                <vsizetype>0</vsizetype>
-                                <horstretch>0</horstretch>
-                                <verstretch>0</verstretch>
-                            </sizepolicy>
+                        <property name="orientation">
+                            <enum>Vertical</enum>
                         </property>
-                    </widget>
-                    <widget class="KColorButton" row="9" column="2" rowspan="1" colspan="2">
+                        <property name="sizeType">
+                            <enum>Expanding</enum>
+                        </property>
+                        <property name="sizeHint">
+                            <size>
+                                <width>20</width>
+                                <height>162</height>
+                            </size>
+                        </property>
+                    </spacer>
+                    <widget class="QCheckBox" row="12" column="0" rowspan="1" colspan="3">
                         <property name="name">
-                            <cstring>customCheckRadioColor</cstring>
+                            <cstring>etchEntry</cstring>
                         </property>
                         <property name="text">
-                            <string></string>
+                            <string>Etch entries and scrollviews when button effect set to etched/shadowed.</string>
                         </property>
                     </widget>
-                    <widget class="KColorButton" row="2" column="4">
+                </grid>
+            </widget>
+            <widget class="QWidget">
+                <property name="name">
+                    <cstring>WStackPage</cstring>
+                </property>
+                <attribute name="id">
+                    <number>1</number>
+                </attribute>
+                <grid>
+                    <property name="name">
+                        <cstring>unnamed</cstring>
+                    </property>
+                    <widget class="QCheckBox" row="0" column="0" rowspan="1" colspan="4">
                         <property name="name">
-                            <cstring>customSlidersColor</cstring>
+                            <cstring>comboSplitter</cstring>
                         </property>
                         <property name="text">
-                            <string></string>
+                            <string>Draw splitter</string>
+                        </property>
+                        <property name="whatsThis" stdset="0">
+                            <string>This option controls whether a line is drawn near non-editable combo box arrows.</string>
                         </property>
                     </widget>
-                    <widget class="QLabel" row="5" column="0">
+                    <widget class="QCheckBox" row="1" column="0" rowspan="1" colspan="2">
                         <property name="name">
-                            <cstring>textLabel1_3</cstring>
+                            <cstring>unifyCombo</cstring>
                         </property>
                         <property name="text">
-                            <string>Default button:</string>
+                            <string>Draw arrow of editable combos within edit field</string>
                         </property>
                     </widget>
-                    <widget class="QLabel" row="6" column="0">
+                    <spacer row="5" column="2">
                         <property name="name">
-                            <cstring>textLabel1_3_2</cstring>
+                            <cstring>spacer27_2</cstring>
                         </property>
-                        <property name="text">
-                            <string>Mouse-over:</string>
+                        <property name="orientation">
+                            <enum>Vertical</enum>
                         </property>
-                    </widget>
-                    <widget class="QComboBox" row="0" column="1">
+                        <property name="sizeType">
+                            <enum>Expanding</enum>
+                        </property>
+                        <property name="sizeHint">
+                            <size>
+                                <width>20</width>
+                                <height>429</height>
+                            </size>
+                        </property>
+                    </spacer>
+                    <spacer row="4" column="3">
                         <property name="name">
-                            <cstring>appearance</cstring>
+                            <cstring>spacer26_2</cstring>
                         </property>
-                        <property name="whatsThis" stdset="0">
-                            <string>The setting here affects the general appearance - and will be applied to buttons, scrollbars, sliders, combo boxes, and spin buttons.</string>
+                        <property name="orientation">
+                            <enum>Horizontal</enum>
                         </property>
-                    </widget>
-                    <widget class="QCheckBox" row="11" column="2" rowspan="1" colspan="4">
+                        <property name="sizeType">
+                            <enum>Expanding</enum>
+                        </property>
+                        <property name="sizeHint">
+                            <size>
+                                <width>31</width>
+                                <height>20</height>
+                            </size>
+                        </property>
+                    </spacer>
+                    <widget class="QLabel" row="4" column="0">
                         <property name="name">
-                            <cstring>stdSidebarButtons</cstring>
+                            <cstring>textLabel1_17</cstring>
                         </property>
                         <property name="text">
-                            <string>Standard buttons for sidebars</string>
+                            <string>Button shade:</string>
                         </property>
                     </widget>
-                    <widget class="QComboBox" row="6" column="1">
+                    <widget class="KColorButton" row="4" column="2">
                         <property name="name">
-                            <cstring>coloredMouseOver</cstring>
+                            <cstring>customComboBtnColor</cstring>
                         </property>
-                        <property name="whatsThis" stdset="0">
-                            <string>The setting here affects the general appearance - and will be applied to buttons, scrollbars, sliders, combo boxes, and spin buttons.</string>
+                        <property name="text">
+                            <string></string>
                         </property>
                     </widget>
-                    <widget class="QLabel" row="6" column="2">
+                    <widget class="QComboBox" row="4" column="1">
                         <property name="name">
-                            <cstring>textLabel1_8</cstring>
+                            <cstring>comboBtn</cstring>
+                        </property>
+                    </widget>
+                    <widget class="QCheckBox" row="2" column="0" rowspan="1" colspan="4">
+                        <property name="name">
+                            <cstring>gtkComboMenus</cstring>
                         </property>
                         <property name="text">
-                            <string>Highlight by:</string>
+                            <string>Gtk style comboboxes (KDE4)</string>
                         </property>
                         <property name="whatsThis" stdset="0">
-                            <string>This controls the % that widgets will be highlighted by when the mouse hovers over them</string>
+                            <string>In Gtk, the list that is attached to a combo-box appears in the same style as a popup-menu. KDE4 has the ability to mimic this look.</string>
                         </property>
                     </widget>
-                    <widget class="QCheckBox" row="12" column="2" rowspan="1" colspan="3">
+                    <widget class="QCheckBox" row="3" column="0">
                         <property name="name">
-                            <cstring>darkerBorders</cstring>
+                            <cstring>doubleGtkComboArrow</cstring>
                         </property>
                         <property name="text">
-                            <string>Darker borders</string>
+                            <string>Double arrows for Gtk style comboboxes</string>
                         </property>
                     </widget>
-                    <widget class="QComboBox" row="0" column="2" rowspan="1" colspan="2">
-                        <property name="name">
-                            <cstring>round</cstring>
-                        </property>
-                    </widget>
-                    <widget class="QCheckBox" row="10" column="2" rowspan="1" colspan="4">
+                </grid>
+            </widget>
+            <widget class="QWidget">
+                <property name="name">
+                    <cstring>WStackPage</cstring>
+                </property>
+                <attribute name="id">
+                    <number>2</number>
+                </attribute>
+                <vbox>
+                    <property name="name">
+                        <cstring>unnamed</cstring>
+                    </property>
+                    <widget class="QCheckBox">
                         <property name="name">
-                            <cstring>vArrows</cstring>
+                            <cstring>unifySpinBtns</cstring>
                         </property>
                         <property name="text">
-                            <string>'V' style arrows</string>
+                            <string>Combine both buttons</string>
                         </property>
                     </widget>
-                    <widget class="QComboBox" row="1" column="1">
+                    <widget class="QCheckBox">
                         <property name="name">
-                            <cstring>splitters</cstring>
+                            <cstring>unifySpin</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Draw arrows within edit field</string>
                         </property>
                     </widget>
-                    <spacer row="13" column="0">
+                    <spacer>
                         <property name="name">
-                            <cstring>spacer6</cstring>
+                            <cstring>spacer28_3</cstring>
                         </property>
                         <property name="orientation">
                             <enum>Vertical</enum>
@@ -386,575 +458,2222 @@
                         <property name="sizeHint">
                             <size>
                                 <width>20</width>
-                                <height>20</height>
+                                <height>31</height>
                             </size>
                         </property>
                     </spacer>
-                    <widget class="QCheckBox" row="9" column="4" rowspan="1" colspan="2">
-                        <property name="name">
-                            <cstring>xCheck</cstring>
-                        </property>
-                        <property name="text">
+                </vbox>
+            </widget>
+            <widget class="QWidget">
+                <property name="name">
+                    <cstring>WStackPage</cstring>
+                </property>
+                <attribute name="id">
+                    <number>3</number>
+                </attribute>
+                <grid>
+                    <property name="name">
+                        <cstring>unnamed</cstring>
+                    </property>
+                    <widget class="QLabel" row="0" column="0">
+                        <property name="name">
+                            <cstring>textLabel4</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Markings:</string>
+                        </property>
+                    </widget>
+                    <spacer row="2" column="1">
+                        <property name="name">
+                            <cstring>spacer12_2</cstring>
+                        </property>
+                        <property name="orientation">
+                            <enum>Vertical</enum>
+                        </property>
+                        <property name="sizeType">
+                            <enum>Expanding</enum>
+                        </property>
+                        <property name="sizeHint">
+                            <size>
+                                <width>16</width>
+                                <height>482</height>
+                            </size>
+                        </property>
+                    </spacer>
+                    <widget class="KIntNumInput" row="1" column="1">
+                        <property name="name">
+                            <cstring>splitterHighlight</cstring>
+                        </property>
+                        <property name="suffix">
+                            <string>%</string>
+                        </property>
+                    </widget>
+                    <spacer row="0" column="2">
+                        <property name="name">
+                            <cstring>spacer11</cstring>
+                        </property>
+                        <property name="orientation">
+                            <enum>Horizontal</enum>
+                        </property>
+                        <property name="sizeType">
+                            <enum>Expanding</enum>
+                        </property>
+                        <property name="sizeHint">
+                            <size>
+                                <width>461</width>
+                                <height>16</height>
+                            </size>
+                        </property>
+                    </spacer>
+                    <widget class="QComboBox" row="0" column="1">
+                        <property name="name">
+                            <cstring>splitters</cstring>
+                        </property>
+                    </widget>
+                    <widget class="QLabel" row="1" column="0">
+                        <property name="name">
+                            <cstring>textLabel1_21</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Background mouse-over highlight:</string>
+                        </property>
+                    </widget>
+                </grid>
+            </widget>
+            <widget class="QWidget">
+                <property name="name">
+                    <cstring>WStackPage</cstring>
+                </property>
+                <attribute name="id">
+                    <number>4</number>
+                </attribute>
+                <grid>
+                    <property name="name">
+                        <cstring>unnamed</cstring>
+                    </property>
+                    <widget class="QLabel" row="0" column="0">
+                        <property name="name">
+                            <cstring>textLabel5</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Appearance:</string>
+                        </property>
+                    </widget>
+                    <widget class="QLabel" row="1" column="0">
+                        <property name="name">
+                            <cstring>textLabel6</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Coloration:</string>
+                        </property>
+                    </widget>
+                    <widget class="QComboBox" row="1" column="1">
+                        <property name="name">
+                            <cstring>shadeSliders</cstring>
+                        </property>
+                        <property name="sizePolicy">
+                            <sizepolicy>
+                                <hsizetype>3</hsizetype>
+                                <vsizetype>0</vsizetype>
+                                <horstretch>0</horstretch>
+                                <verstretch>0</verstretch>
+                            </sizepolicy>
+                        </property>
+                        <property name="whatsThis" stdset="0">
+                            <string>This color setting affects both scrollbar sliders, and other sliders.</string>
+                        </property>
+                    </widget>
+                    <widget class="KColorButton" row="1" column="2">
+                        <property name="name">
+                            <cstring>customSlidersColor</cstring>
+                        </property>
+                        <property name="text">
+                            <string></string>
+                        </property>
+                    </widget>
+                    <spacer row="1" column="3">
+                        <property name="name">
+                            <cstring>spacer14</cstring>
+                        </property>
+                        <property name="orientation">
+                            <enum>Horizontal</enum>
+                        </property>
+                        <property name="sizeType">
+                            <enum>Expanding</enum>
+                        </property>
+                        <property name="sizeHint">
+                            <size>
+                                <width>307</width>
+                                <height>16</height>
+                            </size>
+                        </property>
+                    </spacer>
+                    <widget class="QComboBox" row="0" column="1">
+                        <property name="name">
+                            <cstring>sliderAppearance</cstring>
+                        </property>
+                        <property name="whatsThis" stdset="0">
+                            <string>This appearance setting affects both scrollbar sliders, and other sliders.</string>
+                        </property>
+                    </widget>
+                    <spacer row="10" column="1">
+                        <property name="name">
+                            <cstring>spacer13</cstring>
+                        </property>
+                        <property name="orientation">
+                            <enum>Vertical</enum>
+                        </property>
+                        <property name="sizeType">
+                            <enum>Expanding</enum>
+                        </property>
+                        <property name="sizeHint">
+                            <size>
+                                <width>20</width>
+                                <height>191</height>
+                            </size>
+                        </property>
+                    </spacer>
+                    <widget class="QComboBox" row="5" column="1">
+                        <property name="name">
+                            <cstring>grooveAppearance</cstring>
+                        </property>
+                    </widget>
+                    <widget class="QComboBox" row="8" column="1">
+                        <property name="name">
+                            <cstring>sliderThumbs</cstring>
+                        </property>
+                        <property name="sizePolicy">
+                            <sizepolicy>
+                                <hsizetype>3</hsizetype>
+                                <vsizetype>0</vsizetype>
+                                <horstretch>0</horstretch>
+                                <verstretch>0</verstretch>
+                            </sizepolicy>
+                        </property>
+                    </widget>
+                    <widget class="KIntNumInput" row="9" column="1">
+                        <property name="name">
+                            <cstring>sliderWidth</cstring>
+                        </property>
+                    </widget>
+                    <widget class="QLabel" row="3" column="0">
+                        <property name="name">
+                            <cstring>textLabel7</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Style:</string>
+                        </property>
+                    </widget>
+                    <widget class="QLabel" row="8" column="0">
+                        <property name="name">
+                            <cstring>textLabel8_2</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Slider thumbs:</string>
+                        </property>
+                    </widget>
+                    <widget class="QLabel" row="9" column="0">
+                        <property name="name">
+                            <cstring>textLabel8_2x</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Slider width:</string>
+                        </property>
+                    </widget>
+                    <widget class="QCheckBox" row="4" column="0">
+                        <property name="name">
+                            <cstring>fillSlider</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Fill used part of groove:</string>
+                        </property>
+                    </widget>
+                    <widget class="QLabel" row="7" column="0">
+                        <property name="name">
+                            <cstring>textLabel8_2_2</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Background</string>
+                        </property>
+                    </widget>
+                    <widget class="QComboBox" row="4" column="1">
+                        <property name="name">
+                            <cstring>sliderFill</cstring>
+                        </property>
+                        <property name="whatsThis" stdset="0">
+                            <string>This appearance setting affects both scrollbar sliders, and other sliders.</string>
+                        </property>
+                    </widget>
+                    <widget class="QCheckBox" row="6" column="2" rowspan="1" colspan="2">
+                        <property name="name">
+                            <cstring>flatSbarButtons</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Flat</string>
+                        </property>
+                    </widget>
+                    <widget class="QComboBox" row="3" column="1">
+                        <property name="name">
+                            <cstring>sliderStyle</cstring>
+                        </property>
+                        <property name="whatsThis" stdset="0">
+                            <string>This setting only affects standard sliders - i.e. not scrollbar sliders. 'Triangular' is a very similar style to plastik's sliders.</string>
+                        </property>
+                    </widget>
+                    <widget class="QLabel" row="5" column="0">
+                        <property name="name">
+                            <cstring>textLabel2_5</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Groove appearance:</string>
+                        </property>
+                    </widget>
+                    <widget class="QCheckBox" row="5" column="2" rowspan="1" colspan="2">
+                        <property name="name">
+                            <cstring>thinSbarGroove</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Thin scrollbar groove</string>
+                        </property>
+                    </widget>
+                    <widget class="QLabel" row="6" column="0">
+                        <property name="name">
+                            <cstring>textLabel8</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Scrollbar buttons:</string>
+                        </property>
+                    </widget>
+                    <widget class="QComboBox" row="6" column="1">
+                        <property name="name">
+                            <cstring>scrollbarType</cstring>
+                        </property>
+                        <property name="sizePolicy">
+                            <sizepolicy>
+                                <hsizetype>3</hsizetype>
+                                <vsizetype>0</vsizetype>
+                                <horstretch>0</horstretch>
+                                <verstretch>0</verstretch>
+                            </sizepolicy>
+                        </property>
+                        <property name="whatsThis" stdset="0">
+                            <string>This controls the position, and number, of buttons on a scrollbar.
+
+KDE - 1 button at the top/left, and two at the bottom/right
+Windows - 1 botton at each end
+Platinum -  no buttons at the top/left, two at bottom/right
+Next - two buttons at the top/left, none at bottom/right
+None - no buttons, only the slider</string>
+                        </property>
+                    </widget>
+                    <widget class="QComboBox" row="7" column="1">
+                        <property name="name">
+                            <cstring>sbarBgndAppearance</cstring>
+                        </property>
+                        <property name="sizePolicy">
+                            <sizepolicy>
+                                <hsizetype>3</hsizetype>
+                                <vsizetype>0</vsizetype>
+                                <horstretch>0</horstretch>
+                                <verstretch>0</verstretch>
+                            </sizepolicy>
+                        </property>
+                    </widget>
+                    <widget class="QCheckBox" row="2" column="1" rowspan="1" colspan="2">
+                        <property name="name">
+                            <cstring>colorSliderMouseOver</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Color only on mouse-over</string>
+                        </property>
+                    </widget>
+                </grid>
+            </widget>
+            <widget class="QWidget">
+                <property name="name">
+                    <cstring>WStackPage</cstring>
+                </property>
+                <attribute name="id">
+                    <number>5</number>
+                </attribute>
+                <grid>
+                    <property name="name">
+                        <cstring>unnamed</cstring>
+                    </property>
+                    <widget class="QComboBox" row="0" column="1">
+                        <property name="name">
+                            <cstring>progressAppearance</cstring>
+                        </property>
+                    </widget>
+                    <widget class="QComboBox" row="0" column="2">
+                        <property name="name">
+                            <cstring>stripedProgress</cstring>
+                        </property>
+                    </widget>
+                    <widget class="QCheckBox" row="0" column="3">
+                        <property name="name">
+                            <cstring>animatedProgress</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Animated</string>
+                        </property>
+                    </widget>
+                    <spacer row="2" column="2">
+                        <property name="name">
+                            <cstring>spacer16</cstring>
+                        </property>
+                        <property name="orientation">
+                            <enum>Vertical</enum>
+                        </property>
+                        <property name="sizeType">
+                            <enum>Expanding</enum>
+                        </property>
+                        <property name="sizeHint">
+                            <size>
+                                <width>16</width>
+                                <height>369</height>
+                            </size>
+                        </property>
+                    </spacer>
+                    <widget class="QLabel" row="1" column="0">
+                        <property name="name">
+                            <cstring>textLabel1_3</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Groove:</string>
+                        </property>
+                    </widget>
+                    <widget class="QLabel" row="0" column="0">
+                        <property name="name">
+                            <cstring>textLabel9</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Bar:</string>
+                        </property>
+                    </widget>
+                    <widget class="QComboBox" row="1" column="1">
+                        <property name="name">
+                            <cstring>progressGrooveAppearance</cstring>
+                        </property>
+                    </widget>
+                    <widget class="QComboBox" row="1" column="2">
+                        <property name="name">
+                            <cstring>progressGrooveColor</cstring>
+                        </property>
+                    </widget>
+                    <widget class="QCheckBox" row="0" column="4">
+                        <property name="name">
+                            <cstring>fillProgress</cstring>
+                        </property>
+                        <property name="sizePolicy">
+                            <sizepolicy>
+                                <hsizetype>3</hsizetype>
+                                <vsizetype>0</vsizetype>
+                                <horstretch>0</horstretch>
+                                <verstretch>0</verstretch>
+                            </sizepolicy>
+                        </property>
+                        <property name="text">
+                            <string>No border</string>
+                        </property>
+                        <property name="whatsThis" stdset="0">
+                            <string>Enable this option to remove the 1 pixel border around the filled element.</string>
+                        </property>
+                    </widget>
+                </grid>
+            </widget>
+            <widget class="QWidget">
+                <property name="name">
+                    <cstring>WStackPage</cstring>
+                </property>
+                <attribute name="id">
+                    <number>6</number>
+                </attribute>
+                <grid>
+                    <property name="name">
+                        <cstring>unnamed</cstring>
+                    </property>
+                    <widget class="QComboBox" row="1" column="1">
+                        <property name="name">
+                            <cstring>defBtnIndicator</cstring>
+                        </property>
+                        <property name="sizePolicy">
+                            <sizepolicy>
+                                <hsizetype>3</hsizetype>
+                                <vsizetype>0</vsizetype>
+                                <horstretch>0</horstretch>
+                                <verstretch>0</verstretch>
+                            </sizepolicy>
+                        </property>
+                    </widget>
+                    <widget class="QLabel" row="1" column="0">
+                        <property name="name">
+                            <cstring>textLabel10</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Indicate with:</string>
+                        </property>
+                    </widget>
+                    <widget class="QCheckBox" row="0" column="0" rowspan="1" colspan="2">
+                        <property name="name">
+                            <cstring>embolden</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Embolden text</string>
+                        </property>
+                    </widget>
+                    <spacer row="0" column="2">
+                        <property name="name">
+                            <cstring>spacer17</cstring>
+                        </property>
+                        <property name="orientation">
+                            <enum>Horizontal</enum>
+                        </property>
+                        <property name="sizeType">
+                            <enum>Expanding</enum>
+                        </property>
+                        <property name="sizeHint">
+                            <size>
+                                <width>27</width>
+                                <height>2</height>
+                            </size>
+                        </property>
+                    </spacer>
+                    <spacer row="2" column="1">
+                        <property name="name">
+                            <cstring>spacer18</cstring>
+                        </property>
+                        <property name="orientation">
+                            <enum>Vertical</enum>
+                        </property>
+                        <property name="sizeType">
+                            <enum>Expanding</enum>
+                        </property>
+                        <property name="sizeHint">
+                            <size>
+                                <width>3</width>
+                                <height>30</height>
+                            </size>
+                        </property>
+                    </spacer>
+                </grid>
+            </widget>
+            <widget class="QWidget">
+                <property name="name">
+                    <cstring>WStackPage</cstring>
+                </property>
+                <attribute name="id">
+                    <number>7</number>
+                </attribute>
+                <grid>
+                    <property name="name">
+                        <cstring>unnamed</cstring>
+                    </property>
+                    <widget class="QLabel" row="1" column="0">
+                        <property name="name">
+                            <cstring>textLabel1_8</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Highlight by:</string>
+                        </property>
+                        <property name="whatsThis" stdset="0">
+                            <string>This controls the % that widgets will be highlighted by when the mouse hovers over them</string>
+                        </property>
+                    </widget>
+                    <widget class="QLabel" row="0" column="0">
+                        <property name="name">
+                            <cstring>textLabel11</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Coloration:</string>
+                        </property>
+                    </widget>
+                    <widget class="KIntNumInput" row="1" column="1">
+                        <property name="name">
+                            <cstring>highlightFactor</cstring>
+                        </property>
+                        <property name="suffix">
+                            <string>%</string>
+                        </property>
+                    </widget>
+                    <widget class="QComboBox" row="0" column="1">
+                        <property name="name">
+                            <cstring>coloredMouseOver</cstring>
+                        </property>
+                    </widget>
+                    <spacer row="0" column="2">
+                        <property name="name">
+                            <cstring>spacer19</cstring>
+                        </property>
+                        <property name="orientation">
+                            <enum>Horizontal</enum>
+                        </property>
+                        <property name="sizeType">
+                            <enum>Expanding</enum>
+                        </property>
+                        <property name="sizeHint">
+                            <size>
+                                <width>50</width>
+                                <height>6</height>
+                            </size>
+                        </property>
+                    </spacer>
+                    <spacer row="2" column="1">
+                        <property name="name">
+                            <cstring>spacer20</cstring>
+                        </property>
+                        <property name="orientation">
+                            <enum>Vertical</enum>
+                        </property>
+                        <property name="sizeType">
+                            <enum>Expanding</enum>
+                        </property>
+                        <property name="sizeHint">
+                            <size>
+                                <width>5</width>
+                                <height>20</height>
+                            </size>
+                        </property>
+                    </spacer>
+                </grid>
+            </widget>
+            <widget class="QWidget">
+                <property name="name">
+                    <cstring>WStackPage</cstring>
+                </property>
+                <attribute name="id">
+                    <number>8</number>
+                </attribute>
+                <grid>
+                    <property name="name">
+                        <cstring>unnamed</cstring>
+                    </property>
+                    <widget class="QCheckBox" row="0" column="2">
+                        <property name="name">
+                            <cstring>lvButton</cstring>
+                        </property>
+                        <property name="sizePolicy">
+                            <sizepolicy>
+                                <hsizetype>3</hsizetype>
+                                <vsizetype>0</vsizetype>
+                                <horstretch>0</horstretch>
+                                <verstretch>0</verstretch>
+                            </sizepolicy>
+                        </property>
+                        <property name="text">
+                            <string>Button color</string>
+                        </property>
+                    </widget>
+                    <widget class="QLabel" row="0" column="0">
+                        <property name="name">
+                            <cstring>textLabel12</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Header appearance:</string>
+                        </property>
+                    </widget>
+                    <widget class="QComboBox" row="0" column="1">
+                        <property name="name">
+                            <cstring>lvAppearance</cstring>
+                        </property>
+                    </widget>
+                    <widget class="QLabel" row="1" column="0">
+                        <property name="name">
+                            <cstring>textLabel12_2</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Shade header of sorted column:</string>
+                        </property>
+                    </widget>
+                    <widget class="QComboBox" row="1" column="1">
+                        <property name="name">
+                            <cstring>sortedLv</cstring>
+                        </property>
+                    </widget>
+                    <widget class="KColorButton" row="1" column="2">
+                        <property name="name">
+                            <cstring>customSortedLvColor</cstring>
+                        </property>
+                        <property name="enabled">
+                            <bool>false</bool>
+                        </property>
+                        <property name="text">
+                            <string></string>
+                        </property>
+                    </widget>
+                    <widget class="QLabel" row="3" column="0">
+                        <property name="name">
+                            <cstring>textLabel1_8_2_2_3_2</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Selection appearance (KDE4 &amp;&amp; Gtk2):</string>
+                        </property>
+                    </widget>
+                    <widget class="QComboBox" row="3" column="1">
+                        <property name="name">
+                            <cstring>selectionAppearance</cstring>
+                        </property>
+                    </widget>
+                    <spacer row="6" column="1">
+                        <property name="name">
+                            <cstring>spacer22</cstring>
+                        </property>
+                        <property name="orientation">
+                            <enum>Vertical</enum>
+                        </property>
+                        <property name="sizeType">
+                            <enum>Expanding</enum>
+                        </property>
+                        <property name="sizeHint">
+                            <size>
+                                <width>16</width>
+                                <height>389</height>
+                            </size>
+                        </property>
+                    </spacer>
+                    <widget class="QCheckBox" row="2" column="0">
+                        <property name="name">
+                            <cstring>forceAlternateLvCols</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Force alternate colors</string>
+                        </property>
+                    </widget>
+                    <widget class="QLabel" row="5" column="0">
+                        <property name="name">
+                            <cstring>textLabel1_18</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Lines between items:</string>
+                        </property>
+                    </widget>
+                    <widget class="QComboBox" row="5" column="1">
+                        <property name="name">
+                            <cstring>lvLines</cstring>
+                        </property>
+                    </widget>
+                    <widget class="QCheckBox" row="4" column="0">
+                        <property name="name">
+                            <cstring>squareLvSelection</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Square selection</string>
+                        </property>
+                    </widget>
+                </grid>
+            </widget>
+            <widget class="QWidget">
+                <property name="name">
+                    <cstring>WStackPage</cstring>
+                </property>
+                <attribute name="id">
+                    <number>9</number>
+                </attribute>
+                <vbox>
+                    <property name="name">
+                        <cstring>unnamed</cstring>
+                    </property>
+                    <widget class="QCheckBox">
+                        <property name="name">
+                            <cstring>gtkScrollViews</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Scrollbars on the outside</string>
+                        </property>
+                    </widget>
+                    <widget class="QCheckBox">
+                        <property name="name">
+                            <cstring>highlightScrollViews</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Highlight on focus (KDE)</string>
+                        </property>
+                    </widget>
+                    <widget class="QCheckBox">
+                        <property name="name">
+                            <cstring>squareScrollViews</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Always draw with a square frame - regardless of the general round setting.</string>
+                        </property>
+                    </widget>
+                    <spacer>
+                        <property name="name">
+                            <cstring>spacer28_2</cstring>
+                        </property>
+                        <property name="orientation">
+                            <enum>Vertical</enum>
+                        </property>
+                        <property name="sizeType">
+                            <enum>Expanding</enum>
+                        </property>
+                        <property name="sizeHint">
+                            <size>
+                                <width>16</width>
+                                <height>272</height>
+                            </size>
+                        </property>
+                    </spacer>
+                </vbox>
+            </widget>
+            <widget class="QWidget">
+                <property name="name">
+                    <cstring>WStackPage</cstring>
+                </property>
+                <attribute name="id">
+                    <number>10</number>
+                </attribute>
+                <grid>
+                    <property name="name">
+                        <cstring>unnamed</cstring>
+                    </property>
+                    <widget class="QLabel" row="0" column="0">
+                        <property name="name">
+                            <cstring>textLabel13</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Active tab appearance:</string>
+                        </property>
+                    </widget>
+                    <widget class="QLabel" row="1" column="0">
+                        <property name="name">
+                            <cstring>textLabel8_3</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Inactive tab appearance:</string>
+                        </property>
+                    </widget>
+                    <widget class="QComboBox" row="0" column="1">
+                        <property name="name">
+                            <cstring>activeTabAppearance</cstring>
+                        </property>
+                    </widget>
+                    <widget class="QComboBox" row="1" column="1">
+                        <property name="name">
+                            <cstring>tabAppearance</cstring>
+                        </property>
+                    </widget>
+                    <widget class="QCheckBox" row="0" column="2">
+                        <property name="name">
+                            <cstring>highlightTab</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Highlight</string>
+                        </property>
+                        <property name="whatsThis" stdset="0">
+                            <string>This will cause a coloured stripe to be drawn over the current tab.</string>
+                        </property>
+                    </widget>
+                    <widget class="KIntNumInput" row="0" column="3">
+                        <property name="name">
+                            <cstring>colorSelTab</cstring>
+                        </property>
+                        <property name="suffix">
+                            <string>%</string>
+                        </property>
+                        <property name="prefix">
+                            <string>Tint by </string>
+                        </property>
+                    </widget>
+                    <widget class="QLabel" row="2" column="0">
+                        <property name="name">
+                            <cstring>textLabel1_14</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Mouse-over:</string>
+                        </property>
+                    </widget>
+                    <widget class="QComboBox" row="2" column="1">
+                        <property name="name">
+                            <cstring>tabMouseOver</cstring>
+                        </property>
+                    </widget>
+                    <widget class="QCheckBox" row="3" column="0">
+                        <property name="name">
+                            <cstring>roundAllTabs</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Round all tabs</string>
+                        </property>
+                    </widget>
+                    <widget class="QCheckBox" row="4" column="0">
+                        <property name="name">
+                            <cstring>borderTab</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Draw a light border around tab widget</string>
+                        </property>
+                    </widget>
+                    <widget class="QCheckBox" row="5" column="0">
+                        <property name="name">
+                            <cstring>borderInactiveTab</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Draw inner border of inactive tabs</string>
+                        </property>
+                    </widget>
+                    <spacer row="8" column="1">
+                        <property name="name">
+                            <cstring>spacer23</cstring>
+                        </property>
+                        <property name="orientation">
+                            <enum>Vertical</enum>
+                        </property>
+                        <property name="sizeType">
+                            <enum>Expanding</enum>
+                        </property>
+                        <property name="sizeHint">
+                            <size>
+                                <width>20</width>
+                                <height>320</height>
+                            </size>
+                        </property>
+                    </spacer>
+                    <widget class="KIntNumInput" row="7" column="1">
+                        <property name="name">
+                            <cstring>tabBgnd</cstring>
+                        </property>
+                        <property name="prefix">
+                            <string>%</string>
+                        </property>
+                    </widget>
+                    <widget class="QLabel" row="7" column="0">
+                        <property name="name">
+                            <cstring>textLabel1_19</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Alter background by:</string>
+                        </property>
+                    </widget>
+                    <widget class="QCheckBox" row="6" column="0">
+                        <property name="name">
+                            <cstring>invertBotTab</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Invert shade of bottom tabs</string>
+                        </property>
+                    </widget>
+                </grid>
+            </widget>
+            <widget class="QWidget">
+                <property name="name">
+                    <cstring>WStackPage</cstring>
+                </property>
+                <attribute name="id">
+                    <number>11</number>
+                </attribute>
+                <grid>
+                    <property name="name">
+                        <cstring>unnamed</cstring>
+                    </property>
+                    <widget class="QComboBox" row="0" column="1" rowspan="1" colspan="2">
+                        <property name="name">
+                            <cstring>shadeCheckRadio</cstring>
+                        </property>
+                        <property name="sizePolicy">
+                            <sizepolicy>
+                                <hsizetype>3</hsizetype>
+                                <vsizetype>0</vsizetype>
+                                <horstretch>0</horstretch>
+                                <verstretch>0</verstretch>
+                            </sizepolicy>
+                        </property>
+                    </widget>
+                    <widget class="KColorButton" row="0" column="3">
+                        <property name="name">
+                            <cstring>customCheckRadioColor</cstring>
+                        </property>
+                        <property name="text">
+                            <string></string>
+                        </property>
+                    </widget>
+                    <widget class="QLabel" row="0" column="0">
+                        <property name="name">
+                            <cstring>textLabel14</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Coloration:</string>
+                        </property>
+                    </widget>
+                    <widget class="QCheckBox" row="1" column="0" rowspan="1" colspan="4">
+                        <property name="name">
+                            <cstring>xCheck</cstring>
+                        </property>
+                        <property name="text">
                             <string>'X' style checkmarks</string>
                         </property>
                     </widget>
-                    <widget class="QCheckBox" row="8" column="2" rowspan="1" colspan="2">
+                    <spacer row="0" column="4">
+                        <property name="name">
+                            <cstring>spacer25</cstring>
+                        </property>
+                        <property name="orientation">
+                            <enum>Horizontal</enum>
+                        </property>
+                        <property name="sizeType">
+                            <enum>Expanding</enum>
+                        </property>
+                        <property name="sizeHint">
+                            <size>
+                                <width>211</width>
+                                <height>16</height>
+                            </size>
+                        </property>
+                    </spacer>
+                    <spacer row="6" column="2">
+                        <property name="name">
+                            <cstring>spacer26</cstring>
+                        </property>
+                        <property name="orientation">
+                            <enum>Vertical</enum>
+                        </property>
+                        <property name="sizeType">
+                            <enum>Expanding</enum>
+                        </property>
+                        <property name="sizeHint">
+                            <size>
+                                <width>20</width>
+                                <height>364</height>
+                            </size>
+                        </property>
+                    </spacer>
+                    <widget class="QCheckBox" row="4" column="0" rowspan="1" colspan="2">
+                        <property name="name">
+                            <cstring>crButton</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Button like</string>
+                        </property>
+                    </widget>
+                    <widget class="QCheckBox" row="2" column="0" rowspan="1" colspan="3">
+                        <property name="name">
+                            <cstring>smallRadio</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Small radio 'dot'</string>
+                        </property>
+                    </widget>
+                    <widget class="QCheckBox" row="5" column="0" rowspan="1" colspan="2">
+                        <property name="name">
+                            <cstring>crColor</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Color when selected</string>
+                        </property>
+                    </widget>
+                    <widget class="KIntNumInput" row="3" column="1" rowspan="1" colspan="3">
+                        <property name="name">
+                            <cstring>crHighlight</cstring>
+                        </property>
+                        <property name="suffix">
+                            <string>%</string>
+                        </property>
+                    </widget>
+                    <widget class="QLabel" row="3" column="0">
+                        <property name="name">
+                            <cstring>textLabel2_6</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Background mouse-over highlight:</string>
+                        </property>
+                    </widget>
+                </grid>
+            </widget>
+            <widget class="QWidget">
+                <property name="name">
+                    <cstring>WStackPage</cstring>
+                </property>
+                <attribute name="id">
+                    <number>12</number>
+                </attribute>
+                <grid>
+                    <property name="name">
+                        <cstring>unnamed</cstring>
+                    </property>
+                    <spacer row="0" column="2">
+                        <property name="name">
+                            <cstring>spacer28</cstring>
+                        </property>
+                        <property name="orientation">
+                            <enum>Horizontal</enum>
+                        </property>
+                        <property name="sizeType">
+                            <enum>Expanding</enum>
+                        </property>
+                        <property name="sizeHint">
+                            <size>
+                                <width>395</width>
+                                <height>16</height>
+                            </size>
+                        </property>
+                    </spacer>
+                    <widget class="QLabel" row="2" column="0">
+                        <property name="name">
+                            <cstring>textLabel15_2</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Button Appearance:</string>
+                        </property>
+                    </widget>
+                    <widget class="QComboBox" row="2" column="1">
+                        <property name="name">
+                            <cstring>titlebarButtonAppearance</cstring>
+                        </property>
+                    </widget>
+                    <widget class="QComboBox" row="0" column="1">
+                        <property name="name">
+                            <cstring>titlebarAppearance</cstring>
+                        </property>
+                    </widget>
+                    <widget class="QLabel" row="0" column="0">
+                        <property name="name">
+                            <cstring>textLabel15</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Titlebar Appearance:</string>
+                        </property>
+                    </widget>
+                    <widget class="QLabel" row="1" column="0">
+                        <property name="name">
+                            <cstring>textLabel15_3</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Titlebar Appearance:</string>
+                        </property>
+                    </widget>
+                    <widget class="QComboBox" row="1" column="1">
+                        <property name="name">
+                            <cstring>inactiveTitlebarAppearance</cstring>
+                        </property>
+                    </widget>
+                    <widget class="QLabel" row="3" column="0">
+                        <property name="name">
+                            <cstring>textLabel1_13</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Text alignment:</string>
+                        </property>
+                    </widget>
+                    <widget class="QComboBox" row="3" column="1">
+                        <property name="name">
+                            <cstring>titlebarAlignment</cstring>
+                        </property>
+                    </widget>
+                    <widget class="QCheckBox" row="4" column="0">
+                        <property name="name">
+                            <cstring>colorTitlebarOnly</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Color titlebar only (KDE4)</string>
+                        </property>
+                    </widget>
+                    <spacer row="6" column="1">
+                        <property name="name">
+                            <cstring>spacer27</cstring>
+                        </property>
+                        <property name="orientation">
+                            <enum>Vertical</enum>
+                        </property>
+                        <property name="sizeType">
+                            <enum>Expanding</enum>
+                        </property>
+                        <property name="sizeHint">
+                            <size>
+                                <width>20</width>
+                                <height>270</height>
+                            </size>
+                        </property>
+                    </spacer>
+                    <widget class="QCheckBox" row="5" column="0" rowspan="1" colspan="2">
+                        <property name="name">
+                            <cstring>titlebarBorder</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Light border (KDE4)</string>
+                        </property>
+                    </widget>
+                </grid>
+            </widget>
+            <widget class="QWidget">
+                <property name="name">
+                    <cstring>WStackPage</cstring>
+                </property>
+                <attribute name="id">
+                    <number>13</number>
+                </attribute>
+                <grid>
+                    <property name="name">
+                        <cstring>unnamed</cstring>
+                    </property>
+                    <widget class="QLabel" row="0" column="2">
+                        <property name="name">
+                            <cstring>textLabel2</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Handles:</string>
+                        </property>
+                    </widget>
+                    <widget class="QLabel" row="0" column="0">
+                        <property name="name">
+                            <cstring>textLabel1_4</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Border:</string>
+                        </property>
+                    </widget>
+                    <widget class="QComboBox" row="0" column="1">
+                        <property name="name">
+                            <cstring>toolbarBorders</cstring>
+                        </property>
+                    </widget>
+                    <widget class="QComboBox" row="0" column="3">
+                        <property name="name">
+                            <cstring>handles</cstring>
+                        </property>
+                    </widget>
+                    <spacer row="0" column="4">
+                        <property name="name">
+                            <cstring>spacer4</cstring>
+                        </property>
+                        <property name="orientation">
+                            <enum>Horizontal</enum>
+                        </property>
+                        <property name="sizeType">
+                            <enum>MinimumExpanding</enum>
+                        </property>
+                        <property name="sizeHint">
+                            <size>
+                                <width>121</width>
+                                <height>20</height>
+                            </size>
+                        </property>
+                    </spacer>
+                    <spacer row="3" column="2">
+                        <property name="name">
+                            <cstring>spacer5</cstring>
+                        </property>
+                        <property name="orientation">
+                            <enum>Vertical</enum>
+                        </property>
+                        <property name="sizeType">
+                            <enum>Expanding</enum>
+                        </property>
+                        <property name="sizeHint">
+                            <size>
+                                <width>20</width>
+                                <height>19</height>
+                            </size>
+                        </property>
+                    </spacer>
+                    <widget class="QGroupBox" row="2" column="0" rowspan="1" colspan="5">
+                        <property name="name">
+                            <cstring>groupBox2</cstring>
+                        </property>
+                        <property name="title">
+                            <string>Toolbars</string>
+                        </property>
+                        <property name="flat">
+                            <bool>false</bool>
+                        </property>
+                        <grid>
+                            <property name="name">
+                                <cstring>unnamed</cstring>
+                            </property>
+                            <widget class="QLabel" row="0" column="0">
+                                <property name="name">
+                                    <cstring>textLabel1_4_2_2</cstring>
+                                </property>
+                                <property name="text">
+                                    <string>Appearance:</string>
+                                </property>
+                            </widget>
+                            <widget class="QComboBox" row="0" column="1">
+                                <property name="name">
+                                    <cstring>toolbarAppearance</cstring>
+                                </property>
+                            </widget>
+                            <widget class="QLabel" row="0" column="2">
+                                <property name="name">
+                                    <cstring>textLabel2_2</cstring>
+                                </property>
+                                <property name="text">
+                                    <string>Separators:</string>
+                                </property>
+                            </widget>
+                            <widget class="QComboBox" row="0" column="3">
+                                <property name="name">
+                                    <cstring>toolbarSeparators</cstring>
+                                </property>
+                            </widget>
+                            <spacer row="0" column="4">
+                                <property name="name">
+                                    <cstring>spacer4_2</cstring>
+                                </property>
+                                <property name="orientation">
+                                    <enum>Horizontal</enum>
+                                </property>
+                                <property name="sizeType">
+                                    <enum>MinimumExpanding</enum>
+                                </property>
+                                <property name="sizeHint">
+                                    <size>
+                                        <width>20</width>
+                                        <height>20</height>
+                                    </size>
+                                </property>
+                            </spacer>
+                        </grid>
+                    </widget>
+                    <widget class="QGroupBox" row="1" column="0" rowspan="1" colspan="5">
+                        <property name="name">
+                            <cstring>groupBox2_2</cstring>
+                        </property>
+                        <property name="title">
+                            <string>Menus</string>
+                        </property>
+                        <property name="flat">
+                            <bool>false</bool>
+                        </property>
+                        <grid>
+                            <property name="name">
+                                <cstring>unnamed</cstring>
+                            </property>
+                            <widget class="QCheckBox" row="2" column="0" rowspan="1" colspan="8">
+                                <property name="name">
+                                    <cstring>shadeMenubarOnlyWhenActive</cstring>
+                                </property>
+                                <property name="text">
+                                    <string>Apply coloration to active window only</string>
+                                </property>
+                            </widget>
+                            <widget class="QLabel" row="1" column="0">
+                                <property name="name">
+                                    <cstring>textLabel1_4_2_3</cstring>
+                                </property>
+                                <property name="text">
+                                    <string>Coloration:</string>
+                                </property>
+                            </widget>
+                            <widget class="QLabel" row="0" column="0">
+                                <property name="name">
+                                    <cstring>textLabel1_4_2</cstring>
+                                </property>
+                                <property name="text">
+                                    <string>Menubar appearance:</string>
+                                </property>
+                            </widget>
+                            <widget class="QLabel" row="7" column="0">
+                                <property name="name">
+                                    <cstring>textLabel1_4_2_4</cstring>
+                                </property>
+                                <property name="text">
+                                    <string>Menuitem appearance:</string>
+                                </property>
+                            </widget>
+                            <widget class="QCheckBox" row="9" column="0" rowspan="1" colspan="8">
+                                <property name="name">
+                                    <cstring>useHighlightForMenu</cstring>
+                                </property>
+                                <property name="text">
+                                    <string>Use 'highlight' color for active menuitems</string>
+                                </property>
+                            </widget>
+                            <widget class="QLabel" row="14" column="0">
+                                <property name="name">
+                                    <cstring>textLabel1_15</cstring>
+                                </property>
+                                <property name="text">
+                                    <string>Stripe (KDE):</string>
+                                </property>
+                            </widget>
+                            <widget class="QCheckBox" row="15" column="0">
+                                <property name="name">
+                                    <cstring>popupBorder</cstring>
+                                </property>
+                                <property name="text">
+                                    <string>Border popupmenus</string>
+                                </property>
+                            </widget>
+                            <widget class="QLabel" row="11" column="0" rowspan="2" colspan="6">
+                                <property name="name">
+                                    <cstring>textLabel1_16</cstring>
+                                </property>
+                                <property name="text">
+                                    <string>Sub-menu delay:</string>
+                                </property>
+                            </widget>
+                            <widget class="QComboBox" row="14" column="7">
+                                <property name="name">
+                                    <cstring>menuStripeAppearance</cstring>
+                                </property>
+                                <property name="enabled">
+                                    <bool>false</bool>
+                                </property>
+                            </widget>
+                            <widget class="QCheckBox" row="5" column="0" rowspan="1" colspan="8">
+                                <property name="name">
+                                    <cstring>colorMenubarMouseOver</cstring>
+                                </property>
+                                <property name="text">
+                                    <string>Color menubar items on mouse-over</string>
+                                </property>
+                            </widget>
+                            <widget class="QCheckBox" row="3" column="0" rowspan="1" colspan="2">
+                                <property name="name">
+                                    <cstring>customMenuTextColor</cstring>
+                                </property>
+                                <property name="text">
+                                    <string>Custom text colors (active/normal):</string>
+                                </property>
+                            </widget>
+                            <widget class="KColorButton" row="3" column="2" rowspan="1" colspan="2">
+                                <property name="name">
+                                    <cstring>customMenuNormTextColor</cstring>
+                                </property>
+                                <property name="text">
+                                    <string></string>
+                                </property>
+                            </widget>
+                            <widget class="KColorButton" row="3" column="4" rowspan="1" colspan="2">
+                                <property name="name">
+                                    <cstring>customMenuSelTextColor</cstring>
+                                </property>
+                                <property name="text">
+                                    <string></string>
+                                </property>
+                            </widget>
+                            <widget class="QComboBox" row="10" column="3" rowspan="1" colspan="4">
+                                <property name="name">
+                                    <cstring>menuBgndAppearance</cstring>
+                                </property>
+                            </widget>
+                            <widget class="QComboBox" row="10" column="7">
+                                <property name="name">
+                                    <cstring>menuBgndGrad</cstring>
+                                </property>
+                            </widget>
+                            <widget class="KColorButton" row="14" column="5" rowspan="1" colspan="2">
+                                <property name="name">
+                                    <cstring>customMenuStripeColor</cstring>
+                                </property>
+                                <property name="enabled">
+                                    <bool>false</bool>
+                                </property>
+                                <property name="text">
+                                    <string></string>
+                                </property>
+                            </widget>
+                            <widget class="QCheckBox" row="13" column="0" rowspan="1" colspan="8">
+                                <property name="name">
+                                    <cstring>thinnerMenuItems</cstring>
+                                </property>
+                                <property name="text">
+                                    <string>Thinner menu items</string>
+                                </property>
+                            </widget>
+                            <widget class="QLabel" row="10" column="0">
+                                <property name="name">
+                                    <cstring>textLabel1_7</cstring>
+                                </property>
+                                <property name="text">
+                                    <string>Popup-menu background:</string>
+                                </property>
+                            </widget>
+                            <widget class="QComboBox" row="14" column="1" rowspan="1" colspan="4">
+                                <property name="name">
+                                    <cstring>menuStripe</cstring>
+                                </property>
+                            </widget>
+                            <widget class="KIntNumInput" row="10" column="1" rowspan="1" colspan="2">
+                                <property name="name">
+                                    <cstring>lighterPopupMenuBgnd</cstring>
+                                </property>
+                                <property name="suffix">
+                                    <string>%</string>
+                                </property>
+                            </widget>
+                            <widget class="KIntNumInput" row="12" column="1" rowspan="1" colspan="2">
+                                <property name="name">
+                                    <cstring>menuDelay</cstring>
+                                </property>
+                            </widget>
+                            <widget class="QComboBox" row="7" column="1" rowspan="1" colspan="5">
+                                <property name="name">
+                                    <cstring>menuitemAppearance</cstring>
+                                </property>
+                            </widget>
+                            <widget class="QComboBox" row="1" column="1" rowspan="1" colspan="5">
+                                <property name="name">
+                                    <cstring>shadeMenubars</cstring>
+                                </property>
+                                <property name="sizePolicy">
+                                    <sizepolicy>
+                                        <hsizetype>3</hsizetype>
+                                        <vsizetype>0</vsizetype>
+                                        <horstretch>0</horstretch>
+                                        <verstretch>0</verstretch>
+                                    </sizepolicy>
+                                </property>
+                            </widget>
+                            <widget class="QComboBox" row="0" column="1" rowspan="1" colspan="5">
+                                <property name="name">
+                                    <cstring>menubarAppearance</cstring>
+                                </property>
+                            </widget>
+                            <widget class="QCheckBox" row="8" column="0">
+                                <property name="name">
+                                    <cstring>borderMenuitems</cstring>
+                                </property>
+                                <property name="text">
+                                    <string>Border menuitems</string>
+                                </property>
+                            </widget>
+                            <widget class="QCheckBox" row="8" column="1" rowspan="1" colspan="2">
+                                <property name="name">
+                                    <cstring>menuIcons</cstring>
+                                </property>
+                                <property name="text">
+                                    <string>Draw icons</string>
+                                </property>
+                            </widget>
+                            <widget class="QCheckBox" row="6" column="0" rowspan="1" colspan="8">
+                                <property name="name">
+                                    <cstring>roundMbTopOnly</cstring>
+                                </property>
+                                <property name="text">
+                                    <string>Round selected menubar items on top only</string>
+                                </property>
+                            </widget>
+                            <widget class="KColorButton" row="1" column="6">
+                                <property name="name">
+                                    <cstring>customMenubarsColor</cstring>
+                                </property>
+                                <property name="text">
+                                    <string></string>
+                                </property>
+                            </widget>
+                            <widget class="QCheckBox" row="4" column="0" rowspan="1" colspan="8">
+                                <property name="name">
+                                    <cstring>menubarMouseOver</cstring>
+                                </property>
+                                <property name="text">
+                                    <string>Enable mouse-over for menubar items</string>
+                                </property>
+                            </widget>
+                        </grid>
+                    </widget>
+                </grid>
+            </widget>
+            <widget class="QWidget">
+                <property name="name">
+                    <cstring>WStackPage</cstring>
+                </property>
+                <attribute name="id">
+                    <number>14</number>
+                </attribute>
+                <grid>
+                    <property name="name">
+                        <cstring>unnamed</cstring>
+                    </property>
+                    <widget class="QLabel" row="1" column="0">
+                        <property name="name">
+                            <cstring>textLabel1_20</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Titlebar appearance:</string>
+                        </property>
+                    </widget>
+                    <widget class="QComboBox" row="1" column="2">
+                        <property name="name">
+                            <cstring>dwtAppearance</cstring>
+                        </property>
+                    </widget>
+                    <spacer row="0" column="3">
+                        <property name="name">
+                            <cstring>spacer28_4</cstring>
+                        </property>
+                        <property name="orientation">
+                            <enum>Horizontal</enum>
+                        </property>
+                        <property name="sizeType">
+                            <enum>Expanding</enum>
+                        </property>
+                        <property name="sizeHint">
+                            <size>
+                                <width>18</width>
+                                <height>3</height>
+                            </size>
+                        </property>
+                    </spacer>
+                    <spacer row="2" column="1">
+                        <property name="name">
+                            <cstring>spacer29</cstring>
+                        </property>
+                        <property name="orientation">
+                            <enum>Vertical</enum>
+                        </property>
+                        <property name="sizeType">
+                            <enum>Expanding</enum>
+                        </property>
+                        <property name="sizeHint">
+                            <size>
+                                <width>6</width>
+                                <height>85</height>
+                            </size>
+                        </property>
+                    </spacer>
+                </grid>
+            </widget>
+            <widget class="QWidget">
+                <property name="name">
+                    <cstring>WStackPage</cstring>
+                </property>
+                <attribute name="id">
+                    <number>15</number>
+                </attribute>
+                <grid>
+                    <property name="name">
+                        <cstring>unnamed</cstring>
+                    </property>
+                    <widget class="QCheckBox" row="2" column="0" rowspan="1" colspan="3">
+                        <property name="name">
+                            <cstring>fixParentlessDialogs</cstring>
+                        </property>
+                        <property name="text">
+                            <string>'Fix' parentless dialogs</string>
+                        </property>
+                        <property name="whatsThis" stdset="0">
+                            <string>&lt;h2&gt;&lt;font color="#ff0000"&gt;Warning: Experimental!&lt;/font&gt;&lt;/h1&gt;&lt;p&gt;&lt;p&gt;Some applications - such as Kate, Kaffeine, and GIMP - produce dialogs that have no 'parent'. This causes the dialog to recieve an entry in the taskbar, and allows the dialog to be minimised independantly of the main application window.&lt;/p&gt;
+
+&lt;p&gt;If you enable this option, QtCurve will try to 'fix' this by assigning the dialogs a parent.&lt;/p&gt;
+
+&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This may brake some applications, as it wiill alter the behaviour of dialogs in a way the application has not intended. Therefore, please use with care.&lt;/p&gt;</string>
+                        </property>
+                    </widget>
+                    <widget class="QCheckBox" row="1" column="0" rowspan="1" colspan="3">
+                        <property name="name">
+                            <cstring>mapKdeIcons</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Map KDE icons (Gtk2)</string>
+                        </property>
+                    </widget>
+                    <widget class="QCheckBox" row="0" column="0" rowspan="1" colspan="3">
                         <property name="name">
-                            <cstring>highlightTab</cstring>
+                            <cstring>gtkButtonOrder</cstring>
                         </property>
                         <property name="text">
-                            <string>Highlight selected</string>
-                        </property>
-                        <property name="whatsThis" stdset="0">
-                            <string>This will cause a coloured stripe to be drawn over the current tab.</string>
+                            <string>Gtk button order</string>
                         </property>
                     </widget>
-                    <widget class="QCheckBox" row="8" column="4" rowspan="1" colspan="2">
+                    <spacer row="5" column="2">
                         <property name="name">
-                            <cstring>colorSelTab</cstring>
+                            <cstring>spacer7</cstring>
                         </property>
-                        <property name="text">
-                            <string>Color selected</string>
+                        <property name="orientation">
+                            <enum>Vertical</enum>
                         </property>
-                    </widget>
-                    <widget class="QComboBox" row="3" column="2" rowspan="1" colspan="3">
+                        <property name="sizeType">
+                            <enum>Expanding</enum>
+                        </property>
+                        <property name="sizeHint">
+                            <size>
+                                <width>20</width>
+                                <height>381</height>
+                            </size>
+                        </property>
+                    </spacer>
+                    <widget class="QLabel" row="4" column="0">
                         <property name="name">
-                            <cstring>sliderThumbs</cstring>
+                            <cstring>textLabel1_2</cstring>
                         </property>
-                        <property name="sizePolicy">
-                            <sizepolicy>
-                                <hsizetype>3</hsizetype>
-                                <vsizetype>0</vsizetype>
-                                <horstretch>0</horstretch>
-                                <verstretch>0</verstretch>
-                            </sizepolicy>
+                        <property name="text">
+                            <string>Character to use for password entries:</string>
                         </property>
                     </widget>
-                    <widget class="QComboBox" row="5" column="2" rowspan="1" colspan="3">
+                    <widget class="QPushButton" row="4" column="1">
                         <property name="name">
-                            <cstring>defBtnIndicator</cstring>
+                            <cstring>passwordChar</cstring>
                         </property>
                         <property name="sizePolicy">
                             <sizepolicy>
-                                <hsizetype>3</hsizetype>
+                                <hsizetype>4</hsizetype>
                                 <vsizetype>0</vsizetype>
                                 <horstretch>0</horstretch>
                                 <verstretch>0</verstretch>
                             </sizepolicy>
                         </property>
-                    </widget>
-                    <widget class="QCheckBox" row="2" column="6">
-                        <property name="name">
-                            <cstring>fillSlider</cstring>
-                        </property>
                         <property name="text">
-                            <string>Fill used</string>
-                        </property>
-                    </widget>
-                    <widget class="QComboBox" row="2" column="5">
-                        <property name="name">
-                            <cstring>sliderStyle</cstring>
-                        </property>
-                    </widget>
-                    <widget class="QComboBox" row="0" column="4">
-                        <property name="name">
-                            <cstring>buttonEffect</cstring>
+                            <string></string>
                         </property>
                     </widget>
-                    <widget class="KIntNumInput" row="6" column="3" rowspan="1" colspan="2">
+                    <widget class="QCheckBox" row="3" column="0">
                         <property name="name">
-                            <cstring>highlightFactor</cstring>
+                            <cstring>stdBtnSizes</cstring>
                         </property>
-                        <property name="suffix">
-                            <string>%</string>
+                        <property name="text">
+                            <string>Don't make 'auto-default' buttons larger (KDE4)</string>
                         </property>
                     </widget>
                 </grid>
             </widget>
             <widget class="QWidget">
                 <property name="name">
-                    <cstring>tab</cstring>
+                    <cstring>WStackPage</cstring>
                 </property>
-                <attribute name="title">
-                    <string>Menus &amp;&amp; Toolbars</string>
+                <attribute name="id">
+                    <number>16</number>
                 </attribute>
                 <grid>
                     <property name="name">
                         <cstring>unnamed</cstring>
                     </property>
-                    <widget class="QLabel" row="0" column="0">
+                    <widget class="QComboBox" row="0" column="0">
                         <property name="name">
-                            <cstring>textLabel1_4</cstring>
-                        </property>
-                        <property name="text">
-                            <string>Border:</string>
+                            <cstring>gradCombo</cstring>
                         </property>
                     </widget>
-                    <spacer row="3" column="2">
-                        <property name="name">
-                            <cstring>spacer5</cstring>
-                        </property>
-                        <property name="orientation">
-                            <enum>Vertical</enum>
-                        </property>
-                        <property name="sizeType">
-                            <enum>Expanding</enum>
-                        </property>
-                        <property name="sizeHint">
-                            <size>
-                                <width>20</width>
-                                <height>54</height>
-                            </size>
-                        </property>
-                    </spacer>
-                    <widget class="QGroupBox" row="1" column="0" rowspan="1" colspan="5">
+                    <widget class="QGroupBox" row="1" column="0">
                         <property name="name">
-                            <cstring>groupBox2_2</cstring>
+                            <cstring>groupBox3</cstring>
                         </property>
                         <property name="title">
-                            <string>Menus</string>
-                        </property>
-                        <property name="flat">
-                            <bool>true</bool>
+                            <string>Settings</string>
                         </property>
                         <grid>
                             <property name="name">
                                 <cstring>unnamed</cstring>
                             </property>
-                            <widget class="QCheckBox" row="6" column="0" rowspan="1" colspan="8">
-                                <property name="name">
-                                    <cstring>lighterPopupMenuBgnd</cstring>
-                                </property>
-                                <property name="text">
-                                    <string>Lighter popup-menu background</string>
-                                </property>
-                            </widget>
-                            <widget class="QCheckBox" row="3" column="0" rowspan="1" colspan="8">
-                                <property name="name">
-                                    <cstring>menubarMouseOver</cstring>
-                                </property>
-                                <property name="text">
-                                    <string>Enable mouse-over for menubar items</string>
-                                </property>
-                            </widget>
-                            <widget class="QCheckBox" row="4" column="0" rowspan="1" colspan="8">
+                            <widget class="QComboBox" row="2" column="0">
                                 <property name="name">
-                                    <cstring>roundMbTopOnly</cstring>
-                                </property>
-                                <property name="text">
-                                    <string>Round selected menubar items on top only</string>
+                                    <cstring>gradBorder</cstring>
                                 </property>
                             </widget>
-                            <widget class="QLabel" row="1" column="0">
+                            <widget class="QListView" row="0" column="0" rowspan="2" colspan="1">
+                                <column>
+                                    <property name="text">
+                                        <string>Position (%)</string>
+                                    </property>
+                                    <property name="clickable">
+                                        <bool>true</bool>
+                                    </property>
+                                    <property name="resizable">
+                                        <bool>true</bool>
+                                    </property>
+                                </column>
+                                <column>
+                                    <property name="text">
+                                        <string>Value (%)</string>
+                                    </property>
+                                    <property name="clickable">
+                                        <bool>true</bool>
+                                    </property>
+                                    <property name="resizable">
+                                        <bool>true</bool>
+                                    </property>
+                                </column>
                                 <property name="name">
-                                    <cstring>textLabel1_4_2_3</cstring>
+                                    <cstring>gradStops</cstring>
                                 </property>
-                                <property name="text">
-                                    <string>Coloration:</string>
+                                <property name="sizePolicy">
+                                    <sizepolicy>
+                                        <hsizetype>1</hsizetype>
+                                        <vsizetype>7</vsizetype>
+                                        <horstretch>0</horstretch>
+                                        <verstretch>0</verstretch>
+                                    </sizepolicy>
                                 </property>
                             </widget>
-                            <widget class="QLabel" row="0" column="0">
+                            <widget class="QGroupBox" row="1" column="1">
                                 <property name="name">
-                                    <cstring>textLabel1_4_2</cstring>
+                                    <cstring>groupBox6</cstring>
                                 </property>
-                                <property name="text">
-                                    <string>Menubar appearance:</string>
+                                <property name="title">
+                                    <string>Gradient Stop</string>
                                 </property>
+                                <grid>
+                                    <property name="name">
+                                        <cstring>unnamed</cstring>
+                                    </property>
+                                    <widget class="KPushButton" row="2" column="2">
+                                        <property name="name">
+                                            <cstring>addButton</cstring>
+                                        </property>
+                                        <property name="sizePolicy">
+                                            <sizepolicy>
+                                                <hsizetype>0</hsizetype>
+                                                <vsizetype>1</vsizetype>
+                                                <horstretch>0</horstretch>
+                                                <verstretch>0</verstretch>
+                                            </sizepolicy>
+                                        </property>
+                                        <property name="text">
+                                            <string></string>
+                                        </property>
+                                    </widget>
+                                    <widget class="KPushButton" row="2" column="3">
+                                        <property name="name">
+                                            <cstring>updateButton</cstring>
+                                        </property>
+                                        <property name="sizePolicy">
+                                            <sizepolicy>
+                                                <hsizetype>0</hsizetype>
+                                                <vsizetype>1</vsizetype>
+                                                <horstretch>0</horstretch>
+                                                <verstretch>0</verstretch>
+                                            </sizepolicy>
+                                        </property>
+                                        <property name="text">
+                                            <string></string>
+                                        </property>
+                                    </widget>
+                                    <widget class="KPushButton" row="2" column="4">
+                                        <property name="name">
+                                            <cstring>removeButton</cstring>
+                                        </property>
+                                        <property name="sizePolicy">
+                                            <sizepolicy>
+                                                <hsizetype>0</hsizetype>
+                                                <vsizetype>1</vsizetype>
+                                                <horstretch>0</horstretch>
+                                                <verstretch>0</verstretch>
+                                            </sizepolicy>
+                                        </property>
+                                        <property name="text">
+                                            <string></string>
+                                        </property>
+                                    </widget>
+                                    <widget class="QLabel" row="1" column="0">
+                                        <property name="name">
+                                            <cstring>textLabel2_3</cstring>
+                                        </property>
+                                        <property name="sizePolicy">
+                                            <sizepolicy>
+                                                <hsizetype>1</hsizetype>
+                                                <vsizetype>5</vsizetype>
+                                                <horstretch>0</horstretch>
+                                                <verstretch>0</verstretch>
+                                            </sizepolicy>
+                                        </property>
+                                        <property name="text">
+                                            <string>Value:</string>
+                                        </property>
+                                    </widget>
+                                    <widget class="QLabel" row="0" column="0">
+                                        <property name="name">
+                                            <cstring>textLabel1_11</cstring>
+                                        </property>
+                                        <property name="sizePolicy">
+                                            <sizepolicy>
+                                                <hsizetype>1</hsizetype>
+                                                <vsizetype>5</vsizetype>
+                                                <horstretch>0</horstretch>
+                                                <verstretch>0</verstretch>
+                                            </sizepolicy>
+                                        </property>
+                                        <property name="text">
+                                            <string>Position:</string>
+                                        </property>
+                                    </widget>
+                                    <widget class="KIntNumInput" row="0" column="1" rowspan="1" colspan="4">
+                                        <property name="name">
+                                            <cstring>stopPosition</cstring>
+                                        </property>
+                                        <property name="maxValue">
+                                            <number>100</number>
+                                        </property>
+                                        <property name="suffix">
+                                            <string>%</string>
+                                        </property>
+                                    </widget>
+                                    <widget class="KIntNumInput" row="1" column="1" rowspan="1" colspan="4">
+                                        <property name="name">
+                                            <cstring>stopValue</cstring>
+                                        </property>
+                                        <property name="maxValue">
+                                            <number>200</number>
+                                        </property>
+                                        <property name="suffix">
+                                            <string>%</string>
+                                        </property>
+                                    </widget>
+                                    <spacer row="2" column="0" rowspan="1" colspan="2">
+                                        <property name="name">
+                                            <cstring>spacer12</cstring>
+                                        </property>
+                                        <property name="orientation">
+                                            <enum>Horizontal</enum>
+                                        </property>
+                                        <property name="sizeType">
+                                            <enum>Expanding</enum>
+                                        </property>
+                                        <property name="sizeHint">
+                                            <size>
+                                                <width>160</width>
+                                                <height>8</height>
+                                            </size>
+                                        </property>
+                                    </spacer>
+                                </grid>
                             </widget>
-                            <widget class="QLabel" row="5" column="0">
+                            <widget class="QLabel" row="0" column="1">
                                 <property name="name">
-                                    <cstring>textLabel1_4_2_4</cstring>
+                                    <cstring>textLabel1_9</cstring>
                                 </property>
-                                <property name="text">
-                                    <string>Menuitem appearance:</string>
-                                </property>
-                            </widget>
-                            <widget class="QCheckBox" row="7" column="0" rowspan="1" colspan="7">
-                                <property name="name">
-                                    <cstring>thinnerMenuItems</cstring>
+                                <property name="sizePolicy">
+                                    <sizepolicy>
+                                        <hsizetype>1</hsizetype>
+                                        <vsizetype>3</vsizetype>
+                                        <horstretch>0</horstretch>
+                                        <verstretch>0</verstretch>
+                                    </sizepolicy>
                                 </property>
                                 <property name="text">
-                                    <string>Thinner menu items</string>
-                                </property>
-                            </widget>
-                            <widget class="QCheckBox" row="1" column="7">
-                                <property name="name">
-                                    <cstring>shadeMenubarOnlyWhenActive</cstring>
+                                    <string>&lt;i&gt;&lt;b&gt;NOTE: &lt;/b&gt;&lt;br&gt;
+
+&lt;u&gt;Position&lt;/u&gt; has a range of 0% to 100% - 0% being top/left, and 100% being bottom/right.&lt;br&gt;
+
+&lt;u&gt;Value&lt;/u&gt; has a range of 0% to 200%. A value of 120% implies lightening by 20%, and a value of 80% implies darkening by 20%&lt;/i&gt;</string>
                                 </property>
-                                <property name="text">
-                                    <string>Active window only</string>
+                                <property name="alignment">
+                                    <set>WordBreak|AlignTop</set>
                                 </property>
                             </widget>
-                            <widget class="QCheckBox" row="2" column="0" rowspan="1" colspan="2">
+                        </grid>
+                    </widget>
+                    <widget class="QGroupBox" row="2" column="0">
+                        <property name="name">
+                            <cstring>groupBox4</cstring>
+                        </property>
+                        <property name="title">
+                            <string>Preview</string>
+                        </property>
+                        <hbox>
+                            <property name="name">
+                                <cstring>unnamed</cstring>
+                            </property>
+                            <widget class="QFrame">
                                 <property name="name">
-                                    <cstring>customMenuTextColor</cstring>
+                                    <cstring>previewWidgetContainer</cstring>
                                 </property>
-                                <property name="text">
-                                    <string>Custom text colors (normal/selected):</string>
+                                <property name="frameShape">
+                                    <enum>NoFrame</enum>
                                 </property>
-                            </widget>
-                            <widget class="QComboBox" row="5" column="1" rowspan="1" colspan="5">
-                                <property name="name">
-                                    <cstring>menuitemAppearance</cstring>
+                                <property name="frameShadow">
+                                    <enum>Raised</enum>
                                 </property>
                             </widget>
-                            <widget class="QComboBox" row="1" column="1" rowspan="1" colspan="5">
+                            <widget class="KColorButton">
                                 <property name="name">
-                                    <cstring>shadeMenubars</cstring>
+                                    <cstring>previewColor</cstring>
                                 </property>
                                 <property name="sizePolicy">
                                     <sizepolicy>
-                                        <hsizetype>3</hsizetype>
+                                        <hsizetype>0</hsizetype>
                                         <vsizetype>0</vsizetype>
                                         <horstretch>0</horstretch>
                                         <verstretch>0</verstretch>
                                     </sizepolicy>
                                 </property>
-                            </widget>
-                            <widget class="QComboBox" row="0" column="1" rowspan="1" colspan="5">
-                                <property name="name">
-                                    <cstring>menubarAppearance</cstring>
-                                </property>
-                            </widget>
-                            <widget class="KColorButton" row="1" column="6">
-                                <property name="name">
-                                    <cstring>customMenubarsColor</cstring>
-                                </property>
-                                <property name="text">
-                                    <string></string>
-                                </property>
-                            </widget>
-                            <widget class="QCheckBox" row="5" column="6">
-                                <property name="name">
-                                    <cstring>borderMenuitems</cstring>
-                                </property>
-                                <property name="text">
-                                    <string>Border</string>
-                                </property>
-                            </widget>
-                            <widget class="KColorButton" row="2" column="2">
-                                <property name="name">
-                                    <cstring>customMenuNormTextColor</cstring>
-                                </property>
-                                <property name="text">
-                                    <string></string>
-                                </property>
-                            </widget>
-                            <widget class="KColorButton" row="2" column="4">
-                                <property name="name">
-                                    <cstring>customMenuSelTextColor</cstring>
-                                </property>
                                 <property name="text">
                                     <string></string>
                                 </property>
                             </widget>
-                        </grid>
-                    </widget>
-                    <widget class="QLabel" row="0" column="2">
-                        <property name="name">
-                            <cstring>textLabel2</cstring>
-                        </property>
-                        <property name="text">
-                            <string>Handles:</string>
-                        </property>
-                    </widget>
-                    <spacer row="0" column="4">
-                        <property name="name">
-                            <cstring>spacer4</cstring>
-                        </property>
-                        <property name="orientation">
-                            <enum>Horizontal</enum>
-                        </property>
-                        <property name="sizeType">
-                            <enum>MinimumExpanding</enum>
-                        </property>
-                        <property name="sizeHint">
-                            <size>
-                                <width>20</width>
-                                <height>20</height>
-                            </size>
-                        </property>
-                    </spacer>
-                    <widget class="QComboBox" row="0" column="3">
-                        <property name="name">
-                            <cstring>handles</cstring>
-                        </property>
+                        </hbox>
                     </widget>
+                </grid>
+            </widget>
+            <widget class="QWidget">
+                <property name="name">
+                    <cstring>WStackPage</cstring>
+                </property>
+                <attribute name="id">
+                    <number>17</number>
+                </attribute>
+                <grid>
+                    <property name="name">
+                        <cstring>unnamed</cstring>
+                    </property>
                     <widget class="QComboBox" row="0" column="1">
                         <property name="name">
-                            <cstring>toolbarBorders</cstring>
+                            <cstring>shading</cstring>
+                        </property>
+                        <property name="sizePolicy">
+                            <sizepolicy>
+                                <hsizetype>3</hsizetype>
+                                <vsizetype>0</vsizetype>
+                                <horstretch>0</horstretch>
+                                <verstretch>0</verstretch>
+                            </sizepolicy>
                         </property>
                     </widget>
-                    <widget class="QGroupBox" row="2" column="0" rowspan="1" colspan="5">
+                    <widget class="QGroupBox" row="1" column="0" rowspan="1" colspan="2">
                         <property name="name">
-                            <cstring>groupBox2</cstring>
+                            <cstring>customShading</cstring>
                         </property>
                         <property name="title">
-                            <string>Toolbars</string>
+                            <string>Use Custom Values</string>
                         </property>
-                        <property name="flat">
+                        <property name="checkable">
                             <bool>true</bool>
                         </property>
                         <grid>
                             <property name="name">
                                 <cstring>unnamed</cstring>
                             </property>
-                            <widget class="QLabel" row="0" column="0">
+                            <spacer row="6" column="0">
+                                <property name="name">
+                                    <cstring>spacer10</cstring>
+                                </property>
+                                <property name="orientation">
+                                    <enum>Vertical</enum>
+                                </property>
+                                <property name="sizeType">
+                                    <enum>Expanding</enum>
+                                </property>
+                                <property name="sizeHint">
+                                    <size>
+                                        <width>4</width>
+                                        <height>15</height>
+                                    </size>
+                                </property>
+                            </spacer>
+                            <widget class="KDoubleNumInput" row="2" column="0">
+                                <property name="name">
+                                    <cstring>shade2</cstring>
+                                </property>
+                                <property name="sizePolicy">
+                                    <sizepolicy>
+                                        <hsizetype>1</hsizetype>
+                                        <vsizetype>0</vsizetype>
+                                        <horstretch>0</horstretch>
+                                        <verstretch>0</verstretch>
+                                    </sizepolicy>
+                                </property>
+                            </widget>
+                            <widget class="KDoubleNumInput" row="3" column="0">
                                 <property name="name">
-                                    <cstring>textLabel1_4_2_2</cstring>
+                                    <cstring>shade3</cstring>
                                 </property>
-                                <property name="text">
-                                    <string>Appearance:</string>
+                                <property name="sizePolicy">
+                                    <sizepolicy>
+                                        <hsizetype>1</hsizetype>
+                                        <vsizetype>0</vsizetype>
+                                        <horstretch>0</horstretch>
+                                        <verstretch>0</verstretch>
+                                    </sizepolicy>
                                 </property>
                             </widget>
-                            <widget class="QComboBox" row="0" column="1">
+                            <widget class="KDoubleNumInput" row="1" column="0">
                                 <property name="name">
-                                    <cstring>toolbarAppearance</cstring>
+                                    <cstring>shade1</cstring>
+                                </property>
+                                <property name="sizePolicy">
+                                    <sizepolicy>
+                                        <hsizetype>1</hsizetype>
+                                        <vsizetype>0</vsizetype>
+                                        <horstretch>0</horstretch>
+                                        <verstretch>0</verstretch>
+                                    </sizepolicy>
                                 </property>
                             </widget>
-                            <widget class="QLabel" row="0" column="2">
+                            <widget class="KDoubleNumInput" row="4" column="0">
                                 <property name="name">
-                                    <cstring>textLabel2_2</cstring>
+                                    <cstring>shade4</cstring>
                                 </property>
-                                <property name="text">
-                                    <string>Separators:</string>
+                                <property name="sizePolicy">
+                                    <sizepolicy>
+                                        <hsizetype>1</hsizetype>
+                                        <vsizetype>0</vsizetype>
+                                        <horstretch>0</horstretch>
+                                        <verstretch>0</verstretch>
+                                    </sizepolicy>
                                 </property>
                             </widget>
-                            <widget class="QComboBox" row="0" column="3">
+                            <widget class="KDoubleNumInput" row="5" column="0">
                                 <property name="name">
-                                    <cstring>toolbarSeparators</cstring>
+                                    <cstring>shade5</cstring>
+                                </property>
+                                <property name="sizePolicy">
+                                    <sizepolicy>
+                                        <hsizetype>1</hsizetype>
+                                        <vsizetype>0</vsizetype>
+                                        <horstretch>0</horstretch>
+                                        <verstretch>0</verstretch>
+                                    </sizepolicy>
                                 </property>
                             </widget>
-                            <spacer row="0" column="4">
+                            <widget class="KDoubleNumInput" row="0" column="0">
                                 <property name="name">
-                                    <cstring>spacer4_2</cstring>
+                                    <cstring>shade0</cstring>
                                 </property>
-                                <property name="orientation">
-                                    <enum>Horizontal</enum>
+                                <property name="sizePolicy">
+                                    <sizepolicy>
+                                        <hsizetype>1</hsizetype>
+                                        <vsizetype>0</vsizetype>
+                                        <horstretch>0</horstretch>
+                                        <verstretch>0</verstretch>
+                                    </sizepolicy>
                                 </property>
-                                <property name="sizeType">
-                                    <enum>MinimumExpanding</enum>
+                            </widget>
+                            <widget class="QLabel" row="0" column="1" rowspan="7" colspan="1">
+                                <property name="name">
+                                    <cstring>textLabel1_10</cstring>
                                 </property>
-                                <property name="sizeHint">
-                                    <size>
-                                        <width>20</width>
-                                        <height>20</height>
-                                    </size>
+                                <property name="sizePolicy">
+                                    <sizepolicy>
+                                        <hsizetype>3</hsizetype>
+                                        <vsizetype>3</vsizetype>
+                                        <horstretch>0</horstretch>
+                                        <verstretch>0</verstretch>
+                                    </sizepolicy>
                                 </property>
-                            </spacer>
-                        </grid>
-                    </widget>
-                </grid>
-            </widget>
-            <widget class="QWidget">
-                <property name="name">
-                    <cstring>TabPage</cstring>
-                </property>
-                <attribute name="title">
-                    <string>Advanced</string>
-                </attribute>
-                <grid>
-                    <property name="name">
-                        <cstring>unnamed</cstring>
-                    </property>
-                    <widget class="QCheckBox" row="0" column="0" rowspan="1" colspan="3">
-                        <property name="name">
-                            <cstring>gtkComboMenus</cstring>
-                        </property>
-                        <property name="text">
-                            <string>Gtk style comboboxes (KDE4 only)</string>
-                        </property>
-                    </widget>
-                    <widget class="QCheckBox" row="1" column="0" rowspan="1" colspan="3">
-                        <property name="name">
-                            <cstring>gtkScrollViews</cstring>
-                        </property>
-                        <property name="text">
-                            <string>Gtk style scrollviews (KDE3 and KDE4 only)</string>
-                        </property>
-                    </widget>
-                    <widget class="QCheckBox" row="2" column="0" rowspan="1" colspan="3">
-                        <property name="name">
-                            <cstring>gtkButtonOrder</cstring>
-                        </property>
-                        <property name="text">
-                            <string>Gtk button order</string>
-                        </property>
-                    </widget>
-                    <widget class="QCheckBox" row="3" column="0" rowspan="1" colspan="3">
-                        <property name="name">
-                            <cstring>mapKdeIcons</cstring>
-                        </property>
-                        <property name="text">
-                            <string>Map KDE icons (Gtk2 only)</string>
-                        </property>
-                    </widget>
-                    <widget class="QCheckBox" row="4" column="0" rowspan="1" colspan="3">
-                        <property name="name">
-                            <cstring>fixParentlessDialogs</cstring>
-                        </property>
-                        <property name="text">
-                            <string>'Fix' parentless dialogs</string>
-                        </property>
-                        <property name="whatsThis" stdset="0">
-                            <string>&lt;h2&gt;&lt;font color="#ff0000"&gt;Warning: Experimental!&lt;/font&gt;&lt;/h1&gt;&lt;p&gt;&lt;p&gt;Some applications - such as Kate, Kaffeine, and GIMP - produce dialogs that have no 'parent'. This causes the dialog to recieve an entry in the taskbar, and allows the dialog to be minimised independantly of the main application window.&lt;/p&gt;
-
-&lt;p&gt;If you enable this option, QtCurve will try to 'fix' this by assigning the dialogs a parent.&lt;/p&gt;
-
-&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This may brake some applications, as it wiill alter the behaviour of dialogs in a way the application has not intended. Therefore, please use with care.&lt;/p&gt;</string>
-                        </property>
-                    </widget>
-                    <widget class="QCheckBox" row="5" column="0" rowspan="1" colspan="3">
-                        <property name="name">
-                            <cstring>inactiveHighlight</cstring>
-                        </property>
-                        <property name="text">
-                            <string>Use blended background/highlight colour for highlight of inactive elements</string>
-                        </property>
-                        <property name="whatsThis" stdset="0">
-                            <string>&lt;h2&gt;&lt;font color="#ff0000"&gt;Warning: Experimental!&lt;/font&gt;&lt;/h1&gt;&lt;p&gt;&lt;p&gt;Some applications - such as Kate, Kaffeine, and GIMP - produce dialogs that have no 'parent'. This causes the dialog to recieve an entry in the taskbar, and allows the dialog to be minimised independantly of the main application window.&lt;/p&gt;
-
-&lt;p&gt;If you enable this option, QtCurve will try to 'fix' this by assigning the dialogs a parent.&lt;/p&gt;
+                                <property name="text">
+                                    <string>&lt;i&gt;QtCurve uses various hard-coded shading values to draw elements such as button frames, the background for pressed buttons, etc. The following is a brief overview of how each shade is used - use this as a guide only, as shades are used for various things.&lt;br&gt;
 
-&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; This may brake some applications, as it wiill alter the behaviour of dialogs in a way the application has not intended. Therefore, please use with care.&lt;/p&gt;</string>
-                        </property>
-                    </widget>
-                    <widget class="QLabel" row="6" column="0">
-                        <property name="name">
-                            <cstring>textLabel1_2</cstring>
-                        </property>
-                        <property name="text">
-                            <string>Character to use for password entries:</string>
-                        </property>
+1 Is used for the light part of 3d elements - such as the border of tab widgets.&lt;br&gt;
+2 Is used for the lighter shade of striped progressbars.&lt;br&gt;
+3 Is used for the dark part of 3d elements - such as the border of tab widgets.&lt;br&gt;
+4 Is used for the shaded border of checks and radios, toolbar borders (when set to dark), the dark part of sunken/raised slider handles, etc.&lt;br&gt;
+5 Is used for the background of pressed widgets, and the border of toolbars (when not dark).&lt;br&gt;
+6 Is used as the border of most widgets.&lt;/i&gt;</string>
+                                </property>
+                                <property name="alignment">
+                                    <set>WordBreak|AlignTop</set>
+                                </property>
+                            </widget>
+                        </grid>
                     </widget>
-                    <widget class="QPushButton" row="6" column="1">
+                    <widget class="QLabel" row="0" column="0">
                         <property name="name">
-                            <cstring>passwordChar</cstring>
+                            <cstring>textLabel1_5</cstring>
                         </property>
                         <property name="sizePolicy">
                             <sizepolicy>
-                                <hsizetype>4</hsizetype>
+                                <hsizetype>5</hsizetype>
                                 <vsizetype>0</vsizetype>
                                 <horstretch>0</horstretch>
                                 <verstretch>0</verstretch>
                             </sizepolicy>
                         </property>
-                        <property name="text">
-                            <string></string>
-                        </property>
-                    </widget>
-                    <spacer row="6" column="2">
-                        <property name="name">
-                            <cstring>spacer8</cstring>
-                        </property>
-                        <property name="orientation">
-                            <enum>Horizontal</enum>
-                        </property>
-                        <property name="sizeType">
-                            <enum>Expanding</enum>
-                        </property>
-                        <property name="sizeHint">
-                            <size>
-                                <width>133</width>
-                                <height>6</height>
-                            </size>
-                        </property>
-                    </spacer>
-                    <widget class="QLabel" row="7" column="0">
-                        <property name="name">
-                            <cstring>textLabel1_5</cstring>
-                        </property>
                         <property name="text">
                             <string>Shading routine:</string>
                         </property>
                     </widget>
-                    <widget class="QComboBox" row="7" column="1" rowspan="1" colspan="2">
-                        <property name="name">
-                            <cstring>shading</cstring>
-                        </property>
-                    </widget>
-                    <spacer row="8" column="2">
-                        <property name="name">
-                            <cstring>spacer7</cstring>
-                        </property>
-                        <property name="orientation">
-                            <enum>Vertical</enum>
-                        </property>
-                        <property name="sizeType">
-                            <enum>Expanding</enum>
-                        </property>
-                        <property name="sizeHint">
-                            <size>
-                                <width>20</width>
-                                <height>203</height>
-                            </size>
-                        </property>
-                    </spacer>
                 </grid>
             </widget>
         </widget>
-        <spacer row="3" column="0">
-            <property name="name">
-                <cstring>spacer6_2</cstring>
-            </property>
-            <property name="orientation">
-                <enum>Horizontal</enum>
-            </property>
-            <property name="sizeType">
-                <enum>Expanding</enum>
-            </property>
-            <property name="sizeHint">
-                <size>
-                    <width>321</width>
-                    <height>20</height>
-                </size>
-            </property>
-        </spacer>
-        <widget class="KPushButton" row="3" column="1">
-            <property name="name">
-                <cstring>optionBtn</cstring>
-            </property>
-            <property name="text">
-                <string>Options</string>
-            </property>
-        </widget>
     </grid>
 </widget>
+<connections>
+    <connection>
+        <sender>framelessGroupBoxes</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>groupBoxLine</receiver>
+        <slot>setEnabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>flatSbarButtons</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>sbarBgndAppearance</receiver>
+        <slot>setEnabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>fillSlider</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>sliderFill</receiver>
+        <slot>setEnabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>flatSbarButtons</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>thinSbarGroove</receiver>
+        <slot>setEnabled(bool)</slot>
+    </connection>
+</connections>
 <tabstops>
-    <tabstop>optionsTab</tabstop>
+    <tabstop>stackList</tabstop>
     <tabstop>appearance</tabstop>
+    <tabstop>sunkenAppearance</tabstop>
     <tabstop>round</tabstop>
     <tabstop>buttonEffect</tabstop>
+    <tabstop>focus</tabstop>
+    <tabstop>drawStatusBarFrames</tabstop>
+    <tabstop>framelessGroupBoxes</tabstop>
+    <tabstop>groupBoxLine</tabstop>
+    <tabstop>vArrows</tabstop>
+    <tabstop>stdSidebarButtons</tabstop>
+    <tabstop>darkerBorders</tabstop>
+    <tabstop>fadeLines</tabstop>
+    <tabstop>thinnerBtns</tabstop>
+    <tabstop>etchEntry</tabstop>
+    <tabstop>comboSplitter</tabstop>
+    <tabstop>unifyCombo</tabstop>
+    <tabstop>gtkComboMenus</tabstop>
+    <tabstop>doubleGtkComboArrow</tabstop>
+    <tabstop>comboBtn</tabstop>
+    <tabstop>customComboBtnColor</tabstop>
+    <tabstop>unifySpinBtns</tabstop>
+    <tabstop>unifySpin</tabstop>
     <tabstop>splitters</tabstop>
+    <tabstop>splitterHighlight</tabstop>
     <tabstop>sliderAppearance</tabstop>
     <tabstop>shadeSliders</tabstop>
     <tabstop>customSlidersColor</tabstop>
+    <tabstop>colorSliderMouseOver</tabstop>
     <tabstop>sliderStyle</tabstop>
     <tabstop>fillSlider</tabstop>
+    <tabstop>sliderFill</tabstop>
+    <tabstop>grooveAppearance</tabstop>
+    <tabstop>thinSbarGroove</tabstop>
     <tabstop>scrollbarType</tabstop>
+    <tabstop>flatSbarButtons</tabstop>
+    <tabstop>sbarBgndAppearance</tabstop>
     <tabstop>sliderThumbs</tabstop>
     <tabstop>progressAppearance</tabstop>
-    <tabstop>gradientPbGroove</tabstop>
     <tabstop>stripedProgress</tabstop>
     <tabstop>animatedProgress</tabstop>
+    <tabstop>fillProgress</tabstop>
+    <tabstop>progressGrooveAppearance</tabstop>
+    <tabstop>progressGrooveColor</tabstop>
     <tabstop>embolden</tabstop>
     <tabstop>defBtnIndicator</tabstop>
     <tabstop>coloredMouseOver</tabstop>
     <tabstop>highlightFactor</tabstop>
     <tabstop>lvAppearance</tabstop>
+    <tabstop>lvButton</tabstop>
+    <tabstop>sortedLv</tabstop>
+    <tabstop>customSortedLvColor</tabstop>
+    <tabstop>forceAlternateLvCols</tabstop>
+    <tabstop>selectionAppearance</tabstop>
+    <tabstop>squareLvSelection</tabstop>
     <tabstop>lvLines</tabstop>
-    <tabstop>tabAppearance</tabstop>
+    <tabstop>gtkScrollViews</tabstop>
+    <tabstop>highlightScrollViews</tabstop>
+    <tabstop>squareScrollViews</tabstop>
+    <tabstop>activeTabAppearance</tabstop>
     <tabstop>highlightTab</tabstop>
     <tabstop>colorSelTab</tabstop>
+    <tabstop>tabAppearance</tabstop>
+    <tabstop>tabMouseOver</tabstop>
+    <tabstop>roundAllTabs</tabstop>
+    <tabstop>borderTab</tabstop>
+    <tabstop>borderInactiveTab</tabstop>
+    <tabstop>invertBotTab</tabstop>
+    <tabstop>tabBgnd</tabstop>
     <tabstop>shadeCheckRadio</tabstop>
     <tabstop>customCheckRadioColor</tabstop>
     <tabstop>xCheck</tabstop>
-    <tabstop>stdFocus</tabstop>
-    <tabstop>vArrows</tabstop>
-    <tabstop>drawStatusBarFrames</tabstop>
-    <tabstop>stdSidebarButtons</tabstop>
-    <tabstop>framelessGroupBoxes</tabstop>
-    <tabstop>darkerBorders</tabstop>
+    <tabstop>smallRadio</tabstop>
+    <tabstop>crHighlight</tabstop>
+    <tabstop>crButton</tabstop>
+    <tabstop>crColor</tabstop>
+    <tabstop>titlebarAppearance</tabstop>
+    <tabstop>inactiveTitlebarAppearance</tabstop>
+    <tabstop>titlebarButtonAppearance</tabstop>
+    <tabstop>titlebarAlignment</tabstop>
+    <tabstop>colorTitlebarOnly</tabstop>
+    <tabstop>titlebarBorder</tabstop>
     <tabstop>toolbarBorders</tabstop>
     <tabstop>handles</tabstop>
     <tabstop>menubarAppearance</tabstop>
@@ -965,32 +2684,93 @@
     <tabstop>customMenuNormTextColor</tabstop>
     <tabstop>customMenuSelTextColor</tabstop>
     <tabstop>menubarMouseOver</tabstop>
+    <tabstop>colorMenubarMouseOver</tabstop>
     <tabstop>roundMbTopOnly</tabstop>
     <tabstop>menuitemAppearance</tabstop>
     <tabstop>borderMenuitems</tabstop>
+    <tabstop>menuIcons</tabstop>
+    <tabstop>useHighlightForMenu</tabstop>
     <tabstop>lighterPopupMenuBgnd</tabstop>
+    <tabstop>menuBgndAppearance</tabstop>
+    <tabstop>menuBgndGrad</tabstop>
+    <tabstop>menuDelay</tabstop>
     <tabstop>thinnerMenuItems</tabstop>
+    <tabstop>menuStripe</tabstop>
+    <tabstop>customMenuStripeColor</tabstop>
+    <tabstop>menuStripeAppearance</tabstop>
+    <tabstop>popupBorder</tabstop>
     <tabstop>toolbarAppearance</tabstop>
     <tabstop>toolbarSeparators</tabstop>
-    <tabstop>gtkComboMenus</tabstop>
-    <tabstop>gtkScrollViews</tabstop>
+    <tabstop>dwtAppearance</tabstop>
     <tabstop>gtkButtonOrder</tabstop>
     <tabstop>mapKdeIcons</tabstop>
     <tabstop>fixParentlessDialogs</tabstop>
-    <tabstop>inactiveHighlight</tabstop>
+    <tabstop>stdBtnSizes</tabstop>
     <tabstop>passwordChar</tabstop>
+    <tabstop>gradCombo</tabstop>
+    <tabstop>gradStops</tabstop>
+    <tabstop>gradBorder</tabstop>
+    <tabstop>stopPosition</tabstop>
+    <tabstop>stopValue</tabstop>
+    <tabstop>addButton</tabstop>
+    <tabstop>updateButton</tabstop>
+    <tabstop>removeButton</tabstop>
+    <tabstop>previewColor</tabstop>
     <tabstop>shading</tabstop>
+    <tabstop>shade0</tabstop>
+    <tabstop>shade1</tabstop>
+    <tabstop>shade2</tabstop>
+    <tabstop>shade3</tabstop>
+    <tabstop>shade4</tabstop>
+    <tabstop>shade5</tabstop>
     <tabstop>optionBtn</tabstop>
 </tabstops>
 <layoutdefaults spacing="6" margin="11"/>
 <includehints>
+    <includehint>kpushbutton.h</includehint>
+    <includehint>kcolorbutton.h</includehint>
+    <includehint>knuminput.h</includehint>
+    <includehint>knuminput.h</includehint>
+    <includehint>kcolorbutton.h</includehint>
+    <includehint>knuminput.h</includehint>
+    <includehint>knuminput.h</includehint>
+    <includehint>knuminput.h</includehint>
+    <includehint>knuminput.h</includehint>
     <includehint>kcolorbutton.h</includehint>
+    <includehint>knuminput.h</includehint>
+    <includehint>knuminput.h</includehint>
+    <includehint>knuminput.h</includehint>
+    <includehint>knuminput.h</includehint>
     <includehint>kcolorbutton.h</includehint>
     <includehint>knuminput.h</includehint>
     <includehint>knuminput.h</includehint>
     <includehint>kcolorbutton.h</includehint>
     <includehint>kcolorbutton.h</includehint>
     <includehint>kcolorbutton.h</includehint>
+    <includehint>knuminput.h</includehint>
+    <includehint>knuminput.h</includehint>
+    <includehint>knuminput.h</includehint>
+    <includehint>knuminput.h</includehint>
+    <includehint>kcolorbutton.h</includehint>
+    <includehint>kpushbutton.h</includehint>
     <includehint>kpushbutton.h</includehint>
+    <includehint>kpushbutton.h</includehint>
+    <includehint>knuminput.h</includehint>
+    <includehint>knuminput.h</includehint>
+    <includehint>knuminput.h</includehint>
+    <includehint>knuminput.h</includehint>
+    <includehint>kcolorbutton.h</includehint>
+    <includehint>knuminput.h</includehint>
+    <includehint>knuminput.h</includehint>
+    <includehint>knuminput.h</includehint>
+    <includehint>knuminput.h</includehint>
+    <includehint>knuminput.h</includehint>
+    <includehint>knuminput.h</includehint>
+    <includehint>knuminput.h</includehint>
+    <includehint>knuminput.h</includehint>
+    <includehint>knuminput.h</includehint>
+    <includehint>knuminput.h</includehint>
+    <includehint>knuminput.h</includehint>
+    <includehint>knuminput.h</includehint>
 </includehints>
 </UI>
diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt
new file mode 100644
index 0000000..e76a565
--- /dev/null
+++ b/po/CMakeLists.txt
@@ -0,0 +1,25 @@
+find_program(GETTEXT_MSGFMT_EXECUTABLE msgfmt)
+ 
+if(NOT GETTEXT_MSGFMT_EXECUTABLE)
+    message("------\n"
+            "NOTE: msgfmt not found. Translations will *not* be installed\n"
+            "------\n")
+else(NOT GETTEXT_MSGFMT_EXECUTABLE)
+    set(catalogname qtcurve)
+    add_custom_target(translations ALL)
+    file(GLOB PO_FILES *.po)
+    foreach(_poFile ${PO_FILES})
+        get_filename_component(_poFileName ${_poFile} NAME)
+        string(REGEX REPLACE "^${catalogname}_?" "" _langCode ${_poFileName} )
+        string(REGEX REPLACE "\\.po$" "" _langCode ${_langCode} )
+        if(_langCode)
+            get_filename_component(_lang ${_poFile} NAME_WE)
+            set(_gmoFile ${CMAKE_CURRENT_BINARY_DIR}/${_lang}.gmo)
+            add_custom_command(TARGET translations
+                    COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} --check -o ${_gmoFile} ${_poFile}
+                    DEPENDS ${_poFile})
+            install(FILES ${_gmoFile} DESTINATION  ${KDE3_LOCALE_PREFIX}/${_langCode}/LC_MESSAGES/ RENAME ${catalogname}.mo)
+        endif( _langCode )
+    endforeach(_poFile ${PO_FILES})
+endif(NOT GETTEXT_MSGFMT_EXECUTABLE)
+
diff --git a/po/generate.sh b/po/generate.sh
new file mode 100755
index 0000000..cf25955
--- /dev/null
+++ b/po/generate.sh
@@ -0,0 +1,48 @@
+#!/bin/sh
+BASEDIR=".." # root of translatable sources
+PROJECT="qtcurve" # project name
+BUGADDR="http://sourceforge.net/tracker/?group_id=50231&atid=459007" # MSGID-Bugs
+WDIR=`pwd` # working dir
+echo "Preparing rc files"
+cd ${BASEDIR}
+# we use simple sorting to make sure the lines do not jump around too much from system to system
+find . -name '*.rc' -o -name '*.ui' -o -name '*.kcfg' | sort > ${WDIR}/rcfiles.list
+xargs --arg-file=${WDIR}/rcfiles.list extractrc > ${WDIR}/rc.cpp
+# additional string for KAboutData
+echo 'i18nc("NAME OF TRANSLATORS","Your names");' >> ${WDIR}/rc.cpp
+echo 'i18nc("EMAIL OF TRANSLATORS","Your emails");' >> ${WDIR}/rc.cpp
+cd ${WDIR}
+echo "Done preparing rc files"
+
+echo "Extracting messages"
+cd ${BASEDIR}
+# see above on sorting
+find . -name '*.cpp' -o -name '*.h' -o -name '*.c' | sort > ${WDIR}/infiles.list
+echo "rc.cpp" >> ${WDIR}/infiles.list
+cd ${WDIR}
+xgettext --from-code=UTF-8 -C -kde -ci18n -ki18n:1 -ki18nc:1c,2 -ki18np:1,2 -ki18ncp:1c,2,3 -ktr2i18n:1 \
+         -kI18N_NOOP:1 -kI18N_NOOP2:1c,2 -kaliasLocale -kki18n:1 -kki18nc:1c,2 -kki18np:1,2 -kki18ncp:1c,2,3 \
+         --msgid-bugs-address="${BUGADDR}" \
+        --files-from=infiles.list -D ${BASEDIR} -D ${WDIR} -o ${PROJECT}.pot || { echo "error while calling xgettext. aborting."; exit 1; }
+
+#Fix charset...
+cat ${PROJECT}.pot | sed s^charset=CHARSET^charset=UTF-8^g > ${PROJECT}.pot-new
+mv ${PROJECT}.pot-new ${PROJECT}.pot
+
+echo "Done extracting messages"
+
+echo "Merging translations"
+catalogs=`find . -name '*.po'`
+for cat in $catalogs; do
+    echo $cat
+    msgmerge -o $cat.new $cat ${PROJECT}.pot
+    mv $cat.new $cat
+done
+echo "Done merging translations"
+
+echo "Cleaning up"
+cd ${WDIR}
+rm rcfiles.list
+rm infiles.list
+rm rc.cpp
+echo "Done"
diff --git a/po/qtcurve.pot b/po/qtcurve.pot
new file mode 100644
index 0000000..b9dbc98
--- /dev/null
+++ b/po/qtcurve.pot
@@ -0,0 +1,1423 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?"
+"group_id=50231&atid=459007\n"
+"POT-Creation-Date: 2010-03-18 20:31+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: config/exportthemedialog.cpp:34
+msgid "Export Theme"
+msgstr ""
+
+#: config/exportthemedialog.cpp:40
+msgid "Name:"
+msgstr ""
+
+#: config/exportthemedialog.cpp:41
+msgid "Comment:"
+msgstr ""
+
+#: config/exportthemedialog.cpp:42
+msgid "Destination folder:"
+msgstr ""
+
+#: config/exportthemedialog.cpp:44
+msgid "QtCurve based theme"
+msgstr ""
+
+#: config/exportthemedialog.cpp:64
+msgid "Name is empty!"
+msgstr ""
+
+#: config/exportthemedialog.cpp:86
+msgid ""
+"Succesfully created:\n"
+"%1"
+msgstr ""
+
+#: config/exportthemedialog.cpp:89
+msgid "Failed to create file: %1"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:146
+msgid "Select Password Character"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:696
+#. i18n: ectx: property (text), widget (QLabel)
+#: config/qtcurveconfig.cpp:358 po/rc.cpp:128 rc.cpp:128
+msgid "Background"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:362
+msgid "Button"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:365
+msgid "Text"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:369 config/qtcurveconfig.cpp:411
+#: config/qtcurveconfig.cpp:464 config/qtcurveconfig.cpp:552
+msgid "None"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:373
+msgid "Custom:"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:374
+msgid "Selected background"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:377
+msgid "Blended selected background"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:378
+msgid "Menu background"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:378 config/qtcurveconfig.cpp:430
+msgid "Darken"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:385 config/qtcurveconfig.cpp:1237
+msgid "Custom gradient %1"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:712
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: config/qtcurveconfig.cpp:387 po/rc.cpp:134 rc.cpp:134
+msgid "Flat"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:388
+msgid "Raised"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:389
+msgid "Dull glass"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:390
+msgid "Shiny glass"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:391
+msgid "Agua"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:392
+msgid "Soft gradient"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:393
+msgid "Standard gradient"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:394
+msgid "Harsh gradient"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:395
+msgid "Inverted gradient"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:396
+msgid "Dark inverted gradient"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:399
+msgid "Split gradient"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:402
+msgid "Bevelled"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:404
+msgid "Fade out (popup menuitems)"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:412
+msgid "Sunken lines"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:413
+msgid "Flat lines"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:414
+msgid "Dots"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:417
+msgid "Single dot (KDE4 & Gtk2 Only)"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:419
+msgid "Dashes"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:425
+msgid "Corner indicator"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:426
+msgid "Font color thin border"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:427
+msgid "Selected background thick border"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:428
+msgid "Selected background tinting"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:429
+msgid "A slight glow"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:431
+msgid "Use selected background color"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:432
+msgid "No indicator"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:437
+msgid "KDE"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:438
+msgid "MS Windows"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:439
+msgid "Platinum"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:440
+msgid "NeXT"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:441
+msgid "No buttons"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:446
+msgid "Square"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:447
+msgid "Slightly rounded"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:448
+msgid "Fully rounded"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:449
+msgid "Extra rounded (KDE4 & Gtk2)"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:450
+msgid "Max rounded (KDE4 & Gtk2)"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:455
+msgid "No coloration"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:456
+msgid "Color border"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:457
+msgid "Thick color border"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:458
+msgid "Plastik style"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:459
+msgid "Glow"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:465
+msgid "Light"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:466
+msgid "Dark"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:467
+msgid "Light (all sides)"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:468
+msgid "Dark (all sides)"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:473 config/qtcurveconfig.cpp:488
+#: config/qtcurveconfig.cpp:496
+msgid "Plain"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:474
+msgid "Etched"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:475
+msgid "Shadowed"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:480
+msgid "Simple"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:481
+msgid "Use HSL color space"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:482
+msgid "Use HSV color space"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:483
+msgid "Use HCY color space"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:489
+msgid "Stripes"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:490
+msgid "Diagonal stripes"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:491
+msgid "Faded stripes"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:497
+msgid "Round"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:498
+msgid "Plain - rotated"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:499
+msgid "Round - rotated"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:500
+msgid "Triangular"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:501
+msgid "Circular"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:506
+msgid "Base color"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:507
+msgid "Background color"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:508
+msgid "Darkened background color"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:513
+msgid "Standard (dotted)"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:514
+msgid "Highlight color"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:515
+msgid "Highlight color (full size)"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:516
+msgid "Highlight color, full, and fill (Gtk2 & KDE4 only)"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:517
+msgid "Line drawn with highlight color"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:877
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: config/qtcurveconfig.cpp:522 po/rc.cpp:170 rc.cpp:170
+msgid "No border"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:523
+msgid "Light border"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:524
+msgid "3D border (light only)"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:525
+msgid "3D border (dark and light)"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:526
+msgid "Shine"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:531
+msgid "Left"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:532
+msgid "Center (between controls)"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:533
+msgid "Center (full width)"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:534
+msgid "Right"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:539
+msgid "Highlight on top"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:540
+msgid "Highlight on bottom"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:541
+msgid "Add a slight glow"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:546
+msgid "Top to bottom"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:547
+msgid "Left to right"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:553
+msgid "New style (KDE and Gtk2 similar)"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:554
+msgid "Old style (KDE and Gtk2 different)"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:631
+msgid " pixels"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:768
+msgid "Predefined Style"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:770
+msgid "Import..."
+msgstr ""
+
+#: config/qtcurveconfig.cpp:771
+msgid "Export..."
+msgstr ""
+
+#: config/qtcurveconfig.cpp:774
+msgid "Export Theme..."
+msgstr ""
+
+#: config/qtcurveconfig.cpp:1009
+msgid "General"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:1010
+msgid "Combos"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:1011
+msgid "Spin Buttons"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:1012
+msgid "Splitters"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:1013
+msgid "Sliders and Scrollbars"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:1014
+msgid "Progressbars"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:1015
+msgid "Default Button"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:1016
+msgid "Mouse-over"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:1017
+msgid "Listviews"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:1018
+msgid "Scrollviews"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:1019
+msgid "Tabs"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:1020
+msgid "Checks and Radios"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:1021
+msgid "Windows"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:1022
+msgid "Menus and Toolbars"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:1023
+msgid "Dock windows"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:1024
+msgid "Advanced Settings"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:1025
+msgid "Custom Gradients"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:1026
+msgid "Custom Shades"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:1250
+msgid "Add"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:1251
+msgid "Remove"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:1252
+msgid "Update"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:1362 config/qtcurveconfig.cpp:1372
+msgid "*"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:1388
+msgid ""
+"Could not write to file:\n"
+"%1"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:16
+#. i18n: ectx: property (caption), widget (QWidget)
+#: po/rc.cpp:3 rc.cpp:3
+msgid "Form1"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:38
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:6 rc.cpp:6
+msgid "title"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:47
+#. i18n: ectx: property (text), widget (QListView)
+#: po/rc.cpp:9 rc.cpp:9
+msgid "Category"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:79
+#. i18n: ectx: property (text), widget (KPushButton)
+#: po/rc.cpp:12 rc.cpp:12
+msgid "Options"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:102
+#. i18n: ectx: property (whatsThis), widget (QComboBox)
+#: po/rc.cpp:15 rc.cpp:15
+msgid ""
+"The setting here affects the general appearance - and will be applied to "
+"buttons, combo boxes, and spin buttons."
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:110
+#. i18n: ectx: property (text), widget (QLabel)
+#. i18n: file: config/qtcurveconfigbase.ui:559
+#. i18n: ectx: property (text), widget (QLabel)
+#. i18n: file: config/qtcurveconfigbase.ui:1687
+#. i18n: ectx: property (text), widget (QLabel)
+#. i18n: file: config/qtcurveconfigbase.ui:110
+#. i18n: ectx: property (text), widget (QLabel)
+#. i18n: file: config/qtcurveconfigbase.ui:559
+#. i18n: ectx: property (text), widget (QLabel)
+#. i18n: file: config/qtcurveconfigbase.ui:1687
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:18 po/rc.cpp:103 po/rc.cpp:318 rc.cpp:18 rc.cpp:103 rc.cpp:318
+msgid "Appearance:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:135
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:21 rc.cpp:21
+msgid "Focus rectangle:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:143
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:24 rc.cpp:24
+msgid "Button effect:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:156
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:27 rc.cpp:27
+msgid "Darker borders"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:164
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:30 rc.cpp:30
+msgid "Standard buttons for sidebars"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:167
+#. i18n: ectx: property (whatsThis), widget (QCheckBox)
+#: po/rc.cpp:33 rc.cpp:33
+msgid ""
+"Select this to have the sidebar buttons in konqueror, kate, kaffeine, "
+"ktorrent, drawn as per normal buttons - otherwise they will be drawn in a "
+"more flat style."
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:180
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:36 rc.cpp:36
+msgid "Roundedness:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:188
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:39 rc.cpp:39
+msgid "'V' style arrows"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:224
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:42 rc.cpp:42
+msgid "Frameless groupboxes,"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:240
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:45 rc.cpp:45
+msgid "draw line after title (KDE4 && Gtk2)"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:250
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:48 rc.cpp:48
+msgid "Draw statusbar frames"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:263
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:51 rc.cpp:51
+msgid "Sunken appearance:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:271
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:54 rc.cpp:54
+msgid "Draw fading lines (KDE4 && Gtk2)"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:282
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:58 rc.cpp:58
+msgid "Thinner buttons when etched/shadowed"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:310
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:62 rc.cpp:62
+msgid "Etch entries and scrollviews when button effect set to etched/shadowed."
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:331
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:65 rc.cpp:65
+msgid "Draw splitter"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:334
+#. i18n: ectx: property (whatsThis), widget (QCheckBox)
+#: po/rc.cpp:68 rc.cpp:68
+msgid ""
+"This option controls whether a line is drawn near non-editable combo box "
+"arrows."
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:342
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:71 rc.cpp:71
+msgid "Draw arrow of editable combos within edit field"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:384
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:74 rc.cpp:74
+msgid "Button shade:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:405
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:78 rc.cpp:78
+msgid "Gtk style comboboxes (KDE4)"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:408
+#. i18n: ectx: property (whatsThis), widget (QCheckBox)
+#: po/rc.cpp:81 rc.cpp:81
+msgid ""
+"In Gtk, the list that is attached to a combo-box appears in the same style "
+"as a popup-menu. KDE4 has the ability to mimic this look."
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:416
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:84 rc.cpp:84
+msgid "Double arrows for Gtk style comboboxes"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:437
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:87 rc.cpp:87
+msgid "Combine both buttons"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:445
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:90 rc.cpp:90
+msgid "Draw arrows within edit field"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:483
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:93 rc.cpp:93
+msgid "Markings:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:508
+#. i18n: ectx: property (suffix), widget (KIntNumInput)
+#. i18n: file: config/qtcurveconfigbase.ui:996
+#. i18n: ectx: property (suffix), widget (KIntNumInput)
+#. i18n: file: config/qtcurveconfigbase.ui:1272
+#. i18n: ectx: property (suffix), widget (KIntNumInput)
+#. i18n: file: config/qtcurveconfigbase.ui:1337
+#. i18n: ectx: property (prefix), widget (KIntNumInput)
+#. i18n: file: config/qtcurveconfigbase.ui:1469
+#. i18n: ectx: property (suffix), widget (KIntNumInput)
+#. i18n: file: config/qtcurveconfigbase.ui:1892
+#. i18n: ectx: property (suffix), widget (KIntNumInput)
+#. i18n: file: config/qtcurveconfigbase.ui:2286
+#. i18n: ectx: property (suffix), widget (KIntNumInput)
+#. i18n: file: config/qtcurveconfigbase.ui:2297
+#. i18n: ectx: property (suffix), widget (KIntNumInput)
+#. i18n: file: config/qtcurveconfigbase.ui:508
+#. i18n: ectx: property (suffix), widget (KIntNumInput)
+#. i18n: file: config/qtcurveconfigbase.ui:996
+#. i18n: ectx: property (suffix), widget (KIntNumInput)
+#. i18n: file: config/qtcurveconfigbase.ui:1272
+#. i18n: ectx: property (suffix), widget (KIntNumInput)
+#. i18n: file: config/qtcurveconfigbase.ui:1337
+#. i18n: ectx: property (prefix), widget (KIntNumInput)
+#. i18n: file: config/qtcurveconfigbase.ui:1469
+#. i18n: ectx: property (suffix), widget (KIntNumInput)
+#. i18n: file: config/qtcurveconfigbase.ui:1892
+#. i18n: ectx: property (suffix), widget (KIntNumInput)
+#. i18n: file: config/qtcurveconfigbase.ui:2286
+#. i18n: ectx: property (suffix), widget (KIntNumInput)
+#. i18n: file: config/qtcurveconfigbase.ui:2297
+#. i18n: ectx: property (suffix), widget (KIntNumInput)
+#: po/rc.cpp:97 po/rc.cpp:193 po/rc.cpp:240 po/rc.cpp:259 po/rc.cpp:285
+#: po/rc.cpp:367 po/rc.cpp:433 po/rc.cpp:437 rc.cpp:97 rc.cpp:193 rc.cpp:240
+#: rc.cpp:259 rc.cpp:285 rc.cpp:367 rc.cpp:433 rc.cpp:437
+#, no-c-format
+msgid "%"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:538
+#. i18n: ectx: property (text), widget (QLabel)
+#. i18n: file: config/qtcurveconfigbase.ui:1477
+#. i18n: ectx: property (text), widget (QLabel)
+#. i18n: file: config/qtcurveconfigbase.ui:538
+#. i18n: ectx: property (text), widget (QLabel)
+#. i18n: file: config/qtcurveconfigbase.ui:1477
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:100 po/rc.cpp:288 rc.cpp:100 rc.cpp:288
+msgid "Background mouse-over highlight:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:567
+#. i18n: ectx: property (text), widget (QLabel)
+#. i18n: file: config/qtcurveconfigbase.ui:988
+#. i18n: ectx: property (text), widget (QLabel)
+#. i18n: file: config/qtcurveconfigbase.ui:1395
+#. i18n: ectx: property (text), widget (QLabel)
+#. i18n: file: config/qtcurveconfigbase.ui:1754
+#. i18n: ectx: property (text), widget (QLabel)
+#. i18n: file: config/qtcurveconfigbase.ui:567
+#. i18n: ectx: property (text), widget (QLabel)
+#. i18n: file: config/qtcurveconfigbase.ui:988
+#. i18n: ectx: property (text), widget (QLabel)
+#. i18n: file: config/qtcurveconfigbase.ui:1395
+#. i18n: ectx: property (text), widget (QLabel)
+#. i18n: file: config/qtcurveconfigbase.ui:1754
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:106 po/rc.cpp:189 po/rc.cpp:269 po/rc.cpp:330 rc.cpp:106
+#: rc.cpp:189 rc.cpp:269 rc.cpp:330
+msgid "Coloration:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:583
+#. i18n: ectx: property (whatsThis), widget (QComboBox)
+#: po/rc.cpp:109 rc.cpp:109
+msgid "This color setting affects both scrollbar sliders, and other sliders."
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:616
+#. i18n: ectx: property (whatsThis), widget (QComboBox)
+#. i18n: file: config/qtcurveconfigbase.ui:704
+#. i18n: ectx: property (whatsThis), widget (QComboBox)
+#. i18n: file: config/qtcurveconfigbase.ui:616
+#. i18n: ectx: property (whatsThis), widget (QComboBox)
+#. i18n: file: config/qtcurveconfigbase.ui:704
+#. i18n: ectx: property (whatsThis), widget (QComboBox)
+#: po/rc.cpp:113 po/rc.cpp:131 rc.cpp:113 rc.cpp:131
+msgid ""
+"This appearance setting affects both scrollbar sliders, and other sliders."
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:664
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:116 rc.cpp:116
+msgid "Style:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:672
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:119 rc.cpp:119
+msgid "Slider thumbs:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:680
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:122 rc.cpp:122
+msgid "Slider width:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:688
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:125 rc.cpp:125
+msgid "Fill used part of groove:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:720
+#. i18n: ectx: property (whatsThis), widget (QComboBox)
+#: po/rc.cpp:137 rc.cpp:137
+msgid ""
+"This setting only affects standard sliders - i.e. not scrollbar sliders. "
+"'Triangular' is a very similar style to plastik's sliders."
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:728
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:140 rc.cpp:140
+msgid "Groove appearance:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:736
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:143 rc.cpp:143
+msgid "Thin scrollbar groove"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:744
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:146 rc.cpp:146
+msgid "Scrollbar buttons:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:766
+#. i18n: ectx: property (whatsThis), widget (QComboBox)
+#: po/rc.cpp:149 rc.cpp:149
+msgid ""
+"This controls the position, and number, of buttons on a scrollbar.\n"
+"\n"
+"KDE - 1 button at the top/left, and two at the bottom/right\n"
+"Windows - 1 botton at each end\n"
+"Platinum -  no buttons at the top/left, two at bottom/right\n"
+"Next - two buttons at the top/left, none at bottom/right\n"
+"None - no buttons, only the slider"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:787
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:158 rc.cpp:158
+msgid "Color only on mouse-over"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:818
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:161 rc.cpp:161
+msgid "Animated"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:843
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:164 rc.cpp:164
+msgid "Groove:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:851
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:167 rc.cpp:167
+msgid "Bar:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:880
+#. i18n: ectx: property (whatsThis), widget (QCheckBox)
+#: po/rc.cpp:173 rc.cpp:173
+msgid ""
+"Enable this option to remove the 1 pixel border around the filled element."
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:914
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:176 rc.cpp:176
+msgid "Indicate with:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:922
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:179 rc.cpp:179
+msgid "Embolden text"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:977
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:182 rc.cpp:182
+msgid "Highlight by:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:980
+#. i18n: ectx: property (whatsThis), widget (QLabel)
+#: po/rc.cpp:186 rc.cpp:186
+#, no-c-format
+msgid ""
+"This controls the % that widgets will be highlighted by when the mouse "
+"hovers over them"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1064
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:196 rc.cpp:196
+msgid "Button color"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1072
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:199 rc.cpp:199
+msgid "Header appearance:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1085
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:202 rc.cpp:202
+msgid "Shade header of sorted column:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1109
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:206 rc.cpp:206
+msgid "Selection appearance (KDE4 && Gtk2):"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1139
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:209 rc.cpp:209
+msgid "Force alternate colors"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1147
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:212 rc.cpp:212
+msgid "Lines between items:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1160
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:215 rc.cpp:215
+msgid "Square selection"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1181
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:218 rc.cpp:218
+msgid "Scrollbars on the outside"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1189
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:221 rc.cpp:221
+msgid "Highlight on focus (KDE)"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1197
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:224 rc.cpp:224
+msgid ""
+"Always draw with a square frame - regardless of the general round setting."
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1235
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:227 rc.cpp:227
+msgid "Active tab appearance:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1243
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:230 rc.cpp:230
+msgid "Inactive tab appearance:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1261
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:233 rc.cpp:233
+msgid "Highlight"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1264
+#. i18n: ectx: property (whatsThis), widget (QCheckBox)
+#: po/rc.cpp:236 rc.cpp:236
+msgid "This will cause a coloured stripe to be drawn over the current tab."
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1275
+#. i18n: ectx: property (prefix), widget (KIntNumInput)
+#: po/rc.cpp:243 rc.cpp:243
+msgid "Tint by "
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1283
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:246 rc.cpp:246
+msgid "Mouse-over:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1296
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:249 rc.cpp:249
+msgid "Round all tabs"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1304
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:252 rc.cpp:252
+msgid "Draw a light border around tab widget"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1312
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:255 rc.cpp:255
+msgid "Draw inner border of inactive tabs"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1345
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:262 rc.cpp:262
+msgid "Alter background by:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1353
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:265 rc.cpp:265
+msgid "Invert shade of bottom tabs"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1403
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:272 rc.cpp:272
+msgid "'X' style checkmarks"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1445
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:275 rc.cpp:275
+msgid "Button like"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1453
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:278 rc.cpp:278
+msgid "Small radio 'dot'"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1461
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:281 rc.cpp:281
+msgid "Color when selected"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1515
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:291 rc.cpp:291
+msgid "Button Appearance:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1533
+#. i18n: ectx: property (text), widget (QLabel)
+#. i18n: file: config/qtcurveconfigbase.ui:1541
+#. i18n: ectx: property (text), widget (QLabel)
+#. i18n: file: config/qtcurveconfigbase.ui:1533
+#. i18n: ectx: property (text), widget (QLabel)
+#. i18n: file: config/qtcurveconfigbase.ui:1541
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:294 po/rc.cpp:297 rc.cpp:294 rc.cpp:297
+msgid "Titlebar Appearance:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1554
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:300 rc.cpp:300
+msgid "Text alignment:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1567
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:303 rc.cpp:303
+msgid "Color titlebar only (KDE4)"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1592
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:306 rc.cpp:306
+msgid "Light border (KDE4)"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1613
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:309 rc.cpp:309
+msgid "Handles:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1621
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:312 rc.cpp:312
+msgid "Border:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1673
+#. i18n: ectx: property (title), widget (QGroupBox)
+#: po/rc.cpp:315 rc.cpp:315
+msgid "Toolbars"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1700
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:321 rc.cpp:321
+msgid "Separators:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1732
+#. i18n: ectx: property (title), widget (QGroupBox)
+#: po/rc.cpp:324 rc.cpp:324
+msgid "Menus"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1746
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:327 rc.cpp:327
+msgid "Apply coloration to active window only"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1762
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:333 rc.cpp:333
+msgid "Menubar appearance:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1770
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:336 rc.cpp:336
+msgid "Menuitem appearance:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1778
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:339 rc.cpp:339
+msgid "Use 'highlight' color for active menuitems"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1786
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:342 rc.cpp:342
+msgid "Stripe (KDE):"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1794
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:345 rc.cpp:345
+msgid "Border popupmenus"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1802
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:348 rc.cpp:348
+msgid "Sub-menu delay:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1818
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:351 rc.cpp:351
+msgid "Color menubar items on mouse-over"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1826
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:354 rc.cpp:354
+msgid "Custom text colors (active/normal):"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1871
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:360 rc.cpp:360
+msgid "Thinner menu items"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1879
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:363 rc.cpp:363
+msgid "Popup-menu background:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1928
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:370 rc.cpp:370
+msgid "Border menuitems"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1936
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:373 rc.cpp:373
+msgid "Draw icons"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1944
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:376 rc.cpp:376
+msgid "Round selected menubar items on top only"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1960
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:380 rc.cpp:380
+msgid "Enable mouse-over for menubar items"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1983
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:383 rc.cpp:383
+msgid "Titlebar appearance:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:2043
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:386 rc.cpp:386
+msgid "'Fix' parentless dialogs"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:2050
+#. i18n: ectx: property (whatsThis), widget (QCheckBox)
+#: po/rc.cpp:389 rc.cpp:389
+msgid ""
+"<h2><font color=\"#ff0000\">Warning: Experimental!</font></h1><p><p>Some "
+"applications - such as Kate, Kaffeine, and GIMP - produce dialogs that have "
+"no 'parent'. This causes the dialog to recieve an entry in the taskbar, and "
+"allows the dialog to be minimised independantly of the main application "
+"window.</p>\n"
+"\n"
+"<p>If you enable this option, QtCurve will try to 'fix' this by assigning "
+"the dialogs a parent.</p>\n"
+"\n"
+"<p><b>Note:</b> This may brake some applications, as it wiill alter the "
+"behaviour of dialogs in a way the application has not intended. Therefore, "
+"please use with care.</p>"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:2058
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:396 rc.cpp:396
+msgid "Map KDE icons (Gtk2)"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:2066
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:399 rc.cpp:399
+msgid "Gtk button order"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:2091
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:402 rc.cpp:402
+msgid "Character to use for password entries:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:2115
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:406 rc.cpp:406
+msgid "Don't make 'auto-default' buttons larger (KDE4)"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:2141
+#. i18n: ectx: property (title), widget (QGroupBox)
+#: po/rc.cpp:409 rc.cpp:409
+msgid "Settings"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:2155
+#. i18n: ectx: property (text), widget (QListView)
+#: po/rc.cpp:413 rc.cpp:413
+#, no-c-format
+msgid "Position (%)"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:2166
+#. i18n: ectx: property (text), widget (QListView)
+#: po/rc.cpp:417 rc.cpp:417
+#, no-c-format
+msgid "Value (%)"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:2192
+#. i18n: ectx: property (title), widget (QGroupBox)
+#: po/rc.cpp:420 rc.cpp:420
+msgid "Gradient Stop"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:2259
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:426 rc.cpp:426
+msgid "Value:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:2275
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:429 rc.cpp:429
+msgid "Position:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:2336
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:441 rc.cpp:441
+#, no-c-format
+msgid ""
+"<i><b>NOTE: </b><br>\n"
+"\n"
+"<u>Position</u> has a range of 0% to 100% - 0% being top/left, and 100% "
+"being bottom/right.<br>\n"
+"\n"
+"<u>Value</u> has a range of 0% to 200%. A value of 120% implies lightening "
+"by 20%, and a value of 80% implies darkening by 20%</i>"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:2349
+#. i18n: ectx: property (title), widget (QGroupBox)
+#: po/rc.cpp:448 rc.cpp:448
+msgid "Preview"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:2415
+#. i18n: ectx: property (title), widget (QGroupBox)
+#: po/rc.cpp:452 rc.cpp:452
+msgid "Use Custom Values"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:2539
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:455 rc.cpp:455
+msgid ""
+"<i>QtCurve uses various hard-coded shading values to draw elements such as "
+"button frames, the background for pressed buttons, etc. The following is a "
+"brief overview of how each shade is used - use this as a guide only, as "
+"shades are used for various things.<br>\n"
+"\n"
+"1 Is used for the light part of 3d elements - such as the border of tab "
+"widgets.<br>\n"
+"2 Is used for the lighter shade of striped progressbars.<br>\n"
+"3 Is used for the dark part of 3d elements - such as the border of tab "
+"widgets.<br>\n"
+"4 Is used for the shaded border of checks and radios, toolbar borders (when "
+"set to dark), the dark part of sunken/raised slider handles, etc.<br>\n"
+"5 Is used for the background of pressed widgets, and the border of toolbars "
+"(when not dark).<br>\n"
+"6 Is used as the border of most widgets.</i>"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:2560
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:465 rc.cpp:465
+msgid "Shading routine:"
+msgstr ""
+
+#: po/rc.cpp:466 rc.cpp:466
+msgctxt "NAME OF TRANSLATORS"
+msgid "Your names"
+msgstr ""
+
+#: po/rc.cpp:467 rc.cpp:467
+msgctxt "EMAIL OF TRANSLATORS"
+msgid "Your emails"
+msgstr ""
diff --git a/po/tr.po b/po/tr.po
new file mode 100644
index 0000000..1153fd3
--- /dev/null
+++ b/po/tr.po
@@ -0,0 +1,1509 @@
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Necmettin Begiter <necmettin.begiter@gmail.com>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: kde3-qtcurve\n"
+"Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?"
+"group_id=50231&atid=459007\n"
+"POT-Creation-Date: 2010-03-18 20:31+0000\n"
+"PO-Revision-Date: 2009-07-04 01:44+0300\n"
+"Last-Translator: Necmettin Begiter <necmettin.begiter@gmail.com>\n"
+"Language-Team: Turkish <kde-i18n-doc@kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 0.3\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: config/exportthemedialog.cpp:34
+msgid "Export Theme"
+msgstr "Temayı Dışarı Aktar"
+
+#: config/exportthemedialog.cpp:40
+msgid "Name:"
+msgstr "İsim:"
+
+#: config/exportthemedialog.cpp:41
+msgid "Comment:"
+msgstr "Yorum:"
+
+#: config/exportthemedialog.cpp:42
+msgid "Destination folder:"
+msgstr "Hedef klasör:"
+
+#: config/exportthemedialog.cpp:44
+msgid "QtCurve based theme"
+msgstr "QtCurve tabanlı tema"
+
+#: config/exportthemedialog.cpp:64
+msgid "Name is empty!"
+msgstr "İsim boş!"
+
+#: config/exportthemedialog.cpp:86
+msgid ""
+"Succesfully created:\n"
+"%1"
+msgstr ""
+"Başarıyla oluşturuldu:\n"
+"%1"
+
+#: config/exportthemedialog.cpp:89
+msgid "Failed to create file: %1"
+msgstr "Dosya oluşturulamadı: %1"
+
+#: config/qtcurveconfig.cpp:146
+msgid "Select Password Character"
+msgstr "Parola Karakterini Seç"
+
+#. i18n: file: config/qtcurveconfigbase.ui:696
+#. i18n: ectx: property (text), widget (QLabel)
+#: config/qtcurveconfig.cpp:358 po/rc.cpp:128 rc.cpp:128
+msgid "Background"
+msgstr "Arkaplan"
+
+#: config/qtcurveconfig.cpp:362
+msgid "Button"
+msgstr "Düğme"
+
+#: config/qtcurveconfig.cpp:365
+msgid "Text"
+msgstr "Metin"
+
+#: config/qtcurveconfig.cpp:369 config/qtcurveconfig.cpp:411
+#: config/qtcurveconfig.cpp:464 config/qtcurveconfig.cpp:552
+msgid "None"
+msgstr "Yok"
+
+#: config/qtcurveconfig.cpp:373
+msgid "Custom:"
+msgstr "Özel:"
+
+#: config/qtcurveconfig.cpp:374
+msgid "Selected background"
+msgstr "Seçili arkaplan"
+
+#: config/qtcurveconfig.cpp:377
+msgid "Blended selected background"
+msgstr "Seçili arkaplanla harmanlanmış"
+
+#: config/qtcurveconfig.cpp:378
+msgid "Menu background"
+msgstr "Menü arkaplanı"
+
+#: config/qtcurveconfig.cpp:378 config/qtcurveconfig.cpp:430
+msgid "Darken"
+msgstr "Karart"
+
+#: config/qtcurveconfig.cpp:385 config/qtcurveconfig.cpp:1237
+msgid "Custom gradient %1"
+msgstr "Özel eğimli %1"
+
+#. i18n: file: config/qtcurveconfigbase.ui:712
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: config/qtcurveconfig.cpp:387 po/rc.cpp:134 rc.cpp:134
+msgid "Flat"
+msgstr "Düz"
+
+#: config/qtcurveconfig.cpp:388
+msgid "Raised"
+msgstr "Yükseltilmiş"
+
+#: config/qtcurveconfig.cpp:389
+msgid "Dull glass"
+msgstr "Donuk cam"
+
+#: config/qtcurveconfig.cpp:390
+msgid "Shiny glass"
+msgstr "Parlak cam"
+
+#: config/qtcurveconfig.cpp:391
+msgid "Agua"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:392
+msgid "Soft gradient"
+msgstr "Yumuşak eğimli"
+
+#: config/qtcurveconfig.cpp:393
+msgid "Standard gradient"
+msgstr "Standart eğimli"
+
+#: config/qtcurveconfig.cpp:394
+msgid "Harsh gradient"
+msgstr "Sert eğimli"
+
+#: config/qtcurveconfig.cpp:395
+msgid "Inverted gradient"
+msgstr "Ters eğimli"
+
+#: config/qtcurveconfig.cpp:396
+#, fuzzy
+msgid "Dark inverted gradient"
+msgstr "Ters eğimli"
+
+#: config/qtcurveconfig.cpp:399
+msgid "Split gradient"
+msgstr "Ayrık eğimli"
+
+#: config/qtcurveconfig.cpp:402
+msgid "Bevelled"
+msgstr "Eğik"
+
+#: config/qtcurveconfig.cpp:404
+msgid "Fade out (popup menuitems)"
+msgstr "Sön (açılır menü öğeleri)"
+
+#: config/qtcurveconfig.cpp:412
+msgid "Sunken lines"
+msgstr "Çökmüş çizgiler"
+
+#: config/qtcurveconfig.cpp:413
+msgid "Flat lines"
+msgstr "Düz çizgiler"
+
+#: config/qtcurveconfig.cpp:414
+msgid "Dots"
+msgstr "Noktalar"
+
+#: config/qtcurveconfig.cpp:417
+#, fuzzy
+msgid "Single dot (KDE4 & Gtk2 Only)"
+msgstr "En fazla yuvarlatılmış (KDE4 ve Gtk2)"
+
+#: config/qtcurveconfig.cpp:419
+msgid "Dashes"
+msgstr "Kesik çizgiler"
+
+#: config/qtcurveconfig.cpp:425
+msgid "Corner indicator"
+msgstr "Köşe belirteci"
+
+#: config/qtcurveconfig.cpp:426
+msgid "Font color thin border"
+msgstr "Font rengi, ince kenar"
+
+#: config/qtcurveconfig.cpp:427
+msgid "Selected background thick border"
+msgstr "Seçili arkaplan, kalın kenar"
+
+#: config/qtcurveconfig.cpp:428
+msgid "Selected background tinting"
+msgstr "Seçili arkaplan tonlama"
+
+#: config/qtcurveconfig.cpp:429
+msgid "A slight glow"
+msgstr "Hafif bir parlama"
+
+#: config/qtcurveconfig.cpp:431
+#, fuzzy
+msgid "Use selected background color"
+msgstr "Seçili arkaplan"
+
+#: config/qtcurveconfig.cpp:432
+msgid "No indicator"
+msgstr "Belirteç yok"
+
+#: config/qtcurveconfig.cpp:437
+msgid "KDE"
+msgstr "KDE"
+
+#: config/qtcurveconfig.cpp:438
+msgid "MS Windows"
+msgstr "MS Windows"
+
+#: config/qtcurveconfig.cpp:439
+msgid "Platinum"
+msgstr "Platin"
+
+#: config/qtcurveconfig.cpp:440
+msgid "NeXT"
+msgstr "NeXT"
+
+#: config/qtcurveconfig.cpp:441
+msgid "No buttons"
+msgstr "Düğme yok"
+
+#: config/qtcurveconfig.cpp:446
+msgid "Square"
+msgstr "Köşeli"
+
+#: config/qtcurveconfig.cpp:447
+msgid "Slightly rounded"
+msgstr "Hafif yuvarlatılmış"
+
+#: config/qtcurveconfig.cpp:448
+msgid "Fully rounded"
+msgstr "Tam yuvarlatılmış"
+
+#: config/qtcurveconfig.cpp:449
+msgid "Extra rounded (KDE4 & Gtk2)"
+msgstr "Fazladan yuvarlatılmış (KDE4 ve Gtk2)"
+
+#: config/qtcurveconfig.cpp:450
+msgid "Max rounded (KDE4 & Gtk2)"
+msgstr "En fazla yuvarlatılmış (KDE4 ve Gtk2)"
+
+#: config/qtcurveconfig.cpp:455
+msgid "No coloration"
+msgstr "Renklendirme yok"
+
+#: config/qtcurveconfig.cpp:456
+msgid "Color border"
+msgstr "Kenarlar renklendirilmiş"
+
+#: config/qtcurveconfig.cpp:457
+msgid "Thick color border"
+msgstr "Kenarlar kalın renklendirilmiş"
+
+#: config/qtcurveconfig.cpp:458
+msgid "Plastik style"
+msgstr "Plastik biçemi"
+
+#: config/qtcurveconfig.cpp:459
+msgid "Glow"
+msgstr "Parlama"
+
+#: config/qtcurveconfig.cpp:465
+msgid "Light"
+msgstr "Açık renk"
+
+#: config/qtcurveconfig.cpp:466
+msgid "Dark"
+msgstr "Koyu renk"
+
+#: config/qtcurveconfig.cpp:467
+msgid "Light (all sides)"
+msgstr "Açık renk (tüm kenarlar)"
+
+#: config/qtcurveconfig.cpp:468
+msgid "Dark (all sides)"
+msgstr "Koyu renk (tüm kenarlar)"
+
+#: config/qtcurveconfig.cpp:473 config/qtcurveconfig.cpp:488
+#: config/qtcurveconfig.cpp:496
+msgid "Plain"
+msgstr "Düz"
+
+#: config/qtcurveconfig.cpp:474
+msgid "Etched"
+msgstr "Damgalı"
+
+#: config/qtcurveconfig.cpp:475
+msgid "Shadowed"
+msgstr "Gölgeli"
+
+#: config/qtcurveconfig.cpp:480
+msgid "Simple"
+msgstr "Basit"
+
+#: config/qtcurveconfig.cpp:481
+msgid "Use HSL color space"
+msgstr "HSL renk uzayı kullan"
+
+#: config/qtcurveconfig.cpp:482
+msgid "Use HSV color space"
+msgstr "HSV renk uzayı kullan"
+
+#: config/qtcurveconfig.cpp:483
+msgid "Use HCY color space"
+msgstr "HCY renk uzayı kullan"
+
+#: config/qtcurveconfig.cpp:489
+#, fuzzy
+msgid "Stripes"
+msgstr "Çizgili"
+
+#: config/qtcurveconfig.cpp:490
+msgid "Diagonal stripes"
+msgstr "Köşegen çizgili"
+
+#: config/qtcurveconfig.cpp:491
+#, fuzzy
+msgid "Faded stripes"
+msgstr "Köşegen çizgili"
+
+#: config/qtcurveconfig.cpp:497
+msgid "Round"
+msgstr "Yuvarlak"
+
+#: config/qtcurveconfig.cpp:498
+msgid "Plain - rotated"
+msgstr "Düz - çevrilmiş"
+
+#: config/qtcurveconfig.cpp:499
+msgid "Round - rotated"
+msgstr "Yuvarlak - çevrilmiş"
+
+#: config/qtcurveconfig.cpp:500
+msgid "Triangular"
+msgstr "Üç köşeli"
+
+#: config/qtcurveconfig.cpp:501
+msgid "Circular"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:506
+msgid "Base color"
+msgstr "Taban renk"
+
+#: config/qtcurveconfig.cpp:507
+msgid "Background color"
+msgstr "Arkaplan rengi"
+
+#: config/qtcurveconfig.cpp:508
+msgid "Darkened background color"
+msgstr "Karartılmış arkaplan rengi"
+
+#: config/qtcurveconfig.cpp:513
+msgid "Standard (dotted)"
+msgstr "Standart (noktalı)"
+
+#: config/qtcurveconfig.cpp:514
+msgid "Highlight color"
+msgstr "Vurgu rengi"
+
+#: config/qtcurveconfig.cpp:515
+msgid "Highlight color (full size)"
+msgstr "Vurgu rengi (tam boyut)"
+
+#: config/qtcurveconfig.cpp:516
+msgid "Highlight color, full, and fill (Gtk2 & KDE4 only)"
+msgstr "Vurgu rengi, dolu, ve doldur (sadece Gtk2 ve KDE4)"
+
+#: config/qtcurveconfig.cpp:517
+msgid "Line drawn with highlight color"
+msgstr "Vurgu rengiyle çizilmiş çizgi"
+
+#. i18n: file: config/qtcurveconfigbase.ui:877
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: config/qtcurveconfig.cpp:522 po/rc.cpp:170 rc.cpp:170
+msgid "No border"
+msgstr "Kenarlık yok"
+
+#: config/qtcurveconfig.cpp:523
+msgid "Light border"
+msgstr "Açık renk kenarlık"
+
+#: config/qtcurveconfig.cpp:524
+msgid "3D border (light only)"
+msgstr "3B kenarlık (sadece açık renk)"
+
+#: config/qtcurveconfig.cpp:525
+msgid "3D border (dark and light)"
+msgstr "3B kenarlık (açık ve koyu renk)"
+
+#: config/qtcurveconfig.cpp:526
+msgid "Shine"
+msgstr ""
+
+#: config/qtcurveconfig.cpp:531
+msgid "Left"
+msgstr "Sol"
+
+#: config/qtcurveconfig.cpp:532
+msgid "Center (between controls)"
+msgstr "Merkez (kontroller arası)"
+
+#: config/qtcurveconfig.cpp:533
+msgid "Center (full width)"
+msgstr "Merkez (tam genişlik)"
+
+#: config/qtcurveconfig.cpp:534
+msgid "Right"
+msgstr "Sağ"
+
+#: config/qtcurveconfig.cpp:539
+msgid "Highlight on top"
+msgstr "Vurgu yukarıda"
+
+#: config/qtcurveconfig.cpp:540
+msgid "Highlight on bottom"
+msgstr "Vurgu aşağıda"
+
+#: config/qtcurveconfig.cpp:541
+msgid "Add a slight glow"
+msgstr "Hafif bir parlama ekle"
+
+#: config/qtcurveconfig.cpp:546
+msgid "Top to bottom"
+msgstr "Yukarıdan aşağıya"
+
+#: config/qtcurveconfig.cpp:547
+msgid "Left to right"
+msgstr "Soldan sağa"
+
+#: config/qtcurveconfig.cpp:553
+msgid "New style (KDE and Gtk2 similar)"
+msgstr "Yeni biçem (KDE ve Gtk2 benzer)"
+
+#: config/qtcurveconfig.cpp:554
+msgid "Old style (KDE and Gtk2 different)"
+msgstr "Eski biçem (KDE ve Gtk2 farklı)"
+
+#: config/qtcurveconfig.cpp:631
+msgid " pixels"
+msgstr " piksel"
+
+#: config/qtcurveconfig.cpp:768
+msgid "Predefined Style"
+msgstr "Hazır Biçem"
+
+#: config/qtcurveconfig.cpp:770
+msgid "Import..."
+msgstr "İçeri Aktar..."
+
+#: config/qtcurveconfig.cpp:771
+msgid "Export..."
+msgstr "Dışarı Aktar..."
+
+#: config/qtcurveconfig.cpp:774
+msgid "Export Theme..."
+msgstr "Temayı Dışarı Aktar..."
+
+#: config/qtcurveconfig.cpp:1009
+msgid "General"
+msgstr "Genel"
+
+#: config/qtcurveconfig.cpp:1010
+msgid "Combos"
+msgstr "Birleşik Kutular"
+
+#: config/qtcurveconfig.cpp:1011
+msgid "Spin Buttons"
+msgstr "Çevirme Düğmeleri"
+
+#: config/qtcurveconfig.cpp:1012
+msgid "Splitters"
+msgstr "Ayraçlar"
+
+#: config/qtcurveconfig.cpp:1013
+msgid "Sliders and Scrollbars"
+msgstr "Sürgüler ve Kaydırma Çubukları"
+
+#: config/qtcurveconfig.cpp:1014
+msgid "Progressbars"
+msgstr "İlerleme Çubukları"
+
+#: config/qtcurveconfig.cpp:1015
+msgid "Default Button"
+msgstr "Varsayılan Düğme"
+
+#: config/qtcurveconfig.cpp:1016
+msgid "Mouse-over"
+msgstr "Fare Altında"
+
+#: config/qtcurveconfig.cpp:1017
+msgid "Listviews"
+msgstr "Listeler"
+
+#: config/qtcurveconfig.cpp:1018
+msgid "Scrollviews"
+msgstr "Kaydırma Kutuları"
+
+#: config/qtcurveconfig.cpp:1019
+msgid "Tabs"
+msgstr "Sekmeler"
+
+#: config/qtcurveconfig.cpp:1020
+msgid "Checks and Radios"
+msgstr "İşaretleme ve Seçme Kutuları"
+
+#: config/qtcurveconfig.cpp:1021
+#, fuzzy
+msgid "Windows"
+msgstr "MS Windows"
+
+#: config/qtcurveconfig.cpp:1022
+msgid "Menus and Toolbars"
+msgstr "Menüler ve Araç Çubukları"
+
+#: config/qtcurveconfig.cpp:1023
+#, fuzzy
+msgid "Dock windows"
+msgstr "MS Windows"
+
+#: config/qtcurveconfig.cpp:1024
+msgid "Advanced Settings"
+msgstr "Gelişmiş Seçenekler"
+
+#: config/qtcurveconfig.cpp:1025
+msgid "Custom Gradients"
+msgstr "Özel Eğimler"
+
+#: config/qtcurveconfig.cpp:1026
+msgid "Custom Shades"
+msgstr "Özel Gölgeler"
+
+#: config/qtcurveconfig.cpp:1250
+msgid "Add"
+msgstr "Ekle"
+
+#: config/qtcurveconfig.cpp:1251
+msgid "Remove"
+msgstr "Kaldır"
+
+#: config/qtcurveconfig.cpp:1252
+msgid "Update"
+msgstr "Güncelle"
+
+#: config/qtcurveconfig.cpp:1362 config/qtcurveconfig.cpp:1372
+msgid "*"
+msgstr "*"
+
+#: config/qtcurveconfig.cpp:1388
+msgid ""
+"Could not write to file:\n"
+"%1"
+msgstr ""
+"Dosyaya yazılamadı:\n"
+"%1"
+
+#. i18n: file: config/qtcurveconfigbase.ui:16
+#. i18n: ectx: property (caption), widget (QWidget)
+#: po/rc.cpp:3 rc.cpp:3
+msgid "Form1"
+msgstr "Form1"
+
+#. i18n: file: config/qtcurveconfigbase.ui:38
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:6 rc.cpp:6
+msgid "title"
+msgstr "başlık"
+
+#. i18n: file: config/qtcurveconfigbase.ui:47
+#. i18n: ectx: property (text), widget (QListView)
+#: po/rc.cpp:9 rc.cpp:9
+msgid "Category"
+msgstr "Kategori"
+
+#. i18n: file: config/qtcurveconfigbase.ui:79
+#. i18n: ectx: property (text), widget (KPushButton)
+#: po/rc.cpp:12 rc.cpp:12
+msgid "Options"
+msgstr "Seçenekler"
+
+#. i18n: file: config/qtcurveconfigbase.ui:102
+#. i18n: ectx: property (whatsThis), widget (QComboBox)
+#: po/rc.cpp:15 rc.cpp:15
+msgid ""
+"The setting here affects the general appearance - and will be applied to "
+"buttons, combo boxes, and spin buttons."
+msgstr ""
+"Buradaki ayar genel görünümü etkiler ve düğmelere, birleşik kutulara ve "
+"çevirme düğmelerine uygulanır."
+
+#. i18n: file: config/qtcurveconfigbase.ui:110
+#. i18n: ectx: property (text), widget (QLabel)
+#. i18n: file: config/qtcurveconfigbase.ui:559
+#. i18n: ectx: property (text), widget (QLabel)
+#. i18n: file: config/qtcurveconfigbase.ui:1687
+#. i18n: ectx: property (text), widget (QLabel)
+#. i18n: file: config/qtcurveconfigbase.ui:110
+#. i18n: ectx: property (text), widget (QLabel)
+#. i18n: file: config/qtcurveconfigbase.ui:559
+#. i18n: ectx: property (text), widget (QLabel)
+#. i18n: file: config/qtcurveconfigbase.ui:1687
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:18 po/rc.cpp:103 po/rc.cpp:318 rc.cpp:18 rc.cpp:103 rc.cpp:318
+msgid "Appearance:"
+msgstr "Görünüm:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:135
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:21 rc.cpp:21
+msgid "Focus rectangle:"
+msgstr "Odak dikdörtgeni:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:143
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:24 rc.cpp:24
+msgid "Button effect:"
+msgstr "Düğme efekti:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:156
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:27 rc.cpp:27
+msgid "Darker borders"
+msgstr "Daha koyu renk kenarlıklar"
+
+#. i18n: file: config/qtcurveconfigbase.ui:164
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:30 rc.cpp:30
+msgid "Standard buttons for sidebars"
+msgstr "Yan çubuklarda standart düğme görünümü"
+
+#. i18n: file: config/qtcurveconfigbase.ui:167
+#. i18n: ectx: property (whatsThis), widget (QCheckBox)
+#: po/rc.cpp:33 rc.cpp:33
+msgid ""
+"Select this to have the sidebar buttons in konqueror, kate, kaffeine, "
+"ktorrent, drawn as per normal buttons - otherwise they will be drawn in a "
+"more flat style."
+msgstr ""
+"Konqueror, Kate, Kaffeine ve Ktorrent'teki yan çubuk düğmeleri normalde daha "
+"düz görünür. Bu seçenekle o düğmelerin normal düğmeler gibi görünmesini "
+"sağlayabilirsiniz."
+
+#. i18n: file: config/qtcurveconfigbase.ui:180
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:36 rc.cpp:36
+msgid "Roundedness:"
+msgstr "Yuvarlatılma:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:188
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:39 rc.cpp:39
+msgid "'V' style arrows"
+msgstr "'V' şeklinde oklar"
+
+#. i18n: file: config/qtcurveconfigbase.ui:224
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:42 rc.cpp:42
+msgid "Frameless groupboxes,"
+msgstr "Çerçevesiz grup kutuları,"
+
+#. i18n: file: config/qtcurveconfigbase.ui:240
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:45 rc.cpp:45
+msgid "draw line after title (KDE4 && Gtk2)"
+msgstr "başlıktan sonra çizgi çiz (KDE4 ve Gtk2)"
+
+#. i18n: file: config/qtcurveconfigbase.ui:250
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:48 rc.cpp:48
+msgid "Draw statusbar frames"
+msgstr "Durum çubuğu çerçevesini çiz"
+
+#. i18n: file: config/qtcurveconfigbase.ui:263
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:51 rc.cpp:51
+msgid "Sunken appearance:"
+msgstr "Çökmüş görünüm:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:271
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:54 rc.cpp:54
+msgid "Draw fading lines (KDE4 && Gtk2)"
+msgstr "Solan çizgiler çiz (KDE4 ve Gtk2)"
+
+#. i18n: file: config/qtcurveconfigbase.ui:282
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:58 rc.cpp:58
+msgid "Thinner buttons when etched/shadowed"
+msgstr "Damgalı veya gölgeli iken daha ince düğmeler"
+
+#. i18n: file: config/qtcurveconfigbase.ui:310
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:62 rc.cpp:62
+#, fuzzy
+msgid "Etch entries and scrollviews when button effect set to etched/shadowed."
+msgstr "Düğme efekti damgalı veya gölgeli olduğunda damgalı çiz."
+
+#. i18n: file: config/qtcurveconfigbase.ui:331
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:65 rc.cpp:65
+msgid "Draw splitter"
+msgstr "Ayraç çiz"
+
+#. i18n: file: config/qtcurveconfigbase.ui:334
+#. i18n: ectx: property (whatsThis), widget (QCheckBox)
+#: po/rc.cpp:68 rc.cpp:68
+msgid ""
+"This option controls whether a line is drawn near non-editable combo box "
+"arrows."
+msgstr ""
+"Bu seçenek değiştirilebilir olmayan birleşik kutu oklarının yakınında bir "
+"çizgi çizilip çizilmeyeceğini belirler."
+
+#. i18n: file: config/qtcurveconfigbase.ui:342
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:71 rc.cpp:71
+msgid "Draw arrow of editable combos within edit field"
+msgstr "Değiştirme alanı içinde değiştirilebilir birleşiklerin oklarını çiz"
+
+#. i18n: file: config/qtcurveconfigbase.ui:384
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:74 rc.cpp:74
+msgid "Button shade:"
+msgstr "Düğme gölgesi:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:405
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:78 rc.cpp:78
+msgid "Gtk style comboboxes (KDE4)"
+msgstr "Gtk biçemi birleşik kutular (KDE4)"
+
+#. i18n: file: config/qtcurveconfigbase.ui:408
+#. i18n: ectx: property (whatsThis), widget (QCheckBox)
+#: po/rc.cpp:81 rc.cpp:81
+msgid ""
+"In Gtk, the list that is attached to a combo-box appears in the same style "
+"as a popup-menu. KDE4 has the ability to mimic this look."
+msgstr ""
+"Gtk'de birleşik bir kutuya eklenen liste açılır menü ile aynı biçimde "
+"görünür. KDE4 bu davranışı taklit edebilir."
+
+#. i18n: file: config/qtcurveconfigbase.ui:416
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:84 rc.cpp:84
+#, fuzzy
+msgid "Double arrows for Gtk style comboboxes"
+msgstr "Gtk biçemi birleşik kutular (KDE4)"
+
+#. i18n: file: config/qtcurveconfigbase.ui:437
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:87 rc.cpp:87
+msgid "Combine both buttons"
+msgstr "İki düğmeyi birleştir"
+
+#. i18n: file: config/qtcurveconfigbase.ui:445
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:90 rc.cpp:90
+msgid "Draw arrows within edit field"
+msgstr "Değiştirme alanında okları çiz"
+
+#. i18n: file: config/qtcurveconfigbase.ui:483
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:93 rc.cpp:93
+msgid "Markings:"
+msgstr "İşaretler:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:508
+#. i18n: ectx: property (suffix), widget (KIntNumInput)
+#. i18n: file: config/qtcurveconfigbase.ui:996
+#. i18n: ectx: property (suffix), widget (KIntNumInput)
+#. i18n: file: config/qtcurveconfigbase.ui:1272
+#. i18n: ectx: property (suffix), widget (KIntNumInput)
+#. i18n: file: config/qtcurveconfigbase.ui:1337
+#. i18n: ectx: property (prefix), widget (KIntNumInput)
+#. i18n: file: config/qtcurveconfigbase.ui:1469
+#. i18n: ectx: property (suffix), widget (KIntNumInput)
+#. i18n: file: config/qtcurveconfigbase.ui:1892
+#. i18n: ectx: property (suffix), widget (KIntNumInput)
+#. i18n: file: config/qtcurveconfigbase.ui:2286
+#. i18n: ectx: property (suffix), widget (KIntNumInput)
+#. i18n: file: config/qtcurveconfigbase.ui:2297
+#. i18n: ectx: property (suffix), widget (KIntNumInput)
+#. i18n: file: config/qtcurveconfigbase.ui:508
+#. i18n: ectx: property (suffix), widget (KIntNumInput)
+#. i18n: file: config/qtcurveconfigbase.ui:996
+#. i18n: ectx: property (suffix), widget (KIntNumInput)
+#. i18n: file: config/qtcurveconfigbase.ui:1272
+#. i18n: ectx: property (suffix), widget (KIntNumInput)
+#. i18n: file: config/qtcurveconfigbase.ui:1337
+#. i18n: ectx: property (prefix), widget (KIntNumInput)
+#. i18n: file: config/qtcurveconfigbase.ui:1469
+#. i18n: ectx: property (suffix), widget (KIntNumInput)
+#. i18n: file: config/qtcurveconfigbase.ui:1892
+#. i18n: ectx: property (suffix), widget (KIntNumInput)
+#. i18n: file: config/qtcurveconfigbase.ui:2286
+#. i18n: ectx: property (suffix), widget (KIntNumInput)
+#. i18n: file: config/qtcurveconfigbase.ui:2297
+#. i18n: ectx: property (suffix), widget (KIntNumInput)
+#: po/rc.cpp:97 po/rc.cpp:193 po/rc.cpp:240 po/rc.cpp:259 po/rc.cpp:285
+#: po/rc.cpp:367 po/rc.cpp:433 po/rc.cpp:437 rc.cpp:97 rc.cpp:193 rc.cpp:240
+#: rc.cpp:259 rc.cpp:285 rc.cpp:367 rc.cpp:433 rc.cpp:437
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#. i18n: file: config/qtcurveconfigbase.ui:538
+#. i18n: ectx: property (text), widget (QLabel)
+#. i18n: file: config/qtcurveconfigbase.ui:1477
+#. i18n: ectx: property (text), widget (QLabel)
+#. i18n: file: config/qtcurveconfigbase.ui:538
+#. i18n: ectx: property (text), widget (QLabel)
+#. i18n: file: config/qtcurveconfigbase.ui:1477
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:100 po/rc.cpp:288 rc.cpp:100 rc.cpp:288
+#, fuzzy
+msgid "Background mouse-over highlight:"
+msgstr "Metin arkaplanını vurgula"
+
+#. i18n: file: config/qtcurveconfigbase.ui:567
+#. i18n: ectx: property (text), widget (QLabel)
+#. i18n: file: config/qtcurveconfigbase.ui:988
+#. i18n: ectx: property (text), widget (QLabel)
+#. i18n: file: config/qtcurveconfigbase.ui:1395
+#. i18n: ectx: property (text), widget (QLabel)
+#. i18n: file: config/qtcurveconfigbase.ui:1754
+#. i18n: ectx: property (text), widget (QLabel)
+#. i18n: file: config/qtcurveconfigbase.ui:567
+#. i18n: ectx: property (text), widget (QLabel)
+#. i18n: file: config/qtcurveconfigbase.ui:988
+#. i18n: ectx: property (text), widget (QLabel)
+#. i18n: file: config/qtcurveconfigbase.ui:1395
+#. i18n: ectx: property (text), widget (QLabel)
+#. i18n: file: config/qtcurveconfigbase.ui:1754
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:106 po/rc.cpp:189 po/rc.cpp:269 po/rc.cpp:330 rc.cpp:106
+#: rc.cpp:189 rc.cpp:269 rc.cpp:330
+msgid "Coloration:"
+msgstr "Renklendirme:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:583
+#. i18n: ectx: property (whatsThis), widget (QComboBox)
+#: po/rc.cpp:109 rc.cpp:109
+msgid "This color setting affects both scrollbar sliders, and other sliders."
+msgstr ""
+"Bu renk ayarı hem kaydırma çubuğu sürgülerini hem diğer sürgüleri etkiler."
+
+#. i18n: file: config/qtcurveconfigbase.ui:616
+#. i18n: ectx: property (whatsThis), widget (QComboBox)
+#. i18n: file: config/qtcurveconfigbase.ui:704
+#. i18n: ectx: property (whatsThis), widget (QComboBox)
+#. i18n: file: config/qtcurveconfigbase.ui:616
+#. i18n: ectx: property (whatsThis), widget (QComboBox)
+#. i18n: file: config/qtcurveconfigbase.ui:704
+#. i18n: ectx: property (whatsThis), widget (QComboBox)
+#: po/rc.cpp:113 po/rc.cpp:131 rc.cpp:113 rc.cpp:131
+msgid ""
+"This appearance setting affects both scrollbar sliders, and other sliders."
+msgstr ""
+"Bu görünüm ayarı hem kaydırma çubuğu sürgülerini hem diğer sürgüleri etkiler."
+
+#. i18n: file: config/qtcurveconfigbase.ui:664
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:116 rc.cpp:116
+msgid "Style:"
+msgstr "Biçem:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:672
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:119 rc.cpp:119
+msgid "Slider thumbs:"
+msgstr "Sürgü minyatürleri:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:680
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:122 rc.cpp:122
+msgid "Slider width:"
+msgstr "Sürgü genişliği:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:688
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:125 rc.cpp:125
+msgid "Fill used part of groove:"
+msgstr "Kanalın kullanılan kısmını doldur:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:720
+#. i18n: ectx: property (whatsThis), widget (QComboBox)
+#: po/rc.cpp:137 rc.cpp:137
+msgid ""
+"This setting only affects standard sliders - i.e. not scrollbar sliders. "
+"'Triangular' is a very similar style to plastik's sliders."
+msgstr ""
+"Bu ayar sadece standart sürgüleri etkiler, kaydırma çubuğu sürgülerini "
+"değiştirmez. 'Üç köşeli' plastik'in sürgülerine çok benzer bir biçemdir."
+
+#. i18n: file: config/qtcurveconfigbase.ui:728
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:140 rc.cpp:140
+msgid "Groove appearance:"
+msgstr "Kanal görünümü:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:736
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:143 rc.cpp:143
+msgid "Thin scrollbar groove"
+msgstr "İnce kaydırma çubuğu kanalı"
+
+#. i18n: file: config/qtcurveconfigbase.ui:744
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:146 rc.cpp:146
+msgid "Scrollbar buttons:"
+msgstr "Kaydırma çubuğu düğmeleri:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:766
+#. i18n: ectx: property (whatsThis), widget (QComboBox)
+#: po/rc.cpp:149 rc.cpp:149
+msgid ""
+"This controls the position, and number, of buttons on a scrollbar.\n"
+"\n"
+"KDE - 1 button at the top/left, and two at the bottom/right\n"
+"Windows - 1 botton at each end\n"
+"Platinum -  no buttons at the top/left, two at bottom/right\n"
+"Next - two buttons at the top/left, none at bottom/right\n"
+"None - no buttons, only the slider"
+msgstr ""
+"Bu, kaydırma çubuğu üzerindeki düğmelerin konum ve adedini belirler.\n"
+"\n"
+"KDE - sol üstte bir, sağ altta iki düğme\n"
+"Windows - iki uçta da bir düğme\n"
+"Platin -  sadece sağ altta iki düğme\n"
+"Next - sadece sol üstte iki düğme\n"
+"Yok - düğme yok, sadece sürgü"
+
+#. i18n: file: config/qtcurveconfigbase.ui:787
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:158 rc.cpp:158
+msgid "Color only on mouse-over"
+msgstr "Sadece fare altındayken renklendir"
+
+#. i18n: file: config/qtcurveconfigbase.ui:818
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:161 rc.cpp:161
+msgid "Animated"
+msgstr "Hareketli"
+
+#. i18n: file: config/qtcurveconfigbase.ui:843
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:164 rc.cpp:164
+msgid "Groove:"
+msgstr "Kanal:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:851
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:167 rc.cpp:167
+msgid "Bar:"
+msgstr "Çubuk:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:880
+#. i18n: ectx: property (whatsThis), widget (QCheckBox)
+#: po/rc.cpp:173 rc.cpp:173
+msgid ""
+"Enable this option to remove the 1 pixel border around the filled element."
+msgstr ""
+"Doldurulan öğenin etrafındaki bir piksellik kenarlığı kaldırmak için bu "
+"seçeneği açın."
+
+#. i18n: file: config/qtcurveconfigbase.ui:914
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:176 rc.cpp:176
+msgid "Indicate with:"
+msgstr "Belirteç:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:922
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:179 rc.cpp:179
+msgid "Embolden text"
+msgstr "Metni kalınlaştır"
+
+#. i18n: file: config/qtcurveconfigbase.ui:977
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:182 rc.cpp:182
+msgid "Highlight by:"
+msgstr "Vurgulama biçimi:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:980
+#. i18n: ectx: property (whatsThis), widget (QLabel)
+#: po/rc.cpp:186 rc.cpp:186
+#, no-c-format
+msgid ""
+"This controls the % that widgets will be highlighted by when the mouse "
+"hovers over them"
+msgstr ""
+"Bu ayar fare üzerlerine geldiğinde gereçlerin yüzde kaç oranda "
+"vurgulanacağını belirler."
+
+#. i18n: file: config/qtcurveconfigbase.ui:1064
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:196 rc.cpp:196
+msgid "Button color"
+msgstr "Düğme rengi"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1072
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:199 rc.cpp:199
+msgid "Header appearance:"
+msgstr "Başlık görünümü:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1085
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:202 rc.cpp:202
+msgid "Shade header of sorted column:"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1109
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:206 rc.cpp:206
+msgid "Selection appearance (KDE4 && Gtk2):"
+msgstr "Seçim görünümü (KDE4 ve Gtk2):"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1139
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:209 rc.cpp:209
+msgid "Force alternate colors"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1147
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:212 rc.cpp:212
+msgid "Lines between items:"
+msgstr "Öğeler arasındaki çizgiler:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1160
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:215 rc.cpp:215
+msgid "Square selection"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1181
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:218 rc.cpp:218
+msgid "Scrollbars on the outside"
+msgstr "Kaydırma çubukları dışarıda"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1189
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:221 rc.cpp:221
+msgid "Highlight on focus (KDE)"
+msgstr "Odaklanınca vurgula (KDE)"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1197
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:224 rc.cpp:224
+msgid ""
+"Always draw with a square frame - regardless of the general round setting."
+msgstr ""
+"Gelen yuvarlatma ayarını dikkate alma, her zaman köşeli bir çerçeve kullan."
+
+#. i18n: file: config/qtcurveconfigbase.ui:1235
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:227 rc.cpp:227
+msgid "Active tab appearance:"
+msgstr "Etkin sekme görünümü:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1243
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:230 rc.cpp:230
+msgid "Inactive tab appearance:"
+msgstr "Etkin olmayan sekme görünümü:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1261
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:233 rc.cpp:233
+msgid "Highlight"
+msgstr "Vurgula"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1264
+#. i18n: ectx: property (whatsThis), widget (QCheckBox)
+#: po/rc.cpp:236 rc.cpp:236
+msgid "This will cause a coloured stripe to be drawn over the current tab."
+msgstr ""
+"Bu seçenek etkin sekmenin üst kısmına renkli bir şerit çizilmesini sağlar."
+
+#. i18n: file: config/qtcurveconfigbase.ui:1275
+#. i18n: ectx: property (prefix), widget (KIntNumInput)
+#: po/rc.cpp:243 rc.cpp:243
+msgid "Tint by "
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1283
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:246 rc.cpp:246
+msgid "Mouse-over:"
+msgstr "Fare altında:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1296
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:249 rc.cpp:249
+msgid "Round all tabs"
+msgstr "Tüm sekmeleri yuvarlat"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1304
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:252 rc.cpp:252
+msgid "Draw a light border around tab widget"
+msgstr "Sekme gerecinin etrafına açık renk bir kenarlık çiz"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1312
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:255 rc.cpp:255
+msgid "Draw inner border of inactive tabs"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1345
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:262 rc.cpp:262
+#, fuzzy
+msgid "Alter background by:"
+msgstr "Seçili arkaplan"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1353
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:265 rc.cpp:265
+msgid "Invert shade of bottom tabs"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1403
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:272 rc.cpp:272
+msgid "'X' style checkmarks"
+msgstr "'X' biçemli işaretler"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1445
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:275 rc.cpp:275
+msgid "Button like"
+msgstr "Düğme gibi"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1453
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:278 rc.cpp:278
+msgid "Small radio 'dot'"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1461
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:281 rc.cpp:281
+msgid "Color when selected"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1515
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:291 rc.cpp:291
+msgid "Button Appearance:"
+msgstr "Düğme Görünümü:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1533
+#. i18n: ectx: property (text), widget (QLabel)
+#. i18n: file: config/qtcurveconfigbase.ui:1541
+#. i18n: ectx: property (text), widget (QLabel)
+#. i18n: file: config/qtcurveconfigbase.ui:1533
+#. i18n: ectx: property (text), widget (QLabel)
+#. i18n: file: config/qtcurveconfigbase.ui:1541
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:294 po/rc.cpp:297 rc.cpp:294 rc.cpp:297
+msgid "Titlebar Appearance:"
+msgstr "Başlık Çubuğu Görünümü:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1554
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:300 rc.cpp:300
+msgid "Text alignment:"
+msgstr "Metin hizalama:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1567
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:303 rc.cpp:303
+msgid "Color titlebar only (KDE4)"
+msgstr "Sadece başlık çubuğu renkli (KDE4)"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1592
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:306 rc.cpp:306
+msgid "Light border (KDE4)"
+msgstr "Açık renk kenarlık (KDE4)"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1613
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:309 rc.cpp:309
+msgid "Handles:"
+msgstr "Tutamaçlar:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1621
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:312 rc.cpp:312
+msgid "Border:"
+msgstr "Kenarlık:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1673
+#. i18n: ectx: property (title), widget (QGroupBox)
+#: po/rc.cpp:315 rc.cpp:315
+msgid "Toolbars"
+msgstr "Araç çubukları"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1700
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:321 rc.cpp:321
+msgid "Separators:"
+msgstr "Ayraçlar:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1732
+#. i18n: ectx: property (title), widget (QGroupBox)
+#: po/rc.cpp:324 rc.cpp:324
+msgid "Menus"
+msgstr "Menüler"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1746
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:327 rc.cpp:327
+msgid "Apply coloration to active window only"
+msgstr "Renklendirmeyi sadece etkin pencereye uygula"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1762
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:333 rc.cpp:333
+msgid "Menubar appearance:"
+msgstr "Menü çubuğu görünümü:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1770
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:336 rc.cpp:336
+msgid "Menuitem appearance:"
+msgstr "Menü öğesi görünümü:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1778
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:339 rc.cpp:339
+msgid "Use 'highlight' color for active menuitems"
+msgstr "Etkin menü öğelerine 'vurgu' rengi uygula"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1786
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:342 rc.cpp:342
+msgid "Stripe (KDE):"
+msgstr "Şerit (KDE):"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1794
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:345 rc.cpp:345
+msgid "Border popupmenus"
+msgstr "Açılır menülere kenarlık ekle"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1802
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:348 rc.cpp:348
+msgid "Sub-menu delay:"
+msgstr "Alt menü gecikmesi:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1818
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:351 rc.cpp:351
+msgid "Color menubar items on mouse-over"
+msgstr "Fare altında menü çubuğu öğelerini renklendir"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1826
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:354 rc.cpp:354
+msgid "Custom text colors (active/normal):"
+msgstr "Özel metin renkleri (etkin-normal):"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1871
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:360 rc.cpp:360
+msgid "Thinner menu items"
+msgstr "Daha ince menü öğeleri"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1879
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:363 rc.cpp:363
+msgid "Popup-menu background:"
+msgstr "Açılır menü arkaplanı:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1928
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:370 rc.cpp:370
+msgid "Border menuitems"
+msgstr "Menü öğelerine kenarlık çiz"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1936
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:373 rc.cpp:373
+msgid "Draw icons"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:1944
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:376 rc.cpp:376
+msgid "Round selected menubar items on top only"
+msgstr "Sadece en üst menü çubuğu öğelerini yuvarlat"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1960
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:380 rc.cpp:380
+msgid "Enable mouse-over for menubar items"
+msgstr "Menü çubuğu öğelerine 'fare altında' efekti uygula"
+
+#. i18n: file: config/qtcurveconfigbase.ui:1983
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:383 rc.cpp:383
+#, fuzzy
+msgid "Titlebar appearance:"
+msgstr "Başlık Çubuğu Görünümü:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:2043
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:386 rc.cpp:386
+msgid "'Fix' parentless dialogs"
+msgstr "Yetim diyalogları 'tamir et'"
+
+#. i18n: file: config/qtcurveconfigbase.ui:2050
+#. i18n: ectx: property (whatsThis), widget (QCheckBox)
+#: po/rc.cpp:389 rc.cpp:389
+msgid ""
+"<h2><font color=\"#ff0000\">Warning: Experimental!</font></h1><p><p>Some "
+"applications - such as Kate, Kaffeine, and GIMP - produce dialogs that have "
+"no 'parent'. This causes the dialog to recieve an entry in the taskbar, and "
+"allows the dialog to be minimised independantly of the main application "
+"window.</p>\n"
+"\n"
+"<p>If you enable this option, QtCurve will try to 'fix' this by assigning "
+"the dialogs a parent.</p>\n"
+"\n"
+"<p><b>Note:</b> This may brake some applications, as it wiill alter the "
+"behaviour of dialogs in a way the application has not intended. Therefore, "
+"please use with care.</p>"
+msgstr ""
+"<h2><font color=\"#ff0000\">Uyarı: Deneyseldir!</font></h1><p><p> Kate, "
+"Kaffeine ve GIMP gibi bazı uygulamalar üst penceresi olmayan (yetim) diyalog "
+"pencereleri oluşturur. Bu durum o diyalog çubuklarının görev çubuğunda yer "
+"almasına neden olur ve ana uygulama penceresinden bağımsız olarak "
+"küçültülebilmelerine olanak verir.</p>\n"
+"\n"
+"<p>Eğer bu seçeneği işaretlerseniz, QtCurve o diyalog pencerelerine bir "
+"ebeveyn atayarak bu durumu 'tamir etmeye' çalışır.</p>\n"
+"\n"
+"<p><b>Not:</b> Bu seçenek diyalog pencerelerinin davranışını uygulamada "
+"ayarlanan şeklin dışına çıkardığı için bazı uygulamaların düzgün çalışmasını "
+"engelleyebilir. O nedenle, dikkatli kullanmanızı tavsiye ederiz.</p>"
+
+#. i18n: file: config/qtcurveconfigbase.ui:2058
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:396 rc.cpp:396
+msgid "Map KDE icons (Gtk2)"
+msgstr "KDE simgelerine eşle (Gtk2)"
+
+#. i18n: file: config/qtcurveconfigbase.ui:2066
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:399 rc.cpp:399
+msgid "Gtk button order"
+msgstr "Gtk düğme sırası"
+
+#. i18n: file: config/qtcurveconfigbase.ui:2091
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:402 rc.cpp:402
+msgid "Character to use for password entries:"
+msgstr "Parola girişlerinde kullanılacak karakter:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:2115
+#. i18n: ectx: property (text), widget (QCheckBox)
+#: po/rc.cpp:406 rc.cpp:406
+msgid "Don't make 'auto-default' buttons larger (KDE4)"
+msgstr ""
+
+#. i18n: file: config/qtcurveconfigbase.ui:2141
+#. i18n: ectx: property (title), widget (QGroupBox)
+#: po/rc.cpp:409 rc.cpp:409
+msgid "Settings"
+msgstr "Ayarlar"
+
+#. i18n: file: config/qtcurveconfigbase.ui:2155
+#. i18n: ectx: property (text), widget (QListView)
+#: po/rc.cpp:413 rc.cpp:413
+#, no-c-format
+msgid "Position (%)"
+msgstr "Konum (%)"
+
+#. i18n: file: config/qtcurveconfigbase.ui:2166
+#. i18n: ectx: property (text), widget (QListView)
+#: po/rc.cpp:417 rc.cpp:417
+#, no-c-format
+msgid "Value (%)"
+msgstr "Değer (%)"
+
+#. i18n: file: config/qtcurveconfigbase.ui:2192
+#. i18n: ectx: property (title), widget (QGroupBox)
+#: po/rc.cpp:420 rc.cpp:420
+msgid "Gradient Stop"
+msgstr "Eğim Durağı"
+
+#. i18n: file: config/qtcurveconfigbase.ui:2259
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:426 rc.cpp:426
+msgid "Value:"
+msgstr "Değer:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:2275
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:429 rc.cpp:429
+msgid "Position:"
+msgstr "Konum:"
+
+#. i18n: file: config/qtcurveconfigbase.ui:2336
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:441 rc.cpp:441
+#, no-c-format
+msgid ""
+"<i><b>NOTE: </b><br>\n"
+"\n"
+"<u>Position</u> has a range of 0% to 100% - 0% being top/left, and 100% "
+"being bottom/right.<br>\n"
+"\n"
+"<u>Value</u> has a range of 0% to 200%. A value of 120% implies lightening "
+"by 20%, and a value of 80% implies darkening by 20%</i>"
+msgstr ""
+"<i><b>NOT: </b><br>\n"
+"\n"
+"<u>Konum</u> yüzde 0 ile 100 arasında olabilir. 0 sol üst kısmı, 100 sağ alt "
+"kısmı temsil eder.<br>\n"
+"\n"
+"<u>Değer</u> yüzde 0 ile 200 arasında olabilir. % 120, % 20 oranında daha "
+"açık bir renk anlamına gelir, % 80 ise % 20 oranında daha koyu bir rengi "
+"temsil eder.</i>"
+
+#. i18n: file: config/qtcurveconfigbase.ui:2349
+#. i18n: ectx: property (title), widget (QGroupBox)
+#: po/rc.cpp:448 rc.cpp:448
+msgid "Preview"
+msgstr "Önizleme"
+
+#. i18n: file: config/qtcurveconfigbase.ui:2415
+#. i18n: ectx: property (title), widget (QGroupBox)
+#: po/rc.cpp:452 rc.cpp:452
+msgid "Use Custom Values"
+msgstr "Özel Değerler Kullan"
+
+#. i18n: file: config/qtcurveconfigbase.ui:2539
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:455 rc.cpp:455
+msgid ""
+"<i>QtCurve uses various hard-coded shading values to draw elements such as "
+"button frames, the background for pressed buttons, etc. The following is a "
+"brief overview of how each shade is used - use this as a guide only, as "
+"shades are used for various things.<br>\n"
+"\n"
+"1 Is used for the light part of 3d elements - such as the border of tab "
+"widgets.<br>\n"
+"2 Is used for the lighter shade of striped progressbars.<br>\n"
+"3 Is used for the dark part of 3d elements - such as the border of tab "
+"widgets.<br>\n"
+"4 Is used for the shaded border of checks and radios, toolbar borders (when "
+"set to dark), the dark part of sunken/raised slider handles, etc.<br>\n"
+"5 Is used for the background of pressed widgets, and the border of toolbars "
+"(when not dark).<br>\n"
+"6 Is used as the border of most widgets.</i>"
+msgstr ""
+"<i>QtCurve düğme çerçeveleri, basılı düğmelerin arkaplanı ve benzerleri için "
+"önceden belirlenmiş gölgeleme değerleri kullanır. Aşağıda her gölgenin nasıl "
+"kullanıldığına dair bir özet bulabilirsiniz. Gölgeler çeşitli öğelerde "
+"kullanıldığı için bunları sadece bir kılavuz olarak kullanın.<br>\n"
+"\n"
+"1 Sekme gereçleri gibi 3B öğelerin aydınlık tarafı için kullanılır.<br>\n"
+"2 Çizgili ilerleme çubuklarının açık renk kısmı için kullanılır.<br>\n"
+"3 Sekme gereçleri gibi 3B öğelerin karanlık tarafı için kullanılır.<br>\n"
+"4 Koyu renge ayarlandıklarında işaretleme kutularının ve araç çubuğu "
+"kenarlıklarının gölgeli kenarlığı için, çökmüş ya da yükseltilmiş sürgü "
+"tutamaçları ve benzer, yerlerde kullanılır.<br>\n"
+"5 Basılı durumdaki gereçlerin arkaplanı ve (koyu değilken) araç çubuklarının "
+"çerçeveleri için kullanılır.<br>\n"
+"6 Çoğu gerecin kenarlığı olarak kullanılır.</i>"
+
+#. i18n: file: config/qtcurveconfigbase.ui:2560
+#. i18n: ectx: property (text), widget (QLabel)
+#: po/rc.cpp:465 rc.cpp:465
+msgid "Shading routine:"
+msgstr "Gölgeleme yordamı:"
+
+#: po/rc.cpp:466 rc.cpp:466
+msgctxt "NAME OF TRANSLATORS"
+msgid "Your names"
+msgstr "Necmettin Begiter"
+
+#: po/rc.cpp:467 rc.cpp:467
+msgctxt "EMAIL OF TRANSLATORS"
+msgid "Your emails"
+msgstr "necmettin.begiter@gmail.com"
+
+#, fuzzy
+#~ msgid "Highlight text background on mouse-over"
+#~ msgstr "Metin arkaplanını vurgula"
+
+#~ msgid "Color"
+#~ msgstr "Renk"
+
+#~ msgid "Next"
+#~ msgstr "Next"
diff --git a/style/CMakeLists.txt b/style/CMakeLists.txt
index 030487b..0b5a404 100644
--- a/style/CMakeLists.txt
+++ b/style/CMakeLists.txt
@@ -1,10 +1,22 @@
-set(qtcurve_SRCS qtcurve.cpp pixmaps.h)
-add_definitions(-DQT_PLUGIN)
-include_directories(${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_BINARY_DIR} ${KDE3_INCLUDE_DIR} ${QT_INCLUDE_DIR} ${CMAKE_SOURCE_DIR}/common)
-link_directories(${KDE3_LIB_DIR})
-kde3_automoc(${qtcurve_SRCS})
-add_library(qtcurve SHARED ${qtcurve_SRCS})
-set_target_properties(qtcurve PROPERTIES PREFIX "")
-target_link_libraries(qtcurve ${QT_QTGUI_LIBRARY} kdefx)
-install(TARGETS qtcurve LIBRARY DESTINATION ${KDE3_LIB_DIR}/kde3/plugins/styles)
-install(FILES qtcurve.themerc DESTINATION ${KDE3PREFIX}/share/apps/kstyle/themes)
+if (NOT QTC_QT_ONLY)
+    set(qtcurve_SRCS qtcurve.cpp pixmaps.h)
+    add_definitions(-DQT_PLUGIN)
+    include_directories(${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_BINARY_DIR} ${KDE3_INCLUDE_DIR} ${QT_INCLUDE_DIR} ${CMAKE_SOURCE_DIR}/common)
+    link_directories(${KDE3_LIB_DIR})
+    kde3_automoc(${qtcurve_SRCS})
+    add_library(qtcurve MODULE ${qtcurve_SRCS})
+    set_target_properties(qtcurve PROPERTIES PREFIX "")
+    target_link_libraries(qtcurve ${QT_LIBRARIES} kdefx)
+    install(TARGETS qtcurve LIBRARY DESTINATION ${KDE3_LIB_DIR}/kde3/plugins/styles)
+    install(FILES qtcurve.themerc DESTINATION ${KDE3PREFIX}/share/apps/kstyle/themes)
+else (NOT QTC_QT_ONLY)
+    set(qtcurve_MOC_CLASSES qtcurve.h qtc_kstyle.h)
+    QTCURVE_QT_WRAP_CPP(qtcurve_MOC_SRCS ${qtcurve_MOC_CLASSES})
+    set(qtcurve_SRCS qtcurve.cpp qtc_kstyle.cpp pixmaps.h)
+    include_directories(${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_BINARY_DIR} ${QT_INCLUDE_DIR}  ${CMAKE_SOURCE_DIR}/common)
+    add_library(qtcurve MODULE ${qtcurve_SRCS} ${qtcurve_MOC_SRCS})
+    set_target_properties(qtcurve PROPERTIES PREFIX "")
+    target_link_libraries(qtcurve ${QT_LIBRARIES})
+    install(TARGETS qtcurve LIBRARY DESTINATION ${QT_PLUGINS_DIR}/styles)
+endif (NOT QTC_QT_ONLY)
+
diff --git a/style/pixmaps.h b/style/pixmaps.h
index 4873fa5..ff34491 100644
--- a/style/pixmaps.h
+++ b/style/pixmaps.h
@@ -35,6 +35,30 @@ static const unsigned char radio_frame_png_data[] = {
 };
 
 /* Generated by qembed */
+static const unsigned int  radio_inner_png_len = 276;
+static const unsigned char radio_inner_png_data[] = {
+    0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,
+    0x44,0x52,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x0d,0x08,0x04,0x00,0x00,
+    0x00,0xd8,0xe2,0x2c,0xf7,0x00,0x00,0x00,0x01,0x73,0x52,0x47,0x42,0x00,
+    0xae,0xce,0x1c,0xe9,0x00,0x00,0x00,0x02,0x62,0x4b,0x47,0x44,0x00,0x00,
+    0xaa,0x8d,0x23,0x32,0x00,0x00,0x00,0x09,0x70,0x48,0x59,0x73,0x00,0x00,
+    0x0b,0x13,0x00,0x00,0x0b,0x13,0x01,0x00,0x9a,0x9c,0x18,0x00,0x00,0x00,
+    0x07,0x74,0x49,0x4d,0x45,0x07,0xd8,0x0c,0x0a,0x0c,0x30,0x0e,0xa9,0x10,
+    0xdb,0x17,0x00,0x00,0x00,0x98,0x49,0x44,0x41,0x54,0x18,0xd3,0x85,0x8c,
+    0x31,0x0a,0xc2,0x40,0x10,0x45,0x1f,0x62,0x95,0x9b,0x18,0x16,0x6b,0xf1,
+    0x08,0xa6,0xf5,0x04,0x36,0x5a,0x59,0x6e,0x61,0x9b,0x0b,0x04,0xcc,0x01,
+    0x2c,0x72,0x0c,0x6b,0x3d,0x81,0x85,0x20,0x04,0x0b,0x31,0x45,0x18,0x85,
+    0x80,0x36,0x81,0x58,0x0c,0x92,0x65,0x40,0xfc,0xd5,0x1b,0xde,0xfc,0x0f,
+    0x7f,0x33,0xc4,0x23,0x74,0xbc,0xc8,0x88,0x42,0xe1,0x28,0xa9,0xd9,0x30,
+    0x65,0xc9,0x85,0x07,0xb3,0xbe,0x51,0xb2,0x0f,0x1e,0x73,0x6e,0xc4,0x8a,
+    0x9e,0xda,0xcc,0x9f,0xd8,0x2a,0x08,0xa9,0x51,0x0b,0x2a,0x85,0x8e,0xc4,
+    0x28,0x47,0x0b,0x03,0xe0,0xcd,0xd8,0xa8,0x11,0x8d,0x42,0xc6,0xd5,0xa8,
+    0x03,0x85,0x42,0xc4,0x93,0x5d,0x20,0x3c,0xc2,0xe4,0x7b,0x24,0xdc,0x39,
+    0xb3,0xc2,0x31,0xe7,0x88,0xb0,0x0e,0x27,0x62,0x72,0x2a,0x5a,0x84,0xa2,
+    0x6f,0xfc,0xcc,0x07,0xef,0xe8,0x26,0x2e,0x6f,0x29,0xb2,0x5f,0x00,0x00,
+    0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
+};
+
 static const unsigned int  radio_light_png_len = 236;
 static const unsigned char radio_light_png_data[] = {
     0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,
@@ -56,25 +80,47 @@ static const unsigned char radio_light_png_data[] = {
     0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
 };
 
-static const unsigned int  radio_on_png_len = 231;
+static const unsigned int  radio_on_png_len = 221;
 static const unsigned char radio_on_png_data[] = {
     0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,
     0x44,0x52,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x0d,0x08,0x06,0x00,0x00,
-    0x00,0x72,0xeb,0xe4,0x7c,0x00,0x00,0x00,0x06,0x62,0x4b,0x47,0x44,0x00,
-    0xff,0x00,0xff,0x00,0xff,0xa0,0xbd,0xa7,0x93,0x00,0x00,0x00,0x09,0x70,
-    0x48,0x59,0x73,0x00,0x00,0x0b,0x13,0x00,0x00,0x0b,0x13,0x01,0x00,0x9a,
-    0x9c,0x18,0x00,0x00,0x00,0x07,0x74,0x49,0x4d,0x45,0x07,0xd7,0x05,0x1d,
-    0x0b,0x26,0x21,0x2a,0x9e,0xfa,0x9e,0x00,0x00,0x00,0x74,0x49,0x44,0x41,
-    0x54,0x28,0xcf,0xd5,0xd0,0x3d,0x0e,0x82,0x50,0x10,0x04,0xe0,0x4f,0xa9,
-    0x68,0x39,0x84,0x3d,0xb7,0x80,0x96,0xda,0x23,0xd8,0x51,0xd8,0x7a,0x2f,
-    0x2f,0xc0,0x19,0x80,0xd2,0xc6,0xe6,0x9d,0xc1,0xe6,0x91,0xbc,0x6c,0x50,
-    0x5b,0x9d,0x64,0xb3,0x7f,0x33,0xd9,0xcc,0xf2,0x77,0xb8,0x60,0xc2,0x9c,
-    0x73,0x17,0x09,0xd5,0x8e,0x00,0xee,0x68,0x73,0x3d,0x60,0xc1,0xba,0x91,
-    0x8e,0x41,0x74,0xc6,0x13,0x63,0x98,0xdf,0xca,0xe6,0x10,0x96,0x33,0x52,
-    0x98,0x35,0x39,0x9f,0xde,0x5d,0x4a,0x05,0xa9,0x14,0xa4,0x4f,0x9e,0x1e,
-    0xe8,0x51,0xe7,0xd8,0x70,0x2d,0x3d,0xed,0xa1,0xfb,0xf6,0xbd,0x1f,0xc7,
-    0x0b,0x02,0x3c,0x12,0x4f,0x16,0x9a,0x81,0xa2,0x00,0x00,0x00,0x00,0x49,
-    0x45,0x4e,0x44,0xae,0x42,0x60,0x82
+    0x00,0x72,0xeb,0xe4,0x7c,0x00,0x00,0x00,0x01,0x73,0x52,0x47,0x42,0x00,
+    0xae,0xce,0x1c,0xe9,0x00,0x00,0x00,0x06,0x62,0x4b,0x47,0x44,0x00,0xff,
+    0x00,0xff,0x00,0xff,0xa0,0xbd,0xa7,0x93,0x00,0x00,0x00,0x09,0x70,0x48,
+    0x59,0x73,0x00,0x00,0x0b,0x13,0x00,0x00,0x0b,0x13,0x01,0x00,0x9a,0x9c,
+    0x18,0x00,0x00,0x00,0x07,0x74,0x49,0x4d,0x45,0x07,0xd9,0x04,0x11,0x0a,
+    0x2d,0x0a,0x29,0xa8,0x47,0x5a,0x00,0x00,0x00,0x5d,0x49,0x44,0x41,0x54,
+    0x28,0xcf,0xd5,0xd0,0xb1,0x09,0x80,0x40,0x0c,0x05,0xd0,0xa7,0x56,0xb6,
+    0x37,0x8d,0x23,0xe8,0x44,0xae,0xe8,0x0c,0x62,0x69,0x7d,0x33,0xd8,0x9c,
+    0xa0,0xe1,0x0a,0x0b,0x0b,0xfd,0xf0,0x09,0x81,0xbc,0x26,0xfc,0x2e,0x23,
+    0x16,0xac,0x65,0x8e,0x4f,0xc0,0x5a,0xe9,0x0d,0x36,0x01,0x2d,0x48,0xc8,
+    0x65,0x4f,0x65,0x66,0x0c,0xe7,0x51,0x1b,0xd0,0x15,0xa8,0xe0,0x2a,0xca,
+    0xe1,0x20,0x05,0x0c,0xba,0x80,0x76,0x4c,0xe8,0x4b,0xcf,0xcc,0xd8,0x5e,
+    0xfd,0xde,0xc7,0x72,0x00,0x70,0x62,0x14,0x61,0xef,0x49,0xda,0x94,0x00,
+    0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
+};
+
+static const unsigned int  radio_on_small_png_len = 258;
+static const unsigned char radio_on_small_png_data[] = {
+    0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,
+    0x44,0x52,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x0d,0x08,0x06,0x00,0x00,
+    0x00,0x72,0xeb,0xe4,0x7c,0x00,0x00,0x00,0x01,0x73,0x52,0x47,0x42,0x00,
+    0xae,0xce,0x1c,0xe9,0x00,0x00,0x00,0x06,0x62,0x4b,0x47,0x44,0x00,0xff,
+    0x00,0xff,0x00,0xff,0xa0,0xbd,0xa7,0x93,0x00,0x00,0x00,0x09,0x70,0x48,
+    0x59,0x73,0x00,0x00,0x0b,0x13,0x00,0x00,0x0b,0x13,0x01,0x00,0x9a,0x9c,
+    0x18,0x00,0x00,0x00,0x07,0x74,0x49,0x4d,0x45,0x07,0xd9,0x0a,0x14,0x0b,
+    0x13,0x19,0x65,0xff,0x39,0x9d,0x00,0x00,0x00,0x82,0x49,0x44,0x41,0x54,
+    0x28,0xcf,0xcd,0xd0,0x31,0x0a,0xc2,0x50,0x10,0x04,0xd0,0xa7,0x82,0xf0,
+    0x41,0x9b,0x78,0x0b,0xdb,0x9c,0xc1,0xc6,0xeb,0xa4,0xcf,0x65,0x2c,0x3c,
+    0x84,0x07,0x51,0x1b,0x0b,0x49,0x6b,0x0a,0x45,0x02,0x22,0x62,0xb3,0x82,
+    0x04,0x63,0x95,0x22,0xd3,0x0c,0x3b,0xcc,0xcc,0x2e,0xcb,0xa0,0x31,0xfa,
+    0xa1,0x25,0xac,0x90,0xa1,0xc6,0x0e,0xcd,0xbf,0x92,0x84,0x12,0x07,0x54,
+    0xd8,0xc7,0x9c,0xbe,0x4d,0x93,0x56,0x68,0x8d,0x02,0x77,0x5c,0x31,0xc3,
+    0x12,0x27,0x1c,0x3f,0xa6,0x71,0x2b,0xb4,0xc0,0x0b,0x8f,0xe0,0x1a,0xf3,
+    0x38,0x55,0x57,0xe8,0x12,0xda,0x34,0x38,0xc3,0x2d,0xc2,0x9d,0xe7,0x9d,
+    0xa3,0x39,0x8f,0xad,0x0d,0xb6,0xd8,0xe0,0xd9,0xeb,0xf7,0x06,0x86,0x37,
+    0x26,0x03,0x19,0xb1,0xe6,0xd3,0x1d,0x4f,0x00,0x00,0x00,0x00,0x49,0x45,
+    0x4e,0x44,0xae,0x42,0x60,0x82
 };
 
 static const unsigned int  check_on_png_len = 179;
@@ -140,67 +186,33 @@ static const unsigned char slider_light_png_data[] = {
     0x42,0x60,0x82
 };
 
-static const unsigned int  slider_v_png_len = 310;
-static const unsigned char slider_v_png_data[] = {
-    0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,
-    0x44,0x52,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x15,0x08,0x06,0x00,0x00,
-    0x00,0x9d,0x6e,0x64,0x8a,0x00,0x00,0x00,0x06,0x62,0x4b,0x47,0x44,0x00,
-    0xff,0x00,0xff,0x00,0xff,0xa0,0xbd,0xa7,0x93,0x00,0x00,0x00,0x09,0x70,
-    0x48,0x59,0x73,0x00,0x00,0x0b,0x13,0x00,0x00,0x0b,0x13,0x01,0x00,0x9a,
-    0x9c,0x18,0x00,0x00,0x00,0x07,0x74,0x49,0x4d,0x45,0x07,0xd7,0x06,0x19,
-    0x0b,0x21,0x3b,0x50,0x7f,0x78,0xa4,0x00,0x00,0x00,0xc3,0x49,0x44,0x41,
-    0x54,0x38,0xcb,0xed,0xd4,0x31,0x4e,0x02,0x41,0x14,0x87,0xf1,0x5f,0xa0,
-    0xa3,0x5f,0x3a,0xc2,0x1d,0x0c,0x21,0x48,0x24,0xf4,0x36,0x9a,0x58,0xee,
-    0x0d,0xa8,0xac,0xe1,0x16,0x36,0x34,0x9e,0x02,0x2e,0xc0,0x19,0x30,0x6e,
-    0xa2,0x26,0x54,0x34,0xc6,0x06,0x05,0xeb,0xa5,0x19,0xc8,0x92,0x2c,0x32,
-    0xda,0xd8,0xf0,0x35,0x33,0x99,0x79,0x5f,0x5e,0x26,0x79,0xff,0xe1,0x90,
-    0x04,0x53,0x3c,0x23,0x0f,0xeb,0x34,0x9c,0xef,0xa9,0x14,0xf6,0x29,0x16,
-    0x78,0xc7,0x08,0x5d,0x0c,0xb1,0xc4,0x5b,0xb8,0x3f,0x20,0xc5,0x2b,0xfa,
-    0xca,0xe9,0x62,0x5e,0x14,0x13,0x6c,0xd0,0xf3,0x33,0x1d,0x7c,0x22,0xa9,
-    0x62,0x80,0x0f,0x3c,0x9c,0x90,0x96,0x68,0xa0,0x29,0x3c,0xf6,0x4e,0x1c,
-    0xd7,0xa1,0x5e,0x8e,0xcb,0x48,0xe9,0x02,0x79,0xc5,0x1f,0x38,0x4b,0xff,
-    0x22,0x65,0xa8,0x47,0xd6,0xd7,0x91,0x55,0x51,0xc3,0x15,0x26,0x11,0xd2,
-    0x3d,0x66,0xbb,0x29,0xff,0x8e,0x18,0xa5,0x16,0xbe,0x8a,0x81,0x4c,0xf1,
-    0x12,0x72,0x53,0x46,0x1b,0x4f,0xc7,0x82,0xb8,0xc6,0x23,0x6e,0x43,0xe7,
-    0x1b,0x8c,0xb1,0x2a,0x13,0x7e,0xf5,0x47,0x6c,0x01,0x0f,0x64,0x29,0x02,
-    0xd4,0x3b,0x9e,0x77,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,
-    0x60,0x82
-};
-
-static const unsigned int  slider_light_v_png_len = 204;
-static const unsigned char slider_light_v_png_data[] = {
+static const unsigned int  check_x_on_png_len = 154;
+static const unsigned char check_x_on_png_data[] = {
     0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,
-    0x44,0x52,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x15,0x08,0x06,0x00,0x00,
-    0x00,0x9d,0x6e,0x64,0x8a,0x00,0x00,0x00,0x93,0x49,0x44,0x41,0x54,0x38,
-    0xcb,0xed,0xd3,0xa1,0x0a,0x02,0x51,0x10,0x85,0xe1,0x8f,0x75,0x41,0x10,
-    0x9b,0x4d,0x11,0xb1,0x18,0xad,0x46,0x93,0xdd,0x6a,0xf3,0x51,0x4c,0x3e,
-    0x97,0x46,0x93,0x6f,0x20,0x88,0x60,0x5f,0x58,0x0c,0x06,0xd7,0x72,0xc3,
-    0x65,0x51,0xd9,0x5d,0x30,0x08,0x9e,0x32,0xc3,0x9d,0xf9,0x39,0x77,0x60,
-    0x86,0x06,0x6a,0x45,0x79,0x8a,0x11,0x96,0x38,0x62,0x83,0x36,0x86,0xc8,
-    0x90,0xe3,0x01,0x49,0x04,0xcc,0x70,0xc2,0x04,0x0b,0x4c,0xb1,0xc3,0x00,
-    0x3d,0x14,0x65,0xc7,0x71,0x78,0x5c,0xa1,0x5b,0xaa,0x75,0xde,0x7d,0x73,
-    0x8d,0xed,0x0b,0xe0,0xa3,0x0a,0xcc,0xab,0x36,0x27,0x51,0x7e,0x6d,0x02,
-    0xf9,0x43,0x3f,0x01,0xf5,0xeb,0x9e,0xc6,0x39,0x6c,0xf9,0x01,0xf7,0xaa,
-    0x4e,0xfb,0x10,0xf3,0x3a,0x4e,0x39,0x6e,0xb8,0xd4,0x9d,0x2f,0xf5,0x4d,
-    0x3d,0x01,0xf6,0xc8,0x14,0xaa,0x58,0xc9,0x89,0xb4,0x00,0x00,0x00,0x00,
-    0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
+    0x44,0x52,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x09,0x08,0x06,0x00,0x00,
+    0x00,0xe0,0x91,0x06,0x10,0x00,0x00,0x00,0x61,0x49,0x44,0x41,0x54,0x18,
+    0x95,0x6d,0x8f,0x41,0x11,0xc0,0x30,0x08,0x04,0xb7,0x83,0x83,0xea,0x88,
+    0xa0,0x88,0xe9,0xb3,0x1a,0xaa,0x01,0x1d,0xd1,0x50,0x41,0xfd,0x5c,0x12,
+    0x60,0xca,0xef,0x60,0xe1,0x0e,0x03,0x2e,0xe0,0x01,0x4e,0x60,0xb0,0x6b,
+    0xf5,0x0f,0xe0,0x0d,0x03,0x07,0x6e,0x01,0x7d,0x36,0x4d,0x17,0x9a,0x74,
+    0x93,0xee,0x71,0xd1,0x64,0x51,0xc1,0x74,0xd9,0x24,0x2a,0x18,0xad,0x99,
+    0x50,0xca,0x50,0xac,0x87,0xfd,0x00,0x5e,0x33,0x9a,0xde,0xac,0x16,0x29,
+    0x63,0xfc,0x6e,0x65,0x28,0x19,0xfd,0x03,0xc4,0xa9,0x14,0xf0,0x37,0xcf,
+    0xd8,0xd2,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
 };
 
-static const unsigned int  check_x_on_png_len = 181;
-static const unsigned char check_x_on_png_data[] = {
+static const unsigned int  dot_png_len = 130;
+static const unsigned char dot_png_data[] = {
     0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,
-    0x44,0x52,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x09,0x08,0x06,0x00,0x00,
-    0x00,0xe0,0x91,0x06,0x10,0x00,0x00,0x00,0x09,0x70,0x48,0x59,0x73,0x00,
-    0x00,0x0b,0x13,0x00,0x00,0x0b,0x13,0x01,0x00,0x9a,0x9c,0x18,0x00,0x00,
-    0x00,0x1d,0x74,0x45,0x58,0x74,0x43,0x6f,0x6d,0x6d,0x65,0x6e,0x74,0x00,
-    0x43,0x72,0x65,0x61,0x74,0x65,0x64,0x20,0x77,0x69,0x74,0x68,0x20,0x54,
-    0x68,0x65,0x20,0x47,0x49,0x4d,0x50,0xef,0x64,0x25,0x6e,0x00,0x00,0x00,
-    0x3e,0x49,0x44,0x41,0x54,0x18,0x95,0x95,0x8f,0x4b,0x0a,0x00,0x20,0x08,
-    0x05,0x07,0xba,0xb6,0x97,0xab,0x7b,0x45,0xee,0xea,0x91,0x86,0x24,0xb8,
-    0x70,0x18,0x7f,0x0d,0x30,0xa0,0x03,0x13,0x18,0x9c,0x50,0xce,0x92,0x34,
-    0x11,0x94,0x07,0x90,0xd5,0x69,0x67,0x10,0x5e,0x62,0x29,0x94,0xab,0xd2,
-    0x89,0x5f,0xdf,0xdd,0x37,0x6c,0xee,0x67,0xfc,0x35,0xc3,0xb2,0x07,0xf6,
-    0x7b,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
+    0x44,0x52,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x05,0x08,0x04,0x00,0x00,
+    0x00,0x27,0x66,0xee,0x6e,0x00,0x00,0x00,0x01,0x73,0x52,0x47,0x42,0x00,
+    0xae,0xce,0x1c,0xe9,0x00,0x00,0x00,0x02,0x62,0x4b,0x47,0x44,0x00,0xff,
+    0x87,0x8f,0xcc,0xbf,0x00,0x00,0x00,0x2e,0x49,0x44,0x41,0x54,0x08,0xd7,
+    0x63,0x64,0xe0,0x62,0x88,0x63,0x50,0x64,0xf8,0xc7,0x30,0x8f,0x81,0x21,
+    0x83,0x41,0x8d,0x81,0x81,0x81,0x81,0xa1,0x8e,0x81,0xa1,0x97,0x01,0x0a,
+    0x98,0x18,0xfe,0x32,0xc0,0x81,0x2a,0x43,0x33,0x84,0x01,0x00,0xb7,0x94,
+    0x05,0x67,0x58,0x92,0xdc,0x0c,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,
+    0xae,0x42,0x60,0x82
 };
 
 #include <qcstring.h>
@@ -211,14 +223,15 @@ static struct Embed {
     const char *name;
 } embed_vec[] = {
     { 419, radio_frame_png_data, "radio_frame.png" },
+    { 276, radio_inner_png_data, "radio_inner.png" },
     { 236, radio_light_png_data, "radio_light.png" },
-    { 231, radio_on_png_data, "radio_on.png" },
+    { 221, radio_on_png_data, "radio_on.png" },
+    { 258, radio_on_small_png_data, "radio_on_small.png" },
     { 179, check_on_png_data, "check_on.png" },
     { 311, slider_png_data, "slider.png" },
     { 199, slider_light_png_data, "slider_light.png" },
-    { 310, slider_v_png_data, "slider_v.png" },
-    { 204, slider_light_v_png_data, "slider_light_v.png" },
-    { 181, check_x_on_png_data, "check_x_on.png" },
+    { 154, check_x_on_png_data, "check_x_on.png" },
+    { 130, dot_png_data, "dot.png" },
     { 0, 0, 0 }
 };
 
diff --git a/style/qtc_fixx11h.h b/style/qtc_fixx11h.h
new file mode 100644
index 0000000..ec8e53a
--- /dev/null
+++ b/style/qtc_fixx11h.h
@@ -0,0 +1,233 @@
+//#ifdef    don't do this, this file is supposed to be included
+//#define   multiple times
+
+/* Usage:
+
+ If you get compile errors caused by X11 includes (the line
+ where first error appears contains word like None, Unsorted,
+ Below, etc.), put #include <fixx11h.h> in the .cpp file 
+ (not .h file!) between the place where X11 headers are
+ included and the place where the file with compile
+ error is included (or the place where the compile error
+ in the .cpp file occurs).
+ 
+ This file remaps X11 #defines to const variables or
+ inline functions. The side effect may be that these
+ symbols may now refer to different variables
+ (e.g. if X11 #defined NoButton, after this file
+ is included NoButton would no longer be X11's
+ NoButton, but Qt::NoButton instead). At this time,
+ there's no conflict known that could cause problems.
+
+ The original X11 symbols are still accessible
+ (e.g. for None) as X::None, XNone, and also still
+ None, unless name lookup finds different None
+ first (in the current class, etc.)
+
+ Use 'Unsorted', 'Bool' and 'index' as templates.
+
+*/
+
+namespace X
+{
+
+// template --->
+// Affects: Should be without side effects.
+#ifdef Unsorted
+#ifndef FIXX11H_Unsorted
+#define FIXX11H_Unsorted
+const int XUnsorted = Unsorted;
+#undef Unsorted
+const int Unsorted = XUnsorted;
+#endif
+#undef Unsorted
+#endif
+// template <---
+
+// Affects: Should be without side effects.
+#ifdef None
+#ifndef FIXX11H_None
+#define FIXX11H_None
+const XID XNone = None;
+#undef None
+const XID None = XNone;
+#endif
+#undef None
+#endif
+
+// template --->
+// Affects: Should be without side effects.
+#ifdef Bool
+#ifndef FIXX11H_Bool
+#define FIXX11H_Bool
+typedef Bool XBool;
+#undef Bool
+typedef XBool Bool;
+#endif
+#undef Bool
+#endif
+// template <---
+
+// Affects: Should be without side effects.
+#ifdef KeyPress
+#ifndef FIXX11H_KeyPress
+#define FIXX11H_KeyPress
+const int XKeyPress = KeyPress;
+#undef KeyPress
+const int KeyPress = XKeyPress;
+#endif
+#undef KeyPress
+#endif
+
+// Affects: Should be without side effects.
+#ifdef KeyRelease
+#ifndef FIXX11H_KeyRelease
+#define FIXX11H_KeyRelease
+const int XKeyRelease = KeyRelease;
+#undef KeyRelease
+const int KeyRelease = XKeyRelease;
+#endif
+#undef KeyRelease
+#endif
+
+// Affects: Should be without side effects.
+#ifdef Above
+#ifndef FIXX11H_Above
+#define FIXX11H_Above
+const int XAbove = Above;
+#undef Above
+const int Above = XAbove;
+#endif
+#undef Above
+#endif
+
+// Affects: Should be without side effects.
+#ifdef Below
+#ifndef FIXX11H_Below
+#define FIXX11H_Below
+const int XBelow = Below;
+#undef Below
+const int Below = XBelow;
+#endif
+#undef Below
+#endif
+
+// Affects: Should be without side effects.
+#ifdef FocusIn
+#ifndef FIXX11H_FocusIn
+#define FIXX11H_FocusIn
+const int XFocusIn = FocusIn;
+#undef FocusIn
+const int FocusIn = XFocusIn;
+#endif
+#undef FocusIn
+#endif
+
+// Affects: Should be without side effects.
+#ifdef FocusOut
+#ifndef FIXX11H_FocusOut
+#define FIXX11H_FocusOut
+const int XFocusOut = FocusOut;
+#undef FocusOut
+const int FocusOut = XFocusOut;
+#endif
+#undef FocusOut
+#endif
+
+// Affects: Should be without side effects.
+#ifdef Always
+#ifndef FIXX11H_Always
+#define FIXX11H_Always
+const int XAlways = Always;
+#undef Always
+const int Always = XAlways;
+#endif
+#undef Always
+#endif
+
+// Affects: Should be without side effects.
+#ifdef Success
+#ifndef FIXX11H_Success
+#define FIXX11H_Success
+const int XSuccess = Success;
+#undef Success
+const int Success = XSuccess;
+#endif
+#undef Success
+#endif
+
+// Affects: Should be without side effects.
+#ifdef GrayScale
+#ifndef FIXX11H_GrayScale
+#define FIXX11H_GrayScale
+const int XGrayScale = GrayScale;
+#undef GrayScale
+const int GrayScale = XGrayScale;
+#endif
+#undef GrayScale
+#endif
+
+// Affects: Should be without side effects.
+#ifdef Status
+#ifndef FIXX11H_Status
+#define FIXX11H_Status
+typedef Status XStatus;
+#undef Status
+typedef XStatus Status;
+#endif
+#undef Status
+#endif
+
+// Affects: Should be without side effects.
+#ifdef CursorShape
+#ifndef FIXX11H_CursorShape
+#define FIXX11H_CursorShape
+const int XCursorShape = CursorShape;
+#undef CursorShape
+const int CursorShape = CursorShape;
+#endif
+#undef CursorShape
+#endif
+
+// template --->
+// Affects: Should be without side effects.
+#ifdef index
+#ifndef FIXX11H_index
+#define FIXX11H_index
+inline
+char* Xindex( const char* s, int c )
+    {
+    return index( s, c );
+    }
+#undef index
+inline
+char* index( const char* s, int c )
+    {
+    return Xindex( s, c );
+    }
+#endif
+#undef index
+#endif
+// template <---
+
+#ifdef rindex
+// Affects: Should be without side effects.
+#ifndef FIXX11H_rindex
+#define FIXX11H_rindex
+inline
+char* Xrindex( const char* s, int c )
+    {
+    return rindex( s, c );
+    }
+#undef rindex
+inline
+char* rindex( const char* s, int c )
+    {
+    return Xrindex( s, c );
+    }
+#endif
+#undef rindex
+#endif
+}
+
+using namespace X;
diff --git a/style/qtc_kstyle.cpp b/style/qtc_kstyle.cpp
new file mode 100644
index 0000000..da7e9e1
--- /dev/null
+++ b/style/qtc_kstyle.cpp
@@ -0,0 +1,1717 @@
+/*
+ *
+ * QtCKStyle
+ * Copyright (C) 2001-2002 Karol Szwed <gallium@kde.org>
+ *
+ * QWindowsStyle CC_ListView and style images were kindly donated by TrollTech,
+ * Copyright (C) 1998-2000 TrollTech AS.
+ *
+ * Many thanks to Bradley T. Hughes for the 3 button scrollbar code.
+ *
+ * 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 "qtc_kstyle.h"
+
+#include <qapplication.h>
+#include <qbitmap.h>
+#include <qcleanuphandler.h>
+#include <qmap.h>
+#include <qimage.h>
+#include <qlistview.h>
+#include <qmenubar.h>
+#include <qpainter.h>
+#include <qpixmap.h>
+#include <qpopupmenu.h>
+#include <qprogressbar.h>
+#include <qscrollbar.h>
+#include <qsettings.h>
+#include <qslider.h>
+#include <qstylefactory.h>
+#include <qtabbar.h>
+#include <qtoolbar.h>
+
+#ifdef Q_WS_X11
+# include <X11/Xlib.h>
+# ifdef HAVE_XRENDER
+#  include <X11/extensions/Xrender.h> // schroder
+   extern bool qt_use_xrender;
+# endif
+#else
+#undef HAVE_XRENDER
+#endif
+
+
+#include <limits.h>
+
+struct QtCKStylePrivate
+{
+	bool  highcolor                : 1;
+	bool  useFilledFrameWorkaround : 1;
+	bool  etchDisabledText         : 1;
+	bool  scrollablePopupmenus     : 1;
+	bool  menuAltKeyNavigation     : 1;
+	bool  menuDropShadow           : 1;
+	bool  sloppySubMenus           : 1;
+	int   popupMenuDelay;
+	float menuOpacity;
+
+	QtCKStyle::KStyleScrollBarType  scrollbarType;
+	QtCKStyle::KStyleFlags flags;
+	
+	//For KPE_ListViewBranch
+	QBitmap *verticalLine;
+	QBitmap *horizontalLine;
+};
+
+// -----------------------------------------------------------------------------
+
+
+QtCKStyle::QtCKStyle( KStyleFlags flags, KStyleScrollBarType sbtype )
+	: QCommonStyle(), d(new QtCKStylePrivate)
+{
+	d->flags = flags;
+	d->useFilledFrameWorkaround = (flags & FilledFrameWorkaround);
+	d->scrollbarType = sbtype;
+	d->highcolor = QPixmap::defaultDepth() > 8;
+
+	// Read style settings
+	QSettings settings;
+	d->popupMenuDelay       = settings.readNumEntry ("/QtCKStyle/Settings/PopupMenuDelay", 256);
+	d->sloppySubMenus       = settings.readBoolEntry("/QtCKStyle/Settings/SloppySubMenus", false);
+	d->etchDisabledText     = settings.readBoolEntry("/QtCKStyle/Settings/EtchDisabledText", true);
+	d->menuAltKeyNavigation = settings.readBoolEntry("/QtCKStyle/Settings/MenuAltKeyNavigation", true);
+	d->scrollablePopupmenus = settings.readBoolEntry("/QtCKStyle/Settings/ScrollablePopupMenus", false);
+	d->menuDropShadow       = settings.readBoolEntry("/QtCKStyle/Settings/MenuDropShadow", false);
+	
+	d->verticalLine   = 0;
+	d->horizontalLine = 0;
+}
+
+
+QtCKStyle::~QtCKStyle()
+{
+	delete d->verticalLine;
+	delete d->horizontalLine;
+
+	delete d;
+}
+
+
+QString QtCKStyle::defaultStyle()
+{
+	if (QPixmap::defaultDepth() > 8)
+	   return QString("plastik");
+	else
+	   return QString("light, 3rd revision");
+}
+
+
+void QtCKStyle::polish( QWidget* widget )
+{
+	if ( d->useFilledFrameWorkaround )
+	{
+		if ( QFrame *frame = ::qt_cast< QFrame* >( widget ) ) {
+			QFrame::Shape shape = frame->frameShape();
+			if (shape == QFrame::ToolBarPanel || shape == QFrame::MenuBarPanel)
+				widget->installEventFilter(this);
+		} 
+	}
+}
+
+
+void QtCKStyle::unPolish( QWidget* widget )
+{
+	if ( d->useFilledFrameWorkaround )
+	{
+		if ( QFrame *frame = ::qt_cast< QFrame* >( widget ) ) {
+			QFrame::Shape shape = frame->frameShape();
+			if (shape == QFrame::ToolBarPanel || shape == QFrame::MenuBarPanel)
+				widget->removeEventFilter(this);
+		} 
+	}
+}
+
+
+// Style changes (should) always re-polish popups.
+void QtCKStyle::polishPopupMenu( QPopupMenu* p )
+{
+	if (!p->testWState( WState_Polished ))
+		p->setCheckable(true);
+}
+
+
+// -----------------------------------------------------------------------------
+// QtCKStyle extensions
+// -----------------------------------------------------------------------------
+
+void QtCKStyle::setScrollBarType(KStyleScrollBarType sbtype)
+{
+	d->scrollbarType = sbtype;
+}
+
+QtCKStyle::KStyleFlags QtCKStyle::styleFlags() const
+{
+	return d->flags;
+}
+
+void QtCKStyle::drawKStylePrimitive( KStylePrimitive kpe,
+								  QPainter* p,
+								  const QWidget* widget,
+								  const QRect &r,
+								  const QColorGroup &cg,
+								  SFlags flags,
+								  const QStyleOption& /* opt */ ) const
+{
+	switch( kpe )
+	{
+		// Dock / Toolbar / General handles.
+		// ---------------------------------
+
+		case KPE_DockWindowHandle: {
+
+			// Draws a nice DockWindow handle including the dock title.
+			QWidget* wid = const_cast<QWidget*>(widget);
+			bool horizontal = flags & Style_Horizontal;
+			int x,y,w,h,x2,y2;
+
+			r.rect( &x, &y, &w, &h );
+			if ((w <= 2) || (h <= 2)) {
+				p->fillRect(r, cg.highlight());
+				return;
+			}
+
+			
+			x2 = x + w - 1;
+			y2 = y + h - 1;
+
+			QFont fnt;
+			fnt = QApplication::font(wid);
+			fnt.setPointSize( fnt.pointSize()-2 );
+
+			// Draw the item on an off-screen pixmap
+			// to preserve Xft antialiasing for
+			// vertically oriented handles.
+			QPixmap pix;
+			if (horizontal)
+				pix.resize( h-2, w-2 );
+			else
+				pix.resize( w-2, h-2 );
+
+			QString title = wid->parentWidget()->caption();
+			QPainter p2;
+			p2.begin(&pix);
+			p2.fillRect(pix.rect(), cg.brush(QColorGroup::Highlight));
+			p2.setPen(cg.highlightedText());
+			p2.setFont(fnt);
+			p2.drawText(pix.rect(), AlignCenter, title);
+			p2.end();
+
+			// Draw a sunken bevel
+			p->setPen(cg.dark());
+			p->drawLine(x, y, x2, y);
+			p->drawLine(x, y, x, y2);
+			p->setPen(cg.light());
+			p->drawLine(x+1, y2, x2, y2);
+			p->drawLine(x2, y+1, x2, y2);
+
+			if (horizontal) {
+				QWMatrix m;
+				m.rotate(-90.0);
+				QPixmap vpix = pix.xForm(m);
+				bitBlt(wid, r.x()+1, r.y()+1, &vpix);
+			} else
+				bitBlt(wid, r.x()+1, r.y()+1, &pix);
+
+			break;
+		}
+
+
+		/*
+		 * KPE_ListViewExpander and KPE_ListViewBranch are based on code from
+		 * QWindowStyle's CC_ListView, kindly donated by TrollTech.
+		 * CC_ListView code is Copyright (C) 1998-2000 TrollTech AS.
+		 */
+
+		case KPE_ListViewExpander: {
+			// Typical Windows style expand/collapse element.
+			int radius = (r.width() - 4) / 2;
+			int centerx = r.x() + r.width()/2;
+			int centery = r.y() + r.height()/2;
+
+			// Outer box
+			p->setPen( cg.mid() );
+			p->drawRect( r );
+
+			// plus or minus
+			p->setPen( cg.text() );
+			p->drawLine( centerx - radius, centery, centerx + radius, centery );
+			if ( flags & Style_On )	// Collapsed = On
+				p->drawLine( centerx, centery - radius, centerx, centery + radius );
+			break;
+		}
+
+		case KPE_ListViewBranch: {
+			// Typical Windows style listview branch element (dotted line).
+
+			// Create the dotline pixmaps if not already created
+			if ( !d->verticalLine )
+			{
+				// make 128*1 and 1*128 bitmaps that can be used for
+				// drawing the right sort of lines.
+				d->verticalLine   = new QBitmap( 1, 129, true );
+				d->horizontalLine = new QBitmap( 128, 1, true );
+				QPointArray a( 64 );
+				QPainter p2;
+				p2.begin( d->verticalLine );
+
+				int i;
+				for( i=0; i < 64; i++ )
+					a.setPoint( i, 0, i*2+1 );
+				p2.setPen( color1 );
+				p2.drawPoints( a );
+				p2.end();
+				QApplication::flushX();
+				d->verticalLine->setMask( *d->verticalLine );
+
+				p2.begin( d->horizontalLine );
+				for( i=0; i < 64; i++ )
+					a.setPoint( i, i*2+1, 0 );
+				p2.setPen( color1 );
+				p2.drawPoints( a );
+				p2.end();
+				QApplication::flushX();
+				d->horizontalLine->setMask( *d->horizontalLine );
+			}
+
+			p->setPen( cg.text() );		// cg.dark() is bad for dark color schemes.
+
+			if (flags & Style_Horizontal)
+			{
+				int point = r.x();
+				int other = r.y();
+				int end = r.x()+r.width();
+				int thickness = r.height();
+
+				while( point < end )
+				{
+					int i = 128;
+					if ( i+point > end )
+						i = end-point;
+					p->drawPixmap( point, other, *d->horizontalLine, 0, 0, i, thickness );
+					point += i;
+				}
+
+			} else {
+				int point = r.y();
+				int other = r.x();
+				int end = r.y()+r.height();
+				int thickness = r.width();
+				int pixmapoffset = (flags & Style_NoChange) ? 0 : 1;	// ### Hackish
+
+				while( point < end )
+				{
+					int i = 128;
+					if ( i+point > end )
+						i = end-point;
+					p->drawPixmap( other, point, *d->verticalLine, 0, pixmapoffset, thickness, i );
+					point += i;
+				}
+			}
+
+			break;
+		}
+
+		// Reimplement the other primitives in your styles.
+		// The current implementation just paints something visibly different.
+		case KPE_ToolBarHandle:
+		case KPE_GeneralHandle:
+		case KPE_SliderHandle:
+			p->fillRect(r, cg.light());
+			break;
+
+		case KPE_SliderGroove:
+			p->fillRect(r, cg.dark());
+			break;
+
+		default:
+			p->fillRect(r, Qt::yellow);	// Something really bad happened - highlight.
+			break;
+	}
+}
+
+
+int QtCKStyle::kPixelMetric( KStylePixelMetric kpm, const QWidget* /* widget */) const
+{
+	int value;
+	switch(kpm)
+	{
+		case KPM_ListViewBranchThickness:
+			value = 1;
+			break;
+
+		case KPM_MenuItemSeparatorHeight:
+		case KPM_MenuItemHMargin:
+		case KPM_MenuItemVMargin:
+		case KPM_MenuItemHFrame:
+		case KPM_MenuItemVFrame:
+		case KPM_MenuItemCheckMarkHMargin:
+		case KPM_MenuItemArrowHMargin:
+		case KPM_MenuItemTabSpacing:
+		default:
+			value = 0;
+	}
+
+	return value;
+}
+
+
+// -----------------------------------------------------------------------------
+
+void QtCKStyle::drawPrimitive( PrimitiveElement pe,
+							QPainter* p,
+							const QRect &r,
+							const QColorGroup &cg,
+							SFlags flags,
+							const QStyleOption& opt ) const
+{
+	// TOOLBAR/DOCK WINDOW HANDLE
+	// ------------------------------------------------------------------------
+	if (pe == PE_DockWindowHandle)
+	{
+		// Wild workarounds are here. Beware.
+		QWidget *widget, *parent;
+
+		if (p && p->device()->devType() == QInternal::Widget) {
+			widget = static_cast<QWidget*>(p->device());
+			parent = widget->parentWidget();
+		} else
+			return;		// Don't paint on non-widgets
+
+		// Check if we are a normal toolbar or a hidden dockwidget.
+		if ( parent &&
+			(parent->inherits("QToolBar") ||		// Normal toolbar
+			(parent->inherits("QMainWindow")) ))	// Collapsed dock
+
+			// Draw a toolbar handle
+			drawKStylePrimitive( KPE_ToolBarHandle, p, widget, r, cg, flags, opt );
+
+		else if ( widget->inherits("QDockWindowHandle") )
+
+			// Draw a dock window handle
+			drawKStylePrimitive( KPE_DockWindowHandle, p, widget, r, cg, flags, opt );
+
+		else
+			// General handle, probably a kicker applet handle.
+			drawKStylePrimitive( KPE_GeneralHandle, p, widget, r, cg, flags, opt );
+
+	} else
+		QCommonStyle::drawPrimitive( pe, p, r, cg, flags, opt );
+}
+
+
+
+void QtCKStyle::drawControl( ControlElement element,
+						  QPainter* p,
+						  const QWidget* widget,
+						  const QRect &r,
+						  const QColorGroup &cg,
+						  SFlags flags,
+						  const QStyleOption &opt ) const
+{
+	switch (element)
+	{
+		// TABS
+		// ------------------------------------------------------------------------
+		case CE_TabBarTab: {
+			const QTabBar* tb  = (const QTabBar*) widget;
+			QTabBar::Shape tbs = tb->shape();
+			bool selected      = flags & Style_Selected;
+			int x = r.x(), y=r.y(), bottom=r.bottom(), right=r.right();
+
+			switch (tbs) {
+
+				case QTabBar::RoundedAbove: {
+					if (!selected)
+						p->translate(0,1);
+					p->setPen(selected ? cg.light() : cg.shadow());
+					p->drawLine(x, y+4, x, bottom);
+					p->drawLine(x, y+4, x+4, y);
+					p->drawLine(x+4, y, right-1, y);
+					if (selected)
+						p->setPen(cg.shadow());
+					p->drawLine(right, y+1, right, bottom);
+
+					p->setPen(cg.midlight());
+					p->drawLine(x+1, y+4, x+1, bottom);
+					p->drawLine(x+1, y+4, x+4, y+1);
+					p->drawLine(x+5, y+1, right-2, y+1);
+
+					if (selected) {
+						p->setPen(cg.mid());
+						p->drawLine(right-1, y+1, right-1, bottom);
+					} else {
+						p->setPen(cg.mid());
+						p->drawPoint(right-1, y+1);
+						p->drawLine(x+4, y+2, right-1, y+2);
+						p->drawLine(x+3, y+3, right-1, y+3);
+						p->fillRect(x+2, y+4, r.width()-3, r.height()-6, cg.mid());
+
+						p->setPen(cg.light());
+						p->drawLine(x, bottom-1, right, bottom-1);
+						p->translate(0,-1);
+					}
+					break;
+				}
+
+				case QTabBar::RoundedBelow: {
+					if (!selected)
+						p->translate(0,-1);
+					p->setPen(selected ? cg.light() : cg.shadow());
+					p->drawLine(x, bottom-4, x, y);
+					if (selected)
+						p->setPen(cg.mid());
+					p->drawLine(x, bottom-4, x+4, bottom);
+					if (selected)
+						p->setPen(cg.shadow());
+					p->drawLine(x+4, bottom, right-1, bottom);
+					p->drawLine(right, bottom-1, right, y);
+
+					p->setPen(cg.midlight());
+					p->drawLine(x+1, bottom-4, x+1, y);
+					p->drawLine(x+1, bottom-4, x+4, bottom-1);
+					p->drawLine(x+5, bottom-1, right-2, bottom-1);
+
+					if (selected) {
+						p->setPen(cg.mid());
+						p->drawLine(right-1, y, right-1, bottom-1);
+					} else {
+						p->setPen(cg.mid());
+						p->drawPoint(right-1, bottom-1);
+						p->drawLine(x+4, bottom-2, right-1, bottom-2);
+						p->drawLine(x+3, bottom-3, right-1, bottom-3);
+						p->fillRect(x+2, y+2, r.width()-3, r.height()-6, cg.mid());
+						p->translate(0,1);
+						p->setPen(cg.dark());
+						p->drawLine(x, y, right, y);
+					}
+					break;
+				}
+
+				case QTabBar::TriangularAbove: {
+					if (!selected)
+						p->translate(0,1);
+					p->setPen(selected ? cg.light() : cg.shadow());
+					p->drawLine(x, bottom, x, y+6);
+					p->drawLine(x, y+6, x+6, y);
+					p->drawLine(x+6, y, right-6, y);
+					if (selected)
+						p->setPen(cg.mid());
+					p->drawLine(right-5, y+1, right-1, y+5);
+					p->setPen(cg.shadow());
+					p->drawLine(right, y+6, right, bottom);
+
+					p->setPen(cg.midlight());
+					p->drawLine(x+1, bottom, x+1, y+6);
+					p->drawLine(x+1, y+6, x+6, y+1);
+					p->drawLine(x+6, y+1, right-6, y+1);
+					p->drawLine(right-5, y+2, right-2, y+5);
+					p->setPen(cg.mid());
+					p->drawLine(right-1, y+6, right-1, bottom);
+
+					QPointArray a(6);
+					a.setPoint(0, x+2, bottom);
+					a.setPoint(1, x+2, y+7);
+					a.setPoint(2, x+7, y+2);
+					a.setPoint(3, right-7, y+2);
+					a.setPoint(4, right-2, y+7);
+					a.setPoint(5, right-2, bottom);
+					p->setPen  (selected ? cg.background() : cg.mid());
+					p->setBrush(selected ? cg.background() : cg.mid());
+					p->drawPolygon(a);
+					p->setBrush(NoBrush);
+					if (!selected) {
+						p->translate(0,-1);
+						p->setPen(cg.light());
+						p->drawLine(x, bottom, right, bottom);
+					}
+					break;
+				}
+
+				default: { // QTabBar::TriangularBelow
+					if (!selected)
+						p->translate(0,-1);
+					p->setPen(selected ? cg.light() : cg.shadow());
+					p->drawLine(x, y, x, bottom-6);
+					if (selected)
+						p->setPen(cg.mid());
+					p->drawLine(x, bottom-6, x+6, bottom);
+					if (selected)
+						p->setPen(cg.shadow());
+					p->drawLine(x+6, bottom, right-6, bottom);
+					p->drawLine(right-5, bottom-1, right-1, bottom-5);
+					if (!selected)
+						p->setPen(cg.shadow());
+					p->drawLine(right, bottom-6, right, y);
+
+					p->setPen(cg.midlight());
+					p->drawLine(x+1, y, x+1, bottom-6);
+					p->drawLine(x+1, bottom-6, x+6, bottom-1);
+					p->drawLine(x+6, bottom-1, right-6, bottom-1);
+					p->drawLine(right-5, bottom-2, right-2, bottom-5);
+					p->setPen(cg.mid());
+					p->drawLine(right-1, bottom-6, right-1, y);
+
+					QPointArray a(6);
+					a.setPoint(0, x+2, y);
+					a.setPoint(1, x+2, bottom-7);
+					a.setPoint(2, x+7, bottom-2);
+					a.setPoint(3, right-7, bottom-2);
+					a.setPoint(4, right-2, bottom-7);
+					a.setPoint(5, right-2, y);
+					p->setPen  (selected ? cg.background() : cg.mid());
+					p->setBrush(selected ? cg.background() : cg.mid());
+					p->drawPolygon(a);
+					p->setBrush(NoBrush);
+					if (!selected) {
+						p->translate(0,1);
+						p->setPen(cg.dark());
+						p->drawLine(x, y, right, y);
+					}
+					break;
+				}
+			};
+
+			break;
+		}
+		
+		// Popup menu scroller
+		// ------------------------------------------------------------------------
+		case CE_PopupMenuScroller: {
+			p->fillRect(r, cg.background());
+			drawPrimitive(PE_ButtonTool, p, r, cg, Style_Enabled);
+			drawPrimitive((flags & Style_Up) ? PE_ArrowUp : PE_ArrowDown, p, r, cg, Style_Enabled);
+			break;
+		}
+
+
+		// PROGRESSBAR
+		// ------------------------------------------------------------------------
+		case CE_ProgressBarGroove: {
+			QRect fr = subRect(SR_ProgressBarGroove, widget);
+			drawPrimitive(PE_Panel, p, fr, cg, Style_Sunken, QStyleOption::Default);
+			break;
+		}
+
+		case CE_ProgressBarContents: {
+			// ### Take into account totalSteps() for busy indicator
+			const QProgressBar* pb = (const QProgressBar*)widget;
+			QRect cr = subRect(SR_ProgressBarContents, widget);
+			double progress = pb->progress();
+			bool reverse = QApplication::reverseLayout();
+			int steps = pb->totalSteps();
+
+			if (!cr.isValid())
+				return;
+
+			// Draw progress bar
+			if (progress > 0 || steps == 0) {
+				double pg = (steps == 0) ? 0.1 : progress / steps;
+				int width = QMIN(cr.width(), (int)(pg * cr.width()));
+				if (steps == 0) { //Busy indicator
+
+					if (width < 1) width = 1; //A busy indicator with width 0 is kind of useless
+
+					int remWidth = cr.width() - width; //Never disappear completely
+					if (remWidth <= 0) remWidth = 1; //Do something non-crashy when too small...
+
+					int pstep =  int(progress) % ( 2 *  remWidth );
+
+					if ( pstep > remWidth ) {
+						//Bounce about.. We're remWidth + some delta, we want to be remWidth - delta...
+						// - ( (remWidth + some delta) - 2* remWidth )  = - (some deleta - remWidth) = remWidth - some delta..
+						pstep = - (pstep - 2 * remWidth );
+					}
+
+					if (reverse)
+						p->fillRect(cr.x() + cr.width() - width - pstep, cr.y(), width, cr.height(),
+									cg.brush(QColorGroup::Highlight));
+					else
+						p->fillRect(cr.x() + pstep, cr.y(), width, cr.height(),
+									cg.brush(QColorGroup::Highlight));
+
+					return;
+				}
+
+
+				// Do fancy gradient for highcolor displays
+// 				if (d->highcolor) {
+// 					QColor c(cg.highlight());
+// 					KPixmap pix;
+// 					pix.resize(cr.width(), cr.height());
+// 					KPixmapEffect::gradient(pix, reverse ? c.light(150) : c.dark(150),
+// 											reverse ? c.dark(150) : c.light(150),
+// 											KPixmapEffect::HorizontalGradient);
+// 					if (reverse)
+// 						p->drawPixmap(cr.x()+(cr.width()-width), cr.y(), pix,
+// 									  cr.width()-width, 0, width, cr.height());
+// 					else
+// 						p->drawPixmap(cr.x(), cr.y(), pix, 0, 0, width, cr.height());
+// 				} else
+					if (reverse)
+						p->fillRect(cr.x()+(cr.width()-width), cr.y(), width, cr.height(),
+									cg.brush(QColorGroup::Highlight));
+					else
+						p->fillRect(cr.x(), cr.y(), width, cr.height(),
+									cg.brush(QColorGroup::Highlight));
+			}
+			break;
+		}
+
+		case CE_ProgressBarLabel: {
+			const QProgressBar* pb = (const QProgressBar*)widget;
+			QRect cr = subRect(SR_ProgressBarContents, widget);
+			double progress = pb->progress();
+			bool reverse = QApplication::reverseLayout();
+			int steps = pb->totalSteps();
+
+			if (!cr.isValid())
+				return;
+
+			QFont font = p->font();
+			font.setBold(true);
+			p->setFont(font);
+
+			// Draw label
+			if (progress > 0 || steps == 0) {
+				double pg = (steps == 0) ? 1.0 : progress / steps;
+				int width = QMIN(cr.width(), (int)(pg * cr.width()));
+				QRect crect;
+				if (reverse)
+					crect.setRect(cr.x()+(cr.width()-width), cr.y(), cr.width(), cr.height());
+				else
+					crect.setRect(cr.x()+width, cr.y(), cr.width(), cr.height());
+					
+				p->save();
+				p->setPen(pb->isEnabled() ? (reverse ? cg.text() : cg.highlightedText()) : cg.text());
+				p->drawText(r, AlignCenter, pb->progressString());
+				p->setClipRect(crect);
+				p->setPen(reverse ? cg.highlightedText() : cg.text());
+				p->drawText(r, AlignCenter, pb->progressString());
+				p->restore();
+
+			} else {
+				p->setPen(cg.text());
+				p->drawText(r, AlignCenter, pb->progressString());
+			}
+
+			break;
+		}
+
+		default:
+			QCommonStyle::drawControl(element, p, widget, r, cg, flags, opt);
+	}
+}
+
+
+QRect QtCKStyle::subRect(SubRect r, const QWidget* widget) const
+{
+	switch(r)
+	{
+		// KDE2 look smooth progress bar
+		// ------------------------------------------------------------------------
+		case SR_ProgressBarGroove:
+			return widget->rect();
+
+		case SR_ProgressBarContents:
+		case SR_ProgressBarLabel: {
+			// ### take into account indicatorFollowsStyle()
+			QRect rt = widget->rect();
+			return QRect(rt.x()+2, rt.y()+2, rt.width()-4, rt.height()-4);
+		}
+
+		default:
+			return QCommonStyle::subRect(r, widget);
+	}
+}
+
+
+int QtCKStyle::pixelMetric(PixelMetric m, const QWidget* widget) const
+{
+	switch(m)
+	{
+		// BUTTONS
+		// ------------------------------------------------------------------------
+		case PM_ButtonShiftHorizontal:		// Offset by 1
+		case PM_ButtonShiftVertical:		// ### Make configurable
+			return 1;
+
+		case PM_DockWindowHandleExtent:
+		{
+			QWidget* parent = 0;
+			// Check that we are not a normal toolbar or a hidden dockwidget,
+			// in which case we need to adjust the height for font size
+			if (widget && (parent = widget->parentWidget() )
+				&& !parent->inherits("QToolBar")
+				&& !parent->inherits("QMainWindow")
+				&& widget->inherits("QDockWindowHandle") )
+					return widget->fontMetrics().lineSpacing();
+			else
+				return QCommonStyle::pixelMetric(m, widget);
+		}
+
+		// TABS
+		// ------------------------------------------------------------------------
+		case PM_TabBarTabHSpace:
+			return 24;
+
+		case PM_TabBarTabVSpace: {
+			const QTabBar * tb = (const QTabBar *) widget;
+			if ( tb->shape() == QTabBar::RoundedAbove ||
+				 tb->shape() == QTabBar::RoundedBelow )
+				return 10;
+			else
+				return 4;
+		}
+
+		case PM_TabBarTabOverlap: {
+			const QTabBar* tb = (const QTabBar*)widget;
+			QTabBar::Shape tbs = tb->shape();
+
+			if ( (tbs == QTabBar::RoundedAbove) ||
+				 (tbs == QTabBar::RoundedBelow) )
+				return 0;
+			else
+				return 2;
+		}
+
+		// SLIDER
+		// ------------------------------------------------------------------------
+		case PM_SliderLength:
+			return 18;
+
+		case PM_SliderThickness:
+			return 24;
+
+		// Determines how much space to leave for the actual non-tickmark
+		// portion of the slider.
+		case PM_SliderControlThickness: {
+			const QSlider* slider   = (const QSlider*)widget;
+			QSlider::TickSetting ts = slider->tickmarks();
+			int thickness = (slider->orientation() == Horizontal) ?
+							 slider->height() : slider->width();
+			switch (ts) {
+				case QSlider::NoMarks:				// Use total area.
+					break;
+				case QSlider::Both:
+					thickness = (thickness/2) + 3;	// Use approx. 1/2 of area.
+					break;
+				default:							// Use approx. 2/3 of area
+					thickness = ((thickness*2)/3) + 3;
+					break;
+			};
+			return thickness;
+		}
+
+		// SPLITTER
+		// ------------------------------------------------------------------------
+		case PM_SplitterWidth:
+			if (widget && widget->inherits("QDockWindowResizeHandle"))
+				return 8;	// ### why do we need 2pix extra?
+			else
+				return 6;
+
+		// FRAMES
+		// ------------------------------------------------------------------------
+		case PM_MenuBarFrameWidth:
+			return 1;
+
+		case PM_DockWindowFrameWidth:
+			return 1;
+
+		// GENERAL
+		// ------------------------------------------------------------------------
+		case PM_MaximumDragDistance:
+			return -1;
+
+		case PM_MenuBarItemSpacing:
+			return 5;
+
+		case PM_ToolBarItemSpacing:
+			return 0;
+
+		case PM_PopupMenuScrollerHeight:
+			return pixelMetric( PM_ScrollBarExtent, 0);
+
+		default:
+			return QCommonStyle::pixelMetric( m, widget );
+	}
+}
+
+//Helper to find the next sibling that's not hidden
+static QListViewItem* nextVisibleSibling(QListViewItem* item)
+{
+    QListViewItem* sibling = item;
+    do
+    {
+        sibling = sibling->nextSibling();
+    }
+    while (sibling && !sibling->isVisible());
+    
+    return sibling;
+}
+
+void QtCKStyle::drawComplexControl( ComplexControl control,
+								 QPainter* p,
+								 const QWidget* widget,
+								 const QRect &r,
+								 const QColorGroup &cg,
+								 SFlags flags,
+								 SCFlags controls,
+								 SCFlags active,
+								 const QStyleOption &opt ) const
+{
+	switch(control)
+	{
+		// 3 BUTTON SCROLLBAR
+		// ------------------------------------------------------------------------
+		case CC_ScrollBar: {
+			// Many thanks to Brad Hughes for contributing this code.
+			bool useThreeButtonScrollBar = (d->scrollbarType & ThreeButtonScrollBar);
+
+			const QScrollBar *sb = (const QScrollBar*)widget;
+			bool   maxedOut   = (sb->minValue()    == sb->maxValue());
+			bool   horizontal = (sb->orientation() == Qt::Horizontal);
+			SFlags sflags     = ((horizontal ? Style_Horizontal : Style_Default) |
+								 (maxedOut   ? Style_Default : Style_Enabled));
+
+			QRect  addline, subline, subline2, addpage, subpage, slider, first, last;
+			subline = querySubControlMetrics(control, widget, SC_ScrollBarSubLine, opt);
+			addline = querySubControlMetrics(control, widget, SC_ScrollBarAddLine, opt);
+			subpage = querySubControlMetrics(control, widget, SC_ScrollBarSubPage, opt);
+			addpage = querySubControlMetrics(control, widget, SC_ScrollBarAddPage, opt);
+			slider  = querySubControlMetrics(control, widget, SC_ScrollBarSlider,  opt);
+			first   = querySubControlMetrics(control, widget, SC_ScrollBarFirst,   opt);
+			last    = querySubControlMetrics(control, widget, SC_ScrollBarLast,    opt);
+			subline2 = addline;
+
+			if ( useThreeButtonScrollBar )
+				if (horizontal)
+					subline2.moveBy(-addline.width(), 0);
+				else
+					subline2.moveBy(0, -addline.height());
+
+			// Draw the up/left button set
+			if ((controls & SC_ScrollBarSubLine) && subline.isValid()) {
+				drawPrimitive(PE_ScrollBarSubLine, p, subline, cg,
+							sflags | (active == SC_ScrollBarSubLine ?
+								Style_Down : Style_Default));
+
+				if (useThreeButtonScrollBar && subline2.isValid())
+					drawPrimitive(PE_ScrollBarSubLine, p, subline2, cg,
+							sflags | (active == SC_ScrollBarSubLine ?
+								Style_Down : Style_Default));
+			}
+
+			if ((controls & SC_ScrollBarAddLine) && addline.isValid())
+				drawPrimitive(PE_ScrollBarAddLine, p, addline, cg,
+							sflags | ((active == SC_ScrollBarAddLine) ?
+										Style_Down : Style_Default));
+
+			if ((controls & SC_ScrollBarSubPage) && subpage.isValid())
+				drawPrimitive(PE_ScrollBarSubPage, p, subpage, cg,
+							sflags | ((active == SC_ScrollBarSubPage) ?
+										Style_Down : Style_Default));
+
+			if ((controls & SC_ScrollBarAddPage) && addpage.isValid())
+				drawPrimitive(PE_ScrollBarAddPage, p, addpage, cg,
+							sflags | ((active == SC_ScrollBarAddPage) ?
+										Style_Down : Style_Default));
+
+			if ((controls & SC_ScrollBarFirst) && first.isValid())
+				drawPrimitive(PE_ScrollBarFirst, p, first, cg,
+							sflags | ((active == SC_ScrollBarFirst) ?
+										Style_Down : Style_Default));
+
+			if ((controls & SC_ScrollBarLast) && last.isValid())
+				drawPrimitive(PE_ScrollBarLast, p, last, cg,
+							sflags | ((active == SC_ScrollBarLast) ?
+										Style_Down : Style_Default));
+
+			if ((controls & SC_ScrollBarSlider) && slider.isValid()) {
+				drawPrimitive(PE_ScrollBarSlider, p, slider, cg,
+							sflags | ((active == SC_ScrollBarSlider) ?
+										Style_Down : Style_Default));
+				// Draw focus rect
+				if (sb->hasFocus()) {
+					QRect fr(slider.x() + 2, slider.y() + 2,
+							 slider.width() - 5, slider.height() - 5);
+					drawPrimitive(PE_FocusRect, p, fr, cg, Style_Default);
+				}
+			}
+			break;
+		}
+
+
+		// SLIDER
+		// -------------------------------------------------------------------
+		case CC_Slider: {
+			const QSlider* slider = (const QSlider*)widget;
+			QRect groove = querySubControlMetrics(CC_Slider, widget, SC_SliderGroove, opt);
+			QRect handle = querySubControlMetrics(CC_Slider, widget, SC_SliderHandle, opt);
+
+			// Double-buffer slider for no flicker
+			QPixmap pix(widget->size());
+			QPainter p2;
+			p2.begin(&pix);
+
+			if ( slider->parentWidget() &&
+				 slider->parentWidget()->backgroundPixmap() &&
+				 !slider->parentWidget()->backgroundPixmap()->isNull() ) {
+				QPixmap pixmap = *(slider->parentWidget()->backgroundPixmap());
+				p2.drawTiledPixmap(r, pixmap, slider->pos());
+			} else
+				pix.fill(cg.background());
+
+			// Draw slider groove
+			if ((controls & SC_SliderGroove) && groove.isValid()) {
+				drawKStylePrimitive( KPE_SliderGroove, &p2, widget, groove, cg, flags, opt );
+
+				// Draw the focus rect around the groove
+				if (slider->hasFocus())
+					drawPrimitive(PE_FocusRect, &p2, groove, cg);
+			}
+
+			// Draw the tickmarks
+			if (controls & SC_SliderTickmarks)
+				QCommonStyle::drawComplexControl(control, &p2, widget,
+						r, cg, flags, SC_SliderTickmarks, active, opt);
+
+			// Draw the slider handle
+			if ((controls & SC_SliderHandle) && handle.isValid()) {
+				if (active == SC_SliderHandle)
+					flags |= Style_Active;
+				drawKStylePrimitive( KPE_SliderHandle, &p2, widget, handle, cg, flags, opt );
+			}
+
+			p2.end();
+			bitBlt((QWidget*)widget, r.x(), r.y(), &pix);
+			break;
+		}
+
+		// LISTVIEW
+		// -------------------------------------------------------------------
+		case CC_ListView: {
+
+			/*
+			 * Many thanks to TrollTech AS for donating CC_ListView from QWindowsStyle.
+			 * CC_ListView code is Copyright (C) 1998-2000 TrollTech AS.
+			 */
+
+			// Paint the icon and text.
+			if ( controls & SC_ListView )
+				QCommonStyle::drawComplexControl( control, p, widget, r, cg, flags, controls, active, opt );
+
+			// 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;
+
+				QListViewItem *item  = opt.listViewItem();
+				QListViewItem *child = item->firstChild();
+
+				int y = r.y();
+				int c;	// dotline vertice count
+				int dotoffset = 0;
+				QPointArray dotlines;
+
+				if ( active == SC_All && controls == SC_ListViewExpand ) {
+					// We only need to draw a vertical line
+					c = 2;
+					dotlines.resize(2);
+					dotlines[0] = QPoint( r.right(), r.top() );
+					dotlines[1] = QPoint( 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
+					QListView* v = item->listView();
+					int lh = QMAX( p->fontMetrics().height() + 2 * v->itemMargin(),
+								   QApplication::globalStrut().height() );
+					if ( lh % 2 > 0 )
+						lh++;
+
+					// Draw all the expand/close boxes...
+					QRect boxrect;
+					QStyle::StyleFlags boxflags;
+					while ( child && y < r.height() )
+					{
+						linebot = y + lh/2;
+						if ( (child->isExpandable() || child->childCount()) &&
+							 (child->height() > 0) )
+						{
+							// The primitive requires a rect.
+							boxrect = QRect( bx-4, linebot-4, 9, 9 );
+							boxflags = child->isOpen() ? QStyle::Style_Off : QStyle::Style_On;
+
+							// QtCKStyle extension: Draw the box and expand/collapse indicator
+							drawKStylePrimitive( KPE_ListViewExpander, p, NULL, boxrect, cg, boxflags, opt );
+
+							// dotlinery
+							p->setPen( cg.mid() );
+							dotlines[c++] = QPoint( bx, linetop );
+							dotlines[c++] = QPoint( bx, linebot - 5 );
+							dotlines[c++] = QPoint( bx + 5, linebot );
+							dotlines[c++] = QPoint( r.width(), linebot );
+							linetop = linebot + 5;
+						} else {
+							// just dotlinery
+							dotlines[c++] = QPoint( bx+1, linebot );
+							dotlines[c++] = QPoint( 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++] = QPoint( bx, linetop );
+						dotlines[c++] = QPoint( bx, linebot );
+					}
+				}
+
+				// Draw all the branches...
+				static int thickness = kPixelMetric( KPM_ListViewBranchThickness );
+				int line; // index into dotlines
+				QRect branchrect;
+				QStyle::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  = QRect( point, other-(thickness/2), end-point, thickness );
+						branchflags = QStyle::Style_Horizontal;
+
+						// QtCKStyle extension: Draw the horizontal branch
+						drawKStylePrimitive( KPE_ListViewBranch, p, NULL, branchrect, cg, branchflags, opt );
+
+					} 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  = QRect( other-(thickness/2), point, thickness, end-point );
+						if (!pixmapoffset)	// ### Hackish - used to hint the offset
+							branchflags = QStyle::Style_NoChange;
+						else
+							branchflags = QStyle::Style_Default;
+
+						// QtCKStyle extension: Draw the vertical branch
+						drawKStylePrimitive( KPE_ListViewBranch, p, NULL, branchrect, cg, branchflags, opt );
+					}
+				}
+			}
+			break;
+		}
+
+		default:
+			QCommonStyle::drawComplexControl( control, p, widget, r, cg,
+											  flags, controls, active, opt );
+			break;
+	}
+}
+
+
+QStyle::SubControl QtCKStyle::querySubControl( ComplexControl control,
+											const QWidget* widget,
+											const QPoint &pos,
+											const QStyleOption &opt ) const
+{
+	QStyle::SubControl ret = QCommonStyle::querySubControl(control, widget, pos, opt);
+
+	if (d->scrollbarType == ThreeButtonScrollBar) {
+		// Enable third button
+		if (control == CC_ScrollBar && ret == SC_None)
+			ret = SC_ScrollBarSubLine;
+	}
+	return ret;
+}
+
+
+QRect QtCKStyle::querySubControlMetrics( ComplexControl control,
+									  const QWidget* widget,
+									  SubControl sc,
+									  const QStyleOption &opt ) const
+{
+    QRect ret;
+
+	if (control == CC_ScrollBar)
+	{
+		bool threeButtonScrollBar = d->scrollbarType & ThreeButtonScrollBar;
+		bool platinumScrollBar    = d->scrollbarType & PlatinumStyleScrollBar;
+		bool nextScrollBar        = d->scrollbarType & NextStyleScrollBar;
+
+		const QScrollBar *sb = (const QScrollBar*)widget;
+		bool horizontal = sb->orientation() == Qt::Horizontal;
+		int sliderstart = sb->sliderStart();
+		int sbextent    = pixelMetric(PM_ScrollBarExtent, widget);
+		int maxlen      = (horizontal ? sb->width() : sb->height())
+						  - (sbextent * (threeButtonScrollBar ? 3 : 2));
+		int sliderlen;
+
+		// calculate slider length
+		if (sb->maxValue() != sb->minValue())
+		{
+			uint range = sb->maxValue() - sb->minValue();
+			sliderlen = (sb->pageStep() * maxlen) /	(range + sb->pageStep());
+
+			int slidermin = pixelMetric( PM_ScrollBarSliderMin, widget );
+			if ( sliderlen < slidermin || range > INT_MAX / 2 )
+				sliderlen = slidermin;
+			if ( sliderlen > maxlen )
+				sliderlen = maxlen;
+		} else
+			sliderlen = maxlen;
+
+		// Subcontrols
+		switch (sc)
+		{
+			case SC_ScrollBarSubLine: {
+				// top/left button
+				if (platinumScrollBar) {
+					if (horizontal)
+						ret.setRect(sb->width() - 2 * sbextent, 0, sbextent, sbextent);
+					else
+						ret.setRect(0, sb->height() - 2 * sbextent, sbextent, sbextent);
+				} else
+					ret.setRect(0, 0, sbextent, sbextent);
+				break;
+			}
+
+			case SC_ScrollBarAddLine: {
+				// bottom/right button
+				if (nextScrollBar) {
+					if (horizontal)
+						ret.setRect(sbextent, 0, sbextent, sbextent);
+					else
+						ret.setRect(0, sbextent, sbextent, sbextent);
+				} else {
+					if (horizontal)
+						ret.setRect(sb->width() - sbextent, 0, sbextent, sbextent);
+					else
+						ret.setRect(0, sb->height() - sbextent, sbextent, sbextent);
+				}
+				break;
+			}
+
+			case SC_ScrollBarSubPage: {
+				// between top/left button and slider
+				if (platinumScrollBar) {
+					if (horizontal)
+						ret.setRect(0, 0, sliderstart, sbextent);
+					else
+						ret.setRect(0, 0, sbextent, sliderstart);
+				} else if (nextScrollBar) {
+					if (horizontal)
+						ret.setRect(sbextent*2, 0, sliderstart-2*sbextent, sbextent);
+					else
+						ret.setRect(0, sbextent*2, sbextent, sliderstart-2*sbextent);
+				} else {
+					if (horizontal)
+						ret.setRect(sbextent, 0, sliderstart - sbextent, sbextent);
+					else
+						ret.setRect(0, sbextent, sbextent, sliderstart - sbextent);
+				}
+				break;
+			}
+
+			case SC_ScrollBarAddPage: {
+				// between bottom/right button and slider
+				int fudge;
+
+				if (platinumScrollBar)
+					fudge = 0;
+				else if (nextScrollBar)
+					fudge = 2*sbextent;
+				else
+					fudge = sbextent;
+
+				if (horizontal)
+					ret.setRect(sliderstart + sliderlen, 0,
+							maxlen - sliderstart - sliderlen + fudge, sbextent);
+				else
+					ret.setRect(0, sliderstart + sliderlen, sbextent,
+							maxlen - sliderstart - sliderlen + fudge);
+				break;
+			}
+
+			case SC_ScrollBarGroove: {
+				int multi = threeButtonScrollBar ? 3 : 2;
+				int fudge;
+
+				if (platinumScrollBar)
+					fudge = 0;
+				else if (nextScrollBar)
+					fudge = 2*sbextent;
+				else
+					fudge = sbextent;
+
+				if (horizontal)
+					ret.setRect(fudge, 0, sb->width() - sbextent * multi, sb->height());
+				else
+					ret.setRect(0, fudge, sb->width(), sb->height() - sbextent * multi);
+				break;
+			}
+
+			case SC_ScrollBarSlider: {
+				if (horizontal)
+					ret.setRect(sliderstart, 0, sliderlen, sbextent);
+				else
+					ret.setRect(0, sliderstart, sbextent, sliderlen);
+				break;
+			}
+
+			default:
+				ret = QCommonStyle::querySubControlMetrics(control, widget, sc, opt);
+				break;
+		}
+	} else
+		ret = QCommonStyle::querySubControlMetrics(control, widget, sc, opt);
+
+	return ret;
+}
+
+static const char * const kstyle_close_xpm[] = {
+"12 12 2 1",
+"# c #000000",
+". c None",
+"............",
+"............",
+"..##....##..",
+"...##..##...",
+"....####....",
+".....##.....",
+"....####....",
+"...##..##...",
+"..##....##..",
+"............",
+"............",
+"............"};
+
+static const char * const kstyle_maximize_xpm[]={
+"12 12 2 1",
+"# c #000000",
+". c None",
+"............",
+"............",
+".##########.",
+".##########.",
+".#........#.",
+".#........#.",
+".#........#.",
+".#........#.",
+".#........#.",
+".#........#.",
+".##########.",
+"............"};
+
+
+static const char * const kstyle_minimize_xpm[] = {
+"12 12 2 1",
+"# c #000000",
+". c None",
+"............",
+"............",
+"............",
+"............",
+"............",
+"............",
+"............",
+"...######...",
+"...######...",
+"............",
+"............",
+"............"};
+
+static const char * const kstyle_normalizeup_xpm[] = {
+"12 12 2 1",
+"# c #000000",
+". c None",
+"............",
+"...#######..",
+"...#######..",
+"...#.....#..",
+".#######.#..",
+".#######.#..",
+".#.....#.#..",
+".#.....###..",
+".#.....#....",
+".#.....#....",
+".#######....",
+"............"};
+
+
+static const char * const kstyle_shade_xpm[] = {
+"12 12 2 1",
+"# c #000000",
+". c None",
+"............",
+"............",
+"............",
+"............",
+"............",
+".....#......",
+"....###.....",
+"...#####....",
+"..#######...",
+"............",
+"............",
+"............"};
+
+static const char * const kstyle_unshade_xpm[] = {
+"12 12 2 1",
+"# c #000000",
+". c None",
+"............",
+"............",
+"............",
+"............",
+"..#######...",
+"...#####....",
+"....###.....",
+".....#......",
+"............",
+"............",
+"............",
+"............"};
+
+static const char * const dock_window_close_xpm[] = {
+"8 8 2 1",
+"# c #000000",
+". c None",
+"##....##",
+".##..##.",
+"..####..",
+"...##...",
+"..####..",
+".##..##.",
+"##....##",
+"........"};
+
+// Message box icons, from page 210 of the Windows style guide.
+
+// Hand-drawn to resemble Microsoft's icons, but in the Mac/Netscape
+// palette.  The "question mark" icon, which Microsoft recommends not
+// using but a lot of people still use, is left out.
+
+/* XPM */
+static const char * const information_xpm[]={
+"32 32 5 1",
+". c None",
+"c c #000000",
+"* c #999999",
+"a c #ffffff",
+"b c #0000ff",
+"...........********.............",
+"........***aaaaaaaa***..........",
+"......**aaaaaaaaaaaaaa**........",
+".....*aaaaaaaaaaaaaaaaaa*.......",
+"....*aaaaaaaabbbbaaaaaaaac......",
+"...*aaaaaaaabbbbbbaaaaaaaac.....",
+"..*aaaaaaaaabbbbbbaaaaaaaaac....",
+".*aaaaaaaaaaabbbbaaaaaaaaaaac...",
+".*aaaaaaaaaaaaaaaaaaaaaaaaaac*..",
+"*aaaaaaaaaaaaaaaaaaaaaaaaaaaac*.",
+"*aaaaaaaaaabbbbbbbaaaaaaaaaaac*.",
+"*aaaaaaaaaaaabbbbbaaaaaaaaaaac**",
+"*aaaaaaaaaaaabbbbbaaaaaaaaaaac**",
+"*aaaaaaaaaaaabbbbbaaaaaaaaaaac**",
+"*aaaaaaaaaaaabbbbbaaaaaaaaaaac**",
+"*aaaaaaaaaaaabbbbbaaaaaaaaaaac**",
+".*aaaaaaaaaaabbbbbaaaaaaaaaac***",
+".*aaaaaaaaaaabbbbbaaaaaaaaaac***",
+"..*aaaaaaaaaabbbbbaaaaaaaaac***.",
+"...caaaaaaabbbbbbbbbaaaaaac****.",
+"....caaaaaaaaaaaaaaaaaaaac****..",
+".....caaaaaaaaaaaaaaaaaac****...",
+"......ccaaaaaaaaaaaaaacc****....",
+".......*cccaaaaaaaaccc*****.....",
+"........***cccaaaac*******......",
+"..........****caaac*****........",
+".............*caaac**...........",
+"...............caac**...........",
+"................cac**...........",
+".................cc**...........",
+"..................***...........",
+"...................**..........."};
+/* XPM */
+static const char* const warning_xpm[]={
+"32 32 4 1",
+". c None",
+"a c #ffff00",
+"* c #000000",
+"b c #999999",
+".............***................",
+"............*aaa*...............",
+"...........*aaaaa*b.............",
+"...........*aaaaa*bb............",
+"..........*aaaaaaa*bb...........",
+"..........*aaaaaaa*bb...........",
+".........*aaaaaaaaa*bb..........",
+".........*aaaaaaaaa*bb..........",
+"........*aaaaaaaaaaa*bb.........",
+"........*aaaa***aaaa*bb.........",
+".......*aaaa*****aaaa*bb........",
+".......*aaaa*****aaaa*bb........",
+"......*aaaaa*****aaaaa*bb.......",
+"......*aaaaa*****aaaaa*bb.......",
+".....*aaaaaa*****aaaaaa*bb......",
+".....*aaaaaa*****aaaaaa*bb......",
+"....*aaaaaaaa***aaaaaaaa*bb.....",
+"....*aaaaaaaa***aaaaaaaa*bb.....",
+"...*aaaaaaaaa***aaaaaaaaa*bb....",
+"...*aaaaaaaaaa*aaaaaaaaaa*bb....",
+"..*aaaaaaaaaaa*aaaaaaaaaaa*bb...",
+"..*aaaaaaaaaaaaaaaaaaaaaaa*bb...",
+".*aaaaaaaaaaaa**aaaaaaaaaaa*bb..",
+".*aaaaaaaaaaa****aaaaaaaaaa*bb..",
+"*aaaaaaaaaaaa****aaaaaaaaaaa*bb.",
+"*aaaaaaaaaaaaa**aaaaaaaaaaaa*bb.",
+"*aaaaaaaaaaaaaaaaaaaaaaaaaaa*bbb",
+"*aaaaaaaaaaaaaaaaaaaaaaaaaaa*bbb",
+".*aaaaaaaaaaaaaaaaaaaaaaaaa*bbbb",
+"..*************************bbbbb",
+"....bbbbbbbbbbbbbbbbbbbbbbbbbbb.",
+".....bbbbbbbbbbbbbbbbbbbbbbbbb.."};
+/* XPM */
+static const char* const critical_xpm[]={
+"32 32 4 1",
+". c None",
+"a c #999999",
+"* c #ff0000",
+"b c #ffffff",
+"...........********.............",
+".........************...........",
+".......****************.........",
+"......******************........",
+".....********************a......",
+"....**********************a.....",
+"...************************a....",
+"..*******b**********b*******a...",
+"..******bbb********bbb******a...",
+".******bbbbb******bbbbb******a..",
+".*******bbbbb****bbbbb*******a..",
+"*********bbbbb**bbbbb*********a.",
+"**********bbbbbbbbbb**********a.",
+"***********bbbbbbbb***********aa",
+"************bbbbbb************aa",
+"************bbbbbb************aa",
+"***********bbbbbbbb***********aa",
+"**********bbbbbbbbbb**********aa",
+"*********bbbbb**bbbbb*********aa",
+".*******bbbbb****bbbbb*******aa.",
+".******bbbbb******bbbbb******aa.",
+"..******bbb********bbb******aaa.",
+"..*******b**********b*******aa..",
+"...************************aaa..",
+"....**********************aaa...",
+"....a********************aaa....",
+".....a******************aaa.....",
+"......a****************aaa......",
+".......aa************aaaa.......",
+".........aa********aaaaa........",
+"...........aaaaaaaaaaa..........",
+".............aaaaaaa............"};
+
+QPixmap QtCKStyle::stylePixmap( StylePixmap stylepixmap,
+						  const QWidget* widget,
+						  const QStyleOption& opt) const
+{
+	switch (stylepixmap) {
+		case SP_TitleBarShadeButton:
+			return QPixmap(const_cast<const char**>(kstyle_shade_xpm));
+		case SP_TitleBarUnshadeButton:
+			return QPixmap(const_cast<const char**>(kstyle_unshade_xpm));
+		case SP_TitleBarNormalButton:
+			return QPixmap(const_cast<const char**>(kstyle_normalizeup_xpm));
+		case SP_TitleBarMinButton:
+			return QPixmap(const_cast<const char**>(kstyle_minimize_xpm));
+		case SP_TitleBarMaxButton:
+			return QPixmap(const_cast<const char**>(kstyle_maximize_xpm));
+		case SP_TitleBarCloseButton:
+			return QPixmap(const_cast<const char**>(kstyle_close_xpm));
+		case SP_DockWindowCloseButton:
+			return QPixmap(const_cast<const char**>(dock_window_close_xpm ));
+		case SP_MessageBoxInformation:
+			return QPixmap(const_cast<const char**>(information_xpm));
+		case SP_MessageBoxWarning:
+			return QPixmap(const_cast<const char**>(warning_xpm));
+		case SP_MessageBoxCritical:
+			return QPixmap(const_cast<const char**>(critical_xpm));
+		default:
+			break;
+    }
+    return QCommonStyle::stylePixmap(stylepixmap, widget, opt);
+}
+
+
+int QtCKStyle::styleHint( StyleHint sh, const QWidget* w,
+					   const QStyleOption &opt, QStyleHintReturn* shr) const
+{
+	switch (sh)
+	{
+		case SH_EtchDisabledText:
+			return d->etchDisabledText ? 1 : 0;
+
+		case SH_PopupMenu_Scrollable:
+			return d->scrollablePopupmenus ? 1 : 0;
+
+		case SH_MenuBar_AltKeyNavigation:
+			return d->menuAltKeyNavigation ? 1 : 0;
+
+		case SH_PopupMenu_SubMenuPopupDelay:
+			if ( styleHint( SH_PopupMenu_SloppySubMenus, w ) )
+				return QMIN( 100, d->popupMenuDelay );
+			else
+				return d->popupMenuDelay;
+
+		case SH_PopupMenu_SloppySubMenus:
+			return d->sloppySubMenus;
+
+		case SH_ItemView_ChangeHighlightOnFocus:
+		case SH_Slider_SloppyKeyEvents:
+		case SH_MainWindow_SpaceBelowMenuBar:
+		case SH_PopupMenu_AllowActiveAndDisabled:
+			return 0;
+
+		case SH_Slider_SnapToValue:
+		case SH_PrintDialog_RightAlignButtons:
+		case SH_FontDialog_SelectAssociatedText:
+		case SH_MenuBar_MouseTracking:
+		case SH_PopupMenu_MouseTracking:
+		case SH_ComboBox_ListMouseTracking:
+		case SH_ScrollBar_MiddleClickAbsolutePosition:
+			return 1;
+		case SH_LineEdit_PasswordCharacter:
+		{
+			if (w) {
+				const QFontMetrics &fm = w->fontMetrics();
+				if (fm.inFont(QChar(0x25CF))) {
+					return 0x25CF;
+				} else if (fm.inFont(QChar(0x2022))) {
+					return 0x2022;
+				}
+			}
+			return '*';
+		}
+
+		default:
+			return QCommonStyle::styleHint(sh, w, opt, shr);
+	}
+}
+
+
+bool QtCKStyle::eventFilter( QObject* object, QEvent* event )
+{
+	if ( d->useFilledFrameWorkaround )
+	{
+		// Make the QMenuBar/QToolBar paintEvent() cover a larger area to
+		// ensure that the filled frame contents are properly painted.
+		// We essentially modify the paintEvent's rect to include the
+		// panel border, which also paints the widget's interior.
+		// This is nasty, but I see no other way to properly repaint
+		// filled frames in all QMenuBars and QToolBars.
+		// -- Karol.
+		QFrame *frame = 0;
+		if ( event->type() == QEvent::Paint
+				&& (frame = ::qt_cast<QFrame*>(object)) )
+		{
+			if (frame->frameShape() != QFrame::ToolBarPanel && frame->frameShape() != QFrame::MenuBarPanel)
+				return false;
+				
+			bool horizontal = true;
+			QPaintEvent* pe = (QPaintEvent*)event;
+			QToolBar *toolbar = ::qt_cast< QToolBar *>( frame );
+			QRect r = pe->rect();
+
+			if (toolbar && toolbar->orientation() == Qt::Vertical)
+				horizontal = false;
+
+			if (horizontal) {
+				if ( r.height() == frame->height() )
+					return false;	// Let QFrame handle the painting now.
+
+				// Else, send a new paint event with an updated paint rect.
+				QPaintEvent dummyPE( QRect( r.x(), 0, r.width(), frame->height()) );
+				QApplication::sendEvent( frame, &dummyPE );
+			}
+			else {	// Vertical
+				if ( r.width() == frame->width() )
+					return false;
+
+				QPaintEvent dummyPE( QRect( 0, r.y(), frame->width(), r.height()) );
+				QApplication::sendEvent( frame, &dummyPE );
+			}
+
+			// Discard this event as we sent a new paintEvent.
+			return true;
+		}
+	}
+
+	return false;
+}
+
+void QtCKStyle::virtual_hook( int, void* )
+{ /*BASE::virtual_hook( id, data );*/ }
+
+// vim: set noet ts=4 sw=4:
+// kate: indent-width 4; replace-tabs off; tab-width 4; space-indent off;
+
+#include "qtc_kstyle.moc"
diff --git a/style/qtc_kstyle.h b/style/qtc_kstyle.h
new file mode 100644
index 0000000..9c8b059
--- /dev/null
+++ b/style/qtc_kstyle.h
@@ -0,0 +1,324 @@
+/*
+ * $Id$
+ * 
+ * KStyle
+ * Copyright (C) 2001-2002 Karol Szwed <gallium@kde.org>
+ * 
+ * QWindowsStyle CC_ListView and style images were kindly donated by TrollTech,
+ * Copyright (C) 1998-2000 TrollTech AS.
+ * 
+ * Many thanks to Bradley T. Hughes for the 3 button scrollbar code.
+ *
+ * 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.
+ */
+
+#ifndef __QTC_KSTYLE_H
+#define __QTC_KSTYLE_H
+
+// W A R N I N G
+// -------------
+// This API is still subject to change.
+// I will remove this warning when I feel the API is sufficiently flexible.
+
+#include <qcommonstyle.h>
+
+struct QtCKStylePrivate;
+/** 
+ * Simplifies and extends the QStyle API to make style coding easier.
+ *  
+ * The KStyle class provides a simple internal menu transparency engine
+ * which attempts to use XRender for accelerated blending where requested,
+ * or falls back to fast internal software tinting/blending routines.
+ * It also simplifies more complex portions of the QStyle API, such as
+ * the PopupMenuItems, ScrollBars and Sliders by providing extra "primitive
+ * elements" which are simple to implement by the style writer.
+ *
+ * @see QStyle::QStyle
+ * @see QCommonStyle::QCommonStyle
+ * @author Karol Szwed (gallium@kde.org)
+ * @version $Id$
+ */
+class QtCKStyle: public QCommonStyle
+{
+	Q_OBJECT
+
+	public:
+
+		/**
+		 * QtCKStyle Flags:
+		 * 
+		 * @li Default - Default style setting, where menu transparency
+		 * and the FilledFrameWorkaround are disabled.
+		 * 
+		 * @li AllowMenuTransparency - Enable this flag to use QtCKStyle's
+		 * internal menu transparency engine.
+		 * 
+		 * @li FilledFrameWorkaround - Enable this flag to facilitate 
+		 * proper repaints of QMenuBars and QToolBars when the style chooses 
+		 * to paint the interior of a QFrame. The style primitives in question 
+		 * are PE_PanelMenuBar and PE_PanelDockWindow. The HighColor style uses
+		 * this workaround to enable painting of gradients in menubars and 
+		 * toolbars.
+		 */
+		typedef uint KStyleFlags;
+		enum KStyleOption {
+			Default 	      =		0x00000000, //!< All options disabled
+			AllowMenuTransparency =		0x00000001, //!< Internal transparency enabled
+			FilledFrameWorkaround = 	0x00000002  //!< Filled frames enabled
+		};
+
+		/**
+		 * KStyle ScrollBarType:
+		 *
+		 * Allows the style writer to easily select what type of scrollbar
+		 * should be used without having to duplicate large amounts of source
+		 * code by implementing the complex control CC_ScrollBar.
+		 *
+		 * @li WindowsStyleScrollBar - Two button scrollbar with the previous
+		 * button at the top/left, and the next button at the bottom/right.
+		 *
+		 * @li PlatinumStyleScrollBar - Two button scrollbar with both the 
+		 * previous and next buttons at the bottom/right.
+		 *
+		 * @li ThreeButtonScrollBar - %KDE style three button scrollbar with
+		 * two previous buttons, and one next button. The next button is always
+		 * at the bottom/right, whilst the two previous buttons are on either 
+		 * end of the scrollbar.
+		 *
+		 * @li NextStyleScrollBar - Similar to the PlatinumStyle scroll bar, but
+		 * with the buttons grouped on the opposite end of the scrollbar.
+		 *
+		 * @see KStyle::KStyle()
+		 */
+		enum KStyleScrollBarType {
+			WindowsStyleScrollBar  = 	0x00000000, //!< two button, windows style
+			PlatinumStyleScrollBar = 	0x00000001, //!< two button, platinum style
+			ThreeButtonScrollBar   = 	0x00000002, //!< three buttons, %KDE style
+			NextStyleScrollBar     = 	0x00000004  //!< two button, NeXT style
+		};
+
+		/** 
+		 * Constructs a KStyle object.
+		 *
+		 * Select the appropriate KStyle flags and scrollbar type
+		 * for your style. The user's style preferences selected in KControl
+		 * are read by using QSettings and are automatically applied to the style.
+		 * As a fallback, KStyle paints progressbars and tabbars. It inherits from
+		 * QCommonStyle for speed, so don't expect much to be implemented. 
+		 *
+		 * It is advisable to use a currently implemented style such as the HighColor
+		 * style as a foundation for any new KStyle, so the limited number of
+		 * drawing fallbacks should not prove problematic.
+		 *
+		 * @param flags the style to be applied
+		 * @param sbtype the scroll bar type
+		 * @see KStyle::KStyleFlags
+		 * @see KStyle::KStyleScrollBarType
+		 * @author Karol Szwed (gallium@kde.org)
+		 */
+		QtCKStyle( KStyleFlags flags = QtCKStyle::Default,
+			KStyleScrollBarType sbtype = QtCKStyle::WindowsStyleScrollBar );
+
+		/** 
+		 * Destructs the QtCKStyle object.
+		 */
+		~QtCKStyle();
+
+		/**
+		 * Returns the default widget style depending on color depth.
+		 */
+		static QString defaultStyle();
+
+		/**
+		 * Modifies the scrollbar type used by the style.
+		 * 
+		 * This function is only provided for convenience. It allows
+		 * you to make a late decision about what scrollbar type to use for the
+		 * style after performing some processing in your style's constructor.
+		 * In most situations however, setting the scrollbar type via the QtCKStyle
+		 * constructor should suffice.
+		 * @param sbtype the scroll bar type
+		 * @see QtCKStyle::KStyleScrollBarType
+		 */
+		void setScrollBarType(KStyleScrollBarType sbtype);
+
+		/**
+		 * Returns the KStyle flags used to initialize the style.
+		 *
+		 * This is used solely for the kcmstyle module, and hence is internal.
+		 */
+		KStyleFlags styleFlags() const;
+
+		/**
+		 * KStyle Primitive Elements:
+		 *
+		 * The KStyle class extends the Qt's Style API by providing certain 
+		 * simplifications for parts of QStyle. To do this, the KStylePrimitive
+		 * elements were defined, which are very similar to Qt's PrimitiveElement.
+		 * 
+		 * The first three Handle primitives simplify and extend PE_DockWindowHandle, 
+		 * so do not reimplement PE_DockWindowHandle if you want the KStyle handle 
+		 * simplifications to be operable. Similarly do not reimplement CC_Slider,
+		 * SC_SliderGroove and SC_SliderHandle when using the KStyle slider
+		 * primitives. KStyle automatically double-buffers slider painting
+		 * when they are drawn via these KStyle primitives to avoid flicker.
+		 *
+		 * @li KPE_DockWindowHandle - This primitive is already implemented in KStyle,
+		 * and paints a bevelled rect with the DockWindow caption text. Re-implement
+		 * this primitive to perform other more fancy effects when drawing the dock window
+		 * handle.
+		 *
+		 * @li KPE_ToolBarHandle - This primitive must be reimplemented. It currently
+		 * only paints a filled rectangle as default behavior. This primitive is used
+		 * to render QToolBar handles.
+		 *
+		 * @li KPE_GeneralHandle - This primitive must be reimplemented. It is used
+		 * to render general handles that are not part of a QToolBar or QDockWindow, such
+		 * as the applet handles used in Kicker. The default implementation paints a filled
+		 * rect of arbitrary color.
+		 *
+		 * @li KPE_SliderGroove - This primitive must be reimplemented. It is used to 
+		 * paint the slider groove. The default implementation paints a filled rect of
+		 * arbitrary color.
+		 *
+		 * @li KPE_SliderHandle - This primitive must be reimplemented. It is used to
+		 * paint the slider handle. The default implementation paints a filled rect of
+		 * arbitrary color.
+		 *
+		 * @li KPE_ListViewExpander - This primitive is already implemented in KStyle. It
+		 * is used to draw the Expand/Collapse element in QListViews. To indicate the 
+		 * expanded state, the style flags are set to Style_Off, while Style_On implies collapsed.
+		 *
+		 * @li KPE_ListViewBranch - This primitive is already implemented in KStyle. It is
+		 * used to draw the ListView branches where necessary.
+		 */
+		enum KStylePrimitive {
+			KPE_DockWindowHandle,
+			KPE_ToolBarHandle,
+			KPE_GeneralHandle,
+
+			KPE_SliderGroove,
+			KPE_SliderHandle,
+
+			KPE_ListViewExpander,
+			KPE_ListViewBranch
+		};
+
+		/**
+		 * This function is identical to Qt's QStyle::drawPrimitive(), except that 
+		 * it adds one further parameter, 'widget', that can be used to determine 
+		 * the widget state of the KStylePrimitive in question.
+		 *
+		 * @see KStyle::KStylePrimitive
+		 * @see QStyle::drawPrimitive
+		 * @see QStyle::drawComplexControl
+		 */
+		virtual void drawKStylePrimitive( KStylePrimitive kpe,
+					QPainter* p,
+					const QWidget* widget,
+					const QRect &r,
+					const QColorGroup &cg,
+					SFlags flags = Style_Default,
+					const QStyleOption& = QStyleOption::Default ) const;
+
+
+		enum KStylePixelMetric {
+			KPM_MenuItemSeparatorHeight		= 0x00000001,
+			KPM_MenuItemHMargin			= 0x00000002,
+			KPM_MenuItemVMargin			= 0x00000004,
+			KPM_MenuItemHFrame			= 0x00000008,
+			KPM_MenuItemVFrame			= 0x00000010,
+			KPM_MenuItemCheckMarkHMargin	        = 0x00000020,
+			KPM_MenuItemArrowHMargin		= 0x00000040,
+			KPM_MenuItemTabSpacing			= 0x00000080,
+			KPM_ListViewBranchThickness		= 0x00000100
+		};
+
+		int kPixelMetric( KStylePixelMetric kpm, const QWidget* widget = 0 ) const;
+
+		// ---------------------------------------------------------------------------
+
+		void polish( QWidget* widget );
+		void unPolish( QWidget* widget );
+		void polishPopupMenu( QPopupMenu* );
+
+		void drawPrimitive( PrimitiveElement pe,
+					QPainter* p,
+					const QRect &r,
+					const QColorGroup &cg,
+					SFlags flags = Style_Default,
+					const QStyleOption& = QStyleOption::Default ) const;
+
+		void drawControl( ControlElement element,
+					QPainter* p,
+					const QWidget* widget,
+					const QRect &r,
+					const QColorGroup &cg,
+					SFlags flags = Style_Default,
+					const QStyleOption& = QStyleOption::Default ) const;
+
+		void drawComplexControl( ComplexControl control,
+					QPainter *p,
+					const QWidget* widget,
+					const QRect &r,
+					const QColorGroup &cg,
+					SFlags flags = Style_Default,
+					SCFlags controls = SC_All,
+					SCFlags active = SC_None,
+					const QStyleOption& = QStyleOption::Default ) const;
+
+		SubControl querySubControl( ComplexControl control,
+					const QWidget* widget,
+					const QPoint &pos,
+					const QStyleOption& = QStyleOption::Default ) const;
+
+		QRect querySubControlMetrics( ComplexControl control,
+					const QWidget* widget,
+					SubControl sc,
+					const QStyleOption& = QStyleOption::Default ) const;
+
+		int pixelMetric( PixelMetric m, 
+					const QWidget* widget = 0 ) const;
+
+		QRect subRect( SubRect r, 
+					const QWidget* widget ) const;
+
+		QPixmap stylePixmap( StylePixmap stylepixmap,
+					const QWidget* widget = 0,
+					const QStyleOption& = QStyleOption::Default ) const;
+
+		int styleHint( StyleHint sh, 
+					const QWidget* w = 0,
+					const QStyleOption &opt = QStyleOption::Default,
+					QStyleHintReturn* shr = 0 ) const;
+
+	protected:
+		bool eventFilter( QObject* object, QEvent* event );
+
+	private:
+		// Disable copy constructor and = operator
+		QtCKStyle( const QtCKStyle & );
+		QtCKStyle& operator=( const QtCKStyle & );
+
+	protected:
+		virtual void virtual_hook( int id, void* data );
+	private:
+		QtCKStylePrivate *d;
+};
+
+
+// vim: set noet ts=4 sw=4:
+#endif
+
diff --git a/style/qtcurve.cpp b/style/qtcurve.cpp
index de2cc1f..f5dbdbc 100644
--- a/style/qtcurve.cpp
+++ b/style/qtcurve.cpp
@@ -1,5 +1,5 @@
 /*
-  QtCurve (C) Craig Drummond, 2003 - 2007 Craig.Drummond@lycos.co.uk
+  QtCurve (C) Craig Drummond, 2003 - 2010 craig.p.drummond@gmail.com
 
   ----
 
@@ -54,13 +54,17 @@ Srollbars:
 
 For some reason Scrollbars in KHTML seem to lose the bottom/left pixels. As if KHTML expects
 the scrollbar to be 1 pixel smaller/thinner than it actually is. To 'fix' this, the pixelMetric
-function will return 1 scrollbar with 1 greater than standard for form widgets, or where widget==NULL
+function will return 1 scrollbar with 1 greater than standard for form widgets, or where widget==0L
 
 In the CC_ScrollBar draw code, the rects used for each component are shrunk by 1, in the appropriate
 dimension, so as to draw the scrollbar at the correct size.
 */
+#include <qtable.h>
 
+#include "config.h"
+#ifndef QTC_QT_ONLY
 #include <kdeversion.h>
+#endif
 #include <qsettings.h>
 #include <qmenubar.h>
 #include <qapplication.h>
@@ -95,11 +99,15 @@ dimension, so as to draw the scrollbar at the correct size.
 #include <qtimer.h>
 #include <qdatetimeedit.h>
 #include <qobjectlist.h>
+#include <qpixmapcache.h>
+#include <qbitmap.h>
+#include <qmainwindow.h>
 #include <math.h>
 #include <stdlib.h>
 #include <unistd.h>
 #include <sys/types.h>
-#define QTC_COMMON_FUNCTIONS
+#include <iostream>
+#define COMMON_FUNCTIONS
 #include "qtcurve.h"
 #define CONFIG_READ
 #include "config_file.c"
@@ -109,9 +117,134 @@ dimension, so as to draw the scrollbar at the correct size.
 #include <qstyleplugin.h>
 #include <qgroupbox.h>
 #include <qdir.h>
+// Need access to classname from within QMetaObject...
+#define private public
+#include <qmetaobject.h>
 #include <X11/Xlib.h>
 #include <X11/Xatom.h>
-#include <fixx11h.h>
+#include "qtc_fixx11h.h"
+
+static const Atom constNetMoveResize = XInternAtom(qt_xdisplay(), "_NET_WM_MOVERESIZE", False);
+static const QWidget * getTopLevel(const QWidget *widget)
+{
+    const QWidget *w=widget;
+
+    while(w && !w->isTopLevel())
+        w=w->parentWidget();
+    return w;
+}
+
+static void emitMenuSize(const QWidget *widget, unsigned short size)
+{
+    const QWidget *w=getTopLevel(widget);
+
+    if(w)
+    {
+        static const Atom constAtom  = XInternAtom(qt_xdisplay(), MENU_SIZE_ATOM, False);
+        XChangeProperty(qt_xdisplay(), w->parentWidget() ? w->parentWidget()->winId() : w->winId(),
+                        constAtom, XA_CARDINAL, 16, PropModeReplace, (unsigned char *)&size, 1);
+    }
+}
+
+void setBgndProp(QWidget *widget, unsigned short app)
+{
+    const QWidget *w=getTopLevel(widget);
+
+    if(w)
+    {
+        static const Atom constAtom  = XInternAtom(qt_xdisplay(), BGND_ATOM, False);
+        XChangeProperty(qt_xdisplay(), w->parentWidget() ? w->parentWidget()->winId() : w->winId(),
+                        constAtom, XA_CARDINAL, 16, PropModeReplace, (unsigned char *)&app, 1);
+    }
+}
+
+static void triggerWMMove(const QWidget *w, const QPoint &p)
+{
+    //...Taken from bespin...
+    // stolen... errr "adapted!" from QSizeGrip
+    XEvent xev;
+    xev.xclient.type = ClientMessage;
+    xev.xclient.message_type = constNetMoveResize;
+    xev.xclient.display = qt_xdisplay();
+    xev.xclient.window = w->parentWidget() ? w->parentWidget()->winId() : w->winId();
+    xev.xclient.format = 32;
+    xev.xclient.data.l[0] = p.x();
+    xev.xclient.data.l[1] = p.y();
+    xev.xclient.data.l[2] = 8; // NET::Move
+    xev.xclient.data.l[3] = Button1;
+    xev.xclient.data.l[4] = 0;
+    XUngrabPointer(qt_xdisplay(), CurrentTime);
+    XSendEvent(qt_xdisplay(), qt_xrootwin(), False,
+               SubstructureRedirectMask | SubstructureNotifyMask, &xev);
+}
+
+#define MO_ARROW_X(FLAGS, COL) (MO_NONE!=opts.coloredMouseOver && FLAGS&Style_MouseOver && FLAGS&Style_Enabled ? itsMouseOverCols[ARROW_MO_SHADE] : COL)
+#define MO_ARROW(COL)          MO_ARROW_X(flags, COL)
+
+static const int constMenuPixmapWidth=22;
+
+static bool useQt3Settings()
+{
+    static int ver=0;
+
+    if(0==ver)
+    {
+        const char *sessionVersion=getenv("KDE_SESSION_VERSION");
+
+        ver=sessionVersion
+                ? atoi(sessionVersion)<4
+                    ? 3
+                    : 4
+#ifdef QTC_DEFAULT_TO_KDE3
+                : 3;
+#else
+                : getenv("KDE_FULL_SESSION")
+                    ? 3
+                    : 4;
+#endif
+    }
+
+    return 3==ver;
+}
+
+static QRect adjusted(const QRect r, int xp1, int yp1, int xp2, int yp2)
+{
+    int x1, y1, x2, y2;
+
+    r.coords(&x1, &y1, &x2, &y2);
+    return QRect(QPoint(x1 + xp1, y1 + yp1), QPoint(x2 + xp2, y2 + yp2));
+}
+
+static void adjust(QRect &r, int dx1, int dy1, int dx2, int dy2)
+{
+    int x1, y1, x2, y2;
+
+    r.coords(&x1, &y1, &x2, &y2);
+    x1 += dx1;
+    y1 += dy1;
+    x2 += dx2;
+    y2 += dy2;
+    r.setCoords(x1, y1, x2, y2);
+}
+
+inline bool isSpecialHover(QWidget *w)
+{
+    return w && (
+#if QT_VERSION >= 0x030200
+                    ::qt_cast<QRadioButton *>(w) ||
+                    ::qt_cast<QCheckBox *>(w) ||
+#endif
+                    ::qt_cast<QScrollBar *>(w) ||
+#if defined KDE_VERSION && KDE_VERSION >= 0x30400 && KDE_VERSION < 0x30500
+                    ::qt_cast<QToolButton *>(w) ||
+
+#endif
+                    ::qt_cast<QHeader *>(w) ||
+                    ::qt_cast<QSpinWidget *>(w) ||
+                    ::qt_cast<QComboBox *>(w) ||
+                    ::qt_cast<QTabBar *>(w)
+                );
+}
 
 static QString readEnvPath(const char *env)
 {
@@ -120,41 +253,90 @@ static QString readEnvPath(const char *env)
    return path.isEmpty() ? QString::null : QFile::decodeName(path);
 }
 
-static QString kdeHome()
+static QString kdeHome(bool kde3=false)
 {
-    QString env(readEnvPath(getuid() ? "KDEHOME" : "KDEROOTHOME"));
+    static QString kdeHome[2];
+
+    // Execute kde-config to ascertain users KDEHOME
+    if(kdeHome[kde3 ? 0 : 1].isEmpty())
+    {
+        FILE *fpipe;
 
-    return env.isEmpty()
-                ? QDir::homeDirPath()+"/.kde"
-                : env;
+        if (fpipe = (FILE*)popen(kde3 ? "kde-config --localprefix 2> /dev/null" : "kde4-config --localprefix 2> /dev/null", "r"))
+        {
+            char line[1024];
+
+            while(fgets(line, sizeof line, fpipe))
+            {
+                kdeHome[kde3 ? 0 : 1]=QFile::decodeName(line).replace("\n", "");
+                break;
+            }
+            pclose(fpipe);
+        }
+    }
+
+    // Try env vars...
+    if(kdeHome[kde3 ? 0 : 1].isEmpty())
+    {
+        kdeHome[kde3 ? 0 : 1]=readEnvPath(getuid() ? "KDEHOME" : "KDEROOTHOME");
+        if (kdeHome[kde3 ? 0 : 1].isEmpty())
+        {
+            QDir    homeDir(QDir::homeDirPath());
+            QString kdeConfDir("/.kde");
+            if (!kde3 && homeDir.exists(".kde4"))
+                kdeConfDir = QString("/.kde4");
+            kdeHome[kde3 ? 0 : 1] = QDir::homeDirPath() + kdeConfDir;
+        }
+    }
+    return kdeHome[kde3 ? 0 : 1];
 }
 
-static void getStyles(const QString &dir, QStringList &styles)
+#ifdef QTC_STYLE_SUPPORT
+static void getStyles(const QString &dir, const char *sub, QStringList &styles)
 {
-    QDir d(dir+QTC_THEME_DIR);
+    QDir d(dir+sub);
 
-    d.setNameFilter(QTC_THEME_PREFIX"*"QTC_THEME_SUFFIX);
+    if(d.exists())
+    {
+        d.setNameFilter(THEME_PREFIX"*"THEME_SUFFIX);
 
-    QStringList                entries(d.entryList());
-    QStringList::ConstIterator it(entries.begin()),
-                               end(entries.end());
+        QStringList                entries(d.entryList());
+        QStringList::ConstIterator it(entries.begin()),
+                                   end(entries.end());
 
-    for(; it!=end; ++it)
-    {
-        QString style((*it).left((*it).findRev(QTC_THEME_SUFFIX)));
+        for(; it!=end; ++it)
+        {
+            QString style((*it).left((*it).findRev(THEME_SUFFIX)));
 
-        if(!styles.contains(style))
-            styles.append(style);
+            if(!styles.contains(style))
+                styles.append(style);
+        }
     }
 }
 
-static QString themeFile(const QString &dir, const QString &n)
+static void getStyles(const QString &dir, QStringList &styles)
 {
-    QString name(dir+QTC_THEME_DIR+n+QTC_THEME_SUFFIX);
+    getStyles(dir, THEME_DIR, styles);
+    getStyles(dir, THEME_DIR4, styles);
+}
+
+static QString themeFile(const QString &dir, const QString &n, const char *sub)
+{
+    QString name(dir+sub+n+THEME_SUFFIX);
 
     return QFile(name).exists() ? name : QString();
 }
 
+static QString themeFile(const QString &dir, const QString &n, bool kde3=true)
+{
+    QString name(themeFile(dir, n, kde3 ? THEME_DIR : THEME_DIR4));
+
+    if(name.isEmpty())
+        name=themeFile(dir, n, kde3 ? THEME_DIR4 : THEME_DIR);
+    return name;
+}
+#endif
+
 class QtCurveStylePlugin : public QStylePlugin
 {
     public:
@@ -166,9 +348,12 @@ class QtCurveStylePlugin : public QStylePlugin
         QStringList list;
         list << "QtCurve";
 
-        getStyles(kdeHome(), list);
-        getStyles(KDE_PREFIX(3), list);
-        getStyles(KDE_PREFIX(4), list);
+#ifdef QTC_STYLE_SUPPORT
+        getStyles(kdeHome(useQt3Settings()), list);
+        getStyles(kdeHome(!useQt3Settings()), list);
+        getStyles(KDE_PREFIX(useQt3Settings() ? 3 : 4), list);
+        getStyles(KDE_PREFIX(useQt3Settings() ? 4 : 3), list);
+#endif
 
         return list;
     }
@@ -177,36 +362,42 @@ class QtCurveStylePlugin : public QStylePlugin
     {
         return "qtcurve"==s.lower()
                     ? new QtCurveStyle
-                    : 0==s.find(QTC_THEME_PREFIX)
+#ifdef QTC_STYLE_SUPPORT
+                    : 0==s.find(THEME_PREFIX)
                         ? new QtCurveStyle(s)
+#endif
                         : 0;
     }
 };
 
 Q_EXPORT_PLUGIN(QtCurveStylePlugin)
 
-#define QTC_SKIP_TASKBAR (APP_SKIP_TASKBAR==itsThemedApp || APP_KPRINTER==itsThemedApp || APP_KDIALOG==itsThemedApp)
+#define SKIP_TASKBAR (APP_SKIP_TASKBAR==itsThemedApp || APP_KPRINTER==itsThemedApp || APP_KDIALOG==itsThemedApp)
 
-#if KDE_VERSION >= 0x30200
+#if defined QTC_QT_ONLY || !defined KDE_VERSION || KDE_VERSION >= 0x30200
 #include <qfile.h>
 #endif
 
-#define QTC_NO_SECT -1
+#define NO_SECT -1
+
+#define VERTICAL_TB_BUTTON 0x01000000
+#define CHECK_BUTTON       0x02000000
+#define STD_TOOLBUTTON     0x04000000
+#define TOGGLE_BUTTON      0x08000000
+#define NO_ETCH_BUTTON     0x10000000
+#define DW_CLOSE_BUTTON    0x80000000
+#define LISTVIEW_ITEM      0x20000000
+#define MENU_ITEM          0x40000000
+#define WINDOWTITLE_SPACER     0x10000000
 
-#define QTC_VERTICAL_TB_BUTTON 0x01000000
-#define QTC_CHECK_BUTTON       0x02000000
-#define QTC_STD_TOOLBUTTON     0x04000000
-#define QTC_TOGGLE_BUTTON      0x08000000
-#define QTC_NO_ETCH_BUTTON     0x10000000
-#define QTC_LISTVIEW_ITEM      0x20000000
-#define QTC_MENU_ITEM          0x40000000
+#define DW_BGND 105
 
-#if KDE_VERSION >= 0x30200
+#if defined QTC_QT_ONLY || !defined KDE_VERSION || KDE_VERSION >= 0x30200
 // Try to read $KDEHOME/share/config/kickerrc to find out if kicker is transparent...
 
 static bool kickerIsTrans()
 {
-    QString cfgFileName(kdeHome()+"/share/config/kickerrc");
+    QString cfgFileName(kdeHome(true)+"/share/config/kickerrc");
     bool    trans(false);
     QFile   cfgFile(cfgFileName);
 
@@ -223,16 +414,16 @@ static bool kickerIsTrans()
 
             if(inGen)
             {
-                if(0==line.find("Transparent="))  // Found it!
+                if(0==line.find("Transparent=", false))  // Found it!
                 {
-                    if(-1!=line.find("true"))
+                    if(-1!=line.find("true", false))
                         trans=true;
                     stop=true;
                 }
                 else if(line[0]==QChar('['))   // Then wasn't in General section...
                     stop=true;
             }
-            else if(0==line.find("[General]"))
+            else if(0==line.find("[General]", false))
                 inGen=true;
         }
         cfgFile.close();
@@ -242,13 +433,6 @@ static bool kickerIsTrans()
 }
 #endif
 
-inline QColor midColor(const QColor &a, const QColor &b, double factor=1.0)
-{
-    return QColor((a.red()+limit(b.red()*factor))>>1, 
-                  (a.green()+limit(b.green()*factor))>>1, 
-                  (a.blue()+limit(b.blue()*factor))>>1);
-}
-
 static bool isKhtmlWidget(const QWidget *w, int level=1)
 {
     return w && ((w->name() && 0==strcmp(w->name(), "__khtml")) ||
@@ -264,7 +448,7 @@ static bool isKhtmlFormWidget(const QWidget *widget)
 
     //Form widgets are in the KHTMLView, but that has 2 further inner levels
     //of widgets - QClipperWidget, and outside of that, QViewportWidget
-    QWidget *potentialClipPort(widget ? widget->parentWidget() : NULL);
+    QWidget *potentialClipPort(widget ? widget->parentWidget() : 0L);
 
     if (!potentialClipPort || potentialClipPort->isTopLevel())
         return false;
@@ -284,20 +468,118 @@ static bool isKhtmlFormWidget(const QWidget *widget)
     return true;
 }
 
-QColor shade(const QColor &a, float k)
+static bool inStackWidget(const QWidget *w)
 {
-    QColor mod;
+    while(w)
+    {
+        if(::qt_cast<const QTabWidget *>(w))
+            return true;
+        w=w->parentWidget();
+    }
+    
+    return false;
+}
 
-    shade(a, &mod, k);
-    return mod;
+static void setRgb(QColor *col, const QStringList &rgb)
+{
+    if(3==rgb.size())
+        *col=QColor(rgb[0].toInt(), rgb[1].toInt(), rgb[2].toInt());
+}
+
+struct KDESettings
+{
+    KDESettings()
+    {
+        inactiveHighlight=false;
+    }
+
+    bool   inactiveHighlight;
+    QColor hover,
+           focus;
+};
+
+static KDESettings kdeSettings;
+static bool readKdeGlobals()
+{
+    static int lastCheck=0;
+
+    int now=time(0L);
+
+    // Dont keep on reading kdeglobals file - only read if its been at least 2 seconds since the last time...
+    if(abs(now-lastCheck)<3)
+        return false;
+
+  
+    QColor highlight(QApplication::palette().active().highlight());
+    bool   inactiveEnabled(false),
+           changeSelectionColor(false),
+           useQt3(useQt3Settings());
+    QFile  f(kdeHome(useQt3)+"/share/config/kdeglobals");
+
+    lastCheck=now;
+
+    if(useQt3)
+        kdeSettings.hover=kdeSettings.focus=highlight;
+    else
+    {
+        kdeSettings.hover=QColor(119, 183, 255);
+        kdeSettings.focus=QColor( 43, 116, 199);
+    }
+
+    if(f.open(IO_ReadOnly))
+    {
+        QTextStream in(&f);
+        bool        inPal(false),
+                    inInactive(false),
+                    donePal(useQt3),
+                    doneInactive(false);
+
+        while (!in.atEnd() && (!donePal || !doneInactive))
+        {
+            QString line(in.readLine());
+            if(inPal)
+            {
+                if(0==line.find("DecorationFocus=", false))
+                    setRgb(&kdeSettings.focus, QStringList::split(",", line.mid(16)));
+                else if(0==line.find("DecorationHover=", false))
+                    setRgb(&kdeSettings.hover, QStringList::split(",", line.mid(16)));
+                else if (-1!=line.find('['))
+                {
+                    donePal=true;
+                    inPal=false;
+                }
+            }
+            else if(inInactive)
+            {
+                if(0==line.find("ChangeSelectionColor=", false))
+                    changeSelectionColor=line.find("=true");
+                else if(0==line.find("Enable=", false))
+                    inactiveEnabled=line.find("=true");
+                else if (-1!=line.find('['))
+                {
+                    doneInactive=true;
+                    inInactive=false;
+                }
+            }
+            if(!inPal && !inInactive)
+                if(!useQt3 && 0==line.find("[Colors:Button]", false))
+                    inPal=true;
+                else if(!useQt3 && 0==line.find("[ColorEffects:Inactive]", false))
+                    inInactive=true;
+        }
+        f.close();
+    }
+
+    kdeSettings.inactiveHighlight=changeSelectionColor && inactiveEnabled;
+    return true;
 }
 
 static void drawLines(QPainter *p, const QRect &r, bool horiz, int nLines, int offset,
-                      const QColor *cols, int startOffset, int dark, int etchedDisp=1,
-                      bool light=true)
+                      const QColor *cols, int startOffset, int dark, ELine type)
 {
-    int space((nLines*2)+(etchedDisp || !light ? (nLines-1) : 0)),
-        step(etchedDisp || !light ? 3 : 2),
+    int space((nLines*2)+(LINE_DASHES!=type ? (nLines-1) : 0)),
+        step(LINE_DASHES!=type ? 3 : 2),
+        etchedDisp(LINE_SUNKEN==type ? 1 : 0),
         x(horiz ? r.x(): r.x()+((r.width()-space)>>1)),
         y(horiz ? r.y()+((r.height()-space)>>1): r.y()),
         x2(r.x()+r.width()-1),
@@ -311,13 +593,15 @@ static void drawLines(QPainter *p, const QRect &r, bool horiz, int nLines, int o
 
         p->setPen(cols[dark]);
         for(i=0; i<space; i+=step)
-            p->drawLine(x+offset, y+i, x2-(offset+etchedDisp), y+i);
+            p->drawLine(x+offset, y+i, x2-offset, y+i);
 
-        if(light)
+        if(LINE_FLAT!=type)
         {
+            x+=etchedDisp;
+            x2+=etchedDisp;
             p->setPen(cols[0]);
             for(i=1; i<space; i+=step)
-                p->drawLine(x+offset+etchedDisp, y+i, x2-offset, y+i);
+                p->drawLine(x+offset, y+i, x2-offset, y+i);
         }
     }
     else
@@ -327,13 +611,15 @@ static void drawLines(QPainter *p, const QRect &r, bool horiz, int nLines, int o
 
         p->setPen(cols[dark]);
         for(i=0; i<space; i+=step)
-            p->drawLine(x+i, y+offset, x+i, y2-(offset+etchedDisp));
+            p->drawLine(x+i, y+offset, x+i, y2-offset);
 
-        if(light)
+        if(LINE_FLAT!=type)
         {
+            y+=etchedDisp;
+            y2+=etchedDisp;
             p->setPen(cols[0]);
             for(i=1; i<space; i+=step)
-                p->drawLine(x+i, y+offset+etchedDisp, x+i, y2-offset);
+                p->drawLine(x+i, y+offset, x+i, y2-offset);
         }
     }
 }
@@ -387,38 +673,28 @@ static bool onToolBar(QWidget *widget, int l=0)
                : false;
 }
 
-enum ECacheAppearance
-{
-    CACHE_APPEARANCE_SELECTED=APPEARANCE_BEVELLED+1
-};
+#define PIXMAP_DIMENSION 10
 
-inline int app2App(EAppearance app, bool sel)
+enum ECacheFlags
 {
-    return sel ? (int)CACHE_APPEARANCE_SELECTED : (int)app;
-}
-
-#define QTC_PIXMAP_DIMENSION 10
+    CACHE_STD,
+    CACHE_COL_SEL_TAB
+};
 
-static int     double2int(double d) { return (int)(d*100); }
-static QString createKey(int size, QRgb color, bool horiz, bool increase=false, int app=0,
-                         EWidget w=WIDGET_OTHER, double shadeTop=0.0, double shadeBot=0.0)
+static QString createKey(int size, QRgb color, bool horiz, int app, ECacheFlags flags)
 {
     QString key;
 
-    if(WIDGET_DEF_BUTTON==w && !IS_GLASS(app)) // Glass uses different shading for def button...
-        w=WIDGET_STD_BUTTON;
-
-    QTextOStream(&key) << size << color << horiz << increase << app << (int)w
-                       << ' ' << double2int(shadeTop) << ' ' << double2int(shadeBot);
+    QTextOStream(&key) << size << '-' << color << '-' << horiz << '-' << app << '-' << flags;
 
     return key;
 }
 
-static QString createKey(QRgb color)
+static QString createKey(QRgb color, char type='p')
 {
     QString key;
 
-    QTextOStream(&key) << 'p' << color;
+    QTextOStream(&key) << type << color;
 
     return key;
 }
@@ -432,104 +708,39 @@ static QString createKey(QRgb color, EPixmap p)
     return key;
 }
 
-static void readPal(QString &line, QPalette::ColorGroup grp, QPalette &pal)
+#ifdef SET_MDI_WINDOW_BUTTON_POSITIONS
+static void parseWindowLine(const QString &line, QValueList<int> &data)
 {
-    QStringList cols(QStringList::split(", ", line.mid(line.find("=#")+1)));
-
-    if(17==cols.count())
-    {
-        QStringList::ConstIterator it(cols.begin()),
-                                   end(cols.end());
-        QColorGroup                group;
-
-        for(int i=0; it!=end, i<16; ++it, ++i)
-        {
-            QColor col;
-
-            setRgb(&col, (*it).latin1());
-            group.setColor((QColorGroup::ColorRole)i, col);
-        }
+    int len(line.length());
 
-        switch(grp)
+    for(int i=0; i<len; ++i)
+        switch(line[i].latin1())
         {
-            case QPalette::Active:
-                pal.setActive(group);
+            case 'M':
+                data.append(QStyle::SC_TitleBarSysMenu);
+                break;
+            case '_':
+                data.append(WINDOWTITLE_SPACER);
+                break;
+//             case 'H':
+//                 data.append(QStyle::SC_TitleBarContextHelpButton);
+//                 break;
+            case 'L':
+                data.append(QStyle::SC_TitleBarShadeButton);
                 break;
-            case QPalette::Disabled:
-                pal.setDisabled(group);
+            case 'I':
+                data.append(QStyle::SC_TitleBarMinButton);
                 break;
-            case QPalette::Inactive:
-                pal.setInactive(group);
+            case 'A':
+                data.append(QStyle::SC_TitleBarMaxButton);
+                break;
+            case 'X':
+                data.append(QStyle::SC_TitleBarCloseButton);
             default:
                 break;
         }
-    }
-}
-
-static bool readQt4(QFile &f, QPalette &pal, QFont &font)
-{
-    bool inSect(false),
-         gotPal(false),
-         gotFont(false);
-
-    if(f.open(IO_ReadOnly))
-    {
-        QTextStream in(&f);
-
-        while (!in.atEnd())
-        {
-            QString line(in.readLine());
-
-            if(inSect)
-            {
-                gotPal=true;
-                if(0==line.find("Palette\\active=#"))
-                {
-                    readPal(line, QPalette::Active, pal);
-                    gotPal=true;
-                }
-                else if(0==line.find("Palette\\disabled=#"))
-                {
-                    readPal(line, QPalette::Disabled, pal);
-                    gotPal=true;
-                }
-                else if(0==line.find("Palette\\inactive=#"))
-                {
-                    readPal(line, QPalette::Inactive, pal);
-                    gotPal=true;
-                }
-                else if(0==line.find("font=\""))
-                    gotFont=font.fromString(line.mid(6, line.findRev('\"')-6));
-                else if (0==line.find('['))
-                    break;
-            }
-            else if(0==line.find("[Qt]"))
-                inSect=true;
-        }
-        f.close();
-    }
-
-    return gotPal && gotFont;
-}
-
-static bool useQt4Settings()
-{
-    static const char *vers=getenv("KDE_SESSION_VERSION");
-
-    return vers && atoi(vers)>=4;
-}
-
-static bool readQt4(QPalette &pal, QFont &font)
-{
-    if(useQt4Settings())
-    {
-        QFile file(xdgConfigFolder()+QString("Trolltech.conf"));
-
-        if(file.exists())
-            return readQt4(file, pal, font);
-    }
-    return false;
 }
+#endif
 
 static bool isCheckBoxOfGroupBox(const QObject *w)
 {
@@ -538,108 +749,346 @@ static bool isCheckBoxOfGroupBox(const QObject *w)
            !qstrcmp(w->name(), "qt_groupbox_checkbox");
 }
 
-//
-// OO.o 2.x checks to see whether the used theme "inherits" from HighContrastStyle,
-// if so it uses the highlightedText color to draw highlighted menubar and popup menu
-// items. Otherwise it uses the standard color. So faking this inheritance, solves this
-// problem.
-HighContrastStyle::HighContrastStyle()
-                 : KStyle(AllowMenuTransparency, WindowsStyleScrollBar)
+static void drawArrow(QPainter *p, const QRect &r, const QColor &col, QStyle::PrimitiveElement pe, const Options &opts, bool small=false)
 {
+    QPointArray a;
+
+    if(small)
+        switch(pe)
+        {
+            case QStyle::PE_ArrowUp:
+                a.setPoints(opts.vArrows ? 6 : 3,  2,0,  0,-2,  -2,0,   -2,1, 0,-1, 2,1);
+                break;
+            case QStyle::PE_ArrowDown:
+                a.setPoints(opts.vArrows ? 6 : 3,  2,0,  0,2,  -2,0,   -2,-1, 0,1, 2,-1);
+                break;
+            case QStyle::PE_ArrowRight:
+                a.setPoints(opts.vArrows ? 6 : 3,  0,-2,  2,0,  0,2,   -1,2, 1,0 -1,-2);
+                break;
+            case QStyle::PE_ArrowLeft:
+                a.setPoints(opts.vArrows ? 6 : 3,  0,-2,  -2,0,  0,2,   1,2, -1,0, 1,-2);
+                break;
+            default:
+                return;
+        }
+    else // Large arrows...
+        switch(pe)
+        {
+            case QStyle::PE_ArrowUp:
+                a.setPoints(opts.vArrows ? 8 : 3,  3,1,  0,-2,  -3,1,    -3,2,  -2,2, 0,0,  2,2, 3,2);
+                break;
+            case QStyle::PE_ArrowDown:
+                a.setPoints(opts.vArrows ? 8 : 3,  3,-1,  0,2,  -3,-1,   -3,-2,  -2,-2, 0,0, 2,-2, 3,-2);
+                break;
+            case QStyle::PE_ArrowRight:
+                a.setPoints(opts.vArrows ? 8 : 3,  -1,-3,  2,0,  -1,3,   -2,3, -2,2, 0,0, -2,-2, -2,-3);
+                break;
+            case QStyle::PE_ArrowLeft:
+                a.setPoints(opts.vArrows ? 8 : 3,  1,-3,  -2,0,  1,3,    2,3, 2,2, 0,0, 2,-2, 2,-3);
+                break;
+            default:
+                return;
+        }
+
+    if(a.isNull())
+        return;
+
+    p->save();
+    a.translate((r.x()+(r.width()>>1)),(r.y()+(r.height()>>1)));
+    p->setBrush(col);
+    p->setPen(col);
+    p->drawPolygon(a);
+    p->restore();
 }
 
+#ifdef QTC_STYLE_SUPPORT
 QtCurveStyle::QtCurveStyle(const QString &name)
-            : itsSliderCols(NULL),
-              itsDefBtnCols(NULL),
-              itsMouseOverCols(NULL),
-              itsSidebarButtonsCols(NULL),
+#else
+QtCurveStyle::QtCurveStyle()
+#endif
+            : BASE_STYLE(AllowMenuTransparency, WindowsStyleScrollBar),
+              itsSliderCols(0L),
+              itsDefBtnCols(0L),
+              itsMouseOverCols(0L),
+              itsComboBtnCols(0L),
+              itsCheckRadioSelCols(0L),
+              itsSortedLvColors(0L),
+              itsProgressCols(0L),
+              itsSidebarButtonsCols(0L),
+              itsActiveMdiColors(0L),
+              itsMdiColors(0L),
               itsThemedApp(APP_OTHER),
               itsPixmapCache(150000, 499),
-#if KDE_VERSION >= 0x30200
+#if defined QTC_QT_ONLY || !defined KDE_VERSION || KDE_VERSION >= 0x30200
               itsIsTransKicker(false),
 #endif
               itsHover(HOVER_NONE),
               itsOldPos(-1, -1),
               itsFormMode(false),
-              itsHoverWidget(NULL),
-              itsHoverSect(QTC_NO_SECT),
-              itsHoverTab(NULL),
-              itsMactorPal(NULL),
+              itsHoverWidget(0L),
+              itsHoverSect(NO_SECT),
+              itsHoverTab(0L),
+              itsMactorPal(0L),
               itsActive(true),
-              itsIsSpecialHover(false)
+              itsIsSpecialHover(false),
+              itsDragWidget(0L),
+              itsDragWidgetHadMouseTracking(false)
 {
+#ifdef QTC_STYLE_SUPPORT
     QString rcFile;
+    if(!name.isEmpty())
+    {
+        rcFile=themeFile(kdeHome(), name, useQt3Settings());
+
+        if(rcFile.isEmpty())
+        {
+            rcFile=themeFile(kdeHome(true), name);
+            if(rcFile.isEmpty())
+            {
+                rcFile=themeFile(KDE_PREFIX(useQt3Settings() ? 3 : 4), name, useQt3Settings());
+                if(rcFile.isEmpty())
+                    rcFile=themeFile(KDE_PREFIX(useQt3Settings() ? 4 : 3), name, !useQt3Settings());
+            }
+        }
+    }
+
+    readConfig(rcFile, &opts);
+#else
+    readConfig(QString(), &opts);
+#endif
+
+    if(FRAME_LINE==opts.groupBox || opts.gbLabel&GB_LBL_BOLD)
+        opts.groupBox=FRAME_NONE;
+
+    opts.contrast=QSettings().readNumEntry("/Qt/KDE/contrast", DEFAULT_CONTRAST);
+    if(opts.contrast<0 || opts.contrast>10)
+        opts.contrast=DEFAULT_CONTRAST;
+
+    itsPixmapCache.setAutoDelete(true);
+
+    shadeColors(QApplication::palette().active().highlight(), itsHighlightCols);
+    shadeColors(QApplication::palette().active().background(), itsBackgroundCols);
+    shadeColors(QApplication::palette().active().button(), itsButtonCols);
+
+    setDecorationColors(true);
+
+    switch(opts.shadeSliders)
+    {
+        default:
+        case SHADE_DARKEN:
+        case SHADE_NONE:
+            break;
+        case SHADE_SELECTED:
+            itsSliderCols=itsHighlightCols;
+            break;
+        case SHADE_BLEND_SELECTED:
+        case SHADE_CUSTOM:
+            if(!itsSliderCols)
+                itsSliderCols=new QColor [TOTAL_SHADES+1];
+            shadeColors(SHADE_BLEND_SELECTED==opts.shadeSliders
+                            ? midColor(itsHighlightCols[ORIGINAL_SHADE],
+                                       itsButtonCols[ORIGINAL_SHADE])
+                            : opts.customSlidersColor,
+                        itsSliderCols);
+    }
+
+    switch(opts.defBtnIndicator)
+    {
+        case IND_GLOW:
+        case IND_SELECTED:
+            itsDefBtnCols=itsHighlightCols;
+            break;
+        case IND_TINT:
+            itsDefBtnCols=new QColor [TOTAL_SHADES+1];
+            shadeColors(tint(itsButtonCols[ORIGINAL_SHADE],
+                            itsHighlightCols[ORIGINAL_SHADE], DEF_BNT_TINT), itsDefBtnCols);
+            break;
+        default:
+            break;
+        case IND_COLORED:
+            if(SHADE_BLEND_SELECTED==opts.shadeSliders)
+                itsDefBtnCols=itsSliderCols;
+            else
+            {
+                itsDefBtnCols=new QColor [TOTAL_SHADES+1];
+                shadeColors(midColor(itsHighlightCols[ORIGINAL_SHADE],
+                                    itsButtonCols[ORIGINAL_SHADE]), itsDefBtnCols);
+            }
+    }
+        
+    switch(opts.comboBtn)
+    {
+        default:
+        case SHADE_DARKEN:
+        case SHADE_NONE:
+            break;
+        case SHADE_SELECTED:
+            itsComboBtnCols=itsHighlightCols;
+            break;
+        case SHADE_BLEND_SELECTED:
+            if(opts.shadeSliders==SHADE_BLEND_SELECTED)
+            {
+                itsComboBtnCols=itsSliderCols;
+                break;
+            }
+        case SHADE_CUSTOM:
+            if(opts.shadeSliders==SHADE_CUSTOM && opts.customSlidersColor==opts.customComboBtnColor)
+            {
+                itsComboBtnCols=itsSliderCols;
+                break;
+            }
+            if(!itsComboBtnCols)
+                itsComboBtnCols=new QColor [TOTAL_SHADES+1];
+            shadeColors(SHADE_BLEND_SELECTED==opts.comboBtn
+                            ? midColor(itsHighlightCols[ORIGINAL_SHADE],
+                                       itsButtonCols[ORIGINAL_SHADE])
+                            : opts.customComboBtnColor,
+                        itsComboBtnCols);
+    }
 
-    defaultSettings(&opts);
-    if(!name.isEmpty())
+    switch(opts.sortedLv)
     {
-        rcFile=themeFile(kdeHome(), name);
-
-        if(rcFile.isEmpty())
-        {
-            rcFile=themeFile(KDE_PREFIX(useQt4Settings() ? 4 : 3), name);
-            if(rcFile.isEmpty())
-                rcFile=themeFile(KDE_PREFIX(useQt4Settings() ? 3 : 4), name);
-        }
+        case SHADE_DARKEN:
+            if(!itsSortedLvColors)
+                itsSortedLvColors=new QColor [TOTAL_SHADES+1];
+            shadeColors(shade(opts.lvButton ? itsButtonCols[ORIGINAL_SHADE] : itsBackgroundCols[ORIGINAL_SHADE], LV_HEADER_DARK_FACTOR), itsSortedLvColors);
+            break;
+        default:
+        case SHADE_NONE:
+            break;
+        case SHADE_SELECTED:
+            itsSortedLvColors=itsHighlightCols;
+            break;
+        case SHADE_BLEND_SELECTED:
+            if(SHADE_BLEND_SELECTED==opts.shadeSliders)
+            {
+                itsSortedLvColors=itsSliderCols;
+                break;
+            }
+            else if(SHADE_BLEND_SELECTED==opts.comboBtn)
+            {
+                itsSortedLvColors=itsComboBtnCols;
+                break;
+            }
+        case SHADE_CUSTOM:
+            if(opts.shadeSliders==SHADE_CUSTOM && opts.customSlidersColor==opts.customSortedLvColor)
+            {
+                itsSortedLvColors=itsSliderCols;
+                break;
+            }
+            if(opts.comboBtn==SHADE_CUSTOM && opts.customComboBtnColor==opts.customSortedLvColor)
+            {
+                itsSortedLvColors=itsComboBtnCols;
+                break;
+            }
+            if(!itsSortedLvColors)
+                itsSortedLvColors=new QColor [TOTAL_SHADES+1];
+            shadeColors(SHADE_BLEND_SELECTED==opts.sortedLv
+                            ? midColor(itsHighlightCols[ORIGINAL_SHADE],
+                                       (opts.lvButton ? itsButtonCols[ORIGINAL_SHADE] : itsBackgroundCols[ORIGINAL_SHADE]))
+                            : opts.customSortedLvColor,
+                        itsSortedLvColors);
     }
 
-    readConfig(rcFile, &opts, &opts);
-    opts.contrast=QSettings().readNumEntry("/Qt/KDE/contrast", 7);
-    if(opts.contrast<0 || opts.contrast>10)
-        opts.contrast=7;
-    itsPixmapCache.setAutoDelete(true);
-
-    if ((SHADE_CUSTOM==opts.shadeMenubars || SHADE_BLEND_SELECTED==opts.shadeMenubars) &&
-        "soffice.bin"==QString(qApp->argv()[0]) && TOO_DARK(SHADE_CUSTOM==opts.shadeMenubars
-                                                       ? opts.customMenubarsColor
-                                                       : itsMenuitemCols[ORIGINAL_SHADE]))
-        opts.shadeMenubars=SHADE_DARKEN;
-
-    shadeColors(QApplication::palette().active().highlight(), itsMenuitemCols);
-    shadeColors(QApplication::palette().active().background(), itsBackgroundCols);
-    shadeColors(QApplication::palette().active().button(), itsButtonCols);
-    if(SHADE_SELECTED==opts.shadeSliders)
-        itsSliderCols=itsMenuitemCols;
-    else if(SHADE_NONE!=opts.shadeSliders)
+    switch(opts.crColor)
     {
-        itsSliderCols=new QColor [TOTAL_SHADES+1];
-        shadeColors(SHADE_BLEND_SELECTED==opts.shadeSliders
-                        ? midColor(itsMenuitemCols[ORIGINAL_SHADE],
-                                   itsButtonCols[ORIGINAL_SHADE])
-                        : opts.customSlidersColor,
-                    itsSliderCols);
+        default:
+        case SHADE_NONE:
+            itsCheckRadioSelCols=itsButtonCols;
+            break;
+        case SHADE_DARKEN:
+            if(!itsCheckRadioSelCols)
+                itsCheckRadioSelCols=new QColor [TOTAL_SHADES+1];
+            shadeColors(shade(itsButtonCols[ORIGINAL_SHADE], LV_HEADER_DARK_FACTOR), itsCheckRadioSelCols);
+            break;
+        case SHADE_SELECTED:
+            itsCheckRadioSelCols=itsHighlightCols;
+            break;
+        case SHADE_CUSTOM:
+            if(SHADE_CUSTOM==opts.shadeSliders && opts.customSlidersColor==opts.customCrBgndColor)
+                itsCheckRadioSelCols=itsSliderCols;
+            else if(SHADE_CUSTOM==opts.comboBtn && opts.customComboBtnColor==opts.customCrBgndColor)
+                itsCheckRadioSelCols=itsComboBtnCols;
+            else if(SHADE_CUSTOM==opts.sortedLv && opts.customSortedLvColor==opts.customCrBgndColor)
+                itsCheckRadioSelCols=itsSortedLvColors;
+            else
+            {
+                if(!itsCheckRadioSelCols)
+                    itsCheckRadioSelCols=new QColor [TOTAL_SHADES+1];
+                shadeColors(opts.customCrBgndColor, itsCheckRadioSelCols);
+            }
+            break;
+        case SHADE_BLEND_SELECTED:
+            if(SHADE_BLEND_SELECTED==opts.shadeSliders)
+                itsCheckRadioSelCols=itsSliderCols;
+            else if(SHADE_BLEND_SELECTED==opts.comboBtn)
+                itsCheckRadioSelCols=itsComboBtnCols;
+            else if(SHADE_BLEND_SELECTED==opts.sortedLv)
+                itsCheckRadioSelCols=itsSortedLvColors;
+            else
+            {
+                if(!itsCheckRadioSelCols)
+                    itsCheckRadioSelCols=new QColor [TOTAL_SHADES+1];
+                shadeColors(midColor(itsHighlightCols[ORIGINAL_SHADE], itsButtonCols[ORIGINAL_SHADE]), itsCheckRadioSelCols);
+            }
     }
 
-    if(IND_COLORED==opts.defBtnIndicator)
-        if(SHADE_BLEND_SELECTED==opts.shadeSliders)
-            itsDefBtnCols=itsSliderCols;
-        else
-        {
-            itsDefBtnCols=new QColor [TOTAL_SHADES+1];
-            shadeColors(midColor(itsMenuitemCols[ORIGINAL_SHADE],
-                                 itsButtonCols[ORIGINAL_SHADE]), itsDefBtnCols);
-        }
-
-    if(opts.coloredMouseOver)
-        if(itsDefBtnCols)
-            itsMouseOverCols=itsDefBtnCols;
-        else
-        {
-            itsMouseOverCols=new QColor [TOTAL_SHADES+1];
-            shadeColors(midColor(itsMenuitemCols[ORIGINAL_SHADE],
-                                 itsButtonCols[ORIGINAL_SHADE]), itsMouseOverCols);
-        }
+    switch(opts.progressColor)
+    {
+        case SHADE_NONE:
+            itsProgressCols=itsBackgroundCols;
+            break;
+        default:
+            // Not set!
+            break;
+        case SHADE_CUSTOM:
+            if(SHADE_CUSTOM==opts.shadeSliders && opts.customSlidersColor==opts.customProgressColor)
+                itsProgressCols=itsSliderCols;
+            else if(SHADE_CUSTOM==opts.comboBtn && opts.customComboBtnColor==opts.customProgressColor)
+                itsProgressCols=itsComboBtnCols;
+            else if(SHADE_CUSTOM==opts.sortedLv && opts.customSortedLvColor==opts.customProgressColor)
+                itsProgressCols=itsSortedLvColors;
+            else if(SHADE_CUSTOM==opts.crColor && opts.customCrBgndColor==opts.customProgressColor)
+                itsProgressCols=itsCheckRadioSelCols;
+            else
+            {
+                if(!itsProgressCols)
+                    itsProgressCols=new QColor [TOTAL_SHADES+1];
+                shadeColors(opts.customProgressColor, itsProgressCols);
+            }
+            break;
+        case SHADE_BLEND_SELECTED:
+            if(SHADE_BLEND_SELECTED==opts.shadeSliders)
+                itsProgressCols=itsSliderCols;
+            else if(SHADE_BLEND_SELECTED==opts.comboBtn)
+                itsProgressCols=itsComboBtnCols;
+            else if(SHADE_BLEND_SELECTED==opts.sortedLv)
+                itsProgressCols=itsSortedLvColors;
+            else
+            {
+                if(!itsProgressCols)
+                    itsProgressCols=new QColor [TOTAL_SHADES+1];
+                shadeColors(midColor(itsHighlightCols[ORIGINAL_SHADE], itsBackgroundCols[ORIGINAL_SHADE]), itsProgressCols);
+            }
+    }
 
     setMenuColors(QApplication::palette().active());
 
-    if(opts.lighterPopupMenuBgnd)
+    if(USE_LIGHTER_POPUP_MENU)
         itsLighterPopupMenuBgndCol=shade(itsBackgroundCols[ORIGINAL_SHADE],
-                                         POPUPMENU_LIGHT_FACTOR);
+                                         TO_FACTOR(opts.lighterPopupMenuBgnd));
+
+    if ((SHADE_CUSTOM==opts.shadeMenubars || SHADE_BLEND_SELECTED==opts.shadeMenubars || SHADE_SELECTED==opts.shadeMenubars) &&
+        "soffice.bin"==QString(qApp->argv()[0]) && TOO_DARK(SHADE_CUSTOM==opts.shadeMenubars
+                                                       ? opts.customMenubarsColor
+                                                       : itsHighlightCols[ORIGINAL_SHADE]))
+        opts.shadeMenubars=SHADE_DARKEN;
 
     switch(opts.shadeCheckRadio)
     {
         default:
-            itsCheckRadioCol=QApplication::palette().active().text();
+            itsCheckRadioCol=opts.crButton ? QApplication::palette().active().buttonText()
+                                           : QApplication::palette().active().text();
             break;
         case SHADE_BLEND_SELECTED:
         case SHADE_SELECTED:
@@ -663,12 +1112,28 @@ QtCurveStyle::~QtCurveStyle()
     if(itsSidebarButtonsCols!=itsSliderCols &&
        itsSidebarButtonsCols!=itsDefBtnCols)
         delete [] itsSidebarButtonsCols;
+    if(itsActiveMdiColors && itsActiveMdiColors!=itsHighlightCols)
+        delete [] itsActiveMdiColors;
+    if(itsMdiColors && itsMdiColors!=itsBackgroundCols)
+        delete [] itsMdiColors;
     if(itsMouseOverCols && itsMouseOverCols!=itsDefBtnCols &&
        itsMouseOverCols!=itsSliderCols)
         delete [] itsMouseOverCols;
-    if(itsDefBtnCols && itsDefBtnCols!=itsSliderCols)
+    if(itsDefBtnCols && itsDefBtnCols!=itsSliderCols && itsDefBtnCols!=itsFocusCols && itsDefBtnCols!=itsHighlightCols)
         delete [] itsDefBtnCols;
-    if(itsSliderCols && itsSliderCols!=itsMenuitemCols)
+    if(itsProgressCols && itsProgressCols!=itsHighlightCols && itsProgressCols!=itsBackgroundCols &&
+       itsProgressCols!=itsSliderCols && itsProgressCols!=itsComboBtnCols && itsProgressCols!=itsCheckRadioSelCols &&  itsProgressCols!=itsSortedLvColors)
+        delete [] itsProgressCols;
+    if(itsCheckRadioSelCols && itsCheckRadioSelCols!=itsDefBtnCols && itsCheckRadioSelCols!=itsSliderCols &&
+       itsCheckRadioSelCols!=itsComboBtnCols && itsCheckRadioSelCols!=itsSortedLvColors &&
+       itsCheckRadioSelCols!=itsButtonCols && itsCheckRadioSelCols!=itsHighlightCols)
+        delete [] itsCheckRadioSelCols;
+    if(itsSortedLvColors && itsSortedLvColors!=itsHighlightCols && itsSortedLvColors!=itsSliderCols &&
+       itsSortedLvColors!=itsComboBtnCols)
+        delete [] itsSortedLvColors;
+    if(itsComboBtnCols && itsComboBtnCols!=itsHighlightCols && itsComboBtnCols!=itsSliderCols)
+        delete [] itsComboBtnCols;
+    if(itsSliderCols && itsSliderCols!=itsHighlightCols)
         delete [] itsSliderCols;
     delete itsMactorPal;
 }
@@ -689,10 +1154,13 @@ void QtCurveStyle::polish(QApplication *app)
 {
     QString appName(getFile(app->argv()[0]));
 
+    if(NULL!=getenv("QTCURVE_DEBUG"))
+        std::cout << "QtCurve: Application name: \"" << appName.latin1() << "\"\n";
+
     if ("kicker"==appName || "appletproxy"==appName)
     {
         itsThemedApp=APP_KICKER;
-#if KDE_VERSION >= 0x30200
+#if defined QTC_QT_ONLY || !defined KDE_VERSION || KDE_VERSION >= 0x30200
         itsIsTransKicker=kickerIsTrans();
 #endif
     }
@@ -700,12 +1168,15 @@ void QtCurveStyle::polish(QApplication *app)
         itsThemedApp=APP_KONTACT;
     else if ("konqueror"==appName)
         itsThemedApp=APP_KONQUEROR;
+    else if ("kate"==appName)
+        itsThemedApp=APP_KATE;
     else if ("kpresenter"==appName)
         itsThemedApp=APP_KPRESENTER;
     else if ("soffice.bin"==appName)
     {
         itsThemedApp=APP_OPENOFFICE;
-        opts.framelessGroupBoxes=false;
+        opts.groupBox=FRAME_PLAIN;
+        opts.gbLabel=0;
     }
     else if ("kdefilepicker"==appName)
         itsThemedApp=APP_SKIP_TASKBAR;
@@ -719,10 +1190,12 @@ void QtCurveStyle::polish(QApplication *app)
         itsThemedApp=APP_TORA;
     else if ("opera"==appName)
         itsThemedApp=APP_OPERA;
+    else if ("systemsettings"==appName)
+        itsThemedApp=APP_SYSTEMSETTINGS;
     else if ("korn"==appName)
     {
         itsThemedApp=APP_KORN;
-#if KDE_VERSION >= 0x30200
+#if defined QTC_QT_ONLY || !defined KDE_VERSION || KDE_VERSION >= 0x30200
         itsIsTransKicker=kickerIsTrans();
 #endif
     }
@@ -737,12 +1210,31 @@ void QtCurveStyle::polish(QApplication *app)
 
     if(APP_OPENOFFICE==itsThemedApp)
     {
+        //
+        // OO.o 2.x checks to see whether the used theme "inherits" from HighContrastStyle,
+        // if so it uses the highlightedText color to draw highlighted menubar and popup menu
+        // items. Otherwise it uses the standard color. Changing the metaobject's class name
+        // works around this...
+        if(opts.useHighlightForMenu)
+        {
+            QMetaObject *meta=(QMetaObject *)metaObject();
+
+            meta->classname="HighContrastStyle";
+        }
+
         if(opts.scrollbarType==SCROLLBAR_NEXT)
             opts.scrollbarType=SCROLLBAR_KDE;
         else if(opts.scrollbarType==SCROLLBAR_NONE)
             opts.scrollbarType=SCROLLBAR_WINDOWS;
         setSbType();
     }
+
+    if(SHADE_NONE!=opts.menuStripe && opts.noMenuStripeApps.contains(appName))
+        opts.menuStripe=SHADE_NONE;
+#ifdef QTC_ENABLE_PARENTLESS_DIALOG_FIX_SUPPORT
+    if(opts.fixParentlessDialogs && (opts.noDlgFixApps.contains(appName) || opts.noDlgFixApps.contains("kde")))
+        opts.fixParentlessDialogs=false;
+#endif
 }
 
 void QtCurveStyle::polish(QPalette &pal)
@@ -751,16 +1243,13 @@ void QtCurveStyle::polish(QPalette &pal)
        pal.active().background()!=itsMactorPal->active().background())
         return;
 
-    QPalette  pal4;
-    QFont     font;
     QSettings settings;
+    int       contrast(settings.readNumEntry("/Qt/KDE/contrast", DEFAULT_CONTRAST));
+    bool      newContrast(false);
 
-    if(readQt4(pal4, font))
-    {
-        pal=pal4;
-        QApplication::setFont(font);
-    }
-    else if(!opts.inactiveHighlight)// Read in Qt3 palette... Required for the inactive settings...
+    readKdeGlobals();
+
+    if(!kdeSettings.inactiveHighlight)// Read in Qt3 palette... Required for the inactive settings...
     {
         QStringList active(settings.readListEntry("/Qt/Palette/active")),
                     inactive(settings.readListEntry("/Qt/Palette/inactive"));
@@ -775,7 +1264,7 @@ void QtCurveStyle::polish(QPalette &pal)
             QColor(active[QColorGroup::HighlightedText])==pal.color(QPalette::Active, QColorGroup::HighlightedText))
         {
             QColor h(inactive[QColorGroup::Highlight]),
-                   t(inactive[QColorGroup::HighlightedText]);
+                t(inactive[QColorGroup::HighlightedText]);
 
             if(h!=pal.color(QPalette::Inactive, QColorGroup::Highlight) || t!=QPalette::Inactive, QColorGroup::HighlightedText)
             {
@@ -785,40 +1274,52 @@ void QtCurveStyle::polish(QPalette &pal)
         }
     }
 
-    if(opts.inactiveHighlight)
+    if(contrast<0 || contrast>10)
+        contrast=DEFAULT_CONTRAST;
+
+    if(contrast!=opts.contrast)
     {
-        pal.setColor(QPalette::Inactive, QColorGroup::Highlight,
-                     midColor(pal.color(QPalette::Active, QColorGroup::Background),
-                              pal.color(QPalette::Active, QColorGroup::Highlight), INACTIVE_HIGHLIGHT_FACTOR));
-        pal.setColor(QPalette::Inactive, QColorGroup::HighlightedText, pal.color(QPalette::Active, QColorGroup::Foreground));
+        opts.contrast=contrast;
+        newContrast=true;
     }
 
-    int  c(settings.readNumEntry("/Qt/KDE/contrast", 7));
-    bool newContrast(false);
-
-    if(c<0 || c>10)
-        c=7;
-
-    if(c!=opts.contrast)
+    if(kdeSettings.inactiveHighlight)
     {
-        opts.contrast=c;
-        newContrast=true;
+        pal.setColor(QPalette::Inactive, QColorGroup::Highlight,
+                     tint(QApplication::palette().active().background(),
+                          QApplication::palette().active().highlight(), 0.4));
+        // KDE4 does not set text colour :-(
+        //pal.setColor(QPalette::Inactive, QColorGroup::HighlightedText, pal.color(QPalette::Active, QColorGroup::Foreground));
     }
 
     bool newMenu(newContrast ||
-                 itsMenuitemCols[ORIGINAL_SHADE]!=QApplication::palette().active().highlight()),
+                 itsHighlightCols[ORIGINAL_SHADE]!=QApplication::palette().active().highlight()),
          newGray(newContrast ||
                  itsBackgroundCols[ORIGINAL_SHADE]!=QApplication::palette().active().background()),
          newButton(newContrast ||
                    itsButtonCols[ORIGINAL_SHADE]!=QApplication::palette().active().button()),
          newSlider(itsSliderCols && SHADE_BLEND_SELECTED==opts.shadeSliders &&
                    (newContrast || newButton || newMenu)),
-         newDefBtn(itsDefBtnCols && IND_COLORED==opts.defBtnIndicator &&
-                   SHADE_BLEND_SELECTED!=opts.shadeSliders &&
+         newDefBtn(itsDefBtnCols && /*( (IND_COLORED==opts.defBtnIndicator &&*/
+                                       SHADE_BLEND_SELECTED!=opts.shadeSliders/*) ||*/
+                                      /*(IND_TINT==opts.defBtnIndicator) )*/ &&
+                   IND_SELECTED!=opts.defBtnIndicator && IND_GLOW!=opts.defBtnIndicator &&
                    (newContrast || newButton || newMenu)),
-         newMouseOver(itsMouseOverCols && itsMouseOverCols!=itsDefBtnCols &&
-                      itsMouseOverCols!=itsSliderCols &&
-                     (newContrast || newButton || newMenu));
+         newComboBtn(itsComboBtnCols && itsHighlightCols!=itsComboBtnCols && itsSliderCols!=itsComboBtnCols &&
+                     SHADE_BLEND_SELECTED==opts.comboBtn &&
+                     (newContrast || newButton || newMenu)),
+         newSortedLv(itsSortedLvColors && ( (SHADE_BLEND_SELECTED==opts.sortedLv && itsHighlightCols!=itsSortedLvColors && itsSliderCols!=itsSortedLvColors &&
+                                             itsComboBtnCols!=itsSortedLvColors) || 
+                                             SHADE_DARKEN==opts.sortedLv) &&
+                     (newContrast || (opts.lvButton ? newButton : newGray))),
+         newCheckRadioSelCols(itsCheckRadioSelCols && ( (SHADE_BLEND_SELECTED==opts.crColor && itsDefBtnCols!=itsCheckRadioSelCols &&
+                                                         itsSliderCols!=itsCheckRadioSelCols && itsComboBtnCols!=itsCheckRadioSelCols &&
+                                                         itsSortedLvColors!=itsCheckRadioSelCols) ||
+                                             SHADE_DARKEN==opts.crColor) &&
+                     (newContrast || newButton)),
+         newProgressCols(itsProgressCols && SHADE_BLEND_SELECTED==opts.progressColor &&
+                         itsSliderCols!=itsProgressCols && itsComboBtnCols!=itsProgressCols &&
+                         itsSortedLvColors!=itsProgressCols && itsCheckRadioSelCols!=itsProgressCols && (newContrast || newButton));
 
     if(newGray)
         shadeColors(QApplication::palette().active().background(), itsBackgroundCols);
@@ -827,72 +1328,60 @@ void QtCurveStyle::polish(QPalette &pal)
         shadeColors(QApplication::palette().active().button(), itsButtonCols);
 
     if(newMenu)
-        shadeColors(QApplication::palette().active().highlight(), itsMenuitemCols);
+        shadeColors(QApplication::palette().active().highlight(), itsHighlightCols);
+
+    setDecorationColors();
 
     setMenuColors(QApplication::palette().active());
 
     if(newSlider)
-        shadeColors(midColor(itsMenuitemCols[ORIGINAL_SHADE],
-                    itsButtonCols[ORIGINAL_SHADE]), itsSliderCols);
+        shadeColors(midColor(itsHighlightCols[ORIGINAL_SHADE], itsButtonCols[ORIGINAL_SHADE]), itsSliderCols);
 
-    if(newDefBtn)
-        shadeColors(midColor(itsMenuitemCols[ORIGINAL_SHADE],
-                    itsButtonCols[ORIGINAL_SHADE]), itsDefBtnCols);
+    if(newComboBtn)
+        shadeColors(midColor(itsHighlightCols[ORIGINAL_SHADE], itsButtonCols[ORIGINAL_SHADE]), itsComboBtnCols);
+
+    if(newSortedLv)
+        if(SHADE_BLEND_SELECTED==opts.sortedLv)
+            shadeColors(midColor(itsHighlightCols[ORIGINAL_SHADE],
+                        opts.lvButton ? itsButtonCols[ORIGINAL_SHADE] : itsBackgroundCols[ORIGINAL_SHADE]), itsSortedLvColors);
+        else
+            shadeColors(shade(opts.lvButton ? itsButtonCols[ORIGINAL_SHADE] : itsBackgroundCols[ORIGINAL_SHADE], LV_HEADER_DARK_FACTOR), itsSortedLvColors);
 
-    if(newMouseOver)
-        shadeColors(midColor(itsMenuitemCols[ORIGINAL_SHADE],
-                    itsButtonCols[ORIGINAL_SHADE]), itsMouseOverCols);
+    if(newDefBtn)
+        if(IND_TINT==opts.defBtnIndicator)
+            shadeColors(tint(itsButtonCols[ORIGINAL_SHADE],
+                        itsHighlightCols[ORIGINAL_SHADE], DEF_BNT_TINT), itsDefBtnCols);
+        else if(IND_GLOW!=opts.defBtnIndicator)
+            shadeColors(midColor(itsHighlightCols[ORIGINAL_SHADE],
+                        itsButtonCols[ORIGINAL_SHADE]), itsDefBtnCols);
 
     if(itsSidebarButtonsCols && SHADE_BLEND_SELECTED!=opts.shadeSliders &&
        IND_COLORED!=opts.defBtnIndicator)
-        shadeColors(midColor(itsMenuitemCols[ORIGINAL_SHADE],
+        shadeColors(midColor(itsHighlightCols[ORIGINAL_SHADE],
                    itsButtonCols[ORIGINAL_SHADE]), itsSidebarButtonsCols);
 
-    if(opts.lighterPopupMenuBgnd && newGray)
+    if(USE_LIGHTER_POPUP_MENU && newGray)
         itsLighterPopupMenuBgndCol=shade(itsBackgroundCols[ORIGINAL_SHADE],
-                                         POPUPMENU_LIGHT_FACTOR);
-
-    const QColorGroup      &actGroup(pal.active()),
-                           &inactGroup(pal.inactive()),
-                           &disGroup(pal.disabled());
-    const QColor           *use(backgroundColors(actGroup));
-    QColorGroup            newAct(actGroup.foreground(), actGroup.button(), use[0], use[QT_STD_BORDER],
-                                  actGroup.mid(), actGroup.text(), actGroup.brightText(),
-                                  actGroup.base(), actGroup.background());
-    QColorGroup::ColorRole roles[]={QColorGroup::Midlight, QColorGroup::ButtonText,
-                                    QColorGroup::Shadow, QColorGroup::Highlight,
-                                    QColorGroup::HighlightedText,
-                                    QColorGroup::NColorRoles };
-    int                    r(0);
+                                         TO_FACTOR(opts.lighterPopupMenuBgnd));
 
-    for(r=0; roles[r]!=QColorGroup::NColorRoles; ++r)
-        newAct.setColor(roles[r], actGroup.color(roles[r]));
-    pal.setActive(newAct);
-
-    use=backgroundColors(inactGroup);
-
-    QColorGroup newInact(inactGroup.foreground(), inactGroup.button(), use[0], use[QT_STD_BORDER],
-                         inactGroup.mid(), inactGroup.text(), inactGroup.brightText(),
-                         inactGroup.base(), inactGroup.background());
-
-    for(r=0; roles[r]!=QColorGroup::NColorRoles; ++r)
-        newInact.setColor(roles[r], inactGroup.color(roles[r]));
-    pal.setInactive(newInact);
-
-    use=backgroundColors(disGroup);
+    if(newCheckRadioSelCols)
+        if(SHADE_BLEND_SELECTED==opts.crColor)
+            shadeColors(midColor(itsHighlightCols[ORIGINAL_SHADE], itsButtonCols[ORIGINAL_SHADE]), itsCheckRadioSelCols);
+        else
+            shadeColors(shade(itsButtonCols[ORIGINAL_SHADE], LV_HEADER_DARK_FACTOR), itsCheckRadioSelCols);
 
-    QColorGroup newDis(disGroup.foreground(), disGroup.button(), use[0], use[QT_STD_BORDER],
-                       disGroup.mid(), disGroup.text(), disGroup.brightText(),
-                       disGroup.base(), disGroup.background());
+    if(newProgressCols)
+        shadeColors(midColor(itsHighlightCols[ORIGINAL_SHADE], itsBackgroundCols[ORIGINAL_SHADE]), itsProgressCols);
 
-    for(r=0; roles[r]!=QColorGroup::NColorRoles; ++r)
-        newDis.setColor(roles[r], disGroup.color(roles[r]));
-    pal.setDisabled(newDis);
+    pal.setActive(setColorGroup(pal.active(), pal.active()));
+    pal.setInactive(setColorGroup(pal.inactive(), pal.active()));
+    pal.setDisabled(setColorGroup(pal.disabled(), pal.active(), true));
 
     switch(opts.shadeCheckRadio)
     {
         default:
-            itsCheckRadioCol=QApplication::palette().active().text();
+            itsCheckRadioCol=opts.crButton ? QApplication::palette().active().buttonText()
+                                           : QApplication::palette().active().text();
             break;
         case SHADE_SELECTED:
         case SHADE_BLEND_SELECTED:
@@ -904,13 +1393,56 @@ void QtCurveStyle::polish(QPalette &pal)
 
     if(itsMactorPal)
         *itsMactorPal=pal;
+    // Force this to be re-generated!
+    if(SHADE_BLEND_SELECTED==opts.menuStripe)
+        opts.customMenuStripeColor=Qt::black;
+    
+    if(APPEARANCE_STRIPED==opts.bgndAppearance)
+        pal.setBrush(QColorGroup::Background, QBrush(pal.active().background(), *createStripePixmap(pal.active().background(), true)));
+}
+
+static QColor disable(const QColor &col, const QColor &bgnd)
+{
+    QColor c = col;
+    c = ColorUtils_darken(&c, 0.1, 1.0);
+    c = ColorUtils_mix(&c, &bgnd, 0.65);
+    return c;
+}
+
+QColorGroup QtCurveStyle::setColorGroup(const QColorGroup &old, const QColorGroup &act, bool dis)
+{
+    QColor mid(old.mid());
+
+    if(dis)
+        mid=disable(act.foreground(), old.background());
+    
+    const QColor           *use(backgroundColors(old));
+    QColorGroup            newGrp(old.foreground(), old.button(), use[0], use[STD_BORDER],
+                                  mid, old.text(), old.brightText(),
+                                  old.base(), old.background());
+    QColorGroup::ColorRole roles[]={QColorGroup::Midlight, QColorGroup::ButtonText,
+                                    QColorGroup::Shadow, QColorGroup::Highlight,
+                                    QColorGroup::HighlightedText, QColorGroup::Link,
+                                    QColorGroup::LinkVisited, QColorGroup::NColorRoles };
+    int                    r(0);
+
+    for(r=0; roles[r]!=QColorGroup::NColorRoles; ++r)
+        newGrp.setColor(roles[r], old.color(roles[r]));
+
+    if(dis)
+    {
+        newGrp.setColor(QColorGroup::ButtonText, disable(act.buttonText(), old.button()));
+        newGrp.setColor(QColorGroup::Text, disable(act.text(), old.background()));
+    }
+    
+    return newGrp;
 }
 
 static const char * kdeToolbarWidget="kde toolbar widget";
 
 void QtCurveStyle::polish(QWidget *widget)
 {
-    bool enableFilter(!equal(opts.highlightFactor, 1.0) || opts.coloredMouseOver);
+    bool enableFilter(opts.highlightFactor || opts.coloredMouseOver);
 
     if(::isKhtmlFormWidget(widget))
     {
@@ -918,6 +1450,15 @@ void QtCurveStyle::polish(QWidget *widget)
         connect(widget, SIGNAL(destroyed(QObject *)), this, SLOT(khtmlWidgetDestroyed(QObject *)));
     }
 
+    if(enableFilter && isSpecialHover(widget))
+        connect(widget, SIGNAL(destroyed(QObject *)), this, SLOT(hoverWidgetDestroyed(QObject *)));
+
+    if(isWindowDragWidget(widget))
+        widget->installEventFilter(this);
+
+    if(APPEARANCE_STRIPED==opts.bgndAppearance && (::qt_cast<QDialog *>(widget) || ::qt_cast<QMainWindow *>(widget)))
+        setBgndProp(widget, APPEARANCE_STRIPED);
+
     if(widget->parentWidget() && ::qt_cast<QScrollView *>(widget) && ::qt_cast<QComboBox *>(widget->parentWidget()))
     {
         QPalette    pal(widget->palette());
@@ -928,12 +1469,12 @@ void QtCurveStyle::polish(QWidget *widget)
 
 #if 0
         if(opts.gtkComboMenus)
-            act.setColor(QColorGroup::Base, opts.lighterPopupMenuBgnd ? itsLighterPopupMenuBgndCol : itsBackgroundCols[ORIGINAL_SHADE]);
+            act.setColor(QColorGroup::Base, USE_LIGHTER_POPUP_MENU ? itsLighterPopupMenuBgndCol : itsBackgroundCols[ORIGINAL_SHADE]);
         act.setColor(QColorGroup::Background, opts.gtkComboMenus
-                                            ? opts.lighterPopupMenuBgnd ? itsLighterPopupMenuBgndCol : itsBackgroundCols[ORIGINAL_SHADE]
+                                            ? USE_LIGHTER_POPUP_MENU ? itsLighterPopupMenuBgndCol : itsBackgroundCols[ORIGINAL_SHADE]
                                             : QApplication::palette().active().base());
 #endif
-        act.setColor(QColorGroup::Foreground, itsBackgroundCols[QT_STD_BORDER]);
+        act.setColor(QColorGroup::Foreground, itsBackgroundCols[STD_BORDER]);
 
         pal.setActive(act);
         widget->setPalette(pal);
@@ -962,9 +1503,32 @@ void QtCurveStyle::polish(QWidget *widget)
        0==qstrcmp(widget->parentWidget()->className(), "Kontact::MainWindow"))
         ((QHBox *)widget)->setLineWidth(0);
 
+    if(!IS_FLAT_BGND(opts.menuBgndAppearance) && ::qt_cast<const QPopupMenu *>(widget))
+        widget->installEventFilter(this);
+
+    #if 0
+    if(opts.menubarHiding && ::qt_cast<QMainWindow *>(widget) && static_cast<QMainWindow *>(widget)->menuBar())
+        widget->installEventFilter(this);
+    #endif
+
+    if ((opts.square&SQUARE_SCROLLVIEW) && widget &&
+        (::qt_cast<const QScrollView *>(widget) ||
+        (widget->parentWidget() && ::qt_cast<const QFrame *>(widget) &&
+            widget->parentWidget()->inherits("KateView"))) &&
+        ((QFrame *)widget)->lineWidth()>1)
+        ((QFrame *)widget)->setLineWidth(opts.gtkScrollViews ? 1 : 2);
+    else if(!opts.popupBorder && widget &&
+            (::qt_cast<const QPopupMenu *>(widget) ||
+             (widget->parentWidget() && ::qt_cast<const QListBox *>(widget) &&
+              ::qt_cast<const QComboBox *>(widget->parentWidget()))))
+        ((QFrame *)widget)->setLineWidth(0);
+    else if ((USE_LIGHTER_POPUP_MENU || !IS_FLAT_BGND(opts.menuBgndAppearance)) && !opts.borderMenuitems &&
+        widget && ::qt_cast<const QPopupMenu *>(widget))
+        ((QFrame *)widget)->setLineWidth(1);
+
     if (::qt_cast<QRadioButton *>(widget) || ::qt_cast<QCheckBox *>(widget))
     {
-        bool framelessGroupBoxCheckBox=(opts.framelessGroupBoxes && isCheckBoxOfGroupBox(widget));
+        bool framelessGroupBoxCheckBox=(NO_FRAME(opts.groupBox) && isCheckBoxOfGroupBox(widget));
 
         if(framelessGroupBoxCheckBox || enableFilter)
         {
@@ -998,7 +1562,7 @@ void QtCurveStyle::polish(QWidget *widget)
         if(enableFilter)
         {
             widget->installEventFilter(this);
-#if KDE_VERSION >= 0x30400 && KDE_VERSION < 0x30500
+#if defined KDE_VERSION && KDE_VERSION >= 0x30400 && KDE_VERSION < 0x30500
             widget->setMouseTracking(true);
 #endif
         }
@@ -1018,7 +1582,7 @@ void QtCurveStyle::polish(QWidget *widget)
             widget->setBackgroundMode(PaletteBackground);
         widget->installEventFilter(this);
 
-        if(QTC_DO_EFFECT && onToolBar(widget))
+        if(DO_EFFECT && onToolBar(widget))
             widget->setName(kdeToolbarWidget);
 
         if(enableFilter)
@@ -1027,12 +1591,52 @@ void QtCurveStyle::polish(QWidget *widget)
         if(((QComboBox *)widget)->listBox())
             ((QComboBox *)widget)->listBox()->installEventFilter(this);
     }
-    else if(::qt_cast<QMenuBar *>(widget) || ::qt_cast<QToolBar *>(widget))
+    else if(::qt_cast<QMenuBar *>(widget))
     {
         if(NoBackground!=widget->backgroundMode())
             widget->setBackgroundMode(PaletteBackground);
         if(SHADE_NONE!=opts.shadeMenubars)
             widget->installEventFilter(this);
+        if(BLEND_TITLEBAR || opts.windowBorder&WINDOW_BORDER_USE_MENUBAR_COLOR_FOR_TITLEBAR)
+            emitMenuSize(widget, widget->rect().height());
+        if(SHADE_WINDOW_BORDER==opts.shadeMenubars)
+        {
+            QPalette    pal(widget->palette());
+            QColorGroup act(pal.active());
+            QColorGroup inact(pal.inactive());
+
+            getMdiColors(act, true);
+            act.setColor(QColorGroup::Foreground, itsActiveMdiTextColor);
+            inact.setColor(QColorGroup::Foreground, opts.shadeMenubarOnlyWhenActive ? itsMdiTextColor : itsActiveMdiTextColor);
+            pal.setInactive(inact);
+            pal.setActive(act);
+            widget->setPalette(pal);
+        }
+        else if(opts.customMenuTextColor || SHADE_BLEND_SELECTED==opts.shadeMenubars || SHADE_SELECTED==opts.shadeMenubars ||
+                (SHADE_CUSTOM==opts.shadeMenubars && TOO_DARK(itsMenubarCols[ORIGINAL_SHADE])))
+        {
+            QPalette    pal(widget->palette());
+            QColorGroup act(pal.active());
+
+            act.setColor(QColorGroup::Foreground, opts.customMenuTextColor
+                                                   ? opts.customMenuNormTextColor
+                                                   : QApplication::palette().active().highlightedText());
+
+            if(!opts.shadeMenubarOnlyWhenActive)
+            {
+                QColorGroup inact(pal.inactive());
+                inact.setColor(QColorGroup::Foreground, act.color(QColorGroup::Foreground));
+                pal.setInactive(inact);
+            }
+
+            pal.setActive(act);
+            widget->setPalette(pal);
+        }
+    }
+    else if(::qt_cast<QToolBar *>(widget))
+    {
+        if(NoBackground!=widget->backgroundMode())
+            widget->setBackgroundMode(PaletteBackground);
     }
     else if(::qt_cast<QPopupMenu *>(widget))
             widget->setBackgroundMode(NoBackground); // PaletteBackground);
@@ -1061,6 +1665,9 @@ void QtCurveStyle::polish(QWidget *widget)
         {
             widget->setName(kdeToolbarWidget);
             widget->setBackgroundMode(NoBackground);  // We paint whole background.
+
+            if(!enableFilter)
+                widget->installEventFilter(this);
         }
 
         // This bit stolen form polyester...
@@ -1077,7 +1684,7 @@ void QtCurveStyle::polish(QWidget *widget)
            ::qt_cast<QFrame *>(widget))
             ((QFrame *)widget)->setLineWidth(0);
     }
-    else if (widget->inherits("QSplitterHandle") || widget->inherits("QDockWindowHandle"))
+    else if (widget->inherits("QSplitterHandle") || widget->inherits("QDockWindowHandle") || widget->inherits("QDockWindowResizeHandle"))
     {
         if(enableFilter)
             widget->installEventFilter(this);
@@ -1120,18 +1727,16 @@ void QtCurveStyle::polish(QWidget *widget)
         }
 
         if(opts.animatedProgress)
-    {
-        widget->installEventFilter(this);
-        itsProgAnimWidgets[widget] = 0;
-        connect(widget, SIGNAL(destroyed(QObject *)), this, SLOT(progressBarDestroyed(QObject *)));
-        if (!itsAnimationTimer->isActive())
-            itsAnimationTimer->start(PROGRESS_ANIMATION, false);
-    }
+        {
+            widget->installEventFilter(this);
+            itsProgAnimWidgets[widget] = 0;
+            connect(widget, SIGNAL(destroyed(QObject *)), this, SLOT(progressBarDestroyed(QObject *)));
+            if (!itsAnimationTimer->isActive())
+                itsAnimationTimer->start(PROGRESS_ANIMATION, false);
+        }
     }
-#ifdef QTC_HIGHLIGHT_SCROLVIEWS
-    else if(::qt_cast<QScrollView*>(widget))
+    else if(opts.highlightScrollViews && ::qt_cast<QScrollView*>(widget))
         widget->installEventFilter(this);
-#endif
     else if(!qstrcmp(widget->className(), "KonqFrameStatusBar"))
     {
         // This disables the white background of the KonquerorFrameStatusBar.
@@ -1145,15 +1750,21 @@ void QtCurveStyle::polish(QWidget *widget)
         pal.setColor(QColorGroup::Midlight, pal.active().background());
         QApplication::setPalette(pal);
     }
-    else if(widget->inherits("KTabCtl") || (opts.framelessGroupBoxes && ::qt_cast<QGroupBox *>(widget)))
+    else if(widget->inherits("KTabCtl"))
         widget->installEventFilter(this);
+    else if(NO_FRAME(opts.groupBox) && ::qt_cast<QGroupBox *>(widget))
+    {
+        ((QGroupBox *)widget)->setFlat(false);
+        ((QGroupBox *)widget)->setFrameShape(QFrame::NoFrame);
+    }
+#ifdef QTC_ENABLE_PARENTLESS_DIALOG_FIX_SUPPORT
     else if(opts.fixParentlessDialogs && ::qt_cast<QDialog *>(widget))
     {
         QDialog *dlg=(QDialog *)widget;
 
         // The parent->isShown is needed for KWord. It's insert picure file dialog is a child of
         // the insert picture dialog - but the file dialog is shown *before* the picture dialog!
-        if( (QTC_SKIP_TASKBAR && !dlg->parentWidget()) ||
+        if( (SKIP_TASKBAR && !dlg->parentWidget()) ||
             ( (!dlg->parentWidget() || !dlg->parentWidget()->isShown())// &&
               /*(dlg->isModal() || ::qt_cast<QProgressDialog *>(widget))*/) )
             widget->installEventFilter(this);
@@ -1175,8 +1786,36 @@ void QtCurveStyle::polish(QWidget *widget)
                (index+17)==(int)cap.length())) )
             widget->QWidget::setCaption(cap.left(index));
     }
+#endif
+
+    if(APP_SYSTEMSETTINGS==itsThemedApp)
+    {
+        if(widget && widget->parentWidget() && widget->parentWidget()->parentWidget() &&
+           ::qt_cast<QFrame *>(widget) && QFrame::NoFrame!=((QFrame *)widget)->frameShape() &&
+           ::qt_cast<QFrame *>(widget->parentWidget()) &&
+           ::qt_cast<QTabWidget *>(widget->parentWidget()->parentWidget()))
+            ((QFrame *)widget)->setFrameShape(QFrame::NoFrame);
+
+        if(widget->parentWidget() && widget->parentWidget()->parentWidget() &&
+           ::qt_cast<QScrollView *>(widget->parentWidget()->parentWidget()) &&
+           widget->inherits("KCMultiWidget") && widget->parentWidget()->inherits("QViewportWidget"))
+            ((QScrollView *)(widget->parentWidget()->parentWidget()))->setLineWidth(0);
+    }
+
+    if(opts.tabBgnd && widget && widget->parentWidget() && ::qt_cast<QWidgetStack *>(widget) &&
+       ::qt_cast<QTabWidget *>(widget->parentWidget()) &&
+        0==qstrcmp(widget->name(), "tab pages"))
+    {
+        QPalette pal(widget->palette());
+
+        pal.setColor(QColorGroup::Background, shade(pal.active().background(), TO_FACTOR(opts.tabBgnd)));
+        widget->setBackgroundMode(PaletteBackground);
+        widget->setPalette(pal);
+    }
 
-    KStyle::polish(widget);
+    if(APPEARANCE_STRIPED==opts.bgndAppearance)
+        widget->setBackgroundOrigin(QWidget::WindowOrigin);
+    BASE_STYLE::polish(widget);
 }
 
 void QtCurveStyle::unPolish(QWidget *widget)
@@ -1184,6 +1823,17 @@ void QtCurveStyle::unPolish(QWidget *widget)
     if(isFormWidget(widget))
         itsKhtmlWidgets.remove(widget);
 
+    if(!IS_FLAT_BGND(opts.menuBgndAppearance) && ::qt_cast<const QPopupMenu *>(widget))
+        widget->removeEventFilter(this);
+
+    #if 0
+    if(opts.menubarHiding && ::qt_cast<QMainWindow *>(widget) && static_cast<QMainWindow *>(widget)->menuBar())
+        widget->removeEventFilter(this);
+    #endif
+
+    if(isWindowDragWidget(widget))
+        widget->removeEventFilter(this);
+
     if (::qt_cast<QRadioButton *>(widget) || ::qt_cast<QCheckBox *>(widget))
     {
 #if QT_VERSION >= 0x030200
@@ -1208,7 +1858,7 @@ void QtCurveStyle::unPolish(QWidget *widget)
         if(NoBackground!=widget->backgroundMode()) //  && onToolBar(widget))
             widget->setBackgroundMode(PaletteButton);
         widget->removeEventFilter(this);
-#if KDE_VERSION >= 0x30400 && KDE_VERSION < 0x30500
+#if defined KDE_VERSION && KDE_VERSION >= 0x30400 && KDE_VERSION < 0x30500
         widget->setMouseTracking(false);
 #endif
     }
@@ -1232,6 +1882,9 @@ void QtCurveStyle::unPolish(QWidget *widget)
            widget->setBackgroundMode(PaletteBackground);
         if(SHADE_NONE!=opts.shadeMenubars)
             widget->removeEventFilter(this);
+        if(SHADE_WINDOW_BORDER==opts.shadeMenubars || opts.customMenuTextColor || SHADE_BLEND_SELECTED==opts.shadeMenubars ||
+           SHADE_SELECTED==opts.shadeMenubars || (SHADE_CUSTOM==opts.shadeMenubars &&TOO_DARK(itsMenubarCols[ORIGINAL_SHADE])))
+            widget->setPalette(QApplication::palette());
     }
     else if (widget->inherits("KToolBarSeparator"))
     {
@@ -1252,17 +1905,15 @@ void QtCurveStyle::unPolish(QWidget *widget)
     }
     else if (::qt_cast<QLineEdit*>(widget) || ::qt_cast<QTextEdit*>(widget))
         widget->removeEventFilter(this);
-    else if (widget->inherits("QSplitterHandle") || widget->inherits("QDockWindowHandle"))
+    else if (widget->inherits("QSplitterHandle") || widget->inherits("QDockWindowHandle") || widget->inherits("QDockWindowResizeHandle"))
         widget->removeEventFilter(this);
     else if (::qt_cast<QProgressBar*>(widget))
     {
         itsProgAnimWidgets.remove(widget);
         widget->removeEventFilter(this);
     }
-#ifdef QTC_HIGHLIGHT_SCROLVIEWS
-    else if(::qt_cast<QScrollView*>(widget))
+    else if(opts.highlightScrollViews && ::qt_cast<QScrollView*>(widget))
         widget->removeEventFilter(this);
-#endif
     else if(0==qstrcmp(widget->name(), kdeToolbarWidget))
     {
         widget->removeEventFilter(this);
@@ -1273,12 +1924,14 @@ void QtCurveStyle::unPolish(QWidget *widget)
         widget->removeEventFilter(this);
         widget->setBackgroundMode(PaletteBackground);  // We paint whole background.
     }
-    else if(widget->inherits("KTabCtl") || (opts.framelessGroupBoxes && ::qt_cast<QGroupBox *>(widget)))
+    else if(widget->inherits("KTabCtl"))
         widget->removeEventFilter(this);
+#ifdef QTC_ENABLE_PARENTLESS_DIALOG_FIX_SUPPORT
     else if(opts.fixParentlessDialogs && ::qt_cast<QDialog *>(widget))
         widget->removeEventFilter(this);
+#endif
 
-    KStyle::unPolish(widget);
+    BASE_STYLE::unPolish(widget);
 }
 
 static void sendXEvent(QDialog *dlg, const char *msg)
@@ -1319,14 +1972,23 @@ bool QtCurveStyle::appIsNotEmbedded(QDialog *dlg)
 bool QtCurveStyle::eventFilter(QObject *object, QEvent *event)
 {
     if(itsHoverWidget && object==itsHoverWidget && (QEvent::Destroy==event->type() || QEvent::Hide==event->type()))
+        resetHover();
+
+    #if 0
+    // Works for qtconfig, but k3b hangs?
+    if(opts.menubarHiding && QEvent::KeyRelease==event->type() && ::qt_cast<QMainWindow *>(object))
     {
-        itsOldPos.setX(-1);
-        itsOldPos.setY(-1);
-        itsHoverWidget=NULL;
-        itsIsSpecialHover=false;
-        itsHoverSect=QTC_NO_SECT;
-        itsHover=HOVER_NONE;
+        QMainWindow *window=static_cast<QMainWindow *>(object);
+
+        if(window->isVisible() && window->menuBar())
+        {
+            QKeyEvent *k=static_cast<QKeyEvent *>(event);
+
+            if(k->state()&Qt::ControlButton && k->state()&Qt::AltButton && Qt::Key_M==k->key())
+                window->menuBar()->setHidden(window->menuBar()->isVisible());
+        }
     }
+    #endif
 
     if(object->parent() && 0==qstrcmp(object->name(), kdeToolbarWidget))
     {
@@ -1371,11 +2033,11 @@ bool QtCurveStyle::eventFilter(QObject *object, QEvent *event)
             }
 
             if(!::qt_cast<QLineEdit*>(object) && !::qt_cast<QTextEdit*>(object) &&
-               !(QTC_DO_EFFECT && ::qt_cast<QComboBox*>(object)))
+               !(DO_EFFECT && ::qt_cast<QComboBox*>(object)))
                 return false;   // Now draw the contents
         }
     }
-    else if (opts.framelessGroupBoxes && QEvent::Move==event->type() && isCheckBoxOfGroupBox(object))
+    else if (NO_FRAME(opts.groupBox) && QEvent::Move==event->type() && isCheckBoxOfGroupBox(object))
     {
         QCheckBox *cb=static_cast<QCheckBox *>(object);
         QRect     r(cb->geometry());
@@ -1391,38 +2053,18 @@ bool QtCurveStyle::eventFilter(QObject *object, QEvent *event)
     }
     else if (QEvent::Paint==event->type())
     {
-        if (opts.framelessGroupBoxes && ::qt_cast<QGroupBox *>(object))
+        if(!IS_FLAT_BGND(opts.menuBgndAppearance) && ::qt_cast<QPopupMenu *>(object))
         {
-            QGroupBox *box=static_cast<QGroupBox*>(object);
-
-            if (!box->isCheckable())
-            {
-                QString title(box->title());
+            QWidget  *widget=(QWidget*)object;
+            QPainter painter(widget);
+            QColor   col(USE_LIGHTER_POPUP_MENU ? itsLighterPopupMenuBgndCol : widget->palette().active().background());
 
-                if(title.length())
-                {
-                    int          left,
-                                 right,
-                                 top,
-                                 bottom,
-                                 width,
-                                 height;
-                    QPainter     p(box);
-                    QFontMetrics fm(p.fontMetrics());
-                    QRect        r(box->rect());
-                    int          th(fm.height()+2);
-                    QFont        f(p.font());
-
-                    r.rect(&left, &top, &width, &height);
-                    r.coords(&left, &top, &right, &bottom);
-                    f.setBold(true);
-                    p.setPen(box->colorGroup().foreground());
-                    p.setFont(f);
-                    p.drawText(QRect(left, top, width, th),
-                               (QApplication::reverseLayout() ? AlignRight : AlignLeft)|AlignVCenter|ShowPrefix|SingleLine, title);
-                    return true;
-                }
-            }
+            if(APPEARANCE_STRIPED==opts.menuBgndAppearance)
+                painter.drawTiledPixmap(widget->rect(), *createStripePixmap(col, false));
+            else
+                drawBevelGradientReal(col, &painter, widget->rect(), GT_HORIZ==opts.menuBgndGrad, false,
+                                      opts.menuBgndAppearance, WIDGET_OTHER);
+            return false;
         }
         else if (object->inherits("KToolBarSeparator"))
         {
@@ -1446,7 +2088,7 @@ bool QtCurveStyle::eventFilter(QObject *object, QEvent *event)
         {
             QWidget  *widget((QWidget*)object);
             QObject  *child(object->child("_tabbar"));
-            QTabBar  *tb(child ? ::qt_cast<QTabBar *>(child) : NULL);
+            QTabBar  *tb(child ? ::qt_cast<QTabBar *>(child) : 0L);
             QPainter painter(widget);
             QRect    r(widget->rect());
             int      tbHeight(tb ? tb->height()-1 : 28);
@@ -1496,7 +2138,7 @@ bool QtCurveStyle::eventFilter(QObject *object, QEvent *event)
             r.setY(r.y()-y_offset);
             r.setHeight(parent->rect().height());
 
-            drawMenuOrToolBarBackground(&p, r, parent->colorGroup(), true, true);
+            drawMenuOrToolBarBackground(&p, r, parent->colorGroup());
             return true;
         }
     }
@@ -1505,7 +2147,7 @@ bool QtCurveStyle::eventFilter(QObject *object, QEvent *event)
     // focus highlight
     if (::qt_cast<QLineEdit*>(object) || ::qt_cast<QTextEdit*>(object)/* || ::qt_cast<QDateTimeEditBase*>(object)*/)
     {
-        if((QEvent::FocusIn==event->type() || QEvent::FocusOut==event->type()))
+        if(QEvent::FocusIn==event->type() || QEvent::FocusOut==event->type() || QEvent::Enter==event->type() || QEvent::Leave==event->type())
         {
             QWidget *widget(static_cast<QWidget*>(object));
 
@@ -1520,22 +2162,114 @@ bool QtCurveStyle::eventFilter(QObject *object, QEvent *event)
         return false;
     }
 
-    if(opts.shadeMenubarOnlyWhenActive && SHADE_NONE!=opts.shadeMenubars &&
-       ::qt_cast<QMenuBar *>(object))
+    if(::qt_cast<QMenuBar *>(object))
+    {
+        bool useWindowCols=SHADE_WINDOW_BORDER==opts.shadeMenubars;
+
+        if( (useWindowCols || opts.customMenuTextColor || SHADE_BLEND_SELECTED==opts.shadeMenubars || SHADE_SELECTED==opts.shadeMenubars ||
+             SHADE_CUSTOM==opts.shadeMenubars) && QEvent::Paint==event->type())
+        {
+            const QColor &col(((QWidget *)object)->palette().active().color(QColorGroup::Foreground));
+
+            // If we're relouring the menubar text, check to see if menubar palette has changed, if so set back to
+            // our values. This fixes opera - which seems to change the widgets palette after it is polished.
+            if((opts.customMenuTextColor && col!=opts.customMenuNormTextColor) ||
+                    ( (SHADE_BLEND_SELECTED==opts.shadeMenubars || SHADE_SELECTED==opts.shadeMenubars ||
+                        (SHADE_CUSTOM==opts.shadeMenubars && TOO_DARK(itsMenubarCols[ORIGINAL_SHADE]))) &&
+                        col!=QApplication::palette().active().highlightedText()))
+            {
+                QPalette    pal(((QWidget *)object)->palette());
+                QColorGroup act(pal.active());
+
+                act.setColor(QColorGroup::Foreground, useWindowCols
+                                                      ? itsActiveMdiTextColor
+                                                      : opts.customMenuTextColor
+                                                        ? opts.customMenuNormTextColor
+                                                        : QApplication::palette().active().highlightedText());
+
+                if(!opts.shadeMenubarOnlyWhenActive || useWindowCols)
+                {
+                    QColorGroup inact(pal.inactive());
+                    inact.setColor(QColorGroup::Foreground, useWindowCols ? itsMdiTextColor : act.color(QColorGroup::Foreground));
+                    pal.setInactive(inact);
+                }
+
+                pal.setActive(act);
+                ((QWidget *)object)->setPalette(pal);
+            }
+        }
+
+        if(opts.shadeMenubarOnlyWhenActive && SHADE_NONE!=opts.shadeMenubars)
+            switch(event->type())
+            {
+                case QEvent::WindowActivate:
+                    itsActive=true;
+                    ((QWidget *)object)->repaint(false);
+                    return false;
+                case QEvent::WindowDeactivate:
+                    itsActive=false;
+                    ((QWidget *)object)->repaint(false);
+                    return false;
+                default:
+                    break;
+            }
+        if(BLEND_TITLEBAR || opts.windowBorder&WINDOW_BORDER_USE_MENUBAR_COLOR_FOR_TITLEBAR)
+            switch(event->type())
+            {
+                case QEvent::Resize:
+                {
+                    QResizeEvent *re = static_cast<QResizeEvent *>(event);
+
+                    if (re->size().height() != re->oldSize().height())
+                        emitMenuSize((QMenuBar *)object, re->size().height());
+                    break;
+                }
+            }
+    }
+
+    if(dynamic_cast<QMouseEvent*>(event))
         switch(event->type())
         {
-            case QEvent::WindowActivate:
-                itsActive=true;
-                ((QWidget *)object)->repaint(false);
-                return false;
-            case QEvent::WindowDeactivate:
-                itsActive=false;
-                ((QWidget *)object)->repaint(false);
-                return false;
-            default:
+            case QEvent::MouseMove:  // Only occurs for widgets with mouse tracking enabled
+                if(itsDragWidget)
+                {
+                    itsDragWidget->setMouseTracking(itsDragWidgetHadMouseTracking);
+                    bool move=isWindowDragWidget(object);
+
+                    if(move)
+                        triggerWMMove(itsDragWidget, ((QMouseEvent *)event)->globalPos());
+                    itsDragWidget = 0L;
+                    return move;
+                }
+            case QEvent::MouseButtonPress:
+            {
+                QMouseEvent *mev = (QMouseEvent *)event;
+
+                if(isWindowDragWidget(object, mev->pos()))
+                {
+
+                    if(/*Qt::NoModifier==mev->modifiers() && */ Qt::LeftButton==mev->button())
+                    {
+                        QWidget *wid = static_cast<QWidget*>(object);
+                        itsDragWidget=wid;
+                        itsDragWidgetHadMouseTracking=itsDragWidget->hasMouseTracking();
+                        itsDragWidget->setMouseTracking(true);
+                        return false;
+                    }
+                }
                 break;
+            }
+            case QEvent::MouseButtonRelease:
+                if(itsDragWidget)
+                {
+                    itsDragWidget->setMouseTracking(itsDragWidgetHadMouseTracking);
+                    itsDragWidget = 0L;
+                    return false;
+                }
+            break;
         }
 
+#ifdef QTC_ENABLE_PARENTLESS_DIALOG_FIX_SUPPORT
     if(opts.fixParentlessDialogs && ::qt_cast<QDialog *>(object))
     {
         QDialog *dlg=(QDialog *)object;
@@ -1543,7 +2277,7 @@ bool QtCurveStyle::eventFilter(QObject *object, QEvent *event)
         switch(event->type())
         {
             case QEvent::ShowMinimized:
-                if(QTC_SKIP_TASKBAR && appIsNotEmbedded(dlg))
+                if(SKIP_TASKBAR && appIsNotEmbedded(dlg))
                 {
                     // Ugly hack :-( Cant seem to get KWin to remove the minimize button. So when
                     // the dialog gets minimized, restore.
@@ -1552,7 +2286,7 @@ bool QtCurveStyle::eventFilter(QObject *object, QEvent *event)
                 }
                 break;
             case QEvent::WindowActivate:
-                if(QTC_SKIP_TASKBAR && appIsNotEmbedded(dlg))
+                if(SKIP_TASKBAR && appIsNotEmbedded(dlg))
                 {
                     // OO.o's filepicker is a spawned process - but is not set transient :-(
                     // --plus no reliable way of finding which widget to make it transient for...
@@ -1608,6 +2342,7 @@ bool QtCurveStyle::eventFilter(QObject *object, QEvent *event)
         }
         return false;
     }
+#endif
 
     // Track show events for progress bars
     if (opts.animatedProgress && ::qt_cast<QProgressBar*>(object))
@@ -1619,13 +2354,11 @@ bool QtCurveStyle::eventFilter(QObject *object, QEvent *event)
 
     switch(event->type())
     {
-#ifdef QTC_HIGHLIGHT_SCROLVIEWS
         case QEvent::FocusIn:
         case QEvent::FocusOut:
-            if(object->isWidgetType() && ::qt_cast<QScrollView*>(object))
+            if(opts.highlightScrollViews && object->isWidgetType() && ::qt_cast<QScrollView*>(object))
                 ((QWidget *)object)->repaint(false);
             break;
-#endif
         case QEvent::Hide:
         case QEvent::Show:
             if(::qt_cast<QListBox *>(object) &&
@@ -1646,7 +2379,7 @@ bool QtCurveStyle::eventFilter(QObject *object, QEvent *event)
                 {
                     if(::qt_cast<QTabBar*>(object) && static_cast<QWidget*>(object)->isEnabled())
                     {
-                        itsHoverTab=NULL;
+                        itsHoverTab=0L;
                         itsHoverWidget->repaint(false);
                     }
                     else if(!itsHoverWidget->hasMouseTracking() ||
@@ -1657,36 +2390,16 @@ bool QtCurveStyle::eventFilter(QObject *object, QEvent *event)
                     }
                 }
                 else
-                    itsHoverWidget=NULL;
-
-                if(itsHoverWidget && !itsIsSpecialHover &&
-                    (
-#if QT_VERSION >= 0x030200
-                    ::qt_cast<QRadioButton *>(itsHoverWidget) ||
-                    ::qt_cast<QCheckBox *>(itsHoverWidget) ||
-#endif
-                    ::qt_cast<QScrollBar *>(itsHoverWidget) ||
-#if KDE_VERSION >= 0x30400 && KDE_VERSION < 0x30500
-                    ::qt_cast<QToolButton *>(itsHoverWidget) ||
-
-#endif
-                    ::qt_cast<QHeader *>(itsHoverWidget) ||
-                    ::qt_cast<QSpinWidget *>(itsHoverWidget) ||
-                    ::qt_cast<QComboBox *>(itsHoverWidget) ||
-                    ::qt_cast<QTabBar *>(itsHoverWidget)))
+                    itsHoverWidget=0L;
 
+                if(itsHoverWidget && !itsIsSpecialHover && isSpecialHover(itsHoverWidget))
                     itsIsSpecialHover=true;
             }
             break;
         case QEvent::Leave:
             if(itsHoverWidget && object==itsHoverWidget)
             {
-                itsOldPos.setX(-1);
-                itsOldPos.setY(-1);
-                itsHoverWidget=NULL;
-                itsHoverSect=QTC_NO_SECT;
-                itsHover=HOVER_NONE;
-                itsHoverTab=NULL;
+                resetHover();
                 ((QWidget *)object)->repaint(false);
             }
             break;
@@ -1706,7 +2419,7 @@ bool QtCurveStyle::eventFilter(QObject *object, QEvent *event)
             break;
     }
 
-    return KStyle::eventFilter(object, event);
+    return BASE_STYLE::eventFilter(object, event);
 }
 
 void QtCurveStyle::drawLightBevel(const QColor &bgnd, QPainter *p, const QRect &rOrig,
@@ -1719,18 +2432,26 @@ void QtCurveStyle::drawLightBevel(const QColor &bgnd, QPainter *p, const QRect &
                  br(r);
     bool         bevelledButton(WIDGET_BUTTON(w) && APPEARANCE_BEVELLED==app),
                  sunken(flags &(Style_Down|Style_On|Style_Sunken)),
-                 lightBorder(QTC_DRAW_LIGHT_BORDER(sunken , w, app)),
-                 doColouredMouseOver(doBorder &&
+                 flatWidget(WIDGET_PROGRESSBAR==w && !opts.borderProgress),
+                 lightBorder(!flatWidget && DRAW_LIGHT_BORDER(sunken , w, app)),
+                 draw3dfull(!flatWidget && !lightBorder && DRAW_3D_FULL_BORDER(sunken, app)),
+                 draw3d(!flatWidget && (draw3dfull || (!lightBorder && DRAW_3D_BORDER(sunken, app)))),
+                 doColouredMouseOver(!sunken && doBorder &&
                                     opts.coloredMouseOver && flags&Style_MouseOver &&
-                                    (!IS_SLIDER(w) || (WIDGET_SB_SLIDER==w && MO_PLASTIK==opts.coloredMouseOver)) &&
-                                    (flags&QTC_CHECK_BUTTON || flags&QTC_TOGGLE_BUTTON || !sunken)),
+                                    WIDGET_SPIN!=w && WIDGET_COMBO_BUTTON!=w && WIDGET_SB_BUTTON!=w &&
+                                    (WIDGET_SB_SLIDER!=w || !opts.colorSliderMouseOver) &&
+                                    !(flags&DW_CLOSE_BUTTON) &&
+                                    (opts.coloredTbarMo || !(flags&STD_TOOLBUTTON)) &&
+                                    (flags&CHECK_BUTTON || flags&TOGGLE_BUTTON || !sunken)),
                  plastikMouseOver(doColouredMouseOver && MO_PLASTIK==opts.coloredMouseOver),
-                 colouredMouseOver(doColouredMouseOver && MO_COLORED==opts.coloredMouseOver),
-                 doEtch(!itsFormMode && doBorder && ETCH_WIDGET(w) && !(flags&QTC_CHECK_BUTTON) &&
-                        QTC_DO_EFFECT),
+                 colouredMouseOver(doColouredMouseOver &&
+                                       (MO_COLORED==opts.coloredMouseOver || MO_COLORED_THICK==opts.coloredMouseOver ||
+                                        (MO_GLOW==opts.coloredMouseOver && itsFormMode))),
+                 doEtch(!itsFormMode && doBorder && ETCH_WIDGET(w) && !(flags&CHECK_BUTTON) &&
+                        DO_EFFECT),
+                 glowFocus(doEtch && USE_GLOW_FOCUS(flags&Style_MouseOver) && flags&Style_HasFocus && flags&Style_Enabled),
+                 sunkenToggleMo(sunken && !(flags&Style_Down) && flags&(Style_MouseOver|TOGGLE_BUTTON)),
                  horiz(flags&Style_Horizontal);
-    int          dark(bevelledButton ? 2 : 4),
-                 c1(sunken ? dark : 0);
     const QColor *cols(custom ? custom : itsBackgroundCols),
                  *border(colouredMouseOver ? borderColors(flags, cols) : cols);
 
@@ -1738,26 +2459,44 @@ void QtCurveStyle::drawLightBevel(const QColor &bgnd, QPainter *p, const QRect &
 
     if(doEtch)
     {
-        r.addCoords(0, 1, 0, -1);
+        r.addCoords(1, 1, -1, -1);
         br=r;
     }
 
+    // fill
+    if(br.width()>0 && br.height()>0)
+    {
+        // Adjust paint rect, so that gradient is drawn from the same coords as KDE4 and Gtk2
+        if(WIDGET_PROGRESSBAR==w && opts.stripedProgress)
+        {
+            p->save();
+            p->setClipRegion(p->clipRegion().eor(QRegion(br)));
+        }
+        br.addCoords(1, 1,-1,-1);
+        drawBevelGradient(fill, p, br, horiz, sunken, app, w);
+        br.addCoords(-1, -1, 1, 1);
+        if(WIDGET_PROGRESSBAR==w && opts.stripedProgress)
+            p->restore();
+    }
+
     if(!colouredMouseOver && lightBorder)
         br.addCoords(1, 1,-1,-1);
-    else if(colouredMouseOver || (!IS_GLASS(app) && !sunken && flags&Style_Raised))
+    else if(colouredMouseOver || (draw3d && flags&Style_Raised))
     {
+        int dark(/*bevelledButton ? */2/* : 4*/);
+                 
         if(colouredMouseOver)
-            p->setPen(border[QTC_MO_STD_LIGHT(w, sunken)]);
+            p->setPen(border[MO_STD_LIGHT(w, sunken)]);
         else
-            p->setPen(border[c1]);
-        if(colouredMouseOver || bevelledButton || APPEARANCE_RAISED==app)
+            p->setPen(border[sunken ? dark : 0]);
+        if(colouredMouseOver || bevelledButton || draw3dfull)
         {
             //Left & top
             p->drawLine(br.x()+1, br.y()+2, br.x()+1, br.y()+br.height()-3);
             p->drawLine(br.x()+1, br.y()+1, br.x()+br.width()-2, br.y()+1);
 
             if(colouredMouseOver)
-                p->setPen(border[QTC_MO_STD_DARK(w)]);
+                p->setPen(border[MO_STD_DARK(w)]);
             else
                 p->setPen(border[sunken ? 0 : dark]);
             //Right & bottom
@@ -1785,7 +2524,7 @@ void QtCurveStyle::drawLightBevel(const QColor &bgnd, QPainter *p, const QRect &
         br.addCoords(1,1,-1,-1);
         p->drawRect(br);
 
-        if(WIDGET_PROGRESSBAR==w && !IS_GLASS(app))
+        if(IS_CUSTOM(app) || (WIDGET_PROGRESSBAR==w && (!IS_GLASS(app) || opts.fillProgress)))
             br.addCoords(1,1,-1,-1);
         else if(horiz)
             br.addCoords(1,0,-1,-1);
@@ -1794,37 +2533,29 @@ void QtCurveStyle::drawLightBevel(const QColor &bgnd, QPainter *p, const QRect &
     }
 
     // fill
-    if(br.width()>0 && br.height()>0)
-    {
-        drawBevelGradient(fill, !sunken, p, br, horiz, getWidgetShade(w, true, sunken, app),
-                          getWidgetShade(w, false, sunken, app), sunken, app, w);
-
+    if(br.width()>0 && br.height()>0 && (!sunken || sunkenToggleMo))
         if(plastikMouseOver)
         {
             if(WIDGET_SB_SLIDER==w)
             {
-                int len(QTC_SB_SLIDER_MO_LEN(horiz ? r.width() : r.height())),
-                    so(lightBorder ? QTC_SLIDER_MO_BORDER : 1),
+                int len(SB_SLIDER_MO_LEN(horiz ? r.width() : r.height())),
+                    so(lightBorder ? SLIDER_MO_PLASTIK_BORDER : 1),
                     eo(len+so),
-                    col(QTC_SLIDER_MO_SHADE);
+                    col(SLIDER_MO_SHADE);
 
                 if(horiz)
                 {
-                    drawBevelGradient(itsMouseOverCols[col], !sunken, p, QRect(r.x()+so, r.y(), len, r.height()),
-                                      horiz, getWidgetShade(w, true, sunken, app),
-                                      getWidgetShade(w, false, sunken, app), sunken, app, w);
-                    drawBevelGradient(itsMouseOverCols[col], !sunken, p, QRect(r.x()+r.width()-eo, r.y(), len, r.height()),
-                                      horiz, getWidgetShade(w, true, sunken, app),
-                                      getWidgetShade(w, false, sunken, app), sunken, app, w);
+                    drawBevelGradient(itsMouseOverCols[col], p, QRect(r.x()+so, r.y(), len, r.height()),
+                                      horiz, sunken, app, w);
+                    drawBevelGradient(itsMouseOverCols[col], p, QRect(r.x()+r.width()-eo, r.y(), len, r.height()),
+                                      horiz, sunken, app, w);
                 }
                 else
                 {
-                    drawBevelGradient(itsMouseOverCols[col], !sunken, p, QRect(r.x(), r.y()+so, r.width(), len),
-                                      horiz, getWidgetShade(w, true, sunken, app),
-                                      getWidgetShade(w, false, sunken, app), sunken, app, w);
-                    drawBevelGradient(itsMouseOverCols[col], !sunken, p, QRect(r.x(), r.y()+r.height()-eo, r.width(), len),
-                                      horiz, getWidgetShade(w, true, sunken, app),
-                                      getWidgetShade(w, false, sunken, app), sunken, app, w);
+                    drawBevelGradient(itsMouseOverCols[col], p, QRect(r.x(), r.y()+so, r.width(), len),
+                                      horiz, sunken, app, w);
+                    drawBevelGradient(itsMouseOverCols[col], p, QRect(r.x(), r.y()+r.height()-eo, r.width(), len),
+                                      horiz, sunken, app, w);
                 }
             }
             else
@@ -1832,7 +2563,7 @@ void QtCurveStyle::drawLightBevel(const QColor &bgnd, QPainter *p, const QRect &
                 bool horizontal((horiz && WIDGET_SB_BUTTON!=w)|| (!horiz && WIDGET_SB_BUTTON==w)),
                      thin(WIDGET_SB_BUTTON==w || WIDGET_SPIN==w || ((horiz ? r.height() : r.width())<16));
 
-                p->setPen(itsMouseOverCols[QTC_MO_PLASTIK_DARK(w)]);
+                p->setPen(itsMouseOverCols[MO_PLASTIK_DARK(w)]);
                 if(horizontal)
                 {
                     p->drawLine(r.x()+1, r.y()+1, r.x()+r.width()-2, r.y()+1);
@@ -1845,7 +2576,7 @@ void QtCurveStyle::drawLightBevel(const QColor &bgnd, QPainter *p, const QRect &
                 }
                 if(!thin)
                 {
-                    p->setPen(itsMouseOverCols[QTC_MO_PLASTIK_LIGHT(w)]);
+                    p->setPen(itsMouseOverCols[MO_PLASTIK_LIGHT(w)]);
                     if(horizontal)
                     {
                         p->drawLine(r.x()+1, r.y()+2, r.x()+r.width()-2, r.y()+2);
@@ -1859,42 +2590,128 @@ void QtCurveStyle::drawLightBevel(const QColor &bgnd, QPainter *p, const QRect &
                 }
             }
         }
-    }
+        else if(colouredMouseOver && 0!=round && FULLLY_ROUNDED)
+        {
+            p->setPen(itsMouseOverCols[MO_STD_LIGHT(w, sunken)]);
+
+            if(round&CORNER_TL)
+                p->drawPoint(br.left(), br.top());
+            if(round&CORNER_BL)
+                p->drawPoint(br.left(), br.bottom());
+            if(round&CORNER_BR)
+                p->drawPoint(br.right(), br.bottom());
+            if(round&CORNER_TR)
+                p->drawPoint(br.right(), br.top());
+        }
 
     if(doBorder)
-        drawBorder(bgnd, p, r, cg, flags, round, cols, w, doCorners);
+    {
+        const QColor *borderCols=glowFocus ||
+                                 (WIDGET_COMBO==w && USE_GLOW_FOCUS(flags&Style_MouseOver) && flags&Style_HasFocus && flags&Style_Enabled)
+                        ? itsFocusCols
+                        : (WIDGET_COMBO==w || WIDGET_COMBO_BUTTON==w) && cols==itsComboBtnCols
+                            ? flags&Style_MouseOver && MO_GLOW==opts.coloredMouseOver && !sunken
+                                ? itsMouseOverCols
+                                : itsButtonCols
+                            : cols;
+                            
+        if((!sunken || sunkenToggleMo) && flags&Style_Enabled && !glowFocus &&
+            ((((doEtch && WIDGET_OTHER!=w && WIDGET_SLIDER_TROUGH!=w) || WIDGET_COMBO==w || WIDGET_SB_SLIDER==w) &&
+             MO_GLOW==opts.coloredMouseOver && flags&Style_MouseOver) ||
+             (WIDGET_DEF_BUTTON==w && IND_GLOW==opts.defBtnIndicator)))
+            drawBorder(bgnd, p, r, cg, flags, round,
+                        WIDGET_DEF_BUTTON==w && IND_GLOW==opts.defBtnIndicator &&
+                        (!(flags&Style_MouseOver) || !itsMouseOverCols)
+                            ? itsDefBtnCols : itsMouseOverCols, w, doCorners);
+        else
+            drawBorder(bgnd, p, r, cg, flags, round,
+                       colouredMouseOver && MO_COLORED_THICK==opts.coloredMouseOver ? itsMouseOverCols : borderCols,
+                       w, doCorners);
+    }
 
-    if(doEtch)
-        drawEtch(p, rOrig, cg, true, true, EFFECT_SHADOW==opts.buttonEffect && WIDGET_BUTTON(w) && !sunken);
+    if(doEtch || glowFocus)
+        if( (!sunken  || sunkenToggleMo) && 
+            ((WIDGET_OTHER!=w && WIDGET_SLIDER_TROUGH!=w && MO_GLOW==opts.coloredMouseOver && flags&Style_MouseOver) ||
+             glowFocus ||
+             (WIDGET_DEF_BUTTON==w && IND_GLOW==opts.defBtnIndicator)/* ||
+              (flags&Style_HasFocus && FOCUS_FULL==opts.focus)*/ ))
+            drawGlow(p, rOrig, cg, WIDGET_DEF_BUTTON==w && flags&Style_MouseOver ? WIDGET_STD_BUTTON : w,
+                     glowFocus ? itsFocusCols : 0);
+        else
+            drawEtch(p, rOrig, cg, EFFECT_SHADOW==opts.buttonEffect && WIDGET_BUTTON(w) && !sunken, ROUNDED_NONE==round);
 
     p->restore();
 }
 
-void QtCurveStyle::drawEtch(QPainter *p, const QRect &r, const QColorGroup &cg, bool top, bool bot, bool raised) const
+void QtCurveStyle::drawGlow(QPainter *p, const QRect &r, const QColorGroup &cg, EWidget w, const QColor *cols) const
 {
-    if(top && !raised)
+    if(itsMouseOverCols || itsDefBtnCols || cols)
     {
-        QColor darkCol(shade(cg.background(), QTC_ETCHED_DARK));
-
-        p->setPen(darkCol);
-        p->drawLine(r.x()+2, r.y(), r.x()+r.width()-3, r.y());
-        p->setPen(midColor(darkCol, cg.background()));
-        p->drawPoint(r.x()+1, r.y());
-        p->drawPoint(r.x()+r.width()-2, r.y());
-        p->drawPoint(r.x(), r.y()+1);
-        p->drawPoint(r.x()+r.width()-1, r.y()+1);
+        bool   def(WIDGET_DEF_BUTTON==w && IND_GLOW==opts.defBtnIndicator),
+               defShade=def && (!itsDefBtnCols ||
+                                (itsMouseOverCols && itsDefBtnCols[ORIGINAL_SHADE]==itsMouseOverCols[ORIGINAL_SHADE]));
+        QColor col(cols ? cols[GLOW_MO]
+                        : (def && itsDefBtnCols) || !itsMouseOverCols
+                            ? itsDefBtnCols[GLOW_DEFBTN] : itsMouseOverCols[GLOW_MO]);
+
+        col=midColorF(cg.background(), col, 1.5-GLOW_ALPHA(defShade));
+        p->setPen(col);
+        if(ROUND_NONE==opts.round)
+            p->drawRect(r);
+        else
+        {
+            p->drawLine(r.x()+2, r.y()+r.height()-1, r.x()+r.width()-3, r.y()+r.height()-1);
+            p->drawLine(r.x()+r.width()-1, r.y()+2, r.x()+r.width()-1, r.y()+r.height()-3);
+            p->drawLine(r.x()+3, r.y(), r.x()+r.width()-4, r.y());
+            p->drawLine(r.x(), r.y()+3, r.x(), r.y()+r.height()-4);
+            //p->setPen(midColor(col, cg.background()));
+            p->drawLine(r.x()+r.width()-1, r.y()+r.height()-3, r.x()+r.width()-3, r.y()+r.height()-1);
+            p->drawLine(r.x(), r.y()+r.height()-3, r.x()+2, r.y()+r.height()-1);
+            p->drawLine(r.x(), r.y()+2, r.x()+2, r.y());
+            p->drawLine(r.x()+r.width()-3, r.y(), r.x()+r.width()-1, r.y()+2);
+            p->setPen(midColor(col, cg.background()));
+            p->drawLine(r.x()+r.width()-1, r.y()+r.height()-2, r.x()+r.width()-2, r.y()+r.height()-1);
+            p->drawLine(r.x(), r.y()+r.height()-2, r.x()+1, r.y()+r.height()-1);
+            p->drawLine(r.x(), r.y()+1, r.x()+1, r.y());
+            p->drawLine(r.x()+r.width()-2, r.y(), r.x()+r.width()-1, r.y()+1);
+        }
     }
-    if(bot)
+}
+
+void QtCurveStyle::drawEtch(QPainter *p, const QRect &r, const QColorGroup &cg, bool raised, bool square) const
+{
+    square=square || ROUND_NONE==opts.round;
+
+    int mod(square ? 0 : 2);
+
     {
-        QColor col(raised ? shade(cg.background(), QTC_ETCHED_DARK) : itsBackgroundCols[1]);
+        QColor col(raised ? shade(cg.background(), ETCHED_DARK) : itsBackgroundCols[1]);
 
         p->setPen(col);
-        p->drawLine(r.x()+2, r.y()+r.height()-1, r.x()+r.width()-3, r.y()+r.height()-1);
-        p->setPen(midColor(raised ? col : itsBackgroundCols[0], cg.background()));
-        p->drawPoint(r.x()+1, r.y()+r.height()-1);
-        p->drawPoint(r.x()+r.width()-2, r.y()+r.height()-1);
-        p->drawPoint(r.x(), r.y()+r.height()-2);
-        p->drawPoint(r.x()+r.width()-1, r.y()+r.height()-2);
+        p->drawLine(r.x()+mod, r.y()+r.height()-1, r.x()+r.width()-(1+mod), r.y()+r.height()-1);
+        p->drawLine(r.x()+r.width()-1, r.y()+mod, r.x()+r.width()-1, r.y()+r.height()-(1+mod));
+        if(!square)
+        {
+            p->setPen(midColor(raised ? col : itsBackgroundCols[0], cg.background()));
+            p->drawLine(r.x()+r.width()-1, r.y()+r.height()-3, r.x()+r.width()-3, r.y()+r.height()-1);
+            p->drawLine(r.x()+1, r.y()+r.height()-2, r.x()+2, r.y()+r.height()-1);
+            p->drawLine(r.x()+r.width()-2, r.y()+1, r.x()+r.width()-1, r.y()+2);
+        }
+    }
+    if(!raised)
+    {
+        QColor darkCol(shade(cg.background(), ETCHED_DARK));
+
+        p->setPen(darkCol);
+        p->drawLine(r.x()+1+mod, r.y(), r.x()+r.width()-(2+mod), r.y());
+        p->drawLine(r.x(), r.y()+1+mod, r.x(), r.y()+r.height()-(2+mod));
+        if(!square)
+        {
+            p->setPen(midColor(darkCol, cg.background()));
+            p->drawLine(r.x(), r.y()+2, r.x()+2, r.y());
+            p->drawLine(r.x()+r.width()-3, r.y(), r.x()+r.width()-2, r.y()+1);
+            p->drawLine(r.x(), r.y()+r.height()-3, r.x()+1, r.y()+r.height()-2);
+        }
     }
 }
 
@@ -1907,8 +2724,19 @@ void QtCurveStyle::drawBorder(const QColor &bgnd, QPainter *p, const QRect &r, c
     QColor       border(flags&Style_ButtonDefault && IND_FONT_COLOR==opts.defBtnIndicator &&
                         flags&Style_Enabled
                           ? cg.buttonText()
-                          : cols[!(flags&Style_Enabled) && (WIDGET_BUTTON(w) || WIDGET_SLIDER_TROUGH==w || flags&QTC_CHECK_BUTTON)
-                                    ? QT_DISABLED_BORDER : borderVal]);
+                          : cols[WIDGET_PROGRESSBAR==w
+                                    ? PBAR_BORDER
+                                    : !(flags&Style_Enabled) && (WIDGET_BUTTON(w) || WIDGET_SLIDER_TROUGH==w ||
+                                                                 flags&CHECK_BUTTON)
+                                        ? DISABLED_BORDER
+                                        : itsMouseOverCols==cols && IS_SLIDER(w)
+                                            ? SLIDER_MO_BORDER_VAL
+                                            : borderVal]);
+    bool        hasFocus(cols==itsFocusCols /* CPD USED TO INDICATE FOCUS! */),
+                hasMouseOver(cols==itsMouseOverCols && ENTRY_MO);
+
+    if(WIDGET_TAB_BOT==w || WIDGET_TAB_TOP==w)
+        cols=itsBackgroundCols;
 
     switch(borderProfile)
     {
@@ -1916,28 +2744,40 @@ void QtCurveStyle::drawBorder(const QColor &bgnd, QPainter *p, const QRect &r, c
             break;
         case BORDER_RAISED:
         case BORDER_SUNKEN:
-            p->setPen(flags&Style_Enabled && (BORDER_RAISED==borderProfile || APPEARANCE_FLAT!=app)
-                         ? blendBorderColors
-                               ? midColor(cg.background(), cols[BORDER_RAISED==borderProfile
-                                                                   ? 0 : QT_FRAME_DARK_SHADOW]) // Was base???
-                               : cols[BORDER_RAISED==borderProfile ? 0 : QT_FRAME_DARK_SHADOW]
-                         : cg.background());
+        case BORDER_LIGHT:
+            if(flags&Style_Enabled && (hasMouseOver || hasFocus) && (WIDGET_ENTRY==w || WIDGET_SCROLLVIEW==w || WIDGET_COMBO==w || WIDGET_SPIN==w))
+                p->setPen(midColorF(cg.background(), cols[BORDER_RAISED==borderProfile || BORDER_LIGHT==borderProfile
+                                                            ? 0 : FRAME_DARK_SHADOW], 1.5-ENTRY_INNER_ALPHA));
+            else
+                p->setPen(flags&Style_Enabled && (BORDER_RAISED==borderProfile || BORDER_LIGHT==borderProfile || APPEARANCE_FLAT!=app)
+                            ? blendBorderColors
+                                ? midColor(cg.background(), cols[BORDER_RAISED==borderProfile
+                                                                   ? 0 : FRAME_DARK_SHADOW]) // Was base???
+                                : cols[BORDER_RAISED==borderProfile || BORDER_LIGHT==borderProfile ? 0 : FRAME_DARK_SHADOW]
+                            : cg.background());
             p->drawLine(r.x()+1, r.y()+1, r.x()+1, r.y()+r.height()-2);
             p->drawLine(r.x()+1, r.y()+1, r.x()+r.width()-2, r.y()+1);
-            p->setPen(flags&Style_Enabled && (BORDER_SUNKEN==borderProfile || APPEARANCE_FLAT!=app)
-                         ? blendBorderColors
-                               ? midColor(cg.background(), cols[BORDER_RAISED==borderProfile
-                                                                   ? QT_FRAME_DARK_SHADOW : 0]) // Was base???
-                               : cols[BORDER_RAISED==borderProfile ? QT_FRAME_DARK_SHADOW : 0]
-                         : cg.background());
+            if(!hasFocus && !hasMouseOver && BORDER_LIGHT!=borderProfile)
+                p->setPen(WIDGET_SCROLLVIEW==w
+                            ? cg.background()
+                            : WIDGET_ENTRY==w
+                                ? cg.base()
+                                : flags&Style_Enabled && (BORDER_SUNKEN==borderProfile || APPEARANCE_FLAT!=app ||
+                                                        WIDGET_TAB_TOP==w || WIDGET_TAB_BOT==w)
+                                    ? blendBorderColors
+                                        ? midColor(cg.background(), cols[BORDER_RAISED==borderProfile
+                                                                            ? FRAME_DARK_SHADOW : 0]) // Was base???
+                                        : cols[BORDER_RAISED==borderProfile ? FRAME_DARK_SHADOW : 0]
+                                    : cg.background());
             p->drawLine(r.x()+r.width()-2, r.y()+1, r.x()+r.width()-2, r.y()+r.height()-2);
             p->drawLine(r.x()+1, r.y()+r.height()-2, r.x()+r.width()-2, r.y()+r.height()-2);
     }
 
-    if(QTC_ROUNDED && ROUNDED_NONE!=round)
+    if(ROUNDED && ROUNDED_NONE!=round)
     {
-        bool largeArc(ROUND_FULL==opts.round && !(flags&QTC_CHECK_BUTTON) &&
-                      r.width()>=QTC_MIN_BTN_SIZE && r.height()>=QTC_MIN_BTN_SIZE);
+        bool largeArc(WIDGET_FOCUS!=w && FULLLY_ROUNDED && !(flags&CHECK_BUTTON) &&
+                      r.width()>=MIN_ROUND_FULL_SIZE && r.height()>=MIN_ROUND_FULL_SIZE &&
+                      !(flags&DW_CLOSE_BUTTON) && (WIDGET_PROGRESSBAR!=w || opts.fillProgress));
 
         p->setPen(border);
         if(itsFormMode)
@@ -1982,137 +2822,140 @@ void QtCurveStyle::drawBorder(const QColor &bgnd, QPainter *p, const QRect &r, c
             p->drawLine(r.x()+r.width()-1, r.y()+1, r.x()+r.width()-1, r.y()+r.height()-2);
         }
 
-        QColor  largeArcMid(midColor(border, bgnd)),
-                aaColor(midColor(custom ? custom[3] : itsBackgroundCols[3], bgnd));
-        QPixmap *pix=itsFormMode ? getPixelPixmap(border) : NULL;
-
-        if(round&CORNER_TL)
+        //if(!opts.fillProgress || WIDGET_PROGRESSBAR!=w)
         {
-            if(largeArc)
+            QColor  largeArcMid(midColor(border, bgnd)),
+                    aaColor(midColor(custom ? custom[3] : itsBackgroundCols[3], bgnd));
+            QPixmap *pix=itsFormMode ? getPixelPixmap(border) : 0L;
+
+            if(round&CORNER_TL)
             {
-                p->drawPoint(r.x()+1, r.y()+1);
-                if(itsFormMode)
-                {
-                    p->drawPixmap(r.x(), r.y()+1, *pix);
-                    p->drawPixmap(r.x()+1, r.y(), *pix);
-                }
-                else
+                if(largeArc)
                 {
-                    p->setPen(largeArcMid);
-                    p->drawLine(r.x(), r.y()+1, r.x()+1, r.y());
+                    p->drawPoint(r.x()+1, r.y()+1);
+                    if(itsFormMode)
+                    {
+                        p->drawPixmap(r.x(), r.y()+1, *pix);
+                        p->drawPixmap(r.x()+1, r.y(), *pix);
+                    }
+                    else
+                    {
+                        p->setPen(largeArcMid);
+                        p->drawLine(r.x(), r.y()+1, r.x()+1, r.y());
+                    }
                 }
+                if(doCorners)
+                    if(itsFormMode)
+                    {
+                        if(!largeArc)
+                            p->drawPixmap(r.x(), r.y(), *pix);
+                    }
+                    else
+                    {
+                        p->setPen(largeArc ? bgnd : aaColor);
+                        p->drawPoint(r.x(), r.y());
+                    }
             }
-            if(doCorners)
-                if(itsFormMode)
-                {
-                    if(!largeArc)
-                        p->drawPixmap(r.x(), r.y(), *pix);
-                }
-                else
-                {
-                    p->setPen(largeArc ? bgnd : aaColor);
-                    p->drawPoint(r.x(), r.y());
-                }
-        }
-        else
-            p->drawPoint(r.x(), r.y());
+            else
+                p->drawPoint(r.x(), r.y());
 
-        p->setPen(border);
-        if(round&CORNER_TR)
-        {
-            if(largeArc)
+            p->setPen(border);
+            if(round&CORNER_TR)
             {
-                p->drawPoint(r.x()+r.width()-2, r.y()+1);
-                if(itsFormMode)
-                {
-                    p->drawPixmap(r.x()+r.width()-2, r.y(), *pix);
-                    p->drawPixmap(r.x()+r.width()-1, r.y()+1, *pix);
-                }
-                else
+                if(largeArc)
                 {
-                    p->setPen(largeArcMid);
-                    p->drawLine(r.x()+r.width()-2, r.y(), r.x()+r.width()-1, r.y()+1);
+                    p->drawPoint(r.x()+r.width()-2, r.y()+1);
+                    if(itsFormMode)
+                    {
+                        p->drawPixmap(r.x()+r.width()-2, r.y(), *pix);
+                        p->drawPixmap(r.x()+r.width()-1, r.y()+1, *pix);
+                    }
+                    else
+                    {
+                        p->setPen(largeArcMid);
+                        p->drawLine(r.x()+r.width()-2, r.y(), r.x()+r.width()-1, r.y()+1);
+                    }
                 }
+                if(doCorners)
+                    if(itsFormMode)
+                    {
+                        if(!largeArc)
+                            p->drawPixmap(r.x()+r.width()-1, r.y(), *pix);
+                    }
+                    else
+                    {
+                        p->setPen(largeArc ? bgnd : aaColor);
+                        p->drawPoint(r.x()+r.width()-1, r.y());
+                    }
             }
-            if(doCorners)
-                if(itsFormMode)
-                {
-                    if(!largeArc)
-                        p->drawPixmap(r.x()+r.width()-1, r.y(), *pix);
-                }
-                else
-                {
-                    p->setPen(largeArc ? bgnd : aaColor);
-                    p->drawPoint(r.x()+r.width()-1, r.y());
-                }
-        }
-        else
-            p->drawPoint(r.x()+r.width()-1, r.y());
+            else
+                p->drawPoint(r.x()+r.width()-1, r.y());
 
-        p->setPen(border);
-        if(round&CORNER_BR)
-        {
-            if(largeArc)
+            p->setPen(border);
+            if(round&CORNER_BR)
             {
-                p->drawPoint(r.x()+r.width()-2, r.y()+r.height()-2);
-                if(itsFormMode)
-                {
-                    p->drawPixmap(r.x()+r.width()-2, r.y()+r.height()-1, *pix);
-                    p->drawPixmap(r.x()+r.width()-1, r.y()+r.height()-2, *pix);
-                }
-                else
+                if(largeArc)
                 {
-                    p->setPen(largeArcMid);
-                    p->drawLine(r.x()+r.width()-2, r.y()+r.height()-1, r.x()+r.width()-1,
-                                r.y()+r.height()-2);
+                    p->drawPoint(r.x()+r.width()-2, r.y()+r.height()-2);
+                    if(itsFormMode)
+                    {
+                        p->drawPixmap(r.x()+r.width()-2, r.y()+r.height()-1, *pix);
+                        p->drawPixmap(r.x()+r.width()-1, r.y()+r.height()-2, *pix);
+                    }
+                    else
+                    {
+                        p->setPen(largeArcMid);
+                        p->drawLine(r.x()+r.width()-2, r.y()+r.height()-1, r.x()+r.width()-1,
+                                    r.y()+r.height()-2);
+                    }
                 }
+                if(doCorners)
+                    if(itsFormMode)
+                    {
+                        if(!largeArc)
+                            p->drawPixmap(r.x()+r.width()-1, r.y()+r.height()-1, *pix);
+                    }
+                    else
+                    {
+                        p->setPen(largeArc ? bgnd : aaColor);
+                        p->drawPoint(r.x()+r.width()-1, r.y()+r.height()-1);
+                    }
             }
-            if(doCorners)
-                if(itsFormMode)
-                {
-                    if(!largeArc)
-                        p->drawPixmap(r.x()+r.width()-1, r.y()+r.height()-1, *pix);
-                }
-                else
-                {
-                    p->setPen(largeArc ? bgnd : aaColor);
-                    p->drawPoint(r.x()+r.width()-1, r.y()+r.height()-1);
-                }
-        }
-        else
-            p->drawPoint(r.x()+r.width()-1, r.y()+r.height()-1);
+            else
+                p->drawPoint(r.x()+r.width()-1, r.y()+r.height()-1);
 
-        p->setPen(border);
-        if(round&CORNER_BL)
-        {
-            if(largeArc)
+            p->setPen(border);
+            if(round&CORNER_BL)
             {
-                p->drawPoint(r.x()+1, r.y()+r.height()-2);
-                if(itsFormMode)
-                {
-                    p->drawPixmap(r.x(), r.y()+r.height()-2, *pix);
-                    p->drawPixmap(r.x()+1, r.y()+r.height()-1, *pix);
-                }
-                else
+                if(largeArc)
                 {
-                    p->setPen(largeArcMid);
-                    p->drawLine(r.x(), r.y()+r.height()-2, r.x()+1, r.y()+r.height()-1);
+                    p->drawPoint(r.x()+1, r.y()+r.height()-2);
+                    if(itsFormMode)
+                    {
+                        p->drawPixmap(r.x(), r.y()+r.height()-2, *pix);
+                        p->drawPixmap(r.x()+1, r.y()+r.height()-1, *pix);
+                    }
+                    else
+                    {
+                        p->setPen(largeArcMid);
+                        p->drawLine(r.x(), r.y()+r.height()-2, r.x()+1, r.y()+r.height()-1);
+                    }
                 }
+                if(doCorners)
+                    if(itsFormMode)
+                    {
+                        if(!largeArc)
+                            p->drawPixmap(r.x(), r.y()+r.height()-1, *pix);
+                    }
+                    else
+                    {
+                        p->setPen(largeArc ? bgnd : aaColor);
+                        p->drawPoint(r.x(), r.y()+r.height()-1);
+                    }
             }
-            if(doCorners)
-                if(itsFormMode)
-                {
-                    if(!largeArc)
-                        p->drawPixmap(r.x(), r.y()+r.height()-1, *pix);
-                }
-                else
-                {
-                    p->setPen(largeArc ? bgnd : aaColor);
-                    p->drawPoint(r.x(), r.y()+r.height()-1);
-                }
+            else
+                p->drawPoint(r.x(), r.y()+r.height()-1);
         }
-        else
-            p->drawPoint(r.x(), r.y()+r.height()-1);
     }
     else
     {
@@ -2122,118 +2965,156 @@ void QtCurveStyle::drawBorder(const QColor &bgnd, QPainter *p, const QRect &r, c
     }
 }
 
+void QtCurveStyle::drawMdiIcon(QPainter *painter, const QColor &color, const QColor &shadow, const QRect &r, bool sunken, int margin,
+                               SubControl button) const
+{
+    if(!sunken)
+        drawWindowIcon(painter, shadow, adjusted(r, 1, 1, 1, 1), sunken, margin, button);
+    drawWindowIcon(painter, color, r, sunken, margin, button);
+}
+
+void QtCurveStyle::drawWindowIcon(QPainter *painter, const QColor &color, const QRect &r, bool sunken, int margin, SubControl button) const
+{
+    QRect rect(r);
+
+    // Icons look best at 22x22...
+    if(rect.height()>22)
+    {
+        int diff=(rect.height()-22)/2;
+        adjust(rect, diff, diff, -diff, -diff);
+    }
+
+    if(sunken)
+        adjust(rect, 1, 1, 1, 1);
+
+    if(margin)
+        adjust(rect, margin, margin, -margin, -margin);
+
+    painter->setPen(color);
+
+    switch(button)
+    {
+        case SC_TitleBarMinButton:
+            painter->drawLine(rect.center().x() - 2, rect.center().y() + 3, rect.center().x() + 3, rect.center().y() + 3);
+            painter->drawLine(rect.center().x() - 2, rect.center().y() + 4, rect.center().x() + 3, rect.center().y() + 4);
+            painter->drawLine(rect.center().x() - 3, rect.center().y() + 3, rect.center().x() - 3, rect.center().y() + 4);
+            painter->drawLine(rect.center().x() + 4, rect.center().y() + 3, rect.center().x() + 4, rect.center().y() + 4);
+            break;
+        case SC_TitleBarMaxButton:
+            painter->drawRect(rect); // adjusted(rect, 0, 0, -1, -1));
+            painter->drawLine(rect.left() + 1, rect.top() + 1,  rect.right() - 1, rect.top() + 1);
+            painter->drawPoint(rect.topLeft());
+            painter->drawPoint(rect.topRight());
+            painter->drawPoint(rect.bottomLeft());
+            painter->drawPoint(rect.bottomRight());
+            break;
+        case SC_TitleBarCloseButton:
+            painter->drawLine(rect.left() + 1, rect.top(), rect.right(), rect.bottom() - 1);
+            painter->drawLine(rect.left(), rect.top() + 1, rect.right() - 1, rect.bottom());
+            painter->drawLine(rect.right() - 1, rect.top(), rect.left(), rect.bottom() - 1);
+            painter->drawLine(rect.right(), rect.top() + 1, rect.left() + 1, rect.bottom());
+            painter->drawPoint(rect.topLeft());
+            painter->drawPoint(rect.topRight());
+            painter->drawPoint(rect.bottomLeft());
+            painter->drawPoint(rect.bottomRight());
+            painter->drawLine(rect.left() + 1, rect.top() + 1, rect.right() - 1, rect.bottom() - 1);
+            painter->drawLine(rect.left() + 1, rect.bottom() - 1, rect.right() - 1, rect.top() + 1);
+            break;
+        case SC_TitleBarNormalButton:
+        {
+            QRect r2 = adjusted(rect, 0, 3, -3, 0);
+
+            painter->drawRect(r2); // adjusted(r2, 0, 0, -1, -1));
+            painter->drawLine(r2.left() + 1, r2.top() + 1, r2.right() - 1, r2.top() + 1);
+            painter->drawPoint(r2.topLeft());
+            painter->drawPoint(r2.topRight());
+            painter->drawPoint(r2.bottomLeft());
+            painter->drawPoint(r2.bottomRight());
+
+            QRect   backWindowRect(adjusted(rect, 3, 0, 0, -3));
+            QRegion clipRegion(backWindowRect);
+
+            clipRegion -= r2;
+            if(sunken)
+                adjust(backWindowRect, 1, 1, 1, 1);
+            painter->drawRect(backWindowRect); // adjusted(backWindowRect, 0, 0, -1, -1));
+            painter->drawLine(backWindowRect.left() + 1, backWindowRect.top() + 1,
+                              backWindowRect.right() - 1, backWindowRect.top() + 1);
+            painter->drawPoint(backWindowRect.topLeft());
+            painter->drawPoint(backWindowRect.topRight());
+            painter->drawPoint(backWindowRect.bottomLeft());
+            painter->drawPoint(backWindowRect.bottomRight());
+            break;
+        }
+        case SC_TitleBarShadeButton:
+             ::drawArrow(painter, rect, color, PE_ArrowUp, opts, true);
+            break;
+        case SC_TitleBarUnshadeButton:
+             ::drawArrow(painter, rect, color, PE_ArrowDown, opts, true);
+        default:
+            break;
+    }
+}
+
 void QtCurveStyle::drawEntryField(QPainter *p, const QRect &rx, const QColorGroup &cg,
-                                  SFlags flags, bool highlight, int round, EWidget w) const
+                                  SFlags flags, EntryColor coloration, int round, EWidget w) const
 {
-    const QColor *use(highlight ? itsMenuitemCols : buttonColors(cg));
+    const QColor *use(ENTRY_MOUSE_OVER==coloration && itsMouseOverCols
+                        ? itsMouseOverCols
+                        : ENTRY_FOCUS==coloration && itsFocusCols
+                            ? itsFocusCols
+                            : backgroundColors(cg));
     bool         isSpin(WIDGET_SPIN==w),
-                 doEtch(!itsFormMode && QTC_DO_EFFECT);
+                 doEtch(!itsFormMode && opts.etchEntry && (!isSpin || opts.unifySpin) && WIDGET_COMBO!=w && DO_EFFECT),
+                 reverse(QApplication::reverseLayout());
+
+    if(WIDGET_SCROLLVIEW!=w && (opts.square&SQUARE_ENTRY))
+        round=ROUNDED_NONE;
 
     QRect r(rx);
 
     if(doEtch)
-        r.addCoords(0, 1, 0, -1);
+        r.addCoords(1, 1, -1, -1);
 
-    if(isSpin)
+    if(!itsFormMode)
     {
-        if(QApplication::reverseLayout())
-            r.addCoords(-1, 0, 0, 0);
-
-        p->setPen(flags&Style_Enabled ? cg.base() : cg.background());
-        p->drawLine(r.x()+r.width()-2, r.y(), r.x()+r.width()-2, r.y()+r.height()-1);
-        p->drawLine(r.x()+r.width()-3, r.y(), r.x()+r.width()-3, r.y()+r.height()-1);
+        p->setPen(cg.background());
+        p->drawRect(rx);
     }
 
-    if(!itsFormMode)
-        p->fillRect(rx, cg.background());
-    p->fillRect(QRect(rx.x()+2, rx.y()+2, rx.x()+rx.width()-3, rx.y()+rx.height()-3),
-                flags&Style_Enabled ? cg.base() : cg.background());
+    if(isSpin || WIDGET_ENTRY==w || WIDGET_COMBO==w)
+    {
+        if(reverse && isSpin)
+            r.addCoords(-1, 0, 0, 0);
 
-    p->setPen(APPEARANCE_FLAT!=opts.appearance || highlight
-                ? midColor(flags&Style_Enabled ? cg.base() : cg.background(), use[3])
-                : cg.base());
-    p->drawLine(r.x()+1, r.y()+1, r.x()+1, r.y()+r.height()-2);
-    p->drawLine(r.x()+1, r.y()+1, r.x()+r.width()-(isSpin ? 0 : 2), r.y()+1);
+        if(isSpin || WIDGET_COMBO==w)
+            p->fillRect(r, flags&Style_Enabled ? cg.base() : cg.background());
+    }
 
-    p->setPen(flags&Style_Enabled ? midColor(cg.base(), use[0]) : cg.background());
-    p->drawLine(r.x()+r.width()-(isSpin && highlight ? 3 : 2), r.y()+1,
-                r.x()+r.width()-(isSpin && highlight ? 3 : 2), r.y()+r.height()-2);
-    p->drawLine(r.x()+1, r.y()+r.height()-2, r.x()+r.width()-(isSpin ? 0 : 2), r.y()+r.height()-2);
+    if(ENTRY_NONE!=coloration && isSpin && !opts.unifySpin)
+        if(reverse)
+            r.addCoords(1, 0, 0, 0);
+        else
+            r.addCoords(0, 0, -1, 0);
 
-    if(highlight && isSpin)
-    {
-        p->setPen(use[QT_STD_BORDER]);
-        p->drawLine(r.x()+r.width()-2, r.y(), r.x()+r.width()-2, r.y()+r.height()-1);
-    }
+    drawBorder(cg.background(), p, r, cg, (SFlags)(flags|Style_Horizontal), round, use,
+               WIDGET_SCROLLVIEW==w ? w : WIDGET_ENTRY, true, isSpin && !(flags&Style_Enabled) ? BORDER_FLAT : BORDER_SUNKEN);
 
-    drawBorder(cg.background(), p, r, cg, (SFlags)(flags|Style_Horizontal), round, use);
     if(doEtch)
     {
-        r=rx;
+        QRect r(rx);
         p->setClipRegion(r);
 
         if(!(round&CORNER_TR) && !(round&CORNER_BR))
             r.addCoords(0, 0, 2, 0);
         if(!(round&CORNER_TL) && !(round&CORNER_BL))
             r.addCoords(-2, 0, 0, 0);
-        drawEtch(p, r, cg, true, true, EFFECT_SHADOW==opts.buttonEffect && WIDGET_BUTTON(w) &&
-                 !(flags &(Style_Down | Style_On | Style_Sunken)));
+        drawEtch(p, r, cg, EFFECT_SHADOW==opts.buttonEffect && WIDGET_BUTTON(w) &&
+                 !(flags &(Style_Down | Style_On | Style_Sunken)), ROUNDED_NONE==round);
         p->setClipping(false);
     }
 }
 
-static void drawArrow(QPainter *p, const QRect &r, const QColor &col, QStyle::PrimitiveElement pe, const Options &opts, bool small=false)
-{
-    QPointArray a;
-
-    if(small)
-        switch(pe)
-        {
-            case QStyle::PE_ArrowUp:
-                a.setPoints(opts.vArrows ? 7 : 3,  2,0,  0,-2,  -2,0,   -2,1, -1,0, 1,0, 2,1);
-                break;
-            case QStyle::PE_ArrowDown:
-                a.setPoints(opts.vArrows ? 7 : 3,  2,0,  0,2,  -2,0,   -2,-1, -1,0, 1,0, 2,-1);
-                break;
-            case QStyle::PE_ArrowRight:
-                a.setPoints(opts.vArrows ? 7 : 3,  0,-2,  2,0,  0,2,   -1,2, 0,1, 0,-1, -1,-2);
-                break;
-            case QStyle::PE_ArrowLeft:
-                a.setPoints(opts.vArrows ? 7 : 3,  0,-2,  -2,0,  0,2,   1,2, 0,1, 0,-1, 1,-2);
-                break;
-            default:
-                return;
-        }
-    else // Large arrows...
-        switch(pe)
-        {
-            case QStyle::PE_ArrowUp:
-                a.setPoints(opts.vArrows ? 6 : 3,  3,1,  0,-2,  -3,1,    -2, 2,  0,0,  2,2);
-                break;
-            case QStyle::PE_ArrowDown:
-                a.setPoints(opts.vArrows ? 6 : 3,  3,-1,  0,2,  -3,-1,   -2,-2,  0,0, 2,-2);
-                break;
-            case QStyle::PE_ArrowRight:
-                a.setPoints(opts.vArrows ? 6 : 3,  -1,-3,  2,0,  -1,3,   -2,2, 0,0, -2,-2);
-                break;
-            case QStyle::PE_ArrowLeft:
-                a.setPoints(opts.vArrows ? 6 : 3,  1,-3,  -2,0,  1,3,    2,2, 0,0, 2,-2);
-                break;
-            default:
-                return;
-        }
-
-    if(a.isNull())
-        return;
-
-    p->save();
-    a.translate((r.x()+(r.width()>>1)),(r.y()+(r.height()>>1)));
-    p->setBrush(col);
-    p->setPen(col);
-    p->drawPolygon(a);
-    p->restore();
-}
-
 void QtCurveStyle::drawArrow(QPainter *p, const QRect &r, const QColorGroup &cg, SFlags flags,
                              PrimitiveElement pe, bool small, bool checkActive) const
 {
@@ -2243,7 +3124,7 @@ void QtCurveStyle::drawArrow(QPainter *p, const QRect &r, const QColorGroup &cg,
                                 : cg.text()
                           : cg.mid());
 
-    ::drawArrow(p, r, col, pe, opts, small);
+    ::drawArrow(p, r, p->pen()==QPen::NoPen ? col : p->pen().color(), pe, opts, small);
 }
 
 void QtCurveStyle::drawPrimitive(PrimitiveElement pe, QPainter *p, const QRect &r,
@@ -2262,8 +3143,8 @@ void QtCurveStyle::drawPrimitive(PrimitiveElement pe, QPainter *p, const QRect &
                 if(flags&Style_Down)
                     flags=((flags|Style_Down)^Style_Down)| Style_Sunken;
                 flags|=Style_Enabled;
-#if KDE_VERSION >= 0x30200
-#if KDE_VERSION >= 0x30400 && KDE_VERSION < 0x30500
+#if defined QTC_QT_ONLY || !defined KDE_VERSION || KDE_VERSION >= 0x30200
+#if defined KDE_VERSION && KDE_VERSION >= 0x30400 && KDE_VERSION < 0x30500
                 if(HOVER_KICKER==itsHover && itsHoverWidget) //  && itsHoverWidget==p->device())
                     flags|=Style_MouseOver;
 #endif
@@ -2271,15 +3152,14 @@ void QtCurveStyle::drawPrimitive(PrimitiveElement pe, QPainter *p, const QRect &
 #endif
                 drawLightBevel(p, r, cg, flags|Style_Horizontal, ROUNDED_ALL,
                                getFill(flags, use), use, true, false);
-#if KDE_VERSION >= 0x30200
+#if defined QTC_QT_ONLY || !defined KDE_VERSION || KDE_VERSION >= 0x30200
                 itsFormMode=false;
 #endif
             }
             else
             {
-                bool    isFirst(false), isLast(false), isTable(false);
-                QHeader *header(p && p->device() ? dynamic_cast<QHeader*>(p->device())
-                                                 : NULL);
+                bool    isFirst(false), isLast(false), isTable(false), isSort(false);
+                QHeader *header(p && p->device() ? dynamic_cast<QHeader*>(p->device()) : 0L);
 
                 if (header)
                 {
@@ -2294,20 +3174,31 @@ void QtCurveStyle::drawPrimitive(PrimitiveElement pe, QPainter *p, const QRect &
                            isLast=tbl->rowAt(r.y()+header->offset())==(tbl->numRows()-1);
                     }
                     else
-                        isFirst = header->mapToIndex(header->sectionAt(r.x()+header->offset())) == 0;
+                    {
+                        int index=header->mapToIndex(header->sectionAt(r.x()+header->offset()));
+                        isFirst = index == 0;
+                        isSort = header->sortIndicatorSection() == index;
+                    }
                 }
                 else if(0==flags) // Header on popup menu?
-                {
+                {   QWidget      *widget(p && p->device() ? dynamic_cast<QWidget*>(p->device()) : 0L);
+                    bool         menuTitle(widget && 0==qstrcmp(widget->className(), "KPopupTitle"));
                     const QColor *use(buttonColors(cg));
-
-                    drawLightBevel(p, r, cg, flags|Style_Horizontal, ROUNDED_ALL,
-                                   getFill(flags, use), use);
+                    QRect        r2(r);
+                    
+                    if(menuTitle)
+                        r2.addCoords(2, 2, -2, -2);
+                    drawLightBevel(p, r2, cg, flags|Style_Horizontal, ROUNDED_ALL, getFill(flags, use), use);
                     break;
                 }
 
+                const QColor *use(flags&Style_Enabled && itsSortedLvColors && isSort
+                                    ? itsSortedLvColors
+                                    : opts.lvButton ? buttonColors(cg) : backgroundColors(cg));
+                
                 flags=((flags|Style_Sunken)^Style_Sunken)| Style_Raised;
 
-                if(QTC_NO_SECT!=itsHoverSect && HOVER_HEADER==itsHover && itsHoverWidget)
+                if(NO_SECT!=itsHoverSect && HOVER_HEADER==itsHover && itsHoverWidget)
                 {
                     QHeader *hd(::qt_cast<QHeader *>(itsHoverWidget));
 
@@ -2317,70 +3208,57 @@ void QtCurveStyle::drawPrimitive(PrimitiveElement pe, QPainter *p, const QRect &
 
                 bool sunken(flags &(Style_Down | Style_On | Style_Sunken));
 
-                drawBevelGradient(getFill(flags, itsBackgroundCols), !sunken, p, r, flags&Style_Horizontal,
-                                  sunken ? SHADE_BEVEL_GRAD_SEL_LIGHT : SHADE_BEVEL_GRAD_LIGHT,
-                                  sunken ? SHADE_BEVEL_GRAD_SEL_DARK : SHADE_BEVEL_GRAD_DARK,
+                drawBevelGradient(getFill(flags, use), p, r, flags&Style_Horizontal,
                                   sunken, opts.lvAppearance, WIDGET_LISTVIEW_HEADER);
 
                 if(APPEARANCE_RAISED==opts.lvAppearance)
                 {
-                    p->setPen(itsBackgroundCols[4]);
+                    p->setPen(use[4]);
                     if(flags&Style_Horizontal)
                         p->drawLine(r.x(), r.y()+r.height()-2, r.x()+r.width()-1, r.y()+r.height()-2);
                     else
                         p->drawLine(r.x()+r.width()-2, r.y(), r.x()+r.width()-2, r.y()+r.height()-1);
                 }
 
-                const QColor *border(borderColors(flags, NULL));
-
                 if(flags&Style_Horizontal)
                 {
-                    if(border)
-                    {
-                        p->setPen(border[ORIGINAL_SHADE]);
-                        p->drawLine(r.x(), r.y()+r.height()-2, r.x()+r.width()-1,
-                                    r.y()+r.height()-2);
-                        p->setPen(border[QT_STD_BORDER]);
-                    }
-                    else
-                        p->setPen(itsBackgroundCols[QT_STD_BORDER]);
+                    p->setPen(use[STD_BORDER]);
                     p->drawLine(r.x(), r.y()+r.height()-1, r.x()+r.width()-1, r.y()+r.height()-1);
 
+                    if(itsMouseOverCols && opts.coloredMouseOver && flags&Style_MouseOver)
+                        drawHighlight(p, QRect(r.x(), r.y()+r.height()-2, r.width(), 2), cg, true, true);
+
                     if(!isFirst)
                     {
-                        p->setPen(itsBackgroundCols[QT_STD_BORDER]);
+                        p->setPen(use[STD_BORDER]);
                         p->drawLine(r.x(), r.y()+5, r.x(), r.y()+r.height()-6);
-                        p->setPen(itsBackgroundCols[0]);
+                        p->setPen(use[0]);
                         p->drawLine(r.x()+1, r.y()+5, r.x()+1, r.y()+r.height()-6);
                     }
                 }
                 else
                 {
-                    if(border)
-                    {
-                        p->setPen(border[ORIGINAL_SHADE]);
-                        p->drawLine(r.x()+r.width()-2, r.y(), r.x()+r.width()-2, r.y()+r.height()-1);
-                        p->setPen(border[QT_STD_BORDER]);
-                    }
-                    else
-                        p->setPen(itsBackgroundCols[QT_STD_BORDER]);
+                    p->setPen(use[STD_BORDER]);
                     p->drawLine(r.x()+r.width()-1, r.y(), r.x()+r.width()-1, r.y()+r.height()-1);
 
                     if(!isLast)
                     {
-                        p->setPen(itsBackgroundCols[QT_STD_BORDER]);
+                        p->setPen(use[STD_BORDER]);
                         p->drawLine(r.x()+5, r.y()+r.height()-2, r.x()+r.width()-6,
                                     r.y()+r.height()-2);
-                        p->setPen(itsBackgroundCols[0]);
+                        p->setPen(use[0]);
                         p->drawLine(r.x()+5, r.y()+r.height()-1, r.x()+r.width()-6,
                                     r.y()+r.height()-1);
                     }
+
+                    if(itsMouseOverCols && opts.coloredMouseOver && flags&Style_MouseOver)
+                        drawHighlight(p, QRect(r.x(), r.y()+r.height()-3, r.width(), 2), cg, true, true);
                 }
             }
             break;
         }
         case PE_HeaderArrow:
-            drawArrow(p, r, cg, flags, flags&Style_Up ? PE_ArrowUp : PE_ArrowDown);
+            ::drawArrow(p, r, MO_ARROW(cg.buttonText()), flags&Style_Up ? PE_ArrowUp : PE_ArrowDown, opts, false);
             break;
         case PE_ButtonBevel:
             flags|=Style_Enabled;
@@ -2388,10 +3266,11 @@ void QtCurveStyle::drawPrimitive(PrimitiveElement pe, QPainter *p, const QRect &
         case PE_ButtonTool:
         case PE_ButtonDropDown:
         {
-            const QColor *use(buttonColors(cg));
+            const QColor *use((IND_TINT==opts.defBtnIndicator || IND_SELECTED==opts.defBtnIndicator) && flags&Style_Enabled && flags&Style_ButtonDefault
+                                ? itsDefBtnCols : buttonColors(cg));
             bool         glassMod(PE_ButtonTool==pe && IS_GLASS(opts.appearance) &&
                                   IS_GLASS(opts.toolbarAppearance)),
-                         mdi(!(flags&QTC_CHECK_BUTTON) && (!(flags&QTC_STD_TOOLBUTTON)||flags&QTC_NO_ETCH_BUTTON) &&
+                         mdi(!(flags&CHECK_BUTTON) && (!(flags&STD_TOOLBUTTON)||flags&NO_ETCH_BUTTON) &&
                                PE_ButtonTool==pe && r.width()<=16 && r.height()<=16),
                          operaMdi(PE_ButtonTool==pe && APP_OPERA==itsThemedApp && r.width()==16 && r.height()==16);
 
@@ -2399,9 +3278,9 @@ void QtCurveStyle::drawPrimitive(PrimitiveElement pe, QPainter *p, const QRect &
             if(!(flags&Style_Sunken))
                 flags|=Style_Raised;
 
-            if(PE_ButtonTool==pe && flags&QTC_VERTICAL_TB_BUTTON)
+            if(PE_ButtonTool==pe && flags&VERTICAL_TB_BUTTON)
             {
-                flags-=QTC_VERTICAL_TB_BUTTON;
+                flags-=VERTICAL_TB_BUTTON;
                 if(flags&Style_Horizontal)
                     flags-=Style_Horizontal;
             }
@@ -2410,26 +3289,43 @@ void QtCurveStyle::drawPrimitive(PrimitiveElement pe, QPainter *p, const QRect &
             itsFormMode=itsFormMode || mdi || operaMdi;
 
             if(mdi || operaMdi)
+            {
                 flags|=Style_Horizontal;
+                if(!operaMdi)
+                {
+                    if(flags<0x14000000 && !(flags&(Style_Down|Style_On|Style_Sunken|Style_MouseOver)))
+                        break;
+                    if(flags<0x14000000)
+                        use=getMdiColors(cg, true);
+                }
+            }
 
-            drawLightBevel(p, r, cg, glassMod ? flags : flags|Style_Horizontal,
-#if KDE_VERSION >= 0x30200
+            drawLightBevel(/*flags&DW_CLOSE_BUTTON
+                            ? cg.background().dark(DW_BGND)
+                            : */cg.background(),
+                           p, r, cg, glassMod ? flags : flags|Style_Horizontal,
+#if defined QTC_QT_ONLY || !defined KDE_VERSION || KDE_VERSION >= 0x30200
                            (APP_KORN==itsThemedApp && itsIsTransKicker && PE_ButtonTool==pe) ||
 #endif
                            operaMdi || mdi
-                               ? ROUNDED_NONE
-                               : ROUNDED_ALL,
-                           getFill(flags, use), use, true, true,
-                           flags&QTC_NO_ETCH_BUTTON ? WIDGET_NO_ETCH_BTN : WIDGET_STD_BUTTON);
-
-            if(IND_COLORED==opts.defBtnIndicator && (flags&Style_ButtonDefault))
+                            ? ROUNDED_NONE
+                            : ROUNDED_ALL,
+                           getFill(flags, use, false,
+                                   flags&Style_ButtonDefault && flags&Style_Enabled && IND_DARKEN==opts.defBtnIndicator),
+                           use, true, true,
+                           flags&NO_ETCH_BUTTON
+                                ? WIDGET_NO_ETCH_BTN
+                                : flags&Style_ButtonDefault && flags&Style_Enabled && IND_COLORED!=opts.defBtnIndicator
+                                    ? WIDGET_DEF_BUTTON
+                                    : WIDGET_STD_BUTTON);
+
+            if(IND_COLORED==opts.defBtnIndicator && flags&Style_ButtonDefault && flags&Style_Enabled)
             {
-                const QColor *cols=itsMouseOverCols && flags&Style_MouseOver ? itsMouseOverCols : itsDefBtnCols;
-                QRegion      outer(r);
-                QRect        r2(r);
+                QRegion outer(r);
+                QRect   r2(r);
 
-                if(!itsFormMode && QTC_DO_EFFECT)
-                    r2.addCoords(0, 1, 0, -1);
+                if(!itsFormMode && DO_EFFECT)
+                    r2.addCoords(1, 1, -1, -1);
 
                 r2.addCoords(COLORED_BORDER_SIZE, COLORED_BORDER_SIZE, -COLORED_BORDER_SIZE,
                              -COLORED_BORDER_SIZE);
@@ -2439,12 +3335,12 @@ void QtCurveStyle::drawPrimitive(PrimitiveElement pe, QPainter *p, const QRect &
                 p->setClipRegion(outer.eor(inner));
 
                 drawLightBevel(p, r, cg, glassMod ? flags : flags|Style_Horizontal,
-                               flags&QTC_CHECK_BUTTON
-#if KDE_VERSION >= 0x30200
+                               flags&CHECK_BUTTON
+#if defined QTC_QT_ONLY || !defined KDE_VERSION || KDE_VERSION >= 0x30200
                                  || (APP_KORN==itsThemedApp && itsIsTransKicker && PE_ButtonTool==pe)
 #endif
                                     ? ROUNDED_NONE : ROUNDED_ALL,
-                               cols[QTC_MO_DEF_BTN], cols, true, true,
+                               itsDefBtnCols[MO_DEF_BTN], itsDefBtnCols, true, true,
                                WIDGET_DEF_BUTTON);
                 p->setClipping(false);
             }
@@ -2457,16 +3353,17 @@ void QtCurveStyle::drawPrimitive(PrimitiveElement pe, QPainter *p, const QRect &
             {
                 case IND_CORNER:
                 {
-                    const QColor *use(buttonColors(cg));
                     QPointArray  points;
                     bool         sunken(flags&Style_Down || flags&Style_Sunken);
-                    int          offset(sunken ? 4 : 3);
+                    int          offset(sunken ? 5 : 4),
+                                 etchOffset(DO_EFFECT ? 1 : 0);
+                    const QColor *cols(itsFocusCols ? itsFocusCols : itsHighlightCols);
 
-                    points.setPoints(3, r.x()+offset, r.y()+offset+1, r.x()+offset+6, r.y()+offset+1,
-                                        r.x()+offset, r.y()+offset+7);
+                    points.setPoints(3, r.x()+offset+etchOffset, r.y()+offset+etchOffset, r.x()+offset+6+etchOffset, r.y()+offset+etchOffset,
+                                        r.x()+offset+etchOffset, r.y()+offset+6+etchOffset);
 
-                    p->setBrush(use[sunken ? 0 : 4]);
-                    p->setPen(use[sunken ? 0 : 4]);
+                    p->setBrush(cols[sunken ? 0 : 4]);
+                    p->setPen(cols[sunken ? 0 : 4]);
                     p->drawPolygon(points);
                     break;
                 }
@@ -2477,13 +3374,7 @@ void QtCurveStyle::drawPrimitive(PrimitiveElement pe, QPainter *p, const QRect &
         case PE_CheckMark:
             if(flags&Style_On)
             {
-                QPixmap *pix(getPixmap(flags&Style_Enabled
-                                           ? (flags&Style_Selected && !(flags&QTC_LISTVIEW_ITEM)) ||
-                                             (flags&Style_Active && flags&QTC_MENU_ITEM)
-                                               ? cg.highlightedText()
-                                               : itsCheckRadioCol
-                                           : cg.mid(),
-                                       PIX_CHECK, 1.0));
+                QPixmap *pix(getPixmap(checkRadioCol(flags, cg), PIX_CHECK, 1.0));
 
                 p->drawPixmap(r.center().x()-(pix->width()/2), r.center().y()-(pix->height()/2),
                               *pix);
@@ -2492,11 +3383,7 @@ void QtCurveStyle::drawPrimitive(PrimitiveElement pe, QPainter *p, const QRect &
             {
                 int x(r.center().x()), y(r.center().y());
 
-                p->setPen(flags&Style_Enabled
-                              ? flags&Style_Selected && !(flags&QTC_LISTVIEW_ITEM)
-                                  ? cg.highlightedText()
-                                  : itsCheckRadioCol
-                              : cg.mid());
+                p->setPen(checkRadioCol(flags, cg));
                 p->drawLine(x-3, y, x+3, y);
                 p->drawLine(x-3, y+1, x+3, y+1);
             }
@@ -2507,13 +3394,13 @@ void QtCurveStyle::drawPrimitive(PrimitiveElement pe, QPainter *p, const QRect &
 
             if(item)
             {
-                const QColor *bc(borderColors(flags, NULL)),
+                const QColor *bc(borderColors(flags, 0L)),
                              *btn(buttonColors(cg)),
                              *use(bc ? bc : btn);
                 int          x(r.x()+1), y(r.y()+2);
 
                 p->drawPixmap(x, y, *getPixmap(use[opts.coloredMouseOver && flags&Style_MouseOver
-                                                    ? 4 : QT_BORDER(flags&Style_Enabled)],
+                                                    ? 4 : BORDER_VAL(flags&Style_Enabled)],
                                                PIX_RADIO_BORDER, 0.8));
                 ::drawArrow(p, QRect(r.x()-1, r.y()-1, r.width(), r.height()),
                             use[opts.coloredMouseOver && flags&Style_MouseOver ? 4:5], PE_ArrowDown, opts);
@@ -2547,13 +3434,13 @@ void QtCurveStyle::drawPrimitive(PrimitiveElement pe, QPainter *p, const QRect &
                     }
                 }
 
-                QRect checkRect(r.x()+1, r.y()+1, QTC_CHECK_SIZE, QTC_CHECK_SIZE);
-                drawPrimitive(PE_Indicator, p, checkRect, cg, flags|QTC_LISTVIEW_ITEM);
+                QRect checkRect(r.x()+1, r.y()+1, opts.crSize, opts.crSize);
+                drawPrimitive(PE_Indicator, p, checkRect, cg, flags|LISTVIEW_ITEM);
             }
             break;
         }
         case PE_IndicatorMask:
-            if(QTC_ROUNDED)
+            if(ROUNDED)
             {
                 p->fillRect(r, color0);
                 p->fillRect(r.x()+1, r.y(), r.width()-2, r.height(), color1);
@@ -2566,38 +3453,95 @@ void QtCurveStyle::drawPrimitive(PrimitiveElement pe, QPainter *p, const QRect &
             break;
         case PE_Indicator:
         {
-            bool   on(flags&Style_On || !(flags&Style_Off));
+            bool   doEtch(DO_EFFECT && !itsFormMode && !(flags&LISTVIEW_ITEM)),
+                   on(flags&Style_On || !(flags&Style_Off)),
+                   sunken(flags&Style_Down);
+            QRect  rect(doEtch ? QRect(r.x()+1, r.y()+1, r.width()-2, r.height()-2) : r);
             SFlags sflags(!(flags&Style_Off) ? flags|Style_On : flags);
 
-            if(!itsFormMode && sflags&Style_MouseOver && HOVER_NONE==itsHover)
-                sflags-=Style_MouseOver;
+            if(sunken || (!itsFormMode && HOVER_NONE==itsHover))
+                sflags&=~Style_MouseOver;
 
-            const QColor *bc(borderColors(sflags, NULL)),
-                         *btn(buttonColors(cg)),
+            bool  glowFocus(USE_GLOW_FOCUS(flags&Style_MouseOver) && sflags&Style_Enabled && sflags&Style_HasFocus),
+                  glow(doEtch && sflags&Style_Enabled && ((MO_GLOW==opts.coloredMouseOver && sflags&Style_MouseOver) || glowFocus));
+            const QColor *bc(glowFocus ? itsFocusCols : borderColors(sflags, 0L)),
+                         *btn(checkRadioColors(cg, sflags)),
                          *use(bc ? bc : btn),
-                         &bgnd(sflags&Style_Enabled
-                                ? sflags&Style_MouseOver
-                                    ? use[QTC_CR_MO_FILL]
-                                    : cg.base()
-                                : cg.background());
+                         &bgnd(opts.crButton
+                                ? getFill(flags, btn, true)
+                                : sflags&Style_Enabled && !sunken
+                                    ? MO_NONE==opts.coloredMouseOver && !opts.crHighlight && sflags&Style_MouseOver
+                                        ? use[CR_MO_FILL]
+                                        : cg.base()
+                                    : cg.background());
+            EWidget      wid=opts.crButton ? WIDGET_STD_BUTTON : WIDGET_TROUGH;
+            EAppearance  app=opts.crButton ? opts.appearance : APPEARANCE_INVERTED;
+            bool         drawSunken=opts.crButton ? sunken : false,
+                         lightBorder=DRAW_LIGHT_BORDER(drawSunken, wid, app),
+                         draw3dFull=!lightBorder && DRAW_3D_FULL_BORDER(drawSunken, app),
+                         draw3d=draw3dFull || (!lightBorder && DRAW_3D_BORDER(drawSunken, app)),
+                         drawLight=opts.crButton && !drawSunken && (lightBorder || draw3d),
+                         drawDark=drawLight && draw3dFull && !lightBorder;
+
+            if(IS_FLAT(opts.appearance))
+                p->fillRect(QRect(rect.x()+1, rect.y()+1, rect.width()-2, rect.height()-2), bgnd);
+            else
+                drawBevelGradient(bgnd, p, QRect(rect.x()+1, rect.y()+1, rect.width()-2, rect.height()-2), true,
+                                  drawSunken, app, wid);
+
+            if(MO_NONE!=opts.coloredMouseOver && !glow && sflags&Style_MouseOver && sflags&Style_Enabled)
+            {
+                p->setPen(use[CR_MO_FILL]);
+                p->drawRect(QRect(rect.x()+1, rect.y()+1, rect.width()-2, rect.height()-2));
+                // p->drawRect(QRect(rect.x()+2, rect.y()+2, rect.width()-4, rect.height()-4));
+            }
+            else if(!opts.crButton || drawLight)
+            {
+                p->setPen(drawLight ? btn[LIGHT_BORDER(app)] : midColor(sflags&Style_Enabled ? cg.base() : cg.background(), use[3]));
+                if(lightBorder)
+                    p->drawRect(QRect(rect.x()+1, rect.y()+1, rect.width()-2, rect.height()-2));
+                else
+                {
+                    p->drawLine(rect.x()+1, rect.y()+1, rect.x()+1, rect.y()+rect.height()-2);
+                    p->drawLine(rect.x()+1, rect.y()+1, rect.x()+rect.width()-2, rect.y()+1);
 
-            if(IS_FLAT(opts.appearance))
-                p->fillRect(QRect(r.x()+1, r.y()+1, r.width()-2, r.height()-2), bgnd);
-            else
-                drawBevelGradient(bgnd, false, p, QRect(r.x()+1, r.y()+1, r.width()-2, r.height()-2), true,
-                                    getWidgetShade(WIDGET_TROUGH, true, false, APPEARANCE_GRADIENT),
-                                    getWidgetShade(WIDGET_TROUGH, false, false, APPEARANCE_GRADIENT),
-                                    false, APPEARANCE_GRADIENT, WIDGET_TROUGH);
+                    if(drawDark)
+                    {
+                        p->setPen(btn[2]);
+                        p->drawLine(rect.x()+rect.width()-2, rect.y()+1,
+                                    rect.x()+rect.width()-2, rect.y()+rect.height()-2);
+                        p->drawLine(rect.x()+1, rect.y()+rect.height()-2,
+                                    rect.x()+rect.width()-2, rect.y()+rect.height()-2);
+                    }
+                }
+            }
 
-            p->setPen(midColor(sflags&Style_Enabled ? cg.base() : cg.background(), use[3]));
-            p->drawLine(r.x()+1, r.y()+1, r.x()+1, r.y()+r.height()-2);
-            p->drawLine(r.x()+1, r.y()+1, r.x()+r.width()-2, r.y()+1);
+            drawBorder(cg.background(), p, rect, cg, (SFlags)(sflags|Style_Horizontal|CHECK_BUTTON),
+                       ROUNDED_ALL, use, WIDGET_OTHER, !(flags&LISTVIEW_ITEM));
 
-            drawBorder(cg.background(), p, r, cg, (SFlags)(sflags|Style_Horizontal|QTC_CHECK_BUTTON),
-                       ROUNDED_ALL, use, WIDGET_OTHER, !(flags&QTC_LISTVIEW_ITEM));
+            if(doEtch)
+            {
+                QColor topCol(glow
+                                ? glowFocus ? itsFocusCols[GLOW_MO] : itsMouseOverCols[GLOW_MO]
+                                : shade(cg.background(), ETCHED_DARK)),
+                       botCol(glow
+                                ? topCol
+                                : itsBackgroundCols[1]);
+
+                p->setBrush(Qt::NoBrush);
+                p->setPen(topCol);
+                if(!opts.crButton || EFFECT_SHADOW!=opts.buttonEffect || drawSunken || glow)
+                {
+                    p->drawLine(r.x()+1, r.y(), r.x()+r.width()-2, r.y());
+                    p->drawLine(r.x(), r.y()+1, r.x(), r.y()+r.height()-2);
+                    p->setPen(botCol);
+                }
+                p->drawLine(r.x()+1, r.y()+r.height()-1, r.x()+r.width()-2, r.y()+r.height()-1);
+                p->drawLine(r.x()+r.width()-1, r.y()+1, r.x()+r.width()-1, r.y()+r.height()-2);
+            }
 
             if(on)
-                drawPrimitive(PE_CheckMark, p, r, cg, flags);
+                drawPrimitive(PE_CheckMark, p, rect, cg, flags);
             break;
         }
         case PE_CheckListExclusiveIndicator:
@@ -2606,16 +3550,13 @@ void QtCurveStyle::drawPrimitive(PrimitiveElement pe, QPainter *p, const QRect &
 
             if(item)
             {
-                const QColor *bc(borderColors(flags, NULL)),
+                const QColor *bc(borderColors(flags, 0L)),
                              *btn(buttonColors(cg)),
                              *use(bc ? bc : btn),
-                             &on(flags&Style_Enabled
-                                     ? itsCheckRadioCol
-                                    : cg.mid());
-
+                             &on(checkRadioCol(flags, cg));
                 int          x(r.x()), y(r.y()+2);
 
-                p->drawPixmap(x, y, *getPixmap(use[opts.coloredMouseOver && flags&Style_MouseOver ? 4 : QT_BORDER(flags&Style_Enabled)],
+                p->drawPixmap(x, y, *getPixmap(use[opts.coloredMouseOver && flags&Style_MouseOver ? 4 : BORDER_VAL(flags&Style_Enabled)],
                                                PIX_RADIO_BORDER, 0.8));
 
                 if(flags&Style_On)
@@ -2625,9 +3566,6 @@ void QtCurveStyle::drawPrimitive(PrimitiveElement pe, QPainter *p, const QRect &
         }
         case PE_ExclusiveIndicator:
         case PE_ExclusiveIndicatorMask:
-        {
-            int x(r.x()), y(r.y());
-
             if(PE_ExclusiveIndicatorMask==pe)
             {
                 p->fillRect(r, color0);
@@ -2637,6 +3575,11 @@ void QtCurveStyle::drawPrimitive(PrimitiveElement pe, QPainter *p, const QRect &
             }
             else
             {
+                bool  doEtch(DO_EFFECT && !itsFormMode),
+                      sunken(flags&Style_Down);
+                QRect rect(doEtch ? QRect(r.x()+1, r.y()+1, r.width()-2, r.height()-2) : r);
+                int   x(rect.x()), y(rect.y());
+
                 QPointArray clipRegion;
 
                 clipRegion.setPoints(8,  x,    y+8,     x,    y+4,     x+4, y,      x+8, y,
@@ -2644,56 +3587,114 @@ void QtCurveStyle::drawPrimitive(PrimitiveElement pe, QPainter *p, const QRect &
 
                 SFlags sflags(flags);
 
-                if(!itsFormMode && sflags&Style_MouseOver && HOVER_NONE==itsHover)
-                    sflags-=Style_MouseOver;
-
-                const QColor *bc(borderColors(sflags, NULL)),
-                             *btn(buttonColors(cg)),
+                if(sunken || (!itsFormMode && HOVER_NONE==itsHover))
+                    sflags&=~Style_MouseOver;
+
+                bool         glowFocus(USE_GLOW_FOCUS(flags&Style_MouseOver) && sflags&Style_Enabled && sflags&Style_HasFocus),
+                             glow(doEtch && sflags&Style_Enabled && ((MO_GLOW==opts.coloredMouseOver && sflags&Style_MouseOver) ||
+                                                                     glowFocus)),
+                             set(sflags&Style_On),
+                             coloredMo(MO_NONE!=opts.coloredMouseOver && !glow &&
+                                       sflags&Style_MouseOver && sflags&Style_Enabled);
+                const QColor *bc(glowFocus ? itsFocusCols : borderColors(sflags, 0L)),
+                             *btn(checkRadioColors(cg, sflags)),
                              *use(bc ? bc : btn);
-                const QColor &on(sflags&Style_Enabled
-                                     ? sflags&Style_Selected && !(flags&QTC_LISTVIEW_ITEM)
-                                         ? cg.highlightedText()
-                                         : itsCheckRadioCol
-                                     : cg.mid()),
-                             &bgnd(sflags&Style_Enabled
-                                    ? sflags&Style_MouseOver
-                                        ? use[QTC_CR_MO_FILL]
-                                        : cg.base()
-                                    : cg.background());
-                bool         set(sflags&Style_On);
+                const QColor &on(checkRadioCol(flags, cg)),
+                             &bgnd(opts.crButton
+                                    ? getFill(flags, btn, true)
+                                    : sflags&Style_Enabled && !sunken
+                                        ? MO_NONE==opts.coloredMouseOver && !opts.crHighlight && sflags&Style_MouseOver
+                                            ? use[CR_MO_FILL]
+                                            : cg.base()
+                                        : cg.background());
+                EWidget      wid=opts.crButton ? WIDGET_STD_BUTTON : WIDGET_TROUGH;
+                EAppearance  app=opts.crButton ? opts.appearance : APPEARANCE_INVERTED;
+                bool         drawSunken=opts.crButton ? sunken : EFFECT_NONE!=opts.buttonEffect,
+                             lightBorder=DRAW_LIGHT_BORDER(drawSunken, wid, app),
+                             draw3d=!lightBorder &&
+                                    (DRAW_3D_BORDER(drawSunken, app) || DRAW_3D_FULL_BORDER(drawSunken, app)),
+                             drawLight=opts.crButton && !drawSunken && (lightBorder || draw3d),
+                             doneShadow=false;
 
                 p->save();
-                p->fillRect(r, cg.background());
+
+                if(opts.crHighlight && sflags&Style_MouseOver)
+                    drawBevelGradient(shade(cg.background(), TO_FACTOR(opts.crHighlight)), p, r, true,
+                                      false, opts.selectionAppearance, WIDGET_SELECTION);
+                else
+                    p->fillRect(r, cg.background());
+
+                if(doEtch && !glow && opts.crButton && !drawSunken && EFFECT_SHADOW==opts.buttonEffect)
+                {
+                    p->setBrush(Qt::NoBrush);
+                    p->setPen(shade(cg.background(), ETCHED_DARK));
+                    p->drawArc(QRect(r.x(), r.y(), opts.crSize, opts.crSize), 225*16, 180*16);
+                    doneShadow=true;
+                }
 
                 p->setClipRegion(QRegion(clipRegion));
                 if(IS_FLAT(opts.appearance))
-                    p->fillRect(QRect(x+1, y+1, r.width()-2, r.height()-2), bgnd);
+                    p->fillRect(QRect(x+1, y+1, rect.width()-2, rect.height()-2), bgnd);
                 else
-                    drawBevelGradient(bgnd, false, p, QRect(x+1, y+1, r.width()-2, r.height()-2), true,
-                                      getWidgetShade(WIDGET_TROUGH, true, false, APPEARANCE_GRADIENT),
-                                      getWidgetShade(WIDGET_TROUGH, false, false, APPEARANCE_GRADIENT),
-                                      false, APPEARANCE_GRADIENT, WIDGET_TROUGH);
+                    drawBevelGradient(bgnd, p, QRect(x+1, y+1, rect.width()-2, rect.height()-2), true,
+                                      drawSunken, app, wid);
+
+                if(coloredMo)
+                {
+                    p->setPen(use[CR_MO_FILL]);
+                    p->drawArc(QRect(x+1, y+1, opts.crSize-2, opts.crSize-2), 0, 360*16);
+//                     p->drawArc(QRect(x+2, y+2, opts.crSize-4, opts.crSize-4), 0, 360*16);
+//                     p->drawArc(QRect(x+3, y+3, opts.crSize-6, opts.crSize-6), 0, 360*16);
+                    p->drawPoint(x+2, y+4);
+                    p->drawPoint(x+4, y+2);
+                    p->drawPoint(x+8, y+2);
+                    p->drawPoint(x+10, y+4);
+                    p->drawPoint(x+2, y+8);
+                    p->drawPoint(x+4, y+10);
+                    p->drawPoint(x+8, y+10);
+                    p->drawPoint(x+10, y+8);
+                }
 
                 p->setClipping(false);
 
-                p->drawPixmap(r.x(), r.y(),
-                              *getPixmap(use[opts.coloredMouseOver && sflags&Style_MouseOver ? 4 : QT_BORDER(flags&Style_Enabled)],
-                                         PIX_RADIO_BORDER, 0.8));
+                if(doEtch && !doneShadow)
+                {
+                    QColor topCol(glow
+                                    ? glowFocus ? itsFocusCols[GLOW_MO] : itsMouseOverCols[GLOW_MO]
+                                    : shade(cg.background(), ETCHED_DARK)),
+                           botCol(glow
+                                    ? topCol
+                                    : itsBackgroundCols[1]);
+
+                    p->setBrush(Qt::NoBrush);
+                    p->setPen(topCol);
+                    if(drawSunken || glow)
+                    {
+                        p->drawArc(QRect(r.x(), r.y(), opts.crSize, opts.crSize), 45*16, 180*16);
+                        p->setPen(botCol);
+                    }
+                    p->drawArc(QRect(r.x(), r.y(), opts.crSize, opts.crSize), 225*16, 180*16);
+                }
+
+                p->drawPixmap(rect.x(), rect.y(),
+                              *getPixmap(use[BORDER_VAL(flags&Style_Enabled)], PIX_RADIO_BORDER, 0.8));
 
                 if(QApplication::NormalColor!=QApplication::colorSpec() || itsFormMode)
                 {
-                    p->setPen(QPen(use[opts.coloredMouseOver && sflags&Style_MouseOver ? 4 : QT_BORDER(flags&Style_Enabled)], 1));
-                    p->drawArc(r, 0, 5760);
+                    p->setPen(QPen(use[opts.coloredMouseOver && sflags&Style_MouseOver ? 4 : BORDER_VAL(flags&Style_Enabled)], 1));
+                    p->drawArc(rect, 0, 5760);
                 }
 
                 if(set)
-                    p->drawPixmap(r.x(), r.y(), *getPixmap(on, PIX_RADIO_ON, 1.0));
-                if(QApplication::NormalColor==QApplication::colorSpec() || itsFormMode)
-                    p->drawPixmap(r.x(), r.y(), *getPixmap(btn[sflags&Style_MouseOver ? 3 : 4], PIX_RADIO_LIGHT));
+                    p->drawPixmap(rect.x(), rect.y(), *getPixmap(on, PIX_RADIO_ON, 1.0));
+                if(!coloredMo && (!opts.crButton || drawLight) && (QApplication::NormalColor==QApplication::colorSpec() || itsFormMode))
+                    p->drawPixmap(rect.x(), rect.y(),
+                                  *getPixmap(btn[drawLight ? LIGHT_BORDER(app)
+                                                           : (sflags&Style_MouseOver ? 3 : 4)],
+                                             lightBorder ? PIX_RADIO_INNER : PIX_RADIO_LIGHT));
                 p->restore();
             }
             break;
-        }
         case PE_DockWindowSeparator:
         {
             QRect r2(r);
@@ -2732,12 +3733,21 @@ void QtCurveStyle::drawPrimitive(PrimitiveElement pe, QPainter *p, const QRect &
                         }
                     }
                     break;
+                case LINE_1DOT:
+                    drawDot(p, r, itsBackgroundCols);
+                    break;
                 default:
                 case LINE_DOTS:
                     drawDots(p, r, !(flags & Style_Horizontal), 1, 5, itsBackgroundCols, 0, 5);
             }
             break;
         }
+        case PE_DockWindowResizeHandle:
+            if(flags&Style_Horizontal)
+                flags-=Style_Horizontal;
+            else
+                flags+=Style_Horizontal;
+            // Fall through intentional
         case PE_Splitter:
         {
             if(itsHoverWidget && itsHoverWidget == p->device())
@@ -2746,66 +3756,110 @@ void QtCurveStyle::drawPrimitive(PrimitiveElement pe, QPainter *p, const QRect &
             const QColor *use(buttonColors(cg));
             const QColor *border(borderColors(flags, use));
 
-            p->fillRect(r, QColor(flags&Style_MouseOver
-                                      ? shade(cg.background(), opts.highlightFactor)
-                                      : cg.background()));
+            QColor color(cg.background());
+
+            if(0!=opts.tabBgnd && p->device() && inStackWidget(dynamic_cast<const QWidget *>(p->device())))
+                color=shade(color, TO_FACTOR(opts.tabBgnd));
+                
+            if(flags&Style_MouseOver && opts.splitterHighlight)
+                drawBevelGradient(shade(cg.background(), TO_FACTOR(opts.splitterHighlight)), p, r, !(flags&Style_Horizontal),
+                                  false, opts.selectionAppearance, WIDGET_SELECTION);
+            else
+                p->fillRect(r, color);
+
             switch(opts.splitters)
             {
+                case LINE_NONE:
+                    break;
                 default:
+                case LINE_1DOT:
+                    drawDot(p, r, border);
+                    break;
                 case LINE_DOTS:
                     drawDots(p, r, flags&Style_Horizontal, NUM_SPLITTER_DASHES, 1, border, 0, 5);
                     break;
-                case LINE_SUNKEN:
-                    drawLines(p, r, flags&Style_Horizontal, NUM_SPLITTER_DASHES, 1, border, 0, 3);
-                    break;
                 case LINE_FLAT:
-                    drawLines(p, r, flags&Style_Horizontal, NUM_SPLITTER_DASHES, 3, border, 0, 3, 0, false);
-                    break;
+                case LINE_SUNKEN:
                 case LINE_DASHES:
-                    drawLines(p, r, flags&Style_Horizontal, NUM_SPLITTER_DASHES, 1, border, 0, 3, 0);
+                    drawLines(p, r, flags&Style_Horizontal, NUM_SPLITTER_DASHES, 3, border, 0, 3, opts.splitters);
             }
             break;
         }
-        case PE_DockWindowResizeHandle:
-        {
-            const QColor *use(backgroundColors(cg));
-
-            drawBorder(cg.background(), p, r, cg, (SFlags)(flags|Style_Horizontal),
-                       ROUNDED_ALL, use, WIDGET_OTHER, true, BORDER_RAISED, false);
-            break;
-        }
         case PE_GroupBoxFrame:
         case PE_PanelGroupBox:
-            if (!opts.framelessGroupBoxes)
+            if(FRAME_LINE==opts.groupBox)
+            {
+                QRect r2(r);
+                if(p && p->device() && dynamic_cast<QGroupBox *>(p->device()) &&
+                   (!((QGroupBox *)(p->device()))->title().isEmpty() || ((QGroupBox *)(p->device()))->isCheckable()))
+                    r2.addCoords(8, 0, -8, 0);
+                p->setPen(backgroundColors(cg)[STD_BORDER]);
+                p->drawLine(r2.x(), r2.y(), r2.x()+r2.width()-1,  r2.y());                    
+            }
+            else if (FRAME_NONE!=opts.groupBox)
                 if(APP_OPENOFFICE==itsThemedApp || data.lineWidth()>0 || data.isDefault())
                 {
                     const QColor *use(backgroundColors(cg));
 
                     drawBorder(cg.background(), p, r, cg, (SFlags)(flags|Style_Horizontal),
-                            ROUNDED_ALL, use, WIDGET_OTHER, true, BORDER_FLAT);
+                               opts.square&SQUARE_FRAME ? ROUNDED_NONE : ROUNDED_ALL, use, WIDGET_OTHER, true, BORDER_FLAT);
                 }
                 else
                     QCommonStyle::drawPrimitive(pe, p, r, cg, flags, data);
             break;
-        case PE_Panel:
         case PE_WindowFrame:
+            if(data.lineWidth()>0 || data.isDefault())
+                drawBorder(cg.background(), p, r, cg, (SFlags)(flags|Style_Horizontal),
+                            ROUNDED_NONE, backgroundColors(cg), WIDGET_MDI_WINDOW, true, BORDER_RAISED, false);
+            break;
+        case PE_Panel:
+            if((APP_KICKER==itsThemedApp && data.isDefault()) ||
+               dynamic_cast<QDockWindow *>(p->device()))
+                break;
+
             if(APP_OPENOFFICE==itsThemedApp || data.lineWidth()>0 || data.isDefault())
             {
-                const QColor *use(
-#ifdef QTC_HIGHLIGHT_SCROLVIEWS
-                                    flags&Style_HasFocus ? itsMenuitemCols :
-#endif
+                const QWidget *widget=p && p->device() ? dynamic_cast<const QWidget *>(p->device()) : 0L;
+                bool          sv(widget && ::qt_cast<const QScrollView *>(widget)),
+                              square((opts.square&SQUARE_SCROLLVIEW) &&
+                                     (sv ||
+                                      (widget && widget->parentWidget() && ::qt_cast<const QFrame *>(widget) &&
+                                       widget->parentWidget()->inherits("KateView"))));
+                const QColor *use(opts.highlightScrollViews && /*!square &&*/ flags&Style_HasFocus ? itsHighlightCols :
                                     backgroundColors(cg));
 
-                itsFormMode=itsIsTransKicker;
-                drawBorder(cg.background(), p, r, cg,
-                           (SFlags)(flags|Style_Horizontal|Style_Enabled),
-                           ROUNDED_ALL, use, WIDGET_OTHER, APP_KICKER!=itsThemedApp, itsIsTransKicker
-                                                                           ? BORDER_FLAT
-                                                                           : flags&Style_Sunken
-                                                                               ? BORDER_SUNKEN
-                                                                               : BORDER_RAISED);
-                itsFormMode=false;
+//                 if(square)
+//                 {
+//                     p->setPen(use[STD_BORDER]);
+//                     p->drawLine(r.bottomLeft(), r.topLeft());
+//                     p->drawLine(r.topLeft(), r.topRight());
+//                     if(!opts.gtkScrollViews)
+//                         p->setPen(use[STD_BORDER_BR]);
+//                     p->drawLine(r.topRight(), r.bottomRight());
+//                     p->drawLine(r.bottomRight(), r.bottomLeft());
+//                 }
+//                 else
+                {
+                    itsFormMode=itsIsTransKicker;
+                    if(sv && !opts.highlightScrollViews)
+                        flags&=~Style_HasFocus;
+                    if(sv && opts.etchEntry && ((QFrame *)widget)->lineWidth()>2)
+                    {
+                        drawEntryField(p, r, cg, flags, flags&Style_Enabled
+                                                            ? /*flags&Style_MouseOver
+                                                                ? ENTRY_MOUSE_OVER
+                                                                :*/ flags&Style_HasFocus
+                                                                    ? ENTRY_FOCUS
+                                                                    : ENTRY_NONE
+                                                            : ENTRY_NONE, square ? ROUNDED_NONE : ROUNDED_ALL, WIDGET_SCROLLVIEW);
+                    }
+                    else
+                        drawBorder(cg.background(), p, r, cg,
+                                   (SFlags)(flags|Style_Horizontal|Style_Enabled),
+                                   square ? ROUNDED_NONE : ROUNDED_ALL, use, sv ? WIDGET_SCROLLVIEW : WIDGET_OTHER, APP_KICKER!=itsThemedApp,
+                                   itsIsTransKicker ? BORDER_FLAT : (flags&Style_Sunken ? BORDER_SUNKEN : BORDER_RAISED) );
+                    itsFormMode=false;
+                }
             }
             else
                 QCommonStyle::drawPrimitive(pe, p, r, cg, flags, data);
@@ -2815,20 +3869,23 @@ void QtCurveStyle::drawPrimitive(PrimitiveElement pe, QPainter *p, const QRect &
             const QColor *use(backgroundColors(cg));
 
             drawBorder(cg.background(), p, r, cg,
-                        (SFlags)(flags|Style_Horizontal|Style_Enabled),
-                        ROUNDED_ALL, use, WIDGET_OTHER, true, BORDER_RAISED, false);
+                       (SFlags)(flags|Style_Horizontal|Style_Enabled),
+                       opts.square&SQUARE_TAB_FRAME ? ROUNDED_NONE : ROUNDED_ALL, use, WIDGET_OTHER, true,
+                       opts.borderTab ? BORDER_LIGHT : BORDER_RAISED, false);
             break;
         }
         case PE_PanelPopup:
         {
             const QColor *use(backgroundColors(cg));
 
-            p->setPen(use[QT_STD_BORDER]);
+            p->setPen(use[STD_BORDER]);
             p->setBrush(NoBrush);
             p->drawRect(r);
-            if(opts.lighterPopupMenuBgnd)
+            if(!IS_FLAT_BGND(opts.menuBgndAppearance))
+                ;
+            else if(USE_LIGHTER_POPUP_MENU)
             {
-                p->setPen(/*opts.lighterPopupMenuBgnd ? */itsLighterPopupMenuBgndCol/* : cg.background()*/);
+                p->setPen(/*USE_LIGHTER_POPUP_MENU ? */itsLighterPopupMenuBgndCol/* : cg.background()*/);
                 p->drawRect(QRect(r.x()+1, r.y()+1, r.width()-2, r.height()-2));
             }
             else
@@ -2836,7 +3893,7 @@ void QtCurveStyle::drawPrimitive(PrimitiveElement pe, QPainter *p, const QRect &
                 p->setPen(use[0]);
                 p->drawLine(r.x()+1, r.y()+1, r.x()+r.width()-2,  r.y()+1);
                 p->drawLine(r.x()+1, r.y()+1, r.x()+1,  r.y()+r.height()-2);
-                p->setPen(use[QT_FRAME_DARK_SHADOW]);
+                p->setPen(use[FRAME_DARK_SHADOW]);
                 p->drawLine(r.x()+1, r.y()+r.height()-2, r.x()+r.width()-2,  r.y()+r.height()-2);
                 p->drawLine(r.x()+r.width()-2, r.y()+1, r.x()+r.width()-2,  r.y()+r.height()-2);
             }
@@ -2849,7 +3906,7 @@ void QtCurveStyle::drawPrimitive(PrimitiveElement pe, QPainter *p, const QRect &
 
             if(data.isDefault() || data.lineWidth()>1)
             {
-                p->setPen(use[QT_STD_BORDER]);
+                p->setPen(use[STD_BORDER]);
                 p->setBrush(NoBrush);
                 p->drawRect(r);
                 qDrawShadePanel(p, r.x()+1, r.y()+1, r.width()-2, r.height()-2,
@@ -2890,8 +3947,8 @@ void QtCurveStyle::drawPrimitive(PrimitiveElement pe, QPainter *p, const QRect &
 
             if(TB_NONE!=opts.toolbarBorders)
             {
-                const QColor *use=PE_PanelMenuBar==pe && itsActive
-                                      ? itsMenubarCols
+                const QColor *use=PE_PanelMenuBar==pe
+                                      ? menuColors(cg, itsActive)
                                       : backgroundColors(cg.background());
                 bool         dark(TB_DARK==opts.toolbarBorders || TB_DARK_ALL==opts.toolbarBorders);
 
@@ -2929,7 +3986,7 @@ void QtCurveStyle::drawPrimitive(PrimitiveElement pe, QPainter *p, const QRect &
         {
             QRect        br(r),
                          ar(r);
-            const QColor *use(itsButtonCols); // buttonColors(cg));
+            const QColor *use(flags&Style_Enabled ? itsButtonCols : itsBackgroundCols); // buttonColors(cg));
 
             pe=flags&Style_Horizontal
                    ? PE_ScrollBarAddLine==pe ? PE_ArrowRight : PE_ArrowLeft
@@ -2940,7 +3997,7 @@ void QtCurveStyle::drawPrimitive(PrimitiveElement pe, QPainter *p, const QRect &
                       PE_ArrowDown==pe ? ROUNDED_BOTTOM :
                       PE_ArrowUp==pe ? ROUNDED_TOP : ROUNDED_NONE;
 
-            if(flags&Style_Down)
+            if(flags&Style_Down && !opts.flatSbarButtons)
                 ar.addCoords(1, 1, 1, 1);
 
             switch(opts.scrollbarType)
@@ -2954,13 +4011,15 @@ void QtCurveStyle::drawPrimitive(PrimitiveElement pe, QPainter *p, const QRect &
                     {
                         round=ROUNDED_NONE;
                         br.addCoords(0, 0, 1, 0);
-                        ar.addCoords(1, 0, 1, 0);
+                        if(opts.flatSbarButtons || !opts.vArrows)
+                            ar.addCoords(1, 0, 1, 0);
                     }
                     else if(PE_ArrowUp==pe && r.y()>3)
                     {
                         round=ROUNDED_NONE;
                         br.addCoords(0, 0, 0, 1);
-                        ar.addCoords(0, 1, 0, 1);
+                        if(opts.flatSbarButtons || !opts.vArrows)
+                            ar.addCoords(0, 1, 0, 1);
                     }
                     break;
                 case SCROLLBAR_NEXT:
@@ -2968,20 +4027,32 @@ void QtCurveStyle::drawPrimitive(PrimitiveElement pe, QPainter *p, const QRect &
                     {
                         round=ROUNDED_NONE;
                         br.addCoords(-1, 0, 0, 0);
-                        ar.addCoords(-1, 0, 0, -1);
+                        if(opts.flatSbarButtons || !opts.vArrows)
+                            ar.addCoords(-1, 0, 0, -1);
                     }
                     else if(PE_ArrowDown==pe)
                     {
                         round=ROUNDED_NONE;
                         br.addCoords(0, -1, 0, 0);
-                        ar.addCoords(0, -1, 0, -1);
+                        if(opts.flatSbarButtons || !opts.vArrows)
+                            ar.addCoords(0, -1, 0, -1);
                     }
                     break;
             }
-            drawLightBevel(p, br, cg, flags|Style_Raised,
-                           round, getFill(flags, use), use, true, true, WIDGET_SB_BUTTON);
+            if(!opts.flatSbarButtons)
+// No need to draw background here - drawn in CC_ScrollBar
+//             {
+//                 if(!IS_FLAT(opts.sbarBgndAppearance) && SCROLLBAR_NONE!=opts.scrollbarType)
+//                     drawBevelGradient(itsBackgroundCols[ORIGINAL_SHADE], p, r, flags&Style_Horizontal, false,
+//                                       opts.sbarBgndAppearance, WIDGET_SB_BGND);
+//                 else
+//                     p->fillRect(br, itsBackgroundCols[ORIGINAL_SHADE]);
+//             }
+//             else
+                drawLightBevel(p, br, cg, flags|Style_Raised,
+                               round, getFill(flags, use), use, true, true, WIDGET_SB_BUTTON);
 
-            drawPrimitive(pe, p, ar, cg, flags);
+            ::drawArrow(p, ar, MO_ARROW(cg.buttonText()), pe, opts, false);
             break;
         }
         case PE_ScrollBarSlider:
@@ -3013,40 +4084,51 @@ void QtCurveStyle::drawPrimitive(PrimitiveElement pe, QPainter *p, const QRect &
                     {
                         //p->fillRect(r, Qt::black);
                         drawMenuItem(p, r, cg, false, ROUNDED_ALL,
-                                     opts.lighterPopupMenuBgnd ? itsLighterPopupMenuBgndCol
-                                                               : itsBackgroundCols[ORIGINAL_SHADE], itsMenuitemCols);
+                                     USE_LIGHTER_POPUP_MENU ? itsLighterPopupMenuBgndCol
+                                                            : itsBackgroundCols[ORIGINAL_SHADE], itsHighlightCols);
                         item->paintContents(p);
                         break;
                     }
                 }
             }
 #endif
-#ifndef QTC_PLAIN_FOCUS_ONLY
-            if(opts.stdFocus)
+            if(FOCUS_STANDARD==opts.focus)
             {
-#endif
                 p->setPen(Qt::black);
                 p->drawWinFocusRect(r);
-#ifndef QTC_PLAIN_FOCUS_ONLY
             }
             else
             {
                 //Figuring out in what beast we are painting...
-                const QColor *use(backgroundColors(cg));
-                QWidget      *widget(dynamic_cast<QWidget*>(p->device()));
+                QWidget *widget(dynamic_cast<QWidget*>(p->device()));
+                bool    view(widget && (dynamic_cast<QScrollView*>(widget->parent()) ||
+                                        dynamic_cast<QListBox*>(widget->parent())));
 
-                if(r.width()<4 || r.height()<4 ||
-                   (widget && (dynamic_cast<QScrollView*>(widget->parent()) ||
-                               dynamic_cast<QListBox*>(widget->parent()))))
+                if(widget && FOCUS_GLOW==opts.focus &&
+                    (dynamic_cast<const QButton *>(widget) || dynamic_cast<const QComboBox *>(widget)))
+                    return;
+
+                if(FOCUS_LINE==opts.focus)
+                {
+                    p->setPen(view && flags&Style_Selected
+                                    ? cg.highlightedText()
+                                    : itsFocusCols[FOCUS_SHADE(flags&Style_Selected)]);
+                    p->drawLine(r.x(), r.y()+r.height()-1, r.x()+r.width()-1, r.y()+r.height()-1);
+                }                
+                else if(r.width()<4 || r.height()<4 || view)
                 {
-                    p->setPen(use[QT_FOCUS]);
-                    p->drawRect(r);
+//                     QRect r2(r);
+                    p->setPen(view ? (flags&Style_Selected ? cg.highlightedText() : cg.text())
+                                   : itsFocusCols[FOCUS_SHADE(flags&Style_Selected)]);
+//                     if(view)
+//                         r2.addCoords(0, 0, 0, -2);
+                    p->drawRect(r); // r2);
                 }
                 else
                     drawBorder(cg.background(), p, r, cg, Style_Horizontal,
-                               ROUNDED_ALL, use, WIDGET_OTHER, false, BORDER_FLAT, true, QT_FOCUS);
+                               ROUNDED_ALL, itsFocusCols, WIDGET_FOCUS, false, BORDER_FLAT, true,
+                               FOCUS_SHADE(flags&Style_Selected));
             }
-#endif
             break;
         case PE_ArrowUp:
         case PE_ArrowDown:
@@ -3061,45 +4143,32 @@ void QtCurveStyle::drawPrimitive(PrimitiveElement pe, QPainter *p, const QRect &
         {
             QRect        sr(r);
             const QColor *use(buttonColors(cg));
-            bool         reverse(QApplication::reverseLayout()),
-                         doEtch(!itsFormMode && QTC_DO_EFFECT);
-
-            if(doEtch)
-                if(PE_SpinWidgetDown==pe || PE_SpinWidgetMinus==pe)
-                    sr.addCoords(0, 0, 0, -1);
-                else
-                    sr.addCoords(0, 1, 0, 0);
-
-            drawLightBevel(p, sr, cg, flags|Style_Horizontal, PE_SpinWidgetDown==pe || PE_SpinWidgetMinus==pe
-                                                                ? reverse
-                                                                    ? ROUNDED_BOTTOMLEFT
-                                                                    : ROUNDED_BOTTOMRIGHT
-                                                                : reverse
-                                                                    ? ROUNDED_TOPLEFT
-                                                                    : ROUNDED_TOPRIGHT,
-                           getFill(flags, use), use, true, true, WIDGET_SPIN);
-
-            if(doEtch)
-            {
-                QRect er(r);
-                p->setClipRegion(er);
-                if(reverse)
-                    er.addCoords(0, 0, 2, 0);
-                else
-                    er.addCoords(-2, 0, 0, 0);
-                drawEtch(p, er, cg, PE_SpinWidgetUp==pe || PE_SpinWidgetPlus==pe,
-                         PE_SpinWidgetDown==pe || PE_SpinWidgetMinus==pe);
-                p->setClipping(false);
-            }
+            bool         reverse(QApplication::reverseLayout());
+
+            if((!opts.unifySpinBtns || flags&Style_Sunken)  && !opts.unifySpin)
+                drawLightBevel(p, sr, cg, flags|Style_Horizontal, PE_SpinWidgetDown==pe || PE_SpinWidgetMinus==pe
+                                                                    ? reverse
+                                                                        ? ROUNDED_BOTTOMLEFT
+                                                                        : ROUNDED_BOTTOMRIGHT
+                                                                    : reverse
+                                                                        ? ROUNDED_TOPLEFT
+                                                                        : ROUNDED_TOPRIGHT,
+                               getFill(flags, use), use, true, true, WIDGET_SPIN);
 
             if(PE_SpinWidgetUp==pe || PE_SpinWidgetDown==pe)
             {
                 sr.setY(sr.y()+(PE_SpinWidgetDown==pe ? -2 : 1));
 
-                if(flags&Style_Sunken)
+                if(opts.unifySpin)
+                {
+                    sr.addCoords(reverse ? 1 : -1, 0, reverse ? 1 : -1, 0);
+                    if(!opts.vArrows)
+                        sr.setY(sr.y()+(PE_SpinWidgetDown==pe ? -2 : 2));
+                }
+                else if(flags&Style_Sunken)
                     sr.addCoords(1, 1, 1, 1);
 
-                drawArrow(p, sr, cg, flags, PE_SpinWidgetUp==pe ? PE_ArrowUp : PE_ArrowDown, true);
+                ::drawArrow(p, sr, MO_ARROW(cg.buttonText()), PE_SpinWidgetUp==pe ? PE_ArrowUp : PE_ArrowDown, opts, !opts.unifySpin);
             }
             else
             {
@@ -3110,10 +4179,10 @@ void QtCurveStyle::drawPrimitive(PrimitiveElement pe, QPainter *p, const QRect &
                 if(l%2 != 0)
                     --l;
 
-                if(flags&Style_Sunken)
+                if(flags&Style_Sunken && !opts.unifySpin)
                     c+=QPoint(1, 1);
 
-                    p->setPen(cg.buttonText());
+                p->setPen(MO_ARROW(cg.buttonText()));
                 p->drawLine(c.x()-l, c.y(), c.x()+l, c.y());
                 if(PE_SpinWidgetPlus==pe)
                     p->drawLine(c.x(), c.y()-l, c.x(), c.y()+l);
@@ -3122,20 +4191,37 @@ void QtCurveStyle::drawPrimitive(PrimitiveElement pe, QPainter *p, const QRect &
         }
         case PE_PanelLineEdit:
         {
+            const QWidget *widget=p && p->device() ? dynamic_cast<const QWidget *>(p->device()) : 0L;
+            bool          scrollView=widget && ::qt_cast<const QScrollView *>(widget);
+
+//             if((opts.square&SQUARE_SCROLLVIEW) && scrollView)
+//             {
+//                 const QColor *use(backgroundColors(cg));
+// 
+//                 p->setPen(use[STD_BORDER]);
+//                 p->drawLine(r.bottomLeft(), r.topLeft());
+//                 p->drawLine(r.topLeft(), r.topRight());
+//                 if(!opts.gtkScrollViews)
+//                     p->setPen(use[STD_BORDER_BR]);
+//                 p->drawLine(r.topRight(), r.bottomRight());
+//                 p->drawLine(r.bottomRight(), r.bottomLeft());
+//                 break;
+//             }
+
             bool isReadOnly(false),
                  isEnabled(true);
             // panel is highlighted by default if it has focus, but if we have access to the
             // widget itself we can try to avoid highlighting in case it's readOnly or disabled.
-            if (p->device() && dynamic_cast<QLineEdit*>(p->device()))
+            if (!scrollView && widget && dynamic_cast<const QLineEdit*>(widget))
             {
-                QLineEdit *lineEdit(dynamic_cast<QLineEdit*>(p->device()));
+                const QLineEdit *lineEdit(dynamic_cast<const QLineEdit*>(widget));
                 isReadOnly = lineEdit->isReadOnly();
                 isEnabled = lineEdit->isEnabled();
 
                 if(flags&Style_Enabled && isReadOnly)
                     flags-=Style_Enabled;
             }
-
+                
             // HACK!!  (From Plastik)
             //
             // In this place there is no reliable way to detect if we are in khtml; the
@@ -3145,17 +4231,52 @@ void QtCurveStyle::drawPrimitive(PrimitiveElement pe, QPainter *p, const QRect &
             if (p->device() && dynamic_cast<QPixmap*>(p->device()))
                 itsFormMode=true;
 
-            drawEntryField(p, r, cg, flags, !isReadOnly && isEnabled && (flags&Style_HasFocus),
-                           ROUNDED_ALL);
+            if(scrollView && !opts.highlightScrollViews)
+                flags&=~Style_HasFocus;
+
+            QRect r2(r);
+            r2.addCoords(1, 1, -1, -1);
+//             p->fillRect(r2, flags&Style_Enabled ? cg.base() : cg.background());
+            drawEntryField(p, r, cg, flags, !isReadOnly && isEnabled
+                                                ? flags&Style_MouseOver && !scrollView
+                                                    ? ENTRY_MOUSE_OVER
+                                                    : flags&Style_HasFocus
+                                                        ? ENTRY_FOCUS
+                                                        : ENTRY_NONE
+                                                : ENTRY_NONE,
+                           (opts.square&SQUARE_SCROLLVIEW) && scrollView ? ROUNDED_NONE : ROUNDED_ALL,
+                           scrollView ? WIDGET_SCROLLVIEW : WIDGET_ENTRY);
             itsFormMode=false;
             break;
         }
         case PE_StatusBarSection:
             if(opts.drawStatusBarFrames)
-                KStyle::drawPrimitive(pe, p, r, cg, flags, data);
+                BASE_STYLE::drawPrimitive(pe, p, r, cg, flags, data);
+            break;
+        case PE_SizeGrip:
+        {
+            QPointArray a;
+
+            if (QApplication::reverseLayout())
+            {
+                a.setPoints(3,  0,0, SIZE_GRIP_SIZE,SIZE_GRIP_SIZE, 0,SIZE_GRIP_SIZE);
+                a.translate(r.x(), r.y()+(r.height()-SIZE_GRIP_SIZE));
+            }
+            else
+            {
+                a.setPoints(3,  SIZE_GRIP_SIZE,0, SIZE_GRIP_SIZE,SIZE_GRIP_SIZE, 0,SIZE_GRIP_SIZE);
+                a.translate(r.x()+(r.width()-SIZE_GRIP_SIZE), r.y()+(r.height()-SIZE_GRIP_SIZE));
+            }
+
+            p->save();
+            p->setBrush(itsBackgroundCols[2]);
+            p->setPen(itsBackgroundCols[2]);
+            p->drawPolygon(a);
+            p->restore();
             break;
+        }
         default:
-            KStyle::drawPrimitive(pe, p, r, cg, flags, data);
+            BASE_STYLE::drawPrimitive(pe, p, r, cg, flags, data);
     }
 }
 
@@ -3187,42 +4308,66 @@ void QtCurveStyle::drawKStylePrimitive(KStylePrimitive kpe, QPainter *p, const Q
     {
         case KPE_ToolBarHandle:
         {
-            QRect r2(r);
-            r2.addCoords(-1, -1, 2, 2);
-            drawMenuOrToolBarBackground(p, r2, cg, false, flags&Style_Horizontal);
+            if(APPEARANCE_STRIPED!=opts.bgndAppearance)
+            {
+                QRect r2(r);
+                r2.addCoords(-1, -1, 2, 2);
+                drawMenuOrToolBarBackground(p, r2, cg, false, flags&Style_Horizontal);
+            }
             drawHandleMarkers(p, r, flags, true, handles);
             break;
         }
         case KPE_DockWindowHandle:
         {
             int  x, y, w, h;
+            bool horizontal(flags & Style_Horizontal);
 
             r.rect(&x, &y, &w, &h);
-            if ((w <= 2) || (h <= 2))
-                p->fillRect(r, cg.background().dark(105));
+
+            if(!IS_FLAT(opts.dwtAppearance))
+                drawBevelGradient(cg.background(), p, r, horizontal, false, opts.dwtAppearance, WIDGET_DOCK_WIDGET_TITLE);
             else
+                p->fillRect(r, cg.background()); // .dark(DW_BGND));
+//             p->setPen(itsBackgroundCols[STD_BORDER]);
+//             if(horizontal)
+//                 p->drawLine(r.right(), r.top()-1, r.right(), r.bottom());
+//             else
+//                 p->drawLine(r.left(), r.bottom(), r.right(), r.bottom());
+
+            if (w > 2 && h > 2)
             {
                 QWidget  *wid(const_cast<QWidget*>(widget));
-                bool     horizontal(flags & Style_Horizontal);
+                bool     hasClose(dynamic_cast<const QDockWindow *>(wid->parentWidget()) &&
+                                  ((QDockWindow *)(wid->parentWidget()))->area() &&
+                                  ((QDockWindow *)(wid->parentWidget()))->isCloseEnabled());
                 QFont    fnt(QApplication::font(wid));
                 QPixmap  pix;
                 QString  title(wid->parentWidget()->caption());
                 QPainter p2;
 
                 fnt.setPointSize(fnt.pointSize()-2);
+                if(hasClose)
+                    if (horizontal)
+                        h-=15;
+                    else
+                        w-=15;
 
                 // Draw the item on an off-screen pixmap to preserve Xft antialiasing for
                 // vertically oriented handles.
                 if (horizontal)
-                    pix.resize(h-2, w-2);
+                    pix.resize(h, w);
                 else
-                    pix.resize(w-2, h-2);
+                    pix.resize(w, h);
 
                 p2.begin(&pix);
-                p2.fillRect(pix.rect(), cg.background().dark(105));
+                p2.fillRect(pix.rect(), cg.background()); // .dark(DW_BGND));
+                p2.setPen(itsBackgroundCols[STD_BORDER]);
+                p2.drawLine(pix.rect().left(), pix.rect().bottom(), pix.rect().right(), pix.rect().bottom());
                 p2.setPen(cg.text());
                 p2.setFont(fnt);
-                p2.drawText(pix.rect(), AlignCenter,
+                QRect textRect(pix.rect());
+                textRect.addCoords(2, -3, -2, 0);
+                p2.drawText(textRect, AlignVCenter|(QApplication::reverseLayout() ? AlignRight : AlignLeft),
                             elliditide(title, QFontMetrics(fnt), pix.width()));
                 p2.end();
 
@@ -3232,10 +4377,10 @@ void QtCurveStyle::drawKStylePrimitive(KStylePrimitive kpe, QPainter *p, const Q
 
                     m.rotate(-90.0);
                     QPixmap vpix(pix.xForm(m));
-                    bitBlt(wid, r.x()+1, r.y()+1, &vpix);
+                    bitBlt(wid, r.x(), r.y()+(hasClose ? 15 : 0), &vpix);
                 }
                 else
-                    bitBlt(wid, r.x()+1, r.y()+1, &pix);
+                    bitBlt(wid, r.x(), r.y(), &pix);
             }
             break;
         }
@@ -3246,16 +4391,16 @@ void QtCurveStyle::drawKStylePrimitive(KStylePrimitive kpe, QPainter *p, const Q
             drawSliderGroove(p, r, cg, flags, widget);
             break;
         case KPE_SliderHandle:
-            drawSliderHandle(p, r, cg, flags, widget ? ::qt_cast<QSlider *>(widget) : NULL);
+            drawSliderHandle(p, r, cg, flags, widget ? ::qt_cast<QSlider *>(widget) : 0L);
             break;
         case KPE_ListViewExpander:
         {
-            QRect ar(r.x()+((r.width()-(QTC_LV_SIZE+4))>>1), r.y()+((r.height()-(QTC_LV_SIZE+4))>>1), QTC_LV_SIZE+4,
-                     QTC_LV_SIZE+4);
+            QRect ar(r.x()+((r.width()-(LV_SIZE+4))>>1), r.y()+((r.height()-(LV_SIZE+4))>>1), LV_SIZE+4,
+                     LV_SIZE+4);
 
-            if(opts.lvLines)
+            if(LV_OLD==opts.lvLines)
             {
-                int lo(QTC_ROUNDED ? 2 : 0);
+                int lo(ROUNDED ? 2 : 0);
 
                 p->setPen(cg.mid());
                 p->drawLine(ar.x()+lo, ar.y(), (ar.x()+ar.width()-1)-lo, ar.y());
@@ -3265,7 +4410,7 @@ void QtCurveStyle::drawKStylePrimitive(KStylePrimitive kpe, QPainter *p, const Q
                 p->drawLine(ar.x()+ar.width()-1, ar.y()+lo, ar.x()+ar.width()-1,
                             (ar.y()+ar.height()-1)-lo);
 
-                if(QTC_ROUNDED)
+                if(ROUNDED)
                 {
                     p->drawPoint(ar.x()+1, ar.y()+1);
                     p->drawPoint(ar.x()+1, ar.y()+ar.height()-2);
@@ -3280,11 +4425,11 @@ void QtCurveStyle::drawKStylePrimitive(KStylePrimitive kpe, QPainter *p, const Q
                 }
             }
 
-            drawArrow(p, ar, cg, flags|Style_Enabled, flags&Style_On // Collapsed = On
+            ::drawArrow(p, ar, flags&Style_Enabled ? cg.mid() : cg.text(), flags&Style_On // Collapsed = On
                                             ?  QApplication::reverseLayout()
                                                  ? PE_ArrowLeft
                                                  : PE_ArrowRight
-                                            : PE_ArrowDown);
+                                            : PE_ArrowDown, opts);
             break;
         }
         case KPE_ListViewBranch:
@@ -3302,7 +4447,7 @@ void QtCurveStyle::drawKStylePrimitive(KStylePrimitive kpe, QPainter *p, const Q
             }
             break;
         default:
-            KStyle::drawKStylePrimitive(kpe, p, widget, r, cg, flags, opt);
+            BASE_STYLE::drawKStylePrimitive(kpe, p, widget, r, cg, flags, opt);
     }
 }
 
@@ -3319,7 +4464,8 @@ void QtCurveStyle::drawControl(ControlElement control, QPainter *p, const QWidge
         {
             const QTabBar *tb((const QTabBar *)widget);
             int           tabIndex(tb->indexOf(data.tab()->identifier())),
-                          dark(APPEARANCE_FLAT==opts.appearance ? ORIGINAL_SHADE : QT_FRAME_DARK_SHADOW);
+                          dark(APPEARANCE_FLAT==opts.appearance ? ORIGINAL_SHADE : FRAME_DARK_SHADOW),
+                          moOffset(ROUNDED_NONE==opts.round || TAB_MO_TOP!=opts.tabMouseOver ? 1 : opts.round);
             bool          cornerWidget(false),
                           bottomCornerWidget(false),
                           reverse(QApplication::reverseLayout()),
@@ -3331,8 +4477,17 @@ void QtCurveStyle::drawControl(ControlElement control, QPainter *p, const QWidge
                           active(flags & Style_Selected),
                           itsHover(itsHoverTab && itsHoverTab->isEnabled() && data.tab()==itsHoverTab &&
                                           !(flags&Style_Selected) &&
-                                          tb->currentTab()!=tabIndex);
+                                          tb->currentTab()!=tabIndex),
+                          glowMo(!active && itsHover && opts.coloredMouseOver && TAB_MO_GLOW==opts.tabMouseOver);
+            int           sizeAdjust(!active && TAB_MO_GLOW==opts.tabMouseOver ? 1 : 0);
             const QColor  &fill(getTabFill(flags&Style_Selected, itsHover, itsBackgroundCols));
+            EBorder       borderProfile(active || opts.borderInactiveTab
+                                        ? opts.borderTab
+                                            ? BORDER_LIGHT
+                                            : opts.colorSelTab && active
+                                                ? BORDER_FLAT
+                                                : BORDER_RAISED
+                                        : BORDER_FLAT);
 
             if(reverse)
             {
@@ -3356,6 +4511,17 @@ void QtCurveStyle::drawControl(ControlElement control, QPainter *p, const QWidge
             QRect tr(r);
             bool  top(QTabBar::TriangularAbove==tb->shape() || QTabBar::RoundedAbove==tb->shape());
 
+            if(active && opts.tabBgnd)
+            {
+                QRect rx(tr);
+
+                if(top)
+                    rx.addCoords(1, 6, -1, 0);
+                else
+                    rx.addCoords(1, 0, -1, -6);
+                p->fillRect(rx, shade(cg.background(), TO_FACTOR(opts.tabBgnd)));
+            }
+            
             if(!active)
                 if(top)
                     tr.addCoords(0, 2, 0, 0);
@@ -3365,60 +4531,68 @@ void QtCurveStyle::drawControl(ControlElement control, QPainter *p, const QWidge
             if(!firstTab && top && (APP_TORA==itsThemedApp || (APP_OPENOFFICE==itsThemedApp && !active)))
                 tr.addCoords(-1, 0, 0, 0);
 
-            p->setClipRect(QRect(tr.x(), top ? tr.y() : tr.y()+2, tr.width(), top ? tr.height()-2 : tr.height()),
+            QRect glowTr(tr);
+
+            if(!active && TAB_MO_GLOW==opts.tabMouseOver)
+                glowTr.addCoords(sizeAdjust, 0, -sizeAdjust, 0);
+
+            p->setClipRect(QRect(tr.x(), top ? tr.y()-sizeAdjust : tr.y()+2, tr.width(), top ? tr.height()-2+(2*sizeAdjust) : tr.height()),
                            QPainter::CoordPainter);
 
-            if(APPEARANCE_INVERTED==opts.appearance && active)
-                p->fillRect(tr, cg.background());
+
+            bool   invertedSel=APPEARANCE_INVERTED==opts.appearance && active;
+            QColor col(invertedSel ? cg.background() : fill);
+
+            if(opts.tabBgnd)
+                col=shade(col, TO_FACTOR(opts.tabBgnd));
+        
+            if(invertedSel)
+                p->fillRect(glowTr, col);
             else
-                drawBevelGradient(fill, top, p, tr, true,
-                                    top || (active && opts.colorSelTab) ? SHADE_TAB_SEL_LIGHT
-                                        : SHADE_BOTTOM_TAB_SEL_DARK,
-                                    top || (active && opts.colorSelTab) ? SHADE_TAB_SEL_DARK
-                                        : SHADE_BOTTOM_TAB_SEL_LIGHT,
-                                  active, active ? QTC_SEL_TAB_APP : QTC_NORM_TAB_APP, top ? WIDGET_TAB_TOP : WIDGET_TAB_BOT);
-
-            drawBorder(cg.background(), p, tr, cg, flags|Style_Horizontal|Style_Enabled,
-                           active
+                drawBevelGradient(col, p, glowTr, true,
+                                  active, active ? SEL_TAB_APP : NORM_TAB_APP, top ? WIDGET_TAB_TOP : WIDGET_TAB_BOT);
+
+            drawBorder(cg.background(), p, glowTr, cg, flags|Style_Horizontal|Style_Enabled,
+                           active  || TAB_MO_GLOW==opts.tabMouseOver || opts.roundAllTabs
                             ? (top ? ROUNDED_TOP : ROUNDED_BOTTOM)
                             : firstTab
                                 ? (top ? ROUNDED_TOPLEFT : ROUNDED_BOTTOMLEFT)
                                 : lastTab
                                     ? (top ? ROUNDED_TOPRIGHT : ROUNDED_BOTTOMRIGHT)
-                                    : ROUNDED_NONE, NULL, top ? WIDGET_TAB_TOP : WIDGET_TAB_BOT, true,
-                       active && !opts.colorSelTab ? BORDER_RAISED : BORDER_FLAT, false);
+                                    : ROUNDED_NONE, glowMo ? itsMouseOverCols : 0L, top ? WIDGET_TAB_TOP : WIDGET_TAB_BOT, true,
+                       borderProfile, false);
+            if(glowMo)
+            {
+                glowTr.addCoords(-1, -1, 1, 1);
+                drawGlow(p, glowTr, cg, top ? WIDGET_TAB_TOP : WIDGET_TAB_BOT);
+            }
             p->setClipping(false);
 
             if(top)
             {
                 if(active)
                 {
-                    p->setPen(itsBackgroundCols[QT_STD_BORDER]);
+                    p->setPen(itsBackgroundCols[STD_BORDER]);
                     p->drawPoint(r.x(), r.y()+r.height()-2);
                     p->drawPoint(r.x()+r.width()-1, r.y()+r.height()-2);
                     p->setPen(itsBackgroundCols[0]);
                     p->drawLine(r.x()+1, r.y()+r.height()-3, r.x()+1, r.y()+r.height()-1);
                     //p->drawPoint(r.x()+r.width()-2, r.y()+r.height()-1);
-                    p->setPen(itsBackgroundCols[QT_FRAME_DARK_SHADOW]);
+                    p->setPen(itsBackgroundCols[opts.borderTab ? 0 : FRAME_DARK_SHADOW]);
                     p->drawPoint(r.x()+r.width()-2, r.y()+r.height()-2);
                 }
                 else
                 {
                     p->setPen(itsBackgroundCols[0]);
                     p->drawLine(r.x(), r.y()+r.height()-1, r.x()+r.width()-1, r.y()+r.height()-1);
-                    p->setPen(itsBackgroundCols[QT_STD_BORDER]);
+                    p->setPen(itsBackgroundCols[STD_BORDER]);
                     p->drawLine(r.x(), r.y()+r.height()-2, r.x()+r.width()-1, r.y()+r.height()-2);
 
-                    if(opts.coloredMouseOver && itsHover)
-                    {
-                        p->setPen(itsMouseOverCols[ORIGINAL_SHADE]);
-                        p->drawLine(tr.x()+(firstTab ? opts.round : 1), tr.y()+1,
-                                    tr.x()+tr.width()-((lastTab ? opts.round : 0)+1), tr.y()+1);
-
-                        p->setPen(itsMouseOverCols[QT_STD_BORDER]);
-                        p->drawLine(tr.x()+(firstTab ? opts.round : 1), tr.y(),
-                                    tr.x()+tr.width()-((lastTab ? opts.round : 0)+1), tr.y());
-                    }
+                    if(opts.coloredMouseOver && itsHover && TAB_MO_GLOW!=opts.tabMouseOver)
+                        drawHighlight(p, QRect(tr.x()+(firstTab ? moOffset : 1),
+                                               tr.y()+(TAB_MO_TOP==opts.tabMouseOver ? 0 : tr.height()-3),
+                                               tr.width()-(firstTab || lastTab ? moOffset : 1), 2),
+                                      cg, true, !TAB_MO_TOP==opts.tabMouseOver);
                 }
 
                 if(((!reverse && firstTab) || (lastTab && reverse)) && !cornerWidget)
@@ -3426,35 +4600,38 @@ void QtCurveStyle::drawControl(ControlElement control, QPainter *p, const QWidge
                     int x(reverse ? r.x()+r.width()-1 : r.x()),
                         x2(reverse ? x-1 : x+1);
 
-                    p->setPen(itsBackgroundCols[QT_STD_BORDER]);
+                    p->setPen(itsBackgroundCols[!active && TAB_MO_GLOW==opts.tabMouseOver && opts.round>ROUND_SLIGHT && !(opts.square&SQUARE_TAB_FRAME)
+                                                    ? ORIGINAL_SHADE : STD_BORDER]);
                     p->drawLine(x, r.y()+r.height()-1, x, r.height()-2);
                     if(active)
                     {
                         p->setPen(itsBackgroundCols[reverse ? dark : 0]);
-                        p->drawLine(x2, r.y()+r.height()-1, x2, r.height()-2);
+                        p->drawLine(x2, r.y()+r.height()-1, x2, r.y()+r.height()-2);
                     }
                 }
 
                 if(active && opts.highlightTab)
                 {
-                    p->setPen(itsMenuitemCols[0]);
+                    p->setPen(itsHighlightCols[0]);
                     p->drawLine(tr.left(), tr.top()+1, tr.right(), tr.top()+1);
-                    p->setPen(midColor(fill, itsMenuitemCols[0], IS_FLAT(opts.tabAppearance) ? 1.0 : 1.2));
+                    p->setPen(midColor(fill, itsHighlightCols[0])); // , IS_FLAT(opts.activeTabAppearance) ? 1.0 : 1.2));
                     p->drawLine(tr.left(), tr.top()+2, tr.right(), tr.top()+2);
 
                     p->setClipRect(QRect(tr.x(), tr.y(), tr.width(), 3), QPainter::CoordPainter);
                     drawBorder(cg.background(), p, tr, cg, flags|Style_Horizontal|Style_Enabled,
-                               ROUNDED_ALL, itsMenuitemCols, top ? WIDGET_TAB_TOP : WIDGET_TAB_BOT,
+                               ROUNDED_ALL, itsHighlightCols, top ? WIDGET_TAB_TOP : WIDGET_TAB_BOT,
                                true, BORDER_FLAT, false, 3);
                     p->setClipping(false);
                 }
 
                 // Round top-left corner...
-                if(ROUND_FULL==opts.round && APP_TORA!=itsThemedApp && firstTab && !active && !cornerWidget && !reverse) // && !isFirstKTabCtlTab)
+                if(!(opts.square&SQUARE_TAB_FRAME) && FULLLY_ROUNDED && APP_TORA!=itsThemedApp && firstTab && !active && !cornerWidget && !reverse) // && !isFirstKTabCtlTab)
                 {
-                    p->setPen(itsBackgroundCols[QT_STD_BORDER]);
+                    p->setPen(itsBackgroundCols[STD_BORDER]);
                     p->drawPoint(r.x()+1, r.y()+r.height()-1);
-                    p->setPen(midColor(itsBackgroundCols[QT_STD_BORDER], cg.background()));
+                    p->setPen(TAB_MO_GLOW==opts.tabMouseOver
+                                ? itsBackgroundCols[STD_BORDER]
+                                : midColor(itsBackgroundCols[STD_BORDER], cg.background()));
                     p->drawPoint(r.x()+1, r.y()+r.height()-2);
                 }
             }
@@ -3462,56 +4639,57 @@ void QtCurveStyle::drawControl(ControlElement control, QPainter *p, const QWidge
             {
                 if(active)
                 {
-                    p->setPen(itsBackgroundCols[QT_STD_BORDER]);
+                    p->setPen(itsBackgroundCols[STD_BORDER]);
                     p->drawPoint(r.x(), r.y()+1);
                     p->drawPoint(r.x()+r.width()-1, r.y()+1);
                     p->setPen(itsBackgroundCols[0]);
                     p->drawLine(r.x()+1, r.y()+2, r.x()+1, r.y());
-                    p->setPen(itsBackgroundCols[QT_FRAME_DARK_SHADOW]);
+                    p->setPen(itsBackgroundCols[opts.borderTab ? 0 : FRAME_DARK_SHADOW]);
                     p->drawLine(r.x()+r.width()-2, r.y()+1, r.x()+r.width()-2, r.y());
                     p->drawPoint(r.x()+r.width()-1, r.y());
                 }
                 else
                 {
-                    p->setPen(itsBackgroundCols[dark]);
+                    p->setPen(itsBackgroundCols[opts.borderTab ? 0 : dark]);
                     p->drawLine(r.x(), r.y(), r.x()+r.width()-1, r.y());
-                    p->setPen(itsBackgroundCols[QT_STD_BORDER]);
+                    p->setPen(itsBackgroundCols[STD_BORDER]);
                     p->drawLine(r.x(), r.y()+1, r.x()+r.width()-1, r.y()+1);
-
-                    if(opts.coloredMouseOver && itsHover)
-                    {
-                        p->setPen(itsMouseOverCols[ORIGINAL_SHADE]);
-                        p->drawLine(tr.x()+(firstTab ? opts.round : 1), tr.y()+tr.height()-2,
-                                    tr.x()+tr.width()-((lastTab ? opts.round : 0)+1), tr.y()+tr.height()-2);
-
-                        p->setPen(itsMouseOverCols[3]);
-                        p->drawLine(tr.x()+(firstTab ? opts.round : 1), tr.y()+tr.height()-1,
-                                    tr.x()+tr.width()-((lastTab ? opts.round : 0)+1), tr.y()+tr.height()-1);
-                    }
+                    
+                    if(opts.coloredMouseOver && itsHover && TAB_MO_GLOW!=opts.tabMouseOver)
+                        drawHighlight(p, QRect(tr.x()+(firstTab ? moOffset : 1),
+                                               tr.y()+(TAB_MO_TOP==opts.tabMouseOver ? tr.height()-2 : 1),
+                                               tr.width()-(firstTab || lastTab ? moOffset : 1), 2),
+                                      cg, true, TAB_MO_TOP==opts.tabMouseOver);
                 }
 
+                if(TAB_MO_GLOW==opts.tabMouseOver && opts.round<=ROUND_SLIGHT && !(opts.square&SQUARE_TAB_FRAME) && !reverse && firstTab && !cornerWidget)
+                {
+                    p->setPen(itsBackgroundCols[STD_BORDER]);
+                    p->drawPoint(r.x(), r.y());
+                }
+                    
                 if(active && opts.highlightTab)
                 {
-                    p->setPen(itsMenuitemCols[0]);
+                    p->setPen(itsHighlightCols[0]);
                     p->drawLine(tr.left(), tr.bottom()-1, tr.right(), tr.bottom()-1);
-                    p->setPen(midColor(fill, itsMenuitemCols[0]));
+                    p->setPen(midColor(fill, itsHighlightCols[0]));
                     p->drawLine(tr.left(), tr.bottom()-2, tr.right(), tr.bottom()-2);
                     p->setClipRect(QRect(tr.x(), tr.y()+r.height()-3, tr.width(), 3), QPainter::CoordPainter);
                     drawBorder(cg.background(), p, tr, cg, flags|Style_Horizontal|Style_Enabled,
-                               ROUNDED_ALL, itsMenuitemCols, top ? WIDGET_TAB_TOP : WIDGET_TAB_BOT,
+                               ROUNDED_ALL, itsHighlightCols, top ? WIDGET_TAB_TOP : WIDGET_TAB_BOT,
                                true, BORDER_FLAT, false, 3);
                     p->setClipping(false);
                 }
 
-                if(ROUND_FULL==opts.round && APP_TORA!=itsThemedApp && firstTab && !bottomCornerWidget)// && !isFirstKTabCtlTab)
+                if(!(opts.square&SQUARE_TAB_FRAME) && FULLLY_ROUNDED && APP_TORA!=itsThemedApp && firstTab && !bottomCornerWidget)// && !isFirstKTabCtlTab)
                 {
-                    p->setPen(itsBackgroundCols[QT_STD_BORDER]);
+                    p->setPen(itsBackgroundCols[STD_BORDER]);
                     p->drawPoint(r.x(), reverse ? r.y()+r.width()-1 : r.y());
                     // Round bottom-left corner...
                     if(!active&& !reverse)
                     {
                         p->drawPoint(r.x()+1, r.y()-1);
-                        p->setPen(midColor(itsBackgroundCols[QT_STD_BORDER], cg.background()));
+                        p->setPen(midColor(itsBackgroundCols[STD_BORDER], cg.background()));
                         p->drawPoint(r.x()+1, r.y());
                     }
                 }
@@ -3583,7 +4761,7 @@ void QtCurveStyle::drawControl(ControlElement control, QPainter *p, const QWidge
 #endif
         case CE_PushButtonLabel:  // Taken from Highcolor and Plastik...
         {
-            int x, y, w, h;
+            int x, y, w, h, arrowOffset=DO_EFFECT ? 1 : 0;
 
             r.rect(&x, &y, &w, &h);
 
@@ -3612,10 +4790,9 @@ void QtCurveStyle::drawControl(ControlElement control, QPainter *p, const QWidge
                                       //the widget
                 else
                 {
-                    drawPrimitive(PE_ArrowDown, p,
-                                  visualRect(QRect((x + w) - (dx + margin), y, dx, h), r), cg,
-                                  flags, data);
-                    w-=dx;
+                    ::drawArrow(p, visualRect(QRect((x + w) - (dx + margin + arrowOffset), y, dx, h), r),
+                                MO_ARROW(cg.buttonText()), PE_ArrowDown, opts);
+                    w-=(dx+arrowOffset);
                 }
             }
 
@@ -3656,8 +4833,8 @@ void QtCurveStyle::drawControl(ControlElement control, QPainter *p, const QWidge
                 }
 
                 if (cornArrow) //Draw over the icon
-                    drawPrimitive(PE_ArrowDown, p, visualRect(QRect(x + w - 6, x + h - 6, 7, 7), r),
-                                  cg, flags, data);
+                    ::drawArrow(p, visualRect(QRect(x + w - (6+arrowOffset), y + h - (6+arrowOffset), 7, 7), r),
+                                MO_ARROW(cg.buttonText()), PE_ArrowDown, opts);
 
                 if(xo && iw)
                 {
@@ -3674,9 +4851,11 @@ void QtCurveStyle::drawControl(ControlElement control, QPainter *p, const QWidge
             // Make the label indicate if the button is a default button or not
             int          i,
                          j(opts.embolden && button->isDefault() ? 2 : 1);
-            const QColor &textCol(!opts.stdSidebarButtons && button->isFlat() &&
-                                  button->inherits("KMultiTabBarTab") &&
-                                  (button->isOn() || flags&Style_On)
+            bool         sidebar(!opts.stdSidebarButtons &&
+                                 ((button->isFlat() && button->inherits("KMultiTabBarTab")) ||
+                                  (button->parentWidget() && button->inherits("Ideal::Button") &&
+                                   button->parentWidget()->inherits("Ideal::ButtonBar"))));
+            const QColor &textCol(sidebar && (button->isOn() || flags&Style_On)
                                     ? QApplication::palette().active().highlightedText()
                                     : button->colorGroup().buttonText());
 
@@ -3686,7 +4865,8 @@ void QtCurveStyle::drawControl(ControlElement control, QPainter *p, const QWidge
                          button->pixmap(), button->text(), -1, &textCol);
 
             // Draw a focus rect if the button has focus
-            if (flags & Style_HasFocus)
+            if (flags&Style_HasFocus && FOCUS_GLOW!=opts.focus &&
+                !(flags&Style_MouseOver && FOCUS_FULL==opts.focus && MO_NONE!=opts.coloredMouseOver))
                drawPrimitive(PE_FocusRect, p, visualRect(subRect(SR_PushButtonFocusRect,
                              widget), widget), cg, flags);
             break;
@@ -3701,34 +4881,46 @@ void QtCurveStyle::drawControl(ControlElement control, QPainter *p, const QWidge
             int              tab(data.tabWidth()),
                              maxpmw(data.maxIconWidth()),
                              x, y, w, h;
+            bool             reverse(QApplication::reverseLayout());
 
+            maxpmw=QMAX(maxpmw, constMenuPixmapWidth);
             r.rect(&x, &y, &w, &h);
 
-            if((flags & Style_Active)&&(flags & Style_Enabled))
-                drawMenuItem(p, r, cg, false, ROUNDED_ALL,
-                             opts.lighterPopupMenuBgnd ? itsLighterPopupMenuBgndCol
-                                                       : itsBackgroundCols[ORIGINAL_SHADE], itsMenuitemCols);
-            else if(widget->erasePixmap() && !widget->erasePixmap()->isNull())
+            if(widget->erasePixmap() && !widget->erasePixmap()->isNull())
                 p->drawPixmap(x, y, *widget->erasePixmap(), x, y, w, h);
             else
-                p->fillRect(r, opts.lighterPopupMenuBgnd ? itsLighterPopupMenuBgndCol
-                                                         : itsBackgroundCols[ORIGINAL_SHADE]);
+            {
+                if(IS_FLAT_BGND(opts.menuBgndAppearance))
+                    p->fillRect(r, USE_LIGHTER_POPUP_MENU ? itsLighterPopupMenuBgndCol
+                                                          : itsBackgroundCols[ORIGINAL_SHADE]);
+
+                if(opts.menuStripe)
+                    drawBevelGradient(menuStripeCol(), p,
+                                      QRect(reverse ? r.right()-maxpmw : r.x(),
+                                            r.y(), maxpmw, r.height()), false,
+                                      false, opts.menuStripeAppearance, WIDGET_OTHER);
+            }
+
+            if((flags&Style_Active) && (flags&Style_Enabled))
+                drawMenuItem(p, r, flags, cg, false, ROUNDED_ALL,
+                             USE_LIGHTER_POPUP_MENU ? itsLighterPopupMenuBgndCol
+                                                    : itsBackgroundCols[ORIGINAL_SHADE],
+                             opts.useHighlightForMenu ? itsHighlightCols : itsBackgroundCols);
 
             if(!mi)
                 break;
 
             if(mi->isSeparator())
             {
-                y=r.y()+((r.height()/2)-1);
-                p->setPen(itsBackgroundCols[QT_STD_BORDER]);
-                p->drawLine(r.x()+4, y, r.x()+r.width()-5, y);
+                y=r.y()+(r.height()>>1);
+                p->setPen(itsBackgroundCols[MENU_SEP_SHADE]);
+                p->drawLine(r.x()+3+(!reverse && opts.menuStripe ? maxpmw : 0), y,
+                            r.x()+r.width()-4-(reverse && opts.menuStripe ? maxpmw : 0), y);
 //                 p->setPen(itsBackgroundCols[0]);
 //                 p->drawLine(r.x()+4, y+1, r.x()+r.width()-5, y+1);
                 break;
             }
 
-            maxpmw=QMAX(maxpmw, 16);
-
             QRect cr, ir, tr, sr;
             // check column
             cr.setRect(r.left(), r.top(), maxpmw, r.height());
@@ -3739,8 +4931,6 @@ void QtCurveStyle::drawControl(ControlElement control, QPainter *p, const QWidge
             // item column
             ir.setCoords(cr.right()+4, r.top(), tr.right()-4, r.bottom());
 
-            bool reverse(QApplication::reverseLayout());
-
             if(reverse)
             {
                 cr=visualRect(cr, r);
@@ -3749,7 +4939,7 @@ void QtCurveStyle::drawControl(ControlElement control, QPainter *p, const QWidge
                 ir=visualRect(ir, r);
             }
 
-            if(mi->iconSet())
+            if(mi->iconSet() && opts.menuIcons)
             {
                 // Select the correct icon from the iconset
                 QIconSet::Mode mode=flags & Style_Active
@@ -3761,7 +4951,7 @@ void QtCurveStyle::drawControl(ControlElement control, QPainter *p, const QWidge
                 // Then draw a "pressed" background behind the icon
                 if(popupmenu->isCheckable() && mi->isChecked())
                     drawLightBevel((flags & Style_Active)&&(flags & Style_Enabled)
-                                    ? itsMenuitemCols[ORIGINAL_SHADE]
+                                    ? itsHighlightCols[ORIGINAL_SHADE]
                                     : cg.background(), p, QRect(cr.x()+1, cr.y()+2, cr.width()-2, cr.height()-4),
                                    cg, flags|Style_Sunken|Style_Horizontal, ROUNDED_ALL,
                                    getFill(flags|Style_Sunken|Style_Enabled, itsBackgroundCols),
@@ -3776,47 +4966,19 @@ void QtCurveStyle::drawControl(ControlElement control, QPainter *p, const QWidge
             }
             else if(popupmenu->isCheckable() && mi->isChecked())
                 drawPrimitive(PE_CheckMark, p, cr, cg,
-                              (flags &(Style_Enabled|Style_Active))| Style_On|QTC_MENU_ITEM);
+                              (flags &(Style_Enabled|(opts.useHighlightForMenu ? Style_Active : 0)))| Style_On|MENU_ITEM);
 
-            QColor textcolor,
-                   embosscolor;
+            QColor textCol(flags&Style_Enabled
+                                ? flags&Style_Active && opts.useHighlightForMenu
+                                    ? cg.highlightedText()
+                                    : cg.foreground()
+                                : cg.mid());
 
-            if(flags&Style_Active)
-            {
-                if(!(flags & Style_Enabled))
-                {
-                    textcolor=cg.text();
-                    embosscolor=cg.light();
-                }
-                else
-                {
-                    textcolor=cg.highlightedText();
-                    embosscolor=cg.midlight().light();
-                }
-            }
-            else if(!(flags & Style_Enabled))
-            {
-                textcolor=cg.text();
-                embosscolor=cg.light();
-            }
-            else
-            {
-                textcolor=cg.foreground();
-                embosscolor=cg.light();
-            }
-            p->setPen(textcolor);
+            p->setPen(textCol);
 
             if(mi->custom())
             {
                 p->save();
-                if(!(flags & Style_Enabled))
-                {
-                    p->setPen(cg.light());
-                    mi->custom()->paint(p, cg,(flags & Style_Enabled)?(flags & Style_Active): 0,
-                                        flags & Style_Enabled, ir.x()+1, ir.y()+1, ir.width()-1,
-                                        ir.height()-1);
-                    p->setPen(textcolor);
-                }
                 mi->custom()->paint(p, cg,(flags & Style_Enabled)?(flags & Style_Active): 0,
                                     flags & Style_Enabled, ir.x(), ir.y(), ir.width(), ir.height());
                 p->restore();
@@ -3830,37 +4992,10 @@ void QtCurveStyle::drawControl(ControlElement control, QPainter *p, const QWidge
 
                 // draw accelerator/tab-text
                 if(t>=0)
-                {
-                    int alignFlag(AlignVCenter | ShowPrefix | DontClip | SingleLine);
-
-                    alignFlag |=(reverse ? AlignLeft : AlignRight);
-
-                    if(!(flags & Style_Enabled))
-                    {
-                        p->setPen(embosscolor);
-                        tr.moveBy(1, 1);
-                        p->drawText(tr, alignFlag, text.mid(t +1));
-                        tr.moveBy(-1,-1);
-                        p->setPen(textcolor);
-                    }
-
-                    p->drawText(tr, alignFlag, text.mid(t +1));
-                }
-
-                int alignFlag(AlignVCenter | ShowPrefix | DontClip | SingleLine);
-
-                alignFlag |=(reverse ? AlignRight : AlignLeft);
-
-                if(!(flags & Style_Enabled))
-                {
-                    p->setPen(embosscolor);
-                    ir.moveBy(1, 1);
-                    p->drawText(ir, alignFlag, text, t);
-                    ir.moveBy(-1,-1);
-                    p->setPen(textcolor);
-                }
+                    p->drawText(tr, AlignVCenter|ShowPrefix|DontClip|SingleLine|(reverse ? AlignLeft : AlignRight),
+                                text.mid(t+1));
 
-                p->drawText(ir, alignFlag, text, t);
+                p->drawText(ir, AlignVCenter|ShowPrefix|DontClip|SingleLine|(reverse ? AlignRight : AlignLeft), text, t);
             } 
             else if(mi->pixmap())
             {
@@ -3876,7 +5011,7 @@ void QtCurveStyle::drawControl(ControlElement control, QPainter *p, const QWidge
             }
 
             if(mi->popup())
-                drawArrow(p, sr, cg, flags, reverse ? PE_ArrowLeft : PE_ArrowRight, false, true);
+                ::drawArrow(p, sr, textCol, reverse ? PE_ArrowLeft : PE_ArrowRight, opts);
             break;
         }
         case CE_MenuBarItem:
@@ -3897,9 +5032,10 @@ void QtCurveStyle::drawControl(ControlElement control, QPainter *p, const QWidge
             }
 
             if(active)
-                drawMenuItem(p, r, cg, true, down && opts.roundMbTopOnly ? ROUNDED_TOP : ROUNDED_ALL,
+                drawMenuItem(p, r, flags, cg, true, down && opts.roundMbTopOnly ? ROUNDED_TOP : ROUNDED_ALL,
                              itsMenubarCols[ORIGINAL_SHADE],
-                             opts.colorMenubarMouseOver || down ? itsMenuitemCols : itsBackgroundCols);
+                             opts.useHighlightForMenu && (opts.colorMenubarMouseOver || down)
+                                ? itsHighlightCols : itsBackgroundCols);
 
             if(data.isDefault())
                 break;
@@ -3911,16 +5047,10 @@ void QtCurveStyle::drawControl(ControlElement control, QPainter *p, const QWidge
                      mi->pixmap(), QString::null);
             else
             {
-                const QColor *col=(opts.colorMenubarMouseOver && active) || (!opts.colorMenubarMouseOver && down)
-                                ? opts.customMenuTextColor
-                                    ? &opts.customMenuSelTextColor
-                                    : &cg.highlightedText()
-                                : itsActive
+                const QColor *col=((opts.colorMenubarMouseOver && active) || (!opts.colorMenubarMouseOver && down))
                                     ? opts.customMenuTextColor
-                                        ? &opts.customMenuNormTextColor
-                                        : SHADE_BLEND_SELECTED==opts.shadeMenubars ||
-                                            (SHADE_CUSTOM==opts.shadeMenubars &&
-                                            TOO_DARK(itsMenubarCols[ORIGINAL_SHADE]))
+                                        ? &opts.customMenuSelTextColor
+                                        : opts.useHighlightForMenu
                                             ? &cg.highlightedText()
                                             : &cg.foreground()
                                     : &cg.foreground();
@@ -3942,25 +5072,49 @@ void QtCurveStyle::drawControl(ControlElement control, QPainter *p, const QWidge
                 drawMenuOrToolBarBackground(p, r, cg, false, Qt::Horizontal==wind->orientation());
             }
             else
-                KStyle::drawControl(control, p, widget, r, cg, flags, data);
+                BASE_STYLE::drawControl(control, p, widget, r, cg, flags, data);
             break;
         case CE_ProgressBarGroove:
         {
-            if(opts.gradientPbGroove)
-                drawBevelGradient(flags & Style_Enabled ? cg.base() : cg.background(), false, p, r, true,
-                                  getWidgetShade(WIDGET_TROUGH, true, false, opts.progressAppearance),
-                                  getWidgetShade(WIDGET_TROUGH, false, false, opts.progressAppearance),
-                                  false, APPEARANCE_GRADIENT, WIDGET_TROUGH);
-            else
+            QRect  rx(r);
+            bool   doEtch(DO_EFFECT && opts.borderProgress);
+            QColor col;
+
+            if(doEtch)
+                rx.addCoords(1, 1, -1, -1);
+
+            switch(opts.progressGrooveColor)
             {
-                p->setBrush(flags & Style_Enabled ? cg.base() : cg.background());
-                p->drawRect(r);
+                default:
+                case ECOLOR_BASE:
+                    col=cg.base();
+                    break;
+                case ECOLOR_BACKGROUND:
+                    col=cg.background();
+                    break;
+                case ECOLOR_DARK:
+                    col=itsBackgroundCols[2];
             }
 
+            drawBevelGradient(col, p, rx, true,
+                                false, opts.progressGrooveAppearance, WIDGET_PBAR_TROUGH);
+
             const QColor *use(backgroundColors(cg));
 
-            drawBorder(cg.background(), p, r, cg, (SFlags)(flags|Style_Horizontal),
-                       ROUNDED_ALL, use, WIDGET_OTHER, true, BORDER_SUNKEN);
+            if(opts.borderProgress)
+                drawBorder(cg.background(), p, rx, cg, (SFlags)(flags|Style_Horizontal),
+                           (opts.square&SQUARE_PROGRESS) ? ROUNDED_NONE : ROUNDED_ALL, use, WIDGET_OTHER, true,
+                           IS_FLAT(opts.progressGrooveAppearance) && ECOLOR_DARK!=opts.progressGrooveColor ? BORDER_SUNKEN : BORDER_FLAT);
+            else
+            {
+                p->setPen(itsBackgroundCols[STD_BORDER]);
+                p->drawLine(r.topLeft(), r.topRight());
+                p->drawLine(r.bottomLeft(), r.bottomRight());
+            }
+            
+            if(doEtch)
+                drawEtch(p, r, cg, false, (opts.square&SQUARE_PROGRESS));
+
             break;
         }
         case CE_ProgressBarContents:
@@ -3970,7 +5124,7 @@ void QtCurveStyle::drawControl(ControlElement control, QPainter *p, const QWidge
 
             if(0==steps)//Busy indicator
             {
-                static const int barWidth(10);
+                static const int barWidth(PROGRESS_CHUNK_WIDTH*3.4);
 
                 int progress(pb->progress() % (2*(r.width()-barWidth)));
 
@@ -3979,10 +5133,8 @@ void QtCurveStyle::drawControl(ControlElement control, QPainter *p, const QWidge
                 else if(progress > r.width()-barWidth)
                     progress = (r.width()-barWidth)-(progress-(r.width()-barWidth));
 
-                p->fillRect(r, flags & Style_Enabled ? cg.base() : cg.background());
-                drawLightBevel(cg.background(), p, QRect(r.x()+progress, r.y(), barWidth,
-                               r.height()), cg, flags, ROUNDED_ALL, itsMenuitemCols[ORIGINAL_SHADE],
-                               itsMenuitemCols, true, true, WIDGET_PROGRESSBAR);
+                drawProgress(p, QRect(r.x()+progress, r.y(), barWidth, r.height()), cg, flags,
+                             (opts.square&SQUARE_PROGRESS) ? ROUNDED_NONE : ROUNDED_ALL, widget);
             }
             else
             {
@@ -3996,24 +5148,71 @@ void QtCurveStyle::drawControl(ControlElement control, QPainter *p, const QWidge
                     if(QApplication::reverseLayout())
                         drawProgress(p, QRect(cr.x()+(cr.width()-width), cr.y(), width,
                                      cr.height()), cg, flags,
-                                     width==cr.width() ? ROUNDED_NONE : ROUNDED_LEFT, widget);
+                                     width==cr.width() || (opts.square&SQUARE_PROGRESS) ? ROUNDED_NONE : ROUNDED_ALL, widget);
                     else
                         drawProgress(p, QRect(cr.x(), cr.y(), width, cr.height()), cg, flags,
-                                     width==cr.width() ?  ROUNDED_NONE : ROUNDED_RIGHT, widget);
+                                     width==cr.width() || (opts.square&SQUARE_PROGRESS) ?  ROUNDED_NONE : ROUNDED_ALL, widget);
                 }
             }
             break;
         }
+        case CE_ProgressBarLabel:
+        {
+            const QProgressBar* pb = (const QProgressBar*)widget;
+            QRect cr = subRect(SR_ProgressBarContents, widget);
+            double progress = pb->progress();
+            bool reverse = QApplication::reverseLayout();
+            int steps = pb->totalSteps();
+
+            if (!cr.isValid())
+                return;
+
+            if(opts.boldProgress) // This is the only change fro the KStyle code!
+            {
+                QFont font = p->font();
+                font.setBold(true);
+                p->setFont(font);
+            }
+
+            // Draw label
+            if (progress > 0 || steps == 0)
+            {
+                double pg = (steps == 0) ? 1.0 : progress / steps;
+                int width = QMIN(cr.width(), (int)(pg * cr.width()));
+                QRect crect;
+                if (reverse)
+                        crect.setRect(cr.x()+(cr.width()-width), cr.y(), cr.width(), cr.height());
+                else
+                        crect.setRect(cr.x()+width, cr.y(), cr.width(), cr.height());
+
+                p->save();
+                p->setPen(pb->isEnabled() ? (reverse ? cg.text() : cg.highlightedText()) : cg.text());
+                p->drawText(r, AlignCenter, pb->progressString());
+                p->setClipRect(crect);
+                p->setPen(reverse ? cg.highlightedText() : cg.text());
+                p->drawText(r, AlignCenter, pb->progressString());
+                p->restore();
+            }
+            else
+            {
+                p->setPen(cg.text());
+                p->drawText(r, AlignCenter, pb->progressString());
+            }
+            break;
+        }
         case CE_PushButton:
         {
             const QPushButton *button(static_cast<const QPushButton *>(widget));
-            bool              sidebar(button->isFlat() && button->inherits("KMultiTabBarTab"));
+            bool              sidebar(!opts.stdSidebarButtons &&
+                                      ((button->isFlat() && button->inherits("KMultiTabBarTab")) ||
+                                       (button->parentWidget() && button->inherits("Ideal::Button") &&
+                                        button->parentWidget()->inherits("Ideal::ButtonBar"))));
 
-            if(!opts.stdSidebarButtons && sidebar)
+            if(sidebar)
             {
                 QRect r2(r);
 
-                flags|=QTC_TOGGLE_BUTTON;
+                flags|=TOGGLE_BUTTON;
                 if(button->isOn())
                     flags|=Style_On;
 
@@ -4066,10 +5265,10 @@ void QtCurveStyle::drawControl(ControlElement control, QPainter *p, const QWidge
                     flags|=Style_ButtonDefault;
 
                 if(button->isToggleButton())
-                    flags|=QTC_TOGGLE_BUTTON;
+                    flags|=TOGGLE_BUTTON;
 
                 if(sidebar)
-                    flags|=QTC_NO_ETCH_BUTTON;
+                    flags|=NO_ETCH_BUTTON;
 
                 drawPrimitive(PE_ButtonCommand, p, r, cg, flags);
                 if (button->isDefault() && IND_CORNER==opts.defBtnIndicator)
@@ -4083,13 +5282,91 @@ void QtCurveStyle::drawControl(ControlElement control, QPainter *p, const QWidge
             drawPrimitive(PE_Indicator, p, r, cg, flags, data);
             itsFormMode = false;
             break;
+        case CE_CheckBoxLabel:
+            if(opts.crHighlight || FOCUS_GLOW==opts.focus)
+            {
+                const QCheckBox *checkbox((const QCheckBox *)widget);
+
+                if(flags&Style_MouseOver && opts.crHighlight &&
+#if QT_VERSION >= 0x030200
+                   HOVER_CHECK==itsHover && itsHoverWidget && itsHoverWidget==widget &&
+#endif
+                   !isFormWidget(widget))
+                {
+#if QT_VERSION >= 0x030200
+                    QRect   cr(checkbox->rect());
+                    QRegion r(QRect(cr.x(), cr.y(), visualRect(subRect(SR_CheckBoxFocusRect, widget),
+                                                               widget).width()+
+                                                               pixelMetric(PM_IndicatorWidth)+4,
+                                                               cr.height()));
+
+#else
+                    QRegion r(checkbox->rect());
+#endif
+                    r-=visualRect(subRect(SR_CheckBoxIndicator, widget), widget);
+                    p->setClipRegion(r);
+                    drawBevelGradient(shade(cg.background(), TO_FACTOR(opts.crHighlight)), p, checkbox->rect(), true,
+                                      false, opts.selectionAppearance, WIDGET_SELECTION);
+                    p->setClipping(false);
+                }
+                int alignment(QApplication::reverseLayout() ? AlignRight : AlignLeft);
+
+                drawItem(p, r, alignment | AlignVCenter | ShowPrefix, cg,
+                         flags & Style_Enabled, checkbox->pixmap(),  checkbox->text());
+
+                if(checkbox->hasFocus() && FOCUS_GLOW!=opts.focus)
+                    drawPrimitive(PE_FocusRect, p, visualRect(subRect(SR_CheckBoxFocusRect, widget),
+                                  widget), cg, flags);
+            }
+            else
+                BASE_STYLE::drawControl(control, p, widget, r, cg, flags, data);
+            break;
         case CE_RadioButton:
             itsFormMode=isFormWidget(widget);
             drawPrimitive(PE_ExclusiveIndicator, p, r, cg, flags, data);
             itsFormMode=false;
             break;
+        case CE_RadioButtonLabel:
+            if(opts.crHighlight || FOCUS_GLOW==opts.focus)
+            {
+                const QRadioButton *radiobutton((const QRadioButton *)widget);
+
+                if(flags&Style_MouseOver  && opts.crHighlight &&
+#if QT_VERSION >= 0x030200
+                   HOVER_RADIO==itsHover && itsHoverWidget && itsHoverWidget==widget &&
+#endif
+                   !isFormWidget(widget))
+                {
+#if QT_VERSION >= 0x030200
+                    QRect   rb(radiobutton->rect());
+                    QRegion r(QRect(rb.x(), rb.y(),
+                                    visualRect(subRect(SR_RadioButtonFocusRect, widget),
+                                               widget).width()+
+                                               pixelMetric(PM_ExclusiveIndicatorWidth)+4,
+                                               rb.height()));
+#else
+                    QRegion r(radiobutton->rect());
+#endif
+                    r-=visualRect(subRect(SR_RadioButtonIndicator, widget), widget);
+                    p->setClipRegion(r);
+                    drawBevelGradient(shade(cg.background(), TO_FACTOR(opts.crHighlight)), p, radiobutton->rect(), true,
+                                      false, opts.selectionAppearance, WIDGET_SELECTION);
+                    p->setClipping(false);
+                }
+
+                int alignment(QApplication::reverseLayout() ? AlignRight : AlignLeft);
+
+                drawItem(p, r, alignment | AlignVCenter | ShowPrefix, cg, flags & Style_Enabled,
+                         radiobutton->pixmap(), radiobutton->text());
+
+                if(radiobutton->hasFocus() && FOCUS_GLOW!=opts.focus)
+                    drawPrimitive(PE_FocusRect, p, visualRect(subRect(SR_RadioButtonFocusRect,
+                                  widget), widget), cg, flags);
+                break;
+            }
+            // Fall through intentional!
         default:
-            KStyle::drawControl(control, p, widget, r, cg, flags, data);
+            BASE_STYLE::drawControl(control, p, widget, r, cg, flags, data);
     }
 }
 
@@ -4101,7 +5378,7 @@ void QtCurveStyle::drawControlMask(ControlElement control, QPainter *p, const QW
         case CE_PushButton:
         case CE_MenuBarItem:
         {
-            int offset(r.width()<QTC_MIN_BTN_SIZE || r.height()<QTC_MIN_BTN_SIZE ? 1 : 2);
+            int offset(r.width()<MIN_ROUND_FULL_SIZE || r.height()<MIN_ROUND_FULL_SIZE ? 1 : 2);
 
             p->fillRect(r, color0);
             p->fillRect(r.x()+1, r.y()+1, r.width()-2, r.height()-2, color1);
@@ -4115,7 +5392,7 @@ void QtCurveStyle::drawControlMask(ControlElement control, QPainter *p, const QW
             break;
         }
         default:
-            KStyle::drawControlMask(control, p, widget, r, data);
+            BASE_STYLE::drawControlMask(control, p, widget, r, data);
     }
 }
 
@@ -4130,7 +5407,7 @@ void QtCurveStyle::drawComplexControlMask(ComplexControl control, QPainter *p, c
             drawControlMask(CE_PushButton, p, widget, r, data);
             break;
         default:
-            KStyle::drawComplexControlMask(control, p, widget, r, data);
+            BASE_STYLE::drawComplexControlMask(control, p, widget, r, data);
     }
 }
 
@@ -4143,35 +5420,54 @@ QRect QtCurveStyle::subRect(SubRect subrect, const QWidget *widget)const
     {
         case SR_PushButtonFocusRect:
         {
-            int dbw1(pixelMetric(PM_ButtonDefaultIndicator, widget)),
-                dbw2(dbw1*2),
-                border(3),
-                border2=(border*2);
-
-            rect.setRect(wrect.x()+border +dbw1, wrect.y()+border +dbw1,
-                         wrect.width()-border2-dbw2,
-                         wrect.height()-border2-dbw2);
-
-
-            if(!isFormWidget(widget) && QTC_DO_EFFECT)
-                rect.addCoords(0, 1, 0, -1);
+            if(FOCUS_FULL==opts.focus)
+                rect=wrect;
+            else
+            {
+                int dbw1(pixelMetric(PM_ButtonDefaultIndicator, widget)),
+                    dbw2(dbw1*2),
+                    border(3),
+                    border2=(border*2);
+
+                rect.setRect(wrect.x()+border +dbw1, wrect.y()+border +dbw1,
+                             wrect.width()-border2-dbw2,
+                             wrect.height()-border2-dbw2);
+            }
 
-            break;
+            if(!isFormWidget(widget) && DO_EFFECT)
+                rect.addCoords(1, 1, -1, -1);
+            return rect;
         }
-        case SR_ProgressBarGroove:
-            rect=QRect(widget->rect());
-            break;
+
         case SR_ProgressBarContents:
+            return opts.fillProgress
+                    ? DO_EFFECT && opts.borderProgress
+                        ? wrect
+                        : QRect(wrect.left()-1, wrect.top()-1, wrect.width()+2, wrect.height()+2)
+                    : DO_EFFECT && opts.borderProgress
+                        ? QRect(wrect.left()+2, wrect.top()+2, wrect.width()-4, wrect.height()-4)
+                        : QRect(wrect.left()+1, wrect.top()+1, wrect.width()-2, wrect.height()-2);
         case SR_ProgressBarLabel:
-            rect=QRect(wrect.left()+2, wrect.top()+2, wrect.width()-4, wrect.height()-4);
-            break;
+        case SR_ProgressBarGroove:
+            return wrect;
+        case SR_DockWindowHandleRect:
+            return wrect;
         default:
-            rect=KStyle::subRect(subrect, widget);
+            return BASE_STYLE::subRect(subrect, widget);
     }
 
     return rect;
 }
 
+// This is a hack, as QTitleBar is private!!!
+class QTitleBar : public QWidget
+{
+    public:
+
+    bool isActive() const;
+    QWidget *window() const;
+};
+
 void QtCurveStyle::drawComplexControl(ComplexControl control, QPainter *p, const QWidget *widget,
                                       const QRect &r, const QColorGroup &cg, SFlags flags,
                                       SCFlags controls, SCFlags active,
@@ -4188,7 +5484,7 @@ void QtCurveStyle::drawComplexControl(ComplexControl control, QPainter *p, const
             QRect             button(querySubControlMetrics(control, widget, SC_ToolButton, data)), 
                               menuarea(querySubControlMetrics(control, widget, SC_ToolButtonMenu,
                                        data));
-            SFlags            bflags(flags|QTC_STD_TOOLBUTTON),
+            SFlags            bflags(flags|STD_TOOLBUTTON),
                               mflags(flags);
 
             if (APP_KORN==itsThemedApp)
@@ -4198,12 +5494,23 @@ void QtCurveStyle::drawComplexControl(ComplexControl control, QPainter *p, const
             }
 
             const QToolBar *tb(widget->parentWidget()
-                                   ? ::qt_cast<const QToolBar *>(widget->parentWidget()) : NULL);
+                                   ? ::qt_cast<const QToolBar *>(widget->parentWidget()) : 0L);
             bool onControlButtons(false),
                  onExtender(!tb &&
                             widget->parentWidget() &&
                             widget->parentWidget()->inherits( "QToolBarExtensionWidget") &&
-                            ::qt_cast<QToolBar *>(widget->parentWidget()->parentWidget()));
+                            ::qt_cast<QToolBar *>(widget->parentWidget()->parentWidget())),
+                 isDWClose(!tb && !onExtender &&
+                            widget->parentWidget() &&
+                            widget->parentWidget()->inherits( "QDockWindowHandle"));
+
+            if(isDWClose)
+            {
+                p->fillRect(r, cg.background());//.dark(DW_BGND));
+                if(!(flags&Style_MouseOver) && !(active & SC_ToolButton))
+                    break;
+                bflags|=DW_CLOSE_BUTTON;
+            }
 
             if (!tb && !onExtender && widget->parentWidget() &&
                 !qstrcmp(widget->parentWidget()->name(), "qt_maxcontrols"))
@@ -4221,10 +5528,10 @@ void QtCurveStyle::drawComplexControl(ComplexControl control, QPainter *p, const
                 if(onControlButtons ||
                    (toolbutton->parentWidget() && toolbutton->parentWidget()->parentWidget() &&
                     ::qt_cast<const QMenuBar *>(toolbutton->parentWidget()->parentWidget())))
-                    bflags|=QTC_NO_ETCH_BUTTON;
+                    bflags|=NO_ETCH_BUTTON;
 
                 // If we're pressed, on, or raised...
-#if KDE_VERSION >= 0x30200
+#if defined QTC_QT_ONLY || !defined KDE_VERSION || KDE_VERSION >= 0x30200
                 if(bflags &(Style_Down | Style_On | Style_Raised) || onControlButtons)
 #else
                 if(bflags &(Style_Down | Style_On | Style_Raised | Style_MouseOver) ||
@@ -4237,12 +5544,12 @@ void QtCurveStyle::drawComplexControl(ComplexControl control, QPainter *p, const
 
                     if(tb)
                         if(Qt::Vertical==tb->orientation())
-                            bflags|=QTC_VERTICAL_TB_BUTTON;
+                            bflags|=VERTICAL_TB_BUTTON;
                         else
                             bflags|=Style_Horizontal;
 
                     if(toolbutton->isToggleButton())
-                        bflags|=QTC_TOGGLE_BUTTON;
+                        bflags|=TOGGLE_BUTTON;
 
                     drawPrimitive(PE_ButtonTool, p, button, cg, bflags, data);
                 }
@@ -4255,7 +5562,7 @@ void QtCurveStyle::drawComplexControl(ComplexControl control, QPainter *p, const
                                        toolbutton->pos());
                 else if(widget->parent())
                 {
-                    QToolBar *tb(NULL);
+                    QToolBar *tb(0L);
 
                     if(::qt_cast<const QToolBar *>(widget->parent()))
                         tb=(QToolBar*)widget->parent();
@@ -4286,13 +5593,16 @@ void QtCurveStyle::drawComplexControl(ComplexControl control, QPainter *p, const
             {
                 if(mflags &(Style_Down | Style_On | Style_Raised))
                     drawPrimitive(PE_ButtonDropDown, p, menuarea, cg, mflags, data);
-                drawPrimitive(PE_ArrowDown, p, menuarea, cg, mflags, data);
+                ::drawArrow(p, menuarea, MO_ARROW(cg.buttonText()), PE_ArrowDown, opts, true);
             }
 
             if(toolbutton->hasFocus() && !toolbutton->focusProxy())
             {
                 QRect fr(toolbutton->rect());
-                fr.addCoords(3, 3,-3,-3);
+                if(FOCUS_FULL!=opts.focus)
+                    fr.addCoords(2, 2,-2,-2);
+                if(DO_EFFECT)
+                    fr.addCoords(1, 1,-1,-1);
                 drawPrimitive(PE_FocusRect, p, fr, cg);
             }
 
@@ -4301,6 +5611,11 @@ void QtCurveStyle::drawComplexControl(ComplexControl control, QPainter *p, const
         }
         case CC_ComboBox:
         {
+            if(APP_OPENOFFICE==itsThemedApp)
+                flags&=~Style_MouseOver;
+
+            itsFormMode = isFormWidget(widget);
+
             const QComboBox *combobox((const QComboBox *)widget);
             QRect           frame(QStyle::visualRect(querySubControlMetrics(CC_ComboBox, widget,
                                                                             SC_ComboBoxFrame,
@@ -4315,9 +5630,14 @@ void QtCurveStyle::drawComplexControl(ComplexControl control, QPainter *p, const
             bool            editable(combobox->editable()),
                             sunken(combobox->listBox() ? combobox->listBox()->isShown() : false),
                             reverse(QApplication::reverseLayout());
-            SFlags          fillFlags(flags);
+            SFlags          fillFlags(flags),
+                            doEtch(!itsFormMode && DO_EFFECT && (!editable || opts.etchEntry));
 
-            itsFormMode = isFormWidget(widget);
+            if(doEtch)
+            {
+                frame.addCoords(1, 1, -1, -1);
+                field.addCoords(reverse ? -1 : 1, 1, reverse ? -1 : 0, -1);
+            }
 
             if(sunken)
             {
@@ -4326,7 +5646,7 @@ void QtCurveStyle::drawComplexControl(ComplexControl control, QPainter *p, const
                     fillFlags-=Style_MouseOver;
             }
 
-            if(editable ||(!itsFormMode && QTC_DO_EFFECT && qstrcmp(widget->name(), kdeToolbarWidget)))
+            if(editable ||(!itsFormMode && DO_EFFECT && qstrcmp(widget->name(), kdeToolbarWidget)))
             {
                 p->setPen(cg.background());
                 p->drawRect(r);
@@ -4334,41 +5654,73 @@ void QtCurveStyle::drawComplexControl(ComplexControl control, QPainter *p, const
 
             if(controls&SC_ComboBoxFrame && frame.isValid())
             {
-                if(editable && HOVER_CB_ARROW!=itsHover && fillFlags&Style_MouseOver)
-                    fillFlags-=Style_MouseOver;
+                if(editable && opts.unifyCombo)
+                {
+                    if(reverse)
+                        frame.addCoords(0, 1, 2, -1);
+                    else
+                        frame.addCoords(-1, 1, -1, -1);
+                    p->fillRect(frame, flags&Style_Enabled ? cg.base() : cg.background());
+                }
+                else
+                {
+                    const QColor *cols=itsComboBtnCols && editable  && flags&Style_Enabled ? itsComboBtnCols : use;
 
-                if(opts.coloredMouseOver && fillFlags&Style_MouseOver && editable && !sunken)
-                    frame.addCoords(reverse ? 0 : 1, 0, reverse ? 1 : 0, 0);
+                    if(editable && HOVER_CB_ARROW!=itsHover)
+                        fillFlags&=~Style_MouseOver;
 
-                drawLightBevel(p, frame, cg, fillFlags|Style_Raised|Style_Horizontal,
-                               controls&SC_ComboBoxEditField && field.isValid() && editable
-                                   ? (reverse ? ROUNDED_LEFT : ROUNDED_RIGHT) : ROUNDED_ALL,
-                               getFill(fillFlags, use), use, true, true, WIDGET_STD_BUTTON);
-            }
+    //                 if(opts.coloredMouseOver && fillFlags&Style_MouseOver && editable && !sunken)
+    //                     frame.addCoords(reverse ? 0 : 1, 0, reverse ? 1 : 0, 0);
 
-            if(controls&SC_ComboBoxArrow && arrow.isValid())
-            {
-                if(sunken)
-                    arrow.addCoords(1, 1, 1, 1);
-                drawPrimitive(PE_ArrowDown, p, arrow, cg, flags & ~Style_MouseOver);
+                    drawLightBevel(p, frame, cg, fillFlags|Style_Raised|Style_Horizontal,
+                                controls&SC_ComboBoxEditField && field.isValid() && editable
+                                    ? (reverse ? ROUNDED_LEFT : ROUNDED_RIGHT) : ROUNDED_ALL,
+                                getFill(fillFlags, cols, false, (SHADE_DARKEN==opts.comboBtn ||
+                                                                    (SHADE_NONE!=opts.comboBtn && !(flags&Style_Enabled))) &&
+                                                                    editable),
+                                cols, true, true, editable ? WIDGET_COMBO_BUTTON : WIDGET_COMBO);
+                }
             }
 
             if(controls&SC_ComboBoxEditField && field.isValid())
             {
                 if(editable)
                 {
-                    field.addCoords(-1,-1, 0, 1);
+                    if(opts.unifyCombo)
+                    {
+                        field=r;
+                        if(DO_EFFECT)
+                            field.addCoords(1, 1, -1, -1);
+                    }
+                    else
+                        field.addCoords(-1,-1, 0, 1);
                     p->setPen(flags&Style_Enabled ? cg.base() : cg.background());
                     p->drawRect(field);
-                    field.addCoords(-2,-2, 2, 2);
-                    drawEntryField(p, field, cg, fillFlags, flags&Style_Enabled &&
-                                   (flags&Style_HasFocus), reverse ? ROUNDED_RIGHT : ROUNDED_LEFT,
-                                   WIDGET_STD_BUTTON);
+                    if(!opts.unifyCombo)
+                        field.addCoords(-2,-2, 2, 2);
+                    SFlags fieldFlags(flags);
+                    if(!opts.unifyCombo && HOVER_CB_ENTRY!=itsHover)
+                        fieldFlags&=~Style_MouseOver;
+                    drawEntryField(p, field, cg, fillFlags, fieldFlags&Style_Enabled
+                                                            ? fieldFlags&Style_MouseOver
+                                                                ? ENTRY_MOUSE_OVER
+                                                                : fieldFlags&Style_HasFocus
+                                                                    ? ENTRY_FOCUS
+                                                                    : ENTRY_NONE
+                                                            : ENTRY_NONE, 
+                                   (opts.square&SQUARE_ENTRY)
+                                    ? ROUNDED_NONE
+                                    : opts.unifyCombo
+                                        ? ROUNDED_ALL
+                                        : reverse
+                                            ? ROUNDED_RIGHT
+                                            : ROUNDED_LEFT,
+                                   WIDGET_COMBO);
                 }
-                else 
+                else if(opts.comboSplitter && !(SHADE_DARKEN==opts.comboBtn || itsComboBtnCols))
                 {
                     field.addCoords(1, sunken ? 2 : 1, sunken ? 2 : 1, -1);
-                    p->setPen(use[QT_BORDER(flags&Style_Enabled)]);
+                    p->setPen(use[BORDER_VAL(flags&Style_Enabled)]);
                     p->drawLine(reverse ? field.left()-3 : field.right(), field.top(),
                                 reverse ? field.left()-3 : field.right(), field.bottom());
                     if(!sunken)
@@ -4379,49 +5731,155 @@ void QtCurveStyle::drawComplexControl(ComplexControl control, QPainter *p, const
                     }
                 }
 
-                if((flags & Style_HasFocus) && !editable)
+                if(flags&Style_HasFocus && !editable && FOCUS_GLOW!=opts.focus)
                 {
-                    QRect fr(QStyle::visualRect(subRect(SR_ComboBoxFocusRect, widget), widget));
+                    QRect fr;
 
-                    if(reverse)
-                        fr.addCoords(3, 0, 0, 0);
+                    if(FOCUS_FULL==opts.focus)
+                        fr=frame;
+                    else if(opts.comboSplitter)
+                    {
+                        fr=QStyle::visualRect(subRect(SR_ComboBoxFocusRect, widget), widget);
+                        if(reverse)
+                            fr.addCoords(3, 0, 0, 0);
+                        else
+                            fr.addCoords(0, 0, -2, 0);
+                        if(!itsFormMode && DO_EFFECT)
+                                fr.addCoords(1, 1, -1, -1);
+                    }
                     else
-                        fr.addCoords(0, 0, -2, 0);
+                    {
+                        fr=frame;
+                        fr.addCoords(3, 3, -3, -3);
+                    }
 
-                    if(!itsFormMode && QTC_DO_EFFECT)
-                        fr.addCoords(0, 1, 0, -1);
-                    drawPrimitive(PE_FocusRect, p, fr, cg, flags | Style_FocusAtBorder,
-                                  QStyleOption(cg.highlight()));
+                    if(!(flags&Style_MouseOver && FOCUS_FULL==opts.focus && MO_NONE!=opts.coloredMouseOver))
+                        drawPrimitive(PE_FocusRect, p, fr, cg, flags | Style_FocusAtBorder,
+                                      QStyleOption(cg.highlight()));
                 }
             }
 
-            p->setPen(flags & Style_Enabled ? cg.buttonText() : cg.mid());
+            if(controls&SC_ComboBoxArrow && arrow.isValid())
+            {
+                if(!editable && (SHADE_DARKEN==opts.comboBtn || itsComboBtnCols))
+                {
+                    SFlags       btnFlags(flags);
+                    QRect        btn(arrow.x(), frame.y(), arrow.width()+1, frame.height());
+                    const QColor *cols=SHADE_DARKEN==opts.comboBtn || !(flags&Style_Enabled) ? use : itsComboBtnCols;
+                    if(!sunken)
+                        btnFlags|=Style_Raised;
+                    p->save();
+                    p->setClipRect(btn);
+                    if(!opts.comboSplitter)
+                        btn.addCoords(reverse ? 0 : -2, 0, reverse ? 2 : 0, 0);
+                    if(!DO_EFFECT)
+                        btn.addCoords(0, 0, 1, 0);
+                    drawLightBevel(p, btn, cg, btnFlags|Style_Horizontal, reverse ? ROUNDED_LEFT : ROUNDED_RIGHT,
+                                   getFill(btnFlags, cols, false, SHADE_DARKEN==opts.comboBtn ||
+                                                                  (SHADE_NONE!=opts.comboBtn && !(flags&Style_Enabled))),
+                                   cols, true, true, WIDGET_COMBO);
+                    p->restore();
+                }
+
+                SFlags arrowFlags(flags);
+                if(sunken && !opts.unifyCombo)
+                    arrow.addCoords(1, 1, 1, 1);
+                if(editable && HOVER_CB_ARROW!=itsHover)
+                    arrowFlags&=~Style_MouseOver;
+                ::drawArrow(p, arrow, MO_ARROW_X(arrowFlags, cg.buttonText()), PE_ArrowDown, opts);
+            }
+
+            if(doEtch)
+            {
+                bool glowFocus(USE_GLOW_FOCUS(flags&Style_MouseOver) && flags&Style_HasFocus && flags&Style_Enabled);
+
+                if(!sunken && !editable && 
+                    ((MO_GLOW==opts.coloredMouseOver && flags&Style_MouseOver)/* ||
+                     (FOCUS_FULL==opts.focus && flags&Style_HasFocus)*/ || glowFocus))
+                    drawGlow(p, widget ? widget->rect() : r, cg, WIDGET_COMBO, glowFocus ? itsFocusCols : NULL);
+                else
+                    drawEtch(p, widget ? widget->rect() : r, cg,
+                             !editable && EFFECT_SHADOW==opts.buttonEffect && !sunken, editable && (opts.square&SQUARE_ENTRY));
+            }
+
+            p->setPen(cg.buttonText());
             itsFormMode = false;
             break;
         }
         case CC_SpinWidget:
         {
+            itsFormMode = isFormWidget(widget);
+
             const QSpinWidget *spinwidget((const QSpinWidget *)widget);
             QRect             frame(querySubControlMetrics(CC_SpinWidget, widget, SC_SpinWidgetFrame,
                                     data)),
                               up(spinwidget->upRect()),
-                              down(spinwidget->downRect());
+                              down(spinwidget->downRect()),
+                              all(frame.unite(up).unite(down));
             bool              hw(itsHoverWidget && itsHoverWidget==spinwidget),
                               reverse(QApplication::reverseLayout()),
-                              doFrame((controls&SC_SpinWidgetFrame) && frame.isValid());
+                              doFrame((controls&SC_SpinWidgetFrame) && frame.isValid()),
+                              doEtch(!itsFormMode && DO_EFFECT && opts.etchEntry);
+
+            if(doEtch)
+            {
+                down.addCoords(reverse ? 1 : 0, 0, reverse ? 0 : -1, -1);
+                up.addCoords(reverse ? 1 : 0, 1, reverse ? 0 : -1, 0);
+                frame.addCoords(reverse ? 0 : 1, 1, reverse ? -1 : 0, -1);
+            }
 
             if(flags&Style_MouseOver)
                 flags-=Style_MouseOver;
 
-            if(!reverse && doFrame)
+            if(opts.unifySpin)
+                drawEntryField(p, all, cg, flags, spinwidget && flags&Style_Enabled
+                                                            ? flags&Style_MouseOver || hw 
+                                                                ? ENTRY_MOUSE_OVER
+                                                                : flags&Style_HasFocus || spinwidget->hasFocus()
+                                                                    ? ENTRY_FOCUS
+                                                                    : ENTRY_NONE
+                                                            : ENTRY_NONE,
+                               ROUNDED_ALL, WIDGET_SPIN);
+            else
             {
-                itsFormMode = isFormWidget(widget);
-                frame.setWidth(frame.width()+1);
+                if(!reverse && doFrame)
+                {
+                    frame.setWidth(frame.width()+1);
+
+                    drawEntryField(p, frame, cg, flags,
+                                   spinwidget && flags&Style_Enabled
+                                                            ? flags&Style_MouseOver || hw
+                                                                ? ENTRY_MOUSE_OVER
+                                                                : flags&Style_HasFocus || spinwidget->hasFocus()
+                                                                    ? ENTRY_FOCUS
+                                                                    : ENTRY_NONE
+                                                            : ENTRY_NONE,
+                                   ROUNDED_LEFT, WIDGET_SPIN);
+                }
 
-                drawEntryField(p, frame, cg, flags,
-                               spinwidget ? spinwidget->hasFocus() && (flags&Style_Enabled) : false,
-                               ROUNDED_LEFT, WIDGET_SPIN);
-                itsFormMode=false;
+                if(opts.unifySpinBtns)
+                {
+                    QRect        btns=up.unite(down);
+                    const QColor *use(buttonColors(cg));
+                    int          btnFlags=flags;
+
+                    btnFlags&=~(Style_Sunken|Style_MouseOver);
+                    btnFlags|=Style_Horizontal;
+
+                    drawLightBevel(p, btns, cg, btnFlags, reverse ?  ROUNDED_LEFT : ROUNDED_RIGHT, getFill(btnFlags, use),
+                                   use, true, true, WIDGET_SPIN);
+                    if(hw && (HOVER_SW_DOWN==itsHover || HOVER_SW_UP==itsHover) && flags&Style_Enabled && !(flags&Style_Sunken))
+                    {
+                        btnFlags|=Style_MouseOver;
+                        p->save();
+                        p->setClipRect(HOVER_SW_UP==itsHover ? up : down);
+                        drawLightBevel(p, btns, cg, btnFlags, reverse ?  ROUNDED_LEFT : ROUNDED_RIGHT, getFill(btnFlags, use),
+                                       use, true, true, WIDGET_SPIN);
+                        p->restore();
+                    }
+                    p->setPen(use[BORDER_VAL(style&Style_Enabled)]);
+                    p->drawLine(down.x()+2, down.y(), down.x()+down.width()-3, down.y());
+                }
             }
 
             if((controls&SC_SpinWidgetUp) && up.isValid())
@@ -4435,8 +5893,8 @@ void QtCurveStyle::drawComplexControl(ComplexControl control, QPainter *p, const
                 if(spinwidget->buttonSymbols()==QSpinWidget::PlusMinus)
                     pe=PE_SpinWidgetPlus;
                 if(!spinwidget->isUpEnabled())
-                    upflags^=Style_Enabled;
-                drawPrimitive(pe, p, up, cg,
+                    upflags&=~Style_Enabled;
+                drawPrimitive(pe, p, up, !(upflags&Style_Enabled) && spinwidget ? spinwidget->palette().disabled() : cg,
                              upflags |((active==SC_SpinWidgetUp)
                                  ? Style_On | Style_Sunken : Style_Raised));
             }
@@ -4451,21 +5909,32 @@ void QtCurveStyle::drawComplexControl(ComplexControl control, QPainter *p, const
                 if(spinwidget->buttonSymbols()==QSpinWidget::PlusMinus)
                     pe=PE_SpinWidgetMinus;
                 if(!spinwidget->isDownEnabled())
-                    downflags^=Style_Enabled;
-                drawPrimitive(pe, p, down, cg,
+                    downflags&=~Style_Enabled;
+                drawPrimitive(pe, p, down, !(downflags&Style_Enabled) && spinwidget ? spinwidget->palette().disabled() : cg,
                               downflags |((active==SC_SpinWidgetDown)
                                   ? Style_On | Style_Sunken : Style_Raised));
             }
 
-            if(reverse && doFrame)
+            if(!opts.unifySpin)
             {
-                itsFormMode = isFormWidget(widget);
-                frame.setWidth(frame.width()+1);
-                drawEntryField(p, frame, cg, flags,
-                               spinwidget ? spinwidget->hasFocus() && (flags&Style_Enabled) : false,
-                               ROUNDED_RIGHT, WIDGET_SPIN);
-                itsFormMode=false;
+                if(reverse && doFrame)
+                {
+                    frame.setWidth(frame.width()+1);
+                    drawEntryField(p, frame, cg, flags,
+                                   spinwidget && flags&Style_Enabled
+                                                            ? flags&Style_MouseOver || hw 
+                                                                ? ENTRY_MOUSE_OVER
+                                                                : flags&Style_HasFocus || spinwidget->hasFocus()
+                                                                    ? ENTRY_FOCUS
+                                                                    : ENTRY_NONE
+                                                            : ENTRY_NONE,
+                                   ROUNDED_RIGHT, WIDGET_SPIN);
+                }
+
+                if(doEtch)
+                    drawEtch(p, spinwidget ? spinwidget->rect() : r, cg, false, (opts.square&SQUARE_ENTRY));
             }
+            itsFormMode=false;
             break;
         }
         case CC_ScrollBar:
@@ -4478,7 +5947,7 @@ void QtCurveStyle::drawComplexControl(ComplexControl control, QPainter *p, const
                              atMin(maxed || sb->value()==sb->minValue()),
                              atMax(maxed || sb->value()==sb->maxValue());
             SFlags           sflags((horiz ? Style_Horizontal : Style_Default) |
-                                    (maxed ? Style_Default : Style_Enabled));
+                                    (maxed || !widget->isEnabled() ? Style_Default : Style_Enabled));
             QRect            subline(querySubControlMetrics(control, widget, SC_ScrollBarSubLine,
                                                             data)),
                              addline(querySubControlMetrics(control, widget, SC_ScrollBarAddLine,
@@ -4526,8 +5995,8 @@ void QtCurveStyle::drawComplexControl(ComplexControl control, QPainter *p, const
                     sbRect.addCoords(0, 0, -1, 0);
                 }
 
-#ifndef QTC_SIMPLE_SCROLLBARS
-                if(sbRect.isValid() && SCROLLBAR_NONE==opts.scrollbarType)
+#ifndef SIMPLE_SCROLLBARS
+                if(sbRect.isValid() && (SCROLLBAR_NONE==opts.scrollbarType || opts.flatSbarButtons))
                     if(horiz)
                         sbRect.addCoords(0, 0, -1, 0);
                     else
@@ -4535,40 +6004,98 @@ void QtCurveStyle::drawComplexControl(ComplexControl control, QPainter *p, const
 #endif
             }
 
-            if (useThreeButtonScrollBar)
+            else if (useThreeButtonScrollBar)
                 if (horiz)
                     subline2.moveBy(-addline.width(), 0);
                 else
                     subline2.moveBy(0, -addline.height());
 
+            if(opts.flatSbarButtons)
+                switch(opts.scrollbarType)
+                {
+                    case SCROLLBAR_KDE:
+                        if(horiz)
+                            sbRect.addCoords(subline.width(), 0, -(addline.width()+subline2.width()), 0);
+                        else
+                            sbRect.addCoords(0, subline.height(), 0, -(addline.height()+subline2.height()));
+                        break;
+                    case SCROLLBAR_WINDOWS:
+                        if(horiz)
+                            sbRect.addCoords(subline.width(), 0, -(addline.width()), 0);
+                        else
+                            sbRect.addCoords(0, subline.height(), 0, -(addline.height()));
+                        break;
+                    case SCROLLBAR_NEXT:
+                        if(horiz)
+                            sbRect.addCoords(subline.width()+subline2.width(), 0, 0, 0);
+                        else
+                            sbRect.addCoords(0, subline.height()+subline2.height(), 0, 0);
+                        break;
+                    case SCROLLBAR_PLATINUM:
+                        if(horiz)
+                            sbRect.addCoords(0, 0, -(addline.width()+subline2.width()), 0);
+                        else
+                            sbRect.addCoords(0, 0, 0, -(addline.height()+subline2.height()));
+                    default:
+                        break;
+                }
+
             // Draw trough...
             const QColor *trough(itsBackgroundCols); // backgroundColors(cg));
-            bool  noButtons(SCROLLBAR_NONE==opts.scrollbarType);
+            bool  noButtons((SCROLLBAR_NONE==opts.scrollbarType || opts.flatSbarButtons) && ROUNDED);
             QRect s2(subpage), a2(addpage);
 
-#ifndef QTC_SIMPLE_SCROLLBARS
+#ifndef SIMPLE_SCROLLBARS
             if(noButtons)
             {
                 // Increase clipping to allow trough to "bleed" into slider corners...
-                a2.addCoords(-3, -3, 3, 3);
-                s2.addCoords(-3, -3, 3, 3);
+                a2.addCoords(-2, -2, 2, 2);
+                s2.addCoords(-2, -2, 2, 2);
             }
 #endif
+            p->save();
+            if(opts.flatSbarButtons)
+                p->setClipRegion(QRegion(s2)+QRegion(addpage)+QRegion(addline)+QRegion(subline)+QRegion(subline2));
+            else
+                p->setClipRegion(QRegion(s2)+QRegion(addpage));
+
+            if(opts.flatSbarButtons && SCROLLBAR_NONE!=opts.scrollbarType && ROUNDED && !IS_FLAT(opts.sbarBgndAppearance))
+                drawBevelGradient(itsBackgroundCols[ORIGINAL_SHADE], p, r, flags&Style_Horizontal, false,
+                                  opts.sbarBgndAppearance, WIDGET_SB_BGND);
+            else if(opts.thinSbarGroove && (SCROLLBAR_NONE==opts.scrollbarType || opts.flatSbarButtons) && IS_FLAT(opts.sbarBgndAppearance))
+            {
+                QColor color(cg.background());
+
+                if(0!=opts.tabBgnd && inStackWidget(widget))
+                    color=shade(color, TO_FACTOR(opts.tabBgnd));
+                p->fillRect(sbRect, cg.background());
+            }
+                
+            sflags&=~(Style_Down|Style_On|Style_Sunken);
+           
+            if(opts.thinSbarGroove && (SCROLLBAR_NONE==opts.scrollbarType || opts.flatSbarButtons))
+                if(horiz)
+                    sbRect.addCoords(0, THIN_SBAR_MOD, 0, -THIN_SBAR_MOD);
+                else
+                    sbRect.addCoords(THIN_SBAR_MOD, 0, -THIN_SBAR_MOD, 0);
 
-            p->setClipRegion(QRegion(s2)+QRegion(addpage));
-            drawLightBevel(p, sbRect, cg, sflags|Style_Down,
-#ifndef QTC_SIMPLE_SCROLLBARS
-                           SCROLLBAR_NONE==opts.scrollbarType ? ROUNDED_ALL :
+            drawLightBevel(p, sbRect, cg, sflags/*|Style_Down*/,
+#ifndef SIMPLE_SCROLLBARS
+                           !(opts.square&SQUARE_SB_SLIDER) && (SCROLLBAR_NONE==opts.scrollbarType || opts.flatSbarButtons)
+                                ? ROUNDED_ALL :
 #endif
                            ROUNDED_NONE,
-                           trough[2], trough, true, true, WIDGET_TROUGH);
-            p->setClipping(false);
+                           trough[2], trough, true, true,
+                           opts.thinSbarGroove && (SCROLLBAR_NONE==opts.scrollbarType || opts.flatSbarButtons)
+                            ? WIDGET_SLIDER_TROUGH : WIDGET_TROUGH);
+            p->restore();
 
             if(/*(controls&SC_ScrollBarSubLine) && */subline.isValid())
             {
-                bool enable=(!maxed && sb->value()!=sb->minValue());
+                bool enable=!atMin;
 
-                drawPrimitive(PE_ScrollBarSubLine, p, subline, cg, sflags |
+                drawPrimitive(PE_ScrollBarSubLine, p, subline, !enable && sb ? sb->palette().disabled() : cg,
+                                 sflags |
                                  //(enable ? Style_Enabled : Style_Default) |
                                  (enable && hw && HOVER_SB_SUB==itsHover
                                        ? Style_MouseOver : Style_Default) |
@@ -4576,16 +6103,21 @@ void QtCurveStyle::drawComplexControl(ComplexControl control, QPainter *p, const
                                    && SC_ScrollBarSubLine==active ? Style_Down : Style_Default));
 
                 if (useThreeButtonScrollBar && subline2.isValid())
-                    drawPrimitive(PE_ScrollBarSubLine, p, subline2, cg, sflags |
+                {
+                    if(IS_FLAT(opts.sbarBgndAppearance))
+                        p->fillRect(subline2, cg.background());
+                    drawPrimitive(PE_ScrollBarSubLine, p, subline2, !enable && sb ? sb->palette().disabled() : cg,
+                                  sflags |
                                  //(enable ? Style_Enabled : Style_Default) |
                                  (enable && hw && HOVER_SB_SUB2==itsHover
                                      ? Style_MouseOver : Style_Default) |
                                  (enable && (!hw || HOVER_SB_SUB2==itsHover || HOVER_NONE==itsHover)
                                    && SC_ScrollBarSubLine==active ? Style_Down : Style_Default));
+                }
             }
             if(/*(controls&SC_ScrollBarAddLine) && */addline.isValid())
             {
-                bool enable=(!maxed && sb->value()!=sb->maxValue());
+                bool enable=!atMax;
 
                 // See KHTML note at top of file
                 if(itsFormMode && SCROLLBAR_NEXT!=opts.scrollbarType)
@@ -4594,7 +6126,8 @@ void QtCurveStyle::drawComplexControl(ComplexControl control, QPainter *p, const
                     else
                         addline.addCoords(0, 0, 0, -1);
 
-                drawPrimitive(PE_ScrollBarAddLine, p, addline, cg, sflags |
+                drawPrimitive(PE_ScrollBarAddLine, p, addline, !enable && sb ? sb->palette().disabled() : cg,
+                              sflags |
                                  //(enable ? Style_Enabled : Style_Default) |
                                  (enable && hw && HOVER_SB_ADD==itsHover
                                      ? Style_MouseOver : Style_Default) |
@@ -4619,8 +6152,8 @@ void QtCurveStyle::drawComplexControl(ComplexControl control, QPainter *p, const
                 // region...
                 if(!(controls&SC_ScrollBarSlider))
                     p->setClipRegion(QRegion(s2)+QRegion(addpage));
-#ifdef QTC_INCREASE_SB_SLIDER
-                else
+#ifdef INCREASE_SB_SLIDER
+                else if(!opts.flatSbarButtons)
                 {
                     if(atMax)
                         switch(opts.scrollbarType)
@@ -4651,6 +6184,14 @@ void QtCurveStyle::drawComplexControl(ComplexControl control, QPainter *p, const
                 }
 #endif
 
+                if(opts.thinSbarGroove)
+                    if(opts.flatSbarButtons && SCROLLBAR_NONE!=opts.scrollbarType && ROUNDED)
+                        drawBevelGradient(itsBackgroundCols[ORIGINAL_SHADE], p, slider, flags&Style_Horizontal, false,
+                                          opts.sbarBgndAppearance, WIDGET_SB_BGND);
+                    else if(opts.thinSbarGroove && (SCROLLBAR_NONE==opts.scrollbarType || opts.flatSbarButtons) &&
+                            IS_FLAT(opts.sbarBgndAppearance))
+                        p->fillRect(slider, cg.background());
+
                 drawPrimitive(PE_ScrollBarSlider, p, slider, cg, sflags |
                                  //(maxed ? Style_Default : Style_Enabled) |
                                  (!maxed && hw && HOVER_SB_SLIDER==itsHover
@@ -4663,10 +6204,10 @@ void QtCurveStyle::drawComplexControl(ComplexControl control, QPainter *p, const
                     drawPrimitive(PE_FocusRect, p, QRect(slider.x()+2, slider.y()+2,
                                   slider.width()-5, slider.height()-5), cg, Style_Default);
 
-#ifndef QTC_SIMPLE_SCROLLBARS
-                if(noButtons && (!atMin || !atMax))
+#ifndef SIMPLE_SCROLLBARS
+                if(noButtons && (!atMin || !atMax) && !opts.thinSbarGroove)
                 {
-                    p->setPen(backgroundColors(cg)[QT_STD_BORDER]);
+                    p->setPen(backgroundColors(cg)[STD_BORDER]);
 
                     if(horiz)
                     {
@@ -4708,8 +6249,8 @@ void QtCurveStyle::drawComplexControl(ComplexControl control, QPainter *p, const
                     }
                 }
 #endif
-                if(!(controls&SC_ScrollBarSlider))
-                    p->setClipping(false);
+//                 if(!(controls&SC_ScrollBarSlider))
+//                     p->setClipping(false);
             }
             break;
         }
@@ -4741,12 +6282,12 @@ void QtCurveStyle::drawComplexControl(ComplexControl control, QPainter *p, const
             if((controls & SC_SliderGroove)&& groove.isValid())
                 drawSliderGroove(paint, groove, cg, flags, widget);
             if((controls & SC_SliderHandle)&& handle.isValid())
-                drawSliderHandle(paint, handle, cg, flags, widget ? ::qt_cast<QSlider *>(widget) : NULL,  tb);
+                drawSliderHandle(paint, handle, cg, flags, widget ? ::qt_cast<QSlider *>(widget) : 0L,  tb);
             if(controls & SC_SliderTickmarks)
                 QCommonStyle::drawComplexControl(control, paint, widget, r, cg, flags, SC_SliderTickmarks,
                                                  active, data);
 
-            if(flags & Style_HasFocus)
+            if(flags&Style_HasFocus && FOCUS_GLOW!=opts.focus)
                 drawPrimitive(PE_FocusRect, paint, groove, cg);
 
             if(!tb)
@@ -4756,8 +6297,139 @@ void QtCurveStyle::drawComplexControl(ComplexControl control, QPainter *p, const
             }
             break;
         }
+        case CC_TitleBar:
+        {
+            const int       buttonMargin(3);
+            const QTitleBar *tb((const QTitleBar *)widget);
+            bool            isActive((tb->isActive() && widget->isActiveWindow()) ||
+                                   (!tb->window() && widget->topLevelWidget()->isActiveWindow()));
+            QColorGroup     cgroup(isActive
+                                        ? widget->palette().active()
+                                        : widget->palette().inactive());
+            const QColor    *cols(getMdiColors(cg, isActive));
+            QColor          textCol(isActive ? itsActiveMdiTextColor : itsMdiTextColor),
+                            shdCol(shadowColor(textCol)),
+                            shadowCol(midColor(cols[ORIGINAL_SHADE], shdCol));
+
+            if (controls&SC_TitleBarLabel)
+            {
+                int  alignment=AlignVCenter|SingleLine;
+                bool full=false;
+
+                switch(opts.titlebarAlignment)
+                {
+                    default:
+                    case ALIGN_LEFT:
+                        alignment|=Qt::AlignLeft;
+                        break;
+                    case ALIGN_CENTER:
+                        alignment|=Qt::AlignHCenter;
+                        break;
+                    case ALIGN_FULL_CENTER:
+                        alignment|=Qt::AlignHCenter;
+                        full=true;
+                        break;
+                    case ALIGN_RIGHT:
+                        alignment|=Qt::AlignRight;
+                }
+
+                QRect       ir(visualRect(querySubControlMetrics(CC_TitleBar, widget, SC_TitleBarLabel), widget)),
+                            textRect(full ? tb->rect().x() : ir.x(), ir.y(), full ? tb->rect().width() : ir.width(), ir.height());
+                EAppearance app=isActive ? opts.titlebarAppearance : opts.inactiveTitlebarAppearance;
+
+                drawBevelGradient(cols[ORIGINAL_SHADE], p, r, true, false, app, WIDGET_MDI_WINDOW);
+                ir.addCoords(2, 0, -4, 0);
+
+                QFontMetrics fm(QFontMetrics(widget->font()));
+                QString titleString(elliditide(widget->caption(), fm, textRect.width()));
+
+                if(full)
+                {
+                    int textWidth=fm.boundingRect(titleString).width();
+                    if(ir.left()>((textRect.width()-textWidth)>>1))
+                    {
+                        alignment=Qt::AlignVCenter|Qt::AlignLeft;
+                        textRect=ir;
+                        full=false;
+                    }
+                    else if(ir.right()<((textRect.width()+textWidth)>>1))
+                    {
+                        alignment=Qt::AlignVCenter|Qt::AlignRight;
+                        textRect=ir;
+                        full=false;
+                    }
+                    else
+                        p->setClipRect(ir);
+                }
+
+                p->setPen(shadowCol);
+                p->drawText(textRect.x()+1, textRect.y()+1, textRect.width(), textRect.height(), alignment, titleString);
+                p->setPen(textCol);
+                p->drawText(textRect.x(), textRect.y(), textRect.width(), textRect.height(), alignment, titleString);
+                if(full)
+                    p->setClipping(false);
+
+                //controls-=SC_TitleBarLabel;
+            }
+            QRect ir;
+            bool down(false);
+            QPixmap pm;
+
+            if (controls&SC_TitleBarCloseButton)
+            {
+                ir = visualRect(querySubControlMetrics(CC_TitleBar, widget, SC_TitleBarCloseButton), widget);
+                down = active & SC_TitleBarCloseButton;
+                drawPrimitive(PE_ButtonTool, p, ir, tb->colorGroup(), down ? Style_Down : Style_Raised);
+                drawMdiIcon(p, textCol, shadowCol, ir, down, buttonMargin, SC_TitleBarCloseButton);
+            }
+
+            if (tb->window())
+            {
+                if (controls &SC_TitleBarMaxButton)
+                {
+                    ir = visualRect(querySubControlMetrics(CC_TitleBar, widget, SC_TitleBarMaxButton), widget);
+                    down = active & SC_TitleBarMaxButton;
+                    drawPrimitive(PE_ButtonTool, p, ir, tb->colorGroup(), down ? Style_Down : Style_Raised);
+                    drawMdiIcon(p, textCol, shadowCol, ir, down, buttonMargin, SC_TitleBarMaxButton);
+                }
+
+                if (controls&SC_TitleBarNormalButton || controls&SC_TitleBarMinButton)
+                {
+                    ir = visualRect(querySubControlMetrics(CC_TitleBar, widget, SC_TitleBarMinButton), widget);
+                    QStyle::SubControl ctrl = (controls & SC_TitleBarNormalButton ?
+                                SC_TitleBarNormalButton :
+                                SC_TitleBarMinButton);
+                    down = active & ctrl;
+                    drawPrimitive(PE_ButtonTool, p, ir, tb->colorGroup(), down ? Style_Down : Style_Raised);
+                    drawMdiIcon(p, textCol, shadowCol, ir, down, buttonMargin, ctrl);
+                }
+
+                if (controls&SC_TitleBarShadeButton)
+                {
+                    ir = visualRect(querySubControlMetrics(CC_TitleBar, widget, SC_TitleBarShadeButton), widget);
+                    down = active & SC_TitleBarShadeButton;
+                    drawPrimitive(PE_ButtonTool, p, ir, tb->colorGroup(), down ? Style_Down : Style_Raised);
+                    drawMdiIcon(p, textCol, shadowCol, ir, down, buttonMargin, SC_TitleBarShadeButton);
+                }
+                if (controls&SC_TitleBarUnshadeButton)
+                {
+                    ir = visualRect(querySubControlMetrics(CC_TitleBar, widget, SC_TitleBarUnshadeButton), widget);
+                    down = active & SC_TitleBarUnshadeButton;
+                    drawPrimitive(PE_ButtonTool, p, ir, tb->colorGroup(), down ? Style_Down : Style_Raised);
+                    drawMdiIcon(p, textCol, shadowCol, ir, down, buttonMargin, SC_TitleBarUnshadeButton);
+                }
+            }
+            if (controls&SC_TitleBarSysMenu && tb->icon())
+            {
+                ir = visualRect(querySubControlMetrics(CC_TitleBar, widget, SC_TitleBarSysMenu), widget);
+                down = active & SC_TitleBarSysMenu;
+                drawPrimitive(PE_ButtonTool, p, ir, tb->colorGroup(), down ? Style_Down : Style_Raised);
+                drawItem(p, ir, AlignCenter, tb->colorGroup(), true, tb->icon(), QString::null);
+            }
+            break;
+        }
         default:
-            KStyle::drawComplexControl(control, p, widget, r, cg, flags, controls, active, data);
+            BASE_STYLE::drawComplexControl(control, p, widget, r, cg, flags, controls, active, data);
     }
 }
 
@@ -4779,7 +6451,7 @@ QRect QtCurveStyle::querySubControlMetrics(ComplexControl control, const QWidget
             bs.setHeight(widget->height()>>1);
             if(bs.height()< 8)
                 bs.setHeight(8);
-            bs.setWidth(15);
+            bs.setWidth(DO_EFFECT ? 16 : 15);
             bs=bs.expandedTo(QApplication::globalStrut());
 
             int extra(bs.height()*2==widget->height()? 0 : 1),
@@ -4808,17 +6480,17 @@ QRect QtCurveStyle::querySubControlMetrics(ComplexControl control, const QWidget
         }
         case CC_ComboBox:
         {
-            QRect r(KStyle::querySubControlMetrics(control, widget, sc, data));
+            QRect r(BASE_STYLE::querySubControlMetrics(control, widget, sc, data));
 
             if(SC_ComboBoxFrame==sc)
             {
                 const QComboBox *cb(::qt_cast<const QComboBox *>(widget));
 
                 if(cb && cb->editable())
-                    r=QRect((r.x()+r.width()-1)-18, r.y(), 19, r.height());
+                    r=QRect(r.x()+r.width()-19, r.y(), 19, r.height());
             }
-            else if (reverse && SC_ComboBoxEditField==sc)
-                r.addCoords(-1, 0, -2, 0);
+            else if (SC_ComboBoxEditField==sc && !DO_EFFECT)
+                r.addCoords(0, 0, -1, 0);
             return r;
         }
         case CC_ScrollBar:
@@ -4965,17 +6637,103 @@ QRect QtCurveStyle::querySubControlMetrics(ComplexControl control, const QWidget
             }
             return ret;
         }
+#ifdef SET_MDI_WINDOW_BUTTON_POSITIONS // TODO
+        case CC_TitleBar:
+            if (widget)
+            {
+                bool isMinimized(tb->titleBarState&Qt::WindowMinimized),
+                    isMaximized(tb->titleBarState&Qt::WindowMaximized);
+
+                if( (isMaximized && SC_TitleBarMaxButton==subControl) ||
+                    (isMinimized && SC_TitleBarMinButton==subControl) ||
+                    (isMinimized && SC_TitleBarShadeButton==subControl) ||
+                    (!isMinimized && SC_TitleBarUnshadeButton==subControl))
+                    return QRect();
+
+                readMdiPositions();
+
+                const int windowMargin(2);
+                const int controlSize(tb->rect.height() - windowMargin *2);
+
+                QList<int>::ConstIterator it(itsMdiButtons[0].begin()),
+                                        end(itsMdiButtons[0].end());
+                int                       sc(SC_TitleBarUnshadeButton==subControl
+                                            ? SC_TitleBarShadeButton
+                                            : SC_TitleBarNormalButton==subControl
+                                                ? isMaximized
+                                                    ? SC_TitleBarMaxButton
+                                                    : SC_TitleBarMinButton
+                                                : subControl),
+                                        pos(0),
+                                        totalLeft(0),
+                                        totalRight(0);
+                bool                      rhs(false),
+                                        found(false);
+
+                for(; it!=end; ++it)
+                    if(SC_TitleBarCloseButton==(*it) || WINDOWTITLE_SPACER==(*it) || tb->titleBarFlags&(toHint(*it)))
+                    {
+                        totalLeft+=WINDOWTITLE_SPACER==(*it) ? controlSize/2 : controlSize;
+                        if(*it==sc)
+                            found=true;
+                        else if(!found)
+                            pos+=WINDOWTITLE_SPACER==(*it) ? controlSize/2 : controlSize;
+                    }
+
+                if(!found)
+                {
+                    pos=0;
+                    rhs=true;
+                }
+
+                it=itsMdiButtons[1].begin();
+                end=itsMdiButtons[1].end();
+                for(; it!=end; ++it)
+                    if(SC_TitleBarCloseButton==(*it) || WINDOWTITLE_SPACER==(*it) || tb->titleBarFlags&(toHint(*it)))
+                    {
+                        if(WINDOWTITLE_SPACER!=(*it) || totalRight)
+                            totalRight+=WINDOWTITLE_SPACER==(*it) ? controlSize/2 : controlSize;
+                        if(rhs)
+                            if(*it==sc)
+                            {
+                                pos+=controlSize;
+                                found=true;
+                            }
+                            else if(found)
+                                pos+=WINDOWTITLE_SPACER==(*it) ? controlSize/2 : controlSize;
+                    }
+
+                totalLeft+=(windowMargin*(totalLeft ? 2 : 1));
+                totalRight+=(windowMargin*(totalRight ? 2 : 1));
+
+                if(SC_TitleBarLabel==subControl)
+                    r.adjust(totalLeft, 0, -totalRight, 0);
+                else if(!found)
+                    return QRect();
+                else if(rhs)
+                    r.setRect(r.right()-(pos+windowMargin),
+                            r.top()+windowMargin,
+                            controlSize, controlSize);
+                else
+                    r.setRect(r.left()+windowMargin+pos, r.top()+windowMargin,
+                            controlSize, controlSize);
+                return visualRect(tb->direction, tb->rect, r);
+            }
+        }
+#endif
         default:
             break; // Remove compiler warnings...
     }
 
-    return KStyle::querySubControlMetrics(control, widget, sc, data);
+    return BASE_STYLE::querySubControlMetrics(control, widget, sc, data);
 }
 
 int QtCurveStyle::pixelMetric(PixelMetric metric, const QWidget *widget) const
 {
     switch(metric)
     {
+        case PM_MenuBarFrameWidth:
+            return TB_NONE==opts.toolbarBorders ? 0 : 1;
         case PM_MenuButtonIndicator:
             return 7;
         case PM_ButtonMargin:
@@ -4989,7 +6747,7 @@ int QtCurveStyle::pixelMetric(PixelMetric metric, const QWidget *widget) const
                     ? QTabBar::RoundedAbove==tb->shape() || QTabBar::TriangularAbove==tb->shape()
                        ? 1
                        : -1
-                    : KStyle::pixelMetric(metric, widget);
+                    : BASE_STYLE::pixelMetric(metric, widget);
         }
         case PM_TabBarTabShiftHorizontal:
             return 0;
@@ -5000,49 +6758,63 @@ int QtCurveStyle::pixelMetric(PixelMetric metric, const QWidget *widget) const
         case PM_ButtonDefaultIndicator:
             return 0;
         case PM_DefaultFrameWidth:
-            if(QTC_DO_EFFECT && widget && !isFormWidget(widget) &&
-               (::qt_cast<const QLineEdit *>(widget) || ::qt_cast<QDateTimeEditBase*>(widget) ||
-                ::qt_cast<QTextEdit*>(widget)))
+            if(APP_KATE==itsThemedApp && widget && widget->parentWidget() && widget->parentWidget()->parentWidget() &&
+               ::qt_cast<const QWidgetStack *>(widget) &&
+               ::qt_cast<const QTabWidget *>(widget->parentWidget()) &&
+               ::qt_cast<const QVBox *>(widget->parentWidget()->parentWidget()))
+                return 0;
+
+            if ((opts.square&SQUARE_SCROLLVIEW) && widget && ::qt_cast<const QScrollView *>(widget))
+                return (opts.gtkScrollViews || opts.thinSbarGroove) && !opts.highlightScrollViews ? 1 : 2;
+
+            if(DO_EFFECT && opts.etchEntry && widget && !isFormWidget(widget) &&
+               (::qt_cast<const QLineEdit *>(widget) || ::qt_cast<const QDateTimeEditBase*>(widget) ||
+                ::qt_cast<const QTextEdit*>(widget) || ::qt_cast<const QScrollView*>(widget)))
                 return 3;
             else
                 return 2;
         case PM_SpinBoxFrameWidth:
-            return QTC_DO_EFFECT && !isFormWidget(widget) ? 3 : 2;
+            return DO_EFFECT && !isFormWidget(widget) ? 3 : 2;
         case PM_IndicatorWidth:
         case PM_IndicatorHeight:
-            return QTC_CHECK_SIZE;
+            return DO_EFFECT && widget && !isFormWidget(widget) ? opts.crSize+2 : opts.crSize;
         case PM_ExclusiveIndicatorWidth:
         case PM_ExclusiveIndicatorHeight:
-            return QTC_RADIO_SIZE;
+            return DO_EFFECT && widget && !isFormWidget(widget) ? opts.crSize+2 : opts.crSize;
         case PM_TabBarTabOverlap:
-            return 1;
+            return TAB_MO_GLOW==opts.tabMouseOver ? 0 : 1;
         case PM_ProgressBarChunkWidth:
-            return 4;
+            return PROGRESS_CHUNK_WIDTH*3.4;
         case PM_DockWindowSeparatorExtent:
             return 4;
         case PM_DockWindowHandleExtent:
             return 10;
         case PM_SplitterWidth:
-            return 6;
+            return widget && widget->inherits("QDockWindowResizeHandle")
+                    ? 9
+                    : LINE_1DOT==opts.splitters
+                        ? 7
+                        : 6;
         case PM_ScrollBarSliderMin:
-            return 16;
+            return opts.sliderWidth+1;
         case PM_SliderThickness:
-            return SLIDER_TRIANGULAR==opts.sliderStyle ? 22 : 18;
+            return SLIDER_TRIANGULAR==opts.sliderStyle ? 22 : (SLIDER_SIZE+(ROTATED_SLIDER ? 8 : 3));
         case PM_SliderControlThickness:
-            return SLIDER_TRIANGULAR==opts.sliderStyle ? 19 : 15; // This equates to 13, as we draw the handle 2 pix smaller for focus rect...
+            return SLIDER_TRIANGULAR==opts.sliderStyle ? 19 : (SLIDER_SIZE+(ROTATED_SLIDER ? 8 : 0)); // This equates to 13, as we draw the handle 2 pix smaller for focus rect...
         case PM_SliderLength:
-            return SLIDER_TRIANGULAR==opts.sliderStyle ? 11 : 21;
+            return SLIDER_TRIANGULAR==opts.sliderStyle ? 11 : (SLIDER_SIZE+(ROTATED_SLIDER ? -2 : 6));
         case PM_ScrollBarExtent:
             // See KHTML note at top of file
-            return APP_KPRESENTER==itsThemedApp ||
+            return opts.sliderWidth+
+                   (APP_KPRESENTER==itsThemedApp ||
                    ((APP_KONQUEROR==itsThemedApp || APP_KONTACT==itsThemedApp) && (!widget || isFormWidget(widget)))
-                        ? 16 : 15;
+                        ? 1 : 0);
         case PM_MaximumDragDistance:
             return -1;
         case PM_TabBarTabVSpace:
             return opts.highlightTab ? 11 : 9;
         default:
-            return KStyle::pixelMetric(metric, widget);
+            return BASE_STYLE::pixelMetric(metric, widget);
     }
 }
 
@@ -5053,7 +6825,7 @@ int QtCurveStyle::kPixelMetric(KStylePixelMetric kpm, const QWidget *widget) con
         case KPM_MenuItemSeparatorHeight:
             return 2;
         default:
-            return KStyle::kPixelMetric(kpm, widget);
+            return BASE_STYLE::kPixelMetric(kpm, widget);
     }
 }
 
@@ -5068,14 +6840,9 @@ QSize QtCurveStyle::sizeFromContents(ContentsType contents, const QWidget *widge
 
             if (button && !button->text().isEmpty())
             {
-                bool allowEtch(QTC_DO_EFFECT && !isFormWidget(widget));
-
-                const int constMinH(allowEtch ? 29 : 27);
-
                 int margin(2*pixelMetric(PM_ButtonMargin, widget)),
                     mbi(button->isMenuButton() ? pixelMetric(PM_MenuButtonIndicator, widget) : 0),
-                    w(contentsSize.width() + margin + mbi + 16),
-                    h(contentsSize.height() + margin);
+                    w(contentsSize.width() + margin + mbi + 16);
 
 //                 if(button->text()=="...")
 //                     w+=24;
@@ -5090,26 +6857,15 @@ QSize QtCurveStyle::sizeFromContents(ContentsType contents, const QWidget *widge
                         w=constMinW;
                 }
 
-                if(allowEtch)
-                    h+=2;
-
-                return QSize(w, h < constMinH ? constMinH : h);
+                return QSize(w, contentsSize.height() + margin+(DO_EFFECT && !isFormWidget(widget) && !opts.thinnerBtns
+                                                                    ? 6 : 4));
             }
             break;
         }
         case CT_ComboBox:
         {
-            bool allowEtch(QTC_DO_EFFECT && !isFormWidget(widget));
-
-            const int constMinH(allowEtch ? 26 : 24);
-
-            QSize sz(KStyle::sizeFromContents(contents, widget, contentsSize, data));
-            int   h(sz.height());
-
-            if(allowEtch)
-                h+=2;
-
-            return QSize(sz.width(), h<constMinH ? constMinH : h);
+            QSize sz(BASE_STYLE::sizeFromContents(contents, widget, contentsSize, data));
+            return QSize(sz.width(), sz.height()+(DO_EFFECT && !isFormWidget(widget) && !opts.thinnerBtns ? 4 : 2));
         }
         case CT_PopupMenuItem:
         {
@@ -5136,7 +6892,7 @@ QSize QtCurveStyle::sizeFromContents(ContentsType contents, const QWidget *widge
             else if (mi->isSeparator())
             {
                 w = 10;
-                h = opts.thinnerMenuItems ? 6 : 8;
+                h = 7;
             }
             else
             {
@@ -5155,7 +6911,7 @@ QSize QtCurveStyle::sizeFromContents(ContentsType contents, const QWidget *widge
             // check | 4 pixels | item | 8 pixels | accel | 4 pixels | check
 
             // check is at least 16x16
-            maxpmw=QMAX(maxpmw, 16);
+            maxpmw=QMAX(maxpmw, constMenuPixmapWidth);
             w += (maxpmw * 2) + 8;
 
             if (! mi->text().isNull() && mi->text().find('\t') >= 0)
@@ -5165,7 +6921,7 @@ QSize QtCurveStyle::sizeFromContents(ContentsType contents, const QWidget *widge
         }
         case CT_SpinBox:
         {
-            QSize size(KStyle::sizeFromContents(contents, widget, contentsSize, data));
+            QSize size(BASE_STYLE::sizeFromContents(contents, widget, contentsSize, data));
 
             if(!(size.height()%2))
                 size.setHeight(size.height()+1);
@@ -5182,7 +6938,7 @@ QSize QtCurveStyle::sizeFromContents(ContentsType contents, const QWidget *widge
             break;  // Remove compiler warnings...
     }
 
-    return KStyle::sizeFromContents(contents, widget, contentsSize, data);
+    return BASE_STYLE::sizeFromContents(contents, widget, contentsSize, data);
 }
 
 int QtCurveStyle::styleHint(StyleHint stylehint, const QWidget *widget, const QStyleOption &option,
@@ -5190,18 +6946,22 @@ int QtCurveStyle::styleHint(StyleHint stylehint, const QWidget *widget, const QS
 {
     switch(stylehint)
     {
+        case SH_PopupMenu_SubMenuPopupDelay:
+            return opts.menuDelay;
         case SH_ScrollView_FrameOnlyAroundContents:
             return opts.gtkScrollViews;
         case SH_EtchDisabledText:
+            return 0;
         case SH_Slider_SnapToValue:
         case SH_PrintDialog_RightAlignButtons:
         case SH_FontDialog_SelectAssociatedText:
-        case SH_MenuBar_AltKeyNavigation:
         case SH_PopupMenu_MouseTracking:
         case SH_PopupMenu_SpaceActivatesItem:
         case SH_ComboBox_ListMouseTracking:
         case SH_ScrollBar_MiddleClickAbsolutePosition:
             return 1;
+        case SH_MenuBar_AltKeyNavigation:
+            return 0;
         case SH_LineEdit_PasswordCharacter:
             if(opts.passwordChar)
             {
@@ -5221,23 +6981,167 @@ int QtCurveStyle::styleHint(StyleHint stylehint, const QWidget *widget, const QS
             return 0;
         case SH_MenuBar_MouseTracking:
             return opts.menubarMouseOver ? 1 : 0;
+        case SH_TabBar_Alignment:
+            return AlignLeft;
         default:
-            return KStyle::styleHint(stylehint, widget, option, returnData);
+            return BASE_STYLE::styleHint(stylehint, widget, option, returnData);
+    }
+}
+
+void QtCurveStyle::drawItem(QPainter *p, const QRect &r, int flags, const QColorGroup &cg, bool enabled,
+                            const QPixmap *pixmap, const QString &text, int len, const QColor *penColor) const
+{
+    QRect r2(r);
+
+    if((opts.gbLabel&GB_LBL_BOLD) && text.length() && p->device() && dynamic_cast<QGroupBox *>(p->device()))
+    {
+        QGroupBox *box=static_cast<QGroupBox*>(p->device());
+
+        if (!box->isCheckable())
+        {
+            int          left,
+                         top,
+                         width,
+                         height;
+            QFontMetrics fm(p->fontMetrics());
+            QRect        rb(box->rect());
+            int          th(fm.height()+2);
+            QFont        f(p->font());
+
+            rb.rect(&left, &top, &width, &height);
+            //rb.coords(&left, &top, &right, &bottom);
+            f.setBold(true);
+            p->setPen(box->colorGroup().foreground());
+            p->setFont(f);
+            p->drawText(QRect(left, top, width, th), (QApplication::reverseLayout()
+                                                        ? AlignRight
+                                                        : AlignLeft)|AlignVCenter|ShowPrefix|SingleLine,
+                        text);
+            return;
+        }
+    }
+
+    int x = r.x(),
+        y = r.y(),
+        w = r.width(),
+        h = r.height();
+
+    p->setPen(penColor ? *penColor : cg.foreground());
+    if (pixmap)
+    {
+        QPixmap pm(*pixmap);
+        bool    clip = (flags&Qt::DontClip) == 0;
+        if (clip)
+        {
+            if (pm.width() < w && pm.height() < h)
+                clip = false;
+            else
+            {
+                p->save();
+                QRegion cr = QRect(x, y, w, h);
+                if (p->hasClipping())
+                    cr &= p->clipRegion(QPainter::CoordPainter);
+                p->setClipRegion(cr);
+            }
+        }
+        if ((flags&Qt::AlignVCenter) == Qt::AlignVCenter)
+            y += h/2 - pm.height()/2;
+        else if ((flags&Qt::AlignBottom) == Qt::AlignBottom)
+            y += h - pm.height();
+        if ((flags&Qt::AlignRight) == Qt::AlignRight)
+            x += w - pm.width();
+        else if ((flags&Qt::AlignHCenter) == Qt::AlignHCenter)
+            x += w/2 - pm.width()/2;
+        else if (((flags&Qt::AlignLeft) != Qt::AlignLeft) && QApplication::reverseLayout()) // AlignAuto && rightToLeft
+            x += w - pm.width();
+
+        if (!enabled)
+        {
+            if (pm.mask())          // pixmap with a mask
+            {
+                if (!pm.selfMask())     // mask is not pixmap itself
+                {
+                    QPixmap pmm(*pm.mask());
+                    pmm.setMask(*((QBitmap *)&pmm));
+                    pm = pmm;
+                }
+            }
+            else if (pm.depth() == 1) // monochrome pixmap, no mask
+            {
+                pm.setMask(*((QBitmap *)&pm));
+#ifndef QT_NO_IMAGE_HEURISTIC_MASK
+            }
+            else                // color pixmap, no mask
+            {
+                QString k;
+                k.sprintf("$qt-drawitem-%x", pm.serialNumber());
+                QPixmap *mask = QPixmapCache::find(k);
+                bool del=false;
+                if (!mask)
+                {
+                    mask = new QPixmap(pm.createHeuristicMask());
+                    mask->setMask(*((QBitmap*)mask));
+                    del = !QPixmapCache::insert(k, mask);
+                }
+                pm = *mask;
+                if (del) 
+                    delete mask;
+#endif
+            }
+            p->setPen(cg.text());
+        }
+        p->drawPixmap(x, y, pm);
+        if (clip)
+            p->restore();
+    }
+    else if (!text.isNull())
+    {
+        if (!enabled)
+            p->setPen(cg.text());
+        p->drawText(x, y, w, h, flags, text, len);
     }
 }
 
-void QtCurveStyle::drawMenuItem(QPainter *p, const QRect &r, const QColorGroup &cg,
+void QtCurveStyle::drawMenuItem(QPainter *p, const QRect &r, int flags, const QColorGroup &cg,
                                 bool mbi, int round, const QColor &bgnd, const QColor *cols) const
 {
-    if(opts.borderMenuitems)
+    int fill=opts.useHighlightForMenu && (!mbi || itsHighlightCols==cols) ? ORIGINAL_SHADE : 4,
+        border=opts.borderMenuitems ? 0 : fill;
+
+    if(itsHighlightCols!=cols && mbi && !((flags&Style_Enabled) && (flags&Style_Active) && (flags&Style_Down)) &&
+       !opts.colorMenubarMouseOver && (opts.borderMenuitems || !IS_FLAT(opts.menuitemAppearance)))
+        fill=ORIGINAL_SHADE;
+               
+    if(!mbi && APPEARANCE_FADE==opts.menuitemAppearance)
+    {
+        bool  reverse=QApplication::reverseLayout();
+        int   roundOffet=ROUNDED ? 1 : 0;
+        QRect main(r.x()+(reverse ? 1+MENUITEM_FADE_SIZE : roundOffet+1), r.y()+roundOffet+1,
+                   r.width()-(1+MENUITEM_FADE_SIZE), r.height()-(2+(roundOffet*2))),
+              fade(reverse ? r.x()+1 : r.width()-MENUITEM_FADE_SIZE, r.y()+1, MENUITEM_FADE_SIZE, r.height()-2);
+
+        p->fillRect(main, cols[fill]);
+        if(ROUNDED)
+        {
+            main.addCoords(-1, -1, 1, 1);
+            drawBorder(USE_LIGHTER_POPUP_MENU ? itsLighterPopupMenuBgndCol : itsBackgroundCols[ORIGINAL_SHADE], p, main, 
+                       cg, Style_Horizontal|Style_Raised, reverse ? ROUNDED_RIGHT : ROUNDED_LEFT,
+                       cols, WIDGET_MENU_ITEM, false, BORDER_FLAT, false, fill);
+        }
+
+        QColor bgnd(USE_LIGHTER_POPUP_MENU ? itsLighterPopupMenuBgndCol : itsBackgroundCols[ORIGINAL_SHADE]);
+        drawGradient(reverse ? bgnd : cols[fill], reverse ? cols[fill] : bgnd, p, fade, false);
+    }
+    else if(mbi || opts.borderMenuitems)
     {
         int  flags(Style_Raised);
-        bool stdColor(!mbi || SHADE_BLEND_SELECTED!=opts.shadeMenubars);
+        bool stdColor(!mbi || (SHADE_BLEND_SELECTED!=opts.shadeMenubars && SHADE_SELECTED!=opts.shadeMenubars));
 
+        itsFormMode=true;
         flags|=Style_Horizontal;
 
-        if(stdColor)
-            drawLightBevel(bgnd, p, r, cg, flags, round, cols[ORIGINAL_SHADE],
+        if(stdColor && opts.borderMenuitems)
+            drawLightBevel(bgnd, p, r, cg, flags, round, cols[fill],
                            cols, stdColor, !(mbi && IS_GLASS(opts.menubarAppearance)), WIDGET_MENU_ITEM);
         else
         {
@@ -5246,31 +7150,32 @@ void QtCurveStyle::drawMenuItem(QPainter *p, const QRect &r, const QColorGroup &
             fr.addCoords(1, 1, -1, -1);
 
             if(fr.width()>0 && fr.height()>0)
-                drawBevelGradient(cols[ORIGINAL_SHADE], true, p, fr, true,
-                                  getWidgetShade(WIDGET_MENU_ITEM, true, false, opts.menuitemAppearance),
-                                  getWidgetShade(WIDGET_MENU_ITEM, false, false, opts.menuitemAppearance),
-                                  false, opts.menuitemAppearance, WIDGET_MENU_ITEM);
-            drawBorder(bgnd, p, r, cg, flags, round, cols, WIDGET_OTHER, false, BORDER_FLAT, false, 0);
+                drawBevelGradient(cols[fill], p, fr, true, false, opts.menuitemAppearance, WIDGET_MENU_ITEM);
+            drawBorder(bgnd, p, r, cg, flags, round, cols, WIDGET_OTHER, false, BORDER_FLAT, false, border);
         }
+        itsFormMode=false;
     }
     else
-        drawBevelGradient(cols[ORIGINAL_SHADE], true, p, r, true,
-                          getWidgetShade(WIDGET_MENU_ITEM, true, false, opts.menuitemAppearance),
-                          getWidgetShade(WIDGET_MENU_ITEM, false, false, opts.menuitemAppearance),
-                          false, opts.menuitemAppearance, WIDGET_MENU_ITEM);
+        drawBevelGradient(cols[fill], p, r, true, false, opts.menuitemAppearance, WIDGET_MENU_ITEM);
 }
 
-void QtCurveStyle::drawProgress(QPainter *p, const QRect &r, const QColorGroup &cg, SFlags flags,
+void QtCurveStyle::drawProgress(QPainter *p, const QRect &rx, const QColorGroup &cg, SFlags flags,
                                 int round, const QWidget *widget) const
 {
-    if(r.width()<1)
+    if(rx.width()<1)
         return;
 
+    QRect   r=opts.borderProgress
+                ? QRect(rx.x()+1, rx.y()+1, rx.width()-2, rx.height()-2)
+                : rx;
     int     minWidth(3);
     bool    drawFull(r.width()>minWidth),
             drawStripe(r.width()>(minWidth*1.5));
     QRegion outer(r);
 
+    if(r.width()<3)
+        r.setWidth(3);
+
     if(drawStripe)
     {
         int animShift=-PROGRESS_CHUNK_WIDTH;
@@ -5317,200 +7222,155 @@ void QtCurveStyle::drawProgress(QPainter *p, const QRect &r, const QColorGroup &
         }
     }
 
-    if(drawFull)
-    {
-        flags|=Style_Raised|Style_Horizontal;
+    const QColor *use=flags&Style_Enabled || ECOLOR_BACKGROUND==opts.progressGrooveColor
+                        ? itsProgressCols
+                            ? itsProgressCols
+                            : itsHighlightCols
+                        : itsBackgroundCols;
 
-        drawLightBevel(cg.background(), p, r, cg, flags, round, itsMenuitemCols[ORIGINAL_SHADE],
-                       itsMenuitemCols, true, true, WIDGET_PROGRESSBAR);
+    flags|=Style_Raised|Style_Horizontal;
 
-        if(drawStripe && opts.stripedProgress)
-        {
-            p->setClipRegion(outer);
-            drawLightBevel(cg.background(), p, r, cg, flags, round, itsMenuitemCols[1],
-                           itsMenuitemCols, true, true, WIDGET_PROGRESSBAR);
-            p->setClipping(false);
-        }
-    }
-    else
+    drawLightBevel(cg.background(), p, r, cg, flags, round, use[ORIGINAL_SHADE],
+                    use, false, true, WIDGET_PROGRESSBAR);
+
+    if(drawStripe && opts.stripedProgress)
     {
-        p->setPen(itsMenuitemCols[QT_STD_BORDER]);
-        p->setBrush(itsMenuitemCols[ORIGINAL_SHADE]);
-        p->drawRect(r);
+        p->setClipRegion(outer);
+        drawLightBevel(cg.background(), p, r, cg, flags, round, use[1],
+                        use, false, true, WIDGET_PROGRESSBAR);
+        p->setClipping(false);
     }
-    if(QTC_ROUNDED && r.width()>2 && ROUNDED_ALL!=round)
+
+    if(opts.borderProgress)
+        drawBorder(cg.background(), p, r, cg, flags, !(opts.square&SQUARE_PROGRESS) && opts.fillProgress ? ROUNDED_ALL : round,
+                   use, WIDGET_PROGRESSBAR, false, BORDER_FLAT, false, PBAR_BORDER);
+    else
     {
-        p->setPen(midColor(cg.background(), itsMenuitemCols[QT_STD_BORDER]));
-        if(!(round&CORNER_TL) || !drawFull)
-            p->drawPoint(r.x(), r.y());
-        if(!(round&CORNER_BL) || !drawFull)
-            p->drawPoint(r.x(), r.y()+r.height()-1);
-        if(!(round&CORNER_TR) || !drawFull)
-            p->drawPoint(r.x()+r.width()-1, r.y());
-        if(!(round&CORNER_BR) || !drawFull)
-            p->drawPoint(r.x()+r.width()-1, r.y()+r.height()-1);
+        r.addCoords(1, 1, -1, -1);
+        p->setPen(use[PBAR_BORDER]);
+        p->drawLine(r.topLeft(), r.topRight());
+        p->drawLine(r.bottomLeft(), r.bottomRight());
     }
 }
 
-void QtCurveStyle::drawBevelGradient(const QColor &base, bool increase, QPainter *p,
-                                     const QRect &origRect, bool horiz, double shadeTop,
-                                     double shadeBot, bool sel, EAppearance bevApp, EWidget w) const
+void QtCurveStyle::drawBevelGradient(const QColor &base, QPainter *p, const QRect &origRect, bool horiz, bool sel, EAppearance bevApp, EWidget w) const
 {
+    if(IS_FLAT(bevApp) && opts.colorSelTab && sel)
+        bevApp=APPEARANCE_GRADIENT;
+
     if(IS_FLAT(bevApp))
         p->fillRect(origRect, base);
     else
     {
-        EAppearance app(APPEARANCE_BEVELLED!=bevApp || WIDGET_BUTTON(w) || WIDGET_LISTVIEW_HEADER==w
-                            ? bevApp
-                            : APPEARANCE_GRADIENT);
-
-        bool    selected(opts.colorSelTab && (WIDGET_TAB_TOP==w || WIDGET_TAB_BOT==w) ? false : sel);
-        QRect   r(0, 0, horiz ? QTC_PIXMAP_DIMENSION : origRect.width(),
-                        horiz ? origRect.height() : QTC_PIXMAP_DIMENSION);
-        QString key(createKey(horiz ? r.height() : r.width(), base.rgb(), horiz, increase,
-                              app2App(app, sel), w, shadeTop, shadeBot));
-        QPixmap *pix(itsPixmapCache.find(key));
+        bool        tab(WIDGET_TAB_TOP==w || WIDGET_TAB_BOT==w),
+                    selected(tab ? false : sel);
+        EAppearance app(selected
+                            ? opts.sunkenAppearance
+                            : WIDGET_LISTVIEW_HEADER==w && APPEARANCE_BEVELLED==bevApp
+                                ? APPEARANCE_LV_BEVELLED
+                                : APPEARANCE_BEVELLED!=bevApp || WIDGET_BUTTON(w) || WIDGET_LISTVIEW_HEADER==w ||
+                                  WIDGET_NO_ETCH_BTN==w || WIDGET_MENU_BUTTON==w
+                                    ? bevApp
+                                    : APPEARANCE_GRADIENT);
+        QRect       r(0, 0, horiz ? PIXMAP_DIMENSION : origRect.width(),
+                      horiz ? origRect.height() : PIXMAP_DIMENSION);
+        QString     key(createKey(horiz ? r.height() : r.width(), base.rgb(), horiz, app,
+                                  tab && sel && opts.colorSelTab ? CACHE_COL_SEL_TAB : CACHE_STD));
+        QPixmap     *pix(itsPixmapCache.find(key));
+        bool        inCache(true);
 
         if(!pix)
         {
             pix=new QPixmap(r.width(), r.height());
 
-            QPainter pixPainter(pix);
-
-            if(!selected && (IS_GLASS(app) || APPEARANCE_SPLIT_GRADIENT==app))
-            {
-                if(WIDGET_TAB_BOT==w)
-                {
-                    double t(shadeTop);
-                    shadeTop=shadeBot;
-                    shadeBot=t;
-                }
+            QPainter       pixPainter(pix);
 
-                double shadeTopA(WIDGET_TAB_BOT==w
-                                    ? 1.0
-                                    : APPEARANCE_SPLIT_GRADIENT==app
-                                        ? shadeTop
-                                        : shadeTop*SHADE_GLASS_TOP_A(app, w)),
-                       shadeTopB(WIDGET_TAB_BOT==w
-                                    ? 1.0
-                                    : APPEARANCE_SPLIT_GRADIENT==app
-                                        ? shadeTop-((shadeTop-shadeBot)*SPLIT_GRADIENT_FACTOR)
-                                        : shadeTop*SHADE_GLASS_TOP_B(app, w)),
-                       shadeBotA(WIDGET_TAB_TOP==w
-                                    ? 1.0
-                                    : APPEARANCE_SPLIT_GRADIENT==app
-                                        ? shadeBot+((shadeTop-shadeBot)*SPLIT_GRADIENT_FACTOR)
-                                        : shadeBot*SHADE_GLASS_BOT_A(app)),
-                       shadeBotB(WIDGET_TAB_TOP==w
-                                    ? 1.0
-                                    : APPEARANCE_SPLIT_GRADIENT==app
-                                        ? shadeBot
-                                        : shadeBot*SHADE_GLASS_BOT_B(app));
-
-                QColor topA, topB, botA, botB;
-                QRect  r1(r), r2(r), r3(r);
-
-                shade(base, &topA, shadeTopA);
-                shade(base, &topB, shadeTopB);
-                shade(base, &botA, shadeBotA);
-                shade(base, &botB, shadeBotB);
+            drawBevelGradientReal(base, &pixPainter, r, horiz, sel, app, w);
+            pixPainter.end();
+            int cost(pix->width()*pix->height()*(pix->depth()/8));
 
-                if(horiz)
-                {
-                    r1.setHeight(r1.height()/2);
-                    r2.setY(r2.y()+r1.height());
-                }
-                else
-                {
-                    r1.setWidth(r1.width()/2);
-                    r2.setX(r2.x()+r1.width());
-                }
-                drawGradient(topA, topB, increase, &pixPainter, r1, horiz);
-                drawGradient(botA, botB, increase, &pixPainter, r2, horiz);
-            }
-            else if(!selected && APPEARANCE_BEVELLED==app &&
-                    ((horiz ? r.height()
-                            : r.width()) > (((WIDGET_BUTTON(w) ? 2 : 1)*BEVEL_BORDER(w))+4)))
-            {
-                if(WIDGET_LISTVIEW_HEADER==w)
-                {
-                    QColor bot;
-                    QRect  r1(r), r2(r);
+            if(cost<itsPixmapCache.maxCost())
+                itsPixmapCache.insert(key, pix, cost);
+            else
+                inCache=false;
+        }
 
-                    if(horiz)
-                    {
-                        r2.setHeight(BEVEL_BORDER(w));
-                        r1.setHeight(r.height()-r2.height());
-                        r2.moveTop(r.y()+r1.height());
-                    }
-                    else
-                    {
-                        r2.setWidth(BEVEL_BORDER(w));
-                        r1.setWidth(r.width()-r2.width());
-                        r2.moveLeft(r.x()+r1.width());
-                    }
-                    shade(base, &bot, SHADE_BEVEL_BOT(w));
-                    pixPainter.fillRect(r1, base);
-                    drawGradient(base, bot, true, &pixPainter, r2, horiz);
-                }
-                else
-                {
-                    QColor bot, midTop, midBot, top;
-                    QRect  r1(r), r2(r), r3(r);
+        p->drawTiledPixmap(origRect, *pix);
+        if(!inCache)
+            delete pix;
+    }
+}
 
-                    if(horiz)
-                    {
-                        r1.setHeight(BEVEL_BORDER(w));
-                        r3.setHeight(BEVEL_BORDER(w));
-                        r2.setHeight(r.height()-(r1.height()+r3.height()));
-                        r2.moveTop(r.y()+r1.height());
-                        r3.moveTop(r.y()+r1.height()+r2.height());
-                    }
-                    else
-                    {
-                        r1.setWidth(BEVEL_BORDER(w));
-                        r3.setWidth(BEVEL_BORDER(w));
-                        r2.setWidth(r.width()-(r1.width()+r3.width()));
-                        r2.moveLeft(r.x()+r1.width());
-                        r3.moveLeft(r.x()+r1.width()+r2.width());
-                    }
+void QtCurveStyle::drawBevelGradientReal(const QColor &base, QPainter *p, const QRect &r, bool horiz, bool sel, EAppearance app, EWidget w) const
+{
 
-                    shade(base, &top, SHADE_BEVEL_TOP);
-                    shade(base, &midTop, SHADE_BEVEL_MID_TOP);
-                    shade(base, &midBot, SHADE_BEVEL_MID_BOT);
-                    shade(base, &bot, SHADE_BEVEL_BOT(w));
-                    drawGradient(top, midTop, true, &pixPainter, r1, horiz);
-                    drawGradient(midTop, midBot, true, &pixPainter, r2, horiz);
-                    drawGradient(midBot, bot, true, &pixPainter, r3, horiz);
-                }
-            }
+    const Gradient *grad=getGradient(app, &opts);
+    int            numStops(grad->stops.size()),
+                   lastPos(0),
+                   size(horiz ? r.height() : r.width());
+    bool           topTab(WIDGET_TAB_TOP==w),
+                   botTab(WIDGET_TAB_BOT==w);
+    QColor         prev;
+
+    if(botTab)
+    {
+        GradientStopCont::reverse_iterator it(grad->stops.rbegin()),
+                                           end(grad->stops.rend());
+
+        for(int i=0; it!=end; ++it, ++i)
+        {
+            QColor col;
+            int    pos((int)(((1.0-(*it).pos)*size)+0.5));
+
+            if(sel && 0==i)
+                col=base;
             else
-            {
-                QColor top,
-                       bot,
-                       baseTopCol(opts.colorSelTab && sel && (WIDGET_TAB_TOP==w || WIDGET_TAB_BOT==w)
-                                      ? midColor(base, itsMenuitemCols[0], QTC_COLOR_SEL_TAB_FACTOR) : base);
+                shade(base, &col, opts.invertBotTab ? QMAX(INVERT_SHADE((*it).val), 0.9) : (*it).val);
+
+            if(/*sel && */opts.colorSelTab && i>0)
+                col=tint(col, itsHighlightCols[0], (1.0-(*it).pos)*(0.2+TO_ALPHA(opts.colorSelTab)));
+
+            if(i)
+                drawGradient(prev, col, p,
+                             horiz
+                                ? QRect(r.x(), lastPos, r.width(), pos-lastPos)
+                                : QRect(lastPos, r.y(), pos-lastPos, r.height()),
+                             horiz);
+            prev=col;
+            lastPos=pos;
+        }
+    }
+    else
+    {
+        GradientStopCont::const_iterator it(grad->stops.begin()),
+                                         end(grad->stops.end());
 
-                if(equal(1.0, shadeTop))
-                    top=baseTopCol;
-                else
-                    shade(baseTopCol, &top, shadeTop);
-                if(equal(1.0, shadeBot))
-                    bot=base;
-                else
-                    shade(base, &bot, shadeBot);
+        for(int i=0; it!=end; ++it, ++i)
+        {
+            QColor col;
+            int    pos((int)(((*it).pos*size)+0.5));
 
-                drawGradient(top, bot, sel || APPEARANCE_INVERTED!=app ? increase : !increase,
-                             &pixPainter, r, horiz);
-            }
-            pixPainter.end();
-            itsPixmapCache.insert(key, pix, pix->width()*pix->height()*(pix->depth()/8));
+            if(/*sel && */topTab && i==numStops-1)
+                col=base;
+            else
+                shade(base, &col, WIDGET_TAB_BOT==w ? QMAX((*it).val, 0.9) : (*it).val);
+
+            if(sel && opts.colorSelTab && topTab && i<numStops-1)
+                col=tint(col, itsHighlightCols[0], (1.0-(*it).pos)*(0.2+TO_ALPHA(opts.colorSelTab)));
+
+            if(i)
+                drawGradient(prev, col, p,
+                             horiz
+                                ? QRect(r.x(), lastPos, r.width(), pos-lastPos)
+                                : QRect(lastPos, r.y(), pos-lastPos, r.height()),
+                             horiz);
+            prev=col;
+            lastPos=pos;
         }
-        p->drawTiledPixmap(origRect, *pix);
     }
 }
 
-void QtCurveStyle::drawGradient(const QColor &top, const QColor &bot, bool increase,
+void QtCurveStyle::drawGradient(const QColor &top, const QColor &bot,
                                 QPainter *p, QRect const &r, bool horiz) const
 {
     if(r.width()>0 && r.height()>0)
@@ -5535,48 +7395,26 @@ void QtCurveStyle::drawGradient(const QColor &top, const QColor &bot, bool incre
                 dg(((1<<16) * (bot.green() - gTop)) / size),
                 db(((1<<16) * (bot.blue() - bTop)) / size);
 
-            if(increase)
-                if(horiz)
+            if(horiz)
+            {
+                for (i=0; i < size; i++)
                 {
-                    for (i=0; i < size; i++)
-                    {
-                        p->setPen(QColor(rl>>16, gl>>16, bl>>16));
-                        p->drawLine(rx, ry+i, rx2, ry+i);
-                        rl += dr;
-                        gl += dg;
-                        bl += db;
-                    }
+                    p->setPen(QColor(rl>>16, gl>>16, bl>>16));
+                    p->drawLine(rx, ry+i, rx2, ry+i);
+                    rl += dr;
+                    gl += dg;
+                    bl += db;
                 }
-                else
-                    for(i=0; i < size; i++)
-                    {
-                        p->setPen(QColor(rl>>16, gl>>16, bl>>16));
-                        p->drawLine(rx+i, ry, rx+i, ry2);
-                        rl += dr;
-                        gl += dg;
-                        bl += db;
-                    }
+            }
             else
-                if(horiz)
+                for(i=0; i < size; i++)
                 {
-                    for(i=size-1; i>=0; i--)
-                    {
-                        p->setPen(QColor(rl>>16, gl>>16, bl>>16));
-                        p->drawLine(rx, ry+i, rx2, ry+i);
-                        rl += dr;
-                        gl += dg;
-                        bl += db;
-                    }
+                    p->setPen(QColor(rl>>16, gl>>16, bl>>16));
+                    p->drawLine(rx+i, ry, rx+i, ry2);
+                    rl += dr;
+                    gl += dg;
+                    bl += db;
                 }
-                else
-                    for(i=size-1; i>=0; i--)
-                    {
-                        p->setPen(QColor(rl>>16, gl>>16, bl>>16));
-                        p->drawLine(rx+i, ry, rx+i, ry2);
-                        rl += dr;
-                        gl += dg;
-                        bl += db;
-                    }
         }
     }
 }
@@ -5596,34 +7434,44 @@ void QtCurveStyle::drawSbSliderHandle(QPainter *p, const QRect &orig, const QCol
         flags|=Style_Horizontal;
     flags|=Style_Raised;
 
-    drawLightBevel(p, r, cg, flags, slider
-#ifndef QTC_SIMPLE_SCROLLBARS
-                        || SCROLLBAR_NONE==opts.scrollbarType
+    drawLightBevel(p, r, cg, flags, (slider && !(opts.square&SQUARE_SLIDER))
+#ifndef SIMPLE_SCROLLBARS
+                        || (!slider && !(opts.square&SQUARE_SB_SLIDER) && (SCROLLBAR_NONE==opts.scrollbarType || opts.flatSbarButtons))
 #endif
                         ? ROUNDED_ALL : ROUNDED_NONE,
-                   getFill(flags, use), use, true, false, WIDGET_SB_SLIDER);
-
-    const QColor *markers(/*opts.coloredMouseOver && flags&Style_MouseOver
-                              ? SHADE_NONE==shade ? itsMouseOverCols : itsBackgroundCols
-                              : */use);
-    if(flags & Style_Horizontal)
-        r.setX(r.x()+1);
-    else
-        r.setY(r.y()+1);
+                   getFill(flags, use, false, SHADE_DARKEN==opts.shadeSliders), use, true, false, WIDGET_SB_SLIDER);
 
     if(LINE_NONE!=opts.sliderThumbs && (slider || ((flags & Style_Horizontal && r.width()>=min)|| r.height()>=min)))
+    {
+        const QColor *markers(/*opts.coloredMouseOver && flags&Style_MouseOver
+                            ? itsMouseOverCols
+                            : */use);
+        bool         horiz(flags&Style_Horizontal);
+
+        if(LINE_SUNKEN==opts.sliderThumbs)
+            if(horiz)
+                r.addCoords(0, -1, 0, 0);
+            else
+                r.addCoords(-1, 0, 0, 0);
+        else
+            r.addCoords(horiz ? 1 : 0, horiz ? 0 : 1, 0, 0);
+    
         switch(opts.sliderThumbs)
         {
             case LINE_FLAT:
-                drawLines(p, r, !(flags & Style_Horizontal), 3, 5, markers, 0, 5, 0, false);
+                drawLines(p, r, !horiz, 3, 5, markers, 0, 5, opts.sliderThumbs);
                 break;
             case LINE_SUNKEN:
-                drawLines(p, r, !(flags & Style_Horizontal), 4, 3, markers, 0, 3);
+                drawLines(p, r, !horiz, 4, 3, markers, 0, 3, opts.sliderThumbs);
+                break;
+            case LINE_1DOT:
+                drawDot(p, r, markers);
                 break;
             case LINE_DOTS:
             default:
-                drawDots(p, r, !(flags & Style_Horizontal), slider ? 3 : 5, slider ? 5 : 2, markers, 0, 5);
+                drawDots(p, r, !horiz, slider ? 3 : 5, slider ? 5 : 2, markers, 0, 5);
         }
+    }
 }
 
 void QtCurveStyle::drawSliderHandle(QPainter *p, const QRect &r, const QColorGroup &cg,
@@ -5631,24 +7479,29 @@ void QtCurveStyle::drawSliderHandle(QPainter *p, const QRect &r, const QColorGro
 {
     bool horiz(SLIDER_TRIANGULAR==opts.sliderStyle ? r.height()>r.width() : r.width()>r.height());
 
-    if(SLIDER_TRIANGULAR==opts.sliderStyle || (SLIDER_ROUND==opts.sliderStyle && ROUND_FULL==opts.round))
+    if(SLIDER_TRIANGULAR==opts.sliderStyle || ((SLIDER_ROUND==opts.sliderStyle || SLIDER_ROUND_ROTATED==opts.sliderStyle) && FULLLY_ROUNDED))
     {
-        const QColor     *use(sliderColors(/*cg, */flags));
-        const QColor     &fill(getFill(flags, use));
+        const QColor     *use(sliderColors(/*cg, */flags)),
+                         *border(flags&Style_MouseOver && (MO_GLOW==opts.coloredMouseOver ||
+                                                           MO_COLORED==opts.coloredMouseOver)
+                                    ? itsMouseOverCols : use);
+        const QColor     &fill(getFill(flags, use, false, SHADE_DARKEN==opts.shadeSliders));
         int              x(r.x()),
                          y(r.y()),
                          xo(horiz ? 8 : 0),
                          yo(horiz ? 0 : 8);
         PrimitiveElement direction(horiz ? PE_ArrowDown : PE_ArrowRight);
         bool             drawLight(MO_PLASTIK!=opts.coloredMouseOver || !(flags&Style_MouseOver) ||
-                                   (SLIDER_ROUND==opts.sliderStyle &&
+                                   ((SLIDER_ROUND==opts.sliderStyle || SLIDER_ROUND_ROTATED)==opts.sliderStyle &&
                                     (SHADE_BLEND_SELECTED==opts.shadeSliders || SHADE_SELECTED==opts.shadeSliders)));
-        int              size(SLIDER_TRIANGULAR==opts.sliderStyle ? 15 : 13);
+        int              size(SLIDER_TRIANGULAR==opts.sliderStyle ? 15 : 13),
+                         borderVal(itsMouseOverCols==border ? SLIDER_MO_BORDER_VAL : BORDER_VAL(flags&Style_Enabled));
 
-        if(horiz)
-            y++;
-        else
-            x++;
+        if(SLIDER_ROUND_ROTATED!=opts.sliderStyle)
+            if(horiz)
+                y++;
+            else
+                x++;
 
         QPointArray clipRegion;
 
@@ -5694,13 +7547,13 @@ void QtCurveStyle::drawSliderHandle(QPainter *p, const QRect &r, const QColorGro
         if(!tb)
             p->fillRect(QRect(x, y, r.width()-(horiz ? 0 : 2), r.height()-(horiz ? 2 : 0)), cg.background());
         p->setClipRegion(QRegion(clipRegion)); // , QPainter::CoordPainter);
-        if(IS_FLAT(opts.appearance))
+        if(IS_FLAT(opts.sliderAppearance))
         {
             p->fillRect(r, fill);
-            if(MO_PLASTIK==opts.coloredMouseOver && flags&Style_MouseOver)
+            if(MO_PLASTIK==opts.coloredMouseOver && flags&Style_MouseOver && !opts.colorSliderMouseOver)
             {
-                int col(QTC_SLIDER_MO_SHADE),
-                    len(QTC_SLIDER_MO_LEN);
+                int col(SLIDER_MO_SHADE),
+                    len(SLIDER_MO_LEN);
 
                 if(horiz)
                 {
@@ -5716,28 +7569,31 @@ void QtCurveStyle::drawSliderHandle(QPainter *p, const QRect &r, const QColorGro
         }
         else
         {
-            drawBevelGradient(fill, true, p, QRect(x, y, horiz ? r.width()-1 : size, horiz ? size : r.height()-1),
-                              horiz, SHADE_BEVEL_GRAD_LIGHT, SHADE_BEVEL_GRAD_DARK,
-                              false, opts.sliderAppearance);
+            drawBevelGradient(fill, p, QRect(x, y, horiz ? r.width()-1 : size, horiz ? size : r.height()-1),
+                              horiz, false, opts.sliderAppearance);
 
-            if(MO_PLASTIK==opts.coloredMouseOver && flags&Style_MouseOver)
+            if(MO_PLASTIK==opts.coloredMouseOver && flags&Style_MouseOver && !opts.colorSliderMouseOver)
             {
-                int col(QTC_SLIDER_MO_SHADE),
-                    len(QTC_SLIDER_MO_LEN);
+                int col(SLIDER_MO_SHADE),
+                    len(SLIDER_MO_LEN);
 
                 if(horiz)
                 {
-                    drawBevelGradient(itsMouseOverCols[col], true, p, QRect(x+1, y+1, len, size-2),
-                                      horiz, SHADE_BEVEL_GRAD_LIGHT, SHADE_BEVEL_GRAD_DARK, false, opts.sliderAppearance);
-                    drawBevelGradient(itsMouseOverCols[col], true, p, QRect(x+r.width()-(1+len), y+1, len, size-2),
-                                      horiz,SHADE_BEVEL_GRAD_LIGHT, SHADE_BEVEL_GRAD_DARK, false, opts.sliderAppearance);
+                    drawBevelGradient(itsMouseOverCols[col], p, QRect(x+1, y+1, len, size-2),
+                                      horiz, false, opts.sliderAppearance);
+                    drawBevelGradient(itsMouseOverCols[col], p,
+                                      QRect(x+r.width()-((SLIDER_ROUND_ROTATED==opts.sliderStyle ? 3 : 1)+len),
+                                            y+1, len, size-2),
+                                      horiz, false, opts.sliderAppearance);
                 }
                 else
                 {
-                    drawBevelGradient(itsMouseOverCols[col], true, p, QRect(x+1, y+1, size-2, len),
-                                      horiz, SHADE_BEVEL_GRAD_LIGHT, SHADE_BEVEL_GRAD_DARK, false, opts.sliderAppearance);
-                    drawBevelGradient(itsMouseOverCols[col], true, p, QRect(x+1, y+r.height()-(1+len), size-2, len),
-                                      horiz, SHADE_BEVEL_GRAD_LIGHT, SHADE_BEVEL_GRAD_DARK, false, opts.sliderAppearance);
+                    drawBevelGradient(itsMouseOverCols[col], p, QRect(x+1, y+1, size-2, len),
+                                      horiz, false, opts.sliderAppearance);
+                    drawBevelGradient(itsMouseOverCols[col], p,
+                                      QRect(x+1, y+r.height()-((SLIDER_ROUND_ROTATED==opts.sliderStyle ? 3 : 1)+len),
+                                            size-2, len),
+                                      horiz, false, opts.sliderAppearance);
                 }
             }
         }
@@ -5769,20 +7625,20 @@ void QtCurveStyle::drawSliderHandle(QPainter *p, const QRect &r, const QColorGro
                     light.setPoints(3, x+1, y+8,   x+1, y+1,  x+9, y+1);
             }
 
-            p->setPen(midColor(use[QT_STD_BORDER], cg.background()));
+            p->setPen(midColor(border[borderVal], cg.background()));
             p->drawPolygon(aa);
             if(drawLight)
             {
                 p->setPen(use[APPEARANCE_DULL_GLASS==opts.sliderAppearance ? 1 : 0]);
                 p->drawPolyline(light);
             }
-            p->setPen(use[QT_STD_BORDER]);
+            p->setPen(border[borderVal]);
             p->drawPolygon(clipRegion);
         }
         else
         {
             p->drawPixmap(x, y,
-                        *getPixmap(use[opts.coloredMouseOver && flags&Style_MouseOver ? 4 : QT_BORDER(flags&Style_Enabled)],
+                        *getPixmap(border[borderVal],
                                     horiz ? PIX_SLIDER : PIX_SLIDER_V, 0.8));
             if(drawLight)
                 p->drawPixmap(x, y, *getPixmap(use[0], horiz ? PIX_SLIDER_LIGHT : PIX_SLIDER_LIGHT_V));
@@ -5793,10 +7649,11 @@ void QtCurveStyle::drawSliderHandle(QPainter *p, const QRect &r, const QColorGro
     {
         QRect sr(r);
 
-        if(horiz)
-            sr.addCoords(0, 1, 0, 0);
-        else
-            sr.addCoords(1, 0, 0, 0);
+        if(!ROTATED_SLIDER)
+            if(horiz)
+                sr.addCoords(0, 1, 0, 0);
+            else
+                sr.addCoords(1, 0, 0, 0);
 
         drawSbSliderHandle(p, sr, cg, flags|(horiz ? Style_Horizontal : 0), true);
     }
@@ -5809,77 +7666,75 @@ void QtCurveStyle::drawSliderGroove(QPainter *p, const QRect &r, const QColorGro
     QRect         groove(r);
     bool          horiz(Qt::Horizontal==sliderWidget->orientation()),
                   reverse(QApplication::reverseLayout());
-    const QColor  &usedCol=itsSliderCols
-                            ? itsSliderCols[ORIGINAL_SHADE]
-                            : itsMouseOverCols
-                                ? itsMouseOverCols[ORIGINAL_SHADE]
-                                : itsMenuitemCols[1];
 
+    flags&=~Style_MouseOver;
     if(horiz)
     {
         int dh=(groove.height()-5)>>1;
         groove.addCoords(0, dh, 0, -dh);
         flags|=Style_Horizontal;
+
+        if(!itsFormMode && DO_EFFECT)
+            groove.addCoords(0, -1, 0, 1);
     }
     else
     {
         int dw=(groove.width()-5)>>1;
         groove.addCoords(dw, 0, -dw, 0);
+
+        if(!itsFormMode && DO_EFFECT)
+            groove.addCoords(-1, 0, 1, 0);
     }
 
-    drawLightBevel(p, groove, cg, flags|Style_Down, ROUNDED_ALL, itsBackgroundCols[flags&Style_Enabled ? 2 : ORIGINAL_SHADE],
+    drawLightBevel(p, groove, cg, flags, opts.square&SQUARE_SLIDER ? ROUNDED_NONE : ROUNDED_ALL,
+                   itsBackgroundCols[flags&Style_Enabled ? 2 : ORIGINAL_SHADE],
                    itsBackgroundCols, true, true, WIDGET_SLIDER_TROUGH);
 
-    if(opts.fillSlider && sliderWidget->maxValue()!=sliderWidget->minValue() && flags&Style_Enabled)
+    if(opts.fillSlider && (horiz ? sliderWidget->value()>0 : sliderWidget->value()<sliderWidget->maxValue()) && 
+       sliderWidget->maxValue()!=sliderWidget->minValue() && flags&Style_Enabled)
     {
-        QRect used(groove);
-        int   pos((int)(((double)(horiz ? groove.width() : groove.height()) /
+        QRect        used(groove);
+        int          pos((int)(((double)(horiz ? groove.width() : groove.height()) /
                                      (sliderWidget->maxValue()-sliderWidget->minValue()))  *
-                                 (sliderWidget->value() - sliderWidget->minValue())));
-
-        if(horiz)
+                                     (sliderWidget->value() - sliderWidget->minValue())));
+        if(pos>0)
         {
-            pos+=(groove.width()>10 && pos<(groove.width()/2)) ? 3 : 0;
-            if(reverse)
-                used.addCoords(groove.width()-pos, 0, 0, 0);
+            const QColor *usedCols=itsSliderCols ? itsSliderCols : itsHighlightCols;
+
+            if(horiz)
+            {
+                pos+=(groove.width()>10 && pos<(groove.width()/2)) ? 3 : 0;
+                if(reverse)
+                    used.addCoords(groove.width()-pos, 0, 0, 0);
+                else
+                    used.addCoords(0, 0, -(groove.width()-pos), 0);
+            }
             else
-                used.addCoords(0, 0, -(groove.width()-pos), 0);
-        }
-        else
-        {
-            pos+=(groove.height()>10 && pos<(groove.height()/2)) ? 3 : 0;
-            used.addCoords(0, pos, 0, 0);
+            {
+                pos+=(groove.height()>10 && pos<(groove.height()/2)) ? 3 : 0;
+                used.addCoords(0, pos, 0, 0);
+            }
+            if(used.height()>0 && used.width()>0)
+                drawLightBevel(p, used, cg, flags, opts.square&SQUARE_SLIDER ? ROUNDED_NONE : ROUNDED_ALL,
+                               usedCols[ORIGINAL_SHADE], usedCols, true, true, WIDGET_FILLED_SLIDER_TROUGH);
         }
-        if(used.height()>0 && used.width()>0)
-            drawLightBevel(p, used, cg, flags|Style_Down, ROUNDED_ALL, usedCol, NULL,
-                           true, true, WIDGET_SLIDER_TROUGH);
     }
 }
 
 void QtCurveStyle::drawMenuOrToolBarBackground(QPainter *p, const QRect &r, const QColorGroup &cg,
                                                bool menu, bool horiz) const
 {
+    if(menu && APPEARANCE_STRIPED==opts.bgndAppearance && IS_FLAT(opts.menubarAppearance) && SHADE_NONE==opts.shadeMenubars)
+        return;
+
+    QRect       rx(r);
     EAppearance app(menu ? opts.menubarAppearance : opts.toolbarAppearance);
-    QColor      color(menu && itsActive ? itsMenubarCols[ORIGINAL_SHADE] : cg.background());
-    double      from(0.0), to(0.0);
+    QColor      color(menu ? menuColors(cg, itsActive)[ORIGINAL_SHADE] : cg.background());
 
-    switch(app)
-    {
-        default:
-        case APPEARANCE_GRADIENT:
-            from=SHADE_MENU_LIGHT;
-            to=SHADE_MENU_DARK;
-            break;
-        case APPEARANCE_FLAT:
-        case APPEARANCE_RAISED:
-            break;
-        case APPEARANCE_SHINY_GLASS:
-        case APPEARANCE_DULL_GLASS:
-            from=SHADE_BEVEL_GRAD_LIGHT;
-            to=SHADE_BEVEL_GRAD_DARK;
-    }
+    if(menu && BLEND_TITLEBAR)
+        rx.addCoords(0, -qtcGetWindowBorderSize().titleHeight, 0, 0);
 
-    drawBevelGradient(color, true, p, r, horiz, from, to, false, app);
+    drawBevelGradient(color, p, rx, horiz, false, app);
 }
 
 void QtCurveStyle::drawHandleMarkers(QPainter *p, const QRect &r, SFlags flags, bool tb,
@@ -5896,6 +7751,11 @@ void QtCurveStyle::drawHandleMarkers(QPainter *p, const QRect &r, SFlags flags,
 
     switch(handles)
     {
+        case LINE_NONE:
+            break;
+        case LINE_1DOT:
+            drawDot(p, r, border);
+            break;
         case LINE_DOTS:
             drawDots(p, r, !(flags & Style_Horizontal), 2,
                      APP_KICKER==itsThemedApp ? 1 : tb ? 5 : 3, border,
@@ -5907,37 +7767,53 @@ void QtCurveStyle::drawHandleMarkers(QPainter *p, const QRect &r, SFlags flags,
                 QRect r1(r.x()+(tb ? 2 : (r.width()-6)/2), r.y(), 3, r.height());
 
                 drawLines(p, r1, true, (r.height()-8)/2,
-                          tb ? 0 : (r.width()-5)/2, border, 0, 5, 0);
+                          tb ? 0 : (r.width()-5)/2, border, 0, 5, handles);
             }
             else
             {
                 QRect r1(r.x(), r.y()+(tb ? 2 : (r.height()-6)/2), r.width(), 3);
 
                 drawLines(p, r1, false, (r.width()-8)/2,
-                          tb ? 0 : (r.height()-5)/2, border, 0, 5, 0);
+                          tb ? 0 : (r.height()-5)/2, border, 0, 5, handles);
             }
             break;
         case LINE_FLAT:
             drawLines(p, r, !(flags & Style_Horizontal), 2,
                       APP_KICKER==itsThemedApp ? 1 : tb ? 4 : 2, border,
-                      APP_KICKER==itsThemedApp ? 1 : tb ? -2 : 0, 4, 0, false);
+                      APP_KICKER==itsThemedApp ? 1 : tb ? -2 : 0, 4, handles);
             break;
         default:
             drawLines(p, r, !(flags & Style_Horizontal), 2,
                       APP_KICKER==itsThemedApp ? 1 : tb ? 4 : 2, border,
-                      APP_KICKER==itsThemedApp ? 1 : tb ? -2 : 0, 3);
+                      APP_KICKER==itsThemedApp ? 1 : tb ? -2 : 0, 3, handles);
     }
 }
 
+void QtCurveStyle::drawHighlight(QPainter *p, const QRect &r, const QColorGroup &cg, bool horiz, bool inc) const
+{
+    QColor col1(midColor(cg.background(), itsMouseOverCols[ORIGINAL_SHADE]));
+    QRect  r2(r);
+
+    p->setPen(inc ? col1 : itsMouseOverCols[ORIGINAL_SHADE]);
+    p->drawLine(r2.x(), r2.y(), r2.x()+(horiz ? r2.width()-1 : 0), r2.y()+(horiz ? 0 : r2.height()-1));
+    p->setPen(inc ? itsMouseOverCols[ORIGINAL_SHADE] : col1);
+    r2.addCoords(horiz ? 0 : 1, horiz ? 1 : 0, horiz ? 0 : 1, horiz ? 1 : 0);
+    p->drawLine(r2.x(), r2.y(), r2.x()+(horiz ? r2.width()-1 : 0), r2.y()+(horiz ? 0 : r2.height()-1));
+}
+
 void QtCurveStyle::shadeColors(const QColor &base, QColor *vals) const
 {
-    QTC_SHADES
+    SHADES
+
+    bool   useCustom(USE_CUSTOM_SHADES(opts));
+    double hl=TO_FACTOR(opts.highlightFactor);
 
     for(int i=0; i<NUM_STD_SHADES; ++i)
-        shade(base, &vals[i], QTC_SHADE(opts.contrast, i));
-    shade(base, &vals[SHADE_ORIG_HIGHLIGHT], opts.highlightFactor);
-    shade(vals[4], &vals[SHADE_4_HIGHLIGHT], opts.highlightFactor);
-    shade(vals[2], &vals[SHADE_2_HIGHLIGHT], opts.highlightFactor);
+        shade(base, &vals[i], useCustom ? opts.customShades[i] : SHADE(opts.contrast, i));
+
+    shade(base, &vals[SHADE_ORIG_HIGHLIGHT], hl);
+    shade(vals[4], &vals[SHADE_4_HIGHLIGHT], hl);
+    shade(vals[2], &vals[SHADE_2_HIGHLIGHT], hl);
     vals[ORIGINAL_SHADE]=base;
 }
 
@@ -5952,10 +7828,17 @@ const QColor * QtCurveStyle::buttonColors(const QColorGroup &cg) const
     return itsButtonCols;
 }
 
+const QColor * QtCurveStyle::checkRadioColors(const QColorGroup &cg, SFlags flags) const
+{
+    return opts.crColor && flags&Style_Enabled && (flags&Style_On || !(flags&Style_Off))
+        ? itsCheckRadioSelCols
+        : buttonColors(cg);
+}
+
 const QColor * QtCurveStyle::sliderColors(/*const QColorGroup &cg, */ SFlags flags) const
 {
     return (flags&Style_Enabled)
-                ? SHADE_NONE!=opts.shadeSliders //&& cg.button()==itsButtonCols[ORIGINAL_SHADE]
+                ? SHADE_NONE!=opts.shadeSliders &&itsSliderCols && (!opts.colorSliderMouseOver || flags&Style_MouseOver)
                         ? itsSliderCols
                         : itsButtonCols // buttonColors(cg)
                 : itsBackgroundCols;
@@ -5989,7 +7872,7 @@ const QColor * QtCurveStyle::getSidebarButtons() const
         else
         {
             itsSidebarButtonsCols=new QColor [TOTAL_SHADES+1];
-            shadeColors(midColor(itsMenuitemCols[ORIGINAL_SHADE], itsButtonCols[ORIGINAL_SHADE]),
+            shadeColors(midColor(itsHighlightCols[ORIGINAL_SHADE], itsButtonCols[ORIGINAL_SHADE]),
                         itsSidebarButtonsCols);
         }
     }
@@ -6004,10 +7887,13 @@ void QtCurveStyle::setMenuColors(const QColorGroup &cg)
         case SHADE_NONE:
             memcpy(itsMenubarCols, itsBackgroundCols, sizeof(QColor)*(TOTAL_SHADES+1));
             break;
-        case SHADE_BLEND_SELECTED: // For menubars we dont actually blend...
+        case SHADE_BLEND_SELECTED:
+            shadeColors(midColor(itsHighlightCols[ORIGINAL_SHADE], itsBackgroundCols[ORIGINAL_SHADE]), itsMenubarCols);
+            break;
+        case SHADE_SELECTED:
             shadeColors(IS_GLASS(opts.appearance)
-                            ? shade(itsMenuitemCols[ORIGINAL_SHADE], MENUBAR_GLASS_SELECTED_DARK_FACTOR)
-                            : itsMenuitemCols[ORIGINAL_SHADE],
+                            ? shade(itsHighlightCols[ORIGINAL_SHADE], MENUBAR_GLASS_SELECTED_DARK_FACTOR)
+                            : itsHighlightCols[ORIGINAL_SHADE],
                         itsMenubarCols);
             break;
         case SHADE_CUSTOM:
@@ -6015,8 +7901,232 @@ void QtCurveStyle::setMenuColors(const QColorGroup &cg)
             break;
         case SHADE_DARKEN:
             shadeColors(shade(cg.background(), MENUBAR_DARK_FACTOR), itsMenubarCols);
+            break;
+        case SHADE_WINDOW_BORDER:
+            break;
+    }
+}
+
+const QColor * QtCurveStyle::menuColors(const QColorGroup &cg, bool active) const
+{
+    return SHADE_WINDOW_BORDER==opts.shadeMenubars
+            ? getMdiColors(cg, active)
+            : SHADE_NONE==opts.shadeMenubars || (opts.shadeMenubarOnlyWhenActive && !active)
+                ? backgroundColors(cg)
+                : itsMenubarCols;
+}
+
+void QtCurveStyle::setDecorationColors(bool init)
+{
+    if(!readKdeGlobals() && !init)
+        return;
+
+    if(opts.coloredMouseOver)
+    {
+        if(!itsMouseOverCols)
+            itsMouseOverCols=new QColor [TOTAL_SHADES+1];
+        shadeColors(kdeSettings.hover, itsMouseOverCols);
+    }
+    shadeColors(kdeSettings.focus, itsFocusCols);
+}
+
+const QColor * QtCurveStyle::getMdiColors(const QColorGroup &cg, bool active) const
+{
+    if(!itsActiveMdiColors)
+    {
+        itsActiveMdiTextColor=cg.text();
+        itsMdiTextColor=cg.text();
+
+        // Try to read kwin's settings...
+        if(useQt3Settings())
+        {
+            QFile f(QDir::homeDirPath()+"/.qt/qtrc");
+
+            if(f.open(IO_ReadOnly))
+            {
+                QTextStream in(&f);
+                bool        inPal(false);
+
+                while (!in.atEnd())
+                {
+                    QString line(in.readLine());
+
+                    if(inPal)
+                    {
+                        if(!itsActiveMdiColors && 0==line.find("activeBackground=#", false))
+                        {
+                            QColor col;
+
+                            setRgb(&col, line.mid(17).latin1());
+
+                            if(col!=itsBackgroundCols[ORIGINAL_SHADE])
+                            {
+                                itsActiveMdiColors=new QColor [TOTAL_SHADES+1]; 
+                                shadeColors(col, itsActiveMdiColors);
+                            }
+                        }
+                        else if(!itsMdiColors && 0==line.find("inactiveBackground=#", false))
+                        {
+                            QColor col;
+
+                            setRgb(&col, line.mid(19).latin1());
+                            if(col!=itsBackgroundCols[ORIGINAL_SHADE])
+                            {
+                                itsMdiColors=new QColor [TOTAL_SHADES+1];
+                                shadeColors(col, itsMdiColors);
+                            }
+                        }
+                        else if(0==line.find("activeForeground=#", false))
+                            setRgb(&itsActiveMdiTextColor, line.mid(17).latin1());
+                        else if(0==line.find("inactiveForeground=#", false))
+                            setRgb(&itsMdiTextColor, line.mid(19).latin1());
+                        else if (-1!=line.find('['))
+                            break;
+                    }
+                    else if(0==line.find("[KWinPalette]", false))
+                        inPal=true;
+                }
+                f.close();
+            }
+        }
+        else // KDE4
+        {
+            QFile f(kdeHome(false)+"/share/config/kdeglobals");
+
+            if(f.open(IO_ReadOnly))
+            {
+                QTextStream in(&f);
+                bool        inPal(false);
+
+                while (!in.atEnd())
+                {
+                    QString line(in.readLine());
+
+                    if(inPal)
+                    {
+                        if(!itsActiveMdiColors && 0==line.find("activeBackground=", false))
+                        {
+                            QColor col;
+
+                            setRgb(&col, QStringList::split(",", line.mid(17)));
+
+                            if(col!=itsBackgroundCols[ORIGINAL_SHADE])
+                            {
+                                itsActiveMdiColors=new QColor [TOTAL_SHADES+1];
+                                shadeColors(col, itsActiveMdiColors);
+                            }
+                        }
+                        else if(!itsMdiColors && 0==line.find("inactiveBackground=", false))
+                        {
+                            QColor col;
+
+                            setRgb(&col, QStringList::split(",", line.mid(19)));
+                            if(col!=itsBackgroundCols[ORIGINAL_SHADE])
+                            {
+                                itsMdiColors=new QColor [TOTAL_SHADES+1];
+                                shadeColors(col, itsMdiColors);
+                            }
+                        }
+                        else if(0==line.find("activeForeground=", false))
+                            setRgb(&itsActiveMdiTextColor, QStringList::split(",", line.mid(17)));
+                        else if(0==line.find("inactiveForeground=", false))
+                            setRgb(&itsMdiTextColor, QStringList::split(",", line.mid(19)));
+                        else if (-1!=line.find('['))
+                            break;
+                    }
+                    else if(0==line.find("[WM]", false))
+                        inPal=true;
+                }
+                f.close();
+            }
+        }
+
+        if(opts.shadeMenubarOnlyWhenActive && SHADE_WINDOW_BORDER==opts.shadeMenubars &&
+           itsActiveMdiColors[ORIGINAL_SHADE]==itsMdiColors[ORIGINAL_SHADE])
+            opts.shadeMenubarOnlyWhenActive=false;
+
+        if(!itsActiveMdiColors)
+            itsActiveMdiColors=(QColor *)itsBackgroundCols;
+        if(!itsMdiColors)
+            itsMdiColors=(QColor *)itsBackgroundCols;
+    }
+
+    return active ? itsActiveMdiColors : itsMdiColors;
+}
+
+#ifdef SET_MDI_WINDOW_BUTTON_POSITIONS
+void QtCurveStyle::readMdiPositions() const
+{
+    if(0==itsMdiButtons[0].size() && 0==itsMdiButtons[1].size())
+    {
+        // Set defaults...
+        itsMdiButtons[0].append(SC_TitleBarSysMenu);
+        itsMdiButtons[0].append(SC_TitleBarShadeButton);
+
+        //itsMdiButtons[1].append(SC_TitleBarContextHelpButton);
+        itsMdiButtons[1].append(SC_TitleBarMinButton);
+        itsMdiButtons[1].append(SC_TitleBarMaxButton);
+        itsMdiButtons[1].append(WINDOWTITLE_SPACER);
+        itsMdiButtons[1].append(SC_TitleBarCloseButton);
+
+        // Read in KWin settings...
+        QFile f(kdeHome(useQt3Settings())+"/share/config/kwinrc");
+
+        if(f.open(IO_ReadOnly))
+        {
+            QTextStream in(&f);
+            bool        inStyle(false);
+
+            while (!in.atEnd())
+            {
+                QString line(in.readLine());
+
+                if(inStyle)
+                {
+                    if(0==line.find("ButtonsOnLeft=", false))
+                    {
+                        itsMdiButtons[0].clear();
+                        parseWindowLine(line.mid(14), itsMdiButtons[0]);
+                    }
+                    else if(0==line.find("ButtonsOnRight=", false))
+                    {
+                        itsMdiButtons[1].clear();
+                        parseWindowLine(line.mid(15), itsMdiButtons[1]);
+                    }
+                    else if (-1!=line.find('['))
+                        break;
+                }
+                else if(0==line.find("[Style]", false))
+                    inStyle=true;
+            }
+            f.close();
+        }
+
+        // Designer uses shade buttons, not min/max - so if we dont have shade in our kwin config. then add this
+        // button near the max button...
+        if(-1==itsMdiButtons[0].findIndex(SC_TitleBarShadeButton) && -1==itsMdiButtons[1].findIndex(SC_TitleBarShadeButton))
+        {
+            int maxPos=itsMdiButtons[0].findIndex(SC_TitleBarMaxButton);
+
+            if(-1==maxPos) // Left doesnt have max button, assume right does and add shade there
+            {
+                int minPos=itsMdiButtons[1].findIndex(SC_TitleBarMinButton);
+                maxPos=itsMdiButtons[1].findIndex(SC_TitleBarMaxButton);
+
+                itsMdiButtons[1].insert(itsMdiButtons[1].find(minPos<maxPos ? (minPos==-1 ? 0 : minPos)
+                                                                            : (maxPos==-1 ? 0 : maxPos)), SC_TitleBarShadeButton);
+            }
+            else // Add to left button
+            {
+                int minPos=itsMdiButtons[0].findIndex(SC_TitleBarMinButton);
+
+                itsMdiButtons[1].insert(itsMdiButtons[1].find(minPos>maxPos ? (minPos==-1 ? 0 : minPos)
+                                                                            : (maxPos==-1 ? 0 : maxPos)), SC_TitleBarShadeButton);
+            }
+        }
     }
 }
+#endif
 
 bool QtCurveStyle::redrawHoverWidget(const QPoint &pos)
 {
@@ -6101,7 +8211,7 @@ bool QtCurveStyle::redrawHoverWidget(const QPoint &pos)
             }
             else
             {
-#if KDE_VERSION >= 0x30400 && KDE_VERSION < 0x30500
+#if defined KDE_VERSION && KDE_VERSION >= 0x30400 && KDE_VERSION < 0x30500
                 QToolButton *tb(::qt_cast<QToolButton *>(itsHoverWidget));
 
                 if(tb)
@@ -6110,8 +8220,8 @@ bool QtCurveStyle::redrawHoverWidget(const QPoint &pos)
                     return HOVER_KICKER==itsHover;
                 }
                 else
-                {
 #endif
+                {
                     QHeader *hd(::qt_cast<QHeader *>(itsHoverWidget));
 
                     if(hd)
@@ -6125,9 +8235,9 @@ bool QtCurveStyle::redrawHoverWidget(const QPoint &pos)
                         bool redraw(false);
 
                         itsHover=rect.contains(pos) ? HOVER_HEADER : HOVER_NONE;
-                        itsHoverSect=QTC_NO_SECT;
+                        itsHoverSect=NO_SECT;
 
-                        for(s=0; s<hd->count() && (QTC_NO_SECT==itsHoverSect || !redraw); ++s)
+                        for(s=0; s<hd->count() && (NO_SECT==itsHoverSect || !redraw); ++s)
                         {
                             QRect r(hd->sectionRect(s));
                             bool  hasNew(r.contains(pos));
@@ -6161,12 +8271,13 @@ bool QtCurveStyle::redrawHoverWidget(const QPoint &pos)
                             else if(down.contains(pos))
                                 itsHover=HOVER_SW_DOWN;
                             else
-                                itsHover=HOVER_NONE;
+                                itsHover=HOVER_SW_ENTRY;
 
                             return (HOVER_SW_UP==itsHover && !up.contains(itsOldPos)) ||
                                    (HOVER_SW_UP!=itsHover && up.contains(itsOldPos)) ||
                                    (HOVER_SW_DOWN==itsHover && !down.contains(itsOldPos)) ||
-                                   (HOVER_SW_DOWN!=itsHover && down.contains(itsOldPos));
+                                   (HOVER_SW_DOWN!=itsHover && down.contains(itsOldPos)) ||
+                                   (HOVER_SW_ENTRY==itsHover);
                         }
                         else
                         {
@@ -6202,23 +8313,32 @@ bool QtCurveStyle::redrawHoverWidget(const QPoint &pos)
                                         if(arrow.contains(pos))
                                             itsHover=HOVER_CB_ARROW;
                                         else
-                                            itsHover=HOVER_NONE;
+                                        {
+                                            QRect r(cb->rect());
+                                            if(QApplication::reverseLayout())
+                                                r.addCoords(6, 0, 0, 0);
+                                            else
+                                                r.addCoords(0, 0, -6, 0);
+                                            if(DO_EFFECT && opts.etchEntry)
+                                                r.addCoords(1, 0, -1, 0);
+                                            if(r.contains(pos))
+                                                itsHover=HOVER_CB_ENTRY;
+                                            else
+                                                itsHover=HOVER_NONE;
+                                        }
                                     }
 
                                    return (HOVER_CB_ARROW==itsHover && !arrow.contains(itsOldPos)) ||
-                                          (HOVER_CB_ARROW!=itsHover && arrow.contains(itsOldPos));
+                                          (HOVER_CB_ARROW!=itsHover && arrow.contains(itsOldPos)) ||
+                                          (HOVER_CB_ENTRY==itsHover);
                                 }
                                 else
                                     return itsOldPos==QPoint(-1, -1);
 
                             }
                         }
-#if KDE_VERSION >= 0x30400 && KDE_VERSION < 0x30500
                     }
-#endif
-#if KDE_VERSION >= 0x30400
                 }
-#endif
             }
 #if QT_VERSION >= 0x030200
         }
@@ -6228,19 +8348,19 @@ bool QtCurveStyle::redrawHoverWidget(const QPoint &pos)
     return false;
 }
 
-const QColor & QtCurveStyle::getFill(SFlags flags, const QColor *use) const
+const QColor & QtCurveStyle::getFill(SFlags flags, const QColor *use, bool cr, bool darker) const
 {
     return !(flags&Style_Enabled)
-               ? use[ORIGINAL_SHADE]
+               ? use[darker ? 2 : ORIGINAL_SHADE]
                : flags&Style_Down
-                   ? use[4]
+                   ? use[darker ? 5 : 4]
                    : flags&Style_MouseOver
-                         ? flags&(Style_On | Style_Sunken)
-                               ? use[SHADE_4_HIGHLIGHT]
-                               : use[SHADE_ORIG_HIGHLIGHT]
-                         : flags&(Style_On | Style_Sunken)
-                               ? use[4]
-                               : use[ORIGINAL_SHADE];
+                         ? !cr && (flags&(Style_On | Style_Sunken))
+                               ? use[darker ? 3 : SHADE_4_HIGHLIGHT]
+                               : use[darker ? SHADE_2_HIGHLIGHT : SHADE_ORIG_HIGHLIGHT]
+                         : !cr && (flags&(Style_On | Style_Sunken))
+                               ? use[darker ? 5 : 4]
+                               : use[darker ? 2 : ORIGINAL_SHADE];
 }
 
 const QColor & QtCurveStyle::getTabFill(bool current, bool highlight, const QColor *use) const
@@ -6252,6 +8372,59 @@ const QColor & QtCurveStyle::getTabFill(bool current, bool highlight, const QCol
                 : use[2];
 }
 
+const QColor & QtCurveStyle::menuStripeCol() const
+{
+    switch(opts.menuStripe)
+    {
+        default:
+        case SHADE_NONE:
+            return itsBackgroundCols[ORIGINAL_SHADE];
+        case SHADE_CUSTOM:
+            return opts.customMenuStripeColor;
+        case SHADE_BLEND_SELECTED:
+            // Hack! Use opts.customMenuStripeColor to store this setting!
+            if(IS_BLACK(opts.customMenuStripeColor))
+                opts.customMenuStripeColor=midColor(itsHighlightCols[ORIGINAL_SHADE],
+                                opts.lighterPopupMenuBgnd<0
+                                    ? itsLighterPopupMenuBgndCol
+                                    : itsBackgroundCols[ORIGINAL_SHADE]);
+            return opts.customMenuStripeColor;
+        case SHADE_SELECTED:
+            return itsHighlightCols[MENU_STRIPE_SHADE];
+        case SHADE_DARKEN:
+            return USE_LIGHTER_POPUP_MENU
+                ? itsLighterPopupMenuBgndCol
+                : itsBackgroundCols[MENU_STRIPE_SHADE];
+    }
+}
+
+const QColor & QtCurveStyle::checkRadioCol(SFlags flags, const QColorGroup &cg) const
+{
+    if(flags&MENU_ITEM)
+        return flags&Style_Enabled && flags&Style_Active && opts.useHighlightForMenu
+                    ? cg.highlightedText()
+                    : cg.foreground();
+
+    return flags&Style_Enabled
+                ? itsCheckRadioCol
+                : opts.crButton
+                    ? cg.buttonText()
+                    : cg.text();
+}
+
+QColor QtCurveStyle::shade(const QColor &a, float k) const
+{
+    QColor mod;
+
+    ::shade(&opts, a, &mod, k);
+    return mod;
+}
+
+void QtCurveStyle::shade(const color &ca, color *cb, double k) const
+{
+    ::shade(&opts, ca, cb, k);
+}
+
 QPixmap * QtCurveStyle::getPixelPixmap(const QColor col) const
 {
     QRgb    rgb(col.rgb());
@@ -6274,6 +8447,68 @@ QPixmap * QtCurveStyle::getPixelPixmap(const QColor col) const
     return pix;
 }
 
+QPixmap * QtCurveStyle::createStripePixmap(const QColor &col, bool forWindow) const
+{
+    QRgb    rgb(col.rgb());
+    QString key(createKey(rgb, forWindow ? 'S' : 's'));
+
+    QPixmap *pix=itsPixmapCache.find(key);
+
+    if(!pix)
+    {
+        QColor col2(shade(col, BGND_STRIPE_SHADE));
+        int    i,
+               adjust=forWindow ? qtcGetWindowBorderSize().titleHeight%4 : 0;
+
+        pix=new QPixmap(64, 64);
+        pix->fill(col.rgb());
+        
+        QPainter p;
+        p.begin(pix);
+        p.setPen(QColor((3*col.red()+col2.red())/4,
+                        (3*col.green()+col2.green())/4,
+                        (3*col.blue()+col2.blue())/4));
+
+        for (i=1; i<68; i+=4)
+        {
+            p.drawLine(0, i-adjust, 63, i-adjust);
+            p.drawLine(0, i+2-adjust, 63, i+2-adjust);
+        }
+        p.setPen(col2);
+        for (i=2; i<67; i+=4)
+            p.drawLine(0, i-adjust, 63, i-adjust);
+        p.end();
+    }
+
+    return pix;
+}
+
+static QImage rotateImage(const QImage &img, double angle=90.0)
+{
+    QWMatrix matrix;
+    matrix.translate(img.width()/2, img.height()/2);
+    matrix.rotate(angle);
+
+    QRect newRect(matrix.mapRect(QRect(0, 0, img.width(), img.height())));
+
+    return img.xForm(QWMatrix(matrix.m11(), matrix.m12(), matrix.m21(), matrix.m22(),
+                              matrix.dx() - newRect.left(), matrix.dy() - newRect.top()));
+}
+
+static void recolour(QImage &img, const QColor &col, double shade)
+{
+    if (img.depth()<32)
+        img=img.convertDepth(32);
+
+    adjustPix(img.bits(), 4, img.width(), img.height(), img.bytesPerLine(), col.red(), col.green(), col.blue(), shade);
+}
+
+void QtCurveStyle::drawDot(QPainter *p, const QRect &r, const QColor *cols) const
+{
+    QPixmap *pix=getPixmap(cols[STD_BORDER], PIX_DOT, 0.9);
+    p->drawPixmap(r.x()+((r.width()-pix->width())>>1), r.y()+((r.height()-pix->height())>>1), *pix);
+}
+
 QPixmap * QtCurveStyle::getPixmap(const QColor col, EPixmap p, double shade) const
 {
     QRgb    rgb(col.rgb());
@@ -6291,11 +8526,14 @@ QPixmap * QtCurveStyle::getPixmap(const QColor col, EPixmap p, double shade) con
             case PIX_RADIO_BORDER:
                 img.loadFromData(qembed_findData("radio_frame.png"));
                 break;
+            case PIX_RADIO_INNER:
+                img.loadFromData(qembed_findData("radio_inner.png"));
+                break;
             case PIX_RADIO_LIGHT:
                 img.loadFromData(qembed_findData("radio_light.png"));
                 break;
             case PIX_RADIO_ON:
-                img.loadFromData(qembed_findData("radio_on.png"));
+                img.loadFromData(qembed_findData(opts.smallRadio ? "radio_on_small.png" : "radio_on.png"));
                 break;
             case PIX_CHECK:
                 img.loadFromData(qembed_findData(opts.xCheck ? "check_x_on.png" : "check_on.png"));
@@ -6307,18 +8545,24 @@ QPixmap * QtCurveStyle::getPixmap(const QColor col, EPixmap p, double shade) con
                 img.loadFromData(qembed_findData("slider_light.png"));
                 break;
             case PIX_SLIDER_V:
-                img.loadFromData(qembed_findData("slider_v.png"));
+                img.loadFromData(qembed_findData("slider.png"));
+                img=rotateImage(img);
                 break;
             case PIX_SLIDER_LIGHT_V:
-                img.loadFromData(qembed_findData("slider_light_v.png"));
+                img.loadFromData(qembed_findData("slider_light.png"));
+                img=rotateImage(img).mirror(true, false);
+                break;
+            case PIX_DOT:
+                img.loadFromData(qembed_findData("dot.png"));
+                break;
+            default:
                 break;
         }
 
         if (img.depth()<32)
             img=img.convertDepth(32);
 
-        adjustPix(img.bits(), 4, img.width(), img.height(), img.bytesPerLine(), col.red(),
-                  col.green(), col.blue(), shade);
+        adjustPix(img.bits(), 4, img.width(), img.height(), img.bytesPerLine(), col.red(), col.green(), col.blue(), shade);
         pix->convertFromImage(img);
         itsPixmapCache.insert(key, pix, pix->depth()/8);
     }
@@ -6331,21 +8575,58 @@ void QtCurveStyle::setSbType()
     switch(opts.scrollbarType)
     {
         case SCROLLBAR_KDE:
-            this->setScrollBarType(KStyle::ThreeButtonScrollBar);
+            this->setScrollBarType(BASE_STYLE::ThreeButtonScrollBar);
             break;
         default:
         case SCROLLBAR_WINDOWS:
-            this->setScrollBarType(KStyle::WindowsStyleScrollBar);
+            this->setScrollBarType(BASE_STYLE::WindowsStyleScrollBar);
             break;
         case SCROLLBAR_PLATINUM:
-            this->setScrollBarType(KStyle::PlatinumStyleScrollBar);
+            this->setScrollBarType(BASE_STYLE::PlatinumStyleScrollBar);
             break;
         case SCROLLBAR_NEXT:
-            this->setScrollBarType(KStyle::NextStyleScrollBar);
+            this->setScrollBarType(BASE_STYLE::NextStyleScrollBar);
             break;
     }
 }
 
+void QtCurveStyle::resetHover()
+{
+    itsIsSpecialHover=false;
+    itsOldPos.setX(-1);
+    itsOldPos.setY(-1);
+    itsHoverWidget=0L;
+    itsHoverSect=NO_SECT;
+    itsHover=HOVER_NONE;
+    itsHoverTab=0L;
+}
+
+struct QtcMenuBar : public QMenuBar
+{
+    bool itemUnderPos(const QPoint &pos)
+    {
+        return -1!=itemAtPos(pos);
+    }
+};
+
+bool QtCurveStyle::isWindowDragWidget(QObject *o, const QPoint &pos)
+{
+   return  opts.windowDrag &&
+           (//qobject_cast<QDialog*>(o) ||
+           (::qt_cast<QMenuBar*>(o) && (pos.isNull() || !((QtcMenuBar *)o)->itemUnderPos(pos)))
+            //|| qobject_cast<QGroupBox*>(o)
+            //|| (o->inherits("QToolButton") && !static_cast<QWidget*>(o)->isEnabled())
+//             || qobject_cast<QToolBar*>(o)
+            //|| qobject_cast<QDockWidget*>(o)
+
+//            || ((*appType == Hacks::SMPlayer) && o->inherits(SMPlayerVideoWidget))
+//            || ((*appType == Hacks::Dragon) && o->inherits(DragonVideoWidget))
+
+//            || o->inherits("QStatusBar")
+//            || (o->inherits("QLabel") && o->parent() && o->parent()->inherits("QStatusBar"))
+           );
+}
+
 void QtCurveStyle::updateProgressPos()
 {
     // Taken from lipstik!
@@ -6354,19 +8635,19 @@ void QtCurveStyle::updateProgressPos()
     bool                          visible(false);
     for (; it!=end; ++it)
     {
-        if (!::qt_cast<QProgressBar*>(it.key()))
-            continue;
-
         QProgressBar *pb(::qt_cast<QProgressBar*>(it.key()));
 
-        if (it.key() -> isEnabled() && pb -> progress()!=pb->totalSteps())
+        if (!pb)
+            continue;
+
+        if(pb->isEnabled() && pb->progress()!=pb->totalSteps())
         {
             // update animation Offset of the current Widget
             it.data() = (it.data() + (QApplication::reverseLayout() ? -1 : 1))
                         % (PROGRESS_CHUNK_WIDTH*2);
-            it.key()->update();
+            pb->update();
         }
-        if (it.key()->isVisible())
+        if(pb->isVisible())
             visible = true;
     }
     if (!visible)
@@ -6391,4 +8672,10 @@ void QtCurveStyle::khtmlWidgetDestroyed(QObject *o)
     itsKhtmlWidgets.remove(static_cast<const QWidget *>(o));
 }
 
+void QtCurveStyle::hoverWidgetDestroyed(QObject *o)
+{
+    if(o==itsHoverWidget)
+        resetHover();
+}
+
 #include "qtcurve.moc"
diff --git a/style/qtcurve.h b/style/qtcurve.h
index f021dd3..cccfb8f 100644
--- a/style/qtcurve.h
+++ b/style/qtcurve.h
@@ -2,7 +2,7 @@
 #define __QTCURVE_H__
 
 /*
-  QtCurve (C) Craig Drummond, 2003 - 2007 Craig.Drummond@lycos.co.uk
+  QtCurve (C) Craig Drummond, 2003 - 2010 craig.p.drummond@gmail.com
 
   ----
 
@@ -51,31 +51,30 @@
 */
 
 #include "config.h"
+#ifdef QTC_QT_ONLY
+#include "qtc_kstyle.h"
+#else
 #include <kdeversion.h>
 #include <kstyle.h>
+#endif
 #include <qcolor.h>
 #include <qpoint.h>
 #include <qpalette.h>
 #include <qpixmap.h>
 #include <qcache.h>
+#include <qvaluelist.h>
 #include "common.h"
 
 class QTimer;
 class QSlider;
 
-class HighContrastStyle : public KStyle
-{
-    Q_OBJECT
-
-    public:
-
-    HighContrastStyle();
-    virtual ~HighContrastStyle() { }
-
-    const char * className();
-};
+#ifdef QTC_QT_ONLY
+#define BASE_STYLE QtCKStyle
+#else
+#define BASE_STYLE KStyle
+#endif
 
-class QtCurveStyle : public HighContrastStyle
+class QtCurveStyle : public BASE_STYLE
 {
     Q_OBJECT
 
@@ -96,6 +95,8 @@ class QtCurveStyle : public HighContrastStyle
         APP_TORA,
         APP_KONTACT,
         APP_OPERA,
+        APP_SYSTEMSETTINGS,
+        APP_KATE,
         APP_OTHER
     };
 
@@ -112,14 +113,29 @@ class QtCurveStyle : public HighContrastStyle
         HOVER_KICKER,
         HOVER_SW_UP,
         HOVER_SW_DOWN,
-        HOVER_CB_ARROW
+        HOVER_SW_ENTRY,
+        HOVER_CB_ARROW,
+        HOVER_CB_ENTRY
     };
 
+    enum EntryColor
+    {
+        ENTRY_FOCUS,
+        ENTRY_MOUSE_OVER,
+        ENTRY_NONE
+    };
+
+#ifdef QTC_STYLE_SUPPORT
     QtCurveStyle(const QString &name=QString());
+#else
+    QtCurveStyle();
+#endif
+
     virtual ~QtCurveStyle();
 
     void polish(QApplication *app);
     void polish(QPalette &pal);
+    QColorGroup setColorGroup(const QColorGroup &old, const QColorGroup &act, bool dis=false);
     void polish(QWidget *widget);
     void unPolish(QWidget *widget);
     void drawLightBevel(QPainter *p, const QRect &r, const QColorGroup &cg, SFlags flags,
@@ -129,12 +145,16 @@ class QtCurveStyle : public HighContrastStyle
     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 drawGlow(QPainter *p, const QRect &r, const QColorGroup &cg, EWidget w, const QColor *cols=0) const;
+    void drawEtch(QPainter *p, const QRect &r, const QColorGroup &cg, bool raised=false, bool square=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;
+                    bool doCorners=true, EBorder borderProfile=BORDER_FLAT, bool blendBorderColors=true, int borderVal=STD_BORDER) const;
+    void drawMdiIcon(QPainter *painter, const QColor &color, const QColor &shadow, const QRect &r, bool sunken, int margin,
+                     SubControl button) const;
+    void drawWindowIcon(QPainter *painter, const QColor &color, const QRect &r, bool sunken, int margin, SubControl button) const;
     void drawEntryField(QPainter *p, const QRect &r, const QColorGroup &cg, SFlags flags,
-                        bool highlight, int round, EWidget=WIDGET_OTHER) const;
+                        EntryColor coloration, int round, EWidget=WIDGET_ENTRY) 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 &,
@@ -159,32 +179,40 @@ class QtCurveStyle : public HighContrastStyle
                            const QStyleOption & = QStyleOption::Default) const;
     int styleHint(StyleHint, const QWidget *widget= 0, const QStyleOption & = QStyleOption::Default,
                   QStyleHintReturn *returnData= 0) const;
+    void drawItem(QPainter *p, const QRect &r, int flags, const QColorGroup &cg, bool enabled,
+                  const QPixmap *pixmap, const QString &text, int len=-1, const QColor *penColor=0) const;
 
     protected:
 
     bool appIsNotEmbedded(QDialog *dlg);
     bool eventFilter(QObject *object, QEvent *event);
-    void drawMenuItem(QPainter *p, const QRect &r, const QColorGroup &cg,
+    void drawMenuItem(QPainter *p, const QRect &r, int flags, 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 drawBevelGradient(const QColor &base, QPainter *p, QRect const &r,
+                           bool horiz, bool sel, EAppearance bevApp, EWidget w=WIDGET_OTHER) const;
+    void drawBevelGradientReal(const QColor &base, QPainter *p, QRect const &r,
+                               bool horiz, bool sel, EAppearance bevApp, EWidget w=WIDGET_OTHER) const;
+    void drawGradient(const QColor &top, const QColor &bot, 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 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;
+    void drawHighlight(QPainter *p, const QRect &r, const QColorGroup &cg, bool horiz, bool inc) const;
 
     private:
 
+    static QColor shadowColor(const QColor col)
+    {
+        return qGray(col.rgb()) < 100 ? QColor(255, 255, 255) : QColor(0, 0, 0);
+    }
+
     void           shadeColors(const QColor &base, QColor *vals) const;
     const QColor * buttonColors(const QColorGroup &cg) const;
+    const QColor * checkRadioColors(const QColorGroup &cg, SFlags flags) const;
     const QColor * sliderColors(/*const QColorGroup &cg, */SFlags flags) const;
     const QColor * backgroundColors(const QColor &c) const;
     const QColor * backgroundColors(const QColorGroup &cg) const
@@ -192,15 +220,28 @@ class QtCurveStyle : public HighContrastStyle
     const QColor * borderColors(SFlags flags, const QColor *use) const;
     const QColor * getSidebarButtons() const;
     void           setMenuColors(const QColorGroup &cg);
+    const QColor * menuColors(const QColorGroup &cg, bool active) const;
+    void           setDecorationColors(bool init=false);
+    const QColor * getMdiColors(const QColorGroup &cg, bool active) const;
+#ifdef SET_MDI_WINDOW_BUTTON_POSITIONS
+    void           readMdiPositions() const;
+#endif
     bool           redrawHoverWidget(const QPoint &pos);
-    const QColor & getFill(SFlags flags, const QColor *use) const;
+    const QColor & getFill(SFlags flags, const QColor *use, bool cr=false, bool darker=false) const;
     const QColor & getListViewFill(SFlags flags, const QColor *use) const;
     const QColor & getTabFill(bool current,  bool highlight, const QColor *use) const;
-
+    const QColor & menuStripeCol() const;
+    const QColor & checkRadioCol(SFlags flags, const QColorGroup &cg) const;
+    QColor         shade(const QColor &a, float k) const;
+    void           shade(const color &ca, color *cb, double k) const;
+    void           drawDot(QPainter *p, const QRect &r, const QColor *cols) const;
     QPixmap *      getPixelPixmap(const QColor col) const;
     QPixmap *      getPixmap(const QColor col, EPixmap pix, double shade=1.0) const;
+    QPixmap *      createStripePixmap(const QColor &col, bool forWindow) const;
     void           setSbType();
     bool           isFormWidget(const QWidget *w) const { return itsKhtmlWidgets.contains(w); }
+    void           resetHover();
+    bool           isWindowDragWidget(QObject *o, const QPoint &pos=QPoint());
 
     private slots:
 
@@ -208,25 +249,35 @@ class QtCurveStyle : public HighContrastStyle
     void progressBarDestroyed(QObject *bar);
     void sliderThumbMoved(int val);
     void khtmlWidgetDestroyed(QObject *o);
+    void hoverWidgetDestroyed(QObject *o);
 
     private:
 
-    Options                    opts;
-    QColor                     itsMenuitemCols[TOTAL_SHADES+1],
+    mutable Options            opts;
+    QColor                     itsHighlightCols[TOTAL_SHADES+1],
                                itsBackgroundCols[TOTAL_SHADES+1],
                                itsMenubarCols[TOTAL_SHADES+1],
+                               itsFocusCols[TOTAL_SHADES+1],
                                *itsSliderCols,
                                *itsDefBtnCols,
                                *itsMouseOverCols,
+                               *itsComboBtnCols,
+                               *itsCheckRadioSelCols,
+                               *itsSortedLvColors,
+                               *itsProgressCols,
                                itsButtonCols[TOTAL_SHADES+1],
                                itsLighterPopupMenuBgndCol,
                                itsCheckRadioCol;
     mutable QColor             *itsSidebarButtonsCols;
+    mutable QColor             *itsActiveMdiColors;
+    mutable QColor             *itsMdiColors;
+    mutable QColor             itsActiveMdiTextColor;
+    mutable QColor             itsMdiTextColor;
     mutable QColor             itsColoredButtonCols[TOTAL_SHADES+1];
     mutable QColor             itsColoredBackgroundCols[TOTAL_SHADES+1];
     EApp                       itsThemedApp;
     mutable QCache<QPixmap>    itsPixmapCache;
-#if KDE_VERSION >= 0x30200
+#if defined QTC_QT_ONLY || !defined KDE_VERSION || KDE_VERSION >= 0x30200
     bool                       itsIsTransKicker;
 #endif
     EHover                     itsHover;
@@ -241,6 +292,9 @@ class QtCurveStyle : public HighContrastStyle
     QTimer                     *itsAnimationTimer;
     mutable bool               itsActive,
                                itsIsSpecialHover;
+    mutable QValueList<int>    itsMdiButtons[2]; // 0=left, 1=right
+    QWidget                    *itsDragWidget;
+    bool                       itsDragWidgetHadMouseTracking;
 };
 
 #endif
diff --git a/style/qtcurve.themerc b/style/qtcurve.themerc
index 3473ed0..9e4febe 100644
--- a/style/qtcurve.themerc
+++ b/style/qtcurve.themerc
@@ -1,6 +1,6 @@
 [Misc]
 Name=QtCurve
-Comment=Clean and elegant style
+Comment=Highly configurable style
 ConfigPage=kstyle_qtcurve_config
 [KDE]
 WidgetStyle=QtCurve
diff --git a/themes/Agua.qtcurve b/themes/Agua.qtcurve
new file mode 100644
index 0000000..774485d
--- /dev/null
+++ b/themes/Agua.qtcurve
@@ -0,0 +1,34 @@
+[Misc]
+Name=Agua
+[KDE]
+WidgetStyle=qtc_agua
+[Settings]
+appearance=agua
+bgndImage=true
+comboBtn=selected
+crColor=true
+customShades=0
+defBtnIndicator=tint
+fixParentlessDialogs=false
+glowProgress=true
+gtkComboMenus=true
+highlightFactor=7
+lvAppearance=agua
+menuDelay=225
+menuitemAppearance=harsh
+progressAppearance=agua
+round=max
+roundAllTabs=false
+shadeSliders=selected
+sliderAppearance=agua
+sliderStyle=triangular
+sliderThumbs=none
+stdBtnSizes=true
+stripedProgress=diagonal
+sunkenAppearance=inverted
+titlebarBorder=false
+titlebarButtonAppearance=agua
+titlebarButtonColors=#C40000,#DCC864,#5ACC80,#4190C5,#8888CC,#D6D5D1,#D6D5D1,#D6D5D1,#D6D5D1
+titlebarButtons=85
+useHighlightForMenu=true
+version=1.0.0
diff --git a/themes/Agua_II.qtcurve b/themes/Agua_II.qtcurve
new file mode 100644
index 0000000..da4aff5
--- /dev/null
+++ b/themes/Agua_II.qtcurve
@@ -0,0 +1,165 @@
+[InactiveShadows]
+Size=35
+
+[KWin]
+BorderSize=0
+CustomShadows=true
+Grouping=false
+OpaqueBorder=false
+RoundBottom=false
+TitleBarPad=1
+
+[Settings]
+activeTabAppearance=soft
+animatedProgress=false
+appearance=agua
+bgndAppearance=flat
+bgndGrad=horiz
+bgndImage=none
+bgndOpacity=100
+boldProgress=false
+borderInactiveTab=false
+borderMenuitems=false
+borderProgress=false
+borderSbarGroove=false
+borderSelection=false
+borderTab=true
+buttonEffect=shadow
+centerTabText=false
+colorMenubarMouseOver=true
+colorSelTab=0
+colorSliderMouseOver=false
+coloredMouseOver=glow
+coloredTbarMo=false
+comboBtn=selected
+comboSplitter=false
+crButton=true
+crColor=selected
+crHighlight=3
+crSize=15
+customMenuNormTextColor=#000000
+customMenuSelTextColor=#000000
+customMenuTextColor=false
+customShades=0
+customgradient1=light,0,1.2,0.45,1,1,1
+customgradient2=3d,0,0.75,0.3,0.9,1,1.1
+customgradient3=none,0,1.1,0.99,0.94,1,0.75
+darkerBorders=false
+defBtnIndicator=tint
+dlgOpacity=100
+doubleGtkComboArrow=true
+drawStatusBarFrames=false
+dwtAppearance=customgradient1
+dwtSettings=33
+embolden=false
+etchEntry=false
+expanderHighlight=3
+fadeLines=true
+fillProgress=true
+fillSlider=true
+fixParentlessDialogs=false
+flatSbarButtons=true
+focus=glow
+forceAlternateLvCols=true
+gbFactor=-3
+gbLabel=9
+glowProgress=none
+grooveAppearance=customgradient2
+groupBox=faded
+gtkButtonOrder=false
+gtkComboMenus=true
+gtkScrollViews=false
+handles=1dot
+highlightFactor=7
+highlightScrollViews=false
+highlightTab=false
+inactiveTitlebarAppearance=customgradient3
+invertBotTab=true
+lighterPopupMenuBgnd=2
+lvAppearance=agua
+lvButton=false
+lvLines=none
+mapKdeIcons=true
+menuBgndAppearance=flat
+menuBgndGrad=horiz
+menuBgndImage=none
+menuBgndOpacity=100
+menuDelay=225
+menuIcons=true
+menuStripe=none
+menuStripeAppearance=darkinverted
+menubarAppearance=customgradient3
+menubarApps=VirtualBox,smplayer,amarok,arora,kcalc,kaffeine
+menubarHiding=1
+menubarMouseOver=true
+menuitemAppearance=harsh
+noBgndGradientApps=
+noBgndImageApps=
+noBgndOpacityApps=dragon,smplayer,inkscape,kaffeine,kscreenlocker
+noDlgFixApps=plasma-netbook,plasma,plasma-desktop,kate
+noMenuBgndOpacityApps=inkscape
+noMenuStripeApps=soffice.bin,gtk
+passwordChar=9679
+popupBorder=true
+progressAppearance=agua
+progressColor=origselected
+progressGrooveAppearance=agua
+progressGrooveColor=background
+reorderGtkButtons=true
+round=max
+roundAllTabs=true
+roundMbTopOnly=true
+sbarBgndAppearance=gradient
+scrollbarType=kde
+selectionAppearance=harsh
+shadeCheckRadio=none
+shadeMenubarOnlyWhenActive=false
+shadeMenubars=wborder
+shadePopupMenu=false
+shadeSliders=selected
+shading=hsl
+sliderAppearance=agua
+sliderFill=true
+sliderStyle=circular
+sliderThumbs=none
+sliderWidth=15
+smallRadio=true
+sortedLv=none
+splitterHighlight=3
+splitters=1dot
+square=31
+statusbarApps=kde
+statusbarHiding=1
+stdBtnSizes=true
+stdSidebarButtons=false
+stripedProgress=fade
+stripedSbar=true
+sunkenAppearance=inverted
+tabAppearance=soft
+tabBgnd=0
+tabMouseOver=glow
+thinSbarGroove=false
+thinnerBtns=true
+thinnerMenuItems=false
+titlebarAlignment=center-full
+titlebarAppearance=customgradient3
+titlebarButtonAppearance=agua
+titlebarButtonColors=#ED3D11,#EDE651,#4AD543,#5982F2,#9595E0,#D6D5D1,#D6D5D1,#D6D5D1,#D6D5D1
+titlebarButtons=3093
+titlebarEffect=etch
+titlebarIcon=title
+toolbarAppearance=flat
+toolbarBorders=none
+toolbarSeparators=sunken
+toolbarTabs=false
+unifyCombo=true
+unifySpin=true
+unifySpinBtns=false
+useHighlightForMenu=true
+useQtFileDialogApps=googleearth-bin
+vArrows=true
+version=1.6.0
+windowBorder=1
+windowDrag=1
+xCheck=false
+xbar=false
diff --git a/themes/CMakeLists.txt b/themes/CMakeLists.txt
index ec017d4..0d9ce9b 100644
--- a/themes/CMakeLists.txt
+++ b/themes/CMakeLists.txt
@@ -1,4 +1,4 @@
-install(FILES Clear.qtcurve Dull_Glass.qtcurve Shiny_Glass.qtcurve Inverted.qtcurve Plain.qtcurve Glass.qtcurve
-        Human.qtcurve Plastic.qtcurve Murrine.qtcurve Curve.qtcurve Clean.qtcurve DESTINATION ${DATA_INSTALL_DIR}/QtCurve)
+install(FILES Agua.qtcurve Agua_II.qtcurve Curve.qtcurve Flat.qtcurve Human.qtcurve Inverted.qtcurve
+              Klearlooks.qtcurve Milk.qtcurve Murrine.qtcurve Ozone.qtcurve Plastic.qtcurve Silk.qtcurve
+        DESTINATION ${DATA_INSTALL_DIR}/QtCurve)
 
-install(FILES qtc_klearlooks.themerc DESTINATION ${DATA_INSTALL_DIR}/kstyle/themes)
diff --git a/themes/Curve.qtcurve b/themes/Curve.qtcurve
index d46ee06..f6eccb7 100644
--- a/themes/Curve.qtcurve
+++ b/themes/Curve.qtcurve
@@ -1,9 +1,12 @@
 [Settings]
+activeTabAppearance=raised
 animatedProgress=false
 appearance=raised
 borderMenuitems=true
 buttonEffect=none
 coloredMouseOver=none
+comboSplitter=true
+crHighlight=true
 customCheckRadioColor=#000000
 customMenuNormTextColor=#000000
 customMenuSelTextColor=#000000
@@ -14,23 +17,31 @@ darkerBorders=true
 defBtnIndicator=fontcolor
 drawStatusBarFrames=false
 embolden=false
+fadeLines=false
+fillProgress=true
 fillSlider=false
+fixParentlessDialogs=false
+focus=standard
 framelessGroupBoxes=true
-gradientPbGroove=false
+groupBoxLine=false
 gtkScrollViews=false
 gtkComboMenus=false
 gtkButtonOrder=false
 handles=sunken
 highlightFactor=8
+highlightScrollViews=false
 highlightTab=false
 lighterPopupMenuBgnd=false
 lvAppearance=raised
 lvLines=false
 mapKdeIcons=true
+menuDelay=225
 menubarAppearance=flat
 menubarMouseOver=false
 menuitemAppearance=inverted
 progressAppearance=inverted
+progressGrooveAppearance=flat
+progressGrooveColor=background
 round=none
 roundMbTopOnly=true
 scrollbarType=windows
@@ -42,7 +53,6 @@ sliderAppearance=raised
 sliderStyle=plain
 sliderThumbs=sunken
 splitters=sunken
-stdFocus=true
 stdSidebarButtons=false
 stripedProgress=false
 tabAppearance=raised
@@ -51,3 +61,9 @@ toolbarAppearance=flat
 toolbarBorders=dark-all
 toolbarSeparators=sunken
 vArrows=true
+menuStripe=false
+menuStripeAppearance=flat
+titlebarAppearance=flat
+selectionAppearance=flat
+squareScrollViews=true
+sunkenScrollViews=false
diff --git a/themes/Flat.qtcurve b/themes/Flat.qtcurve
new file mode 100644
index 0000000..6df8a4a
--- /dev/null
+++ b/themes/Flat.qtcurve
@@ -0,0 +1,69 @@
+[Settings]
+activeTabAppearance=flat
+animatedProgress=false
+appearance=flat
+borderMenuitems=true
+buttonEffect=shadow
+coloredMouseOver=none
+comboSplitter=true
+crHighlight=true
+customCheckRadioColor=#000000
+customMenuNormTextColor=#000000
+customMenuSelTextColor=#000000
+customMenuTextColor=false
+customMenubarsColor=#000000
+customSlidersColor=#000000
+darkerBorders=false
+defBtnIndicator=fontcolor
+drawStatusBarFrames=false
+embolden=true
+fadeLines=false
+fillProgress=true
+fillSlider=true
+fixParentlessDialogs=false
+focus=standard
+framelessGroupBoxes=false
+groupBoxLine=false
+gtkScrollViews=false
+gtkComboMenus=false
+gtkButtonOrder=false
+handles=sunken
+highlightFactor=5
+highlightScrollViews=false
+highlightTab=false
+lighterPopupMenuBgnd=false
+lvAppearance=flat
+lvLines=false
+mapKdeIcons=true
+menuDelay=225
+menubarAppearance=flat
+menubarMouseOver=true
+menuitemAppearance=flat
+progressAppearance=flat
+progressGrooveAppearance=flat
+progressGrooveColor=base
+round=full
+roundMbTopOnly=true
+scrollbarType=kde
+shadeCheckRadio=none
+shadeMenubarOnlyWhenActive=false
+shadeMenubars=darken
+shadeSliders=none
+sliderAppearance=flat
+sliderStyle=plain
+sliderThumbs=sunken
+splitters=dashes
+stdSidebarButtons=false
+stripedProgress=false
+tabAppearance=flat
+thinnerMenuItems=false
+toolbarAppearance=flat
+toolbarBorders=light
+toolbarSeparators=sunken
+vArrows=false
+menuStripe=false
+menuStripeAppearance=flat
+titlebarAppearance=flat
+selectionAppearance=flat
+squareScrollViews=false
+sunkenScrollViews=false
diff --git a/themes/Human.qtcurve b/themes/Human.qtcurve
index ff01374..39ed2e1 100644
--- a/themes/Human.qtcurve
+++ b/themes/Human.qtcurve
@@ -1,9 +1,11 @@
 [Settings]
-animatedProgress=true
+animatedProgress=false
 appearance=dullglass
-borderMenuitems=true
+borderMenuitems=false
 buttonEffect=shadow
-coloredMouseOver=plastik
+coloredMouseOver=glow
+comboSplitter=true
+crHighlight=false
 customCheckRadioColor=#000000
 customMenuNormTextColor=#000000
 customMenuSelTextColor=#000000
@@ -14,23 +16,31 @@ darkerBorders=true
 defBtnIndicator=colored
 drawStatusBarFrames=false
 embolden=false
+fadeLines=false
+fillProgress=true
 fillSlider=true
+fixParentlessDialogs=false
+focus=standard
 framelessGroupBoxes=true
-gradientPbGroove=true
+groupBoxLine=false
 gtkScrollViews=false
 gtkComboMenus=false
 gtkButtonOrder=false
 handles=dots
 highlightFactor=7
+highlightScrollViews=false
 highlightTab=true
 lighterPopupMenuBgnd=true
 lvAppearance=bevelled
 lvLines=false
 mapKdeIcons=true
+menuDelay=225
 menubarAppearance=gradient
 menubarMouseOver=true
 menuitemAppearance=gradient
 progressAppearance=shinyglass
+progressGrooveAppearance=shinyglass
+progressGrooveColor=base
 round=full
 roundMbTopOnly=true
 scrollbarType=windows
@@ -39,10 +49,9 @@ shadeMenubarOnlyWhenActive=false
 shadeMenubars=darken
 shadeSliders=none
 sliderAppearance=gradient
-sliderStyle=round
+sliderStyle=plain
 sliderThumbs=dots
 splitters=dots
-stdFocus=true
 stdSidebarButtons=false
 stripedProgress=true
 tabAppearance=gradient
@@ -51,4 +60,9 @@ toolbarAppearance=flat
 toolbarBorders=light
 toolbarSeparators=sunken
 vArrows=false
-
+menuStripe=false
+menuStripeAppearance=flat
+titlebarAppearance=gradient
+selectionAppearance=gradient
+squareScrollViews=true
+sunkenScrollViews=false
diff --git a/themes/Inverted.qtcurve b/themes/Inverted.qtcurve
index 3d0a25c..1c812e2 100644
--- a/themes/Inverted.qtcurve
+++ b/themes/Inverted.qtcurve
@@ -1,9 +1,11 @@
 [Settings]
-animatedProgress=true
+animatedProgress=false
 appearance=inverted
 borderMenuitems=true
 buttonEffect=shadow
 coloredMouseOver=plastik
+comboSplitter=false
+crHighlight=false
 customCheckRadioColor=#000000
 customMenuNormTextColor=#000000
 customMenuSelTextColor=#000000
@@ -14,23 +16,31 @@ darkerBorders=false
 defBtnIndicator=colored
 drawStatusBarFrames=false
 embolden=false
+fadeLines=false
+fillProgress=true
 fillSlider=true
+fixParentlessDialogs=false
+focus=background
 framelessGroupBoxes=true
-gradientPbGroove=true
+groupBoxLine=false
 gtkScrollViews=false
 gtkComboMenus=false
 gtkButtonOrder=false
 handles=dots
 highlightFactor=5
+highlightScrollViews=true
 highlightTab=true
 lighterPopupMenuBgnd=true
 lvAppearance=inverted
 lvLines=false
 mapKdeIcons=true
+menuDelay=225
 menubarAppearance=inverted
 menubarMouseOver=true
 menuitemAppearance=inverted
 progressAppearance=inverted
+progressGrooveAppearance=inverted
+progressGrooveColor=base
 round=full
 roundMbTopOnly=true
 scrollbarType=kde
@@ -42,7 +52,6 @@ sliderAppearance=inverted
 sliderStyle=round
 sliderThumbs=dots
 splitters=dots
-stdFocus=false
 stdSidebarButtons=false
 stripedProgress=true
 tabAppearance=gradient
@@ -51,4 +60,9 @@ toolbarAppearance=inverted
 toolbarBorders=none
 toolbarSeparators=dots
 vArrows=false
-
+menuStripe=true
+menuStripeAppearance=inverted
+titlebarAppearance=inverted
+selectionAppearance=inverted
+squareScrollViews=false
+sunkenScrollViews=true
diff --git a/themes/Klearlooks.qtcurve b/themes/Klearlooks.qtcurve
new file mode 100644
index 0000000..34db872
--- /dev/null
+++ b/themes/Klearlooks.qtcurve
@@ -0,0 +1,74 @@
+animatedProgress=false
+appearance=splitgradient
+borderMenuitems=true
+buttonEffect=shadow
+coloredMouseOver=none
+colorSelTab=true
+colorTitlebarOnly=true
+comboSplitter=true
+crHighlight=false
+customCheckRadioColor=#000000
+customMenuNormTextColor=#000000
+customMenuSelTextColor=#000000
+customMenuTextColor=false
+customMenubarsColor=#000000
+customSlidersColor=#000000
+darkerBorders=false
+defBtnIndicator=glow
+drawStatusBarFrames=false
+embolden=false
+fadeLines=true
+fillProgress=true
+fillSlider=true
+fixParentlessDialogs=false
+focus=filled
+framelessGroupBoxes=true
+groupBoxLine=false
+gtkScrollViews=true
+gtkComboMenus=true
+gtkButtonOrder=false
+handles=dots
+highlightFactor=7
+highlightScrollViews=false
+highlightTab=false
+lighterPopupMenuBgnd=15
+lvAppearance=splitgradient
+lvLines=false
+mapKdeIcons=true
+menuDelay=225
+menubarAppearance=flat
+menubarMouseOver=true
+menuitemAppearance=splitgradient
+progressAppearance=splitgradient
+progressGrooveAppearance=flat
+progressGrooveColor=dark
+round=full
+roundMbTopOnly=true
+scrollbarType=windows
+shadeCheckRadio=none
+shadeMenubarOnlyWhenActive=false
+shadeMenubars=darken
+shadeSliders=selected
+sliderStyle=plain
+sliderAppearance=splitgradient
+sliderThumbs=flat
+splitters=dashes
+stdFocus=true
+stdSidebarButtons=false
+stripedProgress=diagonal
+tabAppearance=gradient
+thinnerMenuItems=false
+toolbarAppearance=splitgradient
+toolbarBorders=light
+toolbarSeparators=sunken
+vArrows=true
+windowApperance=gradient
+menuStripe=false
+menuStripeAppearance=flat
+titlebarAppearance=gradient
+selectionAppearance=gradient
+squareScrollViews=true
+sunkenAppearance=splitgradient
+sunkenScrollViews=false
+unifySpinBtns=true
+thinnerBtns=true
diff --git a/themes/Milk.qtcurve b/themes/Milk.qtcurve
new file mode 100755
index 0000000..b043dc4
--- /dev/null
+++ b/themes/Milk.qtcurve
@@ -0,0 +1,69 @@
+[Settings]
+appearance=customgradient4
+boldProgress=false
+borderProgress=false
+borderSbarGroove=false
+comboSplitter=true
+crColor=selected
+customShades=0
+customgradient1=light,0,1.2,1,1
+customgradient2=3d,0,0.75,0.3,0.9,1,1.1
+customgradient3=none,0,1.1,0.99,0.94,1,0.75
+customgradient4=none,0,1.1,1,0.9
+customgradient5=none,0,1.25,1,0.75
+defBtnIndicator=tint
+dwtSettings=40
+fixParentlessDialogs=false
+forceAlternateLvCols=true
+grooveAppearance=customgradient2
+gtkComboMenus=true
+gtkScrollViews=false
+highlightFactor=7
+inactiveTitlebarAppearance=customgradient3
+lvAppearance=bevelled
+menuDelay=225
+menubarAppearance=customgradient3
+menubarHiding=3
+menuitemAppearance=customgradient5
+progressAppearance=customgradient5
+progressColor=selected
+progressGrooveAppearance=customgradient4
+progressGrooveColor=background
+reorderGtkButtons=true
+round=max
+sbarBgndAppearance=gradient
+shadeMenubars=wborder
+shadeSliders=selected
+sliderAppearance=customgradient4
+sliderStyle=circular
+sliderThumbs=none
+square=31
+statusbarHiding=3
+stdBtnSizes=true
+sunkenAppearance=inverted
+thinSbarGroove=false
+titlebarAppearance=customgradient3
+titlebarButtonAppearance=customgradient4
+titlebarButtonColors=#BA0D0D,#D6BA48,#40BA3A,#444FC4,#8282C3,#D6D5D1,#D6D5D1,#D6D5D1,#D6D5D1
+titlebarButtons=3605
+titlebarEffect=etch
+useHighlightForMenu=true
+version=1.5.0
+windowBorder=1
+windowDrag=3
+
+[KWin]
+BorderSize=0
+CloseOnMenuDoubleClick=true
+ColorTitleOnly=true
+ColoredShadow=false
+CustomShadows=true
+DrawBottom=true
+Grouping=false
+OpaqueBorder=false
+RoundBottom=false
+ShowResizeGrip=true
+TitleBarPad=1
+
+[InactiveShadows]
+Size=35
diff --git a/themes/Murrine.qtcurve b/themes/Murrine.qtcurve
index ede8110..f3a24de 100644
--- a/themes/Murrine.qtcurve
+++ b/themes/Murrine.qtcurve
@@ -1,9 +1,11 @@
 [Settings]
-animatedProgress=true
+animatedProgress=false
 appearance=dullglass
 borderMenuitems=true
 buttonEffect=etch
 coloredMouseOver=colored
+comboSplitter=true
+crHighlight=false
 customCheckRadioColor=#000000
 customMenuNormTextColor=#000000
 customMenuSelTextColor=#000000
@@ -14,23 +16,31 @@ darkerBorders=false
 defBtnIndicator=fontcolor
 drawStatusBarFrames=false
 embolden=false
+fadeLines=false
+fillProgress=true
 fillSlider=true
+fixParentlessDialogs=false
+focus=standard
 framelessGroupBoxes=true
-gradientPbGroove=false
+groupBoxLine=false
 gtkScrollViews=false
 gtkComboMenus=false
 gtkButtonOrder=false
 handles=sunken
 highlightFactor=5
+highlightScrollViews=false
 highlightTab=true
 lighterPopupMenuBgnd=true
 lvAppearance=dullglass
 lvLines=false
 mapKdeIcons=true
+menuDelay=225
 menubarAppearance=dullglass
 menubarMouseOver=true
 menuitemAppearance=dullglass
 progressAppearance=dullglass
+progressGrooveAppearance=dullglass
+progressGrooveColor=base
 round=slight
 roundMbTopOnly=false
 scrollbarType=windows
@@ -42,7 +52,6 @@ sliderAppearance=dullglass
 sliderStyle=plain
 sliderThumbs=sunken
 splitters=dashes
-stdFocus=true
 stdSidebarButtons=false
 stripedProgress=true
 tabAppearance=gradient
@@ -51,4 +60,9 @@ toolbarAppearance=flat
 toolbarBorders=light
 toolbarSeparators=sunken
 vArrows=false
-
+menuStripe=false
+menuStripeAppearance=flat
+titlebarAppearance=dullglass
+selectionAppearance=dullglass
+squareScrollViews=true
+sunkenScrollViews=false
diff --git a/themes/Ozone.qtcurve b/themes/Ozone.qtcurve
new file mode 100644
index 0000000..57f38b9
--- /dev/null
+++ b/themes/Ozone.qtcurve
@@ -0,0 +1,170 @@
+[InactiveShadows]
+Size=35
+
+[KWin]
+BorderSize=3
+CustomShadows=true
+EdgePad=0
+Grouping=false
+OpaqueBorder=false
+OuterBorder=2
+InnerBorder=0
+RoundBottom=true
+TitleBarPad=0
+
+[Settings]
+customAlphas=0.4,0.1
+activeTabAppearance=soft
+animatedProgress=false
+appearance=customgradient5
+bgndAppearance=customgradient4
+bgndGrad=horiz
+bgndImage=none
+bgndOpacity=100
+boldProgress=false
+borderInactiveTab=true
+borderMenuitems=false
+borderProgress=true
+borderSbarGroove=true
+borderSelection=false
+borderTab=true
+buttonEffect=shadow
+centerTabText=true
+colorMenubarMouseOver=true
+colorSelTab=0
+colorSliderMouseOver=false
+coloredMouseOver=glow
+coloredTbarMo=false
+comboBtn=none
+comboSplitter=false
+crButton=true
+crColor=none
+crHighlight=0
+crSize=15
+customMenuNormTextColor=#000000
+customMenuSelTextColor=#000000
+customMenuTextColor=false
+customShades=1.16,1.07,0.9,0.78,0.84,0.75
+customgradient1=3d,0,1.2,0.5,1,1,1
+customgradient2=3d,0,0.9,0.5,1,1,1
+customgradient3=none,0,1.12,1,1.15
+customgradient4=shine,0,1.05,1,0.92
+customgradient5=light,0,1.04,1,0.92
+darkerBorders=false
+defBtnIndicator=glow
+dlgOpacity=100
+doubleGtkComboArrow=true
+drawStatusBarFrames=false
+dwtAppearance=flat
+dwtSettings=0
+embolden=false
+etchEntry=false
+expanderHighlight=3
+fadeLines=true
+fillProgress=true
+fillSlider=false
+fixParentlessDialogs=false
+flatSbarButtons=true
+focus=glow
+forceAlternateLvCols=false
+gbFactor=-3
+gbLabel=9
+glowProgress=middle
+grooveAppearance=inverted
+groupBox=faded
+gtkButtonOrder=false
+gtkComboMenus=false
+gtkScrollViews=true
+handles=sunken
+highlightFactor=3
+highlightScrollViews=true
+highlightTab=false
+inactiveTitlebarAppearance=none
+invertBotTab=true
+lighterPopupMenuBgnd=0
+lvAppearance=bevelled
+lvButton=false
+lvLines=old
+mapKdeIcons=true
+menuBgndAppearance=harsh
+menuBgndGrad=horiz
+menuBgndImage=none
+menuBgndOpacity=100
+menuDelay=225
+menuIcons=true
+menuStripe=none
+menuStripeAppearance=darkinverted
+menubarAppearance=flat
+menubarApps=VirtualBox,smplayer,amarok,arora,kcalc,kaffeine
+menubarHiding=0
+menubarMouseOver=true
+menuitemAppearance=fade
+noBgndGradientApps=
+noBgndImageApps=
+noBgndOpacityApps=dragon,smplayer,inkscape,totem,kaffeine,kscreenlocker,sonata
+noDlgFixApps=plasma-netbook,plasma,plasma-desktop,kate
+noMenuBgndOpacityApps=inkscape,totem,sonata
+noMenuStripeApps=soffice.bin,gtk
+passwordChar=9679
+popupBorder=true
+progressAppearance=dullglass
+progressColor=origselected
+progressGrooveAppearance=inverted
+progressGrooveColor=dark
+reorderGtkButtons=false
+round=extra
+roundAllTabs=false
+roundMbTopOnly=false
+sbarBgndAppearance=flat
+scrollbarType=kde
+selectionAppearance=harsh
+shadeCheckRadio=none
+shadeMenubarOnlyWhenActive=false
+shadeMenubars=none
+shadePopupMenu=false
+shadeSliders=none
+shading=hsl
+sliderAppearance=soft
+sliderFill=true
+sliderStyle=r-plain
+sliderThumbs=none
+sliderWidth=15
+smallRadio=true
+sortedLv=none
+splitterHighlight=0
+splitters=flat
+square=0
+statusbarApps=kde
+statusbarHiding=0
+stdBtnSizes=false
+stdSidebarButtons=false
+stripedProgress=none
+stripedSbar=false
+sunkenAppearance=customgradient3
+tabAppearance=soft
+tabBgnd=0
+tabMouseOver=glow
+thinSbarGroove=false
+thinnerBtns=true
+thinnerMenuItems=false
+titlebarAlignment=center-full
+titlebarAppearance=none
+titlebarButtonAppearance=gradient
+titlebarButtons=2117
+titlebarEffect=shadow
+titlebarIcon=title
+toolbarAppearance=flat
+toolbarBorders=none
+toolbarSeparators=sunken
+toolbarTabs=false
+unifyCombo=true
+unifySpin=true
+unifySpinBtns=false
+useHighlightForMenu=false
+useQtFileDialogApps=googleearth-bin
+vArrows=true
+version=1.6.1
+windowBorder=1
+windowDrag=3
+xCheck=false
+xbar=false
diff --git a/themes/Plastic.qtcurve b/themes/Plastic.qtcurve
index b65be20..eeac916 100644
--- a/themes/Plastic.qtcurve
+++ b/themes/Plastic.qtcurve
@@ -1,54 +1,160 @@
+[KWin]
+BorderSize=3
+Grouping=false
+OpaqueBorder=false
+OuterBorder=true
+TitleBarPad=1
+
 [Settings]
-animatedProgress=true
+activeTabAppearance=flat
+animatedProgress=false
 appearance=gradient
-borderMenuitems=true
+bgndAppearance=flat
+bgndGrad=horiz
+bgndImage=none
+bgndOpacity=100
+boldProgress=true
+borderInactiveTab=false
+borderMenuitems=false
+borderProgress=true
+borderSbarGroove=true
+borderSelection=false
+borderTab=false
 buttonEffect=none
+centerTabText=false
+colorMenubarMouseOver=false
+colorSelTab=0
+colorSliderMouseOver=false
 coloredMouseOver=plastik
-customCheckRadioColor=#000000
+coloredTbarMo=false
+comboBtn=none
+comboSplitter=true
+crButton=false
+crColor=none
+crHighlight=0
+crSize=13
 customMenuNormTextColor=#000000
 customMenuSelTextColor=#000000
 customMenuTextColor=false
-customMenubarsColor=#000000
-customSlidersColor=#000000
+customShades=0
+customgradient1=3d,0,1.2,0.5,1,1,1
+customgradient2=3d,0,0.9,0.5,1,1,1
 darkerBorders=false
-defBtnIndicator=colored
+defBtnIndicator=fontcolor
+dlgOpacity=100
+doubleGtkComboArrow=false
 drawStatusBarFrames=false
+dwtAppearance=flat
+dwtSettings=0
 embolden=false
-fillSlider=true
-framelessGroupBoxes=false
-gradientPbGroove=true
-gtkScrollViews=false
-gtkComboMenus=false
+etchEntry=true
+expanderHighlight=3
+fadeLines=false
+fillProgress=false
+fillSlider=false
+fixParentlessDialogs=false
+flatSbarButtons=false
+focus=standard
+forceAlternateLvCols=false
+gbFactor=0
+gbLabel=0
+glowProgress=none
+grooveAppearance=inverted
+groupBox=plain
 gtkButtonOrder=false
+gtkComboMenus=false
+gtkScrollViews=false
 handles=dots
 highlightFactor=-2
-highlightTab=true
-lighterPopupMenuBgnd=true
+highlightScrollViews=false
+highlightTab=false
+inactiveTitlebarAppearance=gradient
+invertBotTab=true
+lighterPopupMenuBgnd=2
 lvAppearance=gradient
-lvLines=false
+lvButton=false
+lvLines=none
 mapKdeIcons=true
+menuBgndAppearance=flat
+menuBgndGrad=horiz
+menuBgndImage=none
+menuBgndOpacity=100
+menuDelay=225
+menuIcons=true
+menuStripe=none
+menuStripeAppearance=flat
 menubarAppearance=flat
+menubarApps=VirtualBox,smplayer,amarok,arora,kcalc,kaffeine
+menubarHiding=0
 menubarMouseOver=true
 menuitemAppearance=gradient
+noBgndGradientApps=
+noBgndImageApps=
+noBgndOpacityApps=dragon,smplayer,inkscape,kaffeine,kscreenlocker
+noDlgFixApps=plasma-netbook,plasma,plasma-desktop,kate
+noMenuBgndOpacityApps=inkscape
+noMenuStripeApps=soffice.bin,gtk
+passwordChar=9679
+popupBorder=true
 progressAppearance=flat
+progressColor=origselected
+progressGrooveAppearance=flat
+progressGrooveColor=base
+reorderGtkButtons=false
 round=full
+roundAllTabs=false
 roundMbTopOnly=false
-scrollbarType=windows
+sbarBgndAppearance=flat
+scrollbarType=kde
+selectionAppearance=flat
 shadeCheckRadio=none
 shadeMenubarOnlyWhenActive=false
 shadeMenubars=none
+shadePopupMenu=false
 shadeSliders=none
+shading=hsl
 sliderAppearance=gradient
+sliderFill=true
 sliderStyle=triangular
 sliderThumbs=dots
+sliderWidth=15
+smallRadio=false
+sortedLv=none
+splitterHighlight=3
 splitters=dots
-stdFocus=true
+square=256
+statusbarApps=kde
+statusbarHiding=0
+stdBtnSizes=false
 stdSidebarButtons=false
-stripedProgress=true
+stripedProgress=plain
+stripedSbar=false
+sunkenAppearance=inverted
 tabAppearance=gradient
+tabBgnd=0
+tabMouseOver=top
+thinSbarGroove=false
+thinnerBtns=false
 thinnerMenuItems=false
+titlebarAlignment=left
+titlebarAppearance=gradient
+titlebarButtonAppearance=gradient
+titlebarButtons=2
+titlebarEffect=shadow
+titlebarIcon=menu
 toolbarAppearance=flat
 toolbarBorders=light-all
 toolbarSeparators=sunken
+toolbarTabs=false
+tooltipAppearance=flat
+unifyCombo=false
+unifySpin=false
+unifySpinBtns=false
+useHighlightForMenu=true
+useQtFileDialogApps=googleearth-bin
 vArrows=false
+version=1.6.0
+windowBorder=4
+windowDrag=0
 xCheck=true
+xbar=false
diff --git a/themes/Silk.qtcurve b/themes/Silk.qtcurve
new file mode 100644
index 0000000..1d183a6
--- /dev/null
+++ b/themes/Silk.qtcurve
@@ -0,0 +1,89 @@
+[Misc]
+Name=Silk
+Comment=QtCurve derived style.
+[KDE]
+WidgetStyle=qtc_silk
+[Settings]
+activeTabAppearance=flat
+animatedProgress=false
+appearance=customgradient2
+borderMenuitems=false
+buttonEffect=shadow
+colorSelTab=false
+coloredMouseOver=glow
+comboSplitter=false
+crButton=true
+crHighlight=false
+customCheckRadioColor=#000000
+customMenuNormTextColor=#000000
+customMenuSelTextColor=#000000
+customMenuTextColor=false
+customMenubarsColor=#000000
+customShades=1.16,1.07,0.9,0.78,0.84,0.75
+customSlidersColor=#000000
+customShadesX=1.1,1.1,1.1,1.1,1.1,1.1
+customgradient1=false,0,1.05,0.49,1,0.5,0.95,1,1
+customgradient2=false,0,1.05,1,1
+customgradient3=false,0.85,1,1,0.92
+customgradient4=false,0,1,1,0.98
+customgradient5=false,0,1.2,0.5,1,1,1
+customgradient6=false,0,0.9,0.5,1,1,1
+darkerBorders=false
+defBtnIndicator=glow
+drawStatusBarFrames=false
+embolden=false
+fadeLines=true
+fixParentlessDialogs=false
+flatSbarButtons=true
+focus=filled
+framelessGroupBoxes=true
+groupBoxLine=true
+gtkButtonOrder=false
+gtkComboMenus=false
+gtkScrollViews=false
+handles=sunken
+highlightFactor=0
+highlightScrollViews=false
+highlightTab=false
+inactiveTitlebarAppearance=customgradient6
+lighterPopupMenuBgnd=2
+lvAppearance=customgradient3
+lvLines=false
+mapKdeIcons=true
+menuDelay=225
+menuStripe=false
+menuStripeAppearance=customgradient2
+menubarAppearance=customgradient4
+menubarMouseOver=true
+menuitemAppearance=fade
+progressAppearance=customgradient1
+progressGrooveAppearance=inverted
+progressGrooveColor=dark
+round=full
+roundMbTopOnly=true
+scrollbarType=kde
+selectionAppearance=gradient
+shadeCheckRadio=none
+shadeMenubarOnlyWhenActive=false
+shadeMenubars=none
+shadeSliders=none
+shading=hsl
+sliderAppearance=customgradient2
+sliderStyle=plain
+sliderThumbs=lines
+splitters=flat
+squareScrollViews=false
+stdSidebarButtons=false
+stripedProgress=none
+sunkengradientX=false,0,0.5,0.5,0.1,1,0.9
+sunkenScrollViews=true
+tabAppearance=flat
+thinnerMenuItems=false
+titlebarAppearance=customgradient5
+titlebarButtonAppearance=customgradient2
+toolbarAppearance=flat
+toolbarBorders=none
+toolbarSeparators=sunken
+useHighlightForMenu=false
+vArrows=true
+xCheck=false
-- 
cgit v1.2.3

