messagingapp/msgui/unifiededitor/src/msgunieditorsubject.cpp
changeset 31 ebfee66fde93
child 34 84197e66a4bd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingapp/msgui/unifiededitor/src/msgunieditorsubject.cpp	Fri Jun 04 10:25:39 2010 +0100
@@ -0,0 +1,162 @@
+/*
+ * 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 <HbIconItem>
+#include <HbNotificationDialog>
+
+// USER INCLUDES
+#include "msgunieditorsubject.h"
+#include "UniEditorGenUtils.h"
+#include "msgunifiededitorlineedit.h"
+#include "msgmonitor.h"
+
+// Localized Constants
+#define LOC_SUBJECT hbTrId("txt_messaging_formlabel_subject")
+#define LOC_UNABLE_TO_ADD_CONTENT hbTrId("txt_messaging_dpopinfo_unable_to_add_more_content")
+
+//priority icon
+const QString HIGH_PRIORITY("qtg_small_priority_high");
+const QString LOW_PRIORITY("qtg_small_priority_low");
+
+//---------------------------------------------------------------
+// MsgUnifiedEditorSubject::MsgUnifiedEditorSubject
+// @see header file
+//---------------------------------------------------------------
+MsgUnifiedEditorSubject::MsgUnifiedEditorSubject( QGraphicsItem *parent ) :
+MsgUnifiedEditorBaseWidget(parent),
+mPriorityIcon(NULL),
+mPriority(ConvergedMessage::Normal),
+mGenUtils(0)
+{
+        mSubjectEdit = new MsgUnifiedEditorLineEdit(LOC_SUBJECT,this);
+        mSubjectEdit->setDefaultBehaviour(true);        
+        HbStyle::setItemName(mSubjectEdit,"subjectEdit");
+        mSubjectEdit->setMinRows(1);
+        mSubjectEdit->setMaxRows(10);
+        
+        mGenUtils = new UniEditorGenUtils();
+        
+        connect(mSubjectEdit, SIGNAL(contentsChanged(const QString&)),
+                this, SLOT(onContentsChanged(const QString&)));
+}
+
+//---------------------------------------------------------------
+// MsgUnifiedEditorSubject::~MsgUnifiedEditorSubject
+// @see header file
+//---------------------------------------------------------------
+MsgUnifiedEditorSubject::~MsgUnifiedEditorSubject()
+{
+    if(mGenUtils)
+    {
+        delete mGenUtils;
+        mGenUtils = NULL;
+    }
+}
+
+void MsgUnifiedEditorSubject::setPriority(ConvergedMessage::Priority priority)
+{
+	mPriority = priority;
+    if(mPriorityIcon)
+    {// Transition from low/high => low/normal/high
+        mPriorityIcon->setParent(NULL);
+        delete mPriorityIcon;
+        mPriorityIcon = NULL;
+    }
+
+    switch(priority)
+    {
+        case ConvergedMessage::High :
+        {
+        mPriorityIcon = new HbIconItem(HIGH_PRIORITY, this);
+        HbStyle::setItemName(mPriorityIcon,"priorityIcon");
+        }
+        break;
+        case ConvergedMessage::Low :
+        {
+        mPriorityIcon = new HbIconItem(LOW_PRIORITY, this);
+        HbStyle::setItemName(mPriorityIcon,"priorityIcon");
+        }
+        break;
+        default:
+        break;
+    }
+
+    emit contentChanged();
+    this->repolish();
+}
+
+QString MsgUnifiedEditorSubject::text()
+{
+    return mSubjectEdit->content();
+}
+
+ConvergedMessage::Priority MsgUnifiedEditorSubject::priority()
+{
+	return mPriority;
+}
+
+void MsgUnifiedEditorSubject::onContentsChanged(const QString& text)
+{
+    // reject any text input if mms size limit is reached
+    int futureSize = subjectSize() +
+            MsgMonitor::containerSize() + MsgMonitor::bodySize();
+    if(futureSize > MsgMonitor::maxMmsSize())
+    {
+        // atomic operation
+        disconnect(mSubjectEdit, SIGNAL(contentsChanged(const QString&)),
+                    this, SLOT(onContentsChanged(const QString&)));
+        mSubjectEdit->clearContent();
+        mSubjectEdit->setText(mPrevBuffer);
+        connect(mSubjectEdit, SIGNAL(contentsChanged(const QString&)),
+                        this, SLOT(onContentsChanged(const QString&)));
+        HbNotificationDialog::launchDialog(LOC_UNABLE_TO_ADD_CONTENT);
+        return;
+    }
+
+    mPrevBuffer = text;
+    if(!subjectOkInSms())
+    {
+        emit contentChanged();
+    }
+}
+
+bool MsgUnifiedEditorSubject::subjectOkInSms()
+{
+    bool result = false;
+    int error;
+    TRAP(error, result = mGenUtils->AcceptEmailAddressesL());
+    return result;    
+}
+
+int MsgUnifiedEditorSubject::subjectSize()
+{
+    return mGenUtils->UTF8Size(mSubjectEdit->content());
+}
+
+void MsgUnifiedEditorSubject::setText(const QString& text)
+{
+    mSubjectEdit->setText(text);
+}
+
+void MsgUnifiedEditorSubject::setFocus()
+{
+    mSubjectEdit->setFocus(Qt::MouseFocusReason);
+}
+
+//EOF