src/hbcore/gui/hbbackgrounditem.cpp
changeset 21 4633027730f5
parent 7 923ff622b8b9
equal deleted inserted replaced
7:923ff622b8b9 21:4633027730f5
    40     \brief Draws the background.
    40     \brief Draws the background.
    41 
    41 
    42     \internal
    42     \internal
    43 */
    43 */
    44 
    44 
    45 HbBackgroundItem::HbBackgroundItem(HbMainWindow *mainWindow, QGraphicsWidget *parent) :
    45 HbBackgroundItem::HbBackgroundItem(HbMainWindow *mainWindow, QGraphicsWidget *parent)
    46     HbWidget(parent),
    46     : HbWidgetBase(parent),
    47     mMainWindow(mainWindow),
    47       mMainWindow(mainWindow),
    48     mImageMode(Hb::ScaleBackgroundToFit)
    48       mImageMode(Hb::ScaleBackgroundToFit)
    49 {
    49 {
    50     setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
    50     setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
       
    51 
       
    52     // paint() will be called from HbMainWindow's drawBackground (which is more
       
    53     // efficient due to the clipping it sets) so do not let the graphicsview
       
    54     // call it directly.
       
    55     setFlag(QGraphicsItem::ItemHasNoContents, true);
       
    56 
    51     mPrtImageName = defaultImageName(Qt::Vertical);
    57     mPrtImageName = defaultImageName(Qt::Vertical);
    52     mLscImageName = defaultImageName(Qt::Horizontal);
    58     mLscImageName = defaultImageName(Qt::Horizontal);
    53     updateBackgroundImage();
    59     updateBackgroundImage();
    54 }
       
    55 
       
    56 HbBackgroundItem::~HbBackgroundItem()
       
    57 {
       
    58 }
    60 }
    59 
    61 
    60 void HbBackgroundItem::setImageName(Qt::Orientation orientation, const QString &name)
    62 void HbBackgroundItem::setImageName(Qt::Orientation orientation, const QString &name)
    61 {
    63 {
    62     bool changed = false;
    64     bool changed = false;
   101     return mImageMode;
   103     return mImageMode;
   102 }
   104 }
   103 
   105 
   104 void HbBackgroundItem::updateBackgroundImage()
   106 void HbBackgroundItem::updateBackgroundImage()
   105 {
   107 {
   106     prepareGeometryChange();
       
   107     if (mMainWindow) {
   108     if (mMainWindow) {
   108         QSizeF size(HbDeviceProfile::profile(mMainWindow).logicalSize());
   109         QSizeF size(HbDeviceProfile::profile(mMainWindow).logicalSize());
   109         mBoundingRect.setWidth(size.width());
   110         mBoundingRect.setWidth(size.width());
   110         mBoundingRect.setHeight(size.height());
   111         mBoundingRect.setHeight(size.height());
   111         if (mMainWindow->orientation() == Qt::Vertical) {
   112         if (mMainWindow->orientation() == Qt::Vertical) {
   120                     || (imageSize.width() <= size.width() && imageSize.height() <= size.height())) {
   121                     || (imageSize.width() <= size.width() && imageSize.height() <= size.height())) {
   121                 size = imageSize;
   122                 size = imageSize;
   122             }
   123             }
   123         }
   124         }
   124         mBackground.setSize(size);
   125         mBackground.setSize(size);
       
   126         if (mMainWindow->scene()) {
       
   127             mMainWindow->scene()->invalidate(boundingRect());
       
   128         }
   125     }
   129     }
   126 }
   130 }
   127 
   131 
   128 void HbBackgroundItem::resizeEvent(QGraphicsSceneResizeEvent *event)
   132 void HbBackgroundItem::resizeEvent(QGraphicsSceneResizeEvent *event)
   129 {
   133 {
   130     HbWidget::resizeEvent(event);
   134     HbWidgetBase::resizeEvent(event);
   131 
   135 
   132     // RnD feature for resizing the window by dragging
   136     // RnD feature for resizing the window by dragging
   133     if (HbMainWindowPrivate::dragToResizeEnabled) {
   137     if (HbMainWindowPrivate::dragToResizeEnabled) {
   134         prepareGeometryChange();
       
   135         if (mMainWindow) {
   138         if (mMainWindow) {
   136             QSizeF size(event->newSize());
   139             QSizeF size(event->newSize());
   137             mBoundingRect.setWidth(size.width());
   140             mBoundingRect.setWidth(size.width());
   138             mBoundingRect.setHeight(size.height());
   141             mBoundingRect.setHeight(size.height());
   139             mBackground.setSize(size);
   142             mBackground.setSize(size);
       
   143             if (mMainWindow->scene()) {
       
   144                 mMainWindow->scene()->invalidate(mBoundingRect);
       
   145             }
   140         }
   146         }
   141     }
   147     }
   142 }
   148 }
   143 
   149 
   144 bool HbBackgroundItem::event(QEvent *e)
   150 bool HbBackgroundItem::event(QEvent *e)
   145 {
   151 {
   146     if (e->type() == QEvent::Polish) {
   152     if (e->type() == HbEvent::DeviceProfileChanged) {
   147         // No need for any real polishing.
   153         updateBackgroundImage();
   148         static_cast<HbWidgetPrivate *>(d_ptr)->polished = true;
   154     } else if (e->type() == QEvent::FontChange ||
       
   155                e->type() == QEvent::PaletteChange ||
       
   156                e->type() == QEvent::ParentChange ||
       
   157                e->type() == QEvent::Polish) {
   149         return true;
   158         return true;
   150     } else if (e->type() == HbEvent::DeviceProfileChanged) {
       
   151         updateBackgroundImage();
       
   152     }
   159     }
   153     return HbWidget::event(e);
   160     return HbWidgetBase::event(e);
   154 }
   161 }
   155 
   162 
   156 QRectF HbBackgroundItem::boundingRect() const
   163 QRectF HbBackgroundItem::boundingRect() const
   157 {
   164 {
   158     return mBoundingRect;
   165     return mBoundingRect;