X-Git-Url: https://git.sven.stormbind.net/?a=blobdiff_plain;f=src%2Ffindresultwidget.cpp;fp=src%2Ffindresultwidget.cpp;h=980860dee0e8fc2a9755136d7e643aa7da34b066;hb=d483bd8e6523c23c6f1d8908a2e0611c2bc9ff4f;hp=0000000000000000000000000000000000000000;hpb=7dfa3fe589d1722d49681f42cdb0bf1e6efb5223;p=sven%2Fvym.git diff --git a/src/findresultwidget.cpp b/src/findresultwidget.cpp new file mode 100644 index 0000000..980860d --- /dev/null +++ b/src/findresultwidget.cpp @@ -0,0 +1,115 @@ +#include "findresultwidget.h" + +#include +#include + +#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(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); +}