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
00117 enum {
00118 CleanOnCantDetect = 1 << 0,
00119 DisableKWinModule = 1 << 1,
00120 AnnounceSilenceChanges = 1 << 2
00121 };
00140 KStartupInfo( int flags, QObject* parent = NULL, const char* name = NULL );
00152 KStartupInfo( bool clean_on_cantdetect, QObject* parent = 0, const char* name = 0 );
00153 virtual ~KStartupInfo();
00166 static bool sendStartup( const KStartupInfoId& id, const KStartupInfoData& data );
00167
00176 static bool sendStartupX( Display* dpy, const KStartupInfoId& id,
00177 const KStartupInfoData& data );
00178
00189 static bool sendChange( const KStartupInfoId& id, const KStartupInfoData& data );
00190
00198 static bool sendChangeX( Display* dpy, const KStartupInfoId& id,
00199 const KStartupInfoData& data );
00200
00206 static bool sendFinish( const KStartupInfoId& id );
00207
00214 static bool sendFinishX( Display* dpy, const KStartupInfoId& id );
00215
00223 static bool sendFinish( const KStartupInfoId& id, const KStartupInfoData& data );
00224
00232 static bool sendFinishX( Display* dpy, const KStartupInfoId& id,
00233 const KStartupInfoData& data );
00234
00241 static KStartupInfoId currentStartupIdEnv();
00245 static void resetStartupEnv();
00252 enum startup_t { NoMatch, Match, CantDetect };
00258 startup_t checkStartup( WId w );
00266 startup_t checkStartup( WId w, KStartupInfoId& id );
00274 startup_t checkStartup( WId w, KStartupInfoData& data );
00283 startup_t checkStartup( WId w, KStartupInfoId& id, KStartupInfoData& data );
00288 void setTimeout( unsigned int secs );
00294 static void setWindowStartupId( WId window, const QCString& id );
00300 static QCString windowStartupId( WId w );
00304 static void handleAutoAppStartedSending();
00308 class Data;
00309 signals:
00316 void gotNewStartup( const KStartupInfoId& id, const KStartupInfoData& data );
00322 void gotStartupChange( const KStartupInfoId& id, const KStartupInfoData& data );
00329 void gotRemoveStartup( const KStartupInfoId& id, const KStartupInfoData& data );
00330 protected:
00331 virtual void customEvent( QCustomEvent* e_P );
00332 private slots:
00333 void startups_cleanup();
00334 void startups_cleanup_no_age();
00335 void got_message( const QString& msg );
00336 void window_added( WId w );
00337 void slot_window_added( WId w );
00338 private:
00339 void init( int flags );
00340 friend class KStartupInfoPrivate;
00341 void got_startup_info( const QString& msg_P, bool update_only_P );
00342 void got_remove_startup_info( const QString& msg_P );
00343 void new_startup_info_internal( const KStartupInfoId& id_P,
00344 Data& data_P, bool update_only_P );
00345 void remove_startup_info_internal( const KStartupInfoId& id_P );
00346 void remove_startup_pids( const KStartupInfoId& id, const KStartupInfoData& data );
00347 void remove_startup_pids( const KStartupInfoData& data );
00348 startup_t check_startup_internal( WId w, KStartupInfoId* id, KStartupInfoData* data );
00349 bool find_id( const QCString& id_P, KStartupInfoId* id_O,
00350 KStartupInfoData* data_O );
00351 bool find_pid( pid_t pid_P, const QCString& hostname, KStartupInfoId* id_O,
00352 KStartupInfoData* data_O );
00353 bool find_wclass( QCString res_name_P, QCString res_class_P,
00354 KStartupInfoId* id_O, KStartupInfoData* data_O );
00355 static QCString get_window_hostname( WId w_P );
00356 void startups_cleanup_internal( bool age_P );
00357 void clean_all_noncompliant();
00358 static QString check_required_startup_fields( const QString& msg,
00359 const KStartupInfoData& data, int screen );
00360 bool clean_on_cantdetect_;
00361 unsigned int timeout;
00362 KStartupInfoPrivate* d;
00363 };
00364
00365 class KStartupInfoIdPrivate;
00366
00379 class KStartupInfoId
00380 {
00381 public:
00386 bool operator==( const KStartupInfoId& id ) const;
00391 bool operator!=( const KStartupInfoId& id ) const;
00396 bool none() const;
00404 void initId( const QCString& id = "" );
00409 const QCString& id() const;
00414 bool setupStartupEnv() const;
00418 KStartupInfoId();
00422 KStartupInfoId( const KStartupInfoId& data );
00423 ~KStartupInfoId();
00424 KStartupInfoId& operator=( const KStartupInfoId& data );
00425 bool operator<( const KStartupInfoId& id ) const;
00426 private:
00427 KStartupInfoId( const QString& txt );
00428 QString to_text() const;
00429 friend class KStartupInfo;
00430 KStartupInfoIdPrivate* d;
00431 };
00432
00433 class KStartupInfoDataPrivate;
00434
00447 class KStartupInfoData
00448 {
00449 public:
00454 void setBin( const QString& bin );
00459 const QString& bin() const;
00463 void setName( const QString& name );
00469 const QString& findName() const;
00475 const QString& name() const;
00482 void setDescription( const QString& descr );
00489 const QString& findDescription() const;
00496 const QString& description() const;
00501 void setIcon( const QString& icon );
00508 const QString& findIcon() const;
00513 const QString& icon() const;
00519 void setDesktop( int desktop );
00524 int desktop() const;
00531 void setWMClass( const QCString& wmclass );
00538 const QCString findWMClass() const;
00544 const QCString& WMClass() const;
00552 void addPid( pid_t pid );
00557 const QValueList< pid_t >& pids() const;
00563 bool is_pid( pid_t pid ) const;
00569 void setHostname( const QCString& hostname = QCString());
00574 const QCString& hostname() const;
00575
00576 enum TriState { Yes, No, Unknown };
00577
00583 void setSilent( TriState state );
00584
00590 TriState silent() const;
00591
00599 void setTimestamp( unsigned long time );
00600
00605 unsigned long timestamp() const;
00606
00610 int screen() const;
00611
00616 void setScreen( int screen );
00617
00623 void update( const KStartupInfoData& data );
00624
00628 KStartupInfoData();
00629
00633 KStartupInfoData( const KStartupInfoData& data );
00634 ~KStartupInfoData();
00635 KStartupInfoData& operator=( const KStartupInfoData& data );
00636 private:
00637 KStartupInfoData( const QString& txt );
00638 QString to_text() const;
00639 void remove_pid( pid_t pid );
00640 friend class KStartupInfo;
00641 friend class KStartupInfo::Data;
00642 KStartupInfoDataPrivate* d;
00643 };
00644
00645 #endif
This file is part of the documentation for kdecore Library Version 3.2.3.