Пример #1
0
static void
list_header_func (GtkListBoxRow *row,
		  GtkListBoxRow *before,
		  gpointer user_data)
{
	GsApp *app = gs_app_row_get_app (GS_APP_ROW (row));
	GsUpdateListSection before_section = GS_UPDATE_LIST_SECTION_LAST;
	GsUpdateListSection section;
	GsUpdateList *update_list = GS_UPDATE_LIST (user_data);
	GtkWidget *header;

	/* first entry */
	gtk_list_box_row_set_header (row, NULL);
	if (before != NULL) {
		GsApp *before_app = gs_app_row_get_app (GS_APP_ROW (before));
		before_section = gs_update_list_get_app_section (before_app);
	}

	/* section changed or forced to have headers */
	section = gs_update_list_get_app_section (app);
	if (gs_update_list_has_headers (update_list) &&
	    before_section != section) {
		header = gs_update_list_get_section_header (update_list, section);
	} else {
		header = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);
	}
	gtk_list_box_row_set_header (row, header);
}
Пример #2
0
static void
list_header_func (GtkListBoxRow *row,
		  GtkListBoxRow *before,
		  gpointer user_data)
{
	GtkStyleContext *context;
	GtkWidget *header;

	/* first entry */
	gtk_list_box_row_set_header (row, NULL);
	if (before == NULL)
		return;

	/* desktop -> addons */
	if (!is_addon_id_kind (gs_app_row_get_app (GS_APP_ROW (before))) &&
	    is_addon_id_kind (gs_app_row_get_app (GS_APP_ROW (row)))) {
		/* TRANSLATORS: This is the header dividing the normal
		 * applications and the addons */
		header = gtk_label_new (_("Add-ons"));
		g_object_set (header,
			      "xalign", 0.0,
			      NULL);
		context = gtk_widget_get_style_context (header);
		gtk_style_context_add_class (context, "header-label");
	} else {
		header = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);
	}
	gtk_list_box_row_set_header (row, header);
}
static void
place_header_func (GtkListBoxRow *row,
                   GtkListBoxRow *before,
                   gpointer user_data)
{
  gboolean need_separator;
  GtkWidget *current;
  Place *place, *place_before;
  gchar *text;
  GtkWidget *w;

  need_separator = FALSE;
  place = g_object_get_data (G_OBJECT (row), "place");

  if (before != NULL)
    {
      place_before = g_object_get_data (G_OBJECT (before), "place");
      if (place_before->place_type < place->place_type)
        /* use a separator before the first item of a new type */
        need_separator = TRUE;
    }
  else
    {
      /* always put a separator before the first item */
      need_separator = TRUE;
    }

  current = gtk_list_box_row_get_header (row);
  if (need_separator && current == NULL)
    {
      text = g_strdup_printf ("<b>%s</b>", get_heading_name (place->place_type));
      w = gtk_label_new (NULL);
      g_object_set (w,
                    "margin-top", 6,
                    "margin-end", 10,
                    "margin-bottom", 6,
                    "margin-start", 10,
                    NULL);
      gtk_label_set_markup (GTK_LABEL (w), text);
      gtk_widget_set_halign (w, GTK_ALIGN_START);
      gtk_style_context_add_class (gtk_widget_get_style_context (w), "dim-label");

      gtk_list_box_row_set_header (row, w);

      g_free (text);
    }
  else if (!need_separator && current != NULL)
    {
      gtk_list_box_row_set_header (row, NULL);
    }
}
Пример #4
0
static void
header_func (GtkListBoxRow *row,
             GtkListBoxRow *before,
             gpointer       user_data)
{
  GtkWidget *header = NULL;

  if (!before)
    {
      header = create_bold_label_for_task_row (row);
    }
  else
    {
      GtdTask *before_task;
      GtdTask *task;

      before_task = g_object_get_data (G_OBJECT (before), "task");
      task = g_object_get_data (G_OBJECT (row), "task");

      if (gtd_task_get_list (task) != gtd_task_get_list (before_task))
        header = create_bold_label_for_task_row (row);
    }

  gtk_list_box_row_set_header (row, header);
}
Пример #5
0
static void
update_title_header (GtkListBoxRow *row,
                     GtkListBoxRow *before,
                     gpointer       data)
{
  GtkWidget *header;
  gchar *title;

  header = gtk_list_box_row_get_header (row);
  title = (gchar *)g_object_get_data (G_OBJECT (row), "title");
  if (!header && title)
    {
      title = g_strdup_printf ("<b>%s</b>", title);

      header = gtk_label_new (title);
      gtk_label_set_use_markup (GTK_LABEL (header), TRUE);
      gtk_widget_set_halign (header, GTK_ALIGN_START);
      gtk_widget_set_margin_top (header, 12);
      gtk_widget_set_margin_start (header, 6);
      gtk_widget_set_margin_end (header, 6);
      gtk_widget_set_margin_bottom (header, 6);
      gtk_widget_show (header);

      gtk_list_box_row_set_header (row, header);

      g_free (title);
    }
}
static void
update_header_func_filter (GtkListBoxRow *row,
                           GtkListBoxRow *row_before,
                           gpointer       user_data)
{
  GtkWidget *child;
  GtkWidget *before;

  LocaleInfo *child_info = NULL;
  LocaleInfo *before_info = NULL;

  GtkWidget *header;

  child = gtk_bin_get_child (GTK_BIN (row));
  before = gtk_bin_get_child (GTK_BIN (row_before));

  if (child)
    child_info = g_object_get_data (G_OBJECT (child), "locale-info");

  if (before)
    before_info = g_object_get_data (G_OBJECT (before), "locale-info");

  if (!child_info || !before_info)
    return;

  if (child_info == before_info)
    header = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);
  else
    header = locale_separator_widget_new (child_info->name);

  gtk_widget_show_all (header);
  gtk_list_box_row_set_header (row, header);
}
Пример #7
0
static void
update_header (GtkListBoxRow *row,
    GtkListBoxRow *before,
    gpointer user_data)
{
  if (before == NULL)
    {
      /* No separator before the first row */
      gtk_list_box_row_set_header (row, NULL);
      return;
    }

  if (gtk_list_box_row_get_header (row) != NULL)
    return;

  gtk_list_box_row_set_header (row,
      gtk_separator_new (GTK_ORIENTATION_HORIZONTAL));
}
Пример #8
0
void
photos_utils_list_box_header_func (GtkListBoxRow *row, GtkListBoxRow *before, gpointer user_data)
{
  GtkWidget *header;

  if (before == NULL)
    {
      gtk_list_box_row_set_header (row, NULL);
      return;
    }

  header = gtk_list_box_row_get_header (row);
  if (header == NULL)
    {
      header = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);
      gtk_widget_show (header);
      gtk_list_box_row_set_header (row, header);
    }
}
Пример #9
0
static void
key_list_header_func (GtkListBoxRow *row, GtkListBoxRow *prev, gpointer unused)
{
    if (prev == NULL)
        return;

    if (gtk_list_box_row_get_header (row) == NULL) {
        g_autoptr(GtkWidget) separator = NULL;

        separator = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);
        gtk_list_box_row_set_header (row, g_steal_pointer (&separator));
    }
}
Пример #10
0
static void
update_header_func (GtkListBoxRow *child,
                    GtkListBoxRow *before,
                    gpointer       user_data)
{
  GtkWidget *header;

  if (before == NULL)
    return;

  header = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);
  gtk_list_box_row_set_header (child, header);
  gtk_widget_show (header);
}
Пример #11
0
static void
update_header (GtkListBoxRow *row,
               GtkListBoxRow *before,
               gpointer       data)
{
  if (before != NULL &&
      gtk_list_box_row_get_header (row) == NULL)
    {
      GtkWidget *separator;

      separator = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);
      gtk_widget_show (separator);
      gtk_list_box_row_set_header (row, separator);
    }
}
static void
photos_dlna_renderers_separator_cb (GtkListBoxRow *row,
                                    GtkListBoxRow *before,
                                    gpointer user_data)
{
  GtkWidget *separator;

  separator = gtk_list_box_row_get_header (row);
  if (separator == NULL && before != NULL)
    {
      separator = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);
      gtk_list_box_row_set_header (row, separator);
      gtk_widget_show (separator);
    }
}
Пример #13
0
static void
add_action_separators (GtkListBoxRow *row, GtkListBoxRow *before, gpointer user_data)
{
	GtkWidget *current;

	if (before == NULL)
		return;

	current = gtk_list_box_row_get_header (row);
	if (current == NULL)
	{
		current = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);
		gtk_widget_show (current);
		gtk_list_box_row_set_header (row, current);
	}
}
Пример #14
0
static void
update_sidebar_headers (GtkListBoxRow *row,
                        GtkListBoxRow *before,
                        gpointer user_data)
{
  GcalYearViewPrivate *priv;
  GtkWidget *row_child, *before_child = NULL, *row_header = NULL;
  const icaltimetype *row_date, *before_date = NULL;
  icaltimetype date;
  gint row_shift, before_shift =-1;

  priv = GCAL_YEAR_VIEW (user_data)->priv;
  row_child = gtk_bin_get_child (GTK_BIN (row));
  if (row_child == NULL)
    return;
  row_date = gcal_event_widget_peek_start_date (GCAL_EVENT_WIDGET (row_child));
  row_shift = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (row_child), "shift"));
  if (before != NULL)
    {
      before_child = gtk_bin_get_child (GTK_BIN (before));
      before_date = gcal_event_widget_peek_start_date (GCAL_EVENT_WIDGET (before_child));
      before_shift = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (before_child), "shift"));
    }

  if (before_shift == -1 || before_shift != row_shift)
    {
      GtkWidget *label;
      gchar *label_str;

      row_header = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
      date = *(priv->start_selected_date);
      icaltime_adjust (&date, row_shift, 0, 0, 0);

      if (icaltime_compare_date (&date, priv->current_date) == 0)
        label_str = g_strdup (_("Today"));
      else
        label_str = g_strdup_printf ("%s %d", gcal_get_month_name (date.month  - 1), date.day);

      label = gtk_label_new (label_str);
      gtk_style_context_add_class (gtk_widget_get_style_context (label), "sidebar-header");
      g_object_set (label, "margin", 6, "halign", GTK_ALIGN_START, NULL);
      g_free (label_str);

      gtk_container_add (GTK_CONTAINER (row_header), label);
    }

  if (!gcal_event_widget_is_multiday (GCAL_EVENT_WIDGET (row_child)) &&
      !gcal_event_widget_get_all_day (GCAL_EVENT_WIDGET (row_child)) &&
      (before_date == NULL || before_date->hour != row_date->hour))
    {
      gchar *time;
      GtkWidget *label;

      if (priv->use_24h_format)
        time = g_strdup_printf ("%.2d:00", row_date->hour);
      else
        time = g_strdup_printf ("%.2d:00 %s", row_date->hour % 12, row_date->hour < 12 ? "AM" : "PM");

      label = gtk_label_new (time);
      gtk_style_context_add_class (gtk_widget_get_style_context (label), GTK_STYLE_CLASS_DIM_LABEL);
      g_object_set (label, "margin", 6, "halign", GTK_ALIGN_START, NULL);

      if (row_header == NULL)
        row_header = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);

      gtk_container_add (GTK_CONTAINER (row_header), label);
      gtk_container_add (GTK_CONTAINER (row_header), gtk_separator_new (GTK_ORIENTATION_HORIZONTAL));

      g_free (time);
    }

  if (row_header != NULL)
    gtk_widget_show_all (row_header);
  gtk_list_box_row_set_header (row, row_header);
}