ganeswidgets/src/hgwidgets_p.cpp
changeset 14 645b870db620
parent 12 6c0ec0ccd2d4
child 17 a10844a9914d
equal deleted inserted replaced
12:6c0ec0ccd2d4 14:645b870db620
    24 #include "hgcontainer.h"
    24 #include "hgcontainer.h"
    25 #include "hgcoverflowcontainer.h"
    25 #include "hgcoverflowcontainer.h"
    26 #include "hgscrollbuffermanager.h"
    26 #include "hgscrollbuffermanager.h"
    27 #include "hgwidgetitem.h"
    27 #include "hgwidgetitem.h"
    28 #include "trace.h"
    28 #include "trace.h"
    29 //#include "hgindexfeedback.h"
    29 #include "hgindexfeedback.h"
    30 
    30 
    31 static const int INITIAL_SCROLLBAR_HIDE_TIMEOUT(4000);
    31 static const int INITIAL_SCROLLBAR_HIDE_TIMEOUT(4000);
    32 static const int DEFAULT_BUFFER_SIZE(25);
    32 static const int DEFAULT_BUFFER_SIZE(25);
    33 
    33 
    34 HgWidgetPrivate::HgWidgetPrivate() :
    34 HgWidgetPrivate::HgWidgetPrivate() :
    38     mDefaultSelectionModel(0),
    38     mDefaultSelectionModel(0),
    39     mScrollBar(0),
    39     mScrollBar(0),
    40     mAbleToScroll(false),
    40     mAbleToScroll(false),
    41     mHandleLongPress(false),
    41     mHandleLongPress(false),
    42     mBufferSize(DEFAULT_BUFFER_SIZE),
    42     mBufferSize(DEFAULT_BUFFER_SIZE),
    43     mStaticScrollDirection(false)
    43     mStaticScrollDirection(false),
       
    44     mIndexFeedback(0),
       
    45     mIndexFeedbackPolicy(HgWidget::IndexFeedbackNone)
    44 {
    46 {
    45     FUNC_LOG;
    47     FUNC_LOG;
    46 }
    48 }
    47 
    49 
    48 HgWidgetPrivate::~HgWidgetPrivate()
    50 HgWidgetPrivate::~HgWidgetPrivate()
    61 
    63 
    62     mScrollBarHideTimer = new QTimer();
    64     mScrollBarHideTimer = new QTimer();
    63     mScrollBarHideTimer->setSingleShot(true);
    65     mScrollBarHideTimer->setSingleShot(true);
    64 
    66 
    65     q->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
    67     q->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
    66     q->setFlag( QGraphicsItem::ItemClipsChildrenToShape, true );
       
    67     q->setFocusPolicy(Qt::StrongFocus);
    68     q->setFocusPolicy(Qt::StrongFocus);
    68 
    69 
    69     createScrollBar(container->scrollDirection());
    70     createScrollBar(container->scrollDirection());
    70 
    71 
    71     //QObject::connect(&(mScrollBarHideTimer), SIGNAL(timeout()), q, SLOT(_q_hideScrollBars()));
    72     //QObject::connect(&(mScrollBarHideTimer), SIGNAL(timeout()), q, SLOT(_q_hideScrollBars()));
    84     q->connect(mContainer, SIGNAL(scrollingEnded()), q, SIGNAL(scrollingEnded()));
    85     q->connect(mContainer, SIGNAL(scrollingEnded()), q, SIGNAL(scrollingEnded()));
    85     q->connect(mScrollBarHideTimer, SIGNAL(timeout()), q, SLOT(_q_hideScrollBars()));
    86     q->connect(mScrollBarHideTimer, SIGNAL(timeout()), q, SLOT(_q_hideScrollBars()));
    86     q->connect( HbTheme::instance(), SIGNAL(changed()), q, SLOT(_q_themeChanged()));
    87     q->connect( HbTheme::instance(), SIGNAL(changed()), q, SLOT(_q_themeChanged()));
    87     
    88     
    88     mContainer->setHandleLongPress(mHandleLongPress);
    89     mContainer->setHandleLongPress(mHandleLongPress);
    89     
       
    90 //    mIndexFeedback = new HgIndexFeedback(q);
       
    91 //    mIndexFeedback->setWidget(q);
       
    92 
       
    93 }
    90 }
    94 
    91 
    95 void HgWidgetPrivate::setModel( QAbstractItemModel *model )
    92 void HgWidgetPrivate::setModel( QAbstractItemModel *model )
    96 {
    93 {
    97     FUNC_LOG;
    94     FUNC_LOG;
   141             mContainer->setSelectionModel(selectionModel, defaultItem);
   138             mContainer->setSelectionModel(selectionModel, defaultItem);
   142             delete oldSelectionModel;
   139             delete oldSelectionModel;
   143         }
   140         }
   144 
   141 
   145         if (mContainer->selectionModel()) {
   142         if (mContainer->selectionModel()) {
   146 //            if (mIndexFeedback) {
   143             // TODO, optimize this, do we really need to destroy the instance.
   147 //                delete mIndexFeedback;
   144             if (mIndexFeedback) {
   148 //                mIndexFeedback = 0;
   145                 delete mIndexFeedback;
   149 //            }
   146                 mIndexFeedback = 0;
   150 //            mIndexFeedback = new HgIndexFeedback(q);
   147             }
   151 //            mIndexFeedback->setWidget(q);
   148             if (mIndexFeedbackPolicy != HgWidget::IndexFeedbackNone) {
   152 
   149                 mIndexFeedback = new HgIndexFeedback(q);
       
   150                 mIndexFeedback->setWidget(q);
       
   151                 mIndexFeedback->setIndexFeedbackPolicy(mIndexFeedbackPolicy);
       
   152             }
   153         }
   153         }
   154     }
   154     }
   155 }
   155 }
   156 
   156 
   157 QItemSelectionModel *HgWidgetPrivate::selectionModel() const
   157 QItemSelectionModel *HgWidgetPrivate::selectionModel() const
   671             !mContainer ||
   671             !mContainer ||
   672             scrollAreaBoundingRect == mContainer->boundingRect() )
   672             scrollAreaBoundingRect == mContainer->boundingRect() )
   673         return;
   673         return;
   674 
   674 
   675     mContainer->resize(scrollAreaBoundingRect.size());
   675     mContainer->resize(scrollAreaBoundingRect.size());
   676 
   676     
   677     updateScrollMetrics(mContainer->scrollPosition());
   677     updateScrollMetrics(mContainer->scrollPosition());
   678 }
   678 }
   679 
   679 
   680 
   680 
   681 void HgWidgetPrivate::lostForeground()
   681 void HgWidgetPrivate::lostForeground()
   763 }
   763 }
   764 
   764 
   765 void HgWidgetPrivate::setIndexFeedbackPolicy( HgWidget::IndexFeedbackPolicy policy)
   765 void HgWidgetPrivate::setIndexFeedbackPolicy( HgWidget::IndexFeedbackPolicy policy)
   766 {
   766 {
   767     Q_UNUSED(policy)
   767     Q_UNUSED(policy)
   768 //    mIndexFeedback->setIndexFeedbackPolicy(policy);
   768     Q_Q(HgWidget);
       
   769     mIndexFeedbackPolicy = policy;
       
   770     if (!mIndexFeedback && policy != HgWidget::IndexFeedbackNone) {
       
   771         mIndexFeedback = new HgIndexFeedback(q);
       
   772         mIndexFeedback->setWidget(q);
       
   773     } else if (mIndexFeedback && policy == HgWidget::IndexFeedbackNone) {
       
   774         delete mIndexFeedback;
       
   775         mIndexFeedback = 0;
       
   776     }
       
   777     
       
   778     if (mIndexFeedback && policy != HgWidget::IndexFeedbackNone) {
       
   779         mIndexFeedback->setIndexFeedbackPolicy(policy);
       
   780     }
   769 }
   781 }
   770 
   782 
   771 HgWidget::IndexFeedbackPolicy HgWidgetPrivate::indexFeedbackPolicy() const
   783 HgWidget::IndexFeedbackPolicy HgWidgetPrivate::indexFeedbackPolicy() const
   772 {
   784 {    
   773 //    return mIndexFeedback->indexFeedbackPolicy();
   785     return mIndexFeedback ? mIndexFeedback->indexFeedbackPolicy() :
   774     return HgWidget::IndexFeedbackNone;
   786         HgWidget::IndexFeedbackNone;
   775 }
   787 }
   776 
   788 
   777 void HgWidgetPrivate::setDefaultImage(QImage defaultImage)
   789 void HgWidgetPrivate::setDefaultImage(QImage defaultImage)
   778 {
   790 {
   779     mContainer->setDefaultImage(defaultImage);
   791     mContainer->setDefaultImage(defaultImage);