From 11304d02942e9fa493e4e80943a828f9c65f6772 Mon Sep 17 00:00:00 2001 From: mickeyl Date: Fri, 28 Mar 2003 15:11:52 +0000 Subject: skeleton and the start of libopie2, please read README, ROADMAP and STATUS and comment... --- (limited to 'libopie2/opiecore/oglobalsettings.h') diff --git a/libopie2/opiecore/oglobalsettings.h b/libopie2/opiecore/oglobalsettings.h new file mode 100644 index 0000000..6481251 --- a/dev/null +++ b/libopie2/opiecore/oglobalsettings.h @@ -0,0 +1,368 @@ +/* +                 This file is part of the Opie Project +              Copyright (C) 2003 Michael Lauer + Inspired by KDE OGlobalSettings + Copyright (C) 2000 David Faure + =. + .=l. +           .>+-= + _;:,     .>    :=|. This program is free software; you can +.> <`_,   >  .   <= redistribute it and/or modify it under +:`=1 )Y*s>-.--   : the terms of the GNU Library General Public +.="- .-=="i,     .._ License as published by the Free Software + - .   .-<_>     .<> Foundation; either version 2 of the License, +     ._= =}       : or (at your option) any later version. +    .%`+i>       _;_. +    .i_,=:_.      -`: 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., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ + +#ifndef OGLOBALSETTINGS_H +#define OGLOBALSETTINGS_H + +#include +#include +#include + +#define OPIE_DEFAULT_SINGLECLICK true +#define OPIE_DEFAULT_INSERTTEAROFFHANDLES true +#define OPIE_DEFAULT_AUTOSELECTDELAY -1 +#define OPIE_DEFAULT_CHANGECURSOR true +#define OPIE_DEFAULT_LARGE_CURSOR false +#define OPIE_DEFAULT_VISUAL_ACTIVATE true +#define OPIE_DEFAULT_VISUAL_ACTIVATE_SPEED 50 + +//FIXME: There's still a whole lot of stuff in here which has to be revised +//FIXME: before public usage... lack of time to do it at once - so it will +//FIXME: happen step-by-step. ML. + +/** + * Access the OPIE global configuration settings. + * + */ +class OGlobalSettings +{ + public: + + /** + * Returns a threshold in pixels for drag & drop operations. + * As long as the mouse movement has not exceeded this number + * of pixels in either X or Y direction no drag operation may + * be started. This prevents spurious drags when the user intended + * to click on something but moved the mouse a bit while doing so. + * + * For this to work you must save the position of the mouse (oldPos) + * in the @ref QWidget::mousePressEvent(). + * When the position of the mouse (newPos) + * in a @ref QWidget::mouseMoveEvent() exceeds this threshold + * you may start a drag + * which should originate from oldPos. + * + * Example code: + *
+     * void OColorCells::mousePressEvent( QMouseEvent *e )
+     * {
+     *    mOldPos = e->pos();
+     * }
+     *
+     * void OColorCells::mouseMoveEvent( QMouseEvent *e )
+     * {
+     *    if( !(e->state() && LeftButton)) return;
+     *
+     *    int delay = OGlobalSettings::dndEventDelay();
+     *    QPoint newPos = e->pos();
+     *    if(newPos.x() > mOldPos.x()+delay || newPos.x() < mOldPos.x()-delay ||
+     *       newPos.y() > mOldPos.y()+delay || newPos.y() < mOldPos.y()-delay)
+     *    {
+     *       // Drag color object
+     *       int cell = posToCell(mOldPos); // Find color at mOldPos
+     *       if ((cell != -1) && colors[cell].isValid())
+     *       {
+     *          OColorDrag *d = OColorDrag::makeDrag( colors[cell], this);
+     *          d->dragCopy();
+     *       }
+     *    }
+     * }
+     * 
+ * + */ + + static int dndEventDelay(); + + /** + * Returns whether OPIE runs in single (default) or double click + * mode. + * + * @return @p true if single click mode, or @p false if double click mode. + * + * see @ref http://opie.handhelds.org/documentation/standards/opie/style/mouse/index.html + **/ + static bool singleClick(); + + /** + * Returns whether tear-off handles are inserted in OPopupMenus. + **/ + static bool insertTearOffHandle(); + + /** + * @return the OPIE setting for "change cursor over icon" + */ + static bool changeCursorOverIcon(); + + /** + * @return whether to show some feedback when an item (specifically an + * icon) is activated. + */ + static bool visualActivate(); + static unsigned int visualActivateSpeed(); + + /** + * Returns the OPIE setting for the auto-select option + * + * @return the auto-select delay or -1 if auto-select is disabled. + */ + static int autoSelectDelay(); + + /** + * Returns the OPIE setting for the shortcut key to open + * context menus. + * + * @return the key that pops up context menus. + */ + static int contextMenuKey(); + + /** + * Returns the OPIE setting for context menus. + * + * @return whether context menus should be shown on button press + * or button release (click). + */ + static bool showContextMenusOnPress (); + + /** + * This enum describes the completion mode used for by the @ref OCompletion class. + * See + * the styleguide. + **/ + enum Completion { + /** + * No completion is used. + */ + CompletionNone=1, + /** + * Text is automatically filled in whenever possible. + */ + CompletionAuto, + /** + * Same as automatic except shortest match is used for completion. + */ + CompletionMan, + /** + * Complete text much in the same way as a typical *nix shell would. + */ + CompletionShell, + /** + * Lists all possible matches in a popup list-box to choose from. + */ + CompletionPopup, + /** + * Lists all possible matches in a popup list-box to choose from, and automatically + * fill the result whenever possible. + */ + CompletionPopupAuto + }; + /** + * Returns the preferred completion mode setting. + * + * @return @ref Completion. Default is @p CompletionPopup. + */ + static Completion completionMode(); + + /** + * This enum describes the debug mode used for by the @ref odbgstream class. + * See + * the styleguide. + **/ + enum Debug { + /** + * Debug messages are ignored. + */ + DebugNone=-1, + /** + * Debug output is sent to files /var/log/***. + */ + DebugFiles=0, + /** + * Debug output is written in a QMessageBox. + */ + DebugMsgBox=1, + /** + * Debug output is sent to stderr. + */ + DebugStdErr=2, + /** + * Debug output is sent to syslog. + */ + DebugSysLog=3, + /** + * Debug output is sent via udp over a socket. + */ + DebugSocket=4 + }; + /** + * Returns the preferred debug mode setting. + * + * @return @ref Debug. Default is @p DebugStdErr. + */ + static Debug debugMode(); + + /** + * Returns additional information for debug output (dependent on the debug mode). + * + * @return Additional debug output information. + */ + static QString debugOutput(); + /** + * This is a structure containing the possible mouse settings. + */ + struct OMouseSettings + { + enum { RightHanded = 0, LeftHanded = 1 }; + int handed; // left or right + }; + + /** + * This returns the current mouse settings. + */ + static OMouseSettings & mouseSettings(); + + /** + * The path to the desktop directory of the current user. + */ + static QString desktopPath() { initStatic(); return *s_desktopPath; } + + /** + * The path to the autostart directory of the current user. + */ + static QString autostartPath() { initStatic(); return *s_autostartPath; } + + /** + * The path to the trash directory of the current user. + */ + static QString trashPath() { initStatic(); return *s_trashPath; } + + /** + * The path where documents are stored of the current user. + */ + static QString documentPath() { initStatic(); return *s_documentPath; } + + + /** + * The default color to use when highlighting toolbar buttons + */ + static QColor toolBarHighlightColor(); + static QColor inactiveTitleColor(); + static QColor inactiveTextColor(); + static QColor activeTitleColor(); + static QColor activeTextColor(); + static int contrast(); + + /** + * The default colors to use for text and links. + */ + static QColor baseColor(); // Similair to QColorGroup::base() + static QColor textColor(); // Similair to QColorGroup::text() + static QColor linkColor(); + static QColor visitedLinkColor(); + static QColor highlightedTextColor(); // Similair to QColorGroup::hightlightedText() + static QColor highlightColor(); // Similair to QColorGroup::highlight() + + /** + * Returns the alternate background color used by @ref OListView with + * @ref OListViewItem. Any other list that uses alternating background + * colors should use this too, to obey to the user's preferences. Returns + * an invalid color if the user doesn't want alternating backgrounds. + * @see #calculateAlternateBackgroundColor + */ + static QColor alternateBackgroundColor(); + /** + * Calculates a color based on @p base to be used as alternating + * color for e.g. listviews. + * @see #alternateBackgroundColor + */ + static QColor calculateAlternateBackgroundColor(const QColor& base); + + + static QFont generalFont(); + static QFont fixedFont(); + static QFont toolBarFont(); + static QFont menuFont(); + static QFont windowTitleFont(); + static QFont taskbarFont(); + + /** + * Returns if the user specified multihead. In case the display + * has multiple screens, the return value of this function specifies + * if the user wants OPIE to run on all of them or just on the primary + */ + static bool isMultiHead(); + +private: + /** + * reads in all paths from kdeglobals + */ + static void initStatic(); + /** + * initialise kde2Blue + */ + static void initColors(); + /** + * drop cached values for fonts (called by OApplication) + */ + static void rereadFontSettings(); + /** + * drop cached values for paths (called by OApplication) + */ + static void rereadPathSettings(); + /** + * drop cached values for mouse settings (called by OApplication) + */ + static void rereadMouseSettings(); + + + static QString* s_desktopPath; + static QString* s_autostartPath; + static QString* s_trashPath; + static QString* s_documentPath; + static QFont *_generalFont; + static QFont *_fixedFont; + static QFont *_toolBarFont; + static QFont *_menuFont; + static QFont *_windowTitleFont; + static QFont *_taskbarFont; + static QColor * kde2Gray; + static QColor * kde2Blue; + static QColor * kde2AlternateColor; + static OMouseSettings *s_mouseSettings; + + static QColor * OpieGray; + static QColor * OpieBlue; + static QColor * OpieAlternate; + static QColor * OpieHighlight; + + friend class OApplication; +}; + +#endif -- cgit v0.9.0.2