2
* FBReader -- electronic book reader
3
* Copyright (C) 2004-2007 Nikolay Pultsin <geometer@mawhrin.net>
4
* Copyright (C) 2005 Mikhail Sobolev <mss@mawhrin.net>
2
* Copyright (C) 2004-2008 Geometer Plus <contact@geometerplus.com>
6
4
* This program is free software; you can redistribute it and/or modify
7
5
* it under the terms of the GNU General Public License as published by
39
39
FBAction::FBAction(FBReader &fbreader) : myFBReader(fbreader) {
42
ShowCollectionAction::ShowCollectionAction(FBReader &fbreader) : FBAction(fbreader) {
42
ModeDependentAction::ModeDependentAction(FBReader &fbreader, int visibleInModes) : FBAction(fbreader), myVisibleInModes(visibleInModes) {
45
bool ModeDependentAction::isVisible() {
46
return fbreader().getMode() & myVisibleInModes;
49
ShowCollectionAction::ShowCollectionAction(FBReader &fbreader) : ModeDependentAction(fbreader, FBReader::BOOK_TEXT_MODE | FBReader::CONTENTS_MODE | FBReader::RECENT_BOOKS_MODE) {
45
52
void ShowCollectionAction::run() {
46
53
fbreader().setMode(FBReader::BOOK_COLLECTION_MODE);
49
bool ShowCollectionAction::isVisible() {
50
FBReader::ViewMode mode = fbreader().myMode;
51
return (mode != FBReader::FOOTNOTE_MODE) && (mode != FBReader::BOOK_COLLECTION_MODE);
54
56
ShowHelpAction::ShowHelpAction(FBReader &fbreader) : FBAction(fbreader) {
71
ShowRecentBooksListAction::ShowRecentBooksListAction(FBReader &fbreader) : FBAction(fbreader) {
73
ShowRecentBooksListAction::ShowRecentBooksListAction(FBReader &fbreader) : ModeDependentAction(fbreader, FBReader::BOOK_TEXT_MODE | FBReader::CONTENTS_MODE) {
74
76
void ShowRecentBooksListAction::run() {
75
77
fbreader().setMode(FBReader::RECENT_BOOKS_MODE);
78
bool ShowRecentBooksListAction::isVisible() {
79
FBReader::ViewMode mode = fbreader().myMode;
81
(mode != FBReader::FOOTNOTE_MODE) &&
82
(mode != FBReader::BOOK_COLLECTION_MODE) &&
83
(mode != FBReader::RECENT_BOOKS_MODE);
86
80
ShowOptionsDialogAction::ShowOptionsDialogAction(FBReader &fbreader) : FBAction(fbreader) {
98
92
if (((ContentsView&)*fbreader().myContentsView).isEmpty()) {
101
FBReader::ViewMode mode = fbreader().myMode;
95
FBReader::ViewMode mode = fbreader().getMode();
102
96
return (mode == FBReader::BOOK_TEXT_MODE) || (mode == FBReader::FOOTNOTE_MODE);
127
ScrollToHomeAction::ScrollToHomeAction(FBReader &fbreader) : FBAction(fbreader) {
130
bool ScrollToHomeAction::isVisible() {
131
return fbreader().myMode == FBReader::BOOK_TEXT_MODE;
121
ScrollToHomeAction::ScrollToHomeAction(FBReader &fbreader) : ModeDependentAction(fbreader, FBReader::BOOK_TEXT_MODE) {
134
124
void ScrollToHomeAction::run() {
135
125
fbreader().bookTextView().scrollToHome();
138
ScrollToStartOfTextAction::ScrollToStartOfTextAction(FBReader &fbreader) : FBAction(fbreader) {
141
bool ScrollToStartOfTextAction::isVisible() {
142
return fbreader().myMode == FBReader::BOOK_TEXT_MODE;
128
ScrollToStartOfTextAction::ScrollToStartOfTextAction(FBReader &fbreader) : ModeDependentAction(fbreader, FBReader::BOOK_TEXT_MODE) {
145
131
void ScrollToStartOfTextAction::run() {
146
132
fbreader().bookTextView().scrollToStartOfText();
149
ScrollToEndOfTextAction::ScrollToEndOfTextAction(FBReader &fbreader) : FBAction(fbreader) {
152
bool ScrollToEndOfTextAction::isVisible() {
153
return fbreader().myMode == FBReader::BOOK_TEXT_MODE;
135
ScrollToEndOfTextAction::ScrollToEndOfTextAction(FBReader &fbreader) : ModeDependentAction(fbreader, FBReader::BOOK_TEXT_MODE) {
156
138
void ScrollToEndOfTextAction::run() {
157
139
fbreader().bookTextView().scrollToEndOfText();
160
ShowBookInfoAction::ShowBookInfoAction(FBReader &fbreader) : FBAction(fbreader) {
163
bool ShowBookInfoAction::isVisible() {
165
(fbreader().myMode == FBReader::BOOK_TEXT_MODE) ||
166
(fbreader().myMode == FBReader::CONTENTS_MODE) ||
167
(fbreader().myMode == FBReader::FOOTNOTE_MODE);
142
ShowBookInfoAction::ShowBookInfoAction(FBReader &fbreader) : ModeDependentAction(fbreader, FBReader::BOOK_TEXT_MODE | FBReader::CONTENTS_MODE | FBReader::FOOTNOTE_MODE) {
170
145
void ShowBookInfoAction::run() {
177
152
bool UndoAction::isEnabled() {
178
return (fbreader().myMode != FBReader::BOOK_TEXT_MODE) ||
153
return (fbreader().getMode() != FBReader::BOOK_TEXT_MODE) ||
179
154
fbreader().bookTextView().canUndoPageMove();
182
157
void UndoAction::run() {
183
if (fbreader().myMode == FBReader::BOOK_TEXT_MODE) {
158
if (fbreader().getMode() == FBReader::BOOK_TEXT_MODE) {
184
159
fbreader().bookTextView().undoPageMove();
186
161
fbreader().restorePreviousMode();
190
RedoAction::RedoAction(FBReader &fbreader) : FBAction(fbreader) {
193
bool RedoAction::isVisible() {
194
return fbreader().myMode == FBReader::BOOK_TEXT_MODE;
165
RedoAction::RedoAction(FBReader &fbreader) : ModeDependentAction(fbreader, FBReader::BOOK_TEXT_MODE) {
197
168
bool RedoAction::isEnabled() {
202
173
fbreader().bookTextView().redoPageMove();
205
SearchAction::SearchAction(FBReader &fbreader) : FBAction(fbreader) {
208
bool SearchAction::isVisible() {
209
return fbreader().currentView() != 0;
212
void SearchAction::run() {
213
fbreader().searchSlot();
216
FindNextAction::FindNextAction(FBReader &fbreader) : FBAction(fbreader) {
219
bool FindNextAction::isEnabled() {
220
shared_ptr<ZLView> view = fbreader().currentView();
221
return (!view.isNull()) && ((ZLTextView&)*view).canFindNext();
224
void FindNextAction::run() {
225
((ZLTextView&)*fbreader().currentView()).findNext();
228
FindPreviousAction::FindPreviousAction(FBReader &fbreader) : FBAction(fbreader) {
231
bool FindPreviousAction::isEnabled() {
232
shared_ptr<ZLView> view = fbreader().currentView();
233
return (!view.isNull()) && ((ZLTextView&)*view).canFindPrevious();
236
void FindPreviousAction::run() {
237
((ZLTextView&)*fbreader().currentView()).findPrevious();
240
176
ScrollingAction::ScrollingAction(FBReader &fbreader, const FBReader::ScrollingOptions &options, bool forward) : FBAction(fbreader), myOptions(options), myForward(forward) {
243
179
bool ScrollingAction::isEnabled() {
245
(&myOptions != &fbreader().FingerTapScrollingOptions) ||
246
fbreader().EnableFingerScrollingOption.value();
181
(&myOptions != &fbreader().TapScrollingOptions) ||
182
fbreader().EnableTapScrollingOption.value();
249
185
bool ScrollingAction::useKeyDelay() const {
291
227
bool OpenPreviousBookAction::isVisible() {
292
if ((fbreader().myMode != FBReader::BOOK_TEXT_MODE) && (fbreader().myMode != FBReader::CONTENTS_MODE)) {
228
if ((fbreader().getMode() != FBReader::BOOK_TEXT_MODE) && (fbreader().getMode() != FBReader::CONTENTS_MODE)) {
295
231
return ((RecentBooksView&)*fbreader().myRecentBooksView).lastBooks().books().size() > 1;
308
244
void CancelAction::run() {
309
if (fbreader().myMode != FBReader::BOOK_TEXT_MODE) {
245
if (fbreader().getMode() != FBReader::BOOK_TEXT_MODE) {
310
246
fbreader().restorePreviousMode();
311
247
} else if (fbreader().isFullscreen()) {
312
248
fbreader().setFullscreen(false);
337
273
bool GotoNextTOCSectionAction::isVisible() {
338
if (fbreader().myMode != FBReader::BOOK_TEXT_MODE) {
274
if (fbreader().getMode() != FBReader::BOOK_TEXT_MODE) {
341
277
const ContentsView &contentsView = (const ContentsView&)*fbreader().myContentsView;
364
300
bool GotoPreviousTOCSectionAction::isVisible() {
365
if (fbreader().myMode != FBReader::BOOK_TEXT_MODE) {
301
if (fbreader().getMode() != FBReader::BOOK_TEXT_MODE) {
368
304
const ContentsView &contentsView = (const ContentsView&)*fbreader().myContentsView;
412
348
fbreader().refreshWindow();
351
GotoPageNumber::GotoPageNumber(FBReader &fbreader) : ModeDependentAction(fbreader, FBReader::BOOK_TEXT_MODE) {
354
bool GotoPageNumber::isEnabled() {
356
//return fbreader().bookTextView().pageNumber() > 1;
359
void GotoPageNumber::run() {
360
shared_ptr<ZLDialog> gotoPageDialog = ZLDialogManager::instance().createDialog(ZLResourceKey("gotoPageDialog"));
362
const int pageNumber = fbreader().bookTextView().pageNumber();
363
ZLIntegerRangeOption pageNumberOption(ZLCategoryKey::CONFIG, "gotoPageDialog", "Number", 0, pageNumber, pageNumber);
364
gotoPageDialog->addOption(ZLResourceKey("pageNumber"), new ZLSimpleSpinOptionEntry(pageNumberOption, 1));
365
gotoPageDialog->addButton(ZLDialogManager::OK_BUTTON, true);
366
gotoPageDialog->addButton(ZLDialogManager::CANCEL_BUTTON, false);
368
if (gotoPageDialog->run()) {
415
372
SelectionAction::SelectionAction(FBReader &fbreader) : FBAction(fbreader) {
418
375
bool SelectionAction::isVisible() {
419
return fbreader().currentView() != 0;
376
return !fbreader().currentView().isNull();
422
379
bool SelectionAction::isEnabled() {