[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdenonbeta/applets/kstatusapplet
From:       David Faure <faure () kde ! org>
Date:       2004-04-30 22:28:33
Message-ID: 20040430222833.205A39A75 () office ! kde ! org
[Download RAW message or body]

CVS commit by faure: 

OK, you got the last feature for free due to a misunderstanding,
but what we really need is file-triggered status-app launching.

Fixed the icon loading to be able to use standard icons too.


  M +8 -0      README   1.5
  M +25 -8     kstatusapplet.cpp   1.8
  M +1 -0      kstatusapplet.h   1.7


--- kdenonbeta/applets/kstatusapplet/README  #1.4:1.5
@@ -31,4 +31,12 @@
 The Interval is specified in milliseconds.
 
+To trigger the status application when a file was changed,
+in addition to the periodic interval, you can add this to the [Status] group:
+StatusFile=/var/log/somefile
+
+Basically this allows to update the icon when something changes in a file
+(in such a case, the StatusApp will usually be a script parsing the StatusFile
+and returning different exit codes depending on the contents of the file)
+
 File Watching
 -------------

--- kdenonbeta/applets/kstatusapplet/kstatusapplet.cpp  #1.7:1.8
@@ -135,5 +135,8 @@ void KStatusApplet::readGroup( const QSt
         QString iconname = c->readEntry("Pixmap", QString::null );
         if( !iconname.isNull() ) {
-                pix = m_pInstance->iconLoader()->loadIcon( iconname, KIcon::User );
+                // Look for a "User" icon first.
+                pix = m_pInstance->iconLoader()->loadIcon( iconname, KIcon::User, 0, \
KIcon::DefaultState, 0, true /*canReturnNull*/ ); +                if ( pix.isNull() \
) +                        pix = m_pInstance->iconLoader()->loadIcon( iconname, \
KIcon::Panel );  } else {
                 pix = KIconLoader::unknown();
@@ -142,4 +145,12 @@ void KStatusApplet::readGroup( const QSt
 }
 
+void KStatusApplet::watchFile( const QString& path )
+{
+        kdDebug() << "watching " << path << endl;
+        KDirWatch::self()->addFile( path );
+        connect( KDirWatch::self(), SIGNAL( dirty( const QString& ) ),
+                         this, SLOT( slotFileModified( const QString& ) ) );
+}
+
 void KStatusApplet::readConfiguration()
 {
@@ -147,4 +158,5 @@ void KStatusApplet::readConfiguration()
         c->setGroup("Status");
         m_statusApp = c->readEntry("StatusApp");
+        QString path = c->readEntry("StatusFile");
         if ( watchingApp() ) // i.e. !m_statusApp.isEmpty()
                 m_interval = c->readNumEntry( "Interval", 5000 );
@@ -167,4 +179,6 @@ void KStatusApplet::readConfiguration()
                         }
                 }
+                if ( !path.isEmpty() )
+                        watchFile( path );
         }
         else // watching a file, not an app
@@ -176,8 +190,5 @@ void KStatusApplet::readConfiguration()
                         readGroup( "FileModified", CODE_FILEMODIFIED );
                 if ( !m_status.isEmpty() && !path.isEmpty() ) {
-                        kdDebug() << "watching " << path << endl;
-                        KDirWatch::self()->addFile( path );
-                        connect( KDirWatch::self(), SIGNAL( dirty( const QString& ) \
                ),
-                                         this, SLOT( slotFileModified( const \
QString& ) ) ); +                        watchFile( path );
                 } else
                         kdWarning() << "Nothing configured...." << endl;
@@ -187,7 +198,13 @@ void KStatusApplet::readConfiguration()
 void KStatusApplet::slotFileModified( const QString& )
 {
+        kdDebug() << k_funcinfo << endl;
+        if ( watchingApp() )
+                startStatusApp();
+        else
+        {
         setCode( CODE_FILEMODIFIED );
         if ( m_interval )
                 m_pTimer->start( m_interval, true );
+        }
 }
 

--- kdenonbeta/applets/kstatusapplet/kstatusapplet.h  #1.6:1.7
@@ -75,4 +75,5 @@ private:
         void readGroup( const QString& group, int code );
         void setCode( int code );
+        void watchFile( const QString& path );
         bool watchingApp() const { return !m_statusApp.isEmpty(); }
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic