findresultwidget.cpp
author insilmaril
Mon, 15 Mar 2010 11:49:42 +0000
changeset 835 31841b366d5e
parent 829 832e96c9abb6
child 842 bec082472471
permissions -rw-r--r--
Fixes for autoLayout (later)
insilmaril@825
     1
#include "findresultwidget.h"
insilmaril@825
     2
insilmaril@825
     3
#include <QVBoxLayout>
insilmaril@825
     4
#include <QTreeView>
insilmaril@825
     5
insilmaril@829
     6
#include "findresultitem.h"
insilmaril@825
     7
#include "findresultmodel.h"
insilmaril@829
     8
#include "vymmodel.h"
insilmaril@825
     9
insilmaril@825
    10
extern QString iconPath;
insilmaril@825
    11
insilmaril@829
    12
FindResultWidget::FindResultWidget(VymModel *m, QWidget *)
insilmaril@825
    13
{
insilmaril@829
    14
	model=m;
insilmaril@829
    15
insilmaril@829
    16
	// Create results model
insilmaril@829
    17
	resultsModel=new FindResultModel;
insilmaril@825
    18
insilmaril@825
    19
	// Create TreeView
insilmaril@829
    20
	view = new QTreeView (this);
insilmaril@829
    21
	view->setModel (resultsModel);
insilmaril@825
    22
insilmaril@825
    23
    QVBoxLayout* mainLayout = new QVBoxLayout;
insilmaril@825
    24
    
insilmaril@829
    25
	// FIXME-4 feature: show number of hits at bottom of FindResultWidget
insilmaril@825
    26
insilmaril@829
    27
	/* FIXME-3 testing QMenuBar *mb=new QMenuBar;
insilmaril@825
    28
	QAction *a=new  QAction ("Foo action",NULL);
insilmaril@825
    29
	mb->addAction (a);
insilmaril@825
    30
	mb->insertSeparator();
insilmaril@825
    31
	mainLayout->addWidget(mb);
insilmaril@829
    32
	*/
insilmaril@825
    33
	mainLayout->addWidget(view);
insilmaril@825
    34
insilmaril@825
    35
	setLayout (mainLayout);
insilmaril@829
    36
insilmaril@829
    37
	model=m;
insilmaril@829
    38
insilmaril@829
    39
	// Selection
insilmaril@829
    40
	connect (view->selectionModel(),SIGNAL (selectionChanged (QItemSelection,QItemSelection)),
insilmaril@829
    41
		this, SLOT (updateSelection (QItemSelection,QItemSelection)));
insilmaril@829
    42
}
insilmaril@829
    43
insilmaril@829
    44
void FindResultWidget::addItem (TreeItem *ti)
insilmaril@829
    45
{
insilmaril@829
    46
	if (ti)
insilmaril@829
    47
	{
insilmaril@829
    48
		QModelIndex index = view->selectionModel()->currentIndex();
insilmaril@829
    49
		//QAbstractItemModel *resultsModel = view->model();
insilmaril@829
    50
		
insilmaril@829
    51
		if (!resultsModel->insertRow(index.row()+1, index.parent()))
insilmaril@829
    52
			return;
insilmaril@829
    53
insilmaril@829
    54
		for (int column = 0; column < resultsModel->columnCount(index.parent()); ++column) {
insilmaril@829
    55
			QModelIndex child = resultsModel->index(index.row()+1, column, index.parent());
insilmaril@829
    56
			resultsModel->setData(child, QVariant(ti->getHeading()), Qt::EditRole);
insilmaril@829
    57
			resultsModel->getItem(child)->setOriginal (ti);
insilmaril@829
    58
		}
insilmaril@829
    59
	}
insilmaril@829
    60
}
insilmaril@829
    61
insilmaril@829
    62
void FindResultWidget::addItem (const QString &s)
insilmaril@829
    63
{
insilmaril@829
    64
	if (!s.isEmpty())
insilmaril@829
    65
	{
insilmaril@829
    66
		QModelIndex index = view->selectionModel()->currentIndex();
insilmaril@829
    67
		
insilmaril@829
    68
		if (!resultsModel->insertRow(index.row()+1, index.parent()))
insilmaril@829
    69
			return;
insilmaril@829
    70
insilmaril@829
    71
		for (int column = 0; column < resultsModel->columnCount(index.parent()); ++column) {
insilmaril@829
    72
			QModelIndex child = resultsModel->index(index.row()+1, column, index.parent());
insilmaril@829
    73
			resultsModel->setData(child, QVariant(s), Qt::EditRole);
insilmaril@829
    74
		}
insilmaril@829
    75
	}
insilmaril@829
    76
}
insilmaril@829
    77
insilmaril@829
    78
void FindResultWidget::setModel (VymModel *m)
insilmaril@829
    79
{
insilmaril@829
    80
	if (model !=NULL && m!=model)
insilmaril@829
    81
		qWarning ("FindResultWidget::setModel  m!=model");
insilmaril@829
    82
	model=m;	
insilmaril@829
    83
}
insilmaril@829
    84
insilmaril@829
    85
FindResultModel* FindResultWidget::getResultModel()
insilmaril@829
    86
{
insilmaril@829
    87
	return resultsModel;
insilmaril@829
    88
}
insilmaril@829
    89
insilmaril@829
    90
void FindResultWidget::addResult (const QString &category, TreeItem *ti)
insilmaril@829
    91
{
insilmaril@829
    92
	if (!category.isEmpty())
insilmaril@829
    93
		addItem (category);
insilmaril@829
    94
	else	
insilmaril@829
    95
		addItem (model->getSelectedItem());
insilmaril@825
    96
}
insilmaril@825
    97
insilmaril@825
    98
void FindResultWidget::popup()
insilmaril@825
    99
{
insilmaril@825
   100
	show();
insilmaril@829
   101
	parentWidget()->show();
insilmaril@825
   102
}
insilmaril@825
   103
insilmaril@825
   104
void FindResultWidget::cancelPressed()
insilmaril@825
   105
{
insilmaril@825
   106
	emit (hideFindResultWidget() );
insilmaril@825
   107
}
insilmaril@825
   108
insilmaril@829
   109
void FindResultWidget::updateSelection(QItemSelection newsel,QItemSelection)
insilmaril@825
   110
{
insilmaril@829
   111
	QModelIndex ix;
insilmaril@829
   112
	foreach (ix,newsel.indexes() )
insilmaril@829
   113
	{
insilmaril@829
   114
		FindResultItem *fri= static_cast<FindResultItem*>(ix.internalPointer());
insilmaril@829
   115
		if (fri->getOrgModel() && fri->getOrgID()>0)
insilmaril@829
   116
		{
insilmaril@829
   117
			TreeItem *ti=fri->getOrgModel()->findID(fri->getOrgID() );
insilmaril@829
   118
			if (ti)
insilmaril@829
   119
				fri->getOrgModel()->select (ti);
insilmaril@829
   120
		}
insilmaril@829
   121
	}
insilmaril@825
   122
}
insilmaril@825
   123
insilmaril@829
   124