Subversion Repositories Kolibri OS

Rev

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

  1.  
  2. #define COPYFORM_W 380
  3. #define COPYFORM_H 100
  4. #define PR_LEFT 14
  5. #define PR_TOP  32
  6. #define PR_W  COPYFORM_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. checkbox remember_choice = { T_COPY_REMEMBER_CHOICE, false };
  12.  
  13. enum {
  14.         REDRAW_FLAG,
  15.         COPY_FLAG,
  16.         MOVE_FLAG,
  17.         DELETE_FLAG,
  18. };
  19.  
  20. enum {
  21.         BTN_ABORT=2,
  22.         BTN_REPLACE,
  23.         BTN_SKIP
  24. };
  25.  
  26. void DisplayOperationForm(int operation_flag)
  27. {
  28.         dword title;
  29.         dword event_mode;
  30.         if (operation_flag==COPY_FLAG) {
  31.                 title = T_COPY_WINDOW_TITLE;
  32.                 copy_bar.progress_color = 0x00FF00;
  33.                 copy_bar.value = 0;
  34.                 copy_bar.max = 0;
  35.         }
  36.         else if (operation_flag==MOVE_FLAG) {
  37.                 title = T_MOVE_WINDOW_TITLE;
  38.                 copy_bar.progress_color = 0x00FF00;
  39.                 copy_bar.value = 0;
  40.                 copy_bar.max = 0;
  41.         }
  42.         else if (operation_flag==DELETE_FLAG) {
  43.                 title = T_DELETE_WINDOW_TITLE;
  44.                 copy_bar.progress_color = 0xF17A65;
  45.                 copy_bar.value = 0;
  46.                 copy_bar.max = 0;
  47.         }
  48.         copy_bar.frame_color = sc.work_graph;
  49.        
  50.         if (copy_state == FILE_EXISTS) event_mode = #WaitEvent;
  51.         else event_mode = #CheckEvent;
  52.         event_mode();
  53.         switch(EAX)
  54.         {
  55.                  case evButton:
  56.                         switch(GetButtonID())
  57.                         {
  58.                                 case 1:
  59.                                 case BTN_ABORT:
  60.                                         DialogExit();
  61.                                         break;
  62.                                 case BTN_REPLACE:
  63.                                         if (is_remember == true) {
  64.                                                 saved_state = FILE_REPLACE;
  65.                                         }
  66.                                         copy_state = FILE_REPLACE;
  67.                                         break;
  68.                                 case BTN_SKIP:
  69.                                         if (is_remember == true) {
  70.                                                 saved_state = FILE_SKIP;
  71.                                         }
  72.                                         copy_state = FILE_SKIP;
  73.                                         break;
  74.                                 default:
  75.                                         if (remember_choice.click(EAX+1)) {
  76.                                                 is_remember = remember_choice.checked;
  77.                                         }
  78.                                         break;
  79.                         }
  80.                         break;
  81.                 case evReDraw:
  82.                         DefineAndDrawWindow(Form.left+Form.width-200, Form.top+90, COPYFORM_W+9,
  83.                                 skin_height+COPYFORM_H, 0x34, sc.work, title, 0);
  84.                         GetProcessInfo(#Dialog_Form, SelfInfo);
  85.                         DrawCaptButton(COPYFORM_W-PR_LEFT-101, PR_TOP+PR_H+6, 100,26, BTN_ABORT, sc.button, sc.button_text, T_COPY_ABORT);
  86.  
  87.                         if (copy_state == FILE_EXISTS)
  88.                         {
  89.                                 #define REPLACEY PR_TOP+PR_H+48
  90.                                 draw_icon_16w(PR_LEFT, REPLACEY-3, 20);
  91.                                 WriteText(PR_LEFT+25, REPLACEY, 0x90, sc.work_text, T_OVERWRITE_ALERT);
  92.                                 DrawCaptButton(PR_LEFT, REPLACEY+30, 100,26, BTN_REPLACE, sc.button, sc.button_text, T_COPY_REPLACE);
  93.                                 DrawCaptButton(PR_LEFT+110, REPLACEY+30, 100,26, BTN_SKIP, sc.button, sc.button_text, T_COPY_SKIP);
  94.                                 remember_choice.draw(PR_LEFT+225, REPLACEY+37);
  95.                         }
  96.  
  97.                         DrawRectangle3D(PR_LEFT-1, PR_TOP-1, PR_W+1, PR_H+1, sc.work_dark, sc.work_light);
  98.         }
  99. }
  100.  
  101. void DialogExit() {
  102.         ActivateWindow(GetProcessSlot(Form.ID));
  103.         ExitProcess();
  104. }
  105.  
  106. void Operation_Draw_Progress(dword filename) {
  107.         static int old_state;
  108.         if (Dialog_Form.cwidth==0)
  109.         {
  110.                 copy_bar.value++;
  111.                 return;
  112.         }
  113.  
  114.         if (old_state != copy_state) {
  115.                 old_state = copy_state;
  116.                 if (copy_state == FILE_EXISTS) MoveSize(OLD,OLD,OLD,skin_height+COPYFORM_H+70);
  117.                 if (copy_state == FILE_DEFAULT) MoveSize(OLD,OLD,OLD,skin_height+COPYFORM_H);
  118.         }
  119.  
  120.         DisplayOperationForm(REDRAW_FLAG);
  121.  
  122.         progressbar_draw stdcall (#copy_bar);
  123.         if (copy_state == FILE_DEFAULT)
  124.         {
  125.                 DrawBar(PR_LEFT, PR_TOP-20, COPYFORM_W-PR_LEFT, 15, sc.work);
  126.                 progressbar_progress stdcall (#copy_bar);
  127.         }
  128.         WriteTextWithBg(PR_LEFT, PR_TOP-20, 0xD0, sc.work_text, filename, sc.work);
  129.  
  130.         WriteTextWithBg(PR_LEFT, PR_TOP+PR_H+5, 0xD0, sc.work_text,
  131.                 sprintf(#param, "%i/%i", copy_bar.value, copy_bar.max), sc.work);
  132. }