diff options
| author | Aqua-sama <aqua@iserlohn-fortress.net> | 2017-08-24 12:53:09 +0200 | 
|---|---|---|
| committer | Aqua-sama <aqua@iserlohn-fortress.net> | 2017-08-24 12:53:09 +0200 | 
| commit | a725ff498a049d23bcadd14bdc1a369e9a82b140 (patch) | |
| tree | 9ee46dee4485433eebd9d9dc0d20df4018382bd9 /src/lib/navigation | |
| parent | Split address bar off into static library (diff) | |
| download | smolbote-a725ff498a049d23bcadd14bdc1a369e9a82b140.tar.xz | |
Address bar popup is now navigateable
Diffstat (limited to 'src/lib/navigation')
| -rw-r--r-- | src/lib/navigation/urllineedit.cpp | 47 | ||||
| -rw-r--r-- | src/lib/navigation/urllineedit.h | 4 | 
2 files changed, 45 insertions, 6 deletions
| diff --git a/src/lib/navigation/urllineedit.cpp b/src/lib/navigation/urllineedit.cpp index 8083088..f3fcccd 100644 --- a/src/lib/navigation/urllineedit.cpp +++ b/src/lib/navigation/urllineedit.cpp @@ -24,17 +24,16 @@  #include <QAction>  #include <QStyle> -//#include "browser.h"  #include <QWidgetAction>  UrlLineEdit::UrlLineEdit(QWidget *parent) :      QLineEdit(parent)  { -    //setStyleSheet("color: #808080");      setPlaceholderText(tr("Enter address"));      setContextMenuPolicy(Qt::NoContextMenu); +      QTextCharFormat hostnameFormat;      hostnameFormat.setFontWeight(QFont::Bold);      m_hostFormat.format = hostnameFormat; @@ -53,10 +52,13 @@ UrlLineEdit::UrlLineEdit(QWidget *parent) :      m_menu = new QMenu(this);      m_menu->setWindowFlags(Qt::FramelessWindowHint | Qt::Tool); -    QListWidget *listWidget = new QListWidget(); +    listWidget = new QListWidget();      listWidget->addItem("start.duckduckgo.com");      listWidget->addItem("neueland.iserlohn-fortress.net"); +    connect(listWidget, &QListWidget::itemSelectionChanged, [this](){ +        setUrl(urlFromUserInput(listWidget->currentItem()->text())); +    });      connect(listWidget, &QListWidget::itemActivated, [this](QListWidgetItem *item){          setUrl(urlFromUserInput(item->text()));          this->m_menu->hide(); @@ -68,7 +70,16 @@ UrlLineEdit::UrlLineEdit(QWidget *parent) :      QAction *closeAction = m_menu->addAction("Close");      connect(closeAction, SIGNAL(triggered()), m_menu, SLOT(hide())); +    // connect signals      connect(this, SIGNAL(textEdited(QString)), this, SLOT(showCompleter(QString))); +    connect(this, &QLineEdit::returnPressed, [this](){ +        if(text().startsWith('#')) { +            emit searchTermEntered(text()); +        } else { +            emit addressEntered(url()); +        } +        m_menu->hide(); +    });  } @@ -118,6 +129,32 @@ void UrlLineEdit::resizeEvent(QResizeEvent *event)      m_menu->setFixedWidth(width());  } +void UrlLineEdit::keyPressEvent(QKeyEvent *event) +{ +    if(event->key() == Qt::Key_Down) { +        if(!listWidget->isVisible()) { +            showCompleter(text()); +            return; +        } else { +            // listWidget is visible +            int newIndex = listWidget->currentRow()+1; +            if(newIndex < listWidget->count()) { +                listWidget->setCurrentRow(newIndex, QItemSelectionModel::SelectCurrent); +            } +            return; +        } +    } else if(event->key() == Qt::Key_Up) { +        if(listWidget->isVisible()) { +            int newIndex = listWidget->currentRow()-1; +            if(newIndex >= 0) { +                listWidget->setCurrentRow(newIndex, QItemSelectionModel::SelectCurrent); +            } +            return; +        } +    } +    QLineEdit::keyPressEvent(event); +} +  // formatting taken from: https://forum.qt.io/topic/60962/setting-qlineedit-text-bold  void UrlLineEdit::setTextFormat(const QTextLayout::FormatRange &format)  { @@ -135,9 +172,6 @@ void UrlLineEdit::clearTextFormat()  QUrl UrlLineEdit::urlFromUserInput(const QString &input)  { -//    if(input.startsWith('#')) { -//        return QUrl::fromUserInput(qApp->settings()->value("general.search").toString().replace("$term", input.mid(1))); -//    }      return QUrl::fromUserInput(input);  } @@ -146,6 +180,7 @@ QUrl UrlLineEdit::urlFromUserInput(const QString &input)  void UrlLineEdit::showCompleter(const QString &text)  {      m_menu->move(mapToGlobal(QPoint(0, height()))); +    listWidget->setCurrentRow(0, QItemSelectionModel::SelectCurrent);      m_menu->exec();  } diff --git a/src/lib/navigation/urllineedit.h b/src/lib/navigation/urllineedit.h index 548000a..0865d47 100644 --- a/src/lib/navigation/urllineedit.h +++ b/src/lib/navigation/urllineedit.h @@ -34,6 +34,8 @@ public:      explicit UrlLineEdit(QWidget *parent = 0);  signals: +    void addressEntered(const QUrl &url); +    void searchTermEntered(const QString &term);  public slots:      void setUrl(const QUrl &url); @@ -43,6 +45,7 @@ protected:      void focusInEvent(QFocusEvent *event);      void focusOutEvent(QFocusEvent *event);      void resizeEvent(QResizeEvent *event); +    void keyPressEvent(QKeyEvent *event);  private slots:      void showCompleter(const QString &text); @@ -63,6 +66,7 @@ private:      bool wasFocused = false;      QMenu *m_menu; +    QListWidget *listWidget;  };  #endif // URLLINEEDIT_H | 
