kstartupinfo.h
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
00026
00027 #ifndef __KSTARTUPINFO_H
00028 #define __KSTARTUPINFO_H
00029
00030 #include <sys/types.h>
00031 #include <qobject.h>
00032
00033
00034 #include <qcstring.h>
00035 #include <qstring.h>
00036 #include <qvaluelist.h>
00037
00038 class KStartupInfoId;
00039 class KStartupInfoData;
00040
00041 class KStartupInfoPrivate;
00042
00064 class KStartupInfo
00065 : public QObject
00066 {
00067 Q_OBJECT
00068 public:
00077 static void disableAutoAppStartedSending( bool disable = true );
00078
00086 static void appStarted();
00087
00093 static void appStarted( const QCString& startup_id );
00094
00104 static void setNewStartupId( QWidget* window, const QCString& startup_id );
00105
00115 static void silenceStartup( bool silence );
00116
00122 static QCString createNewStartupId();
00126 enum {
00127 CleanOnCantDetect = 1 << 0,
00128 DisableKWinModule = 1 << 1,
00129 AnnounceSilenceChanges = 1 << 2
00130 };
00131
00150 KStartupInfo( int flags, QObject* parent = NULL, const char* name = NULL );
00162 KStartupInfo( bool clean_on_cantdetect, QObject* parent = 0, const char* name = 0 );
00163 virtual ~KStartupInfo();
00176 static bool sendStartup( const KStartupInfoId& id, const KStartupInfoData& data );
00177
00186 static bool sendStartupX( Display* dpy, const KStartupInfoId& id,
00187 const KStartupInfoData& data );
00188
00199 static bool sendChange( const KStartupInfoId& id, const KStartupInfoData& data );
00200
00208 static bool sendChangeX( Display* dpy, const KStartupInfoId& id,
00209 const KStartupInfoData& data );
00210
00216 static bool sendFinish( const KStartupInfoId& id );
00217
00224 static bool sendFinishX( Display* dpy, const KStartupInfoId& id );
00225
00233 static bool sendFinish( const KStartupInfoId& id, const KStartupInfoData& data );
00234
00242 static bool sendFinishX( Display* dpy, const KStartupInfoId& id,
00243 const KStartupInfoData& data );
00244
00251 static KStartupInfoId currentStartupIdEnv();
00255 static void resetStartupEnv();
00262 enum startup_t { NoMatch, Match, CantDetect };
00268 startup_t checkStartup( WId w );
00276 startup_t checkStartup( WId w, KStartupInfoId& id );
00284 startup_t checkStartup( WId w, KStartupInfoData& data );
00293 startup_t checkStartup( WId w, KStartupInfoId& id, KStartupInfoData& data );
00298 void setTimeout( unsigned int secs );
00304 static void setWindowStartupId( WId window, const QCString& id );
00310 static QCString windowStartupId( WId w );
00314 static void handleAutoAppStartedSending();
00318 class Data;
00319 signals:
00326 void gotNewStartup( const KStartupInfoId& id, const KStartupInfoData& data );
00332 void gotStartupChange( const KStartupInfoId& id, const KStartupInfoData& data );
00339 void gotRemoveStartup( const KStartupInfoId& id, const KStartupInfoData& data );
00340 protected:
00344 virtual void customEvent( QCustomEvent* e_P );
00345 private slots:
00346 void startups_cleanup();
00347 void startups_cleanup_no_age();
00348 void got_message( const QString& msg );
00349 void window_added( WId w );
00350 void slot_window_added( WId w );
00351 private:
00352 void init( int flags );
00353 friend class KStartupInfoPrivate;
00354 void got_startup_info( const QString& msg_P, bool update_only_P );
00355 void got_remove_startup_info( const QString& msg_P );
00356 void new_startup_info_internal( const KStartupInfoId& id_P,
00357 Data& data_P, bool update_only_P );
00358 void remove_startup_info_internal( const KStartupInfoId& id_P );
00359 void remove_startup_pids( const KStartupInfoId& id, const KStartupInfoData& data );
00360 void remove_startup_pids( const KStartupInfoData& data );
00361 startup_t check_startup_internal( WId w, KStartupInfoId* id, KStartupInfoData* data );
00362 bool find_id( const QCString& id_P, KStartupInfoId* id_O,
00363 KStartupInfoData* data_O );
00364 bool find_pid( pid_t pid_P, const QCString& hostname, KStartupInfoId* id_O,
00365 KStartupInfoData* data_O );
00366 bool find_wclass( QCString res_name_P, QCString res_class_P,
00367 KStartupInfoId* id_O, KStartupInfoData* data_O );
00368 static QCString get_window_hostname( WId w_P );
00369 void startups_cleanup_internal( bool age_P );
00370 void clean_all_noncompliant();
00371 static QString check_required_startup_fields( const QString& msg,
00372 const KStartupInfoData& data, int screen );
00373 bool clean_on_cantdetect_;
00374 unsigned int timeout;
00375 KStartupInfoPrivate* d;
00376 };
00377
00378 class KStartupInfoIdPrivate;
00379
00392 class KStartupInfoId
00393 {
00394 public:
00399 bool operator==( const KStartupInfoId& id ) const;
00404 bool operator!=( const KStartupInfoId& id ) const;
00409 bool none() const;
00417 void initId( const QCString& id = "" );
00422 const QCString& id() const;
00428 unsigned long timestamp() const;
00433 bool setupStartupEnv() const;
00437 KStartupInfoId();
00441 KStartupInfoId( const KStartupInfoId& data );
00442 ~KStartupInfoId();
00443 KStartupInfoId& operator=( const KStartupInfoId& data );
00444 bool operator<( const KStartupInfoId& id ) const;
00445 private:
00446 KStartupInfoId( const QString& txt );
00447 QString to_text() const;
00448 friend class KStartupInfo;
00449 KStartupInfoIdPrivate* d;
00450 };
00451
00452 class KStartupInfoDataPrivate;
00453
00466 class KStartupInfoData
00467 {
00468 public:
00473 void setBin( const QString& bin );
00478 const QString& bin() const;
00482 void setName( const QString& name );
00488 const QString& findName() const;
00494 const QString& name() const;
00501 void setDescription( const QString& descr );
00508 const QString& findDescription() const;
00515 const QString& description() const;
00520 void setIcon( const QString& icon );
00527 const QString& findIcon() const;
00532 const QString& icon() const;
00538 void setDesktop( int desktop );
00543 int desktop() const;
00550 void setWMClass( const QCString& wmclass );
00557 const QCString findWMClass() const;
00563 const QCString& WMClass() const;
00571 void addPid( pid_t pid );
00576 const QValueList< pid_t >& pids() const;
00582 bool is_pid( pid_t pid ) const;
00588 void setHostname( const QCString& hostname = QCString());
00593 const QCString& hostname() const;
00594
00598 enum TriState { Yes, No, Unknown };
00599
00605 void setSilent( TriState state );
00606
00612 TriState silent() const;
00613
00622 void setTimestamp( unsigned long time );
00623
00629 unsigned long timestamp() const;
00630
00634 int screen() const;
00635
00640 void setScreen( int screen );
00641
00647 void update( const KStartupInfoData& data );
00648
00652 KStartupInfoData();
00653
00657 KStartupInfoData( const KStartupInfoData& data );
00658 ~KStartupInfoData();
00659 KStartupInfoData& operator=( const KStartupInfoData& data );
00660 private:
00661 KStartupInfoData( const QString& txt );
00662 QString to_text() const;
00663 void remove_pid( pid_t pid );
00664 friend class KStartupInfo;
00665 friend class KStartupInfo::Data;
00666 KStartupInfoDataPrivate* d;
00667 };
00668
00669 #endif
This file is part of the documentation for kdecore Library Version 3.3.2.