--- /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 <hbaction.h>
+#include <HbStyleLoader>
+#include <HbTextItem>
+#include <HbColorScheme>
+#include <HbListView>
+#include <QModelIndex>
+#include <QStandardItemModel>
+
+// 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