store history using sqlite, add suggestion with open
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
#include "completionview.h"
|
||||
|
||||
#include <QHeaderView>
|
||||
|
||||
namespace {
|
||||
|
||||
constexpr int kMaxVisibleRows = 12;
|
||||
|
||||
} // namespace
|
||||
|
||||
CompletionView::CompletionView(QWidget *parent)
|
||||
: QTreeWidget(parent)
|
||||
{
|
||||
setObjectName(QStringLiteral("completion"));
|
||||
setFocusPolicy(Qt::NoFocus);
|
||||
setColumnCount(2);
|
||||
setHeaderHidden(true);
|
||||
setRootIsDecorated(false);
|
||||
setUniformRowHeights(true);
|
||||
setFrameShape(QFrame::NoFrame);
|
||||
setSelectionMode(QAbstractItemView::SingleSelection);
|
||||
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
|
||||
setTextElideMode(Qt::ElideRight);
|
||||
header()->setStretchLastSection(false);
|
||||
header()->setSectionResizeMode(QHeaderView::Stretch);
|
||||
hide();
|
||||
}
|
||||
|
||||
void CompletionView::setEntries(const QList<History::Entry> &entries)
|
||||
{
|
||||
clear();
|
||||
if (entries.isEmpty()) {
|
||||
hide();
|
||||
return;
|
||||
}
|
||||
|
||||
QList<QTreeWidgetItem *> items;
|
||||
items.reserve(entries.size());
|
||||
for (const History::Entry &entry : entries) {
|
||||
auto *item = new QTreeWidgetItem({entry.url, entry.title});
|
||||
item->setToolTip(0, entry.url);
|
||||
items.append(item);
|
||||
}
|
||||
addTopLevelItems(items);
|
||||
|
||||
const int rows = qMin(int(entries.size()), kMaxVisibleRows);
|
||||
setFixedHeight(rows * sizeHintForRow(0) + 2 * frameWidth());
|
||||
show();
|
||||
}
|
||||
|
||||
QString CompletionView::cycle(int step)
|
||||
{
|
||||
const int count = topLevelItemCount();
|
||||
if (count == 0)
|
||||
return {};
|
||||
|
||||
QTreeWidgetItem *current = currentItem();
|
||||
int row = current && current->isSelected() ? indexOfTopLevelItem(current) + step
|
||||
: (step > 0 ? 0 : count - 1);
|
||||
row = ((row % count) + count) % count;
|
||||
|
||||
QTreeWidgetItem *item = topLevelItem(row);
|
||||
setCurrentItem(item);
|
||||
scrollToItem(item);
|
||||
return item->text(0);
|
||||
}
|
||||
Reference in New Issue
Block a user