25 #ifndef __KSTARTUPINFO_H
26 #define __KSTARTUPINFO_H
28 #include <sys/types.h>
35 #ifdef Q_WS_X11 // FIXME(E): Redo in a less X11-specific way
37 #include <tqcstring.h>
39 #include <tqvaluelist.h>
40 #include "kdelibs_export.h"
43 class KStartupInfoData;
45 class KStartupInfoPrivate;
67 class KDECORE_EXPORT KStartupInfo
81 static void disableAutoAppStartedSending(
bool disable =
true );
90 static void appStarted();
97 static void appStarted(
const TQCString& startup_id );
108 static void setNewStartupId( TQWidget* window,
const TQCString& startup_id );
119 static void silenceStartup(
bool silence );
126 static TQCString createNewStartupId();
131 CleanOnCantDetect = 1 << 0,
132 DisableKWinModule = 1 << 1,
133 AnnounceSilenceChanges = 1 << 2
154 KStartupInfo(
int flags, TQObject* parent = NULL,
const char* name = NULL );
166 KStartupInfo(
bool clean_on_cantdetect, TQObject* parent = 0,
const char* name = 0 );
167 virtual ~KStartupInfo();
180 static bool sendStartup(
const KStartupInfoId&
id,
const KStartupInfoData& data );
190 static bool sendStartupX( Display* dpy,
const KStartupInfoId&
id,
191 const KStartupInfoData& data );
203 static bool sendChange(
const KStartupInfoId&
id,
const KStartupInfoData& data );
212 static bool sendChangeX( Display* dpy,
const KStartupInfoId&
id,
213 const KStartupInfoData& data );
220 static bool sendFinish(
const KStartupInfoId&
id );
228 static bool sendFinishX( Display* dpy,
const KStartupInfoId&
id );
237 static bool sendFinish(
const KStartupInfoId&
id,
const KStartupInfoData& data );
246 static bool sendFinishX( Display* dpy,
const KStartupInfoId&
id,
247 const KStartupInfoData& data );
255 static KStartupInfoId currentStartupIdEnv();
259 static void resetStartupEnv();
266 enum startup_t { NoMatch, Match, CantDetect };
272 startup_t checkStartup( WId w );
280 startup_t checkStartup( WId w, KStartupInfoId&
id );
288 startup_t checkStartup( WId w, KStartupInfoData& data );
297 startup_t checkStartup( WId w, KStartupInfoId&
id, KStartupInfoData& data );
302 void setTimeout(
unsigned int secs );
308 static void setWindowStartupId( WId window,
const TQCString&
id );
314 static TQCString windowStartupId( WId w );
318 static void handleAutoAppStartedSending();
330 void gotNewStartup(
const KStartupInfoId&
id,
const KStartupInfoData& data );
336 void gotStartupChange(
const KStartupInfoId&
id,
const KStartupInfoData& data );
343 void gotRemoveStartup(
const KStartupInfoId&
id,
const KStartupInfoData& data );
348 virtual void customEvent( TQCustomEvent* e_P );
350 void startups_cleanup();
351 void startups_cleanup_no_age();
352 void got_message(
const TQString& msg );
353 void window_added( WId w );
354 void slot_window_added( WId w );
356 void init(
int flags );
357 friend class KStartupInfoPrivate;
358 void got_startup_info(
const TQString& msg_P,
bool update_only_P );
359 void got_remove_startup_info(
const TQString& msg_P );
360 void new_startup_info_internal(
const KStartupInfoId& id_P,
361 Data& data_P,
bool update_only_P );
362 void remove_startup_info_internal(
const KStartupInfoId& id_P );
363 void remove_startup_pids(
const KStartupInfoId&
id,
const KStartupInfoData& data );
364 void remove_startup_pids(
const KStartupInfoData& data );
365 startup_t check_startup_internal( WId w, KStartupInfoId*
id, KStartupInfoData* data );
366 bool find_id(
const TQCString& id_P, KStartupInfoId* id_O,
367 KStartupInfoData* data_O );
368 bool find_pid( pid_t pid_P,
const TQCString& hostname, KStartupInfoId* id_O,
369 KStartupInfoData* data_O );
370 bool find_wclass( TQCString res_name_P, TQCString res_class_P,
371 KStartupInfoId* id_O, KStartupInfoData* data_O );
372 static TQCString get_window_hostname( WId w_P );
373 void startups_cleanup_internal(
bool age_P );
374 void clean_all_noncompliant();
375 static TQString check_required_startup_fields(
const TQString& msg,
376 const KStartupInfoData& data,
int screen );
377 bool clean_on_cantdetect_;
378 unsigned int timeout;
379 KStartupInfoPrivate* d;
382 class KStartupInfoIdPrivate;
395 class KDECORE_EXPORT KStartupInfoId
402 bool operator==(
const KStartupInfoId&
id )
const;
407 bool operator!=(
const KStartupInfoId&
id )
const;
420 void initId(
const TQCString&
id =
"" );
425 const TQCString& id()
const;
431 unsigned long timestamp()
const;
436 bool setupStartupEnv()
const;
444 KStartupInfoId(
const KStartupInfoId& data );
446 KStartupInfoId& operator=(
const KStartupInfoId& data );
447 bool operator<(
const KStartupInfoId&
id )
const;
449 KStartupInfoId(
const TQString& txt );
450 TQString to_text()
const;
451 friend class KStartupInfo;
452 KStartupInfoIdPrivate* d;
455 class KStartupInfoDataPrivate;
468 class KDECORE_EXPORT KStartupInfoData
475 void setBin(
const TQString& bin );
480 const TQString& bin()
const;
484 void setName(
const TQString& name );
490 const TQString& findName()
const;
496 const TQString&
name()
const;
503 void setDescription(
const TQString& descr );
510 const TQString& findDescription()
const;
522 void setIcon(
const TQString& icon );
529 const TQString& findIcon()
const;
534 const TQString& icon()
const;
540 void setDesktop(
int desktop );
552 void setWMClass(
const TQCString& wmclass );
559 const TQCString findWMClass()
const;
565 const TQCString& WMClass()
const;
573 void addPid( pid_t pid );
578 const TQValueList< pid_t >& pids()
const;
584 bool is_pid( pid_t pid )
const;
590 void setHostname(
const TQCString& hostname = TQCString());
595 const TQCString& hostname()
const;
600 enum TriState { Yes, No, Unknown };
607 void setSilent( TriState state );
614 TriState silent()
const;
624 void setTimestamp(
unsigned long time );
631 unsigned long timestamp()
const;
642 void setScreen(
int screen );
647 int xinerama()
const;
654 void setXinerama(
int xinerama );
660 WId launchedBy()
const;
666 void setLaunchedBy( WId window );
673 void update(
const KStartupInfoData& data );
683 KStartupInfoData(
const KStartupInfoData& data );
685 KStartupInfoData& operator=(
const KStartupInfoData& data );
687 KStartupInfoData(
const TQString& txt );
688 TQString to_text()
const;
689 void remove_pid( pid_t pid );
690 friend class KStartupInfo;
691 friend class KStartupInfo::Data;
692 KStartupInfoDataPrivate* d;