Mercurial > projects > qtd
comparison demos/browser/toolbarsearch.d @ 73:7bfd46c330dc
more porting
author | mandel |
---|---|
date | Fri, 22 May 2009 10:59:00 +0000 |
parents | 71b382c10ef6 |
children | 37caa90ce503 |
comparison
equal
deleted
inserted
replaced
72:b149ef2cb18b | 73:7bfd46c330dc |
---|---|
38 ** $QT_END_LICENSE$ | 38 ** $QT_END_LICENSE$ |
39 ** | 39 ** |
40 ****************************************************************************/ | 40 ****************************************************************************/ |
41 module toolbarsearch; | 41 module toolbarsearch; |
42 | 42 |
43 | |
44 import qt.core.QSettings; | |
45 import qt.core.QUrl; | |
46 | |
47 import qt.gui.QCompleter; | |
48 import qt.gui.QMenu; | |
49 import qt.gui.QStringListModel; | |
50 | |
51 import QtWebKit.QWebSettings; | |
52 | |
43 import searchlineedit; | 53 import searchlineedit; |
44 | |
45 import autosaver; | 54 import autosaver; |
46 | 55 |
47 import QtCore.QSettings; | |
48 import QtCore.QUrl; | |
49 | |
50 import QtGui.QCompleter; | |
51 import QtGui.QMenu; | |
52 import QtGui.QStringListModel; | |
53 | |
54 import QtWebKit/QWebSettings; | |
55 | |
56 /* | |
57 QT_BEGIN_NAMESPACE | |
58 class QUrl; | |
59 class QAction; | |
60 class QStringListModel; | |
61 QT_END_NAMESPACE | |
62 | |
63 class AutoSaver; | |
64 */ | |
65 | 56 |
66 class ToolbarSearch : public SearchLineEdit | 57 class ToolbarSearch : public SearchLineEdit |
67 { | 58 { |
68 Q_OBJECT | 59 mixin Signal!("search", QUrl url) |
69 | 60 |
70 signals: | 61 public: |
71 void search(const QUrl &url); | 62 |
63 /* | |
64 ToolbarSearch is a very basic search widget that also contains a small history. | |
65 Searches are turned into urls that use Google to perform search | |
66 */ | |
67 this(QWidget parent = null) | |
68 { | |
69 super(parent) | |
70 m_autosaver = new AutoSaver(this); | |
71 m_maxSavedSearches = 10; | |
72 m_stringListModel = new QStringListModel(this); | |
73 | |
74 QMenu m = menu(); | |
75 m.aboutToShow().connect(&this.aboutToShowMenu); | |
76 m.triggered.connect(&this.triggeredMenuAction); | |
77 | |
78 QCompleter completer = new QCompleter(m_stringListModel, this); | |
79 completer.setCompletionMode(QCompleter::InlineCompletion); | |
80 lineEdit().setCompleter(completer); | |
81 | |
82 lineEdit().returnPressed.connect(&searchNow); | |
83 setInactiveText(tr("Google")); | |
84 load(); | |
85 } | |
86 | |
87 ~this() | |
88 { | |
89 m_autosaver.saveIfNeccessary(); | |
90 } | |
72 | 91 |
73 public: | 92 public: |
74 | |
75 /* | |
76 ToolbarSearch is a very basic search widget that also contains a small history. | |
77 Searches are turned into urls that use Google to perform search | |
78 */ | |
79 this(QWidget *parent = null) | |
80 | |
81 { | |
82 super(parent) | |
83 m_autosaver = new AutoSaver(this); | |
84 m_maxSavedSearches = 10; | |
85 m_stringListModel = new QStringListModel(this); | |
86 | |
87 QMenu *m = menu(); | |
88 connect(m, SIGNAL(aboutToShow()), this, SLOT(aboutToShowMenu())); | |
89 connect(m, SIGNAL(triggered(QAction*)), this, SLOT(triggeredMenuAction(QAction*))); | |
90 | 93 |
91 QCompleter *completer = new QCompleter(m_stringListModel, this); | 94 void clear() |
92 completer.setCompletionMode(QCompleter::InlineCompletion); | 95 { |
93 lineEdit().setCompleter(completer); | 96 m_stringListModel.setStringList(QStringList()); |
97 m_autosaver.changeOccurred(); | |
98 } | |
94 | 99 |
95 connect(lineEdit(), SIGNAL(returnPressed()), SLOT(searchNow())); | 100 void searchNow() |
96 setInactiveText(tr("Google")); | 101 { |
97 load(); | 102 QString searchText = lineEdit().text(); |
98 } | 103 QStringList newList = m_stringListModel.stringList(); |
99 ~this() | 104 if (newList.contains(searchText)) |
100 { | 105 newList.removeAt(newList.indexOf(searchText)); |
101 m_autosaver.saveIfNeccessary(); | 106 newList.prepend(searchText); |
102 } | 107 if (newList.size() >= m_maxSavedSearches) |
108 newList.removeLast(); | |
103 | 109 |
104 public slots: | 110 QWebSettings globalSettings = QWebSettings::globalSettings(); |
105 void clear() | 111 if (!globalSettings.testAttribute(QWebSettings::PrivateBrowsingEnabled)) { |
106 { | 112 m_stringListModel.setStringList(newList); |
107 m_stringListModel.setStringList(QStringList()); | 113 m_autosaver.changeOccurred(); |
108 m_autosaver.changeOccurred();; | 114 } |
109 } | |
110 | 115 |
111 void searchNow() | 116 QUrl url(QLatin1String("http://www.google.com/search")); |
112 { | 117 url.addQueryItem(QLatin1String("q"), searchText); |
113 QString searchText = lineEdit().text(); | 118 url.addQueryItem(QLatin1String("ie"), QLatin1String("UTF-8")); |
114 QStringList newList = m_stringListModel.stringList(); | 119 url.addQueryItem(QLatin1String("oe"), QLatin1String("UTF-8")); |
115 if (newList.contains(searchText)) | 120 url.addQueryItem(QLatin1String("client"), QLatin1String("qtdemobrowser")); |
116 newList.removeAt(newList.indexOf(searchText)); | 121 emit search(url); |
117 newList.prepend(searchText); | 122 } |
118 if (newList.size() >= m_maxSavedSearches) | |
119 newList.removeLast(); | |
120 | 123 |
121 QWebSettings *globalSettings = QWebSettings::globalSettings(); | 124 private: |
122 if (!globalSettings.testAttribute(QWebSettings::PrivateBrowsingEnabled)) { | |
123 m_stringListModel.setStringList(newList); | |
124 m_autosaver.changeOccurred(); | |
125 } | |
126 | 125 |
127 QUrl url(QLatin1String("http://www.google.com/search")); | 126 void save() |
128 url.addQueryItem(QLatin1String("q"), searchText); | 127 { |
129 url.addQueryItem(QLatin1String("ie"), QLatin1String("UTF-8")); | 128 QSettings settings; |
130 url.addQueryItem(QLatin1String("oe"), QLatin1String("UTF-8")); | 129 settings.beginGroup(QLatin1String("toolbarsearch")); |
131 url.addQueryItem(QLatin1String("client"), QLatin1String("qtdemobrowser")); | 130 settings.setValue(QLatin1String("recentSearches"), m_stringListModel.stringList()); |
132 emit search(url); | 131 settings.setValue(QLatin1String("maximumSaved"), m_maxSavedSearches); |
133 } | 132 settings.endGroup(); |
134 | 133 } |
135 private slots: | |
136 void save() | |
137 { | |
138 QSettings settings; | |
139 settings.beginGroup(QLatin1String("toolbarsearch")); | |
140 settings.setValue(QLatin1String("recentSearches"), m_stringListModel.stringList()); | |
141 settings.setValue(QLatin1String("maximumSaved"), m_maxSavedSearches); | |
142 settings.endGroup(); | |
143 } | |
144 | 134 |
145 | 135 |
146 void aboutToShowMenu() | 136 void aboutToShowMenu() |
147 { | 137 { |
148 lineEdit().selectAll(); | 138 lineEdit().selectAll(); |
149 QMenu *m = menu(); | 139 QMenu m = menu(); |
150 m.clear(); | 140 m.clear(); |
151 QStringList list = m_stringListModel.stringList(); | 141 QStringList list = m_stringListModel.stringList(); |
152 if (list.isEmpty()) { | 142 if (list.isEmpty()) { |
153 m.addAction(tr("No Recent Searches")); | 143 m.addAction(tr("No Recent Searches")); |
154 return; | 144 return; |
155 } | 145 } |
156 | 146 |
157 QAction *recent = m.addAction(tr("Recent Searches")); | 147 QAction recent = m.addAction(tr("Recent Searches")); |
158 recent.setEnabled(false); | 148 recent.setEnabled(false); |
159 for (int i = 0; i < list.count(); ++i) { | 149 for (int i = 0; i < list.count(); ++i) { |
160 QString text = list.at(i); | 150 QString text = list.at(i); |
161 m.addAction(text).setData(text); | 151 m.addAction(text).setData(text); |
162 } | 152 } |
163 m.addSeparator(); | 153 m.addSeparator(); |
164 m.addAction(tr("Clear Recent Searches"), this, SLOT(clear())); | 154 m.addAction(tr("Clear Recent Searches"), this, SLOT(clear())); |
165 } | 155 } |
166 | 156 |
167 void triggeredMenuAction(QAction *action) | 157 void triggeredMenuAction(QAction action) |
168 { | 158 { |
169 QVariant v = action.data(); | 159 QVariant v = action.data(); |
170 if (v.canConvert<QString>()) { | 160 if (v.canConvert<QString>()) { |
171 QString text = v.toString(); | 161 QString text = v.toString(); |
172 lineEdit().setText(text); | 162 lineEdit().setText(text); |
173 searchNow(); | 163 searchNow(); |
174 } | 164 } |
175 } | 165 } |
176 | 166 |
177 private: | 167 private: |
178 void load() | 168 |
179 { | 169 void load() |
180 QSettings settings; | 170 { |
181 settings.beginGroup(QLatin1String("toolbarsearch")); | 171 QSettings settings; |
182 QStringList list = settings.value(QLatin1String("recentSearches")).toStringList(); | 172 settings.beginGroup(QLatin1String("toolbarsearch")); |
183 m_maxSavedSearches = settings.value(QLatin1String("maximumSaved"), m_maxSavedSearches).toInt(); | 173 QStringList list = settings.value(QLatin1String("recentSearches")).toStringList(); |
184 m_stringListModel.setStringList(list); | 174 m_maxSavedSearches = settings.value(QLatin1String("maximumSaved"), m_maxSavedSearches).toInt(); |
185 settings.endGroup(); | 175 m_stringListModel.setStringList(list); |
176 settings.endGroup(); | |
177 } | |
178 | |
179 AutoSaver m_autosaver; | |
180 int m_maxSavedSearches; | |
181 QStringListModel m_stringListModel; | |
186 } | 182 } |
187 | |
188 AutoSaver *m_autosaver; | |
189 int m_maxSavedSearches; | |
190 QStringListModel *m_stringListModel; | |
191 } |