vnote/src/vmainwindow.h
Le Tan 3005d9bf5c implement Find/Replace logics
Supports Find/Replace in both edit and preview modes.

Signed-off-by: Le Tan <tamlokveer@gmail.com>
2017-01-08 21:09:00 +08:00

138 lines
3.5 KiB
C++

#ifndef VMAINWINDOW_H
#define VMAINWINDOW_H
#include <QMainWindow>
#include <QVector>
#include <QPair>
#include <QPointer>
#include <QString>
#include "vfile.h"
#include "vedittab.h"
class QLabel;
class QComboBox;
class VDirectoryTree;
class QSplitter;
class QListWidget;
class QTabWidget;
class QToolBar;
class VNote;
class QAction;
class QPushButton;
class VNotebook;
class QActionGroup;
class VFileList;
class VEditArea;
class QToolBox;
class VOutline;
class VNotebookSelector;
class VAvatar;
class VFindReplaceDialog;
class VMainWindow : public QMainWindow
{
Q_OBJECT
public:
VMainWindow(QWidget *parent = 0);
const QVector<QPair<QString, QString> > &getPalette() const;
void locateFile(VFile *p_file) const;
private slots:
void importNoteFromFile();
void changeMarkdownConverter(QAction *action);
void aboutMessage();
void changeExpandTab(bool checked);
void setTabStopWidth(QAction *action);
void setEditorBackgroundColor(QAction *action);
void setRenderBackgroundColor(QAction *action);
void changeHighlightCursorLine(bool p_checked);
void handleCurTabStatusChanged(const VFile *p_file, const VEditTab *p_editTab, bool p_editMode);
void onePanelView();
void twoPanelView();
void expandPanelView(bool p_checked);
void curEditFileInfo();
void deleteCurNote();
void handleCurrentDirectoryChanged(const VDirectory *p_dir);
void handleCurrentNotebookChanged(const VNotebook *p_notebook);
void insertImage();
void handleFindDialogTextChanged(const QString &p_text, uint p_options);
void openFindDialog();
protected:
void closeEvent(QCloseEvent *event) Q_DECL_OVERRIDE;
void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE;
void keyPressEvent(QKeyEvent *event) Q_DECL_OVERRIDE;
private:
void setupUI();
QWidget *setupDirectoryPanel();
void initToolBar();
void initFileToolBar();
void initViewToolBar();
void initMenuBar();
void initFileMenu();
void initEditMenu();
void initViewMenu();
void initMarkdownMenu();
void initHelpMenu();
void initDockWindows();
void initAvatar();
void initPredefinedColorPixmaps();
void initRenderBackgroundMenu(QMenu *menu);
void initEditorBackgroundMenu(QMenu *menu);
void changeSplitterView(int nrPanel);
void updateWindowTitle(const QString &str);
void updateActionStateFromTabStatusChange(const VFile *p_file,
bool p_editMode);
void saveStateAndGeometry();
void restoreStateAndGeometry();
void repositionAvatar();
VNote *vnote;
QPointer<VFile> m_curFile;
QPointer<VEditTab> m_curTab;
QLabel *notebookLabel;
QLabel *directoryLabel;
VNotebookSelector *notebookSelector;
VFileList *fileList;
VDirectoryTree *directoryTree;
QSplitter *mainSplitter;
VEditArea *editArea;
QDockWidget *toolDock;
QToolBox *toolBox;
VOutline *outline;
VAvatar *m_avatar;
VFindReplaceDialog *m_findReplaceDialog;
// Actions
QAction *newRootDirAct;
QAction *newNoteAct;
QAction *noteInfoAct;
QAction *deleteNoteAct;
QAction *editNoteAct;
QAction *saveNoteAct;
QAction *saveExitAct;
QAction *discardExitAct;
QAction *expandViewAct;
QAction *m_insertImageAct;
QAction *m_findReplaceAct;
QAction *m_findNextAct;
QAction *m_findPreviousAct;
QAction *m_replaceAct;
QAction *m_replaceFindAct;
QAction *m_replaceAllAct;
// Menus
QMenu *viewMenu;
QVector<QPixmap> predefinedColorPixmaps;
};
#endif // VMAINWINDOW_H