Pavel Sanda wrote: > Abdelrazak Younes wrote: > >>> So, the checkbox you are proposing will govern the call to > >>> setTreeDetph()? > >>> > >> > >> strictly speaking i would like to have ui switch between those two modes > >> distinguished here: > >> http://www.lyx.org/trac/changeset/26637 > >> > > > > OK, that was my understanding. How would you describe this check box? > > "Automatic collapsing"? > > I am not very keen on adding this check box but if this is the only > > solution to keep each type of user happy, why not... > > my proposal is to add checkbox just below sort and it would be good > to have short naming. what about 'Keep' with 'Keep uncollapsed state' > tooltip?
would you be oposed to such a solution? pavel
diff --git a/src/frontends/qt4/TocWidget.cpp b/src/frontends/qt4/TocWidget.cpp index b854c4d..5c4e7d4 100644 --- a/src/frontends/qt4/TocWidget.cpp +++ b/src/frontends/qt4/TocWidget.cpp @@ -35,7 +35,7 @@ namespace lyx { namespace frontend { TocWidget::TocWidget(GuiView & gui_view, QWidget * parent) - : QWidget(parent), depth_(0), gui_view_(gui_view) + : QWidget(parent), depth_(0), persistent_(false), gui_view_(gui_view) { setupUi(this); @@ -105,6 +105,12 @@ void TocWidget::on_sortCB_stateChanged(int state) updateView(); } +void TocWidget::on_persistentCB_stateChanged(int state) +{ + persistent_ = state == Qt::Checked; +} + + /* 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 @@ -228,6 +234,7 @@ void TocWidget::enableControls(bool enable) moveDownTB->setEnabled(enable); moveInTB->setEnabled(enable); moveOutTB->setEnabled(enable); + persistentCB->setEnabled(enable); if (!enable) { depthSL->setMaximum(0); depthSL->setValue(0); @@ -263,19 +270,22 @@ void TocWidget::updateView() if (tocTV->model() != toc_model) { tocTV->setModel(toc_model); tocTV->setEditTriggers(QAbstractItemView::NoEditTriggers); - setTreeDepth(depth_); + if (persistent_) setTreeDepth(depth_); } sortCB->blockSignals(true); sortCB->setChecked(gui_view_.tocModels().isSorted(current_type_)); sortCB->blockSignals(false); + persistentCB->setChecked(persistent_); + 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_); + if (!persistent_) setTreeDepth(depth_); if (canNavigate(current_type_)) select(gui_view_.tocModels().currentIndex(current_type_)); tocTV->setEnabled(true); diff --git a/src/frontends/qt4/TocWidget.h b/src/frontends/qt4/TocWidget.h index b80e477..cfac929 100644 --- a/src/frontends/qt4/TocWidget.h +++ b/src/frontends/qt4/TocWidget.h @@ -49,6 +49,7 @@ protected Q_SLOTS: void on_tocTV_clicked(QModelIndex const &); void on_updateTB_clicked(); void on_sortCB_stateChanged(int state); + void on_persistentCB_stateChanged(int state); void on_depthSL_valueChanged(int depth); void on_typeCO_currentIndexChanged(int value); void on_moveUpTB_clicked(); @@ -68,6 +69,8 @@ private: /// depth of list shown int depth_; + /// persistence of uncollapsed nodes in toc view + bool persistent_; /// GuiView & gui_view_; }; diff --git a/src/frontends/qt4/ui/TocUi.ui b/src/frontends/qt4/ui/TocUi.ui index 2fe2231..015df28 100644 --- a/src/frontends/qt4/ui/TocUi.ui +++ b/src/frontends/qt4/ui/TocUi.ui @@ -8,15 +8,15 @@ <rect> <x>0</x> <y>0</y> - <width>185</width> - <height>184</height> + <width>202</width> + <height>332</height> </rect> </property> <property name="windowTitle" > <string/> </property> <layout class="QGridLayout" name="gridLayout" > - <item row="0" column="0" colspan="4" > + <item row="0" column="0" colspan="2" > <widget class="QComboBox" name="typeCO" > <property name="sizePolicy" > <sizepolicy vsizetype="Fixed" hsizetype="Ignored" > @@ -29,7 +29,7 @@ </property> </widget> </item> - <item row="1" column="0" colspan="4" > + <item row="1" column="0" colspan="2" > <widget class="QTreeView" name="tocTV" > <property name="sizePolicy" > <sizepolicy vsizetype="Expanding" hsizetype="Ignored" > @@ -39,7 +39,89 @@ </property> </widget> </item> - <item row="3" column="0" colspan="4" > + <item row="2" column="0" > + <widget class="QSlider" name="depthSL" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Expanding" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="toolTip" > + <string>Adjust the depth of the navigation tree</string> + </property> + <property name="maximum" > + <number>5</number> + </property> + <property name="pageStep" > + <number>1</number> + </property> + <property name="value" > + <number>2</number> + </property> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="tickPosition" > + <enum>QSlider::TicksBothSides</enum> + </property> + </widget> + </item> + <item row="2" column="1" > + <layout class="QVBoxLayout" name="_2" > + <property name="spacing" > + <number>0</number> + </property> + <property name="sizeConstraint" > + <enum>QLayout::SetMinimumSize</enum> + </property> + <property name="leftMargin" > + <number>4</number> + </property> + <item> + <widget class="QCheckBox" name="sortCB" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>0</width> + <height>21</height> + </size> + </property> + <property name="text" > + <string>Sort</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="persistentCB" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Minimum" hsizetype="Fixed" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>0</width> + <height>21</height> + </size> + </property> + <property name="toolTip" > + <string>Keep persistent state of uncollapsed nodes</string> + </property> + <property name="text" > + <string>Keep</string> + </property> + </widget> + </item> + </layout> + </item> + <item row="3" column="0" colspan="2" > <layout class="QHBoxLayout" > <property name="spacing" > <number>6</number> @@ -162,41 +244,6 @@ </item> </layout> </item> - <item row="2" column="0" colspan="3" > - <widget class="QSlider" name="depthSL" > - <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Ignored" > - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="toolTip" > - <string>Adjust the depth of the navigation tree</string> - </property> - <property name="maximum" > - <number>5</number> - </property> - <property name="pageStep" > - <number>1</number> - </property> - <property name="value" > - <number>2</number> - </property> - <property name="orientation" > - <enum>Qt::Horizontal</enum> - </property> - <property name="tickPosition" > - <enum>QSlider::TicksBothSides</enum> - </property> - </widget> - </item> - <item row="2" column="3" > - <widget class="QCheckBox" name="sortCB" > - <property name="text" > - <string>Sort</string> - </property> - </widget> - </item> </layout> </widget> <tabstops>