GFileInfo *item;
gboolean selected;
guint position;
+
+ gboolean show_time;
};
struct _GtkFileChooserCellClass
PROP_POSITION = 1,
PROP_SELECTED,
PROP_ITEM,
+ PROP_SHOW_TIME,
};
#define ICON_SIZE 16
return provider;
}
+static void
+gtk_file_chooser_cell_realize (GtkWidget *widget)
+{
+ GtkFileChooserCell *self = GTK_FILE_CHOOSER_CELL (widget);
+ GtkFileChooserWidget *impl;
+
+ impl = GTK_FILE_CHOOSER_WIDGET (gtk_widget_get_ancestor (GTK_WIDGET (self),
+ GTK_TYPE_FILE_CHOOSER_WIDGET));
+
+ g_object_bind_property (impl, "show-time", self, "show-time", G_BINDING_SYNC_CREATE);
+}
+
static void
gtk_file_chooser_cell_init (GtkFileChooserCell *self)
{
drag_source = gtk_drag_source_new ();
gtk_widget_add_controller (GTK_WIDGET (self), GTK_EVENT_CONTROLLER (drag_source));
g_signal_connect (drag_source, "prepare", G_CALLBACK (drag_prepare_cb), self);
+
+ g_signal_connect (self, "realize", G_CALLBACK (gtk_file_chooser_cell_realize), NULL);
}
static void
self->item = g_value_get_object (value);
break;
+ case PROP_SHOW_TIME:
+ self->show_time = g_value_get_boolean (value);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
g_value_set_object (value, self->item);
break;
+ case PROP_SHOW_TIME:
+ g_value_set_boolean (value, self->show_time);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
G_TYPE_FILE_INFO,
GTK_PARAM_READWRITE));
+ g_object_class_install_property (object_class, PROP_SHOW_TIME,
+ g_param_spec_boolean ("show-time", NULL, NULL,
+ FALSE,
+ GTK_PARAM_READWRITE));
+
gtk_widget_class_set_css_name (widget_class, I_("filelistcell"));
gtk_widget_class_set_layout_manager_type (widget_class, GTK_TYPE_BIN_LAYOUT);
}
enum {
PROP_SEARCH_MODE = 1,
- PROP_SUBTITLE
+ PROP_SUBTITLE,
+ PROP_SHOW_TIME,
};
typedef enum {
g_simple_action_set_state (action, state);
impl->show_time = g_variant_get_boolean (state);
+ g_object_notify (G_OBJECT (impl), "show-time");
}
/* Shows an error dialog about not being able to select a dragged file */
return NULL;
}
-static gboolean
-column_view_get_time_visible (GtkListItem *item)
-{
- GtkFileChooserWidget *impl;
-
- impl = GTK_FILE_CHOOSER_WIDGET (gtk_widget_get_ancestor (gtk_list_item_get_child (item),
- GTK_TYPE_FILE_CHOOSER_WIDGET));
- if (!impl)
- return FALSE;
-
- return impl->show_time;
-}
-
static char *
column_view_get_tooltip_text (GtkListItem *list_item,
GFileInfo *info)
g_value_take_string (value, gtk_file_chooser_widget_get_subtitle (impl));
break;
+ case PROP_SHOW_TIME:
+ g_value_set_boolean (value, impl->show_time);
+ break;
+
case GTK_FILE_CHOOSER_PROP_ACTION:
g_value_set_enum (value, impl->action);
break;
"",
GTK_PARAM_READABLE));
+ g_object_class_install_property (gobject_class, PROP_SHOW_TIME,
+ g_param_spec_boolean ("show-time", NULL, NULL,
+ FALSE,
+ GTK_PARAM_READABLE));
+
_gtk_file_chooser_install_properties (gobject_class);
/* Bind class to template */
gtk_widget_class_bind_template_callback (widget_class, column_view_get_file_type);
gtk_widget_class_bind_template_callback (widget_class, column_view_get_location);
gtk_widget_class_bind_template_callback (widget_class, column_view_get_size);
- gtk_widget_class_bind_template_callback (widget_class, column_view_get_time_visible);
gtk_widget_class_bind_template_callback (widget_class, column_view_get_tooltip_text);
gtk_widget_class_bind_template_callback (widget_class, column_view_row_activated_cb);
<interface>
<template class="GtkListItem">
<property name="child">
- <object class="GtkFileChooserCell">
+ <object class="GtkFileChooserCell" id="file_chooser_cell">
<binding name="position">
<lookup name="position">GtkListItem</lookup>
</binding>
</child>
<child>
<object class="GtkLabel">
- <binding name="visible">
- <closure type="gboolean" function="column_view_get_time_visible" />
- </binding>
+ <property name="visible" bind-source="file_chooser_cell" bind-property="show-time" bind-flags="sync-create"/>
<binding name="label">
<closure type="gchararray" function="column_view_get_file_time">
<lookup name="item">GtkListItem</lookup>