mirror of
https://gitee.com/vnotex/vnote.git
synced 2025-07-05 22:09:52 +08:00
120 lines
2.3 KiB
C++
120 lines
2.3 KiB
C++
#ifndef VEXPORTER_H
|
|
#define VEXPORTER_H
|
|
|
|
#include <QDialog>
|
|
#include <QPageLayout>
|
|
#include <QString>
|
|
#include "vconfigmanager.h"
|
|
|
|
class VWebView;
|
|
class VFile;
|
|
class QLineEdit;
|
|
class QLabel;
|
|
class QDialogButtonBox;
|
|
class QPushButton;
|
|
class QProgressBar;
|
|
|
|
enum class ExportType
|
|
{
|
|
PDF = 0,
|
|
HTML
|
|
};
|
|
|
|
class VExporter : public QDialog
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
explicit VExporter(MarkdownConverterType p_mdType = MarkdownIt, QWidget *p_parent = 0);
|
|
|
|
void exportNote(VFile *p_file, ExportType p_type);
|
|
|
|
private slots:
|
|
void handleBrowseBtnClicked();
|
|
void handleLayoutBtnClicked();
|
|
void startExport();
|
|
void cancelExport();
|
|
void handleLogicsFinished();
|
|
void handleLoadFinished(bool p_ok);
|
|
void openTargetPath() const;
|
|
|
|
private:
|
|
enum class ExportSource
|
|
{
|
|
Note = 0,
|
|
Directory,
|
|
Notebook,
|
|
Invalid
|
|
};
|
|
|
|
enum class ExportState
|
|
{
|
|
Idle = 0,
|
|
Cancelled,
|
|
Busy,
|
|
Failed,
|
|
Successful
|
|
};
|
|
|
|
enum NoteState
|
|
{
|
|
NotReady = 0,
|
|
WebLogicsReady = 0x1,
|
|
WebLoadFinished = 0x2,
|
|
Ready = 0x3,
|
|
Failed = 0x4
|
|
};
|
|
|
|
void setupUI();
|
|
|
|
void initMarkdownTemplate();
|
|
|
|
void updatePageLayoutLabel();
|
|
|
|
void setFilePath(const QString &p_path);
|
|
|
|
QString getFilePath() const;
|
|
|
|
void initWebViewer(VFile *p_file);
|
|
|
|
void clearWebViewer();
|
|
|
|
void enableUserInput(bool p_enabled);
|
|
|
|
bool exportToPDF(VWebView *p_webViewer, const QString &p_filePath, const QPageLayout &p_layout);
|
|
|
|
void clearNoteState();
|
|
bool isNoteStateReady() const;
|
|
bool isNoteStateFailed() const;
|
|
|
|
// Will be allocated and free for each conversion.
|
|
VWebView *m_webViewer;
|
|
|
|
MarkdownConverterType m_mdType;
|
|
QString m_htmlTemplate;
|
|
VFile *m_file;
|
|
ExportType m_type;
|
|
ExportSource m_source;
|
|
NoteState m_noteState;
|
|
|
|
ExportState m_state;
|
|
|
|
QLabel *m_infoLabel;
|
|
QLineEdit *m_pathEdit;
|
|
QPushButton *m_browseBtn;
|
|
QLabel *m_layoutLabel;
|
|
QPushButton *m_layoutBtn;
|
|
QDialogButtonBox *m_btnBox;
|
|
QPushButton *m_openBtn;
|
|
|
|
// Progress label and bar.
|
|
QLabel *m_proLabel;
|
|
QProgressBar *m_proBar;
|
|
|
|
QPageLayout m_pageLayout;
|
|
|
|
// The default directory.
|
|
static QString s_defaultPathDir;
|
|
};
|
|
|
|
#endif // VEXPORTER_H
|