QTfrontend/ui/widget/itemNum.cpp
changeset 6616 f77bb02b669f
parent 6428 2d2b5e3c59a7
child 6700 e04da46ee43c
equal deleted inserted replaced
6615:65602f1ef0f8 6616:f77bb02b669f
    21 
    21 
    22 #include <QMouseEvent>
    22 #include <QMouseEvent>
    23 #include <QPainter>
    23 #include <QPainter>
    24 
    24 
    25 ItemNum::ItemNum(const QImage& im, const QImage& img, 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), m_img(img), 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     enabled = true;
    30     //if(frontendEffects) setAttribute(Qt::WA_PaintOnScreen, true);
    30     //if(frontendEffects) setAttribute(Qt::WA_PaintOnScreen, true);
    31 }
    31 }
    32 
    32 
    34 {
    34 {
    35 }
    35 }
    36 
    36 
    37 void ItemNum::mousePressEvent ( QMouseEvent * event )
    37 void ItemNum::mousePressEvent ( QMouseEvent * event )
    38 {
    38 {
    39   if(nonInteractive) return;
    39     if(nonInteractive) return;
    40   if(event->button()==Qt::LeftButton && enabled) {
    40     if(event->button()==Qt::LeftButton && enabled)
    41     event->accept();
    41     {
    42     if((infinityState && numItems <= maxItems) || (!infinityState && numItems < maxItems)) {
    42         event->accept();
    43       incItems();
    43         if((infinityState && numItems <= maxItems) || (!infinityState && numItems < maxItems))
    44     } else {
    44         {
    45       numItems = minItems+1;
    45             incItems();
    46       // appears there's an emit in there
    46         }
    47       decItems();
    47         else
       
    48         {
       
    49             numItems = minItems+1;
       
    50             // appears there's an emit in there
       
    51             decItems();
       
    52         }
    48     }
    53     }
    49   } else if (event->button()==Qt::RightButton && enabled) {
    54     else if (event->button()==Qt::RightButton && enabled)
    50     event->accept();
    55     {
    51     if(numItems > minItems) {
    56         event->accept();
    52       decItems();
    57         if(numItems > minItems)
    53     } else {
    58         {
    54       numItems = maxItems+(infinityState?0:-1);
    59             decItems();
    55       incItems();
    60         }
       
    61         else
       
    62         {
       
    63             numItems = maxItems+(infinityState?0:-1);
       
    64             incItems();
       
    65         }
    56     }
    66     }
    57   } else {
    67     else
    58     event->ignore();
    68     {
    59     return;
    69         event->ignore();
    60   }
    70         return;
    61   repaint();
    71     }
       
    72     repaint();
    62 }
    73 }
    63 void ItemNum::wheelEvent ( QWheelEvent * event )
    74 void ItemNum::wheelEvent ( QWheelEvent * event )
    64 {
    75 {
    65     if (nonInteractive) return;
    76     if (nonInteractive) return;
    66     if (!enabled)
    77     if (!enabled)
    84     else
    95     else
    85     {
    96     {
    86         if(numItems > minItems)
    97         if(numItems > minItems)
    87             decItems();
    98             decItems();
    88     }
    99     }
    89   repaint();
   100     repaint();
    90 }
   101 }
    91 
   102 
    92 QSize ItemNum::sizeHint () const
   103 QSize ItemNum::sizeHint () const
    93 {
   104 {
    94   return QSize((maxItems+1)*12, 32);
   105     return QSize((maxItems+1)*12, 32);
    95 }
   106 }
    96 
   107 
    97 void ItemNum::paintEvent(QPaintEvent* event)
   108 void ItemNum::paintEvent(QPaintEvent* event)
    98 {
   109 {
    99   Q_UNUSED(event);
   110     Q_UNUSED(event);
   100 
   111 
   101   QPainter painter(this);
   112     QPainter painter(this);
   102 
   113 
   103   if (numItems==maxItems+1) {
   114     if (numItems==maxItems+1)
   104     QRect target(0, 0, 100, 32);
   115     {
   105     if (enabled) {
   116         QRect target(0, 0, 100, 32);
   106         painter.drawImage(target, QImage(":/res/infinity.png"));
   117         if (enabled)
   107     } else {
   118         {
   108         painter.drawImage(target, QImage(":/res/infinitygrey.png"));
   119             painter.drawImage(target, QImage(":/res/infinity.png"));
       
   120         }
       
   121         else
       
   122         {
       
   123             painter.drawImage(target, QImage(":/res/infinitygrey.png"));
       
   124         }
   109     }
   125     }
   110   } else {
   126     else
   111     for(int i=0; i<numItems; i++) {
   127     {
   112       QRect target(11 * i, i % 2, 25, 35);
   128         for(int i=0; i<numItems; i++)
   113       if (enabled) {
   129         {
   114         painter.drawImage(target, m_im);
   130             QRect target(11 * i, i % 2, 25, 35);
   115       } else {
   131             if (enabled)
   116         painter.drawImage(target, m_img);
   132             {
   117       }
   133                 painter.drawImage(target, m_im);
       
   134             }
       
   135             else
       
   136             {
       
   137                 painter.drawImage(target, m_img);
       
   138             }
       
   139         }
   118     }
   140     }
   119   }
       
   120 }
   141 }
   121 
   142 
   122 unsigned char ItemNum::getItemsNum() const
   143 unsigned char ItemNum::getItemsNum() const
   123 {
   144 {
   124   return numItems;
   145     return numItems;
   125 }
   146 }
   126 
   147 
   127 void ItemNum::setItemsNum(const unsigned char num)
   148 void ItemNum::setItemsNum(const unsigned char num)
   128 {
   149 {
   129   numItems=num;
   150     numItems=num;
   130   repaint();
   151     repaint();
   131 }
   152 }
   132 
   153 
   133 void ItemNum::setInfinityState(bool value)
   154 void ItemNum::setInfinityState(bool value)
   134 {
   155 {
   135   infinityState=value;
   156     infinityState=value;
   136 }
   157 }
   137 
   158 
   138 void ItemNum::setEnabled(bool value)
   159 void ItemNum::setEnabled(bool value)
   139 {
   160 {
   140   enabled=value;
   161     enabled=value;
   141   repaint();
   162     repaint();
   142 }
   163 }