radioapp/radiowidgets/src/radiohistoryview.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 03 May 2010 12:31:41 +0300
changeset 16 f54ebcfc1b80
child 19 afea38384506
permissions -rw-r--r--
Revision: 201015 Kit: 201018

/*
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:
*
*/

// System includes
#include <HbListView>
#include <HbAction>
#include <HbAbstractViewItem>
#include <HbMenu>
#include <HbMessageBox>

// User includes
#include "radiohistoryview.h"
#include "radiomainwindow.h"
#include "radiologger.h"
#include "radioxmluiloader.h"
#include "radiouiengine.h"
#include "radiostationfiltermodel.h"
#include "radiohistorymodel.h"

/*!
 *
 */
RadioHistoryView::RadioHistoryView() :
    RadioViewBase(),
    mHistoryList( 0 ),
    mAllSongsButton( 0 ),
    mTaggedSongsButton( 0 ),
    mFilterModel( 0 )
{
}

/*!
 * Private slot
 *
 */
void RadioHistoryView::deckButtonPressed()
{
    if ( sender() == mTaggedSongsButton ) {
        loadSection( DOCML::FILE_HISTORYVIEW, DOCML::HV_SECTION_FAVORITE_MODE );
    } else {
        loadSection( DOCML::FILE_HISTORYVIEW, DOCML::HV_SECTION_HISTORY_MODE );
    }

    const bool showFavorites = mTaggedSongsButton->isChecked();
//    mFilterModel->setTypeFilter( showFavorites ? RadioStation::Favorite
//                                               : RadioStation::LocalStation );

    updateVisibilities();
}

/*!
 * Private slot
 *
 */
void RadioHistoryView::clearList()
{
    const bool answer = HbMessageBox::question( hbTrId( "txt_rad_info_clear_recently_played_songs_list" ) );

    if ( answer ) {
        mMainWindow->uiEngine().historyModel().removeAll();
        updateVisibilities();
    }
}

/*!
 * Private slot
 *
 */
void RadioHistoryView::updateVisibilities()
{
    const int itemCount = mMainWindow->uiEngine().historyModel().rowCount();
    loadSection( DOCML::FILE_HISTORYVIEW, itemCount ? DOCML::HV_SECTION_SHOW_LIST : DOCML::HV_SECTION_HIDE_LIST );
}

/*!
 * Private slot
 *
 */
void RadioHistoryView::listItemClicked( const QModelIndex& index )
{
    showContextMenu( index );
}

/*!
 * Private slot
 *
 */
void RadioHistoryView::listItemLongPressed( HbAbstractViewItem* item, const QPointF& coords )
{
    Q_UNUSED( coords );
    showContextMenu( item->modelIndex() );
}

/*!
 * \reimp
 *
 */
void RadioHistoryView::init( RadioXmlUiLoader* uiLoader, RadioMainWindow* mainWindow )
{
    LOG_METHOD;
    mUiLoader.reset( uiLoader );
    mMainWindow = mainWindow;

    RadioHistoryModel* historyModel = &mMainWindow->uiEngine().historyModel();
    historyModel->setShowDetails( mOrientation == Qt::Horizontal );

    mHistoryList = mUiLoader->findObject<HbListView>( DOCML::HV_NAME_HISTORY_LIST );
    mHistoryList->setScrollingStyle( HbListView::PanOrFlick );
    mFilterModel = mMainWindow->uiEngine().createNewFilterModel( this );
    mFilterModel->setSourceModel( historyModel );
    mHistoryList->setModel( mFilterModel );
    mHistoryList->setSelectionMode( HbListView::NoSelection );
    mHistoryList->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding );

    mAllSongsButton     = mUiLoader->findObject<HbAction>( DOCML::HV_NAME_ALL_SONGS_BUTTON );
    mTaggedSongsButton    = mUiLoader->findObject<HbAction>( DOCML::HV_NAME_TAGGED_SONGS_BUTTON );

    HbAction* clearListAction = mUiLoader->findObject<HbAction>( DOCML::HV_NAME_CLEAR_LIST_ACTION );
    connectAndTest( 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() ) );
    updateVisibilities();
    
    initBackAction();
}

/*!
 * \reimp
 *
 */
void RadioHistoryView::setOrientation()
{
    RadioHistoryModel& model = mMainWindow->uiEngine().historyModel();
    model.setShowDetails( mOrientation == Qt::Horizontal );
}

/*!
 * \reimp
 *
 */
void RadioHistoryView::showContextMenu( const QModelIndex& index )
{
    QModelIndex sourceIndex = mFilterModel->mapToSource( index );

    HbMenu* menu = new HbMenu();
    HbAction* action = menu->addAction( "Set favorite" );
    menu->exec();

//    RadioHistoryItem item = mFilterModel->data( index, )
}