Merge lp:~jonas-drange/ubuntu-ui-extras/add-loadprinter into lp:~phablet-team/ubuntu-ui-extras/printer-components

Proposed by Jonas G. Drange
Status: Merged
Approved by: Andrew Hayzen
Approved revision: 133
Merged at revision: 133
Proposed branch: lp:~jonas-drange/ubuntu-ui-extras/add-loadprinter
Merge into: lp:~phablet-team/ubuntu-ui-extras/printer-components
Diff against target: 86 lines (+39/-0)
4 files modified
modules/Ubuntu/Components/Extras/Printers/printers/printers.cpp (+13/-0)
modules/Ubuntu/Components/Extras/Printers/printers/printers.h (+3/-0)
tests/unittests/Printers/mockbackend.h (+8/-0)
tests/unittests/Printers/tst_printers.cpp (+15/-0)
To merge this branch: bzr merge lp:~jonas-drange/ubuntu-ui-extras/add-loadprinter
Reviewer Review Type Date Requested Status
Andrew Hayzen (community) Approve
Review via email: mp+318215@code.launchpad.net

Commit message

adds loadPrinter method on Printers

Description of the change

adds loadPrinter method on Printers

To post a comment you must log in.
Revision history for this message
Andrew Hayzen (ahayzen) wrote :

LGTM, helps QML deal with loading lazy loaded printers in a sane way :-)

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'modules/Ubuntu/Components/Extras/Printers/printers/printers.cpp'
2--- modules/Ubuntu/Components/Extras/Printers/printers/printers.cpp 2017-02-23 14:04:26 +0000
3+++ modules/Ubuntu/Components/Extras/Printers/printers/printers.cpp 2017-02-24 12:22:17 +0000
4@@ -228,3 +228,16 @@
5 }
6 }
7 }
8+
9+void Printers::loadPrinter(const QString &name)
10+{
11+ auto printer = m_model.getPrinterByName(name);
12+ if (!printer) {
13+ qWarning() << Q_FUNC_INFO << "no known printer named" << name;
14+ return;
15+ }
16+
17+ if (printer->type() == PrinterEnum::PrinterType::ProxyType) {
18+ m_backend->requestPrinter(name);
19+ }
20+}
21
22=== modified file 'modules/Ubuntu/Components/Extras/Printers/printers/printers.h'
23--- modules/Ubuntu/Components/Extras/Printers/printers/printers.h 2017-02-23 14:04:26 +0000
24+++ modules/Ubuntu/Components/Extras/Printers/printers/printers.h 2017-02-24 12:22:17 +0000
25@@ -80,6 +80,9 @@
26
27 bool removePrinter(const QString &name);
28
29+ // Instruct us to start (eagerly) loading a printer.
30+ void loadPrinter(const QString &name);
31+
32 private Q_SLOTS:
33 void jobAdded(QSharedPointer<PrinterJob> job);
34 void printerAdded(QSharedPointer<Printer> printer);
35
36=== modified file 'tests/unittests/Printers/mockbackend.h'
37--- tests/unittests/Printers/mockbackend.h 2017-02-23 14:05:05 +0000
38+++ tests/unittests/Printers/mockbackend.h 2017-02-24 12:22:17 +0000
39@@ -281,6 +281,13 @@
40 return m_defaultPrinterName;
41 }
42
43+
44+ virtual void requestPrinter(const QString &printerName) override
45+ {
46+ m_requestedPrinters << printerName;
47+ }
48+
49+
50 void mockPrinterAdded(
51 const QString &text,
52 const QString &printerUri,
53@@ -374,6 +381,7 @@
54 QStringList m_availablePrinterNames;
55 QList<QSharedPointer<Printer>> m_availablePrinters;
56 QList<QSharedPointer<PrinterJob>> m_jobs;
57+ QStringList m_requestedPrinters;
58
59 Q_SIGNALS:
60 void printToFile(const QString &filepath, const QString &title);
61
62=== modified file 'tests/unittests/Printers/tst_printers.cpp'
63--- tests/unittests/Printers/tst_printers.cpp 2017-02-23 13:00:05 +0000
64+++ tests/unittests/Printers/tst_printers.cpp 2017-02-24 12:22:17 +0000
65@@ -227,6 +227,21 @@
66 auto printerJobs = p.allPrinters()->data(p.allPrinters()->index(0,0), PrinterModel::Roles::JobRole).value<QAbstractItemModel*>();
67 QCOMPARE(printerJobs->rowCount(), 1);
68 }
69+ void testLoadPrinter()
70+ {
71+ MockPrinterBackend *backend = new MockPrinterBackend;
72+ Printers p(backend);
73+
74+ // Harmless to request non-existent one.
75+ p.loadPrinter("foo");
76+
77+ // Load a printer and request it.
78+ MockPrinterBackend *printerBackend = new MockPrinterBackend("printer-a");
79+ auto printer = QSharedPointer<Printer>(new Printer(printerBackend));
80+ backend->mockPrinterLoaded(printer);
81+ p.loadPrinter("printer-a");
82+ QVERIFY(backend->m_requestedPrinters.contains("printer-a"));
83+ }
84 };
85
86 QTEST_GUILESS_MAIN(TestPrinters)

Subscribers

People subscribed via source and target branches