/* conversation_item_skeleton.c generated by valac 0.56.19, the Vala compiler
 * generated from conversation_item_skeleton.vala, do not modify */

#include <glib-object.h>
#include "libdino.h"
#include <gtk/gtk.h>
#include <gee.h>
#include <glib.h>
#include "xmpp-vala.h"
#include <adwaita.h>
#include <gio/gio.h>
#include <stdlib.h>
#include <string.h>
#include "dino_i18n.h"

#if !defined(VALA_STRICT_C)
#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ >= 14)
#pragma GCC diagnostic warning "-Wincompatible-pointer-types"
#elif defined(__clang__) && (__clang_major__ >= 16)
#pragma clang diagnostic ignored "-Wincompatible-function-pointer-types"
#pragma clang diagnostic ignored "-Wincompatible-pointer-types"
#endif
#endif
#if !defined(VALA_EXTERN)
#if defined(_MSC_VER)
#define VALA_EXTERN __declspec(dllexport) extern
#elif __GNUC__ >= 4
#define VALA_EXTERN __attribute__((visibility("default"))) extern
#else
#define VALA_EXTERN extern
#endif
#endif

#define DINO_UI_CONVERSATION_SUMMARY_TYPE_CONVERSATION_ITEM_SKELETON (dino_ui_conversation_summary_conversation_item_skeleton_get_type ())
#define DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DINO_UI_CONVERSATION_SUMMARY_TYPE_CONVERSATION_ITEM_SKELETON, DinoUiConversationSummaryConversationItemSkeleton))
#define DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DINO_UI_CONVERSATION_SUMMARY_TYPE_CONVERSATION_ITEM_SKELETON, DinoUiConversationSummaryConversationItemSkeletonClass))
#define DINO_UI_CONVERSATION_SUMMARY_IS_CONVERSATION_ITEM_SKELETON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DINO_UI_CONVERSATION_SUMMARY_TYPE_CONVERSATION_ITEM_SKELETON))
#define DINO_UI_CONVERSATION_SUMMARY_IS_CONVERSATION_ITEM_SKELETON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DINO_UI_CONVERSATION_SUMMARY_TYPE_CONVERSATION_ITEM_SKELETON))
#define DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DINO_UI_CONVERSATION_SUMMARY_TYPE_CONVERSATION_ITEM_SKELETON, DinoUiConversationSummaryConversationItemSkeletonClass))

typedef struct _DinoUiConversationSummaryConversationItemSkeleton DinoUiConversationSummaryConversationItemSkeleton;
typedef struct _DinoUiConversationSummaryConversationItemSkeletonClass DinoUiConversationSummaryConversationItemSkeletonClass;
typedef struct _DinoUiConversationSummaryConversationItemSkeletonPrivate DinoUiConversationSummaryConversationItemSkeletonPrivate;

#define DINO_UI_CONVERSATION_SUMMARY_TYPE_CONTENT_META_ITEM (dino_ui_conversation_summary_content_meta_item_get_type ())
#define DINO_UI_CONVERSATION_SUMMARY_CONTENT_META_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DINO_UI_CONVERSATION_SUMMARY_TYPE_CONTENT_META_ITEM, DinoUiConversationSummaryContentMetaItem))
#define DINO_UI_CONVERSATION_SUMMARY_CONTENT_META_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DINO_UI_CONVERSATION_SUMMARY_TYPE_CONTENT_META_ITEM, DinoUiConversationSummaryContentMetaItemClass))
#define DINO_UI_CONVERSATION_SUMMARY_IS_CONTENT_META_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DINO_UI_CONVERSATION_SUMMARY_TYPE_CONTENT_META_ITEM))
#define DINO_UI_CONVERSATION_SUMMARY_IS_CONTENT_META_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DINO_UI_CONVERSATION_SUMMARY_TYPE_CONTENT_META_ITEM))
#define DINO_UI_CONVERSATION_SUMMARY_CONTENT_META_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DINO_UI_CONVERSATION_SUMMARY_TYPE_CONTENT_META_ITEM, DinoUiConversationSummaryContentMetaItemClass))

typedef struct _DinoUiConversationSummaryContentMetaItem DinoUiConversationSummaryContentMetaItem;
typedef struct _DinoUiConversationSummaryContentMetaItemClass DinoUiConversationSummaryContentMetaItemClass;

#define DINO_UI_TYPE_AVATAR_PICTURE (dino_ui_avatar_picture_get_type ())
#define DINO_UI_AVATAR_PICTURE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DINO_UI_TYPE_AVATAR_PICTURE, DinoUiAvatarPicture))
#define DINO_UI_AVATAR_PICTURE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DINO_UI_TYPE_AVATAR_PICTURE, DinoUiAvatarPictureClass))
#define DINO_UI_IS_AVATAR_PICTURE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DINO_UI_TYPE_AVATAR_PICTURE))
#define DINO_UI_IS_AVATAR_PICTURE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DINO_UI_TYPE_AVATAR_PICTURE))
#define DINO_UI_AVATAR_PICTURE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DINO_UI_TYPE_AVATAR_PICTURE, DinoUiAvatarPictureClass))

typedef struct _DinoUiAvatarPicture DinoUiAvatarPicture;
typedef struct _DinoUiAvatarPictureClass DinoUiAvatarPictureClass;

#define DINO_UI_CONVERSATION_SUMMARY_TYPE_REACTIONS_CONTROLLER (dino_ui_conversation_summary_reactions_controller_get_type ())
#define DINO_UI_CONVERSATION_SUMMARY_REACTIONS_CONTROLLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DINO_UI_CONVERSATION_SUMMARY_TYPE_REACTIONS_CONTROLLER, DinoUiConversationSummaryReactionsController))
#define DINO_UI_CONVERSATION_SUMMARY_REACTIONS_CONTROLLER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DINO_UI_CONVERSATION_SUMMARY_TYPE_REACTIONS_CONTROLLER, DinoUiConversationSummaryReactionsControllerClass))
#define DINO_UI_CONVERSATION_SUMMARY_IS_REACTIONS_CONTROLLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DINO_UI_CONVERSATION_SUMMARY_TYPE_REACTIONS_CONTROLLER))
#define DINO_UI_CONVERSATION_SUMMARY_IS_REACTIONS_CONTROLLER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DINO_UI_CONVERSATION_SUMMARY_TYPE_REACTIONS_CONTROLLER))
#define DINO_UI_CONVERSATION_SUMMARY_REACTIONS_CONTROLLER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DINO_UI_CONVERSATION_SUMMARY_TYPE_REACTIONS_CONTROLLER, DinoUiConversationSummaryReactionsControllerClass))

typedef struct _DinoUiConversationSummaryReactionsController DinoUiConversationSummaryReactionsController;
typedef struct _DinoUiConversationSummaryReactionsControllerClass DinoUiConversationSummaryReactionsControllerClass;
enum  {
	DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_0_PROPERTY,
	DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_MAIN_GRID_PROPERTY,
	DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_NAME_LABEL_PROPERTY,
	DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_TIME_LABEL_PROPERTY,
	DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_AVATAR_PICTURE_PROPERTY,
	DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_ENCRYPTION_IMAGE_PROPERTY,
	DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_RECEIVED_IMAGE_PROPERTY,
	DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_SHOW_SKELETON_PROPERTY,
	DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_CONVERSATION_PROPERTY,
	DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_ITEM_IN_EDIT_MODE_PROPERTY,
	DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_ITEM_MARK_PROPERTY,
	DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_NUM_PROPERTIES
};
static GParamSpec* dino_ui_conversation_summary_conversation_item_skeleton_properties[DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_NUM_PROPERTIES];
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))

#define DINO_UI_VIEW_MODEL_TYPE_AVATAR_PICTURE_MODEL (dino_ui_view_model_avatar_picture_model_get_type ())
#define DINO_UI_VIEW_MODEL_AVATAR_PICTURE_MODEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DINO_UI_VIEW_MODEL_TYPE_AVATAR_PICTURE_MODEL, DinoUiViewModelAvatarPictureModel))
#define DINO_UI_VIEW_MODEL_AVATAR_PICTURE_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DINO_UI_VIEW_MODEL_TYPE_AVATAR_PICTURE_MODEL, DinoUiViewModelAvatarPictureModelClass))
#define DINO_UI_VIEW_MODEL_IS_AVATAR_PICTURE_MODEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DINO_UI_VIEW_MODEL_TYPE_AVATAR_PICTURE_MODEL))
#define DINO_UI_VIEW_MODEL_IS_AVATAR_PICTURE_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DINO_UI_VIEW_MODEL_TYPE_AVATAR_PICTURE_MODEL))
#define DINO_UI_VIEW_MODEL_AVATAR_PICTURE_MODEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DINO_UI_VIEW_MODEL_TYPE_AVATAR_PICTURE_MODEL, DinoUiViewModelAvatarPictureModelClass))

typedef struct _DinoUiViewModelAvatarPictureModel DinoUiViewModelAvatarPictureModel;
typedef struct _DinoUiViewModelAvatarPictureModelClass DinoUiViewModelAvatarPictureModelClass;

#define DINO_UI_VIEW_MODEL_TYPE_COMPAT_AVATAR_PICTURE_MODEL (dino_ui_view_model_compat_avatar_picture_model_get_type ())
#define DINO_UI_VIEW_MODEL_COMPAT_AVATAR_PICTURE_MODEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DINO_UI_VIEW_MODEL_TYPE_COMPAT_AVATAR_PICTURE_MODEL, DinoUiViewModelCompatAvatarPictureModel))
#define DINO_UI_VIEW_MODEL_COMPAT_AVATAR_PICTURE_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DINO_UI_VIEW_MODEL_TYPE_COMPAT_AVATAR_PICTURE_MODEL, DinoUiViewModelCompatAvatarPictureModelClass))
#define DINO_UI_VIEW_MODEL_IS_COMPAT_AVATAR_PICTURE_MODEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DINO_UI_VIEW_MODEL_TYPE_COMPAT_AVATAR_PICTURE_MODEL))
#define DINO_UI_VIEW_MODEL_IS_COMPAT_AVATAR_PICTURE_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DINO_UI_VIEW_MODEL_TYPE_COMPAT_AVATAR_PICTURE_MODEL))
#define DINO_UI_VIEW_MODEL_COMPAT_AVATAR_PICTURE_MODEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DINO_UI_VIEW_MODEL_TYPE_COMPAT_AVATAR_PICTURE_MODEL, DinoUiViewModelCompatAvatarPictureModelClass))

typedef struct _DinoUiViewModelCompatAvatarPictureModel DinoUiViewModelCompatAvatarPictureModel;
typedef struct _DinoUiViewModelCompatAvatarPictureModelClass DinoUiViewModelCompatAvatarPictureModelClass;
typedef struct _DinoUiConversationSummaryContentMetaItemPrivate DinoUiConversationSummaryContentMetaItemPrivate;

#define DINO_UI_TYPE_APPLICATION (dino_ui_application_get_type ())
#define DINO_UI_APPLICATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DINO_UI_TYPE_APPLICATION, DinoUiApplication))
#define DINO_UI_APPLICATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DINO_UI_TYPE_APPLICATION, DinoUiApplicationClass))
#define DINO_UI_IS_APPLICATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DINO_UI_TYPE_APPLICATION))
#define DINO_UI_IS_APPLICATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DINO_UI_TYPE_APPLICATION))
#define DINO_UI_APPLICATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DINO_UI_TYPE_APPLICATION, DinoUiApplicationClass))

typedef struct _DinoUiApplication DinoUiApplication;
typedef struct _DinoUiApplicationClass DinoUiApplicationClass;
#define _g_free0(var) (var = (g_free (var), NULL))
#define _g_date_time_unref0(var) ((var == NULL) ? NULL : (var = (g_date_time_unref (var), NULL)))
#define _g_regex_unref0(var) ((var == NULL) ? NULL : (var = (g_regex_unref (var), NULL)))

struct _DinoUiConversationSummaryConversationItemSkeleton {
	GObject parent_instance;
	DinoUiConversationSummaryConversationItemSkeletonPrivate * priv;
	DinoStreamInteractor* stream_interactor;
	DinoPluginsMetaConversationItem* item;
	DinoUiConversationSummaryContentMetaItem* content_meta_item;
	GtkWidget* widget;
};

struct _DinoUiConversationSummaryConversationItemSkeletonClass {
	GObjectClass parent_class;
};

struct _DinoUiConversationSummaryConversationItemSkeletonPrivate {
	GtkGrid* _main_grid;
	GtkLabel* _name_label;
	GtkLabel* _time_label;
	DinoUiAvatarPicture* _avatar_picture;
	GtkImage* _encryption_image;
	GtkImage* _received_image;
	GeeHashMap* content_widgets;
	gboolean show_skeleton_;
	DinoEntitiesConversation* _conversation;
	gboolean _item_in_edit_mode;
	DinoEntitiesMessageMarked _item_mark;
	DinoUiConversationSummaryReactionsController* reactions_controller;
	guint time_update_timeout;
	gulong updated_roster_handler_id;
};

struct _DinoUiConversationSummaryContentMetaItem {
	DinoPluginsMetaConversationItem parent_instance;
	DinoUiConversationSummaryContentMetaItemPrivate * priv;
	DinoContentItem* content_item;
};

struct _DinoUiConversationSummaryContentMetaItemClass {
	DinoPluginsMetaConversationItemClass parent_class;
};

