--- a/radioapp/radiowidgets/src/radioplaylogview.cpp Fri Mar 19 09:29:04 2010 +0200
+++ b/radioapp/radiowidgets/src/radioplaylogview.cpp Fri Apr 16 14:58:55 2010 +0300
@@ -16,8 +16,10 @@
*/
// System includes
-#include <hblistview.h>
-#include <hbaction.h>
+#include <HbListView>
+#include <HbAction>
+#include <HbAbstractViewItem>
+#include <HbMenu>
// User includes
#include "radioplaylogview.h"
@@ -25,19 +27,87 @@
#include "radiologger.h"
#include "radioxmluiloader.h"
#include "radiouiengine.h"
+#include "radiostationfiltermodel.h"
#include "radioplaylogmodel.h"
+const char* SECTION_SHOW_LIST = "show_list";
+const char* SECTION_HIDE_LIST = "hide_list";
+const char* SECTION_HISTORY_MODE = "history_mode";
+const char* SECTION_FAVORITE_MODE = "favorite_mode";
+
/*!
*
*/
RadioPlayLogView::RadioPlayLogView( RadioXmlUiLoader* uiLoader ) :
RadioViewBase( uiLoader ),
- mPlayLogList( 0 )
+ mPlayLogList( 0 ),
+ mAllSongsButton( 0 ),
+ mFavoritesButton( 0 )
{
}
/*!
- * From RadioViewBase
+ * Private slot
+ *
+ */
+void RadioPlayLogView::deckButtonPressed()
+{
+ bool ok = false;
+ if ( sender() == mFavoritesButton ) {
+ mUiLoader->load( DOCML_PLAYLOGVIEW_FILE, SECTION_FAVORITE_MODE, &ok );
+ } else {
+ mUiLoader->load( DOCML_PLAYLOGVIEW_FILE, SECTION_HISTORY_MODE, &ok );
+ }
+
+ const bool showFavorites = mFavoritesButton->isChecked();
+// mFilterModel->setTypeFilter( showFavorites ? RadioStation::Favorite
+// : RadioStation::LocalStation );
+
+ updateVisibilities();
+}
+
+/*!
+ * Private slot
+ *
+ */
+void RadioPlayLogView::clearList()
+{
+ mMainWindow->uiEngine().playLogModel().removeAll();
+ updateVisibilities();
+}
+
+/*!
+ * Private slot
+ *
+ */
+void RadioPlayLogView::updateVisibilities()
+{
+ const int itemCount = mMainWindow->uiEngine().playLogModel().rowCount();
+ bool ok = false;
+ mUiLoader->load( DOCML_PLAYLOGVIEW_FILE, itemCount ? SECTION_SHOW_LIST : SECTION_HIDE_LIST, &ok );
+}
+
+/*!
+ * Private slot
+ *
+ */
+void RadioPlayLogView::listItemClicked( const QModelIndex& index )
+{
+ showContextMenu( index );
+}
+
+/*!
+ * Private slot
+ *
+ */
+void RadioPlayLogView::listItemLongPressed( HbAbstractViewItem* item, const QPointF& coords )
+{
+ Q_UNUSED( coords );
+ showContextMenu( item->modelIndex() );
+}
+
+/*!
+ * \reimp
*
*/
void RadioPlayLogView::init( RadioMainWindow* aMainWindow, RadioStationModel* aModel )
@@ -47,19 +117,63 @@
mModel = aModel;
RadioPlayLogModel* playLogModel = &mMainWindow->uiEngine().playLogModel();
+ playLogModel->setShowDetails( mOrientation == Qt::Horizontal );
mPlayLogList = mUiLoader->findObject<HbListView>( DOCML_NAME_PLAYLOGLIST );
mPlayLogList->setScrollingStyle( HbListView::PanOrFlick );
- mPlayLogList->setModel( playLogModel );
+ mFilterModel = mMainWindow->uiEngine().createNewFilterModel( this );
+ mFilterModel->setSourceModel( playLogModel );
+ mPlayLogList->setModel( mFilterModel );
mPlayLogList->setSelectionMode( HbListView::NoSelection );
mPlayLogList->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding );
+ mAllSongsButton = mUiLoader->findObject<HbAction>( DOCML_NAME_ALLSONGSBUTTON );
+ mFavoritesButton = mUiLoader->findObject<HbAction>( DOCML_NAME_FAVORITESONGSBUTTON );
+
HbAction* removeAction = mUiLoader->findObject<HbAction>( DOCML_NAME_PLV_REMOVEALLACTION );
- connectAndTest( removeAction, SIGNAL(triggered()), playLogModel, SLOT(removeAll()) );
+ connectAndTest( removeAction, SIGNAL(triggered()), this, SLOT(clearList()) );
+
+ connectAndTest( mFavoritesButton, SIGNAL(triggered() ),
+ this, SLOT(deckButtonPressed() ) );
+ connectAndTest( mAllSongsButton, SIGNAL(triggered() ),
+ this, SLOT(deckButtonPressed() ) );
+ connectAndTest( playLogModel, SIGNAL(itemAdded() ),
+ this, SLOT(updateVisibilities() ) );
+ updateVisibilities();
+
+ initBackAction();
+}
- // "Go to tuning view" menu item
- connectViewChangeMenuItem( DOCML_NAME_PLV_TUNINGVIEWACTION, SLOT(activateTuningView()) );
+/*!
+ * \reimp
+ *
+ */
+void RadioPlayLogView::setOrientation()
+{
+ RadioPlayLogModel& model = mMainWindow->uiEngine().playLogModel();
+ model.setShowDetails( mOrientation == Qt::Horizontal );
+}
- // "Go to stations view" menu item
- connectViewChangeMenuItem( DOCML_NAME_PLV_STATIONSVIEWACTION, SLOT(activateStationsView()) );
+/*!
+ * \reimp
+ *
+ */
+void RadioPlayLogView::showContextMenu( const QModelIndex& index )
+{
+ QModelIndex sourceIndex = mFilterModel->mapToSource( index );
+
+ HbMenu* menu = new HbMenu();
+ HbAction* action = menu->addAction( "Set favorite" );
+ menu->exec();
+
+// RadioPlayLogItem item = mFilterModel->data( index, )
+
+ // QModelIndex sourceIndex = mFilterModel->mapToSource( item->modelIndex() );
+ // RadioStation station = mModel->stationAt( sourceIndex.row() );
+ // RADIO_ASSERT( station.isValid() , "FMRadio", "invalid RadioStation");
+ //
+ // RadioContextMenu* menu = mUiLoader->findObject<RadioContextMenu>( DOCML_NAME_CONTEXT_MENU );
+ // menu->init( station, *mUiLoader );
+ // menu->setPos( QPointF( size().width() / 2 - menu->size().width() / 2, coords.y() - menu->size().height() / 2 ) );
+ // menu->exec();
}