File: mainwindow.h

package info (click to toggle)
guymager 0.8.13-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,768 kB
  • sloc: cpp: 17,479; makefile: 28; sh: 22
file content (141 lines) | stat: -rw-r--r-- 5,445 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
// ****************************************************************************
//  Project:        GUYMAGER
// ****************************************************************************
//  Programmer:     Guy Voncken
//                  Police Grand-Ducale
//                  Service de Police Judiciaire
//                  Section Nouvelles Technologies
// ****************************************************************************

// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017,
// 2018, 2019, 2020
// Guy Voncken
//
// This file is part of Guymager.
//
// Guymager is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 2 of the License, or
// (at your option) any later version.
//
// Guymager is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Guymager. If not, see <http://www.gnu.org/licenses/>.

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#ifndef COMMON_H
   #include "common.h"
#endif

#if (QT_VERSION >= 0x050000)
   #include <QtWidgets> //lint !e537 Repeated include
#else
   #include <QtGui>     //lint !e537 Repeated include
#endif

#ifndef DEVICE_H
   #include "device.h"
#endif

// Main window table column names
// ------------------------------

#define MAINWINDOW_COLUMN_SerialNr       QT_TRANSLATE_NOOP("t_DeviceListModel", "SerialNr"           )
#define MAINWINDOW_COLUMN_LinuxDevice    QT_TRANSLATE_NOOP("t_DeviceListModel", "LinuxDevice"        )
#define MAINWINDOW_COLUMN_Model          QT_TRANSLATE_NOOP("t_DeviceListModel", "Model"              )
#define MAINWINDOW_COLUMN_NativePath     QT_TRANSLATE_NOOP("t_DeviceListModel", "NativePath"         )
#define MAINWINDOW_COLUMN_ByPath         QT_TRANSLATE_NOOP("t_DeviceListModel", "ByPath"             )
#define MAINWINDOW_COLUMN_Interface      QT_TRANSLATE_NOOP("t_DeviceListModel", "Interface"          )
#define MAINWINDOW_COLUMN_State          QT_TRANSLATE_NOOP("t_DeviceListModel", "State"              )
#define MAINWINDOW_COLUMN_AddStateInfo   QT_TRANSLATE_NOOP("t_DeviceListModel", "AdditionalStateInfo")
#define MAINWINDOW_COLUMN_Size           QT_TRANSLATE_NOOP("t_DeviceListModel", "Size"               )
#define MAINWINDOW_COLUMN_HiddenAreas    QT_TRANSLATE_NOOP("t_DeviceListModel", "HiddenAreas"        )
#define MAINWINDOW_COLUMN_BadSectors     QT_TRANSLATE_NOOP("t_DeviceListModel", "BadSectors"         )
#define MAINWINDOW_COLUMN_Progress       QT_TRANSLATE_NOOP("t_DeviceListModel", "Progress"           )
#define MAINWINDOW_COLUMN_AverageSpeed   QT_TRANSLATE_NOOP("t_DeviceListModel", "AverageSpeed"       )
#define MAINWINDOW_COLUMN_TimeRemaining  QT_TRANSLATE_NOOP("t_DeviceListModel", "TimeRemaining"      )
#define MAINWINDOW_COLUMN_FifoUsage      QT_TRANSLATE_NOOP("t_DeviceListModel", "FifoUsage"          )
#define MAINWINDOW_COLUMN_SectorSizeLog  QT_TRANSLATE_NOOP("t_DeviceListModel", "SectorSizeLog"      )
#define MAINWINDOW_COLUMN_SectorSizePhys QT_TRANSLATE_NOOP("t_DeviceListModel", "SectorSizePhys"     )
#define MAINWINDOW_COLUMN_CurrentSpeed   QT_TRANSLATE_NOOP("t_DeviceListModel", "CurrentSpeed"       )
#define MAINWINDOW_COLUMN_UserField                                             "UserField" // No automatic Qt translation for this one, see t_MainTranslator
#define MAINWINDOW_COLUMN_Examiner       QT_TRANSLATE_NOOP("t_DeviceListModel", "Examiner"           )

// Main window classes
// -------------------

class t_MainWindowLocal;

class t_MainWindow: public QMainWindow
{
   Q_OBJECT

   public:
      t_MainWindow (void);
      t_MainWindow (t_pDeviceList pDeviceList, QWidget *pParent = 0, Qt::WindowFlags Flags = 0);
     ~t_MainWindow ();

   APIRET RemoveSpecialDevice (t_pDevice pDevice);
   bool   AutoExit (void);

   private:
      APIRET CreateMenu             (void);
      APIRET CheckDisconnectTimeout (void);

   protected:
      void closeEvent (QCloseEvent *pEvent);

   public slots:
      void SlotRescan           (void);
      
   private slots:
      void SlotAddSpecialDevice (void);
      void SlotDebug            (void);
      void SlotAboutGuymager    (void);
      void SlotAboutQt          (void);
      void SlotAutoExit         (void);
      void SlotScanStarted      (void);
      void SlotScanFinished     (t_pDeviceList);
      void SlotRefresh          (void);
      void SlotUpdateRunStats   (void);

   signals:
      void SignalAutoExit       (void);

   private:
      t_MainWindowLocal *pOwn;
};

#ifdef DEVICELISTMODEL_H
   typedef struct
   {
      const char                      *pName;
      t_DeviceListModel::t_pGetDataFn  pGetDataFn;
      int                               DisplayType;
   } t_MainWindowColumn, *t_pMainWindowColumn;

   t_pMainWindowColumn MainWindowGetColumn (const char *pName);
#endif

// ------------------------------------
//             Error codes
// ------------------------------------

enum
{
   ERROR_MAINWINDOW_CONSTRUCTOR_NOT_SUPPORTED = ERROR_BASE_MAINWINDOW + 1,
   ERROR_MAINWINDOW_INVALID_COLUMN,
   ERROR_MAINWINDOW_INVALID_DATATYPE,
   ERROR_MAINWINDOW_DEVICE_NOT_FOUND,
   ERROR_MAINWINDOW_UNKNOWN_COLUMN
};


#endif