#ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include QT_BEGIN_NAMESPACE class QUndoStack; class QUndoView; namespace Ui { class MainWindow; } QT_END_NAMESPACE class GenericCore; class TableModel; class GeneralSortFilterModel; class NewItemDialog; class EditItemDialog; using namespace std; class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget* parent = nullptr); ~MainWindow(); signals: void displayStatusMessage(QString message); void checkForUpdates(); protected: void closeEvent(QCloseEvent* event) override; private slots: void showStatusMessage(const QString text); void onCurrentChanged(const QModelIndex& current, const QModelIndex& previous); void onSelectionChanged(const QItemSelection& selected, const QItemSelection& deselected); void onAboutClicked(); void on_actionCheck_for_update_triggered(); void on_pushButton_clicked(); /// slots for menu actions void openNewItemDialog(); void openEditItemDialog(); void deleteCurrentItem(); void deleteSelectedtItems(); void onCleanStateChanged(bool clean); void onShowUndoViewToggled(bool checked); /// 'File' slots void saveItems(); void importCSV(); void exportCSV(); /// 'Edit' slots void findItems(); /// 'Server' slots void fetchItems(); void postItems(); void deleteItem(); /// 'Tools' slots void execSettingsDialog(); private: Ui::MainWindow* ui; unique_ptr m_core; shared_ptr m_proxyModel; QUndoStack* m_modelUndoStack; unique_ptr m_modelUndoView; /// File actions unique_ptr m_newFileAct; unique_ptr m_openAct; unique_ptr m_saveAct; unique_ptr m_importAct; unique_ptr m_exportAct; unique_ptr m_printAct; unique_ptr m_exitAct; /// Edit actions unique_ptr m_undoAct; unique_ptr m_redoAct; unique_ptr m_cutAct; unique_ptr m_copyAct; unique_ptr m_pasteAct; unique_ptr m_openNewItemDialogAct; unique_ptr m_openEditItemDialogAct; unique_ptr m_deleteItemAct; unique_ptr m_findItemAct; /// Server actions unique_ptr m_fetchItemsAct; unique_ptr m_postItemsAct; unique_ptr m_deleteItemsAct; /// View actions unique_ptr m_showModelUndoViewAct; /// Dialogs unique_ptr m_newItemDialog; unique_ptr m_editItemDialog; /// Setup functions void createActions(); void createFileActions(); void createUndoActions(); void createEditActions(); void createServerActions(); void createToolsActions(); void createHelpMenu(); void createGuiDialogs(); }; #endif // MAINWINDOW_H