diff -r f7f0874bfe7d -r 74c9f037fd5d ui/views/listview/src/glxlistview.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ui/views/listview/src/glxlistview.cpp Fri Mar 19 09:28:59 2010 +0200 @@ -0,0 +1,187 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: ?Description +* +*/ + + +//Includes +#include +#include +#include +#include +#include +#include +#include + +//User Includes +#include "glxviewids.h" +#include "glxlistview.h" +#include "glxmodelparm.h" +#include "glxdocloaderdefs.h" +#include "glxcommandhandlers.hrh" + + +GlxListView::GlxListView(HbMainWindow *window) : GlxView ( GLX_LISTVIEW_ID ), + mListView(NULL), mView(NULL), mWindow(window), mModel ( NULL) +{ + qDebug("GlxListView::GlxListView()"); + mDocLoader = new HbDocumentLoader(); + setContentFullScreen( true ); +} + +void GlxListView::activate() +{ + qDebug("GlxListView::activate() %d", mWindow->orientation() ); + + if (mListView == NULL) { + createListView(); + } + } + +void GlxListView::deActivate() +{ + qDebug("GlxListView::deActivate()"); + disconnect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(orientationChanged(Qt::Orientation))); + takeToolBar(); //To:Do improved later + emit toolBarChanged(); +} + +void GlxListView::setModel(QAbstractItemModel *model) +{ + qDebug("GlxListView::setModel()"); + mModel = model ; + mListView->setModel(mModel); +} + +void GlxListView::addToolBar( HbToolBar *toolBar ) +{ + //toolBar->setParent(this); + if ( mListView ) { + toolBar->setZValue(mListView->zValue()); + } + setToolBar(toolBar) ; +} + +void GlxListView::initializeView(QAbstractItemModel *model) +{ + qDebug("GlxListView::initializeView()"); + if (mListView == NULL) { + createListView(); + } + setModel(model); +} + +QGraphicsItem * GlxListView::getAnimationItem( GlxEffect transtionEffect ) +{ + if ( transtionEffect == GRID_TO_ALBUMLIST || transtionEffect == ALBUMLIST_TO_GRID ) { + return mListView; + } + + return NULL; +} + +void GlxListView::addViewConnection () +{ + qDebug("GlxListView::addViewConnection()"); + connect(mListView, SIGNAL(activated(const QModelIndex &)), this, SLOT( itemSelected(const QModelIndex &))); + connect(mListView, SIGNAL(longPressed( HbAbstractViewItem*, QPointF )),this, SLOT( indicateLongPress( HbAbstractViewItem*, QPointF ) ) ); +} + +void GlxListView::removeViewConnection() +{ + qDebug("GlxListView::removeViewConnection()"); + disconnect(mListView, SIGNAL(activated(const QModelIndex &)), this, SLOT( itemSelected(const QModelIndex &))); + disconnect(mListView, SIGNAL(longPressed( HbAbstractViewItem*, QPointF )),this, SLOT( indicateLongPress( HbAbstractViewItem*, QPointF ) ) ); +} + +void GlxListView::loadListView() +{ + qDebug("GlxListView::loadListView()"); + bool loaded = true; + //Load the widgets accroding to the current Orientation + if (mListView == NULL ) + { + mDocLoader->load(GLX_LISTVIEW_DOCMLPATH,&loaded); + if(loaded) + { + //retrieve the widgets + mView = static_cast(mDocLoader->findWidget(QString(GLX_LISTVIEW_VIEW))); + mListView = static_cast(mDocLoader->findWidget(QString(GLX_LISTVIEW_LIST))); + + if(mListView) + { + //sets the widget + setWidget((QGraphicsWidget*) mView); + } + } + } +} + +void GlxListView::createListView() +{ + qDebug("GlxListView::createListView()"); + loadListView(); + addViewConnection(); //only one time add the connection and remove in side the destructor +} + +GlxListView::~GlxListView() +{ + qDebug("GlxListView::~GlxListView()"); + + if(widget()) + { + qDebug("GlxListView::~GlxListView() takeWidget"); + takeWidget(); + } + + removeViewConnection(); + + if(mListView) + { + delete mListView; + mListView = NULL; + } + + if(mView) + { + delete mView ; + mView = NULL; + } + if(mDocLoader) + { + delete mDocLoader; + mDocLoader = NULL; + } +} + +void GlxListView::itemSelected(const QModelIndex & index) +{ + qDebug("GlxListView::itemSelected() index = %d", index.row() ); + if ( mModel ) { + mModel->setData( index, index.row(), GlxFocusIndexRole ); + } + emit actionTriggered( EGlxCmdAlbumGridOpen ); +} + + +void GlxListView::indicateLongPress(HbAbstractViewItem *item, QPointF coords) +{ + qDebug() << "GlxListView:indicateLongPress Item " << item->modelIndex() << "long pressed at " << coords; + if ( mModel ) { + mModel->setData( item->modelIndex(), item->modelIndex().row(), GlxFocusIndexRole ); + } + emit itemSpecificMenuTriggered(viewId(),coords); +} +