#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 ModelSummary; class NewItemDialog; class EditItemDialog; class BiddingRoundControl; 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(); /// 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 fetchCurrentBiddings(); /// 'Tools' slots void execSettingsDialog(); private: Ui::MainWindow* ui; unique_ptr m_core; shared_ptr m_proxyModel; shared_ptr m_modelSummary; QUndoStack* m_modelUndoStack; unique_ptr m_modelUndoView; unique_ptr m_biddingRoundControl; /// 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_fetchCurrentBiddingsAct; /// View actions unique_ptr m_showModelUndoViewAct; /// Dialogs unique_ptr m_newItemDialog; unique_ptr m_editItemDialog; /// Setup functions void setupModelViews(); void createActions(); void createFileActions(); void createUndoActions(); void createEditActions(); void createServerActions(); void createToolsActions(); void createHelpMenu(); void createGuiDialogs(); void setupEventTab(); void initServerConnection(); }; #endif // MAINWINDOW_H