controlpanelplugins/themeplugin/src/cpthemelistview.cpp
author hgs
Wed, 29 Sep 2010 10:09:58 +0800
changeset 40 593f946f4fec
parent 21 2883a5458389
permissions -rw-r--r--
201037_2

/*
 * 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 <QGraphicsLinearLayout>
#include <QModelIndex>

#include <hbview.h>
#include <hblistview.h>
#include <hblistviewitem.h>
#include <hbtoolbar.h>
#include <hbaction.h>
#include <hbgroupbox.h>


#include "cpthemelistview.h"

/*!
    \class CpThemeListView
    \brief CpThemeListView displays a heading (e.g Theme) and a list of themes with
    corresponding icons.

    Note: This class is a subclass of CpBaseSettingView for compatibility with Control Panel
          framework.  
 */

/*!
    constructor.  Creates the heading label and the list and adds it to layout.
*/
CpThemeListView::CpThemeListView(QGraphicsItem *parent) : CpBaseSettingView(0, parent),
    mThemeList(new HbListView(this))
{
   
    //Create a layout with a heading at top and the list below it.
    HbWidget* contentWidget = new HbWidget(this);
    QGraphicsLinearLayout* layout = new QGraphicsLinearLayout(Qt::Vertical);
    layout->setContentsMargins(0,0,0,0);
    
    //setup the heading.
    HbGroupBox *simpleLabel = new HbGroupBox();
    simpleLabel->setHeading(hbTrId("txt_cp_title_select_theme"));
     
    layout->addItem(simpleLabel);
      
    connect(mThemeList, SIGNAL(activated(QModelIndex)),
            this, SIGNAL(newThemeSelected(QModelIndex)));
    
    //set list item icons to be large.
    HbListViewItem* listViewItem = mThemeList->listItemPrototype();
    listViewItem->setGraphicsSize(HbListViewItem::LargeIcon);
    //set singleSelection to enable showing an indicator (e.g check mark) next to active theme.
    mThemeList->setSelectionMode(HbAbstractItemView::SingleSelection);
  
    //add the list to layout.
    layout->addItem(mThemeList);
    
    //Create the toolbar for Ovi Store.
    HbToolBar* toolBar = new HbToolBar(this);

    HbAction* oviAction = new HbAction(HbIcon("qtg_large_ovistore"), hbTrId("txt_cp_list_get_more_tones"));
    QObject::connect( oviAction, SIGNAL(triggered()), 
                          this, SIGNAL(oviClicked()));
       
    //Add Action to the toolbar and show toolbar
    toolBar->addAction(oviAction);
       
    setToolBar(toolBar);

    contentWidget->setLayout(layout);
   
    setWidget(contentWidget);
   
}

/*!
    destructor.
*/
CpThemeListView::~CpThemeListView()
{
}

/*!
    returns the listview instance (list of themes).
*/
HbListView* CpThemeListView::themeList() const
{
    return mThemeList;
}

/*!
    Sets the model of its listView.
*/
void CpThemeListView::setModel(QAbstractItemModel* model)
{
    mThemeList->setModel(model);
}

/*!
    sets the widget. Reimplementation from HbView. 
*/
void CpThemeListView::setWidget(QGraphicsWidget *widget)
{
    HbView::setWidget(widget);
}

/*!
    emits aboutToClose() signal.
*/
void CpThemeListView::closeView()
{
    emit aboutToClose();
}