andre@50: /* Copyright (C) 2016 by ETH Zürich andre@50: * Software engineering by Intevation GmbH andre@50: * andre@50: * This file is Free Software under the GNU GPL (v>=2) andre@50: * and comes with ABSOLUTELY NO WARRANTY! andre@50: * See LICENSE.txt for details. andre@50: */ andre@50: andre@50: andre@50: /** @file The Main UI class. andre@50: * andre@50: * Parent class of all dialogs and graphical user interaction. andre@50: */ andre@50: #include andre@50: #include andre@50: andre@50: class QPushButton; andre@50: class QLineEdit; andre@50: class QCheckBox; andre@50: class FileNameRequester; andre@50: andre@50: /** andre@50: * @class MainWindow andre@50: * @brief The mainwindow of the application. andre@50: * @details Holds the input fields and export options. andre@50: */ andre@50: class MainWindow : public QMainWindow andre@50: { andre@50: Q_OBJECT andre@50: andre@50: public: andre@50: MainWindow(); andre@50: andre@50: protected: andre@50: /** @brief UI setup */ andre@50: void setupGUI(); andre@50: andre@50: /** @brief Cleanup and save the current state */ andre@50: virtual void closeEvent(QCloseEvent *event); andre@50: andre@50: /** @brief Restores the last window state */ andre@50: void readSettings(); andre@50: andre@50: public slots: andre@50: /** @brief directly set an input file. */ andre@50: void setInputFile(const QString& file); andre@50: andre@50: /** @brief Prefill title with @title. */ andre@50: void setTitle(const QString& title); andre@50: andre@50: protected slots: andre@50: /** @brief Show an error dialog to the user. */ andre@50: void showErrorMessage(const QString& errMsg); andre@50: andre@50: /** @brief check if all mandataory fields are set. */ andre@50: void checkCompleted(); andre@50: andre@50: /** @brief Do the actual conversion. */ andre@50: void doConvert(); andre@50: andre@50: private: andre@50: QSettings mSettings; andre@50: andre@50: FileNameRequester* mInputRequester; andre@50: FileNameRequester* mOutRequester; andre@50: QLineEdit *mTitleEdit; andre@50: QPushButton *mConvertBtn; andre@50: QCheckBox *mPdfChk, andre@50: *mXlsxChk, andre@50: *mHtmlChk; andre@50: };