1 /* -*- Mode: C ; c-basic-offset: 2 -*- */
2 /*****************************************************************************
4 * $Id: medias.c,v 1.4 2005/02/18 02:12:47 nedko Exp $
12 *****************************************************************************/
20 #include "../result.h"
21 #include "../libdb/libdb.h"
22 #include "../libfrontend/db.h"
46 mediadb_uint nMediaID
,
47 mediadb_mediatype nType
,
49 const char *pszComment
,
50 mediadb_uint nTimeAdded
,
51 mediadb_uint nTotalFiles
,
52 mediadb_uint nTotalSize
,
53 mediadb_uint nLocationID
,
54 const char *pszLocation
59 time_t time
= nTimeAdded
;
60 char strTotalSize
[MAX_SIZE_DESCRIPTION
];
63 GError
* error
= NULL
;
65 gchar
* pszIconFullname
;
67 /* ctime_r(&time, strTime); */
68 /* strTime[strlen(strTime) - 1] = 0; */
70 localtime_r(&time
, &tm
);
72 "%u-%02u-%02u %02u:%02u:%02u",
80 get_size_description(nTotalSize
, strTotalSize
);
84 if (nType
== MEDIADB_MT_AUDIO
)
86 pszIcon
= "icon_acd.png";
88 else if (nType
== MEDIADB_MT_DATA
)
90 pszIcon
= "icon_cd.png";
99 pszIconFullname
= path_get_data_filename(pszIcon
);
100 if (pszIconFullname
!= NULL
)
102 pIcon
= gdk_pixbuf_new_from_file(pszIconFullname
, &error
);
105 g_warning("Could not load icon: %s\n", error
->message
);
110 g_free(pszIconFullname
);
114 g_warning("Could not find icon %s\n", pszIcon
);
118 gtk_list_store_prepend(
119 (GtkListStore
*)pUserContext
,
122 (GtkListStore
*)pUserContext
,
124 COL_MEDIAID
, (guint
)nMediaID
,
125 COL_MEDIAICON
, pIcon
,
126 COL_MEDIANAME
, pszName
,
127 COL_MEDIAFILES
, (guint
)nTotalFiles
,
128 COL_MEDIASIZE
, strTotalSize
,
129 COL_MEDIADATE
, strTime
,
130 COL_MEDIALOCATION
, pszLocation
,
131 COL_MEDIACOMMENT
, pszComment
,
135 static GtkTreeModel
*
136 create_and_fill_model(void)
139 GtkListStore
*pStore
;
142 pStore
= gtk_list_store_new(
144 G_TYPE_UINT
, /* COL_MEDIAID */
145 GDK_TYPE_PIXBUF
, /* COL_MEDIAICON */
146 G_TYPE_STRING
, /* COL_MEDIANAME */
147 G_TYPE_UINT
, /* COL_MEDIAFILES */
148 G_TYPE_STRING
, /* COL_MEDIASIZE */
149 G_TYPE_STRING
, /* COL_MEDIADATE */
150 G_TYPE_STRING
, /* COL_MEDIALOCATION */
151 G_TYPE_STRING
); /* COL_MEDIACOMMENT */
153 r
= mediadb_media_get_all(
157 if (MEDIADB_IS_ERROR(r
))
159 g_warning("%s\n", mediadb_get_error_message(g_hDB
));
161 pDialog
= gtk_message_dialog_new(
162 GTK_WINDOW(pMainWindow
),
163 GTK_DIALOG_DESTROY_WITH_PARENT
,
167 mediadb_get_error_message(g_hDB
));
169 gtk_dialog_run(GTK_DIALOG(pDialog
));
170 gtk_widget_destroy(pDialog
);
173 return GTK_TREE_MODEL(pStore
);
178 GtkTreeView
*pTreeView
,
180 GtkTreeViewColumn
*pColumn
,
183 GtkTreeModel
*pModel
;
185 unsigned int nMediaID
;
187 pModel
= gtk_tree_view_get_model(pTreeView
);
189 if (gtk_tree_model_get_iter(pModel
, &iter
, pPath
))
191 gtk_tree_model_get(pModel
, &iter
, COL_MEDIAID
, &nMediaID
, -1);
193 CreateMediaWindow(nMediaID
);
198 setup_view_and_model(GtkWidget
*pTreeView
)
200 GtkTreeViewColumn
*col
;
201 GtkCellRenderer
*renderer
;
203 GtkCellRenderer
* pRendererPixbuf
;
205 renderer
= gtk_cell_renderer_text_new();
206 pRendererPixbuf
= gtk_cell_renderer_pixbuf_new();
208 /* --- Column #1 --- */
210 col
= gtk_tree_view_column_new_with_attributes(
216 gtk_tree_view_append_column(
217 GTK_TREE_VIEW(pTreeView
),
220 /* --- Column #2 --- */
222 col
= gtk_tree_view_column_new();
224 gtk_tree_view_column_set_title(col
, "Name");
226 gtk_tree_view_column_pack_start(col
, pRendererPixbuf
, FALSE
);
227 gtk_tree_view_column_set_attributes(col
, pRendererPixbuf
,
228 "pixbuf", COL_MEDIAICON
,
231 gtk_tree_view_column_pack_end(col
, renderer
, TRUE
);
232 gtk_tree_view_column_set_attributes(col
,
234 "text", COL_MEDIANAME
,
237 gtk_tree_view_append_column(
238 GTK_TREE_VIEW(pTreeView
),
241 gtk_tree_view_column_set_resizable(col
, TRUE
);
242 // gtk_tree_view_column_set_max_width(col, 200);
243 // gtk_tree_view_column_set_min_width(col, 200);
245 /* --- Column #3 --- */
247 col
= gtk_tree_view_column_new_with_attributes(
250 "text", COL_MEDIALOCATION
,
253 gtk_tree_view_append_column(
254 GTK_TREE_VIEW(pTreeView
),
257 /* --- Column #4 --- */
259 col
= gtk_tree_view_column_new_with_attributes(
262 "text", COL_MEDIASIZE
,
265 gtk_tree_view_append_column(
266 GTK_TREE_VIEW(pTreeView
),
269 /* --- Column #5 --- */
271 col
= gtk_tree_view_column_new_with_attributes(
274 "text", COL_MEDIAFILES
,
277 gtk_tree_view_append_column(
278 GTK_TREE_VIEW(pTreeView
),
281 /* --- Column #6 --- */
283 col
= gtk_tree_view_column_new_with_attributes(
286 "text", COL_MEDIADATE
,
289 gtk_tree_view_append_column(
290 GTK_TREE_VIEW(pTreeView
),
293 /* --- Column #7 --- */
295 col
= gtk_tree_view_column_new_with_attributes(
298 "text", COL_MEDIACOMMENT
,
301 gtk_tree_view_append_column(
302 GTK_TREE_VIEW(pTreeView
),
305 model
= create_and_fill_model();
307 gtk_tree_view_set_model(GTK_TREE_VIEW(pTreeView
), model
);
309 g_object_unref(model
); /* destroy model automatically with view */
314 (GCallback
)view_onRowActivated
,
321 GtkWidget
*pMediasWindow
;
323 pMediasWindow
= construct_glade_widget("medias_window");
325 setup_view_and_model(get_glade_widget("medias_treeview"));
327 gtk_widget_show_all(pMediasWindow
);
329 return pMediasWindow
;
332 /*****************************************************************************
336 * !!! WARNING !!! Following lines are automatically updated by the CVS system.
339 * Revision 1.4 2005/02/18 02:12:47 nedko
340 * Use path module to access project specific data files.
343 * Revision 1.3 2004/08/31 22:40:15 nedko
344 * Partitally implemented search feature.
346 * Revision 1.2 2004/05/22 00:36:24 nedko
347 * set WM_WINDOWS_ROLE
349 * Revision 1.1 2004/05/21 23:43:38 nedko
350 * Implement media window.
352 *****************************************************************************/