clock/clockui/clockviewmanager/src/clockviewmanager.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 16 Apr 2010 14:57:40 +0300
changeset 18 c198609911f9
child 26 a949c2543c15
child 45 b6db4fd4947b
permissions -rw-r--r--
Revision: 201011 Kit: 201015

/*
* 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:
* Definition file for class ClockViewManager.
*
*/

// System includes
#include <QDebug>
#include <HbMainWindow>
#include <HbInstance>

// User includes
#include "clockviewmanager.h"
#include "clockdocloader.h"
#include "clockmainview.h"
#include "clockcommon.h"
#include "clockdatatypes.h"
#include "clockworldview.h"

/*!
	\class ClockViewManager

	This is the heart of the clock application. This is responsible for
	managing the clock views.
 */

/*!
	Constructor.

	\param controller A reference to the object of ClockAppController.
 */
ClockViewManager::ClockViewManager(
		ClockAppControllerIf &controllerIf, QObject *parent)
:QObject(parent),
 mAppControllerIf(controllerIf)
{
	qDebug("clock: ClockViewManager::ClockViewManager() -->");

	// Load the document and the views.
	loadViews();

	qDebug("clock: ClockViewManager::ClockViewManager() <--");
}

/*!
	Destructor.
 */
ClockViewManager::~ClockViewManager()
{
	// No implementation yet.
}

/*!
	Switches to view specified by view.

	\param view View Id.
 */
void ClockViewManager::showView(ClockViews view)
{
	HbMainWindow *window = hbInstance->allMainWindows().first();

	switch (view) {
		case MainView:
			window->removeView(window->currentView());
			window->addView(mMainView);
			window->setCurrentView(mMainView);
			break;

		case WorldClock:
			window->removeView(window->currentView());
			window->addView(mWorldClockView);
			window->setCurrentView(mWorldClockView);
			break;

		default:
			break;
	}
}

/*!
	Loads the views from the docml file.
 */
void ClockViewManager::loadViews()
{
	qDebug() << "clock: ClockViewManager::loadViews -->";

	// Load the main view.
	loadMainView();
	// Load the world clock view.
	loadWorldClockView();

	// Set the main view to the window
	hbInstance->allMainWindows().first()->addView(mMainView);

	qDebug() << "clock: ClockViewManager::loadViews <--";
}

/*!
	Loads the clock main view.
 */
void ClockViewManager::loadMainView()
{
	qDebug() << "clock: ClockViewManager::loadMainView -->";

	bool loadSuccess;

	// Construct the document loader instance
	ClockDocLoader *docLoader = new ClockDocLoader();

	// Load the application xml.
	docLoader->load(CLOCK_MAIN_VIEW_DOCML, &loadSuccess);
	Q_ASSERT_X(
			loadSuccess,
			"viewmanager.cpp",
			"Unable to load the main view app xml");

	// Find the main view.
	mMainView = static_cast<ClockMainView *> (
			docLoader->findWidget(CLOCK_MAIN_VIEW));

	// Setup the view.
	mMainView->setupView(mAppControllerIf, docLoader);

	qDebug() << "clock: ClockViewManager::loadMainView <--";
}

/*!
	Loads the world clock view.
 */
void ClockViewManager::loadWorldClockView()
{
	// Construct the document loader instance
	ClockDocLoader *docLoader = new ClockDocLoader();

	bool loadSuccess;

	// Construct the world list view from doc loader.
	docLoader->load(":/xml/worldclockview.docml", &loadSuccess);

	// Get the world list view.
	mWorldClockView =
			static_cast<ClockWorldView *> (docLoader->findWidget("worldClockView"));

	mWorldClockView->setupView(mAppControllerIf, docLoader);

/*	// Get the world list widget.
	WorldListWidget *listWidget =
			qobject_cast<WorldListWidget *> (docLoader->findWidget("worldListWidget"));
	Q_ASSERT_X(listWidget,
	           "viewmanager.cpp", "Unable to load the world list widget");
	listWidget->setupWidget(mWorldListView, docLoader);*/
}

// End of file	--Don't remove this.