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 \
|
vcaptain.cpp \
|
||||||
vopenedlistmenu.cpp \
|
vopenedlistmenu.cpp \
|
||||||
vorphanfile.cpp \
|
vorphanfile.cpp \
|
||||||
vcodeblockhighlighthelper.cpp
|
vcodeblockhighlighthelper.cpp \
|
||||||
|
vwebview.cpp
|
||||||
|
|
||||||
HEADERS += vmainwindow.h \
|
HEADERS += vmainwindow.h \
|
||||||
vdirectorytree.h \
|
vdirectorytree.h \
|
||||||
@ -105,7 +106,8 @@ HEADERS += vmainwindow.h \
|
|||||||
vopenedlistmenu.h \
|
vopenedlistmenu.h \
|
||||||
vnavigationmode.h \
|
vnavigationmode.h \
|
||||||
vorphanfile.h \
|
vorphanfile.h \
|
||||||
vcodeblockhighlighthelper.h
|
vcodeblockhighlighthelper.h \
|
||||||
|
vwebview.h
|
||||||
|
|
||||||
RESOURCES += \
|
RESOURCES += \
|
||||||
vnote.qrc \
|
vnote.qrc \
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
#include <QtWidgets>
|
#include <QtWidgets>
|
||||||
#include <QWebChannel>
|
#include <QWebChannel>
|
||||||
#include <QWebEngineView>
|
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
#include <QXmlStreamReader>
|
#include <QXmlStreamReader>
|
||||||
#include "vedittab.h"
|
#include "vedittab.h"
|
||||||
@ -18,11 +17,13 @@
|
|||||||
#include "dialog/vfindreplacedialog.h"
|
#include "dialog/vfindreplacedialog.h"
|
||||||
#include "veditarea.h"
|
#include "veditarea.h"
|
||||||
#include "vconstants.h"
|
#include "vconstants.h"
|
||||||
|
#include "vwebview.h"
|
||||||
|
|
||||||
extern VConfigManager vconfig;
|
extern VConfigManager vconfig;
|
||||||
|
|
||||||
VEditTab::VEditTab(VFile *p_file, OpenFileMode p_mode, QWidget *p_parent)
|
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),
|
mdConverterType(vconfig.getMdConverterType()), m_fileModified(false),
|
||||||
m_editArea(NULL)
|
m_editArea(NULL)
|
||||||
{
|
{
|
||||||
@ -273,7 +274,10 @@ void VEditTab::setupMarkdownPreview()
|
|||||||
const QString jsHolder("JS_PLACE_HOLDER");
|
const QString jsHolder("JS_PLACE_HOLDER");
|
||||||
const QString extraHolder("<!-- EXTRA_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);
|
VPreviewPage *page = new VPreviewPage(this);
|
||||||
webPreviewer->setPage(page);
|
webPreviewer->setPage(page);
|
||||||
webPreviewer->setZoomFactor(vconfig.getWebZoomFactor());
|
webPreviewer->setZoomFactor(vconfig.getWebZoomFactor());
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
#include "vtoc.h"
|
#include "vtoc.h"
|
||||||
#include "vfile.h"
|
#include "vfile.h"
|
||||||
|
|
||||||
class QWebEngineView;
|
class VWebView;
|
||||||
class VNote;
|
class VNote;
|
||||||
class QXmlStreamReader;
|
class QXmlStreamReader;
|
||||||
class VEditArea;
|
class VEditArea;
|
||||||
@ -25,8 +25,6 @@ public:
|
|||||||
~VEditTab();
|
~VEditTab();
|
||||||
void init(VEditArea *p_editArea);
|
void init(VEditArea *p_editArea);
|
||||||
bool closeFile(bool p_forced);
|
bool closeFile(bool p_forced);
|
||||||
// Enter edit mode
|
|
||||||
void editFile();
|
|
||||||
// Enter read mode
|
// Enter read mode
|
||||||
void readFile();
|
void readFile();
|
||||||
// Save file
|
// Save file
|
||||||
@ -51,6 +49,10 @@ public:
|
|||||||
QString getSelectedText() const;
|
QString getSelectedText() const;
|
||||||
void clearSearchedWordHighlight();
|
void clearSearchedWordHighlight();
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
// Enter edit mode
|
||||||
|
void editFile();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void wheelEvent(QWheelEvent *p_event) Q_DECL_OVERRIDE;
|
void wheelEvent(QWheelEvent *p_event) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
@ -91,7 +93,7 @@ private:
|
|||||||
QPointer<VFile> m_file;
|
QPointer<VFile> m_file;
|
||||||
bool isEditMode;
|
bool isEditMode;
|
||||||
VEdit *m_textEditor;
|
VEdit *m_textEditor;
|
||||||
QWebEngineView *webPreviewer;
|
VWebView *webPreviewer;
|
||||||
VDocument document;
|
VDocument document;
|
||||||
MarkdownConverterType mdConverterType;
|
MarkdownConverterType mdConverterType;
|
||||||
VToc tableOfContent;
|
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