Alf Gaida ea757e4af0 Cherry-picking upstream release 0.12.0.
* Switched to experimental
* Bumped Standards to 4.1.1
* Fixed Symbols
* Added build dependency libexif-dev
* Added dependencies libexif-dev and libmenu-cache-dev to libfm-qt-dev
* Added override for dh_missing
* Bumped years in copyright
2017-10-22 18:15:37 +02:00

54 lines
1.9 KiB
C++

#ifndef LIBFM_QT_COMPAT_P_H
#define LIBFM_QT_COMPAT_P_H
#include "../libfmqtglobals.h"
#include "core/filepath.h"
#include "core/fileinfo.h"
#include "core/gioptrs.h"
// deprecated
#include <libfm/fm.h>
#include "path.h"
// compatibility functions bridging the old libfm C APIs and new C++ APIs.
namespace Fm {
inline FM_QT_DEPRECATED Fm::Path _convertPath(const Fm::FilePath& path) {
return Fm::Path::newForGfile(path.gfile().get());
}
inline FM_QT_DEPRECATED Fm::PathList _convertPathList(const Fm::FilePathList& srcFiles) {
Fm::PathList ret;
for(auto& file: srcFiles) {
ret.pushTail(_convertPath(file));
}
return ret;
}
inline FM_QT_DEPRECATED FmFileInfo* _convertFileInfo(const std::shared_ptr<const Fm::FileInfo>& info) {
// conver to GFileInfo first
GFileInfoPtr ginfo{g_file_info_new(), false};
g_file_info_set_name(ginfo.get(), info->name().c_str());
g_file_info_set_display_name(ginfo.get(), info->displayName().toUtf8().constData());
g_file_info_set_content_type(ginfo.get(), info->mimeType()->name());
auto mode = info->mode();
g_file_info_set_attribute_uint32(ginfo.get(), G_FILE_ATTRIBUTE_UNIX_MODE, mode);
GFileType ftype = info->isDir() ? G_FILE_TYPE_DIRECTORY : G_FILE_TYPE_REGULAR; // FIXME: generate more accurate type
g_file_info_set_file_type(ginfo.get(), ftype);
g_file_info_set_size(ginfo.get(), info->size());
g_file_info_set_icon(ginfo.get(), info->icon()->gicon().get());
g_file_info_set_attribute_uint64(ginfo.get(), G_FILE_ATTRIBUTE_TIME_MODIFIED, info->mtime());
g_file_info_set_attribute_uint64(ginfo.get(), G_FILE_ATTRIBUTE_TIME_ACCESS, info->atime());
g_file_info_set_attribute_uint64(ginfo.get(), G_FILE_ATTRIBUTE_TIME_CHANGED, info->ctime());
auto gf = info->path().gfile();
return fm_file_info_new_from_g_file_data(gf.get(), ginfo.get(), nullptr);
}
}
#endif // LIBFM_QT_COMPAT_P_H