diff -r f291796e213d -r fb37077c270f ui/views/gridview/src/glxgridview.cpp --- a/ui/views/gridview/src/glxgridview.cpp Tue Jul 06 14:16:16 2010 +0300 +++ b/ui/views/gridview/src/glxgridview.cpp Wed Aug 18 09:48:53 2010 +0300 @@ -30,6 +30,9 @@ #include #include #include +#include +#include +#include //User Includes #include "glxviewids.h" @@ -38,6 +41,8 @@ #include "glxcommandhandlers.hrh" #include "glxicondefs.h" #include "glxlocalisationstrings.h" +#include "glxsettinginterface.h" + #include "OstTraceDefinitions.h" #ifdef OST_TRACE_COMPILER_IN_USE @@ -51,21 +56,31 @@ mWidget(NULL), mSelectionModel(NULL), mModelWrapper(NULL), - mUiOnButton(NULL), - mCameraButton(NULL), + mUiOnButton(NULL), mScrolling(FALSE), mIconItem(NULL), mMarkCheckBox(NULL), - mCountItem(NULL), - mMainLabel(NULL), - mCountLabel(NULL), + mTotalImagesCount(NULL), + mMarkSelectHeading(NULL), + mMarkCountLabel(NULL), mZeroItemLabel(NULL), - mAlbumName(NULL) + mAlbumNameHeading(NULL), + mMarkContainer(NULL), + mMarkingWidget(NULL) { OstTraceFunctionEntry0( GLXGRIDVIEW_GLXGRIDVIEW_ENTRY ); mModelWrapper = new GlxModelWrapper(); mModelWrapper->setRoles(GlxQImageSmall); mIconItem = new HbIconItem(this); + mSettings = GlxSettingInterface::instance() ; + + mUiOnButton = new HbPushButton(this); + connect(mUiOnButton, SIGNAL(clicked(bool)), this, SLOT(uiButtonClicked(bool))); + mUiOnButton->setGeometry(QRectF(590,0,40,40)); + mUiOnButton->setZValue(1); + mUiOnButton->setIcon(HbIcon(GLXICON_WALL_UI_ON)); + mUiOnButton->setObjectName( "UiOn Button" ); + OstTraceFunctionExit0( GLXGRIDVIEW_GLXGRIDVIEW_EXIT ); } @@ -74,15 +89,10 @@ OstTraceFunctionEntry0( GLXGRIDVIEW_ACTIVATE_ENTRY ); loadGridView(); connect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(orientationchanged(Qt::Orientation)),Qt::UniqueConnection); - if(mCountItem == NULL) { - mCountItem = new HbLabel(this); - mCountItem->setObjectName( "Count" ); - HbFrameItem *frame = new HbFrameItem(this); //graphics for mCountItem - frame->frameDrawer().setFrameType(HbFrameDrawer::NinePieces); - frame->frameDrawer().setFrameGraphicsName("qtg_fr_multimedia_trans"); - frame->graphicsItem()->setOpacity(1); - mCountItem->setBackgroundItem(frame->graphicsItem(),-1); - mCountItem->hide(); + if(mTotalImagesCount == NULL) { + mTotalImagesCount = new HbGroupBox(this); + mTotalImagesCount->setObjectName( "Count" ); + mTotalImagesCount->hide(); } OstTraceFunctionExit0( GLXGRIDVIEW_ACTIVATE_EXIT ); } @@ -100,24 +110,23 @@ mIconItem->setOpacity(0); mIconItem->setZValue(mIconItem->zValue()-20); } - if (mCountItem) { - mCountItem->hide(); + if (mTotalImagesCount) { + mTotalImagesCount->hide(); } - if (mAlbumName) { - mAlbumName->hide(); + if (mAlbumNameHeading) { + mAlbumNameHeading->hide(); } if(mZeroItemLabel) { mZeroItemLabel->hide(); } - if(mCameraButton) { - mCameraButton->hide(); - } + disconnect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(orientationchanged(Qt::Orientation))); OstTraceFunctionExit0( GLXGRIDVIEW_DEACTIVATE_EXIT ); } -void GlxGridView::initializeView(QAbstractItemModel *model) +void GlxGridView::initializeView( QAbstractItemModel *model, GlxView *preView ) { + Q_UNUSED( preView ) activate(); setModel(model); } @@ -140,7 +149,9 @@ connect(mModel, SIGNAL(rowsInserted(QModelIndex,int,int)), this, SLOT(showItemCount())); connect(mModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, SLOT(showItemCount())); connect(mModel, SIGNAL(destroyed()), this, SLOT( clearCurrentModel())); - connect(mModel, SIGNAL(albumTitleAvailable(QString)), this, SLOT(showAlbumTitle(QString))); + if(getSubState() == ALBUM_ITEM_S){ + connect(mModel, SIGNAL(albumTitleAvailable(QString)), this, SLOT(showAlbumTitle(QString))); + } connect(mModel, SIGNAL(populated()), this, SLOT( populated())); } } @@ -188,7 +199,7 @@ { OstTraceFunctionEntry0( GLXGRIDVIEW_ADDTOOLBAR_ENTRY ); setToolBar(toolBar); - hideorshowitems(mWindow->orientation()); + showHbItems(); OstTraceFunctionExit0( GLXGRIDVIEW_ADDTOOLBAR_EXIT ); } @@ -196,33 +207,27 @@ { OstTrace0( TRACE_NORMAL, GLXGRIDVIEW_ENABLEMARKING, "GlxGridView::enableMarking" ); mWidget->setSelectionMode(HgWidget::MultiSelection); - if (mMainLabel == NULL) { - mMainLabel = new HbLabel("Select Photos", this); - mMainLabel->setObjectName( "Select Photos"); - HbFrameItem *frame1 = new HbFrameItem(this); //graphics for mMainLabel - frame1->frameDrawer().setFrameType(HbFrameDrawer::NinePieces); - frame1->frameDrawer().setFrameGraphicsName("qtg_fr_multimedia_trans"); - frame1->graphicsItem()->setOpacity(1); - mMainLabel->setBackgroundItem(frame1->graphicsItem(),-1); - } - if (mMarkCheckBox == NULL) { - mMarkCheckBox = new HbCheckBox(GLX_OPTION_MARK_ALL, this); - mMarkCheckBox->setObjectName( "CheckB MarkAll" ); - HbFrameItem *frame2 = new HbFrameItem(this); //graphics for mMarkCheckBox - frame2->frameDrawer().setFrameType(HbFrameDrawer::NinePieces); - frame2->frameDrawer().setFrameGraphicsName("qtg_fr_multimedia_trans"); - frame2->graphicsItem()->setOpacity(1); - mMarkCheckBox->setBackgroundItem(frame2->graphicsItem(),-1); - } - if (mCountLabel == NULL) { - mCountLabel = new HbLabel(this); - mCountLabel->setObjectName( "MarkCount" ); - HbFrameItem *frame3 = new HbFrameItem(this); //graphics for mCountLabel - frame3->frameDrawer().setFrameType(HbFrameDrawer::NinePieces); - frame3->frameDrawer().setFrameGraphicsName("qtg_fr_multimedia_trans"); - frame3->graphicsItem()->setOpacity(1); - mCountLabel->setBackgroundItem(frame3->graphicsItem(),-1); - } + + if (mMarkingWidget == NULL) + { + mMarkingWidget = new HbWidget(this); + mMarkContainer = new QGraphicsLinearLayout(Qt::Horizontal, 0); + mMarkingWidget->setLayout(mMarkContainer); + + mMarkSelectHeading = new HbGroupBox(this); + mMarkSelectHeading->setHeading(GLX_SELECT_IMAGES); + mMarkSelectHeading->setObjectName("Select Photos"); + + mMarkCountLabel = new HbLabel(mMarkingWidget); + mMarkCountLabel->setObjectName("MarkCount"); + mMarkCountLabel->setAlignment(Qt::AlignRight | Qt::AlignVCenter); + + mMarkCheckBox = new HbCheckBox(GLX_LABEL_MARK_ALL, mMarkingWidget); + mMarkCheckBox->setObjectName("CheckB MarkAll"); + + mMarkContainer->addItem(mMarkCheckBox); + mMarkContainer->addItem(mMarkCountLabel); + } hideorshowitems(mWindow->orientation()); @@ -237,18 +242,16 @@ mWidget->setSelectionMode(HgWidget::NoSelection); disconnect( mWidget->selectionModel() , SIGNAL( selectionChanged(const QItemSelection &, const QItemSelection& ) ), this, SLOT( showMarkedItemCount() ) ); disconnect(mMarkCheckBox, SIGNAL( stateChanged(int) ), this, SLOT( stateChanged(int))); - if (mMainLabel) { - mMainLabel->hide(); - } - if (mMarkCheckBox) { - mMarkCheckBox->setCheckState(Qt::Unchecked); - mMarkCheckBox->hide(); - } - if (mCountLabel) { - mCountLabel->hide(); + + if (mMarkSelectHeading) { + mMarkSelectHeading->hide(); } - hideorshowitems(mWindow->orientation()); + if (mMarkingWidget) { + mMarkingWidget->hide(); + } + + showHbItems(); } void GlxGridView::stateChanged(int state) @@ -264,9 +267,10 @@ int count = mModel->rowCount(); QModelIndexList indexList = mWidget->selectionModel()->selectedIndexes(); int markItemCount = indexList.count(); - - QString text= QString("%1 / %2").arg( markItemCount ).arg( count ); - mCountLabel->setPlainText( text ); + + QString text= HbParameterLengthLimiter(GLX_LABEL_MARK_COUNT).arg(markItemCount).arg(count); + + mMarkCountLabel->setPlainText( text ); } void GlxGridView::showItemCount() @@ -281,27 +285,24 @@ if(mZeroItemLabel) { mZeroItemLabel->hide(); } - if(mCameraButton) { - mCameraButton->hide(); - } + if(isItemVisible(Hb::TitleBarItem)) { QString text; if(XQServiceUtil::isService()) { - showAlbumTitle(GLX_FETCHER_TITLE); + showAlbumTitle(GLX_SELECT_IMAGE); } else if (getSubState() == ALL_ITEM_S) { - if (mAlbumName) { - mAlbumName->hide(); + if (mAlbumNameHeading) { + mAlbumNameHeading->hide(); } - mCountItem->setGeometry(QRectF(0,0,screenSize.width(),deviceSize.height()/24)); - text = QString("%1 Items").arg( count ); - mCountItem->setPlainText( text ); - mCountItem->setAlignment(Qt::AlignLeft); - mCountItem->show(); + mTotalImagesCount->setGeometry(QRectF(0,0,screenSize.width(),deviceSize.height()/24)); + text = HbParameterLengthLimiter(GLX_GRID_VIEW_COUNT_LABEL, count); + mTotalImagesCount->setHeading ( text ); + mTotalImagesCount->show(); } else if (getSubState() == ALBUM_ITEM_S) { - mCountItem->hide(); + mTotalImagesCount->hide(); QVariant variant = mModel->data(mModel->index(0,0),GlxViewTitle); if (variant.toString() != NULL) { showAlbumTitle(variant.toString()); @@ -309,11 +310,11 @@ } } else { - if (mCountItem) { - mCountItem->hide(); + if (mTotalImagesCount) { + mTotalImagesCount->hide(); } - if (mAlbumName) { - mAlbumName->hide(); + if (mAlbumNameHeading) { + mAlbumNameHeading->hide(); } } @@ -326,11 +327,11 @@ populated = variant.value(); } if(populated) { - if (mCountItem) { - mCountItem->hide(); + if (mTotalImagesCount) { + mTotalImagesCount->hide(); } - if (mAlbumName) { - mAlbumName->hide(); + if (mAlbumNameHeading) { + mAlbumNameHeading->hide(); } showNoImageString(); @@ -352,42 +353,29 @@ QSize deviceSize = HbDeviceProfile::current().logicalSize(); QSize screenSize = ( mWindow->orientation() == Qt::Vertical ) ? QSize( deviceSize.width(), deviceSize.height() ) : QSize( deviceSize.height(), deviceSize.width() ) ; - if(mAlbumName == NULL) { - mAlbumName = new HbLabel(this); - mAlbumName->setObjectName( "Album Name" ); - HbFrameItem *frame = new HbFrameItem(this); //graphics for mAlbumName - frame->frameDrawer().setFrameType(HbFrameDrawer::NinePieces); - frame->frameDrawer().setFrameGraphicsName("qtg_fr_multimedia_trans"); - frame->graphicsItem()->setOpacity(1); - mAlbumName->setBackgroundItem(frame->graphicsItem(),-1); - } - - //If fetcher service set only title text - if((XQServiceUtil::isService() ) && isItemVisible(Hb::TitleBarItem)) { - mAlbumName->setGeometry(QRectF(0,0,screenSize.width(),deviceSize.height()/24)); - QString text = QString(aTitle); - mAlbumName->setPlainText( text ); - mAlbumName->show(); - } - else{ //handle album tiltle and count display logic here - if( count && isItemVisible(Hb::TitleBarItem)) { - mAlbumName->setGeometry(QRectF(0,0,screenSize.width()/2,deviceSize.height()/24)); - QString text = QString(aTitle); - mAlbumName->setPlainText( text ); - mAlbumName->show(); - mCountItem->setGeometry(QRectF(screenSize.width()/2,0,screenSize.width()/2,deviceSize.height()/24)); - text = QString("(%1)").arg(count); - mCountItem->setPlainText( text ); - mCountItem->setAlignment(Qt::AlignRight); - mCountItem->show(); - } - else if((!count) && isItemVisible(Hb::TitleBarItem)) { - mAlbumName->setGeometry(QRectF(0,0,screenSize.width(),deviceSize.height()/24)); - QString text = QString(aTitle); - mAlbumName->setPlainText( text ); - mAlbumName->show(); - } - } + if (mAlbumNameHeading == NULL) + { + mAlbumNameHeading = new HbGroupBox(this); + mAlbumNameHeading->setObjectName("Album Name"); + } + + //If fetcher service set only title text + if ((XQServiceUtil::isService()) && isItemVisible(Hb::TitleBarItem)) + { + mAlbumNameHeading->setGeometry(QRectF(0, 0, screenSize.width(),deviceSize.height() / 24)); + mAlbumNameHeading->setHeading(aTitle); + mAlbumNameHeading->show(); + } + else + { //handle album tiltle and count display logic here + if (count && isItemVisible(Hb::TitleBarItem)) + { + mAlbumNameHeading->setGeometry(QRectF(0, 0, screenSize.width(),deviceSize.height() / 24)); + QString text = HbParameterLengthLimiter(GLX_ALBUM_NAME_COUNT_LABEL).arg(aTitle).arg(count); + mAlbumNameHeading->setHeading(text); + mAlbumNameHeading->show(); + } + } } void GlxGridView::showNoImageString() @@ -403,28 +391,13 @@ } if (mZeroItemLabel == NULL) { QString displayText(GLX_GRID_NO_IMAGE); - if(!XQServiceUtil::isService()) - { - displayText.append(GLX_GRID_OPEN_CAMERA); - } mZeroItemLabel = new HbLabel(displayText, this); mZeroItemLabel->setObjectName( "No Image" ); } mZeroItemLabel->setGeometry(QRectF(0, midHeight - deviceSize.height()/16, screenSize.width(), 3*deviceSize.height()/32)); mZeroItemLabel->setAlignment(Qt::AlignHCenter); mZeroItemLabel->show(); - if (mCameraButton == NULL) { - mCameraButton = new HbPushButton(this); - mCameraButton->setObjectName( "Camera Button" ); - mCameraButton->setIcon(HbIcon(GLXICON_CAMERA)); - mCameraButton->hide(); - connect(mCameraButton, SIGNAL(clicked(bool)), this, SLOT(cameraButtonClicked(bool))); - } - if(!XQServiceUtil::isService()) - { - mCameraButton->setGeometry(QRectF(screenSize.width()/2 - 3*deviceSize.height()/64, midHeight + deviceSize.height()/32, deviceSize.height()/32, deviceSize.height()/32)); - mCameraButton->show(); - } + } void GlxGridView::populated() @@ -450,6 +423,18 @@ mWidget->clearSelection(); break; + case EGlxCmd3DEffectOn: + mSettings->setmediaWall3DEffect(1); + if(mWidget && !mWidget->effect3dEnabled()) + mWidget->setEffect3dEnabled(ETrue); + break; + + case EGlxCmd3DEffectOff: + mSettings->setmediaWall3DEffect(0); + if(mWidget && mWidget->effect3dEnabled()) + mWidget->setEffect3dEnabled(EFalse); + break; + default : break; } @@ -528,17 +513,28 @@ mWidget->setObjectName( "Media Wall" ); mWidget->setLongPressEnabled(true); mWidget->setScrollBarPolicy(HgWidget::ScrollBarAutoHide); + if(XQServiceUtil::isService()) + { + mWidget->setEffect3dEnabled(EFalse); + } + else + { + mWidget->setEffect3dEnabled(mSettings->mediaWall3DEffect()); + } setWidget( mWidget ); addViewConnection(); - hideorshowitems(orient); } OstTraceFunctionExit0( GLXGRIDVIEW_LOADGRIDVIEW_EXIT ); } void GlxGridView::orientationchanged(Qt::Orientation orient) { - hideorshowitems(orient); + if (mWidget && mWidget->selectionMode() == HgWidget::MultiSelection) { + hideorshowitems(orient); + } + showHbItems(); } + void GlxGridView::hideorshowitems(Qt::Orientation orient) { if ( mWidget && mWidget->selectionMode() == HgWidget::NoSelection ) { @@ -561,27 +557,30 @@ } } else if (mWidget && mWidget->selectionMode() == HgWidget::MultiSelection) { - setItemVisible(Hb::TitleBarItem, FALSE) ; + setItemVisible(Hb::AllItems, FALSE) ; + setViewFlags(viewFlags() | HbView::ViewTitleBarHidden | HbView::ViewStatusBarHidden); if (mUiOnButton) { mUiOnButton->hide(); } - if (mCountItem) { - mCountItem->hide(); + if (mTotalImagesCount) { + mTotalImagesCount->hide(); } - if (mAlbumName) { - mAlbumName->hide(); + if (mAlbumNameHeading) { + mAlbumNameHeading->hide(); } + QSize deviceSize = HbDeviceProfile::current().logicalSize(); QSize screenSize = ( mWindow->orientation() == Qt::Vertical ) ? QSize( deviceSize.width(), deviceSize.height() ) : QSize( deviceSize.height(), deviceSize.width() ) ; - mMainLabel->setGeometry(QRectF(0,0,screenSize.width(),deviceSize.height()/24)); - mMarkCheckBox->setGeometry(QRectF(0,deviceSize.height()/24,screenSize.width()/2,deviceSize.height()/72)); - mCountLabel->setGeometry(QRectF(screenSize.width()/2,deviceSize.height()/24,screenSize.width()/2,deviceSize.height()/12 - 3)); - mCountLabel->setAlignment(Qt::AlignRight | Qt::AlignVCenter); - mMainLabel->show(); - mMarkCheckBox->show(); - mCountLabel->show(); + + mMarkSelectHeading->setGeometry(QRectF(0,0,screenSize.width(),deviceSize.height()/24)); + mMarkingWidget->setGeometry(QRectF(0,deviceSize.height()/24,screenSize.width(),deviceSize.height()/72)); + + mMarkSelectHeading->show(); + mMarkingWidget->show(); + showMarkedItemCount(); + } } @@ -631,21 +630,22 @@ if ( mWidget->selectionMode() == HgWidget::MultiSelection ) { return ; } - if(XQServiceUtil::isService()){ - emit gridItemSelected(index); - return; - } OstTraceEventStart0( EVENT_DUP1_GLXGRIDVIEW_ITEMSELECTED_START, "Fullscreen Launch Time" ); if ( mModel ) { mModel->setData( index, index.row(), GlxFocusIndexRole ); } + if(XQServiceUtil::isService()){ + qDebug("GlxGridView::itemSelected actionTriggered( EGlxCmdFetcherSelect )" ); + emit actionTriggered( EGlxCmdFetcherSelect ); + return; + } emit actionTriggered( EGlxCmdFullScreenOpen ); OstTraceEventStop( EVENT_DUP1_GLXGRIDVIEW_ITEMSELECTED_STOP, "Fullscreen Launch Time", EVENT_DUP1_GLXGRIDVIEW_ITEMSELECTED_START ); } void GlxGridView::scrollingStarted() { - if ((mWindow->orientation() == Qt::Horizontal) && mWidget->selectionMode() == HgWidget::NoSelection) + if ((mWindow->orientation() == Qt::Horizontal)/* && mWidget->selectionMode() == HgWidget::NoSelection*/) { setItemVisible(Hb::AllItems, FALSE) ; setViewFlags(viewFlags() | HbView::ViewTitleBarHidden | HbView::ViewStatusBarHidden); @@ -653,11 +653,11 @@ { mUiOnButton->hide(); } - if (mCountItem) { - mCountItem->hide(); + if (mTotalImagesCount) { + mTotalImagesCount->hide(); } - if (mAlbumName) { - mAlbumName->hide(); + if (mAlbumNameHeading) { + mAlbumNameHeading->hide(); } } @@ -703,17 +703,16 @@ disconnect(mUiOnButton, SIGNAL(clicked(bool)), this, SLOT(uiButtonClicked(bool))); delete mUiOnButton; } - if(mCameraButton) { - disconnect(mCameraButton, SIGNAL(clicked()), this, SLOT(cameraButtonClicked())); - delete mCameraButton; - } + delete mIconItem; - delete mCountItem; - delete mAlbumName; - delete mMainLabel; + delete mTotalImagesCount; + delete mAlbumNameHeading; + delete mMarkSelectHeading; delete mMarkCheckBox; - delete mCountLabel; + delete mMarkCountLabel; + delete mMarkingWidget; delete mZeroItemLabel; + OstTraceFunctionExit0( DUP1_GLXGRIDVIEW_GLXGRIDVIEW_EXIT ); } @@ -739,15 +738,16 @@ void GlxGridView::showHbItems() { - setItemVisible(Hb::AllItems, TRUE) ; - setViewFlags(viewFlags() &~ HbView::ViewTitleBarHidden &~ HbView::ViewStatusBarHidden); + if(mWidget && mWidget->selectionMode() == HgWidget::NoSelection) { + setItemVisible( Hb::TitleBarItem, TRUE ); + setItemVisible( Hb::StatusBarItem, TRUE ); + setViewFlags(viewFlags() &~ HbView::ViewTitleBarHidden &~ HbView::ViewStatusBarHidden); showItemCount(); - toolBar()->resetTransform(); // Temp, this is for HbToolbar issue to get fixed - toolBar()->show(); - if (mUiOnButton) - { + } + updateToolBar(); + if (mUiOnButton) { mUiOnButton->hide(); - } + } } void GlxGridView::cameraButtonClicked(bool /*checked*/) @@ -758,10 +758,30 @@ int GlxGridView::getSubState() { int substate = NO_GRID_S; - QVariant variant = mModel->data( mModel->index(0,0), GlxSubStateRole ); - if ( variant.isValid() && variant.canConvert () ) { - substate = variant.value(); + if ( mModel ) { + QVariant variant = mModel->data( mModel->index(0,0), GlxSubStateRole ); + if ( variant.isValid() && variant.canConvert () ) { + substate = variant.value(); + } } return substate; } +void GlxGridView::updateToolBar() +{ + //In the case of multiselection show the tool bar. + if ( mWidget && mWidget->selectionMode() == HgWidget::MultiSelection ) { + setItemVisible( Hb::ToolBarItem, TRUE ) ; + return ; + } + + //In Album grid it is not required to show tool bar + int subState = getSubState(); + if ( subState == ALBUM_ITEM_S || subState == FETCHER_ALBUM_ITEM_S ) { + setItemVisible( Hb::ToolBarItem, FALSE ) ; + } + else { + setItemVisible( Hb::ToolBarItem, TRUE ); + } +} +