messagingapp/msgui/unifiedviewer/src/univieweraudiowidget.cpp
changeset 37 518b245aa84c
child 51 3507212d340e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingapp/msgui/unifiedviewer/src/univieweraudiowidget.cpp	Fri Jun 25 15:47:40 2010 +0530
@@ -0,0 +1,146 @@
+/*
+ * 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: This widget is used to display audio content in univiewer.
+ *
+ */
+#include "univieweraudiowidget.h"
+
+// SYSTEM INCLUDES
+#include <QFileInfo>
+#include <QTimer>
+#include <HbMenu>
+
+// USER INCLUDES
+#include "msgmediautil.h"
+#include "univiewerutils.h"
+#include "unidatamodelplugininterface.h"
+
+// LOCAL CONSTANTS
+#define LOC_OPEN    hbTrId("txt_common_menu_open")
+#define LOC_SAVE    hbTrId("txt_common_menu_save")
+
+const QString AUDIO_ICON("qtg_mono_audio");
+const QString CORRUPTED_AUDIO_ICON("qtg_mono_corrupted");
+
+//----------------------------------------------------------------------------
+// UniViewerAudioWidget::UniViewerAudioWidget
+// @see header file
+//----------------------------------------------------------------------------
+UniViewerAudioWidget::UniViewerAudioWidget(QGraphicsItem *parent) :
+    HbPushButton(parent), mViewerUtils(0)
+{
+    connect(this, SIGNAL(clicked()), this, SLOT(handleShortTap()));
+    connect(this, SIGNAL(longPress(QPointF)), this, SLOT(handleLongTap(QPointF)));
+}
+
+//----------------------------------------------------------------------------
+// UniViewerAudioWidget::~UniViewerAudioWidget
+// @see header file
+//----------------------------------------------------------------------------
+UniViewerAudioWidget::~UniViewerAudioWidget()
+{
+}
+
+//----------------------------------------------------------------------------
+// UniViewerAudioWidget::~UniViewerAudioWidget
+// @see header file
+//----------------------------------------------------------------------------
+void UniViewerAudioWidget::populate(UniMessageInfo *info)
+{
+    mMimeType = info->mimetype();
+    mMediaPath = info->path();
+
+    HbIcon audioIcon;
+    if (info->isProtected()) {
+        audioIcon.setIconName(AUDIO_ICON);
+    }
+    else if (info->isCorrupted()) {
+        audioIcon.setIconName(CORRUPTED_AUDIO_ICON);
+    }
+    else {
+        audioIcon.setIconName(AUDIO_ICON);
+    }
+
+    this->setIcon(audioIcon);
+    QFileInfo fileInfo(mMediaPath);
+    this->setText(fileInfo.baseName());
+    this->setTextAlignment(Qt::AlignLeft);
+    MsgMediaUtil mediaUtil;
+    this->setAdditionalText(mediaUtil.mediaDuration(mMediaPath));
+}
+
+//----------------------------------------------------------------------------
+// UniViewerAudioWidget::handleShortTap
+// @see header file
+//----------------------------------------------------------------------------
+void UniViewerAudioWidget::handleShortTap()
+{
+    emit shortTap(mMediaPath);
+
+    // Open the media.
+    handleOpen();
+}
+
+//----------------------------------------------------------------------------
+// UniViewerAudioWidget::handleLongTap
+// @see header file
+//----------------------------------------------------------------------------
+void UniViewerAudioWidget::handleLongTap(const QPointF &position)
+{
+    emit longTap(position);
+
+    // Display context sensitive menu.
+    HbMenu* menu = new HbMenu;
+    menu->setAttribute(Qt::WA_DeleteOnClose);
+    menu->addAction(LOC_OPEN, this, SLOT(handleOpen()));
+    menu->addAction(LOC_SAVE, this, SLOT(handleSave()));
+    menu->setPreferredPos(position);
+    menu->show();
+}
+
+//----------------------------------------------------------------------------
+// UniViewerAudioWidget::handleOpen
+// @see header file
+//----------------------------------------------------------------------------
+void UniViewerAudioWidget::handleOpen()
+{
+    this->ungrabGesture(Qt::TapGesture);
+    
+    if (!mViewerUtils) {
+        mViewerUtils = new UniViewerUtils(this);
+    }
+    mViewerUtils->launchContentViewer(mMimeType, mMediaPath);
+    
+    //fire timer to regrab gesture after some delay.
+    QTimer::singleShot(300,this,SLOT(regrabGesture()));
+}
+
+//----------------------------------------------------------------------------
+// UniViewerAudioWidget::handleSave
+// @see header file
+//----------------------------------------------------------------------------
+void UniViewerAudioWidget::handleSave()
+{
+
+}
+
+//---------------------------------------------------------------
+// UniViewerAudioWidget::regrabGesture
+// @see header file
+//---------------------------------------------------------------
+void UniViewerAudioWidget::regrabGesture()
+{
+    this->grabGesture(Qt::TapGesture);
+}
+// EOF