diff -r 2e1adbfc62af -r ee64f059b8e1 qtinternetradio/ui/src/irabstractlistviewbase.cpp --- a/qtinternetradio/ui/src/irabstractlistviewbase.cpp Mon May 03 12:25:23 2010 +0300 +++ b/qtinternetradio/ui/src/irabstractlistviewbase.cpp Fri May 14 15:43:29 2010 +0300 @@ -21,11 +21,12 @@ #include #include #include -#include +#include +#include +#include -#include "irabstractviewmanager.h" +#include "irviewmanager.h" #include "irabstractlistviewbase.h" -#include "irbannerlabel.h" #include "irplaycontroller.h" #include "irapplication.h" #include "irqmetadata.h" @@ -34,14 +35,18 @@ #include "irqenums.h" #include "iruidefines.h" +const int KAnimationLoopTimes = 2; // Animation loop times IrAbstractListViewBase::IrAbstractListViewBase(IRApplication *aApplication, TIRViewId aViewId) : IRBaseView(aApplication, aViewId), iListView(NULL), - iBannerLabel(NULL), + iPlayingBanner(NULL), + iStationName(NULL), + iArtistSongName(NULL), iHeadingLabel(NULL), iCollectionsAction(NULL), iFavoritesAction(NULL), - iGenresAction(NULL), iSearchAction(NULL),iConvertTimer(NULL), iEffectOnGoing(false) + iGenresAction(NULL), iSearchAction(NULL),iConvertTimer(NULL), + iViewParameter(EIRViewPara_InvalidId) { // Create widget hierarchy setObjectName( ABSTRACT_LIST_VIEW_BASE_OBJECT_VIEW ); @@ -56,23 +61,10 @@ iLoader.load(ABSTRACT_LIST_VIEW_BASE_LAYOUT_FILENAME); iLoader.load(ABSTRACT_LIST_VIEW_BASE_LAYOUT_FILENAME, ABSTRACT_LIST_VIEW_BASE_NO_PLAYINGBANNER_SECTION); - initEffects(); - initMenu(); - initContentWidget(); - initScrollBar(); - initToolBar(); - - connect(iListView, SIGNAL(activated(const QModelIndex&)), this, SLOT(clickItem(const QModelIndex&))); - connect(iListView, SIGNAL(longPressed(HbAbstractViewItem *,const QPointF&)), this, SLOT(listViewLongPressed(HbAbstractViewItem *,const QPointF&))); - connect(iBannerLabel, SIGNAL(pressed()), this, SLOT(gotoNowPlaying())); - connect(iPlayController, SIGNAL(metaDataAvailable(IRQMetaData*)), this, SLOT(metaDataAvailable(IRQMetaData*))); - connect(iPlayController, SIGNAL(playingStopped()), this, SLOT(removeBanner())); } IrAbstractListViewBase::~IrAbstractListViewBase() { - HbEffect::remove(QString("viewItem"), QString(":/effect/effects_item_selecte.fxml"), QString("chosen") ); - HbEffect::remove(QString("viewItem"), QString(":/effect/effects_item_select_end.fxml"),QString("chosenEnd")); } void IrAbstractListViewBase::initMenu() @@ -80,23 +72,19 @@ HbMenu *viewMenu = menu(); connect(viewMenu, SIGNAL(aboutToShow()), this, SLOT(prepareMenu())); - iOpenWebAddressAction = qobject_cast(iLoader.findObject(ABSTRACT_LIST_VIEW_BASE_OBJECT_OPEN_WEB_ADDRESS_ACTION)); - connect(iOpenWebAddressAction, SIGNAL(triggered()), this, SLOT(openWebAddress())); + QObject *openWebAddressAction = qobject_cast(iLoader.findObject(GO_TO_STATION_ACTION)); + connect(openWebAddressAction, SIGNAL(triggered()), this, SLOT(openWebAddress())); - QObject *settings = iLoader.findObject(ABSTRACT_LIST_VIEW_BASE_OBJECT_SETTING_ACTION); - connect(settings, SIGNAL(triggered()), this, SLOT(launchSettingsView())); + QObject *settings = iLoader.findObject(SETTINGS_ACTION); + connect(settings, SIGNAL(triggered()), this, SLOT(launchSettingsView())); - QObject *helpAction = iLoader.findObject(ABSTRACT_LIST_VIEW_BASE_OBJECT_HELP_ACTION); - connect(helpAction, SIGNAL(triggered()), this, SLOT(notReady())); - - QObject *exitAction = iLoader.findObject(ABSTRACT_LIST_VIEW_BASE_OBJECT_EXIT_ACTION); + QObject *exitAction = iLoader.findObject(EXIT_ACTION); connect(exitAction, SIGNAL(triggered()), iApplication, SIGNAL(quit())); } void IrAbstractListViewBase::initToolBar() { - HbToolBar *viewToolBar = qobject_cast(iLoader.findObject(ABSTRACT_LIST_VIEW_BASE_OBJECT_TOOLBAR)); - QActionGroup *actionGroup = new QActionGroup(viewToolBar); + QActionGroup *actionGroup = new QActionGroup(this); iCollectionsAction = qobject_cast(iLoader.findObject(ABSTRACT_LIST_VIEW_BASE_OBJECT_COLLECTION_ACTION)); iCollectionsAction->setActionGroup(actionGroup); iFavoritesAction = qobject_cast(iLoader.findObject(ABSTRACT_LIST_VIEW_BASE_OBJECT_FAVORITE_ACTION)); @@ -116,13 +104,17 @@ void IrAbstractListViewBase::initContentWidget() { - iHeadingLabel = qobject_cast(iLoader.findWidget(ABSTRACT_LIST_VIEW_BASE_OBJECT_HEADINGTEXTLABEL)); + iHeadingLabel = qobject_cast(iLoader.findWidget(ABSTRACT_LIST_VIEW_BASE_OBJECT_HEADINGTEXTLABEL)); QFont font; font.setBold(true); iHeadingLabel->setFont(font); - iBannerLabel = qobject_cast(iLoader.findWidget(ABSTRACT_LIST_VIEW_BASE_OBJECT_PLAYINGBANNER)); - iBannerLabel->setFont(font); + iPlayingBanner = qobject_cast(iLoader.findWidget(ABSTRACT_LIST_VIEW_BASE_OBJECT_PLAYINGBANNER)); + iPlayingBanner->installEventFilter(iApplication); + iStationName = qobject_cast(iLoader.findWidget(ABSTRACT_LIST_VIEW_BASE_OBJECT_STATIONNAME)); + iStationName->setFont(font); + iArtistSongName = qobject_cast(iLoader.findWidget(ABSTRACT_LIST_VIEW_BASE_OBJECT_ARTISTSONGNAME)); + iArtistSongName->setLoopCount(KAnimationLoopTimes); iListView = qobject_cast(iLoader.findObject(ABSTRACT_LIST_VIEW_BASE_OBJECT_LISTVIEW)); } @@ -135,6 +127,17 @@ iListView->setVerticalScrollBarPolicy(HbScrollArea::ScrollBarAsNeeded); } + +void IrAbstractListViewBase::setViewParameter(TIRViewParameter aParameter) +{ + iViewParameter = aParameter; +} + +TIRViewParameter IrAbstractListViewBase::getViewParameter() const +{ + return iViewParameter; +} + void IrAbstractListViewBase::setCheckedAction() { //default implementation @@ -149,19 +152,10 @@ { if (iHeadingLabel) { - iHeadingLabel->setText(aText); + iHeadingLabel->setHeading(aText); } } -QString IrAbstractListViewBase::getHeadingText() const -{ - if (iHeadingLabel) - { - return iHeadingLabel->text(); - } - return (""); -} - void IrAbstractListViewBase::resetCurrentItem() { @@ -194,16 +188,25 @@ Q_UNUSED(aReason); TIRHandleResult ret = EIR_DoDefault; + if (!initCompleted()) + { + return ret; + } + switch (aCommand) { - case EIR_ViewCommand_ACTIVATED: + case EIR_ViewCommand_TOBEACTIVATED: updateView(); - iBannerLabel->startAnimation(); + break; + + case EIR_ViewCommand_ACTIVATED: + iArtistSongName->stopAnimation(); + iArtistSongName->startAnimation(); break; case EIR_ViewCommand_DEACTIVATE: storeCurrentItem(); - iBannerLabel->stopAnimation(); + iArtistSongName->stopAnimation(); ret = EIR_NoDefault; break; @@ -219,29 +222,34 @@ */ void IrAbstractListViewBase::updateView() { - if (iPlayController->isPlaying()) + updateBanner(getViewManager()->orientation()); + + setCheckedAction(); +} + +void IrAbstractListViewBase::handleOrientationChanged(Qt::Orientation aOrientation) +{ + updateBanner(aOrientation); +} + +void IrAbstractListViewBase::lazyInit() +{ + if (!initCompleted()) { - IRQMetaData *metaData = iPlayController->getMetaData(); - if (metaData && "" != metaData->getArtistSongName().trimmed() && - "-" != metaData->getArtistSongName().trimmed()) - { - //set the banner text as song name - addBanner(metaData->getArtistSongName()); - } - else - { - //set the banner text as station name - IRQPreset *nowPlayingPreset = iPlayController->getNowPlayingPreset(); - Q_ASSERT(nowPlayingPreset); - addBanner(nowPlayingPreset->name); - } + IRBaseView::lazyInit(); + + initMenu(); + initContentWidget(); + initScrollBar(); + initToolBar(); + + connect(iListView, SIGNAL(activated(const QModelIndex&)), this, SLOT(clickItem(const QModelIndex&))); + connect(iListView, SIGNAL(longPressed(HbAbstractViewItem *,const QPointF&)), this, SLOT(listViewLongPressed(HbAbstractViewItem *,const QPointF&))); + connect(iPlayController, SIGNAL(metaDataAvailable(IRQMetaData*)), this, SLOT(metaDataAvailable(IRQMetaData*))); + connect(iPlayController, SIGNAL(playingStopped()), this, SLOT(removeBanner())); + connect(getViewManager(), SIGNAL(orientationChanged(Qt::Orientation)), + this, SLOT(handleOrientationChanged(Qt::Orientation))); } - else - { - removeBanner(); - } - - setCheckedAction(); } void IrAbstractListViewBase::collectionsActionClicked() @@ -272,11 +280,46 @@ { } -void IrAbstractListViewBase::addBanner(const QString &aText) +void IrAbstractListViewBase::updateBanner(Qt::Orientation aOrientation) +{ + if ((aOrientation == Qt::Vertical) && iPlayController->isPlaying()) + { + IRQMetaData *metaData = iPlayController->getMetaData(); + if (metaData && "" != metaData->getArtistSongName().trimmed() && + "-" != metaData->getArtistSongName().trimmed()) + { + //set the banner text as song name + addBanner(metaData->getArtistSongName(), true); + } + else + { + //set the banner text as station name + IRQPreset *nowPlayingPreset = iPlayController->getNowPlayingPreset(); + Q_ASSERT(nowPlayingPreset); + addBanner(nowPlayingPreset->name, false); + } + } + else + { + removeBanner(); + } +} + +void IrAbstractListViewBase::addBanner(const QString &aText, const bool &aMetaDataFlag) { iLoader.load(ABSTRACT_LIST_VIEW_BASE_LAYOUT_FILENAME, ABSTRACT_LIST_VIEW_BASE_WITH_PLAYINGBANNER_SECTION); - iBannerLabel->setText(aText); - iBannerLabel->setLoopCount(-1); + iStationName->setPlainText(iPlayController->getNowPlayingPreset()->name); + if (aMetaDataFlag) + { + iArtistSongName->setText(aText); + // As the metadata is changed, the animation should be started again. + iArtistSongName->stopAnimation(); + iArtistSongName->startAnimation(); + } + else + { + iArtistSongName->setText(" "); + } } @@ -287,86 +330,31 @@ void IrAbstractListViewBase::metaDataAvailable(IRQMetaData* aMetaData) { - if (!aMetaData) + Q_UNUSED(aMetaData); + + if (getViewManager()->currentView() != this) { return; } - - const QString artistSongName = aMetaData->getArtistSongName(); - if ("" != artistSongName.trimmed() && "-" != artistSongName.trimmed()) - { - addBanner(aMetaData->getArtistSongName()); - } - else - { - //set the banner text as station name - IRQPreset *nowPlayingPreset = iPlayController->getNowPlayingPreset(); - Q_ASSERT(nowPlayingPreset); - addBanner(nowPlayingPreset->name); - } + + updateBanner(getViewManager()->orientation()); } void IrAbstractListViewBase::removeBanner() { - if (getViewManager()->currentView() == this) - { - iBannerLabel->stopAnimation(); - iLoader.load(ABSTRACT_LIST_VIEW_BASE_LAYOUT_FILENAME, ABSTRACT_LIST_VIEW_BASE_NO_PLAYINGBANNER_SECTION); - } -} - -void IrAbstractListViewBase::notReady() -{ - popupNote(tr("Not ready"), HbMessageBox::MessageTypeInformation ); -} - -void IrAbstractListViewBase::gotoNowPlaying() -{ - Q_ASSERT(iPlayController->isPlaying()); - - getViewManager()->activateView(EIRView_PlayingView); + iArtistSongName->stopAnimation(); + iLoader.load(ABSTRACT_LIST_VIEW_BASE_LAYOUT_FILENAME, ABSTRACT_LIST_VIEW_BASE_NO_PLAYINGBANNER_SECTION); } void IrAbstractListViewBase::listViewLongPressed(HbAbstractViewItem *aItem, const QPointF &aCoords) { Q_UNUSED(aItem); - Q_UNUSED(aCoords); + Q_UNUSED(aCoords); } void IrAbstractListViewBase::clickItem(const QModelIndex &aIndex) { - if (!iEffectOnGoing) - { - HbAbstractViewItem *listViewItem = iListView->itemByIndex(aIndex); - iEffectOnGoing = true; - iChosenIndex = aIndex; - HbEffect::start(listViewItem, "viewItem", "chosen",this, "selectEffectComplete1"); - } -} - -void IrAbstractListViewBase::initEffects() -{ - HbEffect::add(QString("viewItem"), QString(":/effect/effects_item_select.fxml"), - QString("chosen") ); - HbEffect::add(QString("viewItem"), QString(":/effect/effects_item_select_end.fxml"),QString("chosenEnd")); -} - -void IrAbstractListViewBase::selectEffectComplete1(HbEffect::EffectStatus aStatus ) -{ - Q_UNUSED(aStatus); - HbAbstractViewItem *listViewItem = iListView->itemByIndex(iChosenIndex); - HbEffect::start(listViewItem, QString("viewItem"), QString("chosenEnd"),this, "selectEffectComplete2"); -} - -void IrAbstractListViewBase::selectEffectComplete2(HbEffect::EffectStatus aStatus ) -{ - Q_UNUSED(aStatus); - iEffectOnGoing = false; - clickAfterEffects(); -} - -void IrAbstractListViewBase::clickAfterEffects() -{ + Q_UNUSED(aIndex); bool needNetwork; itemAboutToBeSelected(needNetwork); if (needNetwork)