Merge lp:~mzanetti/ubuntu/vivid/qtsystems-opensource-src/inputinfo into lp:ubuntu/vivid/qtsystems-opensource-src

Proposed by kevin gunn on 2015-02-03
Status: Superseded
Proposed branch: lp:~mzanetti/ubuntu/vivid/qtsystems-opensource-src/inputinfo
Merge into: lp:ubuntu/vivid/qtsystems-opensource-src
Diff against target: 4548 lines (+4434/-19)
9 files modified
debian/control (+3/-0)
debian/patches/inputinfo.patch (+1699/-0)
debian/patches/remove-storageinfo-examples.patch (+342/-0)
debian/patches/remove-storageinfo.patch (+2371/-0)
debian/patches/series (+3/-0)
debian/qtsystems5-dev.install (+3/-2)
debian/qtsystems5-examples.install (+2/-4)
debian/qtsystems5-private-dev.install (+1/-3)
debian/rules (+10/-10)
To merge this branch: bzr merge lp:~mzanetti/ubuntu/vivid/qtsystems-opensource-src/inputinfo
Reviewer Review Type Date Requested Status
Ubuntu branches 2015-02-03 Pending
Review via email: mp+248397@code.launchpad.net

This proposal has been superseded by a proposal from 2015-02-03.

Commit Message

Qt input info for mouse & keyboard detection

Description of the Change

Qt input info for mouse & keyboard detection

To post a comment you must log in.
10. By Timo Jyrinki on 2015-02-13

[ Timo Jyrinki ]
* Rebuild against Qt 5.4.0

[ Dmitry Shachnev ]
* New upstream snapshot.
* Drop all patches that have been applied upstream.
* Update install files.

11. By Michael Zanetti on 2015-02-17

applyinputinfo patch

12. By Michael Zanetti on 2015-02-17

fix pkgconfig

13. By Michael Zanetti on 2015-02-17

fix PKGCONFIG

14. By Michael Zanetti on 2015-02-17

next try

15. By Michael Zanetti on 2015-02-17

add pkg-config to deps

16. By Michael Zanetti on 2015-02-17

disable tests

17. By Michael Zanetti on 2015-02-17

add installs

18. By Michael Zanetti on 2015-02-18

make type a flag

Unmerged revisions

18. By Michael Zanetti on 2015-02-18

make type a flag

17. By Michael Zanetti on 2015-02-17

add installs

16. By Michael Zanetti on 2015-02-17

disable tests

15. By Michael Zanetti on 2015-02-17

add pkg-config to deps

14. By Michael Zanetti on 2015-02-17

next try

13. By Michael Zanetti on 2015-02-17

fix PKGCONFIG

12. By Michael Zanetti on 2015-02-17

fix pkgconfig

11. By Michael Zanetti on 2015-02-17

