Subversion Repositories Kolibri OS

Rev

Rev 8947 | Rev 9510 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1.  
  2. #define WIN_DIALOG_W 380
  3. #define WIN_DIALOG_H 100
  4. #define PR_LEFT 14
  5. #define PR_TOP  32
  6. #define PR_W  WIN_DIALOG_W-PR_LEFT-PR_LEFT
  7. #define PR_H  18
  8.  
  9. proc_info Dialog_Form;
  10. progress_bar copy_bar = {0,PR_LEFT,PR_TOP,PR_W,PR_H,0,0,1,0xFFFFFF,0x00FF00,0x555555};
  11.  
  12. enum {
  13.         REDRAW_FLAG,
  14.         COPY_FLAG,
  15.         MOVE_FLAG,
  16.         DELETE_FLAG,
  17. };
  18.  
  19. void DisplayOperationForm(int operation_flag)
  20. {
  21.         dword title;
  22.         dword id;
  23.         if (operation_flag==COPY_FLAG) {
  24.                 title = T_COPY_WINDOW_TITLE;
  25.                 copy_bar.progress_color = 0x00FF00;
  26.                 copy_bar.value = 0;
  27.                 copy_bar.max = 0;
  28.         }
  29.         else if (operation_flag==MOVE_FLAG) {
  30.                 title = T_MOVE_WINDOW_TITLE;
  31.                 copy_bar.progress_color = 0x00FF00;
  32.                 copy_bar.value = 0;
  33.                 copy_bar.max = 0;
  34.         }
  35.         else if (operation_flag==DELETE_FLAG) {
  36.                 title = T_DELETE_WINDOW_TITLE;
  37.                 copy_bar.progress_color = 0xF17A65;
  38.                 copy_bar.value = 0;
  39.                 copy_bar.max = 0;
  40.         }
  41.         copy_bar.frame_color = sc.work_graph;
  42.         switch(CheckEvent())
  43.         {
  44.                  case evButton:
  45.                         id = GetButtonID();
  46.                         switch(id)
  47.                         {
  48.                                 case 2:
  49.                                         DialogExit();
  50.                                         break;
  51.                                 case 3:
  52.                                         copy_state = FILE_REPLACE;
  53.                                         break;
  54.                                 case 4:
  55.                                         copy_state = FILE_SKIP;
  56.                                         break;
  57.                         }
  58.                         break;
  59.                 case evReDraw:
  60.                         DefineAndDrawWindow(Form.left+Form.width-200, Form.top+90, WIN_DIALOG_W+9,
  61.                                 skin_height+WIN_DIALOG_H+70, 0x34, sc.work, title, 0);
  62.                         GetProcessInfo(#Dialog_Form, SelfInfo);
  63.                         DrawCaptButton(WIN_DIALOG_W-PR_LEFT-101, PR_TOP+PR_H+6, 100,26, 2,
  64.                                 sc.button, sc.button_text, T_ABORT_WINDOW_BUTTON);
  65.  
  66.                         if (copy_state == FILE_EXISTS)
  67.                         {
  68.                                 WriteText(WIN_DIALOG_W-PR_LEFT-301, PR_TOP+PR_H+46, 0x90, sc.work_text, "File exists!!");
  69.                                 DrawCaptButton(WIN_DIALOG_W-PR_LEFT-301, PR_TOP+PR_H+76, 100,26, 3,
  70.                                         sc.button, sc.button_text, T_REPLACE_WINDOW_BUTTON);
  71.                                 DrawCaptButton(WIN_DIALOG_W-PR_LEFT-101, PR_TOP+PR_H+76, 100,26, 4,
  72.                                         sc.button, sc.button_text, T_SKIP_WINDOW_BUTTON);
  73.                         }
  74.  
  75.                         DrawRectangle3D(PR_LEFT-1, PR_TOP-1, PR_W+1, PR_H+1, sc.work_dark, sc.work_light);
  76.         }
  77. }
  78.  
  79. void DialogExit() {
  80.         ActivateWindow(GetProcessSlot(Form.ID));
  81.         ExitProcess();
  82. }
  83.  
  84. void Operation_Draw_Progress(dword filename) {
  85.         if (Dialog_Form.cwidth==0)
  86.         {
  87.                 copy_bar.value++;
  88.                 return;
  89.         }
  90.         DisplayOperationForm(REDRAW_FLAG);
  91.         DrawBar(PR_LEFT, PR_TOP-20, WIN_DIALOG_W-PR_LEFT, 15, sc.work);
  92.         WriteText(PR_LEFT, PR_TOP-20, 0x90, sc.work_text, filename);
  93.  
  94.         progressbar_draw stdcall (#copy_bar);
  95.         if (copy_state == FILE_DEFAULT)
  96.         {
  97.                 progressbar_progress stdcall (#copy_bar);
  98.         }
  99.  
  100.         WriteTextWithBg(PR_LEFT, PR_TOP+PR_H+5, 0xD0, sc.work_text,
  101.                 sprintf(#param, "%i/%i", copy_bar.value, copy_bar.max), sc.work);
  102. }