1/*
2 Copyright (C) 2010 by Jacopo De Simoi <wilderkde@gmail.com>
3
4
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2, or (at your option)
8 any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18
19 */
20
21#ifndef KSOLIDNOTIFY_H
22#define KSOLIDNOTIFY_H
23
24#include "knotify.h"
25
26#include <solid/solidnamespace.h>
27
28namespace Solid
29{
30 class Device;
31}
32
33/**
34 * @brief Class which triggers solid notifications
35 *
36 * This is an internal class which listens to solid errors and route them via dbus to an
37 * appropriate visualization (e.g. the plasma device notifier applet); if such visualization is not available
38 * errors are shown via regular notifications
39 *
40 * @author Jacopo De Simoi <wilderkde at gmail.com>
41*/
42
43class KSolidNotify : public QObject
44{ Q_OBJECT
45
46 public:
47 KSolidNotify(KNotify *parent);
48
49 protected Q_SLOTS:
50 void onDeviceAdded(const QString &udi);
51 void onDeviceRemoved(const QString &udi);
52
53 private slots:
54
55 void storageEjectDone(Solid::ErrorType error, QVariant errorData, const QString & udi);
56 void storageTeardownDone(Solid::ErrorType error, QVariant errorData, const QString & udi);
57 void storageSetupDone(Solid::ErrorType error, QVariant errorData, const QString & udi);
58
59 void slotServiceOwnerChanged(const QString &, const QString &, const QString &);
60
61 private:
62 void connectSignals(Solid::Device* device);
63 bool isSafelyRemovable(const QString &udi);
64 void notifySolidEvent(QString event, Solid::ErrorType error, QVariant errorData, const QString & udi, const QString & errorMessage);
65
66 KNotify* m_kNotify;
67 QHash<QString, Solid::Device> m_devices;
68 bool m_dbusServiceExists;
69};
70#endif
71