static gint DinoUiConversationSummaryConversationItemSkeleton_private_offset;
static gpointer dino_ui_conversation_summary_conversation_item_skeleton_parent_class = NULL;
static DinoPluginsConversationItemWidgetInterfaceIface * dino_ui_conversation_summary_conversation_item_skeleton_dino_plugins_conversation_item_widget_interface_parent_iface = NULL;

VALA_EXTERN GType dino_ui_conversation_summary_conversation_item_skeleton_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (DinoUiConversationSummaryConversationItemSkeleton, g_object_unref)
VALA_EXTERN GType dino_ui_conversation_summary_content_meta_item_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (DinoUiConversationSummaryContentMetaItem, g_object_unref)
VALA_EXTERN GType dino_ui_avatar_picture_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (DinoUiAvatarPicture, g_object_unref)
VALA_EXTERN GType dino_ui_conversation_summary_reactions_controller_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (DinoUiConversationSummaryReactionsController, g_object_unref)
VALA_EXTERN DinoUiConversationSummaryConversationItemSkeleton* dino_ui_conversation_summary_conversation_item_skeleton_new (DinoStreamInteractor* stream_interactor,
                                                                                                                DinoEntitiesConversation* conversation,
                                                                                                                DinoPluginsMetaConversationItem* item);
VALA_EXTERN DinoUiConversationSummaryConversationItemSkeleton* dino_ui_conversation_summary_conversation_item_skeleton_construct (GType object_type,
                                                                                                                      DinoStreamInteractor* stream_interactor,
                                                                                                                      DinoEntitiesConversation* conversation,
                                                                                                                      DinoPluginsMetaConversationItem* item);
VALA_EXTERN void dino_ui_conversation_summary_conversation_item_skeleton_set_conversation (DinoUiConversationSummaryConversationItemSkeleton* self,
                                                                               DinoEntitiesConversation* value);
static void dino_ui_conversation_summary_conversation_item_skeleton_update_edit_mode (DinoUiConversationSummaryConversationItemSkeleton* self);
static void _dino_ui_conversation_summary_conversation_item_skeleton_update_edit_mode_g_object_notify (GObject* _sender,
                                                                                                GParamSpec* pspec,
                                                                                                gpointer self);
VALA_EXTERN void dino_ui_conversation_summary_conversation_item_skeleton_set_main_grid (DinoUiConversationSummaryConversationItemSkeleton* self,
                                                                            GtkGrid* value);
VALA_EXTERN GtkGrid* dino_ui_conversation_summary_conversation_item_skeleton_get_main_grid (DinoUiConversationSummaryConversationItemSkeleton* self);
VALA_EXTERN void dino_ui_conversation_summary_conversation_item_skeleton_set_name_label (DinoUiConversationSummaryConversationItemSkeleton* self,
                                                                             GtkLabel* value);
VALA_EXTERN void dino_ui_conversation_summary_conversation_item_skeleton_set_time_label (DinoUiConversationSummaryConversationItemSkeleton* self,
                                                                             GtkLabel* value);
VALA_EXTERN void dino_ui_conversation_summary_conversation_item_skeleton_set_avatar_picture (DinoUiConversationSummaryConversationItemSkeleton* self,
                                                                                 DinoUiAvatarPicture* value);
VALA_EXTERN void dino_ui_conversation_summary_conversation_item_skeleton_set_encryption_image (DinoUiConversationSummaryConversationItemSkeleton* self,
                                                                                   GtkImage* value);
VALA_EXTERN void dino_ui_conversation_summary_conversation_item_skeleton_set_received_image (DinoUiConversationSummaryConversationItemSkeleton* self,
                                                                                 GtkImage* value);
VALA_EXTERN DinoUiAvatarPicture* dino_ui_conversation_summary_conversation_item_skeleton_get_avatar_picture (DinoUiConversationSummaryConversationItemSkeleton* self);
VALA_EXTERN DinoUiViewModelCompatAvatarPictureModel* dino_ui_view_model_compat_avatar_picture_model_new (DinoStreamInteractor* stream_interactor);
VALA_EXTERN DinoUiViewModelCompatAvatarPictureModel* dino_ui_view_model_compat_avatar_picture_model_construct (GType object_type,
                                                                                                   DinoStreamInteractor* stream_interactor);
VALA_EXTERN GType dino_ui_view_model_avatar_picture_model_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (DinoUiViewModelAvatarPictureModel, g_object_unref)
VALA_EXTERN GType dino_ui_view_model_compat_avatar_picture_model_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (DinoUiViewModelCompatAvatarPictureModel, g_object_unref)
VALA_EXTERN DinoUiViewModelCompatAvatarPictureModel* dino_ui_view_model_compat_avatar_picture_model_add_participant (DinoUiViewModelCompatAvatarPictureModel* self,
                                                                                                         DinoEntitiesConversation* conversation,
                                                                                                         XmppJid* jid);
VALA_EXTERN void dino_ui_avatar_picture_set_model (DinoUiAvatarPicture* self,
                                       DinoUiViewModelAvatarPictureModel* value);
static void dino_ui_conversation_summary_conversation_item_skeleton_update_margin (DinoUiConversationSummaryConversationItemSkeleton* self);
static void _dino_ui_conversation_summary_conversation_item_skeleton_update_margin_g_object_notify (GObject* _sender,
                                                                                             GParamSpec* pspec,
                                                                                             gpointer self);
static void dino_ui_conversation_summary_conversation_item_skeleton_set_header (DinoUiConversationSummaryConversationItemSkeleton* self);
static void _dino_ui_conversation_summary_conversation_item_skeleton_set_header_g_object_notify (GObject* _sender,
                                                                                          GParamSpec* pspec,
                                                                                          gpointer self);
VALA_EXTERN DinoUiConversationSummaryReactionsController* dino_ui_conversation_summary_reactions_controller_new (DinoEntitiesConversation* conversation,
                                                                                                     DinoContentItem* content_item,
                                                                                                     DinoStreamInteractor* stream_interactor);
VALA_EXTERN DinoUiConversationSummaryReactionsController* dino_ui_conversation_summary_reactions_controller_construct (GType object_type,
                                                                                                           DinoEntitiesConversation* conversation,
                                                                                                           DinoContentItem* content_item,
                                                                                                           DinoStreamInteractor* stream_interactor);
static void dino_ui_conversation_summary_conversation_item_skeleton_on_reaction_box_activated (DinoUiConversationSummaryConversationItemSkeleton* self,
                                                                                        GtkWidget* widget);
static void _dino_ui_conversation_summary_conversation_item_skeleton_on_reaction_box_activated_dino_ui_conversation_summary_reactions_controller_box_activated (DinoUiConversationSummaryReactionsController* _sender,
                                                                                                                                                         GtkWidget* widget,
                                                                                                                                                         gpointer self);
VALA_EXTERN void dino_ui_conversation_summary_reactions_controller_init (DinoUiConversationSummaryReactionsController* self);
VALA_EXTERN gboolean dino_ui_conversation_summary_conversation_item_skeleton_get_show_skeleton (DinoUiConversationSummaryConversationItemSkeleton* self);
static void dino_ui_conversation_summary_conversation_item_skeleton_update_name_label (DinoUiConversationSummaryConversationItemSkeleton* self);
static void __lambda21_ (DinoUiConversationSummaryConversationItemSkeleton* self,
                  DinoEntitiesAccount* account,
                  XmppJid* jid,
                  XmppRosterItem* roster_item);
VALA_EXTERN DinoEntitiesConversation* dino_ui_conversation_summary_conversation_item_skeleton_get_conversation (DinoUiConversationSummaryConversationItemSkeleton* self);
static void ___lambda21__dino_roster_manager_updated_roster_item (DinoRosterManager* _sender,
                                                           DinoEntitiesAccount* account,
                                                           XmppJid* jid,
                                                           XmppRosterItem* roster_item,
                                                           gpointer self);
static void dino_ui_conversation_summary_conversation_item_skeleton_update_encryption_icon (DinoUiConversationSummaryConversationItemSkeleton* self);
static void _dino_ui_conversation_summary_conversation_item_skeleton_update_encryption_icon_g_object_notify (GObject* _sender,
                                                                                                      GParamSpec* pspec,
                                                                                                      gpointer self);
static void dino_ui_conversation_summary_conversation_item_skeleton_update_time (DinoUiConversationSummaryConversationItemSkeleton* self);
static void dino_ui_conversation_summary_conversation_item_skeleton_update_received_mark (DinoUiConversationSummaryConversationItemSkeleton* self);
static void _dino_ui_conversation_summary_conversation_item_skeleton_update_received_mark_g_object_notify (GObject* _sender,
                                                                                                    GParamSpec* pspec,
                                                                                                    gpointer self);
static void dino_ui_conversation_summary_conversation_item_skeleton_real_set_widget (DinoPluginsConversationItemWidgetInterface* base,
                                                                              GObject* object,
                                                                              DinoPluginsWidgetType type,
                                                                              gint priority);
VALA_EXTERN GtkLabel* dino_ui_conversation_summary_conversation_item_skeleton_get_name_label (DinoUiConversationSummaryConversationItemSkeleton* self);
VALA_EXTERN GtkLabel* dino_ui_conversation_summary_conversation_item_skeleton_get_time_label (DinoUiConversationSummaryConversationItemSkeleton* self);
VALA_EXTERN GtkImage* dino_ui_conversation_summary_conversation_item_skeleton_get_encryption_image (DinoUiConversationSummaryConversationItemSkeleton* self);
VALA_EXTERN GtkImage* dino_ui_conversation_summary_conversation_item_skeleton_get_received_image (DinoUiConversationSummaryConversationItemSkeleton* self);
static void dino_ui_conversation_summary_conversation_item_skeleton_update_error_mode (DinoUiConversationSummaryConversationItemSkeleton* self);
VALA_EXTERN DinoEntitiesMessageMarked dino_ui_conversation_summary_conversation_item_skeleton_get_item_mark (DinoUiConversationSummaryConversationItemSkeleton* self);
VALA_EXTERN GType dino_ui_application_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (DinoUiApplication, g_object_unref)
VALA_EXTERN gchar* dino_ui_util_string_if_tooltips_active (const gchar* s);
VALA_EXTERN void dino_ui_util_force_error_color (GtkWidget* widget,
                                     const gchar* selector);
static void dino_ui_conversation_summary_conversation_item_skeleton_on_time_update_timeout (DinoUiConversationSummaryConversationItemSkeleton* self);
VALA_EXTERN gchar* dino_ui_conversation_summary_conversation_item_skeleton_get_relative_time (GDateTime* datetime);
VALA_EXTERN gint dino_ui_conversation_summary_conversation_item_skeleton_get_next_time_change (GDateTime* datetime);
static void _dino_ui_conversation_summary_conversation_item_skeleton_on_time_update_timeout_dino_weak_timeout_source_once_func (gconstpointer object);
VALA_EXTERN gchar* dino_ui_util_get_participant_display_name (DinoStreamInteractor* stream_interactor,
                                                  DinoEntitiesConversation* conversation,
                                                  XmppJid* participant,
                                                  gboolean me_is_me);
VALA_EXTERN gchar* dino_ui_conversation_summary_conversation_item_skeleton_format_time (GDateTime* datetime,
                                                                            const gchar* format_24h,
                                                                            const gchar* format_12h);
VALA_EXTERN gboolean dino_ui_util_is_24h_format (void);
VALA_EXTERN GtkWidget* dino_ui_conversation_summary_conversation_item_skeleton_get_widget (DinoUiConversationSummaryConversationItemSkeleton* self);
static void dino_ui_conversation_summary_conversation_item_skeleton_real_dispose (GObject* base);
VALA_EXTERN void dino_ui_conversation_summary_conversation_item_skeleton_set_show_skeleton (DinoUiConversationSummaryConversationItemSkeleton* self,
                                                                                gboolean value);
VALA_EXTERN gboolean dino_ui_conversation_summary_conversation_item_skeleton_get_item_in_edit_mode (DinoUiConversationSummaryConversationItemSkeleton* self);
VALA_EXTERN void dino_ui_conversation_summary_conversation_item_skeleton_set_item_in_edit_mode (DinoUiConversationSummaryConversationItemSkeleton* self,
                                                                                    gboolean value);
VALA_EXTERN void dino_ui_conversation_summary_conversation_item_skeleton_set_item_mark (DinoUiConversationSummaryConversationItemSkeleton* self,
                                                                            DinoEntitiesMessageMarked value);
static void dino_ui_conversation_summary_conversation_item_skeleton_finalize (GObject * obj);
static GType dino_ui_conversation_summary_conversation_item_skeleton_get_type_once (void);
static void _vala_dino_ui_conversation_summary_conversation_item_skeleton_get_property (GObject * object,
                                                                                 guint property_id,
                                                                                 GValue * value,
                                                                                 GParamSpec * pspec);
static void _vala_dino_ui_conversation_summary_conversation_item_skeleton_set_property (GObject * object,
                                                                                 guint property_id,
                                                                                 const GValue * value,
                                                                                 GParamSpec * pspec);
static inline gpointer _vala_memdup2 (gconstpointer mem,
                        gsize byte_size);

static inline gpointer
dino_ui_conversation_summary_conversation_item_skeleton_get_instance_private (DinoUiConversationSummaryConversationItemSkeleton* self)
{
	return G_STRUCT_MEMBER_P (self, DinoUiConversationSummaryConversationItemSkeleton_private_offset);
}

