Eolite: show disk sizes

TmpDisk: get disk size by 70.5 instead of ini storage, impove board loging

git-svn-id: svn://kolibrios.org@7515 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Kirill Lipatov (Leency) 2018-10-31 16:50:25 +00:00
parent c6ceff795e
commit 6260ae112b
5 changed files with 59 additions and 78 deletions

View File

@ -709,6 +709,7 @@ void Line_ReDraw(dword bgcol, filenum){
ext1, attr, ext1, attr,
file_offet, file_offet,
file_name_off, file_name_off,
file_size=0,
y=filenum*files.item_h+files.y, y=filenum*files.item_h+files.y,
icon_y = files.item_h-icon_size/2+1+y; icon_y = files.item_h-icon_size/2+1+y;
BDVK file; BDVK file;
@ -727,18 +728,13 @@ void Line_ReDraw(dword bgcol, filenum){
file.sizelo = ESDWORD[file_offet+32]; file.sizelo = ESDWORD[file_offet+32];
file.sizehi = ESDWORD[file_offet+36]; file.sizehi = ESDWORD[file_offet+36];
file_name_off = file_offet+40; file_name_off = file_offet+40;
sprintf(#temp_path,"%s/%s",#path,file_name_off);
if (! TestBit(attr, 4) ) //file or folder? if (! TestBit(attr, 4) ) //file or folder?
{ {
ext1 = strrchr(file_name_off,'.') + file_name_off; ext1 = strrchr(file_name_off,'.') + file_name_off;
if (ext1==file_name_off) ext1 = NULL; //if no extension then show nothing if (ext1==file_name_off) ext1 = NULL; //if no extension then show nothing
WriteText( file_size = ConvertSize64(file.sizelo, file.sizehi);
7-strlen(ConvertSize64(file.sizelo, file.sizehi))*6+files.x+files.w - 58,
files.text_y+y+1,
files.font_type,
0,
ConvertSize64(file.sizelo, file.sizehi)
);
if (ext1) && (strlen(ext1)<9) WriteTextCenter(files.x+files.w-140, files.text_y+y+1, 72, 0, ext1); if (ext1) && (strlen(ext1)<9) WriteTextCenter(files.x+files.w-140, files.text_y+y+1, 72, 0, ext1);
} }
else else
@ -747,8 +743,10 @@ void Line_ReDraw(dword bgcol, filenum){
ext1="<DIR>"; ext1="<DIR>";
WriteTextCenter(files.x+files.w-140, files.text_y+y+1, 72, 0, ext1); WriteTextCenter(files.x+files.w-140, files.text_y+y+1, 72, 0, ext1);
} }
if (chrnum(#path, '/')==1) file_size = GetDeviceSizeLabel(#temp_path);
} }
sprintf(#temp_path,"%s/%s",#path,file_name_off); if (file_size) WriteText(7-strlen(file_size)*6+files.x+files.w-58,
files.text_y+y+1, files.font_type, 0, file_size);
DrawIconByExtension(#temp_path, ext1, files.x+4, icon_y, bgcol); DrawIconByExtension(#temp_path, ext1, files.x+4, icon_y, bgcol);
if (TestBit(attr, 1)) || (TestBit(attr, 2)) text_col=0xA6A6B7; //system or hiden? if (TestBit(attr, 1)) || (TestBit(attr, 2)) text_col=0xA6A6B7; //system or hiden?
@ -1167,6 +1165,22 @@ void EventSelectFileByKeyPress()
} }
} }
dword GetDeviceSizeLabel(dword path)
{
BDVK bdvk;
char cdname[8];
if (ESBYTE[path+1] == '/') path++;
if (ESBYTE[path+1] == 'c') && (ESBYTE[path+2] == 'd')
&& (ESBYTE[path+4] == 0) {
//hack for http://board.kolibrios.org/viewtopic.php?p=72293#p72279
strcpy(#cdname, path);
strcat(#cdname, "/1");
path = #cdname;
}
GetFileInfo(path, #bdvk);
return ConvertSize64(bdvk.sizelo, bdvk.sizehi);
}
int GetRealFileCountInFolder(dword folder_path) int GetRealFileCountInFolder(dword folder_path)
{ {
int fcount; int fcount;

View File

@ -1,5 +1,5 @@
#define TITLE "Eolite File Manager 4.03" #define TITLE "Eolite File Manager 4.04"
#define ABOUT_TITLE "EOLITE 4.03" #define ABOUT_TITLE "EOLITE 4.04"
#ifdef LANG_RUS #ifdef LANG_RUS
?define T_FILE "” ©«" ?define T_FILE "” ©«"

View File

@ -3,12 +3,10 @@
///////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////
#ifdef LANG_RUS #ifdef LANG_RUS
?define ADD_DISK_TEXT "¯à®¡ãî ¤®¡ ¢¨âì ¢¨àâã «ì­ë© ¤¨áª" ?define DELETE_DISK_TEXT "<EFBFBD>஡ãî 㤠«¨âì /tmp%i"
?define DELETE_DISK_TEXT "¯à®¡ãî 㤠«¨âì ¢¨àâã «ì­ë© ¤¨áª" ?define NEW_DISK_TEXT "<EFBFBD>஡ãî ¤®¡ ¢¨âì ¢¨àâã «ì­ë© ¤¨áª /tmp%i à §¬¥à®¬ %i MB"
?define DONT_KNOW_DISK_SIZE_TEXT "¥£® à §¬¥à ­¥ 㪠§ ­, 20% ᢮¡®¤­®© Ž‡“ ¡ã¤¥â ¨á¯®«ì§®¢ ­®"
?define NEW_DISK_TEXT "à §¬¥à ¤¨áª  ¡ã¤¥â: "
char *rezult_text[]={ char *rezult_text[]={
"®¯¥à æ¨ï ãᯥ譮 § ¢¥à襭 ", "TmpDisk ®¯¥à æ¨ï ãᯥ譮 § ¢¥à襭 ",
"­¥¨§¢¥áâ­ë© IOCTL, ­¥¢¥à­ë© à §¬¥à ¯à¥¤®áâ ¢«ï¥¬ëå ¤ ­­ëå...", "­¥¨§¢¥áâ­ë© IOCTL, ­¥¢¥à­ë© à §¬¥à ¯à¥¤®áâ ¢«ï¥¬ëå ¤ ­­ëå...",
"­®¬¥à ¤¨áª  ¤®«¦¥­ ¡ëâì ®â 0 ¤® 9", "­®¬¥à ¤¨áª  ¤®«¦¥­ ¡ëâì ®â 0 ¤® 9",
"à §¬¥à ᮧ¤ ¢ ¥¬®£® ¤¨áª  ᫨誮¬ ¢¥«¨ª", "à §¬¥à ᮧ¤ ¢ ¥¬®£® ¤¨áª  ᫨誮¬ ¢¥«¨ª",
@ -17,12 +15,10 @@
"­¥¨§¢¥áâ­ ï ®è¨¡ª  O_o", "­¥¨§¢¥áâ­ ï ®è¨¡ª  O_o",
0}; 0};
#else #else
?define ADD_DISK_TEXT "trying to add disk" ?define DELETE_DISK_TEXT "Trying to delete /tmp%i"
?define DELETE_DISK_TEXT "trying to delete virtual disk" ?define NEW_DISK_TEXT "Trying to add virtual disk /tmp%i, the size of %i MB"
?define DONT_KNOW_DISK_SIZE_TEXT "its size is not specified, 20% from free RAM will be used"
?define NEW_DISK_TEXT "new DiskSize: "
char *rezult_text[]={ char *rezult_text[]={
"operation completed successfully", "TmpDisk operation completed successfully",
"unknown IOCTL code, wrong input/output size...", "unknown IOCTL code, wrong input/output size...",
"DiskId must be from 0 to 9", "DiskId must be from 0 to 9",
"DiskSize is too large", "DiskSize is too large",
@ -48,8 +44,7 @@ char Console_Work()
debugln("d[number] - delete RAM disk"); debugln("d[number] - delete RAM disk");
ExitProcess(); ExitProcess();
break; break;
case 'd': case 'd': //Delete disk
debugln(DELETE_DISK_TEXT);
del_disk.DiskId = param[1]-'0'; del_disk.DiskId = param[1]-'0';
ioctl.handle = driver_handle; ioctl.handle = driver_handle;
ioctl.io_code = DEV_DEL_DISK; ioctl.io_code = DEV_DEL_DISK;
@ -57,24 +52,19 @@ char Console_Work()
ioctl.inp_size = sizeof(del_disk); ioctl.inp_size = sizeof(del_disk);
ioctl.output = 0; ioctl.output = 0;
ioctl.out_size = 0; ioctl.out_size = 0;
disk_sizes[del_disk.DiskId] = 0; sprintf(#size_t, DELETE_DISK_TEXT, add_disk.DiskId);
debugln(#size_t);
break; break;
case 'a': case 'a': //Add disk
debugln(ADD_DISK_TEXT);
disk_size= strchr(#param, 's'); disk_size= strchr(#param, 's');
if (!disk_size) if (!disk_size)
{ {
add_disk.DiskSize = GetFreeRAM() / 5 * 2; add_disk.DiskSize = GetFreeRAM() / 5 * 2;
debugln(DONT_KNOW_DISK_SIZE_TEXT);
} }
else else
{ {
add_disk.DiskSize = atoi(disk_size+1)*2048; add_disk.DiskSize = atoi(disk_size+1)*2048;
} }
strcpy(#size_t, NEW_DISK_TEXT);
strcat(#size_t, itoa(add_disk.DiskSize/2048));
strcat(#size_t, " MB");
debugln(#size_t);
add_disk.DiskId = param[1]-'0'; add_disk.DiskId = param[1]-'0';
ioctl.handle = driver_handle; ioctl.handle = driver_handle;
ioctl.io_code = DEV_ADD_DISK; ioctl.io_code = DEV_ADD_DISK;
@ -82,7 +72,8 @@ char Console_Work()
ioctl.inp_size = sizeof(add_disk); ioctl.inp_size = sizeof(add_disk);
ioctl.output = 0; ioctl.output = 0;
ioctl.out_size = 0; ioctl.out_size = 0;
disk_sizes[add_disk.DiskId] = add_disk.DiskSize * 512; sprintf(#size_t, NEW_DISK_TEXT, add_disk.DiskId, add_disk.DiskSize/2048);
debugln(#size_t);
break; break;
default: default:
debugln("unknown command line parameters"); debugln("unknown command line parameters");

View File

@ -55,9 +55,9 @@ void Main_Window()
int x; int x;
load_dll(boxlib, #box_lib_init,0); load_dll(boxlib, #box_lib_init,0);
GetSizeDisk(); GetNewSizeDisk();
edit_disk_size.left = strlen(SIZE_TEXT)*9 + 10; edit_disk_size.left = strlen(SIZE_TEXT)*9 + 10;
SetEventMask(0x27); SetEventMask(EVM_REDRAW + EVM_KEY + EVM_BUTTON + EVM_MOUSE + EVM_MOUSE_FILTER);
loop() loop()
{ {
switch(WaitEvent()) switch(WaitEvent())
@ -142,7 +142,7 @@ void Main_Window()
break; break;
case evReDraw: case evReDraw:
system.color.get(); system.color.get();
DefineAndDrawWindow(170,150,405,290,0x74,system.color.work,"Virtual Disk Manager 0.67a",0); DefineAndDrawWindow(170,150,405,290,0x74,system.color.work,"Virtual Disk Manager 0.68",0);
GetProcessInfo(#Form, SelfInfo); GetProcessInfo(#Form, SelfInfo);
if (Form.status_window>2) break; if (Form.status_window>2) break;
@ -151,7 +151,6 @@ void Main_Window()
WriteText(6, 9, 0x90, system.color.work_text, SIZE_TEXT); WriteText(6, 9, 0x90, system.color.work_text, SIZE_TEXT);
WriteText(edit_disk_size.left + edit_disk_size.width + 12, 9, 0x90, system.color.work_text, "MB."); WriteText(edit_disk_size.left + edit_disk_size.width + 12, 9, 0x90, system.color.work_text, "MB.");
DrawEditBox(#edit_disk_size); DrawEditBox(#edit_disk_size);
x = 6;
x = 6 + DrawStandartCaptButton(6, 36, 10, T_ADD_DISK); x = 6 + DrawStandartCaptButton(6, 36, 10, T_ADD_DISK);
DrawStandartCaptButton(x, 36, 11, T_DELETE_DISK); DrawStandartCaptButton(x, 36, 11, T_DELETE_DISK);
_PutImage(6+6, 42, 14,14, #icons); _PutImage(6+6, 42, 14,14, #icons);
@ -163,7 +162,7 @@ void Main_Window()
} }
void GetSizeDisk() void GetNewSizeDisk()
{ {
int fr; int fr;
fr = GetFreeRAM() / 5 * 2; fr = GetFreeRAM() / 5 * 2;
@ -209,14 +208,24 @@ void GetDisks()
} }
dword GetDiskSize(dword disk_n)
{
BDVK bdvk;
char tmp_path[8];
strcpy(#tmp_path, "/tmp0/1");
tmp_path[4] = disk_n + '0';
GetFileInfo(#tmp_path, #bdvk);
return bdvk.sizelo;
}
unsigned int disk_pos_x[]={13,13,13,102,102,102,191,191,191,279,279,279}; unsigned int disk_pos_x[]={13,13,13,102,102,102,191,191,191,279,279,279};
unsigned int disk_pos_y[]={79,127,175, 79,127,175, 79,127,175, 79,127,175}; unsigned int disk_pos_y[]={79,127,175, 79,127,175, 79,127,175, 79,127,175};
void DrawTmpDisks() void DrawTmpDisks()
{ {
#define SELECTION_ACTIVE 0x0080FF;
#define SELECTION_INACTIVE 0x757489;
dword selection_color; dword selection_color;
dword selection_active = 0x0080FF;
dword selection_inactive = 0x757489;
char free_ram_text[60]; char free_ram_text[60];
byte i, real_id; byte i, real_id;
int FreeRAM=GetFreeRAM()/1024; int FreeRAM=GetFreeRAM()/1024;
@ -240,10 +249,13 @@ void DrawTmpDisks()
DefineButton(disk_pos_x[i], disk_pos_y[i], 80, 40, 20+i, 0xFFFfff); DefineButton(disk_pos_x[i], disk_pos_y[i], 80, 40, 20+i, 0xFFFfff);
WriteText(disk_pos_x[i]+26,disk_pos_y[i]+6, 10110000b, 0x222222, #disk_list[i].Item); WriteText(disk_pos_x[i]+26,disk_pos_y[i]+6, 10110000b, 0x222222, #disk_list[i].Item);
real_id = disk_list[i].Item[3] - '0'; real_id = disk_list[i].Item[3] - '0';
WriteText(disk_pos_x[i]+27,disk_pos_y[i]+24, 0x80, 0x555555, ConvertSize(disk_sizes[real_id])); WriteText(disk_pos_x[i]+27,disk_pos_y[i]+24, 0x80, 0x555555, ConvertSize(GetDiskSize(real_id)));
_PutImage(disk_pos_x[i]+6,disk_pos_y[i]+6, 14,14, 2*14*14*3+#icons); _PutImage(disk_pos_x[i]+6,disk_pos_y[i]+6, 14,14, 2*14*14*3+#icons);
if (selected==i) { if (selected==i) {
if ( edit_disk_size.flags & ed_focus) selection_color = selection_inactive; else selection_color = selection_active; if ( edit_disk_size.flags & ed_focus)
selection_color = SELECTION_INACTIVE;
else
selection_color = SELECTION_ACTIVE;
DrawWideRectangle(disk_pos_x[i], disk_pos_y[i], 80, 40, 2, selection_color); DrawWideRectangle(disk_pos_x[i], disk_pos_y[i], 80, 40, 2, selection_color);
PutPixel(disk_pos_x[i], disk_pos_y[i], 0xFFFfff); PutPixel(disk_pos_x[i], disk_pos_y[i], 0xFFFfff);
} }
@ -279,7 +291,7 @@ void AddDisk()
pause(5); pause(5);
GetDisks(); GetDisks();
DrawTmpDisks(); DrawTmpDisks();
GetSizeDisk(); GetNewSizeDisk();
} }

View File

@ -4,10 +4,6 @@
#include "..\lib\strings.h" #include "..\lib\strings.h"
#include "..\lib\fs.h" #include "..\lib\fs.h"
#include "..\lib\dll.h"
#include "..\lib\obj\libio.h"
#include "..\lib\obj\libini.h"
#ifndef AUTOBUILD #ifndef AUTOBUILD
#include "lang.h--" #include "lang.h--"
#endif #endif
@ -47,10 +43,6 @@ del_disk_struc del_disk;
int driver_handle; int driver_handle;
dword disk_sizes[10];
_ini ini = { "/sys/settings/system.ini", "DiskSizes" };
///////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////
///////////////////////// Code //////////////////// ///////////////////////// Code ////////////////////
///////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////
@ -67,40 +59,12 @@ void main()
ExitProcess(); ExitProcess();
} }
GetDiskSizesFromIni();
if (param) if (param)
Console_Work(); Console_Work();
else else
Main_Window(); Main_Window();
SaveDiskSizesToIni();
ExitProcess(); ExitProcess();
} }
void GetDiskSizesFromIni()
{
char i, key[2];
load_dll(libini, #lib_init, 1);
key[1]=0;
for (i=0; i<=9; i++)
{
key[0]=i+'0';
disk_sizes[i] = ini.GetInt(#key, 0);
}
}
void SaveDiskSizesToIni()
{
char i, key[2];
key[1]=0;
for (i=0; i<=9; i++)
{
key[0]=i+'0';
if (disk_sizes[i]) ini.SetInt(#key, disk_sizes[i]);
}
}
stop: stop: