--- /dev/null
+#include "findresultwidget.h"
+
+#include <QTreeView>
+#include <QVBoxLayout>
+
+#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);
+}