diff options
author | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2010-10-30 11:20:53 +0000 |
---|---|---|
committer | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2010-10-30 11:20:53 +0000 |
commit | 078ff2fd51380bd2f34b065235beaa3befd8b585 (patch) | |
tree | 5a771dde42b931ee26ed748c2d9ffc4605c7add1 /amiga/download.c | |
parent | d185dc310a9c7e340ca3fc64f0c1643a4f612b43 (diff) | |
download | netsurf-078ff2fd51380bd2f34b065235beaa3befd8b585.tar.gz netsurf-078ff2fd51380bd2f34b065235beaa3befd8b585.tar.bz2 |
Move drag icon stuff to own file; fix warnings
svn path=/trunk/netsurf/; revision=10922
Diffstat (limited to 'amiga/download.c')
-rw-r--r-- | amiga/download.c | 256 |
1 files changed, 2 insertions, 254 deletions
diff --git a/amiga/download.c b/amiga/download.c index 5ae7301b2..96c322aed 100644 --- a/amiga/download.c +++ b/amiga/download.c @@ -41,6 +41,8 @@ #include "desktop/selection.h" #include "desktop/save_complete.h" +#include "image/ico.h" + #include "utils/errors.h" #include "utils/log.h" #include "utils/messages.h" @@ -56,11 +58,6 @@ #include <reaction/reaction_macros.h> -struct Window *drag_icon = NULL; -ULONG drag_icon_width; -ULONG drag_icon_height; -BOOL drag_in_progress = FALSE; - struct gui_download_window *gui_download_window_create(download_context *ctx, struct gui_window *gui) { @@ -329,255 +326,6 @@ gui_window_save_link(struct gui_window *g, const char *url, const char *title) } } -void gui_drag_save_object(gui_save_type type, hlcache_handle *c, - struct gui_window *g) -{ - char *filetype; - - if(strcmp(option_use_pubscreen,"Workbench")) return; - - switch(type) - { - case GUI_SAVE_OBJECT_ORIG: // object - case GUI_SAVE_SOURCE: - filetype = ami_content_type_to_file_type(content_get_type(c)); - break; - case GUI_SAVE_COMPLETE: - filetype = "drawer"; - break; - case GUI_SAVE_OBJECT_NATIVE: -#ifdef WITH_NS_SVG - if(content_get_type(c) == CONTENT_SVG) - { - filetype = "dr2d"; - } - else -#endif - { - filetype = "ilbm"; - } - break; - } - - ami_drag_icon_show(g->shared->win, filetype); - - drag_save_data = c; - drag_save_gui = g; - drag_save = type; -} - -void gui_drag_save_selection(struct selection *s, struct gui_window *g) -{ - ami_drag_icon_show(g->shared->win, "ascii"); - - ami_autoscroll = TRUE; - drag_save_data = s; - drag_save = GUI_SAVE_TEXT_SELECTION; -} - -void ami_drag_save(struct Window *win) -{ - ULONG which = WBO_NONE,type; - char path[1025],dpath[1025]; - char *source_data; - ULONG source_size; - - ami_drag_icon_close(NULL); - ami_autoscroll = FALSE; - - if(strcmp(option_use_pubscreen,"Workbench") == 0) - { - which = WhichWorkbenchObject(NULL,scrn->MouseX,scrn->MouseY, - WBOBJA_Type,&type, - WBOBJA_FullPath,&path, - WBOBJA_FullPathSize,1024, - WBOBJA_DrawerPath,&dpath, - WBOBJA_DrawerPathSize,1024, - TAG_DONE); - } - - if((which == WBO_DRAWER) || ((which == WBO_ICON) && (type > WBDRAWER))) - { - strcpy(path,dpath); - } - else if(which == WBO_NONE) - { - if(drag_save == GUI_SAVE_TEXT_SELECTION) - ami_drag_selection((struct selection *)drag_save_data); - else DisplayBeep(scrn); - - drag_save = 0; - drag_save_data = NULL; - return; - } - - if(path[0] == '\0') - { - DisplayBeep(scrn); - drag_save = 0; - drag_save_data = NULL; - return; - } - - ami_update_pointer(win,GUI_POINTER_WAIT); - - switch(drag_save) - { - case GUI_SAVE_OBJECT_ORIG: // object - case GUI_SAVE_SOURCE: - { - struct hlcache_handle *c = drag_save_data; - BPTR fh = 0; - AddPart(path, content_get_title(c), 1024); - - if(fh = FOpen(path,MODE_NEWFILE,0)) - { - if((source_data = content_get_source_data(c, &source_size))) - FWrite(fh, source_data, 1, source_size); - - FClose(fh); - SetComment(path, content_get_url(c)); - } - } - break; - - case GUI_SAVE_TEXT_SELECTION: // selection - AddPart(path,"netsurf_text_file",1024); - selection_save_text((struct selection *)drag_save_data,path); - break; - - case GUI_SAVE_COMPLETE: - { - struct hlcache_handle *c = drag_save_data; - BPTR lock = 0; - - AddPart(path, content_get_title(c), 1024); - if(lock = CreateDir(path)) - { - UnLock(lock); - save_complete(c,path); - SetComment(path, content_get_url(c)); - } - ami_superimpose_favicon(path, - drag_save_gui->favicon, NULL); - } - break; - - case GUI_SAVE_OBJECT_NATIVE: - { - hlcache_handle *c = drag_save_data; - struct bitmap *bm; - - AddPart(path, content_get_title(c), 1024); - if(bm = content_get_bitmap(c)) - { - bm->url = content_get_url(c); - bm->title = content_get_title(c); - bitmap_save(bm, path, 0); - } -#ifdef WITH_NS_SVG - else if(content_get_type(c) == CONTENT_SVG) - { - ami_save_svg(c, path); - } -#endif - } - break; - - default: - LOG(("Unsupported drag save operation %ld",drag_save)); - break; - } - - drag_save = 0; - drag_save_data = NULL; - ami_update_pointer(win,GUI_POINTER_DEFAULT); -} - -void ami_drag_icon_show(struct Window *win, char *type) -{ - struct DiskObject *dobj = NULL; - ULONG *icondata1; - ULONG width, height; - long format = 0; - int err = 0; - int deftype = WBPROJECT; - - drag_in_progress = TRUE; - - if(option_drag_save_icons == false) - { - ami_update_pointer(win, AMI_GUI_POINTER_DRAG); - return; - } - else - { - ami_update_pointer(win, GUI_POINTER_DEFAULT); - } - - if(!strcmp(type, "drawer")) deftype = WBDRAWER; - - dobj = GetIconTags(NULL, ICONGETA_GetDefaultName, type, - ICONGETA_GetDefaultType, deftype, - TAG_DONE); - - err = IconControl(dobj, - ICONCTRLA_GetWidth,&width, - ICONCTRLA_GetHeight,&height, - TAG_DONE); - - drag_icon_width = width; - drag_icon_height = height; - - drag_icon = OpenWindowTags(NULL, - WA_Left, scrn->MouseX - (width/2), - WA_Top, scrn->MouseY - (height/2), - WA_Width, width, - WA_Height, height, - WA_PubScreen, scrn, - WA_Borderless, TRUE, - WA_ToolBox, TRUE, - WA_StayTop, TRUE, - WA_Opaqueness, 128, - WA_OverrideOpaqueness, TRUE, - TAG_DONE); - -/* probably need layouticon and drawinfo stuff too */ - - DrawIconState(drag_icon->RPort, dobj, NULL, 0, 0, IDS_NORMAL, - ICONDRAWA_Frameless, TRUE, - ICONDRAWA_Borderless, TRUE, - TAG_DONE); -} - -void ami_drag_icon_move(void) -{ - if(drag_icon == NULL) return; - - ChangeWindowBox(drag_icon, scrn->MouseX - (drag_icon_width / 2), - scrn->MouseY - (drag_icon_height / 2), - drag_icon_width, drag_icon_height); -} - -/** - * Close the drag icon (invisible) window if it is open - * - * \param win pointer to window to clear drag pointer - */ - -void ami_drag_icon_close(struct Window *win) -{ - if(drag_icon) CloseWindow(drag_icon); - if(win) ami_update_pointer(win, GUI_POINTER_DEFAULT); - drag_icon = NULL; - drag_in_progress = FALSE; -} - -BOOL ami_drag_in_progress(void) -{ - return drag_in_progress; -} - void ami_superimpose_favicon(STRPTR path, struct hlcache_handle *icon, STRPTR type) { struct DiskObject *dobj = NULL; |