Skip to content

Commit

Permalink
[nemo-qml-plugin-filemanager] Add roles for lastAcessed and baseName
Browse files Browse the repository at this point in the history
  • Loading branch information
matthewvogt committed Sep 22, 2016
1 parent 8b56731 commit 4b60fc4
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 9 deletions.
12 changes: 11 additions & 1 deletion src/plugin/filemodel.cpp
Expand Up @@ -53,7 +53,9 @@ enum {
SymLinkTargetRole = Qt::UserRole + 8,
IsSelectedRole = Qt::UserRole + 9,
ExtensionRole = Qt::UserRole + 10,
AbsolutePathRole = Qt::UserRole + 11
AbsolutePathRole = Qt::UserRole + 11,
LastAccessedRole = Qt::UserRole + 12,
BaseNameRole = Qt::UserRole + 13
};

int access(QString fileName, int how)
Expand Down Expand Up @@ -157,6 +159,12 @@ QVariant FileModel::data(const QModelIndex &index, int role) const
case AbsolutePathRole:
return info.absoluteFilePath();

case LastAccessedRole:
return info.lastAccessed();

case BaseNameRole:
return info.baseName();

default:
return QVariant();
}
Expand All @@ -176,6 +184,8 @@ QHash<int, QByteArray> FileModel::roleNames() const
roles.insert(IsSelectedRole, QByteArray("isSelected"));
roles.insert(ExtensionRole, QByteArray("extension"));
roles.insert(AbsolutePathRole, QByteArray("absolutePath"));
roles.insert(LastAccessedRole, QByteArray("accessed"));
roles.insert(BaseNameRole, QByteArray("baseName"));
return roles;
}

Expand Down
12 changes: 12 additions & 0 deletions src/plugin/statfileinfo.cpp
Expand Up @@ -59,6 +59,18 @@ bool StatFileInfo::exists() const
return m_fileInfo.exists();
}

QString StatFileInfo::extension() const
{
// If there is only one token following a dot, prefer it to be the baseName
return m_fileInfo.completeBaseName().isEmpty() ? QString() : m_fileInfo.suffix();
}

QString StatFileInfo::baseName() const
{
QString rv(m_fileInfo.completeBaseName());
return rv.isEmpty() ? m_fileInfo.fileName() : rv;
}

bool StatFileInfo::isSafeToRead() const
{
// it is safe to read non-existing files
Expand Down
4 changes: 3 additions & 1 deletion src/plugin/statfileinfo.h
Expand Up @@ -97,8 +97,10 @@ class StatFileInfo
uint ownerId() const { return m_fileInfo.ownerId(); }
qint64 size() const { return m_fileInfo.size(); }
QDateTime lastModified() const { return m_fileInfo.lastModified(); }
QDateTime lastAccessed() const { return m_fileInfo.lastRead(); }
QDateTime created() const { return m_fileInfo.created(); }
QString extension() const { return m_fileInfo.suffix(); }
QString extension() const;
QString baseName() const;
bool exists() const;
bool isSafeToRead() const;

Expand Down
6 changes: 6 additions & 0 deletions tests/auto/folder/.hidden
@@ -0,0 +1,6 @@






Binary file added tests/auto/folder/.tarball.tar.bz2
Binary file not shown.
20 changes: 13 additions & 7 deletions tests/auto/tst_filemodel.qml
Expand Up @@ -49,6 +49,8 @@ Item {
model: fileModel
Item {
property string fileName: model.fileName
property string baseName: model.baseName
property string extension: model.extension
property string mimeType: model.mimeType
property int size: model.size
property bool isDir: model.isDir
Expand All @@ -65,11 +67,13 @@ Item {
}

property var results: [
{fileName: "a", mimeType: "application/x-zerosize", size: 0, isDir: false},
{fileName: "b", mimeType: "text/plain", size: 2, isDir: false},
{fileName: "c", mimeType: "text/plain", size: 4, isDir: false},
{fileName: "subfolder", mimeType: "inode/directory", size: 4096, isDir: true},
{fileName: ".hidden.xml", mimeType: "application/xml", size: 52, isDir: false}
{fileName: "a", baseName: "a", extension: "", mimeType: "application/x-zerosize", size: 0, isDir: false},
{fileName: "b", baseName: "b", extension: "", mimeType: "text/plain", size: 2, isDir: false},
{fileName: "c", baseName: "c", extension: "", mimeType: "text/plain", size: 4, isDir: false},
{fileName: "subfolder", baseName: "subfolder", extension: "", mimeType: "inode/directory", size: 4096, isDir: true},
{fileName: ".hidden.xml", baseName: ".hidden", extension: "xml", mimeType: "application/xml", size: 52, isDir: false},
{fileName: ".tarball.tar.bz2", baseName: ".tarball.tar", extension: "bz2", mimeType: "application/x-bzip-compressed-tar", size: 109, isDir: false},
{fileName: ".hidden", baseName: ".hidden", extension: "", mimeType: "text/plain", size: 6, isDir: false}
]

function test_listing() {
Expand All @@ -82,6 +86,8 @@ Item {
var actual = repeater.itemAt(i)
var expected = results[indices[i]]
compare(actual.fileName, expected.fileName, message)
compare(actual.baseName, expected.baseName, message)
compare(actual.extension, expected.extension, message)
compare(actual.mimeType, expected.mimeType, message)
compare(actual.size, expected.size, message)
compare(actual.isDir, expected.isDir, message)
Expand All @@ -97,10 +103,10 @@ Item {

fileModel.includeHiddenFiles = true
fileModel.sortBy = FileModel.SortByName
check([2, 1, 0, 4], 'Reverse by name with hidden')
check([2, 1, 0, 5, 4, 6], 'Reverse by name with hidden')

fileModel.sortBy = FileModel.SortBySize
check([0, 1, 2, 4], 'Reverse by size with hidden')
check([0, 1, 2, 6, 4, 5], 'Reverse by size with hidden')

fileModel.includeHiddenFiles = false
fileModel.directorySort = FileModel.SortDirectoriesBeforeFiles
Expand Down

0 comments on commit 4b60fc4

Please sign in to comment.