static gpointer
_g_object_ref0 (gpointer self)
{
	return self ? g_object_ref (self) : NULL;
}

static void
_dino_ui_conversation_summary_conversation_item_skeleton_update_edit_mode_g_object_notify (GObject* _sender,
                                                                                           GParamSpec* pspec,
                                                                                           gpointer self)
{
	dino_ui_conversation_summary_conversation_item_skeleton_update_edit_mode ((DinoUiConversationSummaryConversationItemSkeleton*) self);
}

static void
_dino_ui_conversation_summary_conversation_item_skeleton_update_margin_g_object_notify (GObject* _sender,
                                                                                        GParamSpec* pspec,
                                                                                        gpointer self)
{
	dino_ui_conversation_summary_conversation_item_skeleton_update_margin ((DinoUiConversationSummaryConversationItemSkeleton*) self);
}

static void
_dino_ui_conversation_summary_conversation_item_skeleton_set_header_g_object_notify (GObject* _sender,
                                                                                     GParamSpec* pspec,
                                                                                     gpointer self)
{
	dino_ui_conversation_summary_conversation_item_skeleton_set_header ((DinoUiConversationSummaryConversationItemSkeleton*) self);
}

static void
_dino_ui_conversation_summary_conversation_item_skeleton_on_reaction_box_activated_dino_ui_conversation_summary_reactions_controller_box_activated (DinoUiConversationSummaryReactionsController* _sender,
                                                                                                                                                    GtkWidget* widget,
                                                                                                                                                    gpointer self)
{
	dino_ui_conversation_summary_conversation_item_skeleton_on_reaction_box_activated ((DinoUiConversationSummaryConversationItemSkeleton*) self, widget);
}

DinoUiConversationSummaryConversationItemSkeleton*
dino_ui_conversation_summary_conversation_item_skeleton_construct (GType object_type,
                                                                   DinoStreamInteractor* stream_interactor,
                                                                   DinoEntitiesConversation* conversation,
                                                                   DinoPluginsMetaConversationItem* item)
{
	DinoUiConversationSummaryConversationItemSkeleton * self = NULL;
	DinoStreamInteractor* _tmp0_;
	DinoPluginsMetaConversationItem* _tmp1_;
	DinoUiConversationSummaryContentMetaItem* _tmp2_;
	GtkBuilder* builder = NULL;
	GtkBuilder* _tmp3_;
	GtkBuilder* _tmp4_;
	GObject* _tmp5_;
	GtkGrid* _tmp6_;
	GtkBuilder* _tmp7_;
	GObject* _tmp8_;
	GtkBuilder* _tmp9_;
	GObject* _tmp10_;
	GtkBuilder* _tmp11_;
	GObject* _tmp12_;
	GtkBuilder* _tmp13_;
	GObject* _tmp14_;
	GtkBuilder* _tmp15_;
	GObject* _tmp16_;
	GObject* _tmp17_;
	GtkWidget* _tmp18_;
	GtkWidget* _tmp19_;
	gboolean _tmp22_;
	gboolean _tmp23_;
	DinoUiConversationSummaryContentMetaItem* content_meta_item = NULL;
	DinoUiConversationSummaryContentMetaItem* _tmp31_;
	DinoUiConversationSummaryContentMetaItem* _tmp32_;
	g_return_val_if_fail (stream_interactor != NULL, NULL);
	g_return_val_if_fail (conversation != NULL, NULL);
	g_return_val_if_fail (item != NULL, NULL);
	self = (DinoUiConversationSummaryConversationItemSkeleton*) g_object_new (object_type, NULL);
	_tmp0_ = _g_object_ref0 (stream_interactor);
	_g_object_unref0 (self->stream_interactor);
	self->stream_interactor = _tmp0_;
	dino_ui_conversation_summary_conversation_item_skeleton_set_conversation (self, conversation);
	_tmp1_ = _g_object_ref0 (item);
	_g_object_unref0 (self->item);
	self->item = _tmp1_;
	_tmp2_ = _g_object_ref0 (DINO_UI_CONVERSATION_SUMMARY_IS_CONTENT_META_ITEM (item) ? ((DinoUiConversationSummaryContentMetaItem*) item) : NULL);
	_g_object_unref0 (self->content_meta_item);
	self->content_meta_item = _tmp2_;
	g_object_bind_property_with_closures ((GObject*) item, "in-edit-mode", (GObject*) self, "item-in-edit-mode", G_BINDING_DEFAULT, (GClosure*) ((NULL == NULL) ? NULL : g_cclosure_new ((GCallback) NULL, NULL, (GClosureNotify) NULL)), (GClosure*) ((NULL == NULL) ? NULL : g_cclosure_new ((GCallback) NULL, NULL, (GClosureNotify) NULL)));
	g_signal_connect_object ((GObject*) self, "notify::item-in-edit-mode", (GCallback) _dino_ui_conversation_summary_conversation_item_skeleton_update_edit_mode_g_object_notify, self, 0);
	_tmp3_ = gtk_builder_new_from_resource ("/im/dino/Dino/conversation_item_widget.ui");
	builder = _tmp3_;
	_tmp4_ = builder;
	_tmp5_ = gtk_builder_get_object (_tmp4_, "main_grid");
	dino_ui_conversation_summary_conversation_item_skeleton_set_main_grid (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, gtk_grid_get_type (), GtkGrid));
	_tmp6_ = self->priv->_main_grid;
	gtk_widget_add_css_class ((GtkWidget*) _tmp6_, "message-box");
	_tmp7_ = builder;
	_tmp8_ = gtk_builder_get_object (_tmp7_, "name_label");
	dino_ui_conversation_summary_conversation_item_skeleton_set_name_label (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, gtk_label_get_type (), GtkLabel));
	_tmp9_ = builder;
	_tmp10_ = gtk_builder_get_object (_tmp9_, "time_label");
	dino_ui_conversation_summary_conversation_item_skeleton_set_time_label (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp10_, gtk_label_get_type (), GtkLabel));
	_tmp11_ = builder;
	_tmp12_ = gtk_builder_get_object (_tmp11_, "avatar_picture");
	dino_ui_conversation_summary_conversation_item_skeleton_set_avatar_picture (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp12_, DINO_UI_TYPE_AVATAR_PICTURE, DinoUiAvatarPicture));
	_tmp13_ = builder;
	_tmp14_ = gtk_builder_get_object (_tmp13_, "encrypted_image");
	dino_ui_conversation_summary_conversation_item_skeleton_set_encryption_image (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp14_, gtk_image_get_type (), GtkImage));
	_tmp15_ = builder;
	_tmp16_ = gtk_builder_get_object (_tmp15_, "marked_image");
	dino_ui_conversation_summary_conversation_item_skeleton_set_received_image (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp16_, gtk_image_get_type (), GtkImage));
	_tmp17_ = dino_plugins_meta_conversation_item_get_widget (item, (DinoPluginsConversationItemWidgetInterface*) self, DINO_PLUGINS_WIDGET_TYPE_GTK4);
	_tmp18_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp17_, gtk_widget_get_type ()) ? ((GtkWidget*) _tmp17_) : NULL;
	if (_tmp18_ == NULL) {
		_g_object_unref0 (_tmp17_);
	}
	_g_object_unref0 (self->widget);
	self->widget = _tmp18_;
	_tmp19_ = self->widget;
	if (_tmp19_ != NULL) {
		GtkWidget* _tmp20_;
		GtkWidget* _tmp21_;
		_tmp20_ = self->widget;
		gtk_widget_set_valign (_tmp20_, GTK_ALIGN_END);
		_tmp21_ = self->widget;
		dino_plugins_conversation_item_widget_interface_set_widget ((DinoPluginsConversationItemWidgetInterface*) self, (GObject*) _tmp21_, DINO_PLUGINS_WIDGET_TYPE_GTK4, 2);
	}
	_tmp22_ = dino_plugins_meta_conversation_item_get_requires_header (item);
	_tmp23_ = _tmp22_;
	if (_tmp23_) {
		DinoUiAvatarPicture* _tmp24_;
		DinoUiViewModelCompatAvatarPictureModel* _tmp25_;
		DinoUiViewModelCompatAvatarPictureModel* _tmp26_;
		XmppJid* _tmp27_;
		XmppJid* _tmp28_;
		DinoUiViewModelCompatAvatarPictureModel* _tmp29_;
		DinoUiViewModelCompatAvatarPictureModel* _tmp30_;
		_tmp24_ = self->priv->_avatar_picture;
		_tmp25_ = dino_ui_view_model_compat_avatar_picture_model_new (stream_interactor);
		_tmp26_ = _tmp25_;
		_tmp27_ = dino_plugins_meta_conversation_item_get_jid (item);
		_tmp28_ = _tmp27_;
		_tmp29_ = dino_ui_view_model_compat_avatar_picture_model_add_participant (_tmp26_, conversation, _tmp28_);
		_tmp30_ = _tmp29_;
		dino_ui_avatar_picture_set_model (_tmp24_, (DinoUiViewModelAvatarPictureModel*) _tmp30_);
		_g_object_unref0 (_tmp30_);
		_g_object_unref0 (_tmp26_);
	}
	g_signal_connect_object ((GObject*) self, "notify::show-skeleton", (GCallback) _dino_ui_conversation_summary_conversation_item_skeleton_update_margin_g_object_notify, self, 0);
	g_signal_connect_object ((GObject*) self, "notify::show-skeleton", (GCallback) _dino_ui_conversation_summary_conversation_item_skeleton_set_header_g_object_notify, self, 0);
	_tmp31_ = _g_object_ref0 (DINO_UI_CONVERSATION_SUMMARY_IS_CONTENT_META_ITEM (item) ? ((DinoUiConversationSummaryContentMetaItem*) item) : NULL);
	content_meta_item = _tmp31_;
	_tmp32_ = content_meta_item;
	if (_tmp32_ != NULL) {
		DinoUiConversationSummaryContentMetaItem* _tmp33_;
		DinoContentItem* _tmp34_;
		DinoUiConversationSummaryReactionsController* _tmp35_;
		DinoUiConversationSummaryReactionsController* _tmp36_;
		DinoUiConversationSummaryReactionsController* _tmp37_;
		_tmp33_ = content_meta_item;
		_tmp34_ = _tmp33_->content_item;
		_tmp35_ = dino_ui_conversation_summary_reactions_controller_new (conversation, _tmp34_, stream_interactor);
		_g_object_unref0 (self->priv->reactions_controller);
		self->priv->reactions_controller = _tmp35_;
		_tmp36_ = self->priv->reactions_controller;
		g_signal_connect_object (_tmp36_, "box-activated", (GCallback) _dino_ui_conversation_summary_conversation_item_skeleton_on_reaction_box_activated_dino_ui_conversation_summary_reactions_controller_box_activated, self, 0);
		_tmp37_ = self->priv->reactions_controller;
		dino_ui_conversation_summary_reactions_controller_init (_tmp37_);
	}
	dino_ui_conversation_summary_conversation_item_skeleton_update_margin (self);
	_g_object_unref0 (content_meta_item);
	_g_object_unref0 (builder);
	return self;
}

DinoUiConversationSummaryConversationItemSkeleton*
dino_ui_conversation_summary_conversation_item_skeleton_new (DinoStreamInteractor* stream_interactor,
                                                             DinoEntitiesConversation* conversation,
                                                             DinoPluginsMetaConversationItem* item)
{
	return dino_ui_conversation_summary_conversation_item_skeleton_construct (DINO_UI_CONVERSATION_SUMMARY_TYPE_CONVERSATION_ITEM_SKELETON, stream_interactor, conversation, item);
}

static void
__lambda21_ (DinoUiConversationSummaryConversationItemSkeleton* self,
             DinoEntitiesAccount* account,
             XmppJid* jid,
             XmppRosterItem* roster_item)
{
	gboolean _tmp0_ = FALSE;
	DinoEntitiesConversation* _tmp1_;
	DinoEntitiesAccount* _tmp2_;
	DinoEntitiesAccount* _tmp3_;
	g_return_if_fail (account != NULL);
	g_return_if_fail (jid != NULL);
	g_return_if_fail (roster_item != NULL);
	_tmp1_ = self->priv->_conversation;
	_tmp2_ = dino_entities_conversation_get_account (_tmp1_);
	_tmp3_ = _tmp2_;
	if (dino_entities_account_equals (_tmp3_, account)) {
		DinoEntitiesConversation* _tmp4_;
		XmppJid* _tmp5_;
		XmppJid* _tmp6_;
		_tmp4_ = self->priv->_conversation;
		_tmp5_ = dino_entities_conversation_get_counterpart (_tmp4_);
		_tmp6_ = _tmp5_;
		_tmp0_ = xmpp_jid_equals (_tmp6_, jid);
	} else {
		_tmp0_ = FALSE;
	}
	if (_tmp0_) {
		dino_ui_conversation_summary_conversation_item_skeleton_update_name_label (self);
	}
}

static void
___lambda21__dino_roster_manager_updated_roster_item (DinoRosterManager* _sender,
                                                      DinoEntitiesAccount* account,
                                                      XmppJid* jid,
                                                      XmppRosterItem* roster_item,
                                                      gpointer self)
{
	__lambda21_ ((DinoUiConversationSummaryConversationItemSkeleton*) self, account, jid, roster_item);
}

