Subversion Repositories Kolibri OS

Rev

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

  1. :struct more_less_box
  2. {
  3.         unsigned value, min, max;
  4.         dword text;
  5.         int click_delta;
  6.         int x,y;
  7.         unsigned id_inc, id_dec;
  8.         bool disabled;
  9.         void check_values();
  10.         bool click();
  11.         bool inc();
  12.         bool dec();
  13.         void draw();
  14.         void redraw();
  15. };
  16.  
  17. :void more_less_box::check_values()
  18. {
  19.         if (!id_inc) id_inc = GetFreeButtonId();
  20.         if (!id_dec) id_dec = GetFreeButtonId();
  21.         if (!click_delta) click_delta = 1;
  22. }
  23.  
  24. :bool more_less_box::click(unsigned id)
  25. {
  26.         if (id==id_dec) { value = math.max(value-click_delta, min); redraw(); return 1; }
  27.         if (id==id_inc) { value = math.min(value+click_delta, max); redraw(); return 1; }
  28.         return 0;
  29. }
  30.  
  31. :bool more_less_box::inc()
  32. {
  33.         click(id_inc);
  34. }
  35.  
  36. :bool more_less_box::dec()
  37. {
  38.         click(id_dec);
  39. }
  40.  
  41. :void more_less_box::draw(dword _x,_y)
  42. {
  43.         #define VALUE_FIELD_W 34
  44.         #define SIZE 18
  45.         dword text_col = system.color.work_text;
  46.         dword value_text = itoa(value);
  47.  
  48.         check_values();
  49.         x=_x; y=_y;
  50.  
  51.         DrawRectangle(x, y, VALUE_FIELD_W+1, SIZE, system.color.work_graph);
  52.         DrawRectangle3D(x+1, y+1, VALUE_FIELD_W-2, SIZE-2, 0xDDDddd, 0xffffff);
  53.  
  54.         if (disabled)
  55.         {
  56.                 DrawRectangle(x+1, y+1, VALUE_FIELD_W-2, SIZE-2, 0xffffff);
  57.                 DrawBar(x+2, y+2, VALUE_FIELD_W-3, SIZE-3, 0xCCCccc);
  58.                 text_col = MixColors(system.color.work, system.color.work_text, 128);
  59.         }
  60.         else
  61.         {
  62.                 DrawBar(x+2, y+2, VALUE_FIELD_W-3, SIZE-3, 0xffffff);
  63.         }
  64.  
  65.         WriteText( -strlen(value_text)+3*8 + x+6, SIZE / 2 + y -6, 0x90, 0x333333, value_text);
  66.  
  67.         DrawCaptButton(VALUE_FIELD_W + x + 1,    y, SIZE, SIZE, id_inc, system.color.work_button, system.color.work_button_text, "+");
  68.         DrawCaptButton(VALUE_FIELD_W + x + SIZE, y, SIZE, SIZE, id_dec, system.color.work_button, system.color.work_button_text, "-");
  69.         WriteTextWithBg(x+VALUE_FIELD_W+SIZE+SIZE+10, SIZE / 2 + y -7, 0xD0, text_col, text, system.color.work);
  70.         DrawRectangle3D(x-1,y-1,VALUE_FIELD_W+SIZE+SIZE+2,SIZE+2,system.color.work_dark,system.color.work_light);
  71. }
  72.  
  73. :void more_less_box::redraw()
  74. {
  75.         draw(x,y);
  76. }
  77.  
  78.