00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _KAPP_H
00022 #define _KAPP_H
00023
00024
00025 #include "kdeversion.h"
00026 #include "kdelibs_export.h"
00027
00028 class KConfig;
00029 class KCharsets;
00030 class DCOPClient;
00031 class DCOPObject;
00032
00033 typedef unsigned long Atom;
00034 #if !defined(Q_WS_X11)
00035 typedef void Display;
00036 #endif
00037
00038 #include <qapplication.h>
00039 #include <qpixmap.h>
00040 #include <kinstance.h>
00041
00042 struct _IceConn;
00043 class QPopupMenu;
00044 class QStrList;
00045 class KSessionManaged;
00046 class KStyle;
00047 class KURL;
00048
00049 #define kapp KApplication::kApplication()
00050
00051 class KApplicationPrivate;
00052
00094 class KDECORE_EXPORT KApplication : public QApplication, public KInstance
00095 {
00096
00097 Q_OBJECT
00098 public:
00099 enum CaptionLayout { CaptionAppLast=1, CaptionAppFirst, CaptionNoApp };
00100
00114 KApplication( bool allowStyles=true, bool GUIenabled=true);
00115
00116 #ifdef Q_WS_X11
00117
00140 KApplication(Display *display, Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0,
00141 bool allowStyles=true);
00142
00167 KApplication(Display *display, int& argc, char** argv, const QCString& rAppName,
00168 bool allowStyles=true, bool GUIenabled=true);
00169 #endif
00170
00193
00194
00195 KApplication(int& argc, char** argv,
00196 const QCString& rAppName, bool allowStyles=true, bool GUIenabled=true) KDE_DEPRECATED;
00197
00201 static void addCmdLineOptions();
00202
00203 virtual ~KApplication();
00204
00215 static KApplication* kApplication() { return KApp; }
00216
00224 KConfig* sessionConfig();
00225
00234 bool isRestored() const { return QApplication::isSessionRestored(); }
00235
00242 void disableSessionManagement();
00243
00250 void enableSessionManagement();
00251
00255 enum ShutdownConfirm {
00259 ShutdownConfirmDefault = -1,
00263 ShutdownConfirmNo = 0,
00267 ShutdownConfirmYes = 1
00268 };
00269
00273 enum ShutdownType {
00277 ShutdownTypeDefault = -1,
00281 ShutdownTypeNone = 0,
00285 ShutdownTypeReboot = 1,
00289 ShutdownTypeHalt = 2
00290 };
00291
00295 enum ShutdownMode {
00299 ShutdownModeDefault = -1,
00304 ShutdownModeSchedule = 0,
00308 ShutdownModeTryNow = 1,
00312 ShutdownModeForceNow = 2,
00316 ShutdownModeInteractive = 3
00317 };
00318
00334 bool requestShutDown( ShutdownConfirm confirm = ShutdownConfirmDefault,
00335 ShutdownType sdtype = ShutdownTypeDefault,
00336 ShutdownMode sdmode = ShutdownModeDefault );
00337
00351 void propagateSessionManager();
00352
00353
00354
00355
00356
00357
00358 void commitData( QSessionManager& sm );
00359
00360
00361
00362
00363
00364
00365 void saveState( QSessionManager& sm );
00366
00376 bool sessionSaving() const;
00377
00384 static DCOPClient *dcopClient();
00385
00390 static void disableAutoDcopRegistration();
00391
00396 QPixmap icon() const;
00397
00402 QString iconName() const;
00403
00408 QPixmap miniIcon() const;
00409
00414 QString miniIconName() const;
00415
00426 void setTopWidget( QWidget *topWidget );
00427
00440 void invokeHelp( const QString& anchor,
00441 const QString& appname,
00442 const QCString& startup_id ) const;
00443
00444
00445 void invokeHelp( const QString& anchor = QString::null,
00446 const QString& appname = QString::null ) const;
00447
00462 void invokeHTMLHelp( const QString& aFilename, const QString& aTopic = QString::null ) const KDE_DEPRECATED;
00463
00472 void invokeMailer( const QString &address, const QString &subject, const QCString& startup_id );
00473
00474 void invokeMailer( const QString &address, const QString &subject );
00475
00485 void invokeMailer( const KURL &mailtoURL, const QCString& startup_id, bool allowAttachments );
00486
00487 void invokeMailer( const KURL &mailtoURL, const QCString& startup_id );
00488
00489 void invokeMailer( const KURL &mailtoURL );
00490
00506 void invokeMailer(const QString &to, const QString &cc, const QString &bcc,
00507 const QString &subject, const QString &body,
00508 const QString &messageFile, const QStringList &attachURLs,
00509 const QCString& startup_id );
00510
00511 void invokeMailer(const QString &to, const QString &cc, const QString &bcc,
00512 const QString &subject, const QString &body,
00513 const QString &messageFile = QString::null, const QStringList &attachURLs = QStringList());
00514
00515 public slots:
00526 void invokeBrowser( const QString &url, const QCString& startup_id );
00527
00528 void invokeBrowser( const QString &url );
00529
00537 void cut();
00538
00546 void copy();
00547
00555 void paste();
00556
00582 void clear();
00583
00591 void selectAll();
00592
00593 public:
00599 static QCString launcher();
00600
00621 static int startServiceByName( const QString& _name, const QString &URL,
00622 QString *error=0, QCString *dcopService=0, int *pid=0, const QCString &startup_id = "", bool noWait = false );
00623
00644 static int startServiceByName( const QString& _name, const QStringList &URLs=QStringList(),
00645 QString *error=0, QCString *dcopService=0, int *pid=0, const QCString &startup_id = "", bool noWait = false );
00646
00667 static int startServiceByDesktopPath( const QString& _name, const QString &URL,
00668 QString *error=0, QCString *dcopService=0, int *pid = 0, const QCString &startup_id = "", bool noWait = false );
00669
00690 static int startServiceByDesktopPath( const QString& _name, const QStringList &URLs=QStringList(),
00691 QString *error=0, QCString *dcopService=0, int *pid = 0, const QCString &startup_id = "", bool noWait = false );
00692
00713 static int startServiceByDesktopName( const QString& _name, const QString &URL,
00714 QString *error=0, QCString *dcopService=0, int *pid = 0, const QCString &startup_id = "", bool noWait = false );
00715
00736 static int startServiceByDesktopName( const QString& _name, const QStringList &URLs=QStringList(),
00737 QString *error=0, QCString *dcopService=0, int *pid = 0, const QCString &startup_id = "", bool noWait = false );
00738
00758 static int kdeinitExec( const QString& name, const QStringList &args,
00759 QString *error, int *pid, const QCString& startup_id );
00760
00761 static int kdeinitExec( const QString& name, const QStringList &args=QStringList(),
00762 QString *error=0, int *pid = 0 );
00763
00781 static int kdeinitExecWait( const QString& name, const QStringList &args,
00782 QString *error, int *pid, const QCString& startup_id );
00783
00784 static int kdeinitExecWait( const QString& name, const QStringList &args=QStringList(),
00785 QString *error=0, int *pid = 0 );
00786
00795 QString caption() const;
00796
00800 KDE_DEPRECATED KStyle* kstyle() const { return 0; }
00801
00819 QString makeStdCaption( const QString &userCaption,
00820 bool withAppName=true, bool modified=false ) const;
00821
00829 QString tempSaveName( const QString& pFilename ) const;
00830
00840 QString checkRecoverFile( const QString& pFilename, bool& bRecover ) const;
00841
00842 #ifdef Q_WS_X11
00843
00847 Display *getDisplay() { return display; }
00848 #endif
00849
00857 void enableStyles();
00858
00866 void disableStyles();
00867
00877 void installX11EventFilter( QWidget* filter );
00878
00883 void removeX11EventFilter( const QWidget* filter );
00884
00889 static int random();
00890
00896 static QString randomString(int length);
00897
00907 void addKipcEventMask(int id);
00908
00917 void removeKipcEventMask(int id);
00918
00924 QCString startupId() const;
00925
00933 void setStartupId( const QCString& startup_id );
00934
00941 void updateUserTimestamp( unsigned long time = 0 );
00942
00948 unsigned long userTimestamp() const;
00949
00958 void updateRemoteUserTimestamp( const QCString& dcopId, unsigned long time = 0 );
00959
00965 QString geometryArgument() const;
00966
00971 void installKDEPropertyMap();
00972
00978 bool authorize(const QString &genericAction);
00979
00987 bool authorizeKAction(const char *action);
00988
01002 bool authorizeURLAction(const QString &action, const KURL &baseURL, const KURL &destURL);
01003
01013 void allowURLAction(const QString &action, const KURL &_baseURL, const KURL &_destURL);
01014
01022 bool authorizeControlModule(const QString &menuId);
01023
01032 QStringList authorizeControlModules(const QStringList &menuIds);
01033
01043 static ButtonState keyboardMouseState();
01044
01045
01046 enum { ShiftModifier = 1<<0,
01047 LockModifier = 1<<1,
01048 ControlModifier = 1<<2,
01049 Modifier1 = 1<<3,
01050 Modifier2 = 1<<4,
01051 Modifier3 = 1<<5,
01052 Modifier4 = 1<<6,
01053 Modifier5 = 1<<7 };
01058 static uint keyboardModifiers() KDE_DEPRECATED;
01059
01061 enum { Button1Pressed = 1<<8,
01062 Button2Pressed = 1<<9,
01063 Button3Pressed = 1<<10,
01064 Button4Pressed = 1<<11,
01065 Button5Pressed = 1<<12 };
01070 static uint mouseState() KDE_DEPRECATED;
01071
01072
01073 public slots:
01080 void ref();
01081
01086 void deref();
01087
01088 protected:
01092 KApplication( bool allowStyles, bool GUIenabled, KInstance* _instance );
01093
01094 #ifdef Q_WS_X11
01098 KApplication( Display *display, Qt::HANDLE visual, Qt::HANDLE colormap,
01099 bool allowStyles, KInstance* _instance );
01100
01104 bool x11EventFilter( XEvent * );
01105
01106 Display *display;
01107 #endif
01108 Atom kipcCommAtom;
01109 int kipcEventMask;
01110
01112 static KApplication *KApp;
01113 int pArgc;
01114
01146 void invokeEditSlot( const char *slot );
01147
01148 private slots:
01149 void dcopFailure(const QString &);
01150 void dcopBlockUserInput( bool );
01151 void x11FilterDestroyed();
01152 void checkAppStartedSlot();
01153
01154 private:
01155 QString sessionConfigName() const;
01156 KConfig* pSessionConfig;
01157 static DCOPClient *s_DCOPClient;
01158 static bool s_dcopClientNeedsPostInit;
01159 QString aCaption;
01160 bool bSessionManagement;
01161 struct oldPixmapType { QPixmap a, b; };
01162 mutable union {
01163 struct {
01164 QPixmap *icon, *miniIcon;
01165 } pm;
01166 char unused[sizeof(oldPixmapType)];
01167 } aIconPixmap;
01168 QString aIconName;
01169 QString aMiniIconName;
01170 bool useStyles;
01171 QWidget *smw;
01172
01173 void init( bool GUIenabled );
01174
01175 void parseCommandLine( );
01176
01177 void read_app_startup_id();
01178
01179 void dcopAutoRegistration();
01180 void dcopClientPostInit();
01181 void initUrlActionRestrictions();
01182
01183 public:
01187 bool notify(QObject *receiver, QEvent *event);
01188
01192 int xErrhandler( Display*, void* );
01193
01197 int xioErrhandler( Display* );
01198
01202 void iceIOErrorHandler( _IceConn *conn );
01203
01207 static bool loadedByKdeinit;
01208
01212 static void startKdeinit();
01213
01217 enum SettingsCategory { SETTINGS_MOUSE, SETTINGS_COMPLETION, SETTINGS_PATHS,
01218 SETTINGS_POPUPMENU, SETTINGS_QT, SETTINGS_SHORTCUTS };
01219
01228 static QPalette createApplicationPalette();
01229
01234 static QPalette createApplicationPalette( KConfig *config, int contrast );
01235
01243 static void installSigpipeHandler();
01244
01251 static bool guiEnabled();
01252
01253 signals:
01260 void kdisplayPaletteChanged();
01261
01269 void kdisplayStyleChanged();
01270
01282 void kdisplayFontChanged();
01283
01289 void appearanceChanged();
01290
01294 void toolbarAppearanceChanged(int);
01295
01301 void backgroundChanged(int desk);
01302
01309 void settingsChanged(int category);
01310
01315 void iconChanged(int group);
01316
01326 void kipcMessage(int id, int data);
01327
01357 void saveYourself();
01358
01366 void shutDown();
01367
01368 private:
01369 void propagateSettings(SettingsCategory category);
01370 void kdisplaySetPalette();
01371 void kdisplaySetStyle();
01372 void kdisplaySetFont();
01373 void applyGUIStyle();
01374 static void sigpipeHandler(int);
01375
01376 int captionLayout;
01377
01378 KApplication(const KApplication&);
01379 KApplication& operator=(const KApplication&);
01380 protected:
01381 virtual void virtual_hook( int id, void* data );
01382 private:
01383 KApplicationPrivate* d;
01384 };
01385
01386
01404 KDECORE_EXPORT bool checkAccess(const QString& pathname, int mode);
01405
01406 class KSessionManagedPrivate;
01407
01424 class KDECORE_EXPORT KSessionManaged
01425 {
01426 public:
01427 KSessionManaged();
01428 virtual ~KSessionManaged();
01429
01439 virtual bool saveState( QSessionManager& sm );
01449 virtual bool commitData( QSessionManager& sm );
01450
01451 protected:
01452 virtual void virtual_hook( int id, void* data );
01453 private:
01454 KSessionManagedPrivate *d;
01455 };
01456
01457
01458 #endif
01459