--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cbs/cbsui/src/cbsuiviewmanager.cpp Tue Aug 31 15:45:17 2010 +0300
@@ -0,0 +1,193 @@
+/*
+* Copyright (c) 2010 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 <hbmainwindow.h>
+#include <hbdocumentloader.h>
+#include <hbaction.h>
+#include <hbmenu.h>
+
+#include "cbsuiviewmanager.h"
+#include "cbsuitopiclistview.h"
+#include "cbsuitopicview.h"
+#include "mcbs.h"
+#include "cbslog.h"
+
+const char *CBS_APP_XML = ":/xml/cbs_app.docml";
+const char *CBS_TOPIC_VIEW_XML = ":/xml/cbs_topic_view.docml";
+const char *CBS_MAIN_VIEW = "t:view";
+const char *CBS_TOPIC_VIEW ="t:view2";
+
+// ======== MEMBER FUNCTIONS ==================================================
+// ----------------------------------------------------------------------------
+// CbsUiViewManager::CbsUiViewManager
+// ----------------------------------------------------------------------------
+//
+CbsUiViewManager::CbsUiViewManager(HbMainWindow *window, MCbs &server)
+ :mMainWindow(window),
+ mServer(server),
+ mTopicListView(NULL),
+ mTopicView(NULL),
+ mLoader(NULL),
+ mSoftKeyBackAction(NULL),
+ mSoftKeyExitAction(NULL)
+{
+ LOG(NORMAL,"CBSUI: CbsUiViewManager::CbsUiViewManager IN");
+
+ // SYMBIAN CODE:
+ //mTopicMonitor = CCbsUiTopicListMonitor::NewL(mServer); not in use at the moment
+
+ bool ok = false;
+ mLoader = new CbsUiDocumentLoader();
+ // ownership of the objects are transferred to caller
+ mObjects = mLoader->load(CBS_APP_XML, &ok);
+ if (ok) {
+ activateMainView();
+ } else {
+ LOG(NORMAL,"CBSUI: CbsUiViewManager::CbsUiViewManager DocML failure!");
+ }
+
+ LOG(NORMAL,"CBSUI: CbsUiViewManager::CbsUiViewManager OUT");
+}
+
+// ----------------------------------------------------------------------------
+// CbsUiViewManager::~CbsUiViewManager
+// ----------------------------------------------------------------------------
+//
+CbsUiViewManager::~CbsUiViewManager()
+{
+ LOG(NORMAL,"CBSUI: CbsUiViewManager::~CbsUiViewManager IN");
+ //delete mTopicMonitor; not in use at the moment
+ delete mLoader;
+ // delete all objects created from DocML.
+ while (!mObjects.isEmpty()) {
+ LOG(NORMAL,"CBSUI: CbsUiViewManager::~CbsUiViewManager deleting...");
+ delete mObjects.takeFirst();
+ }
+ LOG(NORMAL,"CBSUI: CbsUiViewManager::~CbsUiViewManager OUT");
+}
+
+// ----------------------------------------------------------------------------
+// CbsUiViewManager::activateTopicView
+// ----------------------------------------------------------------------------
+//
+void CbsUiViewManager::activateTopicView(TCbsTopicNumber topicNumber)
+{
+ LOG(NORMAL,"CBSUI: CbsUiViewManager::activateTopicView IN");
+ if (!mTopicView) {
+ bool ok = false;
+ // ownership of the objects are transferred to caller
+ mObjects += mLoader->load(CBS_TOPIC_VIEW_XML, &ok);
+ if (ok) {
+ mTopicView =
+ qobject_cast<CbsUiTopicView *>(mLoader->findWidget(CBS_TOPIC_VIEW));
+ mTopicView->init(mServer, *this);
+ } else {
+ LOG(NORMAL,"CBSUI: CbsUiViewManager::activateTopicView DocML failure!");
+ }
+ }
+
+ if (mTopicView != mMainWindow->currentView()) {
+ if (!mSoftKeyBackAction) {
+ mSoftKeyBackAction = new HbAction(Hb::BackAction,mTopicView);
+ LOG2(NORMAL,"CBSUI: CbsUiViewManager::activateTopicView \
+ mSoftKeyBackAction==%d", mSoftKeyBackAction);
+ }
+
+ mTopicView->reloadMessages(topicNumber);
+ mMainWindow->addSoftKeyAction(Hb::SecondarySoftKey,mSoftKeyBackAction);
+ bool ret = connect(mSoftKeyBackAction, SIGNAL(triggered()),
+ this, SLOT(activateMainView()));
+ HbView* view = mMainWindow->currentView();
+ mMainWindow->removeView(view);
+ // just temp implement
+ mTopicListView = 0;
+ mMainWindow->addView(mTopicView);
+ LOG2(NORMAL,"CBSUI: CbsUiViewManager::activateTopicView\
+ mTopicView=%d", mTopicView);
+ }
+ LOG(NORMAL,"CBSUI: CbsUiViewManager::activateTopicView OUT");
+}
+
+// ----------------------------------------------------------------------------
+// CbsUiViewManager::activateMainView
+// ----------------------------------------------------------------------------
+//
+void CbsUiViewManager::activateMainView()
+{
+ LOG(NORMAL,"CBSUI: CbsUiViewManager::activateMainView IN");
+ if (!mTopicListView) {
+ // First time called
+ mTopicListView = qobject_cast<CbsUiTopicListView *>
+ (mLoader->findWidget(CBS_MAIN_VIEW));
+ mTopicListView->init(mServer, *this);
+ // Connect signal to change view
+ bool ret = connect(mTopicListView,
+ SIGNAL(topicSelected(TCbsTopicNumber)), this,
+ SLOT(activateTopicView(TCbsTopicNumber)));
+ LOG2(NORMAL,"CBSUI: CbsUiViewManager::activateMainView ret=%d", ret);
+ } else {
+ HbView *view = mMainWindow->currentView();
+ mMainWindow->removeView(view);
+ // just temp implement
+ mTopicView = 0;
+ }
+
+ if (!mSoftKeyExitAction) {
+ mSoftKeyExitAction = new HbAction(Hb::QuitAction, mTopicListView);
+ LOG(NORMAL,"CBSUI: CbsUiViewManager::activateMainView add quit action");
+ }
+ if ( mSoftKeyBackAction ) {
+ mMainWindow->removeSoftKeyAction(Hb::SecondarySoftKey, mSoftKeyBackAction);
+ mSoftKeyBackAction = 0;
+ LOG(NORMAL,"CBSUI: CbsUiViewManager::activateMainView remove back action");
+ }
+
+ mMainWindow->addSoftKeyAction(Hb::SecondarySoftKey,mSoftKeyExitAction);
+ bool ret = connect(mSoftKeyExitAction, SIGNAL(triggered()),
+ mMainWindow, SLOT(close()));
+ LOG2(NORMAL,"CBSUI: CbsUiViewManager::activateMainView connect exit=%d", ret);
+ mMainWindow->addView(mTopicListView);
+ mMainWindow->setCurrentView(mTopicListView);
+ LOG(NORMAL,"CBSUI: CbsUiViewManager::activateMainView OUT");
+}
+
+// ----------------------------------------------------------------------------
+// CbsUiDocumentLoader::createObject
+// For DocML usage:
+// ----------------------------------------------------------------------------
+//
+QObject *CbsUiDocumentLoader::createObject(
+ const QString& type, const QString &name)
+{
+ LOG(NORMAL,"CBSUI: CbsUiViewManager::createObject IN");
+ if (type == CbsUiTopicListView::staticMetaObject.className()) {
+ QObject *object = new CbsUiTopicListView;
+ object->setObjectName(name);
+ LOG(NORMAL,"CBSUI: CbsUiViewManager::createObject:CbsUiTopicListView OUT");
+ return object;
+ } else if (type == CbsUiTopicView::staticMetaObject.className()) {
+ QObject *object = new CbsUiTopicView;
+ object->setObjectName(name);
+ LOG(NORMAL,"CBSUI: CbsUiViewManager::createObject:CbsUiTopicView OUT");
+ return object;
+ }
+ LOG2(NORMAL,"CBSUI: CbsUiViewManager::createObject: \
+ object name = %s",name.utf16());
+ return HbDocumentLoader::createObject(type, name);
+}
+
+// End of file