QT_BEGIN_NAMESPACE

IndexWindow::IndexWindow(QHelpEngine *helpEngine, QWidget *parent)
    : QWidget(parent)
{
    m_helpEngine = helpEngine;
    
    QVBoxLayout *layout = new QVBoxLayout(this);
    QLabel *l = new QLabel(tr("&Look for:"));
    layout->addWidget(l);

    m_searchLineEdit = new QLineEdit();
    l->setBuddy(m_searchLineEdit);
    connect(m_searchLineEdit, SIGNAL(textChanged(const QString&)),
        this, SLOT(filterIndices(const QString&)));
    m_searchLineEdit->installEventFilter(this);
    layout->setMargin(4);
    layout->addWidget(m_searchLineEdit);

    m_indexWidget = m_helpEngine->indexWidget();
    m_indexWidget->installEventFilter(this);
    connect(m_helpEngine->indexModel(), SIGNAL(indexCreationStarted()),
        this, SLOT(disableSearchLineEdit()));
    connect(m_helpEngine->indexModel(), SIGNAL(indexCreated()),
        this, SLOT(enableSearchLineEdit()));
    connect(m_indexWidget, SIGNAL(linkActivated(const QUrl&, const QString&)),
        this, SIGNAL(linkActivated(const QUrl&)));
    connect(m_indexWidget, SIGNAL(linksActivated(const QMap<QString, QUrl>&, const QString&)),
        this, SIGNAL(linksActivated(const QMap<QString, QUrl>&, const QString&)));
    connect(m_searchLineEdit, SIGNAL(returnPressed()),
        m_indexWidget, SLOT(activateCurrentItem()));
    layout->addWidget(m_indexWidget);
}
Exemple #2
0
QT_BEGIN_NAMESPACE

