Merge lp:~jonas-drange/ubuntu-settings-components/printer-remove into lp:~phablet-team/ubuntu-settings-components/printer-components

Proposed by Jonas G. Drange
Status: Rejected
Rejected by: Jonas G. Drange
Proposed branch: lp:~jonas-drange/ubuntu-settings-components/printer-remove
Merge into: lp:~phablet-team/ubuntu-settings-components/printer-components
Prerequisite: lp:~jonas-drange/ubuntu-settings-components/cups-notifications
Diff against target: 168 lines (+68/-3)
8 files modified
examples/Printers.qml (+12/-0)
plugins/Ubuntu/Settings/Printers/backend/backend_cups.cpp (+1/-1)
plugins/Ubuntu/Settings/Printers/cups/cupsfacade.cpp (+3/-1)
plugins/Ubuntu/Settings/Printers/cups/cupspkhelper.cpp (+22/-0)
plugins/Ubuntu/Settings/Printers/cups/cupspkhelper.h (+4/-0)
plugins/Ubuntu/Settings/Printers/printers/printers.cpp (+6/-0)
tests/unittests/Printers/mockbackend.h (+6/-1)
tests/unittests/Printers/tst_printers.cpp (+14/-0)
To merge this branch: bzr merge lp:~jonas-drange/ubuntu-settings-components/printer-remove
Reviewer Review Type Date Requested Status
Andrew Hayzen (community) Needs Fixing
Review via email: mp+316293@code.launchpad.net

Commit message

adds removal of printer

Description of the change

adds removal of printer

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

After deleting a printer from the QML UI, the listview of printers freezes for me. I'm able to click add new printer, but not able to click on any printer delegates or right click on them - I have to restart the app.

review: Needs Fixing
227. By Jonas G. Drange

syncs with prereq branch

Unmerged revisions

227. By Jonas G. Drange

syncs with prereq branch

226. By Jonas G. Drange

