106{
108
109 std::unique_ptr<GFile, GObjectUnref<GFile>> const file(g_file_new_for_path(filename.c_str()));
110 std::unique_ptr<GFileInfo, GObjectUnref<GFileInfo>> const fileInfo(
111 g_file_query_info(file.get(), "standard::*", G_FILE_QUERY_INFO_NONE, nullptr, nullptr)
112 );
113 if(fileInfo)
114 {
115
116
118 std::unique_ptr<gchar> mime_type(
charpFromString(g_content_type_get_mime_type(g_file_info_get_content_type(fileInfo.get()))));
119 std::unique_ptr<gchar> display_name(
charpFromString(g_file_info_get_display_name(fileInfo.get())));
120
121 filterInfo.reset(new GtkFileFilterInfo());
122
123 filterInfo->filename = filenameCopy.release();
124 filterInfo->mime_type = mime_type.release();
125 filterInfo->display_name = display_name.release();
126 filterInfo->contains =
127 static_cast<GtkFileFilterFlags>(GTK_FILE_FILTER_FILENAME | GTK_FILE_FILTER_DISPLAY_NAME | GTK_FILE_FILTER_MIME_TYPE);
128 }
129 else
130 {
131 throw std::invalid_argument("No fileinfo for file " + filename);
132 }
133
134 return filterInfo;
135}
char * charpFromString(const std::string &s)
Definition loader.cc:87
std::unique_ptr< GtkFileFilterInfo, GtkFileFilterInfoDeleter > GtkFileFilterInfoPtr
Definition loader.cc:40