From kde-commits Fri Aug 31 19:08:10 2012 From: Arjen Hiemstra Date: Fri, 31 Aug 2012 19:08:10 +0000 To: kde-commits Subject: [calligra/krita-sketch-rempt] krita/sketch: Use QDir for the file list model since we don't have KIO Message-Id: <20120831190810.D0A5FA60D7 () git ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=134644010124639 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 =3D new KDirModel(this); - setSourceModel(d->dirModel); - setSortFoldersFirst(true); + d->dir.setFilter(QDir::AllDirs | QDir::Files | QDir::NoDotAndDotDot); = QHash 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 =3D 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() =3D=3D "inode/directory" ? "ima= ge://icon/inode-directory" : QString("image://recentimage/%1").arg(item.url= ().toLocalFile()); + return item.mimetype() =3D=3D "inode/directory" ? "im= age://icon/inode-directory" : QString("image://recentimage/%1").arg(item.ur= l().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 =3D d->dir.entryInfoList(); + emit endResetModel(); } = QString FileSystemModel::parentFolder() { - KUrl root =3D d->dirModel->dirLister()->url(); + KUrl root =3D 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/Fi= leSystemModel.h index e0df4b1..9aff71d 100644 --- a/krita/sketch/models/FileSystemModel.h +++ b/krita/sketch/models/FileSystemModel.h @@ -26,13 +26,14 @@ #include #include = -#include +#include = -class FileSystemModel : public KDirSortFilterProxyModel, public QDeclarati= veParserStatus +class FileSystemModel : public QAbstractListModel, public QDeclarativePars= erStatus { 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 =3D 0); virtual ~FileSystemModel(); = virtual QVariant data(const QModelIndex& index, int role =3D Qt::Displ= ayRole) const; + virtual int rowCount(const QModelIndex& parent =3D QModelIndex()) cons= t; = 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/OpenImag= ePage.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 =3D view.model.parentFolder; + onClicked: view.model.path =3D view.model.parentFolder; } } } @@ -82,7 +82,7 @@ Page { = onClicked: { if( model.fileType =3D=3D "inode/directory" ) { - GridView.view.model.rootPath =3D model.path; + GridView.view.model.path =3D model.path; } else { Settings.currentFile =3D model.path; RecentFileManager.addRecent( model.path );