projects
/
prss.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
save/restore window size
[prss.git]
/
src
/
main.c
diff --git
a/src/main.c
b/src/main.c
index
1249e50
..
46e18bc
100644
(file)
--- a/
src/main.c
+++ b/
src/main.c
@@
-41,7
+41,7
@@
static GSettings *settings;
static GtkPaned *w_panel;
static GtkLabel *w_headline_title;
static GtkLabel *w_headline_date;
static GtkPaned *w_panel;
static GtkLabel *w_headline_title;
static GtkLabel *w_headline_date;
-
+static GtkWindow *window;
static int model_state;
enum {
static int model_state;
enum {
@@
-52,7
+52,8
@@
enum {
enum {
COL_HEADLINE_TITLE,
COL_HEADLINE_ID,
enum {
COL_HEADLINE_TITLE,
COL_HEADLINE_ID,
- COL_HEADLINE_DATE
+ COL_HEADLINE_DATE,
+ COL_HEADLINE_EPOCH_TIME
};
static struct option long_options[] = {
};
static struct option long_options[] = {
@@
-110,35
+111,38
@@
static char *feed_get_formated_title(struct feed *f)
void update()
{
void update()
{
- struct feed **feeds;
- Gtk
TreeModel
*model, *headline_model;
+ struct feed **feeds
, **cur
;
+ Gtk
ListStore
*model, *headline_model;
GtkTreeIter iter;
char *title;
GtkTreeIter iter;
char *title;
- model = gtk_tree_view_get_model(w_feedtree);
- headline_model = gtk_tree_view_get_model(w_headlinetree);
+ model = GTK_LIST_STORE(gtk_tree_view_get_model(w_feedtree));
+ headline_model
+ = GTK_LIST_STORE(gtk_tree_view_get_model(w_headlinetree));
log_debug("update(): clear feed tree.");
model_state = 1;
log_debug("update(): clear feed tree.");
model_state = 1;
- gtk_list_store_clear(
GTK_LIST_STORE(model)
);
- gtk_list_store_clear(
GTK_LIST_STORE(headline_model)
);
+ gtk_list_store_clear(
model
);
+ gtk_list_store_clear(
headline_model
);
log_debug("update(): clear feed tree done.");
feeds = ttrss_get_feeds();
log_debug("update(): clear feed tree done.");
feeds = ttrss_get_feeds();
- while (feeds && *feeds) {
- title = feed_get_formated_title(*feeds);
+ cur = feeds;
+ while (cur && *cur) {
+ title = feed_get_formated_title(*cur);
- gtk_list_store_append(
GTK_LIST_STORE(model)
, &iter);
+ gtk_list_store_append(
model
, &iter);
- gtk_list_store_set(
GTK_LIST_STORE(model)
,
+ gtk_list_store_set(
model
,
&iter,
COL_FEED_TITLE, title,
&iter,
COL_FEED_TITLE, title,
- COL_FEED_ID, (*
feeds
)->id,
+ COL_FEED_ID, (*
cur
)->id,
-1);
g_free(title);
-1);
g_free(title);
-
feeds
++;
+
cur
++;
}
}
- ttrs_download_headline_content(feeds);
+ if (feeds)
+ ttrs_download_headline_content(feeds);
model_state = 0;
model_state = 0;
@@
-291,7
+295,7
@@
static char *headline_get_date(struct headline *h)
char date[200];
tmp = localtime(&h->date);
char date[200];
tmp = localtime(&h->date);
-
+
if (h->unread)
strftime(date, sizeof(date), "<b>%D</b>", tmp);
else
if (h->unread)
strftime(date, sizeof(date), "<b>%D</b>", tmp);
else
@@
-340,6
+344,8
@@
int feed_cursor_changed_cbk(GtkTreeView *treeview, gpointer data)
h->id,
COL_HEADLINE_DATE,
date,
h->id,
COL_HEADLINE_DATE,
date,
+ COL_HEADLINE_EPOCH_TIME,
+ h->date,
-1);
g_free(title);
-1);
g_free(title);
@@
-360,7
+366,7
@@
int headline_cursor_changed_cbk(GtkTreeView *treeview, gpointer data)
GtkTreeIter iter;
GtkTreeModel *model;
struct headline *headline;
GtkTreeIter iter;
GtkTreeModel *model;
struct headline *headline;
- char *str;
+ char *str
, *date
;
log_debug("headline_cursor_changed_cbk()");
log_debug("headline_cursor_changed_cbk()");
@@
-388,10
+394,14
@@
int headline_cursor_changed_cbk(GtkTreeView *treeview, gpointer data)
}
model = gtk_tree_view_get_model(w_headlinetree);
}
model = gtk_tree_view_get_model(w_headlinetree);
+ date = headline_get_date(headline);
gtk_list_store_set(GTK_LIST_STORE(model),
&iter,
COL_HEADLINE_TITLE, headline->title,
gtk_list_store_set(GTK_LIST_STORE(model),
&iter,
COL_HEADLINE_TITLE, headline->title,
+ COL_HEADLINE_DATE, date,
+ COL_HEADLINE_EPOCH_TIME, headline->date,
-1);
-1);
+ free(date);
} else {
log_debug("headline not found");
}
} else {
log_debug("headline not found");
}
@@
-434,11
+444,24
@@
void headline_row_activated_cbk(GtkWidget *widget, gpointer data)
}
}
}
}
+static void save_settings()
+{
+ int w, h;
+
+ gtk_window_get_size(window,
+ &w,
+ &h);
+
+ g_settings_set_int(settings, "window-width", w);
+ g_settings_set_int(settings, "window-height", h);
+}
+
gboolean
window_delete_event_cbk(GtkWidget *widget, GdkEvent *event, gpointer data)
{
log_debug("window_delete_event_cbk");
gboolean
window_delete_event_cbk(GtkWidget *widget, GdkEvent *event, gpointer data)
{
log_debug("window_delete_event_cbk");
+ save_settings();
gtk_main_quit();
return TRUE;
gtk_main_quit();
return TRUE;
@@
-448,6
+471,7
@@
void quit_activate_cbk(GtkWidget *menu_item, gpointer data)
{
log_debug("quit_activate_cbk");
{
log_debug("quit_activate_cbk");
+ save_settings();
gtk_main_quit();
}
gtk_main_quit();
}
@@
-494,7
+518,7
@@
static void log_init()
int main(int argc, char **argv)
{
int main(int argc, char **argv)
{
- GtkWidget *
window, *
panh;
+ GtkWidget *panh;
GtkBuilder *builder;
int optc, cmdok, opti;
GtkBuilder *builder;
int optc, cmdok, opti;
@@
-550,7
+574,12
@@
int main(int argc, char **argv)
(builder,
PACKAGE_DATA_DIR G_DIR_SEPARATOR_S "prss.glade",
NULL);
(builder,
PACKAGE_DATA_DIR G_DIR_SEPARATOR_S "prss.glade",
NULL);
- window = GTK_WIDGET(gtk_builder_get_object(builder, "window"));
+ window = GTK_WINDOW(gtk_builder_get_object(builder, "window"));
+
+ gtk_window_set_default_size(GTK_WINDOW(window),
+ g_settings_get_int(settings, "window-width"),
+ g_settings_get_int(settings, "window-height"));
+
w_feedtree = GTK_TREE_VIEW(gtk_builder_get_object(builder,
"feed_tree"));
w_headlinetree = GTK_TREE_VIEW(gtk_builder_get_object(builder,
w_feedtree = GTK_TREE_VIEW(gtk_builder_get_object(builder,
"feed_tree"));
w_headlinetree = GTK_TREE_VIEW(gtk_builder_get_object(builder,
@@
-570,7
+599,7
@@
int main(int argc, char **argv)
g_object_unref(G_OBJECT(builder));
g_object_unref(G_OBJECT(builder));
- gtk_widget_show_all(
window
);
+ gtk_widget_show_all(
GTK_WIDGET(window)
);
update_layout();
gtk_main();
update_layout();
gtk_main();