From abd4ed875a633cda463ef83c50a6f4a65e42c143 Mon Sep 17 00:00:00 2001 From: "Kirill Lipatov (Leency)" Date: Mon, 25 Mar 2013 22:50:35 +0000 Subject: [PATCH] cmm programs: a lot of small optimizations git-svn-id: svn://kolibrios.org@3412 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/cmm/dicty/dicty.c | 1 + programs/cmm/eolite/Eolite.c | 8 +- programs/cmm/eolite/include/about_dialog.h | 2 +- programs/cmm/eolite/include/some_code.h | 14 ---- programs/cmm/installer/main.c | 2 +- programs/cmm/lib/encoding.h | 15 +++- programs/cmm/lib/file_system.h | 2 + programs/cmm/liza/liza.c | 6 +- programs/cmm/liza/mail_box.c | 89 ++++++++-------------- 9 files changed, 58 insertions(+), 81 deletions(-) diff --git a/programs/cmm/dicty/dicty.c b/programs/cmm/dicty/dicty.c index ec4b9f355e..548f20f52e 100644 --- a/programs/cmm/dicty/dicty.c +++ b/programs/cmm/dicty/dicty.c @@ -200,6 +200,7 @@ void Translate() void OpenDictionary(dword fileid) { + KillProcess(speaker_id); if (!dir_buf) ShowDictList(); if (!dir_buf) strcpy(#cur_dict, "none"); else strcpy(#cur_dict, fileid*304+dir_buf+72); diff --git a/programs/cmm/eolite/Eolite.c b/programs/cmm/eolite/Eolite.c index be42007b00..566e29533f 100644 --- a/programs/cmm/eolite/Eolite.c +++ b/programs/cmm/eolite/Eolite.c @@ -13,6 +13,7 @@ #include "..\lib\lib.obj\box_lib.h" #include "..\lib\file_system.h" #include "..\lib\figures.h" +#include "..\lib\encoding.h" //images #include "imgs\toolbar.txt" #include "imgs\left_p.txt" @@ -25,7 +26,8 @@ int BUTTON_HEIGHT=18; #define ONLY_OPEN 2 //ïåðåìåííûå -#define title "Eolite File Manager v1.64" +#define TITLE "Eolite File Manager v1.64" +#define ABOUT_TITLE "Eolite v1.64" dword col_work = 0xE4DFE1; dword col_border = 0x819FC5; dword col_padding = 0xC8C9C9; @@ -421,7 +423,7 @@ void main() } break; case evReDraw: - DefineAndDrawWindow(40,20,550,500,0x73,col_work,title); + DefineAndDrawWindow(40,20,550,500,0x73,col_work,TITLE); GetProcessInfo(#Form, SelfInfo); if (Form.status_window>2) break; min_win_h = disc_num*16+195; @@ -557,7 +559,7 @@ void Line_ReDraw(dword color, filenum){ { strcpy(#temp, off); Put_icon(#temp+_strrchr(#temp,'.'), BUTTON_HEIGHT/2-7+y, color); - WriteText(7-strlen(ConvertSize(ESDWORD[off-8]))*6+onLeft(75,0),BUTTON_HEIGHT-6/2+y,0x80,0,ConvertSize(ESDWORD[off-8])); //size + WriteText(7-strlen(ConvertMemSize(ESDWORD[off-8]))*6+onLeft(75,0),BUTTON_HEIGHT-6/2+y,0x80,0,ConvertMemSize(ESDWORD[off-8])); //size } else if (!strcmp("..",off)) diff --git a/programs/cmm/eolite/include/about_dialog.h b/programs/cmm/eolite/include/about_dialog.h index 2464bebd2d..0898f19065 100644 --- a/programs/cmm/eolite/include/about_dialog.h +++ b/programs/cmm/eolite/include/about_dialog.h @@ -25,7 +25,7 @@ void about_dialog() DefineAndDrawWindow(600,150,181,232+GetSkinHeight(),0x34,col_work,"About Eolite"); DrawBar(0,0,172,50,0x8494C4); PutPaletteImage(#logo,85,85,43,7,8,#logo_pal); - WriteTextB(46,100,0x90,0xBF40BF,"Eolite v1.64"); + WriteTextB(46,100,0x90,0xBF40BF,ABOUT_TITLE); WriteText(55,120,0x80,0,"Developers:"); WriteText(39,130,0x80,0,"Leency & Veliant"); WriteText(45,140,0x80,0,"KolibriOS Team"); diff --git a/programs/cmm/eolite/include/some_code.h b/programs/cmm/eolite/include/some_code.h index 90f9bec3fd..ef30119788 100644 --- a/programs/cmm/eolite/include/some_code.h +++ b/programs/cmm/eolite/include/some_code.h @@ -13,20 +13,6 @@ void ShowMessage(dword message) } -dword ConvertSize(dword bytes) -{ - unsigned char size_prefix[8], size_nm[4]; - if (bytes>=1073741824) strcpy(#size_nm, " Gb"); - else if (bytes>=1048576) strcpy(#size_nm, " Mb"); - else if (bytes>=1024) strcpy(#size_nm, " Kb"); - else strcpy(#size_nm, " b "); - while (bytes>1023) bytes/=1024; - strcpy(#size_prefix, itoa(bytes)); - strcat(#size_prefix, #size_nm); - return #size_prefix; -} - - dword col_palette[14] = {0xD2D3D3,0xD4D4D4,0xD6D5D6,0xD8D7D8,0xDAD8D9,0xDCDADB, 0xDFDCDD,0xE1DDDE,0xE2DEE0,0xE4DFE1,0xE3DFE1,0xE3DFE1,0xE3DFE1,0xE3DFE1,0xE3DFE1}; diff --git a/programs/cmm/installer/main.c b/programs/cmm/installer/main.c index 19791d025d..0156fa93bc 100644 --- a/programs/cmm/installer/main.c +++ b/programs/cmm/installer/main.c @@ -40,9 +40,9 @@ int DefineWindow(dword wtitle, wbutton) if (Form.status_window>2) return 0; //rolled_up DrawBar(0, 0, Form.cwidth, BLACK_H, 0); - DrawBar(0, BLACK_H, Form.cwidth, Form.cheight-BLACK_H, 0xFFFfff); _PutImage(BLACK_H-LOGOW/2, BLACK_H-LOGOH/2, LOGOW,LOGOH, #logo); WriteTextB(BLACK_H-LOGOW + LOGOW, BLACK_H-6/2, 0x90, 0xFFFfff, wtitle); + DrawBar(0, BLACK_H, Form.cwidth, Form.cheight-BLACK_H, 0xFFFfff); DrawCaptButton(Form.cwidth-107, Form.cheight-40, 90, 24, 10, sc.work_button, sc.work_button_text,wbutton); return 1; } diff --git a/programs/cmm/lib/encoding.h b/programs/cmm/lib/encoding.h index adc0be6e41..f0004e871f 100644 --- a/programs/cmm/lib/encoding.h +++ b/programs/cmm/lib/encoding.h @@ -155,7 +155,7 @@ inline fastcall void utf8rutodos( ESI) //------------------------------------------------------------------------------ -dword Hex2Symb(char* htmlcolor) +:dword Hex2Symb(char* htmlcolor) { dword j=0, symbol=0; char ch=0x00; @@ -170,4 +170,17 @@ dword Hex2Symb(char* htmlcolor) } wintodos(#symbol); AL=symbol; +} + +:dword ConvertMemSize(unsigned int bytes) +{ + unsigned char size_prefix[8], size_nm[4]; + if (bytes>=1073741824) strcpy(#size_nm, " Gb"); + else if (bytes>=1048576) strcpy(#size_nm, " Mb"); + else if (bytes>=1024) strcpy(#size_nm, " Kb"); + else strcpy(#size_nm, " b "); + while (bytes>1023) bytes/=1024; + strcpy(#size_prefix, itoa(bytes)); + strcat(#size_prefix, #size_nm); + return #size_prefix; } \ No newline at end of file diff --git a/programs/cmm/lib/file_system.h b/programs/cmm/lib/file_system.h index 36acda3d90..f8687cd860 100644 --- a/programs/cmm/lib/file_system.h +++ b/programs/cmm/lib/file_system.h @@ -203,9 +203,11 @@ f70 getinfo_file_70; if (! ReadFile(0, CopyFile_atr.sizelo, cBufer, copy_from)) { rezult = WriteFile(CopyFile_atr.sizelo, cBufer, copy_in); + debugi(rezult); } } free(cBufer); + debugi(rezult); return rezult; } diff --git a/programs/cmm/liza/liza.c b/programs/cmm/liza/liza.c index 355dc626c9..f4b129ce26 100644 --- a/programs/cmm/liza/liza.c +++ b/programs/cmm/liza/liza.c @@ -127,9 +127,9 @@ void OpenMailDat() ReadFile(0, 512, #read_data, "/sys/network/mail.dat"); if (!read_data) { - //strcpy(#email_text, "eiroglif@yandex.ru"); //temporarily, for testing - strcpy(#email_text, "example@mail.com"); - //strcpy(#pass_text, "rostov"); + strcpy(#email_text, "eiroglif@yandex.ru"); //temporarily, for testing + //strcpy(#email_text, "example@mail.com"); + strcpy(#pass_text, "rostov"); } else { diff --git a/programs/cmm/liza/mail_box.c b/programs/cmm/liza/mail_box.c index 2340041200..ab2daf93da 100644 --- a/programs/cmm/liza/mail_box.c +++ b/programs/cmm/liza/mail_box.c @@ -3,12 +3,24 @@ #define LIST_INFO_H 59 int status_bar_h = 15; +llist mail_list; +llist letter_view; scroll_bar scroll1 = { 17,200,210, LIST_INFO_H-3,18,0,115,15,0,0xCCCccc,0xD2CED0,0x555555,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1}; scroll_bar scroll2 = { 17,200,210, LIST_INFO_H,18,0,115,15,0,0xCCCccc,0xD2CED0,0x555555,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1}; +struct letter_attr +{ + char adress[64]; + char header[256]; + byte m_type; + int size; + void CreateMailsArray(); + void SetMailsSizes(); + int GetLetterSize(int N); +}; +letter_attr atr; +dword mails_db; -llist mail_list; -llist letter_view; char from[256]; char to[256]; @@ -252,8 +264,8 @@ void MailBoxLoop() debug("Got mail list"); DrawMailBox(); - CreateMailsArray(); - SetMailsSizes(); + atr.CreateMailsArray(); + atr.SetMailsSizes(); } } } @@ -268,7 +280,7 @@ void MailBoxLoop() if (EAX == 0xffffffff) { notify("Error while trying to get letter from server"); aim=NULL; break;} mailbuffer = free(mailbuffer); - letter_size = GetLetterSize(mail_list.current+1) + 1024; + letter_size = atr.GetLetterSize(mail_list.current+1) + 1024; mailbuffer = malloc(letter_size); mailpointer = mailbuffer; aim = GET_ANSWER_RETR; @@ -330,11 +342,11 @@ void DrawToolbar() mail_list.SetSizes(0, toolbar_w, Form.cwidth - scroll1.size_x - 1, mail_list.h, 60,18); DrawBar(0,0, Form.cwidth,toolbar_w-3, sc.work); - DrawCaptButton(10 , BUT_Y, BUT_W, BUT_H, GET_MAIL, sc.work_button, sc.work_button_text,"Get mail"); - DrawCaptButton(BUT_W+BUT_SPACE + 10, BUT_Y, BUT_W, BUT_H, SEND_MAIL, sc.work_button, sc.work_button_text,"Send Email"); - DrawCaptButton(BUT_W+BUT_SPACE*2 + 10, BUT_Y, BUT_W, BUT_H, DELETE_LETTER, sc.work_button, sc.work_button_text,"Delete"); - DrawCaptButton(BUT_W+BUT_SPACE*3 + 10, BUT_Y, BUT_W, BUT_H, SAVE_LETTER, sc.work_button, sc.work_button_text,"Save"); - DrawCaptButton(Form.cwidth-BUT_W - 10, BUT_Y, BUT_W, BUT_H, EXIT_MAIL, sc.work_button, sc.work_button_text,"< Exit"); + DrawCaptButton(10 , BUT_Y, BUT_W, BUT_H, GET_MAIL, sc.work_button, sc.work_button_text,"Get mail"); + DrawCaptButton(BUT_W+BUT_SPACE + 10, BUT_Y, BUT_W, BUT_H, SEND_MAIL, sc.work_button, sc.work_button_text,"Send Email"); + DrawCaptButton(BUT_W+BUT_SPACE*2 + 10, BUT_Y, BUT_W, BUT_H, DELETE_LETTER, sc.work_button, sc.work_button_text,"Delete"); + DrawCaptButton(BUT_W+BUT_SPACE*3 + 10, BUT_Y, BUT_W, BUT_H, SAVE_LETTER, sc.work_button, sc.work_button_text,"Save"); + DrawCaptButton(Form.cwidth-BUT_W - 10, BUT_Y, BUT_W, BUT_H, EXIT_MAIL, sc.work_button, sc.work_button_text,"< Exit"); DrawBar(0, mail_list.y-3, mail_list.w,1, sc.work_graph); DrawBar(0, mail_list.y-2, mail_list.w,1, 0xdfdfdf); @@ -365,8 +377,7 @@ void DrawMailList() DefineButton(0, on_y, mail_list.w-1, mail_list.line_h, 30+i+BT_HIDE+BT_NOFRAME); DrawBar(0, on_y + mail_list.line_h-1, mail_list.w, 1, 0xCCCccc); WriteText(10, on_y+5, 0x80, 0, itoa(i+mail_list.first+1)); - //WriteText(mail_list.w - 40, on_y+5, 0x80, 0, itoa(GetLetterSize(i+mail_list.first+1))); - WriteText(mail_list.w - 40, on_y+5, 0x80, 0, ConvertSize(GetLetterSize(i+mail_list.first+1))); + WriteText(mail_list.w - 40, on_y+5, 0x80, 0, ConvertMemSize(atr.GetLetterSize(i+mail_list.first+1))); } DrawBar(0, i*mail_list.line_h + mail_list.y, mail_list.w, -i*mail_list.line_h+mail_list.h, 0xFFFfff); DrawScroller1(); @@ -382,20 +393,6 @@ void PutMailDirectionImage(int x,y, to_str, from_str) } -dword ConvertSize(unsigned int bytes) -{ - unsigned char size_prefix[8], size_nm[4]; - if (bytes>=1073741824) strcpy(#size_nm, " Gb"); - else if (bytes>=1048576) strcpy(#size_nm, " Mb"); - else if (bytes>=1024) strcpy(#size_nm, " Kb"); - else strcpy(#size_nm, " b "); - while (bytes>1023) bytes/=1024; - strcpy(#size_prefix, itoa(bytes)); - strcat(#size_prefix, #size_nm); - return #size_prefix; -} - - void DrawLetterInfo() { int lt_y = mail_list.y+mail_list.h; @@ -520,15 +517,6 @@ int GetMailCount(){ - - - - - - - - - void listputc(char agot_char){ *listpointer=agot_char; listpointer++; @@ -547,39 +535,24 @@ int GetLetterSize_(int number){ } -struct line_element -{ - byte m_type; - char adress[64]; - char header[256]; - int size; -}; -dword mails_db; -void CreateMailsArray() + +void letter_attr::CreateMailsArray() { mails_db = free(mails_db); - mails_db = malloc( mail_list.count * sizeof(line_element) ); + mails_db = malloc( mail_list.count * sizeof(atr) ); } -dword GetCurrentElement(int el_N) +void letter_attr::SetMailsSizes() { - return sizeof(line_element)*el_N + #mails_db; -} - -void SetMailsSizes() -{ - int i, temp; + int i, off; for (i=0; i < mail_list.count; i++) { - temp = GetLetterSize_(i); - EBX = GetCurrentElement(i); //в региÑÑ‚Ñ€ EBX Ñуём Ð°Ð´Ñ€ÐµÑ Ð±Ð»Ð¾ÐºÐ° памÑти Ñо Ñмещением к Ñлементу N Ñ ÐºÐ¾Ñ‚Ñ€Ñ‹Ð¼ мы хотим работать - EBX.line_element.size = temp;//работаем Ñ m_type N-ного Ñлемента Ñтруктуры отраженной на блок памÑти + ESDWORD[sizeof(atr)*i+#mails_db+#atr.size-#atr] = GetLetterSize_(i); } } -int GetLetterSize(int el_N) +int letter_attr::GetLetterSize(int N) { - EBX = GetCurrentElement(el_N); - return EBX.line_element.size; + return ESDWORD[sizeof(atr)*N+#mails_db+#atr.size-#atr]; } \ No newline at end of file