--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/src/filemanager/src/components/fmcombinedquery.cpp Tue Aug 31 15:06:05 2010 +0300
@@ -0,0 +1,200 @@
+/*
+ * 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:
+ * The source file of combined query of file manager
+ */
+
+#include "fmcombinedquery.h"
+
+#include <QGraphicsLinearLayout>
+
+#include <hblistwidget.h>
+#include <hbaction.h>
+#include <hblistwidgetitem.h>
+#include <hbabstractviewitem.h>
+
+FmCombinedQuery::FmCombinedQuery( QGraphicsItem *parent ) : FmDialog( parent ),
+ mSelectMode ( MultiSelectMode ), mDominantIndex ( -1 )
+{
+ setObjectName( "combinedQueryDialog" );
+ mContentWidget = new QGraphicsWidget();
+ mContentWidget->setObjectName( "CombinedQueryContentWidget" );
+ setContentWidget(mContentWidget);
+
+ QGraphicsLinearLayout *vLayout = new QGraphicsLinearLayout();
+ vLayout->setOrientation( Qt::Vertical );
+
+ mListWidget = new HbListWidget();
+ vLayout->addItem( mListWidget );
+
+ mListWidget->setFontSpec( HbFontSpec( HbFontSpec::Primary ) );
+ mListWidget->setObjectName( "CombinedQueryListWidget" );
+ this->setTimeout( NoTimeout );
+ mContentWidget->setLayout( vLayout );
+
+ setSelectMode( mSelectMode );
+ connect( mListWidget, SIGNAL( activated ( const QModelIndex& ) ), this, SLOT( activated( const QModelIndex& ) ) );
+ connect( this, SIGNAL( doCheckForPrimaryAction () ), this, SLOT( checkForPrimaryAction() ), Qt::QueuedConnection );
+ this->setDismissPolicy( NoDismiss );
+
+ doCheckForPrimaryAction();
+}
+
+void FmCombinedQuery::setSelectMode( SelectMode mode )
+{
+ mSelectMode = mode;
+ switch ( mSelectMode )
+ {
+ case SingleSelectMode:
+ mListWidget->setSelectionMode( HbAbstractItemView::SingleSelection );
+ break;
+
+ case MultiSelectMode:
+ mListWidget->setSelectionMode( HbAbstractItemView::MultiSelection );
+ break;
+
+ case NoSelectMode:
+ default:
+ mListWidget->setSelectionMode( HbAbstractItemView::NoSelection );
+ break;
+ }
+}
+
+FmCombinedQuery::~FmCombinedQuery(void)
+{
+}
+
+void FmCombinedQuery::setMarkedListItem( int row, bool mark )
+{
+ QModelIndex index = mListWidget->model()->index( row, 0 );
+ if ( mark ){
+ mListWidget->selectionModel()->select( index, QItemSelectionModel::Select );
+ }
+ else{
+ mListWidget->selectionModel()->select( index, QItemSelectionModel::Deselect );
+ }
+}
+
+void FmCombinedQuery::setDominantIndex( int index )
+{
+ mDominantIndex = index;
+}
+
+void FmCombinedQuery::setListItems( const QMap< int, QString > &list )
+{
+ mListWidget->clear();
+
+ for( QMap< int, QString >::const_iterator it = list.begin();
+ it != list.end(); ++it ){
+ HbListWidgetItem* modelItem = new HbListWidgetItem();
+ if( !modelItem ){
+ return;
+ }
+
+ modelItem->setText( it.value() );
+ modelItem->setData( it.key() );
+
+ mListWidget->addItem( modelItem );
+ }
+}
+
+void FmCombinedQuery::activated( const QModelIndex &index )
+{
+ int selectedRow = index.row();
+ if( selectedRow == mDominantIndex ){
+ QModelIndexList modelIndexList = mListWidget->selectionModel()->selectedIndexes();
+ for( QModelIndexList::const_iterator it = modelIndexList.begin(); it != modelIndexList.end(); ++it ){
+ if( ( *it ) == index ){
+ mListWidget->clearSelection();
+ setMarkedListItem( selectedRow );
+ }
+ }
+ }
+ else if( mDominantIndex >= 0 ){
+ setMarkedListItem( mDominantIndex, false );
+ }
+
+ emit doCheckForPrimaryAction();
+}
+
+QStringList FmCombinedQuery::selectedValues() const
+{
+ QStringList selList;
+ QItemSelectionModel *selectionModel = 0;
+ QList<int> selIndexes;
+
+ if( !mListWidget ){
+ return selList;
+ }
+
+ selectionModel = mListWidget->selectionModel();
+
+ if( selectionModel ){
+ QModelIndexList indexes = selectionModel->selectedIndexes();
+ int count = indexes.count();
+ QModelIndex index;
+ for( int i = 0; i < count; ++i ){
+ index = indexes[i];
+ HbListWidgetItem *item = mListWidget->item( index.row() );
+ if (item) {
+ QString text = item->text();
+ selList.append( text );
+ }
+ }
+ }
+
+ return selList;
+}
+
+
+QList<int> FmCombinedQuery::selectedKeys() const
+{
+ QList<int> selList;
+ QItemSelectionModel *selectionModel = 0;
+ QList<int> selIndexes;
+
+ if( !mListWidget ){
+ return selList;
+ }
+
+ selectionModel = mListWidget->selectionModel();
+
+ if( selectionModel ){
+ QModelIndexList indexes = selectionModel->selectedIndexes();
+ int count = indexes.count();
+ QModelIndex index;
+ for( int i = 0; i < count; ++i ){
+ index = indexes[i];
+ HbListWidgetItem *item = mListWidget->item( index.row() );
+ if ( item ) {
+ int key = item->data().toInt();
+ selList.append( key );
+ }
+ }
+ }
+
+ return selList;
+}
+
+void FmCombinedQuery::checkForPrimaryAction()
+{
+ QItemSelectionModel *selectionModel = mListWidget->selectionModel();
+
+ if( selectionModel->selectedIndexes().count() <= 0 ) {
+ primaryAction()->setDisabled( true );
+ } else {
+ primaryAction()->setDisabled( false );
+ }
+}