IndexWindow::IndexWindow(QWidget *parent)
    : QWidget(parent)
    , m_searchLineEdit(new QLineEdit)
    , m_indexWidget(HelpEngineWrapper::instance().indexWidget())
{
    TRACE_OBJ
    QVBoxLayout *layout = new QVBoxLayout(this);
    QLabel *l = new QLabel(tr("&Look for:"));
    layout->addWidget(l);

    l->setBuddy(m_searchLineEdit);
    connect(m_searchLineEdit, SIGNAL(textChanged(QString)), this,
        SLOT(filterIndices(QString)));
    m_searchLineEdit->installEventFilter(this);
    layout->setMargin(4);
    layout->addWidget(m_searchLineEdit);

    HelpEngineWrapper &helpEngine = HelpEngineWrapper::instance();
    m_indexWidget->installEventFilter(this);
    connect(helpEngine.indexModel(), SIGNAL(indexCreationStarted()), this,
        SLOT(disableSearchLineEdit()));
    connect(helpEngine.indexModel(), SIGNAL(indexCreated()), this,
        SLOT(enableSearchLineEdit()));
    connect(m_indexWidget, SIGNAL(linkActivated(QUrl,QString)), this,
        SIGNAL(linkActivated(QUrl)));
    connect(m_indexWidget, SIGNAL(linksActivated(QMap<QString,QUrl>,QString)),
        this, SIGNAL(linksActivated(QMap<QString,QUrl>,QString)));
    connect(m_searchLineEdit, SIGNAL(returnPressed()), m_indexWidget,
        SLOT(activateCurrentItem()));
    layout->addWidget(m_indexWidget);

    m_indexWidget->viewport()->installEventFilter(this);
}
void HelpIndexView::CreateQtPartControl(QWidget* parent)
{
  if (m_IndexWidget == nullptr)
  {
    auto  layout = new QVBoxLayout(parent);
    //QLabel *l = new QLabel(tr("&Look for:"));
    //layout->addWidget(l);

    m_SearchLineEdit = new ctkSearchBox(parent);
    m_SearchLineEdit->setClearIcon(QIcon(":/org.blueberry.ui.qt.help/clear.png"));
    m_SearchLineEdit->setPlaceholderText("Filter...");
    m_SearchLineEdit->setContentsMargins(2,2,2,0);
    //l->setBuddy(m_SearchLineEdit);
    connect(m_SearchLineEdit, SIGNAL(textChanged(QString)), this,
            SLOT(filterIndices(QString)));
    m_SearchLineEdit->installEventFilter(this);
    layout->setMargin(0);
    layout->setSpacing(2);
    layout->addWidget(m_SearchLineEdit);

    QHelpEngineWrapper& helpEngine = HelpPluginActivator::getInstance()->getQHelpEngine();
    m_IndexWidget = new HelpIndexWidget();
    m_IndexWidget->setModel(helpEngine.indexModel());
    connect(helpEngine.indexModel(), SIGNAL(indexCreationStarted()),
            this, SLOT(setIndexWidgetBusy()));
    connect(helpEngine.indexModel(), SIGNAL(indexCreated()),
            this, SLOT(unsetIndexWidgetBusy()));
    m_IndexWidget->installEventFilter(this);

    connect(helpEngine.indexModel(), SIGNAL(indexCreationStarted()), this,
            SLOT(disableSearchLineEdit()));
    connect(helpEngine.indexModel(), SIGNAL(indexCreated()), this,
            SLOT(enableSearchLineEdit()));
    connect(m_IndexWidget, SIGNAL(linkActivated(QUrl,QString)), this,
            SLOT(linkActivated(QUrl)));
    connect(m_IndexWidget, SIGNAL(linksActivated(QMap<QString,QUrl>,QString)),
            this, SLOT(linksActivated(QMap<QString,QUrl>,QString)));
    connect(m_SearchLineEdit, SIGNAL(returnPressed()), m_IndexWidget,
            SLOT(activateCurrentItem()));
    layout->addWidget(m_IndexWidget);

    m_IndexWidget->viewport()->installEventFilter(this);
  }
}
QObject* GCF::Components::HelpSystemComponent::fetchObject(const QString& completeName) const
{
    QStringList comps = completeName.split('.');
    GCF::Components::HelpSystemComponent* that = const_cast<GCF::Components::HelpSystemComponent*>(this);

    if(comps.last() == "controller")
        return that;

    if(comps.last() == "helpEngine")
    {
        if( !d->helpEngine )
        {
            qDebug("Help Collection File is: %s", qPrintable(d->helpCollectionFile));
            d->helpEngine = new QHelpEngine(d->helpCollectionFile, that);
            bool success = d->helpEngine->setupData();
            if( !success )
                qDebug("Could not initialize help engine");

            d->contentModel = d->helpEngine->contentModel();
            d->contentWidget = d->helpEngine->contentWidget();
            d->indexModel = d->helpEngine->indexModel();
            d->indexWidget = d->helpEngine->indexWidget();
            d->helpSearchEngine = d->helpEngine->searchEngine();
            d->helpSearchEngine->reindexDocumentation();

            d->searchPanel = new QWidget;
            QVBoxLayout* layout = new QVBoxLayout(d->searchPanel);
            layout->setMargin(5);
            layout->addWidget( d->helpSearchEngine->queryWidget() );
            layout->addWidget( d->helpSearchEngine->resultWidget() );

            d->indexPanel = new QWidget;
            QLabel* lf = new QLabel("&Look For");
            d->indexFilterLineEdit = new QLineEdit;
            lf->setBuddy(d->indexFilterLineEdit);
            d->indexFilterLineEdit->installEventFilter(that);

            layout = new QVBoxLayout(d->indexPanel);
            layout->setMargin(5);
            layout->addWidget(lf);
            layout->addWidget(d->indexFilterLineEdit);
            layout->addWidget(d->indexWidget);

            connect(d->indexWidget, SIGNAL(linkActivated(QUrl,QString)),
                d->helpView, SLOT(showHelp(QUrl)));
            connect(d->indexWidget, SIGNAL(linksActivated(QMap<QString, QUrl>,QString)),
                d->helpView, SLOT(showHelp(QMap<QString, QUrl>,QString)));
            connect(d->helpSearchEngine->resultWidget(), SIGNAL(requestShowLink(QUrl)),
                    d->helpView, SLOT(showHelp(QUrl)));
            connect(d->helpSearchEngine->queryWidget(), SIGNAL(search()),
                    this, SLOT(slotBeginSearch()));
            connect(d->indexFilterLineEdit, SIGNAL(textEdited(const QString&)),
                    d->indexWidget, SLOT(filterIndices(const QString&)));
            connect(d->indexFilterLineEdit, SIGNAL(returnPressed()),
                    d->indexWidget, SLOT(activateCurrentItem()));
            connect(d->contentWidget, SIGNAL(clicked(const QModelIndex&)),
                   this,SLOT(slotContentItemClicked(const QModelIndex&)));
        }

        return d->helpEngine;
    }