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

List:       kde-commits
Subject:    KDE/kdepim/kleopatra
From:       Frank Osterfeld <frank.osterfeld () kdemail ! net>
Date:       2008-04-08 12:22:05
Message-ID: 1207657325.100811.30226.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 794713 by osterfeld:

watch gnupg files for changes and trigger a keylisting on change

 M  +2 -1      CMakeLists.txt  
 M  +33 -1     mainwindow.cpp  
 A             utils/detail.cpp   [License: GPL (v2+) (+Qt exception)]
 M  +4 -0      utils/detail_p.h  
 A             utils/filesystemwatcher.cpp   [License: GPL (v2+) (+Qt exception)]
 A             utils/filesystemwatcher.h   [License: GPL (v2+) (+Qt exception)]


--- trunk/KDE/kdepim/kleopatra/CMakeLists.txt #794712:794713
@@ -74,7 +74,8 @@
 
 
 set( _kleopatra_common_SRCS
-
+  utils/detail.cpp
+  utils/filesystemwatcher.cpp
   utils/kdpipeiodevice.cpp
   utils/kdlogtextwidget.cpp
   utils/headerview.cpp
--- trunk/KDE/kdepim/kleopatra/mainwindow.cpp #794712:794713
@@ -56,6 +56,8 @@
 
 #include "conf/configuredialog.h"
 
+#include "utils/detail_p.h"
+#include <utils/filesystemwatcher.h>
 #include "utils/stl_util.h"
 #include "utils/action_data.h"
 
@@ -124,6 +126,22 @@
             setValue( current );
         }
     };
+
+    QStringList fileSystemWatchList()
+    {
+        const QString baseDir = _detail::gnupgHomeDirectory();
+        QStringList res;
+        res.append( baseDir + "/pubring.gpg" );
+        res.append( baseDir + "/secring.gpg" );
+        res.append( baseDir + "/pubring.kbx" );
+        res.append( baseDir + "/private-keys-v1.d" );
+        res.append( baseDir + "/trustdb.gpg" );
+        res.append( baseDir + "/trustlist.txt" );
+        res.append( baseDir + "/gpg.conf" );
+        res.append( baseDir + "/gpgsm.conf" );
+        res.append( baseDir + "/gpg-agent.conf" );
+        return res;
+    }
 }
 
 KGuiItem KStandardGuiItem_quit() {
@@ -174,8 +192,10 @@
         createAndStart<DetailsCommand>();
     }
     void refreshCertificates() {
+        refreshTimer.start(); // restart
         createAndStart<RefreshKeysCommand>();
     }
+    
     void deleteCertificates() {
         createAndStart<DeleteCertificatesCommand>();
     }
@@ -236,6 +256,8 @@
     Kleo::KeyListController controller;
 
     QTimer refreshTimer;
+    FileSystemWatcher gnupgHomeDirsWatcher;
+
     QPointer<ConfigureDialog> configureDialog;
 
     struct Actions {
@@ -289,20 +311,30 @@
       hierarchicalModel( AbstractKeyListModel::createHierarchicalKeyListModel( q ) ),
       controller( q ),
       refreshTimer(),
+      gnupgHomeDirsWatcher(),
       configureDialog(),
       actions( q ),
       ui( q )
 {
     KDAB_SET_OBJECT_NAME( controller );
     KDAB_SET_OBJECT_NAME( refreshTimer );
+    KDAB_SET_OBJECT_NAME( gnupgHomeDirsWatcher );
     KDAB_SET_OBJECT_NAME( flatModel );
     KDAB_SET_OBJECT_NAME( hierarchicalModel );
 
-    refreshTimer.setInterval( 5 * 60 * 1000 );
+    refreshTimer.setInterval( 2 * 60 * 60 * 1000 ); //2h
     refreshTimer.setSingleShot( false );
     refreshTimer.start();
     connect( &refreshTimer, SIGNAL(timeout()), q, SLOT(refreshCertificates()) );
 
+    gnupgHomeDirsWatcher.addPaths( fileSystemWatchList() );
+    gnupgHomeDirsWatcher.setDelay( 1000 );
+    
+    connect( &gnupgHomeDirsWatcher, SIGNAL( directoryChanged( QString ) ),
+             q, SLOT( refreshCertificates() ) );
+    connect( &gnupgHomeDirsWatcher, SIGNAL( fileChanged( QString ) ),
+             q, SLOT( refreshCertificates() ) );
+    
     controller.setFlatModel( flatModel );
     controller.setHierarchicalModel( hierarchicalModel );
 
--- trunk/KDE/kdepim/kleopatra/utils/detail_p.h #794712:794713
@@ -43,6 +43,8 @@
 #include <io.h>
 #endif
 
+class QString;
+
 namespace Kleo {
 namespace _detail {
 
@@ -101,6 +103,8 @@
 #endif
     }
 
+    QString gnupgHomeDirectory();
+
 }
 }
 
[prev in list] [next in list] [prev in thread] [next in thread] 

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