applyinputinfo patch

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'debian/control'
2--- debian/control 2014-10-28 07:06:50 +0000
3+++ debian/control 2015-02-03 15:58:39 +0000
4@@ -3,7 +3,10 @@
5 Priority: optional
6 Maintainer: Timo Jyrinki <timo-jyrinki@ubuntu.com>
7 Build-Depends: debhelper (>= 9),
8+ libevdev-dev,
9 libqt5sql5-sqlite (>= 5.3.2~),
10+ libudev-dev,
11+ pkg-config,
12 pkg-kde-tools,
13 qtbase5-private-dev (>= 5.3.2~),
14 qtdeclarative5-private-dev (>= 5.3.2~),
15
16=== added file 'debian/patches/inputinfo.patch'
17--- debian/patches/inputinfo.patch 1970-01-01 00:00:00 +0000
18+++ debian/patches/inputinfo.patch 2015-02-03 15:58:39 +0000
19@@ -0,0 +1,1699 @@
20+=== added directory 'examples/systeminfo/inputinfo'
21+=== added file 'examples/systeminfo/inputinfo/inputinfo.pro'
22+--- old/examples/systeminfo/inputinfo/inputinfo.pro 1970-01-01 00:00:00 +0000
23++++ new/examples/systeminfo/inputinfo/inputinfo.pro 2015-02-03 15:48:27 +0000
24+@@ -0,0 +1,22 @@
25++#-------------------------------------------------
26++#
27++# Project created by QtCreator 2014-11-28T12:25:04
28++#
29++#-------------------------------------------------
30++
31++QT += core systeminfo
32++
33++QT -= gui
34++
35++TARGET = inputinfo
36++CONFIG += console
37++CONFIG -= app_bundle
38++
39++TEMPLATE = app
40++
41++
42++SOURCES += main.cpp \
43++ inputtest.cpp
44++
45++HEADERS += \
46++ inputtest.h
47+
48+=== added file 'examples/systeminfo/inputinfo/inputtest.cpp'
49+--- old/examples/systeminfo/inputinfo/inputtest.cpp 1970-01-01 00:00:00 +0000
50++++ new/examples/systeminfo/inputinfo/inputtest.cpp 2015-02-03 15:48:27 +0000
51+@@ -0,0 +1,83 @@
52++/****************************************************************************
53++**
54++** Copyright (C) 2014 Canonical, Ltd. and/or its subsidiary(-ies).
55++** Contact: http://www.qt-project.org/legal
56++**
57++** This file is part of the QtSystems module of the Qt Toolkit.
58++**
59++** $QT_BEGIN_LICENSE:LGPL$
60++** Commercial License Usage
61++** Licensees holding valid commercial Qt licenses may use this file in
62++** accordance with the commercial license agreement provided with the
63++** Software or, alternatively, in accordance with the terms contained in
64++** a written agreement between you and Digia. For licensing terms and
65++** conditions see http://qt.digia.com/licensing. For further information
66++** use the contact form at http://qt.digia.com/contact-us.
67++**
68++** GNU Lesser General Public License Usage
69++** Alternatively, this file may be used under the terms of the GNU Lesser
70++** General Public License version 2.1 as published by the Free Software
71++** Foundation and appearing in the file LICENSE.LGPL included in the
72++** packaging of this file. Please review the following information to
73++** ensure the GNU Lesser General Public License version 2.1 requirements
74++** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
75++**
76++** In addition, as a special exception, Digia gives you certain additional
77++** rights. These rights are described in the Digia Qt LGPL Exception
78++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
79++**
80++** GNU General Public License Usage
81++** Alternatively, this file may be used under the terms of the GNU
82++** General Public License version 3.0 as published by the Free Software
83++** Foundation and appearing in the file LICENSE.GPL included in the
84++** packaging of this file. Please review the following information to
85++** ensure the GNU General Public License version 3.0 requirements will be
86++** met: http://www.gnu.org/copyleft/gpl.html.
87++**
88++**
89++** $QT_END_LICENSE$
90++**
91++****************************************************************************/
92++
93++#include "inputtest.h"
94++#include <qinputinfo.h>
95++#include <QDebug>
96++
97++Inputtest::Inputtest(QObject *parent) :
98++ QObject(parent)
99++{
100++ inputDeviceInfo = new QInputDeviceInfo(this);
101++ connect(inputDeviceInfo, &QInputDeviceInfo::deviceAdded,this,&Inputtest::deviceAdded);
102++ connect(inputDeviceInfo, &QInputDeviceInfo::deviceRemoved,this,&Inputtest::deviceRemoved);
103++
104++}
105++
106++void Inputtest::deviceAdded(const QString &devicePath)
107++{
108++ QInputDevice *device = inputDeviceInfo->deviceMap().value(devicePath);
109++
110++ qDebug() << inputDeviceInfo->deviceMap().count();
111++ qDebug() << device->name() << device->devicePath();
112++ qDebug() << "buttons count"<< device->buttons().count();
113++ qDebug() << "switch count"<< device->switches().count();
114++ qDebug() << "relativeAxis count"<< device->relativeAxis().count();
115++ qDebug() << "absoluteAxis count"<< device->absoluteAxis().count();
116++ qDebug() << "type" << device->type();
117++ qDebug();
118++
119++ QMapIterator<QString, QInputDevice*> i(inputDeviceInfo->deviceMap());
120++ while (i.hasNext()) {
121++ i.next();
122++ qDebug() << i.value()->name();
123++ }
124++}
125++
126++void Inputtest::deviceRemoved(const QString &path)
127++{
128++ qDebug() << Q_FUNC_INFO << path;
129++ QMapIterator<QString, QInputDevice*> i(inputDeviceInfo->deviceMap());
130++ while (i.hasNext()) {
131++ i.next();
132++ qDebug() << i.value()->name();
133++ }
134++}
135+
136+=== added file 'examples/systeminfo/inputinfo/inputtest.h'
137+--- old/examples/systeminfo/inputinfo/inputtest.h 1970-01-01 00:00:00 +0000
138++++ new/examples/systeminfo/inputinfo/inputtest.h 2015-02-03 15:48:27 +0000
139+@@ -0,0 +1,63 @@
140++/****************************************************************************
141++**
142++** Copyright (C) 2014 Canonical, Ltd. and/or its subsidiary(-ies).
143++** Contact: http://www.qt-project.org/legal
144++**
145++** This file is part of the QtSystems module of the Qt Toolkit.
146++**
147++** $QT_BEGIN_LICENSE:LGPL$
148++** Commercial License Usage
149++** Licensees holding valid commercial Qt licenses may use this file in
150++** accordance with the commercial license agreement provided with the
151++** Software or, alternatively, in accordance with the terms contained in
152++** a written agreement between you and Digia. For licensing terms and
153++** conditions see http://qt.digia.com/licensing. For further information
154++** use the contact form at http://qt.digia.com/contact-us.
155++**
156++** GNU Lesser General Public License Usage
157++** Alternatively, this file may be used under the terms of the GNU Lesser
158++** General Public License version 2.1 as published by the Free Software
159++** Foundation and appearing in the file LICENSE.LGPL included in the
160++** packaging of this file. Please review the following information to
161++** ensure the GNU Lesser General Public License version 2.1 requirements
162++** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
163++**
164++** In addition, as a special exception, Digia gives you certain additional
165++** rights. These rights are described in the Digia Qt LGPL Exception
166++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
167++**
168++** GNU General Public License Usage
169++** Alternatively, this file may be used under the terms of the GNU
170++** General Public License version 3.0 as published by the Free Software
171++** Foundation and appearing in the file LICENSE.GPL included in the
172++** packaging of this file. Please review the following information to
173++** ensure the GNU General Public License version 3.0 requirements will be
174++** met: http://www.gnu.org/copyleft/gpl.html.
175++**
176++**
177++** $QT_END_LICENSE$
178++**
179++****************************************************************************/
180++
181++#ifndef INPUTTEST_H
182++#define INPUTTEST_H
183++
184++#include <QObject>
185++#include <qinputinfo.h>
186++
187++class Inputtest : public QObject
188++{
189++ Q_OBJECT
190++public:
191++ explicit Inputtest(QObject *parent = 0);
192++
193++ QInputDeviceInfo *inputDeviceInfo;
194++signals:
195++
196++public slots:
197++
198++ void deviceAdded(const QString &);
199++ void deviceRemoved(const QString &path);
200++};
201++
202++#endif // INPUTTEST_H
203+
204+=== added file 'examples/systeminfo/inputinfo/main.cpp'
205+--- old/examples/systeminfo/inputinfo/main.cpp 1970-01-01 00:00:00 +0000
206++++ new/examples/systeminfo/inputinfo/main.cpp 2015-02-03 15:48:27 +0000
207+@@ -0,0 +1,50 @@
208++/****************************************************************************
209++**
210++** Copyright (C) 2014 Canonical, Ltd. and/or its subsidiary(-ies).
211++** Contact: http://www.qt-project.org/legal
212++**
213++** This file is part of the QtSystems module of the Qt Toolkit.
214++**
215++** $QT_BEGIN_LICENSE:LGPL$
216++** Commercial License Usage
217++** Licensees holding valid commercial Qt licenses may use this file in
218++** accordance with the commercial license agreement provided with the
219++** Software or, alternatively, in accordance with the terms contained in
220++** a written agreement between you and Digia. For licensing terms and
221++** conditions see http://qt.digia.com/licensing. For further information
222++** use the contact form at http://qt.digia.com/contact-us.
223++**
224++** GNU Lesser General Public License Usage
225++** Alternatively, this file may be used under the terms of the GNU Lesser
226++** General Public License version 2.1 as published by the Free Software
227++** Foundation and appearing in the file LICENSE.LGPL included in the
228++** packaging of this file. Please review the following information to
229++** ensure the GNU Lesser General Public License version 2.1 requirements
230++** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
231++**
232++** In addition, as a special exception, Digia gives you certain additional
233++** rights. These rights are described in the Digia Qt LGPL Exception
234++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
235++**
236++** GNU General Public License Usage
237++** Alternatively, this file may be used under the terms of the GNU
238++** General Public License version 3.0 as published by the Free Software
239++** Foundation and appearing in the file LICENSE.GPL included in the
240++** packaging of this file. Please review the following information to
241++** ensure the GNU General Public License version 3.0 requirements will be
242++** met: http://www.gnu.org/copyleft/gpl.html.
243++**
244++**
245++** $QT_END_LICENSE$
246++**
247++****************************************************************************/
248++#include <QCoreApplication>
249++#include "inputtest.h"
250++
251++int main(int argc, char *argv[])
252++{
253++ QCoreApplication a(argc, argv);
254++
255++ Inputtest inputest(&a);
256++ return a.exec();
257++}
258+
259+=== added directory 'examples/systeminfo/qml-inputinfo'
260+=== added file 'examples/systeminfo/qml-inputinfo/main.cpp'
261+--- old/examples/systeminfo/qml-inputinfo/main.cpp 1970-01-01 00:00:00 +0000
262++++ new/examples/systeminfo/qml-inputinfo/main.cpp 2015-02-03 15:48:27 +0000
263+@@ -0,0 +1,43 @@
264++/****************************************************************************
265++**
266++** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
267++** Contact: http://www.qt-project.org/legal
268++**
269++** This file is part of the QtSystems module of the Qt Toolkit.
270++**
271++** $QT_BEGIN_LICENSE:LGPL$
272++** Commercial License Usage
273++** Licensees holding valid commercial Qt licenses may use this file in
274++** accordance with the commercial license agreement provided with the
275++** Software or, alternatively, in accordance with the terms contained in
276++** a written agreement between you and Digia. For licensing terms and
277++** conditions see http://qt.digia.com/licensing. For further information
278++** use the contact form at http://qt.digia.com/contact-us.
279++**
280++** GNU Lesser General Public License Usage
281++** Alternatively, this file may be used under the terms of the GNU Lesser
282++** General Public License version 2.1 as published by the Free Software
283++** Foundation and appearing in the file LICENSE.LGPL included in the
284++** packaging of this file. Please review the following information to
285++** ensure the GNU Lesser General Public License version 2.1 requirements
286++** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
287++**
288++** In addition, as a special exception, Digia gives you certain additional
289++** rights. These rights are described in the Digia Qt LGPL Exception
290++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
291++**
292++** GNU General Public License Usage
293++** Alternatively, this file may be used under the terms of the GNU
294++** General Public License version 3.0 as published by the Free Software
295++** Foundation and appearing in the file LICENSE.GPL included in the
296++** packaging of this file. Please review the following information to
297++** ensure the GNU General Public License version 3.0 requirements will be
298++** met: http://www.gnu.org/copyleft/gpl.html.
299++**
300++**
301++** $QT_END_LICENSE$
302++**
303++****************************************************************************/
304++
305++#include"../stub.h"
306++SYSINFO_EXAMPLE_MAIN(qml-inputinfo)
307+
308+=== added file 'examples/systeminfo/qml-inputinfo/qml-inputinfo.pro'
309+--- old/examples/systeminfo/qml-inputinfo/qml-inputinfo.pro 1970-01-01 00:00:00 +0000
310++++ new/examples/systeminfo/qml-inputinfo/qml-inputinfo.pro 2015-02-03 15:48:27 +0000
311+@@ -0,0 +1,14 @@
312++TEMPLATE = app
313++TARGET = qml-inputinfo
314++QT += quick
315++SOURCES = main.cpp
316++
317++app.files = \
318++ $$files(*.qml) \
319++
320++target.path = $$[QT_INSTALL_EXAMPLES]/sysinfo/qml-inputinfo
321++app.path = $$[QT_INSTALL_EXAMPLES]/sysinfo/qml-inputinfo
322++INSTALLS += target app
323++
324++RESOURCES += \
325++ qml-inputinfo.qrc
326+
327+=== added file 'examples/systeminfo/qml-inputinfo/qml-inputinfo.qml'
328+--- old/examples/systeminfo/qml-inputinfo/qml-inputinfo.qml 1970-01-01 00:00:00 +0000
329++++ new/examples/systeminfo/qml-inputinfo/qml-inputinfo.qml 2015-02-03 15:48:27 +0000
330+@@ -0,0 +1,97 @@
331++/****************************************************************************
332++**
333++** Copyright (C) 2014 Canonical, Ltd. and/or its subsidiary(-ies).
334++** Contact: http://www.qt-project.org/legal
335++**
336++** This file is part of the QtSystems module of the Qt Toolkit.
337++**
338++** $QT_BEGIN_LICENSE:LGPL$
339++** Commercial License Usage
340++** Licensees holding valid commercial Qt licenses may use this file in
341++** accordance with the commercial license agreement provided with the
342++** Software or, alternatively, in accordance with the terms contained in
343++** a written agreement between you and Digia. For licensing terms and
344++** conditions see http://qt.digia.com/licensing. For further information
345++** use the contact form at http://qt.digia.com/contact-us.
346++**
347++** GNU Lesser General Public License Usage
348++** Alternatively, this file may be used under the terms of the GNU Lesser
349++** General Public License version 2.1 as published by the Free Software
350++** Foundation and appearing in the file LICENSE.LGPL included in the
351++** packaging of this file. Please review the following information to
352++** ensure the GNU Lesser General Public License version 2.1 requirements
353++** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
354++**
355++** In addition, as a special exception, Digia gives you certain additional
356++** rights. These rights are described in the Digia Qt LGPL Exception
357++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
358++**
359++** GNU General Public License Usage
360++** Alternatively, this file may be used under the terms of the GNU
361++** General Public License version 3.0 as published by the Free Software
362++** Foundation and appearing in the file LICENSE.GPL included in the
363++** packaging of this file. Please review the following information to
364++** ensure the GNU General Public License version 3.0 requirements will be
365++** met: http://www.gnu.org/copyleft/gpl.html.
366++**
367++**
368++** $QT_END_LICENSE$
369++**
370++****************************************************************************/
371++import QtQuick 2.0
372++import QtSystemInfo 5.0
373++
374++Rectangle {
375++ width: 640
376++ height: 480
377++
378++ ListView {
379++ anchors.fill: parent
380++ id: inputModel
381++ model: systemInputs
382++ delegate: deviceDelegate
383++ }
384++
385++ Component {
386++ id: deviceDelegate
387++ Row {
388++ spacing: 10
389++ Text { text: systemInputs.get(index).name}
390++ Text { text: typeToString(systemInputs.get(index).type)}
391++ }
392++ }
393++
394++ InputDeviceInfo {
395++ id: systemInputs
396++ }
397++
398++ function typeToString(deviceType) {
399++ console.log(deviceType +" "+systemInputs.Keyboard)
400++
401++ switch (deviceType) {
402++ case 0:
403++ return "Unknown"
404++ break;
405++ case 1:
406++ return "Button"
407++ break;
408++ case 2:
409++ return "Mouse"
410++ break;
411++ case 3:
412++ return "TouchPad"
413++ break;
414++ case 4:
415++ return "TouchScreen"
416++ break;
417++ case 5:
418++ return "Keyboard"
419++ break;
420++ case 6:
421++ return "Switch"
422++ break;
423++ }
424++ return ""
425++ }
426++
427++}
428+
429+=== added file 'examples/systeminfo/qml-inputinfo/qml-inputinfo.qrc'
430+--- old/examples/systeminfo/qml-inputinfo/qml-inputinfo.qrc 1970-01-01 00:00:00 +0000
431++++ new/examples/systeminfo/qml-inputinfo/qml-inputinfo.qrc 2015-02-03 15:48:27 +0000
432+@@ -0,0 +1,5 @@
433++<RCC>
434++ <qresource prefix="/">
435++ <file>qml-inputinfo.qml</file>
436++ </qresource>
437++</RCC>
438+
439+=== modified file 'examples/systeminfo/systeminfo.pro'
440+--- old/examples/systeminfo/systeminfo.pro 2015-02-03 15:48:03 +0000
441++++ new/examples/systeminfo/systeminfo.pro 2015-02-03 15:48:27 +0000
442+@@ -2,7 +2,9 @@
443+
444+ SUBDIRS += \
445+ qml-deviceinfo \
446+- qml-battery
447++ qml-battery \
448++ qml-inputinfo \
449++ inputinfo
450+
451+ #qtHaveModule(widgets): SUBDIRS += \
452+
453+
454+=== modified file 'src/imports/systeminfo/plugins.qmltypes'
455+--- old/src/imports/systeminfo/plugins.qmltypes 2015-02-03 15:48:03 +0000
456++++ new/src/imports/systeminfo/plugins.qmltypes 2015-02-03 15:48:27 +0000
457+@@ -3,137 +3,11 @@
458+ // This file describes the plugin-supplied types contained in the library.
459+ // It is used for QML tooling purposes only.
460+ //
461+-// This file was auto-generated with the command 'qmlplugindump -notrelocatable QtSystemInfo 5.0'.
462++// This file was auto-generated by:
463++// 'qmlplugindump -notrelocatable QtSystemInfo 5.0'
464+
465+ Module {
466+ Component {
467+- name: "QDeclarativeBatteryInfo"
468+- prototype: "QObject"
469+- exports: ["QtSystemInfo/BatteryInfo 5.0"]
470+- exportMetaObjectRevisions: [0]
471+- Enum {
472+- name: "ChargerType"
473+- values: {
474+- "UnknownCharger": 0,
475+- "WallCharger": 1,
476+- "USBCharger": 2,
477+- "VariableCurrentCharger": 3
478+- }
479+- }
480+- Enum {
481+- name: "ChargingState"
482+- values: {
483+- "UnknownChargingState": 0,
484+- "NotCharging": 1,
485+- "Charging": 2,
486+- "Discharging": 3,
487+- "Full": 4
488+- }
489+- }
490+- Enum {
491+- name: "EnergyUnit"
492+- values: {
493+- "UnitUnknown": 0,
494+- "UnitmAh": 1,
495+- "UnitmWh": 2
496+- }
497+- }
498+- Enum {
499+- name: "BatteryStatus"
500+- values: {
501+- "BatteryStatusUnknown": 0,
502+- "BatteryEmpty": 1,
503+- "BatteryLow": 2,
504+- "BatteryOk": 3,
505+- "BatteryFull": 4
506+- }
507+- }
508+- Property { name: "monitorBatteryCount"; type: "bool" }
509+- Property { name: "monitorChargerType"; type: "bool" }
510+- Property { name: "monitorCurrentFlow"; type: "bool" }
511+- Property { name: "monitorRemainingCapacity"; type: "bool" }
512+- Property { name: "monitorRemainingChargingTime"; type: "bool" }
513+- Property { name: "monitorVoltage"; type: "bool" }
514+- Property { name: "monitorChargingState"; type: "bool" }
515+- Property { name: "monitorBatteryStatus"; type: "bool" }
516+- Property { name: "batteryCount"; type: "int"; isReadonly: true }
517+- Property { name: "chargerType"; type: "ChargerType"; isReadonly: true }
518+- Property { name: "energyUnit"; type: "EnergyUnit"; isReadonly: true }
519+- Signal {
520+- name: "batteryCountChanged"
521+- Parameter { name: "count"; type: "int" }
522+- }
523+- Signal {
524+- name: "chargerTypeChanged"
525+- Parameter { name: "type"; type: "int" }
526+- }
527+- Signal {
528+- name: "chargingStateChanged"
529+- Parameter { name: "battery"; type: "int" }
530+- Parameter { name: "state"; type: "int" }
531+- }
532+- Signal {
533+- name: "currentFlowChanged"
534+- Parameter { name: "battery"; type: "int" }
535+- Parameter { name: "flow"; type: "int" }
536+- }
537+- Signal {
538+- name: "remainingCapacityChanged"
539+- Parameter { name: "battery"; type: "int" }
540+- Parameter { name: "capacity"; type: "int" }
541+- }
542+- Signal {
543+- name: "remainingChargingTimeChanged"
544+- Parameter { name: "battery"; type: "int" }
545+- Parameter { name: "seconds"; type: "int" }
546+- }
547+- Signal {
548+- name: "voltageChanged"
549+- Parameter { name: "battery"; type: "int" }
550+- Parameter { name: "voltage"; type: "int" }
551+- }
552+- Signal {
553+- name: "batteryStatusChanged"
554+- Parameter { name: "battery"; type: "int" }
555+- Parameter { name: "status"; type: "int" }
556+- }
557+- Method {
558+- name: "currentFlow"
559+- type: "int"
560+- Parameter { name: "battery"; type: "int" }
561+- }
562+- Method {
563+- name: "remainingCapacity"
564+- type: "int"
565+- Parameter { name: "battery"; type: "int" }
566+- }
567+- Method {
568+- name: "remainingChargingTime"
569+- type: "int"
570+- Parameter { name: "battery"; type: "int" }
571+- }
572+- Method {
573+- name: "voltage"
574+- type: "int"
575+- Parameter { name: "battery"; type: "int" }
576+- }
577+- Method {
578+- name: "chargingState"
579+- type: "int"
580+- Parameter { name: "battery"; type: "int" }
581+- }
582+- Method {
583+- name: "maximumCapacity"
584+- type: "int"
585+- Parameter { name: "battery"; type: "int" }
586+- }
587+- Method {
588+- name: "batteryStatus"
589+- type: "int"
590+- Parameter { name: "battery"; type: "int" }
591+- }
592+- }
593+- Component {
594+ name: "QDeclarativeDeviceInfo"
595+ prototype: "QObject"
596+ exports: ["QtSystemInfo/DeviceInfo 5.0"]
597+@@ -219,87 +93,6 @@
598+ }
599+ }
600+ Component {
601+- name: "QDeclarativeDeviceProfile"
602+- prototype: "QObject"
603+- exports: ["QtSystemInfo/DeviceProfile 5.0"]
604+- exportMetaObjectRevisions: [0]
605+- Enum {
606+- name: "ProfileType"
607+- values: {
608+- "UnknownProfile": 0,
609+- "SilentProfile": 1,
610+- "NormalProfile": 2,
611+- "VibrationProfile": 3,
612+- "BeepProfile": 4
613+- }
614+- }
615+- Property { name: "isVibrationActivated"; type: "bool"; isReadonly: true }
616+- Property { name: "messageRingtoneVolume"; type: "int"; isReadonly: true }
617+- Property { name: "voiceRingtoneVolume"; type: "int"; isReadonly: true }
618+- Property { name: "currentProfileType"; type: "ProfileType"; isReadonly: true }
619+- Signal { name: "vibrationActivatedChanged" }
620+- }
621+- Component {
622+- name: "QDeclarativeDisplayInfo"
623+- prototype: "QObject"
624+- exports: ["QtSystemInfo/DisplayInfo 5.0"]
625+- exportMetaObjectRevisions: [0]
626+- Enum {
627+- name: "BacklightState"
628+- values: {
629+- "BacklightUnknown": 0,
630+- "BacklightOff": 1,
631+- "BacklightDimmed": 2,
632+- "BacklightOn": 3
633+- }
634+- }
635+- Signal {
636+- name: "backlightStateChanged"
637+- Parameter { name: "screen"; type: "int" }
638+- Parameter { name: "state"; type: "int" }
639+- }
640+- Method {
641+- name: "brightness"
642+- type: "int"
643+- Parameter { name: "screen"; type: "int" }
644+- }
645+- Method {
646+- name: "contrast"
647+- type: "int"
648+- Parameter { name: "screen"; type: "int" }
649+- }
650+- Method {
651+- name: "backlightState"
652+- type: "int"
653+- Parameter { name: "screen"; type: "int" }
654+- }
655+- Method {
656+- name: "colorDepth"
657+- type: "int"
658+- Parameter { name: "screen"; type: "int" }
659+- }
660+- Method {
661+- name: "dpiX"
662+- type: "int"
663+- Parameter { name: "screen"; type: "int" }
664+- }
665+- Method {
666+- name: "dpiY"
667+- type: "int"
668+- Parameter { name: "screen"; type: "int" }
669+- }
670+- Method {
671+- name: "physicalHeight"
672+- type: "int"
673+- Parameter { name: "screen"; type: "int" }
674+- }
675+- Method {
676+- name: "physicalWidth"
677+- type: "int"
678+- Parameter { name: "screen"; type: "int" }
679+- }
680+- }
681+- Component {
682+ name: "QDeclarativeNetworkInfo"
683+ prototype: "QObject"
684+ exports: ["QtSystemInfo/NetworkInfo 5.0"]
685+@@ -472,6 +265,43 @@
686+ }
687+ }
688+ Component {
689++ name: "QInputDevice"
690++ prototype: "QObject"
691++ exports: ["QtSystemInfo/InputInfo 5.0"]
692++ exportMetaObjectRevisions: [0]
693++ Enum {
694++ name: "InputType"
695++ values: {
696++ "Unknown": 0,
697++ "Button": 1,
698++ "Mouse": 2,
699++ "TouchPad": 3,
700++ "TouchScreen": 4,
701++ "Keyboard": 5,
702++ "Switch": 6
703++ }
704++ }
705++ Property { name: "name"; type: "string"; isReadonly: true }
706++ Property { name: "devicePath"; type: "string"; isReadonly: true }
707++ Property { name: "buttons"; type: "QList<int>"; isReadonly: true }
708++ Property { name: "switches"; type: "QList<int>"; isReadonly: true }
709++ Property { name: "relativeAxis"; type: "QList<int>"; isReadonly: true }
710++ Property { name: "absoluteAxis"; type: "QList<int>"; isReadonly: true }
711++ Property { name: "type"; type: "QInputDevice::InputType"; isReadonly: true }
712++ }
713++ Component {
714++ name: "QInputDeviceInfo"
715++ prototype: "QObject"
716++ exports: ["QtSystemInfo/InputDeviceInfo 5.0"]
717++ exportMetaObjectRevisions: [0]
718++ Property { name: "deviceCount"; type: "int"; isReadonly: true }
719++ Signal { name: "deviceAdded" }
720++ Signal { name: "deviceRemoved" }
721++ Signal { name: "ready" }
722++ Method { name: "addedDevice" }
723++ Method { name: "deviceList"; type: "QList<QInputDevice*>" }
724++ }
725++ Component {
726+ name: "QScreenSaver"
727+ prototype: "QObject"
728+ exports: ["QtSystemInfo/ScreenSaver 5.0"]
729+
730+=== added file 'src/imports/systeminfo/qdeclarativeinputdeviceinfo.cpp'
731+--- old/src/imports/systeminfo/qdeclarativeinputdeviceinfo.cpp 1970-01-01 00:00:00 +0000
732++++ new/src/imports/systeminfo/qdeclarativeinputdeviceinfo.cpp 2015-02-03 15:48:27 +0000
733+@@ -0,0 +1,143 @@
734++/****************************************************************************
735++**
736++** Copyright (C) 2015 Jolla.
737++** Contact: http://www.qt-project.org/legal
738++**
739++** This file is part of the QtSystems module of the Qt Toolkit.
740++**
741++** $QT_BEGIN_LICENSE:LGPL$
742++** Commercial License Usage
743++** Licensees holding valid commercial Qt licenses may use this file in
744++** accordance with the commercial license agreement provided with the
745++** Software or, alternatively, in accordance with the terms contained in
746++** a written agreement between you and Digia. For licensing terms and
747++** conditions see http://qt.digia.com/licensing. For further information
748++** use the contact form at http://qt.digia.com/contact-us.
749++**
750++** GNU Lesser General Public License Usage
751++** Alternatively, this file may be used under the terms of the GNU Lesser
752++** General Public License version 2.1 as published by the Free Software
753++** Foundation and appearing in the file LICENSE.LGPL included in the
754++** packaging of this file. Please review the following information to
755++** ensure the GNU Lesser General Public License version 2.1 requirements
756++** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
757++**
758++** In addition, as a special exception, Digia gives you certain additional
759++** rights. These rights are described in the Digia Qt LGPL Exception
760++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
761++**
762++** GNU General Public License Usage
763++** Alternatively, this file may be used under the terms of the GNU
764++** General Public License version 3.0 as published by the Free Software
765++** Foundation and appearing in the file LICENSE.GPL included in the
766++** packaging of this file. Please review the following information to
767++** ensure the GNU General Public License version 3.0 requirements will be
768++** met: http://www.gnu.org/copyleft/gpl.html.
769++**
770++**
771++** $QT_END_LICENSE$
772++**
773++****************************************************************************/
774++#include "qdeclarativeinputdeviceinfo_p.h"
775++
776++QDeclarativeInputDeviceInfo::QDeclarativeInputDeviceInfo(QObject *parent) :
777++ QAbstractListModel(parent),
778++ deviceInfo(new QInputDeviceInfo)
779++{
780++ connect(deviceInfo,SIGNAL(ready()),this,SLOT(updateDeviceList()));
781++ connect(deviceInfo, &QInputDeviceInfo::deviceAdded,this,&QDeclarativeInputDeviceInfo::addedDevice);
782++ connect(deviceInfo, &QInputDeviceInfo::deviceRemoved,this,&QDeclarativeInputDeviceInfo::removedDevice);
783++}
784++
785++QDeclarativeInputDeviceInfo::~QDeclarativeInputDeviceInfo()
786++{
787++ delete deviceInfo;
788++}
789++
790++QVariant QDeclarativeInputDeviceInfo::data(const QModelIndex &index, int role) const
791++{
792++ switch (role) {
793++ case ServiceRole:
794++ return QVariant::fromValue(static_cast<QObject *>(inputDevices.value(index.row())));
795++ }
796++
797++ return QVariant();
798++}
799++
800++int QDeclarativeInputDeviceInfo::rowCount(const QModelIndex &parent) const
801++{
802++ Q_UNUSED(parent);
803++
804++ return inputDevices.count();
805++}
806++
807++int QDeclarativeInputDeviceInfo::indexOf(const QString &devicePath) const
808++{
809++ int idx(-1);
810++ Q_FOREACH (QInputDevice *device, inputDevices) {
811++ idx++;
812++ if (device->devicePath() == devicePath) return idx;
813++ }
814++
815++ return -1;
816++}
817++
818++QInputDevice *QDeclarativeInputDeviceInfo::get(int index) const
819++{
820++ if (index < 0 || index > inputDevices.count())
821++ return 0;
822++ return inputDevices.value(index);
823++}
824++
825++void QDeclarativeInputDeviceInfo::updateDeviceList()
826++{
827++ QVector <QInputDevice *> newDevices = deviceInfo->deviceList();
828++
829++ int numNew = newDevices.count();
830++
831++ for (int i = 0; i < numNew; i++) {
832++ int j = inputDevices.indexOf(newDevices.value(i));
833++ if (j == -1) {
834++ // not found -> remove from list
835++ beginInsertRows(QModelIndex(), i, i);
836++ inputDevices.insert(i, newDevices.value(i));
837++ endInsertRows();
838++ } else if (i != j) {
839++ // changed its position -> move it
840++ QInputDevice* device = inputDevices.value(j);
841++ beginMoveRows(QModelIndex(), j, j, QModelIndex(), i);
842++ inputDevices.remove(j);
843++ inputDevices.insert(i, device);
844++ endMoveRows();
845++ } else {
846++ QModelIndex changedIndex(this->index(j, 0, QModelIndex()));
847++ Q_EMIT dataChanged(changedIndex, changedIndex);
848++ }
849++ }
850++
851++ int numOld = inputDevices.count();
852++ if (numOld > numNew) {
853++ beginRemoveRows(QModelIndex(), numNew, numOld - 1);
854++ inputDevices.remove(numNew, numOld - numNew);
855++ endRemoveRows();
856++ }
857++}
858++
859++void QDeclarativeInputDeviceInfo::addedDevice(const QString &devicePath)
860++{
861++ updateDeviceList();
862++ Q_EMIT newDevice(devicePath);
863++}
864++
865++void QDeclarativeInputDeviceInfo::removedDevice(const QString &devicePath)
866++{
867++ updateDeviceList();
868++ Q_EMIT deviceRemoved(devicePath);
869++}
870++
871++QHash<int, QByteArray> QDeclarativeInputDeviceInfo::roleNames() const
872++{
873++ QHash<int, QByteArray> roles;
874++ roles.insert(ServiceRole, "service");
875++ return roles;
876++}
877+
878+=== added file 'src/imports/systeminfo/qdeclarativeinputdeviceinfo_p.h'
879+--- old/src/imports/systeminfo/qdeclarativeinputdeviceinfo_p.h 1970-01-01 00:00:00 +0000
880++++ new/src/imports/systeminfo/qdeclarativeinputdeviceinfo_p.h 2015-02-03 15:48:27 +0000
881+@@ -0,0 +1,86 @@
882++/****************************************************************************
883++**
884++** Copyright (C) 2015 Jolla.
885++** Contact: http://www.qt-project.org/legal
886++**
887++** This file is part of the QtSystems module of the Qt Toolkit.
888++**
889++** $QT_BEGIN_LICENSE:LGPL$
890++** Commercial License Usage
891++** Licensees holding valid commercial Qt licenses may use this file in
892++** accordance with the commercial license agreement provided with the
893++** Software or, alternatively, in accordance with the terms contained in
894++** a written agreement between you and Digia. For licensing terms and
895++** conditions see http://qt.digia.com/licensing. For further information
896++** use the contact form at http://qt.digia.com/contact-us.
897++**
898++** GNU Lesser General Public License Usage
899++** Alternatively, this file may be used under the terms of the GNU Lesser
900++** General Public License version 2.1 as published by the Free Software
901++** Foundation and appearing in the file LICENSE.LGPL included in the
902++** packaging of this file. Please review the following information to
903++** ensure the GNU Lesser General Public License version 2.1 requirements
904++** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
905++**
906++** In addition, as a special exception, Digia gives you certain additional
907++** rights. These rights are described in the Digia Qt LGPL Exception
908++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
909++**
910++** GNU General Public License Usage
911++** Alternatively, this file may be used under the terms of the GNU
912++** General Public License version 3.0 as published by the Free Software
913++** Foundation and appearing in the file LICENSE.GPL included in the
914++** packaging of this file. Please review the following information to
915++** ensure the GNU General Public License version 3.0 requirements will be
916++** met: http://www.gnu.org/copyleft/gpl.html.
917++**
918++**
919++** $QT_END_LICENSE$
920++**
921++****************************************************************************/
922++
923++#ifndef QDECLARATIVEINPUTDEVICEINFO_H
924++#define QDECLARATIVEINPUTDEVICEINFO_H
925++
926++#include <QObject>
927++#include <QAbstractListModel>
928++#include "qinputinfo.h"
929++
930++class QDeclarativeInputDeviceInfo : public QAbstractListModel
931++{
932++ Q_OBJECT
933++ Q_DISABLE_COPY(QDeclarativeInputDeviceInfo)
934++
935++public:
936++ enum ItemRoles {
937++ ServiceRole = Qt::UserRole + 1
938++ };
939++
940++ explicit QDeclarativeInputDeviceInfo(QObject *parent = 0);
941++ virtual ~QDeclarativeInputDeviceInfo();
942++
943++ QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
944++ int rowCount(const QModelIndex &parent = QModelIndex()) const;
945++
946++ QHash<int, QByteArray> roleNames() const;
947++
948++ Q_INVOKABLE int indexOf(const QString &devicePath) const;
949++
950++ Q_INVOKABLE QInputDevice *get(int index) const;
951++
952++signals:
953++ void newDevice(const QString &devicePath);
954++ void deviceRemoved(const QString &devicePath);
955++
956++public slots:
957++ void updateDeviceList();
958++private:
959++ QInputDeviceInfo *deviceInfo;
960++ QVector<QInputDevice *> inputDevices;
961++private slots:
962++ void addedDevice(const QString &);
963++ void removedDevice(const QString &path);
964++
965++};
966++
967++#endif // QDECLARATIVEINPUTDEVICEINFO_H
968+
969+=== modified file 'src/imports/systeminfo/qsysteminfo.cpp'
970+--- old/src/imports/systeminfo/qsysteminfo.cpp 2015-02-03 15:48:03 +0000
971++++ new/src/imports/systeminfo/qsysteminfo.cpp 2015-02-03 15:48:27 +0000
972+@@ -45,7 +45,10 @@
973+ #include "qdeclarativebatteryinfo_p.h"
974+ #include "qdeclarativedeviceinfo_p.h"
975+ #include "qdeclarativenetworkinfo_p.h"
976++#include "qdeclarativeinputdeviceinfo_p.h"
977++
978+ #include <qscreensaver.h>
979++#include "qinputinfo.h"
980+
981+ QT_BEGIN_NAMESPACE
982+
983+@@ -65,6 +68,8 @@
984+ qmlRegisterType<QDeclarativeDeviceInfo>(uri, major, minor, "DeviceInfo");
985+ qmlRegisterType<QDeclarativeNetworkInfo>(uri, major, minor, "NetworkInfo");
986+ qmlRegisterType<QScreenSaver>(uri, major, minor, "ScreenSaver");
987++ qmlRegisterType<QDeclarativeInputDeviceInfo>(uri, major, minor, "InputDeviceInfo");
988++ qmlRegisterType<QInputDevice>(uri, major, minor, "InputInfo");
989+ }
990+ };
991+
992+
993+=== modified file 'src/imports/systeminfo/systeminfo.pro'
994+--- old/src/imports/systeminfo/systeminfo.pro 2015-02-03 15:48:03 +0000
995++++ new/src/imports/systeminfo/systeminfo.pro 2015-02-03 15:49:21 +0000
996+@@ -4,12 +4,14 @@
997+ HEADERS += \
998+ qdeclarativebatteryinfo_p.h \
999+ qdeclarativedeviceinfo_p.h \
1000+- qdeclarativenetworkinfo_p.h
1001++ qdeclarativenetworkinfo_p.h \
1002++ qdeclarativeinputdeviceinfo_p.h
1003+
1004+ SOURCES += \
1005+ qdeclarativebatteryinfo.cpp \
1006+ qdeclarativedeviceinfo.cpp \
1007+ qdeclarativenetworkinfo.cpp \
1008+- qsysteminfo.cpp
1009++ qsysteminfo.cpp \
1010++ qdeclarativeinputdeviceinfo.cpp
1011+
1012+ load(qml_plugin)
1013+
1014+=== added file 'src/systeminfo/linux/qinputdeviceinfo_linux.cpp'
1015+--- old/src/systeminfo/linux/qinputdeviceinfo_linux.cpp 1970-01-01 00:00:00 +0000
1016++++ new/src/systeminfo/linux/qinputdeviceinfo_linux.cpp 2015-02-03 15:48:27 +0000
1017+@@ -0,0 +1,239 @@
1018++/****************************************************************************
1019++**
1020++** Copyright (C) 2014 Canonical, Ltd. and/or its subsidiary(-ies).
1021++** Contact: http://www.qt-project.org/legal
1022++**
1023++** This file is part of the QtSystems module of the Qt Toolkit.
1024++**
1025++** $QT_BEGIN_LICENSE:LGPL$
1026++** Commercial License Usage
1027++** Licensees holding valid commercial Qt licenses may use this file in
1028++** accordance with the commercial license agreement provided with the
1029++** Software or, alternatively, in accordance with the terms contained in
1030++** a written agreement between you and Digia. For licensing terms and
1031++** conditions see http://qt.digia.com/licensing. For further information
1032++** use the contact form at http://qt.digia.com/contact-us.
1033++**
1034++** GNU Lesser General Public License Usage
1035++** Alternatively, this file may be used under the terms of the GNU Lesser
1036++** General Public License version 2.1 as published by the Free Software
1037++** Foundation and appearing in the file LICENSE.LGPL included in the
1038++** packaging of this file. Please review the following information to
1039++** ensure the GNU Lesser General Public License version 2.1 requirements
1040++** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
1041++**
1042++** In addition, as a special exception, Digia gives you certain additional
1043++** rights. These rights are described in the Digia Qt LGPL Exception
1044++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
1045++**
1046++** GNU General Public License Usage
1047++** Alternatively, this file may be used under the terms of the GNU
1048++** General Public License version 3.0 as published by the Free Software
1049++** Foundation and appearing in the file LICENSE.GPL included in the
1050++** packaging of this file. Please review the following information to
1051++** ensure the GNU General Public License version 3.0 requirements will be
1052++** met: http://www.gnu.org/copyleft/gpl.html.
1053++**
1054++**
1055++** $QT_END_LICENSE$
1056++**
1057++****************************************************************************/
1058++
1059++#include "qinputdeviceinfo_linux_p.h"
1060++
1061++#include <libudev.h>
1062++#include <libevdev/libevdev.h>
1063++#include <fcntl.h>
1064++#include <QDebug>
1065++#include <QSocketNotifier>
1066++#include <QTimer>
1067++
1068++QInputDeviceInfoPrivate::QInputDeviceInfoPrivate(QObject *parent) :
1069++ QObject(parent)
1070++ , udev(0)
1071++{
1072++ QTimer::singleShot(250,this,SLOT(init()));
1073++}
1074++
1075++void QInputDeviceInfoPrivate::init()
1076++{
1077++ if (!udev)
1078++ udev = udev_new();
1079++
1080++ struct udev_list_entry *devices, *dev_list_entry;
1081++ struct udev_device *dev;
1082++
1083++ QString subsystem = QStringLiteral("input");
1084++ struct udev_enumerate *enumerate = 0;
1085++
1086++ if (udev) {
1087++
1088++ udevMonitor = udev_monitor_new_from_netlink(udev, "udev");
1089++ udev_monitor_filter_add_match_subsystem_devtype(udevMonitor, subsystem.toLatin1(), NULL);
1090++ enumerate = udev_enumerate_new(udev);
1091++ udev_enumerate_add_match_subsystem(enumerate, subsystem.toLatin1());
1092++
1093++
1094++ udev_monitor_enable_receiving(udevMonitor);
1095++ notifierFd = udev_monitor_get_fd(udevMonitor);
1096++
1097++ notifier = new QSocketNotifier(notifierFd, QSocketNotifier::Read, this);
1098++ connect(notifier, SIGNAL(activated(int)), this, SLOT(onUDevChanges()));
1099++
1100++
1101++ udev_enumerate_scan_devices(enumerate);
1102++ devices = udev_enumerate_get_list_entry(enumerate);
1103++
1104++ udev_list_entry_foreach(dev_list_entry, devices) {
1105++ const char *path;
1106++ path = udev_list_entry_get_name(dev_list_entry);
1107++
1108++ dev = udev_device_new_from_syspath(udev, path);
1109++
1110++ QString eventPath = QString::fromLatin1(udev_device_get_sysname(dev));
1111++
1112++ if (qstrcmp(udev_device_get_subsystem(dev), "input") == 0 ) {
1113++
1114++ if (eventPath.contains(QStringLiteral("event"))) {
1115++ eventPath.prepend(QStringLiteral("/dev/input/"));
1116++
1117++ QInputDevice *iDevice = addDevice(eventPath);
1118++ if (!iDevice)
1119++ continue;
1120++ iDevice->setType(getInputType(dev));
1121++
1122++ if (iDevice->switches().count() > 0 && iDevice->buttons().count() == 0)
1123++ iDevice->setType(QInputDeviceInfo::Switch);
1124++
1125++ if (iDevice->buttons().count() > 0 && iDevice->type() == QInputDeviceInfo::Unknown)
1126++ iDevice->setType(QInputDeviceInfo::Button);
1127++
1128++ deviceList.append(iDevice);
1129++ deviceMap.insert(eventPath,iDevice);
1130++ Q_EMIT newDevice(eventPath);
1131++
1132++ }
1133++ }
1134++ }
1135++ udev_enumerate_unref(enumerate);
1136++ }
1137++ Q_EMIT ready();
1138++}
1139++
1140++QInputDeviceInfo::InputType QInputDeviceInfoPrivate::getInputType( struct udev_device *dev)
1141++{
1142++ if (qstrcmp(udev_device_get_property_value(dev, "ID_INPUT_KEYBOARD"), "1") == 0 )
1143++ return QInputDeviceInfo::Keyboard;
1144++
1145++ if (qstrcmp(udev_device_get_property_value(dev, "ID_INPUT_MOUSE"), "1") == 0)
1146++ return QInputDeviceInfo::Mouse;
1147++
1148++ if (qstrcmp(udev_device_get_property_value(dev, "ID_INPUT_TOUCHPAD"), "1") == 0)
1149++ return QInputDeviceInfo::TouchPad;
1150++
1151++ if (qstrcmp(udev_device_get_property_value(dev, "ID_INPUT_TOUCHSCREEN"), "1") == 0
1152++ || qstrcmp(udev_device_get_property_value(dev, "ID_INPUT_TABLET"), "1") == 0)
1153++ return QInputDeviceInfo::TouchScreen;
1154++
1155++return QInputDeviceInfo::Unknown;
1156++}
1157++
1158++QInputDevice *QInputDeviceInfoPrivate::addDevice(const QString &path)
1159++{
1160++ QInputDevice *inputDevice = new QInputDevice(this);
1161++
1162++ struct libevdev *dev = NULL;
1163++ int fd;
1164++ int rc = 1;
1165++ fd = open(path.toLatin1(), O_RDONLY|O_NONBLOCK);
1166++
1167++ if (fd == -1) {
1168++ qDebug() << "Failed to open";
1169++ return inputDevice;
1170++ }
1171++ rc = libevdev_new_from_fd(fd, &dev);
1172++ if (rc < 0) {
1173++ qDebug() << "Failed to init libevdev ("<< strerror(-rc) << ")";
1174++ return inputDevice;
1175++ }
1176++
1177++ inputDevice->setName(QString::fromLatin1(libevdev_get_name(dev)));
1178++ inputDevice->setDevicePath(path);
1179++ for (int i = 0; i < EV_MAX; i++) {
1180++ if (i == EV_KEY || i == EV_SW || i == EV_REL
1181++ || i == EV_REL || i == EV_ABS) {
1182++ for (int j = 0; j < libevdev_event_type_get_max(i); j++) {
1183++ if (libevdev_has_event_code(dev, i, j)) {
1184++ switch (i) {
1185++ case EV_KEY:
1186++ inputDevice->addButton(j);
1187++ break;
1188++ case EV_SW:
1189++ inputDevice->addSwitch(j);
1190++ break;
1191++ case EV_REL:
1192++ inputDevice->addRelativeAxis(j);
1193++ break;
1194++ case EV_ABS:
1195++ inputDevice->addAbsoluteAxis(j);
1196++ break;
1197++ };
1198++ }
1199++ }
1200++ }
1201++ }
1202++ return inputDevice;
1203++}
1204++
1205++void QInputDeviceInfoPrivate::removeDevice(const QString &path)
1206++{
1207++ for (int i = 0; i < deviceList.size(); ++i) {
1208++ if (deviceList.at(i)->devicePath() == path) {
1209++ delete deviceList.takeAt(i);
1210++ deviceMap.remove(path);
1211++ Q_EMIT deviceRemoved(path);
1212++ }
1213++ }
1214++}
1215++
1216++void QInputDeviceInfoPrivate::onUDevChanges()
1217++{
1218++ struct udev_device *dev = udev_monitor_receive_device(udevMonitor);
1219++ if (dev) {
1220++ if (qstrcmp(udev_device_get_subsystem(dev), "input") == 0 ) {
1221++ QString eventPath = QString::fromLatin1(udev_device_get_sysname(dev));
1222++
1223++ if (eventPath.contains(QStringLiteral("input")))
1224++ return;
1225++
1226++ QString action = QString::fromStdString(udev_device_get_action(dev));
1227++
1228++ if (!eventPath.contains(QStringLiteral("/dev/input/")))
1229++ eventPath.prepend(QStringLiteral("/dev/input/"));
1230++
1231++ if (action == QStringLiteral("add")) {
1232++
1233++ QInputDevice *iDevice = addDevice(eventPath);
1234++ if (!iDevice)
1235++ return;
1236++
1237++ iDevice->setType(getInputType(dev));
1238++ udev_device_unref(dev);
1239++
1240++ if (iDevice->switches().count() > 0 && iDevice->buttons().count() == 0)
1241++ iDevice->setType(QInputDeviceInfo::Switch);
1242++
1243++ if (iDevice->buttons().count() > 0 && iDevice->type() == QInputDeviceInfo::Unknown)
1244++ iDevice->setType(QInputDeviceInfo::Button);
1245++
1246++ deviceList.append(iDevice);
1247++ deviceMap.insert(eventPath,iDevice);
1248++
1249++ Q_EMIT newDevice(eventPath);
1250++
1251++ } else if (action == QStringLiteral("remove")) {
1252++ removeDevice(eventPath);
1253++ }
1254++ }
1255++ }
1256++}
1257+
1258+=== added file 'src/systeminfo/linux/qinputdeviceinfo_linux_p.h'
1259+--- old/src/systeminfo/linux/qinputdeviceinfo_linux_p.h 1970-01-01 00:00:00 +0000
1260++++ new/src/systeminfo/linux/qinputdeviceinfo_linux_p.h 2015-02-03 15:48:27 +0000
1261+@@ -0,0 +1,91 @@
1262++/****************************************************************************
1263++**
1264++** Copyright (C) 2014 Canonical, Ltd. and/or its subsidiary(-ies).
1265++** Contact: http://www.qt-project.org/legal
1266++**
1267++** This file is part of the QtSystems module of the Qt Toolkit.
1268++**
1269++** $QT_BEGIN_LICENSE:LGPL$
1270++** Commercial License Usage
1271++** Licensees holding valid commercial Qt licenses may use this file in
1272++** accordance with the commercial license agreement provided with the
1273++** Software or, alternatively, in accordance with the terms contained in
1274++** a written agreement between you and Digia. For licensing terms and
1275++** conditions see http://qt.digia.com/licensing. For further information
1276++** use the contact form at http://qt.digia.com/contact-us.
1277++**
1278++** GNU Lesser General Public License Usage
1279++** Alternatively, this file may be used under the terms of the GNU Lesser
1280++** General Public License version 2.1 as published by the Free Software
1281++** Foundation and appearing in the file LICENSE.LGPL included in the
1282++** packaging of this file. Please review the following information to
1283++** ensure the GNU Lesser General Public License version 2.1 requirements
1284++** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
1285++**
1286++** In addition, as a special exception, Digia gives you certain additional
1287++** rights. These rights are described in the Digia Qt LGPL Exception
1288++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
1289++**
1290++** GNU General Public License Usage
1291++** Alternatively, this file may be used under the terms of the GNU
1292++** General Public License version 3.0 as published by the Free Software
1293++** Foundation and appearing in the file LICENSE.GPL included in the
1294++** packaging of this file. Please review the following information to
1295++** ensure the GNU General Public License version 3.0 requirements will be
1296++** met: http://www.gnu.org/copyleft/gpl.html.
1297++**
1298++**
1299++** $QT_END_LICENSE$
1300++**
1301++****************************************************************************/
1302++
1303++#ifndef QINPUTDEVICEINFO_LINUX_P_H
1304++#define QINPUTDEVICEINFO_LINUX_P_H
1305++
1306++#include <QObject>
1307++#include "qinputinfo.h"
1308++#include <libudev.h>
1309++
1310++class QInputDevicePrivate : public QObject
1311++{
1312++ Q_OBJECT
1313++public:
1314++ explicit QInputDevicePrivate(QObject *parent = 0);
1315++
1316++ QString name;
1317++ QString devicePath;
1318++ QList <int> buttons; //keys
1319++ QList <int> switches;
1320++ QList <int> relativeAxis;
1321++ QList <int> absoluteAxis;
1322++ QInputDeviceInfo::InputType type;
1323++};
1324++
1325++class QInputDeviceInfoPrivate : public QObject
1326++{
1327++ Q_OBJECT
1328++public:
1329++ explicit QInputDeviceInfoPrivate(QObject *parent = 0);
1330++ QVector <QInputDevice *> deviceList;
1331++ QMap <QString, QInputDevice *> deviceMap;
1332++
1333++signals:
1334++ void newDevice(const QString &);
1335++ void deviceRemoved(const QString &);
1336++ void ready();
1337++
1338++private:
1339++ struct udev *udev;
1340++ QInputDevice *addDevice(const QString &path);
1341++ void removeDevice(const QString &path);
1342++ QSocketNotifier *notifier;
1343++ int notifierFd;
1344++ struct udev_monitor *udevMonitor;
1345++ QInputDeviceInfo::InputType getInputType( struct udev_device *);
1346++
1347++private Q_SLOTS:
1348++ void onUDevChanges();
1349++ void init();
1350++};
1351++
1352++#endif // QINPUTDEVICEINFO_LINUX_P_H
1353+
1354+=== added file 'src/systeminfo/qinputinfo.cpp'
1355+--- old/src/systeminfo/qinputinfo.cpp 1970-01-01 00:00:00 +0000
1356++++ new/src/systeminfo/qinputinfo.cpp 2015-02-03 15:48:27 +0000
1357+@@ -0,0 +1,159 @@
1358++/****************************************************************************
1359++**
1360++** Copyright (C) 2014 Canonical, Ltd. and/or its subsidiary(-ies).
1361++** Contact: http://www.qt-project.org/legal
1362++**
1363++** This file is part of the QtSystems module of the Qt Toolkit.
1364++**
1365++** $QT_BEGIN_LICENSE:LGPL$
1366++** Commercial License Usage
1367++** Licensees holding valid commercial Qt licenses may use this file in
1368++** accordance with the commercial license agreement provided with the
1369++** Software or, alternatively, in accordance with the terms contained in
1370++** a written agreement between you and Digia. For licensing terms and
1371++** conditions see http://qt.digia.com/licensing. For further information
1372++** use the contact form at http://qt.digia.com/contact-us.
1373++**
1374++** GNU Lesser General Public License Usage
1375++** Alternatively, this file may be used under the terms of the GNU Lesser
1376++** General Public License version 2.1 as published by the Free Software
1377++** Foundation and appearing in the file LICENSE.LGPL included in the
1378++** packaging of this file. Please review the following information to
1379++** ensure the GNU Lesser General Public License version 2.1 requirements
1380++** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
1381++**
1382++** In addition, as a special exception, Digia gives you certain additional
1383++** rights. These rights are described in the Digia Qt LGPL Exception
1384++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
1385++**
1386++** GNU General Public License Usage
1387++** Alternatively, this file may be used under the terms of the GNU
1388++** General Public License version 3.0 as published by the Free Software
1389++** Foundation and appearing in the file LICENSE.GPL included in the
1390++** packaging of this file. Please review the following information to
1391++** ensure the GNU General Public License version 3.0 requirements will be
1392++** met: http://www.gnu.org/copyleft/gpl.html.
1393++**
1394++**
1395++** $QT_END_LICENSE$
1396++**
1397++****************************************************************************/
1398++
1399++#include "qinputinfo.h"
1400++
1401++#if defined(Q_OS_LINUX)
1402++#include "linux/qinputdeviceinfo_linux_p.h"
1403++#endif
1404++
1405++QT_BEGIN_NAMESPACE
1406++
1407++
1408++QInputDevicePrivate::QInputDevicePrivate(QObject *parent) :
1409++ QObject(parent),
1410++ type(QInputDeviceInfo::Unknown)
1411++{
1412++}
1413++
1414++QInputDevice::QInputDevice(QObject *parent) :
1415++ QObject(parent),
1416++ d_ptr(new QInputDevicePrivate(this))
1417++{
1418++}
1419++
1420++QString QInputDevice::name() const
1421++{
1422++ return d_ptr->name;
1423++}
1424++
1425++void QInputDevice::setName(const QString &name)
1426++{
1427++ d_ptr->name = name;
1428++}
1429++
1430++QString QInputDevice::devicePath() const
1431++{
1432++ return d_ptr->devicePath;
1433++}
1434++
1435++void QInputDevice::setDevicePath(const QString &path)
1436++{
1437++ d_ptr->devicePath = path;
1438++}
1439++
1440++QList <int> QInputDevice::buttons() const
1441++{
1442++ return d_ptr->buttons;
1443++}
1444++
1445++void QInputDevice::addButton(int buttonCode)
1446++{
1447++ d_ptr->buttons.append(buttonCode);
1448++}
1449++
1450++QList <int> QInputDevice::switches() const
1451++{
1452++ return d_ptr->switches;
1453++}
1454++
1455++void QInputDevice::addSwitch(int switchCode)
1456++{
1457++ d_ptr->switches.append(switchCode);
1458++}
1459++
1460++QList <int> QInputDevice::relativeAxis() const
1461++{
1462++ return d_ptr->relativeAxis;
1463++}
1464++
1465++void QInputDevice::addRelativeAxis(int axisCode)
1466++{
1467++ d_ptr->relativeAxis.append(axisCode);
1468++}
1469++
1470++QList <int> QInputDevice::absoluteAxis() const
1471++{
1472++ return d_ptr->absoluteAxis;
1473++}
1474++
1475++void QInputDevice::addAbsoluteAxis(int axisCode)
1476++{
1477++ d_ptr->absoluteAxis.append(axisCode);
1478++}
1479++
1480++QInputDeviceInfo::InputType QInputDevice::type()
1481++{
1482++ return d_ptr->type;
1483++}
1484++
1485++void QInputDevice::setType(QInputDeviceInfo::InputType type)
1486++{
1487++ d_ptr->type = type;
1488++}
1489++
1490++
1491++QInputDeviceInfo::QInputDeviceInfo(QObject *parent) :
1492++ QObject(parent),
1493++ d_ptr(new QInputDeviceInfoPrivate(this))
1494++{
1495++ connect(d_ptr, &QInputDeviceInfoPrivate::newDevice,this,&QInputDeviceInfo::addedDevice);
1496++ connect(d_ptr, &QInputDeviceInfoPrivate::deviceRemoved,this,&QInputDeviceInfo::deviceRemoved);
1497++
1498++ connect(d_ptr,SIGNAL(ready()),this,SIGNAL(ready()));
1499++}
1500++
1501++QVector <QInputDevice *> QInputDeviceInfo::deviceList()
1502++{
1503++ return d_ptr->deviceList;
1504++}
1505++
1506++QMap <QString, QInputDevice *> QInputDeviceInfo::deviceMap()
1507++{
1508++ return d_ptr->deviceMap;
1509++}
1510++
1511++void QInputDeviceInfo::addedDevice(const QString & devicePath)
1512++{
1513++ Q_EMIT deviceAdded(devicePath);
1514++}
1515++
1516++QT_END_NAMESPACE
1517+
1518+=== added file 'src/systeminfo/qinputinfo.h'
1519+--- old/src/systeminfo/qinputinfo.h 1970-01-01 00:00:00 +0000
1520++++ new/src/systeminfo/qinputinfo.h 2015-02-03 15:48:27 +0000
1521+@@ -0,0 +1,141 @@
1522++/****************************************************************************
1523++**
1524++** Copyright (C) 2014 Canonical, Ltd. and/or its subsidiary(-ies).
1525++** Contact: http://www.qt-project.org/legal
1526++**
1527++** This file is part of the QtSystems module of the Qt Toolkit.
1528++**
1529++** $QT_BEGIN_LICENSE:LGPL$
1530++** Commercial License Usage
1531++** Licensees holding valid commercial Qt licenses may use this file in
1532++** accordance with the commercial license agreement provided with the
1533++** Software or, alternatively, in accordance with the terms contained in
1534++** a written agreement between you and Digia. For licensing terms and
1535++** conditions see http://qt.digia.com/licensing. For further information
1536++** use the contact form at http://qt.digia.com/contact-us.
1537++**
1538++** GNU Lesser General Public License Usage
1539++** Alternatively, this file may be used under the terms of the GNU Lesser
1540++** General Public License version 2.1 as published by the Free Software
1541++** Foundation and appearing in the file LICENSE.LGPL included in the
1542++** packaging of this file. Please review the following information to
1543++** ensure the GNU Lesser General Public License version 2.1 requirements
1544++** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
1545++**
1546++** In addition, as a special exception, Digia gives you certain additional
1547++** rights. These rights are described in the Digia Qt LGPL Exception
1548++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
1549++**
1550++** GNU General Public License Usage
1551++** Alternatively, this file may be used under the terms of the GNU
1552++** General Public License version 3.0 as published by the Free Software
1553++** Foundation and appearing in the file LICENSE.GPL included in the
1554++** packaging of this file. Please review the following information to
1555++** ensure the GNU General Public License version 3.0 requirements will be
1556++** met: http://www.gnu.org/copyleft/gpl.html.
1557++**
1558++**
1559++** $QT_END_LICENSE$
1560++**
1561++****************************************************************************/
1562++
1563++#ifndef QINPUTINFO_H
1564++#define QINPUTINFO_H
1565++
1566++#include <QtSystemInfo/qsysteminfoglobal.h>
1567++#include <QObject>
1568++#include <QVector>
1569++#include <QMap>
1570++#include <QSocketNotifier>
1571++#include <QDebug>
1572++
1573++class QInputDeviceInfoPrivate;
1574++class QInputDevicePrivate;
1575++class QInputDevice;
1576++
1577++class QInputDeviceInfoPrivate;
1578++class Q_SYSTEMINFO_EXPORT QInputDeviceInfo : public QObject
1579++{
1580++ Q_OBJECT
1581++ Q_PROPERTY(int deviceCount READ deviceCount)
1582++public:
1583++
1584++ enum InputType {
1585++ Unknown = 0,
1586++ Button,
1587++ Mouse,
1588++ TouchPad,
1589++ TouchScreen,
1590++ Keyboard,
1591++ Switch
1592++ };
1593++ Q_ENUMS(InputType)
1594++
1595++ explicit QInputDeviceInfo(QObject *parent = 0);
1596++
1597++ Q_INVOKABLE QVector <QInputDevice *> deviceList();
1598++
1599++ Q_INVOKABLE QMap <QString, QInputDevice *> deviceMap();
1600++ int deviceCount() { return deviceList().count(); }
1601++signals:
1602++
1603++ void deviceAdded(const QString & devicePath);
1604++ void deviceRemoved(const QString & devicePath);
1605++
1606++ void ready();
1607++
1608++public slots:
1609++ void addedDevice(const QString & devicePath);
1610++
1611++private:
1612++ Q_DISABLE_COPY(QInputDeviceInfo)
1613++#if !defined(QT_SIMULATOR)
1614++ QInputDeviceInfoPrivate *const d_ptr;
1615++ Q_DECLARE_PRIVATE(QInputDeviceInfo)
1616++#endif
1617++};
1618++
1619++class Q_SYSTEMINFO_EXPORT QInputDevice : public QObject
1620++{
1621++ friend class QInputDeviceInfoPrivate;
1622++ Q_OBJECT
1623++ Q_ENUMS(InputType)
1624++ Q_PROPERTY(QString name READ name NOTIFY nameChanged)
1625++ Q_PROPERTY(QString devicePath READ devicePath NOTIFY devicePathChanged)
1626++ Q_PROPERTY(QList <int> buttons READ buttons NOTIFY buttonsChanged)
1627++ Q_PROPERTY(QList <int> switches READ switches NOTIFY switchesChanged)
1628++ Q_PROPERTY(QList <int> relativeAxis READ relativeAxis NOTIFY relativeAxisChanged)
1629++ Q_PROPERTY(QList <int> absoluteAxis READ absoluteAxis NOTIFY absoluteAxisChanged)
1630++ Q_PROPERTY(QInputDeviceInfo::InputType type READ type NOTIFY typeChanged)
1631++
1632++public:
1633++ explicit QInputDevice(QObject *parent = 0);
1634++
1635++ QString name() const;
1636++ QString devicePath() const;
1637++ QList <int> buttons() const; //keys event code
1638++ QList <int> switches() const;
1639++ QList <int> relativeAxis() const;
1640++ QList <int> absoluteAxis() const;
1641++
1642++ QInputDeviceInfo::InputType type();
1643++signals:
1644++ void nameChanged();
1645++ void devicePathChanged();
1646++ void buttonsChanged();
1647++ void switchesChanged();
1648++ void relativeAxisChanged();
1649++ void absoluteAxisChanged();
1650++ void typeChanged();
1651++private:
1652++ QInputDevicePrivate *d_ptr;
1653++ void setName(const QString &);
1654++ void setDevicePath(const QString &);
1655++ void addButton(int);
1656++ void addSwitch(int);
1657++ void addRelativeAxis(int);
1658++ void addAbsoluteAxis(int);
1659++ void setType(QInputDeviceInfo::InputType);
1660++};
1661++
1662++#endif // QINPUTINFO_H
1663+
1664+=== modified file 'src/systeminfo/systeminfo.pro'
1665+--- old/src/systeminfo/systeminfo.pro 2015-02-03 15:48:03 +0000
1666++++ new/src/systeminfo/systeminfo.pro 2015-02-03 15:48:27 +0000
1667+@@ -11,7 +11,9 @@
1668+ SOURCES += qdeviceinfo.cpp \
1669+ qscreensaver.cpp \
1670+ qbatteryinfo.cpp \
1671+- qnetworkinfo.cpp
1672++ qnetworkinfo.cpp \
1673++ qinputinfo.cpp \
1674++ linux/qinputdeviceinfo_linux.cpp
1675+
1676+ win32: !simulator: {
1677+ contains(CONFIG, release) {
1678+@@ -110,6 +112,10 @@
1679+ SOURCES += linux/qbatteryinfo_linux.cpp
1680+ }
1681+
1682++CONFIG += link_pkgconfig
1683++PKGCONFIG += libudev libevdev
1684++LIBS += -ludev -levdev
1685++
1686+ config_udev {
1687+ CONFIG += link_pkgconfig
1688+ PKGCONFIG += udev
1689+@@ -219,7 +225,9 @@
1690+
1691+ QMAKE_DOCS = $$PWD/../../doc/config/systeminfo/qtsysteminfo.qdocconf
1692+
1693+-HEADERS += $$PUBLIC_HEADERS $$PRIVATE_HEADERS
1694++HEADERS += $$PUBLIC_HEADERS $$PRIVATE_HEADERS \
1695++ qinputinfo.h \
1696++ linux/qinputdeviceinfo_linux_p.h
1697+ load(qt_module)
1698+
1699+ # This must be done after loading qt_module.prf
1700+@@ -236,3 +244,6 @@
1701+ }
1702+ }
1703+
1704++OTHER_FILES += \
1705++ notes.txt
1706++
1707+
1708+=== modified file 'tests/auto/systeminfo/systeminfo.pro'
1709+--- old/tests/auto/systeminfo/systeminfo.pro 2015-02-03 15:48:03 +0000
1710++++ new/tests/auto/systeminfo/systeminfo.pro 2015-02-03 15:48:27 +0000
1711+@@ -3,4 +3,5 @@
1712+ SUBDIRS = \
1713+ qdeviceinfo \
1714+ qscreensaver \
1715+- qbatteryinfo
1716++ qbatteryinfo \
1717++# qinputdeviceinfo
1718+
1719
1720=== added file 'debian/patches/remove-storageinfo-examples.patch'
1721--- debian/patches/remove-storageinfo-examples.patch 1970-01-01 00:00:00 +0000
1722+++ debian/patches/remove-storageinfo-examples.patch 2015-02-03 15:58:39 +0000
1723@@ -0,0 +1,342 @@
1724+=== removed directory 'examples/systeminfo/qml-storageinfo'
1725+=== removed directory 'examples/systeminfo/qml-storageinfo/content'
1726+=== removed file 'examples/systeminfo/qml-storageinfo/content/ProgressBar.qml'
1727+--- old/examples/systeminfo/qml-storageinfo/content/ProgressBar.qml 2013-06-14 10:32:13 +0000
1728++++ new/examples/systeminfo/qml-storageinfo/content/ProgressBar.qml 1970-01-01 00:00:00 +0000
1729+@@ -1,85 +0,0 @@
1730+-/****************************************************************************
1731+-**
1732+-** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
1733+-** Contact: http://www.qt-project.org/legal
1734+-**
1735+-** This file is part of the examples of the Qt Toolkit.
1736+-**
1737+-** $QT_BEGIN_LICENSE:BSD$
1738+-** You may use this file under the terms of the BSD license as follows:
1739+-**
1740+-** "Redistribution and use in source and binary forms, with or without
1741+-** modification, are permitted provided that the following conditions are
1742+-** met:
1743+-** * Redistributions of source code must retain the above copyright
1744+-** notice, this list of conditions and the following disclaimer.
1745+-** * Redistributions in binary form must reproduce the above copyright
1746+-** notice, this list of conditions and the following disclaimer in
1747+-** the documentation and/or other materials provided with the
1748+-** distribution.
1749+-** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
1750+-** of its contributors may be used to endorse or promote products derived
1751+-** from this software without specific prior written permission.
1752+-**
1753+-**
1754+-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1755+-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1756+-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
1757+-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
1758+-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
1759+-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
1760+-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
1761+-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
1762+-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
1763+-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
1764+-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
1765+-**
1766+-** $QT_END_LICENSE$
1767+-**
1768+-****************************************************************************/
1769+-
1770+-import QtQuick 2.0
1771+-
1772+-Item {
1773+- id: progressbar
1774+-
1775+- property int minimum: 0
1776+- property int maximum: 100
1777+- property int value: 0
1778+- property int maxval: 0
1779+- property alias color: gradient1.color
1780+- property alias secondColor: gradient2.color
1781+-
1782+- width: 30; height: 250
1783+- clip: true
1784+-
1785+- BorderImage {
1786+- source: "background.png"
1787+- width: parent.width; height: parent.height
1788+- border { left: 4; top: 4; right: 4; bottom: 4 }
1789+- }
1790+-
1791+- Rectangle {
1792+- id: highlight
1793+-
1794+- property int widthDest: ((progressbar.height * (value - minimum)) / (maximum - minimum) )
1795+-
1796+- height: highlight.widthDest
1797+- Behavior on height { SmoothedAnimation { velocity: 1200 } }
1798+-
1799+- anchors { left: parent.left; right: parent.right; bottom: parent.bottom; leftMargin: 2; rightMargin: 2; bottomMargin: 2 }
1800+-// anchors { left: parent.left; top: parent.top; bottom: parent.bottom; leftMargin: 3; topMargin: 3; bottomMargin: 3 }
1801+- radius: 1
1802+- gradient: Gradient {
1803+- GradientStop { id: gradient1; position: 0.0 }
1804+- GradientStop { id: gradient2; position: 1.0 }
1805+- }
1806+-
1807+- }
1808+- Text {
1809+- anchors { /*right: highlight.right; rightMargin: 6; */horizontalCenter: parent.horizontalCenter }
1810+- color: "black"
1811+- font.bold: true
1812+- text: maxval + '%'//Math.floor((value - minimum) / (maximum - minimum) * 100) + '%'
1813+- }
1814+-}
1815+
1816+=== removed file 'examples/systeminfo/qml-storageinfo/content/background.png'
1817+Binary files old/examples/systeminfo/qml-storageinfo/content/background.png 2013-06-14 10:32:13 +0000 and new/examples/systeminfo/qml-storageinfo/content/background.png 1970-01-01 00:00:00 +0000 differ
1818+=== removed file 'examples/systeminfo/qml-storageinfo/main.cpp'
1819+--- old/examples/systeminfo/qml-storageinfo/main.cpp 2013-06-14 10:32:13 +0000
1820++++ new/examples/systeminfo/qml-storageinfo/main.cpp 1970-01-01 00:00:00 +0000
1821+@@ -1,43 +0,0 @@
1822+-/****************************************************************************
1823+-**
1824+-** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
1825+-** Contact: http://www.qt-project.org/legal
1826+-**
1827+-** This file is part of the QtSystems module of the Qt Toolkit.
1828+-**
1829+-** $QT_BEGIN_LICENSE:LGPL$
1830+-** Commercial License Usage
1831+-** Licensees holding valid commercial Qt licenses may use this file in
1832+-** accordance with the commercial license agreement provided with the
1833+-** Software or, alternatively, in accordance with the terms contained in
1834+-** a written agreement between you and Digia. For licensing terms and
1835+-** conditions see http://qt.digia.com/licensing. For further information
1836+-** use the contact form at http://qt.digia.com/contact-us.
1837+-**
1838+-** GNU Lesser General Public License Usage
1839+-** Alternatively, this file may be used under the terms of the GNU Lesser
1840+-** General Public License version 2.1 as published by the Free Software
1841+-** Foundation and appearing in the file LICENSE.LGPL included in the
1842+-** packaging of this file. Please review the following information to
1843+-** ensure the GNU Lesser General Public License version 2.1 requirements
1844+-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
1845+-**
1846+-** In addition, as a special exception, Digia gives you certain additional
1847+-** rights. These rights are described in the Digia Qt LGPL Exception
1848+-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
1849+-**
1850+-** GNU General Public License Usage
1851+-** Alternatively, this file may be used under the terms of the GNU
1852+-** General Public License version 3.0 as published by the Free Software
1853+-** Foundation and appearing in the file LICENSE.GPL included in the
1854+-** packaging of this file. Please review the following information to
1855+-** ensure the GNU General Public License version 3.0 requirements will be
1856+-** met: http://www.gnu.org/copyleft/gpl.html.
1857+-**
1858+-**
1859+-** $QT_END_LICENSE$
1860+-**
1861+-****************************************************************************/
1862+-
1863+-#include"../stub.h"
1864+-SYSINFO_EXAMPLE_MAIN(qml-storage)
1865+
1866+=== removed file 'examples/systeminfo/qml-storageinfo/qml-storage.qml'
1867+--- old/examples/systeminfo/qml-storageinfo/qml-storage.qml 2013-06-14 10:32:13 +0000
1868++++ new/examples/systeminfo/qml-storageinfo/qml-storage.qml 1970-01-01 00:00:00 +0000
1869+@@ -1,111 +0,0 @@
1870+-/****************************************************************************
1871+-**
1872+-** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
1873+-** Contact: http://www.qt-project.org/legal
1874+-**
1875+-** This file is part of the QtSystems module of the Qt Toolkit.
1876+-**
1877+-** $QT_BEGIN_LICENSE:LGPL$
1878+-** Commercial License Usage
1879+-** Licensees holding valid commercial Qt licenses may use this file in
1880+-** accordance with the commercial license agreement provided with the
1881+-** Software or, alternatively, in accordance with the terms contained in
1882+-** a written agreement between you and Digia. For licensing terms and
1883+-** conditions see http://qt.digia.com/licensing. For further information
1884+-** use the contact form at http://qt.digia.com/contact-us.
1885+-**
1886+-** GNU Lesser General Public License Usage
1887+-** Alternatively, this file may be used under the terms of the GNU Lesser
1888+-** General Public License version 2.1 as published by the Free Software
1889+-** Foundation and appearing in the file LICENSE.LGPL included in the
1890+-** packaging of this file. Please review the following information to
1891+-** ensure the GNU Lesser General Public License version 2.1 requirements
1892+-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
1893+-**
1894+-** In addition, as a special exception, Digia gives you certain additional
1895+-** rights. These rights are described in the Digia Qt LGPL Exception
1896+-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
1897+-**
1898+-** GNU General Public License Usage
1899+-** Alternatively, this file may be used under the terms of the GNU
1900+-** General Public License version 3.0 as published by the Free Software
1901+-** Foundation and appearing in the file LICENSE.GPL included in the
1902+-** packaging of this file. Please review the following information to
1903+-** ensure the GNU General Public License version 3.0 requirements will be
1904+-** met: http://www.gnu.org/copyleft/gpl.html.
1905+-**
1906+-**
1907+-** $QT_END_LICENSE$
1908+-**
1909+-****************************************************************************/
1910+-
1911+-import QtQuick 2.0
1912+-import QtSystemInfo 5.0
1913+-import "content"
1914+-
1915+-Rectangle {
1916+- width: 480; height: 854
1917+- color: "#343434"
1918+-
1919+- StorageInfo {
1920+- id: storageinfo
1921+- onLogicalDriveChanged: updateList;
1922+- }
1923+-
1924+- function getTotalSizeText(name) {
1925+- var totalSpace = storageinfo.totalDiskSpace(name);
1926+- if (totalSpace / 1024 < 1024)
1927+- return Math.round((totalSpace / 1024) * 100) / 100 + " kb avail.";
1928+- else if (totalSpace/1024/1024 < 1024)
1929+- return Math.round((totalSpace / 1024 / 1024) * 100) / 100 + " Mb avail.";
1930+- else if (totalSpace/1024/1024/1024 < 1024)
1931+- return Math.round((totalSpace / 1024 / 1024 / 1024) * 100) / 100 + " Gb avail.";
1932+- return "";
1933+- }
1934+-
1935+- function getAvailableSizeText(name) {
1936+- var dspace = storageinfo.availableDiskSpace(name);
1937+- if (dspace /1024 < 1024)
1938+- return Math.round((dspace / 1024) * 100) / 100 + " kb / ";
1939+- else if (dspace/1024/1024 < 1024)
1940+- return Math.round((dspace / 1024 / 1024) * 100) / 100 + " Mb / ";
1941+- else if (dspace/1024/1024/1024 < 1024)
1942+- return Math.round((dspace / 1024 / 1024 / 1024) * 100) / 100 + " Gb / ";
1943+- return "";
1944+- }
1945+-
1946+- function getPercent(name) {
1947+- return Math.round(100 - ((storageinfo.availableDiskSpace(name) / storageinfo.totalDiskSpace(name)) * 100))
1948+- }
1949+-
1950+- property alias storageList: storageinfo.allLogicalDrives;
1951+-
1952+- function updateList() {
1953+- driveList:storageList: storageinfo.allLogicalDrives;
1954+- }
1955+-
1956+- Component {
1957+- id: listItem
1958+-
1959+- Row {
1960+- id:row
1961+- spacing: 10
1962+- ProgressBar {
1963+- width: 120; height: 25
1964+- maxval: getPercent(name.text)
1965+- value: getPercent(name.text)
1966+- NumberAnimation on value { duration: 1500; from: 0; to: getPercent(name.text); loops: 1 }
1967+- ColorAnimation on color { duration: 1500; from: "lightsteelblue"; to: "thistle"; loops:1}
1968+- ColorAnimation on secondColor { duration: 1500; from: "steelblue"; to: "#CD96CD"; loops: 1 }
1969+- }
1970+- Text { id: name; text: modelData; color: "white";}
1971+- Text { text: getAvailableSizeText(name.text) + getTotalSizeText(name.text); color: "white";}
1972+- }
1973+- }
1974+-
1975+- ListView {
1976+- anchors.fill: parent
1977+- model: storageList
1978+- delegate: listItem
1979+- }
1980+-}
1981+
1982+=== removed file 'examples/systeminfo/qml-storageinfo/qml-storageinfo.pro'
1983+--- old/examples/systeminfo/qml-storageinfo/qml-storageinfo.pro 2013-06-14 10:32:13 +0000
1984++++ new/examples/systeminfo/qml-storageinfo/qml-storageinfo.pro 1970-01-01 00:00:00 +0000
1985+@@ -1,12 +0,0 @@
1986+-TEMPLATE = app
1987+-TARGET = qml-storageinfo
1988+-QT += quick
1989+-SOURCES = main.cpp
1990+-
1991+-app.files = \
1992+- $$files(*.qml) \
1993+- content
1994+-
1995+-target.path = $$[QT_INSTALL_EXAMPLES]/sysinfo/qml-storageinfo
1996+-app.path = $$[QT_INSTALL_EXAMPLES]/sysinfo/qml-storageinfo
1997+-INSTALLS += target app
1998+
1999+=== modified file 'examples/systeminfo/systeminfo.pro'
2000+--- old/examples/systeminfo/systeminfo.pro 2013-06-14 10:32:13 +0000
2001++++ new/examples/systeminfo/systeminfo.pro 2015-02-03 09:54:15 +0000
2002+@@ -2,7 +2,6 @@
2003+
2004+ SUBDIRS += \
2005+ qml-deviceinfo \
2006+- qml-storageinfo \
2007+ qml-battery
2008+
2009+ #qtHaveModule(widgets): SUBDIRS += \
2010+
2011+=== modified file 'src/imports/systeminfo/plugins.qmltypes'
2012+--- old/src/imports/systeminfo/plugins.qmltypes 2013-06-14 10:32:13 +0000
2013++++ new/src/imports/systeminfo/plugins.qmltypes 2015-02-03 09:54:15 +0000
2014+@@ -472,50 +472,6 @@
2015+ }
2016+ }
2017+ Component {
2018+- name: "QDeclarativeStorageInfo"
2019+- prototype: "QObject"
2020+- exports: ["QtSystemInfo/StorageInfo 5.0"]
2021+- exportMetaObjectRevisions: [0]
2022+- Enum {
2023+- name: "DriveType"
2024+- values: {
2025+- "UnknownDrive": 0,
2026+- "InternalDrive": 1,
2027+- "RemovableDrive": 2,
2028+- "RemoteDrive": 3,
2029+- "CdromDrive": 4,
2030+- "RamDrive": 5
2031+- }
2032+- }
2033+- Property { name: "allLogicalDrives"; type: "QStringList"; isReadonly: true }
2034+- Property { name: "monitorAllLogicalDrives"; type: "bool" }
2035+- Signal {
2036+- name: "logicalDriveChanged"
2037+- Parameter { name: "drive"; type: "string" }
2038+- Parameter { name: "added"; type: "bool" }
2039+- }
2040+- Method {
2041+- name: "availableDiskSpace"
2042+- type: "qlonglong"
2043+- Parameter { name: "drive"; type: "string" }
2044+- }
2045+- Method {
2046+- name: "totalDiskSpace"
2047+- type: "qlonglong"
2048+- Parameter { name: "drive"; type: "string" }
2049+- }
2050+- Method {
2051+- name: "uriForDrive"
2052+- type: "string"
2053+- Parameter { name: "drive"; type: "string" }
2054+- }
2055+- Method {
2056+- name: "driveType"
2057+- type: "int"
2058+- Parameter { name: "drive"; type: "string" }
2059+- }
2060+- }
2061+- Component {
2062+ name: "QScreenSaver"
2063+ prototype: "QObject"
2064+ exports: ["QtSystemInfo/ScreenSaver 5.0"]
2065+
2066
2067=== added file 'debian/patches/remove-storageinfo.patch'
2068--- debian/patches/remove-storageinfo.patch 1970-01-01 00:00:00 +0000
2069+++ debian/patches/remove-storageinfo.patch 2015-02-03 15:58:39 +0000
2070@@ -0,0 +1,2371 @@
2071+=== removed file 'src/imports/systeminfo/qdeclarativestorageinfo.cpp'
2072+--- old/src/imports/systeminfo/qdeclarativestorageinfo.cpp 2013-06-14 10:32:13 +0000
2073++++ new/src/imports/systeminfo/qdeclarativestorageinfo.cpp 1970-01-01 00:00:00 +0000
2074+@@ -1,157 +0,0 @@
2075+-/****************************************************************************
2076+-**
2077+-** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
2078+-** Contact: http://www.qt-project.org/legal
2079+-**
2080+-** This file is part of the QtSystems module of the Qt Toolkit.
2081+-**
2082+-** $QT_BEGIN_LICENSE:LGPL$
2083+-** Commercial License Usage
2084+-** Licensees holding valid commercial Qt licenses may use this file in
2085+-** accordance with the commercial license agreement provided with the
2086+-** Software or, alternatively, in accordance with the terms contained in
2087+-** a written agreement between you and Digia. For licensing terms and
2088+-** conditions see http://qt.digia.com/licensing. For further information
2089+-** use the contact form at http://qt.digia.com/contact-us.
2090+-**
2091+-** GNU Lesser General Public License Usage
2092+-** Alternatively, this file may be used under the terms of the GNU Lesser
2093+-** General Public License version 2.1 as published by the Free Software
2094+-** Foundation and appearing in the file LICENSE.LGPL included in the
2095+-** packaging of this file. Please review the following information to
2096+-** ensure the GNU Lesser General Public License version 2.1 requirements
2097+-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
2098+-**
2099+-** In addition, as a special exception, Digia gives you certain additional
2100+-** rights. These rights are described in the Digia Qt LGPL Exception
2101+-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
2102+-**
2103+-** GNU General Public License Usage
2104+-** Alternatively, this file may be used under the terms of the GNU
2105+-** General Public License version 3.0 as published by the Free Software
2106+-** Foundation and appearing in the file LICENSE.GPL included in the
2107+-** packaging of this file. Please review the following information to
2108+-** ensure the GNU General Public License version 3.0 requirements will be
2109+-** met: http://www.gnu.org/copyleft/gpl.html.
2110+-**
2111+-**
2112+-** $QT_END_LICENSE$
2113+-**
2114+-****************************************************************************/
2115+-
2116+-#include "qdeclarativestorageinfo_p.h"
2117+-
2118+-QT_BEGIN_NAMESPACE
2119+-
2120+-/*!
2121+- \qmltype StorageInfo
2122+- \instantiates QDeclarativeStorageInfo
2123+- \inqmlmodule QtSystemInfo
2124+- \ingroup qml-systeminfo
2125+- \brief The StorageInfo element provides various information about the storage system.
2126+-*/
2127+-
2128+-/*!
2129+- \internal
2130+-*/
2131+-QDeclarativeStorageInfo::QDeclarativeStorageInfo(QObject *parent)
2132+- : QObject(parent)
2133+- , storageInfo(new QStorageInfo(this))
2134+- , isMonitorAllLogicalDrives(false)
2135+-{
2136+-}
2137+-
2138+-/*!
2139+- \internal
2140+- */
2141+-QDeclarativeStorageInfo::~QDeclarativeStorageInfo()
2142+-{
2143+-}
2144+-
2145+-/*!
2146+- \qmlproperty bool StorageInfo::monitorAllLogicalDrives
2147+-
2148+- This property triggers the active monitoring of all available logical drives.
2149+- */
2150+-bool QDeclarativeStorageInfo::monitorAllLogicalDrives() const
2151+-{
2152+- return isMonitorAllLogicalDrives;
2153+-}
2154+-
2155+-void QDeclarativeStorageInfo::setMonitorAllLogicalDrives(bool monitor)
2156+-{
2157+- if (monitor != isMonitorAllLogicalDrives) {
2158+- isMonitorAllLogicalDrives = monitor;
2159+- if (monitor) {
2160+- connect(storageInfo, SIGNAL(logicalDriveChanged(QString,bool)),
2161+- this, SIGNAL(logicalDriveChanged(QString,bool)));
2162+- } else {
2163+- disconnect(storageInfo, SIGNAL(logicalDriveChanged(QString,bool)),
2164+- this, SIGNAL(logicalDriveChanged(QString,bool)));
2165+- }
2166+- emit monitorAllLogicalDrivesChanged();
2167+- }
2168+-}
2169+-
2170+-/*!
2171+- \qmlproperty stringlist StorageInfo::allLogicalDrives
2172+-
2173+- This property holds a list of all the available logical drives.
2174+-*/
2175+-QStringList QDeclarativeStorageInfo::allLogicalDrives() const
2176+-{
2177+- return storageInfo->allLogicalDrives();
2178+-}
2179+-
2180+-/*!
2181+- \qmlmethod qlonglong StorageInfo::availableDiskSpace(string drive)
2182+-
2183+- Returns the available free space on the \a drive, in bytes. -1 is returned if the drive doesn't
2184+- exist, or the information is not available.
2185+-*/
2186+-qlonglong QDeclarativeStorageInfo::availableDiskSpace(const QString &drive) const
2187+-{
2188+- return storageInfo->availableDiskSpace(drive);
2189+-}
2190+-
2191+-/*!
2192+- \qmlmethod qlonglong StorageInfo::totalDiskSpace(string drive)
2193+-
2194+- Returns the total space of the \a drive, in bytes. -1 is returned if the drive doesn't exist,
2195+- or the information is not available.
2196+-*/
2197+-qlonglong QDeclarativeStorageInfo::totalDiskSpace(const QString &drive) const
2198+-{
2199+- return storageInfo->totalDiskSpace(drive);
2200+-}
2201+-
2202+-/*!
2203+- \qmlmethod qlonglong StorageInfo::uriForDrive(string drive)
2204+-
2205+- Returns the URI, or unique identifier for the given \a drive. If the drive doesn't exist, or the
2206+- information is not available, an empty string is returned.
2207+-*/
2208+-QString QDeclarativeStorageInfo::uriForDrive(const QString &drive) const
2209+-{
2210+- return storageInfo->uriForDrive(drive);
2211+-}
2212+-
2213+-/*!
2214+- \qmlmethod DriveType StorageInfo::driveType(string drive)
2215+-
2216+- Returns the type of the given \a drive. Possible values are:
2217+- \list
2218+- \li StorageInfo.UnknownDrive - Drive type unknown.
2219+- \li StorageInfo.InternalDrive - Internal mass storage drive, e.g. hard drive.
2220+- \li StorageInfo.RemovableDrive - Removable drive, e.g. memory card.
2221+- \li StorageInfo.RemoteDrive - Network drive.
2222+- \li StorageInfo.CdromDrive - CD-ROM.
2223+- \li StorageInfo.RamDrive - Virtual drive made in RAM memory.
2224+- \endlist
2225+-*/
2226+-int QDeclarativeStorageInfo::driveType(const QString &drive) const
2227+-{
2228+- return storageInfo->driveType(drive);
2229+-}
2230+-
2231+-QT_END_NAMESPACE
2232+
2233+=== removed file 'src/imports/systeminfo/qdeclarativestorageinfo_p.h'
2234+--- old/src/imports/systeminfo/qdeclarativestorageinfo_p.h 2013-06-14 10:32:13 +0000
2235++++ new/src/imports/systeminfo/qdeclarativestorageinfo_p.h 1970-01-01 00:00:00 +0000
2236+@@ -1,104 +0,0 @@
2237+-/****************************************************************************
2238+-**
2239+-** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
2240+-** Contact: http://www.qt-project.org/legal
2241+-**
2242+-** This file is part of the QtSystems module of the Qt Toolkit.
2243+-**
2244+-** $QT_BEGIN_LICENSE:LGPL$
2245+-** Commercial License Usage
2246+-** Licensees holding valid commercial Qt licenses may use this file in
2247+-** accordance with the commercial license agreement provided with the
2248+-** Software or, alternatively, in accordance with the terms contained in
2249+-** a written agreement between you and Digia. For licensing terms and
2250+-** conditions see http://qt.digia.com/licensing. For further information
2251+-** use the contact form at http://qt.digia.com/contact-us.
2252+-**
2253+-** GNU Lesser General Public License Usage
2254+-** Alternatively, this file may be used under the terms of the GNU Lesser
2255+-** General Public License version 2.1 as published by the Free Software
2256+-** Foundation and appearing in the file LICENSE.LGPL included in the
2257+-** packaging of this file. Please review the following information to
2258+-** ensure the GNU Lesser General Public License version 2.1 requirements
2259+-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
2260+-**
2261+-** In addition, as a special exception, Digia gives you certain additional
2262+-** rights. These rights are described in the Digia Qt LGPL Exception
2263+-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
2264+-**
2265+-** GNU General Public License Usage
2266+-** Alternatively, this file may be used under the terms of the GNU
2267+-** General Public License version 3.0 as published by the Free Software
2268+-** Foundation and appearing in the file LICENSE.GPL included in the
2269+-** packaging of this file. Please review the following information to
2270+-** ensure the GNU General Public License version 3.0 requirements will be
2271+-** met: http://www.gnu.org/copyleft/gpl.html.
2272+-**
2273+-**
2274+-** $QT_END_LICENSE$
2275+-**
2276+-****************************************************************************/
2277+-
2278+-//
2279+-// W A R N I N G
2280+-// -------------
2281+-//
2282+-// This file is not part of the Qt API. It exists purely as an
2283+-// implementation detail. This header file may change from version to
2284+-// version without notice, or even be removed.
2285+-//
2286+-// We mean it.
2287+-//
2288+-
2289+-#ifndef QDECLARATIVESTORAGEINFO_P_H
2290+-#define QDECLARATIVESTORAGEINFO_P_H
2291+-
2292+-#include <qstorageinfo.h>
2293+-
2294+-QT_BEGIN_NAMESPACE
2295+-
2296+-class QDeclarativeStorageInfo : public QObject
2297+-{
2298+- Q_OBJECT
2299+-
2300+- Q_ENUMS(DriveType)
2301+-
2302+- Q_PROPERTY(QStringList allLogicalDrives READ allLogicalDrives NOTIFY logicalDriveChanged)
2303+- Q_PROPERTY(bool monitorAllLogicalDrives READ monitorAllLogicalDrives WRITE setMonitorAllLogicalDrives NOTIFY monitorAllLogicalDrivesChanged)
2304+-
2305+-public:
2306+- enum DriveType {
2307+- UnknownDrive = QStorageInfo::UnknownDrive,
2308+- InternalDrive = QStorageInfo::InternalDrive,
2309+- RemovableDrive = QStorageInfo::RemovableDrive,
2310+- RemoteDrive = QStorageInfo::RemoteDrive,
2311+- CdromDrive = QStorageInfo::CdromDrive,
2312+- RamDrive = QStorageInfo::RamDrive
2313+- };
2314+-
2315+- QDeclarativeStorageInfo(QObject *parent = 0);
2316+- virtual ~QDeclarativeStorageInfo();
2317+-
2318+- bool monitorAllLogicalDrives() const;
2319+- void setMonitorAllLogicalDrives(bool monitor);
2320+- QStringList allLogicalDrives() const;
2321+-
2322+- Q_INVOKABLE qlonglong availableDiskSpace(const QString &drive) const;
2323+- Q_INVOKABLE qlonglong totalDiskSpace(const QString &drive) const;
2324+- Q_INVOKABLE QString uriForDrive(const QString &drive) const;
2325+- Q_INVOKABLE int driveType(const QString &drive) const;
2326+-
2327+-Q_SIGNALS:
2328+- void monitorAllLogicalDrivesChanged();
2329+-
2330+- void logicalDriveChanged(const QString &drive, bool added);
2331+-
2332+-private:
2333+- QStorageInfo *storageInfo;
2334+-
2335+- bool isMonitorAllLogicalDrives;
2336+-};
2337+-
2338+-QT_END_NAMESPACE
2339+-
2340+-#endif // QDECLARATIVESTORAGEINFO_P_H
2341+
2342+=== modified file 'src/imports/systeminfo/qsysteminfo.cpp'
2343+--- old/src/imports/systeminfo/qsysteminfo.cpp 2013-07-12 13:41:02 +0000
2344++++ new/src/imports/systeminfo/qsysteminfo.cpp 2015-02-03 15:08:08 +0000
2345+@@ -46,7 +46,6 @@
2346+ #include "qdeclarativedeviceinfo_p.h"
2347+ #include "qdeclarativenetworkinfo_p.h"
2348+ #include <qscreensaver.h>
2349+-#include "qdeclarativestorageinfo_p.h"
2350+
2351+ QT_BEGIN_NAMESPACE
2352+
2353+@@ -66,7 +65,6 @@
2354+ qmlRegisterType<QDeclarativeDeviceInfo>(uri, major, minor, "DeviceInfo");
2355+ qmlRegisterType<QDeclarativeNetworkInfo>(uri, major, minor, "NetworkInfo");
2356+ qmlRegisterType<QScreenSaver>(uri, major, minor, "ScreenSaver");
2357+- qmlRegisterType<QDeclarativeStorageInfo>(uri, major, minor, "StorageInfo");
2358+ }
2359+ };
2360+
2361+
2362+=== modified file 'src/imports/systeminfo/systeminfo.pro'
2363+--- old/src/imports/systeminfo/systeminfo.pro 2013-07-12 13:41:02 +0000
2364++++ new/src/imports/systeminfo/systeminfo.pro 2015-02-03 15:08:59 +0000
2365+@@ -4,14 +4,12 @@
2366+ HEADERS += \
2367+ qdeclarativebatteryinfo_p.h \
2368+ qdeclarativedeviceinfo_p.h \
2369+- qdeclarativenetworkinfo_p.h \
2370+- qdeclarativestorageinfo_p.h
2371++ qdeclarativenetworkinfo_p.h
2372+
2373+ SOURCES += \
2374+ qdeclarativebatteryinfo.cpp \
2375+ qdeclarativedeviceinfo.cpp \
2376+ qdeclarativenetworkinfo.cpp \
2377+- qdeclarativestorageinfo.cpp \
2378+ qsysteminfo.cpp
2379+
2380+ load(qml_plugin)
2381+
2382+=== removed file 'src/systeminfo/linux/qstorageinfo_linux.cpp'
2383+--- old/src/systeminfo/linux/qstorageinfo_linux.cpp 2013-06-14 10:32:13 +0000
2384++++ new/src/systeminfo/linux/qstorageinfo_linux.cpp 1970-01-01 00:00:00 +0000
2385+@@ -1,410 +0,0 @@
2386+-/****************************************************************************
2387+-**
2388+-** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
2389+-** Contact: http://www.qt-project.org/legal
2390+-**
2391+-** This file is part of the QtSystems module of the Qt Toolkit.
2392+-**
2393+-** $QT_BEGIN_LICENSE:LGPL$
2394+-** Commercial License Usage
2395+-** Licensees holding valid commercial Qt licenses may use this file in
2396+-** accordance with the commercial license agreement provided with the
2397+-** Software or, alternatively, in accordance with the terms contained in
2398+-** a written agreement between you and Digia. For licensing terms and
2399+-** conditions see http://qt.digia.com/licensing. For further information
2400+-** use the contact form at http://qt.digia.com/contact-us.
2401+-**
2402+-** GNU Lesser General Public License Usage
2403+-** Alternatively, this file may be used under the terms of the GNU Lesser
2404+-** General Public License version 2.1 as published by the Free Software
2405+-** Foundation and appearing in the file LICENSE.LGPL included in the
2406+-** packaging of this file. Please review the following information to
2407+-** ensure the GNU Lesser General Public License version 2.1 requirements
2408+-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
2409+-**
2410+-** In addition, as a special exception, Digia gives you certain additional
2411+-** rights. These rights are described in the Digia Qt LGPL Exception
2412+-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
2413+-**
2414+-** GNU General Public License Usage
2415+-** Alternatively, this file may be used under the terms of the GNU
2416+-** General Public License version 3.0 as published by the Free Software
2417+-** Foundation and appearing in the file LICENSE.GPL included in the
2418+-** packaging of this file. Please review the following information to
2419+-** ensure the GNU General Public License version 3.0 requirements will be
2420+-** met: http://www.gnu.org/copyleft/gpl.html.
2421+-**
2422+-**
2423+-** $QT_END_LICENSE$
2424+-**
2425+-****************************************************************************/
2426+-
2427+-#include "qstorageinfo_linux_p.h"
2428+-
2429+-#include <QtCore/qfile.h>
2430+-#include <QtCore/qdir.h>
2431+-#include <QtCore/qmetaobject.h>
2432+-#include <QtCore/qsocketnotifier.h>
2433+-
2434+-#include <errno.h>
2435+-#include <mntent.h>
2436+-#include <fcntl.h>
2437+-#include <linux/fs.h>
2438+-#include <sys/inotify.h>
2439+-#include <sys/ioctl.h>
2440+-#include <sys/stat.h>
2441+-#include <sys/statfs.h>
2442+-#include <unistd.h>
2443+-
2444+-#if !defined(QT_NO_UDEV)
2445+-#include "qudevwrapper_p.h"
2446+-#endif // QT_NO_UDEV
2447+-
2448+-#if !defined(QT_NO_UDISKS)
2449+-#include <QtDBus/qdbusconnection.h>
2450+-#include <QtDBus/qdbusinterface.h>
2451+-#include <QtDBus/qdbusreply.h>
2452+-#endif // QT_NO_UDISKS
2453+-
2454+-QT_BEGIN_NAMESPACE
2455+-
2456+-QStorageInfoPrivate::QStorageInfoPrivate(QStorageInfo *parent)
2457+- : QObject(parent)
2458+- , q_ptr(parent)
2459+- , inotifyWatcher(-1)
2460+- , inotifyFileDescriptor(-1)
2461+- , notifier(0)
2462+-#if !defined(QT_NO_UDEV)
2463+- , udevWrapper(0)
2464+- , needsUDevWatcher(-1)
2465+-#endif // QT_NO_UDEV
2466+-{
2467+-}
2468+-
2469+-QStorageInfoPrivate::~QStorageInfoPrivate()
2470+-{
2471+- cleanupWatcher();
2472+-}
2473+-
2474+-qlonglong QStorageInfoPrivate::availableDiskSpace(const QString &drive)
2475+-{
2476+- struct statfs statistics;
2477+- if (statfs(drive.toLatin1(), &statistics) == 0) {
2478+- qlonglong blockSize = statistics.f_bsize;
2479+- qlonglong availBlocks = statistics.f_bavail;
2480+- return availBlocks * blockSize;
2481+- }
2482+-
2483+- return -1;
2484+-}
2485+-
2486+-qlonglong QStorageInfoPrivate::totalDiskSpace(const QString &drive)
2487+-{
2488+- struct statfs statistics;
2489+- if (statfs(drive.toLatin1(), &statistics) == 0) {
2490+- qlonglong blockSize = statistics.f_bsize;
2491+- qlonglong totalBlocks = statistics.f_blocks;
2492+- return totalBlocks * blockSize;
2493+- }
2494+-
2495+- return -1;
2496+-}
2497+-
2498+-QString QStorageInfoPrivate::uriForDrive(const QString &drive)
2499+-{
2500+- QFileInfoList fileinfolist = QDir(QString(QStringLiteral("/dev/disk/by-uuid/"))).entryInfoList(QDir::AllEntries | QDir::NoDot | QDir::NoDotDot);
2501+- if (!fileinfolist.isEmpty()) {
2502+- FILE *fsDescription = setmntent(_PATH_MOUNTED, "r");
2503+- struct mntent entry;
2504+- char buffer[512];
2505+- QString uri;
2506+- while ((getmntent_r(fsDescription, &entry, buffer, sizeof(buffer))) != NULL) {
2507+- if (drive != QString::fromLatin1(entry.mnt_dir))
2508+- continue;
2509+- int idx = fileinfolist.indexOf(QString::fromLatin1(entry.mnt_fsname));
2510+- if (idx != -1)
2511+- uri = fileinfolist[idx].fileName();
2512+- break;
2513+- }
2514+- endmntent(fsDescription);
2515+-
2516+- if (!uri.isEmpty())
2517+- return uri;
2518+- }
2519+-
2520+-#if !defined(QT_NO_UDISKS)
2521+- QDBusReply<QList<QDBusObjectPath> > reply = QDBusConnection::systemBus().call(
2522+- QDBusMessage::createMethodCall(QString(QStringLiteral("org.freedesktop.UDisks")),
2523+- QString(QStringLiteral("/org/freedesktop/UDisks")),
2524+- QString(QStringLiteral("org.freedesktop.UDisks")),
2525+- QString(QStringLiteral("EnumerateDevices"))));
2526+- if (reply.isValid()) {
2527+- QList<QDBusObjectPath> paths = reply.value();
2528+- foreach (const QDBusObjectPath &path, paths) {
2529+- QDBusInterface interface(QString(QStringLiteral("org.freedesktop.UDisks")), path.path(),
2530+- QString(QStringLiteral("org.freedesktop.DBus.Properties")),
2531+- QDBusConnection::systemBus());
2532+- if (!interface.isValid())
2533+- continue;
2534+- QDBusReply<QVariant> reply = interface.call(QString(QStringLiteral("Get")),
2535+- QString(QStringLiteral("org.freedesktop.UDisks.Device")),
2536+- QString(QStringLiteral("DeviceMountPaths")));
2537+- if (reply.isValid() && reply.value().toString() == drive) {
2538+- reply = interface.call(QString(QStringLiteral("Get")),
2539+- QString(QStringLiteral("org.freedesktop.UDisks.Device")),
2540+- QString(QStringLiteral("IdUuid")));
2541+- if (reply.isValid())
2542+- return reply.value().toString();
2543+- }
2544+- }
2545+- }
2546+-#endif // QT_NO_UDISKS
2547+-
2548+- return QString::null;
2549+-}
2550+-
2551+-QStringList QStorageInfoPrivate::allLogicalDrives()
2552+-{
2553+- // No need to update the list if someone is listening to the signal, as it will be updated in that case
2554+-#if !defined(QT_NO_UDEV)
2555+- if (inotifyWatcher == -1 && needsUDevWatcher != 2)
2556+-#else
2557+- if (inotifyWatcher == -1)
2558+-#endif // QT_NO_UDEV
2559+- updateLogicalDrives();
2560+-
2561+- return logicalDrives;
2562+-}
2563+-
2564+-QStorageInfo::DriveType QStorageInfoPrivate::driveType(const QString &drive)
2565+-{
2566+- QStorageInfo::DriveType type = QStorageInfo::UnknownDrive;
2567+- FILE *fsDescription = setmntent(_PATH_MOUNTED, "r");
2568+- struct mntent entry;
2569+- char buffer[512];
2570+- while ((getmntent_r(fsDescription, &entry, buffer, sizeof(buffer))) != NULL) {
2571+- if (drive != QString::fromLatin1(entry.mnt_dir))
2572+- continue;
2573+-
2574+- if (strcmp(entry.mnt_type, "binfmt_misc") == 0
2575+- || strcmp(entry.mnt_type, "debugfs") == 0
2576+- || strcmp(entry.mnt_type, "devpts") == 0
2577+- || strcmp(entry.mnt_type, "devtmpfs") == 0
2578+- || strcmp(entry.mnt_type, "fusectl") == 0
2579+- || strcmp(entry.mnt_type, "none") == 0
2580+- || strcmp(entry.mnt_type, "proc") == 0
2581+- || strcmp(entry.mnt_type, "ramfs") == 0
2582+- || strcmp(entry.mnt_type, "securityfs") == 0
2583+- || strcmp(entry.mnt_type, "sysfs") == 0
2584+- || strcmp(entry.mnt_type, "tmpfs") == 0) {
2585+- type = QStorageInfo::RamDrive;
2586+- break;
2587+- }
2588+-
2589+- if (strcmp(entry.mnt_type, "cifs") == 0
2590+- || strcmp(entry.mnt_type, "ncpfs") == 0
2591+- || strcmp(entry.mnt_type, "nfs") == 0
2592+- || strcmp(entry.mnt_type, "nfs4") == 0
2593+- || strcmp(entry.mnt_type, "smbfs") == 0) {
2594+- type = QStorageInfo::RemoteDrive;
2595+- break;
2596+- }
2597+-
2598+- if (strcmp(entry.mnt_type, "iso9660") == 0) {
2599+- type = QStorageInfo::CdromDrive;
2600+- break;
2601+- }
2602+-
2603+- if (strcmp(entry.mnt_type, "rootfs") == 0) {
2604+- type = QStorageInfo::InternalDrive;
2605+- break;
2606+- }
2607+-
2608+- // Now need to guess if it's InternalDrive or RemovableDrive
2609+- QString fsName(QString::fromLatin1(entry.mnt_fsname));
2610+- if (fsName.contains(QString(QStringLiteral("mapper")))) {
2611+- struct stat status;
2612+- stat(entry.mnt_fsname, &status);
2613+- fsName = QString(QStringLiteral("/sys/block/dm-%1/removable")).arg(status.st_rdev & 0377);
2614+- } else {
2615+- #if defined(QT_SIMULATOR)
2616+- if (fsName.startsWith(QStringLiteral("/dev/loop")))
2617+- return QStorageInfo::RemovableDrive;
2618+-#endif
2619+- fsName = fsName.section(QString(QStringLiteral("/")), 2, 3);
2620+- if (!fsName.isEmpty()) {
2621+- if (fsName.length() > 3) {
2622+- // only take the parent of the device
2623+- if (fsName.at(fsName.size() -1).isDigit() && fsName.at(fsName.size() - 2) == QChar(QLatin1Char('p')))
2624+- fsName.chop(2);
2625+- if (fsName.startsWith(QString(QStringLiteral("mmc")))) {
2626+- // "removable" attribute is set only for removable media, and we may have internal mmc cards
2627+- fsName = QString(QStringLiteral("/sys/block/")) + fsName + QString(QStringLiteral("/device/uevent"));
2628+- QFile file(fsName);
2629+- if (file.open(QIODevice::ReadOnly)) {
2630+- QByteArray buf = file.readLine();
2631+- while (buf.size() > 0) {
2632+- if (qstrncmp(buf.constData(), "MMC_TYPE=", 9) == 0) {
2633+- if (qstrncmp(buf.constData() + 9, "MMC", 3) == 0)
2634+- type = QStorageInfo::InternalDrive;
2635+- else if (qstrncmp(buf.constData() + 9, "SD", 2) == 0)
2636+- type = QStorageInfo::RemovableDrive;
2637+- if (type != QStorageInfo::UnknownDrive) {
2638+- endmntent(fsDescription);
2639+- return type;
2640+- }
2641+- break; // fall back to check the "removable" attribute
2642+- }
2643+- buf = file.readLine();
2644+- }
2645+- }
2646+- }
2647+- }
2648+- fsName = QString(QStringLiteral("/sys/block/")) + fsName + QString(QStringLiteral("/removable"));
2649+- }
2650+- }
2651+- QFile removable(fsName);
2652+- char isRemovable;
2653+- if (!removable.open(QIODevice::ReadOnly) || 1 != removable.read(&isRemovable, 1))
2654+- break;
2655+- if (isRemovable == '0')
2656+- type = QStorageInfo::InternalDrive;
2657+- else
2658+- type = QStorageInfo::RemovableDrive;
2659+- break;
2660+- }
2661+-
2662+- endmntent(fsDescription);
2663+- return type;
2664+-}
2665+-
2666+-void QStorageInfoPrivate::connectNotify(const QMetaMethod &signal)
2667+-{
2668+- static const QMetaMethod logicalDriveChangedSignal = QMetaMethod::fromSignal(&QStorageInfoPrivate::logicalDriveChanged);
2669+- if (signal == logicalDriveChangedSignal)
2670+- setupWatcher();
2671+-}
2672+-
2673+-void QStorageInfoPrivate::disconnectNotify(const QMetaMethod &signal)
2674+-{
2675+- static const QMetaMethod logicalDriveChangedSignal = QMetaMethod::fromSignal(&QStorageInfoPrivate::logicalDriveChanged);
2676+- if (signal == logicalDriveChangedSignal)
2677+- cleanupWatcher();
2678+-}
2679+-
2680+-void QStorageInfoPrivate::cleanupWatcher()
2681+-{
2682+-#if !defined(QT_NO_UDEV)
2683+- if (needsUDevWatcher == 2) {
2684+- needsUDevWatcher = 1;
2685+- if (udevWrapper)
2686+- disconnect(udevWrapper, SIGNAL(driveChanged()), this, SLOT(onDriveChanged()));
2687+- return;
2688+- }
2689+-#endif // QT_NO_UDEV
2690+-
2691+- if (notifier) {
2692+- delete notifier;
2693+- notifier = 0;
2694+- }
2695+-
2696+- if (inotifyWatcher != -1) {
2697+- inotify_rm_watch(inotifyFileDescriptor, inotifyWatcher);
2698+- inotifyWatcher = -1;
2699+- }
2700+-
2701+- if (inotifyFileDescriptor != -1) {
2702+- close(inotifyFileDescriptor);
2703+- inotifyFileDescriptor = -1;
2704+- }
2705+-}
2706+-
2707+-void QStorageInfoPrivate::setupWatcher()
2708+-{
2709+- updateLogicalDrives();
2710+-
2711+-#if !defined(QT_NO_UDEV)
2712+- if (needsUDevWatcher == -1)
2713+- needsUDevWatcher = QFileInfo(QStringLiteral("/etc/mtab")).isSymLink();
2714+-
2715+- if (needsUDevWatcher == 1) {
2716+- if (!udevWrapper)
2717+- udevWrapper = new QUDevWrapper(this);
2718+- connect(udevWrapper, SIGNAL(driveChanged()), this, SLOT(onDriveChanged()));
2719+- needsUDevWatcher = 2;
2720+- return;
2721+- }
2722+-#endif // QT_NO_UDEV
2723+-
2724+- if (inotifyFileDescriptor == -1
2725+- && (inotifyFileDescriptor = inotify_init()) == -1) {
2726+- return;
2727+- }
2728+-
2729+- if (inotifyWatcher == -1
2730+- && (inotifyWatcher = inotify_add_watch(inotifyFileDescriptor, _PATH_MOUNTED, IN_MODIFY)) == -1) {
2731+- close(inotifyFileDescriptor);
2732+- return;
2733+- }
2734+-
2735+- if (notifier == 0) {
2736+- notifier = new QSocketNotifier(inotifyFileDescriptor, QSocketNotifier::Read);
2737+- connect(notifier, SIGNAL(activated(int)), this, SLOT(onInotifyActivated()));
2738+- }
2739+-}
2740+-
2741+-void QStorageInfoPrivate::updateLogicalDrives()
2742+-{
2743+- FILE *fsDescription = setmntent(_PATH_MOUNTED, "r");
2744+- struct mntent entry;
2745+- char buffer[512];
2746+-
2747+- logicalDrives.clear();
2748+- while (getmntent_r(fsDescription, &entry, buffer, sizeof(buffer)) != NULL)
2749+- logicalDrives << QString::fromLatin1(entry.mnt_dir);
2750+- endmntent(fsDescription);
2751+-}
2752+-
2753+-void QStorageInfoPrivate::onInotifyActivated()
2754+-{
2755+- inotify_event event;
2756+- if (read(inotifyFileDescriptor, (void *)&event, sizeof(event)) > 0
2757+- && event.wd == inotifyWatcher) {
2758+- // Have to do this, otherwise I can't get further notification
2759+- inotify_rm_watch(inotifyFileDescriptor, inotifyWatcher);
2760+- inotifyWatcher = inotify_add_watch(inotifyFileDescriptor, _PATH_MOUNTED, IN_MODIFY);
2761+-
2762+- QStringList oldLogicalDrives = logicalDrives;
2763+- updateLogicalDrives();
2764+-
2765+- foreach (const QString &drive, oldLogicalDrives) {
2766+- if (!logicalDrives.contains(drive))
2767+- emit logicalDriveChanged(drive, false);
2768+- }
2769+-
2770+- foreach (const QString &drive, logicalDrives) {
2771+- if (!oldLogicalDrives.contains(drive))
2772+- emit logicalDriveChanged(drive, true);
2773+- }
2774+- }
2775+-}
2776+-
2777+-#if !defined(QT_NO_UDEV)
2778+-void QStorageInfoPrivate::onDriveChanged()
2779+-{
2780+- QStringList oldLogicalDrives = logicalDrives;
2781+- updateLogicalDrives();
2782+-
2783+- foreach (const QString &drive, oldLogicalDrives) {
2784+- if (!logicalDrives.contains(drive))
2785+- emit logicalDriveChanged(drive, false);
2786+- }
2787+-
2788+- foreach (const QString &drive, logicalDrives) {
2789+- if (!oldLogicalDrives.contains(drive))
2790+- emit logicalDriveChanged(drive, true);
2791+- }
2792+-}
2793+-#endif // QT_NO_UDEV
2794+-
2795+-QT_END_NAMESPACE
2796+
2797+=== removed file 'src/systeminfo/linux/qstorageinfo_linux_p.h'
2798+--- old/src/systeminfo/linux/qstorageinfo_linux_p.h 2013-06-14 10:32:13 +0000
2799++++ new/src/systeminfo/linux/qstorageinfo_linux_p.h 1970-01-01 00:00:00 +0000
2800+@@ -1,115 +0,0 @@
2801+-/****************************************************************************
2802+-**
2803+-** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
2804+-** Contact: http://www.qt-project.org/legal
2805+-**
2806+-** This file is part of the QtSystems module of the Qt Toolkit.
2807+-**
2808+-** $QT_BEGIN_LICENSE:LGPL$
2809+-** Commercial License Usage
2810+-** Licensees holding valid commercial Qt licenses may use this file in
2811+-** accordance with the commercial license agreement provided with the
2812+-** Software or, alternatively, in accordance with the terms contained in
2813+-** a written agreement between you and Digia. For licensing terms and
2814+-** conditions see http://qt.digia.com/licensing. For further information
2815+-** use the contact form at http://qt.digia.com/contact-us.
2816+-**
2817+-** GNU Lesser General Public License Usage
2818+-** Alternatively, this file may be used under the terms of the GNU Lesser
2819+-** General Public License version 2.1 as published by the Free Software
2820+-** Foundation and appearing in the file LICENSE.LGPL included in the
2821+-** packaging of this file. Please review the following information to
2822+-** ensure the GNU Lesser General Public License version 2.1 requirements
2823+-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
2824+-**
2825+-** In addition, as a special exception, Digia gives you certain additional
2826+-** rights. These rights are described in the Digia Qt LGPL Exception
2827+-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
2828+-**
2829+-** GNU General Public License Usage
2830+-** Alternatively, this file may be used under the terms of the GNU
2831+-** General Public License version 3.0 as published by the Free Software
2832+-** Foundation and appearing in the file LICENSE.GPL included in the
2833+-** packaging of this file. Please review the following information to
2834+-** ensure the GNU General Public License version 3.0 requirements will be
2835+-** met: http://www.gnu.org/copyleft/gpl.html.
2836+-**
2837+-**
2838+-** $QT_END_LICENSE$
2839+-**
2840+-****************************************************************************/
2841+-
2842+-//
2843+-// W A R N I N G
2844+-// -------------
2845+-//
2846+-// This file is not part of the Qt API. It exists purely as an
2847+-// implementation detail. This header file may change from version to
2848+-// version without notice, or even be removed.
2849+-//
2850+-// We mean it.
2851+-//
2852+-
2853+-#ifndef QSTORAGEINFO_LINUX_P_H
2854+-#define QSTORAGEINFO_LINUX_P_H
2855+-
2856+-#include <qstorageinfo.h>
2857+-
2858+-QT_BEGIN_NAMESPACE
2859+-
2860+-#if !defined(QT_NO_UDEV)
2861+-class QUDevWrapper;
2862+-#endif // QT_NO_UDEV
2863+-
2864+-class QSocketNotifier;
2865+-
2866+-class QStorageInfoPrivate : public QObject
2867+-{
2868+- Q_OBJECT
2869+-
2870+-public:
2871+- QStorageInfoPrivate(QStorageInfo *parent);
2872+- ~QStorageInfoPrivate();
2873+-
2874+- qlonglong availableDiskSpace(const QString &drive);
2875+- qlonglong totalDiskSpace(const QString &drive);
2876+- QString uriForDrive(const QString &drive);
2877+- QStringList allLogicalDrives();
2878+- QStorageInfo::DriveType driveType(const QString &drive);
2879+-
2880+-Q_SIGNALS:
2881+- void logicalDriveChanged(const QString &drive, bool added);
2882+-
2883+-protected:
2884+- void connectNotify(const QMetaMethod &signal);
2885+- void disconnectNotify(const QMetaMethod &signal);
2886+-
2887+-private:
2888+- QStorageInfo * const q_ptr;
2889+- Q_DECLARE_PUBLIC(QStorageInfo)
2890+-
2891+- int inotifyWatcher;
2892+- int inotifyFileDescriptor;
2893+- QSocketNotifier *notifier;
2894+- QStringList logicalDrives;
2895+-#if !defined(QT_NO_UDEV)
2896+- QUDevWrapper *udevWrapper;
2897+- int needsUDevWatcher; // -1: unknown; 0: no need;
2898+- // 1: needed, but not currently watching;
2899+- // 2: needed and currently watching
2900+-#endif // QT_NO_UDEV
2901+-
2902+- void cleanupWatcher();
2903+- void setupWatcher();
2904+- void updateLogicalDrives();
2905+-
2906+-private Q_SLOTS:
2907+- void onInotifyActivated();
2908+-#if !defined(QT_NO_UDEV)
2909+- void onDriveChanged();
2910+-#endif // QT_NO_UDEV
2911+-};
2912+-
2913+-QT_END_NAMESPACE
2914+-
2915+-#endif // QSTORAGEINFO_LINUX_P_H
2916+
2917+=== removed file 'src/systeminfo/mac/qstorageinfo_mac.mm'
2918+--- old/src/systeminfo/mac/qstorageinfo_mac.mm 2013-06-14 10:32:13 +0000
2919++++ new/src/systeminfo/mac/qstorageinfo_mac.mm 1970-01-01 00:00:00 +0000
2920+@@ -1,423 +0,0 @@
2921+-/****************************************************************************
2922+-**
2923+-** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
2924+-** Contact: http://www.qt-project.org/legal
2925+-**
2926+-** This file is part of the QtSystems module of the Qt Toolkit.
2927+-**
2928+-** $QT_BEGIN_LICENSE:LGPL$
2929+-** Commercial License Usage
2930+-** Licensees holding valid commercial Qt licenses may use this file in
2931+-** accordance with the commercial license agreement provided with the
2932+-** Software or, alternatively, in accordance with the terms contained in
2933+-** a written agreement between you and Digia. For licensing terms and
2934+-** conditions see http://qt.digia.com/licensing. For further information
2935+-** use the contact form at http://qt.digia.com/contact-us.
2936+-**
2937+-** GNU Lesser General Public License Usage
2938+-** Alternatively, this file may be used under the terms of the GNU Lesser
2939+-** General Public License version 2.1 as published by the Free Software
2940+-** Foundation and appearing in the file LICENSE.LGPL included in the
2941+-** packaging of this file. Please review the following information to
2942+-** ensure the GNU Lesser General Public License version 2.1 requirements
2943+-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
2944+-**
2945+-** In addition, as a special exception, Digia gives you certain additional
2946+-** rights. These rights are described in the Digia Qt LGPL Exception
2947+-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
2948+-**
2949+-** GNU General Public License Usage
2950+-** Alternatively, this file may be used under the terms of the GNU
2951+-** General Public License version 3.0 as published by the Free Software
2952+-** Foundation and appearing in the file LICENSE.GPL included in the
2953+-** packaging of this file. Please review the following information to
2954+-** ensure the GNU General Public License version 3.0 requirements will be
2955+-** met: http://www.gnu.org/copyleft/gpl.html.
2956+-**
2957+-**
2958+-** $QT_END_LICENSE$
2959+-**
2960+-****************************************************************************/
2961+-
2962+-#include "qstorageinfo_mac_p.h"
2963+-
2964+-#include <QtCore/private/qcore_mac_p.h>
2965+-#include <QtCore/qmetaobject.h>
2966+-#include <QDebug>
2967+-
2968+-#include <CoreFoundation/CoreFoundation.h>
2969+-#include <DiskArbitration/DiskArbitration.h>
2970+-#include <ApplicationServices/ApplicationServices.h>
2971+-#include <DiskArbitration/DASession.h>
2972+-#include <IOKit/storage/IOMedia.h>
2973+-#include <IOKit/storage/IOCDMedia.h>
2974+-#include <IOKit/storage/IODVDMedia.h>
2975+-#include <IOKit/storage/IOBlockStorageDevice.h>
2976+-#include <Foundation/NSDictionary.h>
2977+-#include <CoreFoundation/CFUUID.h>
2978+-
2979+-#include <sys/mount.h>
2980+-
2981+-DAApprovalSessionRef session = NULL;
2982+-
2983+-void mountCallback(DADiskRef disk, CFArrayRef /*keys*/, void *context)
2984+-{
2985+- NSDictionary *batDoctionary;
2986+- batDoctionary = (NSDictionary *)DADiskCopyDescription(disk);
2987+- NSURL *volumePath = [[batDoctionary objectForKey:(NSString *)kDADiskDescriptionVolumePathKey] copy];
2988+-
2989+- QString name = QCFString::toQString([volumePath path]);
2990+-
2991+- static_cast<QStorageInfoPrivate*>(context)->storageChanged(true, name);
2992+-}
2993+-
2994+-void mountCallback2(DADiskRef diskRef, void *context)
2995+-{
2996+- DADiskRef wholeDisk;
2997+- wholeDisk = DADiskCopyWholeDisk(diskRef);
2998+-// only deal with whole disks here.. i.e. cdroms
2999+- if (wholeDisk) {
3000+- io_service_t mediaService;
3001+-
3002+- mediaService = DADiskCopyIOMedia(wholeDisk);
3003+- if (mediaService) {
3004+- if (IOObjectConformsTo(mediaService, kIOCDMediaClass) || IOObjectConformsTo(mediaService, kIODVDMediaClass)) {
3005+-
3006+- NSDictionary *batDoctionary;
3007+- batDoctionary = (NSDictionary *)DADiskCopyDescription(diskRef);
3008+- NSURL *volumePath = [[batDoctionary objectForKey:(NSString *)kDADiskDescriptionVolumePathKey] copy];
3009+-
3010+- QString name = QCFString::toQString([volumePath path]);
3011+-
3012+- static_cast<QStorageInfoPrivate*>(context)->storageChanged(true, name);
3013+- CFRelease(batDoctionary);
3014+- }
3015+- }
3016+- IOObjectRelease(mediaService);
3017+- CFRelease(wholeDisk);
3018+- }
3019+-}
3020+-
3021+-void unmountCallback(DADiskRef disk, void *context)
3022+-{
3023+- NSDictionary *batDoctionary;
3024+- batDoctionary = (NSDictionary *)DADiskCopyDescription(disk);
3025+- NSURL *volumePath = [[batDoctionary objectForKey:(NSString *)kDADiskDescriptionVolumePathKey] copy];
3026+-
3027+- QString name = QCFString::toQString([volumePath path]);
3028+-
3029+- static_cast<QStorageInfoPrivate*>(context)->storageChanged(false,name);
3030+-}
3031+-
3032+-
3033+-
3034+-QT_BEGIN_NAMESPACE
3035+-
3036+-QDASessionThread::QDASessionThread(QObject *parent)
3037+- :QObject(parent), session(NULL)
3038+-{
3039+- moveToThread(&t);
3040+- t.start();
3041+- if (session == NULL)
3042+- session = DASessionCreate(kCFAllocatorDefault);
3043+-}
3044+-
3045+-QDASessionThread::~QDASessionThread()
3046+-{
3047+-}
3048+-
3049+-void QDASessionThread::stop()
3050+-{
3051+- QMutexLocker locker(&mutex);
3052+- CFRunLoopStop(CFRunLoopGetCurrent());
3053+- keepRunning = false;
3054+- t.quit();
3055+- t.wait();
3056+-}
3057+-
3058+-void QDASessionThread::doWork()
3059+-{
3060+-#ifndef MAC_SDK_10_5
3061+- if (QThread::currentThread() != &t) {
3062+- QMetaObject::invokeMethod(this, "doWork",
3063+- Qt::QueuedConnection);
3064+- } else {
3065+-
3066+- mutex.lock();
3067+- keepRunning = true;
3068+- mutex.unlock();
3069+- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
3070+-
3071+- DASessionScheduleWithRunLoop(session,CFRunLoopGetCurrent(),kCFRunLoopDefaultMode);
3072+-
3073+- SInt32 result;
3074+- while (keepRunning &&
3075+- (result = CFRunLoopRunInMode(kCFRunLoopDefaultMode ,1, YES))) {
3076+- }
3077+-
3078+- DASessionUnscheduleFromRunLoop(session, CFRunLoopGetCurrent(),kCFRunLoopDefaultMode);
3079+- [pool release];
3080+- }
3081+-#endif
3082+-}
3083+-
3084+-QStorageInfoPrivate::QStorageInfoPrivate(QStorageInfo *parent)
3085+- : QObject(parent)
3086+- , q_ptr(parent), daSessionThread(0),sessionThreadStarted(0)
3087+-{
3088+- updateVolumesMap();
3089+-}
3090+-
3091+-QStorageInfoPrivate::~QStorageInfoPrivate()
3092+-{
3093+- if (sessionThreadStarted) {
3094+- daSessionThread->stop();
3095+- delete daSessionThread;
3096+- }
3097+-}
3098+-
3099+-qlonglong QStorageInfoPrivate::availableDiskSpace(const QString &driveVolume)
3100+-{
3101+- qint64 totalFreeBytes=0;
3102+- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
3103+- NSDictionary *attr = [ [NSFileManager defaultManager] attributesOfFileSystemForPath:QCFString::toNSString(driveVolume) error:nil];
3104+- totalFreeBytes = [[attr objectForKey:NSFileSystemFreeSize] doubleValue];
3105+- [pool release];
3106+-
3107+- return totalFreeBytes;
3108+-}
3109+-
3110+-qlonglong QStorageInfoPrivate::totalDiskSpace(const QString &driveVolume)
3111+-{
3112+- qint64 totalBytes=0;
3113+- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
3114+- NSString *vol = QCFString::toNSString(driveVolume);
3115+- NSDictionary *attr = [ [NSFileManager defaultManager] attributesOfFileSystemForPath:vol error:nil];
3116+- totalBytes = [[attr objectForKey:NSFileSystemSize] doubleValue];
3117+- [pool release];
3118+-
3119+- return totalBytes;
3120+-}
3121+-QString QStorageInfoPrivate::uriForDrive(const QString &driveVolume)
3122+-{
3123+- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
3124+- DADiskRef diskRef;
3125+- DASessionRef sessionRef;
3126+- CFDictionaryRef descriptionDictionary;
3127+-
3128+- sessionRef = DASessionCreate(NULL);
3129+- if (sessionRef == NULL) {
3130+- return QString();
3131+- }
3132+-
3133+- diskRef = DADiskCreateFromBSDName(NULL, sessionRef, mountEntriesMap.key(driveVolume).toLatin1());
3134+- if (diskRef == NULL) {
3135+- CFRelease(sessionRef);
3136+- return QString();
3137+- }
3138+-
3139+- descriptionDictionary = DADiskCopyDescription(diskRef);
3140+- if (descriptionDictionary == NULL) {
3141+- CFRelease(diskRef);
3142+- CFRelease(sessionRef);
3143+- return QString();
3144+- }
3145+-
3146+- CFUUIDRef uuid;
3147+- uuid = (const __CFUUID *)CFDictionaryGetValue(descriptionDictionary, kDADiskDescriptionVolumeUUIDKey);
3148+-
3149+- CFRelease(diskRef);
3150+- CFRelease(sessionRef);
3151+- QString uri = QCFString::toQString(CFUUIDCreateString(kCFAllocatorDefault, uuid));
3152+- [pool release];
3153+-
3154+- return uri;
3155+-}
3156+-
3157+-QStringList QStorageInfoPrivate::allLogicalDrives()
3158+-{
3159+- updateVolumesMap();
3160+- QStringList drivesList;
3161+- QMapIterator<QString, QString> it(mountEntriesMap);
3162+- while (it.hasNext()) {
3163+- it.next();
3164+- drivesList << it.value();
3165+- }
3166+- drivesList.sort();
3167+- return drivesList;
3168+-}
3169+-
3170+-QStorageInfo::DriveType QStorageInfoPrivate::driveType(const QString &driveVolume)
3171+-{
3172+- QStorageInfo::DriveType drivetype = QStorageInfo::UnknownDrive;
3173+-
3174+- DADiskRef diskRef;
3175+- DASessionRef sessionRef;
3176+- CFBooleanRef boolRef;
3177+- CFBooleanRef boolRef2;
3178+- CFDictionaryRef descriptionDictionary;
3179+-
3180+- sessionRef = DASessionCreate(NULL);
3181+- if (sessionRef == NULL) {
3182+- return QStorageInfo::UnknownDrive;
3183+- }
3184+-
3185+- diskRef = DADiskCreateFromBSDName(NULL, sessionRef, mountEntriesMap.key(driveVolume).toLatin1());
3186+- if (diskRef == NULL) {
3187+- CFRelease(sessionRef);
3188+- return QStorageInfo::UnknownDrive;
3189+- }
3190+-
3191+- descriptionDictionary = DADiskCopyDescription(diskRef);
3192+- if (descriptionDictionary == NULL) {
3193+- CFRelease(diskRef);
3194+- CFRelease(sessionRef);
3195+- return QStorageInfo::RemoteDrive;
3196+- }
3197+-
3198+- boolRef = (CFBooleanRef)
3199+- CFDictionaryGetValue(descriptionDictionary, kDADiskDescriptionMediaRemovableKey);
3200+- if (boolRef) {
3201+- if (CFBooleanGetValue(boolRef)) {
3202+- drivetype = QStorageInfo::RemovableDrive;
3203+- } else {
3204+- drivetype = QStorageInfo::InternalDrive;
3205+- }
3206+- }
3207+- boolRef2 = (CFBooleanRef)
3208+- CFDictionaryGetValue(descriptionDictionary, kDADiskDescriptionVolumeNetworkKey);
3209+- if (boolRef2) {
3210+- if (CFBooleanGetValue(boolRef2)) {
3211+- drivetype = QStorageInfo::RemoteDrive;
3212+- }
3213+- }
3214+-
3215+- DADiskRef wholeDisk;
3216+- wholeDisk = DADiskCopyWholeDisk(diskRef);
3217+-
3218+- if (wholeDisk) {
3219+- io_service_t mediaService;
3220+-
3221+- mediaService = DADiskCopyIOMedia(wholeDisk);
3222+- if (mediaService) {
3223+- if (IOObjectConformsTo(mediaService, kIOCDMediaClass)) {
3224+- drivetype = QStorageInfo::CdromDrive;
3225+- }
3226+- if (IOObjectConformsTo(mediaService, kIODVDMediaClass)) {
3227+- drivetype = QStorageInfo::CdromDrive;
3228+- }
3229+- IOObjectRelease(mediaService);
3230+- }
3231+- CFRelease(wholeDisk);
3232+- }
3233+- CFRelease(diskRef);
3234+- CFRelease(descriptionDictionary);
3235+- CFRelease(boolRef);
3236+- CFRelease(boolRef2);
3237+- CFRelease(sessionRef);
3238+-
3239+- return drivetype;
3240+-}
3241+-
3242+-void QStorageInfoPrivate::connectNotify(const QMetaMethod &signal)
3243+-{
3244+- static const QMetaMethod logicalDriveChangedSignal = QMetaMethod::fromSignal(&QStorageInfoPrivate::logicalDriveChanged);
3245+- if (signal == logicalDriveChangedSignal) {
3246+- ///
3247+- sessionThread();
3248+-
3249+- DARegisterDiskDescriptionChangedCallback(daSessionThread->session,kDADiskDescriptionMatchVolumeMountable,
3250+- kDADiskDescriptionWatchVolumePath, mountCallback,this);
3251+- DARegisterDiskAppearedCallback(daSessionThread->session,kDADiskDescriptionMatchVolumeMountable,mountCallback2,this);
3252+- DARegisterDiskDisappearedCallback(daSessionThread->session,kDADiskDescriptionMatchVolumeMountable,unmountCallback,this);
3253+- sessionThreadStarted = true;
3254+- }
3255+-}
3256+-
3257+-void QStorageInfoPrivate::disconnectNotify(const QMetaMethod &signal)
3258+-{
3259+- static const QMetaMethod logicalDriveChangedSignal = QMetaMethod::fromSignal(&QStorageInfoPrivate::logicalDriveChanged);
3260+- if (signal == logicalDriveChangedSignal) {
3261+- }
3262+-}
3263+-
3264+-
3265+-void QStorageInfoPrivate::storageChanged( bool added, const QString &vol)
3266+-{
3267+- if (!vol.isEmpty()) {
3268+- QMapIterator<QString, QString> it(mountEntriesMap);
3269+- QString foundKey;
3270+- bool seen = false;
3271+- while (it.hasNext()) {
3272+- it.next();
3273+- if ( vol == it.value()) {
3274+- seen = true;
3275+- foundKey = it.key();
3276+- }
3277+- }
3278+-
3279+- if (added && !seen) {
3280+- Q_EMIT logicalDriveChanged(vol, added);
3281+- updateVolumesMap();
3282+- }
3283+- if (!added && seen) {
3284+- mountEntriesMap.remove(foundKey);
3285+- Q_EMIT logicalDriveChanged(vol, added);
3286+- }
3287+-
3288+-
3289+- } else {
3290+- if (added) {
3291+-
3292+- } else { //removed
3293+- // cdroms unmounting seem to not have a volume name with the notification here, so
3294+- // we need to manually deal with it
3295+- QMap <QString,QString> oldDrives = mountEntriesMap;
3296+- updateVolumesMap();
3297+- QStringList newDrives = mountEntriesMap.keys();
3298+- QString foundDrive;
3299+-
3300+- QMapIterator<QString, QString> it(oldDrives);
3301+- while (it.hasNext()) {
3302+- it.next();
3303+- if (!newDrives.contains(it.key())) {
3304+- Q_EMIT logicalDriveChanged(it.value(), added);
3305+- }
3306+- }
3307+- }
3308+- }
3309+-}
3310+-
3311+-bool QStorageInfoPrivate::updateVolumesMap()
3312+-{
3313+- struct statfs *buf = NULL;
3314+- unsigned i, count = 0;
3315+-
3316+- mountEntriesMap.clear();
3317+-
3318+- count = getmntinfo(&buf, 0);
3319+- for (i=0; i<count; i++) {
3320+- char *volName = buf[i].f_mntonname;
3321+-
3322+- if (buf[i].f_type != 19
3323+- && buf[i].f_type != 20
3324+- && !mountEntriesMap.contains(volName)) {
3325+- mountEntriesMap.insert(buf[i].f_mntfromname,volName);
3326+-// qDebug() << __FUNCTION__ << "insert" << buf[i].f_mntfromname<< volName;
3327+- }
3328+- }
3329+- return true;
3330+-}
3331+-
3332+-bool QStorageInfoPrivate::sessionThread()
3333+-{
3334+- if (!sessionThreadStarted) {
3335+- daSessionThread = new QDASessionThread();
3336+- sessionThreadStarted = true;
3337+- }
3338+- daSessionThread->doWork();
3339+- return true;
3340+-}
3341+-
3342+-QT_END_NAMESPACE
3343+-
3344+
3345+=== removed file 'src/systeminfo/mac/qstorageinfo_mac_p.h'
3346+--- old/src/systeminfo/mac/qstorageinfo_mac_p.h 2013-06-14 10:32:13 +0000
3347++++ new/src/systeminfo/mac/qstorageinfo_mac_p.h 1970-01-01 00:00:00 +0000
3348+@@ -1,134 +0,0 @@
3349+-/****************************************************************************
3350+-**
3351+-** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
3352+-** Contact: http://www.qt-project.org/legal
3353+-**
3354+-** This file is part of the QtSystems module of the Qt Toolkit.
3355+-**
3356+-** $QT_BEGIN_LICENSE:LGPL$
3357+-** Commercial License Usage
3358+-** Licensees holding valid commercial Qt licenses may use this file in
3359+-** accordance with the commercial license agreement provided with the
3360+-** Software or, alternatively, in accordance with the terms contained in
3361+-** a written agreement between you and Digia. For licensing terms and
3362+-** conditions see http://qt.digia.com/licensing. For further information
3363+-** use the contact form at http://qt.digia.com/contact-us.
3364+-**
3365+-** GNU Lesser General Public License Usage
3366+-** Alternatively, this file may be used under the terms of the GNU Lesser
3367+-** General Public License version 2.1 as published by the Free Software
3368+-** Foundation and appearing in the file LICENSE.LGPL included in the
3369+-** packaging of this file. Please review the following information to
3370+-** ensure the GNU Lesser General Public License version 2.1 requirements
3371+-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
3372+-**
3373+-** In addition, as a special exception, Digia gives you certain additional
3374+-** rights. These rights are described in the Digia Qt LGPL Exception
3375+-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
3376+-**
3377+-** GNU General Public License Usage
3378+-** Alternatively, this file may be used under the terms of the GNU
3379+-** General Public License version 3.0 as published by the Free Software
3380+-** Foundation and appearing in the file LICENSE.GPL included in the
3381+-** packaging of this file. Please review the following information to
3382+-** ensure the GNU General Public License version 3.0 requirements will be
3383+-** met: http://www.gnu.org/copyleft/gpl.html.
3384+-**
3385+-**
3386+-** $QT_END_LICENSE$
3387+-**
3388+-****************************************************************************/
3389+-
3390+-//
3391+-// W A R N I N G
3392+-// -------------
3393+-//
3394+-// This file is not part of the Qt API. It exists purely as an
3395+-// implementation detail. This header file may change from version to
3396+-// version without notice, or even be removed.
3397+-//
3398+-// We mean it.
3399+-//
3400+-
3401+-#ifndef QSTORAGEINFO_MAC_P_H
3402+-#define QSTORAGEINFO_MAC_P_H
3403+-
3404+-#include <qstorageinfo.h>
3405+-#include <QtCore/QTimer>
3406+-#include <QtCore/QMap>
3407+-#include <QtCore/QThread>
3408+-#include <QtCore/QMutex>
3409+-
3410+-#include <SystemConfiguration/SystemConfiguration.h>
3411+-#include <DiskArbitration/DiskArbitration.h>
3412+-
3413+-QT_BEGIN_NAMESPACE
3414+-
3415+-class QDASessionThread;
3416+-class QStorageInfoPrivate : public QObject
3417+-{
3418+- Q_OBJECT
3419+-
3420+-public:
3421+- QStorageInfoPrivate(QStorageInfo *parent);
3422+- ~QStorageInfoPrivate();
3423+-
3424+- qlonglong availableDiskSpace(const QString &drive);
3425+- qlonglong totalDiskSpace(const QString &drive);
3426+- QString uriForDrive(const QString &drive);
3427+- QStringList allLogicalDrives();
3428+- QStorageInfo::DriveType driveType(const QString &drive);
3429+-
3430+-public Q_SLOTS:
3431+- void storageChanged( bool added,const QString &vol);
3432+-
3433+-Q_SIGNALS:
3434+- void logicalDriveChanged(const QString &drive, bool added);
3435+-
3436+-protected:
3437+- void connectNotify(const QMetaMethod &signal);
3438+- void disconnectNotify(const QMetaMethod &signal);
3439+-
3440+-private:
3441+- QStorageInfo * const q_ptr;
3442+- Q_DECLARE_PUBLIC(QStorageInfo)
3443+-
3444+- QMap<QString, QString> mountEntriesMap;
3445+- bool updateVolumesMap();
3446+- void mountEntries();
3447+- bool sessionThread();
3448+-// QMap<QString, QStorageInfo::StorageState> stateMap;
3449+- QDASessionThread *daSessionThread;
3450+- bool sessionThreadStarted;
3451+-
3452+-};
3453+-
3454+-
3455+-class QDASessionThread : public QObject
3456+-{
3457+- Q_OBJECT
3458+-
3459+-public:
3460+- QDASessionThread(QObject *parent = 0);
3461+- ~QDASessionThread();
3462+- bool keepRunning;
3463+- void stop();
3464+- DASessionRef session;
3465+-public Q_SLOTS:
3466+- void doWork();
3467+-Q_SIGNALS:
3468+- void logicalDrivesChanged(bool added,const QString & vol);
3469+-
3470+-protected:
3471+- QThread t;
3472+-
3473+-private:
3474+- QMutex mutex;
3475+-
3476+-};
3477+-
3478+-
3479+-
3480+-QT_END_NAMESPACE
3481+-
3482+-#endif // QSTORAGEINFO_MAC_P_H
3483+
3484+=== removed file 'src/systeminfo/qstorageinfo.cpp'
3485+--- old/src/systeminfo/qstorageinfo.cpp 2013-06-14 10:32:13 +0000
3486++++ new/src/systeminfo/qstorageinfo.cpp 1970-01-01 00:00:00 +0000
3487+@@ -1,192 +0,0 @@
3488+-/****************************************************************************
3489+-**
3490+-** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
3491+-** Contact: http://www.qt-project.org/legal
3492+-**
3493+-** This file is part of the QtSystems module of the Qt Toolkit.
3494+-**
3495+-** $QT_BEGIN_LICENSE:LGPL$
3496+-** Commercial License Usage
3497+-** Licensees holding valid commercial Qt licenses may use this file in
3498+-** accordance with the commercial license agreement provided with the
3499+-** Software or, alternatively, in accordance with the terms contained in
3500+-** a written agreement between you and Digia. For licensing terms and
3501+-** conditions see http://qt.digia.com/licensing. For further information
3502+-** use the contact form at http://qt.digia.com/contact-us.
3503+-**
3504+-** GNU Lesser General Public License Usage
3505+-** Alternatively, this file may be used under the terms of the GNU Lesser
3506+-** General Public License version 2.1 as published by the Free Software
3507+-** Foundation and appearing in the file LICENSE.LGPL included in the
3508+-** packaging of this file. Please review the following information to
3509+-** ensure the GNU Lesser General Public License version 2.1 requirements
3510+-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
3511+-**
3512+-** In addition, as a special exception, Digia gives you certain additional
3513+-** rights. These rights are described in the Digia Qt LGPL Exception
3514+-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
3515+-**
3516+-** GNU General Public License Usage
3517+-** Alternatively, this file may be used under the terms of the GNU
3518+-** General Public License version 3.0 as published by the Free Software
3519+-** Foundation and appearing in the file LICENSE.GPL included in the
3520+-** packaging of this file. Please review the following information to
3521+-** ensure the GNU General Public License version 3.0 requirements will be
3522+-** met: http://www.gnu.org/copyleft/gpl.html.
3523+-**
3524+-**
3525+-** $QT_END_LICENSE$
3526+-**
3527+-****************************************************************************/
3528+-
3529+-#include "qstorageinfo.h"
3530+-
3531+-#include <QtCore/qstringlist.h>
3532+-
3533+-#if defined(Q_OS_LINUX)
3534+-# include "linux/qstorageinfo_linux_p.h"
3535+-#elif defined(Q_OS_WIN)
3536+-# include "windows/qstorageinfo_win_p.h"
3537+-#elif defined(Q_OS_MAC)
3538+-# include "mac/qstorageinfo_mac_p.h"
3539+-#else
3540+-QT_BEGIN_NAMESPACE
3541+-class QStorageInfoPrivate
3542+-{
3543+-public:
3544+- QStorageInfoPrivate(QStorageInfo *) {}
3545+-
3546+- qlonglong availableDiskSpace(const QString &) { return -1; }
3547+- qlonglong totalDiskSpace(const QString &) { return -1; }
3548+- QString uriForDrive(const QString &) { return QString(); }
3549+- QStringList allLogicalDrives() { return QStringList(); }
3550+- QStorageInfo::DriveType driveType(const QString &) { return QStorageInfo::UnknownDrive; }
3551+-};
3552+-QT_END_NAMESPACE
3553+-#endif
3554+-
3555+-#include <QtCore/qmetaobject.h>
3556+-
3557+-QT_BEGIN_NAMESPACE
3558+-
3559+-/*!
3560+- \class QStorageInfo
3561+- \inmodule QtSystemInfo
3562+- \ingroup systeminfo
3563+- \brief The QStorageInfo class provides various disk storage information about the system.
3564+-*/
3565+-
3566+-/*!
3567+- \enum QStorageInfo::DriveType
3568+- This enum describes the type of drive or volume
3569+-
3570+- \value UnknownDrive Drive type unknown.
3571+- \value InternalDrive Internal mass storage drive, e.g. hard drive.
3572+- \value RemovableDrive Removable drive, e.g. memory card.
3573+- \value RemoteDrive Network drive.
3574+- \value CdromDrive CD-ROM.
3575+- \value RamDrive Virtual drive made in RAM memory.
3576+-*/
3577+-
3578+-/*!
3579+- \fn void QStorageInfo::logicalDriveChanged(const QString &drive, bool added)
3580+-
3581+- This signal gets emitted when a new \a drive storage has been \a added or removed.
3582+-*/
3583+-
3584+-/*!
3585+- Constructs a QStorageInfo object with the given \a parent.
3586+-*/
3587+-QStorageInfo::QStorageInfo(QObject *parent)
3588+- : QObject(parent)
3589+- , d_ptr(new QStorageInfoPrivate(this))
3590+-{
3591+-}
3592+-
3593+-/*!
3594+- Destroys the object
3595+-*/
3596+-QStorageInfo::~QStorageInfo()
3597+-{
3598+-}
3599+-
3600+-/*!
3601+- \property QStorageInfo::allLogicalDrives
3602+- \brief The list of all drives.
3603+-
3604+- Returns a list of all logical drives or volumes, or an empty list if no drives are found or
3605+- on error.
3606+-*/
3607+-QStringList QStorageInfo::allLogicalDrives()
3608+-{
3609+- return d_ptr->allLogicalDrives();
3610+-}
3611+-
3612+-/*!
3613+- Returns the available free space on the \a drive, in bytes. -1 is returned if the drive doesn't
3614+- exist, or the information is not available.
3615+-*/
3616+-qlonglong QStorageInfo::availableDiskSpace(const QString &drive) const
3617+-{
3618+- return d_ptr->availableDiskSpace(drive);
3619+-}
3620+-
3621+-/*!
3622+- Returns the total space of the \a drive, in bytes. -1 is returned if the drive doesn't exist,
3623+- or the information is not available.
3624+-*/
3625+-qlonglong QStorageInfo::totalDiskSpace(const QString &drive) const
3626+-{
3627+- return d_ptr->totalDiskSpace(drive);
3628+-}
3629+-
3630+-/*!
3631+- Returns the URI, or unique identifier for the given \a drive. If the drive doesn't exist, or the
3632+- information is not available, an empty string is returned.
3633+-*/
3634+-QString QStorageInfo::uriForDrive(const QString &drive) const
3635+-{
3636+- return d_ptr->uriForDrive(drive);
3637+-}
3638+-
3639+-/*!
3640+- Returns the type of the given \a drive.
3641+-*/
3642+-QStorageInfo::DriveType QStorageInfo::driveType(const QString &drive) const
3643+-{
3644+- return d_ptr->driveType(drive);
3645+-}
3646+-
3647+-extern QMetaMethod proxyToSourceSignal(const QMetaMethod &, QObject *);
3648+-
3649+-/*!
3650+- \internal
3651+-*/
3652+-void QStorageInfo::connectNotify(const QMetaMethod &signal)
3653+-{
3654+-#if defined(Q_OS_LINUX) || defined(Q_OS_WIN)
3655+- QMetaMethod sourceSignal = proxyToSourceSignal(signal, d_ptr);
3656+- connect(d_ptr, sourceSignal, this, signal, Qt::UniqueConnection);
3657+-#else
3658+- Q_UNUSED(signal)
3659+-#endif
3660+-}
3661+-
3662+-/*!
3663+- \internal
3664+-*/
3665+-void QStorageInfo::disconnectNotify(const QMetaMethod &signal)
3666+-{
3667+-#if defined(Q_OS_LINUX) || defined(Q_OS_WIN)
3668+- // We can only disconnect with the private implementation, when there is no receivers for the signal.
3669+- if (isSignalConnected(signal))
3670+- return;
3671+-
3672+- QMetaMethod sourceSignal = proxyToSourceSignal(signal, d_ptr);
3673+- disconnect(d_ptr, sourceSignal, this, signal);
3674+-#else
3675+- Q_UNUSED(signal)
3676+-#endif
3677+-}
3678+-
3679+-QT_END_NAMESPACE
3680+
3681+=== removed file 'src/systeminfo/qstorageinfo.h'
3682+--- old/src/systeminfo/qstorageinfo.h 2013-07-12 13:41:02 +0000
3683++++ new/src/systeminfo/qstorageinfo.h 1970-01-01 00:00:00 +0000
3684+@@ -1,94 +0,0 @@
3685+-/****************************************************************************
3686+-**
3687+-** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
3688+-** Contact: http://www.qt-project.org/legal
3689+-**
3690+-** This file is part of the QtSystems module of the Qt Toolkit.
3691+-**
3692+-** $QT_BEGIN_LICENSE:LGPL$
3693+-** Commercial License Usage
3694+-** Licensees holding valid commercial Qt licenses may use this file in
3695+-** accordance with the commercial license agreement provided with the
3696+-** Software or, alternatively, in accordance with the terms contained in
3697+-** a written agreement between you and Digia. For licensing terms and
3698+-** conditions see http://qt.digia.com/licensing. For further information
3699+-** use the contact form at http://qt.digia.com/contact-us.
3700+-**
3701+-** GNU Lesser General Public License Usage
3702+-** Alternatively, this file may be used under the terms of the GNU Lesser
3703+-** General Public License version 2.1 as published by the Free Software
3704+-** Foundation and appearing in the file LICENSE.LGPL included in the
3705+-** packaging of this file. Please review the following information to
3706+-** ensure the GNU Lesser General Public License version 2.1 requirements
3707+-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
3708+-**
3709+-** In addition, as a special exception, Digia gives you certain additional
3710+-** rights. These rights are described in the Digia Qt LGPL Exception
3711+-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
3712+-**
3713+-** GNU General Public License Usage
3714+-** Alternatively, this file may be used under the terms of the GNU
3715+-** General Public License version 3.0 as published by the Free Software
3716+-** Foundation and appearing in the file LICENSE.GPL included in the
3717+-** packaging of this file. Please review the following information to
3718+-** ensure the GNU General Public License version 3.0 requirements will be
3719+-** met: http://www.gnu.org/copyleft/gpl.html.
3720+-**
3721+-**
3722+-** $QT_END_LICENSE$
3723+-**
3724+-****************************************************************************/
3725+-
3726+-#ifndef QSTORAGEINFO_H
3727+-#define QSTORAGEINFO_H
3728+-
3729+-#include <QtSystemInfo/qsysteminfoglobal.h>
3730+-#include <QtCore/qobject.h>
3731+-#include <QtCore/qstringlist.h>
3732+-
3733+-QT_BEGIN_NAMESPACE
3734+-
3735+-class QStorageInfoPrivate;
3736+-
3737+-class Q_SYSTEMINFO_EXPORT QStorageInfo : public QObject
3738+-{
3739+- Q_OBJECT
3740+- Q_ENUMS(DriveType)
3741+- Q_PROPERTY(QStringList allLogicalDrives READ allLogicalDrives NOTIFY logicalDriveChanged)
3742+-
3743+-public:
3744+- enum DriveType {
3745+- UnknownDrive = 0,
3746+- InternalDrive,
3747+- RemovableDrive,
3748+- RemoteDrive,
3749+- CdromDrive,
3750+- RamDrive
3751+- };
3752+-
3753+- QStorageInfo(QObject *parent = 0);
3754+- virtual ~QStorageInfo();
3755+-
3756+- QStringList allLogicalDrives();
3757+-
3758+- Q_INVOKABLE qlonglong availableDiskSpace(const QString &drive) const;
3759+- Q_INVOKABLE qlonglong totalDiskSpace(const QString &drive) const;
3760+- Q_INVOKABLE QString uriForDrive(const QString &drive) const;
3761+- Q_INVOKABLE QStorageInfo::DriveType driveType(const QString &drive) const;
3762+-
3763+-Q_SIGNALS:
3764+- void logicalDriveChanged(const QString &drive, bool added);
3765+-
3766+-protected:
3767+- void connectNotify(const QMetaMethod &signal);
3768+- void disconnectNotify(const QMetaMethod &signal);
3769+-
3770+-private:
3771+- Q_DISABLE_COPY(QStorageInfo)
3772+- QStorageInfoPrivate * const d_ptr;
3773+- Q_DECLARE_PRIVATE(QStorageInfo)
3774+-};
3775+-
3776+-QT_END_NAMESPACE
3777+-
3778+-#endif // QSTORAGEINFO_H
3779+
3780+=== modified file 'src/systeminfo/simulator/qsysteminfodata_simulator.cpp'
3781+--- old/src/systeminfo/simulator/qsysteminfodata_simulator.cpp 2013-07-12 13:41:02 +0000
3782++++ new/src/systeminfo/simulator/qsysteminfodata_simulator.cpp 2015-02-03 15:08:16 +0000
3783+@@ -54,8 +54,6 @@
3784+ qRegisterMetaTypeStreamOperators<QNetworkInfoData::BluetoothInfo>("QNetworkInfoData::BluetoothInfo");
3785+ qRegisterMetaTypeStreamOperators<QDeviceInfoData>("QDeviceInfoData");
3786+ qRegisterMetaTypeStreamOperators<QBatteryInfoData>("QBatteryInfoData");
3787+- qRegisterMetaTypeStreamOperators<QStorageInfoData>("QStorageInfoData");
3788+- qRegisterMetaTypeStreamOperators<QStorageInfoData::DriveInfo>("QStorageInfoData::DriveInfo");
3789+ qRegisterMetaTypeStreamOperators<QScreenSaverData>("QScreenSaverData");
3790+ }
3791+
3792+@@ -258,38 +256,6 @@
3793+ return in;
3794+ }
3795+
3796+-QDataStream &operator<<(QDataStream &out, const QStorageInfoData &s)
3797+-{
3798+- out << s.drives;
3799+- return out;
3800+-}
3801+-
3802+-QDataStream &operator>>(QDataStream &in, QStorageInfoData &s)
3803+-{
3804+- in >> s.drives;
3805+- return in;
3806+-}
3807+-
3808+-QDataStream &operator<<(QDataStream &out, const QStorageInfoData::DriveInfo &s)
3809+-{
3810+- out << s.totalSpace << s.availableSpace;
3811+- out << s.uri;
3812+- out << static_cast<qint32>(s.type);
3813+-
3814+- return out;
3815+-}
3816+-
3817+-QDataStream &operator>>(QDataStream &in, QStorageInfoData::DriveInfo &s)
3818+-{
3819+- in >> s.totalSpace >> s.availableSpace;
3820+- in >> s.uri;
3821+- qint32 type;
3822+- in >> type;
3823+- s.type = static_cast<QStorageInfo::DriveType>(type);
3824+-
3825+- return in;
3826+-}
3827+-
3828+ QDataStream &operator<<(QDataStream &out, const QScreenSaverData &s)
3829+ {
3830+ out << s.screenSaverEnabled;
3831+
3832+=== modified file 'src/systeminfo/simulator/qsysteminfodata_simulator_p.h'
3833+--- old/src/systeminfo/simulator/qsysteminfodata_simulator_p.h 2013-07-12 13:41:02 +0000
3834++++ new/src/systeminfo/simulator/qsysteminfodata_simulator_p.h 2015-02-03 15:08:16 +0000
3835+@@ -57,7 +57,6 @@
3836+ #include <qnetworkinfo.h>
3837+ #include <qdeviceinfo.h>
3838+ #include <qbatteryinfo.h>
3839+-#include <qstorageinfo.h>
3840+ #include <qscreensaver.h>
3841+
3842+ #include <QHash>
3843+@@ -143,18 +142,6 @@
3844+ QMap<QDeviceInfo::Version, QString> versionList;
3845+ };
3846+
3847+-struct QStorageInfoData
3848+-{
3849+- struct DriveInfo
3850+- {
3851+- qint64 totalSpace;
3852+- qint64 availableSpace;
3853+- QString uri;
3854+- QStorageInfo::DriveType type;
3855+- };
3856+- QHash<QString, DriveInfo> drives;
3857+-};
3858+-
3859+ struct QScreenSaverData
3860+ {
3861+ bool screenSaverEnabled;
3862+@@ -164,7 +151,6 @@
3863+ Q_DECLARE_METATYPE(QNetworkInfoData)
3864+ Q_DECLARE_METATYPE(QDeviceInfoData)
3865+ Q_DECLARE_METATYPE(QBatteryInfoData)
3866+-Q_DECLARE_METATYPE(QStorageInfoData)
3867+ Q_DECLARE_METATYPE(QScreenSaverData)
3868+
3869+ void qt_registerSystemInfoTypes();
3870+@@ -189,10 +175,6 @@
3871+ QDataStream &operator>>(QDataStream &in, QDeviceInfo::Version &s);
3872+ QDataStream &operator<<(QDataStream &out, const QBatteryInfoData &s);
3873+ QDataStream &operator>>(QDataStream &in, QBatteryInfoData &s);
3874+-QDataStream &operator<<(QDataStream &out, const QStorageInfoData &s);
3875+-QDataStream &operator>>(QDataStream &in, QStorageInfoData &s);
3876+-QDataStream &operator<<(QDataStream &out, const QStorageInfoData::DriveInfo &s);
3877+-QDataStream &operator>>(QDataStream &in, QStorageInfoData::DriveInfo &s);
3878+ QDataStream &operator<<(QDataStream &out, const QScreenSaverData &s);
3879+ QDataStream &operator>>(QDataStream &in, QScreenSaverData &s);
3880+
3881+
3882+=== modified file 'src/systeminfo/systeminfo.pro'
3883+--- old/src/systeminfo/systeminfo.pro 2013-08-09 10:39:01 +0000
3884++++ new/src/systeminfo/systeminfo.pro 2015-02-03 15:08:16 +0000
3885+@@ -4,13 +4,11 @@
3886+ QT = core network
3887+ PUBLIC_HEADERS = qsysteminfoglobal.h \
3888+ qdeviceinfo.h \
3889+- qstorageinfo.h \
3890+ qscreensaver.h \
3891+ qbatteryinfo.h \
3892+ qnetworkinfo.h
3893+
3894+ SOURCES += qdeviceinfo.cpp \
3895+- qstorageinfo.cpp \
3896+ qscreensaver.cpp \
3897+ qbatteryinfo.cpp \
3898+ qnetworkinfo.cpp
3899+@@ -30,7 +28,6 @@
3900+
3901+ PRIVATE_HEADERS += windows/qscreensaver_win_p.h \
3902+ windows/qdeviceinfo_win_p.h \
3903+- windows/qstorageinfo_win_p.h \
3904+ windows/qbatteryinfo_win_p.h \
3905+ windows/qnetworkinfo_win_p.h \
3906+ windows/qwmihelper_win_p.h \
3907+@@ -38,7 +35,6 @@
3908+
3909+ SOURCES += windows/qscreensaver_win.cpp \
3910+ windows/qdeviceinfo_win.cpp \
3911+- windows/qstorageinfo_win.cpp \
3912+ windows/qbatteryinfo_win.cpp \
3913+ windows/qnetworkinfo_win.cpp \
3914+ windows/qwmihelper_win.cpp
3915+@@ -60,12 +56,10 @@
3916+
3917+ linux-*: !simulator: {
3918+ PRIVATE_HEADERS += linux/qdeviceinfo_linux_p.h \
3919+- linux/qstorageinfo_linux_p.h \
3920+ linux/qnetworkinfo_linux_p.h \
3921+ linux/qscreensaver_linux_p.h
3922+
3923+ SOURCES += linux/qdeviceinfo_linux.cpp \
3924+- linux/qstorageinfo_linux.cpp \
3925+ linux/qnetworkinfo_linux.cpp \
3926+ linux/qscreensaver_linux.cpp
3927+
3928+@@ -133,14 +127,12 @@
3929+ OBJECTIVE_SOURCES += mac/qbatteryinfo_mac.mm \
3930+ mac/qdeviceinfo_mac.mm \
3931+ mac/qnetworkinfo_mac.mm \
3932+- mac/qscreensaver_mac.mm \
3933+- mac/qstorageinfo_mac.mm
3934++ mac/qscreensaver_mac.mm
3935+
3936+ PRIVATE_HEADERS += mac/qbatteryinfo_mac_p.h \
3937+ mac/qdeviceinfo_mac_p.h \
3938+ mac/qnetworkinfo_mac_p.h \
3939+- mac/qscreensaver_mac_p.h \
3940+- mac/qstorageinfo_mac_p.h
3941++ mac/qscreensaver_mac_p.h
3942+
3943+ LIBS += -framework SystemConfiguration \
3944+ -framework Foundation \
3945+@@ -173,12 +165,10 @@
3946+
3947+ linux-*: {
3948+ PRIVATE_HEADERS += \
3949+- linux/qscreensaver_linux_p.h \
3950+- linux/qstorageinfo_linux_p.h
3951++ linux/qscreensaver_linux_p.h
3952+
3953+ SOURCES += \
3954+- linux/qscreensaver_linux.cpp \
3955+- linux/qstorageinfo_linux.cpp
3956++ linux/qscreensaver_linux.cpp
3957+
3958+ x11|config_x11 {
3959+ CONFIG += link_pkgconfig
3960+
3961+=== removed file 'src/systeminfo/windows/qstorageinfo_win.cpp'
3962+--- old/src/systeminfo/windows/qstorageinfo_win.cpp 2013-06-14 10:32:13 +0000
3963++++ new/src/systeminfo/windows/qstorageinfo_win.cpp 1970-01-01 00:00:00 +0000
3964+@@ -1,175 +0,0 @@
3965+-/****************************************************************************
3966+-**
3967+-** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
3968+-** Contact: http://www.qt-project.org/legal
3969+-**
3970+-** This file is part of the QtSystems module of the Qt Toolkit.
3971+-**
3972+-** $QT_BEGIN_LICENSE:LGPL$
3973+-** Commercial License Usage
3974+-** Licensees holding valid commercial Qt licenses may use this file in
3975+-** accordance with the commercial license agreement provided with the
3976+-** Software or, alternatively, in accordance with the terms contained in
3977+-** a written agreement between you and Digia. For licensing terms and
3978+-** conditions see http://qt.digia.com/licensing. For further information
3979+-** use the contact form at http://qt.digia.com/contact-us.
3980+-**
3981+-** GNU Lesser General Public License Usage
3982+-** Alternatively, this file may be used under the terms of the GNU Lesser
3983+-** General Public License version 2.1 as published by the Free Software
3984+-** Foundation and appearing in the file LICENSE.LGPL included in the
3985+-** packaging of this file. Please review the following information to
3986+-** ensure the GNU Lesser General Public License version 2.1 requirements
3987+-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
3988+-**
3989+-** In addition, as a special exception, Digia gives you certain additional
3990+-** rights. These rights are described in the Digia Qt LGPL Exception
3991+-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
3992+-**
3993+-** GNU General Public License Usage
3994+-** Alternatively, this file may be used under the terms of the GNU
3995+-** General Public License version 3.0 as published by the Free Software
3996+-** Foundation and appearing in the file LICENSE.GPL included in the
3997+-** packaging of this file. Please review the following information to
3998+-** ensure the GNU General Public License version 3.0 requirements will be
3999+-** met: http://www.gnu.org/copyleft/gpl.html.
4000+-**
4001+-**
4002+-** $QT_END_LICENSE$
4003+-**
4004+-****************************************************************************/
4005+-
4006+-#include "qstorageinfo_win_p.h"
4007+-
4008+-#if !defined( Q_CC_MINGW)
4009+-#ifndef Q_OS_WINCE
4010+-#include "qwmihelper_win_p.h"
4011+-#endif
4012+-#endif
4013+-
4014+-#include <QtCore/qdir.h>
4015+-#include <QtCore/qmetaobject.h>
4016+-
4017+-#include <qt_windows.h>
4018+-
4019+-QT_BEGIN_NAMESPACE
4020+-
4021+-QStorageInfoPrivate::QStorageInfoPrivate(QStorageInfo *parent)
4022+- : QObject(parent)
4023+- , q_ptr(parent)
4024+-{
4025+-#if !defined( Q_CC_MINGW)
4026+-#if !defined( Q_OS_WINCE)
4027+- WMIHelper *wHelper;
4028+- wHelper = WMIHelper::instance();
4029+- wHelper->setWmiNamespace(QLatin1String("root/cimv2"));
4030+- wHelper->setClassName(QLatin1String("Win32_VolumeChangeEvent"));
4031+- QString aString = QLatin1String("SELECT * FROM __InstanceOperationEvent WITHIN 1 WHERE (TargetInstance ISA 'Win32_LogicalDisk') AND (TargetInstance.DriveType = 5 OR TargetInstance.DriveType = 2)");
4032+-
4033+- wHelper->setupNotfication(QLatin1String("root/cimv2"),aString,QStringList());
4034+-
4035+- connect(wHelper,SIGNAL(wminotificationArrived()),this,SLOT(notificationArrived()));
4036+-#endif
4037+-#endif
4038+-}
4039+-
4040+-QStorageInfoPrivate::~QStorageInfoPrivate()
4041+-{
4042+-}
4043+-
4044+-qlonglong QStorageInfoPrivate::availableDiskSpace(const QString &drive)
4045+-{
4046+- qlonglong availableBytes(-1);
4047+- if (!GetDiskFreeSpaceEx((WCHAR *)drive.utf16(), 0, 0, (PULARGE_INTEGER)&availableBytes))
4048+- availableBytes = -1;
4049+- return availableBytes;
4050+-}
4051+-
4052+-qlonglong QStorageInfoPrivate::totalDiskSpace(const QString &drive)
4053+-{
4054+- qlonglong totalBytes(-1);
4055+- if (!GetDiskFreeSpaceEx((WCHAR *)drive.utf16(), 0, (PULARGE_INTEGER)&totalBytes, 0))
4056+- totalBytes = -1;
4057+- return totalBytes;
4058+-}
4059+-
4060+-QString QStorageInfoPrivate::uriForDrive(const QString &drive)
4061+-{
4062+- WCHAR uri[50];
4063+- if (GetVolumeNameForVolumeMountPoint((WCHAR *)drive.utf16(), uri, 50))
4064+- return QString::fromUtf16(reinterpret_cast<const unsigned short *>(uri));
4065+- return QString();
4066+-}
4067+-
4068+-QStringList QStorageInfoPrivate::allLogicalDrives()
4069+-{
4070+- mountEntriesList.clear();
4071+- QFileInfoList drives = QDir::drives();
4072+- foreach (const QFileInfo &drive, drives)
4073+- mountEntriesList << drive.absoluteFilePath();
4074+- return mountEntriesList;
4075+-}
4076+-
4077+-QStorageInfo::DriveType QStorageInfoPrivate::driveType(const QString &drive)
4078+-{
4079+- UINT type = GetDriveType((WCHAR *)drive.utf16());
4080+- switch (type) {
4081+- case DRIVE_REMOVABLE:
4082+- return QStorageInfo::RemovableDrive;
4083+- case DRIVE_FIXED:
4084+- return QStorageInfo::InternalDrive;
4085+- case DRIVE_REMOTE:
4086+- return QStorageInfo::RemoteDrive;
4087+- case DRIVE_CDROM:
4088+- return QStorageInfo::CdromDrive;
4089+- case DRIVE_RAMDISK:
4090+- return QStorageInfo::RamDrive;
4091+- case DRIVE_UNKNOWN:
4092+- case DRIVE_NO_ROOT_DIR:
4093+- default:
4094+- return QStorageInfo::UnknownDrive;
4095+- };
4096+-}
4097+-
4098+-void QStorageInfoPrivate::connectNotify(const QMetaMethod &signal)
4099+-{
4100+- static const QMetaMethod logicalDriveChangedSignal = QMetaMethod::fromSignal(&QStorageInfoPrivate::logicalDriveChanged);
4101+- if (signal == logicalDriveChangedSignal) {
4102+- }
4103+-}
4104+-
4105+-void QStorageInfoPrivate::disconnectNotify(const QMetaMethod &signal)
4106+-{
4107+- static const QMetaMethod logicalDriveChangedSignal = QMetaMethod::fromSignal(&QStorageInfoPrivate::logicalDriveChanged);
4108+- if (signal == logicalDriveChangedSignal) {
4109+- }
4110+-}
4111+-
4112+-void QStorageInfoPrivate::notificationArrived()
4113+-{
4114+- QStringList oldDrives;
4115+-
4116+- oldDrives = mountEntriesList;
4117+- allLogicalDrives();
4118+-
4119+- if (mountEntriesList.count() < oldDrives.count()) {
4120+- QStringListIterator i(oldDrives);
4121+- while (i.hasNext()) {
4122+- QString key = i.next();
4123+- if (!mountEntriesList.contains(key)) {
4124+- emit logicalDriveChanged(key, false);
4125+- }
4126+- }
4127+- } else if (mountEntriesList.count() > oldDrives.count()) {
4128+- QStringListIterator i(mountEntriesList);
4129+- while (i.hasNext()) {
4130+- QString key = i.next();
4131+-
4132+- if (oldDrives.contains(key))
4133+- continue;
4134+- emit logicalDriveChanged(key, true);
4135+- }
4136+- }
4137+- }
4138+-
4139+-QT_END_NAMESPACE
4140+
4141+=== removed file 'src/systeminfo/windows/qstorageinfo_win_p.h'
4142+--- old/src/systeminfo/windows/qstorageinfo_win_p.h 2013-06-14 10:32:13 +0000
4143++++ new/src/systeminfo/windows/qstorageinfo_win_p.h 1970-01-01 00:00:00 +0000
4144+@@ -1,96 +0,0 @@
4145+-/****************************************************************************
4146+-**
4147+-** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
4148+-** Contact: http://www.qt-project.org/legal
4149+-**
4150+-** This file is part of the QtSystems module of the Qt Toolkit.
4151+-**
4152+-** $QT_BEGIN_LICENSE:LGPL$
4153+-** Commercial License Usage
4154+-** Licensees holding valid commercial Qt licenses may use this file in
4155+-** accordance with the commercial license agreement provided with the
4156+-** Software or, alternatively, in accordance with the terms contained in
4157+-** a written agreement between you and Digia. For licensing terms and
4158+-** conditions see http://qt.digia.com/licensing. For further information
4159+-** use the contact form at http://qt.digia.com/contact-us.
4160+-**
4161+-** GNU Lesser General Public License Usage
4162+-** Alternatively, this file may be used under the terms of the GNU Lesser
4163+-** General Public License version 2.1 as published by the Free Software
4164+-** Foundation and appearing in the file LICENSE.LGPL included in the
4165+-** packaging of this file. Please review the following information to
4166+-** ensure the GNU Lesser General Public License version 2.1 requirements
4167+-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
4168+-**
4169+-** In addition, as a special exception, Digia gives you certain additional
4170+-** rights. These rights are described in the Digia Qt LGPL Exception
4171+-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
4172+-**
4173+-** GNU General Public License Usage
4174+-** Alternatively, this file may be used under the terms of the GNU
4175+-** General Public License version 3.0 as published by the Free Software
4176+-** Foundation and appearing in the file LICENSE.GPL included in the
4177+-** packaging of this file. Please review the following information to
4178+-** ensure the GNU General Public License version 3.0 requirements will be
4179+-** met: http://www.gnu.org/copyleft/gpl.html.
4180+-**
4181+-**
4182+-** $QT_END_LICENSE$
4183+-**
4184+-****************************************************************************/
4185+-
4186+-//
4187+-// W A R N I N G
4188+-// -------------
4189+-//
4190+-// This file is not part of the Qt API. It exists purely as an
4191+-// implementation detail. This header file may change from version to
4192+-// version without notice, or even be removed.
4193+-//
4194+-// We mean it.
4195+-//
4196+-
4197+-#ifndef QSTORAGEINFO_WIN_P_H
4198+-#define QSTORAGEINFO_WIN_P_H
4199+-
4200+-#include "qstorageinfo.h"
4201+-#include "qwmihelper_win_p.h"
4202+-
4203+-QT_BEGIN_NAMESPACE
4204+-
4205+-class QSocketNotifier;
4206+-
4207+-class QStorageInfoPrivate : public QObject
4208+-{
4209+- Q_OBJECT
4210+-
4211+-public:
4212+- QStorageInfoPrivate(QStorageInfo *parent);
4213+- ~QStorageInfoPrivate();
4214+-
4215+- qlonglong availableDiskSpace(const QString &drive);
4216+- qlonglong totalDiskSpace(const QString &drive);
4217+- QString uriForDrive(const QString &drive);
4218+- QStringList allLogicalDrives();
4219+- QStorageInfo::DriveType driveType(const QString &drive);
4220+-
4221+-Q_SIGNALS:
4222+- void logicalDriveChanged(const QString &drive, bool added);
4223+-
4224+-protected:
4225+- void connectNotify(const QMetaMethod &signal);
4226+- void disconnectNotify(const QMetaMethod &signal);
4227+-
4228+-private:
4229+- QStorageInfo * const q_ptr;
4230+- Q_DECLARE_PUBLIC(QStorageInfo);
4231+-
4232+- QStringList mountEntriesList;
4233+-
4234+-private Q_SLOTS:
4235+- void notificationArrived();
4236+-};
4237+-
4238+-QT_END_NAMESPACE
4239+-
4240+-#endif // QSTORAGEINFO_WIN_P_H
4241+
4242+=== modified file 'tests/auto/cmake/test_modules/main.cpp'
4243+--- old/tests/auto/cmake/test_modules/main.cpp 2013-07-12 13:41:02 +0000
4244++++ new/tests/auto/cmake/test_modules/main.cpp 2015-02-03 15:08:16 +0000
4245+@@ -41,7 +41,6 @@
4246+
4247+ #include <QValueSpaceSubscriber>
4248+ #include <QServiceInterfaceDescriptor>
4249+-#include <QStorageInfo>
4250+
4251+ int main(int argc, char **argv)
4252+ {
4253+@@ -49,7 +48,5 @@
4254+
4255+ QServiceInterfaceDescriptor serviceInterfaceDescriptor;
4256+
4257+- QStorageInfo storageInfo;
4258+-
4259+ return 0;
4260+ }
4261+
4262+=== removed directory 'tests/auto/systeminfo/qstorageinfo'
4263+=== removed file 'tests/auto/systeminfo/qstorageinfo/qstorageinfo.pro'
4264+--- old/tests/auto/systeminfo/qstorageinfo/qstorageinfo.pro 2013-07-12 13:41:02 +0000
4265++++ new/tests/auto/systeminfo/qstorageinfo/qstorageinfo.pro 1970-01-01 00:00:00 +0000
4266+@@ -1,5 +0,0 @@
4267+-
4268+-QT += systeminfo testlib
4269+-
4270+-SOURCES += tst_qstorageinfo.cpp
4271+-DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0
4272+
4273+=== removed file 'tests/auto/systeminfo/qstorageinfo/tst_qstorageinfo.cpp'
4274+--- old/tests/auto/systeminfo/qstorageinfo/tst_qstorageinfo.cpp 2013-06-14 10:32:13 +0000
4275++++ new/tests/auto/systeminfo/qstorageinfo/tst_qstorageinfo.cpp 1970-01-01 00:00:00 +0000
4276+@@ -1,67 +0,0 @@
4277+-/****************************************************************************
4278+-**
4279+-** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
4280+-** Contact: http://www.qt-project.org/legal
4281+-**
4282+-** This file is part of the QtSystems module of the Qt Toolkit.
4283+-**
4284+-** $QT_BEGIN_LICENSE:LGPL$
4285+-** Commercial License Usage
4286+-** Licensees holding valid commercial Qt licenses may use this file in
4287+-** accordance with the commercial license agreement provided with the
4288+-** Software or, alternatively, in accordance with the terms contained in
4289+-** a written agreement between you and Digia. For licensing terms and
4290+-** conditions see http://qt.digia.com/licensing. For further information
4291+-** use the contact form at http://qt.digia.com/contact-us.
4292+-**
4293+-** GNU Lesser General Public License Usage
4294+-** Alternatively, this file may be used under the terms of the GNU Lesser
4295+-** General Public License version 2.1 as published by the Free Software
4296+-** Foundation and appearing in the file LICENSE.LGPL included in the
4297+-** packaging of this file. Please review the following information to
4298+-** ensure the GNU Lesser General Public License version 2.1 requirements
4299+-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
4300+-**
4301+-** In addition, as a special exception, Digia gives you certain additional
4302+-** rights. These rights are described in the Digia Qt LGPL Exception
4303+-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
4304+-**
4305+-** GNU General Public License Usage
4306+-** Alternatively, this file may be used under the terms of the GNU
4307+-** General Public License version 3.0 as published by the Free Software
4308+-** Foundation and appearing in the file LICENSE.GPL included in the
4309+-** packaging of this file. Please review the following information to
4310+-** ensure the GNU General Public License version 3.0 requirements will be
4311+-** met: http://www.gnu.org/copyleft/gpl.html.
4312+-**
4313+-**
4314+-** $QT_END_LICENSE$
4315+-**
4316+-****************************************************************************/
4317+-
4318+-#include <QtTest/QtTest>
4319+-#include "qstorageinfo.h"
4320+-
4321+-QT_USE_NAMESPACE
4322+-
4323+-class tst_QStorageInfo : public QObject
4324+-{
4325+- Q_OBJECT
4326+-
4327+-private slots:
4328+- void tst_diskSpace();
4329+-};
4330+-
4331+-void tst_QStorageInfo::tst_diskSpace()
4332+-{
4333+- QStorageInfo storageInfo;
4334+- QStringList drives = storageInfo.allLogicalDrives();
4335+- foreach (const QString &drive, drives) {
4336+- qlonglong available = storageInfo.availableDiskSpace(drive);
4337+- qlonglong total = storageInfo.totalDiskSpace(drive);
4338+- QVERIFY(available <= total);
4339+- }
4340+-}
4341+-
4342+-QTEST_MAIN(tst_QStorageInfo)
4343+-#include "tst_qstorageinfo.moc"
4344+
4345+=== modified file 'tests/auto/systeminfo/systeminfo.pro'
4346+--- old/tests/auto/systeminfo/systeminfo.pro 2013-07-12 13:41:02 +0000
4347++++ new/tests/auto/systeminfo/systeminfo.pro 2015-02-03 15:08:16 +0000
4348+@@ -2,6 +2,5 @@
4349+
4350+ SUBDIRS = \
4351+ qdeviceinfo \
4352+- qstorageinfo \
4353+ qscreensaver \
4354+ qbatteryinfo
4355+
4356+=== modified file 'tests/manual/sysinfo-tester/main.cpp'
4357+--- old/tests/manual/sysinfo-tester/main.cpp 2013-07-12 13:41:02 +0000
4358++++ new/tests/manual/sysinfo-tester/main.cpp 2015-02-03 15:08:16 +0000
4359+@@ -47,7 +47,6 @@
4360+ #include "qbatteryinfo.h"
4361+ #include "qdeviceinfo.h"
4362+ #include "qnetworkinfo.h"
4363+-#include "qstorageinfo.h"
4364+ //#include "qscreensaverinfo.h"
4365+
4366+
4367+@@ -207,65 +206,6 @@
4368+ }
4369+
4370+ /* ------------------------------------------------------------------------- *
4371+- * test_systemstorageinfo
4372+- * ------------------------------------------------------------------------- */
4373+-
4374+-static const char *human_size(qlonglong n)
4375+-{
4376+- if (n == 0) return "0B";
4377+-
4378+- static char buf[256];
4379+- char *pos = buf;
4380+- char *end = buf + sizeof buf;
4381+-
4382+- int b = n & 1023; n >>= 10;
4383+- int k = n & 1023; n >>= 10;
4384+- int m = n & 1023; n >>= 10;
4385+- int g = n & 1023; n >>= 10;
4386+-
4387+- *pos = 0;
4388+-#if defined(Q_OS_WIN)
4389+- if (g) _snprintf_s(pos, sizeof(pos), end-pos,"%s%dGB", *buf?" ":"", g), pos = strchr(pos,0);
4390+- if (m) _snprintf_s(pos, sizeof(pos), end-pos,"%s%dMB", *buf?" ":"", m), pos = strchr(pos,0);
4391+- if (k) _snprintf_s(pos, sizeof(pos), end-pos,"%s%dkB", *buf?" ":"", k), pos = strchr(pos,0);
4392+- if (b) _snprintf_s(pos, sizeof(pos), end-pos,"%s%dB", *buf?" ":"", b), pos = strchr(pos,0);
4393+-#else
4394+- if (g) snprintf(pos, end-pos, "%s%dGB", *buf?" ":"", g), pos = strchr(pos,0);
4395+- if (m) snprintf(pos, end-pos, "%s%dMB", *buf?" ":"", m), pos = strchr(pos,0);
4396+- if (k) snprintf(pos, end-pos, "%s%dkB", *buf?" ":"", k), pos = strchr(pos,0);
4397+- if (b) snprintf(pos, end-pos, "%s%dB", *buf?" ":"", b), pos = strchr(pos,0);
4398+-#endif
4399+- return buf;
4400+-}
4401+-
4402+-static void test_storageinfo(void)
4403+-{
4404+- QStorageInfo storageinfo;
4405+-
4406+- QStringList lst = storageinfo.allLogicalDrives();
4407+-
4408+- qDebug() << "storageinfo.logicalDrives ->" << lst;
4409+-
4410+- for (int i = 0; i < lst.size(); ++i) {
4411+- const QString &drv = lst.at(i);
4412+-
4413+- qDebug() << "Logical drive:" << drv;
4414+-
4415+- qlonglong avail = storageinfo.availableDiskSpace(drv);
4416+- qDebug() << " storageinfo.availableDiskSpace() ->" << human_size(avail);
4417+-
4418+- qlonglong total = storageinfo.totalDiskSpace(drv);
4419+- qDebug() << " storageinfo.totalDiskSpace() ->" << human_size(total);
4420+-
4421+- QStorageInfo::DriveType dtype = storageinfo.driveType(drv);
4422+- qDebug() << " storageinfo.typeForDrive() ->" << dtype;
4423+-
4424+- QString duri = storageinfo.uriForDrive(drv);
4425+- qDebug() << " storageinfo.uriForDrive() ->" << duri;
4426+- }
4427+-}
4428+-
4429+-/* ------------------------------------------------------------------------- *
4430+ * test_systemnetworkinfo
4431+ * ------------------------------------------------------------------------- */
4432+
4433+@@ -357,7 +297,6 @@
4434+ #define ADD(x) {#x, test_##x }
4435+ // ADD(systeminfo),
4436+ ADD(deviceinfo),
4437+- ADD(storageinfo),
4438+ ADD(networkinfo),
4439+ // ADD(screensaver),
4440+ ADD(batteryinfo),
4441+
4442
4443=== modified file 'debian/patches/series'
4444--- debian/patches/series 2014-07-15 09:21:57 +0000
4445+++ debian/patches/series 2015-02-03 15:58:39 +0000
4446@@ -3,3 +3,6 @@
4447 wlan_detect.patch
4448 skip_failing_tests.patch
4449 fix_qserviceinterfacedescriptor_unit_test.patch
4450+remove-storageinfo.patch
4451+remove-storageinfo-examples.patch
4452+inputinfo.patch
4453
4454=== modified file 'debian/qtsystems5-dev.install'
4455--- debian/qtsystems5-dev.install 2014-05-26 07:37:59 +0000
4456+++ debian/qtsystems5-dev.install 2015-02-03 15:58:39 +0000
4457@@ -31,16 +31,17 @@
4458 usr/include/*/qt5/QtSystemInfo/QDeviceInfo
4459 usr/include/*/qt5/QtSystemInfo/QNetworkInfo
4460 usr/include/*/qt5/QtSystemInfo/QScreenSaver
4461-usr/include/*/qt5/QtSystemInfo/QStorageInfo
4462 usr/include/*/qt5/QtSystemInfo/QtSystemInfo
4463 usr/include/*/qt5/QtSystemInfo/QtSystemInfoVersion
4464 usr/include/*/qt5/QtSystemInfo/qbatteryinfo.h
4465 usr/include/*/qt5/QtSystemInfo/qdeviceinfo.h
4466 usr/include/*/qt5/QtSystemInfo/qnetworkinfo.h
4467 usr/include/*/qt5/QtSystemInfo/qscreensaver.h
4468-usr/include/*/qt5/QtSystemInfo/qstorageinfo.h
4469 usr/include/*/qt5/QtSystemInfo/qsysteminfoglobal.h
4470 usr/include/*/qt5/QtSystemInfo/qtsysteminfoversion.h
4471+usr/include/*/qt5/QtSystemInfo/qinputinfo.h
4472+usr/include/*/qt5/QtSystemInfo/QInputDevice
4473+usr/include/*/qt5/QtSystemInfo/QInputDeviceInfo
4474 usr/lib/*/cmake/*
4475 usr/lib/*/libQt5PublishSubscribe.prl
4476 usr/lib/*/libQt5PublishSubscribe.so
4477
4478=== modified file 'debian/qtsystems5-examples.install'
4479--- debian/qtsystems5-examples.install 2013-07-12 13:41:02 +0000
4480+++ debian/qtsystems5-examples.install 2015-02-03 15:58:39 +0000
4481@@ -1,8 +1,6 @@
4482 usr/lib/*/qt5/examples/sysinfo/qml-battery/qml-battery
4483 usr/lib/*/qt5/examples/sysinfo/qml-battery/qml-battery.qml
4484-usr/lib/*/qt5/examples/sysinfo/qml-storageinfo/content/ProgressBar.qml
4485-usr/lib/*/qt5/examples/sysinfo/qml-storageinfo/content/background.png
4486-usr/lib/*/qt5/examples/sysinfo/qml-storageinfo/qml-storage.qml
4487-usr/lib/*/qt5/examples/sysinfo/qml-storageinfo/qml-storageinfo
4488 usr/lib/*/qt5/examples/systeminfo/qml-deviceinfo/qml-deviceinfo
4489 usr/lib/*/qt5/examples/systeminfo/qml-deviceinfo/qml-deviceinfo.qml
4490+usr/lib/*/qt5/examples/sysinfo/qml-inputinfo/qml-inputinfo
4491+usr/lib/*/qt5/examples/sysinfo/qml-inputinfo/qml-inputinfo.qml
4492
4493=== modified file 'debian/qtsystems5-private-dev.install'
4494--- debian/qtsystems5-private-dev.install 2014-05-26 07:37:59 +0000
4495+++ debian/qtsystems5-private-dev.install 2015-02-03 15:58:39 +0000
4496@@ -38,6 +38,7 @@
4497 usr/include/*/qt5/QtSystemInfo/*/QtSystemInfo/private/qdeviceinfo_mac_p.h
4498 usr/include/*/qt5/QtSystemInfo/*/QtSystemInfo/private/qdeviceinfo_win_p.h
4499 usr/include/*/qt5/QtSystemInfo/*/QtSystemInfo/private/qdevicekitservice_linux_p.h
4500+usr/include/*/qt5/QtSystemInfo/*/QtSystemInfo/private/qinputdeviceinfo_linux_p.h
4501 usr/include/*/qt5/QtSystemInfo/*/QtSystemInfo/private/qnetworkinfo_linux_p.h
4502 usr/include/*/qt5/QtSystemInfo/*/QtSystemInfo/private/qnetworkinfo_mac_p.h
4503 usr/include/*/qt5/QtSystemInfo/*/QtSystemInfo/private/qnetworkinfo_win_p.h
4504@@ -45,9 +46,6 @@
4505 usr/include/*/qt5/QtSystemInfo/*/QtSystemInfo/private/qscreensaver_linux_p.h
4506 usr/include/*/qt5/QtSystemInfo/*/QtSystemInfo/private/qscreensaver_mac_p.h
4507 usr/include/*/qt5/QtSystemInfo/*/QtSystemInfo/private/qscreensaver_win_p.h
4508-usr/include/*/qt5/QtSystemInfo/*/QtSystemInfo/private/qstorageinfo_linux_p.h
4509-usr/include/*/qt5/QtSystemInfo/*/QtSystemInfo/private/qstorageinfo_mac_p.h
4510-usr/include/*/qt5/QtSystemInfo/*/QtSystemInfo/private/qstorageinfo_win_p.h
4511 usr/include/*/qt5/QtSystemInfo/*/QtSystemInfo/private/qsystemalignedtimer_linux_p.h
4512 usr/include/*/qt5/QtSystemInfo/*/QtSystemInfo/private/qsystemalignedtimer_stub_p.h
4513 usr/include/*/qt5/QtSystemInfo/*/QtSystemInfo/private/qsysteminfo_simulator_p.h
4514
4515=== modified file 'debian/rules'
4516--- debian/rules 2014-07-15 09:21:57 +0000
4517+++ debian/rules 2015-02-03 15:58:39 +0000
4518@@ -23,14 +23,14 @@
4519 -exec sed -i -e 's/$(DEB_HOST_MULTIARCH)\/$(DEB_HOST_MULTIARCH)/$(DEB_HOST_MULTIARCH)/g' {} \;
4520
4521 # Fix wrong permissions in examples.
4522- find $(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/qt5/examples/ -type f \( \
4523- -name '*.png' \
4524- -o -name '*.php' \
4525- -o -name '*.xsl' \
4526- -o -name '*.xml' \
4527- -o -name '*.js' \
4528- -o -name '*.jpg' \
4529- \) -print0 | xargs -0 chmod a-x
4530+ #find $(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/qt5/examples/ -type f \( \
4531+ #-name '*.png' \
4532+ #-o -name '*.php' \
4533+ #-o -name '*.xsl' \
4534+ #-o -name '*.xml' \
4535+ #-o -name '*.js' \
4536+ #-o -name '*.jpg' \
4537+ #\) -print0 | xargs -0 chmod a-x
4538
4539 # Remove libtool-like files
4540 rm -f debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/*.la
4541@@ -40,5 +40,5 @@
4542 dh_install --fail-missing
4543
4544 override_dh_auto_test:
4545- export LD_LIBRARY_PATH=$(CURDIR)/lib
4546- cd tests/auto/ && ( test -e Makefile || qmake auto.pro -o Makefile ) && make -f Makefile check
4547+ [ ! -d $(CURDIR)/home ] && mkdir $(CURDIR)/home
4548+ cd tests/auto/ && ( test -e Makefile || qmake auto.pro -o Makefile ) && env LD_LIBRARY_PATH=$(CURDIR)/lib HOME=$(CURDIR)/home make -f Makefile check

Subscribers

People subscribed via source and target branches