static void
_dino_ui_conversation_summary_conversation_item_skeleton_update_encryption_icon_g_object_notify (GObject* _sender,
                                                                                                 GParamSpec* pspec,
                                                                                                 gpointer self)
{
	dino_ui_conversation_summary_conversation_item_skeleton_update_encryption_icon ((DinoUiConversationSummaryConversationItemSkeleton*) self);
}

static void
_dino_ui_conversation_summary_conversation_item_skeleton_update_received_mark_g_object_notify (GObject* _sender,
                                                                                               GParamSpec* pspec,
                                                                                               gpointer self)
{
	dino_ui_conversation_summary_conversation_item_skeleton_update_received_mark ((DinoUiConversationSummaryConversationItemSkeleton*) self);
}

static void
dino_ui_conversation_summary_conversation_item_skeleton_set_header (DinoUiConversationSummaryConversationItemSkeleton* self)
{
	gboolean _tmp0_;
	gboolean _tmp1_;
	DinoStreamInteractor* _tmp2_;
	DinoModuleIdentity* _tmp3_;
	gpointer _tmp4_;
	DinoRosterManager* _tmp5_;
	gulong _tmp6_;
	DinoPluginsMetaConversationItem* _tmp7_;
	DinoPluginsMetaConversationItem* _tmp8_;
	GDateTime* _tmp9_;
	GDateTime* _tmp10_;
	DinoPluginsMetaConversationItem* _tmp11_;
	g_return_if_fail (self != NULL);
	_tmp0_ = dino_ui_conversation_summary_conversation_item_skeleton_get_show_skeleton (self);
	_tmp1_ = _tmp0_;
	if (!_tmp1_) {
		return;
	}
	dino_ui_conversation_summary_conversation_item_skeleton_update_name_label (self);
	_tmp2_ = self->stream_interactor;
	_tmp3_ = dino_roster_manager_IDENTITY;
	_tmp4_ = dino_stream_interactor_get_module (_tmp2_, DINO_TYPE_ROSTER_MANAGER, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, _tmp3_);
	_tmp5_ = (DinoRosterManager*) _tmp4_;
	_tmp6_ = g_signal_connect_object (_tmp5_, "updated-roster-item", (GCallback) ___lambda21__dino_roster_manager_updated_roster_item, self, 0);
	self->priv->updated_roster_handler_id = _tmp6_;
	_g_object_unref0 (_tmp5_);
	_tmp7_ = self->item;
	g_signal_connect_object ((GObject*) _tmp7_, "notify::encryption", (GCallback) _dino_ui_conversation_summary_conversation_item_skeleton_update_encryption_icon_g_object_notify, self, 0);
	dino_ui_conversation_summary_conversation_item_skeleton_update_encryption_icon (self);
	_tmp8_ = self->item;
	_tmp9_ = dino_plugins_meta_conversation_item_get_time (_tmp8_);
	_tmp10_ = _tmp9_;
	if (_tmp10_ != NULL) {
		dino_ui_conversation_summary_conversation_item_skeleton_update_time (self);
	}
	_tmp11_ = self->item;
	g_object_bind_property_with_closures ((GObject*) _tmp11_, "mark", (GObject*) self, "item-mark", G_BINDING_SYNC_CREATE, (GClosure*) ((NULL == NULL) ? NULL : g_cclosure_new ((GCallback) NULL, NULL, (GClosureNotify) NULL)), (GClosure*) ((NULL == NULL) ? NULL : g_cclosure_new ((GCallback) NULL, NULL, (GClosureNotify) NULL)));
	g_signal_connect_object ((GObject*) self, "notify::item-mark", (GCallback) _dino_ui_conversation_summary_conversation_item_skeleton_update_received_mark_g_object_notify, self, G_CONNECT_AFTER);
	dino_ui_conversation_summary_conversation_item_skeleton_update_received_mark (self);
}

static void
dino_ui_conversation_summary_conversation_item_skeleton_real_set_widget (DinoPluginsConversationItemWidgetInterface* base,
                                                                         GObject* object,
                                                                         DinoPluginsWidgetType type,
                                                                         gint priority)
{
	DinoUiConversationSummaryConversationItemSkeleton * self;
	GeeHashMap* _tmp10_;
	gint row_no = 0;
	self = (DinoUiConversationSummaryConversationItemSkeleton*) base;
	g_return_if_fail (object != NULL);
	{
		GeeIterator* _content_widget_it = NULL;
		GeeHashMap* _tmp0_;
		GeeCollection* _tmp1_;
		GeeCollection* _tmp2_;
		GeeCollection* _tmp3_;
		GeeIterator* _tmp4_;
		GeeIterator* _tmp5_;
		_tmp0_ = self->priv->content_widgets;
		_tmp1_ = gee_abstract_map_get_values ((GeeAbstractMap*) _tmp0_);
		_tmp2_ = _tmp1_;
		_tmp3_ = _tmp2_;
		_tmp4_ = gee_iterable_iterator ((GeeIterable*) _tmp3_);
		_tmp5_ = _tmp4_;
		_g_object_unref0 (_tmp3_);
		_content_widget_it = _tmp5_;
		while (TRUE) {
			GeeIterator* _tmp6_;
			GtkWidget* content_widget = NULL;
			GeeIterator* _tmp7_;
			gpointer _tmp8_;
			GtkWidget* _tmp9_;
			_tmp6_ = _content_widget_it;
			if (!gee_iterator_next (_tmp6_)) {
				break;
			}
			_tmp7_ = _content_widget_it;
			_tmp8_ = gee_iterator_get (_tmp7_);
			content_widget = (GtkWidget*) _tmp8_;
			_tmp9_ = content_widget;
			gtk_widget_unparent (_tmp9_);
			_g_object_unref0 (content_widget);
		}
		_g_object_unref0 (_content_widget_it);
	}
	_tmp10_ = self->priv->content_widgets;
	gee_abstract_map_set ((GeeAbstractMap*) _tmp10_, (gpointer) ((gintptr) priority), G_TYPE_CHECK_INSTANCE_CAST (object, gtk_widget_get_type (), GtkWidget));
	row_no = 1;
	{
		gint i = 0;
		i = 0;
		{
			gboolean _tmp11_ = FALSE;
			_tmp11_ = TRUE;
			while (TRUE) {
				GeeHashMap* _tmp13_;
				GtkGrid* _tmp14_;
				GeeHashMap* _tmp15_;
				gpointer _tmp16_;
				GtkWidget* _tmp17_;
				gint _tmp18_;
				if (!_tmp11_) {
					gint _tmp12_;
					_tmp12_ = i;
					i = _tmp12_ + 1;
				}
				_tmp11_ = FALSE;
				if (!(i < 5)) {
					break;
				}
				_tmp13_ = self->priv->content_widgets;
				if (!gee_abstract_map_has_key ((GeeAbstractMap*) _tmp13_, (gpointer) ((gintptr) i))) {
					continue;
				}
				_tmp14_ = self->priv->_main_grid;
				_tmp15_ = self->priv->content_widgets;
				_tmp16_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp15_, (gpointer) ((gintptr) i));
				_tmp17_ = (GtkWidget*) _tmp16_;
				gtk_grid_attach (_tmp14_, _tmp17_, 1, row_no, 4, 1);
				_g_object_unref0 (_tmp17_);
				_tmp18_ = row_no;
				row_no = _tmp18_ + 1;
			}
		}
	}
}

static void
dino_ui_conversation_summary_conversation_item_skeleton_update_margin (DinoUiConversationSummaryConversationItemSkeleton* self)
{
	DinoUiAvatarPicture* _tmp0_;
	gboolean _tmp1_;
	gboolean _tmp2_;
	GtkLabel* _tmp3_;
	gboolean _tmp4_;
	gboolean _tmp5_;
	GtkLabel* _tmp6_;
	gboolean _tmp7_;
	gboolean _tmp8_;
	GtkImage* _tmp9_;
	gboolean _tmp10_;
	gboolean _tmp11_;
	GtkImage* _tmp12_;
	gboolean _tmp13_;
	gboolean _tmp14_;
	gboolean _tmp15_ = FALSE;
	gboolean _tmp16_;
	gboolean _tmp17_;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->priv->_avatar_picture;
	_tmp1_ = dino_ui_conversation_summary_conversation_item_skeleton_get_show_skeleton (self);
	_tmp2_ = _tmp1_;
	gtk_widget_set_visible ((GtkWidget*) _tmp0_, _tmp2_);
	_tmp3_ = self->priv->_name_label;
	_tmp4_ = dino_ui_conversation_summary_conversation_item_skeleton_get_show_skeleton (self);
	_tmp5_ = _tmp4_;
	gtk_widget_set_visible ((GtkWidget*) _tmp3_, _tmp5_);
	_tmp6_ = self->priv->_time_label;
	_tmp7_ = dino_ui_conversation_summary_conversation_item_skeleton_get_show_skeleton (self);
	_tmp8_ = _tmp7_;
	gtk_widget_set_visible ((GtkWidget*) _tmp6_, _tmp8_);
	_tmp9_ = self->priv->_encryption_image;
	_tmp10_ = dino_ui_conversation_summary_conversation_item_skeleton_get_show_skeleton (self);
	_tmp11_ = _tmp10_;
	gtk_widget_set_visible ((GtkWidget*) _tmp9_, _tmp11_);
	_tmp12_ = self->priv->_received_image;
	_tmp13_ = dino_ui_conversation_summary_conversation_item_skeleton_get_show_skeleton (self);
	_tmp14_ = _tmp13_;
	gtk_widget_set_visible ((GtkWidget*) _tmp12_, _tmp14_);
	_tmp16_ = dino_ui_conversation_summary_conversation_item_skeleton_get_show_skeleton (self);
	_tmp17_ = _tmp16_;
	if (_tmp17_) {
		_tmp15_ = TRUE;
	} else {
		DinoUiConversationSummaryContentMetaItem* _tmp18_;
		_tmp18_ = self->content_meta_item;
		_tmp15_ = _tmp18_ == NULL;
	}
	if (_tmp15_) {
		GtkGrid* _tmp19_;
		_tmp19_ = self->priv->_main_grid;
		gtk_widget_add_css_class ((GtkWidget*) _tmp19_, "has-skeleton");
	}
}

static void
dino_ui_conversation_summary_conversation_item_skeleton_update_edit_mode (DinoUiConversationSummaryConversationItemSkeleton* self)
{
	DinoPluginsMetaConversationItem* _tmp0_;
	gboolean _tmp1_;
	gboolean _tmp2_;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->item;
	_tmp1_ = dino_plugins_meta_conversation_item_get_in_edit_mode (_tmp0_);
	_tmp2_ = _tmp1_;
	if (_tmp2_) {
		GtkGrid* _tmp3_;
		_tmp3_ = self->priv->_main_grid;
		gtk_widget_add_css_class ((GtkWidget*) _tmp3_, "edit-mode");
	} else {
		GtkGrid* _tmp4_;
		_tmp4_ = self->priv->_main_grid;
		gtk_widget_remove_css_class ((GtkWidget*) _tmp4_, "edit-mode");
	}
}

static void
dino_ui_conversation_summary_conversation_item_skeleton_update_error_mode (DinoUiConversationSummaryConversationItemSkeleton* self)
{
	DinoEntitiesMessageMarked _tmp0_;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->priv->_item_mark;
	if (_tmp0_ == DINO_ENTITIES_MESSAGE_MARKED_ERROR) {
		GtkGrid* _tmp1_;
		_tmp1_ = self->priv->_main_grid;
		gtk_widget_add_css_class ((GtkWidget*) _tmp1_, "error");
	} else {
		GtkGrid* _tmp2_;
		_tmp2_ = self->priv->_main_grid;
		gtk_widget_remove_css_class ((GtkWidget*) _tmp2_, "error");
	}
}

