source-dialog: Avoid known file extensions in calendar name suggestions
This commit is contained in:
committed by
Georges Basile Stavracas Neto
parent
4b3351d549
commit
8d55c7ea04
@@ -257,6 +257,14 @@ GActionEntry actions[] = {
|
|||||||
{"web", on_web_activated, NULL, NULL, NULL}
|
{"web", on_web_activated, NULL, NULL, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const gchar*
|
||||||
|
import_file_extensions[] = {
|
||||||
|
".ical",
|
||||||
|
".ics",
|
||||||
|
".ifb",
|
||||||
|
".icalendar",
|
||||||
|
".vcs"
|
||||||
|
};
|
||||||
|
|
||||||
static void
|
static void
|
||||||
add_button_clicked (GtkWidget *button,
|
add_button_clicked (GtkWidget *button,
|
||||||
@@ -972,11 +980,47 @@ stack_visible_child_name_changed (GObject *object,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* calendar_path_to_name_suggestion:
|
||||||
|
* @file: a calendar file reference.
|
||||||
|
*
|
||||||
|
* Returns: (transfer full): A calendar name.
|
||||||
|
*/
|
||||||
|
static gchar*
|
||||||
|
calendar_path_to_name_suggestion (GFile *file)
|
||||||
|
{
|
||||||
|
g_autofree gchar *unencoded_basename = NULL;
|
||||||
|
g_autofree gchar *basename = NULL;
|
||||||
|
gchar *ext;
|
||||||
|
guint i;
|
||||||
|
|
||||||
|
g_return_val_if_fail (G_IS_FILE (file), NULL);
|
||||||
|
|
||||||
|
unencoded_basename = g_file_get_basename (file);
|
||||||
|
basename = g_filename_display_name (unencoded_basename);
|
||||||
|
|
||||||
|
ext = strrchr (basename, '.');
|
||||||
|
|
||||||
|
if (!ext)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
for (i = 0; i < G_N_ELEMENTS(import_file_extensions); i++)
|
||||||
|
{
|
||||||
|
if (g_ascii_strcasecmp (import_file_extensions[i], ext) == 0)
|
||||||
|
{
|
||||||
|
*ext = '\0';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
g_strdelimit (basename, "-_", ' ');
|
||||||
|
|
||||||
|
return g_steal_pointer (&basename);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
calendar_file_selected (GtkFileChooser *button,
|
calendar_file_selected (GtkFileChooser *button,
|
||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
g_autofree gchar *unencoded_display_name = NULL;
|
|
||||||
g_autofree gchar *display_name = NULL;
|
g_autofree gchar *display_name = NULL;
|
||||||
g_autoptr (ESource) source = NULL;
|
g_autoptr (ESource) source = NULL;
|
||||||
g_autoptr (GFile) file = NULL;
|
g_autoptr (GFile) file = NULL;
|
||||||
@@ -1003,8 +1047,7 @@ calendar_file_selected (GtkFileChooser *button,
|
|||||||
e_source_local_set_custom_file (E_SOURCE_LOCAL (ext), file);
|
e_source_local_set_custom_file (E_SOURCE_LOCAL (ext), file);
|
||||||
|
|
||||||
/* update the source properties */
|
/* update the source properties */
|
||||||
unencoded_display_name = g_file_get_basename (file);
|
display_name = calendar_path_to_name_suggestion (file);
|
||||||
display_name = g_filename_display_name (unencoded_display_name);
|
|
||||||
e_source_set_display_name (source, display_name);
|
e_source_set_display_name (source, display_name);
|
||||||
|
|
||||||
/* Jump to the edit page */
|
/* Jump to the edit page */
|
||||||
|
|||||||
Reference in New Issue
Block a user