diff --git a/dashboard-ui/bower_components/emby-apiclient/apiclient.js b/dashboard-ui/bower_components/emby-apiclient/apiclient.js index b428d4a274..cdea1c7daa 100644 --- a/dashboard-ui/bower_components/emby-apiclient/apiclient.js +++ b/dashboard-ui/bower_components/emby-apiclient/apiclient.js @@ -3361,6 +3361,29 @@ }); }; + self.cancelSyncItems = function (itemIds, targetId) { + + if (!userId) { + throw new Error("null userId"); + } + + if (!itemId) { + throw new Error("null itemId"); + } + + var url = self.getUrl("Sync/Items/Cancel"); + + return self.ajax({ + type: "POST", + data: JSON.stringify({ + TargetId: targetId || self.deviceId(), + ItemIds: itemIds + }), + contentType: "application/json", + url: url + }); + }; + /** * Reports a user has stopped playing an item * @param {String} userId diff --git a/dashboard-ui/components/navdrawer/navdrawer.js b/dashboard-ui/components/navdrawer/navdrawer.js index b300768d6c..54fc6136a9 100644 --- a/dashboard-ui/components/navdrawer/navdrawer.js +++ b/dashboard-ui/components/navdrawer/navdrawer.js @@ -97,7 +97,10 @@ return; } - var edgeHammer = new Hammer(options.edgeSwipeElement, null); + require(['hammer-main'], initEdgeSwipeInternal); + } + + function initEdgeSwipeInternal(edgeHammer) { var isPeeking = false; edgeHammer.on('panstart panmove', function (ev) { diff --git a/dashboard-ui/itemdetails.html b/dashboard-ui/itemdetails.html index 4688e5f5ee..2befbdee9d 100644 --- a/dashboard-ui/itemdetails.html +++ b/dashboard-ui/itemdetails.html @@ -38,7 +38,7 @@
@@ -62,7 +62,7 @@ diff --git a/dashboard-ui/scripts/itemdetailpage.js b/dashboard-ui/scripts/itemdetailpage.js index be5a1304f4..1451cb7bbd 100644 --- a/dashboard-ui/scripts/itemdetailpage.js +++ b/dashboard-ui/scripts/itemdetailpage.js @@ -2054,21 +2054,30 @@ }); } - function onSyncLocalClick() { - - if (this.checked) { - require(['syncDialog'], function (syncDialog) { - syncDialog.showMenu({ - items: [currentItem] - }); - }); - } else { - - } - } - return function (view, params) { + function onSyncLocalClick() { + + if (this.checked) { + require(['syncDialog'], function (syncDialog) { + syncDialog.showMenu({ + items: [currentItem] + }); + }); + } else { + + require(['confirm'], function (confirm) { + + confirm(Globalize.translate('ConfirmRemoveDownload')).then(function () { + ApiClient.cancelSyncItems([currentItem.Id]); + }, function () { + + updateSyncStatus(view, currentItem); + }); + }); + } + } + function onPlayTrailerClick() { playTrailer(view); } diff --git a/dashboard-ui/scripts/librarybrowser.js b/dashboard-ui/scripts/librarybrowser.js index 0035909842..04ba851466 100644 --- a/dashboard-ui/scripts/librarybrowser.js +++ b/dashboard-ui/scripts/librarybrowser.js @@ -116,32 +116,43 @@ configureSwipeTabs: function (ownerpage, tabs) { if (!browser.touch) { - return; + //return; } + //require(['hammer'], function (Hammer) { + + // var hammertime = new Hammer(ownerpage); + // hammertime.get('swipe').set({ direction: Hammer.DIRECTION_HORIZONTAL }); + + //}); + var pageCount = ownerpage.querySelectorAll('.pageTabContent').length; - - require(['hammer'], function (Hammer) { - - var hammertime = new Hammer(ownerpage); - hammertime.get('swipe').set({ direction: Hammer.DIRECTION_HORIZONTAL }); - - hammertime.on('swipeleft', function (e) { - if (LibraryBrowser.allowSwipe(e.target)) { - var selected = parseInt(tabs.selectedIndex() || '0'); - if (selected < (pageCount - 1)) { - tabs.selectedIndex(selected + 1); - } + var onSwipeLeft = function (e) { + if (LibraryBrowser.allowSwipe(e.target) && ownerpage.contains(e.target)) { + var selected = parseInt(tabs.selectedIndex() || '0'); + if (selected < (pageCount - 1)) { + tabs.selectedIndex(selected + 1); } - }); + } + }; - hammertime.on('swiperight', function (e) { - if (LibraryBrowser.allowSwipe(e.target)) { - var selected = parseInt(tabs.selectedIndex() || '0'); - if (selected > 0) { - tabs.selectedIndex(selected - 1); - } + var onSwipeRight = function (e) { + if (LibraryBrowser.allowSwipe(e.target) && ownerpage.contains(e.target)) { + var selected = parseInt(tabs.selectedIndex() || '0'); + if (selected > 0) { + tabs.selectedIndex(selected - 1); } + } + }; + + require(['hammer-main'], function (hammertime) { + + hammertime.on('swipeleft', onSwipeLeft); + hammertime.on('swiperight', onSwipeRight); + + ownerpage.addEventListener('viewdestroy', function () { + hammertime.off('swipeleft', onSwipeLeft); + hammertime.off('swiperight', onSwipeRight); }); }); }, diff --git a/dashboard-ui/scripts/librarymenu.js b/dashboard-ui/scripts/librarymenu.js index 158df228d6..7ba088f6db 100644 --- a/dashboard-ui/scripts/librarymenu.js +++ b/dashboard-ui/scripts/librarymenu.js @@ -1055,8 +1055,7 @@ target: navDrawerElement, onChange: onMainDrawerSelect, width: drawerWidth, - disableEdgeSwipe: disableEdgeSwipe, - edgeSwipeElement: document.querySelector('.mainDrawerPanelContent') + disableEdgeSwipe: disableEdgeSwipe }; } diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js index fe8fce0dcb..190e395501 100644 --- a/dashboard-ui/scripts/site.js +++ b/dashboard-ui/scripts/site.js @@ -1204,6 +1204,12 @@ var AppInfo = {}; return headroom; } + function createMainContentHammer(Hammer) { + + var hammer = new Hammer(document.querySelector('.mainDrawerPanelContent'), null); + return hammer; + } + function initRequire() { var urlArgs = "v=" + (window.dashboardVersion || new Date().getDate()); @@ -1511,6 +1517,7 @@ var AppInfo = {}; }); define("headroom-window", ['headroom'], createWindowHeadroom); + define("hammer-main", ['hammer'], createMainContentHammer); // mock this for now. not used in this app define("playbackManager", [], function () { diff --git a/dashboard-ui/strings/en-US.json b/dashboard-ui/strings/en-US.json index 98b3ca3356..36715f32da 100644 --- a/dashboard-ui/strings/en-US.json +++ b/dashboard-ui/strings/en-US.json @@ -2312,5 +2312,7 @@ "MoreFromValue": "More from {0}", "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", "EnablePhotos": "Enable photos", - "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files." + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" }