static void
dino_ui_conversation_summary_conversation_item_skeleton_update_encryption_icon (DinoUiConversationSummaryConversationItemSkeleton* self)
{
	DinoUiApplication* app = NULL;
	GApplication* _tmp0_;
	DinoUiApplication* _tmp1_;
	DinoUiConversationSummaryContentMetaItem* ci = NULL;
	DinoPluginsMetaConversationItem* _tmp2_;
	DinoUiConversationSummaryContentMetaItem* _tmp3_;
	gboolean _tmp4_ = FALSE;
	gboolean _tmp5_ = FALSE;
	DinoPluginsMetaConversationItem* _tmp6_;
	DinoEntitiesEncryption _tmp7_;
	DinoEntitiesEncryption _tmp8_;
	DinoPluginsMetaConversationItem* _tmp31_;
	DinoEntitiesEncryption _tmp32_;
	DinoEntitiesEncryption _tmp33_;
	g_return_if_fail (self != NULL);
	_tmp0_ = g_application_get_default ();
	_tmp1_ = _g_object_ref0 (DINO_UI_IS_APPLICATION (_tmp0_) ? ((DinoUiApplication*) _tmp0_) : NULL);
	app = _tmp1_;
	_tmp2_ = self->item;
	_tmp3_ = _g_object_ref0 (DINO_UI_CONVERSATION_SUMMARY_IS_CONTENT_META_ITEM (_tmp2_) ? ((DinoUiConversationSummaryContentMetaItem*) _tmp2_) : NULL);
	ci = _tmp3_;
	_tmp6_ = self->item;
	_tmp7_ = dino_plugins_meta_conversation_item_get_encryption (_tmp6_);
	_tmp8_ = _tmp7_;
	if (_tmp8_ != DINO_ENTITIES_ENCRYPTION_NONE) {
		DinoPluginsMetaConversationItem* _tmp9_;
		DinoEntitiesEncryption _tmp10_;
		DinoEntitiesEncryption _tmp11_;
		_tmp9_ = self->item;
		_tmp10_ = dino_plugins_meta_conversation_item_get_encryption (_tmp9_);
		_tmp11_ = _tmp10_;
		_tmp5_ = _tmp11_ != DINO_ENTITIES_ENCRYPTION_UNKNOWN;
	} else {
		_tmp5_ = FALSE;
	}
	if (_tmp5_) {
		DinoUiConversationSummaryContentMetaItem* _tmp12_;
		_tmp12_ = ci;
		_tmp4_ = _tmp12_ != NULL;
	} else {
		_tmp4_ = FALSE;
	}
	if (_tmp4_) {
		gchar* icon_name = NULL;
		DinoPluginsEncryptionListEntry* encryption_entry = NULL;
		DinoUiApplication* _tmp13_;
		DinoPluginsRegistry* _tmp14_;
		DinoPluginsRegistry* _tmp15_;
		GeeHashMap* _tmp16_;
		DinoPluginsMetaConversationItem* _tmp17_;
		DinoEntitiesEncryption _tmp18_;
		DinoEntitiesEncryption _tmp19_;
		gpointer _tmp20_;
		DinoPluginsEncryptionListEntry* _tmp21_;
		const gchar* _tmp27_ = NULL;
		const gchar* _tmp28_;
		GtkImage* _tmp29_;
		GtkImage* _tmp30_;
		icon_name = NULL;
		_tmp13_ = app;
		_tmp14_ = dino_application_get_plugin_registry ((DinoApplication*) _tmp13_);
		_tmp15_ = _tmp14_;
		_tmp16_ = _tmp15_->encryption_list_entries;
		_tmp17_ = self->item;
		_tmp18_ = dino_plugins_meta_conversation_item_get_encryption (_tmp17_);
		_tmp19_ = _tmp18_;
		_tmp20_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp16_, (gpointer) ((gintptr) _tmp19_));
		encryption_entry = (DinoPluginsEncryptionListEntry*) _tmp20_;
		_tmp21_ = encryption_entry;
		if (_tmp21_ != NULL) {
			DinoPluginsEncryptionListEntry* _tmp22_;
			DinoEntitiesConversation* _tmp23_;
			DinoUiConversationSummaryContentMetaItem* _tmp24_;
			DinoContentItem* _tmp25_;
			gchar* _tmp26_;
			_tmp22_ = encryption_entry;
			_tmp23_ = self->priv->_conversation;
			_tmp24_ = ci;
			_tmp25_ = _tmp24_->content_item;
			_tmp26_ = dino_plugins_encryption_list_entry_get_encryption_icon_name (_tmp22_, _tmp23_, _tmp25_);
			_g_free0 (icon_name);
			icon_name = _tmp26_;
		}
		_tmp28_ = icon_name;
		_tmp27_ = _tmp28_;
		if (_tmp27_ == NULL) {
			_tmp27_ = "changes-prevent-symbolic";
		}
		_tmp29_ = self->priv->_encryption_image;
		g_object_set (_tmp29_, "icon-name", _tmp27_, NULL);
		_tmp30_ = self->priv->_encryption_image;
		gtk_widget_set_visible ((GtkWidget*) _tmp30_, TRUE);
		_g_object_unref0 (encryption_entry);
		_g_free0 (icon_name);
	}
	_tmp31_ = self->item;
	_tmp32_ = dino_plugins_meta_conversation_item_get_encryption (_tmp31_);
	_tmp33_ = _tmp32_;
	if (_tmp33_ == DINO_ENTITIES_ENCRYPTION_NONE) {
		DinoEntitiesConversation* _tmp34_;
		DinoEntitiesEncryption _tmp35_;
		DinoEntitiesEncryption _tmp36_;
		_tmp34_ = self->priv->_conversation;
		_tmp35_ = dino_entities_conversation_get_encryption (_tmp34_);
		_tmp36_ = _tmp35_;
		if (_tmp36_ != DINO_ENTITIES_ENCRYPTION_NONE) {
			GtkImage* _tmp37_;
			GtkImage* _tmp38_;
			const gchar* _tmp39_;
			gchar* _tmp40_;
			gchar* _tmp41_;
			GtkImage* _tmp42_;
			GtkImage* _tmp43_;
			_tmp37_ = self->priv->_encryption_image;
			g_object_set (_tmp37_, "icon-name", "changes-allow-symbolic", NULL);
			_tmp38_ = self->priv->_encryption_image;
			_tmp39_ = dino_gettext ("Unencrypted");
			_tmp40_ = dino_ui_util_string_if_tooltips_active (_tmp39_);
			_tmp41_ = _tmp40_;
			gtk_widget_set_tooltip_text ((GtkWidget*) _tmp38_, _tmp41_);
			_g_free0 (_tmp41_);
			_tmp42_ = self->priv->_encryption_image;
			dino_ui_util_force_error_color ((GtkWidget*) _tmp42_, "*");
			_tmp43_ = self->priv->_encryption_image;
			gtk_widget_set_visible ((GtkWidget*) _tmp43_, TRUE);
		} else {
			DinoEntitiesConversation* _tmp44_;
			DinoEntitiesEncryption _tmp45_;
			DinoEntitiesEncryption _tmp46_;
			_tmp44_ = self->priv->_conversation;
			_tmp45_ = dino_entities_conversation_get_encryption (_tmp44_);
			_tmp46_ = _tmp45_;
			if (_tmp46_ == DINO_ENTITIES_ENCRYPTION_NONE) {
				GtkImage* _tmp47_;
				GtkImage* _tmp48_;
				_tmp47_ = self->priv->_encryption_image;
				g_object_set (_tmp47_, "icon-name", NULL, NULL);
				_tmp48_ = self->priv->_encryption_image;
				gtk_widget_set_visible ((GtkWidget*) _tmp48_, FALSE);
			}
		}
	}
	_g_object_unref0 (ci);
	_g_object_unref0 (app);
}

static void
dino_ui_conversation_summary_conversation_item_skeleton_on_reaction_box_activated (DinoUiConversationSummaryConversationItemSkeleton* self,
                                                                                   GtkWidget* widget)
{
	g_return_if_fail (self != NULL);
	g_return_if_fail (widget != NULL);
	dino_plugins_conversation_item_widget_interface_set_widget ((DinoPluginsConversationItemWidgetInterface*) self, (GObject*) widget, DINO_PLUGINS_WIDGET_TYPE_GTK4, 3);
}

static void
dino_ui_conversation_summary_conversation_item_skeleton_on_time_update_timeout (DinoUiConversationSummaryConversationItemSkeleton* self)
{
	GtkGrid* _tmp0_;
	GtkWidget* _tmp1_;
	GtkWidget* _tmp2_;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->priv->_main_grid;
	_tmp1_ = gtk_widget_get_parent ((GtkWidget*) _tmp0_);
	_tmp2_ = _tmp1_;
	if (_tmp2_ != NULL) {
		dino_ui_conversation_summary_conversation_item_skeleton_update_time (self);
	}
}

static const gchar*
string_to_string (const gchar* self)
{
	const gchar* result;
	g_return_val_if_fail (self != NULL, NULL);
	result = self;
	return result;
}

static void
_dino_ui_conversation_summary_conversation_item_skeleton_on_time_update_timeout_dino_weak_timeout_source_once_func (gconstpointer object)
{
	dino_ui_conversation_summary_conversation_item_skeleton_on_time_update_timeout (object);
}

static void
dino_ui_conversation_summary_conversation_item_skeleton_update_time (DinoUiConversationSummaryConversationItemSkeleton* self)
{
	GtkLabel* _tmp0_;
	DinoPluginsMetaConversationItem* _tmp1_;
	GDateTime* _tmp2_;
	GDateTime* _tmp3_;
	GDateTime* _tmp4_;
	GDateTime* _tmp5_;
	gchar* _tmp6_;
	gchar* _tmp7_;
	const gchar* _tmp8_;
	DinoPluginsMetaConversationItem* _tmp9_;
	GDateTime* _tmp10_;
	GDateTime* _tmp11_;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->priv->_time_label;
	_tmp1_ = self->item;
	_tmp2_ = dino_plugins_meta_conversation_item_get_time (_tmp1_);
	_tmp3_ = _tmp2_;
	_tmp4_ = g_date_time_to_local (_tmp3_);
	_tmp5_ = _tmp4_;
	_tmp6_ = dino_ui_conversation_summary_conversation_item_skeleton_get_relative_time (_tmp5_);
	_tmp7_ = _tmp6_;
	_tmp8_ = string_to_string (_tmp7_);
	gtk_label_set_label (_tmp0_, _tmp8_);
	_g_free0 (_tmp7_);
	_g_date_time_unref0 (_tmp5_);
	_tmp9_ = self->item;
	_tmp10_ = dino_plugins_meta_conversation_item_get_time (_tmp9_);
	_tmp11_ = _tmp10_;
	self->priv->time_update_timeout = dino_weak_timeout_add_seconds_once (DINO_UI_CONVERSATION_SUMMARY_TYPE_CONVERSATION_ITEM_SKELETON, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, (guint) ((gint) dino_ui_conversation_summary_conversation_item_skeleton_get_next_time_change (_tmp11_)), self, _dino_ui_conversation_summary_conversation_item_skeleton_on_time_update_timeout_dino_weak_timeout_source_once_func, G_PRIORITY_DEFAULT);
}

static void
dino_ui_conversation_summary_conversation_item_skeleton_update_name_label (DinoUiConversationSummaryConversationItemSkeleton* self)
{
	GtkLabel* _tmp0_;
	DinoStreamInteractor* _tmp1_;
	DinoEntitiesConversation* _tmp2_;
	DinoPluginsMetaConversationItem* _tmp3_;
	XmppJid* _tmp4_;
	XmppJid* _tmp5_;
	gchar* _tmp6_;
	gchar* _tmp7_;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->priv->_name_label;
	_tmp1_ = self->stream_interactor;
	_tmp2_ = self->priv->_conversation;
	_tmp3_ = self->item;
	_tmp4_ = dino_plugins_meta_conversation_item_get_jid (_tmp3_);
	_tmp5_ = _tmp4_;
	_tmp6_ = dino_ui_util_get_participant_display_name (_tmp1_, _tmp2_, _tmp5_, TRUE);
	_tmp7_ = _tmp6_;
	gtk_label_set_label (_tmp0_, _tmp7_);
	_g_free0 (_tmp7_);
}

static void
dino_ui_conversation_summary_conversation_item_skeleton_update_received_mark (DinoUiConversationSummaryConversationItemSkeleton* self)
{
	DinoUiConversationSummaryContentMetaItem* _tmp0_;
	DinoEntitiesMessageMarked _tmp1_;
	DinoEntitiesMessageMarked _tmp2_;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->content_meta_item;
	_tmp1_ = dino_plugins_meta_conversation_item_get_mark ((DinoPluginsMetaConversationItem*) _tmp0_);
	_tmp2_ = _tmp1_;
	switch (_tmp2_) {
		case DINO_ENTITIES_MESSAGE_MARKED_RECEIVED:
		{
			GtkImage* _tmp3_;
			GtkImage* _tmp4_;
			const gchar* _tmp5_;
			gchar* _tmp6_;
			gchar* _tmp7_;
			_tmp3_ = self->priv->_received_image;
			g_object_set (_tmp3_, "icon-name", "dino-tick-symbolic", NULL);
			_tmp4_ = self->priv->_received_image;
			_tmp5_ = dino_gettext ("Delivered");
			_tmp6_ = dino_ui_util_string_if_tooltips_active (_tmp5_);
			_tmp7_ = _tmp6_;
			gtk_widget_set_tooltip_text ((GtkWidget*) _tmp4_, _tmp7_);
			_g_free0 (_tmp7_);
			break;
		}
		case DINO_ENTITIES_MESSAGE_MARKED_READ:
		{
			GtkImage* _tmp8_;
			GtkImage* _tmp9_;
			const gchar* _tmp10_;
			gchar* _tmp11_;
			gchar* _tmp12_;
			_tmp8_ = self->priv->_received_image;
			g_object_set (_tmp8_, "icon-name", "dino-double-tick-symbolic", NULL);
			_tmp9_ = self->priv->_received_image;
			_tmp10_ = dino_gettext ("Read");
			_tmp11_ = dino_ui_util_string_if_tooltips_active (_tmp10_);
			_tmp12_ = _tmp11_;
			gtk_widget_set_tooltip_text ((GtkWidget*) _tmp9_, _tmp12_);
			_g_free0 (_tmp12_);
			break;
		}
		case DINO_ENTITIES_MESSAGE_MARKED_WONTSEND:
		{
			GtkImage* _tmp13_;
			GtkImage* _tmp14_;
			GtkLabel* _tmp15_;
			gchar* error_text = NULL;
			const gchar* _tmp16_;
			gchar* _tmp17_;
			GtkImage* _tmp18_;
			const gchar* _tmp19_;
			GtkLabel* _tmp20_;
			const gchar* _tmp21_;
			_tmp13_ = self->priv->_received_image;
			g_object_set (_tmp13_, "icon-name", "dialog-warning-symbolic", NULL);
			_tmp14_ = self->priv->_received_image;
			dino_ui_util_force_error_color ((GtkWidget*) _tmp14_, "*");
			_tmp15_ = self->priv->_time_label;
			dino_ui_util_force_error_color ((GtkWidget*) _tmp15_, "*");
			_tmp16_ = dino_gettext ("Unable to send message");
			_tmp17_ = dino_ui_util_string_if_tooltips_active (_tmp16_);
			error_text = _tmp17_;
			_tmp18_ = self->priv->_received_image;
			_tmp19_ = error_text;
			gtk_widget_set_tooltip_text ((GtkWidget*) _tmp18_, _tmp19_);
			_tmp20_ = self->priv->_time_label;
			_tmp21_ = error_text;
			gtk_widget_set_tooltip_text ((GtkWidget*) _tmp20_, _tmp21_);
			_g_free0 (error_text);
			break;
		}
		default:
		{
			GtkImage* _tmp22_;
			_tmp22_ = self->priv->_received_image;
			g_object_set (_tmp22_, "icon-name", NULL, NULL);
			break;
		}
	}
}

