messagingapp/msgui/msgaudiofetcher/src/msgaudiofetcherdialog.cpp
changeset 70 a15d9966050f
--- /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