Skip to content

Commit

Permalink
Merge branch 'jb52724' into 'master'
Browse files Browse the repository at this point in the history
[filemanager] Add some properties to FileInfo required by gallery. Contributes to JB#52724

See merge request mer-core/nemo-qml-plugin-filemanager!41
  • Loading branch information
adenexter committed Jan 28, 2021
2 parents 7d57db0 + 9bdb5db commit e39eb8a
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 4 deletions.
48 changes: 46 additions & 2 deletions src/plugin/statfileinfo.cpp
Expand Up @@ -93,7 +93,7 @@ void StatFileInfo::refresh()

m_fileInfo = QFileInfo(m_fileName);
if (m_fileName.isEmpty()) {
m_mimeType = QString();
m_mimeType = QMimeType();
m_baseName = QString();
m_extension = QString();

Expand All @@ -106,7 +106,7 @@ void StatFileInfo::refresh()
// no real cost to constructing one when needed.
QMimeDatabase mimeDatabase;

m_mimeType = mimeDatabase.mimeTypeForFile(m_fileInfo).name();
m_mimeType = mimeDatabase.mimeTypeForFile(m_fileInfo);
m_extension = mimeDatabase.suffixForFileName(m_fileName);
m_baseName = m_fileInfo.fileName();

Expand Down Expand Up @@ -164,3 +164,47 @@ FileInfo::FileInfo(QObject *parent)
FileInfo::~FileInfo()
{
}

QUrl FileInfo::url() const
{
return m_url;
}

void FileInfo::setUrl(const QUrl &url)
{
if (m_url != url) {
const bool wasLocal = m_localFile;

m_url = url;

if (!m_url.isEmpty() && m_url.isLocalFile()) {
m_localFile = true;

StatFileInfo::setFile(m_url.toLocalFile());
} else {
m_localFile = false;

StatFileInfo::setFile(QString());
}

if (m_localFile != wasLocal) {
emit localFileChanged();
}

emit urlChanged();
}
}

bool FileInfo::isLocalFile() const
{
return m_localFile;
}

void FileInfo::setFile(const QString &file)
{
if (file.isEmpty()) {
setUrl(QUrl());
} else {
setUrl(QUrl::fromLocalFile(file));
}
}
24 changes: 22 additions & 2 deletions src/plugin/statfileinfo.h
Expand Up @@ -35,7 +35,9 @@

#include <QFileInfo>
#include <QDateTime>
#include <QMimeType>
#include <QDir>
#include <QUrl>
#include <sys/stat.h>

#include "archiveinfo.h"
Expand All @@ -54,7 +56,8 @@ class StatFileInfo
void setFile(QString fileName);
QString fileName() const { return m_fileInfo.fileName(); }

QString mimeType() const { return m_mimeType; }
QString mimeType() const { return m_mimeType.name(); }
QString mimeTypeComment() const { return m_mimeType.comment(); }

// these inspect the file itself without following symlinks

Expand Down Expand Up @@ -135,7 +138,7 @@ class StatFileInfo
QString m_fileName;
QString m_baseName;
QString m_extension;
QString m_mimeType;
QMimeType m_mimeType;
QFileInfo m_fileInfo;
Sailfish::ArchiveInfo m_archiveInfo;
struct stat64 m_stat; // after following possible symlinks
Expand All @@ -149,9 +152,11 @@ bool operator!=(const StatFileInfo &lhs, const StatFileInfo &rhs);
class FileInfo : public QObject, protected StatFileInfo
{
Q_OBJECT
Q_PROPERTY(QUrl url READ url WRITE setUrl NOTIFY urlChanged)
Q_PROPERTY(QString file READ file WRITE setFile NOTIFY fileChanged)
Q_PROPERTY(QString fileName READ fileName NOTIFY fileChanged)
Q_PROPERTY(QString mimeType READ mimeType NOTIFY fileChanged)
Q_PROPERTY(QString mimeTypeComment READ mimeTypeComment NOTIFY fileChanged)
Q_PROPERTY(qint64 size READ size NOTIFY fileChanged)
Q_PROPERTY(QDateTime lastModified READ lastModified NOTIFY fileChanged)
Q_PROPERTY(bool isDir READ isDirAtEnd NOTIFY fileChanged)
Expand All @@ -163,14 +168,29 @@ class FileInfo : public QObject, protected StatFileInfo
Q_PROPERTY(QDateTime accessed READ lastAccessed NOTIFY fileChanged)
Q_PROPERTY(QString baseName READ baseName NOTIFY fileChanged)
Q_PROPERTY(QString directoryPath READ absolutePath NOTIFY fileChanged)
Q_PROPERTY(bool exists READ exists NOTIFY fileChanged)
Q_PROPERTY(bool localFile READ isLocalFile NOTIFY localFileChanged)
public:
explicit FileInfo(QObject *parent = nullptr);
~FileInfo() override;

QUrl url() const;
void setUrl(const QUrl &url);

bool isLocalFile() const;

void setFile(const QString &file);

Q_INVOKABLE void refresh() { StatFileInfo::refresh(); }

signals:
void fileChanged() override;
void urlChanged();
void localFileChanged();

private:
QUrl m_url;
bool m_localFile = false;
};

#endif // STATFILEINFO_H

0 comments on commit e39eb8a

Please sign in to comment.