┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/applyviewpropsjob.h
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2006-12-07 17:22:51 +0000
committerPeter Penz <[email protected]>2006-12-07 17:22:51 +0000
commitced7cbd022b68c8dedd61b5d34d27b9c1296df15 (patch)
tree96b3098444d38fa84675364ee25cb4a033bf2c43 /src/applyviewpropsjob.h
parentd3611c41f4c453c81d95e013c68ddf65c94e9bc0 (diff)
Use a KIO Job for applying the view properties recursively to sub directories.
svn path=/trunk/playground/utils/dolphin/; revision=611325
Diffstat (limited to 'src/applyviewpropsjob.h')
-rw-r--r--src/applyviewpropsjob.h83
1 files changed, 83 insertions, 0 deletions
diff --git a/src/applyviewpropsjob.h b/src/applyviewpropsjob.h
new file mode 100644
index 000000000..d14e1a787
--- /dev/null
+++ b/src/applyviewpropsjob.h
@@ -0,0 +1,83 @@
+/***************************************************************************
+ * Copyright (C) 2006 by Peter Penz <[email protected]> *
+ * *
+ * The code is based on kdelibs/kio/kio/directorysizejob.* *
+ * (C) 2006 by David Faure <[email protected]> *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ ***************************************************************************/
+
+#ifndef APPLYVIEWPROPSJOB_H
+#define APPLYVIEWPROPSJOB_H
+
+#include <kio/job.h>
+#include <kfileitem.h>
+#include <kurl.h>
+
+class ViewProperties;
+
+/**
+ * @brief Applies view properties recursively to directories.
+ *
+ * Usage:
+ * \code
+ * KJob* job = new ApplyViewPropsJob(dir, viewProps);
+ * connect(job, SIGNAL(result(KJob*)),
+ * this, SLOT(slotResult(KJob*)));
+ * \endcode
+ *
+ * To be able to show a progress of the operation, the following steps
+ * are recommended:
+ * - Use a DirectorySizeJob to count the number of directories.
+ * - Use a timer to show the current count of directories by invoking
+ * DirectorySizeJob::totalSubdirs() until the result signal is emitted.
+ * - Use the ApplyViewPropsJob.
+ * - Use a timer to show the progress by invoking ApplyViwePropsJob::progress().
+ * In combination with the total directory count it is possible to show a
+ * progress bar now.
+ */
+class ApplyViewPropsJob : public KIO::Job
+{
+ Q_OBJECT
+
+public:
+ /**
+ * @param dir Directory where the view properties should be applied to
+ * (including sub directories).
+ * @param viewProps View properties for the directory \a dir including its
+ * sub directories.
+ */
+ ApplyViewPropsJob(const KUrl& dir, const ViewProperties& viewProps);
+ virtual ~ApplyViewPropsJob();
+ int progress() const { return m_progress; }
+
+private:
+ void startNextJob(const KUrl & url, const ViewProperties& viewProps);
+
+private slots:
+ virtual void slotResult(KJob* job);
+ void slotEntries(KIO::Job*, const KIO::UDSEntryList&);
+ void processNextItem();
+
+private:
+ ViewProperties* m_viewProps;
+ KFileItemList m_lstItems;
+ int m_currentItem;
+ int m_progress;
+ KUrl m_dir;
+};
+
+#endif