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