From 3f59e384f164eb025bf3ced9de3cd6604dd14c9d Mon Sep 17 00:00:00 2001 From: "Kirill Lipatov (Leency)" Date: Mon, 6 Apr 2020 19:54:05 +0000 Subject: [PATCH] WebView: add clear cache feature git-svn-id: svn://kolibrios.org@7770 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/cmm/TWB/links.h | 2 +- programs/cmm/browser/WebView.c | 44 +++++++++++++---------- programs/cmm/browser/cache.h | 10 ++++++ programs/cmm/browser/html/homepage_en.htm | 1 + programs/cmm/browser/html/homepage_ru.htm | 1 + programs/cmm/browser/texts.h | 14 +++++--- programs/cmm/lib/gui/menu.h | 23 ++++++------ 7 files changed, 58 insertions(+), 37 deletions(-) diff --git a/programs/cmm/TWB/links.h b/programs/cmm/TWB/links.h index 12c0926d2f..84a904349e 100644 --- a/programs/cmm/TWB/links.h +++ b/programs/cmm/TWB/links.h @@ -106,7 +106,7 @@ bool LinksArray::HoverAndProceed(dword mx, my, list_y, list_first) return false; } if (mouse.pkm) && (mouse.up) { - EventShowLinkMenu(mouse.x, mouse.y); + EventShowLinkMenu(); return false; } if (active==i) return false; diff --git a/programs/cmm/browser/WebView.c b/programs/cmm/browser/WebView.c index 4f35799299..ba65beb48a 100644 --- a/programs/cmm/browser/WebView.c +++ b/programs/cmm/browser/WebView.c @@ -72,6 +72,7 @@ enum { NEW_WINDOW, VIEW_HISTORY, DOWNLOAD_MANAGER, + CLEAR_CACHE, UPDATE_BROWSER, COPY_LINK_URL, DOWNLOAD_LINK_CONTENTS, @@ -140,7 +141,7 @@ void main() mouse.get(); if (PageLinks.HoverAndProceed(mouse.x, WB1.list.first + mouse.y, WB1.list.y, WB1.list.first)) && (mouse.pkm) && (mouse.up) { - if (WB1.list.MouseOver(mouse.x, mouse.y)) EventShowPageMenu(mouse.x, mouse.y); + if (WB1.list.MouseOver(mouse.x, mouse.y)) EventShowPageMenu(); break; } if (WB1.list.MouseScroll(mouse.vert)) WB1.DrawPage(); @@ -202,10 +203,6 @@ void main() break; case evReDraw: - if (menu.cur_y) { - ProcessEvent(menu.cur_y); - menu.cur_y = 0; - } DefineAndDrawWindow(GetScreenWidth()-800/2-random(80), GetScreenHeight()-700/2-random(80),800,700,0x73,0,0,0); GetProcessInfo(#Form, SelfInfo); @@ -259,6 +256,11 @@ void SetElementSizes() void draw_window() { int i; + if (menu.cur_y) { + EAX = menu.cur_y; + menu.cur_y = 0; + ProcessEvent(EAX); + } SetElementSizes(); DrawBar(0,0, Form.cwidth,PADDING, system.color.work); @@ -341,10 +343,10 @@ void ProcessEvent(dword id__) } return; case CHANGE_ENCODING: - EventShowEncodingsList(Form.cwidth - 150, status_text.start_y-117); + EventShowEncodingsList(); return; case SANDWICH_BUTTON: - EventShowMainMenu(Form.cwidth - 215, TOOLBAR_H-6); + EventShowMainMenu(); return; case VIEW_SOURCE: EventViewSource(); @@ -369,6 +371,10 @@ void ProcessEvent(dword id__) case UPDATE_BROWSER: EventUpdateBrowser(); return; + case CLEAR_CACHE: + pages_cache.clear(); + notify(#clear_cache_ok); + return; case COPY_LINK_URL: Clipboard__CopyText(PageLinks.GetURL(PageLinks.active)); notify("'URL copied to clipboard'O"); @@ -628,29 +634,29 @@ void DrawProgress() DrawBar(address_box.left-1, address_box.top+20, persent*address_box.width+16/100, 2, 0x72B7EB); } -void EventShowPageMenu(dword _left, _top) +void EventShowPageMenu() { menu.selected = 0; - menu.show(Form.left+_left-6,Form.top+_top+skin_height+3, 220, #rmb_menu, VIEW_SOURCE); + menu.show(Form.left + mouse.x+4, Form.top + skin_height + mouse.y, 220, #rmb_menu, VIEW_SOURCE); } -void EventShowEncodingsList(dword _left, _top) +void EventShowLinkMenu() +{ + menu.selected = 0; + menu.show(Form.left + mouse.x+4, Form.top + skin_height + mouse.y, 220, #link_menu, COPY_LINK_URL); +} + +void EventShowEncodingsList() { menu.selected = WB1.cur_encoding + 1; - menu.show(Form.left+_left-6+77,Form.top+_top+skin_height-3, 100, + menu.show(Form.left + Form.cwidth - 95, Form.top + skin_height + status_text.start_y - 121, 90, "UTF-8\nKOI8-RU\nCP1251\nCP1252\nISO8859-5\nCP866", ENCODINGS); } -void EventShowMainMenu(dword _left, _top) +void EventShowMainMenu() { menu.selected = 0; - menu.show(Form.left+_left-6+77,Form.top+_top+skin_height-3, 140, #main_menu, OPEN_FILE); -} - -void EventShowLinkMenu(dword _left, _top) -{ - menu.selected = 0; - menu.show(Form.left+_left-6,Form.top+_top+skin_height+3, 220, #link_menu, COPY_LINK_URL); + menu.show(Form.left + Form.cwidth - 150, Form.top + skin_height + TOOLBAR_H-8, 140, #main_menu, OPEN_FILE); } void EventUpdateProgressBar() diff --git a/programs/cmm/browser/cache.h b/programs/cmm/browser/cache.h index ffe27fff1a..e428bfd0a5 100644 --- a/programs/cmm/browser/cache.h +++ b/programs/cmm/browser/cache.h @@ -8,6 +8,7 @@ struct PAGES_CACHE collection size; //it has to be int void add(); bool has(); + void clear(); } pages_cache; void PAGES_CACHE::add(dword _url, _data, _size) @@ -31,4 +32,13 @@ bool PAGES_CACHE::has(dword _link) return true; } return false; +} + +void PAGES_CACHE::clear() +{ + url.drop(); + data.drop(); + size.drop(); + current_page_buf = NULL; + current_page_size = NULL; } \ No newline at end of file diff --git a/programs/cmm/browser/html/homepage_en.htm b/programs/cmm/browser/html/homepage_en.htm index 7bb333dcee..c18a41e21a 100644 --- a/programs/cmm/browser/html/homepage_en.htm +++ b/programs/cmm/browser/html/homepage_en.htm @@ -12,6 +12,7 @@ • You can check for browser updates from the main menu. • To run a web search, type a text in the adress box and press Ctrl+Enter. • You can also use other Hotkeys. +• Click on a label in the bottom right corner to change the encoding of a page. diff --git a/programs/cmm/browser/html/homepage_ru.htm b/programs/cmm/browser/html/homepage_ru.htm index 78253f3568..f01356522a 100644 --- a/programs/cmm/browser/html/homepage_ru.htm +++ b/programs/cmm/browser/html/homepage_ru.htm @@ -12,6 +12,7 @@ • Из главного меню можно проверить наличие обновлений • Для поиска в Google наберите тест в адресной строке и нажмите Ctrl+Enter • Есть также другие Горячие клавиши. +• Можно изменить кодировку страницы, для этого нажмите на надпись в правом нижнем углу окна. diff --git a/programs/cmm/browser/texts.h b/programs/cmm/browser/texts.h index b1f448ac31..9c1e1408ae 100644 --- a/programs/cmm/browser/texts.h +++ b/programs/cmm/browser/texts.h @@ -1,4 +1,4 @@ -char version[]="WebView 2.25"; +char version[]="WebView 2.26"; #ifdef LANG_RUS char page_not_found[] = FROM "html\\page_not_found_ru.htm""\0"; @@ -13,6 +13,7 @@ char main_menu[] = Новое окно История Менеджер загрузок +Очистить кэш Обновить браузер"; char link_menu[] = "Копировать ссылку @@ -22,8 +23,9 @@ char loading_text[] = " char update_param[] = "-download_and_exit http://builds.kolibrios.org/rus/data/programs/cmm/browser/WebView.com"; char update_download_error[] = "'WebView\nОшибка при получении обновлений!' -tE"; char update_ok[] = "'WebView\nБраузер был успешно обновлен!' -tO"; -char update_is_current[] = "'WebView\nВы уже используете последнюю версию.' -I"; -char update_can_not_copy[] = "'WebView\nНе могу переместить новую версию из папки Downloads на Ramdisk. Возможно, не достаточно места.' -E"; +char update_is_current[] = "'WebView\nВы уже используете последнюю версию.' -tI"; +char update_can_not_copy[] = "'WebView\nНе могу переместить новую версию из папки Downloads на Ramdisk. Возможно, не достаточно места.' -tE"; +char clear_cache_ok[] = "'WebView\nКэш очищен.' -tI"; #else char page_not_found[] = FROM "html\\page_not_found_en.htm""\0"; char homepage[] = FROM "html\\homepage_en.htm""\0"; @@ -37,6 +39,7 @@ char main_menu[] = New window History Download Manager +Clear cache Update browser"; char link_menu[] = "Copy link @@ -45,8 +48,9 @@ char loading_text[] = "Loading..."; char update_param[] = "-download_and_exit http://builds.kolibrios.org/eng/data/programs/cmm/browser/WebView.com"; char update_download_error[] = "'WebView\nError receiving an up to date information!' -tE"; char update_ok[] = "'WebView\nThe browser has been updated!' -tO"; -char update_is_current[] = "'WebView\nThe browser is up to date.' -I"; -char update_can_not_copy[] = "'WebView\nError copying a new version from Downloads folder!\nProbably too litle space on Ramdisk.' -E"; +char update_is_current[] = "'WebView\nThe browser is up to date.' -tI"; +char update_can_not_copy[] = "'WebView\nError copying a new version from Downloads folder!\nProbably too litle space on Ramdisk.' -tE"; +char clear_cache_ok[] = "'WebView\nThe cache has been cleared.' -tI"; #endif #define URL_SERVICE_HISTORY "WebView:history" diff --git a/programs/cmm/lib/gui/menu.h b/programs/cmm/lib/gui/menu.h index 8202d4bc50..0c1b35226c 100644 --- a/programs/cmm/lib/gui/menu.h +++ b/programs/cmm/lib/gui/menu.h @@ -32,27 +32,26 @@ :void _menu_thread() { - proc_info MenuForm; - SetEventMask(100111b); + MOUSE m; + DefineAndDrawWindow(menu.appear_x,menu.appear_y,menu.w+2,menu.h+4,0x01, 0, 0, 0x01fffFFF); + DrawPopup(0,0,menu.w,menu.h+3,0, 0xE4DFE1,0x9098B0); + _menu_draw_list(); + SetEventMask(EVM_REDRAW + EVM_KEY + EVM_MOUSE + EVM_MOUSE_FILTER); loop() switch(WaitEvent()) { case evMouse: - GetProcessInfo(#MenuForm, SelfInfo); - if (!CheckActiveProcess(MenuForm.ID)) _menu_no_item_click(); - mouse.get(); - if (menu.ProcessMouse(mouse.x, mouse.y)) _menu_draw_list(); - if (mouse.lkm)&&(mouse.up) _menu_item_click(); + m.get(); + if (menu.ProcessMouse(m.x, m.y)) _menu_draw_list(); + if (m.lkm)&&(m.up) _menu_item_click(); break; case evKey: GetKeys(); - if (key_scancode==SCAN_CODE_ESC) _menu_no_item_click(); + if (key_scancode==SCAN_CODE_ESC) _menu_exit(); if (key_scancode==SCAN_CODE_ENTER) _menu_item_click(); if (menu.ProcessKey(key_scancode)) _menu_draw_list(); break; case evReDraw: - DefineAndDrawWindow(menu.appear_x,menu.appear_y,menu.w+2,menu.h+4,0x01, 0, 0, 0x01fffFFF); - DrawPopup(0,0,menu.w,menu.h+3,0, 0xE4DFE1,0x9098B0); - _menu_draw_list(); + _menu_exit(); } } @@ -74,7 +73,7 @@ KillProcess(menu_process_id); } -:void _menu_no_item_click() +:void _menu_exit() { menu.cur_y = 0; KillProcess(menu_process_id);