QTfrontend/itemNum.cpp
branchexperimental3D
changeset 4812 f924be23ffb4
parent 4560 5d6c7f88db73
child 4976 088d40d8aba2
equal deleted inserted replaced
4347:0ddb100fea61 4812:f924be23ffb4
    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);
    65   return QSize((maxItems+1)*12, 32);
    66   return QSize((maxItems+1)*12, 32);
    66 }
    67 }
    67 
    68 
    68 void ItemNum::paintEvent(QPaintEvent* event)
    69 void ItemNum::paintEvent(QPaintEvent* event)
    69 {
    70 {
       
    71   Q_UNUSED(event);
       
    72 
    70   QPainter painter(this);
    73   QPainter painter(this);
    71 
    74 
    72   if (numItems==maxItems+1) {
    75   if (numItems==maxItems+1) {
    73     QRect target(0, 0, 100, 32);
    76     QRect target(0, 0, 100, 32);
    74     painter.drawImage(target, QImage(":/res/infinity.png"));
    77     if (enabled) {
       
    78         painter.drawImage(target, QImage(":/res/infinity.png"));
       
    79     } else {
       
    80         painter.drawImage(target, QImage(":/res/infinitygrey.png"));
       
    81     }
    75   } else {
    82   } else {
    76     for(int i=0; i<numItems; i++) {
    83     for(int i=0; i<numItems; i++) {
    77       QRect target(11 * i, i % 2, 25, 35);
    84       QRect target(11 * i, i % 2, 25, 35);
    78       painter.drawImage(target, m_im);
    85       if (enabled) {
       
    86         painter.drawImage(target, m_im);
       
    87       } else {
       
    88         painter.drawImage(target, m_img);
       
    89       }
    79     }
    90     }
    80   }
    91   }
    81 }
    92 }
    82 
    93 
    83 unsigned char ItemNum::getItemsNum() const
    94 unsigned char ItemNum::getItemsNum() const
    86 }
    97 }
    87 
    98 
    88 void ItemNum::setItemsNum(const unsigned char num)
    99 void ItemNum::setItemsNum(const unsigned char num)
    89 {
   100 {
    90   numItems=num;
   101   numItems=num;
       
   102   repaint();
    91 }
   103 }
    92 
   104 
    93 void ItemNum::setInfinityState(bool value)
   105 void ItemNum::setInfinityState(bool value)
    94 {
   106 {
    95   infinityState=value;
   107   infinityState=value;
    96 }
   108 }
       
   109 
       
   110 void ItemNum::setEnabled(bool value)
       
   111 {
       
   112   enabled=value;
       
   113   repaint();
       
   114 }