玉兔远程控制 0.1.0-bate8
载入中...
搜索中...
未找到
AddressCompleter.h
1// Author: Kang Lin <kl222@126.com>
2
3#pragma once
4
5#include <QLabel>
6#include <QLineEdit>
7#include <QListWidget>
8#include <QVBoxLayout>
9#include <QTimer>
10#include <QSqlDatabase>
11#include <QIcon>
12#include <QPropertyAnimation>
13
15
20class CAddressCompleterItem : public QWidget
21{
22 Q_OBJECT
23public:
24 explicit CAddressCompleterItem(const QString &title,
25 const QString &url,
26 const QIcon &icon,
27 QWidget *parent = nullptr);
28
29 QString title() const { return m_title; }
30 QString url() const { return m_url; }
31
32private:
33 QString m_title;
34 QString m_url;
35 QLabel *m_iconLabel;
36 QLabel *m_titleLabel;
37 QLabel *m_urlLabel;
38};
39
40class CAddressCompleter : public QWidget
41{
42 Q_OBJECT
43public:
44 explicit CAddressCompleter(CHistoryDatabase* db, QWidget *parent = nullptr);
46
47 void attachToLineEdit(QLineEdit *lineEdit);
48 void setMaxVisibleItems(int count);
49
50signals:
51 void urlSelected(const QString &url);
52 void searchRequested(const QString &keyword);
53 void sigCommand(const QString& szCmd);
54
55protected:
56 bool eventFilter(QObject *watched, QEvent *event) override;
57 void showEvent(QShowEvent *event) override;
58 void hideEvent(QHideEvent *event) override;
59
60private Q_SLOTS:
61 void onTextChanged(const QString &text);
62 void onItemClicked(QListWidgetItem *item);
63 virtual void performSearch();
64 void moveToNextItem();
65 void moveToPreviousItem();
66 void selectCurrentItem();
67
68private:
69 void setupUI();
70 void showCompleter();
71 void hideCompleter();
72 void updateCompleterPosition();
73 QIcon getIconForUrl(const QString &url);
74 void addSearchSuggestions(const QString &keyword);
75
76 struct Command
77 {
78 QString title;
79 QString cmd;
80 QIcon icon;
81 };
82
83private:
84 QLineEdit *m_pLineEdit;
85 QString m_szEnter;
86 QString m_szOldLineEditToolTip;
87 QString m_szLineEditToolTip;
88 QString m_szLineEditToolTipShow;
89 QString m_szListWidgetToolTip;
90 QListWidget *m_pListWidget;
91 QTimer *m_pSearchTimer;
92 QPropertyAnimation *m_pShowAnimation;
93 QPropertyAnimation *m_pHideAnimation;
94 int m_currentSelectedIndex;
95 int m_maxVisibleItems;
96 bool m_isCompleterVisible;
97
98 CHistoryDatabase* m_pDatabase;
99};
浏览器的地址栏自动完成功能
The CHistoryDatabase class