1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
|
/*
* Copyright (C) 2022 Purism SPC
*
* SPDX-License-Identifier: GPL-3.0-or-later
*
* Author: Guido Günther <agx@sigxcpu.org>
*/
#include "phosh-config.h"
#include "ticket-row.h"
#include <glib/gi18n.h>
#include <handy.h>
enum {
PROP_0,
PROP_TICKET,
PROP_LAST_PROP,
};
static GParamSpec *props[PROP_LAST_PROP];
struct _PhoshTicketRow {
HdyActionRow parent;
PhoshTicket *ticket;
};
G_DEFINE_TYPE (PhoshTicketRow, phosh_ticket_row, HDY_TYPE_ACTION_ROW)
static void
phosh_ticket_row_set_property (GObject *object,
guint property_id,
const GValue *value,
GParamSpec *pspec)
{
PhoshTicketRow *self = PHOSH_TICKET_ROW (object);
switch (property_id) {
case PROP_TICKET:
self->ticket = g_value_dup_object (value);
hdy_preferences_row_set_title (HDY_PREFERENCES_ROW (self),
phosh_ticket_get_display_name (self->ticket));
/* TODO: by document type */
hdy_action_row_set_icon_name (HDY_ACTION_ROW (self), "x-office-document-symbolic");
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
}
}
static void
phosh_ticket_row_get_property (GObject *object,
guint property_id,
GValue *value,
GParamSpec *pspec)
{
PhoshTicketRow *self = PHOSH_TICKET_ROW (object);
switch (property_id) {
case PROP_TICKET:
g_value_set_object (value, self->ticket);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
}
}
static void
phosh_ticket_row_finalize (GObject *object)
{
PhoshTicketRow *self = PHOSH_TICKET_ROW (object);
g_clear_object (&self->ticket);
G_OBJECT_CLASS (phosh_ticket_row_parent_class)->finalize (object);
}
static void
phosh_ticket_row_class_init (PhoshTicketRowClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
object_class->get_property = phosh_ticket_row_get_property;
object_class->set_property = phosh_ticket_row_set_property;
object_class->finalize = phosh_ticket_row_finalize;
props[PROP_TICKET] =
g_param_spec_object ("ticket", "", "",
PHOSH_TYPE_TICKET,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
g_object_class_install_properties (object_class, PROP_LAST_PROP, props);
gtk_widget_class_set_css_name (widget_class, "phosh-ticket-row");
}
static void
phosh_ticket_row_init (PhoshTicketRow *self)
{
}
GtkWidget *
phosh_ticket_row_new (PhoshTicket *ticket)
{
return GTK_WIDGET (g_object_new (PHOSH_TYPE_TICKET_ROW, "ticket", ticket, NULL));
}
|