diff options
Diffstat (limited to 'src/urlbar')
| -rw-r--r-- | src/urlbar/completionwidget.cpp | 13 | ||||
| -rw-r--r-- | src/urlbar/listitem.cpp | 80 | ||||
| -rw-r--r-- | src/urlbar/listitem.h | 2 | ||||
| -rw-r--r-- | src/urlbar/urlresolver.cpp | 16 | ||||
| -rw-r--r-- | src/urlbar/urlresolver.h | 20 | 
5 files changed, 92 insertions, 39 deletions
| diff --git a/src/urlbar/completionwidget.cpp b/src/urlbar/completionwidget.cpp index 27fcfbad..740f1471 100644 --- a/src/urlbar/completionwidget.cpp +++ b/src/urlbar/completionwidget.cpp @@ -44,9 +44,6 @@  #include <QEvent>  #include <QKeyEvent> -// Defines -#define MAX_ELEMENTS 9 -  CompletionWidget::CompletionWidget( QWidget *parent)      :QFrame( parent, Qt::ToolTip) @@ -68,16 +65,12 @@ CompletionWidget::CompletionWidget( QWidget *parent)  void CompletionWidget::insertSearchList(const UrlSearchList &list)  {      _list = list; -    int min = MAX_ELEMENTS; -    if(list.count() < min) -        min = list.count(); -     -    for(int i = 0; i<min ; ++i) +    int i=0; +    foreach(UrlSearchItem item, _list)      { -        UrlSearchItem item = list.at(i);          ListItem *suggestion = new ListItem(item);          connect(suggestion, SIGNAL(itemClicked(ListItem *, Qt::MouseButton)), this, SLOT(itemChosen(ListItem *, Qt::MouseButton))); -        suggestion->setObjectName( QString::number(i) ); +        suggestion->setObjectName( QString::number(i++) );          layout()->addWidget( suggestion );      }  } diff --git a/src/urlbar/listitem.cpp b/src/urlbar/listitem.cpp index ee63a156..959db360 100644 --- a/src/urlbar/listitem.cpp +++ b/src/urlbar/listitem.cpp @@ -45,32 +45,52 @@  #include <QStylePainter>  #include <QFile>  #include <QMouseEvent> +#include <QWebSettings>  ListItem::ListItem(const UrlSearchItem &item, QWidget *parent)      : QWidget(parent)      , m_option()  { +    //preview and icon +          QHBoxLayout *hLayout = new QHBoxLayout; -    QVBoxLayout *vLayout = new QVBoxLayout; +  +    QLabel *previewLabelIcon = new QLabel; +    previewLabelIcon->setFixedSize(45,33); +    hLayout->addWidget(previewLabelIcon); -    QLabel *previewLabel = new QLabel; -    previewLabel->setFixedSize(40,30); -    QPixmap preview; +    QPixmap pixmapIcon = KIcon(QWebSettings::iconForUrl(item.url)).pixmap(16);      QString path = KStandardDirs::locateLocal("cache", QString("thumbs/") + guessNameFromUrl(item.url) + ".png", true);      if(QFile::exists(path))      { +        QLabel *previewLabel = new QLabel(previewLabelIcon); +        previewLabel->setFrameStyle(QFrame::StyledPanel | QFrame::Raised); +        QPixmap preview;          preview.load(path); -        previewLabel->setPixmap(preview.scaled(40,30)); -    } -    else +        if (!pixmapIcon.isNull()) +        { +            previewLabel->setFixedSize(38,29); +            previewLabel->setPixmap(preview.scaled(38,29, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); +        } +        else +        { +            previewLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); +            previewLabel->setFixedSize(45,33); +            previewLabel->setPixmap(preview.scaled(45,33, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));   +        } +    }  + +    if (!pixmapIcon.isNull())      { -        if(item.icon.startsWith( QLatin1String("http://") ) ) -            preview = Application::icon( item.icon ).pixmap(22); +        QLabel *iconLabel = new QLabel(previewLabelIcon); +        iconLabel->setPixmap(pixmapIcon); +        iconLabel->move(27, 16);      } -    previewLabel->setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Minimum); -    hLayout->addWidget(previewLabel); +    //title and url +     +    QVBoxLayout *vLayout = new QVBoxLayout;        hLayout->addLayout(vLayout);      QLabel *titleLabel = new QLabel("<b>" + item.title + "</b>"); @@ -82,17 +102,27 @@ ListItem::ListItem(const UrlSearchItem &item, QWidget *parent)      vLayout->addWidget(titleLabel);      vLayout->addWidget(urlLabel); +    //type icon -    QLabel *iconLabel = new QLabel; -    QPixmap pixmap; -    if(item.icon.startsWith( QLatin1String("http://") ) ) -        pixmap = Application::icon( item.icon ).pixmap(18); -    else -        pixmap = KIcon(item.icon).pixmap(18); +    if (item.type & UrlSearchItem::Browse) +    { +        insertIcon(hLayout, "applications-internet"); +    } +     +    if (item.type & UrlSearchItem::Search) +    { +         insertIcon(hLayout, "edit-find"); +    } +    +    if (item.type & UrlSearchItem::Bookmark) +    { +         insertIcon(hLayout, "rating"); +    } -    iconLabel->setPixmap(pixmap); -    iconLabel->setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Minimum); -    hLayout->addWidget(iconLabel); +    if (item.type & UrlSearchItem::History) +    { +         insertIcon(hLayout, "view-history"); +    }      setLayout(hLayout); @@ -109,6 +139,16 @@ ListItem::~ListItem()  } +void ListItem::insertIcon(QLayout *layout, QString icon) +{ +    QLabel *iconLabel = new QLabel; +    QPixmap pixmap = KIcon(icon).pixmap(18); +    iconLabel->setPixmap(pixmap); +    iconLabel->setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Minimum); +    layout->addWidget(iconLabel); +} + +  //TODO: REMOVE DUPLICATE CODE WITH PREVIEWIMAGE  QString ListItem::guessNameFromUrl(QUrl url)  { diff --git a/src/urlbar/listitem.h b/src/urlbar/listitem.h index 1e7b0805..de22d739 100644 --- a/src/urlbar/listitem.h +++ b/src/urlbar/listitem.h @@ -26,6 +26,7 @@  // Qt Includes  #include <QWidget> +#include <QLayout>  #include <QStyleOptionViewItemV4>  // Forward Declarations @@ -55,4 +56,5 @@ protected:  private:      QStyleOptionViewItemV4 m_option;      QString guessNameFromUrl(QUrl url); +    void insertIcon(QLayout *layout, QString icon);  }; diff --git a/src/urlbar/urlresolver.cpp b/src/urlbar/urlresolver.cpp index ef071c30..ff90ce14 100644 --- a/src/urlbar/urlresolver.cpp +++ b/src/urlbar/urlresolver.cpp @@ -45,6 +45,7 @@  #include <QByteArray>  #include <QUrl> +#define MAX_ELEMENTS 9  // NOTE default kurifilter plugin list (at least in my box)  // 1. "kshorturifilter" @@ -106,10 +107,15 @@ UrlSearchList UrlResolver::orderedSearchItems()          foreach (UrlSearchItem i, historyList)          { -            if (!bookmarksList.contains(i))  +            if (!bookmarksList.contains(i)) +            {                  list << i; +            }              else  +            { +                i.type |= UrlSearchItem::Bookmark;                  common << i; +            }          }          foreach (UrlSearchItem i, common) @@ -161,7 +167,7 @@ UrlSearchList UrlResolver::qurlFromUserInputResolution()          {                         QString gUrl = QString(ba);              QString gTitle = i18n("Browse"); -            UrlSearchItem gItem(gUrl, gTitle, QString("") ); +            UrlSearchItem gItem(UrlSearchItem::Browse, gUrl, gTitle, QString("") );              list << gItem;          } @@ -182,7 +188,7 @@ UrlSearchList UrlResolver::webSearchesResolution()          // KUriFilter has the worst performance possible here and let this trick unusable          QString gUrl = QString("http://www.google.com/search?q=%1&ie=UTF-8&oe=UTF-8").arg(url1);          QString gTitle = i18n("Search Google for ") + url1; -        UrlSearchItem gItem(gUrl, gTitle, QString("http://www.google.com") ); +        UrlSearchItem gItem(UrlSearchItem::Search, gUrl, gTitle, QString("http://www.google.com") );          list << gItem;  //         QString wUrl = QString("http://en.wikipedia.org/wiki/Special:Search?search=%1&go=Go").arg(url1); @@ -204,7 +210,7 @@ UrlSearchList UrlResolver::historyResolution()      QStringList historyResults = historyCompletion->substringCompletion(_urlString);      Q_FOREACH(const QString &s, historyResults)      { -        UrlSearchItem it(s, Application::historyManager()->titleForHistoryUrl(s), QString("view-history")); +        UrlSearchItem it(UrlSearchItem::History, s, Application::historyManager()->titleForHistoryUrl(s), QString("view-history"));          list << it;      } @@ -221,7 +227,7 @@ UrlSearchList UrlResolver::bookmarksResolution()      QStringList bookmarkResults = bookmarkCompletion->substringCompletion(_urlString);      Q_FOREACH(const QString &s, bookmarkResults)      { -        UrlSearchItem it( s, Application::bookmarkProvider()->titleForBookmarkUrl(s), QString("rating") ); +        UrlSearchItem it(UrlSearchItem::Bookmark, s, Application::bookmarkProvider()->titleForBookmarkUrl(s), QString("rating") );          list << it;      } diff --git a/src/urlbar/urlresolver.h b/src/urlbar/urlresolver.h index 54b96d63..489a5a79 100644 --- a/src/urlbar/urlresolver.h +++ b/src/urlbar/urlresolver.h @@ -35,13 +35,25 @@  class UrlSearchItem  { -public: + +    public: + +    enum types  +    {  +        Search     = 0x00000001, +        Browse     = 0x00000010, +        History    = 0x00000100, +        Bookmark   = 0x00001000, +        Suggestion = 0x00010000, +    };    + +    int type;      QString url;      QString title;      QString icon; -     -    UrlSearchItem(const QString &_url, const QString &_title = QString(), const QString &_icon = QString()) -        : url(_url), title(_title), icon(_icon) + +    UrlSearchItem(const int &_type, const QString &_url, const QString &_title = QString(), const QString &_icon = QString()) +        : type(_type), url(_url), title(_title), icon(_icon)      {};      bool operator==(UrlSearchItem i); | 
