QTfrontend/itemNum.cpp
changeset 4412 c9a78ba03679
parent 2377 f3fab2b09e0c
child 4416 29d2d1548387
equal deleted inserted replaced
4411:79fbc444584c 4412:c9a78ba03679
    20 #include "hwform.h"
    20 #include "hwform.h"
    21 
    21 
    22 #include <QMouseEvent>
    22 #include <QMouseEvent>
    23 #include <QPainter>
    23 #include <QPainter>
    24 
    24 
    25 ItemNum::ItemNum(const QImage& im, QWidget * parent, unsigned char min, unsigned char max) :
    25 ItemNum::ItemNum(const QImage& im, const QImage& img, QWidget * parent, unsigned char min, unsigned char max) :
    26   QFrame(parent), m_im(im), infinityState(false), nonInteractive(false), minItems(min), maxItems(max),
    26   QFrame(parent), m_im(im), m_img(img), infinityState(false), nonInteractive(false), minItems(min), maxItems(max),
    27   numItems(min+2 >= max ? min : min+2)
    27   numItems(min+2 >= max ? min : min+2)
    28 {
    28 {
       
    29     enabled = true;
    29     if(frontendEffects) setAttribute(Qt::WA_PaintOnScreen, true);
    30     if(frontendEffects) setAttribute(Qt::WA_PaintOnScreen, true);
    30 }
    31 }
    31 
    32 
    32 ItemNum::~ItemNum()
    33 ItemNum::~ItemNum()
    33 {
    34 {
    34 }
    35 }
    35 
    36 
    36 void ItemNum::mousePressEvent ( QMouseEvent * event )
    37 void ItemNum::mousePressEvent ( QMouseEvent * event )
    37 {
    38 {
    38   if(nonInteractive) return;
    39   if(nonInteractive) return;
    39   if(event->button()==Qt::LeftButton) {
    40   if(event->button()==Qt::LeftButton && enabled) {
    40     event->accept();
    41     event->accept();
    41     if((infinityState && numItems <= maxItems) || (!infinityState && numItems < maxItems)) {
    42     if((infinityState && numItems <= maxItems) || (!infinityState && numItems < maxItems)) {
    42       incItems();
    43       incItems();
    43     } else {
    44     } else {
    44       numItems = minItems+1;
    45       numItems = minItems+1;
    45       // appears there's an emit in there
    46       // appears there's an emit in there
    46       decItems();
    47       decItems();
    47     }
    48     }
    48   } else if (event->button()==Qt::RightButton) {
    49   } else if (event->button()==Qt::RightButton && enabled) {
    49     event->accept();
    50     event->accept();
    50     if(numItems > minItems) {
    51     if(numItems > minItems) {
    51       decItems();
    52       decItems();
    52     } else {
    53     } else {
    53       numItems = maxItems+(infinityState?0:-1);
    54       numItems = maxItems+(infinityState?0:-1);
    69 {
    70 {
    70   QPainter painter(this);
    71   QPainter painter(this);
    71 
    72 
    72   if (numItems==maxItems+1) {
    73   if (numItems==maxItems+1) {
    73     QRect target(0, 0, 100, 32);
    74     QRect target(0, 0, 100, 32);
    74     painter.drawImage(target, QImage(":/res/infinity.png"));
    75     if (enabled) {
       
    76         painter.drawImage(target, QImage(":/res/infinity.png"));
       
    77     } else {
       
    78         painter.drawImage(target, QImage(":/res/infinitygrey.png"));
       
    79     }
    75   } else {
    80   } else {
    76     for(int i=0; i<numItems; i++) {
    81     for(int i=0; i<numItems; i++) {
    77       QRect target(11 * i, i % 2, 25, 35);
    82       QRect target(11 * i, i % 2, 25, 35);
    78       painter.drawImage(target, m_im);
    83       if (enabled) {
       
    84         painter.drawImage(target, m_im);
       
    85       } else {
       
    86         painter.drawImage(target, m_img);
       
    87       }
    79     }
    88     }
    80   }
    89   }
    81 }
    90 }
    82 
    91 
    83 unsigned char ItemNum::getItemsNum() const
    92 unsigned char ItemNum::getItemsNum() const
    86 }
    95 }
    87 
    96 
    88 void ItemNum::setItemsNum(const unsigned char num)
    97 void ItemNum::setItemsNum(const unsigned char num)
    89 {
    98 {
    90   numItems=num;
    99   numItems=num;
       
   100   repaint();
    91 }
   101 }
    92 
   102 
    93 void ItemNum::setInfinityState(bool value)
   103 void ItemNum::setInfinityState(bool value)
    94 {
   104 {
    95   infinityState=value;
   105   infinityState=value;
    96 }
   106 }
       
   107 
       
   108 void ItemNum::setEnabled(bool value)
       
   109 {
       
   110   enabled=value;
       
   111 }