#include <config.h>
#include "QToc.h"
+
#include "TocModel.h"
#include "Qt2BC.h"
#include "qt_helpers.h"
QToc::QToc(Dialog & parent)
: ControlToc(parent)
{
- update();
}
-bool QToc::canOutline()
+bool QToc::canOutline(int type) const
{
- vector<string> const & types = getTypes();
-
- if (types.empty())
+ if (type < 0)
return false;
- BOOST_ASSERT(type_ >= 0 && type_ < int(types.size()));
- return ControlToc::canOutline(types[type_]);
+ return ControlToc::canOutline(type);
}
-QStandardItemModel * QToc::tocModel()
+int QToc::getTocDepth(int type)
{
- lyxerr[Debug::GUI]
- << "QToc: type_ " << type_
- << " toc_models_.size() " << toc_models_.size()
- << endl;
-
- if (toc_models_.empty())
+ if (type < 0)
return 0;
-
- BOOST_ASSERT(type_ >= 0 && type_ < int(toc_models_.size()));
- return toc_models_[type_];
+ return toc_models_[type]->modelDepth();
}
-QStandardItemModel * QToc::setTocModel(int type)
+QStandardItemModel * QToc::tocModel(int type)
{
- type_ = type;
+ if (type < 0)
+ return 0;
+
+ if (toc_models_.empty()) {
+ lyxerr[Debug::GUI] << "QToc::tocModel(): no types available " << endl;
+ return 0;
+ }
lyxerr[Debug::GUI]
- << "QToc: type_ " << type_
+ << "QToc: type_ " << type
<< " toc_models_.size() " << toc_models_.size()
<< endl;
- BOOST_ASSERT(type_ >= 0 && type_ < int(toc_models_.size()));
- return toc_models_[type_];
+ BOOST_ASSERT(type >= 0 && type < int(toc_models_.size()));
+ return toc_models_[type];
}
-QModelIndex const QToc::getCurrentIndex()
+QModelIndex const QToc::getCurrentIndex(int type) const
{
- vector<string> const & types = getTypes();
- TocIterator const it = getCurrentTocItem(types[type_]);
- if (!it->isValid()) {
- lyxerr[Debug::GUI] << "QToc::getCurrentIndex(): TocItem is invalid!" << endl;
+ if (type < 0)
return QModelIndex();
- }
- return toc_models_[type_]->modelIndex(it);
+ return toc_models_[type]->modelIndex(getCurrentTocItem(type));
}
-void QToc::goTo(QModelIndex const & index)
+void QToc::goTo(int type, QModelIndex const & index)
{
- if (!index.isValid()) {
+ if (type < 0 || !index.isValid()
+ || index.model() != toc_models_[type]) {
lyxerr[Debug::GUI]
<< "QToc::goTo(): QModelIndex is invalid!"
<< endl;
return;
}
- TocIterator const it = toc_models_[type_]->tocIterator(index);
+ BOOST_ASSERT(type >= 0 && type < int(toc_models_.size()));
+
+ TocIterator const it = toc_models_[type]->tocIterator(index);
lyxerr[Debug::GUI]
<< "QToc::goTo " << lyx::to_utf8(it->str())
void QToc::update()
{
- toc_models_.clear();
-
- QStringList type_list;
+ updateType();
+ updateToc();
+ modelReset();
+}
- type_ = 0;
- vector<string> const & types = getTypes();
- if (types.empty()) {
- type_model_.setStringList(type_list);
- toc_models_.clear();
- return;
- }
-
- string const & selected_type = params().getCmdName();
- lyxerr[Debug::GUI] << "selected_type " << selected_type << endl;
+void QToc::updateType()
+{
+ QStringList type_list;
- QString gui_names_;
- for (size_t i = 0; i != types.size(); ++i) {
- string const & type_str = types[i];
- type_list.append(toqstr(getGuiName(type_str)));
- if (type_str == selected_type)
- type_ = i;
-
- lyxerr[Debug::GUI]
- << "QToc: new type " << type_str
- << "\ttoc_models_.size() " << toc_models_.size()
- << endl;
+ vector<docstring> const & type_names = typeNames();
+ BOOST_ASSERT(!type_names.empty());
+ for (size_t i = 0; i != type_names.size(); ++i)
+ type_list.append(toqstr(type_names[i]));
- toc_models_.push_back(new TocModel(getContents(types[i])));
- }
type_model_.setStringList(type_list);
}
-void QToc::updateToc(int type)
+void QToc::updateToc()
{
- toc_models_[type] = new TocModel(getContents(getTypes()[type]));
+ toc_models_.clear();
+ TocList::const_iterator it = tocs().begin();
+ TocList::const_iterator end = tocs().end();
+ for (; it != end; ++it)
+ toc_models_.push_back(new TocModel(it->second));
}
} // namespace frontend
} // namespace lyx
+
+#include "QToc_moc.cpp"