ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
ecvApplication.cpp
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #include <QtGlobal>
9 
10 #ifdef Q_OS_MAC
11 #include <QFileOpenEvent>
12 #endif
13 
14 // Qt
15 #include <QMap>
16 
17 // qCC_io
18 #include "FileIO.h"
19 #include "MainWindow.h"
20 #include "ecvApplication.h"
21 
24 struct FileVersionToVersion : QMap<short, QString> {
26  insert(10, "1.0 (before 2012)");
27  insert(20, "2.0 (05/04/2012)");
28  insert(21, "2.4 (07/02/2012)");
29  insert(22, "2.4 (11/26/2012)");
30  insert(23, "2.4 (02/07/2013)");
31  insert(24, "2.4 (02/22/2013)");
32  insert(25, "2.4 (03/16/2013)");
33  insert(26, "2.4 (04/03/2013)");
34  insert(27, "2.4 (04/12/2013)");
35  insert(28, "2.5.0 (07/12/2013)");
36  insert(29, "2.5.0 (08/14/2013)");
37  insert(30, "2.5.0 (08/30/2013)");
38  insert(31, "2.5.0 (09/25/2013)");
39  insert(32, "2.5.1 (10/11/2013)");
40  insert(33, "2.5.2 (12/19/2013)");
41  insert(34, "2.5.3 (01/09/2014)");
42  insert(35, "2.5.4 (02/13/2014)");
43  insert(36, "2.5.5 (05/30/2014)");
44  insert(37, "2.5.5 (08/24/2014)");
45  insert(38, "2.6.0 (09/14/2014)");
46  insert(39, "2.6.1 (01/30/2015)");
47  insert(40, "2.6.2 (08/06/2015)");
48  insert(41, "2.6.2 (09/01/2015)");
49  insert(42, "2.6.2 (10/07/2015)");
50  insert(43, "2.6.3 (01/07/2016)");
51  insert(44, "2.8.0 (07/07/2016)");
52  insert(45, "2.8.0 (10/06/2016)");
53  insert(46, "2.8.0 (11/03/2016)");
54  insert(47, "2.9.0 (12/22/2016)");
55  insert(48, "2.10.0 (10/19/2018)");
56  insert(49, "2.11.0 (03/31/2019)");
57  insert(50, "2.11.0 (10/06/2019)");
58  insert(51, "2.12.0 (03/29/2019)");
59  insert(52, "2.12.0 (11/30/2020)");
60  insert(53, "2.13.alpha (10/02/2022)");
61  insert(54, "2.13.alpha (01/29/2023)");
62  insert(55, "2.9.2 (02/19/2024)");
63  insert(56, "3.9.3 (01/05/2025)");
64  insert(57, "3.9.4 (01/05/2026)");
65  }
66 
67  QString getMinVersion(short fileVersion) const {
68  if (contains(fileVersion)) {
69  return value(fileVersion);
70  } else {
71  return "Unknown version";
72  }
73  }
74 };
76 
77 QString ecvApplication::GetMinVersionForFileVersion(short fileVersion) {
78  return s_fileVersionToVersion.getMinVersion(fileVersion);
79 }
80 
81 ecvApplication::ecvApplication(int &argc, char **argv, bool isCommandLine)
83  argc, argv, isCommandLine, QStringLiteral("3.9.0 (Asher)")) {
84  setApplicationName("ACloudViewer");
85 
86  FileIO::setWriterInfo(applicationName(), versionStr());
87 }
88 
89 bool ecvApplication::event(QEvent *inEvent) {
90 #ifdef Q_OS_MAC
91  switch (inEvent->type()) {
92  case QEvent::FileOpen: {
93  MainWindow *mainWindow = MainWindow::TheInstance();
94 
95  if (mainWindow == nullptr) {
96  return false;
97  }
98 
99  mainWindow->addToDB(QStringList(
100  static_cast<QFileOpenEvent *>(inEvent)->file()));
101  return true;
102  }
103 
104  default:
105  break;
106  }
107 #endif
108 
109  return ecvApplicationBase::event(inEvent);
110 }
MouseEvent event
static void setWriterInfo(const QString &applicationName, const QString &version)
static MainWindow * TheInstance()
Returns the unique instance of this object.
void addToDB(const QStringList &filenames, QString fileFilter=QString(), bool displayDialog=true)
QString versionStr() const
ecvApplication(int &argc, char **argv, bool isCommandLine)
bool event(QEvent *inEvent) override
static QString GetMinVersionForFileVersion(short fileVersion)
static FileVersionToVersion s_fileVersionToVersion
QString getMinVersion(short fileVersion) const