diff -r 4697dfb2d7ad -r 238255e8b033 messagingapp/msgui/conversationview/src/msgeditorwidget.cpp --- /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 +#include +#include +#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