src/hbwidgets/popups/hbselectiondialog.cpp
changeset 1 f7ac710697a9
child 2 06ff229162e9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hbwidgets/popups/hbselectiondialog.cpp	Mon May 03 12:48:33 2010 +0300
@@ -0,0 +1,250 @@
+/****************************************************************************
+**
+** Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (developer.feedback@nokia.com)
+**
+** This file is part of the HbWidgets module of the UI Extensions for Mobile.
+**
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this file.
+** Please review the following information to ensure the GNU Lesser General
+** Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at developer.feedback@nokia.com.
+**
+****************************************************************************/
+#include "hbselectiondialog.h"
+#include "hbwidget_p.h"
+#include "hbselectiondialog_p.h"
+#include "hblabel.h"
+#include "hbaction.h"
+#include "hbabstractviewitem.h"
+#include <hbinstance.h>
+
+#include <QtDebug>
+#include <QGraphicsScene>
+#include <hblistwidgetitem.h>
+#include <hblistwidget.h>
+#include <hbradiobuttonlist.h>
+
+
+/*!
+    @beta
+    @hbwidgets
+    \class HbSelectionDialog
+    \brief HbSelectionDialog class allows user create a list of options out of which one or more can be selected.  
+    
+    HbSelectionDialog is a modal dialog which means once it is displayed, user can not perform any action
+    untill dialog is closed.
+
+    There can be 2 modes of selection. SingleSelection or MultiSelection. If it is SingleSelection, dialog is closed
+    as soon as user clicks one of the options.In case of MultiSelection, user has to explicitly press "OK" button to
+    close it after selecting the item(s). User can anytime press "Cancel" button to close the dialog without selecting 
+    anything.
+
+    User can provide the data for options in different forms. It can be simple list of strings, list of custom 
+    items or a model itself.
+*/
+
+
+/*!
+    @beta
+    Constructor of HbSelectionDialog
+
+    \param parent. Parent widget
+*/
+HbSelectionDialog::HbSelectionDialog(QGraphicsItem* parent): 
+                                HbDialog(*new HbSelectionDialogPrivate, parent)
+{
+    Q_D(HbSelectionDialog);
+    d->init();
+    setDismissPolicy(NoDismiss);
+}
+
+/*!
+    @beta
+    Destructor 
+ */
+HbSelectionDialog::~HbSelectionDialog()
+{
+}
+
+/*!
+   @beta
+
+   \reimp
+ */
+void HbSelectionDialog::showEvent(QShowEvent *event)
+{    
+    HbDialog::showEvent(event);
+}
+
+/*!
+    @beta
+    Sets the \a SelectionMode of the list.
+    
+    \param mode. It can be SingleSelection or MultiSelection .Default value is \a NoSelection.
+
+    \sa selectionMode()
+*/
+void HbSelectionDialog::setSelectionMode(HbAbstractItemView::SelectionMode mode)
+{
+	Q_D(HbSelectionDialog);
+	
+	d->setSelectionMode(mode);
+}
+
+/*!
+    @beta
+    Returns current SelectionMode of the list.Default value is \a NoSelection.
+
+    \sa setSelectionMode()
+*/	
+HbAbstractItemView::SelectionMode HbSelectionDialog::selectionMode() const
+{
+	Q_D(const HbSelectionDialog);
+	return d->mSelectionMode;
+}
+
+/*!
+    @beta
+    Sets the string list items to be displayed.
+
+    \param items. A items is the list of strings
+    \param currentIndex. A currentIndex is the index of default selection
+
+    \sa stringItems()
+*/	
+void HbSelectionDialog::setStringItems(const QStringList &items,int currentIndex)
+{
+	Q_D(HbSelectionDialog);
+	d->setStringItems(items,currentIndex);
+}
+
+/*!
+    @beta
+    Returns list of string list items earlier set by setStringItems().
+
+    \sa setStringItems()
+*/	
+QStringList HbSelectionDialog::stringItems() const
+{
+	Q_D(const HbSelectionDialog);
+	return d->stringItems();
+}
+
+/*!
+    @beta
+    Returns list of selected indexes. List contains only one item if
+    \a SelectionMode is \a NoSelection or \a SingleSelection. It may 
+    contain more items if \a SelectionMode is \a MultiSelection.
+   
+    \sa setSelectionMode(), 
+    \sa selectionMode()
+ */
+QList<QVariant> HbSelectionDialog::selectedItems() const
+{
+	Q_D(const HbSelectionDialog);
+	return d->selectedItems();
+}
+
+/*!
+    @beta
+    set the item selected.
+    It can select one item if \a Selection mode is \a SingleSelection
+    it can select more item if \a SelectionMode is \a MultiSelection.
+
+    \param items.
+
+    \sa selectedItems
+*/
+void HbSelectionDialog::setSelectedItems(const QList<QVariant> items) 
+{
+	Q_D(HbSelectionDialog);
+	d->setSelectedItems(items);
+}
+
+/*!
+    @beta
+    Returns list of selected model indexes. List contains only one item if
+    \a SelectionMode is \a NoSelection or \a SingleSelection. It may 
+    contain more items if \a SelectionMode is \a MultiSelection.
+    
+    \sa setSelectionMode(),
+    \sa selectionMode()
+ */
+QModelIndexList HbSelectionDialog::selectedModelIndexes() const
+{
+	Q_D(const HbSelectionDialog);
+	return d->selectedModelIndexes();
+}
+
+/*!
+    @beta
+    Sets the list of custom list items to be displayed.\a items is the
+    list of custom items.\a bTransferOwnership is a flag defining the owner
+    of the items. If \a true, items will be deleted when dialog is deleted else
+    user is responsible for deleting the items.Default value is \a false.
+    \a current is the index of default selection.
+
+    \param items. items is the list of custom items
+    \param transferOwnership. true or false
+    \param currentIndex
+
+    \sa widgetItems();
+*/	
+void HbSelectionDialog::setWidgetItems(const QList<HbListWidgetItem*> &items,bool transferOwnership,int currentIndex)
+{
+	Q_D(HbSelectionDialog);
+	d->setWidgetItems(items,transferOwnership,currentIndex);
+}
+
+/*!
+    @beta
+    Returns list of custom list items earlier set by setWidgetItems().
+    
+    \sa setWidgetItems().
+*/	
+QList<HbListWidgetItem*> HbSelectionDialog::widgetItems() const
+{
+	Q_D(const HbSelectionDialog);
+	return d->widgetItems();
+}
+
+/*!
+    @beta
+    Sets the Model containing data for the list items.
+
+    \param model. 
+
+    \sa model()
+*/	
+void HbSelectionDialog::setModel(QAbstractItemModel* model)
+{
+	Q_D(HbSelectionDialog);
+	d->setModel(model);
+}
+
+/*!
+    @beta
+    Returns model eariler set by setModel().
+
+    \sa setModel()
+*/	
+QAbstractItemModel* HbSelectionDialog::model() const
+{
+	Q_D(const HbSelectionDialog);
+	return d->model();
+}
+
+
+#include "moc_hbselectiondialog.cpp"