// The toc types combo won't change its model.
typeCO->setModel(gui_view_.tocModels().nameModel());
+
+ // Make sure the buttons are disabled when first shown without a loaded
+ // Buffer.
+ enableControls(false);
}
}
+void TocWidget::on_sortCB_stateChanged(int state)
+{
+ gui_view_.tocModels().sort(current_type_, state == Qt::Checked);
+ updateView();
+}
+
/* FIXME (Ugras 17/11/06):
I have implemented a indexDepth function to get the model indices. In my
opinion, somebody should derive a new qvariant class for tocModelItem
// but my qt 4.1.2 doesn't have expandAll()..
//tocTV->expandAll();
QModelIndexList indices = tocTV->model()->match(
- tocTV->model()->index(0,0),
+ tocTV->model()->index(0, 0),
Qt::DisplayRole, "*", -1,
Qt::MatchFlags(Qt::MatchWildcard|Qt::MatchRecursive));
void TocWidget::enableControls(bool enable)
{
updateTB->setEnabled(enable);
+ sortCB->setEnabled(enable);
if (!canOutline(current_type_))
enable = false;
moveDownTB->setEnabled(enable);
moveInTB->setEnabled(enable);
moveOutTB->setEnabled(enable);
+ if (!enable) {
+ depthSL->setMaximum(0);
+ depthSL->setValue(0);
+ }
+}
+
+
+/// Test if synchronized navigation is possible
+static bool canNavigate(QString const & type)
+{
+ // It is not possible to have synchronous navigation in a correctl
+ // and efficient way with the label type because Toc::item() do a linear
+ // seatch. Even if fixed, it might even not be desirable to do so if we
+ // want to support drag&drop of labels and references.
+ return type != "label";
}
return;
}
typeCO->setEnabled(true);
- tocTV->setEnabled(true);
+ tocTV->setEnabled(false);
+ tocTV->setUpdatesEnabled(false);
- QStandardItemModel * toc_model = gui_view_.tocModels().model(current_type_);
+ QAbstractItemModel * toc_model = gui_view_.tocModels().model(current_type_);
if (tocTV->model() != toc_model) {
tocTV->setModel(toc_model);
tocTV->setEditTriggers(QAbstractItemView::NoEditTriggers);
+ setTreeDepth(depth_);
}
+
+ sortCB->blockSignals(true);
+ sortCB->setChecked(gui_view_.tocModels().isSorted(current_type_));
+ sortCB->blockSignals(false);
+
bool controls_enabled = toc_model && toc_model->rowCount() > 0
&& !gui_view_.buffer()->isReadonly();
enableControls(controls_enabled);
depthSL->setMaximum(gui_view_.tocModels().depth(current_type_));
depthSL->setValue(depth_);
- setTreeDepth(depth_);
- select(gui_view_.tocModels().currentIndex(current_type_));
+ if (canNavigate(current_type_))
+ select(gui_view_.tocModels().currentIndex(current_type_));
+ tocTV->setEnabled(true);
+ tocTV->setUpdatesEnabled(true);
}
void TocWidget::init(QString const & str)
{
- typeCO->blockSignals(true);
-
int new_index;
if (str.isEmpty())
new_index = typeCO->findData(current_type_);
new_index = typeCO->findData(current_type_);
}
+ typeCO->blockSignals(true);
typeCO->setCurrentIndex(new_index);
typeCO->blockSignals(false);
}