From cd45e1f44720a563d9b7e9b9bc7ea2b410444d3f Mon Sep 17 00:00:00 2001 From: Ole Loots Date: Tue, 19 Jun 2012 23:04:38 +0000 Subject: First attempt to implement the global history treeview. There is something wrong with the redraw ( the treeview area of the windo isn't redrawn, also it looks like the treeview content size isn't set ) svn path=/trunk/netsurf/; revision=13973 --- atari/history.c | 129 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 126 insertions(+), 3 deletions(-) (limited to 'atari/history.c') diff --git a/atari/history.c b/atari/history.c index 36edcda00..ee47edeba 100755 --- a/atari/history.c +++ b/atari/history.c @@ -16,16 +16,139 @@ * along with this program. If not, see . */ -#include "content/urldb.h" +#include +#include +#include +#include +#include +#include "desktop/browser.h" +#include "desktop/options.h" +#include "desktop/tree.h" +#include "desktop/tree_url_node.h" +#include "desktop/gui.h" +#include "desktop/history_global_core.h" #include "desktop/browser.h" +#include "content/content.h" +#include "content/hlcache.h" +#include "content/urldb.h" +#include "utils/log.h" +#include "atari/treeview.h" +#include "atari/findfile.h" +#include "atari/res/netsurf.rsh" +#include "atari/history.h" + +extern char * tree_directory_icon_name; + +struct s_atari_global_history { + WINDOW * window; + NSTREEVIEW tv; /*< The history treeview handle. */ + bool open; + bool init; +}; -void global_history_add_recent(const char *url) +static struct s_atari_global_history gl_history; + + + +void global_history_add_recent( const char *url ) { } -char **global_history_get_recent(int *count) +char **global_history_get_recent( int *count ) { return NULL; } + +void global_history_open( void ) +{ + if( gl_history.init == false ) { + printf("history not init"); + return; + } + if( gl_history.open == false ) { + WindOpen( gl_history.window, -1, -1, app.w/3, app.h/2); + gl_history.open = true; + atari_treeview_open( gl_history.tv ); + } else { + WindTop( gl_history.window ); + } +} + +void global_history_close( void ) +{ + WindClose(gl_history.window); + gl_history.open = false; + atari_treeview_close( gl_history.tv ); +} + + +static void __CDECL evnt_history_close( WINDOW *win, short buff[8] ) +{ + global_history_close(); +} + + +static void __CDECL evnt_history_mbutton( WINDOW *win, short buff[8] ) +{ + /* todo: implement popup? + if(evnt.mbut & 2) { + + } + */ +} + +bool global_history_init( void ) +{ + + if( gl_history.init == false ) { + + int flags = ATARI_TREEVIEW_WIDGETS; + gl_history.open = false; + gl_history.window = WindCreate( flags, 40, 40, app.w, app.h ); + if( gl_history.window == NULL ) { + LOG(("Failed to allocate history window")); + return( false ); + } + /* TODO: load hotlist strings from messages */ + WindSetStr( gl_history.window, WF_NAME, (char*)"History" ); + //WindSetPtr( gl_history.window, WF_TOOLBAR, tree, evnt_history_toolbar ); + EvntAttach( gl_history.window, WM_CLOSED, evnt_history_close ); + EvntAttach( gl_history.window, WM_XBUTTON,evnt_history_mbutton ); + + gl_history.tv = atari_treeview_create( + history_global_get_tree_flags(), + gl_history.window + ); + if (gl_history.tv == NULL) { + /* handle it properly, clean up previous allocs */ + LOG(("Failed to allocate history treeview")); + return( false ); + } + + history_global_initialise( gl_history.tv->tree, "dir.png" ); + gl_history.init = true; + } + return( true ); +} + + +void global_history_destroy( void ) +{ + if( gl_history.init == false ) { + return; + } + if( gl_history.window != NULL ) { + history_global_cleanup(); + if( gl_history.open ) + global_history_close(); + WindDelete( gl_history.window ); + gl_history.window = NULL; + atari_treeview_destroy( gl_history.tv ); + gl_history.init = false; + } + LOG(("done")); +} + + -- cgit v1.2.3