1 /* logjam - a GTK client for LiveJournal.
2 * Copyright (C) 2000-2003 Evan Martin <evan@livejournal.com>
4 * vim: tabstop=4 shiftwidth=4 noexpandtab :
9 #include "draftstore.h"
24 /*GtkWidget *lstats;*/
25 /*GdkPixbuf *pb_friends, *pb_private;*/
29 row_activated_cb(GtkTreeView
*treeview
, GtkTreePath
*arg1
,
30 GtkTreeViewColumn
*arg2
, DraftStoreUI
* dsui
) {
31 gtk_dialog_response(GTK_DIALOG(dsui
->win
), GTK_RESPONSE_OK
);
35 make_view(DraftStoreUI
*dsui
) {
36 GtkCellRenderer
*renderer
;
37 GtkTreeViewColumn
*column
;
40 gtk_tree_view_new_with_model(GTK_TREE_MODEL(dsui
->store
));
41 gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(dsui
->view
), TRUE
);
42 g_object_unref(G_OBJECT(dsui
->store
));
43 g_signal_connect(G_OBJECT(dsui
->view
), "row-activated",
44 G_CALLBACK(row_activated_cb
), dsui
);
46 /*renderer = gtk_cell_renderer_pixbuf_new();
47 column = gtk_tree_view_column_new_with_attributes(_("Security"), renderer,
48 "pixbuf", COL_SECURITY,
50 gtk_tree_view_append_column(GTK_TREE_VIEW(dsui->view), column);*/
52 renderer
= gtk_cell_renderer_text_new();
53 column
= gtk_tree_view_column_new_with_attributes(_("Date"), renderer
,
56 gtk_tree_view_column_set_sort_column_id(column
, COL_DATE
);
57 gtk_tree_view_append_column(GTK_TREE_VIEW(dsui
->view
), column
);
59 renderer
= gtk_cell_renderer_text_new();
60 column
= gtk_tree_view_column_new_with_attributes(_("Subject"), renderer
,
63 gtk_tree_view_column_set_sort_column_id(column
, COL_SUBJECT
);
64 gtk_tree_view_append_column(GTK_TREE_VIEW(dsui
->view
), column
);
66 return scroll_wrap(dsui
->view
);
70 delete_cb(GtkWidget
*w
, DraftStoreUI
*dsui
) {
75 if (!gtk_tree_selection_get_selected(
76 gtk_tree_view_get_selection(GTK_TREE_VIEW(dsui
->view
)),
80 if (!jam_confirm(GTK_WINDOW(dsui
->win
), _("Delete"), _("Delete entry?")))
83 gtk_tree_model_get(model
, &iter
,
87 gtk_list_store_remove(GTK_LIST_STORE(model
), &iter
);
89 draft_store_remove_entry(dsui
->ds
, itemid
, NULL
);
93 dsui_destroy_cb(GtkWidget
*w
, DraftStoreUI
*dsui
) {
94 /*gdk_pixbuf_unref(dsui->pb_friends);
95 gdk_pixbuf_unref(dsui->pb_private);*/
99 make_dialog(DraftStoreUI
*dsui
, GtkWindow
*parent
) {
100 GtkWidget
*vbox
, *bbox
, *button
;
102 dsui
->win
= gtk_dialog_new_with_buttons(_("Entries"),
103 parent
, GTK_DIALOG_MODAL
,
104 GTK_STOCK_CANCEL
, GTK_RESPONSE_CANCEL
,
105 GTK_STOCK_OK
, GTK_RESPONSE_OK
,
107 g_signal_connect(G_OBJECT(dsui
->win
), "destroy",
108 G_CALLBACK(dsui_destroy_cb
), dsui
);
109 gtk_window_set_default_size(GTK_WINDOW(dsui
->win
), 500, 400);
110 gtk_dialog_set_default_response(GTK_DIALOG(dsui
->win
), GTK_RESPONSE_OK
);
112 vbox
= gtk_vbox_new(FALSE
, 5);
113 gtk_box_pack_start(GTK_BOX(vbox
), make_view(dsui
), TRUE
, TRUE
, 0);
114 /*dsui->lstats = gtk_label_new("");
115 gtk_label_set_selectable(GTK_LABEL(dsui->lstats), TRUE);
116 gtk_box_pack_start(GTK_BOX(vbox), dsui->lstats, FALSE, FALSE, 0);*/
118 bbox
= jam_dialog_buttonbox_new();
119 button
= jam_dialog_buttonbox_button_from_stock(bbox
, GTK_STOCK_DELETE
);
120 g_signal_connect(G_OBJECT(button
), "clicked",
121 G_CALLBACK(delete_cb
), dsui
);
123 jam_dialog_set_contents_buttonbox(dsui
->win
, vbox
, bbox
);
127 load_item_cb(DraftStore
*ec
, LJEntry
*entry
, gpointer data
) {
128 DraftStoreUI
*dsui
= data
;
134 switch (entry
->security
.type
) {
135 case SECURITY_FRIENDS
:
136 case SECURITY_CUSTOM
:
137 pb
= dsui
->pb_friends
; break;
138 case SECURITY_PRIVATE
:
139 pb
= dsui
->pb_private
; break;
141 pb
= NULL
; /* public: no icon */
144 date
= lj_tm_to_ljdate_noseconds(&entry
->time
);
145 gtk_list_store_append(dsui
->store
, &iter
);
146 gtk_list_store_set(dsui
->store
, &iter
,
147 /*COL_SECURITY, pb,*/
149 COL_SUBJECT
, entry
->subject
,
150 COL_ITEMID
, entry
->itemid
,
155 load_items(DraftStoreUI
*dsui
) {
157 entry
= lj_entry_new();
158 draft_store_each_header(dsui
->ds
, entry
, load_item_cb
, dsui
);
159 lj_entry_free(entry
);
164 load_selected(DraftStoreUI
*dsui
) {
169 if (!gtk_tree_selection_get_selected(
170 gtk_tree_view_get_selection(GTK_TREE_VIEW(dsui
->view
)),
173 gtk_tree_model_get(model
, &iter
,
177 return draft_store_get_entry(dsui
->ds
, itemid
, NULL
);
181 draft_store_ui_select(DraftStore
*ds
, GtkWindow
*parent
) {
182 DraftStoreUI dsui_actual
= {0}, *dsui
= &dsui_actual
;
183 LJEntry
*entry
= NULL
;
186 dsui
->store
= gtk_list_store_new(COL_COUNT
,
187 /*GDK_TYPE_PIXBUF, */G_TYPE_STRING
, G_TYPE_STRING
, G_TYPE_INT
);
189 make_dialog(dsui
, parent
);
191 /*dsui->pb_friends = gtk_widget_render_icon(dsui->win,
192 "logjam-protected", GTK_ICON_SIZE_MENU, NULL);
193 dsui->pb_private = gtk_widget_render_icon(dsui->win,
194 "logjam-private", GTK_ICON_SIZE_MENU, NULL);*/
196 if (!load_items(dsui
))
199 if (gtk_dialog_run(GTK_DIALOG(dsui
->win
)) == GTK_RESPONSE_OK
)
200 entry
= load_selected(dsui
);
201 gtk_widget_destroy(dsui
->win
);