radioapp/radiowidgets/src/radioplaylogview.cpp
changeset 14 63aabac4416d
parent 13 46974bebc798
equal deleted inserted replaced
13:46974bebc798 14:63aabac4416d
    14 * Description:
    14 * Description:
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 // System includes
    18 // System includes
    19 #include <hblistview.h>
    19 #include <HbListView>
    20 #include <hbaction.h>
    20 #include <HbAction>
       
    21 #include <HbAbstractViewItem>
       
    22 #include <HbMenu>
    21 
    23 
    22 // User includes
    24 // User includes
    23 #include "radioplaylogview.h"
    25 #include "radioplaylogview.h"
    24 #include "radiomainwindow.h"
    26 #include "radiomainwindow.h"
    25 #include "radiologger.h"
    27 #include "radiologger.h"
    26 #include "radioxmluiloader.h"
    28 #include "radioxmluiloader.h"
    27 #include "radiouiengine.h"
    29 #include "radiouiengine.h"
       
    30 #include "radiostationfiltermodel.h"
    28 #include "radioplaylogmodel.h"
    31 #include "radioplaylogmodel.h"
       
    32 
       
    33 const char* SECTION_SHOW_LIST = "show_list";
       
    34 const char* SECTION_HIDE_LIST = "hide_list";
       
    35 const char* SECTION_HISTORY_MODE = "history_mode";
       
    36 const char* SECTION_FAVORITE_MODE = "favorite_mode";
    29 
    37 
    30 /*!
    38 /*!
    31  *
    39  *
    32  */
    40  */
    33 RadioPlayLogView::RadioPlayLogView( RadioXmlUiLoader* uiLoader ) :
    41 RadioPlayLogView::RadioPlayLogView( RadioXmlUiLoader* uiLoader ) :
    34     RadioViewBase( uiLoader ),
    42     RadioViewBase( uiLoader ),
    35     mPlayLogList( 0 )
    43     mPlayLogList( 0 ),
       
    44     mAllSongsButton( 0 ),
       
    45     mFavoritesButton( 0 )
    36 {
    46 {
    37 }
    47 }
    38 
    48 
    39 /*!
    49 /*!
    40  * From RadioViewBase
    50  * Private slot
       
    51  *
       
    52  */
       
    53 void RadioPlayLogView::deckButtonPressed()
       
    54 {
       
    55     bool ok = false;
       
    56     if ( sender() == mFavoritesButton ) {
       
    57         mUiLoader->load( DOCML_PLAYLOGVIEW_FILE, SECTION_FAVORITE_MODE, &ok );
       
    58     } else {
       
    59         mUiLoader->load( DOCML_PLAYLOGVIEW_FILE, SECTION_HISTORY_MODE, &ok );
       
    60     }
       
    61 
       
    62     const bool showFavorites = mFavoritesButton->isChecked();
       
    63 //    mFilterModel->setTypeFilter( showFavorites ? RadioStation::Favorite
       
    64 //                                               : RadioStation::LocalStation );
       
    65 
       
    66     updateVisibilities();
       
    67 }
       
    68 
       
    69 /*!
       
    70  * Private slot
       
    71  *
       
    72  */
       
    73 void RadioPlayLogView::clearList()
       
    74 {
       
    75     mMainWindow->uiEngine().playLogModel().removeAll();
       
    76     updateVisibilities();
       
    77 }
       
    78 
       
    79 /*!
       
    80  * Private slot
       
    81  *
       
    82  */
       
    83 void RadioPlayLogView::updateVisibilities()
       
    84 {
       
    85     const int itemCount = mMainWindow->uiEngine().playLogModel().rowCount();
       
    86     bool ok = false;
       
    87     mUiLoader->load( DOCML_PLAYLOGVIEW_FILE, itemCount ? SECTION_SHOW_LIST : SECTION_HIDE_LIST, &ok );
       
    88 }
       
    89 
       
    90 /*!
       
    91  * Private slot
       
    92  *
       
    93  */
       
    94 void RadioPlayLogView::listItemClicked( const QModelIndex& index )
       
    95 {
       
    96     showContextMenu( index );
       
    97 }
       
    98 
       
    99 /*!
       
   100  * Private slot
       
   101  *
       
   102  */
       
   103 void RadioPlayLogView::listItemLongPressed( HbAbstractViewItem* item, const QPointF& coords )
       
   104 {
       
   105     Q_UNUSED( coords );
       
   106     showContextMenu( item->modelIndex() );
       
   107 }
       
   108 
       
   109 /*!
       
   110  * \reimp
    41  *
   111  *
    42  */
   112  */
    43 void RadioPlayLogView::init( RadioMainWindow* aMainWindow, RadioStationModel* aModel )
   113 void RadioPlayLogView::init( RadioMainWindow* aMainWindow, RadioStationModel* aModel )
    44 {
   114 {
    45     LOG_METHOD;
   115     LOG_METHOD;
    46     mMainWindow = aMainWindow;
   116     mMainWindow = aMainWindow;
    47     mModel = aModel;
   117     mModel = aModel;
    48 
   118 
    49     RadioPlayLogModel* playLogModel = &mMainWindow->uiEngine().playLogModel();
   119     RadioPlayLogModel* playLogModel = &mMainWindow->uiEngine().playLogModel();
       
   120     playLogModel->setShowDetails( mOrientation == Qt::Horizontal );
    50 
   121 
    51     mPlayLogList = mUiLoader->findObject<HbListView>( DOCML_NAME_PLAYLOGLIST );
   122     mPlayLogList = mUiLoader->findObject<HbListView>( DOCML_NAME_PLAYLOGLIST );
    52     mPlayLogList->setScrollingStyle( HbListView::PanOrFlick );
   123     mPlayLogList->setScrollingStyle( HbListView::PanOrFlick );
    53     mPlayLogList->setModel( playLogModel );
   124     mFilterModel = mMainWindow->uiEngine().createNewFilterModel( this );
       
   125     mFilterModel->setSourceModel( playLogModel );
       
   126     mPlayLogList->setModel( mFilterModel );
    54     mPlayLogList->setSelectionMode( HbListView::NoSelection );
   127     mPlayLogList->setSelectionMode( HbListView::NoSelection );
    55     mPlayLogList->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding );
   128     mPlayLogList->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding );
    56 
   129 
       
   130     mAllSongsButton     = mUiLoader->findObject<HbAction>( DOCML_NAME_ALLSONGSBUTTON );
       
   131     mFavoritesButton    = mUiLoader->findObject<HbAction>( DOCML_NAME_FAVORITESONGSBUTTON );
       
   132 
    57     HbAction* removeAction = mUiLoader->findObject<HbAction>( DOCML_NAME_PLV_REMOVEALLACTION );
   133     HbAction* removeAction = mUiLoader->findObject<HbAction>( DOCML_NAME_PLV_REMOVEALLACTION );
    58     connectAndTest( removeAction, SIGNAL(triggered()), playLogModel, SLOT(removeAll()) );
   134     connectAndTest( removeAction, SIGNAL(triggered()), this, SLOT(clearList()) );
    59 
   135 
    60     // "Go to tuning view" menu item
   136     connectAndTest( mFavoritesButton,       SIGNAL(triggered() ),
    61     connectViewChangeMenuItem( DOCML_NAME_PLV_TUNINGVIEWACTION, SLOT(activateTuningView()) );
   137                     this,                   SLOT(deckButtonPressed() ) );
       
   138     connectAndTest( mAllSongsButton,        SIGNAL(triggered() ),
       
   139                     this,                   SLOT(deckButtonPressed() ) );
       
   140     connectAndTest( playLogModel,           SIGNAL(itemAdded() ),
       
   141                     this,                   SLOT(updateVisibilities() ) );
       
   142     updateVisibilities();
       
   143     
       
   144     initBackAction();
       
   145 }
    62 
   146 
    63     // "Go to stations view" menu item
   147 /*!
    64     connectViewChangeMenuItem( DOCML_NAME_PLV_STATIONSVIEWACTION, SLOT(activateStationsView()) );
   148  * \reimp
       
   149  *
       
   150  */
       
   151 void RadioPlayLogView::setOrientation()
       
   152 {
       
   153     RadioPlayLogModel& model = mMainWindow->uiEngine().playLogModel();
       
   154     model.setShowDetails( mOrientation == Qt::Horizontal );
    65 }
   155 }
       
   156 
       
   157 /*!
       
   158  * \reimp
       
   159  *
       
   160  */
       
   161 void RadioPlayLogView::showContextMenu( const QModelIndex& index )
       
   162 {
       
   163     QModelIndex sourceIndex = mFilterModel->mapToSource( index );
       
   164 
       
   165     HbMenu* menu = new HbMenu();
       
   166     HbAction* action = menu->addAction( "Set favorite" );
       
   167     menu->exec();
       
   168 
       
   169 //    RadioPlayLogItem item = mFilterModel->data( index, )
       
   170 
       
   171     //    QModelIndex sourceIndex = mFilterModel->mapToSource( item->modelIndex() );
       
   172     //    RadioStation station = mModel->stationAt( sourceIndex.row() );
       
   173     //    RADIO_ASSERT( station.isValid() , "FMRadio", "invalid RadioStation");
       
   174     //
       
   175     //    RadioContextMenu* menu = mUiLoader->findObject<RadioContextMenu>( DOCML_NAME_CONTEXT_MENU );
       
   176     //    menu->init( station, *mUiLoader );
       
   177     //    menu->setPos( QPointF( size().width() / 2 - menu->size().width() / 2, coords.y() - menu->size().height() / 2 ) );
       
   178     //    menu->exec();
       
   179 }