• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdeutils API Reference
  • KDE Home
  • Contact Us
 

ark

  • sources
  • kde-4.14
  • kdeutils
  • ark
  • part
archivemodel.h
Go to the documentation of this file.
1 /*
2  * ark -- archiver for the KDE project
3  *
4  * Copyright (C) 2007 Henrique Pinto <henrique.pinto@kdemail.net>
5  * Copyright (C) 2008-2009 Harald Hvaal <haraldhv@stud.ntnu.no>
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License
9  * as published by the Free Software Foundation; either version 2
10  * of the License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20  *
21  */
22 #ifndef ARCHIVEMODEL_H
23 #define ARCHIVEMODEL_H
24 
25 #include <QAbstractItemModel>
26 #include <QScopedPointer>
27 
28 #include <kjobtrackerinterface.h>
29 #include "kerfuffle/archive.h"
30 
31 using Kerfuffle::ArchiveEntry;
32 
33 namespace Kerfuffle
34 {
35  class Query;
36 }
37 
38 class ArchiveNode;
39 class ArchiveDirNode;
40 
41 class ArchiveModel: public QAbstractItemModel
42 {
43  Q_OBJECT
44 public:
45  ArchiveModel(const QString &dbusPathName, QObject *parent = 0);
46  ~ArchiveModel();
47 
48  QVariant data(const QModelIndex &index, int role) const;
49  Qt::ItemFlags flags(const QModelIndex &index) const;
50  QVariant headerData(int section, Qt::Orientation orientation,
51  int role = Qt::DisplayRole) const;
52  QModelIndex index(int row, int column,
53  const QModelIndex &parent = QModelIndex()) const;
54  QModelIndex parent(const QModelIndex &index) const;
55  int rowCount(const QModelIndex &parent = QModelIndex()) const;
56  int columnCount(const QModelIndex &parent = QModelIndex()) const;
57 
58  virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder);
59 
60  //drag and drop related
61  virtual Qt::DropActions supportedDropActions() const;
62  virtual QStringList mimeTypes() const;
63  virtual QMimeData * mimeData(const QModelIndexList & indexes) const;
64 
65  virtual bool dropMimeData(const QMimeData * data, Qt::DropAction action, int row, int column, const QModelIndex & parent);
66 
67  KJob* setArchive(Kerfuffle::Archive *archive);
68  Kerfuffle::Archive *archive() const;
69 
70  Kerfuffle::ArchiveEntry entryForIndex(const QModelIndex &index);
71  int childCount(const QModelIndex &index, int &dirs, int &files) const;
72 
73  Kerfuffle::ExtractJob* extractFile(const QVariant& fileName, const QString & destinationDir, const Kerfuffle::ExtractionOptions options = Kerfuffle::ExtractionOptions()) const;
74  Kerfuffle::ExtractJob* extractFiles(const QList<QVariant>& files, const QString & destinationDir, const Kerfuffle::ExtractionOptions options = Kerfuffle::ExtractionOptions()) const;
75 
76  Kerfuffle::AddJob* addFiles(const QStringList & paths, const Kerfuffle::CompressionOptions& options = Kerfuffle::CompressionOptions());
77  Kerfuffle::DeleteJob* deleteFiles(const QList<QVariant> & files);
78 
79 signals:
80  void loadingStarted();
81  void loadingFinished(KJob *);
82  void extractionFinished(bool success);
83  void error(const QString& error, const QString& details);
84  void droppedFiles(const QStringList& files, const QString& path = QString());
85 
86 private slots:
87  void slotNewEntryFromSetArchive(const ArchiveEntry& entry);
88  void slotNewEntry(const ArchiveEntry& entry);
89  void slotLoadingFinished(KJob *job);
90  void slotEntryRemoved(const QString & path);
91  void slotUserQuery(Kerfuffle::Query *query);
92  void slotCleanupEmptyDirs();
93 
94 private:
104  QString cleanFileName(const QString& fileName);
105 
106  ArchiveDirNode* parentFor(const Kerfuffle::ArchiveEntry& entry);
107  QModelIndex indexForNode(ArchiveNode *node);
108  static bool compareAscending(const QModelIndex& a, const QModelIndex& b);
109  static bool compareDescending(const QModelIndex& a, const QModelIndex& b);
114  enum InsertBehaviour { NotifyViews, DoNotNotifyViews };
115  void insertNode(ArchiveNode *node, InsertBehaviour behaviour = NotifyViews);
116  void newEntry(const Kerfuffle::ArchiveEntry& entry, InsertBehaviour behaviour);
117 
118  QList<Kerfuffle::ArchiveEntry> m_newArchiveEntries; // holds entries from opening a new archive until it's totally open
119  QList<int> m_showColumns;
120  QScopedPointer<Kerfuffle::Archive> m_archive;
121  ArchiveDirNode *m_rootNode;
122 
123  QString m_dbusPathName;
124 };
125 
126 #endif // ARCHIVEMODEL_H
ArchiveModel::extractFile
Kerfuffle::ExtractJob * extractFile(const QVariant &fileName, const QString &destinationDir, const Kerfuffle::ExtractionOptions options=Kerfuffle::ExtractionOptions()) const
Definition: archivemodel.cpp:895
QModelIndex
ArchiveModel::mimeTypes
virtual QStringList mimeTypes() const
Definition: archivemodel.cpp:553
Kerfuffle::Query
Definition: queries.h:44
Kerfuffle::DeleteJob
Definition: jobs.h:155
Kerfuffle::AddJob
Definition: jobs.h:140
archive.h
ArchiveModel::index
QModelIndex index(int row, int column, const QModelIndex &parent=QModelIndex()) const
Definition: archivemodel.cpp:425
ArchiveModel::mimeData
virtual QMimeData * mimeData(const QModelIndexList &indexes) const
Definition: archivemodel.cpp:569
ArchiveModel::addFiles
Kerfuffle::AddJob * addFiles(const QStringList &paths, const Kerfuffle::CompressionOptions &options=Kerfuffle::CompressionOptions())
Definition: archivemodel.cpp:911
QMimeData
ArchiveModel::headerData
QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const
Definition: archivemodel.cpp:380
ArchiveModel
Definition: archivemodel.h:41
ArchiveModel::error
void error(const QString &error, const QString &details)
ArchiveModel::flags
Qt::ItemFlags flags(const QModelIndex &index) const
Definition: archivemodel.cpp:369
ArchiveModel::loadingStarted
void loadingStarted()
Kerfuffle::ArchiveEntry
QHash< int, QVariant > ArchiveEntry
Definition: archive.h:78
QHash
QObject
QScopedPointer< Kerfuffle::Archive >
ArchiveModel::setArchive
KJob * setArchive(Kerfuffle::Archive *archive)
Definition: archivemodel.cpp:863
ArchiveModel::ArchiveModel
ArchiveModel(const QString &dbusPathName, QObject *parent=0)
Definition: archivemodel.cpp:282
QString
QList
ArchiveModel::childCount
int childCount(const QModelIndex &index, int &dirs, int &files) const
Definition: archivemodel.cpp:463
ArchiveModel::archive
Kerfuffle::Archive * archive() const
Definition: archivemodel.cpp:858
QStringList
ArchiveModel::droppedFiles
void droppedFiles(const QStringList &files, const QString &path=QString())
Kerfuffle::Archive
Definition: archive.h:88
ArchiveModel::deleteFiles
Kerfuffle::DeleteJob * deleteFiles(const QList< QVariant > &files)
Definition: archivemodel.cpp:930
ArchiveModel::dropMimeData
virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)
Definition: archivemodel.cpp:582
Kerfuffle::ExtractJob
Definition: jobs.h:118
ArchiveModel::~ArchiveModel
~ArchiveModel()
Definition: archivemodel.cpp:289
ArchiveModel::data
QVariant data(const QModelIndex &index, int role) const
Definition: archivemodel.cpp:295
ArchiveModel::extractionFinished
void extractionFinished(bool success)
Qt::DropActions
typedef DropActions
ArchiveModel::rowCount
int rowCount(const QModelIndex &parent=QModelIndex()) const
Definition: archivemodel.cpp:485
ArchiveModel::supportedDropActions
virtual Qt::DropActions supportedDropActions() const
Definition: archivemodel.cpp:548
QAbstractItemModel
ArchiveModel::sort
virtual void sort(int column, Qt::SortOrder order=Qt::AscendingOrder)
Definition: archivemodel.cpp:505
ArchiveModel::columnCount
int columnCount(const QModelIndex &parent=QModelIndex()) const
Definition: archivemodel.cpp:497
ArchiveModel::extractFiles
Kerfuffle::ExtractJob * extractFiles(const QList< QVariant > &files, const QString &destinationDir, const Kerfuffle::ExtractionOptions options=Kerfuffle::ExtractionOptions()) const
Definition: archivemodel.cpp:902
QObject::parent
QObject * parent() const
KJob
ArchiveModel::loadingFinished
void loadingFinished(KJob *)
ArchiveModel::entryForIndex
Kerfuffle::ArchiveEntry entryForIndex(const QModelIndex &index)
Definition: archivemodel.cpp:453
QVariant
Qt::ItemFlags
typedef ItemFlags
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:42:36 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

ark

Skip menu "ark"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

kdeutils API Reference

Skip menu "kdeutils API Reference"
  • ark
  • filelight
  • kcalc
  • kcharselect
  • kdf
  • kfloppy
  • kgpg
  • ktimer
  • kwallet
  • sweeper

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal