X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FTocModel.cpp;h=4eaafb4bedda336c6936b6580e447ad800713f1d;hb=425d092204118ea6c24c28e85fdf03fcf2bb51a4;hp=37f8b704b28a19a66521b954066524cb6cd3c5d9;hpb=0985bab38eb4acb4b54fcccacd33923491f1eb0a;p=lyx.git diff --git a/src/frontends/qt4/TocModel.cpp b/src/frontends/qt4/TocModel.cpp index 37f8b704b2..4eaafb4bed 100644 --- a/src/frontends/qt4/TocModel.cpp +++ b/src/frontends/qt4/TocModel.cpp @@ -21,7 +21,6 @@ #include "LyXFunc.h" #include "TocBackend.h" -#include "support/convert.h" #include "support/debug.h" #include "support/lassert.h" @@ -36,7 +35,7 @@ namespace frontend { /////////////////////////////////////////////////////////////////////////////// // -// TocModels +// TocTypeModel // /////////////////////////////////////////////////////////////////////////////// @@ -52,6 +51,12 @@ void TocTypeModel::reset() } +/////////////////////////////////////////////////////////////////////////////// +// +// TocModel +// +/////////////////////////////////////////////////////////////////////////////// + TocModel::TocModel(QObject * parent) : model_(new TocTypeModel(parent)), sorted_model_(new QSortFilterProxyModel(parent)), @@ -95,6 +100,7 @@ void TocModel::sort(bool sort_it) sorted_model_->sort(0); } + TocItem const & TocModel::tocItem(QModelIndex const & index) const { return (*toc_)[model()->data(index, Qt::UserRole).toUInt()]; @@ -123,6 +129,14 @@ void TocModel::reset() } +void TocModel::updateItem(DocIterator const & dit) +{ + QModelIndex index = modelIndex(dit); + TocItem const & toc_item = tocItem(index); + model_->setData(index, toqstr(toc_item.str()), Qt::DisplayRole); +} + + void TocModel::reset(Toc const & toc) { toc_ = &toc; @@ -199,7 +213,7 @@ void TocModel::populate(unsigned int & index, QModelIndex const & parent) int TocModel::modelDepth() const { int const d = maxdepth_ - mindepth_; - LASSERT(d >= 0 && d <= 100, /* */); + LASSERT(d >= 0 && d <= 100, return 0); return d; } @@ -223,7 +237,7 @@ TocModels::TocModels() } -void TocModels::clear() +void TocModels::clear() { names_->blockSignals(true); names_->clear(); @@ -284,6 +298,20 @@ void TocModels::goTo(QString const & type, QModelIndex const & index) const } +TocItem const TocModels::currentItem(QString const & type, + QModelIndex const & index) const +{ + const_iterator it = models_.find(type); + if (it == models_.end() || !index.isValid()) { + LYXERR(Debug::GUI, "TocModels::currentItem(): QModelIndex is invalid!"); + return TocItem(); + } + LASSERT(index.model() == it.value()->model(), return TocItem()); + + return it.value()->tocItem(index); +} + + void TocModels::updateBackend() const { bv_->buffer().masterBuffer()->tocBackend().update(); @@ -291,6 +319,12 @@ void TocModels::updateBackend() const } +void TocModels::updateItem(QString const & type, DocIterator const & dit) +{ + models_[type]->updateItem(dit); +} + + void TocModels::reset(BufferView const * bv) { bv_ = bv; @@ -353,4 +387,4 @@ void TocModels::sort(QString const & type, bool sort_it) } // namespace frontend } // namespace lyx -#include "TocModel_moc.cpp" +#include "moc_TocModel.cpp"