[gnome-commander] Add methods for getting file attributes directly through GFileInfo



commit ed5931fb05bc946f853077bb6b7ebbc1aabb9857
Author: Uwe Scholz <u scholz83 gmx de>
Date:   Wed Jan 5 14:27:06 2022 +0100

    Add methods for getting file attributes directly through GFileInfo

 src/gnome-cmd-file.cc |  8 ++++----
 src/utils.cc          | 38 ++++++++++++++++++++++++++++++++++----
 src/utils.h           |  8 ++++++++
 3 files changed, 46 insertions(+), 8 deletions(-)
---
diff --git a/src/gnome-cmd-file.cc b/src/gnome-cmd-file.cc
index 9cd8fb60..176cd611 100644
--- a/src/gnome-cmd-file.cc
+++ b/src/gnome-cmd-file.cc
@@ -567,25 +567,25 @@ GAppInfo *GnomeCmdFile::GetAppInfoForContentType()
 
 gboolean GnomeCmdFile::GetGfileAttributeBoolean(const char *attribute)
 {
-    return get_gfile_attribute_boolean(this->gFile, attribute);
+    return get_gfile_attribute_boolean(this->gFileInfo, attribute);
 }
 
 
 gchar *GnomeCmdFile::GetGfileAttributeString(const char *attribute)
 {
-    return get_gfile_attribute_string(this->gFile, attribute);
+    return get_gfile_attribute_string(this->gFileInfo, attribute);
 }
 
 
 guint32 GnomeCmdFile::GetGfileAttributeUInt32(const char *attribute)
 {
-    return get_gfile_attribute_uint32(this->gFile, attribute);
+    return get_gfile_attribute_uint32(this->gFileInfo, attribute);
 }
 
 
 guint64 GnomeCmdFile::GetGfileAttributeUInt64(const char *attribute)
 {
-    return get_gfile_attribute_uint64(this->gFile, attribute);
+    return get_gfile_attribute_uint64(this->gFileInfo, attribute);
 }
 
 
diff --git a/src/utils.cc b/src/utils.cc
index 56725805..4845458c 100644
--- a/src/utils.cc
+++ b/src/utils.cc
@@ -1093,6 +1093,14 @@ gchar *string_double_underscores (const gchar *string)
     return escaped;
 }
 
+guint32 get_gfile_attribute_uint32(GFileInfo *gFileInfo, const char *attribute)
+{
+    g_return_val_if_fail(gFileInfo != nullptr, 0);
+    g_return_val_if_fail(G_IS_FILE_INFO(gFileInfo), 0);
+
+    return g_file_info_get_attribute_uint32 (gFileInfo, attribute);
+}
+
 guint32 get_gfile_attribute_uint32(GFile *gFile, const char *attribute)
 {
     GError *error;
@@ -1114,13 +1122,20 @@ guint32 get_gfile_attribute_uint32(GFile *gFile, const char *attribute)
     }
     else
     {
-        gFileAttributeUInt32 = g_file_info_get_attribute_uint32 (gcmdFileInfo, attribute);
+        gFileAttributeUInt32 = get_gfile_attribute_uint32 (gcmdFileInfo, attribute);
         g_object_unref(gcmdFileInfo);
     }
 
     return gFileAttributeUInt32;
 }
 
+guint64 get_gfile_attribute_uint64(GFileInfo *gFileInfo, const char *attribute)
+{
+    g_return_val_if_fail(gFileInfo != nullptr, 0);
+    g_return_val_if_fail(G_IS_FILE_INFO(gFileInfo), 0);
+
+    return g_file_info_get_attribute_uint64 (gFileInfo, attribute);
+}
 
 guint64 get_gfile_attribute_uint64(GFile *gFile, const char *attribute)
 {
@@ -1143,7 +1158,7 @@ guint64 get_gfile_attribute_uint64(GFile *gFile, const char *attribute)
     }
     else
     {
-        gFileAttributeUInt64 = g_file_info_get_attribute_uint64 (gcmdFileInfo, attribute);
+        gFileAttributeUInt64 = get_gfile_attribute_uint64 (gcmdFileInfo, attribute);
         g_object_unref(gcmdFileInfo);
     }
 
@@ -1151,6 +1166,14 @@ guint64 get_gfile_attribute_uint64(GFile *gFile, const char *attribute)
 }
 
 
+gboolean get_gfile_attribute_boolean(GFileInfo *gFileInfo, const char *attribute)
+{
+    g_return_val_if_fail(gFileInfo != nullptr, FALSE);
+    g_return_val_if_fail(G_IS_FILE_INFO(gFileInfo), FALSE);
+
+    return g_file_info_get_attribute_boolean (gFileInfo, attribute);
+}
+
 gboolean get_gfile_attribute_boolean(GFile *gFile, const char *attribute)
 {
     GError *error;
@@ -1172,13 +1195,20 @@ gboolean get_gfile_attribute_boolean(GFile *gFile, const char *attribute)
     }
     else
     {
-        gFileAttributeBoolean = g_file_info_get_attribute_boolean (gcmdFileInfo, attribute);
+        gFileAttributeBoolean = get_gfile_attribute_boolean (gcmdFileInfo, attribute);
         g_object_unref(gcmdFileInfo);
     }
 
     return gFileAttributeBoolean;
 }
 
+gchar *get_gfile_attribute_string(GFileInfo *gFileInfo, const char *attribute)
+{
+    g_return_val_if_fail(gFileInfo != nullptr, nullptr);
+    g_return_val_if_fail(G_IS_FILE_INFO(gFileInfo), nullptr);
+
+    return g_strdup(g_file_info_get_attribute_string (gFileInfo, attribute));
+}
 
 gchar *get_gfile_attribute_string(GFile *gFile, const char *attribute)
 {
@@ -1199,7 +1229,7 @@ gchar *get_gfile_attribute_string(GFile *gFile, const char *attribute)
         return nullptr;
     }
 
-    auto gFileAttributeString = g_strdup(g_file_info_get_attribute_string (gcmdFileInfo, attribute));
+    auto gFileAttributeString = get_gfile_attribute_string (gcmdFileInfo, attribute);
     g_object_unref(gcmdFileInfo);
 
     return gFileAttributeString;
diff --git a/src/utils.h b/src/utils.h
index a35bf425..2f262181 100644
--- a/src/utils.h
+++ b/src/utils.h
@@ -403,10 +403,18 @@ gchar* get_package_config_dir();
 
 gchar *string_double_underscores (const gchar *string);
 
+gboolean get_gfile_attribute_boolean(GFileInfo *gFileInfo, const char *attribute);
+
 gboolean get_gfile_attribute_boolean(GFile *gFile, const char *attribute);
 
+guint32 get_gfile_attribute_uint32(GFileInfo *gFileInfo, const char *attribute);
+
 guint32 get_gfile_attribute_uint32(GFile *gFile, const char *attribute);
 
+guint64 get_gfile_attribute_uint64(GFileInfo *gFileInfo, const char *attribute);
+
 guint64 get_gfile_attribute_uint64(GFile *gFile, const char *attribute);
 
+gchar *get_gfile_attribute_string(GFileInfo *gFileInfo, const char *attribute);
+
 gchar *get_gfile_attribute_string(GFile *gFile, const char *attribute);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]