--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingapp/msgui/conversationview/src/msgconversationbaseview.cpp Tue Aug 31 15:11:31 2010 +0300
@@ -0,0 +1,287 @@
+/*
+ * 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:Conversation Base view.
+ *
+ */
+
+#include "msgconversationbaseview.h"
+
+// SYSTEM INCLUDES
+#include <QGraphicsLinearLayout>
+#include <HbMainWindow>
+#include <HbDeviceNotificationDialog>
+
+#include <xqaiwrequest.h>
+#include <xqappmgr.h>
+
+#include <cntservicescontact.h>
+#include <qtcontactsglobal.h>
+#include <qtcontacts.h>
+#include <ccsdefs.h>
+#include <XQSettingsManager>
+#include <QTimer>
+
+// USER INCLUDES
+#include "msgconversationview.h"
+#include "conversationsengine.h"
+#include "msgviewdefines.h"
+#include "conversationsenginedefines.h"
+#include "msgcontactcardwidget.h"
+#include "conversationidpsconsts.h"
+
+QTM_USE_NAMESPACE
+
+const int INVALID_MSGID = -1;
+const int INVALID_CONVID = -1;
+
+// LOCALIZATION
+#define LOC_SAVED_TO_DRAFTS hbTrId("txt_messaging_dpopinfo_saved_to_drafts")
+
+//---------------------------------------------------------------
+// MsgConversationBaseView::MsgConversationBaseView
+// Constructor
+//---------------------------------------------------------------
+MsgConversationBaseView::MsgConversationBaseView(QGraphicsItem* parent) :
+ MsgBaseView(parent), mConversationId(-1), mCVIdkey(XQSettingsKey::TargetPublishAndSubscribe,
+ KMsgCVIdProperty, KMsgCVIdKey)
+{
+ connect(this->mainWindow(), SIGNAL(viewReady()), this, SLOT(doDelayedConstruction()));
+ initView();
+}
+
+//---------------------------------------------------------------
+// MsgConversationBaseView::~MsgConversationBaseView
+// Destructor
+//---------------------------------------------------------------
+MsgConversationBaseView::~MsgConversationBaseView()
+{
+}
+
+//---------------------------------------------------------------
+// MsgConversationBaseView::openConversationView
+// Launches conversation view for entry id and mode
+//---------------------------------------------------------------
+void MsgConversationBaseView::openConversation(qint64 convId)
+{
+ ConversationsEngine::instance()->getConversations(convId);
+ mConversationId = convId;
+ connect(this->mainWindow(), SIGNAL(viewReady()), this, SLOT(doDelayedConstruction()));
+
+ // publsih conversation id
+ mSettingsManager->writeItemValue(mCVIdkey, (int) mConversationId);
+
+ if (mConversationView) {
+ mConversationView->refreshView();
+ }
+}
+
+//---------------------------------------------------------------
+// MsgConversationBaseView::initView
+// create and initialise the conversationview
+//---------------------------------------------------------------
+void MsgConversationBaseView::initView()
+{
+
+ // Create header widget
+ mContactCard = new MsgContactCardWidget(this);
+
+ mMainLayout = new QGraphicsLinearLayout(Qt::Vertical);
+
+ qreal spacing = HbDeviceProfile::profile(this).unitValue();
+ mMainLayout->setSpacing(spacing);
+ mMainLayout->setContentsMargins(CONTENT_MARGIN, CONTENT_MARGIN, CONTENT_MARGIN, CONTENT_MARGIN);
+
+ mMainLayout->addItem(mContactCard);
+ connect(mContactCard, SIGNAL(conversationIdChanged(qint64)), this,
+ SLOT(handleConversationIdChange(qint64)));
+
+ /**
+ * Create conversation view and connect to proper signals.
+ * NOTE: contactCardWidget is NOT parent of MsgConversationView.
+ * Just passing reference to MsgConversationView.
+ */
+ mConversationView = new MsgConversationView(mContactCard);
+
+ mConversationView->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+
+ connect(mConversationView, SIGNAL(closeConversationView()), this, SLOT(closeConversationView()));
+
+ connect(mConversationView, SIGNAL(replyStarted()), this, SLOT(markMessagesAsRead()));
+
+ connect(mConversationView, SIGNAL(switchView(const QVariantList&)), this,
+ SIGNAL(switchView(const QVariantList&)));
+
+ connect(mConversationView, SIGNAL(vkbOpened(bool)), this, SLOT(hideChrome(bool)));
+
+ this->setMenu(mConversationView->menu());
+
+ mMainLayout->addItem(mConversationView);
+
+ this->setLayout(mMainLayout);
+
+ mSettingsManager = new XQSettingsManager(this);
+
+}
+
+//---------------------------------------------------------------
+// MsgConversationBaseView::closeConversationView
+// close conversation view
+//---------------------------------------------------------------
+void MsgConversationBaseView::closeConversationView()
+{
+ markMessagesAsRead();
+}
+
+//---------------------------------------------------------------
+// MsgConversationBaseView::markMessagesAsRead
+// Mark unread msgs in cv as read
+//---------------------------------------------------------------
+void MsgConversationBaseView::markMessagesAsRead()
+{
+ if (mConversationId >= 0) {
+ ConversationsEngine::instance()->markConversationRead(mConversationId);
+ }
+}
+
+//---------------------------------------------------------------
+// MsgConversationBaseView::saveContentToDrafts
+// saves the editors content to drafts
+//---------------------------------------------------------------
+int MsgConversationBaseView::saveContentToDrafts()
+{
+ int msgId = INVALID_MSGID;
+ if (mConversationId >= 0) {
+ msgId = mConversationView->saveContentToDrafts();
+ }
+
+ if (msgId != INVALID_MSGID) {
+ HbDeviceNotificationDialog::notification("", LOC_SAVED_TO_DRAFTS);
+ }
+ return msgId;
+}
+
+//---------------------------------------------------------------
+// MsgConversationBaseView::conversationId
+// get the conversation ID
+//---------------------------------------------------------------
+qint64 MsgConversationBaseView::conversationId()
+{
+ return mConversationId;
+}
+
+//---------------------------------------------------------------
+// MsgConversationBaseView::clearContent
+// clears conversation view content
+//---------------------------------------------------------------
+void MsgConversationBaseView::clearContent()
+{
+ ConversationsEngine::instance()->clearConversations();
+ mConversationView->clearEditors();
+}
+
+//---------------------------------------------------------------
+// MsgConversationBaseView::handleOk
+//
+//---------------------------------------------------------------
+void MsgConversationBaseView::handleOk(const QVariant& result)
+{
+ Q_UNUSED(result)
+}
+
+//---------------------------------------------------------------
+// MsgConversationBaseView::handleError
+//
+//---------------------------------------------------------------
+void MsgConversationBaseView::handleError(int errorCode, const QString& errorMessage)
+{
+ Q_UNUSED(errorMessage)
+ Q_UNUSED(errorCode)
+}
+
+//---------------------------------------------------------------
+// MsgConversationBaseView::doDelayedConstruction
+//
+//---------------------------------------------------------------
+void MsgConversationBaseView::doDelayedConstruction()
+{
+ disconnect(this->mainWindow(), SIGNAL(viewReady()), this, SLOT(doDelayedConstruction()));
+ QTimer::singleShot(50, this, SLOT(handleViewReady()));
+}
+
+//---------------------------------------------------------------
+// MsgConversationBaseView::handleViewReady
+//
+//---------------------------------------------------------------
+void MsgConversationBaseView::handleViewReady()
+{
+ mConversationView->onViewReady();
+}
+
+//---------------------------------------------------------------
+// MsgConversationBaseView::handleConversationIdChange
+//
+//---------------------------------------------------------------
+void MsgConversationBaseView::handleConversationIdChange(qint64 convId)
+{
+ if (INVALID_CONVID != convId && mConversationId != convId) {
+
+ mConversationId = convId;
+ // publsih conversation id
+ mSettingsManager->writeItemValue(mCVIdkey, (int) mConversationId);
+ }
+}
+
+//---------------------------------------------------------------
+// MsgConversationBaseView::hideChrome
+//
+//---------------------------------------------------------------
+void MsgConversationBaseView::hideChrome(bool hide)
+{
+ if (hide) {
+ this->hideItems(Hb::StatusBarItem | Hb::TitleBarItem);
+ this->setContentFullScreen(true);
+
+ if (this->mainWindow()->orientation() == Qt::Horizontal) {
+ mMainLayout->removeItem(mContactCard);
+ mContactCard->hide();
+ }
+ }
+ else {
+ this->showItems(Hb::StatusBarItem | Hb::TitleBarItem);
+ this->setContentFullScreen(false);
+
+ if (!mContactCard->isVisible()) {
+ mMainLayout->insertItem(0, mContactCard);
+ mContactCard->show();
+ }
+ }
+
+ //forcing relayouting
+ mMainLayout->activate();
+}
+
+//---------------------------------------------------------------
+// MsgConversationBaseView::setPSCVId
+//
+//---------------------------------------------------------------
+void MsgConversationBaseView::setPSCVId(bool setId)
+{
+ if (setId) {
+ mSettingsManager->writeItemValue(mCVIdkey, (int) mConversationId);
+ }
+ else {
+ mSettingsManager->writeItemValue(mCVIdkey, -1);
+ }
+}
+// EOF