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

List:       kde-commits
Subject:    [calligra/krita-sketch-rempt] krita/sketch: Use QDir for the file list model since we don't have KIO
From:       Arjen Hiemstra <ahiemstra () heimr ! nl>
Date:       2012-08-31 19:08:10
Message-ID: 20120831190810.D0A5FA60D7 () git ! kde ! org
[Download RAW message or body]

Git commit 1bc28c42ddc2345d2a067c76be16353f61d67b5e by Arjen Hiemstra.
Committed on 31/08/2012 at 21:07.
Pushed by ahiemstra into branch 'krita-sketch-rempt'.

Use QDir for the file list model since we don't have KIO on windoze.

M  +25   -20   krita/sketch/models/FileSystemModel.cpp
M  +7    -6    krita/sketch/models/FileSystemModel.h
M  +2    -2    krita/sketch/qml/OpenImagePage.qml

http://commits.kde.org/calligra/1bc28c42ddc2345d2a067c76be16353f61d67b5e

diff --git a/krita/sketch/models/FileSystemModel.cpp \
b/krita/sketch/models/FileSystemModel.cpp index 8e215ac..b57bb79 100644
--- a/krita/sketch/models/FileSystemModel.cpp
+++ b/krita/sketch/models/FileSystemModel.cpp
@@ -27,22 +27,20 @@
 class FileSystemModel::Private
 {
 public:
-    KDirModel* dirModel;
+    QDir dir;
+    QFileInfoList list;
 };
 
 FileSystemModel::FileSystemModel(QObject* parent)
-    : KDirSortFilterProxyModel(parent), d(new Private)
+    : QAbstractListModel(parent), d(new Private)
 {
-    d->dirModel = new KDirModel(this);
-    setSourceModel(d->dirModel);
-    setSortFoldersFirst(true);
+    d->dir.setFilter(QDir::AllDirs | QDir::Files | QDir::NoDotAndDotDot);
 
     QHash<int, QByteArray> roles;
     roles.insert(FileNameRole, "fileName");
     roles.insert(FilePathRole, "path");
     roles.insert(FileIconRole, "icon");
     roles.insert(FileTypeRole, "fileType");
-    roles.insert(FileThumbnailRole, "thumbnail");
     setRoleNames(roles);
 }
 
@@ -54,17 +52,17 @@ FileSystemModel::~FileSystemModel()
 QVariant FileSystemModel::data(const QModelIndex& index, int role) const
 {
     if(index.isValid()) {
-        KFileItem item = d->dirModel->itemForIndex(mapToSource(index));
+        KFileItem item(KFileItem::Unknown, KFileItem::Unknown, \
d->list.at(index.row()).absoluteFilePath(), false);  if(!item.isNull()) {
             switch(role) {
                 case FileNameRole:
-                    return item.text();
+                    return item.name();
                     break;
                 case FilePathRole:
-                    return item.url().toLocalFile();
+                    return item.mostLocalUrl().toLocalFile();
                     break;
                 case FileIconRole:
-                    return item.mimetype() == "inode/directory" ? \
"image://icon/inode-directory" : \
QString("image://recentimage/%1").arg(item.url().toLocalFile()); +                    \
return item.mimetype() == "inode/directory" ? "image://icon/inode-directory" : \
QString("image://recentimage/%1").arg(item.url().toLocalFile());  break;
                 case FileTypeRole:
                     return item.mimetype();
@@ -72,7 +70,12 @@ QVariant FileSystemModel::data(const QModelIndex& index, int role) \
const  }
         }
     }
-    return KDirSortFilterProxyModel::data(index, role);
+    return QVariant();
+}
+
+int FileSystemModel::rowCount(const QModelIndex& parent) const
+{
+    return d->list.count();
 }
 
 void FileSystemModel::classBegin()
@@ -82,34 +85,36 @@ void FileSystemModel::classBegin()
 
 void FileSystemModel::componentComplete()
 {
-    setRootPath(QDir::homePath());
+    setPath(QDir::homePath());
 }
 
