KDEUI
kstartupinfo.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef KSTARTUPINFO_H
00026 #define KSTARTUPINFO_H
00027
00028 #include <kdeui_export.h>
00029
00030 #include <QtCore/QObject>
00031 #include <QtCore/QString>
00032 #include <QtCore/QChildEvent>
00033 #include <QtGui/QWidgetList>
00034
00035 #include <sys/types.h>
00036
00037 #if !defined(Q_WS_X11)
00038 typedef void Display;
00039 #endif
00040
00041 class KStartupInfoId;
00042 class KStartupInfoData;
00043
00064 class KDEUI_EXPORT KStartupInfo
00065 : public QObject
00066 {
00067 Q_OBJECT
00068 public:
00076 static void disableAutoAppStartedSending( bool disable = true );
00077
00085 static void appStarted();
00086
00091 static void appStarted( const QByteArray& startup_id );
00092
00101 static void setNewStartupId( QWidget* window, const QByteArray& startup_id );
00102
00111 static void silenceStartup( bool silence );
00112
00117 static QByteArray createNewStartupId();
00121 enum {
00122 CleanOnCantDetect = 1 << 0,
00123 DisableKWinModule = 1 << 1,
00124 AnnounceSilenceChanges = 1 << 2
00125 };
00126
00144 explicit KStartupInfo( int flags, QObject* parent = 0 );
00155 explicit KStartupInfo( bool clean_on_cantdetect, QObject* parent = 0 );
00156 virtual ~KStartupInfo();
00169 static bool sendStartup( const KStartupInfoId& id, const KStartupInfoData& data );
00170
00179 static bool sendStartupX( Display* dpy, const KStartupInfoId& id,
00180 const KStartupInfoData& data );
00181
00192 static bool sendChange( const KStartupInfoId& id, const KStartupInfoData& data );
00193
00201 static bool sendChangeX( Display* dpy, const KStartupInfoId& id,
00202 const KStartupInfoData& data );
00203
00209 static bool sendFinish( const KStartupInfoId& id );
00210
00217 static bool sendFinishX( Display* dpy, const KStartupInfoId& id );
00218
00226 static bool sendFinish( const KStartupInfoId& id, const KStartupInfoData& data );
00227
00235 static bool sendFinishX( Display* dpy, const KStartupInfoId& id,
00236 const KStartupInfoData& data );
00237
00244 static KStartupInfoId currentStartupIdEnv();
00248 static void resetStartupEnv();
00255 enum startup_t { NoMatch, Match, CantDetect };
00261 startup_t checkStartup( WId w );
00269 startup_t checkStartup( WId w, KStartupInfoId& id );
00277 startup_t checkStartup( WId w, KStartupInfoData& data );
00286 startup_t checkStartup( WId w, KStartupInfoId& id, KStartupInfoData& data );
00291 void setTimeout( unsigned int secs );
00297 static void setWindowStartupId( WId window, const QByteArray& id );
00303 static QByteArray windowStartupId( WId w );
00307 static void handleAutoAppStartedSending();
00311 class Data;
00312
00316 class Private;
00317 Q_SIGNALS:
00324 void gotNewStartup( const KStartupInfoId& id, const KStartupInfoData& data );
00330 void gotStartupChange( const KStartupInfoId& id, const KStartupInfoData& data );
00337 void gotRemoveStartup( const KStartupInfoId& id, const KStartupInfoData& data );
00338
00339 protected:
00343 virtual void customEvent( QEvent* e_P );
00344
00345 private:
00346 Q_PRIVATE_SLOT(d, void startups_cleanup())
00347 Q_PRIVATE_SLOT(d, void startups_cleanup_no_age())
00348 Q_PRIVATE_SLOT(d, void got_message( const QString& msg ))
00349 Q_PRIVATE_SLOT(d, void window_added( WId w ))
00350 Q_PRIVATE_SLOT(d, void slot_window_added( WId w ))
00351
00352 Private* const d;
00353
00354 Q_DISABLE_COPY(KStartupInfo)
00355 };
00356
00368 class KDEUI_EXPORT KStartupInfoId
00369 {
00370 public:
00375 bool operator==( const KStartupInfoId& id ) const;
00380 bool operator!=( const KStartupInfoId& id ) const;
00385 bool none() const;
00393 void initId( const QByteArray& id = "" );
00398 const QByteArray& id() const;
00403 unsigned long timestamp() const;
00408 bool setupStartupEnv() const;
00412 KStartupInfoId();
00416 KStartupInfoId( const KStartupInfoId& data );
00417 ~KStartupInfoId();
00418 KStartupInfoId& operator=( const KStartupInfoId& data );
00419 bool operator<( const KStartupInfoId& id ) const;
00420 private:
00421 explicit KStartupInfoId( const QString& txt );
00422 friend class KStartupInfo;
00423 friend class KStartupInfo::Private;
00424 struct Private;
00425 Private *const d;
00426 };
00427
00439 class KDEUI_EXPORT KStartupInfoData
00440 {
00441 public:
00446 void setBin( const QString& bin );
00451 const QString& bin() const;
00455 void setName( const QString& name );
00461 const QString& findName() const;
00467 const QString& name() const;
00473 void setDescription( const QString& descr );
00479 const QString& findDescription() const;
00485 const QString& description() const;
00490 void setIcon( const QString& icon );
00497 const QString& findIcon() const;
00502 const QString& icon() const;
00508 void setDesktop( int desktop );
00513 int desktop() const;
00520 void setWMClass( const QByteArray& wmclass );
00527 const QByteArray findWMClass() const;
00533 QByteArray WMClass() const;
00541 void addPid( pid_t pid );
00546 QList< pid_t > pids() const;
00552 bool is_pid( pid_t pid ) const;
00558 void setHostname( const QByteArray& hostname = QByteArray());
00563 QByteArray hostname() const;
00564
00568 enum TriState { Yes, No, Unknown };
00569
00574 void setSilent( TriState state );
00575
00580 TriState silent() const;
00581
00590 void setTimestamp( unsigned long time );
00591
00597 unsigned long timestamp() const;
00598
00602 int screen() const;
00603
00608 void setScreen( int screen );
00609
00613 int xinerama() const;
00614
00620 void setXinerama( int xinerama );
00621
00626 WId launchedBy() const;
00627
00632 void setLaunchedBy( WId window );
00633
00639 void update( const KStartupInfoData& data );
00640
00644 KStartupInfoData();
00645
00649 KStartupInfoData( const KStartupInfoData& data );
00650 ~KStartupInfoData();
00651 KStartupInfoData& operator=( const KStartupInfoData& data );
00652 private:
00653 explicit KStartupInfoData( const QString& txt );
00654 friend class KStartupInfo;
00655 friend class KStartupInfo::Data;
00656 friend class KStartupInfo::Private;
00657 struct Private;
00658 Private *const d;
00659 };
00660
00661 #endif
00662