userguide/src/HelpCategoryView.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 31 Aug 2010 15:06:12 +0300
branchRCL_3
changeset 17 12f60d9a73b3
permissions -rw-r--r--
Revision: 201031 Kit: 201035

/*
* 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 <QStandardItemModel>
#include <QDebug>

#include <hbmainwindow.h>
#include <hbapplication.h>
#include <hbaction.h>

#include <hbtreeview.h>
#include <hbscrollbar.h>
#include <hbmenu.h>
#include <hbtoolbar.h>

#include "HelpDataProvider.h"

#include "HelpCategoryView.h"


//////////////////////////////////////////////////////////////////////////////////////////////

HelpCategoryView::HelpCategoryView() : 
mListAll(NULL),
mExpandCount(0)
{
}

HelpCategoryView::~HelpCategoryView()
{
}


////////////////////////////////////////////////////////////////////////////////////////////

void HelpCategoryView::init()
{
	initDocMl();
    initAllList();
}

void HelpCategoryView::initDocMl()
{
	initBaseDocMl();
    mBuilder.load(QRC_DOCML_CATEGORY);
}

void HelpCategoryView::initAllList()
{
    mListAll = mBuilder.findWidget<HbTreeView*>(DOCML_LIST_CATEGORY_ALL);
    mListAll->setHorizontalScrollBarPolicy(HbScrollArea::ScrollBarAlwaysOff);
    mListAll->setModel(HelpDataProvider::instance()->getCategoryData());
    connect(mListAll, SIGNAL(activated(const QModelIndex&)), this, SLOT(onAllListActivated(const QModelIndex&)));
}

////////////////////////////////////////////////////////////////////////////////////////////

void HelpCategoryView::expandCollapseAllList(QStandardItem* item, bool expand)
{
	if(item->rowCount() <= 0)
	{
		return;
	}
	mListAll->setExpanded(item->index(),expand);
	for(int i = 0; i < item->rowCount(); i++)
	{		
		expandCollapseAllList(item->child(i),expand);
	}
}

void HelpCategoryView::updateExpandCollapseAction(bool expand)
{
	HbAction* allAction = mBuilder.findObject<HbAction*>(DOCML_ACTION_EXPAND_COLLAPSE_ALL);
	allAction->setText(expand ? hbTrId(TXT_EXPAND_ALL) : hbTrId(TXT_COLLAPSE_ALL));
}

////////////////////////////////////////////////////////////////////////////////////////////
// handle list event

void HelpCategoryView::onAllListActivated(const QModelIndex& index)
{
    if(!index.isValid() ||          // invalid
       index.child(0,0).isValid())  // this is a node
    {
		if(index.parent().isValid())
		{
			return;
		}
		
		if(mListAll->isExpanded(index))
		{
			mExpandCount++;
		}
		else
		{
			mExpandCount--;
		}
		updateExpandCollapseAction(mExpandCount == 0);
        return;
    }

	QString uid = mListAll->model()->data(index, UidRole).toString();
    QString href = mListAll->model()->data(index, HrefRole).toString();
    HelpDataProvider::instance()->setHelpContentUrl(uid, href);
    emit activateView(HelpViewContents);
}

////////////////////////////////////////////////////////////////////////////////////////////
// handle menu event
void HelpCategoryView::onExpandOrCollapseAll()
{
	bool needExpand = (mExpandCount == 0);
	QStandardItemModel* model = (QStandardItemModel*)(mListAll->model());
	expandCollapseAllList(model->invisibleRootItem(),needExpand);
	mExpandCount = needExpand ?  model->invisibleRootItem()->rowCount() : 0;
	updateExpandCollapseAction(mExpandCount == 0);
}

// end of file