mirror of
https://gitee.com/vnotex/vnote.git
synced 2025-07-06 06:19:52 +08:00
add Edit to context menu in read mode to edit current note
This commit is contained in:
parent
bcdfc90951
commit
022d3ae2f7
@ -59,7 +59,8 @@ SOURCES += main.cpp\
|
||||
vcaptain.cpp \
|
||||
vopenedlistmenu.cpp \
|
||||
vorphanfile.cpp \
|
||||
vcodeblockhighlighthelper.cpp
|
||||
vcodeblockhighlighthelper.cpp \
|
||||
vwebview.cpp
|
||||
|
||||
HEADERS += vmainwindow.h \
|
||||
vdirectorytree.h \
|
||||
@ -105,7 +106,8 @@ HEADERS += vmainwindow.h \
|
||||
vopenedlistmenu.h \
|
||||
vnavigationmode.h \
|
||||
vorphanfile.h \
|
||||
vcodeblockhighlighthelper.h
|
||||
vcodeblockhighlighthelper.h \
|
||||
vwebview.h
|
||||
|
||||
RESOURCES += \
|
||||
vnote.qrc \
|
||||
|
@ -1,6 +1,5 @@
|
||||
#include <QtWidgets>
|
||||
#include <QWebChannel>
|
||||
#include <QWebEngineView>
|
||||
#include <QFileInfo>
|
||||
#include <QXmlStreamReader>
|
||||
#include "vedittab.h"
|
||||
@ -18,11 +17,13 @@
|
||||
#include "dialog/vfindreplacedialog.h"
|
||||
#include "veditarea.h"
|
||||
#include "vconstants.h"
|
||||
#include "vwebview.h"
|
||||
|
||||
extern VConfigManager vconfig;
|
||||
|
||||
VEditTab::VEditTab(VFile *p_file, OpenFileMode p_mode, QWidget *p_parent)
|
||||
: QStackedWidget(p_parent), m_file(p_file), isEditMode(false), document(p_file, this),
|
||||
: QStackedWidget(p_parent), m_file(p_file), isEditMode(false),
|
||||
webPreviewer(NULL), document(p_file, this),
|
||||
mdConverterType(vconfig.getMdConverterType()), m_fileModified(false),
|
||||
m_editArea(NULL)
|
||||
{
|
||||
@ -273,7 +274,10 @@ void VEditTab::setupMarkdownPreview()
|
||||
const QString jsHolder("JS_PLACE_HOLDER");
|
||||
const QString extraHolder("<!-- EXTRA_PLACE_HOLDER -->");
|
||||
|
||||
webPreviewer = new QWebEngineView(this);
|
||||
webPreviewer = new VWebView(m_file, this);
|
||||
connect(webPreviewer, &VWebView::editNote,
|
||||
this, &VEditTab::editFile);
|
||||
|
||||
VPreviewPage *page = new VPreviewPage(this);
|
||||
webPreviewer->setPage(page);
|
||||
webPreviewer->setZoomFactor(vconfig.getWebZoomFactor());
|
||||
|
@ -12,7 +12,7 @@
|
||||
#include "vtoc.h"
|
||||
#include "vfile.h"
|
||||
|
||||
class QWebEngineView;
|
||||
class VWebView;
|
||||
class VNote;
|
||||
class QXmlStreamReader;
|
||||
class VEditArea;
|
||||
@ -25,8 +25,6 @@ public:
|
||||
~VEditTab();
|
||||
void init(VEditArea *p_editArea);
|
||||
bool closeFile(bool p_forced);
|
||||
// Enter edit mode
|
||||
void editFile();
|
||||
// Enter read mode
|
||||
void readFile();
|
||||
// Save file
|
||||
@ -51,6 +49,10 @@ public:
|
||||
QString getSelectedText() const;
|
||||
void clearSearchedWordHighlight();
|
||||
|
||||
public slots:
|
||||
// Enter edit mode
|
||||
void editFile();
|
||||
|
||||
protected:
|
||||
void wheelEvent(QWheelEvent *p_event) Q_DECL_OVERRIDE;
|
||||
|
||||
@ -91,7 +93,7 @@ private:
|
||||
QPointer<VFile> m_file;
|
||||
bool isEditMode;
|
||||
VEdit *m_textEditor;
|
||||
QWebEngineView *webPreviewer;
|
||||
VWebView *webPreviewer;
|
||||
VDocument document;
|
||||
MarkdownConverterType mdConverterType;
|
||||
VToc tableOfContent;
|
||||
|
39
src/vwebview.cpp
Normal file
39
src/vwebview.cpp
Normal file
@ -0,0 +1,39 @@
|
||||
#include "vwebview.h"
|
||||
|
||||
#include <QMenu>
|
||||
#include <QPoint>
|
||||
#include <QContextMenuEvent>
|
||||
#include <QWebEnginePage>
|
||||
#include <QAction>
|
||||
#include <QList>
|
||||
#include "vfile.h"
|
||||
|
||||
VWebView::VWebView(VFile *p_file, QWidget *p_parent)
|
||||
: QWebEngineView(p_parent), m_file(p_file)
|
||||
{
|
||||
}
|
||||
|
||||
void VWebView::contextMenuEvent(QContextMenuEvent *p_event)
|
||||
{
|
||||
QMenu *menu = page()->createStandardContextMenu();
|
||||
menu->setToolTipsVisible(true);
|
||||
const QList<QAction *> actions = menu->actions();
|
||||
|
||||
QAction *editAction = new QAction(QIcon(":/resources/icons/edit_note.svg"),
|
||||
tr("&Edit"), this);
|
||||
editAction->setToolTip(tr("Edit current note"));
|
||||
connect(editAction, &QAction::triggered,
|
||||
this, &VWebView::handleEditAction);
|
||||
if (!m_file->isModifiable()) {
|
||||
editAction->setEnabled(false);
|
||||
}
|
||||
menu->insertAction(actions.isEmpty() ? NULL : actions[0], editAction);
|
||||
|
||||
connect(menu, &QMenu::aboutToHide, menu, &QObject::deleteLater);
|
||||
menu->popup(p_event->globalPos());
|
||||
}
|
||||
|
||||
void VWebView::handleEditAction()
|
||||
{
|
||||
emit editNote();
|
||||
}
|
27
src/vwebview.h
Normal file
27
src/vwebview.h
Normal file
@ -0,0 +1,27 @@
|
||||
#ifndef VWEBVIEW_H
|
||||
#define VWEBVIEW_H
|
||||
|
||||
#include <QWebEngineView>
|
||||
|
||||
class VFile;
|
||||
|
||||
class VWebView : public QWebEngineView
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit VWebView(VFile *p_file, QWidget *p_parent = Q_NULLPTR);
|
||||
|
||||
signals:
|
||||
void editNote();
|
||||
|
||||
protected:
|
||||
void contextMenuEvent(QContextMenuEvent *p_event);
|
||||
|
||||
private slots:
|
||||
void handleEditAction();
|
||||
|
||||
private:
|
||||
VFile *m_file;
|
||||
};
|
||||
|
||||
#endif // VWEBVIEW_H
|
Loading…
x
Reference in New Issue
Block a user