gint
dino_ui_conversation_summary_conversation_item_skeleton_get_next_time_change (GDateTime* datetime)
{
	GDateTime* now = NULL;
	GDateTime* _tmp0_;
	GTimeSpan timespan = 0LL;
	GDateTime* _tmp1_;
	gint result;
	g_return_val_if_fail (datetime != NULL, -1);
	_tmp0_ = g_date_time_new_now_local ();
	now = _tmp0_;
	_tmp1_ = now;
	timespan = g_date_time_difference (_tmp1_, datetime);
	if (timespan < (10 * G_TIME_SPAN_MINUTE)) {
		GDateTime* _tmp2_;
		_tmp2_ = now;
		if (g_date_time_get_second (_tmp2_) < g_date_time_get_second (datetime)) {
			GDateTime* _tmp3_;
			_tmp3_ = now;
			result = g_date_time_get_second (datetime) - g_date_time_get_second (_tmp3_);
			_g_date_time_unref0 (now);
			return result;
		} else {
			GDateTime* _tmp4_;
			_tmp4_ = now;
			result = 60 - (g_date_time_get_second (_tmp4_) - g_date_time_get_second (datetime));
			_g_date_time_unref0 (now);
			return result;
		}
	} else {
		GDateTime* _tmp5_;
		GDateTime* _tmp6_;
		GDateTime* _tmp7_;
		_tmp5_ = now;
		_tmp6_ = now;
		_tmp7_ = now;
		result = (((23 - g_date_time_get_hour (_tmp5_)) * 3600) + ((59 - g_date_time_get_minute (_tmp6_)) * 60)) + (59 - g_date_time_get_second (_tmp7_));
		_g_date_time_unref0 (now);
		return result;
	}
}

static gchar*
string_replace (const gchar* self,
                const gchar* old,
                const gchar* replacement)
{
	gboolean _tmp0_ = FALSE;
	gboolean _tmp1_ = FALSE;
	GError* _inner_error0_ = NULL;
	gchar* result;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (old != NULL, NULL);
	g_return_val_if_fail (replacement != NULL, NULL);
	if ((*((gchar*) self)) == '\0') {
		_tmp1_ = TRUE;
	} else {
		_tmp1_ = (*((gchar*) old)) == '\0';
	}
	if (_tmp1_) {
		_tmp0_ = TRUE;
	} else {
		_tmp0_ = g_strcmp0 (old, replacement) == 0;
	}
	if (_tmp0_) {
		gchar* _tmp2_;
		_tmp2_ = g_strdup (self);
		result = _tmp2_;
		return result;
	}
	{
		GRegex* regex = NULL;
		gchar* _tmp3_;
		gchar* _tmp4_;
		GRegex* _tmp5_;
		GRegex* _tmp6_;
		gchar* _tmp7_ = NULL;
		GRegex* _tmp8_;
		gchar* _tmp9_;
		gchar* _tmp10_;
		_tmp3_ = g_regex_escape_string (old, -1);
		_tmp4_ = _tmp3_;
		_tmp5_ = g_regex_new (_tmp4_, 0, 0, &_inner_error0_);
		_tmp6_ = _tmp5_;
		_g_free0 (_tmp4_);
		regex = _tmp6_;
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			if (_inner_error0_->domain == G_REGEX_ERROR) {
				goto __catch0_g_regex_error;
			}
			g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
			g_clear_error (&_inner_error0_);
			return NULL;
		}
		_tmp8_ = regex;
		_tmp9_ = g_regex_replace_literal (_tmp8_, self, (gssize) -1, 0, replacement, 0, &_inner_error0_);
		_tmp7_ = _tmp9_;
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			_g_regex_unref0 (regex);
			if (_inner_error0_->domain == G_REGEX_ERROR) {
				goto __catch0_g_regex_error;
			}
			g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
			g_clear_error (&_inner_error0_);
			return NULL;
		}
		_tmp10_ = _tmp7_;
		_tmp7_ = NULL;
		result = _tmp10_;
		_g_free0 (_tmp7_);
		_g_regex_unref0 (regex);
		return result;
	}
	goto __finally0;
	__catch0_g_regex_error:
	{
		g_clear_error (&_inner_error0_);
		g_assert_not_reached ();
	}
	__finally0:
	g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
	g_clear_error (&_inner_error0_);
	return NULL;
}

gchar*
dino_ui_conversation_summary_conversation_item_skeleton_format_time (GDateTime* datetime,
                                                                     const gchar* format_24h,
                                                                     const gchar* format_12h)
{
	const gchar* _tmp0_ = NULL;
	gchar* format = NULL;
	gchar* _tmp1_;
	const gchar* _tmp4_;
	gchar* _tmp5_;
	gchar* result;
	g_return_val_if_fail (datetime != NULL, NULL);
	g_return_val_if_fail (format_24h != NULL, NULL);
	g_return_val_if_fail (format_12h != NULL, NULL);
	if (dino_ui_util_is_24h_format ()) {
		_tmp0_ = format_24h;
	} else {
		_tmp0_ = format_12h;
	}
	_tmp1_ = g_strdup (_tmp0_);
	format = _tmp1_;
	if (!g_get_charset (NULL)) {
		const gchar* _tmp2_;
		gchar* _tmp3_;
		_tmp2_ = format;
		_tmp3_ = string_replace (_tmp2_, "∶", ":");
		_g_free0 (format);
		format = _tmp3_;
	}
	_tmp4_ = format;
	_tmp5_ = g_date_time_format (datetime, _tmp4_);
	result = _tmp5_;
	_g_free0 (format);
	return result;
}

gchar*
dino_ui_conversation_summary_conversation_item_skeleton_get_relative_time (GDateTime* datetime)
{
	GDateTime* now = NULL;
	GDateTime* _tmp0_;
	GTimeSpan timespan = 0LL;
	GDateTime* _tmp1_;
	gchar* result;
	g_return_val_if_fail (datetime != NULL, NULL);
	_tmp0_ = g_date_time_new_now_local ();
	now = _tmp0_;
	_tmp1_ = now;
	timespan = g_date_time_difference (_tmp1_, datetime);
	if (timespan > (365 * G_TIME_SPAN_DAY)) {
		const gchar* _tmp2_;
		const gchar* _tmp3_;
		gchar* _tmp4_;
		_tmp2_ = dino_gettext ("%x, %H∶%M");
		_tmp3_ = dino_gettext ("%x, %l∶%M %p");
		_tmp4_ = dino_ui_conversation_summary_conversation_item_skeleton_format_time (datetime, _tmp2_, _tmp3_);
		result = _tmp4_;
		_g_date_time_unref0 (now);
		return result;
	} else {
		if (timespan > (7 * G_TIME_SPAN_DAY)) {
			const gchar* _tmp5_;
			const gchar* _tmp6_;
			gchar* _tmp7_;
			_tmp5_ = dino_gettext ("%b %d, %H∶%M");
			_tmp6_ = dino_gettext ("%b %d, %l∶%M %p");
			_tmp7_ = dino_ui_conversation_summary_conversation_item_skeleton_format_time (datetime, _tmp5_, _tmp6_);
			result = _tmp7_;
			_g_date_time_unref0 (now);
			return result;
		} else {
			GDateTime* _tmp8_;
			_tmp8_ = now;
			if (g_date_time_get_day_of_month (datetime) != g_date_time_get_day_of_month (_tmp8_)) {
				const gchar* _tmp9_;
				const gchar* _tmp10_;
				gchar* _tmp11_;
				_tmp9_ = dino_gettext ("%a, %H∶%M");
				_tmp10_ = dino_gettext ("%a, %l∶%M %p");
				_tmp11_ = dino_ui_conversation_summary_conversation_item_skeleton_format_time (datetime, _tmp9_, _tmp10_);
				result = _tmp11_;
				_g_date_time_unref0 (now);
				return result;
			} else {
				if (timespan > (9 * G_TIME_SPAN_MINUTE)) {
					const gchar* _tmp12_;
					const gchar* _tmp13_;
					gchar* _tmp14_;
					_tmp12_ = dino_gettext ("%H∶%M");
					_tmp13_ = dino_gettext ("%l∶%M %p");
					_tmp14_ = dino_ui_conversation_summary_conversation_item_skeleton_format_time (datetime, _tmp12_, _tmp13_);
					result = _tmp14_;
					_g_date_time_unref0 (now);
					return result;
				} else {
					if (timespan > G_TIME_SPAN_MINUTE) {
						gulong mins = 0UL;
						const gchar* _tmp15_;
						gchar* _tmp16_;
						mins = (gulong) (llabs ((gint64) timespan) / G_TIME_SPAN_MINUTE);
						_tmp15_ = dino_ngettext ("%i min ago", "%i mins ago", mins);
						_tmp16_ = g_strdup_printf (_tmp15_, mins);
						result = _tmp16_;
						_g_date_time_unref0 (now);
						return result;
					} else {
						const gchar* _tmp17_;
						gchar* _tmp18_;
						_tmp17_ = dino_gettext ("Just now");
						_tmp18_ = g_strdup (_tmp17_);
						result = _tmp18_;
						_g_date_time_unref0 (now);
						return result;
					}
				}
			}
		}
	}
}

GtkWidget*
dino_ui_conversation_summary_conversation_item_skeleton_get_widget (DinoUiConversationSummaryConversationItemSkeleton* self)
{
	GtkGrid* _tmp0_;
	GtkWidget* _tmp1_;
	GtkWidget* result;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_main_grid;
	_tmp1_ = _g_object_ref0 ((GtkWidget*) _tmp0_);
	result = _tmp1_;
	return result;
}

static void
dino_ui_conversation_summary_conversation_item_skeleton_real_dispose (GObject* base)
{
	DinoUiConversationSummaryConversationItemSkeleton * self;
	GtkLabel* _tmp4_;
	GtkLabel* _tmp7_;
	DinoUiAvatarPicture* _tmp10_;
	GtkImage* _tmp13_;
	GtkImage* _tmp16_;
	self = (DinoUiConversationSummaryConversationItemSkeleton*) base;
	if (self->priv->time_update_timeout != ((guint) 0)) {
		g_source_remove (self->priv->time_update_timeout);
		self->priv->time_update_timeout = (guint) 0;
	}
	if (self->priv->updated_roster_handler_id != ((gulong) 0)) {
		DinoStreamInteractor* _tmp0_;
		DinoModuleIdentity* _tmp1_;
		gpointer _tmp2_;
		DinoRosterManager* _tmp3_;
		_tmp0_ = self->stream_interactor;
		_tmp1_ = dino_roster_manager_IDENTITY;
		_tmp2_ = dino_stream_interactor_get_module (_tmp0_, DINO_TYPE_ROSTER_MANAGER, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, _tmp1_);
		_tmp3_ = (DinoRosterManager*) _tmp2_;
		g_signal_handler_disconnect ((GObject*) _tmp3_, self->priv->updated_roster_handler_id);
		_g_object_unref0 (_tmp3_);
		self->priv->updated_roster_handler_id = (gulong) 0;
	}
	_g_object_unref0 (self->priv->reactions_controller);
	self->priv->reactions_controller = NULL;
	_tmp4_ = self->priv->_name_label;
	if (_tmp4_ != NULL) {
		GtkLabel* _tmp5_;
		GtkLabel* _tmp6_;
		_tmp5_ = self->priv->_name_label;
		gtk_widget_unparent ((GtkWidget*) _tmp5_);
		_tmp6_ = self->priv->_name_label;
		g_object_run_dispose ((GObject*) _tmp6_);
		dino_ui_conversation_summary_conversation_item_skeleton_set_name_label (self, NULL);
	}
	_tmp7_ = self->priv->_time_label;
	if (_tmp7_ != NULL) {
		GtkLabel* _tmp8_;
		GtkLabel* _tmp9_;
		_tmp8_ = self->priv->_time_label;
		gtk_widget_unparent ((GtkWidget*) _tmp8_);
		_tmp9_ = self->priv->_time_label;
		g_object_run_dispose ((GObject*) _tmp9_);
		dino_ui_conversation_summary_conversation_item_skeleton_set_time_label (self, NULL);
	}
	_tmp10_ = self->priv->_avatar_picture;
	if (_tmp10_ != NULL) {
		DinoUiAvatarPicture* _tmp11_;
		DinoUiAvatarPicture* _tmp12_;
		_tmp11_ = self->priv->_avatar_picture;
		gtk_widget_unparent ((GtkWidget*) _tmp11_);
		_tmp12_ = self->priv->_avatar_picture;
		g_object_run_dispose ((GObject*) _tmp12_);
		dino_ui_conversation_summary_conversation_item_skeleton_set_avatar_picture (self, NULL);
	}
	_tmp13_ = self->priv->_encryption_image;
	if (_tmp13_ != NULL) {
		GtkImage* _tmp14_;
		GtkImage* _tmp15_;
		_tmp14_ = self->priv->_encryption_image;
		gtk_widget_unparent ((GtkWidget*) _tmp14_);
		_tmp15_ = self->priv->_encryption_image;
		g_object_run_dispose ((GObject*) _tmp15_);
		dino_ui_conversation_summary_conversation_item_skeleton_set_encryption_image (self, NULL);
	}
	_tmp16_ = self->priv->_received_image;
	if (_tmp16_ != NULL) {
		GtkImage* _tmp17_;
		GtkImage* _tmp18_;
		_tmp17_ = self->priv->_received_image;
		gtk_widget_unparent ((GtkWidget*) _tmp17_);
		_tmp18_ = self->priv->_received_image;
		g_object_run_dispose ((GObject*) _tmp18_);
		dino_ui_conversation_summary_conversation_item_skeleton_set_received_image (self, NULL);
	}
	G_OBJECT_CLASS (dino_ui_conversation_summary_conversation_item_skeleton_parent_class)->dispose (G_TYPE_CHECK_INSTANCE_CAST (self, G_TYPE_OBJECT, GObject));
}

