Skip to content

Commit

Permalink
Add path presentation properties
Browse files Browse the repository at this point in the history
  • Loading branch information
matthewvogt committed Apr 8, 2016
1 parent 0fa2243 commit 3e7d3ad
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 13 deletions.
22 changes: 21 additions & 1 deletion src/filemodel.cpp
Expand Up @@ -92,6 +92,7 @@ FileModel::FileModel(QObject *parent) :
m_sortOrder(Qt::AscendingOrder),
m_caseSensitivity(Qt::CaseSensitive),
m_includeDirectories(true),
m_includeParentDirectory(false),
m_active(false),
m_dirty(false),
m_populated(false),
Expand Down Expand Up @@ -199,6 +200,8 @@ void FileModel::setPath(QString path)
m_watcher->addPath(path);

m_path = path;
m_absolutePath = QString();
m_directory = QString();
scheduleUpdate(PathChanged);
}

Expand Down Expand Up @@ -238,6 +241,15 @@ void FileModel::setIncludeDirectories(bool include)
scheduleUpdate(IncludeDirectoriesChanged | ContentChanged);
}

void FileModel::setIncludeParentDirectory(bool include)
{
if (m_includeParentDirectory == include)
return;

m_includeParentDirectory = include;
scheduleUpdate(IncludeParentDirectoryChanged | ContentChanged);
}

void FileModel::setDirectorySort(DirectorySort sort)
{
if (m_directorySort == sort)
Expand Down Expand Up @@ -419,6 +431,8 @@ void FileModel::readAllEntries()
return;
}

m_absolutePath = dir.absolutePath();
m_directory = dir.isRoot() ? QStringLiteral("/") : dir.dirName();
m_files = directoryEntries(dir);
}

Expand Down Expand Up @@ -493,10 +507,13 @@ QDir FileModel::directory() const
{
QDir dir(m_path);
if (dir.exists()) {
QDir::Filters filters(QDir::Files | QDir::NoDotAndDotDot | QDir::System);
QDir::Filters filters(QDir::Files | QDir::NoDot | QDir::System);

if (m_includeDirectories) {
filters |= QDir::AllDirs;
if (!m_includeParentDirectory) {
filters |= QDir::NoDotDot;
}
}

QDir::SortFlags sortFlags(QDir::LocaleAware);
Expand Down Expand Up @@ -569,6 +586,9 @@ void FileModel::update()
if (m_changedFlags & IncludeDirectoriesChanged) {
emit includeDirectoriesChanged();
}
if (m_changedFlags & IncludeParentDirectoryChanged) {
emit includeParentDirectoryChanged();
}
if (m_changedFlags & DirectorySortChanged) {
emit directorySortChanged();
}
Expand Down
38 changes: 26 additions & 12 deletions src/filemodel.h
Expand Up @@ -56,10 +56,13 @@ class FileModel : public QAbstractListModel
{
Q_OBJECT
Q_PROPERTY(QString path READ path WRITE setPath NOTIFY pathChanged)
Q_PROPERTY(QString absolutePath READ absolutePath NOTIFY pathChanged)
Q_PROPERTY(QString directoryName READ directoryName NOTIFY pathChanged)
Q_PROPERTY(Sort sortBy READ sortBy WRITE setSortBy NOTIFY sortByChanged)
Q_PROPERTY(Qt::SortOrder sortOrder READ sortOrder WRITE setSortOrder NOTIFY sortOrderChanged)
Q_PROPERTY(Qt::CaseSensitivity caseSensitivity READ caseSensitivity WRITE setCaseSensitivity NOTIFY caseSensitivityChanged)
Q_PROPERTY(bool includeDirectories READ includeDirectories WRITE setIncludeDirectories NOTIFY includeDirectoriesChanged)
Q_PROPERTY(bool includeParentDirectory READ includeParentDirectory WRITE setIncludeParentDirectory NOTIFY includeParentDirectoryChanged)
Q_PROPERTY(DirectorySort directorySort READ directorySort WRITE setDirectorySort NOTIFY directorySortChanged)
Q_PROPERTY(QStringList nameFilters READ nameFilters WRITE setNameFilters NOTIFY nameFiltersChanged)
Q_PROPERTY(bool populated READ populated NOTIFY populatedChanged)
Expand Down Expand Up @@ -102,6 +105,9 @@ class FileModel : public QAbstractListModel
QString path() const { return m_path; }
void setPath(QString path);

QString absolutePath() const { return m_absolutePath; }
QString directoryName() const { return m_directory; }

Sort sortBy() const { return m_sortBy; }
void setSortBy(Sort sortBy);

Expand All @@ -114,6 +120,9 @@ class FileModel : public QAbstractListModel
bool includeDirectories() const { return m_includeDirectories; }
void setIncludeDirectories(bool include);

bool includeParentDirectory() const { return m_includeParentDirectory; }
void setIncludeParentDirectory(bool include);

DirectorySort directorySort() const { return m_directorySort; }
void setDirectorySort(DirectorySort sort);

Expand Down Expand Up @@ -155,6 +164,7 @@ public slots:
void sortOrderChanged();
void caseSensitivityChanged();
void includeDirectoriesChanged();
void includeParentDirectoryChanged();
void directorySortChanged();
void nameFiltersChanged();
void populatedChanged();
Expand All @@ -168,18 +178,19 @@ private slots:

public:
enum Changed {
PathChanged = (1 << 0),
SortByChanged = (1 << 1),
SortOrderChanged = (1 << 2),
CaseSensitivityChanged = (1 << 3),
IncludeDirectoriesChanged = (1 << 4),
DirectorySortChanged = (1 << 5),
NameFiltersChanged = (1 << 6),
PopulatedChanged = (1 << 7),
CountChanged = (1 << 8),
ActiveChanged = (1 << 9),
SelectedCountChanged = (1 << 10),
ContentChanged = (1 << 11),
PathChanged = (1 << 0),
SortByChanged = (1 << 1),
SortOrderChanged = (1 << 2),
CaseSensitivityChanged = (1 << 3),
IncludeDirectoriesChanged = (1 << 4),
IncludeParentDirectoryChanged = (1 << 5),
DirectorySortChanged = (1 << 6),
NameFiltersChanged = (1 << 7),
PopulatedChanged = (1 << 8),
CountChanged = (1 << 9),
ActiveChanged = (1 << 10),
SelectedCountChanged = (1 << 11),
ContentChanged = (1 << 12),
};
Q_DECLARE_FLAGS(ChangedFlags, Changed);

Expand All @@ -197,11 +208,14 @@ private slots:
void timerEvent(QTimerEvent *event) override;

QString m_path;
QString m_absolutePath;
QString m_directory;
Sort m_sortBy;
DirectorySort m_directorySort;
Qt::SortOrder m_sortOrder;
Qt::CaseSensitivity m_caseSensitivity;
bool m_includeDirectories;
bool m_includeParentDirectory;
bool m_active;
bool m_dirty;
bool m_populated;
Expand Down

0 comments on commit 3e7d3ad

Please sign in to comment.