diff -r 8ba0afbb4637 -r a15d9966050f messagingapp/msgui/msgaudiofetcher/src/msgaudiofetcherdialog.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingapp/msgui/msgaudiofetcher/src/msgaudiofetcherdialog.cpp Fri Sep 17 08:28:39 2010 +0300 @@ -0,0 +1,203 @@ +/* + * Copyright (c) 2010 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 dialog. + * + */ + +// SYSTEM INCLUDES +#include +#include +#include +#include +#include +#include +#include + +// USER INCLUDES +#include "msgaudiofetcherdialog.h" +#include "msgaudiofetchermodel.h" +#include "msgaudiopreview.h" + +#define LOC_SELECT_SELECT hbTrId("txt_common_button_select") +#define LOC_SELECT_CANCEL hbTrId("txt_common_button_cancel") +#define LOC_SELECT_SOUND hbTrId("txt_messaging_title_select_a_sound") + +const QString LIST_ITEM_TITLE("qtc_list_item_title_normal"); + +MsgAudioFetcherDialog::MsgAudioFetcherDialog(QGraphicsItem *parent) : + HbDialog(parent), + mListView(NULL), + mFetcherModel(NULL), + mAudioPreview(NULL), + mSelected(false) +{ + setDismissPolicy(HbDialog::NoDismiss); + setFrameType(HbDialog::Strong); + setModal(true); + + initActions(); + initMainWidget(); + + connect( + this, + SIGNAL(aboutToClose()), + this, + SLOT(reset())); + + //TODO: Goal was to put in viewReady, but connect is + //not working since it only works for views not dialogs + doDelayedConstruction(); +} + +MsgAudioFetcherDialog::~MsgAudioFetcherDialog() +{ + //do nothing +} + +void MsgAudioFetcherDialog::initMainWidget() +{ + //set heading + HbTextItem* heading = new HbTextItem( + LOC_SELECT_SOUND, + this); + QColor color = HbColorScheme::color( LIST_ITEM_TITLE ); + heading->setTextColor( color ); + heading->setAlignment(Qt::AlignLeft); + setHeadingWidget(heading); +} + +void MsgAudioFetcherDialog::initActions() +{ + mLeftAction = new HbAction(this); + mLeftAction->setText(LOC_SELECT_SELECT); + addAction(mLeftAction); + mLeftAction->setEnabled(false); + + HbAction* rightAction = new HbAction(this); + rightAction->setText(LOC_SELECT_CANCEL); + rightAction->setEnabled(true); + addAction(rightAction); + + connect(mLeftAction, + SIGNAL(triggered()), + this, + SLOT(onSelectAction())); + + connect(rightAction, + SIGNAL(triggered()), + this, + SLOT(onCancelAction())); +} + +QString MsgAudioFetcherDialog::getCurrentItemPath() +{ + if (mSeletedItem.isValid()) + { + QString temppath = + mFetcherModel->data( + mSeletedItem, + Qt::UserRole).toString(); + //return the path + return QDir::toNativeSeparators(temppath); + } + return QString(); +} + +void MsgAudioFetcherDialog::doDelayedConstruction() +{ + //set the content list + mListView = new HbListView(this); + Q_ASSERT(mListView); + mListView->setSelectionMode( + HbAbstractItemView::SingleSelection); + mFetcherModel = new MsgAudioFetcherModel(this); + mListView->setModel(mFetcherModel); + mListView->setUniformItemSizes(true); + setContentWidget(mListView); + connect(mListView, SIGNAL(activated(QModelIndex)), + this, SLOT(on_list_activated(QModelIndex))); + + //initializes the audio preview + mAudioPreview = new MsgAudioPreview(this); +} + +void MsgAudioFetcherDialog::onSelectAction() +{ + //stop the playing file + if (mAudioPreview->IsPlaying()) { + mAudioPreview->Stop(); + } + + //emit the selected sound file + QString filePath = getCurrentItemPath(); + emit audioSelected(filePath); + + //close the dialog + close(); +} + +void MsgAudioFetcherDialog::onCancelAction() +{ + //stop the playing file and return + if (mAudioPreview->IsPlaying()) { + mAudioPreview->Stop(); + } + close(); + return; +} + +void MsgAudioFetcherDialog::reset() +{ + mSelected = false; + mLeftAction->setEnabled(false); + + //list scroll to top + mListView->scrollTo( + mListView->model( + )->index(0,0)); + + //deselect the selected item + mListView->selectionModel( + )->select( + mSeletedItem, + QItemSelectionModel::Deselect); +} + +void MsgAudioFetcherDialog::on_list_activated( + const QModelIndex &index) +{ + //stop previewing when clicking another item. + if (mAudioPreview->IsPlaying()) { + mAudioPreview->SetAttr(getCurrentItemPath()); + mAudioPreview->Play(); + } + + //enable the action select + if(!mSelected) + { + mLeftAction->setEnabled(true); + mSelected = true; + } + + //save the latest selected + mSeletedItem = index; + + //start play the item + mAudioPreview->SetAttr(getCurrentItemPath()); + mAudioPreview->Play(); + + return; +} +//End of File