feat: new functions for fileinfo and utils class

(#5)
This commit is contained in:
Gary Wang 2019-07-26 17:43:08 +08:00 committed by GitHub
parent fbe5ddfe93
commit ce4a9dfb26
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 114 additions and 0 deletions

View File

@ -10,6 +10,7 @@ set (QGIO_PUBLIC_HEADER_FILES
dgiovolume.h
dgiofile.h
dgiofileinfo.h
dgioutils.h
)
set (QGIO_PRIVATE_CPP_FILES
@ -19,6 +20,7 @@ set (QGIO_PRIVATE_CPP_FILES
dgiovolume.cpp
dgiofile.cpp
dgiofileinfo.cpp
dgioutils.cpp
)
# Library

View File

@ -60,6 +60,28 @@ DGioFileInfo::~DGioFileInfo()
}
/*!
* \brief Gets a display name for a file.
*
* A display name is guaranteed to be in UTF8 and can thus be displayed in the UI.
*
* Wrapper of Gio::FileInfo::get_display_name(), internally it returns the
* G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME attribute value.
*/
QString DGioFileInfo::displayName() const
{
Q_D(const DGioFileInfo);
return QString::fromStdString(d->getGmmFileInfoInstance()->get_display_name());
}
/*!
* \brief DGioFileInfo::fileType
*
* Wrapper of Gio::FileInfo::get_file_type(), internally it returns the
* G_FILE_ATTRIBUTE_STANDARD_TYPE attribute value.
* \return
*/
DGioFileType DGioFileInfo::fileType() const
{
Q_D(const DGioFileInfo);

View File

@ -28,6 +28,7 @@ public:
~DGioFileInfo();
// file info
QString displayName() const;
DGioFileType fileType() const;
// filesystem info.

56
gio-qt/dgioutils.cpp Normal file
View File

@ -0,0 +1,56 @@
#include "dgioutils.h"
#include <QStringList>
#include <glibmm/miscutils.h>
/*!
* \brief Get the full path by directory type.
*
* Wrapper of Glib::get_user_data_dir(), behavior similar to QStandardPaths::writableLocation(),
* but at least it has USER_DIRECTORY_TEMPLATES .
*
* On UNIX platforms this is determined using the mechanisms described in the
* [XDG Base Directory Specification](http://www.freedesktop.org/Standards/basedir-spec).
*/
QString DGioUtils::userSpecialDir(DGioUserDirectory userDirectory)
{
return QString::fromStdString(Glib::get_user_special_dir(static_cast<Glib::UserDirectory>(userDirectory)));
}
/*!
* \brief Get an ordered list of base directories in which to access system-wide application data.
*
* Wrapper of Glib::get_system_data_dirs(), behavior similar (should be the same under UNIX) to
* QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation).
*
* On UNIX platforms this is determined using the mechanisms described in the
* [XDG Base Directory Specification](http://www.freedesktop.org/Standards/basedir-spec)
* In this case the list of directories retrieved will be XDG_DATA_DIRS.
*/
QStringList DGioUtils::systemDataDirs()
{
std::vector<std::string> dirs = Glib::get_system_data_dirs();
QStringList lst;
for (auto dir : dirs) {
lst.append(QString::fromStdString(dir));
}
return lst;
}
/*!
* \brief Get a base directory in which to access application data such as icons that is customized for a particular user.
*
* Wrapper of Glib::get_user_data_dir(), behavior similar (should be the same under UNIX) to
* QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation).
*
* On UNIX platforms this is determined using the mechanisms described in the
* [XDG Base Directory Specification](http://www.freedesktop.org/Standards/basedir-spec).
* In this case the directory retrieved will be `XDG_DATA_HOME`.
*/
QString DGioUtils::userDataDir()
{
return QString::fromStdString(Glib::get_user_data_dir());
}

28
gio-qt/dgioutils.h Normal file
View File

@ -0,0 +1,28 @@
#ifndef DGIOUTILS_H
#define DGIOUTILS_H
#include <QObject>
enum DGioUserDirectory
{
USER_DIRECTORY_DESKTOP,
USER_DIRECTORY_DOCUMENTS,
USER_DIRECTORY_DOWNLOAD,
USER_DIRECTORY_MUSIC,
USER_DIRECTORY_PICTURES,
USER_DIRECTORY_PUBLIC_SHARE,
USER_DIRECTORY_TEMPLATES,
USER_DIRECTORY_VIDEOS,
USER_N_DIRECTORIES
};
Q_ENUMS(DGioUserDirectory);
class DGioUtils
{
public:
static QString userSpecialDir(DGioUserDirectory userDirectory);
static QStringList systemDataDirs();
static QString userDataDir();
};
#endif // DGIOUTILS_H

View File

@ -3,6 +3,7 @@
#include <QExplicitlySharedDataPointer>
#include <dgiofile.h>
#include <dgioutils.h>
#include <dgiomount.h>
#include <dgiovolume.h>
#include <dgiovolumemanager.h>
@ -10,6 +11,10 @@
int main(int argc, char * argv[])
{
qDebug() << DGioUtils::systemDataDirs();
qDebug() << "----------------------";
DGioFile * f = DGioFile::createFromPath("/media/wzc/aaaaaaaaaaaaaaaa");
if (f) {
qDebug() << f->basename() << f->path() << f->uri();