Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 3411 → Rev 3412

/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
debug("Got mail list");
DrawMailBox();
 
CreateMailsArray();
SetMailsSizes();
atr.CreateMailsArray();
atr.SetMailsSizes();
}
}
}
268,7 → 280,7
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;
365,8 → 377,7
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
}
 
 
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
 
 
 
 
 
 
 
 
 
 
 
 
void listputc(char agot_char){
*listpointer=agot_char;
listpointer++;
547,39 → 535,24
}
 
 
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];
}