00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef _KAPP_H
00024 #define _KAPP_H
00025
00026
00027 #include "kdeversion.h"
00028 #include "kdemacros.h"
00029
00030 class KConfig;
00031 class KCharsets;
00032 class DCOPClient;
00033 class DCOPObject;
00034
00035 typedef unsigned long Atom;
00036 #ifdef Q_WS_QWS
00037 typedef void Display;
00038 #endif
00039
00040 #include <qapplication.h>
00041 #include <qpixmap.h>
00042 #include <kinstance.h>
00043
00044 struct _IceConn;
00045 class QPopupMenu;
00046 class QStrList;
00047 class KSessionManaged;
00048 class KStyle;
00049 class KURL;
00050
00051 #define kapp KApplication::kApplication()
00052
00053 class KApplicationPrivate;
00054
00096 class KApplication : public QApplication, public KInstance
00097 {
00098
00099 Q_OBJECT
00100 public:
00101 enum CaptionLayout { CaptionAppLast=1, CaptionAppFirst, CaptionNoApp };
00102
00116 KApplication( bool allowStyles=true, bool GUIenabled=true);
00117
00118 #ifndef Q_WS_QWS
00119
00142 KApplication(Display *display, Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0,
00143 bool allowStyles=true);
00144
00169 KApplication(Display *display, int& argc, char** argv, const QCString& rAppName,
00170 bool allowStyles=true, bool GUIenabled=true);
00171 #endif
00172
00195
00196
00197 KApplication(int& argc, char** argv,
00198 const QCString& rAppName, bool allowStyles=true, bool GUIenabled=true) KDE_DEPRECATED;
00199
00203 static void addCmdLineOptions();
00204
00205 virtual ~KApplication();
00206
00217 static KApplication* kApplication() { return KApp; }
00218
00226 KConfig* sessionConfig();
00227
00236 bool isRestored() const { return QApplication::isSessionRestored(); }
00237
00244 void disableSessionManagement();
00245
00252 void enableSessionManagement();
00253
00257 enum ShutdownConfirm {
00261 ShutdownConfirmDefault = -1,
00265 ShutdownConfirmNo = 0,
00269 ShutdownConfirmYes = 1
00270 };
00271
00275 enum ShutdownType {
00279 ShutdownTypeDefault = -1,
00283 ShutdownTypeNone = 0,
00287 ShutdownTypeReboot = 1,
00291 ShutdownTypeHalt = 2
00292 };
00293
00297 enum ShutdownMode {
00301 ShutdownModeDefault = -1,
00306 ShutdownModeSchedule = 0,
00310 ShutdownModeTryNow = 1,
00314 ShutdownModeForceNow = 2,
00318 ShutdownModeInteractive = 3
00319 };
00320
00336 bool requestShutDown( ShutdownConfirm confirm = ShutdownConfirmDefault,
00337 ShutdownType sdtype = ShutdownTypeDefault,
00338 ShutdownMode sdmode = ShutdownModeDefault );
00339
00353 void propagateSessionManager();
00354
00355
00356
00357
00358
00359
00360 void commitData( QSessionManager& sm );
00361
00362
00363
00364
00365
00366
00367 void saveState( QSessionManager& sm );
00368
00378 bool sessionSaving() const;
00379
00386 static DCOPClient *dcopClient();
00387
00392 static void disableAutoDcopRegistration();
00393
00398 QPixmap icon() const;
00399
00404 QString iconName() const;
00405
00410 QPixmap miniIcon() const;
00411
00416 QString miniIconName() const;
00417
00428 void setTopWidget( QWidget *topWidget );
00429
00442 void invokeHelp( const QString& anchor,
00443 const QString& appname,
00444 const QCString& startup_id ) const;
00445
00446
00447 void invokeHelp( const QString& anchor = QString::null,
00448 const QString& appname = QString::null ) const;
00449
00464 void invokeHTMLHelp( const QString& aFilename, const QString& aTopic = QString::null ) const KDE_DEPRECATED;
00465
00474 void invokeMailer( const QString &address, const QString &subject, const QCString& startup_id );
00475
00476 void invokeMailer( const QString &address, const QString &subject );
00477
00487 void invokeMailer( const KURL &mailtoURL, const QCString& startup_id, bool allowAttachments );
00488
00489 void invokeMailer( const KURL &mailtoURL, const QCString& startup_id );
00490
00491 void invokeMailer( const KURL &mailtoURL );
00492
00508 void invokeMailer(const QString &to, const QString &cc, const QString &bcc,
00509 const QString &subject, const QString &body,
00510 const QString &messageFile, const QStringList &attachURLs,
00511 const QCString& startup_id );
00512
00513 void invokeMailer(const QString &to, const QString &cc, const QString &bcc,
00514 const QString &subject, const QString &body,
00515 const QString &messageFile = QString::null, const QStringList &attachURLs = QStringList());
00516
00517 public slots:
00528 void invokeBrowser( const QString &url, const QCString& startup_id );
00529
00530 void invokeBrowser( const QString &url );
00531
00539 void cut();
00540
00548 void copy();
00549
00557 void paste();
00558
00584 void clear();
00585
00593 void selectAll();
00594
00595 public:
00601 static QCString launcher();
00602
00623 static int startServiceByName( const QString& _name, const QString &URL,
00624 QString *error=0, QCString *dcopService=0, int *pid=0, const QCString &startup_id = "", bool noWait = false );
00625
00646 static int startServiceByName( const QString& _name, const QStringList &URLs=QStringList(),
00647 QString *error=0, QCString *dcopService=0, int *pid=0, const QCString &startup_id = "", bool noWait = false );
00648
00669 static int startServiceByDesktopPath( const QString& _name, const QString &URL,
00670 QString *error=0, QCString *dcopService=0, int *pid = 0, const QCString &startup_id = "", bool noWait = false );
00671
00692 static int startServiceByDesktopPath( const QString& _name, const QStringList &URLs=QStringList(),
00693 QString *error=0, QCString *dcopService=0, int *pid = 0, const QCString &startup_id = "", bool noWait = false );
00694
00715 static int startServiceByDesktopName( const QString& _name, const QString &URL,
00716 QString *error=0, QCString *dcopService=0, int *pid = 0, const QCString &startup_id = "", bool noWait = false );
00717
00738 static int startServiceByDesktopName( const QString& _name, const QStringList &URLs=QStringList(),
00739 QString *error=0, QCString *dcopService=0, int *pid = 0, const QCString &startup_id = "", bool noWait = false );
00740
00760 static int kdeinitExec( const QString& name, const QStringList &args,
00761 QString *error, int *pid, const QCString& startup_id );
00762
00763 static int kdeinitExec( const QString& name, const QStringList &args=QStringList(),
00764 QString *error=0, int *pid = 0 );
00765
00783 static int kdeinitExecWait( const QString& name, const QStringList &args,
00784 QString *error, int *pid, const QCString& startup_id );
00785
00786 static int kdeinitExecWait( const QString& name, const QStringList &args=QStringList(),
00787 QString *error=0, int *pid = 0 );
00788
00797 QString caption() const;
00798
00802 KDE_DEPRECATED KStyle* kstyle() const { return 0; }
00803
00821 QString makeStdCaption( const QString &userCaption,
00822 bool withAppName=true, bool modified=false ) const;
00823
00831 QString tempSaveName( const QString& pFilename ) const;
00832
00842 QString checkRecoverFile( const QString& pFilename, bool& bRecover ) const;
00843
00844 #ifdef Q_WS_X11
00845
00849 Display *getDisplay() { return display; }
00850 #endif
00851
00859 void enableStyles();
00860
00868 void disableStyles();
00869
00879 void installX11EventFilter( QWidget* filter );
00880
00885 void removeX11EventFilter( const QWidget* filter );
00886
00891 static int random();
00892
00898 static QString randomString(int length);
00899
00909 void addKipcEventMask(int id);
00910
00919 void removeKipcEventMask(int id);
00920
00926 QCString startupId() const;
00927
00935 void setStartupId( const QCString& startup_id );
00936
00943 void updateUserTimestamp( unsigned long time = 0 );
00944
00950 unsigned long userTimestamp() const;
00951
00960 void updateRemoteUserTimestamp( const QCString& dcopId, unsigned long time = 0 );
00961
00967 QString geometryArgument() const;
00968
00973 void installKDEPropertyMap();
00974
00980 bool authorize(const QString &genericAction);
00981
00989 bool authorizeKAction(const char *action);
00990
01004 bool authorizeURLAction(const QString &action, const KURL &baseURL, const KURL &destURL);
01005
01015 void allowURLAction(const QString &action, const KURL &_baseURL, const KURL &_destURL);
01016
01024 bool authorizeControlModule(const QString &menuId);
01025
01034 QStringList authorizeControlModules(const QStringList &menuIds);
01035
01036
01037
01038 enum { ShiftModifier = 1<<0,
01039 LockModifier = 1<<1,
01040 ControlModifier = 1<<2,
01041 Modifier1 = 1<<3,
01042 Modifier2 = 1<<4,
01043 Modifier3 = 1<<5,
01044 Modifier4 = 1<<6,
01045 Modifier5 = 1<<7 };
01056 static uint keyboardModifiers();
01057
01058
01059 enum { Button1Pressed = 1<<8,
01060 Button2Pressed = 1<<9,
01061 Button3Pressed = 1<<10,
01062 Button4Pressed = 1<<11,
01063 Button5Pressed = 1<<12 };
01073 static uint mouseState();
01074
01075
01076 public slots:
01083 void ref();
01084
01089 void deref();
01090
01091 protected:
01095 KApplication( bool allowStyles, bool GUIenabled, KInstance* _instance );
01096
01097 #ifdef Q_WS_X11
01098
01101 KApplication( Display *display, Qt::HANDLE visual, Qt::HANDLE colormap,
01102 bool allowStyles, KInstance* _instance );
01103
01107 bool x11EventFilter( XEvent * );
01108
01109 Display *display;
01110 #endif
01111 Atom kipcCommAtom;
01112 int kipcEventMask;
01113
01115 static KApplication *KApp;
01116 int pArgc;
01117
01149 void invokeEditSlot( const char *slot );
01150
01151 private slots:
01152 void dcopFailure(const QString &);
01153 void dcopBlockUserInput( bool );
01154 void x11FilterDestroyed();
01155 void checkAppStartedSlot();
01156
01157 private:
01158 QString sessionConfigName() const;
01159 KConfig* pSessionConfig;
01160 static DCOPClient *s_DCOPClient;
01161 static bool s_dcopClientNeedsPostInit;
01162 QString aCaption;
01163 bool bSessionManagement;
01164 QPixmap aIconPixmap;
01165 QPixmap aMiniIconPixmap;
01166 QString aIconName;
01167 QString aMiniIconName;
01168 bool useStyles;
01169 QWidget *smw;
01170
01171 void init( bool GUIenabled );
01172
01173 void parseCommandLine( );
01174
01175 void read_app_startup_id();
01176
01177 void dcopAutoRegistration();
01178 void dcopClientPostInit();
01179 void initUrlActionRestrictions();
01180
01181 public:
01185 bool notify(QObject *receiver, QEvent *event);
01186
01190 int xErrhandler( Display*, void* );
01191
01195 int xioErrhandler( Display* );
01196
01200 void iceIOErrorHandler( _IceConn *conn );
01201
01205 static bool loadedByKdeinit;
01206
01210 static void startKdeinit();
01211
01215 enum SettingsCategory { SETTINGS_MOUSE, SETTINGS_COMPLETION, SETTINGS_PATHS,
01216 SETTINGS_POPUPMENU, SETTINGS_QT, SETTINGS_SHORTCUTS };
01217
01226 static QPalette createApplicationPalette();
01227
01232 static QPalette createApplicationPalette( KConfig *config, int contrast );
01233
01241 static void installSigpipeHandler();
01242
01249 static bool guiEnabled();
01250
01251 signals:
01258 void kdisplayPaletteChanged();
01259
01267 void kdisplayStyleChanged();
01268
01280 void kdisplayFontChanged();
01281
01287 void appearanceChanged();
01288
01292 void toolbarAppearanceChanged(int);
01293
01299 void backgroundChanged(int desk);
01300
01307 void settingsChanged(int category);
01308
01313 void iconChanged(int group);
01314
01324 void kipcMessage(int id, int data);
01325
01355 void saveYourself();
01356
01364 void shutDown();
01365
01366 private:
01367 void propagateSettings(SettingsCategory category);
01368 void kdisplaySetPalette();
01369 void kdisplaySetStyle();
01370 void kdisplaySetFont();
01371 void applyGUIStyle();
01372 static void sigpipeHandler(int);
01373
01374 int captionLayout;
01375
01376 KApplication(const KApplication&);
01377 KApplication& operator=(const KApplication&);
01378 protected:
01379 virtual void virtual_hook( int id, void* data );
01380 private:
01381 KApplicationPrivate* d;
01382 };
01383
01384
01402 bool checkAccess(const QString& pathname, int mode);
01403
01404 class KSessionManagedPrivate;
01405
01422 class KSessionManaged
01423 {
01424 public:
01425 KSessionManaged();
01426 virtual ~KSessionManaged();
01427
01437 virtual bool saveState( QSessionManager& sm );
01447 virtual bool commitData( QSessionManager& sm );
01448
01449 protected:
01450 virtual void virtual_hook( int id, void* data );
01451 private:
01452 KSessionManagedPrivate *d;
01453 };
01454
01455
01456 #endif
01457