From 7f6b694732f0f24d0ecb73fa3eb22c2ca9c40aa0 Mon Sep 17 00:00:00 2001 From: Chris Young Date: Sat, 23 Jul 2011 15:19:27 +0000 Subject: Show existing file size when file already exists on download svn path=/trunk/netsurf/; revision=12618 --- amiga/bitmap.c | 3 ++- amiga/context_menu.c | 2 +- amiga/download.c | 27 ++++++++++++++++++++++----- amiga/download.h | 2 +- amiga/drag.c | 6 +++--- amiga/gui.h | 2 ++ amiga/iff_dr2d.c | 2 +- amiga/menu.c | 6 +++--- amiga/utf8.c | 4 ++-- 9 files changed, 37 insertions(+), 17 deletions(-) (limited to 'amiga') diff --git a/amiga/bitmap.c b/amiga/bitmap.c index d6895d2b3..b6e01c1ed 100644 --- a/amiga/bitmap.c +++ b/amiga/bitmap.c @@ -33,6 +33,7 @@ #include #include #include +#include #include "utils/messages.h" /** @@ -138,7 +139,7 @@ bool bitmap_save(void *bitmap, const char *path, unsigned flags) int err = 0; Object *dto = NULL; - if(!ami_download_check_overwrite(path, NULL)) return false; + if(!ami_download_check_overwrite(path, NULL, 0)) return false; if(dto = ami_datatype_object_from_bitmap(bitmap)) { diff --git a/amiga/context_menu.c b/amiga/context_menu.c index 03ece4373..92ba1598d 100755 --- a/amiga/context_menu.c +++ b/amiga/context_menu.c @@ -517,7 +517,7 @@ static uint32 ami_context_menu_hook(struct Hook *hook,Object *item,APTR reserved AddPart(fname,savereq->fr_File,1024); ami_update_pointer(gwin->win,GUI_POINTER_WAIT); - if(ami_download_check_overwrite(fname, gwin->win)) + if(ami_download_check_overwrite(fname, gwin->win, 0)) { if(fh = FOpen(fname,MODE_NEWFILE,0)) { diff --git a/amiga/download.c b/amiga/download.c index 48163887e..71d7baaf1 100644 --- a/amiga/download.c +++ b/amiga/download.c @@ -102,7 +102,7 @@ struct gui_download_window *gui_download_window_create(download_context *ctx, { strlcpy(dw->fname, savereq->fr_Drawer, 1024); AddPart((STRPTR)&dw->fname,savereq->fr_File,1024); - if(!ami_download_check_overwrite(dw->fname, gui->shared->win)) + if(!ami_download_check_overwrite(dw->fname, gui->shared->win, total_size)) { FreeVec(dw); return NULL; @@ -327,7 +327,7 @@ gui_window_save_link(struct gui_window *g, const char *url, const char *title) AddPart(fname,savereq->fr_File,1024); ami_update_pointer(g->shared->win,GUI_POINTER_WAIT); - if(ami_download_check_overwrite(fname, g->shared->win)) + if(ami_download_check_overwrite(fname, g->shared->win, 0)) { if(fh = FOpen(fname,MODE_NEWFILE,0)) { @@ -356,11 +356,14 @@ gui_window_save_link(struct gui_window *g, const char *url, const char *title) } } -BOOL ami_download_check_overwrite(const char *file, struct Window *win) +BOOL ami_download_check_overwrite(const char *file, struct Window *win, ULONG size) { /* Return TRUE if file can be (over-)written */ int res = 0; BPTR lock = 0; + BPTR fh = 0; + int64 oldsize = 0; + char *overwritetext; if(option_ask_overwrite == false) return TRUE; @@ -368,9 +371,23 @@ BOOL ami_download_check_overwrite(const char *file, struct Window *win) if(lock) { - UnLock(lock); + if(size) { + if(fh = OpenFromLock(lock)) { + oldsize = GetFileSize(fh); + Close(fh); + } + overwritetext = ASPrintf("%s\n\n%s %lu %s\n%s %lu %s", + messages_get("OverwriteFile"), + messages_get("amiSizeExisting"), (ULONG)oldsize, messages_get("Bytes"), + messages_get("amiSizeNew"), size, messages_get("Bytes")); + } else { + UnLock(lock); + overwritetext = ASPrintf(messages_get("OverwriteFile")); + } + + char *utf8text = ami_utf8_easy(overwritetext); + FreeVec(overwritetext); - char *utf8text = ami_utf8_easy(messages_get("OverwriteFile")); char *utf8gadget1 = ami_utf8_easy(messages_get("DontReplace")); char *utf8gadget2 = ami_utf8_easy(messages_get("Replace")); char *utf8gadgets = ASPrintf("%s|%s", utf8gadget1, utf8gadget2); diff --git a/amiga/download.h b/amiga/download.h index 99f11df5a..ed09a8057 100755 --- a/amiga/download.h +++ b/amiga/download.h @@ -35,5 +35,5 @@ struct dlnode void ami_download_window_abort(struct gui_download_window *dw); BOOL ami_download_window_event(struct gui_download_window *dw); void ami_free_download_list(struct List *dllist); -BOOL ami_download_check_overwrite(const char *file, struct Window *win); +BOOL ami_download_check_overwrite(const char *file, struct Window *win, ULONG size); #endif diff --git a/amiga/drag.c b/amiga/drag.c index 7fc3bc709..6afbd9388 100644 --- a/amiga/drag.c +++ b/amiga/drag.c @@ -156,7 +156,7 @@ void ami_drag_save(struct Window *win) BPTR fh = 0; AddPart(path, content_get_title(c), 1024); - if(!ami_download_check_overwrite(path, win)) + if(!ami_download_check_overwrite(path, win, 0)) break; if(fh = FOpen(path,MODE_NEWFILE,0)) @@ -172,7 +172,7 @@ void ami_drag_save(struct Window *win) case GUI_SAVE_TEXT_SELECTION: // selection AddPart(path,"netsurf_text_file",1024); - if(!ami_download_check_overwrite(path, win)) + if(!ami_download_check_overwrite(path, win, 0)) break; selection_save_text((struct selection *)drag_save_data,path); break; @@ -183,7 +183,7 @@ void ami_drag_save(struct Window *win) BPTR lock = 0; AddPart(path, content_get_title(c), 1024); - if(!ami_download_check_overwrite(path, win)) + if(!ami_download_check_overwrite(path, win, 0)) break; if(lock = CreateDir(path)) diff --git a/amiga/gui.h b/amiga/gui.h index 500eceb9c..f39ab1ae1 100755 --- a/amiga/gui.h +++ b/amiga/gui.h @@ -135,6 +135,8 @@ void ami_get_msg(void); void ami_close_all_tabs(struct gui_window_2 *gwin); void ami_quit_netsurf(void); void ami_do_redraw(struct gui_window_2 *g); +void ami_do_redraw_limits(struct gui_window *g, struct browser_window *bw, + int x0, int y0, int x1, int y1); STRPTR ami_locale_langs(void); int ami_key_to_nskey(ULONG keycode, struct InputEvent *ie); struct box *ami_text_box_at_point(struct gui_window_2 *gwin, ULONG *x, ULONG *y); diff --git a/amiga/iff_dr2d.c b/amiga/iff_dr2d.c index 1787e1e9f..3f46ee933 100644 --- a/amiga/iff_dr2d.c +++ b/amiga/iff_dr2d.c @@ -308,7 +308,7 @@ bool ami_save_svg(struct hlcache_handle *c,char *filename) const char *source_data; ULONG source_size; - if(!ami_download_check_overwrite(filename, NULL)) return false; + if(!ami_download_check_overwrite(filename, NULL, 0)) return false; if(iffh = AllocIFF()) { diff --git a/amiga/menu.c b/amiga/menu.c index ed1966df7..10066014b 100755 --- a/amiga/menu.c +++ b/amiga/menu.c @@ -535,7 +535,7 @@ void ami_menupick(ULONG code,struct gui_window_2 *gwin,struct MenuItem *item) AddPart(fname,savereq->fr_File,1024); ami_update_pointer(gwin->win,GUI_POINTER_WAIT); - if(ami_download_check_overwrite(fname, gwin->win)) + if(ami_download_check_overwrite(fname, gwin->win, 0)) { if(fh = FOpen(fname,MODE_NEWFILE,0)) { @@ -561,7 +561,7 @@ void ami_menupick(ULONG code,struct gui_window_2 *gwin,struct MenuItem *item) AddPart(fname,savereq->fr_File,1024); ami_update_pointer(gwin->win,GUI_POINTER_WAIT); - if(ami_download_check_overwrite(fname, gwin->win)) + if(ami_download_check_overwrite(fname, gwin->win, 0)) { save_as_text(gwin->bw->current_content,fname); SetComment(fname,content_get_url(gwin->bw->current_content)); @@ -580,7 +580,7 @@ void ami_menupick(ULONG code,struct gui_window_2 *gwin,struct MenuItem *item) strlcpy(fname,savereq->fr_Drawer,1024); AddPart(fname,savereq->fr_File,1024); ami_update_pointer(gwin->win,GUI_POINTER_WAIT); - if(ami_download_check_overwrite(fname, gwin->win)) + if(ami_download_check_overwrite(fname, gwin->win, 0)) { if(lock = CreateDir(fname)) { diff --git a/amiga/utf8.c b/amiga/utf8.c index 030d6eef9..76e7b8690 100755 --- a/amiga/utf8.c +++ b/amiga/utf8.c @@ -30,7 +30,7 @@ void ami_utf8_free(char *ptr) if(ptr) free(ptr); } -char *ami_utf8_easy(char *string) +char *ami_utf8_easy(const char *string) { char *localtext; @@ -44,7 +44,7 @@ char *ami_utf8_easy(char *string) } } -char *ami_to_utf8_easy(char *string) +char *ami_to_utf8_easy(const char *string) { char *localtext; -- cgit v1.2.3