ACF $AcfVersion:0$
CFilePreviewGuiComp.h
Go to the documentation of this file.
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ACF-Commercial
2#pragma once
3
4
5// Qt includes
6
7#include <QtCore/QFileSystemWatcher>
8#include <QtCore/QTimer>
9#include <QtCore/QDateTime>
10
11#include <QtCore/QFutureWatcher>
12#if QT_VERSION >= 0x050000
13#include <QtWidgets/QGraphicsView>
14#else
15#include <QtGui/QGraphicsView>
16#endif
17
18// ACF includes
22
23#include <GeneratedFiles/ifilegui/ui_CFilePreviewGuiComp.h>
24
25
26namespace ifilegui
27{
28
29
37 Ui::CFilePreviewGuiComp, ifile::IFileNameParam>
38{
39 Q_OBJECT
40
41public:
43 Ui::CFilePreviewGuiComp, ifile::IFileNameParam> BaseClass;
44
45 I_BEGIN_COMPONENT(CFilePreviewGuiComp);
46 I_ASSIGN(m_fileLoaderCompPtr, "FileLoader", "Object loader", true, "FileLoader");
47 I_ASSIGN(m_objectFactoryCompPtr, "ObjectFactory", "Factory for creation of data object to be previewed", true, "ObjectFactory");
48 I_ASSIGN(m_currentPreviewObjectCompPtr, "CurrentPreviewObject", "Current object will be copied here if set", false, "CurrentPreviewObject");
49 I_ASSIGN(m_objectObserverCompPtr, "ObjectView", "View component for the object", true, "ObjectView");
50 I_ASSIGN_TO(m_objectGuiCompPtr, m_objectObserverCompPtr, true);
51 I_ASSIGN(m_isAsynchronPreviewGenerationEnabledAttrPtr, "AsynchronPreviewGenerationEnabled", "If enabled, the preview generation will be done in a separate thread", true, true);
52 I_ASSIGN(m_noAvailableLabelAttrPtr, "NoAvailableLabel", "Text used for no available preview state", false, "");
53 I_ASSIGN(m_noAvailableIconPathAttrPtr, "NoAvailableIconPath", "Path to the icon used for no available preview state", false, "");
54 I_END_COMPONENT;
55
57
58protected:
59 // reimplemented (iqtgui::TGuiObserverWrap)
60 virtual void OnGuiModelAttached() override;
61 virtual void OnGuiModelDetached() override;
62 virtual void UpdateGui(const istd::IChangeable::ChangeSet& changeSet) override;
63
64 // reimplemented (iqtgui::CGuiComponentBase)
65 virtual void OnGuiCreated() override;
66 virtual void OnGuiDestroyed() override;
67 virtual void OnGuiRetranslate() override;
68
69 // reimplemented (icomp::CComponentBase)
70 virtual void OnComponentCreated() override;
71
72private Q_SLOTS:
73 void UpdateFilePreview();
74 void OnPreviewGenerationFinished();
75
76private:
77 void UpdateObjectFromFile();
78 void ResetPreview();
79
80protected:
84 class PreviewWidget : public QGraphicsView
85 {
86 public:
87 explicit PreviewWidget(QWidget *parent = NULL);
88
89 protected:
90 // reimplemented (QWidget)
91 virtual void resizeEvent(QResizeEvent* eventPtr) override;
92 };
93
94protected:
95 I_REF(ifile::IFilePersistence, m_fileLoaderCompPtr);
96 I_FACT(istd::IChangeable, m_objectFactoryCompPtr);
97 I_REF(imod::IObserver, m_objectObserverCompPtr);
98 I_REF(iqtgui::IGuiObject, m_objectGuiCompPtr);
99 I_REF(istd::IChangeable, m_currentPreviewObjectCompPtr);
100 I_ATTR(bool, m_isAsynchronPreviewGenerationEnabledAttrPtr);
101 I_TEXTATTR(m_noAvailableLabelAttrPtr);
102 I_ATTR(QByteArray, m_noAvailableIconPathAttrPtr);
103
104 QFileSystemWatcher m_fileSystemObserver;
105
108
109 QFutureWatcher<void> m_previewGenerationWatcher;
110
113
114 QMutex m_mutex;
115
117 QTimer m_timer;
118};
119
120
121} // namespace ifilegui
122
123
124
125
Common interface for any file system item name (e.g directory, file or URL path)
Interface providing loading and saving of data objects.
Helper class to watch after QGraphicsView Resize.
virtual void resizeEvent(QResizeEvent *eventPtr) override
Component for the preview of the file contents.
virtual void OnGuiModelDetached() override
istd::IChangeableUniquePtr m_previewObjectPtr
virtual void OnComponentCreated() override
QFutureWatcher< void > m_previewGenerationWatcher
istd::IChangeableUniquePtr m_workingObjectPtr
virtual void OnGuiModelAttached() override
I_TEXTATTR(m_noAvailableLabelAttrPtr)
virtual void OnGuiDestroyed() override
virtual void OnGuiCreated() override
iqtgui::TDesignerGuiObserverCompBase< Ui::CFilePreviewGuiComp, ifile::IFileNameParam > BaseClass
virtual void OnGuiRetranslate() override
virtual void UpdateGui(const istd::IChangeable::ChangeSet &changeSet) override
Common interface for all classes implementing the Observer functionality in the Model/Observer design...
Definition IObserver.h:156
Common interface for GUI objects used in ACF component context.
Definition IGuiObject.h:133
Base class for all Qt GUI components.
Set of change flags (its IDs).
Definition IChangeable.h:36
Common interface for data model objects, which can be changed.
Definition IChangeable.h:28
#define NULL
Definition istd.h:74
GUI specific interfaces and components for file system access and representation.