messagingapp/msgui/unifiededitor/src/msgunieditorattachment.cpp
changeset 23 238255e8b033
child 25 84d9eb65b26f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingapp/msgui/unifiededitor/src/msgunieditorattachment.cpp	Fri Apr 16 14:56:15 2010 +0300
@@ -0,0 +1,165 @@
+/*
+ * 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:
+ *
+ */
+
+// INCLUDES
+#include "debugtraces.h"
+#include <HbTextItem>
+#include <HbIconItem>
+#include <QFileInfo>
+#include <QFont>
+#include <HbPushButton>
+#include <HbFrameDrawer>
+#include <HbMenu>
+#include <MsgMimeTypes.h>
+
+// USER INCLUDES
+#include "msgunieditorattachment.h"
+#include "unieditorgenutils.h"
+#include "s60qconversions.h"
+
+// Constants
+#define BYTES_TO_KBYTES_FACTOR 1024
+#define BG_FRAME "qtg_fr_groupbox"
+
+MsgUnifiedEditorAttachment::MsgUnifiedEditorAttachment( const QString& pluginPath,
+                                                        const QString& attachmentpath,
+                                                        const int filesize,
+                                                        QGraphicsItem *parent ) :
+HbWidget(parent),
+mPluginPath(pluginPath),
+mPath(attachmentpath),
+mSize(filesize),
+mMimeType(QString()),
+mAttachmentIcon(0),
+mAttachmentName(0),
+mFrameItem(0)
+{
+#ifdef _DEBUG_TRACES_
+    qDebug() << "MsgUnifiedEditorAttachment calling HbStyle::registerPlugin";
+#endif
+
+        setPluginBaseId(style()->registerPlugin(mPluginPath));
+
+        mAttachmentIcon = new HbIconItem(":/qtg_small_attachment.svg", this);
+        HbStyle::setItemName(mAttachmentIcon,"attachmentIcon");
+
+        // TODO: use utility to get mimetype and size
+        int at_size = 0;
+        TMsgMediaType mediaType = EMsgMediaUnknown;
+        UniEditorGenUtils* genUtils = new UniEditorGenUtils;
+        TRAP_IGNORE(genUtils->getFileInfoL(mPath,at_size,
+                                           mMimeType,mediaType));
+        delete genUtils;
+        QFileInfo fileinfo(attachmentpath);
+        QString filename = fileinfo.fileName();
+        mAttachmentName = new HbTextItem(filename,this);
+        HbStyle::setItemName(mAttachmentName,"attachmentName");
+        mAttachmentName->setElideMode(Qt::ElideRight);
+
+        int sizeInKb = mSize/BYTES_TO_KBYTES_FACTOR;
+        QString fileDetails;
+        if(sizeInKb > 1)
+        {
+            fileDetails = QString().append(QString("(%1 Kb)").arg(sizeInKb));
+        }
+        else
+        {
+            fileDetails = QString().append(QString("(%1 B)").arg(mSize));
+        }
+
+        mAttachmentDetails = new HbTextItem(fileDetails, this);
+        HbStyle::setItemName(mAttachmentDetails,"attachmentDetails");
+        mAttachmentDetails->setElideMode(Qt::ElideNone);
+
+        // set underlined font
+        QFont underlinedFont(this->font());
+        underlinedFont.setUnderline(true);
+        mAttachmentName->setFont(underlinedFont);
+        mAttachmentDetails->setFont(underlinedFont);
+
+        mFrameItem = new HbPushButton(this);
+        HbStyle::setItemName(mFrameItem, "bgFrame");
+        HbFrameDrawer *fd = new HbFrameDrawer(BG_FRAME, HbFrameDrawer::NinePieces);
+        mFrameItem->setFrameBackground(fd);
+        connect(mFrameItem, SIGNAL(clicked(bool)), this, SIGNAL(clicked()));
+        connect(mFrameItem, SIGNAL(longPress(QPointF)), this, SLOT(longPressed(QPointF)));
+}
+
+MsgUnifiedEditorAttachment::~MsgUnifiedEditorAttachment()
+{
+    style()->unregisterPlugin(mPluginPath);
+}
+
+const QString& MsgUnifiedEditorAttachment::path()
+{
+    return mPath;
+}
+
+qreal MsgUnifiedEditorAttachment::size()
+{
+    return mSize;
+}
+
+const QString& MsgUnifiedEditorAttachment::mimeType()
+{
+    return mMimeType;
+}
+
+void MsgUnifiedEditorAttachment::longPressed(QPointF position)
+{
+    HbMenu* menu = new HbMenu;
+    menu->addAction(tr("Open"), this, SLOT(openAttachment()));
+    menu->addAction(tr("Remove"), this, SLOT(removeAttachment()));
+    menu->addAction(tr("View details"), this, SLOT(viewDetails()));
+    menu->setDismissPolicy(HbPopup::TapAnywhere);
+    menu->setAttribute(Qt::WA_DeleteOnClose, true);
+    menu->setPreferredPos(position);
+    menu->show();
+}
+
+void MsgUnifiedEditorAttachment::removeAttachment()
+{
+    emit deleteMe(this);
+}
+
+void MsgUnifiedEditorAttachment::openAttachment()
+{
+    //open corresponding viewer app.
+}
+
+void MsgUnifiedEditorAttachment::viewDetails()
+{
+    //open details view.
+}
+
+bool MsgUnifiedEditorAttachment::isMultimediaContent()
+{
+    bool ret = true;
+    QString vcard = S60QConversions::s60Desc8ToQString(KMsgMimeVCard());
+    QString vcal = S60QConversions::s60Desc8ToQString(KMsgMimeVCal());
+    QString ical = S60QConversions::s60Desc8ToQString(KMsgMimeICal());
+    if( !QString::compare(mMimeType, vcard, Qt::CaseInsensitive) ||
+        !QString::compare(mMimeType, vcal, Qt::CaseInsensitive) ||
+        !QString::compare(mMimeType, ical, Qt::CaseInsensitive) )
+    {
+        // vcard, vcal are not mm content
+        ret = false;
+    }
+    return ret;
+}
+
+// EOF