//
//     Copyright 2008 Jim Bublitz <jbublitz@nwinternet.com>
//     Earlier copyrights 1998 - 2007 Jim Bublitz also apply

//                 Generated by twine

// This file is part of PyKDE4.

// PyKDE4 is free software; you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation; either version 2.1 of
// the License, or (at your option) any later version.

// PyKDE4 is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.



class KGlobalSettings : QObject
{
%TypeHeaderCode
#include <kglobalsettings.h>
%End


public:
    static int              dndEventDelay ();
    static bool             singleClick ();
    static bool             smoothScroll ();

    enum TearOffHandle
    {
        Disable,
        ApplicationLevel,
        Enable
    };

    static KGlobalSettings::TearOffHandle  insertTearOffHandle ();
    static bool             changeCursorOverIcon ();
    static int              autoSelectDelay ();
    static int              contextMenuKey ();
    static bool             showContextMenusOnPress ();

    enum Completion
    {
        CompletionNone,
        CompletionAuto,
        CompletionMan,
        CompletionShell,
        CompletionPopup,
        CompletionPopupAuto
    };

    static KGlobalSettings::Completion  completionMode ();

    class KMouseSettings
    {

    public:

        enum 
        {
            RightHanded,
            LeftHanded
        };

        int handed;
    };   // KMouseSettings


public:
    static KGlobalSettings::KMouseSettings&  mouseSettings ();
    static QString          desktopPath ();
    static QString          autostartPath ();
    static QString          documentPath ();
    static QString          musicPath ();
    static QString          videosPath ();
    static QString          downloadPath ();
    static QString          picturesPath ();
    static QColor           inactiveTitleColor ();
    static QColor           inactiveTextColor ();
    static QColor           activeTitleColor ();
    static QColor           activeTextColor ();
    static int              contrast ();
    static qreal            contrastF (const KSharedConfigPtr& config = KSharedConfigPtr());
    static bool             shadeSortColumn ();
    static bool             allowDefaultBackgroundImages ();
    static QFont            generalFont ();
    static QFont            fixedFont ();
    static QFont            toolBarFont ();
    static QFont            menuFont ();
    static QFont            windowTitleFont ();
    static QFont            taskbarFont ();
    static QFont            largeFont (const QString& text = QString());
    static QFont            smallestReadableFont ();
    static bool             isMultiHead ();
    static bool             wheelMouseZooms ();
    static QRect            splashScreenDesktopGeometry ();
    static QRect            desktopGeometry (const QPoint& point);
    static QRect            desktopGeometry (const QWidget* w);
    static bool             showIconsOnPushButtons ();

    enum GraphicEffect
    {
        NoEffects,
        GradientEffects,
        SimpleAnimationEffects,
        ComplexAnimationEffects
    };

    typedef QFlags<KGlobalSettings::GraphicEffect> GraphicEffects;

    static KGlobalSettings::GraphicEffects  graphicEffectsLevel ();
    static KGlobalSettings::GraphicEffects  graphicEffectsLevelDefault ();
    static bool             showFilePreview (const KUrl&);
    static bool             opaqueResize ();
    static int              buttonLayout ();
    static QPalette         createApplicationPalette (const KSharedConfigPtr& config = KSharedConfigPtr());

    enum ChangeType
    {
        PaletteChanged,
        FontChanged,
        StyleChanged,
        SettingsChanged,
        IconChanged,
        CursorChanged,
        ToolbarStyleChanged,
        ClipboardConfigChanged,
        BlockShortcuts
    };

    static void             emitChange (KGlobalSettings::ChangeType changeType, int arg = 0);
    static KGlobalSettings*  self ();

    enum SettingsCategory
    {
        SETTINGS_MOUSE,
        SETTINGS_COMPLETION,
        SETTINGS_PATHS,
        SETTINGS_POPUPMENU,
        SETTINGS_QT,
        SETTINGS_SHORTCUTS
    };


signals:
    void                    kdisplayPaletteChanged ();
    void                    kdisplayStyleChanged ();
    void                    kdisplayFontChanged ();
    void                    appearanceChanged ();
    void                    toolbarAppearanceChanged (int);
    void                    settingsChanged (int category);
    void                    iconChanged (int group);
    void                    cursorChanged ();
    void                    blockShortcuts (int data);

private:
                            KGlobalSettings ();
};   // KGlobalSettings


