X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FTocWidget.h;h=3f67606302705f2cb049477e46a2c7c9a9745782;hb=b7f6b979d0f889f08e735f35378bb20ba3788b4b;hp=e1c12479cfd19bbc8f17fd6b93730bcb47d1a756;hpb=d588c13f3fc71d4c486a93d4984b53a5d546057f;p=lyx.git diff --git a/src/frontends/qt4/TocWidget.h b/src/frontends/qt4/TocWidget.h index e1c12479cf..3f67606302 100644 --- a/src/frontends/qt4/TocWidget.h +++ b/src/frontends/qt4/TocWidget.h @@ -13,57 +13,101 @@ #ifndef TOC_WIDGET_H #define TOC_WIDGET_H -#include "ui/QTocUi.h" +#include "ui_TocUi.h" -#include +#include "Cursor.h" +#include "FuncCode.h" + +#include #include +class QModelIndex; +class QString; + namespace lyx { namespace frontend { -class QToc; +class GuiView; -class TocWidget : public QWidget, public Ui::QTocUi { +class TocWidget : public QWidget, public Ui::TocUi +{ Q_OBJECT public: - TocWidget(QToc * form, QMainWindow * parent = 0); + /// + TocWidget(GuiView & gui_view, QWidget * parent = 0); + + /// Initialise GUI. + void init(QString const & str); + /// + void doDispatch(Cursor & cur, FuncRequest const & fr); + /// + bool getStatus(Cursor & cur, FuncRequest const & fr, FuncStatus & status) + const; - /// Update the display of the dialog whilst it is still visible. - void update(); +public Q_SLOTS: + /// Schedule an update of the dialog, delaying expensive operations + void updateView(); + /// Update completely without delay + void updateViewNow(); protected Q_SLOTS: - /// Update Gui of the display. - void updateGui(); /// void select(QModelIndex const & index); /// - void selectionChanged(const QModelIndex & current, - const QModelIndex & previous); + void goTo(QModelIndex const &); - void on_updatePB_clicked(); + void on_tocTV_activated(QModelIndex const &); + void on_tocTV_pressed(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_activated(int value); - void on_moveUpPB_clicked(); - void on_moveDownPB_clicked(); - void on_moveInPB_clicked(); - void on_moveOutPB_clicked(); + void on_typeCO_currentIndexChanged(int value); + void on_moveUpTB_clicked(); + void on_moveDownTB_clicked(); + void on_moveInTB_clicked(); + void on_moveOutTB_clicked(); + void filterContents(); + + void showContextMenu(const QPoint & pos); + +private Q_SLOTS: + /// Perform the expensive update operations + void finishUpdateView(); -protected: +private: + /// + void enableControls(bool enable = true); /// - void enableButtons(bool enable = true); + bool canOutline() + { return current_type_ == "tableofcontents"; } + /// It is not possible to have synchronous navigation in a correct + /// and efficient way with the label and change type because Toc::item() + /// does a linear search. Even when fixed, it might even not be desirable + /// to do so if we want to support drag&drop of labels and references. + bool canNavigate() + { return current_type_ != "label" && current_type_ != "change"; } /// - int getIndexDepth(QModelIndex const & index, int depth = -1); + bool isSortable() + { return current_type_ != "tableofcontents"; } /// void setTreeDepth(int depth); - -private: - /// Reconnects the selection model change signal when TOC changed. - void reconnectSelectionModel(); - - QToc * form_; + /// + void outline(FuncCode func_code); + /// finds the inset that is connected to the current item, + /// if any, otherwise return null + Inset * itemInset() const; + /// + QString current_type_; /// depth of list shown int depth_; + /// persistence of uncollapsed nodes in toc view + bool persistent_; + /// + GuiView & gui_view_; + // Timer for scheduling expensive update operations + QTimer * timer_; }; } // namespace frontend