/* This file is part of the KDE libraries Copyright (C) 1999 Sirtaj Singh Kanq 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 _TDEGLOBAL_H #define _TDEGLOBAL_H #include "tdelibs_export.h" #include // KDE4: class TDEInstance is enough here class KCharsets; class TDEConfig; class TDESharedConfig; class TDEIconLoader; #ifdef __TDE_HAVE_TDEHWLIB class TDEHardwareDevices; class TDEGlobalNetworkManager; #endif class TDELocale; class TDEStandardDirs; class KStaticDeleterBase; class KStaticDeleterList; class KStringDict; class TQString; /** * Access to the KDE global objects. * TDEGlobal provides you with pointers of many central * objects that exist only once in the process. It is also * responsible for managing instances of KStaticDeleterBase. * * @see KStaticDeleterBase * @author Sirtaj Singh Kang (taj@kde.org) */ class TDECORE_EXPORT TDEGlobal { public: /** * Returns the global instance. There is always at least * one instance of a component in one application (in most * cases the application itself). * @return the global instance */ static TDEInstance *instance(); /** * Returns the application standard dirs object. * @return the global standard dir object */ static TDEStandardDirs *dirs(); /** * Returns the general config object. * @return the global configuration object. */ static TDEConfig *config(); /** * Returns the general config object. * @return the global configuration object. */ static TDESharedConfig *sharedConfig(); /** * Returns an iconloader object. * @return the global iconloader object */ static TDEIconLoader *iconLoader(); #ifdef __TDE_HAVE_TDEHWLIB /** * Returns a TDEHardwareDevices object. * @return the global hardware devices object */ static TDEHardwareDevices *hardwareDevices(); /** * Returns a TDEGlobalNetworkManager object. * @return the global network manager object */ static TDEGlobalNetworkManager *networkManager(); #endif /** * Returns the global locale object. * @return the global locale object */ static TDELocale *locale(); /** * The global charset manager. * @return the global charset manager */ static KCharsets *charsets(); /** * Creates a static TQString. * * To be used inside functions(!) like: * \code * static const TQString &myString = TDEGlobal::staticQString("myText"); * \endcode * * !!! Do _NOT_ use: !!! * \code * static TQString myString = TDEGlobal::staticQString("myText"); * \endcode * This creates a static object (instead of a static reference) * and as you know static objects are EVIL. * @param str the string to create * @return the static string */ static const TQString &staticQString(const char *str); /** * Creates a static TQString. * * To be used inside functions(!) like: * \code * static const TQString &myString = TDEGlobal::staticQString(i18n("My Text")); * \endcode * * !!! Do _NOT_ use: !!! * \code * static TQString myString = TDEGlobal::staticQString(i18n("myText")); * \endcode * This creates a static object (instead of a static reference) * and as you know static objects are EVIL. * @param str the string to create * @return the static string */ static const TQString &staticQString(const TQString &str); /** * Registers a static deleter. * @param d the static deleter to register * @see KStaticDeleterBase * @see KStaticDeleter */ static void registerStaticDeleter(KStaticDeleterBase *d); /** * Unregisters a static deleter. * @param d the static deleter to unregister * @see KStaticDeleterBase * @see KStaticDeleter */ static void unregisterStaticDeleter(KStaticDeleterBase *d); /** * Calls KStaticDeleterBase::destructObject() on all * registered static deleters and unregisters them all. * @see KStaticDeleterBase * @see KStaticDeleter */ static void deleteStaticDeleters(); //private: static KStringDict *_stringDict; static TDEInstance *_instance; static TDELocale *_locale; static KCharsets *_charsets; static KStaticDeleterList *_staticDeleters; /** * The instance currently active (useful in a multi-instance * application, such as a KParts application). * Don't use this - it's mainly for TDEAboutDialog and KBugReport. * @internal */ static void setActiveInstance(TDEInstance *d); static TDEInstance *activeInstance() { return _activeInstance; } static TDEInstance *_activeInstance; }; /** * \relates TDEGlobal * A typesafe function to find the minimum of the two arguments. */ #define KMIN(a,b) kMin(a,b) /** * \relates TDEGlobal * A typesafe function to find the maximum of the two arguments. */ #define KMAX(a,b) kMax(a,b) /** * \relates TDEGlobal * A typesafe function to determine the absolute value of the argument. */ #define KABS(a) kAbs(a) /** * \relates TDEGlobal * A typesafe function that returns x if it's between low and high values. * low if x is smaller than then low and high if x is bigger than high. */ #define KCLAMP(x,low,high) kClamp(x,low,high) // XXX KDE4: Make kMin, kMax and kClamp return "T" instead of "const T &"! template inline const T& kMin (const T& a, const T& b) { return a < b ? a : b; } template inline const T& kMax (const T& a, const T& b) { return b < a ? a : b; } template inline T kAbs (const T& a) { return a < 0 ? -a : a; } template inline const T& kClamp( const T& x, const T& low, const T& high ) { if ( x < low ) return low; else if ( high < x ) return high; else return x; } /** * Locale-independent tqstricmp. Use this for comparing ascii keywords * in a case-insensitive way. * tqstricmp fails with e.g. the Turkish locale where 'I'.lower() != 'i' * @since 3.4 */ int TDECORE_EXPORT kasciistricmp( const char *str1, const char *str2 ); /** * \mainpage The KDE Core Functionality Library * * All KDE programs use this library to provide basic functionality such * as the configuration system, IPC, internationalization and locale * support, site-independent access to the filesystem and a large number * of other (but no less important) things. * * All KDE applications should link to the tdecore library. Also, using a * TDEApplication derived class instead of TQApplication is almost * mandatory if you expect your application to behave nicely within the * KDE environment. */ #endif // _TDEGLOBAL_H