1 // Copyright (c) 2016 The SigViewer Development Team 2 // Licensed under the GNU General Public License (GPL) 3 // https://www.gnu.org/licenses/gpl 4 5 6 #ifndef MAIN_WINDOW_MODEL_IMPL_H 7 #define MAIN_WINDOW_MODEL_IMPL_H 8 9 #include "gui/application_context.h" 10 11 #include <QStringList> 12 #include <QTabWidget> 13 #include <QMap> 14 15 16 class QAction; 17 18 namespace sigviewer 19 { 20 21 class MainWindow; 22 23 //------------------------------------------------------------------------- 24 class MainWindowModelImpl : public QObject, public MainWindowModel 25 { 26 Q_OBJECT 27 public: 28 //------------------------------------------------------------------------- 29 MainWindowModelImpl (QSharedPointer<ApplicationContext> application_context); 30 31 //------------------------------------------------------------------------- 32 virtual ~MainWindowModelImpl (); 33 34 //------------------------------------------------------------------------- 35 virtual QSharedPointer<SignalVisualisationModel> createSignalVisualisation (QString const& title, 36 ChannelManager const& channel_manager); 37 38 //------------------------------------------------------------------------- 39 virtual QSharedPointer<SignalVisualisationModel> createSignalVisualisationOfFile (QSharedPointer<FileContext> file_ctx); 40 41 //------------------------------------------------------------------------- 42 virtual void closeCurrentFileTabs (); 43 44 //------------------------------------------------------------------------- 45 virtual QSharedPointer<SignalVisualisationModel> getCurrentSignalVisualisationModel (); 46 47 //------------------------------------------------------------------------- 48 virtual QSharedPointer<EventView> getCurrentEventView (); 49 50 public slots: 51 //------------------------------------------------------------------------- 52 void tabChanged (int tab_index); 53 54 //------------------------------------------------------------------------- 55 void closeTab (int tab_index); 56 57 private slots: 58 //------------------------------------------------------------------------- 59 void recentFileActivated(QAction* recent_file_action); 60 61 //------------------------------------------------------------------------- 62 void recentFileMenuAboutToShow(); 63 64 //------------------------------------------------------------------------- 65 void resetCurrentFileName (QString const& file_name); 66 67 private: 68 //------------------------------------------------------------------------- 69 void loadSettings(); 70 71 //------------------------------------------------------------------------- 72 void saveSettings(); 73 74 //------------------------------------------------------------------------- 75 int createSignalVisualisationImpl (ChannelManager const& channel_manager, 76 QSharedPointer<EventManager> event_manager); 77 78 //------------------------------------------------------------------------- 79 void storeAndInitTabContext (QSharedPointer<TabContext> context, int tab_index); 80 81 static int const NUMBER_RECENT_FILES_; 82 83 QSharedPointer<ApplicationContext> application_context_; 84 MainWindow* main_window_; 85 QTabWidget* tab_widget_; 86 QStringList recent_file_list_; 87 std::map<int, QSharedPointer<SignalVisualisationModel> > browser_models_; 88 QMap<int, QSharedPointer<EventView> > event_views_; 89 std::map<int, QSharedPointer<TabContext> > tab_contexts_; 90 91 //------------------------------------------------------------------------- 92 // not allowed 93 MainWindowModelImpl(const MainWindowModelImpl&); 94 const MainWindowModelImpl& operator=(const MainWindowModelImpl&); 95 96 }; 97 98 } 99 100 #endif 101 102