GtkGrid*
dino_ui_conversation_summary_conversation_item_skeleton_get_main_grid (DinoUiConversationSummaryConversationItemSkeleton* self)
{
	GtkGrid* result;
	GtkGrid* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_main_grid;
	result = _tmp0_;
	return result;
}

void
dino_ui_conversation_summary_conversation_item_skeleton_set_main_grid (DinoUiConversationSummaryConversationItemSkeleton* self,
                                                                       GtkGrid* value)
{
	GtkGrid* old_value;
	g_return_if_fail (self != NULL);
	old_value = dino_ui_conversation_summary_conversation_item_skeleton_get_main_grid (self);
	if (old_value != value) {
		GtkGrid* _tmp0_;
		_tmp0_ = _g_object_ref0 (value);
		_g_object_unref0 (self->priv->_main_grid);
		self->priv->_main_grid = _tmp0_;
		g_object_notify_by_pspec ((GObject *) self, dino_ui_conversation_summary_conversation_item_skeleton_properties[DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_MAIN_GRID_PROPERTY]);
	}
}

GtkLabel*
dino_ui_conversation_summary_conversation_item_skeleton_get_name_label (DinoUiConversationSummaryConversationItemSkeleton* self)
{
	GtkLabel* result;
	GtkLabel* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_name_label;
	result = _tmp0_;
	return result;
}

void
dino_ui_conversation_summary_conversation_item_skeleton_set_name_label (DinoUiConversationSummaryConversationItemSkeleton* self,
                                                                        GtkLabel* value)
{
	GtkLabel* old_value;
	g_return_if_fail (self != NULL);
	old_value = dino_ui_conversation_summary_conversation_item_skeleton_get_name_label (self);
	if (old_value != value) {
		GtkLabel* _tmp0_;
		_tmp0_ = _g_object_ref0 (value);
		_g_object_unref0 (self->priv->_name_label);
		self->priv->_name_label = _tmp0_;
		g_object_notify_by_pspec ((GObject *) self, dino_ui_conversation_summary_conversation_item_skeleton_properties[DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_NAME_LABEL_PROPERTY]);
	}
}

GtkLabel*
dino_ui_conversation_summary_conversation_item_skeleton_get_time_label (DinoUiConversationSummaryConversationItemSkeleton* self)
{
	GtkLabel* result;
	GtkLabel* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_time_label;
	result = _tmp0_;
	return result;
}

void
dino_ui_conversation_summary_conversation_item_skeleton_set_time_label (DinoUiConversationSummaryConversationItemSkeleton* self,
                                                                        GtkLabel* value)
{
	GtkLabel* old_value;
	g_return_if_fail (self != NULL);
	old_value = dino_ui_conversation_summary_conversation_item_skeleton_get_time_label (self);
	if (old_value != value) {
		GtkLabel* _tmp0_;
		_tmp0_ = _g_object_ref0 (value);
		_g_object_unref0 (self->priv->_time_label);
		self->priv->_time_label = _tmp0_;
		g_object_notify_by_pspec ((GObject *) self, dino_ui_conversation_summary_conversation_item_skeleton_properties[DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_TIME_LABEL_PROPERTY]);
	}
}

DinoUiAvatarPicture*
dino_ui_conversation_summary_conversation_item_skeleton_get_avatar_picture (DinoUiConversationSummaryConversationItemSkeleton* self)
{
	DinoUiAvatarPicture* result;
	DinoUiAvatarPicture* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_avatar_picture;
	result = _tmp0_;
	return result;
}

void
dino_ui_conversation_summary_conversation_item_skeleton_set_avatar_picture (DinoUiConversationSummaryConversationItemSkeleton* self,
                                                                            DinoUiAvatarPicture* value)
{
	DinoUiAvatarPicture* old_value;
	g_return_if_fail (self != NULL);
	old_value = dino_ui_conversation_summary_conversation_item_skeleton_get_avatar_picture (self);
	if (old_value != value) {
		DinoUiAvatarPicture* _tmp0_;
		_tmp0_ = _g_object_ref0 (value);
		_g_object_unref0 (self->priv->_avatar_picture);
		self->priv->_avatar_picture = _tmp0_;
		g_object_notify_by_pspec ((GObject *) self, dino_ui_conversation_summary_conversation_item_skeleton_properties[DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_AVATAR_PICTURE_PROPERTY]);
	}
}

GtkImage*
dino_ui_conversation_summary_conversation_item_skeleton_get_encryption_image (DinoUiConversationSummaryConversationItemSkeleton* self)
{
	GtkImage* result;
	GtkImage* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_encryption_image;
	result = _tmp0_;
	return result;
}

void
dino_ui_conversation_summary_conversation_item_skeleton_set_encryption_image (DinoUiConversationSummaryConversationItemSkeleton* self,
                                                                              GtkImage* value)
{
	GtkImage* old_value;
	g_return_if_fail (self != NULL);
	old_value = dino_ui_conversation_summary_conversation_item_skeleton_get_encryption_image (self);
	if (old_value != value) {
		GtkImage* _tmp0_;
		_tmp0_ = _g_object_ref0 (value);
		_g_object_unref0 (self->priv->_encryption_image);
		self->priv->_encryption_image = _tmp0_;
		g_object_notify_by_pspec ((GObject *) self, dino_ui_conversation_summary_conversation_item_skeleton_properties[DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_ENCRYPTION_IMAGE_PROPERTY]);
	}
}

GtkImage*
dino_ui_conversation_summary_conversation_item_skeleton_get_received_image (DinoUiConversationSummaryConversationItemSkeleton* self)
{
	GtkImage* result;
	GtkImage* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_received_image;
	result = _tmp0_;
	return result;
}

void
dino_ui_conversation_summary_conversation_item_skeleton_set_received_image (DinoUiConversationSummaryConversationItemSkeleton* self,
                                                                            GtkImage* value)
{
	GtkImage* old_value;
	g_return_if_fail (self != NULL);
	old_value = dino_ui_conversation_summary_conversation_item_skeleton_get_received_image (self);
	if (old_value != value) {
		GtkImage* _tmp0_;
		_tmp0_ = _g_object_ref0 (value);
		_g_object_unref0 (self->priv->_received_image);
		self->priv->_received_image = _tmp0_;
		g_object_notify_by_pspec ((GObject *) self, dino_ui_conversation_summary_conversation_item_skeleton_properties[DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_RECEIVED_IMAGE_PROPERTY]);
	}
}

gboolean
dino_ui_conversation_summary_conversation_item_skeleton_get_show_skeleton (DinoUiConversationSummaryConversationItemSkeleton* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->show_skeleton_;
	return result;
}

void
dino_ui_conversation_summary_conversation_item_skeleton_set_show_skeleton (DinoUiConversationSummaryConversationItemSkeleton* self,
                                                                           gboolean value)
{
	gboolean _tmp0_ = FALSE;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	g_return_if_fail (self != NULL);
	if (value) {
		DinoUiConversationSummaryContentMetaItem* _tmp3_;
		_tmp3_ = self->content_meta_item;
		_tmp2_ = _tmp3_ != NULL;
	} else {
		_tmp2_ = FALSE;
	}
	if (_tmp2_) {
		DinoUiConversationSummaryContentMetaItem* _tmp4_;
		gboolean _tmp5_;
		gboolean _tmp6_;
		_tmp4_ = self->content_meta_item;
		_tmp5_ = dino_plugins_meta_conversation_item_get_requires_header ((DinoPluginsMetaConversationItem*) _tmp4_);
		_tmp6_ = _tmp5_;
		_tmp1_ = _tmp6_;
	} else {
		_tmp1_ = FALSE;
	}
	if (_tmp1_) {
		DinoUiConversationSummaryContentMetaItem* _tmp7_;
		gboolean _tmp8_;
		gboolean _tmp9_;
		_tmp7_ = self->content_meta_item;
		_tmp8_ = dino_plugins_meta_conversation_item_get_requires_avatar ((DinoPluginsMetaConversationItem*) _tmp7_);
		_tmp9_ = _tmp8_;
		_tmp0_ = _tmp9_;
	} else {
		_tmp0_ = FALSE;
	}
	self->priv->show_skeleton_ = _tmp0_;
	g_object_notify_by_pspec ((GObject *) self, dino_ui_conversation_summary_conversation_item_skeleton_properties[DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_SHOW_SKELETON_PROPERTY]);
}

DinoEntitiesConversation*
dino_ui_conversation_summary_conversation_item_skeleton_get_conversation (DinoUiConversationSummaryConversationItemSkeleton* self)
{
	DinoEntitiesConversation* result;
	DinoEntitiesConversation* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_conversation;
	result = _tmp0_;
	return result;
}

void
dino_ui_conversation_summary_conversation_item_skeleton_set_conversation (DinoUiConversationSummaryConversationItemSkeleton* self,
                                                                          DinoEntitiesConversation* value)
{
	DinoEntitiesConversation* old_value;
	g_return_if_fail (self != NULL);
	old_value = dino_ui_conversation_summary_conversation_item_skeleton_get_conversation (self);
	if (old_value != value) {
		DinoEntitiesConversation* _tmp0_;
		_tmp0_ = _g_object_ref0 (value);
		_g_object_unref0 (self->priv->_conversation);
		self->priv->_conversation = _tmp0_;
		g_object_notify_by_pspec ((GObject *) self, dino_ui_conversation_summary_conversation_item_skeleton_properties[DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_CONVERSATION_PROPERTY]);
	}
}

gboolean
dino_ui_conversation_summary_conversation_item_skeleton_get_item_in_edit_mode (DinoUiConversationSummaryConversationItemSkeleton* self)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	result = self->priv->_item_in_edit_mode;
	return result;
}

void
dino_ui_conversation_summary_conversation_item_skeleton_set_item_in_edit_mode (DinoUiConversationSummaryConversationItemSkeleton* self,
                                                                               gboolean value)
{
	gboolean old_value;
	g_return_if_fail (self != NULL);
	old_value = dino_ui_conversation_summary_conversation_item_skeleton_get_item_in_edit_mode (self);
	if (old_value != value) {
		self->priv->_item_in_edit_mode = value;
		g_object_notify_by_pspec ((GObject *) self, dino_ui_conversation_summary_conversation_item_skeleton_properties[DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_ITEM_IN_EDIT_MODE_PROPERTY]);
	}
}

DinoEntitiesMessageMarked
dino_ui_conversation_summary_conversation_item_skeleton_get_item_mark (DinoUiConversationSummaryConversationItemSkeleton* self)
{
	DinoEntitiesMessageMarked result;
	g_return_val_if_fail (self != NULL, 0);
	result = self->priv->_item_mark;
	return result;
}

void
dino_ui_conversation_summary_conversation_item_skeleton_set_item_mark (DinoUiConversationSummaryConversationItemSkeleton* self,
                                                                       DinoEntitiesMessageMarked value)
{
	DinoEntitiesMessageMarked old_value;
	g_return_if_fail (self != NULL);
	old_value = dino_ui_conversation_summary_conversation_item_skeleton_get_item_mark (self);
	if (old_value != value) {
		self->priv->_item_mark = value;
		g_object_notify_by_pspec ((GObject *) self, dino_ui_conversation_summary_conversation_item_skeleton_properties[DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_ITEM_MARK_PROPERTY]);
	}
}

