radioapp/radiowidgets/src/radiohistoryview.cpp
changeset 28 075425b8d9a4
parent 24 6df133bd92e1
child 32 189d20c34778
--- a/radioapp/radiowidgets/src/radiohistoryview.cpp	Fri Jun 04 10:21:36 2010 +0100
+++ b/radioapp/radiowidgets/src/radiohistoryview.cpp	Fri Jun 11 13:38:32 2010 +0300
@@ -56,7 +56,7 @@
  *
  */
 RadioHistoryView::RadioHistoryView() :
-    RadioViewBase( false ),
+    RadioViewBase(),
     mHistoryList( 0 ),
     mAllSongsButton( 0 ),
     mTaggedSongsButton( 0 ),
@@ -110,15 +110,17 @@
  * Private slot
  *
  */
-void RadioHistoryView::deckButtonPressed()
+void RadioHistoryView::updateViewMode()
 {
+    QString section = DOCML::HV_SECTION_HISTORY_MODE;
+    bool showTagged = false;
+
     if ( sender() == mTaggedSongsButton ) {
-        loadSection( DOCML::FILE_HISTORYVIEW, DOCML::HV_SECTION_FAVORITE_MODE );
-    } else {
-        loadSection( DOCML::FILE_HISTORYVIEW, DOCML::HV_SECTION_HISTORY_MODE );
+        section = DOCML::HV_SECTION_FAVORITE_MODE;
+        showTagged = true;
     }
 
-    const bool showTagged = mTaggedSongsButton->isChecked();
+    loadSection( DOCML::FILE_HISTORYVIEW, section );
     historyModel().setShowTagged( showTagged );
 
     updateVisibilities();
@@ -141,7 +143,7 @@
  */
 void RadioHistoryView::updateVisibilities()
 {
-    const int itemCount = mMainWindow->uiEngine().historyModel().rowCount();
+    const int itemCount = mUiEngine->historyModel().rowCount();
     loadSection( DOCML::FILE_HISTORYVIEW, itemCount ? DOCML::HV_SECTION_SHOW_LIST : DOCML::HV_SECTION_HIDE_LIST );
 }
 
@@ -165,7 +167,7 @@
     }
 
     if ( HbAction* searchAction = mUiLoader->findObject<HbAction>( DOCML::HV_NAME_CONTEXT_SEARCH ) ) {
-        //TODO: Check if "search from other store" should be available
+        //TODO: Add support for other music store
         searchAction->setVisible( false );
     }
 
@@ -181,11 +183,21 @@
  * Private slot
  *
  */
