add print action item

Print support of QWebEngineView is incomplete in Qt5.7. Need to figure
out another way to print documents.

Just hide the action Item.
This commit is contained in:
Le Tan 2017-05-20 13:47:52 +08:00
parent f43f9c4afc
commit 871c53743f
7 changed files with 74 additions and 8 deletions

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<g>
<path d="M423.8,128H384V64H128v64H88.2C60.3,128,32,144.9,32,182.6v123.8c0,38,28.3,61.6,56.2,61.6c0,0,30.4,0,39.8,0v112h5h11h224
h8h8V368c10.3,0,39.8,0,39.8,0c27.9,0,56.2-22.6,56.2-53.6V182.6C480,146.9,451.8,128,423.8,128z M368,464H144V288h224V464z
M368,128H144V80h224V128z M416,192h-17v-16h17V192z"/>
<rect x="160" y="320" width="192" height="16"/>
<rect x="160" y="368" width="192" height="16"/>
<rect x="160" y="416" width="192" height="16"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 961 B

View File

@ -4,7 +4,7 @@
# #
#------------------------------------------------- #-------------------------------------------------
QT += core gui webenginewidgets webchannel network svg QT += core gui webenginewidgets webchannel network svg printsupport
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

View File

@ -727,3 +727,9 @@ void VEditTab::zoomWebPage(bool p_zoomIn, qreal p_step)
} }
webPreviewer->setZoomFactor(newFactor); webPreviewer->setZoomFactor(newFactor);
} }
VWebView *VEditTab::getWebViewer() const
{
return webPreviewer;
}

View File

@ -49,6 +49,8 @@ public:
QString getSelectedText() const; QString getSelectedText() const;
void clearSearchedWordHighlight(); void clearSearchedWordHighlight();
VWebView *getWebViewer() const;
public slots: public slots:
// Enter edit mode // Enter edit mode
void editFile(); void editFile();

View File

