2 * Copyright (C) 2013, 2014 Canonical, Ltd.
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; version 3.
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17#include "fake_scope.h"
18#include "fake_preview.h"
23static DeeModel* create_categories_model(unsigned category_count);
24static DeeModel* create_results_model(unsigned category_count, unsigned result_count);
26// TODO: Implement remaining pieces
28Scope::Scope(QObject* parent) : Scope(QString(), QString(), false, parent)
32Scope::Scope(QString const& id, QString const& name, bool visible, QObject* parent)
39 , m_categories(new Categories(this))
40 , m_results(new DeeListModel(this))
41 , m_previewRendererName("preview-generic")
43 DeeModel* results_model = create_results_model(20, 300);
44 m_categories->setResultModel(results_model);
45 m_categories->setModel(create_categories_model(20));
46 m_results->setModel(results_model);
48 m_timer.setInterval(1000);
49 m_timer.setSingleShot(true);
50 connect(&m_timer, &QTimer::timeout, [this]() {
51 Preview *p = new Preview(m_previewRendererName, this);
52 Q_EMIT previewReady(p);
56QString Scope::id() const {
60QString Scope::name() const {
64QString Scope::searchQuery() const {
68QString Scope::iconHint() const {
72QString Scope::description() const {
76QString Scope::searchHint() const {
80QString Scope::shortcut() const {
84bool Scope::connected() const {
88bool Scope::searchInProgress() const {
92Categories* Scope::categories() const {
96QString Scope::noResultsHint() const {
97 return m_noResultsHint;
100QString Scope::formFactor() const {
104bool Scope::visible() const {
108bool Scope::isActive() const {
112void Scope::setName(const QString &str) {
115 Q_EMIT nameChanged(m_name);
119void Scope::setSearchQuery(const QString &str) {
120 if (str != m_searchQuery) {
122 Q_EMIT searchQueryChanged();
126void Scope::setFormFactor(const QString &str) {
127 if (str != m_formFactor) {
129 Q_EMIT formFactorChanged();
133void Scope::setActive(const bool active) {
134 if (active != m_isActive) {
136 Q_EMIT isActiveChanged();
140void Scope::setSearchInProgress(const bool inProg) {
141 if (inProg != m_searching) {
142 m_searching = inProg;
143 Q_EMIT searchInProgressChanged();
147void Scope::setNoResultsHint(const QString& str) {
148 if (str != m_noResultsHint) {
149 m_noResultsHint = str;
150 Q_EMIT noResultsHintChanged();
154void Scope::activate(const QVariant &uri, const QVariant &icon_hint, const QVariant &category,
155 const QVariant &result_type, const QVariant &mimetype, const QVariant &title,
156 const QVariant &comment, const QVariant &dnd_uri, const QVariant &metadata)
161 Q_UNUSED(result_type);
171void Scope::preview(const QVariant &uri, const QVariant &icon_hint, const QVariant &category,
172 const QVariant &result_type, const QVariant &mimetype, const QVariant &title,
173 const QVariant &comment, const QVariant &dnd_uri, const QVariant &metadata)
178 Q_UNUSED(result_type);
188static const gchar * categories_model_schema[] = {
192 "s", // RENDERER_NAME
197DeeModel* create_categories_model(unsigned category_count) {
198 DeeModel* category_model = dee_sequence_model_new();
199 dee_model_set_schema_full(category_model, categories_model_schema, G_N_ELEMENTS(categories_model_schema));
200 GVariant* hints = g_variant_new_array(g_variant_type_element(G_VARIANT_TYPE_VARDICT), NULL, 0);
202 for(unsigned i = 0; i < category_count; ++i)
204 dee_model_append(category_model,
205 std::to_string(i).c_str(),
206 ("Category "+std::to_string(i)).c_str(),
208 i % 2 == 0 ? "grid" : "carousel",
211 return category_model;
215/* Schema that is used in the DeeModel representing
217static const gchar * results_model_schema[] = {
229DeeModel* create_results_model(unsigned category_count, unsigned result_count) {
230 DeeModel* results_model = dee_sequence_model_new();
231 dee_model_set_schema_full(results_model, results_model_schema, G_N_ELEMENTS(results_model_schema));
232 GVariant* hints = g_variant_new_array(g_variant_type_element(G_VARIANT_TYPE_VARDICT), NULL, 0);
234 for(unsigned i = 0; i < result_count; ++i)
236 unsigned category = i % category_count;
238 dee_model_append(results_model,
239 ("uri://result."+std::to_string(i)).c_str(),
240 (qmlDirectory() + "graphics/applicationIcons/dash.png").toLatin1().data(),
243 "application/x-desktop",
244 ("Title."+std::to_string(i)).c_str(),
245 ("Comment."+std::to_string(i)).c_str(),
246 ("uri://result."+std::to_string(i)).c_str(),
249 return results_model;
252void Scope::cancelActivation()
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list