spacebar support (fix #219)

This commit is contained in:
Athou
2013-06-28 10:54:42 +02:00
parent 0b017a0732
commit 5ee1caa9b8
2 changed files with 58 additions and 1 deletions

View File

@@ -999,6 +999,63 @@ function($scope, $stateParams, $http, $route, $window, EntryService, SettingsSer
});
});
Mousetrap.bind('space', function(e) {
if (!$scope.current) {
$scope.$apply(function() {
$scope.navigationMode = 'keyboard';
openNextEntry(e);
});
} else if (!$scope.isOpen) {
$scope.$apply(function() {
$scope.navigationMode = 'keyboard';
if ($scope.current) {
openEntry($scope.current, e);
}
});
} else {
var docTop = $(window).scrollTop();
var docBottom = docTop + $(window).height();
var elem = $('#entry_' + $scope.current.id);
var elemTop = elem.offset().top;
var elemBottom = elemTop + elem.height();
var bottomVisible = elemBottom < docBottom;
if (bottomVisible) {
$scope.$apply(function() {
$scope.navigationMode = 'keyboard';
openNextEntry(e);
});
}
}
});
Mousetrap.bind('shift+space', function(e) {
if (!$scope.current) {
return;
} else if (!$scope.isOpen) {
$scope.$apply(function() {
$scope.navigationMode = 'keyboard';
if ($scope.current) {
openEntry($scope.current, e);
}
});
} else {
var docTop = $(window).scrollTop();
var elem = $('#entry_' + $scope.current.id);
var elemTop = elem.offset().top;
var topVisible = elemTop > docTop;
if (topVisible) {
$scope.$apply(function() {
$scope.navigationMode = 'keyboard';
openPreviousEntry(e);
});
}
}
});
Mousetrap.bind('?', function(e) {
$scope.$apply(function() {
$scope.shortcutsModal = true;

View File

@@ -14,7 +14,7 @@
<div infinite-scroll="loadMoreEntries()" infinite-scroll-disabled="busy || !settingsService.settings.readingMode" infinite-scroll-distance="1" id="feed-accordion"
ng-class="{'expanded' : settingsService.settings.viewMode == 'expanded' }">
<div ng-show="message && errorCount > 10">${view.error_while_loading_feed} : {{message}}</div>
<div ng-repeat="entry in entries" class="entry entry-font-size-{{font_size}}"
<div ng-repeat="entry in entries" class="entry entry-font-size-{{font_size}}" id="entry_{{entry.id}}"
scroll-to="navigationMode != 'scroll' && current == entry" scroll-to-force="navigationMode == 'keyboard'" scroll-to-offset="-50"
on-scroll-middle="onScroll(entry)" on-scroll-middle-offset="50"
ng-class="{unread: entry.read == false, current: current==entry, open: isOpen, closed: !isOpen }">