diff options
Diffstat (limited to 'src/urlbar/listitem.cpp')
-rw-r--r-- | src/urlbar/listitem.cpp | 73 |
1 files changed, 30 insertions, 43 deletions
diff --git a/src/urlbar/listitem.cpp b/src/urlbar/listitem.cpp index 6c09f9a5..5ff90056 100644 --- a/src/urlbar/listitem.cpp +++ b/src/urlbar/listitem.cpp @@ -212,12 +212,11 @@ TextLabel::TextLabel(const QString &text, const QString &textToPointOut, QWidget const bool wasItalic = t.startsWith("<i>"); if (wasItalic) t.remove(QRegExp("<[/ib]*>")); + t = Qt::escape(t); - QStringList words = textToPointOut.split(" "); - foreach (const QString &wordToPointOut, words) { - if (!wordToPointOut.isEmpty()) - t.replace(QRegExp('(' + wordToPointOut + ')', Qt::CaseInsensitive), "<b>\\1</b>"); - } + QString ss = Qt::escape(textToPointOut); + t.replace(QRegExp('(' + ss + ')', Qt::CaseInsensitive), "<b>\\1</b>"); + if (wasItalic) t = QL1S("<i>") + t + QL1S("</i>"); @@ -226,6 +225,19 @@ TextLabel::TextLabel(const QString &text, const QString &textToPointOut, QWidget } +TextLabel::TextLabel(QWidget *parent) + : QLabel(parent) +{ + setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Maximum); +} + + +void TextLabel::setEngineText(const QString &engine, const QString &text) +{ + setText( i18nc("%1=search engine, e.g. Google, Wikipedia %2=text to search for", "Search %1 for <b>%2</b>", engine, Qt::escape(text) ) ); +} + + //-------------------------------------------------------------------------------------------- @@ -290,23 +302,11 @@ SearchListItem::SearchListItem(const UrlSearchItem &item, const QString &text, Q : ListItem(item, parent) , m_text(text) { - QString query = text; - KService::Ptr engine = SearchEngine::fromString(text); - if (engine) - { - query = query.remove(0, text.indexOf(SearchEngine::delimiter()) + 1); - } - else - { - engine = qobject_cast<CompletionWidget *>(parent)->searchEngine(); - } - - m_url = SearchEngine::buildQuery(engine, query); - - KIcon icon = Application::iconManager()->iconForUrl( SearchEngine::defaultEngine()->property("Query").toUrl() ); - m_iconLabel = new IconLabel(icon, this); //TODO: get the default engine icon (will be easy in KDE SC 4.5) - m_titleLabel = new TextLabel(searchItemTitle(engine->name(), query), query, this); - m_engineBar = new EngineBar(engine, parent); + m_iconLabel = new IconLabel(SearchEngine::buildQuery(UrlResolver::searchEngine(), ""), this); + QString query = SearchEngine::extractQuery(text); + m_titleLabel = new TextLabel(this); + m_titleLabel->setEngineText(item.title, query); + m_engineBar = new EngineBar(UrlResolver::searchEngine(), parent); QHBoxLayout *hLayout = new QHBoxLayout; hLayout->setSpacing(4); @@ -329,18 +329,18 @@ QString SearchListItem::text() } -QString SearchListItem::searchItemTitle(QString engine, QString text) -{ - return QString(i18nc("%1=search engine, e.g. Google, Wikipedia %2=text to search for", "Search %1 for %2", engine, Qt::escape(text))); -} +// QString SearchListItem::searchItemTitle(QString engine, QString text) +// { +// return QString(i18nc("%1=search engine, e.g. Google, Wikipedia %2=text to search for", "Search %1 for %2", engine, text)); +// } void SearchListItem::changeSearchEngine(KService::Ptr engine) { - m_titleLabel->setText(searchItemTitle(engine->name(), m_text)); + m_titleLabel->setEngineText(engine->name(), m_text); m_iconLabel->setPixmap( Application::iconManager()->iconForUrl(KUrl(engine->property("Query").toString())).pixmap(16) ); m_url = SearchEngine::buildQuery(engine, m_text); - qobject_cast<CompletionWidget *>(parent())->setSearchEngine(engine); + UrlResolver::setSearchEngine(engine); } @@ -429,21 +429,8 @@ SuggestionListItem::SuggestionListItem(const UrlSearchItem &item, const QString QHBoxLayout *hLayout = new QHBoxLayout; hLayout->setSpacing(4); - QString query = item.title; - KService::Ptr engine = SearchEngine::fromString(query); - if (engine) - { - query = query.remove(0, text.indexOf(SearchEngine::delimiter()) + 1); - } - else - { - engine = qobject_cast<CompletionWidget *>(parent)->searchEngine(); - } - - m_url = SearchEngine::buildQuery(engine, query); - - hLayout->addWidget(new IconLabel(SearchEngine::buildQuery(engine, ""), this)); - hLayout->addWidget(new TextLabel(item.title, text, this)); + hLayout->addWidget(new IconLabel(SearchEngine::buildQuery(UrlResolver::searchEngine(), ""), this)); + hLayout->addWidget(new TextLabel(item.title, SearchEngine::extractQuery(text), this)); hLayout->addWidget(new TypeIconLabel(item.type, this)); setLayout(hLayout); |