static void
dino_ui_conversation_summary_conversation_item_skeleton_class_init (DinoUiConversationSummaryConversationItemSkeletonClass * klass,
                                                                    gpointer klass_data)
{
	dino_ui_conversation_summary_conversation_item_skeleton_parent_class = g_type_class_peek_parent (klass);
	g_type_class_adjust_private_offset (klass, &DinoUiConversationSummaryConversationItemSkeleton_private_offset);
	((GObjectClass *) klass)->dispose = (void (*) (GObject*)) dino_ui_conversation_summary_conversation_item_skeleton_real_dispose;
	G_OBJECT_CLASS (klass)->get_property = _vala_dino_ui_conversation_summary_conversation_item_skeleton_get_property;
	G_OBJECT_CLASS (klass)->set_property = _vala_dino_ui_conversation_summary_conversation_item_skeleton_set_property;
	G_OBJECT_CLASS (klass)->finalize = dino_ui_conversation_summary_conversation_item_skeleton_finalize;
	g_object_class_install_property (G_OBJECT_CLASS (klass), DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_MAIN_GRID_PROPERTY, dino_ui_conversation_summary_conversation_item_skeleton_properties[DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_MAIN_GRID_PROPERTY] = g_param_spec_object ("main-grid", "main-grid", "main-grid", gtk_grid_get_type (), G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_NAME_LABEL_PROPERTY, dino_ui_conversation_summary_conversation_item_skeleton_properties[DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_NAME_LABEL_PROPERTY] = g_param_spec_object ("name-label", "name-label", "name-label", gtk_label_get_type (), G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_TIME_LABEL_PROPERTY, dino_ui_conversation_summary_conversation_item_skeleton_properties[DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_TIME_LABEL_PROPERTY] = g_param_spec_object ("time-label", "time-label", "time-label", gtk_label_get_type (), G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_AVATAR_PICTURE_PROPERTY, dino_ui_conversation_summary_conversation_item_skeleton_properties[DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_AVATAR_PICTURE_PROPERTY] = g_param_spec_object ("avatar-picture", "avatar-picture", "avatar-picture", DINO_UI_TYPE_AVATAR_PICTURE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_ENCRYPTION_IMAGE_PROPERTY, dino_ui_conversation_summary_conversation_item_skeleton_properties[DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_ENCRYPTION_IMAGE_PROPERTY] = g_param_spec_object ("encryption-image", "encryption-image", "encryption-image", gtk_image_get_type (), G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_RECEIVED_IMAGE_PROPERTY, dino_ui_conversation_summary_conversation_item_skeleton_properties[DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_RECEIVED_IMAGE_PROPERTY] = g_param_spec_object ("received-image", "received-image", "received-image", gtk_image_get_type (), G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_SHOW_SKELETON_PROPERTY, dino_ui_conversation_summary_conversation_item_skeleton_properties[DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_SHOW_SKELETON_PROPERTY] = g_param_spec_boolean ("show-skeleton", "show-skeleton", "show-skeleton", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_CONVERSATION_PROPERTY, dino_ui_conversation_summary_conversation_item_skeleton_properties[DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_CONVERSATION_PROPERTY] = g_param_spec_object ("conversation", "conversation", "conversation", DINO_ENTITIES_TYPE_CONVERSATION, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_ITEM_IN_EDIT_MODE_PROPERTY, dino_ui_conversation_summary_conversation_item_skeleton_properties[DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_ITEM_IN_EDIT_MODE_PROPERTY] = g_param_spec_boolean ("item-in-edit-mode", "item-in-edit-mode", "item-in-edit-mode", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_ITEM_MARK_PROPERTY, dino_ui_conversation_summary_conversation_item_skeleton_properties[DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_ITEM_MARK_PROPERTY] = g_param_spec_enum ("item-mark", "item-mark", "item-mark", DINO_ENTITIES_MESSAGE_TYPE_MARKED, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
}

static void
dino_ui_conversation_summary_conversation_item_skeleton_dino_plugins_conversation_item_widget_interface_interface_init (DinoPluginsConversationItemWidgetInterfaceIface * iface,
                                                                                                                        gpointer iface_data)
{
	dino_ui_conversation_summary_conversation_item_skeleton_dino_plugins_conversation_item_widget_interface_parent_iface = g_type_interface_peek_parent (iface);
	iface->set_widget = (void (*) (DinoPluginsConversationItemWidgetInterface*, GObject*, DinoPluginsWidgetType, gint)) dino_ui_conversation_summary_conversation_item_skeleton_real_set_widget;
}

static void
dino_ui_conversation_summary_conversation_item_skeleton_instance_init (DinoUiConversationSummaryConversationItemSkeleton * self,
                                                                       gpointer klass)
{
	GeeHashMap* _tmp0_;
	self->priv = dino_ui_conversation_summary_conversation_item_skeleton_get_instance_private (self);
	_tmp0_ = gee_hash_map_new (G_TYPE_INT, NULL, NULL, gtk_widget_get_type (), (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
	self->priv->content_widgets = _tmp0_;
	self->priv->show_skeleton_ = FALSE;
	self->content_meta_item = NULL;
	self->widget = NULL;
	self->priv->reactions_controller = NULL;
	self->priv->time_update_timeout = (guint) 0;
	self->priv->updated_roster_handler_id = (gulong) 0;
}

static void
dino_ui_conversation_summary_conversation_item_skeleton_finalize (GObject * obj)
{
	DinoUiConversationSummaryConversationItemSkeleton * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, DINO_UI_CONVERSATION_SUMMARY_TYPE_CONVERSATION_ITEM_SKELETON, DinoUiConversationSummaryConversationItemSkeleton);
	_g_object_unref0 (self->priv->_main_grid);
	_g_object_unref0 (self->priv->_name_label);
	_g_object_unref0 (self->priv->_time_label);
	_g_object_unref0 (self->priv->_avatar_picture);
	_g_object_unref0 (self->priv->_encryption_image);
	_g_object_unref0 (self->priv->_received_image);
	_g_object_unref0 (self->priv->content_widgets);
	_g_object_unref0 (self->stream_interactor);
	_g_object_unref0 (self->priv->_conversation);
	_g_object_unref0 (self->item);
	_g_object_unref0 (self->content_meta_item);
	_g_object_unref0 (self->widget);
	_g_object_unref0 (self->priv->reactions_controller);
	G_OBJECT_CLASS (dino_ui_conversation_summary_conversation_item_skeleton_parent_class)->finalize (obj);
}

static GType
dino_ui_conversation_summary_conversation_item_skeleton_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (DinoUiConversationSummaryConversationItemSkeletonClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) dino_ui_conversation_summary_conversation_item_skeleton_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (DinoUiConversationSummaryConversationItemSkeleton), 0, (GInstanceInitFunc) dino_ui_conversation_summary_conversation_item_skeleton_instance_init, NULL };
	static const GInterfaceInfo dino_plugins_conversation_item_widget_interface_info = { (GInterfaceInitFunc) dino_ui_conversation_summary_conversation_item_skeleton_dino_plugins_conversation_item_widget_interface_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
	GType dino_ui_conversation_summary_conversation_item_skeleton_type_id;
	dino_ui_conversation_summary_conversation_item_skeleton_type_id = g_type_register_static (G_TYPE_OBJECT, "DinoUiConversationSummaryConversationItemSkeleton", &g_define_type_info, 0);
	g_type_add_interface_static (dino_ui_conversation_summary_conversation_item_skeleton_type_id, DINO_PLUGINS_TYPE_CONVERSATION_ITEM_WIDGET_INTERFACE, &dino_plugins_conversation_item_widget_interface_info);
	DinoUiConversationSummaryConversationItemSkeleton_private_offset = g_type_add_instance_private (dino_ui_conversation_summary_conversation_item_skeleton_type_id, sizeof (DinoUiConversationSummaryConversationItemSkeletonPrivate));
	return dino_ui_conversation_summary_conversation_item_skeleton_type_id;
}

GType
dino_ui_conversation_summary_conversation_item_skeleton_get_type (void)
{
	static volatile gsize dino_ui_conversation_summary_conversation_item_skeleton_type_id__once = 0;
	if (g_once_init_enter (&dino_ui_conversation_summary_conversation_item_skeleton_type_id__once)) {
		GType dino_ui_conversation_summary_conversation_item_skeleton_type_id;
		dino_ui_conversation_summary_conversation_item_skeleton_type_id = dino_ui_conversation_summary_conversation_item_skeleton_get_type_once ();
		g_once_init_leave (&dino_ui_conversation_summary_conversation_item_skeleton_type_id__once, dino_ui_conversation_summary_conversation_item_skeleton_type_id);
	}
	return dino_ui_conversation_summary_conversation_item_skeleton_type_id__once;
}

static void
_vala_dino_ui_conversation_summary_conversation_item_skeleton_get_property (GObject * object,
                                                                            guint property_id,
                                                                            GValue * value,
                                                                            GParamSpec * pspec)
{
	DinoUiConversationSummaryConversationItemSkeleton * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, DINO_UI_CONVERSATION_SUMMARY_TYPE_CONVERSATION_ITEM_SKELETON, DinoUiConversationSummaryConversationItemSkeleton);
	switch (property_id) {
		case DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_MAIN_GRID_PROPERTY:
		g_value_set_object (value, dino_ui_conversation_summary_conversation_item_skeleton_get_main_grid (self));
		break;
		case DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_NAME_LABEL_PROPERTY:
		g_value_set_object (value, dino_ui_conversation_summary_conversation_item_skeleton_get_name_label (self));
		break;
		case DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_TIME_LABEL_PROPERTY:
		g_value_set_object (value, dino_ui_conversation_summary_conversation_item_skeleton_get_time_label (self));
		break;
		case DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_AVATAR_PICTURE_PROPERTY:
		g_value_set_object (value, dino_ui_conversation_summary_conversation_item_skeleton_get_avatar_picture (self));
		break;
		case DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_ENCRYPTION_IMAGE_PROPERTY:
		g_value_set_object (value, dino_ui_conversation_summary_conversation_item_skeleton_get_encryption_image (self));
		break;
		case DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_RECEIVED_IMAGE_PROPERTY:
		g_value_set_object (value, dino_ui_conversation_summary_conversation_item_skeleton_get_received_image (self));
		break;
		case DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_SHOW_SKELETON_PROPERTY:
		g_value_set_boolean (value, dino_ui_conversation_summary_conversation_item_skeleton_get_show_skeleton (self));
		break;
		case DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_CONVERSATION_PROPERTY:
		g_value_set_object (value, dino_ui_conversation_summary_conversation_item_skeleton_get_conversation (self));
		break;
		case DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_ITEM_IN_EDIT_MODE_PROPERTY:
		g_value_set_boolean (value, dino_ui_conversation_summary_conversation_item_skeleton_get_item_in_edit_mode (self));
		break;
		case DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_ITEM_MARK_PROPERTY:
		g_value_set_enum (value, dino_ui_conversation_summary_conversation_item_skeleton_get_item_mark (self));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

static void
_vala_dino_ui_conversation_summary_conversation_item_skeleton_set_property (GObject * object,
                                                                            guint property_id,
                                                                            const GValue * value,
                                                                            GParamSpec * pspec)
{
	DinoUiConversationSummaryConversationItemSkeleton * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, DINO_UI_CONVERSATION_SUMMARY_TYPE_CONVERSATION_ITEM_SKELETON, DinoUiConversationSummaryConversationItemSkeleton);
	switch (property_id) {
		case DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_MAIN_GRID_PROPERTY:
		dino_ui_conversation_summary_conversation_item_skeleton_set_main_grid (self, g_value_get_object (value));
		break;
		case DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_NAME_LABEL_PROPERTY:
		dino_ui_conversation_summary_conversation_item_skeleton_set_name_label (self, g_value_get_object (value));
		break;
		case DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_TIME_LABEL_PROPERTY:
		dino_ui_conversation_summary_conversation_item_skeleton_set_time_label (self, g_value_get_object (value));
		break;
		case DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_AVATAR_PICTURE_PROPERTY:
		dino_ui_conversation_summary_conversation_item_skeleton_set_avatar_picture (self, g_value_get_object (value));
		break;
		case DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_ENCRYPTION_IMAGE_PROPERTY:
		dino_ui_conversation_summary_conversation_item_skeleton_set_encryption_image (self, g_value_get_object (value));
		break;
		case DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_RECEIVED_IMAGE_PROPERTY:
		dino_ui_conversation_summary_conversation_item_skeleton_set_received_image (self, g_value_get_object (value));
		break;
		case DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_SHOW_SKELETON_PROPERTY:
		dino_ui_conversation_summary_conversation_item_skeleton_set_show_skeleton (self, g_value_get_boolean (value));
		break;
		case DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_CONVERSATION_PROPERTY:
		dino_ui_conversation_summary_conversation_item_skeleton_set_conversation (self, g_value_get_object (value));
		break;
		case DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_ITEM_IN_EDIT_MODE_PROPERTY:
		dino_ui_conversation_summary_conversation_item_skeleton_set_item_in_edit_mode (self, g_value_get_boolean (value));
		break;
		case DINO_UI_CONVERSATION_SUMMARY_CONVERSATION_ITEM_SKELETON_ITEM_MARK_PROPERTY:
		dino_ui_conversation_summary_conversation_item_skeleton_set_item_mark (self, g_value_get_enum (value));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

static inline gpointer
_vala_memdup2 (gconstpointer mem,
               gsize byte_size)
{
	gpointer new_mem;
	if (mem && byte_size != 0) {
		new_mem = g_malloc (byte_size);
		memcpy (new_mem, mem, byte_size);
	} else {
		new_mem = NULL;
	}
	return new_mem;
}

