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