diff -r 84d9eb65b26f -r 518b245aa84c messagingapp/msgui/msgaudiofetcher/src/msgaudiofetcherwidget.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingapp/msgui/msgaudiofetcher/src/msgaudiofetcherwidget.cpp Fri Jun 25 15:47:40 2010 +0530 @@ -0,0 +1,140 @@ +/* + * 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: + * The source file for messaging's audio fetcher widget. + * + */ + +// SYSTEM INCLUDES +#include +#include +#include +#include +#include + +// USER INCLUDES +#include "msgaudiofetcherwidget.h" +#include "msgaudiofetchermodel.h" +#include "msgaudiopreview.h" + +// LOCALIZED CONSTANTS +#define LOC_SELECT_SOUND hbTrId("txt_messaging_title_select_a_sound") + + +MsgAudioFetcherWidget::MsgAudioFetcherWidget() + : HbWidget(this), + mLabel(0), + mListView(0), + mLayout(0), + mFetcherModel(0), + mAudioPreview(0), + mSelected(false) +{ + init(); +} + +MsgAudioFetcherWidget::~MsgAudioFetcherWidget() +{ +} + +QString MsgAudioFetcherWidget::getCurrentItemPath() +{ + QModelIndexList modelIndexList = mListView->selectionModel()->selectedIndexes(); + if(modelIndexList.count() > 0) + { + QModelIndex index = modelIndexList.at(0); + QString temppath = + mFetcherModel->data(index, Qt::UserRole).toString(); + return QDir::toNativeSeparators(temppath); + } + return QString(); +} + +void MsgAudioFetcherWidget::playOrPause() +{ + mAudioPreview->SetAttr(getCurrentItemPath()); + mAudioPreview->Play(); +} + +void MsgAudioFetcherWidget::on_list_activated(const QModelIndex &index) +{ + QModelIndexList modelIndexList = mListView->selectionModel()->selectedIndexes(); + + //stop previewing when clicking another item. + if (mAudioPreview->IsPlaying()) { + mAudioPreview->SetAttr(getCurrentItemPath()); + mAudioPreview->Play(); + + } + + /* + * when one item is selected, reselecting it will deselect it. selecting another + * will also deselect it, while the other is selected. + */ + if(mSelected) + { + if(mOldSeletedItem != index) + { + mListView->selectionModel()->select(index, QItemSelectionModel::Select); + mOldSeletedItem = index; + emit triggerToolBar(true); + } + else + { + mListView->selectionModel()->select(index, QItemSelectionModel::Deselect); + mSelected = false; + emit triggerToolBar(false); + } + return; + } + + if(modelIndexList.count() > 0) + { + QModelIndexList::const_iterator it; + for(it=modelIndexList.begin(); it!=modelIndexList.end(); ++it) + { + if((*it) == index) + { + mSelected = true; + mOldSeletedItem = index; + emit triggerToolBar(true); + } + } + } +} + +void MsgAudioFetcherWidget::init() +{ + mLayout = new QGraphicsLinearLayout(this); + mLayout->setOrientation(Qt::Vertical); + setLayout(mLayout); + + mLabel = new HbLabel(this); + // TODO: need localized string + mLabel->setPlainText(LOC_SELECT_SOUND); + mLayout->addItem(mLabel); + + mListView = new HbListView(this); + mListView->setObjectName("list"); + mLayout->addItem(mListView); + mListView->setSelectionMode(HbAbstractItemView::SingleSelection); + + mFetcherModel = new MsgAudioFetcherModel(this); + mListView->setModel(mFetcherModel); + connect(mListView, SIGNAL(activated(QModelIndex)), + this, SLOT(on_list_activated(QModelIndex))); + mAudioPreview = new MsgAudioPreview(this); +} + +//End of File