/* user-view.c generated by valac 0.16.0, the Vala compiler
* generated from user-view.vala, do not modify */
/*
* Copyright (C) 2010 Neil Jagdish Patel
*
* This library is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License
* version 3.0 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License version 3.0 for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library. If not, see
* .
*
* Authored by Ken VanDine
*/
#include
#include
#include "gwibber-gtk.h"
#include
#include
#include "gwibber.h"
#include
#include
#include
#include
#include
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
#define __g_list_free__g_object_unref0_0(var) ((var == NULL) ? NULL : (var = (_g_list_free__g_object_unref0_ (var), NULL)))
#define __g_slist_free__g_object_unref0_0(var) ((var == NULL) ? NULL : (var = (_g_slist_free__g_object_unref0_ (var), NULL)))
typedef struct _Block8Data Block8Data;
#define _g_free0(var) (var = (g_free (var), NULL))
struct _GwibberGtkUserViewPrivate {
GtkAdjustment* adjustment;
GtkVScrollbar* scrollbar;
GwibberGtkTileBox* view_box;
gint _position;
gint tiles_visible;
guint refresh_id;
gboolean _showing;
GList* streams_list;
GSList* tiles;
gint last_width;
gint last_height;
};
struct _Block8Data {
int _ref_count_;
GwibberGtkUserView * self;
guint n_rows;
};
static gpointer gwibber_gtk_user_view_parent_class = NULL;
#define GWIBBER_GTK_USER_VIEW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GWIBBER_GTK_TYPE_USER_VIEW, GwibberGtkUserViewPrivate))
enum {
GWIBBER_GTK_USER_VIEW_DUMMY_PROPERTY,
GWIBBER_GTK_USER_VIEW_POSITION,
GWIBBER_GTK_USER_VIEW_SHOWING
};
static void _g_object_unref0_ (gpointer var);
static void _g_list_free__g_object_unref0_ (GList* self);
static void _g_slist_free__g_object_unref0_ (GSList* self);
static void gwibber_gtk_user_view_real_get_preferred_height_for_width (GtkWidget* base, gint width, gint* mh, gint* nh);
static void gwibber_gtk_user_view_real_get_preferred_height (GtkWidget* base, gint* mh, gint* nh);
static void gwibber_gtk_user_view_refresh (GwibberGtkUserView* self);
static gboolean ___lambda58_ (GwibberGtkUserView* self);
static void gwibber_gtk_user_view_do_refresh (GwibberGtkUserView* self);
static gboolean ____lambda58__gsource_func (gpointer self);
static Block8Data* block8_data_ref (Block8Data* _data8_);
static void block8_data_unref (void * _userdata_);
static void gwibber_gtk_user_view_fill_up_remaining_space (GwibberGtkUserView* self);
static gboolean __lambda64_ (Block8Data* _data8_);
static gboolean ___lambda64__gsource_func (gpointer self);
static void ___lambda62_ (GwibberGtkUserView* self, const gchar* id, const gchar* name);
static void ____lambda62__gwibber_gtk_user_view_tile_show_transient (GwibberGtkUserViewTile* _sender, const gchar* id, const gchar* name, gpointer self);
static gboolean __lambda63_ (GwibberGtkUserView* self);
static gboolean ___lambda63__gsource_func (gpointer self);
static void gwibber_gtk_user_view_real_show_transient (GwibberGtkUserView* self, const gchar* id, const gchar* name);
static void g_cclosure_user_marshal_VOID__STRING_STRING (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data);
static GObject * gwibber_gtk_user_view_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties);
static void _gwibber_gtk_user_view___lambda65_ (GwibberGtkUserView* self);
static void __gwibber_gtk_user_view___lambda65__g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self);
static gboolean _gwibber_gtk_user_view___lambda66_ (GwibberGtkUserView* self, GtkWidget* source, GdkEventScroll* event);
static gboolean __gwibber_gtk_user_view___lambda66__gtk_widget_scroll_event (GtkWidget* _sender, GdkEventScroll* event, gpointer self);
static gboolean _gwibber_gtk_user_view___lambda67_ (GwibberGtkUserView* self, GtkWidget* source, GdkEventKey* event);
static gboolean __gwibber_gtk_user_view___lambda67__gtk_widget_key_press_event (GtkWidget* _sender, GdkEventKey* event, gpointer self);
static void _gwibber_gtk_user_view______lambda68_ (GwibberGtkUserView* self, const gchar* id, const gchar* name);
static void __gwibber_gtk_user_view______lambda68__gwibber_gtk_user_view_tile_show_transient (GwibberGtkUserViewTile* _sender, const gchar* id, const gchar* name, gpointer self);
static void _gwibber_gtk_user_view___lambda69_ (GwibberGtkUserView* self, GtkAllocation* a);
static void __gwibber_gtk_user_view___lambda69__gtk_widget_size_allocate (GtkWidget* _sender, GtkAllocation* allocation, gpointer self);
static void _gwibber_gtk_user_view___lambda70_ (GwibberGtkUserView* self, const gchar* id);
static void __gwibber_gtk_user_view___lambda70__gwibber_streams_created (GwibberStreams* _sender, const gchar* id, gpointer self);
static void _gwibber_gtk_user_view___lambda71_ (GwibberGtkUserView* self, const gchar* id);
static void __gwibber_gtk_user_view___lambda71__gwibber_streams_updated (GwibberStreams* _sender, const gchar* id, gpointer self);
static void _gwibber_gtk_user_view___lambda72_ (GwibberGtkUserView* self, const gchar* id);
static void __gwibber_gtk_user_view___lambda72__gwibber_streams_deleted (GwibberStreams* _sender, const gchar* id, gpointer self);
static void gwibber_gtk_user_view_finalize (GObject* obj);
static void _vala_gwibber_gtk_user_view_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
static void _vala_gwibber_gtk_user_view_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec);
static void _g_object_unref0_ (gpointer var) {
(var == NULL) ? NULL : (var = (g_object_unref (var), NULL));
}
static void _g_list_free__g_object_unref0_ (GList* self) {
g_list_foreach (self, (GFunc) _g_object_unref0_, NULL);
g_list_free (self);
}
static void _g_slist_free__g_object_unref0_ (GSList* self) {
g_slist_foreach (self, (GFunc) _g_object_unref0_, NULL);
g_slist_free (self);
}
GwibberGtkUserView* gwibber_gtk_user_view_construct (GType object_type) {
GwibberGtkUserView * self = NULL;
self = (GwibberGtkUserView*) g_object_new (object_type, "homogeneous", FALSE, "spacing", 0, NULL);
return self;
}
GwibberGtkUserView* gwibber_gtk_user_view_new (void) {
return gwibber_gtk_user_view_construct (GWIBBER_GTK_TYPE_USER_VIEW);
}
static void gwibber_gtk_user_view_real_get_preferred_height_for_width (GtkWidget* base, gint width, gint* mh, gint* nh) {
GwibberGtkUserView * self;
gint _vala_mh = 0;
gint _vala_nh = 0;
gint _tmp0_;
self = (GwibberGtkUserView*) base;
_tmp0_ = self->priv->last_height;
_vala_nh = _tmp0_;
_vala_mh = _vala_nh;
if (mh) {
*mh = _vala_mh;
}
if (nh) {
*nh = _vala_nh;
}
}
static void gwibber_gtk_user_view_real_get_preferred_height (GtkWidget* base, gint* mh, gint* nh) {
GwibberGtkUserView * self;
gint _vala_mh = 0;
gint _vala_nh = 0;
gint _tmp0_;
self = (GwibberGtkUserView*) base;
_tmp0_ = self->priv->last_height;
_vala_nh = _tmp0_;
_vala_mh = _vala_nh;
if (mh) {
*mh = _vala_mh;
}
if (nh) {
*nh = _vala_nh;
}
}
static gboolean ___lambda58_ (GwibberGtkUserView* self) {
gboolean result = FALSE;
gwibber_gtk_user_view_do_refresh (self);
self->priv->refresh_id = (guint) 0;
result = FALSE;
return result;
}
static gboolean ____lambda58__gsource_func (gpointer self) {
gboolean result;
result = ___lambda58_ (self);
return result;
}
static void gwibber_gtk_user_view_refresh (GwibberGtkUserView* self) {
guint _tmp0_;
g_return_if_fail (self != NULL);
_tmp0_ = self->priv->refresh_id;
if (_tmp0_ == ((guint) 0)) {
guint _tmp1_ = 0U;
_tmp1_ = g_idle_add_full (G_PRIORITY_DEFAULT_IDLE, ____lambda58__gsource_func, g_object_ref (self), g_object_unref);
self->priv->refresh_id = _tmp1_;
}
}
static Block8Data* block8_data_ref (Block8Data* _data8_) {
g_atomic_int_inc (&_data8_->_ref_count_);
return _data8_;
}
static void block8_data_unref (void * _userdata_) {
Block8Data* _data8_;
_data8_ = (Block8Data*) _userdata_;
if (g_atomic_int_dec_and_test (&_data8_->_ref_count_)) {
GwibberGtkUserView * self;
self = _data8_->self;
_g_object_unref0 (self);
g_slice_free (Block8Data, _data8_);
}
}
static gpointer _g_object_ref0 (gpointer self) {
return self ? g_object_ref (self) : NULL;
}
static gboolean __lambda64_ (Block8Data* _data8_) {
GwibberGtkUserView * self;
gboolean result = FALSE;
GtkAdjustment* _tmp0_;
guint _tmp1_;
self = _data8_->self;
gtk_widget_queue_draw ((GtkWidget*) self);
_tmp0_ = self->priv->adjustment;
_tmp1_ = _data8_->n_rows;
gtk_adjustment_set_upper (_tmp0_, (gdouble) _tmp1_);
result = FALSE;
return result;
}
static gboolean ___lambda64__gsource_func (gpointer self) {
gboolean result;
result = __lambda64_ (self);
return result;
}
static void gwibber_gtk_user_view_do_refresh (GwibberGtkUserView* self) {
Block8Data* _data8_;
gint i;
GwibberStreams* _tmp0_;
GList* _tmp1_ = NULL;
GList* _tmp2_;
guint _tmp3_ = 0U;
GSList* _tmp4_;
g_return_if_fail (self != NULL);
_data8_ = g_slice_new0 (Block8Data);
_data8_->_ref_count_ = 1;
_data8_->self = g_object_ref (self);
i = 0;
gwibber_gtk_user_view_fill_up_remaining_space (self);
_tmp0_ = self->streams;
_tmp1_ = gwibber_streams_list (_tmp0_);
__g_list_free__g_object_unref0_0 (self->priv->streams_list);
self->priv->streams_list = _tmp1_;
_tmp2_ = self->priv->streams_list;
_tmp3_ = g_list_length (_tmp2_);
_data8_->n_rows = _tmp3_;
_tmp4_ = self->priv->tiles;
{
GSList* tile_collection = NULL;
GSList* tile_it = NULL;
tile_collection = _tmp4_;
for (tile_it = tile_collection; tile_it != NULL; tile_it = tile_it->next) {
GwibberGtkUserViewTile* _tmp5_;
GwibberGtkUserViewTile* tile = NULL;
_tmp5_ = _g_object_ref0 ((GwibberGtkUserViewTile*) tile_it->data);
tile = _tmp5_;
{
gboolean _tmp6_ = FALSE;
GList* _tmp7_;
gint _tmp8_;
gint _tmp9_;
gint _tmp10_;
gconstpointer _tmp11_ = NULL;
gboolean _tmp16_;
gint _tmp28_;
_tmp7_ = self->priv->streams_list;
_tmp8_ = gwibber_gtk_user_view_get_position (self);
_tmp9_ = _tmp8_;
_tmp10_ = i;
_tmp11_ = g_list_nth_data (_tmp7_, (guint) (_tmp9_ + _tmp10_));
if (((GeeHashMap*) _tmp11_) != NULL) {
gint _tmp12_;
gint _tmp13_;
gint _tmp14_;
guint _tmp15_;
_tmp12_ = gwibber_gtk_user_view_get_position (self);
_tmp13_ = _tmp12_;
_tmp14_ = i;
_tmp15_ = _data8_->n_rows;
_tmp6_ = (_tmp13_ + _tmp14_) < ((gint) _tmp15_);
} else {
_tmp6_ = FALSE;
}
_tmp16_ = _tmp6_;
if (_tmp16_) {
GwibberGtkUserViewTile* _tmp17_;
GList* _tmp18_;
gint _tmp19_;
gint _tmp20_;
gint _tmp21_;
gconstpointer _tmp22_ = NULL;
gint _tmp23_;
GwibberGtkUserViewTile* _tmp24_;
GwibberGtkUserViewTile* _tmp25_;
_tmp17_ = tile;
_tmp18_ = self->priv->streams_list;
_tmp19_ = gwibber_gtk_user_view_get_position (self);
_tmp20_ = _tmp19_;
_tmp21_ = i;
_tmp22_ = g_list_nth_data (_tmp18_, (guint) (_tmp20_ + _tmp21_));
gwibber_gtk_user_view_tile_set_details (_tmp17_, (GeeHashMap*) _tmp22_);
_tmp23_ = i;
self->priv->tiles_visible = _tmp23_ + 1;
_tmp24_ = tile;
gtk_widget_set_no_show_all ((GtkWidget*) _tmp24_, FALSE);
_tmp25_ = tile;
gtk_widget_show_all ((GtkWidget*) _tmp25_);
} else {
GwibberGtkUserViewTile* _tmp26_;
GwibberGtkUserViewTile* _tmp27_;
_tmp26_ = tile;
gtk_widget_set_no_show_all ((GtkWidget*) _tmp26_, TRUE);
_tmp27_ = tile;
gwibber_gtk_user_view_tile_reset (_tmp27_);
}
_tmp28_ = i;
i = _tmp28_ + 1;
_g_object_unref0 (tile);
}
}
}
g_timeout_add_full (G_PRIORITY_DEFAULT, (guint) 10, ___lambda64__gsource_func, block8_data_ref (_data8_), block8_data_unref);
block8_data_unref (_data8_);
_data8_ = NULL;
}
static void ___lambda62_ (GwibberGtkUserView* self, const gchar* id, const gchar* name) {
const gchar* _tmp0_;
const gchar* _tmp1_;
g_return_if_fail (id != NULL);
g_return_if_fail (name != NULL);
_tmp0_ = id;
_tmp1_ = name;
g_signal_emit_by_name (self, "show-transient", _tmp0_, _tmp1_);
}
static void ____lambda62__gwibber_gtk_user_view_tile_show_transient (GwibberGtkUserViewTile* _sender, const gchar* id, const gchar* name, gpointer self) {
___lambda62_ (self, id, name);
}
static gboolean __lambda63_ (GwibberGtkUserView* self) {
gboolean result = FALSE;
gtk_widget_queue_draw ((GtkWidget*) self);
result = FALSE;
return result;
}
static gboolean ___lambda63__gsource_func (gpointer self) {
gboolean result;
result = __lambda63_ (self);
return result;
}
static void gwibber_gtk_user_view_fill_up_remaining_space (GwibberGtkUserView* self) {
GtkAllocation alloc = {0};
gint overall_height;
gboolean one_was_hidden;
GList* _tmp0_;
guint _tmp1_ = 0U;
guint n_rows;
GwibberGtkTileBox* _tmp2_;
GtkAllocation _tmp3_ = {0};
GSList* _tmp4_;
gboolean _tmp13_ = FALSE;
gboolean _tmp14_ = FALSE;
GtkAllocation _tmp15_;
gint _tmp16_;
gint _tmp17_;
gboolean _tmp19_;
gboolean _tmp23_;
g_return_if_fail (self != NULL);
overall_height = 0;
one_was_hidden = FALSE;
_tmp0_ = self->priv->streams_list;
_tmp1_ = g_list_length (_tmp0_);
n_rows = _tmp1_;
_tmp2_ = self->priv->view_box;
gtk_widget_get_allocation ((GtkWidget*) _tmp2_, &_tmp3_);
alloc = _tmp3_;
_tmp4_ = self->priv->tiles;
{
GSList* tile_collection = NULL;
GSList* tile_it = NULL;
tile_collection = _tmp4_;
for (tile_it = tile_collection; tile_it != NULL; tile_it = tile_it->next) {
GwibberGtkUserViewTile* _tmp5_;
GwibberGtkUserViewTile* tile = NULL;
_tmp5_ = _g_object_ref0 ((GwibberGtkUserViewTile*) tile_it->data);
tile = _tmp5_;
{
GtkAllocation a = {0};
GwibberGtkUserViewTile* _tmp6_;
gboolean _tmp7_ = FALSE;
_tmp6_ = tile;
_tmp7_ = gtk_widget_get_visible ((GtkWidget*) _tmp6_);
if (_tmp7_) {
GwibberGtkUserViewTile* _tmp8_;
GtkAllocation _tmp9_ = {0};
gint _tmp10_;
GtkAllocation _tmp11_;
gint _tmp12_;
_tmp8_ = tile;
gtk_widget_get_allocation ((GtkWidget*) _tmp8_, &_tmp9_);
a = _tmp9_;
_tmp10_ = overall_height;
_tmp11_ = a;
_tmp12_ = _tmp11_.height;
overall_height = _tmp10_ + _tmp12_;
} else {
one_was_hidden = TRUE;
}
_g_object_unref0 (tile);
}
}
}
_tmp15_ = alloc;
_tmp16_ = _tmp15_.height;
_tmp17_ = overall_height;
if (_tmp16_ > _tmp17_) {
gboolean _tmp18_;
_tmp18_ = one_was_hidden;
_tmp14_ = !_tmp18_;
} else {
_tmp14_ = FALSE;
}
_tmp19_ = _tmp14_;
if (_tmp19_) {
GSList* _tmp20_;
guint _tmp21_ = 0U;
guint _tmp22_;
_tmp20_ = self->priv->tiles;
_tmp21_ = g_slist_length (_tmp20_);
_tmp22_ = n_rows;
_tmp13_ = ((gint) _tmp21_) < ((gint) _tmp22_);
} else {
_tmp13_ = FALSE;
}
_tmp23_ = _tmp13_;
if (_tmp23_) {
GwibberStreams* _tmp24_;
GwibberGtkUserViewTile* _tmp25_;
GwibberGtkUserViewTile* _tmp26_;
GwibberGtkUserViewTile* tile;
GwibberGtkUserViewTile* _tmp27_;
GwibberGtkUserViewTile* _tmp28_;
GwibberGtkTileBox* _tmp29_;
GwibberGtkUserViewTile* _tmp30_;
GwibberGtkUserViewTile* _tmp31_;
GwibberGtkUserViewTile* _tmp32_;
_tmp24_ = self->streams;
_tmp25_ = gwibber_gtk_user_view_tile_new (_tmp24_);
_tmp26_ = g_object_ref_sink (_tmp25_);
tile = _tmp26_;
_tmp27_ = tile;
g_signal_connect_object (_tmp27_, "show-transient", (GCallback) ____lambda62__gwibber_gtk_user_view_tile_show_transient, self, 0);
_tmp28_ = tile;
gtk_widget_show ((GtkWidget*) _tmp28_);
_tmp29_ = self->priv->view_box;
_tmp30_ = tile;
gtk_box_pack_start ((GtkBox*) _tmp29_, (GtkWidget*) _tmp30_, FALSE, FALSE, (guint) 0);
_tmp31_ = tile;
_tmp32_ = _g_object_ref0 (_tmp31_);
self->priv->tiles = g_slist_append (self->priv->tiles, _tmp32_);
gwibber_gtk_user_view_do_refresh (self);
_g_object_unref0 (tile);
}
g_timeout_add_full (G_PRIORITY_DEFAULT, (guint) 0, ___lambda63__gsource_func, g_object_ref (self), g_object_unref);
}
gint gwibber_gtk_user_view_get_position (GwibberGtkUserView* self) {
gint result;
gint _tmp0_;
g_return_val_if_fail (self != NULL, 0);
_tmp0_ = self->priv->_position;
result = _tmp0_;
return result;
}
void gwibber_gtk_user_view_set_position (GwibberGtkUserView* self, gint value) {
gint _tmp0_;
gint _tmp1_;
g_return_if_fail (self != NULL);
_tmp0_ = self->priv->_position;
_tmp1_ = value;
if (_tmp0_ != _tmp1_) {
gint _tmp2_;
gint _tmp3_;
GList* _tmp4_;
guint _tmp5_ = 0U;
gint _tmp6_ = 0;
gint _tmp7_;
GtkAdjustment* _tmp8_;
gdouble _tmp9_ = 0.0;
_tmp2_ = value;
self->priv->_position = _tmp2_;
_tmp3_ = self->priv->_position;
_tmp4_ = self->priv->streams_list;
_tmp5_ = g_list_length (_tmp4_);
_tmp6_ = CLAMP (_tmp3_, 0, (gint) _tmp5_);
self->priv->_position = _tmp6_;
_tmp7_ = self->priv->_position;
_tmp8_ = self->priv->adjustment;
_tmp9_ = gtk_adjustment_get_value (_tmp8_);
if (((gdouble) _tmp7_) != _tmp9_) {
GtkAdjustment* _tmp10_;
gint _tmp11_;
_tmp10_ = self->priv->adjustment;
_tmp11_ = self->priv->_position;
gtk_adjustment_set_value (_tmp10_, (gdouble) _tmp11_);
gwibber_gtk_user_view_refresh (self);
}
}
g_object_notify ((GObject *) self, "position");
}
gboolean gwibber_gtk_user_view_get_showing (GwibberGtkUserView* self) {
gboolean result;
gboolean _tmp0_;
g_return_val_if_fail (self != NULL, FALSE);
_tmp0_ = self->priv->_showing;
result = _tmp0_;
return result;
}
void gwibber_gtk_user_view_set_showing (GwibberGtkUserView* self, gboolean value) {
gboolean _tmp0_;
gboolean _tmp1_;
g_return_if_fail (self != NULL);
_tmp0_ = value;
_tmp1_ = self->priv->_showing;
if (_tmp0_ != _tmp1_) {
gboolean _tmp2_;
_tmp2_ = value;
self->priv->_showing = _tmp2_;
}
gwibber_gtk_user_view_do_refresh (self);
g_object_notify ((GObject *) self, "showing");
}
static void gwibber_gtk_user_view_real_show_transient (GwibberGtkUserView* self, const gchar* id, const gchar* name) {
g_return_if_fail (id != NULL);
g_return_if_fail (name != NULL);
}
static void g_cclosure_user_marshal_VOID__STRING_STRING (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) {
typedef void (*GMarshalFunc_VOID__STRING_STRING) (gpointer data1, const char* arg_1, const char* arg_2, gpointer data2);
register GMarshalFunc_VOID__STRING_STRING callback;
register GCClosure * cc;
register gpointer data1;
register gpointer data2;
cc = (GCClosure *) closure;
g_return_if_fail (n_param_values == 3);
if (G_CCLOSURE_SWAP_DATA (closure)) {
data1 = closure->data;
data2 = param_values->data[0].v_pointer;
} else {
data1 = param_values->data[0].v_pointer;
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__STRING_STRING) (marshal_data ? marshal_data : cc->callback);
callback (data1, g_value_get_string (param_values + 1), g_value_get_string (param_values + 2), data2);
}
static void _gwibber_gtk_user_view___lambda65_ (GwibberGtkUserView* self) {
GtkAdjustment* _tmp0_;
gdouble _tmp1_ = 0.0;
gdouble v;
gint _tmp2_;
gint _tmp3_;
gdouble _tmp4_;
_tmp0_ = self->priv->adjustment;
_tmp1_ = gtk_adjustment_get_value (_tmp0_);
v = _tmp1_;
_tmp2_ = gwibber_gtk_user_view_get_position (self);
_tmp3_ = _tmp2_;
_tmp4_ = v;
if (((gdouble) _tmp3_) != _tmp4_) {
gboolean _tmp5_ = FALSE;
gint _tmp6_;
gint _tmp7_;
gdouble _tmp8_;
gboolean _tmp12_;
_tmp6_ = gwibber_gtk_user_view_get_position (self);
_tmp7_ = _tmp6_;
_tmp8_ = v;
if (((gdouble) _tmp7_) < _tmp8_) {
gdouble _tmp9_;
gint _tmp10_;
gint _tmp11_;
_tmp9_ = v;
_tmp10_ = gwibber_gtk_user_view_get_position (self);
_tmp11_ = _tmp10_;
_tmp5_ = _tmp9_ < ((gdouble) (_tmp11_ + 1));
} else {
_tmp5_ = FALSE;
}
_tmp12_ = _tmp5_;
if (_tmp12_) {
gint _tmp13_;
gint _tmp14_;
_tmp13_ = gwibber_gtk_user_view_get_position (self);
_tmp14_ = _tmp13_;
gwibber_gtk_user_view_set_position (self, _tmp14_ + 1);
} else {
gboolean _tmp15_ = FALSE;
gint _tmp16_;
gint _tmp17_;
gdouble _tmp18_;
gboolean _tmp22_;
_tmp16_ = gwibber_gtk_user_view_get_position (self);
_tmp17_ = _tmp16_;
_tmp18_ = v;
if (((gdouble) _tmp17_) > _tmp18_) {
gdouble _tmp19_;
gint _tmp20_;
gint _tmp21_;
_tmp19_ = v;
_tmp20_ = gwibber_gtk_user_view_get_position (self);
_tmp21_ = _tmp20_;
_tmp15_ = _tmp19_ > ((gdouble) (_tmp21_ - 1));
} else {
_tmp15_ = FALSE;
}
_tmp22_ = _tmp15_;
if (_tmp22_) {
gint _tmp23_;
gint _tmp24_;
_tmp23_ = gwibber_gtk_user_view_get_position (self);
_tmp24_ = _tmp23_;
gwibber_gtk_user_view_set_position (self, _tmp24_ - 1);
} else {
GtkAdjustment* _tmp25_;
gdouble _tmp26_ = 0.0;
_tmp25_ = self->priv->adjustment;
_tmp26_ = gtk_adjustment_get_value (_tmp25_);
gwibber_gtk_user_view_set_position (self, (gint) _tmp26_);
}
}
}
gwibber_gtk_user_view_refresh (self);
}
static void __gwibber_gtk_user_view___lambda65__g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) {
_gwibber_gtk_user_view___lambda65_ (self);
}
static gboolean _gwibber_gtk_user_view___lambda66_ (GwibberGtkUserView* self, GtkWidget* source, GdkEventScroll* event) {
gboolean result = FALSE;
GdkEventScroll _tmp0_;
GdkScrollDirection _tmp1_;
GdkScrollDirection direction;
GdkEventScroll _tmp2_;
GdkScrollDirection _tmp3_;
GdkEventScroll _tmp8_;
GdkScrollDirection _tmp9_;
g_return_val_if_fail (source != NULL, FALSE);
g_return_val_if_fail (event != NULL, FALSE);
_tmp0_ = *event;
_tmp1_ = _tmp0_.direction;
direction = _tmp1_;
_tmp2_ = *event;
_tmp3_ = _tmp2_.direction;
if (_tmp3_ == GDK_SCROLL_UP) {
gint _tmp4_;
gint _tmp5_;
_tmp4_ = gwibber_gtk_user_view_get_position (self);
_tmp5_ = _tmp4_;
if (_tmp5_ > 0) {
gint _tmp6_;
gint _tmp7_;
_tmp6_ = gwibber_gtk_user_view_get_position (self);
_tmp7_ = _tmp6_;
gwibber_gtk_user_view_set_position (self, _tmp7_ - 1);
}
}
_tmp8_ = *event;
_tmp9_ = _tmp8_.direction;
if (_tmp9_ == GDK_SCROLL_DOWN) {
gint _tmp10_;
gint _tmp11_;
GtkAdjustment* _tmp12_;
gdouble _tmp13_;
gdouble _tmp14_;
gint _tmp15_;
_tmp10_ = gwibber_gtk_user_view_get_position (self);
_tmp11_ = _tmp10_;
_tmp12_ = self->priv->adjustment;
_tmp13_ = gtk_adjustment_get_upper (_tmp12_);
_tmp14_ = _tmp13_;
_tmp15_ = self->priv->tiles_visible;
if (((gdouble) _tmp11_) < (_tmp14_ - _tmp15_)) {
gint _tmp16_;
gint _tmp17_;
_tmp16_ = gwibber_gtk_user_view_get_position (self);
_tmp17_ = _tmp16_;
gwibber_gtk_user_view_set_position (self, _tmp17_ + 1);
}
}
result = TRUE;
return result;
}
static gboolean __gwibber_gtk_user_view___lambda66__gtk_widget_scroll_event (GtkWidget* _sender, GdkEventScroll* event, gpointer self) {
gboolean result;
result = _gwibber_gtk_user_view___lambda66_ (self, _sender, event);
return result;
}
static gboolean _gwibber_gtk_user_view___lambda67_ (GwibberGtkUserView* self, GtkWidget* source, GdkEventKey* event) {
gboolean result = FALSE;
GdkEventKey _tmp0_;
guint _tmp1_;
guint key;
GdkEventKey _tmp2_;
guint _tmp3_;
g_return_val_if_fail (source != NULL, FALSE);
g_return_val_if_fail (event != NULL, FALSE);
_tmp0_ = *event;
_tmp1_ = _tmp0_.keyval;
key = _tmp1_;
_tmp2_ = *event;
_tmp3_ = _tmp2_.keyval;
switch (_tmp3_) {
case 0xff55:
case 0xff9a:
{
gint _tmp4_;
gint _tmp5_;
gint _tmp6_;
_tmp4_ = gwibber_gtk_user_view_get_position (self);
_tmp5_ = _tmp4_;
_tmp6_ = self->priv->tiles_visible;
gwibber_gtk_user_view_set_position (self, _tmp5_ - _tmp6_);
break;
}
case 0xff56:
case 0xff9b:
{
gint _tmp7_;
gint _tmp8_;
gint _tmp9_;
_tmp7_ = gwibber_gtk_user_view_get_position (self);
_tmp8_ = _tmp7_;
_tmp9_ = self->priv->tiles_visible;
gwibber_gtk_user_view_set_position (self, _tmp8_ + _tmp9_);
break;
}
case 0xff54:
case 0xff99:
{
gint _tmp10_;
gint _tmp11_;
_tmp10_ = gwibber_gtk_user_view_get_position (self);
_tmp11_ = _tmp10_;
gwibber_gtk_user_view_set_position (self, _tmp11_ + 1);
break;
}
case 0xff52:
case 0xff97:
{
gint _tmp12_;
gint _tmp13_;
_tmp12_ = gwibber_gtk_user_view_get_position (self);
_tmp13_ = _tmp12_;
gwibber_gtk_user_view_set_position (self, _tmp13_ - 1);
break;
}
default:
{
result = FALSE;
return result;
}
}
result = TRUE;
return result;
}
static gboolean __gwibber_gtk_user_view___lambda67__gtk_widget_key_press_event (GtkWidget* _sender, GdkEventKey* event, gpointer self) {
gboolean result;
result = _gwibber_gtk_user_view___lambda67_ (self, _sender, event);
return result;
}
static void _gwibber_gtk_user_view______lambda68_ (GwibberGtkUserView* self, const gchar* id, const gchar* name) {
const gchar* _tmp0_;
const gchar* _tmp1_;
g_return_if_fail (id != NULL);
g_return_if_fail (name != NULL);
_tmp0_ = id;
_tmp1_ = name;
g_signal_emit_by_name (self, "show-transient", _tmp0_, _tmp1_);
}
static void __gwibber_gtk_user_view______lambda68__gwibber_gtk_user_view_tile_show_transient (GwibberGtkUserViewTile* _sender, const gchar* id, const gchar* name, gpointer self) {
_gwibber_gtk_user_view______lambda68_ (self, id, name);
}
static void _gwibber_gtk_user_view___lambda69_ (GwibberGtkUserView* self, GtkAllocation* a) {
gboolean _tmp0_ = FALSE;
gint _tmp1_;
GtkAllocation _tmp2_;
gint _tmp3_;
gboolean _tmp7_;
g_return_if_fail (a != NULL);
_tmp1_ = self->priv->last_width;
_tmp2_ = *a;
_tmp3_ = _tmp2_.width;
if (_tmp1_ != _tmp3_) {
_tmp0_ = TRUE;
} else {
gint _tmp4_;
GtkAllocation _tmp5_;
gint _tmp6_;
_tmp4_ = self->priv->last_height;
_tmp5_ = *a;
_tmp6_ = _tmp5_.height;
_tmp0_ = _tmp4_ != _tmp6_;
}
_tmp7_ = _tmp0_;
if (_tmp7_) {
GtkAllocation _tmp8_;
gint _tmp9_;
GtkAllocation _tmp10_;
gint _tmp11_;
GwibberGtkTileBox* _tmp12_;
gint _tmp13_;
_tmp8_ = *a;
_tmp9_ = _tmp8_.width;
self->priv->last_width = _tmp9_;
_tmp10_ = *a;
_tmp11_ = _tmp10_.height;
self->priv->last_height = _tmp11_;
_tmp12_ = self->priv->view_box;
_tmp13_ = self->priv->last_height;
gwibber_gtk_tile_box_set_last_height (_tmp12_, _tmp13_);
gwibber_gtk_user_view_refresh (self);
}
}
static void __gwibber_gtk_user_view___lambda69__gtk_widget_size_allocate (GtkWidget* _sender, GtkAllocation* allocation, gpointer self) {
_gwibber_gtk_user_view___lambda69_ (self, allocation);
}
static void _gwibber_gtk_user_view___lambda70_ (GwibberGtkUserView* self, const gchar* id) {
GwibberStreams* _tmp0_;
const gchar* _tmp1_;
GeeHashMap* _tmp2_ = NULL;
GeeHashMap* stream_map;
GeeHashMap* _tmp3_;
gpointer _tmp4_ = NULL;
gchar* name;
const gchar* _tmp5_;
const gchar* _tmp6_;
g_return_if_fail (id != NULL);
_tmp0_ = self->streams;
_tmp1_ = id;
_tmp2_ = gwibber_streams_lookup (_tmp0_, _tmp1_);
stream_map = _tmp2_;
_tmp3_ = stream_map;
_tmp4_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp3_, "name");
name = (gchar*) _tmp4_;
gwibber_gtk_user_view_refresh (self);
_tmp5_ = id;
_tmp6_ = name;
g_signal_emit_by_name (self, "show-transient", _tmp5_, _tmp6_);
_g_free0 (name);
_g_object_unref0 (stream_map);
}
static void __gwibber_gtk_user_view___lambda70__gwibber_streams_created (GwibberStreams* _sender, const gchar* id, gpointer self) {
_gwibber_gtk_user_view___lambda70_ (self, id);
}
static void _gwibber_gtk_user_view___lambda71_ (GwibberGtkUserView* self, const gchar* id) {
const gchar* _tmp0_;
GwibberStreams* _tmp1_;
const gchar* _tmp2_;
GeeHashMap* _tmp3_ = NULL;
GeeHashMap* stream_map;
GeeHashMap* _tmp4_;
gpointer _tmp5_ = NULL;
gchar* name;
const gchar* _tmp6_;
const gchar* _tmp7_;
g_return_if_fail (id != NULL);
_tmp0_ = id;
g_debug ("user-view.vala:182: updated stream %s", _tmp0_);
_tmp1_ = self->streams;
_tmp2_ = id;
_tmp3_ = gwibber_streams_lookup (_tmp1_, _tmp2_);
stream_map = _tmp3_;
_tmp4_ = stream_map;
_tmp5_ = gee_abstract_map_get ((GeeAbstractMap*) _tmp4_, "name");
name = (gchar*) _tmp5_;
gwibber_gtk_user_view_refresh (self);
_tmp6_ = id;
_tmp7_ = name;
g_signal_emit_by_name (self, "show-transient", _tmp6_, _tmp7_);
_g_free0 (name);
_g_object_unref0 (stream_map);
}
static void __gwibber_gtk_user_view___lambda71__gwibber_streams_updated (GwibberStreams* _sender, const gchar* id, gpointer self) {
_gwibber_gtk_user_view___lambda71_ (self, id);
}
static void _gwibber_gtk_user_view___lambda72_ (GwibberGtkUserView* self, const gchar* id) {
g_return_if_fail (id != NULL);
gwibber_gtk_user_view_refresh (self);
}
static void __gwibber_gtk_user_view___lambda72__gwibber_streams_deleted (GwibberStreams* _sender, const gchar* id, gpointer self) {
_gwibber_gtk_user_view___lambda72_ (self, id);
}
static GObject * gwibber_gtk_user_view_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) {
GObject * obj;
GObjectClass * parent_class;
GwibberGtkUserView * self;
GwibberStreams* _tmp0_;
GtkAdjustment* _tmp1_;
GtkAdjustment* _tmp2_;
GtkAdjustment* _tmp3_;
GwibberGtkTileBox* _tmp4_;
GwibberGtkTileBox* _tmp5_;
GwibberGtkTileBox* _tmp6_;
GwibberGtkTileBox* _tmp7_;
GtkAdjustment* _tmp8_;
GtkVScrollbar* _tmp9_;
GtkVScrollbar* _tmp10_;
GtkVScrollbar* _tmp11_;
GwibberGtkTileBox* _tmp25_;
GwibberStreams* _tmp26_;
GwibberStreams* _tmp27_;
GwibberStreams* _tmp28_;
parent_class = G_OBJECT_CLASS (gwibber_gtk_user_view_parent_class);
obj = parent_class->constructor (type, n_construct_properties, construct_properties);
self = GWIBBER_GTK_USER_VIEW (obj);
_tmp0_ = gwibber_streams_new ();
_g_object_unref0 (self->streams);
self->streams = _tmp0_;
_tmp1_ = gtk_adjustment_new ((gdouble) 0, (gdouble) 0, (gdouble) 1, (gdouble) 1, (gdouble) 1, (gdouble) 1);
_tmp2_ = g_object_ref_sink (_tmp1_);
_g_object_unref0 (self->priv->adjustment);
self->priv->adjustment = _tmp2_;
_tmp3_ = self->priv->adjustment;
g_signal_connect_object ((GObject*) _tmp3_, "notify::value", (GCallback) __gwibber_gtk_user_view___lambda65__g_object_notify, self, 0);
_tmp4_ = gwibber_gtk_tile_box_new ();
_tmp5_ = g_object_ref_sink (_tmp4_);
_g_object_unref0 (self->priv->view_box);
self->priv->view_box = _tmp5_;
_tmp6_ = self->priv->view_box;
gtk_box_pack_start ((GtkBox*) self, (GtkWidget*) _tmp6_, TRUE, TRUE, (guint) 0);
_tmp7_ = self->priv->view_box;
gtk_widget_show ((GtkWidget*) _tmp7_);
_tmp8_ = self->priv->adjustment;
_tmp9_ = (GtkVScrollbar*) gtk_vscrollbar_new (_tmp8_);
_tmp10_ = g_object_ref_sink (_tmp9_);
_g_object_unref0 (self->priv->scrollbar);
self->priv->scrollbar = _tmp10_;
_tmp11_ = self->priv->scrollbar;
gtk_box_pack_start ((GtkBox*) self, (GtkWidget*) _tmp11_, FALSE, FALSE, (guint) 0);
gtk_widget_set_events ((GtkWidget*) self, (gint) (GDK_KEY_PRESS_MASK | GDK_SCROLL_MASK));
g_signal_connect_object ((GtkWidget*) self, "scroll-event", (GCallback) __gwibber_gtk_user_view___lambda66__gtk_widget_scroll_event, self, 0);
g_signal_connect_object ((GtkWidget*) self, "key-press-event", (GCallback) __gwibber_gtk_user_view___lambda67__gtk_widget_key_press_event, self, 0);
{
gint i;
i = 0;
{
gboolean _tmp12_;
_tmp12_ = TRUE;
while (TRUE) {
gboolean _tmp13_;
gint _tmp15_;
GwibberStreams* _tmp16_;
GwibberGtkUserViewTile* _tmp17_;
GwibberGtkUserViewTile* _tmp18_;
GwibberGtkUserViewTile* tile;
GwibberGtkUserViewTile* _tmp19_;
GwibberGtkUserViewTile* _tmp20_;
GwibberGtkTileBox* _tmp21_;
GwibberGtkUserViewTile* _tmp22_;
GwibberGtkUserViewTile* _tmp23_;
GwibberGtkUserViewTile* _tmp24_;
_tmp13_ = _tmp12_;
if (!_tmp13_) {
gint _tmp14_;
_tmp14_ = i;
i = _tmp14_ + 1;
}
_tmp12_ = FALSE;
_tmp15_ = i;
if (!(_tmp15_ < 10)) {
break;
}
_tmp16_ = self->streams;
_tmp17_ = gwibber_gtk_user_view_tile_new (_tmp16_);
_tmp18_ = g_object_ref_sink (_tmp17_);
tile = _tmp18_;
_tmp19_ = tile;
g_signal_connect_object (_tmp19_, "show-transient", (GCallback) __gwibber_gtk_user_view______lambda68__gwibber_gtk_user_view_tile_show_transient, self, 0);
_tmp20_ = tile;
gtk_widget_show_all ((GtkWidget*) _tmp20_);
_tmp21_ = self->priv->view_box;
_tmp22_ = tile;
gtk_box_pack_start ((GtkBox*) _tmp21_, (GtkWidget*) _tmp22_, FALSE, FALSE, (guint) 0);
_tmp23_ = tile;
_tmp24_ = _g_object_ref0 (_tmp23_);
self->priv->tiles = g_slist_append (self->priv->tiles, _tmp24_);
_g_object_unref0 (tile);
}
}
}
_tmp25_ = self->priv->view_box;
g_signal_connect_object ((GtkWidget*) _tmp25_, "size-allocate", (GCallback) __gwibber_gtk_user_view___lambda69__gtk_widget_size_allocate, self, G_CONNECT_AFTER);
_tmp26_ = self->streams;
g_signal_connect_object (_tmp26_, "created", (GCallback) __gwibber_gtk_user_view___lambda70__gwibber_streams_created, self, 0);
_tmp27_ = self->streams;
g_signal_connect_object (_tmp27_, "updated", (GCallback) __gwibber_gtk_user_view___lambda71__gwibber_streams_updated, self, 0);
_tmp28_ = self->streams;
g_signal_connect_object (_tmp28_, "deleted", (GCallback) __gwibber_gtk_user_view___lambda72__gwibber_streams_deleted, self, 0);
gwibber_gtk_user_view_refresh (self);
return obj;
}
static void gwibber_gtk_user_view_class_init (GwibberGtkUserViewClass * klass) {
gwibber_gtk_user_view_parent_class = g_type_class_peek_parent (klass);
g_type_class_add_private (klass, sizeof (GwibberGtkUserViewPrivate));
GTK_WIDGET_CLASS (klass)->get_preferred_height_for_width = gwibber_gtk_user_view_real_get_preferred_height_for_width;
GTK_WIDGET_CLASS (klass)->get_preferred_height = gwibber_gtk_user_view_real_get_preferred_height;
GWIBBER_GTK_USER_VIEW_CLASS (klass)->show_transient = gwibber_gtk_user_view_real_show_transient;
G_OBJECT_CLASS (klass)->get_property = _vala_gwibber_gtk_user_view_get_property;
G_OBJECT_CLASS (klass)->set_property = _vala_gwibber_gtk_user_view_set_property;
G_OBJECT_CLASS (klass)->constructor = gwibber_gtk_user_view_constructor;
G_OBJECT_CLASS (klass)->finalize = gwibber_gtk_user_view_finalize;
g_object_class_install_property (G_OBJECT_CLASS (klass), GWIBBER_GTK_USER_VIEW_POSITION, g_param_spec_int ("position", "position", "position", G_MININT, G_MAXINT, 0, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
g_object_class_install_property (G_OBJECT_CLASS (klass), GWIBBER_GTK_USER_VIEW_SHOWING, g_param_spec_boolean ("showing", "showing", "showing", FALSE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
g_signal_new ("show_transient", GWIBBER_GTK_TYPE_USER_VIEW, G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET (GwibberGtkUserViewClass, show_transient), NULL, NULL, g_cclosure_user_marshal_VOID__STRING_STRING, G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_STRING);
}
static void gwibber_gtk_user_view_instance_init (GwibberGtkUserView * self) {
self->priv = GWIBBER_GTK_USER_VIEW_GET_PRIVATE (self);
self->priv->_position = 0;
self->priv->tiles_visible = 0;
self->priv->refresh_id = (guint) 0;
self->priv->_showing = FALSE;
self->priv->last_width = 0;
self->priv->last_height = 0;
}
static void gwibber_gtk_user_view_finalize (GObject* obj) {
GwibberGtkUserView * self;
self = GWIBBER_GTK_USER_VIEW (obj);
_g_object_unref0 (self->priv->adjustment);
_g_object_unref0 (self->priv->scrollbar);
_g_object_unref0 (self->priv->view_box);
_g_object_unref0 (self->streams);
__g_list_free__g_object_unref0_0 (self->priv->streams_list);
__g_slist_free__g_object_unref0_0 (self->priv->tiles);
G_OBJECT_CLASS (gwibber_gtk_user_view_parent_class)->finalize (obj);
}
GType gwibber_gtk_user_view_get_type (void) {
static volatile gsize gwibber_gtk_user_view_type_id__volatile = 0;
if (g_once_init_enter (&gwibber_gtk_user_view_type_id__volatile)) {
static const GTypeInfo g_define_type_info = { sizeof (GwibberGtkUserViewClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gwibber_gtk_user_view_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GwibberGtkUserView), 0, (GInstanceInitFunc) gwibber_gtk_user_view_instance_init, NULL };
GType gwibber_gtk_user_view_type_id;
gwibber_gtk_user_view_type_id = g_type_register_static (GTK_TYPE_BOX, "GwibberGtkUserView", &g_define_type_info, 0);
g_once_init_leave (&gwibber_gtk_user_view_type_id__volatile, gwibber_gtk_user_view_type_id);
}
return gwibber_gtk_user_view_type_id__volatile;
}
static void _vala_gwibber_gtk_user_view_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
GwibberGtkUserView * self;
self = GWIBBER_GTK_USER_VIEW (object);
switch (property_id) {
case GWIBBER_GTK_USER_VIEW_POSITION:
g_value_set_int (value, gwibber_gtk_user_view_get_position (self));
break;
case GWIBBER_GTK_USER_VIEW_SHOWING:
g_value_set_boolean (value, gwibber_gtk_user_view_get_showing (self));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
}
}
static void _vala_gwibber_gtk_user_view_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) {
GwibberGtkUserView * self;
self = GWIBBER_GTK_USER_VIEW (object);
switch (property_id) {
case GWIBBER_GTK_USER_VIEW_POSITION:
gwibber_gtk_user_view_set_position (self, g_value_get_int (value));
break;
case GWIBBER_GTK_USER_VIEW_SHOWING:
gwibber_gtk_user_view_set_showing (self, g_value_get_boolean (value));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
}
}