diff --git a/documentation/documentationview.h b/documentation/documentationview.h --- a/documentation/documentationview.h +++ b/documentation/documentationview.h @@ -22,7 +22,6 @@ #include #include -#include #include #include "documentationexport.h" @@ -47,20 +46,20 @@ public slots: void initialize(); + void showHome(); + void showDocumentation(const QModelIndex &); + void addHistory(const KDevelop::IDocumentation::Ptr& doc); void emptyHistory(); void browseForward(); void browseBack(); - void changedSelection(); + void changedProvider(int); - void changeProvider(const QModelIndex &); - void showHome(); private: void updateView(); - KToolBar* mActions; QAction* mForward; QAction* mBack; QAction* mFind; diff --git a/documentation/documentationview.cpp b/documentation/documentationview.cpp --- a/documentation/documentationview.cpp +++ b/documentation/documentationview.cpp @@ -20,6 +20,7 @@ #include "documentationview.h" #include +#include #include #include #include @@ -46,58 +47,58 @@ using namespace KDevelop; DocumentationView::DocumentationView(QWidget* parent, ProvidersModel* model) - : QWidget(parent), mProvidersModel(model) + : QWidget(parent) + , mProvidersModel(model) { setWindowIcon(QIcon::fromTheme(QStringLiteral("documentation"), windowIcon())); setWindowTitle(i18n("Documentation")); + mCurrent = mHistory.end(); + + mFindDoc = new DocumentationFindWidget(this); + mFindDoc->hide(); + setLayout(new QVBoxLayout(this)); layout()->setMargin(0); layout()->setSpacing(0); + layout()->addWidget(new QWidget(this)); + layout()->addWidget(mFindDoc); - //TODO: clean this up, simply use addAction as that will create a toolbar automatically - // use custom QAction's with createWidget for mProviders and mIdentifiers - mActions = new KToolBar(this); - // set window title so the QAction from QToolBar::toggleViewAction gets a proper name set - mActions->setWindowTitle(i18n("Documentation Tool Bar")); - mActions->setToolButtonStyle(Qt::ToolButtonIconOnly); - int iconSize = style()->pixelMetric(QStyle::PM_SmallIconSize); - mActions->setIconSize(QSize(iconSize, iconSize)); + mBack = new QAction(QIcon::fromTheme(QStringLiteral("go-previous")), i18n("Back"), this); + mBack->setEnabled(false); + connect(mBack, &QAction::triggered, this, &DocumentationView::browseBack); + addAction(mBack); - mFindDoc = new DocumentationFindWidget; - mFindDoc->hide(); + mForward = new QAction(QIcon::fromTheme(QStringLiteral("go-next")), i18n("Forward"), this); + mForward->setEnabled(false); + connect(mForward, &QAction::triggered, this, &DocumentationView::browseForward); + addAction(mForward); + + mFind = new QAction(QIcon::fromTheme(QStringLiteral("edit-find")), i18n("Find"), this); + connect(mFind, SIGNAL(triggered()), mFindDoc, SLOT(startSearch())); + addAction(mFind); + + QAction* mHome = new QAction(QIcon::fromTheme(QStringLiteral("go-home")), i18n("Home"), this); + connect(mHome, &QAction::triggered, this, &DocumentationView::showHome); + addAction(mHome); - mBack = mActions->addAction(QIcon::fromTheme(QStringLiteral("go-previous")), i18n("Back")); - mForward = mActions->addAction(QIcon::fromTheme(QStringLiteral("go-next")), i18n("Forward")); - mFind = mActions->addAction(QIcon::fromTheme(QStringLiteral("edit-find")), i18n("Find"), mFindDoc, SLOT(startSearch())); - mActions->addSeparator(); - mActions->addAction(QIcon::fromTheme(QStringLiteral("go-home")), i18n("Home"), this, SLOT(showHome())); - mProviders = new QComboBox(mActions); + mProviders = new QComboBox; + QWidgetAction* mProvidersAction = new QWidgetAction(this); + mProvidersAction->setDefaultWidget(mProviders); + addAction(mProvidersAction); - mIdentifiers = new QLineEdit(mActions); + mIdentifiers = new QLineEdit; mIdentifiers->setClearButtonEnabled(true); mIdentifiers->setCompleter(new QCompleter(mIdentifiers)); -// mIdentifiers->completer()->setCompletionMode(QCompleter::UnfilteredPopupCompletion); mIdentifiers->completer()->setCaseSensitivity(Qt::CaseInsensitive); - - /* vertical size policy should be left to the style. */ + // vertical size policy should be left to the style. mIdentifiers->setSizePolicy(QSizePolicy::Expanding, mIdentifiers->sizePolicy().verticalPolicy()); - connect(mIdentifiers, &QLineEdit::returnPressed, this, &DocumentationView::changedSelection); - connect(mIdentifiers->completer(), static_cast(&QCompleter::activated), this, &DocumentationView::changeProvider); - QWidget::setTabOrder(mProviders, mIdentifiers); - - mActions->addWidget(mProviders); - mActions->addWidget(mIdentifiers); + connect(mIdentifiers->completer(), static_cast(&QCompleter::activated), + [this](const QModelIndex& idx){ showDocumentation(idx); }); - mBack->setEnabled(false); - mForward->setEnabled(false); - connect(mBack, &QAction::triggered, this, &DocumentationView::browseBack); - connect(mForward, &QAction::triggered, this, &DocumentationView::browseForward); - mCurrent = mHistory.end(); - - layout()->addWidget(mActions); - layout()->addWidget(new QWidget(this)); - layout()->addWidget(mFindDoc); + QWidgetAction* mIdentifiersAction = new QWidgetAction(this); + mIdentifiersAction->setDefaultWidget(mIdentifiers); + addAction(mIdentifiersAction); QMetaObject::invokeMethod(this, "initialize", Qt::QueuedConnection); } @@ -143,12 +144,7 @@ showDocumentation(prov->homePage()); } -void DocumentationView::changedSelection() -{ - changeProvider(mIdentifiers->completer()->currentIndex()); -} - -void DocumentationView::changeProvider(const QModelIndex& idx) +void DocumentationView::showDocumentation(const QModelIndex& idx) { if (idx.isValid()) { IDocumentationProvider* prov = mProvidersModel->provider(mProviders->currentIndex()); @@ -209,7 +205,7 @@ mIdentifiers->completer()->setModel((*mCurrent)->provider()->indexModel()); mIdentifiers->setText((*mCurrent)->name()); - QLayoutItem* lastview = layout()->takeAt(1); + QLayoutItem* lastview = layout()->takeAt(0); Q_ASSERT(lastview); if (lastview->widget()->parent() == this) { @@ -228,7 +224,7 @@ mFindDoc->hide(); } - QLayoutItem* findWidget = layout()->takeAt(1); + QLayoutItem* findWidget = layout()->takeAt(0); layout()->addWidget(w); layout()->addItem(findWidget); }