adds removal of printer

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'examples/Printers.qml'
--- examples/Printers.qml 2017-01-27 14:07:29 +0000
+++ examples/Printers.qml 2017-02-03 12:27:16 +0000
@@ -171,6 +171,18 @@
171 model: Printers.allPrintersWithPdf171 model: Printers.allPrintersWithPdf
172 delegate: ListItem {172 delegate: ListItem {
173 height: modelLayout.height + (divider.visible ? divider.height : 0)173 height: modelLayout.height + (divider.visible ? divider.height : 0)
174 trailingActions: ListItemActions {
175 actions: [
176 Action {
177 iconName: "delete"
178 onTriggered: {
179 if (!Printers.removePrinter(model.name)) {
180 console.error('failed to remove printer', Printers.lastMessage);
181 }
182 }
183 }
184 ]
185 }
174 ListItemLayout {186 ListItemLayout {
175 id: modelLayout187 id: modelLayout
176 title.text: displayName188 title.text: displayName
177189
=== modified file 'plugins/Ubuntu/Settings/Printers/backend/backend_cups.cpp'
--- plugins/Ubuntu/Settings/Printers/backend/backend_cups.cpp 2017-02-03 12:27:16 +0000
+++ plugins/Ubuntu/Settings/Printers/backend/backend_cups.cpp 2017-02-03 12:27:16 +0000
@@ -96,7 +96,7 @@
9696
97QString PrinterCupsBackend::printerDelete(const QString &name)97QString PrinterCupsBackend::printerDelete(const QString &name)
98{98{
9999 return m_cups->printerDelete(name);
100}100}
101101
102QString PrinterCupsBackend::printerSetEnabled(const QString &name,102QString PrinterCupsBackend::printerSetEnabled(const QString &name,
103103
=== modified file 'plugins/Ubuntu/Settings/Printers/cups/cupsfacade.cpp'
--- plugins/Ubuntu/Settings/Printers/cups/cupsfacade.cpp 2017-02-03 12:27:16 +0000
+++ plugins/Ubuntu/Settings/Printers/cups/cupsfacade.cpp 2017-02-03 12:27:16 +0000
@@ -63,7 +63,9 @@
6363
64QString CupsFacade::printerDelete(const QString &name)64QString CupsFacade::printerDelete(const QString &name)
65{65{
66 Q_UNUSED(name);66 if (!helper.printerDelete(name)) {
67 return helper.getLastError();
68 }
67 return QString();69 return QString();
68}70}
6971
7072
=== modified file 'plugins/Ubuntu/Settings/Printers/cups/cupspkhelper.cpp'
--- plugins/Ubuntu/Settings/Printers/cups/cupspkhelper.cpp 2017-02-03 12:27:16 +0000
+++ plugins/Ubuntu/Settings/Printers/cups/cupspkhelper.cpp 2017-02-03 12:27:16 +0000
@@ -44,6 +44,12 @@
44 httpClose(m_connection);44 httpClose(m_connection);
45}45}
4646
47bool CupsPkHelper::printerDelete(const QString &printerName)
48{
49 return sendNewSimpleRequest(CUPS_DELETE_PRINTER, printerName.toUtf8(),
50 CphResource::CphResourceAdmin);
51}
52
47bool CupsPkHelper::printerAdd(const QString &printerName,53bool CupsPkHelper::printerAdd(const QString &printerName,
48 const QString &printerUri,54 const QString &printerUri,
49 const QString &ppdFile,55 const QString &ppdFile,
@@ -796,3 +802,19 @@
796802
797 ippDelete(resp);803 ippDelete(resp);
798}804}
805
806bool CupsPkHelper::sendNewSimpleRequest(
807 ipp_op_t op, const QString &printerName,
808 const CupsPkHelper::CphResource &resource)
809{
810 ipp_t *request;
811
812 if (!isPrinterNameValid(printerName))
813 return false;
814
815 request = ippNewRequest(op);
816 addPrinterUri(request, printerName);
817 addRequestingUsername(request, NULL);
818
819 return sendRequest(request, resource);
820}
799821
=== modified file 'plugins/Ubuntu/Settings/Printers/cups/cupspkhelper.h'
--- plugins/Ubuntu/Settings/Printers/cups/cupspkhelper.h 2017-02-03 12:27:16 +0000
+++ plugins/Ubuntu/Settings/Printers/cups/cupspkhelper.h 2017-02-03 12:27:16 +0000
@@ -46,6 +46,7 @@
46 explicit CupsPkHelper();46 explicit CupsPkHelper();
47 ~CupsPkHelper();47 ~CupsPkHelper();
4848
49 bool printerDelete(const QString &printerName);
49 bool printerAdd(const QString &printerName,50 bool printerAdd(const QString &printerName,
50 const QString &printerUri,51 const QString &printerUri,
51 const QString &ppdFile,52 const QString &ppdFile,
@@ -89,6 +90,9 @@
89 ipp_tag_t type,90 ipp_tag_t type,
90 const QString &name,91 const QString &name,
91 const QString &value);92 const QString &value);
93 bool sendNewSimpleRequest(ipp_op_t op, const QString &printerName,
94 const CupsPkHelper::CphResource &resource);
95
92 static void addPrinterUri(ipp_t *request, const QString &name);96 static void addPrinterUri(ipp_t *request, const QString &name);
93 static void addRequestingUsername(ipp_t *request, const QString &username);97 static void addRequestingUsername(ipp_t *request, const QString &username);
94 static const QString getResource(const CphResource &resource);98 static const QString getResource(const CphResource &resource);
9599
=== modified file 'plugins/Ubuntu/Settings/Printers/printers/printers.cpp'
--- plugins/Ubuntu/Settings/Printers/printers/printers.cpp 2017-02-03 12:27:16 +0000
+++ plugins/Ubuntu/Settings/Printers/printers/printers.cpp 2017-02-03 12:27:16 +0000
@@ -158,5 +158,11 @@
158158
159bool Printers::removePrinter(const QString &name)159bool Printers::removePrinter(const QString &name)
160{160{
161 QString reply = m_backend->printerDelete(name);
161162
163 if (!reply.isEmpty()) {
164 m_lastMessage = reply;
165 return false;
166 }
167 return true;
162}168}
163169
=== modified file 'tests/unittests/Printers/mockbackend.h'
--- tests/unittests/Printers/mockbackend.h 2017-02-03 12:27:16 +0000
+++ tests/unittests/Printers/mockbackend.h 2017-02-03 12:27:16 +0000
@@ -64,7 +64,12 @@
6464
65 virtual QString printerDelete(const QString &name) override65 virtual QString printerDelete(const QString &name) override
66 {66 {
67 Q_UNUSED(name);67 Q_FOREACH(Printer *p, m_availablePrinters) {
68 if (p->name() == name) {
69 m_availablePrinters.removeOne(p);
70 break;
71 }
72 }
68 return returnValue;73 return returnValue;
69 }74 }
7075
7176
=== modified file 'tests/unittests/Printers/tst_printers.cpp'
--- tests/unittests/Printers/tst_printers.cpp 2017-02-03 12:27:16 +0000
+++ tests/unittests/Printers/tst_printers.cpp 2017-02-03 12:27:16 +0000
@@ -108,6 +108,20 @@
108 DriverModel *drivers = (DriverModel*) printers.drivers();108 DriverModel *drivers = (DriverModel*) printers.drivers();
109 QCOMPARE(drivers->filter(), targetFilter);109 QCOMPARE(drivers->filter(), targetFilter);
110 }110 }
111 void testPrinterRemove()
112 {
113 auto aBackend = new MockPrinterBackend("printer-a");
114 auto a = new Printer(aBackend);
115
116 QList<Printer*> list({a});
117
118 MockPrinterBackend* backend = new MockPrinterBackend;
119 backend->m_availablePrinters = list;
120
121 Printers printers(backend);
122 printers.removePrinter(a->name());
123 QCOMPARE(backend->m_availablePrinters.size(), 0);
124 }
111};125};
112126
113QTEST_GUILESS_MAIN(TestPrinters)127QTEST_GUILESS_MAIN(TestPrinters)

Subscribers

People subscribed via source and target branches