Move around history loading in MidoriBrowser
This commit is contained in:
parent
87092babef
commit
9e79f6ba14
1 changed files with 161 additions and 159 deletions
|
@ -1115,7 +1115,7 @@ midori_browser_class_init (MidoriBrowserClass* class)
|
||||||
"History",
|
"History",
|
||||||
"The list of history items",
|
"The list of history items",
|
||||||
KATZE_TYPE_ARRAY,
|
KATZE_TYPE_ARRAY,
|
||||||
G_PARAM_READWRITE));
|
flags));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -3431,6 +3431,162 @@ midori_browser_toolbar_item_button_press_event_cb (GtkWidget* toolitem,
|
||||||
GdkEventButton* event,
|
GdkEventButton* event,
|
||||||
MidoriBrowser* browser);
|
MidoriBrowser* browser);
|
||||||
|
|
||||||
|
static void
|
||||||
|
_tree_store_insert_history_item (GtkTreeStore* treestore,
|
||||||
|
GtkTreeIter* parent,
|
||||||
|
KatzeItem* item)
|
||||||
|
{
|
||||||
|
GtkTreeIter iter;
|
||||||
|
KatzeItem* child;
|
||||||
|
guint i, n;
|
||||||
|
GtkTreeIter* piter;
|
||||||
|
time_t now;
|
||||||
|
gint64 date;
|
||||||
|
gint age = -1;
|
||||||
|
|
||||||
|
g_return_if_fail (KATZE_IS_ITEM (item));
|
||||||
|
|
||||||
|
if (KATZE_IS_ARRAY (item))
|
||||||
|
{
|
||||||
|
piter = parent;
|
||||||
|
if ((date = katze_item_get_added (item)))
|
||||||
|
{
|
||||||
|
now = time (NULL);
|
||||||
|
age = sokoke_days_between (&date, &now);
|
||||||
|
gtk_tree_store_insert_with_values (treestore, &iter, parent,
|
||||||
|
0, 0, item, 1, age, -1);
|
||||||
|
g_object_unref (item);
|
||||||
|
piter = &iter;
|
||||||
|
}
|
||||||
|
n = katze_array_get_length (KATZE_ARRAY (item));
|
||||||
|
for (i = 0; i < n; i++)
|
||||||
|
{
|
||||||
|
child = katze_array_get_nth_item (KATZE_ARRAY (item), i);
|
||||||
|
_tree_store_insert_history_item (treestore, piter, child);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gtk_tree_store_insert_with_values (treestore, &iter, parent,
|
||||||
|
0, 0, item, 1, age, -1);
|
||||||
|
g_object_unref (item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
midori_browser_new_history_item (MidoriBrowser* browser,
|
||||||
|
KatzeItem* item)
|
||||||
|
{
|
||||||
|
GtkTreeView* treeview;
|
||||||
|
GtkTreeModel* treemodel;
|
||||||
|
GtkTreeIter iter;
|
||||||
|
KatzeArray* parent;
|
||||||
|
gint i;
|
||||||
|
gboolean found;
|
||||||
|
time_t now;
|
||||||
|
gint64 date;
|
||||||
|
time_t date_;
|
||||||
|
gint age;
|
||||||
|
gint newage;
|
||||||
|
|
||||||
|
if (!sokoke_object_get_boolean (browser->settings, "remember-last-visited-pages"))
|
||||||
|
return;
|
||||||
|
|
||||||
|
treeview = GTK_TREE_VIEW (browser->panel_history);
|
||||||
|
treemodel = gtk_tree_view_get_model (treeview);
|
||||||
|
|
||||||
|
now = time (NULL);
|
||||||
|
katze_item_set_added (item, now);
|
||||||
|
|
||||||
|
found = FALSE;
|
||||||
|
i = 0;
|
||||||
|
while (gtk_tree_model_iter_nth_child (treemodel, &iter, NULL, i++))
|
||||||
|
{
|
||||||
|
gtk_tree_model_get (treemodel, &iter, 0, &parent, 1, &age, -1);
|
||||||
|
date = katze_item_get_added (KATZE_ITEM (parent));
|
||||||
|
date_ = (time_t)date;
|
||||||
|
newage = sokoke_days_between (&date, &now);
|
||||||
|
if (newage == 0)
|
||||||
|
{
|
||||||
|
found = TRUE;
|
||||||
|
_tree_store_insert_history_item (GTK_TREE_STORE (treemodel),
|
||||||
|
&iter, item);
|
||||||
|
katze_array_add_item (parent, item);
|
||||||
|
}
|
||||||
|
if (age != newage)
|
||||||
|
gtk_tree_store_set (GTK_TREE_STORE (treemodel),
|
||||||
|
&iter, 1, newage, -1);
|
||||||
|
g_object_unref (parent);
|
||||||
|
}
|
||||||
|
if (!found)
|
||||||
|
{
|
||||||
|
parent = katze_array_new (KATZE_TYPE_ARRAY);
|
||||||
|
katze_item_set_added (KATZE_ITEM (parent), now);
|
||||||
|
katze_array_add_item (browser->history, parent);
|
||||||
|
katze_array_add_item (parent, item);
|
||||||
|
_tree_store_insert_history_item (GTK_TREE_STORE (treemodel), NULL,
|
||||||
|
KATZE_ITEM (parent));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_location_action_insert_history_item (MidoriLocationAction* action,
|
||||||
|
MidoriBrowser* browser,
|
||||||
|
KatzeItem* item)
|
||||||
|
{
|
||||||
|
KatzeItem* child;
|
||||||
|
guint i, n;
|
||||||
|
const gchar* uri;
|
||||||
|
GdkPixbuf* pixbuf = NULL;
|
||||||
|
|
||||||
|
g_return_if_fail (MIDORI_IS_LOCATION_ACTION (action));
|
||||||
|
g_return_if_fail (KATZE_IS_ITEM (item));
|
||||||
|
|
||||||
|
if (KATZE_IS_ARRAY (item))
|
||||||
|
{
|
||||||
|
n = katze_array_get_length (KATZE_ARRAY (item));
|
||||||
|
for (i = n; i > 0; i--)
|
||||||
|
{
|
||||||
|
child = katze_array_get_nth_item (KATZE_ARRAY (item), i - 1);
|
||||||
|
_location_action_insert_history_item (action, browser, child);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
uri = katze_item_get_uri (item);
|
||||||
|
pixbuf = katze_net_load_icon (browser->net, katze_item_get_uri (item),
|
||||||
|
NULL, GTK_WIDGET (browser), NULL);
|
||||||
|
midori_location_action_add_item (action, uri, pixbuf, katze_item_get_name (item));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
midori_browser_load_history (MidoriBrowser* browser)
|
||||||
|
{
|
||||||
|
GtkTreeView* treeview;
|
||||||
|
GtkTreeModel* treemodel;
|
||||||
|
GtkAction* action;
|
||||||
|
|
||||||
|
/* FIXME: Clear current items */
|
||||||
|
|
||||||
|
g_object_set (_action_by_name (browser, "RecentlyVisited"),
|
||||||
|
"array", browser->history, NULL);
|
||||||
|
|
||||||
|
if (!browser->history)
|
||||||
|
return;
|
||||||
|
|
||||||
|
treeview = GTK_TREE_VIEW (browser->panel_history);
|
||||||
|
treemodel = gtk_tree_view_get_model (treeview);
|
||||||
|
|
||||||
|
_tree_store_insert_history_item (GTK_TREE_STORE (treemodel),
|
||||||
|
NULL, KATZE_ITEM (browser->history));
|
||||||
|
|
||||||
|
action = _action_by_name (browser, "Location");
|
||||||
|
_location_action_insert_history_item (MIDORI_LOCATION_ACTION (action),
|
||||||
|
browser,
|
||||||
|
KATZE_ITEM (browser->history));
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
midori_browser_init (MidoriBrowser* browser)
|
midori_browser_init (MidoriBrowser* browser)
|
||||||
{
|
{
|
||||||
|
@ -3462,7 +3618,6 @@ midori_browser_init (MidoriBrowser* browser)
|
||||||
browser->bookmarks = NULL;
|
browser->bookmarks = NULL;
|
||||||
browser->trash = NULL;
|
browser->trash = NULL;
|
||||||
browser->search_engines = NULL;
|
browser->search_engines = NULL;
|
||||||
browser->history = NULL;
|
|
||||||
|
|
||||||
/* Setup the window metrics */
|
/* Setup the window metrics */
|
||||||
g_signal_connect (browser, "realize",
|
g_signal_connect (browser, "realize",
|
||||||
|
@ -4287,157 +4442,6 @@ midori_browser_load_bookmarks (MidoriBrowser* browser)
|
||||||
_action_set_sensitive (browser, "BookmarkAdd", TRUE);
|
_action_set_sensitive (browser, "BookmarkAdd", TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
_tree_store_insert_history_item (GtkTreeStore* treestore,
|
|
||||||
GtkTreeIter* parent,
|
|
||||||
KatzeItem* item)
|
|
||||||
{
|
|
||||||
GtkTreeIter iter;
|
|
||||||
KatzeItem* child;
|
|
||||||
guint i, n;
|
|
||||||
GtkTreeIter* piter;
|
|
||||||
time_t now;
|
|
||||||
gint64 date;
|
|
||||||
gint age = -1;
|
|
||||||
|
|
||||||
g_return_if_fail (KATZE_IS_ITEM (item));
|
|
||||||
|
|
||||||
if (KATZE_IS_ARRAY (item))
|
|
||||||
{
|
|
||||||
piter = parent;
|
|
||||||
if ((date = katze_item_get_added (item)))
|
|
||||||
{
|
|
||||||
now = time (NULL);
|
|
||||||
age = sokoke_days_between (&date, &now);
|
|
||||||
gtk_tree_store_insert_with_values (treestore, &iter, parent,
|
|
||||||
0, 0, item, 1, age, -1);
|
|
||||||
g_object_unref (item);
|
|
||||||
piter = &iter;
|
|
||||||
}
|
|
||||||
n = katze_array_get_length (KATZE_ARRAY (item));
|
|
||||||
for (i = 0; i < n; i++)
|
|
||||||
{
|
|
||||||
child = katze_array_get_nth_item (KATZE_ARRAY (item), i);
|
|
||||||
_tree_store_insert_history_item (treestore, piter, child);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
gtk_tree_store_insert_with_values (treestore, &iter, parent,
|
|
||||||
0, 0, item, 1, age, -1);
|
|
||||||
g_object_unref (item);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
midori_browser_new_history_item (MidoriBrowser* browser,
|
|
||||||
KatzeItem* item)
|
|
||||||
{
|
|
||||||
GtkTreeView* treeview;
|
|
||||||
GtkTreeModel* treemodel;
|
|
||||||
GtkTreeIter iter;
|
|
||||||
KatzeArray* parent;
|
|
||||||
gint i;
|
|
||||||
gboolean found;
|
|
||||||
time_t now;
|
|
||||||
gint64 date;
|
|
||||||
time_t date_;
|
|
||||||
gint age;
|
|
||||||
gint newage;
|
|
||||||
|
|
||||||
if (!sokoke_object_get_boolean (browser->settings, "remember-last-visited-pages"))
|
|
||||||
return;
|
|
||||||
|
|
||||||
treeview = GTK_TREE_VIEW (browser->panel_history);
|
|
||||||
treemodel = gtk_tree_view_get_model (treeview);
|
|
||||||
|
|
||||||
now = time (NULL);
|
|
||||||
katze_item_set_added (item, now);
|
|
||||||
|
|
||||||
found = FALSE;
|
|
||||||
i = 0;
|
|
||||||
while (gtk_tree_model_iter_nth_child (treemodel, &iter, NULL, i++))
|
|
||||||
{
|
|
||||||
gtk_tree_model_get (treemodel, &iter, 0, &parent, 1, &age, -1);
|
|
||||||
date = katze_item_get_added (KATZE_ITEM (parent));
|
|
||||||
date_ = (time_t)date;
|
|
||||||
newage = sokoke_days_between (&date, &now);
|
|
||||||
if (newage == 0)
|
|
||||||
{
|
|
||||||
found = TRUE;
|
|
||||||
_tree_store_insert_history_item (GTK_TREE_STORE (treemodel),
|
|
||||||
&iter, item);
|
|
||||||
katze_array_add_item (parent, item);
|
|
||||||
}
|
|
||||||
if (age != newage)
|
|
||||||
gtk_tree_store_set (GTK_TREE_STORE (treemodel),
|
|
||||||
&iter, 1, newage, -1);
|
|
||||||
g_object_unref (parent);
|
|
||||||
}
|
|
||||||
if (!found)
|
|
||||||
{
|
|
||||||
parent = katze_array_new (KATZE_TYPE_ARRAY);
|
|
||||||
katze_item_set_added (KATZE_ITEM (parent), now);
|
|
||||||
katze_array_add_item (browser->history, parent);
|
|
||||||
katze_array_add_item (parent, item);
|
|
||||||
_tree_store_insert_history_item (GTK_TREE_STORE (treemodel), NULL,
|
|
||||||
KATZE_ITEM (parent));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_location_action_insert_history_item (MidoriLocationAction* action,
|
|
||||||
MidoriBrowser* browser,
|
|
||||||
KatzeItem* item)
|
|
||||||
{
|
|
||||||
KatzeItem* child;
|
|
||||||
guint i, n;
|
|
||||||
const gchar* uri;
|
|
||||||
GdkPixbuf* pixbuf = NULL;
|
|
||||||
|
|
||||||
g_return_if_fail (MIDORI_IS_LOCATION_ACTION (action));
|
|
||||||
g_return_if_fail (KATZE_IS_ITEM (item));
|
|
||||||
|
|
||||||
if (KATZE_IS_ARRAY (item))
|
|
||||||
{
|
|
||||||
n = katze_array_get_length (KATZE_ARRAY (item));
|
|
||||||
for (i = n; i > 0; i--)
|
|
||||||
{
|
|
||||||
child = katze_array_get_nth_item (KATZE_ARRAY (item), i - 1);
|
|
||||||
_location_action_insert_history_item (action, browser, child);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
uri = katze_item_get_uri (item);
|
|
||||||
pixbuf = katze_net_load_icon (browser->net, katze_item_get_uri (item),
|
|
||||||
NULL, GTK_WIDGET (browser), NULL);
|
|
||||||
midori_location_action_add_item (action, uri, pixbuf, katze_item_get_name (item));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
midori_browser_load_history (MidoriBrowser* browser)
|
|
||||||
{
|
|
||||||
GtkTreeView* treeview;
|
|
||||||
GtkTreeModel* treemodel;
|
|
||||||
GtkAction* action;
|
|
||||||
|
|
||||||
if (!browser->history)
|
|
||||||
return;
|
|
||||||
|
|
||||||
treeview = GTK_TREE_VIEW (browser->panel_history);
|
|
||||||
treemodel = gtk_tree_view_get_model (treeview);
|
|
||||||
|
|
||||||
_tree_store_insert_history_item (GTK_TREE_STORE (treemodel),
|
|
||||||
NULL, KATZE_ITEM (browser->history));
|
|
||||||
|
|
||||||
action = _action_by_name (browser, "Location");
|
|
||||||
_location_action_insert_history_item (MIDORI_LOCATION_ACTION (action),
|
|
||||||
browser,
|
|
||||||
KATZE_ITEM (browser->history));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
midori_browser_set_property (GObject* object,
|
midori_browser_set_property (GObject* object,
|
||||||
guint prop_id,
|
guint prop_id,
|
||||||
|
@ -4472,7 +4476,7 @@ midori_browser_set_property (GObject* object,
|
||||||
(GtkCallback) midori_view_set_settings, browser->settings);
|
(GtkCallback) midori_view_set_settings, browser->settings);
|
||||||
break;
|
break;
|
||||||
case PROP_BOOKMARKS:
|
case PROP_BOOKMARKS:
|
||||||
; /* FIXME: Disconnect handlers */
|
/* FIXME: Disconnect handlers */
|
||||||
katze_object_assign (browser->bookmarks, g_value_dup_object (value));
|
katze_object_assign (browser->bookmarks, g_value_dup_object (value));
|
||||||
g_object_set (_action_by_name (browser, "Bookmarks"), "array",
|
g_object_set (_action_by_name (browser, "Bookmarks"), "array",
|
||||||
browser->bookmarks, NULL);
|
browser->bookmarks, NULL);
|
||||||
|
@ -4480,7 +4484,7 @@ midori_browser_set_property (GObject* object,
|
||||||
/* FIXME: Connect to updates */
|
/* FIXME: Connect to updates */
|
||||||
break;
|
break;
|
||||||
case PROP_TRASH:
|
case PROP_TRASH:
|
||||||
; /* FIXME: Disconnect handlers */
|
/* FIXME: Disconnect handlers */
|
||||||
katze_object_assign (browser->trash, g_value_dup_object (value));
|
katze_object_assign (browser->trash, g_value_dup_object (value));
|
||||||
g_object_set (_action_by_name (browser, "Trash"), "array",
|
g_object_set (_action_by_name (browser, "Trash"), "array",
|
||||||
browser->trash, NULL);
|
browser->trash, NULL);
|
||||||
|
@ -4488,7 +4492,7 @@ midori_browser_set_property (GObject* object,
|
||||||
_midori_browser_update_actions (browser);
|
_midori_browser_update_actions (browser);
|
||||||
break;
|
break;
|
||||||
case PROP_SEARCH_ENGINES:
|
case PROP_SEARCH_ENGINES:
|
||||||
; /* FIXME: Disconnect handlers */
|
/* FIXME: Disconnect handlers */
|
||||||
katze_object_assign (browser->search_engines, g_value_dup_object (value));
|
katze_object_assign (browser->search_engines, g_value_dup_object (value));
|
||||||
midori_search_action_set_search_engines (MIDORI_SEARCH_ACTION (
|
midori_search_action_set_search_engines (MIDORI_SEARCH_ACTION (
|
||||||
_action_by_name (browser, "Search")), browser->search_engines);
|
_action_by_name (browser, "Search")), browser->search_engines);
|
||||||
|
@ -4504,11 +4508,9 @@ midori_browser_set_property (GObject* object,
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PROP_HISTORY:
|
case PROP_HISTORY:
|
||||||
; /* FIXME: Disconnect handlers */
|
/* FIXME: Disconnect handlers */
|
||||||
katze_object_assign (browser->history, g_value_dup_object (value));
|
katze_object_assign (browser->history, g_value_dup_object (value));
|
||||||
midori_browser_load_history (browser);
|
midori_browser_load_history (browser);
|
||||||
g_object_set (_action_by_name (browser, "RecentlyVisited"), "array",
|
|
||||||
browser->history, NULL);
|
|
||||||
/* FIXME: Connect to updates */
|
/* FIXME: Connect to updates */
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
Loading…
Reference in a new issue