static void memo_shell_content_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { switch (property_id) { case PROP_MODEL: g_value_set_object ( value, e_memo_shell_content_get_memo_model ( E_MEMO_SHELL_CONTENT (object))); return; case PROP_ORIENTATION: g_value_set_enum ( value, memo_shell_content_get_orientation ( E_MEMO_SHELL_CONTENT (object))); return; case PROP_PREVIEW_VISIBLE: g_value_set_boolean ( value, e_memo_shell_content_get_preview_visible ( E_MEMO_SHELL_CONTENT (object))); return; } G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); }
static void memo_shell_content_view_created (ECalBaseShellContent *cal_base_shell_content) { EMemoShellContent *memo_shell_content; EShellView *shell_view; GalViewInstance *view_instance; GSettings *settings; memo_shell_content = E_MEMO_SHELL_CONTENT (cal_base_shell_content); shell_view = e_shell_content_get_shell_view (E_SHELL_CONTENT (memo_shell_content)); /* Bind GObject properties to settings keys. */ settings = e_util_ref_settings ("org.gnome.evolution.calendar"); g_settings_bind ( settings, "memo-hpane-position", memo_shell_content->priv->paned, "hposition", G_SETTINGS_BIND_DEFAULT); g_settings_bind ( settings, "memo-vpane-position", memo_shell_content->priv->paned, "vposition", G_SETTINGS_BIND_DEFAULT); g_object_unref (settings); /* Finally load the view instance */ view_instance = e_shell_view_get_view_instance (shell_view); gal_view_instance_load (view_instance); /* Show everything known by default */ e_cal_model_set_time_range (e_cal_base_shell_content_get_model (cal_base_shell_content), 0, 0); }
static void memo_shell_content_focus_search_results (EShellContent *shell_content) { EMemoShellContent *memo_shell_content; memo_shell_content = E_MEMO_SHELL_CONTENT (shell_content); gtk_widget_grab_focus (memo_shell_content->priv->memo_table); }
static void memo_shell_content_dispose (GObject *object) { EMemoShellContent *memo_shell_content = E_MEMO_SHELL_CONTENT (object); g_clear_object (&memo_shell_content->priv->paned); g_clear_object (&memo_shell_content->priv->memo_table); g_clear_object (&memo_shell_content->priv->preview_pane); g_free (memo_shell_content->priv->current_uid); memo_shell_content->priv->current_uid = NULL; /* Chain up to parent's dispose() method. */ G_OBJECT_CLASS (e_memo_shell_content_parent_class)->dispose (object); }
static guint32 memo_shell_content_check_state (EShellContent *shell_content) { EMemoShellContent *memo_shell_content; EMemoTable *memo_table; GSList *list, *iter; gboolean editable = TRUE; gboolean has_url = FALSE; gint n_selected; guint32 state = 0; memo_shell_content = E_MEMO_SHELL_CONTENT (shell_content); memo_table = e_memo_shell_content_get_memo_table (memo_shell_content); n_selected = e_table_selected_count (E_TABLE (memo_table)); list = e_memo_table_get_selected (memo_table); for (iter = list; iter != NULL; iter = iter->next) { ECalModelComponent *comp_data = iter->data; icalproperty *prop; gboolean read_only; if (!comp_data) continue; read_only = e_client_is_readonly (E_CLIENT (comp_data->client)); editable &= !read_only; prop = icalcomponent_get_first_property (comp_data->icalcomp, ICAL_URL_PROPERTY); has_url |= (prop != NULL); } g_slist_free (list); if (n_selected == 1) state |= E_CAL_BASE_SHELL_CONTENT_SELECTION_SINGLE; if (n_selected > 1) state |= E_CAL_BASE_SHELL_CONTENT_SELECTION_MULTIPLE; if (editable) state |= E_CAL_BASE_SHELL_CONTENT_SELECTION_IS_EDITABLE; if (has_url) state |= E_CAL_BASE_SHELL_CONTENT_SELECTION_HAS_URL; return state; }
static void memo_shell_view_execute_search (EShellView *shell_view) { EMemoShellContent *memo_shell_content; EShellWindow *shell_window; EShellContent *shell_content; EShellSearchbar *searchbar; EActionComboBox *combo_box; GtkRadioAction *action; ECalComponentPreview *memo_preview; EPreviewPane *preview_pane; EMemoTable *memo_table; EWebView *web_view; ECalModel *model; gchar *query; gchar *temp; gint value; shell_content = e_shell_view_get_shell_content (shell_view); shell_window = e_shell_view_get_shell_window (shell_view); memo_shell_content = E_MEMO_SHELL_CONTENT (shell_content); searchbar = e_memo_shell_content_get_searchbar (memo_shell_content); action = GTK_RADIO_ACTION (ACTION (MEMO_SEARCH_ANY_FIELD_CONTAINS)); value = gtk_radio_action_get_current_value (action); if (value == MEMO_SEARCH_ADVANCED) { query = e_shell_view_get_search_query (shell_view); if (!query) query = g_strdup (""); } else { const gchar *format; const gchar *text; GString *string; text = e_shell_searchbar_get_search_text (searchbar); if (text == NULL || *text == '\0') { text = ""; value = MEMO_SEARCH_SUMMARY_CONTAINS; } switch (value) { default: text = ""; /* fall through */ case MEMO_SEARCH_SUMMARY_CONTAINS: format = "(contains? \"summary\" %s)"; break; case MEMO_SEARCH_DESCRIPTION_CONTAINS: format = "(contains? \"description\" %s)"; break; case MEMO_SEARCH_ANY_FIELD_CONTAINS: format = "(contains? \"any\" %s)"; break; } /* Build the query. */ string = g_string_new (""); e_sexp_encode_string (string, text); query = g_strdup_printf (format, string->str); g_string_free (string, TRUE); } /* Apply selected filter. */ combo_box = e_shell_searchbar_get_filter_combo_box (searchbar); value = e_action_combo_box_get_current_value (combo_box); switch (value) { case MEMO_FILTER_ANY_CATEGORY: break; case MEMO_FILTER_UNMATCHED: temp = g_strdup_printf ( "(and (has-categories? #f) %s", query); g_free (query); query = temp; break; default: { GList *categories; const gchar *category_name; categories = e_util_dup_searchable_categories (); category_name = g_list_nth_data (categories, value); g_list_free_full (categories, g_free); temp = g_strdup_printf ( "(and (has-categories? \"%s\") %s)", category_name, query); g_free (query); query = temp; } } /* Submit the query. */ memo_table = e_memo_shell_content_get_memo_table (memo_shell_content); model = e_memo_table_get_model (memo_table); e_cal_model_set_search_query (model, query); g_free (query); preview_pane = e_memo_shell_content_get_preview_pane (memo_shell_content); web_view = e_preview_pane_get_web_view (preview_pane); memo_preview = E_CAL_COMPONENT_PREVIEW (web_view); e_cal_component_preview_clear (memo_preview); }
static void memo_shell_content_constructed (GObject *object) { EMemoShellContent *memo_shell_content; EShellView *shell_view; EShellContent *shell_content; EShellTaskbar *shell_taskbar; ECalModel *model; GalViewInstance *view_instance; GtkTargetList *target_list; GtkTargetEntry *targets; GtkWidget *container; GtkWidget *widget; gint n_targets; memo_shell_content = E_MEMO_SHELL_CONTENT (object); /* Chain up to parent's constructed() method. */ G_OBJECT_CLASS (e_memo_shell_content_parent_class)->constructed (object); model = e_cal_base_shell_content_get_model (E_CAL_BASE_SHELL_CONTENT (memo_shell_content)); shell_content = E_SHELL_CONTENT (object); shell_view = e_shell_content_get_shell_view (shell_content); shell_taskbar = e_shell_view_get_shell_taskbar (shell_view); /* Build content widgets. */ container = GTK_WIDGET (object); widget = e_paned_new (GTK_ORIENTATION_VERTICAL); gtk_container_add (GTK_CONTAINER (container), widget); memo_shell_content->priv->paned = g_object_ref (widget); gtk_widget_show (widget); e_binding_bind_property ( object, "orientation", widget, "orientation", G_BINDING_SYNC_CREATE); container = memo_shell_content->priv->paned; widget = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy ( GTK_SCROLLED_WINDOW (widget), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_paned_pack1 (GTK_PANED (container), widget, TRUE, FALSE); gtk_widget_show (widget); container = widget; widget = e_memo_table_new (shell_view, model); gtk_container_add (GTK_CONTAINER (container), widget); memo_shell_content->priv->memo_table = g_object_ref (widget); gtk_widget_show (widget); container = memo_shell_content->priv->paned; widget = e_cal_component_preview_new (); gtk_widget_show (widget); g_signal_connect_swapped ( widget, "status-message", G_CALLBACK (e_shell_taskbar_set_message), shell_taskbar); widget = e_preview_pane_new (E_WEB_VIEW (widget)); gtk_paned_pack2 (GTK_PANED (container), widget, FALSE, FALSE); memo_shell_content->priv->preview_pane = g_object_ref (widget); gtk_widget_show (widget); e_binding_bind_property ( object, "preview-visible", widget, "visible", G_BINDING_SYNC_CREATE); target_list = gtk_target_list_new (NULL, 0); e_target_list_add_calendar_targets (target_list, 0); targets = gtk_target_table_new_from_list (target_list, &n_targets); e_table_drag_source_set ( E_TABLE (memo_shell_content->priv->memo_table), GDK_BUTTON1_MASK, targets, n_targets, GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_ASK); gtk_target_table_free (targets, n_targets); gtk_target_list_unref (target_list); g_signal_connect_swapped ( memo_shell_content->priv->memo_table, "table-drag-data-get", G_CALLBACK (memo_shell_content_table_drag_data_get_cb), object); g_signal_connect_swapped ( memo_shell_content->priv->memo_table, "table-drag-data-delete", G_CALLBACK (memo_shell_content_table_drag_data_delete_cb), object); g_signal_connect_swapped ( memo_shell_content->priv->memo_table, "cursor-change", G_CALLBACK (memo_shell_content_cursor_change_cb), object); g_signal_connect_swapped ( memo_shell_content->priv->memo_table, "selection-change", G_CALLBACK (memo_shell_content_selection_change_cb), object); e_signal_connect_notify ( memo_shell_content->priv->memo_table, "notify::is-editing", G_CALLBACK (memo_shell_content_is_editing_changed_cb), shell_view); g_signal_connect_swapped ( model, "model-row-changed", G_CALLBACK (memo_shell_content_model_row_changed_cb), object); /* Prepare the view instance. */ view_instance = e_shell_view_new_view_instance (shell_view, NULL); g_signal_connect_swapped ( view_instance, "display-view", G_CALLBACK (memo_shell_content_display_view_cb), object); e_shell_view_set_view_instance (shell_view, view_instance); g_object_unref (view_instance); }