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 } |