Eolite 5.2:

- show icon 32x32 in Properties window
- fix "Contains:" value in Properties window
- do not read ini file each time when we draw an icon, instead use a collection with a cached values

git-svn-id: svn://kolibrios.org@9576 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Kirill Lipatov (Leency) 2022-01-05 20:24:25 +00:00
parent 02bb1aee0e
commit 31c56c9a2c
5 changed files with 69 additions and 43 deletions

View File

@ -11,9 +11,9 @@ TODO:
http://board.kolibrios.org/viewtopic.php?f=23&t=4521&p=77334#p77334
*/
#define ABOUT_TITLE "EOLITE 5.19"
#define TITLE_EOLITE "Eolite File Manager 5.19"
#define TITLE_KFM "Kolibri File Manager 2.19";
#define ABOUT_TITLE "EOLITE 5.2"
#define TITLE_EOLITE "Eolite File Manager 5.2"
#define TITLE_KFM "Kolibri File Manager 2.2";
#define MEMSIZE 1024 * 250
#include "../lib/clipboard.h"

View File

@ -1,25 +1,46 @@
_ini icons_ini = { "/sys/File managers/icons.ini", NULL };
struct ICONS_INI {
collection exts;
collection_int i18;
collection_int i32;
int get();
} ini_icons;
int ICONS_INI::get(dword _file_path, _ext, int size)
{
char file_4bytes[4], ext[7];
int ext_pos;
if (!_ext) {
ReadFile(0,4,#file_4bytes,_file_path);
IF(DSDWORD[#file_4bytes]=='KCPK')
||(DSDWORD[#file_4bytes]=='UNEM') {
_ext = "kex";
}
}
strlcpy(#ext, _ext, sizeof(ext));
strlwr(#ext);
ext_pos = exts.get_pos_by_name(#ext);
if (ext_pos != -1) {
if (size == 18) return i18.get(ext_pos);
else if (size == 32) return i32.get(ext_pos);
} else {
exts.add(#ext);
icons_ini.section = "icons16";
i18.set(exts.count-1, icons_ini.GetInt(#ext, 2));
icons_ini.section = "icons32";
i32.set(exts.count-1, icons_ini.GetInt(#ext, 95));
return get(#ext, size);
}
}
void DrawIconByExtension(dword file_path, extension, xx, yy, fairing_color)
{
char BYTE_HEAD_FILE[4];
char ext[512];
char ext[7];
int icon_n = 2;
dword selected_image;
dword default_image;
dword default_icon;
if (big_icons.checked) {
icons_ini.section = "icons32";
selected_image = icons32_selected.image;
default_image = icons32_default.image;
default_icon=95;
} else {
icons_ini.section = "icons16";
selected_image = icons16_selected.image;
default_image = icons16_default.image;
default_icon=2;
}
if (ESBYTE[file_path+1]!='k') && (ESBYTE[file_path+1]!='s') && (chrnum(file_path, '/')==2) {
if (ESBYTE[file_path+1]=='/') ext[0] = ESBYTE[file_path+2];
@ -32,14 +53,16 @@ void DrawIconByExtension(dword file_path, extension, xx, yy, fairing_color)
icons_ini.section = "drives16";
icon_n = icons_ini.GetInt(#ext, 50);
}
} else if (extension) {
strcpy(#ext, extension);
strlwr(#ext);
icon_n = icons_ini.GetInt(#ext, default_icon);
} else if (file_path) {
ReadFile(0,4,#BYTE_HEAD_FILE,file_path);
IF(DSDWORD[#BYTE_HEAD_FILE]=='KCPK')||(DSDWORD[#BYTE_HEAD_FILE]=='UNEM')
icon_n = icons_ini.GetInt("kex", 2);
} else {
icon_n = ini_icons.get(file_path, extension, icon_size);
}
if (big_icons.checked) {
selected_image = icons32_selected.image;
default_image = icons32_default.image;
} else {
selected_image = icons16_selected.image;
default_image = icons16_default.image;
}
if (fairing_color==col.selec) {

View File

@ -263,7 +263,7 @@ void DrawPropertiesWindow()
if (!itdir) {
element_size = file_info_general.sizelo;
} else {
sprintf(#folder_info,PR_T_CONTAINS,dir_size.files,dir_size.folders);
sprintf(#folder_info,T_FILES_FOLDERS,more_files_count.files,more_files_count.folders);
WriteText(10, 117, 0x90, sc.work_text, PR_T_CONTAINS);
WriteText(120, 117, 0x90, sc.work_text, #folder_info);
element_size = dir_size.bytes;
@ -288,9 +288,8 @@ void DrawPropertiesWindow()
void PropertiesDrawIcon(dword file_path, extension)
{
#define ICON_PADDING 11
DrawBar(20-ICON_PADDING, 30-ICON_PADDING-1, ICON_PADDING*2+16, ICON_PADDING*2+16, 0xFFFfff);
DrawIconByExtension(file_path, extension, -icon_size/2+28, -icon_size/2+38, 0xFFFfff);
int icon_n = ini_icons.get(file_path, extension, 32);
draw_icon_32(12, 22, sc.work, icon_n);
}
void EventApplyProperties()

View File

@ -83,20 +83,22 @@
#define padding_h 15
#define right_margin 12
#define h padding_v + padding_v + 16 //16 font height
int tx = x + padding_h;
int ty = y + padding_v+1;
int tw = strlen(text)*8;
int w = tw + padding_h + padding_h;
unsigned darker_color = MixColors(sc.button,0,230);
DefineButton(x,y,w,h,id,sc.button);
WriteText(tx+1,ty+1,0x90,darker_color,text);
WriteText(tx,ty,0x90,sc.button_text,text);
x += padding_h;
y += padding_v+1;
WriteText(x+1,y+1,0x90,darker_color,text);
WriteText(x,y,0x90,sc.button_text,text);
if (active_button_id==id) {
DrawBar(tx,ty+15,tw,1, darker_color);
DrawBar(tx,ty+14,tw,1, sc.button_text);
DrawBar(x,y+15,tw,1, darker_color);
DrawBar(x,y+14,tw,1, sc.button_text);
}
return w + right_margin;
@ -152,21 +154,21 @@
#define DOT_W 37
:void DrawFileBox(dword edit_box_pointer, title, btn)
{
dword x,y,w,h,bg,t;
dword x,y,w,bg,t;
ESI = edit_box_pointer;
x = ESI.edit_box.left;
y = ESI.edit_box.top;
w = ESI.edit_box.width+1;
h = 22;
#define box_h 22
if (ESI.edit_box.flags & 100000000000b) bg = 0xCACACA; else bg = 0xFFFfff;
edit_box_draw stdcall (edit_box_pointer);
DrawRectangle3D(x-1, y-1, w+1, h+1, 0xE7E7E7, bg);
DrawRectangle(x-2, y-2, w+3, h+3, sc.work_graph);
DrawRectangle3D(x-3, y-3, w+DOT_W+5, h+5, sc.work_dark, sc.work_light);
DrawRectangle3D(x-1, y-1, w+1, box_h+1, 0xE7E7E7, bg);
DrawRectangle(x-2, y-2, w+3, box_h+3, sc.work_graph);
DrawRectangle3D(x-3, y-3, w+DOT_W+5, box_h+5, sc.work_dark, sc.work_light);
WriteText(x-2, y-19, 0x90, sc.work_text, title);
DrawCaptButton(x+w+1, y-2, DOT_W, h+3, btn, sc.button, sc.button_text, "...");
DrawCaptButton(x+w+1, y-2, DOT_W, box_h+3, btn, sc.button, sc.button_text, "...");
}
:void DrawEditBoxPos(dword x,y, edit_box_pointer)

View File

@ -324,7 +324,7 @@ void EventMagnifyMinus()
void EventMagnifyPlus()
{
font_size = math.min(3, font_size+1);
font_size = math.min(5, font_size+1);
SetFontSize(font_size);
ParseAndPaint();
}
@ -719,6 +719,8 @@ void SetFontSize(char _size)
if (font_size == 1) list.SetFont( 8, 14, 00011000b);
if (font_size == 2) list.SetFont(2*6, 2*9, 00001001b);
if (font_size == 3) list.SetFont(2*8, 2*14-2, 00011001b);
if (font_size == 4) list.SetFont(3*6, 3*9, 00001010b);
if (font_size == 5) list.SetFont(3*8, 3*14-2, 00011010b);
list.item_w = list.font_w;
list.horisontal_selelection = true;
list.SetSizes(0, TOOLBAR_H, Form.cwidth-scroll.size_x-1,