edfb5a630af7fa36549484907524adcff1da513f
[mdictionary] / src / mdictionary / gui / NotifyManager.h
1 /*******************************************************************************
2
3     This file is part of mDictionary.
4
5     mDictionary 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 3 of the License, or
8     (at your option) any later version.
9
10     mDictionary 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 mDictionary.  If not, see <http://www.gnu.org/licenses/>.
17
18     Copyright 2010 Comarch S.A.
19
20 *******************************************************************************/
21
22 //! \file NotifyManager.h
23 //! \author Mateusz Półrola <mateusz.polrola@comarch.pl>
24
25 #ifndef NOTIFYMANAGER_H
26 #define NOTIFYMANAGER_H
27
28 #include <QObject>
29 #include <QHash>
30 #include <QString>
31 #include <QDialog>
32 #include "../../include/Notify.h"
33 #include "MenuWidget.h"
34
35 //! Manages notifications in applications
36 /*!
37     Shows notifications to user, assures that a couple of the same notifications
38     will not be displayed at the same time. It automatically deletes
39     notifications after user accepts or rejects them.
40 */
41
42 class NotifyManager : public QObject
43 {
44     Q_OBJECT
45 public:
46     NotifyManager(QObject *parent = 0);
47
48 public slots:
49     //! Shows notification
50     /*!
51         Displays new notification of passed type containing passed text
52         \param type type of notification
53         \param text text of notification
54         \sa Notify::NotifyType
55     */
56     void showNotification(Notify::NotifyType type, QString text);
57
58     //! Refresh all notifications when stacked widgets changes
59     void screenChanged();
60
61     void setMenu(QWidget*);
62
63 private slots:
64     //! Informs that notification was closed and can be deleted
65     void notificationClosed();
66
67 private:
68     QHash<QString, QDialog*> activeNotifies;
69     QWidget* menu;
70 };
71
72 #endif // NOTIFYMANAGER_H