[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