From 0f76213e5a3511b1262b2673ac0b54de0997fa93 Mon Sep 17 00:00:00 2001 From: "Kirill Lipatov (Leency)" Date: Sun, 27 Jun 2021 22:16:37 +0000 Subject: [PATCH] Eolite/KFM2: rework header, refactoring, fixes git-svn-id: svn://kolibrios.org@8952 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/cmm/eolite/Eolite.c | 112 ++++++++++-------- programs/cmm/eolite/include/const.h | 7 +- programs/cmm/eolite/include/copy_and_delete.h | 26 ++-- programs/cmm/eolite/include/gui.h | 47 ++++---- programs/cmm/eolite/include/left_panel.h | 9 +- programs/cmm/lib/patterns/toolbar_button.h | 2 +- 6 files changed, 105 insertions(+), 98 deletions(-) diff --git a/programs/cmm/eolite/Eolite.c b/programs/cmm/eolite/Eolite.c index f2d530b4f3..673bcaf0fe 100644 --- a/programs/cmm/eolite/Eolite.c +++ b/programs/cmm/eolite/Eolite.c @@ -1,11 +1,17 @@ //Leency, Veliant, Punk_Joker, PavelYakov & KolibriOS Team 2008-2021 //GNU GPL license. -// 70.5 - get volume info and label +/* +TODO: +- fix a kfm2 bug with selected files on window deactivation +- click on a path bar opens edit +- click to show breadcrumbs +- 70.5 - get volume info and label +*/ -#define ABOUT_TITLE "EOLITE 5 Beta10" -#define TITLE_EOLITE "Eolite File Manager 5 Beta10" -#define TITLE_KFM "Kolibri File Manager 2 Beta10"; +#define ABOUT_TITLE "EOLITE 5 Beta11" +#define TITLE_EOLITE "Eolite File Manager 5 Beta11" +#define TITLE_KFM "Kolibri File Manager 2 Beta11"; #define MEMSIZE 1024 * 250 #include "../lib/clipboard.h" @@ -24,10 +30,8 @@ #include "../lib/obj/libimg.h" #include "../lib/patterns/history.h" -#include "../lib/patterns/toolbar_button.h" #include "imgs/images.h" - #include "include/const.h" _history history; @@ -55,13 +59,6 @@ bool efm = false; int toolbar_buttons_x[7]={9,46,85,134,167,203}; -bool dir_at_fat16 = NULL; - -dword about_thread_id; -dword settings_window; -bool active_about = false; -bool active_settings = false; - byte del_active=0; byte new_element_active=0; @@ -75,6 +72,7 @@ bool list_full_redraw; int selected_count; int folder_count; dword path; + bool dir_at_fat16 = NULL; //Sselected element data byte file_path[4096]; @@ -92,13 +90,19 @@ bool list_full_redraw; int status_bar_h; int icon_size = 18; -int active_panel=0; -int disk_popin_active_on_panel=0; -#define PANES_COUNT 2 -dword location[PANES_COUNT]; +//Threads data + dword about_thread_id; + dword settings_window; + bool active_about = false; + bool active_settings = false; + dword about_stak=0,properties_stak=0,settings_stak=0; + byte cmd_free=0; -dword about_stak=0,properties_stak=0,settings_stak=0; -byte cmd_free=0; +//Multipanes + int active_panel=0; + int disk_popin_active_on_panel=0; + #define PANES_COUNT 2 + dword location[PANES_COUNT]; libimg_image icons16_default; libimg_image icons16_selected; @@ -327,13 +331,8 @@ void main() EventOpenDiskPopin(active_panel); break; case BACK_BTN...PASTE_BTN: - SetActivePanel(0); EventToolbarButtonClick(id); break; - case BACK_BTN+100...PASTE_BTN+100: - SetActivePanel(1); - EventToolbarButtonClick(id-100); - break; case 31...33: EventSort(id-30); break; @@ -521,8 +520,8 @@ void draw_window() if (rand_n) rand_n = random(80); if (show_status_bar.checked) { - #define STBAR_EOLITE_H 16; - #define STBAR_KFM_H 21+16; + #define STBAR_EOLITE_H 16 + #define STBAR_KFM_H 21 if (efm) status_bar_h = STBAR_KFM_H; else status_bar_h = STBAR_EOLITE_H; } else { @@ -537,7 +536,12 @@ void draw_window() SetAppColors(); if (efm) { if (screen.width > 693) && (Form.width < 693) { MoveSize(OLD,OLD,693,OLD); return; } - DrawBar(0, 0, Form.cwidth, 34, sc.work); + DrawBar(0, 4, Form.cwidth, SELECTY-5, sc.work); + DrawBar(0, SELECTY+KFM2_DEVH+1, Form.cwidth, 3, sc.work); + DrawBar(0, SELECTY-1, 1, KFM2_DEVH+2, sc.work); + DrawBar(Form.cwidth-1, SELECTY-1, 1, KFM2_DEVH+2, sc.work); + DrawBar(Form.cwidth/2-16, SELECTY-1, 16, KFM2_DEVH+2, sc.work); + /* #define PAD 7 #define GAP_S 26+5 #define GAP_B 26+14 @@ -553,6 +557,7 @@ void draw_window() i+=100; } //DrawTopPanelButton(51, Form.cwidth-GAP_S-PAD, PAD, -1, false); //burger menu + */ } else { if (Form.width < 480) { MoveSize(OLD,OLD,480,OLD); return; } ESDWORD[#toolbar_pal] = sc.work; @@ -574,7 +579,9 @@ void draw_window() for (i=0; i<6; i++) DrawBar(0, 5-i, Form.cwidth, 1, MixColors(sc.work_light, sc.work, i*10)); llist_copy(#files_active, #files); DrawStatusBar(); - if (!selected_count) Open_Dir(path,ONLY_OPEN); //if there are no selected files -> refresh folder [L001] + if (!selected_count) { + Open_Dir(path,ONLY_OPEN); //if there are no selected files -> refresh folder [L001] + } DrawFilePanels(); disk_popin_active_on_panel = 0; } @@ -619,23 +626,21 @@ void DrawStatusBar() int go_up_folder_exists=0; if (efm) { - DrawBar(0, Form.cheight - status_bar_h+15, Form.cwidth, 3, sc.work); + DrawBar(0, Form.cheight - status_bar_h, Form.cwidth, 2, sc.work); DrawBar(0, Form.cheight - 2, Form.cwidth, 2, sc.work); DrawBar(Form.cwidth-1, Form.cheight - 19, 1, 17, sc.work); DrawFuncButtonsInKfm(); - DrawPathBar(); - return; - } - - if (!show_status_bar.checked) return; - if (files.count>0) && (streq(items.get(0)*304+buf+72,"..")) go_up_folder_exists=1; - DrawBar(0, Form.cheight - status_bar_h, Form.cwidth, status_bar_h, sc.work); - sprintf(#status_bar_str, T_STATUS_EVEMENTS, folder_count-go_up_folder_exists, files.count-folder_count); - WriteText(6,Form.cheight - 13,0x80,sc.work_text,#status_bar_str); - if (selected_count) { - sprintf(#status_bar_str, T_STATUS_SELECTED, selected_count); - WriteText(Form.cwidth - calc(strlen(#status_bar_str)*6)-6,Form.cheight - 13, - 0x80,sc.work_text,#status_bar_str); + } else { + if (!show_status_bar.checked) return; + if (files.count>0) && (streq(items.get(0)*304+buf+72,"..")) go_up_folder_exists=1; + DrawBar(0, Form.cheight - status_bar_h, Form.cwidth, status_bar_h, sc.work); + sprintf(#status_bar_str, T_STATUS_EVEMENTS, folder_count-go_up_folder_exists, files.count-folder_count); + WriteText(6,Form.cheight - 13,0x80,sc.work_text,#status_bar_str); + if (selected_count) { + sprintf(#status_bar_str, T_STATUS_SELECTED, selected_count); + WriteText(Form.cwidth - calc(strlen(#status_bar_str)*6)-6,Form.cheight - 13, + 0x80,sc.work_text,#status_bar_str); + } } } @@ -650,9 +655,13 @@ void DrawFilePanels() files.SetSizes(192, 57, Form.cwidth - 210, Form.cheight - 59 - status_bar_h, files.item_h); DrawButtonsAroundList(); List_ReDraw(); + DrawPathBar(); } else { + llist_copy(#files_active, #files); + llist_copy(#files, #files_inactive); + if (!active_panel) { files.SetSizes(Form.cwidth/2, files_y, w2-17, h2, files.item_h); } else { @@ -662,8 +671,9 @@ void DrawFilePanels() files_inactive.x = files.x; DrawButtonsAroundList(); path = location[active_panel^1]; - Open_Dir(location[active_panel^1],WITH_REDRAW); - llist_copy(#files_inactive, #files); + Open_Dir(path,WITH_REDRAW); + if (!selected_count) files_inactive.count = files.count; + llist_copy(#files, #files_active); if (!active_panel) { files.SetSizes(2, files_y, Form.cwidth/2-2-17, h2, files.item_h); @@ -673,7 +683,7 @@ void DrawFilePanels() DrawButtonsAroundList(); path = location[active_panel]; - Open_Dir(location[active_panel],WITH_REDRAW); + Open_Dir(path,WITH_REDRAW); } } @@ -828,8 +838,7 @@ void Open_Dir(dword dir_path, redraw){ selected_count = 0; if (buf) free(buf); - errornum = GetDir(#buf, #files.count, dir_path, DIRS_NOROOT); - if (errornum) + if (errornum = GetDir(#buf, #files.count, dir_path, DIRS_NOROOT)) { history.add(path); EventHistoryGoBack(); @@ -846,11 +855,11 @@ void Open_Dir(dword dir_path, redraw){ Sorting(); list_full_redraw = true; SetCurDir(dir_path); - DrawPathBar(); if (redraw!=ONLY_OPEN) { history.add(path); List_ReDraw(); - DrawStatusBar(); + DrawStatusBar(); + DrawPathBar(); } } @@ -955,6 +964,7 @@ void Dir_Up() strcpy(#old_folder_name, path+iii); if (iii>1) ESBYTE[path+iii-1]=NULL; else ESBYTE[path+iii]=NULL; SelectFileByName(#old_folder_name); + if(efm)DrawPathBarKfm(); } void EventOpenSelected() @@ -1369,10 +1379,10 @@ void EventOpenDiskPopin(int panel_n) DefineHiddenButton(0,0,5000,3000,9999+BT_NOFRAME); if (panel_n==0) { disk_popin_active_on_panel = 1; - SystemDiscs.DrawOptions(Form.cwidth/2-DDW); + SystemDiscs.DrawOptions(1); } else { disk_popin_active_on_panel = 2; - SystemDiscs.DrawOptions(Form.cwidth-DDW-2); + SystemDiscs.DrawOptions(Form.cwidth/2-1); } } diff --git a/programs/cmm/eolite/include/const.h b/programs/cmm/eolite/include/const.h index c86bcb8ba1..713157e9b9 100644 --- a/programs/cmm/eolite/include/const.h +++ b/programs/cmm/eolite/include/const.h @@ -4,7 +4,7 @@ // // //===================================================// #ifdef LANG_RUS -#define T_FILE "Файл" +#define T_FILE "Имя" #define T_TYPE "Тип" #define T_SIZE "Размер" #define T_NEW_FOLDER "Новая папка" @@ -68,7 +68,7 @@ char *actions[] = { // // //===================================================// #else -#define T_FILE "File" +#define T_FILE "Name" #define T_TYPE "Type" #define T_SIZE "Size" #define T_NEW_FOLDER "New folder" @@ -180,5 +180,6 @@ char *devinfo = { }; #define DEV_H 17 -#define DDW 120 +#define DDW 110 #define KFM2_DEVH 20 +#define SELECTY 10 diff --git a/programs/cmm/eolite/include/copy_and_delete.h b/programs/cmm/eolite/include/copy_and_delete.h index c76f9224ca..0500bf625b 100644 --- a/programs/cmm/eolite/include/copy_and_delete.h +++ b/programs/cmm/eolite/include/copy_and_delete.h @@ -107,13 +107,13 @@ void PasteThread() char copy_rezult; int j, i, slash_count=0; int paste_elements_count = 0; - dword buf; + dword clipbuf; dword path_offset; - buf = Clipboard__GetSlotData(Clipboard__GetSlotCount()-1); - if (DSDWORD[buf+4] != 3) return; - paste_elements_count = ESINT[buf+8]; - path_offset = buf + 10; + clipbuf = Clipboard__GetSlotData(Clipboard__GetSlotCount()-1); + if (DSDWORD[clipbuf+4] != 3) return; + paste_elements_count = ESINT[clipbuf+8]; + path_offset = clipbuf + 10; if (cut_active) { DisplayOperationForm(MOVE_FLAG); @@ -138,13 +138,13 @@ void PasteThread() } _DIFFERENT_DRIVES: - path_offset = buf + 10; + path_offset = clipbuf + 10; for (j = 0; j < paste_elements_count; j++) { copy_bar.max += GetFilesCount(path_offset); path_offset += strlen(path_offset) + 1; } - path_offset = buf + 10; + path_offset = clipbuf + 10; for (j = 0; j < paste_elements_count; j++) { strcpy(#copy_from, path_offset); if (!copy_from) DialogExit(); @@ -212,23 +212,23 @@ void DeleteThread() { int j; int elements_count = 0; - dword buf; + dword clipbuf; dword path_offset; DisplayOperationForm(DELETE_FLAG); - buf = Clipboard__GetSlotData(Clipboard__GetSlotCount()-1); + clipbuf = Clipboard__GetSlotData(Clipboard__GetSlotCount()-1); Clipboard__DeleteLastSlot(); - if (DSDWORD[buf+4] != 3) return; - elements_count = ESINT[buf+8]; + if (DSDWORD[clipbuf+4] != 3) return; + elements_count = ESINT[clipbuf+8]; - path_offset = buf + 10; + path_offset = clipbuf + 10; for (j = 0; j < elements_count; j++) { copy_bar.max += GetFilesCount(path_offset); path_offset += strlen(path_offset) + 1; } - path_offset = buf + 10; + path_offset = clipbuf + 10; for (j = 0; j < elements_count; j++) { RecursiveDelete(path_offset, true); path_offset += strlen(path_offset) + 1; diff --git a/programs/cmm/eolite/include/gui.h b/programs/cmm/eolite/include/gui.h index a8c6f63f2b..89fdd5f247 100644 --- a/programs/cmm/eolite/include/gui.h +++ b/programs/cmm/eolite/include/gui.h @@ -171,9 +171,13 @@ void DrawPathBar() { if (efm) { DrawPathBarKfm(); - return; + } else { + DrawPathEolite(); } +} +void DrawPathEolite() +{ if (show_breadcrumb.checked) { DrawBreadCrumbs(); return; @@ -188,7 +192,7 @@ void DrawPathBar() DefineHiddenButton(PathShow.start_x-4+1,PathShow.start_y-7+1,PathShow.area_size_x+4-2,20-2,PATH_BTN); DrawBar(PathShow.start_x-4, PathShow.start_y+14, PathShow.area_size_x+5+18, 1, sc.work_light); - DrawFlatButtonSmall(PathShow.start_x+PathShow.area_size_x,PathShow.start_y-7,18,20, 61, "\26"); + DrawFlatButtonSmall(PathShow.start_x+PathShow.area_size_x,PathShow.start_y-7,18,20, 61, "\x19"); PathShow.font_color = col.list_gb_text; PathShow_prepare stdcall(#PathShow); @@ -197,36 +201,31 @@ void DrawPathBar() void DrawPathBarKfm() { - dword bgc; + dword back_color, text_color; + int draw_x, draw_w; int i=0; if (!Form.cwidth) return; if (skin_is_dark()) { - bgc = col.odd_line; - PathShow.font_color = col.list_gb_text; + back_color = col.odd_line; + text_color = col.list_gb_text; } else { - bgc = 0xFFFFCC; - PathShow.font_color = 0x222222; + back_color = 0xFFFFCC; + text_color = 0x222222; } - PathShow.start_y = Form.cheight - status_bar_h+2; - - PathShow.start_x = 4; - PathShow.area_size_x = Form.cwidth/2-8; + draw_x = 3 + DDW; + draw_w = Form.cwidth/2 - draw_x - 17; do { - DrawBar(PathShow.start_x-2,PathShow.start_y-3,PathShow.area_size_x+5,14,bgc); - DrawRectangle(PathShow.start_x-3,PathShow.start_y-4,PathShow.area_size_x+6,15,sc.work_graph); - PathShow.text_pointer = location[i]; - PathShow_prepare stdcall(#PathShow); - PathShow_draw stdcall(#PathShow); - - PathShow.start_x = Form.cwidth/2 + 2; - PathShow.area_size_x = Form.cwidth - PathShow.start_x - 5; + DrawBar(draw_x, SELECTY-1, draw_w-KFM2_DEVH+1, 1, sc.work_graph); + DrawBar(draw_x, SELECTY, draw_w-KFM2_DEVH+1, KFM2_DEVH, back_color); + DrawBar(draw_x, SELECTY+KFM2_DEVH, draw_w-KFM2_DEVH+1, 1, sc.work_graph); + kfont.WriteIntoWindow(draw_x + 3, math.max(KFM2_DEVH-kfont.height/2+SELECTY,0), + back_color, text_color, kfont.size.pt, location[i]+strrchr(location[i], '/')); + DrawFlatButtonSmall(draw_x+draw_w-KFM2_DEVH+1, SELECTY-1, KFM2_DEVH-1, KFM2_DEVH+1, 576+i, "\x19"); + draw_x = Form.cwidth/2 + DDW + 1; + draw_w = Form.cwidth - draw_x - 2; i++; } while (i<2); - - DrawBar(0,PathShow.start_y-2,1,15,sc.work); - DrawBar(Form.cwidth-1,PathShow.start_y-2,1,15,sc.work); - DrawBar(1,PathShow.start_y+12,Form.cwidth-2,1,sc.work_light); } //===================================================// @@ -262,8 +261,6 @@ void DrawBreadCrumbs() DrawBreadcrumbButton(btn.x, btn.y, btn.w, btn.h, i+BREADCRUMB_ID, text_line); btn.x += btn.w; } - //DrawFavButton(btn.x); - //btn.x+=20; btn.x++; DrawBar(btn.x,btn.y-1,Form.cwidth-btn.x-25,btn.h+3,sc.work); } diff --git a/programs/cmm/eolite/include/left_panel.h b/programs/cmm/eolite/include/left_panel.h index 0e0af38617..c0e030aaef 100644 --- a/programs/cmm/eolite/include/left_panel.h +++ b/programs/cmm/eolite/include/left_panel.h @@ -64,8 +64,8 @@ void _SystemDiscs::Draw() int draw_y, draw_x; if (efm) { - DrawSelect(Form.cwidth/2-DDW, KFM_DEV_DROPDOWN_1, location[0]); - DrawSelect(Form.cwidth-DDW-2, KFM_DEV_DROPDOWN_2, location[sizeof(dword)]); + DrawSelect(2, KFM_DEV_DROPDOWN_1, location[0]); + DrawSelect(Form.cwidth/2, KFM_DEV_DROPDOWN_2, location[sizeof(dword)]); files.y = 40 + 17; } else { Tip(56, T_DEVICES, 55, "="); @@ -97,14 +97,13 @@ void _SystemDiscs::Draw() draw_y += DEV_H; } DrawBar(draw_x+6, draw_y, 18, 1, 0xFFFfff); - ActionsDraw(SystemDiscs.list.count*DEV_H+108); - DrawLeftPanelBg(SystemDiscs.list.count*DEV_H); + ActionsDraw(list.count*DEV_H+108); + DrawLeftPanelBg(list.count*DEV_H); } } void _SystemDiscs::DrawSelect(int draw_x, btid, dword _path) { - #define SELECTY 10 char dev_name[15], disc_name[100], i, dev_icon; if (ESBYTE[_path+1]=='\0') { diff --git a/programs/cmm/lib/patterns/toolbar_button.h b/programs/cmm/lib/patterns/toolbar_button.h index 073110f479..2bfc86e7d6 100644 --- a/programs/cmm/lib/patterns/toolbar_button.h +++ b/programs/cmm/lib/patterns/toolbar_button.h @@ -1,5 +1,5 @@ -unsigned int DrawTopPanelButton(dword _button_id, _x, _y, signed int _icon_n, bool pressed) +:unsigned int DrawTopPanelButton(dword _button_id, _x, _y, signed int _icon_n, bool pressed) { #define TSZE 25 static libimg_image top_icons;