-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcomicreaderActions.cpp
More file actions
111 lines (99 loc) · 4.23 KB
/
comicreaderActions.cpp
File metadata and controls
111 lines (99 loc) · 4.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#include "comicreader.h"
#include "ui_comicreader.h"
void ComicReader::createActions()
{
// Create column "Control" and "View" in the menubar and create a control toolbar
QMenu * controlMenu = menuBar()->addMenu(tr("&Control"));
QMenu * viewMenu = menuBar()->addMenu(tr("&View"));
// Open action
openAct = new QAction (tr("&Open"), this);
openAct->setStatusTip(tr("Open"));
connect(openAct, &QAction::triggered, this, &ComicReader::open);
controlMenu->addAction(openAct);
// Previous page action
const QIcon prevIcon = QIcon::fromTheme("document-new", QIcon(":/icon/left-arrow.png"));
prevAct = new QAction(prevIcon, tr("&Previous page"), this);
prevAct->setShortcuts(QKeySequence::MoveToPreviousChar);
prevAct->setStatusTip(tr("Previous page"));
connect(prevAct, &QAction::triggered, this, &ComicReader::prevPage);
controlMenu->addAction(prevAct);
ui->mainToolBar->addAction(prevAct);
// Next page action
const QIcon nextIcon = QIcon::fromTheme("document-new", QIcon(":/icon/right-arrow.png"));
nextAct = new QAction(nextIcon, tr("&Next page"), this);
nextAct->setShortcuts(QKeySequence::MoveToNextChar);
nextAct->setStatusTip(tr("Next page"));
connect(nextAct, &QAction::triggered, this, &ComicReader::nextPage);
controlMenu->addAction(nextAct);
ui->mainToolBar->addAction(nextAct);
// ZoomIn action
const QIcon zoomInIcon = QIcon::fromTheme("document-new", QIcon(":/icon/ZoomIn.png"));
zoomInAct = new QAction(zoomInIcon, tr("&Zoom in"), this);
zoomInAct->setShortcuts(QKeySequence::ZoomIn);
zoomInAct->setStatusTip(tr("Zoom In"));
connect(zoomInAct, &QAction::triggered, this, &ComicReader::zoomIn);
viewMenu->addAction(zoomInAct);
ui->mainToolBar->addAction(zoomInAct);
// ZoomOut action
const QIcon zoomOutIcon = QIcon::fromTheme("document-new", QIcon(":/icon/ZoomOut.png"));
zoomOutAct = new QAction(zoomOutIcon, tr("&Zoom out"), this);
zoomOutAct->setShortcuts(QKeySequence::ZoomOut);
zoomOutAct->setStatusTip(tr("Zoom Out"));
connect(zoomOutAct, &QAction::triggered, this, &ComicReader::zoomOut);
viewMenu->addAction(zoomOutAct);
ui->mainToolBar->addAction(zoomOutAct);
// NormalSize action
normalSizeAct = viewMenu->addAction(tr("&Normal Size"), this, &ComicReader::normalSize);
normalSizeAct->setShortcut(tr("Ctrl+S"));
normalSizeAct->setCheckable(true);
viewMenu->addSeparator();
// FitToWindow action
const QIcon fitToWindowIcon = QIcon::fromTheme("Document-new",QIcon(":/icon/Expand.png"));
fitToWindowAct = new QAction(fitToWindowIcon, tr("&Fit to Window"), this);
fitToWindowAct->setShortcut(tr("Ctrl+F"));
fitToWindowAct->setStatusTip(tr("Fit to Window"));
connect(fitToWindowAct,&QAction::triggered,this,&ComicReader::fitToWindow);
viewMenu->addAction(fitToWindowAct);
ui->mainToolBar->addAction(fitToWindowAct);
fitToWindowAct->setCheckable(true);
// DoublePageMode action
doublePageAct = viewMenu->addAction(tr("&Double page mode"), this, &ComicReader::triggerDoublePage);
doublePageAct->setCheckable(true);
doublePageAct->setShortcut(tr("Ctrl+D"));
// About
QMenu * about = menuBar()->addMenu(tr("&About"));
about->addAction(tr("&Comic book reader developped by Xuan Zhang and Zhufeng Li"));
// Set default status
normalSizeAct->setEnabled(false);
normalSizeAct->setChecked(true);
zoomInAct->setEnabled(false);
zoomOutAct->setEnabled(false);
fitToWindowAct->setEnabled(false);
fitToWindowAct->setChecked(true);
doublePageAct->setEnabled(false);
doublePageAct->setChecked(false);
}
// Note that use check will take effect after actions
void ComicReader::updateActions()
{
if(currentPixmap.size() == centerLabel->pixmap()->size())
{
normalSizeAct->setEnabled(false);
normalSizeAct->setChecked(true);
}
else
{
normalSizeAct->setEnabled(true);
normalSizeAct->setChecked(false);
}
if(size().width()==sizeHint().width() || size().height() == sizeHint().height())
{
fitToWindowAct->setEnabled(false);
fitToWindowAct->setChecked(true);
}
else
{
fitToWindowAct->setEnabled(true);
fitToWindowAct->setChecked(false);
}
}