refactor: move files inside different headers

(#7)
This commit is contained in:
Gary Wang 2019-07-29 16:19:31 +08:00 committed by GitHub
parent 31087054fa
commit 224c16ae31
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
19 changed files with 98 additions and 72 deletions

View File

@ -4,30 +4,36 @@
configure_file ("gio-qt.pc.in" "gio-qt.pc" @ONLY) configure_file ("gio-qt.pc.in" "gio-qt.pc" @ONLY)
set (QGIO_PUBLIC_HEADER_FILES set (QGIO_PUBLIC_HEADER_FILES
dgiovolumemanager.h include/dgiovolumemanager.h
dgiomountoperation.h include/dgiomountoperation.h
dgiomount.h include/dgiomount.h
dgiovolume.h include/dgiovolume.h
dgiofile.h include/dgiofile.h
dgiofileinfo.h include/dgiofileinfo.h
dgioutils.h include/dgioutils.h
dgiofileiterator.h include/dgiofileiterator.h
)
set (QGIO_PRIVATE_HEADER_FILES
private/dgiohelper.h
) )
set (QGIO_PRIVATE_CPP_FILES set (QGIO_PRIVATE_CPP_FILES
dgiovolumemanager.cpp source/dgiovolumemanager.cpp
dgiomountoperation.cpp source/dgiomountoperation.cpp
dgiomount.cpp source/dgiomount.cpp
dgiovolume.cpp source/dgiovolume.cpp
dgiofile.cpp source/dgiofile.cpp
dgiofileinfo.cpp source/dgiofileinfo.cpp
dgioutils.cpp source/dgioutils.cpp
dgiofileiterator.cpp source/dgiofileiterator.cpp
private/dgiohelper.cpp
) )
# Library # Library
add_library (gio-qt SHARED add_library (gio-qt SHARED
${QGIO_PUBLIC_HEADER_FILES} ${QGIO_PUBLIC_HEADER_FILES}
${QGIO_PRIVATE_HEADER_FILES}
${QGIO_PRIVATE_CPP_FILES} ${QGIO_PRIVATE_CPP_FILES}
) )
@ -40,8 +46,9 @@ set_target_properties(
target_include_directories(gio-qt target_include_directories(gio-qt
PRIVATE PRIVATE
${GIOMM_INCLUDE_DIRS} ${GIOMM_INCLUDE_DIRS}
${CMAKE_CURRENT_LIST_DIR}/private
PUBLIC PUBLIC
${CMAKE_CURRENT_LIST_DIR} ${CMAKE_CURRENT_LIST_DIR}/include
) )
target_link_libraries (gio-qt Qt5::Core ${GIOMM_LIBRARIES}) target_link_libraries (gio-qt Qt5::Core ${GIOMM_LIBRARIES})

View File

@ -0,0 +1,57 @@
#include "dgiohelper.h"
#include <glibmm/refptr.h>
#include <giomm/themedicon.h>
using namespace Gio;
namespace DGioPrivate {
QStringList getThemedIconNames(Glib::RefPtr<const Gio::Icon> icon)
{
QStringList iconNames;
Glib::RefPtr<const ThemedIcon> themedIcon = Glib::RefPtr<const ThemedIcon>::cast_dynamic(icon);
// due to https://gitlab.gnome.org/GNOME/glibmm/issues/50 we cannot use the glibmm way to get icon name.
// upstream already fixed the issue but we still need debian backport the patch so we can use it.
// see: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=932950
// if (G_IS_THEMED_ICON(themedIcon->gobj()) ) {
// qDebug() << "Yes and";
// }
// if (themedIcon) {
// qDebug() << "Yes";
// }
if (themedIcon) {
char **names;
char **iter;
names = NULL;
g_object_get(G_THEMED_ICON(themedIcon->gobj()), "names", &names, NULL);
for (iter = names; *iter; iter++) {
iconNames.append(QString(*iter));
}
g_strfreev(names);
return iconNames;
}
// return {QStringList::fromStdList(themedIcon->get_names())};
// char* name = 0;
// g_object_get(G_OBJECT(themedIcon->gobj()), "name", &name, NULL);
// return {QString(name)};
// if (themedIcon) {
// auto ustring_names = themedIcon->get_names();
//// for (const Glib::ustring &str : ustring_names) {
//// iconNames.append(QString::fromStdString(str.raw()));
//// }
// }
return iconNames;
}
}

View File

@ -0,0 +1,12 @@
#ifndef DGIOHELPER_H
#define DGIOHELPER_H
#include <giomm/icon.h>
#include <QStringList>
namespace DGioPrivate {
QStringList getThemedIconNames(Glib::RefPtr<const Gio::Icon> icon);
}
#endif // DGIOHELPER_H

View File

@ -11,6 +11,9 @@
#include <QDebug> #include <QDebug>
// private
#include "dgiohelper.h"
using namespace Gio; using namespace Gio;
class DGioMountPrivate class DGioMountPrivate
@ -150,71 +153,18 @@ QStringList DGioMount::themedIconNames() const
{ {
Q_D(const DGioMount); Q_D(const DGioMount);
QStringList iconNames;
Glib::RefPtr<const Icon> icon = d->getGmmMountInstance()->get_icon(); Glib::RefPtr<const Icon> icon = d->getGmmMountInstance()->get_icon();
Glib::RefPtr<const ThemedIcon> themedIcon = Glib::RefPtr<const ThemedIcon>::cast_dynamic(icon);
// if (G_IS_THEMED_ICON(themedIcon->gobj()) ) { return DGioPrivate::getThemedIconNames(icon);
// qDebug() << "Yes and";
// }
// if (themedIcon) {
// qDebug() << "Yes";
// }
if (themedIcon) {
QStringList iconNames;
char **names;
char **iter;
names = NULL;
g_object_get(G_THEMED_ICON(themedIcon->gobj()), "names", &names, NULL);
for (iter = names; *iter; iter++) {
iconNames.append(QString(*iter));
}
g_strfreev(names);
return iconNames;
}
// return {QStringList::fromStdList(themedIcon->get_names())};
// char* name = 0;
// g_object_get(G_OBJECT(themedIcon->gobj()), "name", &name, NULL);
// return {QString(name)};
// if (themedIcon) {
// auto ustring_names = themedIcon->get_names();
//// for (const Glib::ustring &str : ustring_names) {
//// iconNames.append(QString::fromStdString(str.raw()));
//// }
// }
return iconNames;
} }
QStringList DGioMount::themedSymbolicIconNames() const QStringList DGioMount::themedSymbolicIconNames() const
{ {
Q_D(const DGioMount); Q_D(const DGioMount);
QStringList iconNames;
Glib::RefPtr<const Icon> icon = d->getGmmMountInstance()->get_symbolic_icon(); Glib::RefPtr<const Icon> icon = d->getGmmMountInstance()->get_symbolic_icon();
Glib::RefPtr<const ThemedIcon> themedIcon = Glib::RefPtr<const ThemedIcon>::cast_dynamic(icon);
if (themedIcon) { return DGioPrivate::getThemedIconNames(icon);
QStringList iconNames;
char **names;
char **iter;
names = NULL;
g_object_get(G_THEMED_ICON(themedIcon->gobj()), "names", &names, NULL);
for (iter = names; *iter; iter++) {
iconNames.append(QString(*iter));
}
g_strfreev(names);
return iconNames;
}
return iconNames;
} }
void DGioMount::unmount(bool forceUnmount) void DGioMount::unmount(bool forceUnmount)