diff -r bfc95e24a059 -r c9471d26c7f2 qtinternetradio/ui/src/irsonghistoryview.cpp --- a/qtinternetradio/ui/src/irsonghistoryview.cpp Mon Jun 21 22:33:45 2010 +0100 +++ b/qtinternetradio/ui/src/irsonghistoryview.cpp Thu Jul 22 16:31:41 2010 +0100 @@ -31,7 +31,8 @@ #include "irqsettings.h" #include "iruidefines.h" - +const QString KActionSearchInMusicStoreName("SearchInMusicStore"); +const QString KActionDeleteName("Delete"); // public functions @@ -51,17 +52,20 @@ iListView->setModel(iModel); iListView->setCurrentIndex(iModel->index(0)); - iClearSongHistoryAction = new HbAction(hbTrId("txt_irad_opt_clear_song_history"), this); +#ifdef SUBTITLE_STR_BY_LOCID + iClearSongHistoryAction = new HbAction(hbTrId("txt_irad_opt_clear_list"), this); +#else + iClearSongHistoryAction = new HbAction(hbTrId("Clear list"), this); +#endif iStatisticsReporter = IRQStatisticsReporter::openInstance(); - - + iShowPrompt = iSettings->getSongHistoryShow(); if( iShowPrompt ) { iSettings->setSongHistoryShow(0); } - connect(iClearSongHistoryAction, SIGNAL(triggered()), this, SLOT(clearHisotrySongDB())); + connect(iClearSongHistoryAction, SIGNAL(triggered()), this, SLOT(popupClearHistoryConfirmMessageBox())); connect(iModel, SIGNAL(modelChanged()), this, SLOT(modelChanged())); } @@ -91,10 +95,13 @@ switch (aCommand) { + case EIR_ViewCommand_TOBEACTIVATED: + showSongHistory(); + ret = EIR_NoDefault; + break; + case EIR_ViewCommand_ACTIVATED: connect(iPlayController, SIGNAL(metaDataAvailable(IRQMetaData*)), this, SLOT(newMetadataAdded(IRQMetaData*))); - showSongHistory(); - if( iShowPrompt ) { QTimer::singleShot(5, this, SLOT(showPrompt())); @@ -139,7 +146,11 @@ // TODO : Add the report in future. Add the channel id in the song info db // iStatisticsReporter->logNmsEvents(EIRQFind,channelId); - popupNote(hbTrId("txt_irad_info_music_store_not_available"), HbMessageBox::MessageTypeInformation); +#ifdef SUBTITLE_STR_BY_LOCID + popupNote(hbTrId("txt_irad_info_music_store_not_available"), HbMessageBox::MessageTypeInformation); +#else + popupNote(hbTrId("Music store not available"), HbMessageBox::MessageTypeInformation); +#endif } @@ -173,7 +184,13 @@ void IRSongHistoryView::modelChanged() { iListView->reset(); - QString headingStr = hbTrId("txt_irad_list_recently_played_songs") + " (" + QString::number(iModel->rowCount()) + ")"; + +#ifdef SUBTITLE_STR_BY_LOCID + QString headingStr = hbTrId("txt_irad_subtitle_recently_played_songs") + " (" + QString::number(iModel->rowCount()) + ")"; +#else + QString headingStr = hbTrId("Recently played songs") + " (" + QString::number(iModel->rowCount()) + ")"; +#endif + setHeadingText(headingStr); } @@ -184,14 +201,33 @@ } -void IRSongHistoryView::clearHisotrySongDB() +void IRSongHistoryView::popupClearHistoryConfirmMessageBox() { - iModel->clearHisotrySongDB(); +#ifdef SUBTITLE_STR_BY_LOCID + HbMessageBox::question(hbTrId("txt_irad_info_clear_song_list"), this, SLOT(clearList(HbAction*)), hbTrId("txt_common_button_ok"), hbTrId("txt_common_button_cancel")); +#else + HbMessageBox::question(hbTrId("Clear song list?"), this, SLOT(clearList(HbAction*)), hbTrId("Ok"), hbTrId("Cancel")); +#endif +} +void IRSongHistoryView::clearList(HbAction *aAction) +{ + HbMessageBox *dialog = static_cast(sender()); + if (dialog) + { + if (aAction == dialog->actions().at(0)) + { + iModel->clearList(); + } + } } void IRSongHistoryView::showPrompt() { +#ifdef SUBTITLE_STR_BY_LOCID QString str = hbTrId("txt_irad_info_click_the_song_and_find_it_in_nokia_music_store"); +#else + QString str = hbTrId("Click the song and find it in nokia music store"); +#endif popupNote(str, HbMessageBox::MessageTypeInformation); } @@ -200,7 +236,56 @@ /* for in song history view, the data will retrived from the web browser*/ needNetwork = false; } - + +void IRSongHistoryView::listViewLongPressed(HbAbstractViewItem *aItem, const QPointF& aCoords) +{ + Q_UNUSED(aItem); + Q_UNUSED(aCoords); + + HbAction *action = NULL; + HbMenu *contextMenu = new HbMenu; + contextMenu->setAttribute(Qt::WA_DeleteOnClose); + connect(contextMenu, SIGNAL(triggered(HbAction*)), this, SLOT(actionClicked(HbAction*))); + +#ifdef SUBTITLE_STR_BY_LOCID + action = contextMenu->addAction(hbTrId("txt_irad_menu_search_in_music_store")); +#else + action = contextMenu->addAction(hbTrId("Search in music store")); +#endif + action->setObjectName(KActionSearchInMusicStoreName); +#ifdef SUBTITLE_STR_BY_LOCID + action = contextMenu->addAction(hbTrId("txt_common_menu_delete")); +#else + action = contextMenu->addAction(hbTrId("Delete")); +#endif + action->setObjectName(KActionDeleteName); + + contextMenu->open(); +} + +void IRSongHistoryView::searchInMusicStoreContextAction() +{ + // Need to log the find song in NMS event, iStatisticsReporter->logNmsEvent(IRQStatisticsReporter::EIRFind,channelId); +#ifdef SUBTITLE_STR_BY_LOCID + popupNote(hbTrId("txt_irad_info_music_store_not_available"), HbMessageBox::MessageTypeInformation); +#else + popupNote(hbTrId("Music store not available"), HbMessageBox::MessageTypeInformation); +#endif +} +void IRSongHistoryView::deleteContextAction() +{ + int current = iListView->currentIndex().row(); + bool ret = iModel->deleteOneItem(current); + if( !ret ) + { +#ifdef SUBTITLE_STR_BY_LOCID + popupNote(hbTrId("txt_irad_info_operation_failed"), HbMessageBox::MessageTypeWarning); +#else + popupNote(hbTrId("Operation failed"), HbMessageBox::MessageTypeWarning); +#endif + } +} + void IRSongHistoryView::gotoStationHistory() { getViewManager()->activateView(EIRView_HistoryView); @@ -212,3 +297,19 @@ iModel->setOrientation(aOrientation); iListView->reset(); } + +void IRSongHistoryView::actionClicked(HbAction *aAction) +{ + if ( aAction ) + { + QString objectName = aAction->objectName(); + if ( objectName == KActionSearchInMusicStoreName ) + { + searchInMusicStoreContextAction(); + } + else if( objectName == KActionDeleteName) + { + deleteContextAction(); + } + } +}