ICF 3.0.5.47
Technical documentation of ICF Libraries
CFilePreviewGuiComp.h
Go to the documentation of this file.
1/********************************************************************************
2** This file is part of the ICF Framework. Copyright (C) Witold Gantzke & Kirill Lepskiy
3** ICF Framework may be used under the terms of the LGPL License v. 2.1 by the Free Software Foundation.
4********************************************************************************/
5
6#ifndef ifilegui_CFilePreviewGuiComp_included
7#define ifilegui_CFilePreviewGuiComp_included
8
9
10// Qt includes
11#include <QtCore/QFileSystemWatcher>
12#include <QtCore/QTimer>
13#include <QtCore/QDateTime>
14#include <QtCore/QFutureWatcher>
15#include <QtWidgets/QGraphicsView>
16
17// ICF includes
22
23#include <GeneratedFiles/ifilegui/ui_CFilePreviewGuiComp.h>
24
25
26namespace ifilegui
27{
28
29
35class CFilePreviewGuiComp: public istdgui::TDesignerGuiObserverCompBase<Ui::CFilePreviewGuiComp, ifile::IFileNameParam>
36{
37 Q_OBJECT
38
39public:
41
42 I_BEGIN_COMPONENT(CFilePreviewGuiComp);
43 I_ASSIGN(m_fileLoaderCompPtr, "FileLoader", "Object loader", true, "FileLoader");
44 I_ASSIGN(m_objectFactoryCompPtr, "ObjectFactory", "Factory for creation of data object to be previewed", true, "ObjectFactory");
45 I_ASSIGN(m_currentPreviewObjectCompPtr, "CurrentPreviewObject", "Current object will be copied here if set", false, "CurrentPreviewObject");
46 I_ASSIGN(m_objectObserverCompPtr, "ObjectView", "View component for the object", true, "ObjectView");
47 I_ASSIGN_TO(m_objectGuiCompPtr, m_objectObserverCompPtr, true);
48 I_ASSIGN(m_isAsyncLoadEnabledAttrPtr, "AsynchronPreviewGenerationEnabled", "If enabled, the preview generation will be done in a separate thread", true, true);
49 I_ASSIGN(m_noAvailableLabelAttrPtr, "NoAvailableLabel", "Text used for no available preview state", false, "");
50 I_ASSIGN(m_noAvailableIconPathAttrPtr, "NoAvailableIconPath", "Path to the icon used for no available preview state", false, "");
51 I_END_COMPONENT;
52
54
55protected:
56 // reimplemented (istdgui::TGuiObserverWrap)
57 void OnGuiModelAttached() override;
58 void OnGuiModelDetached() override;
59 void UpdateGui(const istd::IChangeable::ChangeSet& changeSet) override;
60
61 // reimplemented (istdgui::CGuiComponentBase)
62 void OnGuiCreated() override;
63 void OnGuiDestroyed() override;
64 void OnGuiRetranslate() override;
65
66 // reimplemented (icomp::CComponentBase)
67 void OnComponentCreated() override;
68
69Q_SIGNALS:
70 void PreviewGenerationFinished(bool isSuccess);
71
72private Q_SLOTS:
73 void UpdateFilePreview();
74 void OnPreviewGenerationFinished(bool isSuccess);
75
76private:
77 iproc::CTaskState UpdateObjectFromFile(QString filePath);
78 void ResetPreview();
79
80protected:
84 class PreviewWidget: public QGraphicsView
85 {
86 public:
87 explicit PreviewWidget(QWidget* parent = nullptr);
88
89 protected:
90 // reimplemented (QWidget)
91 void resizeEvent(QResizeEvent* eventPtr);
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(istdgui::IGuiObject, m_objectGuiCompPtr);
99 I_REF(istd::IChangeable, m_currentPreviewObjectCompPtr);
100 I_ATTR(bool, m_isAsyncLoadEnabledAttrPtr);
101 I_TEXTATTR(m_noAvailableLabelAttrPtr);
102 I_ATTR(QByteArray, m_noAvailableIconPathAttrPtr);
103
104 QFileSystemWatcher m_fileSystemObserver;
105
108
109 std::unique_ptr<istd::IChangeable> m_previewObjectPtr;
110 std::unique_ptr<istd::IChangeable> m_workingObjectPtr;
111
112 QMutex m_mutex;
113
115
117 QTimer m_timer;
118};
119
120
121} // namespace ifilegui
122
123
124#endif // !ifilegui_CFilePreviewGuiComp_included
125
126
Interface providing loading and saving of data objects.
Helper class to watch after QGraphicsView Resize.
void resizeEvent(QResizeEvent *eventPtr)
Component for the preview of the file contents.
void OnGuiCreated() override
Called just after GUI is initialized.
void OnGuiRetranslate() override
Called from widget event filter when GUI should be retranslated.
I_TEXTATTR(m_noAvailableLabelAttrPtr)
void OnGuiModelAttached() override
void UpdateGui(const istd::IChangeable::ChangeSet &changeSet) override
istdgui::TDesignerGuiObserverCompBase< Ui::CFilePreviewGuiComp, ifile::IFileNameParam > BaseClass
istd::CSingleAsyncCaller m_asyncCaller
void OnGuiModelDetached() override
void PreviewGenerationFinished(bool isSuccess)
void OnComponentCreated() override
std::unique_ptr< istd::IChangeable > m_workingObjectPtr
void OnGuiDestroyed() override
Called just before GUI is released.
std::unique_ptr< istd::IChangeable > m_previewObjectPtr
Common interface for all classes implementing the Observer functionality in the Model/Observer design...
Definition IObserver.h:30
Represent state of asynchronous operation.
Definition CTaskState.h:28
Call some function asynchronously in separated thread.
Set of change flags (its IDs).
Definition IChangeable.h:38
Common interface for data model objects, which can be changed.
Definition IChangeable.h:32
Common interface for GUI objects using in component context.
Definition IGuiObject.h:27
Base class for all Qt GUI components.
GUI specific interfaces and components for file system access and representation.

© Witold Gantzke and Kirill Lepskiy