kdecore Library API Documentation

kapplication.h

00001 /* This file is part of the KDE libraries
00002     Copyright (C) 1997 Matthias Kalle Dalheimer (kalle@kde.org)
00003     Copyright (c) 1998, 1999 KDE Team
00004 
00005     This library is free software; you can redistribute it and/or
00006     modify it under the terms of the GNU Library General Public
00007     License as published by the Free Software Foundation; either
00008     version 2 of the License, or (at your option) any later version.
00009 
00010     This library is distributed in the hope that it will be useful,
00011     but WITHOUT ANY WARRANTY; without even the implied warranty of
00012     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013     Library General Public License for more details.
00014 
00015     You should have received a copy of the GNU Library General Public License
00016     along with this library; see the file COPYING.LIB.  If not, write to
00017     the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
00018     Boston, MA 02111-1307, USA.
00019 */
00020 
00021 // $Id: kapplication.h,v 1.278.2.1 2003/03/03 14:39:42 lunakl Exp $
00022 
00023 #ifndef _KAPP_H
00024 #define _KAPP_H
00025 
00026 // Version macros. Never put this further down.
00027 #include "kdeversion.h"
00028 
00029 class KConfig;
00030 class KCharsets;
00031 class DCOPClient;
00032 class DCOPObject;
00033 
00034 typedef unsigned long Atom;
00035 #ifdef Q_WS_QWS
00036 typedef void Display;
00037 #endif
00038 
00039 #include <qapplication.h>
00040 #include <qpixmap.h>
00041 #include <kinstance.h>
00042 
00043 struct _IceConn;
00044 class QPopupMenu;
00045 class QStrList;
00046 class KSessionManaged;
00047 class KStyle;
00048 class KURL;
00049 
00050 #define kapp KApplication::kApplication()
00051 
00052 class KApplicationPrivate;
00053 
00091 class KApplication : public QApplication, public KInstance
00092 {
00093 
00094   Q_OBJECT
00095 public:
00096   enum CaptionLayout { CaptionAppLast=1, CaptionAppFirst, CaptionNoApp };
00097 
00111   KApplication( bool allowStyles=true, bool GUIenabled=true);
00112 
00113 #ifndef Q_WS_QWS
00114 
00134   KApplication(Display *display, int& argc, char** argv, const QCString& rAppName,
00135                bool allowStyles=true, bool GUIenabled=true);
00136 #endif
00137 
00158   KApplication(int& argc, char** argv,
00159               const QCString& rAppName, bool allowStyles=true, bool GUIenabled=true);
00160 
00164   static void addCmdLineOptions();
00165 
00166   virtual ~KApplication();
00167 
00178   static KApplication* kApplication() { return KApp; }
00179 
00187   KConfig* sessionConfig();
00188 
00197   bool isRestored() const { return QApplication::isSessionRestored(); }
00198 
00205   void disableSessionManagement();
00206 
00210   enum ShutdownConfirm {
00214     ShutdownConfirmDefault = -1,
00218     ShutdownConfirmNo = 0,
00222     ShutdownConfirmYes = 1
00223   };
00224 
00228   enum ShutdownType {
00232     ShutdownTypeDefault = -1,
00236     ShutdownTypeNone = 0,
00240     ShutdownTypeReboot = 1,
00244     ShutdownTypeHalt = 2
00245   };
00246 
00250   enum ShutdownMode {
00254     ShutdownModeDefault = -1,
00259     ShutdownModeSchedule = 0,
00263     ShutdownModeTryNow = 1,
00267     ShutdownModeForceNow = 2,
00271     ShutdownModeInteractive = 3
00272   };
00273 
00289   bool requestShutDown( ShutdownConfirm confirm = ShutdownConfirmDefault,
00290                         ShutdownType sdtype = ShutdownTypeDefault,
00291             ShutdownMode sdmode = ShutdownModeDefault );
00292 
00306     void propagateSessionManager();
00307 
00308     /*
00309      * Reimplemented for internal purposes, mainly the highlevel
00310      *  handling of session management with @ref KSessionManaged.
00311      * @internal
00312      */
00313   void commitData( QSessionManager& sm );
00314 
00315     /*
00316      * Reimplemented for internal purposes, mainly the highlevel
00317      *  handling of session management with KSessionManaged.
00318      * @internal
00319      */
00320   void saveState( QSessionManager& sm );
00321   
00331   bool sessionSaving() const;
00332 
00339   static DCOPClient *dcopClient();
00340 
00345   static void disableAutoDcopRegistration();
00346 
00351   QPixmap icon() const;
00352 
00357   QString iconName() const;
00358 
00363   QPixmap miniIcon() const;
00364 
00369   QString miniIconName() const;
00370 
00381   void setTopWidget( QWidget *topWidget );
00382 
00393   void invokeHelp( const QString& anchor = QString::null,
00394                    const QString& appname = QString::null ) const;
00395 
00410   void invokeHTMLHelp( const QString& aFilename, const QString& aTopic = QString::null ) const;
00411 
00418   void invokeMailer( const QString &address, const QString &subject );
00419 
00425   void invokeMailer( const KURL &mailtoURL );
00426 
00440   void invokeMailer(const QString &to, const QString &cc, const QString &bcc,
00441                     const QString &subject, const QString &body,
00442                     const QString &messageFile = QString::null, const QStringList &attachURLs = QStringList());
00443 
00444 public slots:
00453   void invokeBrowser( const QString &url );
00454 
00455 public:
00461   static QCString launcher();
00462 
00483   static int startServiceByName( const QString& _name, const QString &URL,
00484                 QString *error=0, QCString *dcopService=0, int *pid=0, const QCString &startup_id = "", bool noWait = false );
00485 
00506   static int startServiceByName( const QString& _name, const QStringList &URLs=QStringList(),
00507                 QString *error=0, QCString *dcopService=0, int *pid=0, const QCString &startup_id = "", bool noWait = false );
00508 
00529   static int startServiceByDesktopPath( const QString& _name, const QString &URL,
00530                 QString *error=0, QCString *dcopService=0, int *pid = 0, const QCString &startup_id = "", bool noWait = false );
00531 
00552   static int startServiceByDesktopPath( const QString& _name, const QStringList &URLs=QStringList(),
00553                 QString *error=0, QCString *dcopService=0, int *pid = 0, const QCString &startup_id = "", bool noWait = false );
00554 
00575   static int startServiceByDesktopName( const QString& _name, const QString &URL,
00576                 QString *error=0, QCString *dcopService=0, int *pid = 0, const QCString &startup_id = "", bool noWait = false );
00577 
00598   static int startServiceByDesktopName( const QString& _name, const QStringList &URLs=QStringList(),
00599                 QString *error=0, QCString *dcopService=0, int *pid = 0, const QCString &startup_id = "", bool noWait = false );
00600 
00618   static int kdeinitExec( const QString& name, const QStringList &args=QStringList(),
00619                 QString *error=0, int *pid = 0 );
00620 
00636   static int kdeinitExecWait( const QString& name, const QStringList &args=QStringList(),
00637                 QString *error=0, int *pid = 0 );
00638 
00647   QString caption() const;
00648 
00652   KStyle* kstyle() const { return 0; }
00653 
00671   QString makeStdCaption( const QString &userCaption,
00672                           bool withAppName=true, bool modified=false ) const;
00673 
00681   QString tempSaveName( const QString& pFilename ) const;
00682 
00692   QString checkRecoverFile( const QString& pFilename, bool& bRecover ) const;
00693 
00694 #ifdef Q_WS_X11
00695 
00699   Display *getDisplay() { return display; }
00700 #endif
00701 
00709   void enableStyles();
00710 
00718   void disableStyles();
00719 
00729   void installX11EventFilter( QWidget* filter );
00730 
00735   static int random();
00736 
00742   static QString randomString(int length);
00743 
00753   void addKipcEventMask(int id);
00754 
00763   void removeKipcEventMask(int id);
00764 
00770   QCString startupId() const;
00771 
00777   void setStartupId( const QCString& startup_id );
00778 
00784   QString geometryArgument() const;
00785 
00790   void installKDEPropertyMap();
00791 
00797   bool authorize(const QString &genericAction);
00798 
00806   bool authorizeKAction(const char *action);
00807 
00821   bool authorizeURLAction(const QString &action, const KURL &baseURL, const KURL &destURL);
00822                    
00823 
00824   // Same values as ShiftMask etc. in X.h
00825   enum { ShiftModifier = 1<<0,
00826          LockModifier = 1<<1,
00827          ControlModifier = 1<<2,
00828          Modifier1 = 1<<3,
00829          Modifier2 = 1<<4,
00830          Modifier3 = 1<<5,
00831          Modifier4 = 1<<6,
00832          Modifier5 = 1<<7 };
00843   static uint keyboardModifiers();
00844 
00845   // Same values as Button1Mask etc. in X.h
00846   enum { Button1Pressed = 1<<8,
00847          Button2Pressed = 1<<9,
00848          Button3Pressed = 1<<10,
00849          Button4Pressed = 1<<11,
00850          Button5Pressed = 1<<12 };
00860   static uint mouseState();
00861 
00862 
00863 public slots:
00870   void ref();
00871 
00876   void deref();
00877 
00878 protected:
00882   KApplication( bool allowStyles, bool GUIenabled, KInstance* _instance );
00883 
00884 #ifdef Q_WS_X11
00885 
00888   bool x11EventFilter( XEvent * );
00889 
00890   Display *display;
00891 #endif
00892   Atom kipcCommAtom;
00893   int kipcEventMask;
00894 
00896   static KApplication *KApp;
00897   int pArgc;
00898 
00899 private slots:
00900   void dcopFailure(const QString &);
00901   void dcopBlockUserInput( bool );
00902   void x11FilterDestroyed();
00903 
00904 private:
00905   QString sessionConfigName() const;
00906   KConfig* pSessionConfig; //instance specific application config object
00907   static DCOPClient *s_DCOPClient; // app specific application communication client
00908   static bool s_dcopClientNeedsPostInit;
00909   QString aCaption; // the name for the window title
00910   bool bSessionManagement;
00911   QPixmap aIconPixmap;
00912   QPixmap aMiniIconPixmap;
00913   QString aIconName;
00914   QString aMiniIconName;
00915   bool useStyles;
00916   QWidget *smw;
00917 
00918   void init( bool GUIenabled );
00919 
00920   void parseCommandLine( ); // Handle KDE arguments (Using KCmdLineArgs)
00921 
00922   void read_app_startup_id();
00923 
00924   void dcopAutoRegistration();
00925   void dcopClientPostInit();
00926   void initUrlActionRestrictions();
00927 public:
00931   bool notify(QObject *receiver, QEvent *event);
00932 
00936   int xioErrhandler();
00937 
00941   void iceIOErrorHandler( _IceConn *conn );
00942 
00946   static bool loadedByKdeinit;
00947 
00951   static void startKdeinit();
00952 
00956   enum SettingsCategory { SETTINGS_MOUSE, SETTINGS_COMPLETION, SETTINGS_PATHS,
00957          SETTINGS_POPUPMENU, SETTINGS_QT, SETTINGS_SHORTCUTS };
00958 
00967   static QPalette createApplicationPalette();
00968 
00973   static QPalette createApplicationPalette( KConfig *config, int contrast );
00974 
00975 signals:
00982   void kdisplayPaletteChanged();
00983 
00991   void kdisplayStyleChanged();
00992 
01000   void kdisplayFontChanged();
01001 
01007   void appearanceChanged();
01008 
01012   void toolbarAppearanceChanged(int);
01013 
01019   void backgroundChanged(int desk);
01020 
01027   void settingsChanged(int category);
01028 
01033   void iconChanged(int group);
01034 
01044   void kipcMessage(int id, int data);
01045 
01075   void saveYourself();
01076 
01084   void shutDown();
01085 
01086 private:
01087   void propagateSettings(SettingsCategory category);
01088   void kdisplaySetPalette();
01089   void kdisplaySetStyle();
01090   void kdisplaySetFont();
01091   void applyGUIStyle();
01092 
01093   int captionLayout;
01094 
01095   KApplication(const KApplication&);
01096   KApplication& operator=(const KApplication&);
01097 protected:
01098   virtual void virtual_hook( int id, void* data );
01099 private:
01100   KApplicationPrivate* d;
01101 };
01102 
01103 
01119 bool checkAccess(const QString& pathname, int mode);
01120 
01121 
01122 class KSessionManagedPrivate;
01123 
01140 class KSessionManaged
01141 {
01142 public:
01143   KSessionManaged();
01144   virtual ~KSessionManaged();
01145 
01155   virtual bool saveState( QSessionManager& sm );
01165   virtual bool commitData( QSessionManager& sm );
01166 
01167 protected:
01168   virtual void virtual_hook( int id, void* data );
01169 private:
01170   KSessionManagedPrivate *d;
01171 };
01172 
01173 
01174 #endif
01175 
KDE Logo
This file is part of the documentation for kdelibs Version 3.1.4.
Documentation copyright © 1996-2002 the KDE developers.
Generated on Sun Feb 27 22:14:45 2005 by doxygen 1.3.4 written by Dimitri van Heesch, © 1997-2001