1/*
2 Copyright (c) 2008 Volker Krause <vkrause@kde.org>
3
4 This library is free software; you can redistribute it and/or modify it
5 under the terms of the GNU Library General Public License as published by
6 the Free Software Foundation; either version 2 of the License, or (at your
7 option) any later version.
8
9 This library is distributed in the hope that it will be useful, but WITHOUT
10 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
12 License for more details.
13
14 You should have received a copy of the GNU Library General Public License
15 along with this library; see the file COPYING.LIB. If not, write to the
16 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
17 02110-1301, USA.
18*/
19
20#ifndef AKONADI_ERROROVERLAY_P_H
21#define AKONADI_ERROROVERLAY_P_H
22
23#include "servermanager.h"
24
25#include <QtCore/QPointer>
26#include <QWidget>
27
28#include <boost/scoped_ptr.hpp>
29
30namespace Ui {
31class ErrorOverlay;
32}
33
34namespace Akonadi {
35
36/**
37 * @internal
38 * Overlay widget to block Akonadi-dependent widgets if the Akonadi server
39 * is unavailable.
40 * @todo handle initial parent == 0 case correctly, reparent later and hide as long as parent widget is 0
41 * @todo fix hiding in dock widget tabs
42 */
43class ErrorOverlay : public QWidget
44{
45 Q_OBJECT
46public:
47 /**
48 * Create an overlay widget for @p baseWidget.
49 * @p baseWidget must not be null.
50 * @p parent must not be equal to @p baseWidget
51 */
52 explicit ErrorOverlay(QWidget *baseWidget, QWidget *parent = 0);
53 ~ErrorOverlay();
54
55protected:
56 bool eventFilter(QObject *object, QEvent *event);
57
58private:
59 void reposition();
60
61private Q_SLOTS:
62 void startClicked();
63 void quitClicked();
64 void selfTestClicked();
65 void serverStateChanged(Akonadi::ServerManager::State state);
66
67private:
68 QPointer<QWidget> mBaseWidget;
69 bool mPreviousState;
70 bool mOverlayActive;
71 bool mBaseWidgetIsParent;
72 boost::scoped_ptr<Ui::ErrorOverlay> ui;
73};
74
75}
76
77#endif
78