Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1.  
  2. void Drives__Main()
  3. {
  4.         SetEventMask(EVM_REDRAW + EVM_KEY + EVM_BUTTON);
  5.         goto _GENERAL_REDRAW_1;
  6.         loop()
  7.         {
  8.                 WaitEventTimeout(500);
  9.                 switch(EAX & 0xFF)
  10.                 {
  11.                         case evButton: Sysmon__ButtonEvent(); break;
  12.                         case evKey: Sysmon__KeyEvent(); break;
  13.                         case evReDraw:
  14.                                 _GENERAL_REDRAW_1:
  15.                                 Sysmon__DefineAndDrawWindow();
  16.                                 WriteText(WIN_PAD, WIN_CONTENT_Y+25, 0x90, sc.work, "Update period: 5 seconds");
  17.                         default:
  18.                                 MonitorRd();
  19.                                 MonitorTmp();
  20.                 }
  21.         }
  22. }
  23.  
  24. void MonitorRd()
  25. {
  26.         sensor rd;
  27.         dword rdempty = malloc(1440*1024);
  28.         rd.set_size(WIN_PAD, WIN_CONTENT_Y+25, WIN_CONTENT_W, 23);
  29.         CreateFile(0, 1440*1024, rdempty, "/rd/1/rdempty");
  30.         free(rdempty);
  31.         file_size stdcall ("/rd/1/rdempty");
  32.         rdempty = EBX / 1024;
  33.         DeleteFile("/rd/1/rdempty");
  34.  
  35.         sprintf(#param, "System disk usage: %i Kb free of 1440 Mb", rdempty);
  36.         DrawIconWithText(WIN_PAD, rd.y - 25, 5, #param);
  37.  
  38.         rd.draw_progress(rdempty * rd.w / 1440);       
  39. }
  40.  
  41. dword GetTmpDiskFreeSpace(int _id)
  42. {
  43.         DIR_SIZE dir_size;
  44.         sprintf(#param, "/tmp%i/1", _id);
  45.         dir_size.get(#param);
  46.         dir_size.bytes += dir_size.files/2 + 32 * 512; //file attr size + FAT table size
  47.         dir_size.bytes /= 1024*1024; //convert to MiB
  48.         return dir_size.bytes; 
  49. }
  50.  
  51. void MonitorTmp()
  52. {
  53.         char text_status[64];
  54.         int i, yy=WIN_CONTENT_Y+95;
  55.         dword tmp_size[10];
  56.         dword free_space;
  57.         sensor tmp;
  58.         for (i=0; i<=9; i++)
  59.         {
  60.                 file_size stdcall ( sprintf(#param, "/tmp%i/1", i) );
  61.                 tmp_size[i] =  EBX / 1024 / 1024;
  62.  
  63.                 if (EBX) {
  64.                         free_space = tmp_size[i] - GetTmpDiskFreeSpace(i);
  65.                         sprintf(#text_status, "TMP%i usage: %i Mb free of %i Mb", i, free_space, tmp_size[i]);
  66.                         tmp.set_size(WIN_PAD, yy, WIN_CONTENT_W, 23);
  67.                         tmp.draw_progress(free_space * WIN_CONTENT_W / tmp_size[i]);
  68.                         DrawIconWithText(WIN_PAD, tmp.y - 25, 50, #text_status);
  69.                         yy += 65;
  70.                 }
  71.         }
  72. }