DbusmenuMenuitem *addMenuItem(DbusmenuMenuitem *parent, int uid, const char * label, int type, int position) { // _logmsg(LOG_LEVEL_INFO, "add menu item %s (%d) [p %s]", label, uid, _getItemLabel(parent)); DbusmenuMenuitem *item = dbusmenu_menuitem_new(); dbusmenu_menuitem_property_set_int(item, MENUITEM_UID_PROPERTY, uid); dbusmenu_menuitem_property_set(item, DBUSMENU_MENUITEM_PROP_LABEL, label); if (type == ITEM_SUBMENU) dbusmenu_menuitem_property_set(item, DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY, DBUSMENU_MENUITEM_CHILD_DISPLAY_SUBMENU); else if (type == ITEM_CHECK) dbusmenu_menuitem_property_set(item, DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE, DBUSMENU_MENUITEM_TOGGLE_CHECK); else if (type == ITEM_RADIO) dbusmenu_menuitem_property_set(item, DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE, DBUSMENU_MENUITEM_TOGGLE_RADIO); dbusmenu_menuitem_property_set_bool(item, DBUSMENU_MENUITEM_PROP_VISIBLE, TRUE); g_signal_connect(G_OBJECT(item), DBUSMENU_MENUITEM_SIGNAL_EVENT, G_CALLBACK(_onItemEvent), NULL); g_signal_connect(G_OBJECT(item), DBUSMENU_MENUITEM_SIGNAL_ABOUT_TO_SHOW, G_CALLBACK(_onItemAboutToShow), NULL); // g_signal_connect(G_OBJECT(item), DBUSMENU_MENUITEM_SIGNAL_SHOW_TO_USER, G_CALLBACK(_onItemShowToUser), NULL); g_signal_connect(G_OBJECT(item), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK(_onItemActivated), NULL); // g_signal_connect(G_OBJECT(item), DBUSMENU_MENUITEM_SIGNAL_CHILD_ADDED, G_CALLBACK(_onItemChildAdded), NULL); if (parent != NULL) { gpointer data = g_object_get_data(G_OBJECT(parent), MENUITEM_JHANDLER_PROPERTY); if (data == NULL) _logmsg(LOG_LEVEL_ERROR, "parent of item %d hasn't jhandler", uid); g_object_set_data(G_OBJECT(item), MENUITEM_JHANDLER_PROPERTY, data); if (position < 0) dbusmenu_menuitem_child_append(parent, item); else dbusmenu_menuitem_child_add_position(parent, item, (guint)position); } return item; }
void toggleItemStateChecked(DbusmenuMenuitem *item, bool isChecked) { const int nOn = DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED; const int nOff = DBUSMENU_MENUITEM_TOGGLE_STATE_UNCHECKED; const int ncheck = isChecked ? nOn : nOff; if (dbusmenu_menuitem_property_get_int(item, DBUSMENU_MENUITEM_PROP_TOGGLE_STATE) != ncheck) { // _logmsg(LOG_LEVEL_INFO, "item %s changes checked-state: %d -> %d", _getItemLabel(item), dbusmenu_menuitem_property_get_int(item, DBUSMENU_MENUITEM_PROP_TOGGLE_STATE), ncheck); dbusmenu_menuitem_property_set_int(item, DBUSMENU_MENUITEM_PROP_TOGGLE_STATE, ncheck); } }
/* Update status from all the providers */ static void update_status (void) { StatusProviderStatus status = STATUS_PROVIDER_STATUS_DISCONNECTED; GList * provider; for (provider = status_providers; provider != NULL; provider = g_list_next(provider)) { StatusProviderStatus localstatus = status_provider_get_status(STATUS_PROVIDER(provider->data)); if (localstatus < status) { status = localstatus; } } if (status == current_status) { return; } current_status = status; if (update_func != NULL) { update_func(); } GList * menu; int i; for (menu = menuitems, i = 0; menu != NULL && i < STATUS_PROVIDER_STATUS_DISCONNECTED; menu = g_list_next(menu), i++) { /* If we're the seleced status or if we're disconnected show the user that we're offline */ if (i == current_status || (current_status == STATUS_PROVIDER_STATUS_DISCONNECTED && i == STATUS_PROVIDER_STATUS_OFFLINE)) { dbusmenu_menuitem_property_set_int(DBUSMENU_MENUITEM(menu->data), DBUSMENU_MENUITEM_PROP_TOGGLE_STATE, DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED); } else { dbusmenu_menuitem_property_set_int(DBUSMENU_MENUITEM(menu->data), DBUSMENU_MENUITEM_PROP_TOGGLE_STATE, DBUSMENU_MENUITEM_TOGGLE_STATE_UNCHECKED); } if (current_status == STATUS_PROVIDER_STATUS_DISCONNECTED) { dbusmenu_menuitem_property_set_bool(DBUSMENU_MENUITEM(menu->data), DBUSMENU_MENUITEM_PROP_ENABLED, FALSE); } else { dbusmenu_menuitem_property_set_bool(DBUSMENU_MENUITEM(menu->data), DBUSMENU_MENUITEM_PROP_ENABLED, TRUE); } } return; }
DbusmenuMenuitem* addSeparator(DbusmenuMenuitem * parent, int uid, int position) { DbusmenuMenuitem* item = dbusmenu_menuitem_new(); dbusmenu_menuitem_property_set(item, DBUSMENU_MENUITEM_PROP_TYPE, "separator"); dbusmenu_menuitem_property_set_int(item, MENUITEM_UID_PROPERTY, uid); dbusmenu_menuitem_property_set_bool(item, DBUSMENU_MENUITEM_PROP_VISIBLE, TRUE); if (parent != NULL) { if (position < 0) dbusmenu_menuitem_child_append(parent, item); else dbusmenu_menuitem_child_add_position(parent, item, (guint)position); } return item; }
void metadata_menuitem_fetch_art (MetadataMenuitem* self, const gchar* uri, const gchar* prop) { const gchar* _tmp0_; GFile* _tmp1_ = NULL; GFile* art_file; GFile* _tmp2_; gboolean _tmp3_ = FALSE; const gchar* _tmp19_; const gchar* _tmp20_; const gchar* _tmp21_; const gchar* _tmp22_; FetchFile* _tmp23_; FetchFile* _tmp24_; FetchFile* _tmp25_; FetchFile* _tmp26_; GError * _inner_error_ = NULL; g_return_if_fail (self != NULL); g_return_if_fail (uri != NULL); g_return_if_fail (prop != NULL); _tmp0_ = uri; _tmp1_ = g_file_new_for_uri (_tmp0_); art_file = _tmp1_; _tmp2_ = art_file; _tmp3_ = g_file_is_native (_tmp2_); if (_tmp3_ == TRUE) { GFile* _tmp4_; gboolean _tmp5_ = FALSE; gchar* path = NULL; _tmp4_ = art_file; _tmp5_ = g_file_query_exists (_tmp4_, NULL); if (_tmp5_ == FALSE) { const gchar* _tmp6_; _tmp6_ = prop; dbusmenu_menuitem_property_set_int ((DbusmenuMenuitem*) self, _tmp6_, PLAYER_ITEM_EMPTY); _g_object_unref0 (art_file); return; } { const gchar* _tmp7_; gchar* _tmp8_ = NULL; gchar* _tmp9_; gchar* _tmp10_ = NULL; gchar* _tmp11_; gchar* _tmp12_; const gchar* _tmp13_; gchar* _tmp14_ = NULL; gchar* _tmp15_; const gchar* _tmp16_; const gchar* _tmp17_; _tmp7_ = uri; _tmp8_ = string_strip (_tmp7_); _tmp9_ = _tmp8_; _tmp10_ = g_filename_from_uri (_tmp9_, NULL, &_inner_error_); _tmp11_ = _tmp10_; _g_free0 (_tmp9_); _tmp12_ = _tmp11_; if (_inner_error_ != NULL) { if (_inner_error_->domain == G_CONVERT_ERROR) { goto __catch5_g_convert_error; } _g_free0 (path); _g_object_unref0 (art_file); g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return; } _g_free0 (path); path = _tmp12_; _tmp13_ = uri; _tmp14_ = string_strip (_tmp13_); _tmp15_ = _tmp14_; g_debug ("metadata-menu-item.vala:116: Populating the artwork field with %s", _tmp15_); _g_free0 (_tmp15_); _tmp16_ = prop; _tmp17_ = path; dbusmenu_menuitem_property_set ((DbusmenuMenuitem*) self, _tmp16_, _tmp17_); } goto __finally5; __catch5_g_convert_error: { GError* e = NULL; const gchar* _tmp18_; e = _inner_error_; _inner_error_ = NULL; _tmp18_ = uri; g_warning ("metadata-menu-item.vala:120: Problem converting URI %s to file path", _tmp18_); _g_error_free0 (e); } __finally5: if (_inner_error_ != NULL) { _g_free0 (path); _g_object_unref0 (art_file); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return; } _g_free0 (path); _g_object_unref0 (art_file); return; } _tmp19_ = metadata_menuitem_album_art_cache_dir; g_debug ("metadata-menu-item.vala:126: fetch_art -remotely %s", _tmp19_); _tmp20_ = metadata_menuitem_album_art_cache_dir; if (_tmp20_ == NULL) { _g_object_unref0 (art_file); return; } _tmp21_ = uri; _tmp22_ = prop; _tmp23_ = fetch_file_new (_tmp21_, _tmp22_); _g_object_unref0 (metadata_menuitem_fetcher); metadata_menuitem_fetcher = _tmp23_; _tmp24_ = metadata_menuitem_fetcher; g_signal_connect_object (_tmp24_, "failed", (GCallback) ___lambda2__fetch_file_failed, self, 0); _tmp25_ = metadata_menuitem_fetcher; g_signal_connect_object (_tmp25_, "completed", (GCallback) _metadata_menuitem_on_fetcher_completed_fetch_file_completed, self, 0); _tmp26_ = metadata_menuitem_fetcher; fetch_file_fetch_data (_tmp26_, NULL, NULL); _g_object_unref0 (art_file); }