From 387cf24e389854ecc97f6236fdd6acbc2486dd52 Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Sat, 15 Mar 2025 19:17:03 +0530 Subject: Replaced QCompleter with custom implementation --- src/completion/TabsModel.cpp | 47 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/completion/TabsModel.cpp (limited to 'src/completion/TabsModel.cpp') diff --git a/src/completion/TabsModel.cpp b/src/completion/TabsModel.cpp new file mode 100644 index 0000000..37eb1dd --- /dev/null +++ b/src/completion/TabsModel.cpp @@ -0,0 +1,47 @@ +#include +#include +#include + +#include "completion/TabsModel.hpp" + +TabsModel::TabsModel(QObject *parent) : QAbstractListModel(parent) { + items = { + {.url = "https://ediblemonad.dev", .title = "EdibleMonad website"}, + {.url = "https://lite.duckduckgo.com", .title = "DDG lite"}, + {.url = "https://github.com/trending", .title = "Github trending"}, + }; +} + +QVariant TabsModel::data(const QModelIndex &index, int role) const { + if (!index.isValid() || index.row() >= items.size()) + return QVariant(); + + const Buffer &item = items.at(index.row()); + + if (role == Qt::DisplayRole) + return index.row(); + else if (role == Qt::UserRole) + return item.title; + else if (role == Qt::AccessibleDescriptionRole) + return item.url + item.title; + + return QVariant(); +} + +QHash TabsModel::roleNames() const { + QHash roles; + roles[Qt::DisplayRole] = "url"; + roles[Qt::UserRole] = "title"; + roles[Qt::AccessibleDescriptionRole] = "full"; + return roles; +} + +int TabsModel::rowCount(const QModelIndex &parent) const { + Q_UNUSED(parent); + return items.size(); +} + +int TabsModel::columnCount(const QModelIndex &parent) const { + Q_UNUSED(parent); + return 2; // url + title +} -- cgit v1.3.1