summaryrefslogtreecommitdiffstats
path: root/fbreader/src/optionsDialog/reading/KeyBindingsTab.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'fbreader/src/optionsDialog/reading/KeyBindingsTab.cpp')
-rw-r--r--fbreader/src/optionsDialog/reading/KeyBindingsTab.cpp285
1 files changed, 0 insertions, 285 deletions
diff --git a/fbreader/src/optionsDialog/reading/KeyBindingsTab.cpp b/fbreader/src/optionsDialog/reading/KeyBindingsTab.cpp
deleted file mode 100644
index b522578..0000000
--- a/fbreader/src/optionsDialog/reading/KeyBindingsTab.cpp
+++ /dev/null
@@ -1,285 +0,0 @@
-/*
- * Copyright (C) 2004-2012 Geometer Plus <contact@geometerplus.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA.
- */
-
-#include <ZLOptionsDialog.h>
-#include <ZLApplication.h>
-#include <ZLOptionEntry.h>
-
-#include <ZLSimpleOptionEntry.h>
-#include <ZLSimpleKeyOptionEntry.h>
-
-#include "ReadingOptionsDialog.h"
-
-#include "../../fbreader/FBReader.h"
-#include "../../fbreader/FBReaderActions.h"
-
-class KeyboardControlEntry : public ZLSimpleBooleanOptionEntry {
-
-public:
- KeyboardControlEntry();
- void onStateChanged(bool state);
-};
-
-KeyboardControlEntry::KeyboardControlEntry() : ZLSimpleBooleanOptionEntry(FBReader::Instance().KeyboardControlOption) {
-}
-
-void KeyboardControlEntry::onStateChanged(bool state) {
- ZLSimpleBooleanOptionEntry::onStateChanged(state);
- FBReader::Instance().grabAllKeys(state);
-}
-
-class SingleKeyOptionEntry : public ZLSimpleKeyOptionEntry {
-
-public:
- SingleKeyOptionEntry(const CodeIndexBimap &bimap, ZLKeyBindings &bindings);
- const CodeIndexBimap &codeIndexBimap() const;
-
-private:
- const CodeIndexBimap &myBimap;
-};
-
-SingleKeyOptionEntry::SingleKeyOptionEntry(const CodeIndexBimap &bimap, ZLKeyBindings &bindings) : ZLSimpleKeyOptionEntry(bindings), myBimap(bimap) {
-}
-
-const ZLSimpleKeyOptionEntry::CodeIndexBimap &SingleKeyOptionEntry::codeIndexBimap() const {
- return myBimap;
-}
-
-class MultiKeyOptionEntry : public ZLKeyOptionEntry {
-
-public:
- MultiKeyOptionEntry(const ZLResource &resource);
- void onAccept();
- int actionIndex(const std::string &key);
- void onValueChanged(const std::string &key, int index);
- void onKeySelected(const std::string &key);
-
- void setOrientation(ZLView::Angle);
- void setExitOnCancelEntry(ZLOptionEntry *exitOnCancelEntry);
-
-private:
- void addAction(const std::string &actionId);
-
-private:
- const ZLResource &myResource;
- ZLSimpleKeyOptionEntry::CodeIndexBimap myBimap;
-
- SingleKeyOptionEntry myEntry0;
- SingleKeyOptionEntry myEntry90;
- SingleKeyOptionEntry myEntry180;
- SingleKeyOptionEntry myEntry270;
- SingleKeyOptionEntry *myCurrentEntry;
- ZLOptionEntry *myExitOnCancelEntry;
-};
-
-void MultiKeyOptionEntry::addAction(const std::string &actionId) {
- myBimap.insert(actionId);
- addActionName(myResource[ZLResourceKey(actionId)].value());
-}
-
-MultiKeyOptionEntry::MultiKeyOptionEntry(const ZLResource &resource) :
- ZLKeyOptionEntry(),
- myResource(resource),
- myEntry0(myBimap, *FBReader::Instance().keyBindings(ZLView::DEGREES0)),
- myEntry90(myBimap, *FBReader::Instance().keyBindings(ZLView::DEGREES90)),
- myEntry180(myBimap, *FBReader::Instance().keyBindings(ZLView::DEGREES180)),
- myEntry270(myBimap, *FBReader::Instance().keyBindings(ZLView::DEGREES270)),
- myCurrentEntry(&myEntry0),
- myExitOnCancelEntry(0) {
- addAction(ZLApplication::NoAction);
-
- // switch view
- addAction(ActionCode::SHOW_LIBRARY);
- addAction(ActionCode::OPEN_PREVIOUS_BOOK);
- addAction(ActionCode::SHOW_TOC);
-
- // navigation
- addAction(ActionCode::SCROLL_TO_HOME);
- addAction(ActionCode::SCROLL_TO_START_OF_TEXT);
- addAction(ActionCode::SCROLL_TO_END_OF_TEXT);
- addAction(ActionCode::GOTO_NEXT_TOC_SECTION);
- addAction(ActionCode::GOTO_PREVIOUS_TOC_SECTION);
- addAction(ActionCode::PAGE_SCROLL_FORWARD);
- addAction(ActionCode::PAGE_SCROLL_BACKWARD);
- addAction(ActionCode::LINE_SCROLL_FORWARD);
- addAction(ActionCode::LINE_SCROLL_BACKWARD);
- addAction(ActionCode::UNDO);
- addAction(ActionCode::REDO);
-
- // selection
- addAction(ActionCode::COPY_SELECTED_TEXT_TO_CLIPBOARD);
- addAction(ActionCode::OPEN_SELECTED_TEXT_IN_DICTIONARY);
- addAction(ActionCode::CLEAR_SELECTION);
-
- // search
- addAction(ActionCode::SEARCH);
- addAction(ActionCode::FIND_PREVIOUS);
- addAction(ActionCode::FIND_NEXT);
-
- // look
- addAction(ActionCode::INCREASE_FONT);
- addAction(ActionCode::DECREASE_FONT);
- addAction(ActionCode::SHOW_HIDE_POSITION_INDICATOR);
- addAction(ActionCode::TOGGLE_FULLSCREEN);
- addAction(ActionCode::ROTATE_SCREEN);
-
- // dialogs
- addAction(ActionCode::SHOW_OPTIONS_DIALOG);
- addAction(ActionCode::SHOW_BOOK_INFO_DIALOG);
- addAction(ActionCode::ADD_BOOK);
-
- // quit
- addAction(ActionCode::CANCEL);
- addAction(ActionCode::QUIT);
-}
-
-void MultiKeyOptionEntry::setOrientation(ZLView::Angle angle) {
- switch (angle) {
- case ZLView::DEGREES0:
- myCurrentEntry = &myEntry0;
- break;
- case ZLView::DEGREES90:
- myCurrentEntry = &myEntry90;
- break;
- case ZLView::DEGREES180:
- myCurrentEntry = &myEntry180;
- break;
- case ZLView::DEGREES270:
- myCurrentEntry = &myEntry270;
- break;
- }
- resetView();
-}
-
-void MultiKeyOptionEntry::onAccept() {
- myEntry0.onAccept();
- myEntry90.onAccept();
- myEntry180.onAccept();
- myEntry270.onAccept();
-}
-
-int MultiKeyOptionEntry::actionIndex(const std::string &key) {
- return myCurrentEntry->actionIndex(key);
-}
-
-void MultiKeyOptionEntry::onValueChanged(const std::string &key, int index) {
- myCurrentEntry->onValueChanged(key, index);
- if (myExitOnCancelEntry != 0) {
- myExitOnCancelEntry->setVisible(myBimap.codeByIndex(index) == ActionCode::CANCEL);
- }
-}
-
-void MultiKeyOptionEntry::setExitOnCancelEntry(ZLOptionEntry *exitOnCancelEntry) {
- myExitOnCancelEntry = exitOnCancelEntry;
-}
-
-void MultiKeyOptionEntry::onKeySelected(const std::string &key) {
- if (myExitOnCancelEntry != 0) {
- myExitOnCancelEntry->setVisible(myBimap.codeByIndex(myCurrentEntry->actionIndex(key)) == ActionCode::CANCEL);
- }
-}
-
-class OrientationEntry : public ZLComboOptionEntry {
-
-public:
- OrientationEntry(MultiKeyOptionEntry &keyEntry, const ZLResource &resource);
- const std::string &initialValue() const;
- const std::vector<std::string> &values() const;
- void onValueSelected(int index);
- void onAccept(const std::string &value);
-
-private:
- MultiKeyOptionEntry &myKeyEntry;
- const ZLResource &myResource;
-};
-
-OrientationEntry::OrientationEntry(MultiKeyOptionEntry &keyEntry, const ZLResource &resource) : myKeyEntry(keyEntry), myResource(resource) {
-}
-
-const std::string &OrientationEntry::initialValue() const {
- return values()[0];
-}
-
-const std::vector<std::string> &OrientationEntry::values() const {
- static std::vector<std::string> _values;
- if (_values.empty()) {
- _values.push_back(myResource["degrees0"].value());
- _values.push_back(myResource["degrees90ccw"].value());
- _values.push_back(myResource["degrees180"].value());
- _values.push_back(myResource["degrees90cw"].value());
- }
- return _values;
-}
-
-void OrientationEntry::onValueSelected(int index) {
- static ZLView::Angle angles[] = {
- ZLView::DEGREES0,
- ZLView::DEGREES90,
- ZLView::DEGREES180,
- ZLView::DEGREES270
- };
- myKeyEntry.setOrientation(angles[index]);
-}
-
-void OrientationEntry::onAccept(const std::string&) {
-}
-
-class UseSeparateOptionsEntry : public ZLSimpleBooleanOptionEntry {
-
-public:
- UseSeparateOptionsEntry(ZLOptionEntry &keyEntry, OrientationEntry &orientationEntry);
- void onStateChanged(bool state);
-
-private:
- ZLOptionEntry &myKeyEntry;
- OrientationEntry &myOrientationEntry;
-};
-
-UseSeparateOptionsEntry::UseSeparateOptionsEntry(ZLOptionEntry &keyEntry, OrientationEntry &orientationEntry) : ZLSimpleBooleanOptionEntry(FBReader::Instance().UseSeparateBindingsOption), myKeyEntry(keyEntry), myOrientationEntry(orientationEntry) {
-}
-
-void UseSeparateOptionsEntry::onStateChanged(bool state) {
- ZLSimpleBooleanOptionEntry::onStateChanged(state);
- myOrientationEntry.setVisible(state);
- myKeyEntry.resetView();
-}
-
-
-void ReadingOptionsDialog::createKeyBindingsTab() {
- ZLDialogContent &dialogTab = dialog().createTab(ZLResourceKey("Keys"));
- FBReader &fbreader = FBReader::Instance();
- if (ZLBooleanOption(ZLCategoryKey::EMPTY, ZLOption::PLATFORM_GROUP, ZLOption::FULL_KEYBOARD_CONTROL, false).value()) {
- dialogTab.addOption(ZLResourceKey("grabSystemKeys"), new KeyboardControlEntry());
- }
- ZLResourceKey actionKey("action");
- ZLResourceKey separateKey("separate");
- ZLResourceKey orientationKey("orientation");
- MultiKeyOptionEntry *keyEntry = new MultiKeyOptionEntry(dialogTab.resource(actionKey));
- OrientationEntry *orientationEntry = new OrientationEntry(*keyEntry, dialogTab.resource(orientationKey));
- ZLBooleanOptionEntry *useSeparateBindingsEntry = new UseSeparateOptionsEntry(*keyEntry, *orientationEntry);
- dialogTab.addOption(separateKey, useSeparateBindingsEntry);
- dialogTab.addOption(orientationKey, orientationEntry);
- dialogTab.addOption("", "", keyEntry);
- ZLOptionEntry *exitOnCancelEntry = new ZLSimpleBooleanOptionEntry(fbreader.QuitOnCancelOption);
- keyEntry->setExitOnCancelEntry(exitOnCancelEntry);
- dialogTab.addOption(ZLResourceKey("quitOnCancel"), exitOnCancelEntry);
- exitOnCancelEntry->setVisible(false);
- useSeparateBindingsEntry->onStateChanged(useSeparateBindingsEntry->initialState());
- dialogTab.addOption(ZLResourceKey("keyDelay"), new ZLSimpleSpinOptionEntry(fbreader.KeyDelayOption, 50));
-}