-QString FileSystemModel::rootPath()
+QString FileSystemModel::path()
 {
-    return d->dirModel->dirLister()->url().toLocalFile();
+    return d->dir.absolutePath();
 }
 
-void FileSystemModel::setRootPath(const QString& path)
+void FileSystemModel::setPath(const QString& path)
 {
-    d->dirModel->dirLister()->openUrl(KUrl::fromPath(path));
+    emit beginResetModel();
+    d->dir.setPath(path);
+    d->list = d->dir.entryInfoList();
+    emit endResetModel();
 }
 
 QString FileSystemModel::parentFolder()
 {
-    KUrl root = d->dirModel->dirLister()->url();
+    KUrl root = QUrl::fromLocalFile(path());
     root.cd("..");
     return root.toLocalFile();
 }
 
 QString FileSystemModel::filter()
 {
-    return d->dirModel->dirLister()->nameFilter();
+    return d->dir.nameFilters().join(" ");
 }
 
 void FileSystemModel::setFilter(const QString& filter)
 {
-    d->dirModel->dirLister()->setNameFilter(filter);
-    d->dirModel->dirLister()->emitChanges();
+    d->dir.setNameFilters(filter.split(" "));
 }
 
diff --git a/krita/sketch/models/FileSystemModel.h \
b/krita/sketch/models/FileSystemModel.h index e0df4b1..9aff71d 100644
--- a/krita/sketch/models/FileSystemModel.h
+++ b/krita/sketch/models/FileSystemModel.h
@@ -26,13 +26,14 @@
 #include <QtDeclarative/QDeclarativeParserStatus>
 #include <QtDeclarative/QtDeclarative>
 
-#include <KDE/KDirSortFilterProxyModel>
+#include <QAbstractListModel>
 
-class FileSystemModel : public KDirSortFilterProxyModel, public \
QDeclarativeParserStatus +class FileSystemModel : public QAbstractListModel, public \
QDeclarativeParserStatus  {
     Q_OBJECT
     Q_INTERFACES(QDeclarativeParserStatus)
-    Q_PROPERTY(QString rootPath READ rootPath WRITE setRootPath)
+
+    Q_PROPERTY(QString path READ path WRITE setPath)
     Q_PROPERTY(QString parentFolder READ parentFolder)
     Q_PROPERTY(QString filter READ filter WRITE setFilter)
 
@@ -43,19 +44,19 @@ public:
         FilePathRole,
         FileIconRole,
         FileTypeRole,
-        FileThumbnailRole,
     };
 
     explicit FileSystemModel(QObject* parent = 0);
     virtual ~FileSystemModel();
 
     virtual QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) \
const; +    virtual int rowCount(const QModelIndex& parent = QModelIndex()) const;
 
     virtual void classBegin();
     virtual void componentComplete();
 
-    virtual QString rootPath();
-    virtual void setRootPath(const QString& path);
+    virtual QString path();
+    virtual void setPath(const QString& path);
 
     virtual QString parentFolder();
 
diff --git a/krita/sketch/qml/OpenImagePage.qml b/krita/sketch/qml/OpenImagePage.qml
index ffa30b4..3b8a04f 100644
--- a/krita/sketch/qml/OpenImagePage.qml
+++ b/krita/sketch/qml/OpenImagePage.qml
@@ -49,7 +49,7 @@ Page {
                 height: Constants.GridHeight;
                 text: "^ Up";
                 textColor: "white";
-                onClicked: view.model.rootPath = view.model.parentFolder;
+                onClicked: view.model.path = view.model.parentFolder;
             }
         }
     }
@@ -82,7 +82,7 @@ Page {
 
             onClicked: {
                 if( model.fileType == "inode/directory" ) {
-                    GridView.view.model.rootPath = model.path;
+                    GridView.view.model.path = model.path;
                 } else {
                     Settings.currentFile = model.path;
                     RecentFileManager.addRecent( model.path );


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

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