Added ability to turn keyboard shortcuts off

This commit is contained in:
Marcin Kurczewski 2015-05-14 23:04:30 +02:00
parent 8d119d2b62
commit c569504ce7
6 changed files with 50 additions and 4 deletions

View file

@ -32,6 +32,7 @@ App.BrowsingSettings = function(
sketchy: true, sketchy: true,
unsafe: true, unsafe: true,
}, },
keyboardShortcuts: true,
}; };
} }

View file

@ -1,7 +1,8 @@
var App = App || {}; var App = App || {};
App.Keyboard = function(jQuery, mousetrap) { App.Keyboard = function(jQuery, mousetrap, browsingSettings) {
var enabled = browsingSettings.getSettings().keyboardShortcuts;
var oldStopCallback = mousetrap.stopCallback; var oldStopCallback = mousetrap.stopCallback;
mousetrap.stopCallback = function(e, element, combo, sequence) { mousetrap.stopCallback = function(e, element, combo, sequence) {
if (combo.indexOf('ctrl') === -1 && e.ctrlKey) { if (combo.indexOf('ctrl') === -1 && e.ctrlKey) {
@ -28,12 +29,16 @@ App.Keyboard = function(jQuery, mousetrap) {
function keyup(key, callback) { function keyup(key, callback) {
unbind(key); unbind(key);
mousetrap.bind(key, callback, 'keyup'); if (enabled) {
mousetrap.bind(key, callback, 'keyup');
}
} }
function keydown(key, callback) { function keydown(key, callback) {
unbind(key); unbind(key);
mousetrap.bind(key, callback); if (enabled) {
mousetrap.bind(key, callback);
}
} }
function reset() { function reset() {
@ -53,4 +58,4 @@ App.Keyboard = function(jQuery, mousetrap) {
}; };
}; };
App.DI.register('keyboard', ['jQuery', 'mousetrap'], App.Keyboard); App.DI.register('keyboard', ['jQuery', 'mousetrap', 'browsingSettings'], App.Keyboard);

View file

@ -51,6 +51,7 @@ App.Presenters.UserBrowsingSettingsPresenter = function(
sketchy: $el.find('[name=listSketchyPosts]').is(':checked'), sketchy: $el.find('[name=listSketchyPosts]').is(':checked'),
unsafe: $el.find('[name=listUnsafePosts]').is(':checked'), unsafe: $el.find('[name=listUnsafePosts]').is(':checked'),
}, },
keyboardShortcuts: $el.find('[name=keyboardShortcuts]').is(':checked'),
}; };
promise.wait(browsingSettings.setSettings(newSettings)) promise.wait(browsingSettings.setSettings(newSettings))

View file

@ -41,6 +41,16 @@
</div> </div>
</div> </div>
<div class="form-row">
<label class="form-label" for="browsing-settings-keyboard-shortcuts">Keyboard shortcuts:</label>
<div class="form-input">
<input <% print(settings.keyboardShortcuts ? 'checked="checked"' : '') %> type="checkbox" id="browsing-settings-keyboard-shortcuts" name="keyboardShortcuts"/>
<label for="browsing-settings-keyboard-shortcuts">
Enabled
</label>
</div>
</div>
<div class="form-row"> <div class="form-row">
<label class="form-label"></label> <label class="form-label"></label>
<div class="form-input"> <div class="form-input">

View file

@ -0,0 +1,28 @@
<?php
namespace Szurubooru\Upgrades;
use Szurubooru\Dao\UserDao;
use Szurubooru\DatabaseConnection;
class Upgrade37 implements IUpgrade
{
private $userDao;
public function __construct(UserDao $userDao)
{
$this->userDao = $userDao;
}
public function run(DatabaseConnection $databaseConnection)
{
foreach ($this->userDao->findAll() as $user)
{
echo $user->getName() . PHP_EOL;
$browsingSettings = $user->getBrowsingSettings();
if ($browsingSettings === null)
$browsingSettings = new \StdClass;
$browsingSettings->keyboardShortcuts = true;
$user->setBrowsingSettings($browsingSettings);
$this->userDao->save($user);
}
}
}

View file

@ -53,6 +53,7 @@ return [
$container->get(\Szurubooru\Upgrades\Upgrade34::class), $container->get(\Szurubooru\Upgrades\Upgrade34::class),
$container->get(\Szurubooru\Upgrades\Upgrade35::class), $container->get(\Szurubooru\Upgrades\Upgrade35::class),
$container->get(\Szurubooru\Upgrades\Upgrade36::class), $container->get(\Szurubooru\Upgrades\Upgrade36::class),
$container->get(\Szurubooru\Upgrades\Upgrade37::class),
]; ];
}), }),