--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingapp/msgui/conversationview/src/msgeditorwidget.cpp Fri Apr 16 14:56:15 2010 +0300
@@ -0,0 +1,209 @@
+/*
+ * 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:
+ *
+ */
+
+#include "msgeditorwidget.h"
+
+// SYSTEM INCLUDES
+#include <HbStyle>
+#include <HbPushButton>
+#include <qgraphicsscene.h>
+#include "debugtraces.h"
+
+// LOCAL CONSTANTS
+const QString PLUGINPATH("conversationviewplugin.dll");
+
+const QString SMS_SERVICE("messaging.mserver.sms");
+const QString SEND_BUTTON(QObject::tr("Send"));
+
+const QString SEND_ICON(":/icons/qtg_mono_send.png");
+
+QGraphicsItem* FOCUSITEM = 0;
+
+//---------------------------------------------------------------
+// MsgEditorWidget::MsgEditorWidget
+// @see header
+//---------------------------------------------------------------
+MsgEditorWidget::MsgEditorWidget(QGraphicsItem *parent) :
+ HbWidget(parent), mServiceId(SMS_SERVICE), mMsgEditor(NULL),
+ mSendButton(NULL)
+{
+ int baseId = style()->registerPlugin(PLUGINPATH);
+
+ #ifdef _DEBUG_TRACES_
+ qDebug() << "MsgEditorWidget BASE ID --->" << baseId;
+ #endif
+
+ setPluginBaseId(baseId);
+
+ // Initialize the widget.
+ init();
+}
+
+//---------------------------------------------------------------
+// MsgEditorWidget::init
+// @see header
+//---------------------------------------------------------------
+void MsgEditorWidget::init()
+{
+ // Create mandatory element of mesh layout.
+ mMsgEditor = new MsgEditor(this);
+ mMsgEditor->setMaxRows(5); // NOTE: Don't remove this line.
+ HbStyle::setItemName(mMsgEditor, "msgEditor");
+
+ mSendButton = new HbPushButton(this);
+ HbStyle::setItemName(mSendButton, "sendButton");
+ mSendButton->setIcon(HbIcon(SEND_ICON));
+ mSendButton->setEnabled(false);
+ FOCUSITEM = mSendButton;
+
+ connect(mSendButton, SIGNAL(clicked()),this, SLOT(onClicked()));
+ connect(mMsgEditor, SIGNAL(replyStarted()),this, SIGNAL(replyStarted()));
+ connect(mMsgEditor, SIGNAL(textChanged(QString)),this,SLOT(onTextChanged(QString)));
+
+}
+
+//---------------------------------------------------------------
+// MsgEditorWidget::~MsgEditorWidget
+// @see header
+//---------------------------------------------------------------
+MsgEditorWidget::~MsgEditorWidget()
+{
+ style()->unregisterPlugin(PLUGINPATH);
+}
+
+//---------------------------------------------------------------
+// MsgEditorWidget::serviceId
+// @see header
+//---------------------------------------------------------------
+const QString& MsgEditorWidget::serviceId()
+{
+ return mServiceId;
+}
+
+//---------------------------------------------------------------
+// MsgEditorWidget::content
+// @see header
+//---------------------------------------------------------------
+QString MsgEditorWidget::content() const
+{
+ return mMsgEditor->text();
+}
+
+//---------------------------------------------------------------
+// MsgEditorWidget::setContent
+// @see header
+//---------------------------------------------------------------
+void MsgEditorWidget::setContent(const QString &text)
+{
+ mMsgEditor->setText(text);
+}
+
+//---------------------------------------------------------------
+// MsgEditorWidget::clear
+// @see header
+//---------------------------------------------------------------
+void MsgEditorWidget::clear()
+{
+ mMsgEditor->setText(QString());
+ mMsgEditor->setCursorVisibility(Hb::TextCursorHidden);
+}
+
+//---------------------------------------------------------------
+// MsgEditorWidget::clear
+// @see header
+//---------------------------------------------------------------
+void MsgEditorWidget::onTextChanged(const QString& str)
+{
+ if(str.length() > 0 )
+ {
+ if(!mSendButton->isEnabled())
+ {
+ mSendButton->setFocusProxy(mMsgEditor);
+ mSendButton->setEnabled(true);
+ }
+ }
+ else
+ {
+ if(mSendButton->isEnabled())
+ {
+ mSendButton->setFocusProxy(0);
+ mSendButton->setEnabled(false);
+ }
+ }
+}
+
+//---------------------------------------------------------------
+// MsgEditor::onClicked
+// @see header
+//---------------------------------------------------------------
+void MsgEditorWidget::onClicked()
+ {
+ mSendButton->setFocusProxy(0);
+ mMsgEditor->setFocusProxy(mSendButton);
+
+ this->scene()->clearFocus();
+ this->scene()->setFocusItem(mSendButton);
+
+ mMsgEditor->setFocusProxy(0);
+
+ mMsgEditor->setCursorVisibility(Hb::TextCursorHidden);
+
+ emit sendMessage();
+ }
+
+
+//---------------------------------------------------------------
+// MsgEditor::MsgEditor
+// @see header
+//---------------------------------------------------------------
+MsgEditor::MsgEditor(QGraphicsItem *parent)
+:HbLineEdit(parent)
+ {
+
+ }
+
+//---------------------------------------------------------------
+// MsgEditor::focusInEvent
+// @see header
+//---------------------------------------------------------------
+void MsgEditor::focusInEvent(QFocusEvent *event)
+ {
+ if(event->reason() == Qt::MouseFocusReason)
+ {
+ HbLineEdit::focusInEvent(event);
+ FOCUSITEM->setFocusProxy(this);
+ setCursorVisibility(Hb::TextCursorVisible);
+ emit replyStarted();
+ }
+ else
+ {
+ setCursorVisibility(Hb::TextCursorHidden);
+ }
+ }
+
+//---------------------------------------------------------------
+// MsgEditor::focusOutEvent
+// @see header
+//---------------------------------------------------------------
+void MsgEditor::focusOutEvent(QFocusEvent * event)
+ {
+ FOCUSITEM->setFocusProxy(0);
+ setCursorVisibility(Hb::TextCursorHidden);
+ HbLineEdit::focusOutEvent(event);
+ }
+
+// EOF