#include "findresultwidget.h"
#include <QVBoxLayout>
#include <QTreeView>
#include "findresultitem.h"
#include "findresultmodel.h"
#include "vymmodel.h"
FindResultWidget::FindResultWidget(QWidget *)
{
// Create results model
resultsModel=new FindResultModel;
// Create TreeView
view = new QTreeView (this);
view->setModel (resultsModel);
// Create FindWidget
findWidget = new FindWidget (this);
connect (
findWidget, SIGNAL (nextButtonPressed (QString, bool) ),
this, SLOT (nextButtonPressed (QString, bool) ) );
QVBoxLayout* mainLayout = new QVBoxLayout;
mainLayout->addWidget(view);
mainLayout->addWidget(findWidget);
setLayout (mainLayout);
// Selection
connect (view->selectionModel(),SIGNAL (selectionChanged (QItemSelection,QItemSelection)),
this, SLOT (updateSelection (QItemSelection,QItemSelection)));
connect (resultsModel, SIGNAL(layoutChanged() ), view, SLOT (expandAll() ));
}
void FindResultWidget::addItem (TreeItem *ti)
{
if (ti)
{
QModelIndex index = view->selectionModel()->currentIndex();
//QAbstractItemModel *resultsModel = view->model();
if (!resultsModel->insertRow(index.row()+1, index.parent()))
return;
for (int column = 0; column < resultsModel->columnCount(index.parent()); ++column) {
QModelIndex child = resultsModel->index(index.row()+1, column, index.parent());
resultsModel->setData(child, QVariant(ti->getHeadingPlain()), Qt::EditRole);
resultsModel->getItem(child)->setOriginal (ti);
}
}
}
void FindResultWidget::addItem (const QString &s)
{
if (!s.isEmpty())
{
QModelIndex index = view->selectionModel()->currentIndex();
if (!resultsModel->insertRow(index.row()+1, index.parent()))
return;
for (int column = 0; column < resultsModel->columnCount(index.parent()); ++column) {
QModelIndex child = resultsModel->index(index.row()+1, column, index.parent());
resultsModel->setData(child, QVariant(s), Qt::EditRole);
}
}
}
QString FindResultWidget::getFindText()
{
return findWidget->getFindText();
}
FindResultModel* FindResultWidget::getResultModel()
{
return resultsModel;
}
void FindResultWidget::popup()
{
show();
parentWidget()->show();
findWidget->setFocus();
}
void FindResultWidget::cancelPressed()
{
emit (hideFindResultWidget() );
}
void FindResultWidget::nextButtonPressed(QString s, bool searchNotesFlag)
{
emit (findPressed(s, searchNotesFlag) );
}
void FindResultWidget::updateSelection(QItemSelection newsel,QItemSelection)
{
QModelIndex ix;
foreach (ix,newsel.indexes() )
{
FindResultItem *fri= static_cast<FindResultItem*>(ix.internalPointer());
if (fri->getOrgModel() && fri->getOriginalID()>0)
{
TreeItem *ti=fri->getOrgModel()->findID(fri->getOriginalID() );
if (ti)
{
fri->getOrgModel()->select (ti);
int i=fri->getOriginalIndex();
if (i>=0) emit (noteSelected (resultsModel->getSearchString(),i));
}
}
}
}
void FindResultWidget::setStatus (FindWidget::Status st)
{
findWidget->setStatus (st);
}