KDEUI
kstartupinfo.h
Go to the documentation of this file.
00001 /**************************************************************************** 00002 00003 Copyright (C) 2001-2003 Lubos Lunak <l.lunak@kde.org> 00004 00005 Permission is hereby granted, free of charge, to any person obtaining a 00006 copy of this software and associated documentation files (the "Software"), 00007 to deal in the Software without restriction, including without limitation 00008 the rights to use, copy, modify, merge, publish, distribute, sublicense, 00009 and/or sell copies of the Software, and to permit persons to whom the 00010 Software is furnished to do so, subject to the following conditions: 00011 00012 The above copyright notice and this permission notice shall be included in 00013 all copies or substantial portions of the Software. 00014 00015 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 00016 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 00017 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 00018 THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 00019 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 00020 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 00021 DEALINGS IN THE SOFTWARE. 00022 00023 ****************************************************************************/ 00024 00025 #ifndef KSTARTUPINFO_H 00026 #define KSTARTUPINFO_H 00027 00028 #include <kdeui_export.h> 00029 00030 #include <QtCore/QObject> 00031 #include <QtCore/QString> 00032 #include <QtCore/QChildEvent> 00033 #include <QtGui/QWidgetList> 00034 00035 #include <sys/types.h> 00036 00037 #if !defined(Q_WS_X11) 00038 typedef void Display; 00039 #endif 00040 00041 class KStartupInfoId; 00042 class KStartupInfoData; 00043 00064 class KDEUI_EXPORT KStartupInfo 00065 : public QObject 00066 { 00067 Q_OBJECT 00068 public: 00076 static void disableAutoAppStartedSending( bool disable = true ); 00077 00085 static void appStarted(); 00086 00091 static void appStarted( const QByteArray& startup_id ); 00092 00101 static void setNewStartupId( QWidget* window, const QByteArray& startup_id ); 00102 00111 static void silenceStartup( bool silence ); 00112 00117 static QByteArray createNewStartupId(); 00121 enum { 00122 CleanOnCantDetect = 1 << 0, 00123 DisableKWinModule = 1 << 1, 00124 AnnounceSilenceChanges = 1 << 2 00125 }; 00126 00144 explicit KStartupInfo( int flags, QObject* parent = 0 ); 00155 explicit KStartupInfo( bool clean_on_cantdetect, QObject* parent = 0 ); 00156 virtual ~KStartupInfo(); 00169 static bool sendStartup( const KStartupInfoId& id, const KStartupInfoData& data ); 00170 00179 static bool sendStartupX( Display* dpy, const KStartupInfoId& id, 00180 const KStartupInfoData& data ); 00181 00192 static bool sendChange( const KStartupInfoId& id, const KStartupInfoData& data ); 00193 00201 static bool sendChangeX( Display* dpy, const KStartupInfoId& id, 00202 const KStartupInfoData& data ); 00203 00209 static bool sendFinish( const KStartupInfoId& id ); 00210 00217 static bool sendFinishX( Display* dpy, const KStartupInfoId& id ); 00218 00226 static bool sendFinish( const KStartupInfoId& id, const KStartupInfoData& data ); 00227 00235 static bool sendFinishX( Display* dpy, const KStartupInfoId& id, 00236 const KStartupInfoData& data ); 00237 00244 static KStartupInfoId currentStartupIdEnv(); 00248 static void resetStartupEnv(); 00255 enum startup_t { NoMatch, Match, CantDetect }; 00261 startup_t checkStartup( WId w ); 00269 startup_t checkStartup( WId w, KStartupInfoId& id ); 00277 startup_t checkStartup( WId w, KStartupInfoData& data ); 00286 startup_t checkStartup( WId w, KStartupInfoId& id, KStartupInfoData& data ); 00291 void setTimeout( unsigned int secs ); 00297 static void setWindowStartupId( WId window, const QByteArray& id ); 00303 static QByteArray windowStartupId( WId w ); 00307 static void handleAutoAppStartedSending(); 00311 class Data; 00312 00316 class Private; 00317 Q_SIGNALS: 00324 void gotNewStartup( const KStartupInfoId& id, const KStartupInfoData& data ); 00330 void gotStartupChange( const KStartupInfoId& id, const KStartupInfoData& data ); 00337 void gotRemoveStartup( const KStartupInfoId& id, const KStartupInfoData& data ); 00338 00339 protected: 00343 virtual void customEvent( QEvent* e_P ); 00344 00345 private: 00346 Q_PRIVATE_SLOT(d, void startups_cleanup()) 00347 Q_PRIVATE_SLOT(d, void startups_cleanup_no_age()) 00348 Q_PRIVATE_SLOT(d, void got_message( const QString& msg )) 00349 Q_PRIVATE_SLOT(d, void window_added( WId w )) 00350 Q_PRIVATE_SLOT(d, void slot_window_added( WId w )) 00351 00352 Private* const d; 00353 00354 Q_DISABLE_COPY(KStartupInfo) 00355 }; 00356 00368 class KDEUI_EXPORT KStartupInfoId 00369 { 00370 public: 00375 bool operator==( const KStartupInfoId& id ) const; 00380 bool operator!=( const KStartupInfoId& id ) const; 00385 bool none() const; 00393 void initId( const QByteArray& id = "" ); 00398 const QByteArray& id() const; 00403 unsigned long timestamp() const; 00408 bool setupStartupEnv() const; 00412 KStartupInfoId(); 00416 KStartupInfoId( const KStartupInfoId& data ); 00417 ~KStartupInfoId(); 00418 KStartupInfoId& operator=( const KStartupInfoId& data ); 00419 bool operator<( const KStartupInfoId& id ) const; 00420 private: 00421 explicit KStartupInfoId( const QString& txt ); 00422 friend class KStartupInfo; 00423 friend class KStartupInfo::Private; 00424 struct Private; 00425 Private *const d; 00426 }; 00427 00439 class KDEUI_EXPORT KStartupInfoData 00440 { 00441 public: 00446 void setBin( const QString& bin ); 00451 const QString& bin() const; 00455 void setName( const QString& name ); 00461 const QString& findName() const; 00467 const QString& name() const; 00473 void setDescription( const QString& descr ); 00479 const QString& findDescription() const; 00485 const QString& description() const; 00490 void setIcon( const QString& icon ); 00497 const QString& findIcon() const; 00502 const QString& icon() const; 00508 void setDesktop( int desktop ); 00513 int desktop() const; 00520 void setWMClass( const QByteArray& wmclass ); 00527 const QByteArray findWMClass() const; 00533 QByteArray WMClass() const; 00541 void addPid( pid_t pid ); 00546 QList< pid_t > pids() const; 00552 bool is_pid( pid_t pid ) const; 00558 void setHostname( const QByteArray& hostname = QByteArray()); 00563 QByteArray hostname() const; 00564 00568 enum TriState { Yes, No, Unknown }; 00569 00574 void setSilent( TriState state ); 00575 00580 TriState silent() const; 00581 00590 void setTimestamp( unsigned long time ); 00591 00597 unsigned long timestamp() const; 00598 00602 int screen() const; 00603 00608 void setScreen( int screen ); 00609 00613 int xinerama() const; 00614 00620 void setXinerama( int xinerama ); 00621 00626 WId launchedBy() const; 00627 00632 void setLaunchedBy( WId window ); 00633 00639 QString applicationId() const; 00640 00645 void setApplicationId( const QString& desktop ); 00646 00652 void update( const KStartupInfoData& data ); 00653 00657 KStartupInfoData(); 00658 00662 KStartupInfoData( const KStartupInfoData& data ); 00663 ~KStartupInfoData(); 00664 KStartupInfoData& operator=( const KStartupInfoData& data ); 00665 private: 00666 explicit KStartupInfoData( const QString& txt ); 00667 friend class KStartupInfo; 00668 friend class KStartupInfo::Data; 00669 friend class KStartupInfo::Private; 00670 struct Private; 00671 Private *const d; 00672 }; 00673 00674 #endif 00675
KDE 4.6 API Reference