FGx  1
 All Classes Files Functions Variables Enumerations Enumerator Macros Pages
utilities.h
1 /* ********************************************************
2  * utilities.h
3  * for fgx
4  *
5  * Created by Geoff R. Mclane, Paris
6  * © 2011 GPL2 (or later)
7  *
8  ******************************************************** */
9 #ifndef FGX_UTILITIES_H
10 #define FGX_UTILITIES_H
11 
12 #include <QFile>
13 #include <QTextStream>
14 #include <QString>
15 #include <QStringList>
16 #include <QDir>
17 #include <QDateTime>
18 #include <QFileDialog>
19 
20 // #include "zlib/fgx_zlib.h"
21 /* ZIP FILE */
22 // extern QString gzreadLine(gzFile file);
23 
24 /* LOG FILE FUNCTIONS */
25 
26 // out a QString to the current log
27 // flag - bit 1 = add line term (default)
28 // bit 2 = prepend time
29 #define olflg_AddLE 0x00000001
30 #define olflg_AddTm 0x00000002
31 extern void outLog(QString s, int flag = olflg_AddLE);
32 extern void util_setLogFile(QString file);
33 extern bool util_createLogFile(QString file);
34 extern bool util_setStdLogFile();
35 
36 /* GET FILE LIST per filter */
37 extern QStringList findFiles(const QString &startDir, QStringList filters, bool recurse = false);
38 /* GET DIRECTORY list */
39 extern QStringList findDirs(QString startDir, bool recurse = false);
40 
41 // given millisecond, return appropriate (nice) string, with units
42 extern QString getElapTimeStg(int ms);
43 extern QString util_getDateTimestg(void); // "yyyy/MM/dd HH:mm:ss"
44 extern QString util_getTimestg(void); // "HH:mm:ss"
45 
46 
47 
48 //===================================================================
49 //= ICAO Radio
50 extern char * abc_to_morse(char ch);
51 extern char * abc_to_telephony(char ch);
52 extern char * abc_to_phonetic(char ch);
53 extern char telephony_to_abc(char * pch);
54 extern char *telephony_to_morse(char * pch);
55 extern char *telephony_to_phonetic(char * pch);
56 
57 // simple class to 'test' a runtime
58 class testExe
59 {
60 public:
61  testExe();
62  testExe(QString ex);
63  ~testExe();
64  void setExe(QString ex) { exe = ex; }
65  void setArgs(QStringList ag) { args = ag; }
66  void setFinds(QStringList fnd) { finds = fnd; }
67  void setTimeout(int secs) { timeOut = secs; }
68  QString exe;
69  QStringList args;
70  QStringList finds;
71  QStringList extraEnv;
72  QString rtDir;
73  QString outStd;
74  QString outErr;
75  QString stgResult;
76  int errExit;
77  int timeOut;
78  int runTime;
79  int flagOpts;
80  int result;
81  bool runTest();
82 private:
83  void init();
84 };
85 
86 // native versions
87 extern QString util_browseDirectory(QWidget * parent = 0,
88  QString prompt = QString(),
89  QString current = QString());
90 extern QString util_browseFile(QWidget * parent = 0,
91  QString prompt = QString(),
92  QString current = QString(),
93  QStringList filter = QStringList(),
94  int options = 0);
95 extern QString util_browseNewFile(QWidget * parent = 0,
96  QString prompt = QString(),
97  QString current = QString(),
98  QStringList filter = QStringList(),
99  int options = 0);
100 
101 // simple dialog version
102 extern QString util_getFileName(QWidget *parent = 0, QString title = QString(), QString previous = QString(), QStringList filt = QStringList());
103 extern QString util_getDirName(QWidget *parent = 0, QString title = QString(), QString previous = QString());
104 extern QString util_getCurrentWorkDirectory();
105 
106 extern bool util_ensureUnixPathSep(QString &txt); // return 'true' if changed
107 extern QString util_getBasePath(QString in); // return path up to and including last '/'
108 extern QString util_getBaseName(QString in); // return name after last '/'
109 
110 // a distance estimate between two lat, lon positions, in km... using
111 #define EARTH_RAD 6370 // actually from 6,353 to 6,384 km
112 #define DEG2RAD 0.017453229251994329509 // est PI / 180
113 // FIX20110823 - dist_est_km() returned 'nan' if virtually the same point
114 // double dist_est_km(double lat1, double lon1, double lat2, double lon2)
115 extern double util_DistEst_km(double lat1, double lon1, double lat2, double lon2);
116 
117 #endif // FGX_UTILITIES_H
118 // eof - utilities.h