kio
knotifydialog.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef KNOTIFYDIALOG_H
00020 #define KNOTIFYDIALOG_H
00021
00022 #include <klistview.h>
00023 #include <kdialogbase.h>
00024 #include <kinstance.h>
00025 #include <kglobal.h>
00026
00027 #include "knotifywidgetbase.h"
00028
00029 class QShowEvent;
00030
00031 namespace KNotify
00032 {
00033 class KNotifyWidget;
00034 }
00035
00052 class KIO_EXPORT KNotifyDialog : public KDialogBase
00053 {
00054 Q_OBJECT
00055
00056 public:
00071 KNotifyDialog( QWidget *parent = 0, const char *name = 0,
00072 bool modal = true,
00073 const KAboutData *aboutData =
00074 KGlobal::instance()->aboutData() );
00078 virtual ~KNotifyDialog();
00079
00090 static int configure( QWidget *parent = 0, const char *name = 0,
00091 const KAboutData *aboutData = KGlobal::instance()->aboutData() );
00092
00102 virtual void addApplicationEvents( const char *appName );
00103
00113 virtual void addApplicationEvents( const QString& path );
00114
00119 virtual void clearApplicationEvents();
00120
00121 private slots:
00122 void slotDefault();
00123
00124 private:
00125 enum
00126 {
00127 COL_FILENAME = 1
00128 };
00129
00130 void updateView();
00131
00132 KNotify::KNotifyWidget * m_notifyWidget;
00133
00134 class Private;
00135 Private *d;
00136 };
00137
00138
00139 namespace KNotify
00140 {
00141 class Application;
00142 class Event;
00143 class ListViewItem;
00144 typedef QPtrList<Event> EventList;
00145 typedef QPtrListIterator<Application> ApplicationListIterator;
00146 typedef QPtrListIterator<Event> EventListIterator;
00147
00151 class KIO_EXPORT Application
00152 {
00153 public:
00154 Application( const QString &path );
00155 ~Application();
00156
00157 QString text() const { return m_description; }
00158 QString icon() const { return m_icon; }
00159 const EventList& eventList();
00160 void reloadEvents( bool revertToDefaults = false );
00161 void save();
00162
00163 QString appName() const { return m_appname; }
00164
00165 private:
00166 QString m_icon;
00167 QString m_description;
00168 QString m_appname;
00169 EventList *m_events;
00170
00171 KConfig *kc;
00172 KConfig *config;
00173 };
00174
00175
00176 class KIO_EXPORT ApplicationList : public QPtrList<Application>
00177 {
00178 virtual int compareItems ( QPtrCollection::Item item1,
00179 QPtrCollection::Item item2 )
00180 {
00181 return (static_cast<Application*>( item1 )->text() >=
00182 static_cast<Application*>( item2 )->text()) ? 1 : -1;
00183 }
00184 };
00185
00189 class KIO_EXPORT KNotifyWidget : public KNotifyWidgetBase
00190 {
00191 Q_OBJECT
00192
00193 public:
00194 KNotifyWidget( QWidget* parent = 0, const char* name = 0,
00195 bool handleAllApps = false );
00196 ~KNotifyWidget();
00197
00198 KListView * eventsView() {
00199 return m_listview;
00200 }
00201
00202 void addVisibleApp( Application *app );
00203 ApplicationList& visibleApps() { return m_visibleApps; }
00204 ApplicationList& allApps() { return m_allApps; }
00205
00211 Application * addApplicationEvents( const QString& path );
00212
00213 void resetDefaults( bool ask );
00214 void sort( bool ascending = true );
00215
00216 public slots:
00220 virtual void clear();
00226 virtual void clearVisible();
00227 virtual void save();
00228 virtual void showAdvanced( bool show );
00229 void toggleAdvanced();
00230
00231
00232 signals:
00233 void changed( bool hasChanges );
00234
00235 protected:
00239 Event * currentEvent();
00240 virtual void showEvent( QShowEvent * );
00241 virtual void enableAll( int what, bool enable );
00242
00243 void reload( bool revertToDefaults = false );
00244
00245 protected slots:
00246 void playSound();
00247
00248 private slots:
00249 void slotItemClicked( QListViewItem *item, const QPoint& point,
00250 int col );
00251 void slotEventChanged( QListViewItem * );
00252 void soundToggled( bool on );
00253 void loggingToggled( bool on );
00254 void executeToggled( bool on );
00255 void messageBoxChanged();
00256 void stderrToggled( bool on );
00257 void taskbarToggled( bool on );
00258
00259 void soundFileChanged( const QString& text );
00260 void logfileChanged( const QString& text );
00261 void commandlineChanged( const QString& text );
00262
00263 void openSoundDialog( KURLRequester * );
00264 void openLogDialog( KURLRequester * );
00265 void openExecDialog( KURLRequester * );
00266
00267 void enableAll();
00268
00269 private:
00270 void updateWidgets( ListViewItem *item );
00271 void updatePixmaps( ListViewItem *item );
00272
00273 static QString makeRelative( const QString& );
00274 void addToView( const EventList& events );
00275 void widgetChanged( QListViewItem *item,
00276 int what, bool on, QWidget *buddy = 0L );
00277 void selectItem( QListViewItem *item );
00278
00279 ApplicationList m_visibleApps;
00280 ApplicationList m_allApps;
00281
00282 class Private;
00283 Private *d;
00284
00285 };
00286
00287
00290
00291
00295 class Event
00296 {
00297 friend class Application;
00298
00299 public:
00300 QString text() const { return description; }
00301
00302 int presentation;
00303 int dontShow;
00304 QString logfile;
00305 QString soundfile;
00306 QString commandline;
00307
00308 const Application *application() const { return m_app; }
00309
00310 private:
00311 Event( const Application *app ) {
00312 presentation = 0;
00313 dontShow = 0;
00314 m_app = app;
00315 }
00316 QString name;
00317 QString description;
00318 QString configGroup;
00319
00320 const Application *m_app;
00321 };
00322
00326 class ListViewItem : public QListViewItem
00327 {
00328 public:
00329 ListViewItem( QListView *view, Event *event );
00330
00331 Event& event() { return *m_event; }
00332 virtual int compare (QListViewItem * i, int col, bool ascending) const;
00333
00334 private:
00335 Event * m_event;
00336 };
00337
00338 }
00339
00340
00341 #endif