+void RadioHistoryView::handleLongPress( HbAbstractViewItem* item )
+{
+    showContextMenu( item->modelIndex() );
+}
+
+/*!
+ * Private slot
+ *
+ */
 void RadioHistoryView::toggleTagging()
 {
     historyModel().toggleTagging( *mSelectedItem, mCurrentRow );
     mSelectedItem->reset();
     mCurrentRow = -1;
+    updateVisibilities();
 }
 
 /*!
@@ -196,7 +208,7 @@
 {
     QString msg = "To be implemented: Open ovi store. Artist: %1, Title: %2";
     HbMessageBox::information( msg.arg( mSelectedItem->artist() ).arg( mSelectedItem->title() ) );
-    mMainWindow->uiEngine().openMusicStore( *mSelectedItem );
+    mUiEngine->openMusicStore( *mSelectedItem );
 }
 
 /*!
@@ -207,7 +219,7 @@
 {
     QString msg = "To be implemented: Open other store. Artist: %1, Title: %2";
     HbMessageBox::information( msg.arg( mSelectedItem->artist() ).arg( mSelectedItem->title() ) );
-    mMainWindow->uiEngine().openMusicStore( *mSelectedItem, RadioUiEngine::OtherStore );
+    mUiEngine->openMusicStore( *mSelectedItem, RadioUiEngine::OtherStore );
 }
 
 /*!
@@ -230,8 +242,8 @@
     Song song = KRecognizedSongs[mSongIndex++];
     mSongIndex %= KSongsCount;
 
-    RadioStation station = mMainWindow->uiEngine().stationModel().currentStation();
-    mMainWindow->uiEngine().historyModel().addItem( song.mArtist, song.mTitle, station );
+    RadioStation station = mUiEngine->stationModel().currentStation();
+    mUiEngine->historyModel().addItem( song.mArtist, song.mTitle, station );
 }
 
 /*!
@@ -241,9 +253,8 @@
 void RadioHistoryView::init()
 {
     LOG_METHOD;
-    mInitialized = true;
 
-    RadioHistoryModel* historyModel = &mMainWindow->uiEngine().historyModel();
+    RadioHistoryModel* historyModel = &mUiEngine->historyModel();
     historyModel->setShowDetails( mOrientation == Qt::Horizontal );
 
     if ( !mNonTaggedIcon.isNull() && !mTaggedIcon.isNull() ) {
@@ -260,27 +271,36 @@
     mTaggedSongsButton = mUiLoader->findObject<HbAction>( DOCML::HV_NAME_TAGGED_SONGS_BUTTON );
 
     if ( HbAction* clearListAction = mUiLoader->findObject<HbAction>( DOCML::HV_NAME_CLEAR_LIST_ACTION ) ) {
-        connectAndTest( clearListAction,    SIGNAL(triggered()),
+        Radio::connect( clearListAction,    SIGNAL(triggered()),
                         this,               SLOT(clearList()) );
     }
 
-    connectAndTest( mTaggedSongsButton,     SIGNAL(triggered() ),
-                    this,                   SLOT(deckButtonPressed() ) );
-    connectAndTest( mAllSongsButton,        SIGNAL(triggered() ),
-                    this,                   SLOT(deckButtonPressed() ) );
-    connectAndTest( historyModel,           SIGNAL(itemAdded() ),
-                    this,                   SLOT(updateVisibilities() ) );
+    Radio::connect( mTaggedSongsButton,     SIGNAL(triggered()),
+                    this,                   SLOT(updateViewMode()) );
+    Radio::connect( mAllSongsButton,        SIGNAL(triggered()),
+                    this,                   SLOT(updateViewMode()) );
+    Radio::connect( historyModel,           SIGNAL(itemAdded()),
+                    this,                   SLOT(updateVisibilities()) );
+    Radio::connect( mHistoryList,           SIGNAL(activated(QModelIndex)),
+                    this,                   SLOT(showContextMenu(QModelIndex)) );
+    Radio::connect( mHistoryList,           SIGNAL(longPressed(HbAbstractViewItem*,QPointF)),
+                    this,                   SLOT(handleLongPress(HbAbstractViewItem*)) );
 
-    loadSection( DOCML::FILE_HISTORYVIEW, DOCML::HV_SECTION_HISTORY_MODE );
-    updateVisibilities();
-    
+    connectCommonMenuItem( MenuItem::Exit );
     connectCommonMenuItem( MenuItem::UseLoudspeaker );
 
+    // Context menu actions
+    connectXmlElement( DOCML::HV_NAME_TOGGLE_TAG_ACTION,    SIGNAL(triggered()),
+                       this,                                SLOT(toggleTagging()) );
+    connectXmlElement( DOCML::HV_NAME_OVI_STORE_ACTION,     SIGNAL(triggered()),
+                       this,                                SLOT(openOviStore()) );
     initBackAction();
 
+    updateViewMode();
+
     // BEGIN TEMPORARY TEST CODE
     if ( HbAction* addSongsAction = mUiLoader->findObject<HbAction>( "hv:add_songs_action" ) ) {
-        connectAndTest( addSongsAction,     SIGNAL(triggered()),
+        Radio::connect( addSongsAction,     SIGNAL(triggered()),
                         this,               SLOT(addSongs()) );
     }
     // END TEMPORARY TEST CODE
@@ -292,8 +312,10 @@
  */
 void RadioHistoryView::setOrientation()
 {
-    RadioHistoryModel& model = mMainWindow->uiEngine().historyModel();
-    model.setShowDetails( mOrientation == Qt::Horizontal );
+    if ( mUiEngine ) {
+        RadioHistoryModel& model = mUiEngine->historyModel();
+        model.setShowDetails( mOrientation == Qt::Horizontal );
+    }
 }
 
 /*!
@@ -302,7 +324,8 @@
  */
 void RadioHistoryView::userAccepted()
 {
-    mMainWindow->uiEngine().historyModel().removeAll();
+    const bool removeTagged = mTaggedSongsButton->isChecked();
+    mUiEngine->historyModel().removeAll( removeTagged );
     updateVisibilities();
 }