diff options
| author | Aqua-sama <aqua@iserlohn-fortress.net> | 2017-12-31 11:28:08 +0100 | 
|---|---|---|
| committer | Aqua-sama <aqua@iserlohn-fortress.net> | 2017-12-31 11:28:08 +0100 | 
| commit | 1111d9fc2c11a351e3011d692293fa45eb9a5d86 (patch) | |
| tree | 25f02cff1f95f890b7a65738dbfecb3a292da8b5 /src/lib/navigation | |
| parent | Using QCompleter to provide address bar completions (diff) | |
| download | smolbote-1111d9fc2c11a351e3011d692293fa45eb9a5d86.tar.xz | |
UrlCompleter searches the bookmarks tree (folder href)
Diffstat (limited to 'src/lib/navigation')
| -rw-r--r-- | src/lib/navigation/navigation.qbs | 2 | ||||
| -rw-r--r-- | src/lib/navigation/urlcompleter.cpp | 26 | ||||
| -rw-r--r-- | src/lib/navigation/urlcompleter.h | 25 | ||||
| -rw-r--r-- | src/lib/navigation/urllineedit.cpp | 5 | ||||
| -rw-r--r-- | src/lib/navigation/urllineedit.h | 4 | 
5 files changed, 57 insertions, 5 deletions
diff --git a/src/lib/navigation/navigation.qbs b/src/lib/navigation/navigation.qbs index a58f86d..7719fbc 100644 --- a/src/lib/navigation/navigation.qbs +++ b/src/lib/navigation/navigation.qbs @@ -17,6 +17,8 @@ Project {          files: [              "navigationbutton.cpp",              "navigationbutton.h", +            "urlcompleter.cpp", +            "urlcompleter.h",              "urllineedit.cpp",              "urllineedit.h",          ] diff --git a/src/lib/navigation/urlcompleter.cpp b/src/lib/navigation/urlcompleter.cpp new file mode 100644 index 0000000..bbde297 --- /dev/null +++ b/src/lib/navigation/urlcompleter.cpp @@ -0,0 +1,26 @@ +/* + * This file is part of smolbote. It's copyrighted by the contributors recorded + * in the version control history of the file, available from its original + * location: git://neueland.iserlohn-fortress.net/smolbote.git + * + * SPDX-License-Identifier: GPL-3.0 + */ + +#include "urlcompleter.h" + +UrlCompleter::UrlCompleter(QAbstractItemModel *model, QObject *parent) : +    QCompleter(model, parent) +{ +    setCompletionMode(QCompleter::PopupCompletion); +    setFilterMode(Qt::MatchContains); +} + +QStringList UrlCompleter::splitPath(const QString &path) const +{ +    return path.split('.'); +} + +QString UrlCompleter::pathFromIndex(const QModelIndex &index) const +{ +    return model()->data(index, completionRole()).toString(); +} diff --git a/src/lib/navigation/urlcompleter.h b/src/lib/navigation/urlcompleter.h new file mode 100644 index 0000000..f2c52ff --- /dev/null +++ b/src/lib/navigation/urlcompleter.h @@ -0,0 +1,25 @@ +/* + * This file is part of smolbote. It's copyrighted by the contributors recorded + * in the version control history of the file, available from its original + * location: git://neueland.iserlohn-fortress.net/smolbote.git + * + * SPDX-License-Identifier: GPL-3.0 + */ + +#ifndef URLCOMPLETER_H +#define URLCOMPLETER_H + +#include <QCompleter> + +class UrlCompleter : public QCompleter +{ +    Q_OBJECT +public: +    explicit UrlCompleter(QAbstractItemModel *model, QObject *parent = nullptr); + +protected: +    QStringList splitPath(const QString &path) const override; +    QString pathFromIndex(const QModelIndex &index) const override; +}; + +#endif // URLCOMPLETER_H diff --git a/src/lib/navigation/urllineedit.cpp b/src/lib/navigation/urllineedit.cpp index c9f11c6..4dc6b39 100644 --- a/src/lib/navigation/urllineedit.cpp +++ b/src/lib/navigation/urllineedit.cpp @@ -83,11 +83,8 @@ QAction *UrlLineEdit::pageAction()  void UrlLineEdit::setCompleterModel(QAbstractItemModel *model)  {      Q_CHECK_PTR(model); -    QCompleter *m_completer = new QCompleter(this); -    m_completer->setCompletionMode(QCompleter::PopupCompletion); -    m_completer->setModel(model); +    m_completer = new UrlCompleter(model, this);      m_completer->setCompletionColumn(1); -      this->setCompleter(m_completer);  } diff --git a/src/lib/navigation/urllineedit.h b/src/lib/navigation/urllineedit.h index 9dd73ab..46366a7 100644 --- a/src/lib/navigation/urllineedit.h +++ b/src/lib/navigation/urllineedit.h @@ -13,6 +13,8 @@  #include <QTextLayout>  #include <QAction> +#include "urlcompleter.h" +  class QAbstractItemModel;  class QMenu;  class QLabel; @@ -51,7 +53,7 @@ private:      QMenu *m_sslMenu;      QLabel *m_sslLabel; -    QCompleter *m_completer; +    UrlCompleter *m_completer;  };  #endif // URLLINEEDIT_H  | 
