EHM DAL 0.2.3
Data abstraction layer for Eastside Hockey Manager
Loading...
Searching...
No Matches
spreadsheet_file.h
1#pragma once
2
3// Application headers
4#include "include/widgets/dialogs/progress_dialog.h"
5
6// Qt headers
7#include <vector>
8#include <QFile>
9#include <QObject>
10#include <QRegularExpression>
11#include <QVariant>
12
13namespace ehm_dal::spreadsheet {
14
15// --- Spreadsheet file base class --- //
17{
18public:
19 // Constructor
20 SpreadsheetFile() { progress_dialog_.setSilent(hide_progress_); }
21 SpreadsheetFile(QFile &file)
22 : file_(&file)
23 {
24 progress_dialog_.setSilent(hide_progress_);
25 }
26
27 // Destructor
28 virtual ~SpreadsheetFile() { progress_dialog_.complete(); }
29
30 // File I/O
31 virtual bool read(std::vector<std::vector<QVariant>> &header,
32 std::vector<std::vector<QVariant>> &cells,
33 const qint32 header_count = 0)
34 = 0;
35 virtual bool writeCells(std::vector<QVariant> &prefix, std::vector<std::vector<QVariant>> &cells)
36 = 0;
37 virtual bool writeHeader(std::vector<QVariant> &prefix,
38 std::vector<std::vector<QVariant>> &header)
39 = 0;
40
41 // Get data
42 QString dateFormat() const;
43
44 // Set silent
45 void setSilent(const bool silent) {hide_progress_ = silent;}
46
47protected:
48 // A digit (\d), zero or more times (*)
49 const QRegularExpression numerical_{"\\d*"};
50
51 // Stream
52 QFile *file_{nullptr};
53
54 // Header row count
55 qint32 header_count_ {2};
56
57 // Progress dialog
58 bool hide_progress_ {false};
59 widgets::ProgressDialog progress_dialog_{QStringLiteral("Spreadsheet File"), 0, 1};
60};
61} // namespace ehm_dal::spreadsheet
Definition: spreadsheet_file.h:17
Definition: progress_dialog.h:10