FOSSredder 0.5.0
Loading...
Searching...
No Matches
ExportViewModel.h
Go to the documentation of this file.
1
5
6#pragma once
7
8#include <QObject>
9#include <QString>
10#include <QVariantList>
11#include <QVariantMap>
12#include <qqmlintegration.h>
13
14namespace ui {
15
16class Actions;
17class ExportWorkflow;
19class Settings;
22class WorkspaceStore;
23
28class ExportViewModel : public QObject {
29 Q_OBJECT
30 QML_NAMED_ELEMENT(ExportViewModel)
31
32 Q_PROPERTY(QString targetDirectory READ targetDirectory WRITE
34 Q_PROPERTY(int packageFormatIndex READ packageFormatIndex WRITE
36 Q_PROPERTY(QString addMode READ addMode WRITE setAddMode NOTIFY changed)
37 Q_PROPERTY(QVariantList annualRows READ annualRows NOTIFY changed)
38 Q_PROPERTY(QVariantList analysisRows READ analysisRows NOTIFY changed)
39 Q_PROPERTY(QVariantList addRows READ addRows NOTIFY changed)
40 Q_PROPERTY(QString addTextRole READ addTextRole NOTIFY changed)
41 Q_PROPERTY(int selectedAddIndex READ selectedAddIndex NOTIFY changed)
42 Q_PROPERTY(bool canAddEntry READ canAddEntry NOTIFY changed)
43 Q_PROPERTY(QVariantList exportEntries READ exportEntries NOTIFY changed)
44 Q_PROPERTY(bool canStart READ canStart NOTIFY changed)
45 Q_PROPERTY(bool showClear READ showClear NOTIFY changed)
46 Q_PROPERTY(bool showCancel READ showCancel NOTIFY changed)
47 Q_PROPERTY(bool showPause READ showPause NOTIFY changed)
48 Q_PROPERTY(bool isPaused READ isPaused NOTIFY changed)
49 Q_PROPERTY(QString pauseText READ pauseText NOTIFY changed)
50 Q_PROPERTY(double progress READ progress NOTIFY changed)
51 Q_PROPERTY(QString statusText READ statusText NOTIFY changed)
52 Q_PROPERTY(bool hasError READ hasError NOTIFY changed)
53 Q_PROPERTY(QVariantList exportLogs READ exportLogs NOTIFY changed)
54
55public:
60 explicit ExportViewModel(QObject* parent = nullptr);
61
66 WorkspaceSelectors* selectors);
76 void setActions(Actions* value);
86 void setSettings(Settings* value);
87
92 QString targetDirectory() const {
93 return targetDirectory_;
94 }
95
99 void setTargetDirectory(const QString& value);
104 int packageFormatIndex() const noexcept {
105 return packageFormatIndex_;
106 }
107
111 void setPackageFormatIndex(int value);
117 QString addMode() const {
118 return addMode_;
119 }
120
124 void setAddMode(const QString& value);
125
130 QVariantList annualRows() const;
135 QVariantList analysisRows() const;
140 QVariantList addRows() const;
145 QString addTextRole() const;
150 int selectedAddIndex() const;
155 bool canAddEntry() const;
160 QVariantList exportEntries() const {
161 return exportEntries_;
162 }
163
167 bool canStart() const;
172 bool showClear() const;
177 bool showCancel() const;
182 bool showPause() const;
187 bool isPaused() const;
192 QString pauseText() const;
197 double progress() const;
202 QString statusText() const;
207 bool hasError() const;
212 QVariantList exportLogs() const;
213
215 Q_INVOKABLE void refreshFromWorkspace();
217 Q_INVOKABLE void browseDirectory();
219 Q_INVOKABLE void clearForm();
222 Q_INVOKABLE void startExport();
224 Q_INVOKABLE void cancelExport();
226 Q_INVOKABLE void pauseExport();
228 Q_INVOKABLE void resumeExport();
233 Q_INVOKABLE void openExportLogLocation(const QString& logId);
238 Q_INVOKABLE void deleteExportLog(const QString& logId);
243 Q_INVOKABLE void selectAddRow(int index);
245 Q_INVOKABLE void addSelectedEntry();
250 Q_INVOKABLE void removeEntry(int index);
256 Q_INVOKABLE void updateAnnualEntryAtIndex(int entryIndex, int annualIndex);
262 Q_INVOKABLE void updateAnnualCollapsed(int entryIndex, bool collapsed);
268 Q_INVOKABLE void updateStandaloneAnalysisAtIndex(int entryIndex,
269 int analysisIndex);
275 Q_INVOKABLE void
276 updateStandaloneAnalysisExportType(int entryIndex, const QString& exportType);
283 Q_INVOKABLE void updateAnnualAnalysisExportType(int entryIndex,
284 int analysisIndex,
285 const QString& exportType);
286signals:
288 void changed();
289
290private:
295 bool isAnnualMode() const;
301 QVariantMap annualRowById(const QString& id) const;
307 QVariantMap analysisRowById(const QString& id) const;
312 QString selectedAddObjectId() const;
316 void ensureAddSelection();
320 void refreshEntriesFromWorkspace();
325 QVariantList exportItems() const;
333 QVariantMap createAnnualEntry(const QString& id, const QString& name,
334 const QVariantList& analyses) const;
343 QVariantMap createAnalysisEntry(const QString& id, const QString& name,
344 const QString& type,
345 const QString& exportType) const;
352 QVariantList analysesForAnnual(const QString& annualId,
353 const QVariantList& currentAnalyses) const;
359 QVariantList exportOptionsForAnalysisType(const QString& type) const;
366 QString normalizedExportType(const QString& exportType,
367 const QString& type) const;
373 QString defaultExportType(const QString& type) const;
379 QString analysisTypeById(const QString& id) const;
384 QString defaultTargetDirectory() const;
389 QVariantMap payload() const;
394 QString defaultLocale() const;
399 int workflowMode() const;
404 void bindWorkspaceRoles(WorkspaceStore* store, WorkspaceCommands* commands,
405 WorkspaceSelectors* selectors);
410 void bindActions(Actions* value);
415 void bindSettings(Settings* value);
420 void bindWorkflow(ExportWorkflow* value);
424 void configureExportLogSink();
428 void emitChanged();
429
430 WorkspaceStore* store_ = nullptr;
431 WorkspaceCommands* commands_ = nullptr;
432 WorkspaceSelectors* selectors_ = nullptr;
433 ExportWorkflow* exportWorkflow_ = nullptr;
434 Actions* actions_ = nullptr;
435 FileSystemBrowser* fileSystemBrowser_ = nullptr;
436 Settings* settings_ = nullptr;
437 QString targetDirectory_;
438 QString appliedDefaultTargetDirectory_;
439 int packageFormatIndex_ = 0;
440 QString addMode_ = QStringLiteral("annual");
441 QString selectedAddAnnualId_;
442 QString selectedAddAnalysisId_;
443 QVariantList exportEntries_;
444};
445
446} // namespace ui
Owns the main window actions and exposes them to QML.
Definition AppActions.h:18
Q_INVOKABLE void clearForm()
Clears the export form back to defaults.
QVariantList analysisRows
QString addMode() const
Returns whether the add combobox currently shows annuals or analyses.
Q_INVOKABLE void browseDirectory()
Opens the export directory picker through shell actions.
Q_INVOKABLE void cancelExport()
Cancels the active export workflow.
void changed()
Emitted when export view model state changed.
QVariantList exportEntries
void setActions(Actions *value)
Binds shell actions such as the export directory picker.
Q_INVOKABLE void updateStandaloneAnalysisAtIndex(int entryIndex, int analysisIndex)
Replaces a standalone analysis package entry.
Q_INVOKABLE void refreshFromWorkspace()
Refreshes export form rows from the current workspace state.
Q_INVOKABLE void deleteExportLog(const QString &logId)
Deletes an export log from the workspace.
void setPackageFormatIndex(int value)
Updates the selected package format index.
Q_INVOKABLE void updateAnnualAnalysisExportType(int entryIndex, int analysisIndex, const QString &exportType)
Updates export type for an analysis inside an annual entry.
int packageFormatIndex() const noexcept
Returns the selected package format index.
Q_INVOKABLE void openExportLogLocation(const QString &logId)
Opens the target folder for an export log.
Q_INVOKABLE void pauseExport()
Pauses the active export workflow.
Q_INVOKABLE void updateStandaloneAnalysisExportType(int entryIndex, const QString &exportType)
Updates export type for a standalone analysis entry.
QVariantList exportEntries() const
Returns the currently configured export package entries.
void setWorkspaceRoles(WorkspaceStore *store, WorkspaceCommands *commands, WorkspaceSelectors *selectors)
Binds workspace roles used for catalog rows and export logs.
void setTargetDirectory(const QString &value)
Updates the selected export target directory.
Q_INVOKABLE void removeEntry(int index)
Removes an export package entry.
Q_INVOKABLE void addSelectedEntry()
Adds the selected annual or analysis to the export package.
void setSettings(Settings *value)
Binds export settings used by defaults and package options.
Q_INVOKABLE void updateAnnualCollapsed(int entryIndex, bool collapsed)
Updates collapsed state for an annual package entry.
void setFileSystemBrowser(FileSystemBrowser *value)
Binds filesystem defaults used by the export form.
QVariantList exportLogs
void setExportWorkflow(ExportWorkflow *value)
Binds the workflow used to execute exports.
Q_INVOKABLE void updateAnnualEntryAtIndex(int entryIndex, int annualIndex)
Replaces an annual package entry with another annual row.
Q_INVOKABLE void resumeExport()
Resumes the active export workflow.
ExportViewModel(QObject *parent=nullptr)
Creates the export view model.
Q_INVOKABLE void startExport()
Starts the export workflow with the current package configuration.
Q_INVOKABLE void selectAddRow(int index)
Selects a row in the current add combobox.
QVariantList annualRows
void setAddMode(const QString &value)
Switches the add combobox between annual and analysis mode.
Coordinates asynchronous exports from a read-only state snapshot.
Exposes directory listing and application-directory lookup to QML.
Stores and exposes globally persisted UI settings for settings-related views.
Definition Settings.h:19
Maps UI intent to core workspace writer commands.
Projects workspace store data into QML-facing read models.
Owns the current UI-side workspace snapshot and revision lifecycle.