@ -1,5 +1,8 @@
#include <QtWidgets> #include <QtWidgets>
#include <QList> #include <QList>
#include <QPrinter>
#include <QPrintDialog>
#include <QPainter>
#include "vmainwindow.h" #include "vmainwindow.h"
#include "vdirectorytree.h" #include "vdirectorytree.h"
#include "vnote.h" #include "vnote.h"
@ -13,6 +16,8 @@
#include "dialog/vfindreplacedialog.h" #include "dialog/vfindreplacedialog.h"
#include "dialog/vsettingsdialog.h" #include "dialog/vsettingsdialog.h"
#include "vcaptain.h" #include "vcaptain.h"
#include "vedittab.h"
#include "vwebview.h"
extern VConfigManager vconfig; extern VConfigManager vconfig;
@ -444,24 +449,36 @@ void VMainWindow::initFileMenu()
this, &VMainWindow::importNoteFromFile); this, &VMainWindow::importNoteFromFile);
m_importNoteAct->setEnabled(false); m_importNoteAct->setEnabled(false);
fileMenu->addAction(m_importNoteAct);
fileMenu->addSeparator();
// Print.
m_printAct = new QAction(QIcon(":/resources/icons/print.svg"),
tr("&Print"), this);
m_printAct->setToolTip(tr("Print current note"));
connect(m_printAct, &QAction::triggered,
this, &VMainWindow::printNote);
m_printAct->setEnabled(false);
// Settings. // Settings.
QAction *settingsAct = new QAction(QIcon(":/resources/icons/settings.svg"), QAction *settingsAct = new QAction(QIcon(":/resources/icons/settings.svg"),
tr("Settings"), this); tr("&Settings"), this);
settingsAct->setToolTip(tr("View and change settings for VNote")); settingsAct->setToolTip(tr("View and change settings for VNote"));
connect(settingsAct, &QAction::triggered, connect(settingsAct, &QAction::triggered,
this, &VMainWindow::viewSettings); this, &VMainWindow::viewSettings);
fileMenu->addAction(settingsAct);
fileMenu->addSeparator();
// Exit. // Exit.
QAction *exitAct = new QAction(tr("Exit"), this); QAction *exitAct = new QAction(tr("&Exit"), this);
exitAct->setToolTip(tr("Exit VNote")); exitAct->setToolTip(tr("Exit VNote"));
exitAct->setShortcut(QKeySequence("Ctrl+Q")); exitAct->setShortcut(QKeySequence("Ctrl+Q"));
connect(exitAct, &QAction::triggered, connect(exitAct, &QAction::triggered,
this, &VMainWindow::close); this, &VMainWindow::close);
fileMenu->addAction(m_importNoteAct);
fileMenu->addSeparator();
fileMenu->addAction(settingsAct);
fileMenu->addSeparator();
fileMenu->addAction(exitAct); fileMenu->addAction(exitAct);
} }
@ -998,6 +1015,8 @@ void VMainWindow::setEditorStyle(QAction *p_action)
void VMainWindow::updateActionStateFromTabStatusChange(const VFile *p_file, void VMainWindow::updateActionStateFromTabStatusChange(const VFile *p_file,
bool p_editMode) bool p_editMode)
{ {
m_printAct->setEnabled(p_file && p_file->getDocType() == DocType::Markdown);
editNoteAct->setVisible(p_file && p_file->isModifiable() && !p_editMode); editNoteAct->setVisible(p_file && p_file->isModifiable() && !p_editMode);
discardExitAct->setVisible(p_file && p_editMode); discardExitAct->setVisible(p_file && p_editMode);
saveExitAct->setVisible(p_file && p_editMode); saveExitAct->setVisible(p_file && p_editMode);
@ -1352,3 +1371,25 @@ void VMainWindow::shortcutHelp()
VFile *file = vnote->getOrphanFile(docName); VFile *file = vnote->getOrphanFile(docName);
editArea->openFile(file, OpenFileMode::Read); editArea->openFile(file, OpenFileMode::Read);
} }
void VMainWindow::printNote()
{
QPrinter printer;
QPrintDialog dialog(&printer, this);
dialog.setWindowTitle(tr("Print Note"));
V_ASSERT(m_curTab);
VWebView *webView = m_curTab->getWebViewer();
V_ASSERT(webView);
if (webView->hasSelection()) {
dialog.addEnabledOption(QAbstractPrintDialog::PrintSelection);
}
if (dialog.exec() != QDialog::Accepted) {
return;
}
}

View File

@ -80,6 +80,7 @@ private slots:
void enableImagePreviewConstraint(bool p_checked); void enableImagePreviewConstraint(bool p_checked);
void enableImageConstraint(bool p_checked); void enableImageConstraint(bool p_checked);
void enableImageCaption(bool p_checked); void enableImageCaption(bool p_checked);
void printNote();
protected: protected:
void closeEvent(QCloseEvent *event) Q_DECL_OVERRIDE; void closeEvent(QCloseEvent *event) Q_DECL_OVERRIDE;
@ -153,6 +154,7 @@ private:
QAction *discardExitAct; QAction *discardExitAct;
QAction *expandViewAct; QAction *expandViewAct;
QAction *m_importNoteAct; QAction *m_importNoteAct;
QAction *m_printAct;
QAction *m_insertImageAct; QAction *m_insertImageAct;
QAction *m_findReplaceAct; QAction *m_findReplaceAct;

View File

@ -104,5 +104,6 @@
<file>utils/showdown/showdown.min.js</file> <file>utils/showdown/showdown.min.js</file>
<file>resources/showdown.js</file> <file>resources/showdown.js</file>
<file>utils/showdown/showdown-headinganchor.js</file> <file>utils/showdown/showdown-headinganchor.js</file>
<file>resources/icons/print.svg</file>
</qresource> </qresource>
</RCC> </RCC>