// ************************************************************************** // // (C) Copyright 2009 Swiss SIMTEC AG // // ************************************************************************** // // $HeadURL$ // $LastChangedBy$ // $LastChangedDate$ // $LastChangedRevision$ // // ************************************************************************** #pragma once #include #include #include "LogViewModels.hpp" #include "LogViewTelegramEditModel.hpp" #include #include #include "logger.h" namespace N_LogView { class LogViewTelegram; } class QTableView; class QGroupBox; class QCheckBox; class QLabel; class QLineEdit; class QPushButton; class QSplitter; class QToolBox; namespace N_LogView { class LogViewInjectionThread; class TelegramEdit; /** * @author alois.wismer * @version 1.0 * @created 03-Feb-2010 16:44:53 */ class LogViewGui : public QMainWindow { Q_OBJECT public: explicit LogViewGui(QWidget* a_parent); static const QLatin1String WINDOW_GROUP; static const QLatin1String SCREEN; protected: const QSize RADIO_BUTTON_ICON_SIZE; static const QLatin1String SIZE; static const QLatin1String POS; static const QLatin1String SPLITTPOS; static const QLatin1String TOOLBOXINDEX; // Central QGroupBox *m_CentralSelectionGroup; std::set m_CentralTelegramFilterList; QCheckBox* m_SentCentralTelCheckBox; QCheckBox* m_ReceivedCentralTelCheckBox; QCheckBox* m_PosCentralTelCheckBox; QCheckBox* m_ackCentralTelCheckBox; // Tetra QGroupBox *m_TetraSelectionGroup; std::set m_TetraTelegramFilterList; QCheckBox* m_SentTetraTelCheckBox; QCheckBox* m_ReceivedTetraTelCheckBox; QCheckBox* m_PosTetraTelCheckBox; QCheckBox* m_LoginTetraTelCheckBox; QCheckBox* m_RegisterTetraTelCheckBox; QCheckBox* m_ReportTetraTelCheckBox; QCheckBox* m_FragmentedTetraTelCheckBox; QCheckBox* m_AirInterfaceLoadTetraTelCheckBox; // Wls QGroupBox *m_WlsSelectionGroup; std::set m_WlsTelegramFilterList; QCheckBox* m_SentWlsTelCheckBox; QCheckBox* m_ReceivedWlsTelCheckBox; QCheckBox* m_PosWlsTelCheckBox; QCheckBox* m_ackWlsTelCheckBox; QString m_ActualLogfile; qint64 m_LogfileSize; bool m_DoReload; QToolBox* m_ToolBox; QTableView *m_ParticipantTableView; ParticipantModel *m_participantModel; QSortFilterProxyModel *m_participantProxyModel; QTableView *m_logTelegramView; TelegramModel *m_telegramModel; TelegramProxyModel *m_telegramProxyModel; QLabel *m_TelegramStatus; QLabel *m_ParticipantStatus; QGroupBox *m_ParticipantSelectionGroup; TelegramEdit *m_EditTelegramController; QTimer *m_TailTimer; QSplitter *m_Splitter; LogViewInjectionThread *m_InjectionThread; QLabel *m_InjectionStatus; // ausstg, telcount QHash m_participantListTelCount; // ausstg, issi QHash m_participantListIssi; QAction *m_reloadAction; QTimer *m_replayTimer; int m_currentReplayRow; NGL::INGLLogger &m_logger; protected: void readTelegramsFromLogFile(const QString& a_fileName, const qint64 a_filePos = 0); /** * returns true if the participant was added to the list */ void addToParticipantList(const QSharedPointer &a_telegram); void syncParticipantList(); QCheckBox* createRadioButton(const QString& a_buttonName, const QString& a_iconName); /** * starts the thread, which trys to connect to the injection-server of PrtCnv */ void startInjectionThread(); void closeEvent(QCloseEvent* a_closeEvent) override; void createCentralSelectionWidget(); void createTetraSelectionWidget(); void createWlsSelectionWidget(); protected slots: void addTelegramToEdit(); void showHexData(); void exportAsCsv(); void exportAsJson(); void onStartLogReplay(); void onReplayTimerTimeout(); void loadSpecificationFiles(); void newTelegramFile(); void loadTelegramFile(); /** * Checks whether the size of actual logfile has changed. If yes, the new log- * entries will be read and shown within table. */ void updateLogfile(); void selectedParticipantChanged(); void showTelegramTable(); //SLOT for creating the ContextMenu void customMenuRequested(const QPoint &pos); void changeSettings(); /** * Toggles whether the logfile must be periodically checked for changes */ void reloadOnOff(); /** * * @param a_picName * @param a_toopTipText */ void updateInjectionStatus(const QString& a_picName, const QString& a_toopTipText); void onLogTelegramViewDoubleClicked(const QModelIndex &index); private slots: void onSettingsChanged(uint32_t changedFlags); }; }