WebView: add clear cache feature

git-svn-id: svn://kolibrios.org@7770 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Kirill Lipatov (Leency) 2020-04-06 19:54:05 +00:00
parent 0a6d41ab86
commit 3f59e384f1
7 changed files with 58 additions and 37 deletions

View File

@ -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;

View File

@ -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()

View File

@ -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;
}

View File

@ -12,6 +12,7 @@
<font color="#555555">&bull; You can check for browser updates from the main menu.
&bull; To run a web search, type a text in the adress box and press Ctrl+Enter.
&bull; You can also use other <a href="WebView:help"><font color="#555555">Hotkeys</font></a>.
&bull; Click on a label in the bottom right corner to change the encoding of a page.
</font>

View File

@ -12,6 +12,7 @@
<font color="#555555">&bull; ˆ§ £« ¢­®£® ¬¥­î ¬®¦­® ¯à®¢¥à¨âì ­ «¨ç¨¥ ®¡­®¢«¥­¨©
&bull; „«ï ¯®¨áª  ¢ Google ­ ¡¥à¨â¥ â¥áâ ¢  ¤à¥á­®© áâப¥ ¨ ­ ¦¬¨â¥ Ctrl+Enter
&bull; …áâì â ª¦¥ ¤à㣨¥ <a href="WebView:help"><font color="#555555">ƒ®àï稥 ª« ¢¨è¨</font></a>.
&bull; <20>®¦­® ¨§¬¥­¨גל ×®₪¨א®¢×ד בגא ­¨זכ, ₪«ן םג®£® ­ ¦¬¨ג¥ ­  ­ ₪¯¨בל ¢ ¯א ¢®¬ ­¨¦­¥¬ ד£«ד ®×­ .
</font>
</pre>

View File

@ -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[] =
<EFBFBD>®¢®¥ ®ª­®
ˆáâ®à¨ï
Œ¥­¥¤¦¥à § £à㧮ª
Žç¨áâ¨âì ªíè
Ž¡­®¢¨âì ¡à ã§¥à";
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<EFBFBD>à ã§¥à ¡ë« ãᯥ譮 ®¡­®¢«¥­!' -tO";
char update_is_current[] = "'WebView\n‚ë 㦥 ¨á¯®«ì§ã¥â¥ ¯®á«¥¤­îî ¢¥àá¨î.' -I";
char update_can_not_copy[] = "'WebView\n<EFBFBD>¥ ¬®£ã ¯¥à¥¬¥áâ¨âì ­®¢ãî ¢¥àá¨î ¨§ ¯ ¯ª¨ Downloads ­  Ramdisk. ‚®§¬®¦­®, ­¥ ¤®áâ â®ç­® ¬¥áâ .' -E";
char update_is_current[] = "'WebView\n‚ë 㦥 ¨á¯®«ì§ã¥â¥ ¯®á«¥¤­îî ¢¥àá¨î.' -tI";
char update_can_not_copy[] = "'WebView\n<EFBFBD>¥ ¬®£ã ¯¥à¥¬¥áâ¨âì ­®¢ãî ¢¥àá¨î ¨§ ¯ ¯ª¨ 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"

View File

@ -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);