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

List:       kde-commits
Subject:    KDE/kdelibs/kdecore/jobs
From:       Andreas Pakulat <apaku () gmx ! de>
Date:       2008-01-10 16:16:42
Message-ID: 1199981802.160168.10112.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 759455 by apaku:

Add setAutoDelete/isAutoDelete, this makes it possible to
manually manage the KJob lifetime.


 M  +17 -3     kjob.cpp  
 M  +20 -0     kjob.h  
 M  +1 -0      kjob_p.h  


--- trunk/KDE/kdelibs/kdecore/jobs/kjob.cpp #759454:759455
@@ -35,7 +35,7 @@
     : q_ptr(0), uiDelegate(0), error(KJob::NoError),
       progressUnit(KJob::Bytes), percentage(0),
       suspended(false), capabilities(KJob::NoCapabilities),
-      speedTimer(0)
+      speedTimer(0), isAutoDelete(true)
 {
     if (!_k_kjobUnitEnumRegistered) {
         _k_kjobUnitEnumRegistered = qRegisterMetaType<KJob::Unit>("KJob::Unit");
@@ -116,7 +116,8 @@
             // If we are displaying a progress dialog, remove it first.
             emit finished(this);
 
-            deleteLater();
+            if ( isAutoDelete() )
+                deleteLater();
         }
 
         return true;
@@ -288,7 +289,8 @@
 
     emit result( this );
 
-    deleteLater();
+    if ( isAutoDelete() )
+        deleteLater();
 }
 
 void KJob::emitPercent( qulonglong processedAmount, qulonglong totalAmount )
@@ -325,4 +327,16 @@
     speedTimer->stop();
 }
 
+bool KJob::isAutoDelete() const
+{
+    Q_D(const KJob);
+    return d->isAutoDelete;
+}
+
+void KJob::setAutoDelete( bool autodelete )
+{
+    Q_D(KJob);
+    d->isAutoDelete = autodelete;
+}
+
 #include "kjob.moc"
--- trunk/KDE/kdelibs/kdecore/jobs/kjob.h #759454:759455
@@ -272,6 +272,26 @@
      */
     unsigned long percent() const;
 
+    /**
+     * set the auto-delete property of the job. If @p autodelete is
+     * set to false the job will not delete itself once its finished.
+     *
+     * The default for any KJob is to automatically delete itself.
+     *
+     * @param autodelete set to false to disable automatic deletion
+     * of the job.
+     */
+    void setAutoDelete( bool autodelete );
+
+    /**
+     * Returns wether this job automatically deletes itself once
+     * the job is finished.
+     *
+     * @return whether the job is deleted automatically after
+     * finishing.
+     */
+    bool isAutoDelete() const;
+
 Q_SIGNALS:
 #ifndef Q_MOC_RUN
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
--- trunk/KDE/kdelibs/kdecore/jobs/kjob_p.h #759454:759455
@@ -49,6 +49,7 @@
     bool suspended;
     KJob::Capabilities capabilities;
     QTimer *speedTimer;
+    bool isAutoDelete;
 
     void _k_speedTimeout();
 
[prev in list] [next in list] [prev in thread] [next in thread] 

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