Merge "persistent color scheme selection"
[trojita.git] / src / Gui / LoadablePartWidget.h
blobddb882bde0e09545e12a812be3cb6af41ef9e6ee
1 /* Copyright (C) 2006 - 2014 Jan Kundrát <jkt@flaska.net>
3 This file is part of the Trojita Qt IMAP e-mail client,
4 http://trojita.flaska.net/
6 This program is free software; you can redistribute it and/or
7 modify it under the terms of the GNU General Public License as
8 published by the Free Software Foundation; either version 2 of
9 the License or (at your option) version 3 or any later version
10 accepted by the membership of KDE e.V. (or its successor approved
11 by the membership of KDE e.V.), which shall act as a proxy
12 defined in Section 14 of version 3 of the license.
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
19 You should have received a copy of the GNU General Public License
20 along with this program. If not, see <http://www.gnu.org/licenses/>.
22 #ifndef LOADABLEPARTWIDGET_H
23 #define LOADABLEPARTWIDGET_H
25 #include <QPersistentModelIndex>
26 #include <QStackedWidget>
28 #include "Gui/AbstractPartWidget.h"
29 #include "Gui/PartWalker.h"
31 class QPushButton;
33 namespace Gui
36 class MessageView;
38 /** @short Widget which implements delayed loading of message parts
40 This class supports two modes of loading, either a "click-through" one for loading message parts
41 on demand after the user clicks a button, or an "automated" mode where the data are loaded after
42 this widget becomes visible.
45 class LoadablePartWidget : public QStackedWidget, public AbstractPartWidget
47 Q_OBJECT
48 public:
49 LoadablePartWidget(QWidget *parent, Imap::Network::MsgPartNetAccessManager *manager, const QModelIndex &part,
50 PartWidgetFactory *factory, int recursionDepth,
51 const UiUtils::PartLoadingOptions loadingMode);
52 QString quoteMe() const override;
53 virtual bool searchDialogRequested() override;
54 virtual void reloadContents() override;
55 virtual void zoomIn() override;
56 virtual void zoomOut() override;
57 virtual void zoomOriginal() override;
58 protected:
59 virtual void showEvent(QShowEvent *event) override;
60 private slots:
61 void loadClicked();
62 private:
63 Imap::Network::MsgPartNetAccessManager *manager;
64 QPersistentModelIndex partIndex;
65 PartWidgetFactory *m_factory;
66 int m_recursionDepth;
67 UiUtils::PartLoadingOptions m_loadingMode;
68 QWidget *realPart;
69 QPushButton *loadButton;
70 bool m_loadOnShow;
72 LoadablePartWidget(const LoadablePartWidget &); // don't implement
73 LoadablePartWidget &operator=(const LoadablePartWidget &); // don't implement
78 #endif // LOADABLEPARTWIDGET_H