Преглед на файлове

Remove Watchcode and adjust related files

Carola Nitz преди 7 години
родител
ревизия
368887bd83
променени са 90 файла, в които са добавени 24 реда и са изтрити 4549 реда
  1. 9 33
      Podfile
  2. 1 5
      Podfile.lock
  3. 1 23
      Resources/en.lproj/Localizable.strings
  4. 0 39
      SharedSources/VLCWatchMessage.h
  5. 0 96
      SharedSources/VLCWatchMessage.m
  6. 1 4
      Sources/VLCAppDelegate.h
  7. 0 18
      Sources/VLCAppDelegate.m
  8. 0 25
      Sources/VLCThumbnailsCache.m
  9. 0 27
      Sources/VLCWatchCommunication.h
  10. 0 297
      Sources/VLCWatchCommunication.m
  11. 0 10
      VLC WatchKit App.entitlements
  12. 0 10
      VLC WatchKit Extension.entitlements
  13. 0 1
      VLC WatchKit Native Extension/Assets.xcassets/README__ignoredByTemplate__
  14. 0 22
      VLC WatchKit Native Extension/Assets.xcassets/tableview-gradient.imageset/Contents.json
  15. BIN
      VLC WatchKit Native Extension/Assets.xcassets/tableview-gradient.imageset/tableview-gradient.png
  16. BIN
      VLC WatchKit Native Extension/Assets.xcassets/tableview-gradient.imageset/tableview-gradient@2x.png
  17. 0 31
      VLC WatchKit Native Extension/Classes/VLCBaseInterfaceController.h
  18. 0 74
      VLC WatchKit Native Extension/Classes/VLCBaseInterfaceController.m
  19. 0 29
      VLC WatchKit Native Extension/Classes/VLCDetailInterfaceController.h
  20. 0 134
      VLC WatchKit Native Extension/Classes/VLCDetailInterfaceController.m
  21. 0 18
      VLC WatchKit Native Extension/Classes/VLCExtensionDelegate.h
  22. 0 91
      VLC WatchKit Native Extension/Classes/VLCExtensionDelegate.m
  23. 0 33
      VLC WatchKit Native Extension/Classes/VLCNowPlayingInterfaceController.h
  24. 0 233
      VLC WatchKit Native Extension/Classes/VLCNowPlayingInterfaceController.m
  25. 0 29
      VLC WatchKit Native Extension/Classes/VLCPlaylistInterfaceController.h
  26. 0 160
      VLC WatchKit Native Extension/Classes/VLCPlaylistInterfaceController.m
  27. 0 27
      VLC WatchKit Native Extension/Classes/VLCRowController.h
  28. 0 167
      VLC WatchKit Native Extension/Classes/VLCRowController.m
  29. 0 54
      VLC WatchKit Native Extension/Classes/VLCTime.h
  30. 0 172
      VLC WatchKit Native Extension/Classes/VLCTime.m
  31. 0 70
      VLC WatchKit Native Extension/Classes/VLCWatchTableController.h
  32. 0 178
      VLC WatchKit Native Extension/Classes/VLCWatchTableController.m
  33. 0 34
      VLC WatchKit Native Extension/Classes/WKInterfaceController+VLCConnectionAlert.h
  34. 0 42
      VLC WatchKit Native Extension/Classes/WKInterfaceController+VLCConnectionAlert.m
  35. 0 22
      VLC WatchKit Native Extension/Classes/WKInterfaceObject+VLCProgress.h
  36. 0 39
      VLC WatchKit Native Extension/Classes/WKInterfaceObject+VLCProgress.m
  37. 0 44
      VLC WatchKit Native Extension/Info.plist
  38. 0 7
      VLC WatchKit Native Extension/VLC WatchKit Extension-Bridging-Header.h
  39. 0 32
      VLC WatchKit Native Extension/VLC for iOS WatchKit Extension-Prefix.pch
  40. 0 9
      VLC WatchKit Native Extension/da.lproj/Localizable.strings
  41. 0 9
      VLC WatchKit Native Extension/de.lproj/Localizable.strings
  42. 0 9
      VLC WatchKit Native Extension/el.lproj/Localizable.strings
  43. 0 33
      VLC WatchKit Native Extension/en.lproj/Localizable.strings
  44. 0 9
      VLC WatchKit Native Extension/es.lproj/Localizable.strings
  45. 0 9
      VLC WatchKit Native Extension/fi.lproj/Localizable.strings
  46. 0 9
      VLC WatchKit Native Extension/fr.lproj/Localizable.strings
  47. 0 9
      VLC WatchKit Native Extension/it.lproj/Localizable.strings
  48. 0 9
      VLC WatchKit Native Extension/ja.lproj/Localizable.strings
  49. 0 9
      VLC WatchKit Native Extension/nl.lproj/Localizable.strings
  50. 0 9
      VLC WatchKit Native Extension/pt-PT.lproj/Localizable.strings
  51. 0 9
      VLC WatchKit Native Extension/ru.lproj/Localizable.strings
  52. 0 9
      VLC WatchKit Native Extension/sv.lproj/Localizable.strings
  53. 0 9
      VLC WatchKit Native Extension/ta.lproj/Localizable.strings
  54. 0 9
      VLC WatchKit Native Extension/tr.lproj/Localizable.strings
  55. 0 9
      VLC WatchKit Native Extension/uk.lproj/Localizable.strings
  56. 0 9
      VLC WatchKit Native Extension/zh-Hans.lproj/Localizable.strings
  57. BIN
      VLC WatchKit Native/Assets.xcassets/AllFiles.imageset/AllFiles@2x.png
  58. 0 21
      VLC WatchKit Native/Assets.xcassets/AllFiles.imageset/Contents.json
  59. BIN
      VLC WatchKit Native/Assets.xcassets/AppIcon.appiconset/AppIcon1024@1x.png
  60. BIN
      VLC WatchKit Native/Assets.xcassets/AppIcon.appiconset/AppIcon24@2x.png
  61. BIN
      VLC WatchKit Native/Assets.xcassets/AppIcon.appiconset/AppIcon27.5@2x.png
  62. BIN
      VLC WatchKit Native/Assets.xcassets/AppIcon.appiconset/AppIcon29@2x.png
  63. BIN
      VLC WatchKit Native/Assets.xcassets/AppIcon.appiconset/AppIcon29@3x.png
  64. BIN
      VLC WatchKit Native/Assets.xcassets/AppIcon.appiconset/AppIcon40x40@2x.png
  65. BIN
      VLC WatchKit Native/Assets.xcassets/AppIcon.appiconset/AppIcon44@2x.png
  66. BIN
      VLC WatchKit Native/Assets.xcassets/AppIcon.appiconset/AppIcon86@2x.png
  67. BIN
      VLC WatchKit Native/Assets.xcassets/AppIcon.appiconset/AppIcon98@2x.png
  68. 0 76
      VLC WatchKit Native/Assets.xcassets/AppIcon.appiconset/Contents.json
  69. 0 6
      VLC WatchKit Native/Assets.xcassets/Contents.json
  70. 0 21
      VLC WatchKit Native/Assets.xcassets/MusicAlbums.imageset/Contents.json
  71. BIN
      VLC WatchKit Native/Assets.xcassets/MusicAlbums.imageset/MusicAlbums@2x.png
  72. 0 21
      VLC WatchKit Native/Assets.xcassets/TVShows.imageset/Contents.json
  73. BIN
      VLC WatchKit Native/Assets.xcassets/TVShows.imageset/TVShows@2x.png
  74. 0 21
      VLC WatchKit Native/Assets.xcassets/backward.imageset/Contents.json
  75. BIN
      VLC WatchKit Native/Assets.xcassets/backward.imageset/backward.png
  76. 0 21
      VLC WatchKit Native/Assets.xcassets/forward.imageset/Contents.json
  77. BIN
      VLC WatchKit Native/Assets.xcassets/forward.imageset/forward.png
  78. 0 22
      VLC WatchKit Native/Assets.xcassets/pause.imageset/Contents.json
  79. BIN
      VLC WatchKit Native/Assets.xcassets/pause.imageset/pause.png
  80. 0 21
      VLC WatchKit Native/Assets.xcassets/play.imageset/Contents.json
  81. BIN
      VLC WatchKit Native/Assets.xcassets/play.imageset/play.png
  82. BIN
      VLC WatchKit Native/Assets.xcassets/vlcCone.imageset/AppIcon76x76@2x.png
  83. 0 21
      VLC WatchKit Native/Assets.xcassets/vlcCone.imageset/Contents.json
  84. 0 194
      VLC WatchKit Native/Base.lproj/Interface.storyboard
  85. 0 37
      VLC WatchKit Native/Info.plist
  86. 9 1400
      VLC.xcodeproj/project.pbxproj
  87. 0 2
      VLC.xcodeproj/xcshareddata/xcschemes/VLC-iOS.xcscheme
  88. 0 149
      VLC.xcodeproj/xcshareddata/xcschemes/VLC-watchOS.xcscheme
  89. 2 6
      fastlane/Fastfile
  90. 1 3
      fastlane/helpers/VLC.rb

+ 9 - 33
Podfile

@@ -13,7 +13,9 @@ def shared_pods
   pod 'SwiftLint', '~> 0.25.0'
 end
 
-def iOS_pods
+target 'VLC-iOS' do
+  platform :ios, '9.0'
+  shared_pods
   pod 'OBSlider', '1.1.0'
   pod 'InAppSettingsKit', :git => 'git://github.com/fkuehne/InAppSettingsKit.git', :commit => '415ea6bb' #tvOS fix
   pod 'HockeySDK', '~>5.1.2', :subspecs => ['CrashOnlyLib']
@@ -25,18 +27,6 @@ def iOS_pods
   pod 'GTMAppAuth'
 end
 
-target 'VLC-iOS' do
-  platform :ios, '9.0'
-  shared_pods
-  iOS_pods
-end
-
-target 'VLC-iOS-no-watch' do
-  platform :ios, '9.0'
-  shared_pods
-  iOS_pods
-end
-
 target 'VLC-tvOS' do
   platform :tvos, '10.2'
   shared_pods
@@ -47,27 +37,13 @@ target 'VLC-tvOS' do
   pod 'TVVLCKit', '3.0.2'
 end
 
-target 'VLC-watchOS-Extension' do
-  platform :watchos, '2.0'
-  pod 'MediaLibraryKit-unstable'
-end
-
 post_install do |installer_representation|
   installer_representation.pods_project.targets.each do |target|
-    if target.name == 'VLC-watchOS-Extension'
-      installer_representation.pods_project.build_configurations.each do |config|
-        config.build_settings['SKIP_INSTALL'] = 'YES'
-        config.build_settings['CLANG_CXX_LIBRARY'] = 'libc++'
-        config.build_settings['VALID_ARCHS'] = 'armv7 armv7s arm64 i386 armv7k'
-        config.build_settings['ARCHS'] = 'armv7 armv7s arm64 i386 armv7k'
-      end
-    else
-      installer_representation.pods_project.build_configurations.each do |config|
-        config.build_settings['SKIP_INSTALL'] = 'YES'
-        config.build_settings['VALID_ARCHS'] = 'armv7 armv7s arm64 i386 armv7k'
-        config.build_settings['ARCHS'] = 'armv7 armv7s arm64 i386 armv7k'
-        config.build_settings['CLANG_CXX_LIBRARY'] = 'libc++'
-      end
-    end
+     installer_representation.pods_project.build_configurations.each do |config|
+       config.build_settings['SKIP_INSTALL'] = 'YES'
+       config.build_settings['VALID_ARCHS'] = 'armv7 armv7s arm64 i386 armv7k'
+       config.build_settings['ARCHS'] = 'armv7 armv7s arm64 i386 armv7k'
+       config.build_settings['CLANG_CXX_LIBRARY'] = 'libc++'
+     end
   end
 end

+ 1 - 5
Podfile.lock

@@ -38,8 +38,6 @@ PODS:
   - InAppSettingsKit (2.2.2)
   - MediaLibraryKit-prod (2.6.5):
     - MobileVLCKit (~> 3.0.1)
-  - MediaLibraryKit-unstable (2.6.5):
-    - MobileVLCKit-unstable (~> 3.0.0a8)
   - MetaDataFetcherKit (0.3.1):
     - AFNetworking (= 3.1.0)
     - OROpenSubtitleDownloader
@@ -71,7 +69,6 @@ DEPENDENCIES:
   - HockeySDK/CrashOnlyLib (~> 5.1.2)
   - InAppSettingsKit (from `git://github.com/fkuehne/InAppSettingsKit.git`, commit `415ea6bb`)
   - MediaLibraryKit-prod
-  - MediaLibraryKit-unstable
   - MetaDataFetcherKit (~> 0.3.1)
   - MobileVLCKit (= 3.0.2)
   - ObjectiveDropboxOfficial (from `git://github.com/carolanitz/dropbox-sdk-obj-c.git`)
@@ -130,7 +127,6 @@ SPEC CHECKSUMS:
   HockeySDK-tvOS: 6b2a69f86419ebaf23225f59a64e5761ed3a0d8a
   InAppSettingsKit: 76d5cfbaa3e3f8aa53fe3628516da7eb1aa6a5cb
   MediaLibraryKit-prod: 095dce5faa59e2bb0a537646ac09fe57eaf3fbdf
-  MediaLibraryKit-unstable: aaf147005a2e024ed2f4c45440bfcc19225ca776
   MetaDataFetcherKit: d1d61b061bf74268aaffb6bf08a70396672163df
   MobileVLCKit: a9e06de53e7a7fd43d7b04bcab4f2e68868f768a
   NSData+Base64: 4e84902c4db907a15673474677e57763ef3903e4
@@ -147,6 +143,6 @@ SPEC CHECKSUMS:
   XKKeychain: 852ef663c56a7194c73d3c68e8d9d4f07b121d4f
   xmlrpc: 109bb21d15ed6d108b2c1ac5973a6a223a50f5f4
 
-PODFILE CHECKSUM: c8dbb4c0b180876fb032d297e7e1ca3dbf736b6b
+PODFILE CHECKSUM: 1db4a441715ef12947bbe7bfdcfdbb86d52919fb
 
 COCOAPODS: 1.4.0

+ 1 - 23
Resources/en.lproj/Localizable.strings

@@ -200,7 +200,6 @@
 "BWD_BUTTON" = "Jump Backwards";
 "FWD_BUTTON" = "Jump Forwards";
 "PLAY_BUTTON" = "Play";
-"PAUSE_BUTTON" = "Pause";
 "PLAY_ALL_BUTTON" = "Play all";
 
 "VERSION_FORMAT" = "Version: %@";
@@ -257,36 +256,15 @@
 "WEBINTF_URL_INVALID" = "Not a valid URL.";
 
 
-"NOW_PLAYING" = "Now Playing";
-"PLAY_NOW" = "Play Now";
-"PLAYING" = "Playing";
-"DETAIL" = "Detail";
 
 "VOLUME" = "Volume";
 "DURATION" = "Duration";
 "TITLE" = "Title";
 
 // strings from VLCKit
-"%ld hours %ld minutes remaining" = "%1$ld hours %2$ld minutes remaining";
-"%ld hours %ld minutes" = "%1$ld hours %2$ld minutes";
-"%ld minutes remaining" = "%ld minutes remaining";
-"%ld minutes" = "%ld minutes";
-"%ld minutes %ld seconds remaining" = "%1$ld minutes %2$ld seconds remaining";
-"%ld minutes %ld seconds" = "%1$ld minutes %2$ld seconds";
-"%ld seconds remaining" = "%ld seconds remaining";
-"%ld seconds" = "%ld seconds";
 
 // accessibility labels for the playlist
-"OBJECT_TYPE_SHOW" = "Show";
-"OBJECT_TYPE_SHOW_EPISODE" = "Show episode";
-"OBJECT_TYPE_LABEL" = "Folder";
-"OBJECT_TYPE_ALBUM" = "Album";
-"OBJECT_TYPE_ALBUM_TRACK" = "Album track";
-"OBJECT_TYPE_FILE" = "File";
-"OBJECT_TYPE_FILE_AUDIO" = "Audio file";
-
-"NOT_CONNECTED_TO_PHONE_TITLE" = "Not connected to iPhone";
-"NOT_CONNECTED_TO_PHONE_MESSAGE" = "Please connect your iPhone to perform remote control actions.";
+
 
 "LONGPRESS_TO_STOP" = "Long-press to stop playback.";
 

+ 0 - 39
SharedSources/VLCWatchMessage.h

@@ -1,39 +0,0 @@
-//
-//  VLCWatchMessage.h
-//  VLC for iOS
-//
-//  Created by Tobias Conradi on 02.05.15.
-//  Copyright (c) 2015 VideoLAN. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-extern NSString *const VLCWatchMessageNameGetNowPlayingInfo;
-extern NSString *const VLCWatchMessageNamePlayPause;
-extern NSString *const VLCWatchMessageNameSkipForward;
-extern NSString *const VLCWatchMessageNameSkipBackward;
-extern NSString *const VLCWatchMessageNamePlayFile;
-extern NSString *const VLCWatchMessageNameSetVolume;
-extern NSString *const VLCWatchMessageNameNotification;
-extern NSString *const VLCWatchMessageNameRequestThumbnail;
-extern NSString *const VLCWatchMessageNameRequestDB;
-
-extern NSString *const VLCWatchMessageKeyURIRepresentation;
-
-@interface VLCWatchMessage : NSObject
-@property (nonatomic, readonly) NSString *name;
-@property (nonatomic, readonly, nullable) id<NSObject,NSCoding> payload;
-
-@property (nonatomic, readonly) NSDictionary *dictionaryRepresentation;
-
-- (instancetype)initWithName:(NSString *)name payload:(nullable id<NSObject,NSCoding>)payload;
-- (instancetype)initWithDictionary:(NSDictionary *)dictionary;
-
-+ (NSDictionary *)messageDictionaryForName:(NSString *)name payload:(nullable id<NSObject,NSCoding>)payload;
-+ (NSDictionary *)messageDictionaryForName:(NSString *)name;
-
-@end
-
-NS_ASSUME_NONNULL_END

+ 0 - 96
SharedSources/VLCWatchMessage.m

@@ -1,96 +0,0 @@
-//
-//  VLCWatchMessage.m
-//  VLC for iOS
-//
-//  Created by Tobias Conradi on 02.05.15.
-//  Copyright (c) 2015 VideoLAN. All rights reserved.
-//
-
-#import "VLCWatchMessage.h"
-
-NSString *const VLCWatchMessageNameGetNowPlayingInfo = @"getNowPlayingInfo";
-NSString *const VLCWatchMessageNamePlayPause = @"playpause";
-NSString *const VLCWatchMessageNameSkipForward = @"skipForward";
-NSString *const VLCWatchMessageNameSkipBackward = @"skipBackward";
-NSString *const VLCWatchMessageNamePlayFile = @"playFile";
-NSString *const VLCWatchMessageNameSetVolume = @"setVolume";
-NSString *const VLCWatchMessageNameNotification = @"notification";
-NSString *const VLCWatchMessageNameRequestThumbnail = @"requestThumbnail";
-NSString *const VLCWatchMessageNameRequestDB = @"requestDB";
-
-NSString *const VLCWatchMessageKeyURIRepresentation = @"URIRepresentation";
-
-
-static NSString *const VLCWatchMessageNameKey = @"name";
-static NSString *const VLCWatchMessagePayloadKey = @"payload";
-
-@implementation VLCWatchMessage
-@synthesize dictionaryRepresentation = _dictionaryRepresentation;
-
-- (instancetype)initWithName:(NSString *)name payload:(nullable id<NSObject,NSCoding>)payload
-{
-    self = [super init];
-    if (self) {
-        _name = [name copy];
-        _payload = payload;
-    }
-    return self;
-}
-
-- (instancetype)initWithDictionary:(NSDictionary *)dictionary
-{
-    NSString *name = dictionary[VLCWatchMessageNameKey];
-    id<NSObject> payloadObject = dictionary[VLCWatchMessagePayloadKey];
-    id payload = [self payloadFromPayloadObject:payloadObject];
-    return [self initWithName:name payload:payload];
-}
-
-- (NSDictionary *)dictionaryRepresentation
-{
-    if (!_dictionaryRepresentation) {
-        _dictionaryRepresentation = [self.class messageDictionaryForName:self.name payload:self.payload];
-    }
-    return _dictionaryRepresentation;
-}
-
-- (id)payloadFromPayloadObject:(id<NSObject>)payloadObject {
-    id payload;
-    if ([payloadObject isKindOfClass:[NSData class]]) {
-        @try {
-            payload = [NSKeyedUnarchiver unarchiveObjectWithData:(NSData *)payloadObject];
-        }
-        @catch (NSException *exception) {
-            NSLog(@"%s Failed to decode payload with exception: %@",__PRETTY_FUNCTION__,exception);
-        }
-    } else {
-        payload = payloadObject;
-    }
-    return payload;
-}
-
-+ (NSDictionary *)messageDictionaryForName:(NSString *)name payload:(nullable id<NSObject,NSCoding>)payload
-{
-    id payloadObject;
-    BOOL noArchiving = [payload isKindOfClass:[NSNumber class]] || [payload isKindOfClass:[NSString class]];
-    if (noArchiving) {
-        payloadObject = payload;
-    } else if (payload != nil) {
-        payloadObject = [NSKeyedArchiver archivedDataWithRootObject:payload];
-    }
-    // we use nil termination so when payloadData is nil payload is not set
-    return [NSDictionary dictionaryWithObjectsAndKeys:
-            name,VLCWatchMessageNameKey,
-            payloadObject, VLCWatchMessagePayloadKey,
-            nil];
-}
-+ (NSDictionary *)messageDictionaryForName:(NSString *)name
-{
-    return [self messageDictionaryForName:name payload:nil];
-}
-
-- (NSString *)debugDescription
-{
-    return [NSString stringWithFormat:@"<%@: %p name=%@, payload=%@>",NSStringFromClass(self.class), self, _name, _payload];
-}
-
-@end

+ 1 - 4
Sources/VLCAppDelegate.h

@@ -2,7 +2,7 @@
  * VLCAppDelegate.h
  * VLC for iOS
  *****************************************************************************
- * Copyright (c) 2013-2015 VideoLAN. All rights reserved.
+ * Copyright (c) 2013-2018 VideoLAN. All rights reserved.
  * $Id$
  *
  * Authors: Felix Paul Kühne <fkuehne # videolan.org>
@@ -14,15 +14,12 @@
  * Refer to the COPYING file of the official project for license.
  *****************************************************************************/
 
-#import "VLCWatchCommunication.h"
 #import <AppAuth/AppAuth.h>
 
 extern NSString *const VLCDropboxSessionWasAuthorized;
 
 @interface VLCAppDelegate : UIResponder <UIApplicationDelegate>
 
-@property (nonatomic, readonly) VLCWatchCommunication *watchCommunication;
-
 @property (nonatomic, strong) UIWindow *window;
 
 @property (atomic, strong) id<OIDAuthorizationFlowSession> currentGoogleAuthorizationFlow;

+ 0 - 18
Sources/VLCAppDelegate.m

@@ -44,7 +44,6 @@ NSString *const VLCDropboxSessionWasAuthorized = @"VLCDropboxSessionWasAuthorize
 {
     BOOL _isRunningMigration;
     BOOL _isComingFromHandoff;
-    VLCWatchCommunication *_watchCommunication;
     VLCKeychainCoordinator *_keychainCoordinator;
     AppCoordinator *appCoordinator;
     UITabBarController *rootViewController;
@@ -156,13 +155,6 @@ NSString *const VLCDropboxSessionWasAuthorized = @"VLCDropboxSessionWasAuthorize
         setupBlock();
     }
 
-    if ([VLCWatchCommunication isSupported]) {
-        _watchCommunication = [VLCWatchCommunication sharedInstance];
-        // TODO: push DB changes instead
-        //    [_watchCommunication startRelayingNotificationName:NSManagedObjectContextDidSaveNotification object:nil];
-        [_watchCommunication startRelayingNotificationName:VLCPlaybackControllerPlaybackMetadataDidChange object:nil];
-    }
-
     /* add our static shortcut items the dynamic way to ease l10n and dynamic elements to be introduced later */
     if (@available(iOS 9, *)) {
         if (application.shortcutItems == nil || application.shortcutItems.count < 4) {
@@ -481,14 +473,4 @@ didFailToContinueUserActivityWithType:(NSString *)userActivityType
     [vpc playMediaList:mediaList firstIndex:0 subtitlesFilePath:nil];
 }
 
-#pragma mark - watch stuff
-- (void)application:(UIApplication *)application
-handleWatchKitExtensionRequest:(NSDictionary *)userInfo
-              reply:(void (^)(NSDictionary *))reply
-{
-    if ([VLCWatchCommunication isSupported]) {
-        [self.watchCommunication session:[WCSession defaultSession] didReceiveMessage:userInfo replyHandler:reply];
-    }
-}
-
 @end

+ 0 - 25
Sources/VLCThumbnailsCache.m

@@ -16,7 +16,6 @@
 #import "VLCThumbnailsCache.h"
 #import <CommonCrypto/CommonDigest.h>
 #import "UIImage+Blur.h"
-#import <WatchKit/WatchKit.h>
 #import <CoreData/CoreData.h>
 #import <MediaLibraryKit/MediaLibraryKit.h>
 #import <MediaLibraryKit/UIImage+MLKit.h>
@@ -36,14 +35,11 @@
 
 #define MAX_CACHE_SIZE_IPHONE 21  // three times the number of items shown on iPhone 5
 #define MAX_CACHE_SIZE_IPAD   27  // three times the number of items shown on iPad
-#define MAX_CACHE_SIZE_WATCH  15  // three times the number of items shown on 42mm Watch
 
 - (instancetype)init
 {
     self = [super init];
     if (self) {
-// TODO: correct for watch
-#if TARGET_OS_IOS
         _currentDeviceIdiom = [[UIDevice currentDevice] userInterfaceIdiom];
         MaxCacheSize = 0;
 
@@ -54,14 +50,7 @@
             case UIUserInterfaceIdiomPhone:
                 MaxCacheSize = MAX_CACHE_SIZE_IPHONE;
                 break;
-
-            default:
-                MaxCacheSize = MAX_CACHE_SIZE_WATCH;
-                break;
         }
-#else
-        MaxCacheSize = MAX_CACHE_SIZE_WATCH;
-#endif
         _thumbnailCache = [[NSCache alloc] init];
         _thumbnailCacheMetadata = [[NSCache alloc] init];
         [_thumbnailCache setCountLimit: MaxCacheSize];
@@ -278,8 +267,6 @@
 {
     UIImage *clusterThumb;
     CGSize imageSize = CGSizeZero;
-    // TODO: correct for watch
-#ifndef TARGET_OS_WATCH
     if (_currentDeviceIdiom == UIUserInterfaceIdiomPad) {
         if ([UIScreen mainScreen].scale==2.0)
             imageSize = CGSizeMake(682., 384.);
@@ -290,13 +277,6 @@
             imageSize = CGSizeMake(480., 270.);
         else
             imageSize = CGSizeMake(720., 405.);
-    } else
-#endif
-    {
-        if (WKInterfaceDevice.currentDevice != nil) {
-            CGRect screenRect = WKInterfaceDevice.currentDevice.screenBounds;
-            imageSize = CGSizeMake(screenRect.size.width * WKInterfaceDevice.currentDevice.screenScale, 120.);
-        }
     }
 
     UIGraphicsBeginImageContext(imageSize);
@@ -324,12 +304,7 @@
 
     if (!blurImage)
         return clusterThumb;
-// TODO: When we move to watch os 4.0 we can include the blurcategory and remove the if else block
-#ifndef TARGET_OS_WATCH
     return [UIImage applyBlurOnImage:clusterThumb withRadius:0.1];
-#else
-    return clusterThumb;
-#endif
 }
 
 @end

+ 0 - 27
Sources/VLCWatchCommunication.h

@@ -1,27 +0,0 @@
-/*****************************************************************************
- * VLCWatchCommunication.h
- * VLC for iOS
- *****************************************************************************
- * Copyright (c) 2015 VideoLAN. All rights reserved.
- * $Id$
- *
- * Author: Tobias Conradi <videolan # tobias-conradi.de>
- *
- * Refer to the COPYING file of the official project for license.
- *****************************************************************************/
-#import <Foundation/Foundation.h>
-#import <WatchConnectivity/WatchConnectivity.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface VLCWatchCommunication : NSObject <WCSessionDelegate>
-
-+ (BOOL)isSupported;
-+ (instancetype)sharedInstance;
-
-- (void)startRelayingNotificationName:(nullable NSString *)name object:(nullable id)object;
-- (void)stopRelayingNotificationName:(nullable NSString *)name object:(nullable id)object;
-
-@end
-
-NS_ASSUME_NONNULL_END

+ 0 - 297
Sources/VLCWatchCommunication.m

@@ -1,297 +0,0 @@
-/*****************************************************************************
- * VLCWatchCommunication.m
- * VLC for iOS
- *****************************************************************************
- * Copyright (c) 2015 VideoLAN. All rights reserved.
- * $Id$
- *
- * Author: Tobias Conradi <videolan # tobias-conradi.de>
- *
- * Refer to the COPYING file of the official project for license.
- *****************************************************************************/
-
-
-#import "VLCWatchCommunication.h"
-#import "VLCWatchMessage.h"
-#import "VLCPlaybackController+MediaLibrary.h"
-#import <MediaPlayer/MediaPlayer.h>
-#import <MediaLibraryKit/UIImage+MLKit.h>
-#import <WatchKit/WatchKit.h>
-#import "VLCThumbnailsCache.h"
-
-@interface VLCWatchCommunication()
-@property (nonatomic, strong) NSOperationQueue *thumbnailingQueue;
-
-@end
-
-@implementation VLCWatchCommunication
-
-+ (BOOL)isSupported {
-    return @available(iOS 9, *) && [WCSession isSupported];
-}
-
-- (instancetype)init
-{
-    self = [super init];
-    if (self) {
-
-        if ([VLCWatchCommunication isSupported]) {
-            WCSession *session = [WCSession defaultSession];
-            session.delegate = self;
-            [session activateSession];
-            _thumbnailingQueue = [NSOperationQueue new];
-            _thumbnailingQueue.name = @"org.videolan.vlc.watch-thumbnailing";
-        }
-    }
-    return self;
-}
-
-- (void)dealloc {
-    [[NSNotificationCenter defaultCenter] removeObserver:self name:nil object:nil];
-}
-
-static VLCWatchCommunication *_singeltonInstance = nil;
-
-+ (VLCWatchCommunication *)sharedInstance
-{
-    @synchronized(self) {
-        static dispatch_once_t pred;
-        dispatch_once(&pred, ^{
-            _singeltonInstance = [[self alloc] init];
-        });
-    }
-    return _singeltonInstance;
-}
-
-- (void)playFileFromWatch:(VLCWatchMessage *)message
-{
-    NSManagedObject *managedObject = nil;
-    NSString *uriString = (id)message.payload;
-    if ([uriString isKindOfClass:[NSString class]]) {
-        NSURL *uriRepresentation = [NSURL URLWithString:uriString];
-        managedObject = [[MLMediaLibrary sharedMediaLibrary] objectForURIRepresentation:uriRepresentation];
-    }
-    if (managedObject == nil) {
-        APLog(@"%s file not found: %@",__PRETTY_FUNCTION__,message);
-        return;
-    }
-
-    VLCPlaybackController *vpc = [VLCPlaybackController sharedInstance];
-    [vpc playMediaLibraryObject:managedObject];
-}
-
-#pragma mark - WCSessionDelegate
-- (NSDictionary *)handleMessage:(nonnull VLCWatchMessage *)message {
-    UIApplication *application = [UIApplication sharedApplication];
-    /* dispatch background task */
-    __block UIBackgroundTaskIdentifier taskIdentifier = [application beginBackgroundTaskWithName:nil
-                                                                               expirationHandler:^{
-                                                                                   [application endBackgroundTask:taskIdentifier];
-                                                                                   taskIdentifier = UIBackgroundTaskInvalid;
-                                                                               }];
-
-    NSString *name = message.name;
-    NSDictionary *responseDict = @{};
-    if ([name isEqualToString:VLCWatchMessageNameGetNowPlayingInfo]) {
-        responseDict = [self nowPlayingResponseDict];
-    } else if ([name isEqualToString:VLCWatchMessageNamePlayPause]) {
-        [[VLCPlaybackController sharedInstance] playPause];
-        responseDict = @{@"playing": @([VLCPlaybackController sharedInstance].isPlaying)};
-    } else if ([name isEqualToString:VLCWatchMessageNameSkipForward]) {
-        [[VLCPlaybackController sharedInstance] next];
-    } else if ([name isEqualToString:VLCWatchMessageNameSkipBackward]) {
-        [[VLCPlaybackController sharedInstance] previous];
-    } else if ([name isEqualToString:VLCWatchMessageNamePlayFile]) {
-        [self playFileFromWatch:message];
-    } else if ([name isEqualToString:VLCWatchMessageNameSetVolume]) {
-        [self setVolumeFromWatch:message];
-    } else if ([name isEqualToString:VLCWatchMessageNameRequestThumbnail]) {
-        [self requestThumnail:message];
-    } else if([name isEqualToString:VLCWatchMessageNameRequestDB]) {
-        [self copyCoreDataToWatch];
-    } else {
-        APLog(@"Did not handle request from WatchKit Extension: %@",message);
-    }
-    return responseDict;
-}
-
-- (void)session:(nonnull WCSession *)session didReceiveMessage:(nonnull NSDictionary<NSString *,id> *)userInfo replyHandler:(nonnull void (^)(NSDictionary<NSString *,id> * _Nonnull))replyHandler {
-    VLCWatchMessage *message = [[VLCWatchMessage alloc] initWithDictionary:userInfo];
-    NSDictionary *responseDict = [self handleMessage:message];
-    replyHandler(responseDict);
-}
-
-- (void)session:(nonnull WCSession *)session didReceiveMessage:(nonnull NSDictionary<NSString *,id> *)messageDict {
-    VLCWatchMessage *message = [[VLCWatchMessage alloc] initWithDictionary:messageDict];
-    [self handleMessage:message];
-}
-
-- (void)sessionWatchStateDidChange:(WCSession *)session {
-
-    NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
-    [center removeObserver:self name:NSManagedObjectContextDidSaveNotification object:nil];
-    [center removeObserver:self name:MLFileThumbnailWasUpdated object:nil];
-
-    if ([[WCSession defaultSession] isPaired] && [[WCSession defaultSession] isWatchAppInstalled]) {
-        [center addObserver:self selector:@selector(savedManagedObjectContextNotification:) name:NSManagedObjectContextDidSaveNotification object:nil];
-        [center addObserver:self selector:@selector(didUpdateThumbnail:) name:MLFileThumbnailWasUpdated object:nil];
-    }
-}
-
-#pragma mark -
-
-- (void)setVolumeFromWatch:(VLCWatchMessage *)message
-{
-    NSNumber *volume = (id)message.payload;
-    if ([volume isKindOfClass:[NSNumber class]]) {
-        /*
-         * Since WatchKit doesn't provide something like MPVolumeView we use deprecated API.
-         * rdar://20783803 Feature Request: WatchKit equivalent for MPVolumeView
-         */
-        [MPMusicPlayerController applicationMusicPlayer].volume = volume.floatValue;
-    }
-}
-
-- (NSDictionary *)nowPlayingResponseDict {
-    NSMutableDictionary *response = [NSMutableDictionary new];
-    NSMutableDictionary *nowPlayingInfo = [[MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo mutableCopy];
-    NSNumber *playbackTime = [[VLCPlaybackController sharedInstance] playbackTime];
-    if (playbackTime) {
-        nowPlayingInfo[MPNowPlayingInfoPropertyElapsedPlaybackTime] = @(playbackTime.floatValue/1000);
-    }
-    if (nowPlayingInfo) {
-        response[@"nowPlayingInfo"] = nowPlayingInfo;
-    }
-    VLCMedia *currentFile = [VLCPlaybackController sharedInstance].currentlyPlayingMedia;
-    MLFile *mediaFile = [MLFile fileForURL:currentFile.url].firstObject;
-    NSString *URIString = mediaFile.objectID.URIRepresentation.absoluteString;
-    if (URIString) {
-        response[VLCWatchMessageKeyURIRepresentation] = URIString;
-    }
-
-    response[@"volume"] = @([MPMusicPlayerController applicationMusicPlayer].volume);
-
-    return response;
-}
-
-- (void)requestThumnail:(VLCWatchMessage *)message {
-    NSAssert([message.payload isKindOfClass:[NSDictionary class]], @"the payload needs to be an NSDictionary");
-    if (![message.payload isKindOfClass:[NSDictionary class]]) return;
-
-    NSDictionary *payload = (NSDictionary *)message.payload;
-    NSString *uriString = payload[VLCWatchMessageKeyURIRepresentation];
-    NSURL *url = [NSURL URLWithString:uriString];
-    NSManagedObject *object = [[MLMediaLibrary sharedMediaLibrary] objectForURIRepresentation:url];
-    if (object) {
-        [self transferThumbnailForObject:object refreshCache:NO];
-    }
-}
-
-#pragma mark - Notifications
-- (void)startRelayingNotificationName:(nullable NSString *)name object:(nullable id)object {
-    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(relayNotification:) name:name object:object];
-}
-- (void)stopRelayingNotificationName:(nullable NSString *)name object:(nullable id)object {
-    [[NSNotificationCenter defaultCenter] removeObserver:self name:name object:object];
-}
-- (void)relayNotification:(NSNotification *)notification {
-
-    NSMutableDictionary *payload = [NSMutableDictionary dictionary];
-    payload[@"name"] = notification.name;
-    if (notification.userInfo) {
-        payload[@"userInfo"] = notification.userInfo;
-    }
-    NSDictionary *dict = [VLCWatchMessage messageDictionaryForName:VLCWatchMessageNameNotification
-                                                           payload:payload];
-    if ([WCSession isSupported] && [[WCSession defaultSession] isWatchAppInstalled] && [[WCSession defaultSession] isReachable]) {
-        [[WCSession defaultSession] sendMessage:dict replyHandler:nil errorHandler:nil];
-    }
-}
-
-#pragma mark - Copy CoreData to Watch
-
-- (void)savedManagedObjectContextNotification:(NSNotification *)notification {
-    NSManagedObjectContext *moc = notification.object;
-    if (moc.persistentStoreCoordinator == [[MLMediaLibrary sharedMediaLibrary] persistentStoreCoordinator]) {
-        [self copyCoreDataToWatch];
-    }
-}
-
-- (void)copyCoreDataToWatch {
-    if (![[WCSession defaultSession] isPaired] || ![[WCSession defaultSession] isWatchAppInstalled]) return;
-
-    MLMediaLibrary *library = [MLMediaLibrary sharedMediaLibrary];
-    NSPersistentStoreCoordinator *libraryPSC = [library persistentStoreCoordinator];
-    NSPersistentStore *persistentStore = [libraryPSC persistentStoreForURL:[library persistentStoreURL]];
-    NSURL *tmpDirectoryURL = [[WCSession defaultSession] watchDirectoryURL];
-    NSURL *tmpURL = [tmpDirectoryURL URLByAppendingPathComponent:persistentStore.URL.lastPathComponent];
-
-    NSMutableDictionary *destOptions = [persistentStore.options mutableCopy] ?: [NSMutableDictionary new];
-    destOptions[NSSQLitePragmasOption] = @{@"journal_mode": @"DELETE"};
-
-    NSError *error;
-    bool success = [libraryPSC replacePersistentStoreAtURL:tmpURL destinationOptions:destOptions withPersistentStoreFromURL:persistentStore.URL sourceOptions:persistentStore.options storeType:NSSQLiteStoreType error:&error];
-    if (!success) {
-        NSLog(@"%s failed to copy persistent store to tmp location for copy to watch with error %@",__PRETTY_FUNCTION__,error);
-    }
-
-    // cancel old transfers
-    NSArray<WCSessionFileTransfer *> *outstandingtransfers = [[WCSession defaultSession] outstandingFileTransfers];
-    [outstandingtransfers enumerateObjectsUsingBlock:^(WCSessionFileTransfer * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
-        if ([obj.file.metadata[@"filetype"] isEqualToString:@"coredata"]) {
-            [obj cancel];
-        }
-    }];
-
-    NSDictionary *metadata = @{@"filetype":@"coredata"};
-    [[WCSession defaultSession] transferFile:tmpURL metadata:metadata];
-}
-
-- (void)transferThumbnailForObject:(NSManagedObject *__nonnull)object refreshCache:(BOOL)refresh{
-
-    if (![[WCSession defaultSession] isPaired] || ![[WCSession defaultSession] isWatchAppInstalled]) {
-        return;
-    }
-
-    CGRect bounds = [WKInterfaceDevice currentDevice].screenBounds;
-    CGFloat scale = [WKInterfaceDevice currentDevice].screenScale;
-    [self.thumbnailingQueue addOperationWithBlock:^{
-        UIImage *scaledImage = [VLCThumbnailsCache thumbnailForManagedObject:object refreshCache:refresh toFitRect:bounds scale:scale shouldReplaceCache:NO];
-        [self transferImage:scaledImage forObjectID:object.objectID];
-    }];
-
-}
-
-- (void)didUpdateThumbnail:(NSNotification *)notification {
-    NSManagedObject *object = notification.object;
-    if(![object isKindOfClass:[NSManagedObject class]])
-        return;
-    [self transferThumbnailForObject:object refreshCache:YES];
-}
-
-- (void)transferImage:(UIImage *)image forObjectID:(NSManagedObjectID *)objectID {
-    if (!image || ![[WCSession defaultSession] isPaired] || ![[WCSession defaultSession] isWatchAppInstalled]) {
-        return;
-    }
-
-    NSString *imageName = [[NSUUID UUID] UUIDString];
-    NSURL *tmpDirectoryURL = [[WCSession defaultSession] watchDirectoryURL];
-    NSURL *tmpURL = [tmpDirectoryURL URLByAppendingPathComponent:imageName];
-
-    NSData *data = UIImageJPEGRepresentation(image, 0.7);
-    [data writeToURL:tmpURL atomically:YES];
-
-    NSDictionary *metaData = @{@"filetype" : @"thumbnail",
-                               VLCWatchMessageKeyURIRepresentation : objectID.URIRepresentation.absoluteString};
-
-    NSArray<WCSessionFileTransfer *> *outstandingtransfers = [[WCSession defaultSession] outstandingFileTransfers];
-    [outstandingtransfers enumerateObjectsUsingBlock:^(WCSessionFileTransfer * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
-        if ([obj.file.metadata isEqualToDictionary:metaData])
-            [obj cancel];
-    }];
-
-    [[WCSession defaultSession] transferFile:tmpURL metadata:metaData];
-}
-
-
-@end

+ 0 - 10
VLC WatchKit App.entitlements

@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>com.apple.security.application-groups</key>
-	<array>
-		<string>$(GROUP_IDENTIFIER)</string>
-	</array>
-</dict>
-</plist>

+ 0 - 10
VLC WatchKit Extension.entitlements

@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>com.apple.security.application-groups</key>
-	<array>
-		<string>$(GROUP_IDENTIFIER)</string>
-	</array>
-</dict>
-</plist>

+ 0 - 1
VLC WatchKit Native Extension/Assets.xcassets/README__ignoredByTemplate__

@@ -1 +0,0 @@
-Did you know that git does not support storing empty directories?

+ 0 - 22
VLC WatchKit Native Extension/Assets.xcassets/tableview-gradient.imageset/Contents.json

@@ -1,22 +0,0 @@
-{
-  "images" : [
-    {
-      "idiom" : "universal",
-      "scale" : "1x",
-      "filename" : "tableview-gradient.png"
-    },
-    {
-      "idiom" : "universal",
-      "scale" : "2x",
-      "filename" : "tableview-gradient@2x.png"
-    },
-    {
-      "idiom" : "universal",
-      "scale" : "3x"
-    }
-  ],
-  "info" : {
-    "version" : 1,
-    "author" : "xcode"
-  }
-}

BIN
VLC WatchKit Native Extension/Assets.xcassets/tableview-gradient.imageset/tableview-gradient.png


BIN
VLC WatchKit Native Extension/Assets.xcassets/tableview-gradient.imageset/tableview-gradient@2x.png


+ 0 - 31
VLC WatchKit Native Extension/Classes/VLCBaseInterfaceController.h

@@ -1,31 +0,0 @@
-/*****************************************************************************
- * VLCBaseInterfaceController.h
- * VLC for iOS
- *****************************************************************************
- * Copyright (c) 2015 VideoLAN. All rights reserved.
- * $Id$
- *
- * Author: Tobias Conradi <videolan # tobias-conradi.de>
- *
- * Refer to the COPYING file of the official project for license.
- *****************************************************************************/
-
-#import <WatchKit/WatchKit.h>
-
-extern NSString *const VLCDBUpdateNotification;
-
-@interface VLCBaseInterfaceController : WKInterfaceController
-@property (nonatomic, assign, readonly, getter=isActivated) BOOL activated;
-
-- (void)addNowPlayingMenu;
-- (void)showNowPlaying:(id)sender;
-
-
-// calls updataData if interface is currenlty active
-// otherwise it sets a flag so update data when the interface is activated
-- (void)setNeedsUpdateData;
-
-// actual update logic should be overwritten by subclasses that needs an update logic
-- (void)updateData;
-
-@end

+ 0 - 74
VLC WatchKit Native Extension/Classes/VLCBaseInterfaceController.m

@@ -1,74 +0,0 @@
-/*****************************************************************************
- * VLCBaseInterfaceController.m
- * VLC for iOS
- *****************************************************************************
- * Copyright (c) 2015 VideoLAN. All rights reserved.
- * $Id$
- *
- * Author: Tobias Conradi <videolan # tobias-conradi.de>
- *
- * Refer to the COPYING file of the official project for license.
- *****************************************************************************/
-
-#import "VLCBaseInterfaceController.h"
-
-NSString *const VLCDBUpdateNotification = @"VLCUpdateDatabase";
-
-@interface VLCBaseInterfaceController()
-@property (nonatomic) BOOL needsUpdate;
-
-@end
-
-@implementation VLCBaseInterfaceController
-
-- (void)awakeWithContext:(id)context {
-    [super awakeWithContext:context];
-
-    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(setNeedsUpdateData) name:VLCDBUpdateNotification object:nil];
-}
-
-- (void) dealloc {
-    [[NSNotificationCenter defaultCenter] removeObserver:self name:VLCDBUpdateNotification object:nil];
-}
-
-
-- (void)addNowPlayingMenu {
-    [self addMenuItemWithItemIcon:WKMenuItemIconMore title: NSLocalizedString(@"NOW_PLAYING", nil) action:@selector(showNowPlaying:)];
-}
-
-- (void)showNowPlaying:(id)sender {
-    [self presentControllerWithName:@"nowPlaying" context:nil];
-}
-
-
-- (void)willActivate {
-    [super willActivate];
-    _activated = YES;
-
-    [self updateDataIfNeeded];
-}
-- (void)didDeactivate {
-    [super didDeactivate];
-    _activated = NO;
-}
-
-- (void)setNeedsUpdateData
-{
-    self.needsUpdate = YES;
-    [self updateDataIfNeeded];
-}
-- (void)updateDataIfNeeded
-{
-    // if not activated/visible we defer the update til activation
-    if (self.needsUpdate && self.activated) {
-        [self updateData];
-        self.needsUpdate = NO;
-    }
-}
-
-- (void)updateData
-{
-    self.needsUpdate = NO;
-}
-
-@end

+ 0 - 29
VLC WatchKit Native Extension/Classes/VLCDetailInterfaceController.h

@@ -1,29 +0,0 @@
-/*****************************************************************************
- * VLCDetailInterfaceController.h
- * VLC for iOS
- *****************************************************************************
- * Copyright (c) 2015 VideoLAN. All rights reserved.
- * $Id$
- *
- * Authors: Tobias Conradi <videolan # tobias-conradi.de>
- *
- * Refer to the COPYING file of the official project for license.
- *****************************************************************************/
-
-#import <WatchKit/WatchKit.h>
-#import <Foundation/Foundation.h>
-#import "VLCBaseInterfaceController.h"
-
-@interface VLCDetailInterfaceController : VLCBaseInterfaceController
-@property (weak, nonatomic) IBOutlet WKInterfaceLabel *titleLabel;
-@property (weak, nonatomic) IBOutlet WKInterfaceLabel *durationLabel;
-@property (weak, nonatomic) IBOutlet WKInterfaceButton *playNowButton;
-@property (weak, nonatomic) IBOutlet WKInterfaceGroup *group;
-@property (weak, nonatomic) IBOutlet WKInterfaceObject *progressObject;
-
-@property (copy, nonatomic) NSString *mediaTitle;
-@property (copy, nonatomic) NSString *mediaDuration;
-@property (nonatomic) CGFloat playbackProgress;
-
-- (IBAction)playNow;
-@end

+ 0 - 134
VLC WatchKit Native Extension/Classes/VLCDetailInterfaceController.m

@@ -1,134 +0,0 @@
-/*****************************************************************************
- * VLCDetailInterfaceController.m
- * VLC for iOS
- *****************************************************************************
- * Copyright (c) 2015 VideoLAN. All rights reserved.
- * $Id$
- *
- * Authors: Tobias Conradi <videolan # tobias-conradi.de>
- *
- * Refer to the COPYING file of the official project for license.
- *****************************************************************************/
-
-#import "VLCDetailInterfaceController.h"
-#import "VLCTime.h"
-#import "VLCThumbnailsCache.h"
-#import "WKInterfaceObject+VLCProgress.h"
-#import "VLCWatchMessage.h"
-
-#import <WatchConnectivity/WatchConnectivity.h>
-
-@interface VLCDetailInterfaceController ()
-@property (nonatomic, weak) NSManagedObjectContext *moc;
-@property (nonatomic, strong) NSManagedObjectID *objectID;
-@end
-
-@implementation VLCDetailInterfaceController
-
-- (void)awakeWithContext:(id)context {
-    [super awakeWithContext:context];
-    self.title = NSLocalizedString(@"DETAIL", nil);
-    self.playNowButton.accessibilityLabel = NSLocalizedString(@"PLAY_NOW", nil);
-    self.titleLabel.accessibilityLabel = NSLocalizedString(@"TITLE", nil);
-    self.durationLabel.accessibilityLabel = NSLocalizedString(@"DURATION", nil);
-
-    [self addNowPlayingMenu];
-
-    NSManagedObject *managedObject = context;
-    [self configureWithFile:managedObject];
-
-    self.objectID = managedObject.objectID;
-    self.moc = managedObject.managedObjectContext;
-}
-
-- (void)updateData {
-    [super updateData];
-    [self.moc performBlock:^{
-        [self configureWithFile:[self.moc objectWithID:self.objectID]];
-    }];
-}
-
-- (void)configureWithFile:(NSManagedObject *)managedObject {
-
-    NSString *title = nil;
-    NSString *durationString = nil;
-
-    float playbackProgress = 0.0;
-    if ([managedObject isKindOfClass:[MLShowEpisode class]]) {
-        title = ((MLShowEpisode *)managedObject).name;
-    } else if ([managedObject isKindOfClass:[MLFile class]]) {
-        MLFile *file = (MLFile *)managedObject;
-        durationString =  [VLCTime timeWithNumber:file.duration].stringValue;
-        playbackProgress = file.lastPosition.floatValue;
-        title = ((MLFile *)file).title;
-    } else if ([managedObject isKindOfClass:[MLAlbumTrack class]]) {
-        title = ((MLAlbumTrack *)managedObject).title;
-    } else {
-        NSAssert(NO, @"check what filetype we try to show here and add it above");
-    }
-
-    BOOL playEnabled = managedObject != nil;
-
-    [[NSOperationQueue mainQueue] addOperationWithBlock:^{
-        self.playNowButton.enabled = playEnabled;
-
-        self.mediaTitle = title;
-        self.mediaDuration = durationString;
-        self.playbackProgress = playbackProgress;
-    }];
-
-    /* do not block the main thread */
-    [self performSelectorInBackground:@selector(loadThumbnailForManagedObject:) withObject:managedObject];
-}
-
-- (void)loadThumbnailForManagedObject:(NSManagedObject *)managedObject
-{
-    UIImage *thumbnail = [VLCThumbnailsCache thumbnailForManagedObject:managedObject];
-    if (thumbnail) {
-        [self.group performSelectorOnMainThread:@selector(setBackgroundImage:) withObject:thumbnail waitUntilDone:NO];
-    }
-}
-
-- (IBAction)playNow {
-
-    NSURL *currentObjectURI = self.objectID.URIRepresentation;
-    NSDictionary *dict = [VLCWatchMessage messageDictionaryForName:@"playFile"
-                                                           payload:currentObjectURI.absoluteString];
-    [self updateUserActivity:@"org.videolan.vlc-ios.playing" userInfo:@{@"playingmedia":currentObjectURI} webpageURL:nil];
-
-    [self vlc_performBlockIfSessionReachable:^{
-        [[WCSession defaultSession] sendMessage:dict replyHandler:^(NSDictionary<NSString *,id> * _Nonnull replyMessage) {
-            [self showNowPlaying:nil];
-        } errorHandler:nil];
-    } showUnreachableAlert:YES];
-}
-
-- (void)setMediaTitle:(NSString *)mediaTitle {
-    if (![_mediaTitle isEqualToString:mediaTitle]) {
-        _mediaTitle = [mediaTitle copy];
-        self.titleLabel.text = mediaTitle;
-        self.titleLabel.accessibilityValue = mediaTitle;
-        self.titleLabel.hidden = mediaTitle.length == 0;
-    }
-}
-
-- (void)setMediaDuration:(NSString *)mediaDuration {
-    if (![_mediaDuration isEqualToString:mediaDuration]) {
-        _mediaDuration = [mediaDuration copy];
-        self.durationLabel.text = mediaDuration;
-        self.durationLabel.hidden = mediaDuration.length == 0;
-        self.durationLabel.accessibilityValue = mediaDuration;
-    }
-}
-
-- (void)setPlaybackProgress:(CGFloat)playbackProgress {
-    if (_playbackProgress != playbackProgress) {
-        _playbackProgress = playbackProgress;
-        [self.progressObject vlc_setProgress:playbackProgress hideForNoProgress:YES];
-    }
-}
-
-@end
-
-
-

+ 0 - 18
VLC WatchKit Native Extension/Classes/VLCExtensionDelegate.h

@@ -1,18 +0,0 @@
-/*****************************************************************************
- * VLCExtensionDelegate.h
- * VLC for iOS
- *****************************************************************************
- * Copyright (c) 2015-2016 VideoLAN. All rights reserved.
- * $Id$
- *
- * Authors: Tobias Conradi <videolan # tobias-conradi.de>
- *          Felix Paul Kühne <fkuehne # videolan.org>
- *
- * Refer to the COPYING file of the official project for license.
- *****************************************************************************/
-
-#import <WatchKit/WatchKit.h>
-
-@interface VLCExtensionDelegate : NSObject <WKExtensionDelegate>
-
-@end

+ 0 - 91
VLC WatchKit Native Extension/Classes/VLCExtensionDelegate.m

@@ -1,91 +0,0 @@
-/*****************************************************************************
- * VLCExtensionDelegate.m
- * VLC for iOS
- *****************************************************************************
- * Copyright (c) 2015-2016 VideoLAN. All rights reserved.
- * $Id$
- *
- * Authors: Tobias Conradi <videolan # tobias-conradi.de>
- *          Felix Paul Kühne <fkuehne # videolan.org>
- *
- * Refer to the COPYING file of the official project for license.
- *****************************************************************************/
-
-#import "VLCExtensionDelegate.h"
-#import <WatchConnectivity/WatchConnectivity.h>
-#import <CoreData/CoreData.h>
-#import <MediaLibraryKit/MediaLibraryKit.h>
-#import "VLCWatchMessage.h"
-#import "VLCBaseInterfaceController.h"
-
-@interface VLCExtensionDelegate() <NSFileManagerDelegate, WCSessionDelegate>
-
-@end
-
-@implementation VLCExtensionDelegate 
-
-- (void)applicationDidFinishLaunching
-{
-    MLMediaLibrary *library = [MLMediaLibrary sharedMediaLibrary];
-    library.additionalPersitentStoreOptions = @{ NSReadOnlyPersistentStoreOption : @(YES) };
-
-    WCSession *wcsession = [WCSession defaultSession];
-    wcsession.delegate = self;
-    [wcsession activateSession];
-}
-
-- (void)session:(WCSession *)session didReceiveMessage:(NSDictionary<NSString *,id> *)message
-{
-    VLCWatchMessage *msg = [[VLCWatchMessage alloc] initWithDictionary:message];
-    if ([msg.name isEqualToString: VLCWatchMessageNameNotification]) {
-        NSDictionary *payloadDict = (NSDictionary *)msg.payload;
-        NSString *name = payloadDict[@"name"];
-        if (name) {
-            [[NSNotificationCenter defaultCenter] postNotificationName:name
-                                                                object:self
-                                                              userInfo:payloadDict[@"userInfo"]];
-        }
-    }
-}
-
-- (void)session:(WCSession *)session didReceiveFile:(WCSessionFile *)file
-{
-    NSString *fileType = file.metadata[@"filetype"];
-    if ([fileType isEqualToString:@"coredata"]) {
-        dispatch_sync(dispatch_get_main_queue(), ^{
-            [self copyUpdatedCoreDataDBFromURL:file.fileURL];
-        });
-    }
-    if ([fileType isEqualToString:@"thumbnail"]) {
-        [self copyThumbnailToDatabase:file];
-    }
-}
-
-- (void)copyUpdatedCoreDataDBFromURL:(NSURL *)url
-{
-    MLMediaLibrary *library = [MLMediaLibrary sharedMediaLibrary];
-    [library overrideLibraryWithLibraryFromURL:url];
-    [[NSNotificationCenter defaultCenter] postNotificationName:VLCDBUpdateNotification
-                                                        object:self];
-}
-
-- (void)copyThumbnailToDatabase:(WCSessionFile *)file
-{
-    NSData *data = [NSData dataWithContentsOfURL:file.fileURL];
-    if (!data) {
-        return;
-    }
-    UIImage *image = [UIImage imageWithData:data];
-    if (!image) {
-        return;
-    }
-    NSString *uriRepresentation = file.metadata[@"URIRepresentation"];
-    NSURL *objectIDURL = [NSURL URLWithString:uriRepresentation];
-    if (objectIDURL) {
-        MLMediaLibrary *library = [MLMediaLibrary sharedMediaLibrary];
-        MLFile *file = (MLFile *)[library objectForURIRepresentation:objectIDURL];
-        file.computedThumbnail = image;
-    }
-}
-
-@end

+ 0 - 33
VLC WatchKit Native Extension/Classes/VLCNowPlayingInterfaceController.h

@@ -1,33 +0,0 @@
-/*****************************************************************************
- * VLCNowPlayingInterfaceController.h
- * VLC for iOS
- *****************************************************************************
- * Copyright (c) 2015 VideoLAN. All rights reserved.
- * $Id$
- *
- * Authors: Tobias Conradi <videolan # tobias-conradi.de>
- *
- * Refer to the COPYING file of the official project for license.
- *****************************************************************************/
-
-#import <WatchKit/WatchKit.h>
-#import <Foundation/Foundation.h>
-
-@interface VLCNowPlayingInterfaceController : WKInterfaceController
-@property (weak, nonatomic) IBOutlet WKInterfaceGroup *playElementsGroup;
-@property (weak, nonatomic) IBOutlet WKInterfaceLabel *titleLabel;
-@property (weak, nonatomic) IBOutlet WKInterfaceLabel *durationLabel;
-@property (weak, nonatomic) IBOutlet WKInterfaceButton *skipBackwardButton;
-@property (weak, nonatomic) IBOutlet WKInterfaceButton *playPauseButton;
-@property (weak, nonatomic) IBOutlet WKInterfaceGroup *playPauseButtonGroup;
-@property (weak, nonatomic) IBOutlet WKInterfaceButton *skipForwardButton;
-@property (weak, nonatomic) IBOutlet WKInterfaceObject *progressObject;
-@property (weak, nonatomic) IBOutlet WKInterfaceSlider *volumeSlider;
-
-- (IBAction)playPausePressed;
-- (IBAction)skipForward;
-- (IBAction)skipBackward;
-- (IBAction)volumeSliderChanged:(float)value;
-
-
-@end

+ 0 - 233
VLC WatchKit Native Extension/Classes/VLCNowPlayingInterfaceController.m

@@ -1,233 +0,0 @@
-/*****************************************************************************
- * VLCNowPlayingInterfaceController.m
- * VLC for iOS
- *****************************************************************************
- * Copyright (c) 2015 VideoLAN. All rights reserved.
- * $Id$
- *
- * Authors: Tobias Conradi <videolan # tobias-conradi.de>
- *
- * Refer to the COPYING file of the official project for license.
- *****************************************************************************/
-
-#import "VLCNowPlayingInterfaceController.h"
-#import "VLCTime.h"
-#import "WKInterfaceObject+VLCProgress.h"
-#import "VLCWatchMessage.h"
-#import "VLCThumbnailsCache.h"
-#import <WatchConnectivity/WatchConnectivity.h>
-
-static NSString *const VLCNowPlayingUpdateNotification = @"VLCPlaybackControllerPlaybackMetadataDidChange";
-
-@interface VLCNowPlayingInterfaceController ()
-{
-    CGRect _screenBounds;
-    CGFloat _screenScale;
-}
-@property (nonatomic, copy) NSString *titleString;
-@property (nonatomic, copy) NSNumber *playBackDurationNumber;
-@property (nonatomic, getter=isPlaying) BOOL playing;
-@property (nonatomic) NSTimer *updateTimer;
-@property (nonatomic, weak) MLFile *currentFile;
-@property (nonatomic) float volume;
-@end
-
-@implementation VLCNowPlayingInterfaceController
-
-- (void)awakeWithContext:(id)context {
-    [super awakeWithContext:context];
-
-    WKInterfaceDevice *currentDevice = [WKInterfaceDevice currentDevice];
-    _screenBounds = currentDevice.screenBounds;
-    _screenScale = currentDevice.screenScale;
-
-    [self setTitle:NSLocalizedString(@"PLAYING", nil)];
-    self.skipBackwardButton.accessibilityLabel = NSLocalizedString(@"BWD_BUTTON", nil);
-    self.skipForwardButton.accessibilityLabel = NSLocalizedString(@"FWD_BUTTON", nil);
-    self.volumeSlider.accessibilityLabel = NSLocalizedString(@"VOLUME", nil);
-    self.durationLabel.accessibilityLabel = NSLocalizedString(@"DURATION", nil);
-    self.titleLabel.accessibilityLabel = NSLocalizedString(@"TITLE", nil);
-
-    self.volume = -1.0;
-
-    [self setPlaying:YES];
-
-    [self requestNowPlayingInfo];
-
-    [self vlc_performBlockIfSessionReachable:nil showUnreachableAlert:YES alertOKAction:^{
-        [self dismissController];
-    }];
-}
-
-
-- (void)willActivate {
-    // This method is called when watch view controller is about to be visible to user
-    [super willActivate];
-
-    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(requestNowPlayingInfo) name:VLCNowPlayingUpdateNotification object:nil];
-    [self requestNowPlayingInfo];
-
-    const NSTimeInterval updateInterval = 5;
-    self.updateTimer = [NSTimer scheduledTimerWithTimeInterval:updateInterval
-                                                        target:self
-                                                      selector:@selector(requestNowPlayingInfo)
-                                                      userInfo:nil
-                                                       repeats:YES];
-}
-- (void)didDeactivate {
-    // This method is called when watch view controller is no longer visible
-    [super didDeactivate];
-    [[NSNotificationCenter defaultCenter] removeObserver:self name:VLCNowPlayingUpdateNotification object:nil];
-    [self.updateTimer invalidate];
-    self.updateTimer = nil;
-}
-
-
-// TODO: don't query for after receiving a notification from iPhone instead add user info to message which sends the notification
-// and use that user info dictionary
-- (void)requestNowPlayingInfo {
-
-    [self vlc_performBlockIfSessionReachable:^{
-        NSDictionary *dict = [VLCWatchMessage messageDictionaryForName:VLCWatchMessageNameGetNowPlayingInfo];
-        [[WCSession defaultSession] sendMessage:dict replyHandler:^(NSDictionary<NSString *,id> * _Nonnull replyInfo) {
-            MLFile *file = nil;
-            NSString *uriString = replyInfo[VLCWatchMessageKeyURIRepresentation];
-            if (uriString) {
-                NSURL *uriRepresentation = [NSURL URLWithString:uriString];
-                file = [MLFile fileForURIRepresentation:uriRepresentation];
-            }
-            [self updateWithNowPlayingInfo:replyInfo[@"nowPlayingInfo"] andFile:file];
-            NSNumber *currentVolume = replyInfo[@"volume"];
-            if (currentVolume) {
-                self.volume = currentVolume.floatValue;
-            }
-        } errorHandler:nil];
-    } showUnreachableAlert:NO];
-}
-
-- (void)updateWithNowPlayingInfo:(NSDictionary*)nowPlayingInfo andFile:(MLFile*)file {
-
-    // TODO: fix key use
-    self.titleString = file.title ?: nowPlayingInfo[@"title"];
-
-    NSNumber *duration = file.duration;
-    if (!duration) {
-        duration = nowPlayingInfo[@"playbackDuration"];
-        float durationFloat = duration.floatValue;
-        duration = @(durationFloat*1000);
-    }
-
-    NSNumber *playbackTime = nowPlayingInfo[@"MPNowPlayingInfoPropertyElapsedPlaybackTime"];
-    float playbackTimeFloat = playbackTime.floatValue; // seconds
-    float durationFloat = duration.floatValue; // milliseconds
-    durationFloat/=1000; // seconds
-
-    [self.progressObject vlc_setProgressFromPlaybackTime:playbackTimeFloat duration:durationFloat hideForNoProgess:YES];
-
-    self.playBackDurationNumber = duration;
-
-    NSNumber *rate = nowPlayingInfo[@"MPNowPlayingInfoPropertyPlaybackRate"];
-    self.playing = rate.floatValue > 0.0;
-
-    if ([self.currentFile isEqual:file]) {
-        self.currentFile = file;
-        /* do not block */
-        [self performSelectorInBackground:@selector(loadThumbnailForFile:) withObject:file];
-    }
-}
-
-- (void)loadThumbnailForFile:(MLFile *)file
-{
-    UIImage *image = [VLCThumbnailsCache thumbnailForManagedObject:file refreshCache:YES toFitRect:_screenBounds scale:_screenScale shouldReplaceCache:NO];
-
-    [self.playElementsGroup performSelectorOnMainThread:@selector(setBackgroundImage:) withObject:image waitUntilDone:NO];
-}
-
-- (IBAction)playPausePressed {
-    [self vlc_performBlockIfSessionReachable:^{
-        NSDictionary *dict = [VLCWatchMessage messageDictionaryForName:VLCWatchMessageNamePlayPause];
-        [[WCSession defaultSession] sendMessage:dict replyHandler:^(NSDictionary<NSString *,id> * _Nonnull replyInfo) {
-            NSNumber *playing = replyInfo[@"playing"];
-            if ([playing isKindOfClass:[NSNumber class]]) {
-                self.playing = playing.boolValue;
-            } else {
-                self.playing = !self.playing;
-            }
-
-        } errorHandler:^(NSError * _Nonnull error) {
-            NSLog(@"playpause failed with error: %@",error);
-        }];
-    } showUnreachableAlert:YES];
-}
-
-- (IBAction)skipForward {
-    [self vlc_performBlockIfSessionReachable:^{
-        NSDictionary *dict = [VLCWatchMessage messageDictionaryForName:VLCWatchMessageNameSkipForward];
-        [[WCSession defaultSession] sendMessage:dict replyHandler:nil errorHandler:^(NSError * _Nonnull error) {
-            NSLog(@"skipForward failed with error: %@",error);
-        }];
-
-    } showUnreachableAlert:YES];
-}
-
-- (IBAction)skipBackward {
-    [self vlc_performBlockIfSessionReachable:^{
-
-        NSDictionary *dict = [VLCWatchMessage messageDictionaryForName:VLCWatchMessageNameSkipBackward];
-        [[WCSession defaultSession] sendMessage:dict replyHandler:nil errorHandler:^(NSError * _Nonnull error) {
-            NSLog(@"skipBackward failed with error: %@",error);
-        }];
-    } showUnreachableAlert:YES];
-}
-
-- (IBAction)volumeSliderChanged:(float)value {
-    _volume = value;
-
-    [self vlc_performBlockIfSessionReachable:^{
-
-        NSDictionary *dict = [VLCWatchMessage messageDictionaryForName:VLCWatchMessageNameSetVolume
-                                                               payload:@(value)];
-        [[WCSession defaultSession] sendMessage:dict replyHandler:nil errorHandler:^(NSError * _Nonnull error) {
-            NSLog(@"setVolume failed with error: %@",error);
-        }];
-    } showUnreachableAlert:YES];
-}
-
-#pragma mark value comparing setters -
-
-- (void)setVolume:(float)volume
-{
-    if (_volume != volume) {
-        _volume = volume;
-        self.volumeSlider.value = volume;
-    }
-}
-
-- (void)setPlaying:(BOOL)playing {
-    if (_playing != playing) {
-        [self.playPauseButtonGroup setBackgroundImageNamed:playing? @"pause":@"play"];
-        self.playPauseButton.accessibilityLabel = playing ? NSLocalizedString(@"PAUSE_BUTTON", nil) : NSLocalizedString(@"PLAY_BUTTON", nil);
-        _playing = playing;
-    }
-}
-
-- (void)setTitleString:(NSString *)titleString {
-    if (![_titleString isEqualToString:titleString]) {
-        _titleString = [titleString copy];
-        self.titleLabel.text = titleString;
-        self.titleLabel.accessibilityValue = titleString;
-    }
-}
-
-- (void)setPlayBackDurationNumber:(NSNumber *)playBackDurationNumber {
-    if (![_playBackDurationNumber isEqualToNumber:playBackDurationNumber] || (_playBackDurationNumber==nil && playBackDurationNumber)) {
-        _playBackDurationNumber = playBackDurationNumber;
-        NSString *durationString = [VLCTime timeWithNumber:playBackDurationNumber].stringValue;
-        self.durationLabel.text = durationString;
-        self.durationLabel.accessibilityValue = durationString;
-    }
-}
-
-@end
-
-

+ 0 - 29
VLC WatchKit Native Extension/Classes/VLCPlaylistInterfaceController.h

@@ -1,29 +0,0 @@
-/*****************************************************************************
- * VLCPlaylistInterfaceController.h
- * VLC for iOS
- *****************************************************************************
- * Copyright (c) 2015 VideoLAN. All rights reserved.
- * $Id$
- *
- * Authors: Tobias Conradi <videolan # tobias-conradi.de>
- *          Carola Nitz <caro # videolan.org>
- *
- * Refer to the COPYING file of the official project for license.
- *****************************************************************************/
-
-#import <WatchKit/WatchKit.h>
-#import <Foundation/Foundation.h>
-
-#import "VLCBaseInterfaceController.h"
-
-@interface VLCPlaylistInterfaceController : VLCBaseInterfaceController
-@property (weak, nonatomic) IBOutlet WKInterfaceButton *previousButton;
-@property (nonatomic, weak) IBOutlet WKInterfaceTable *table;
-@property (weak, nonatomic) IBOutlet WKInterfaceButton *nextButton;
-@property (weak, nonatomic) IBOutlet WKInterfaceGroup *emptyLibraryGroup;
-@property (weak, nonatomic) IBOutlet WKInterfaceLabel *emptyLibraryLabel;
-
-- (IBAction)previousPagePressed;
-- (IBAction)nextPagePressed;
-
-@end

+ 0 - 160
VLC WatchKit Native Extension/Classes/VLCPlaylistInterfaceController.m

@@ -1,160 +0,0 @@
-/*****************************************************************************
- * VLCPlaylistInterfaceController.m
- * VLC for iOS
- *****************************************************************************
- * Copyright (c) 2015 VideoLAN. All rights reserved.
- * $Id$
- *
- * Authors: Tobias Conradi <videolan # tobias-conradi.de>
- *          Carola Nitz <caro # videolan.org>
- *          Felix Paul Kühne <fkuehne # videolan.org>
- *
- * Refer to the COPYING file of the official project for license.
- *****************************************************************************/
-
-#import "VLCPlaylistInterfaceController.h"
-#import "VLCRowController.h"
-
-#import "VLCWatchTableController.h"
-#import "MLMediaLibrary+playlist.h"
-#import <WatchConnectivity/WatchConnectivity.h>
-#import "VLCWatchMessage.h"
-
-static NSString *const rowType = @"mediaRow";
-
-@interface VLCPlaylistInterfaceController()
-{
-    CGRect _thumbnailSize;
-    CGFloat _rowWidth;
-}
-
-@property (nonatomic, strong) VLCWatchTableController *tableController;
-@property (nonatomic) VLCLibraryMode libraryMode;
-@property (nonatomic) id groupObject;
-
-@end
-
-@implementation VLCPlaylistInterfaceController
-
-- (void)awakeWithContext:(id)context {
-    [super awakeWithContext:context];
-
-    if (context == nil) {
-        self.libraryMode = VLCLibraryModeAllFiles;
-        [self setupMenuButtons];
-        self.title = NSLocalizedString(@"LIBRARY_ALL_FILES", nil);
-        self.emptyLibraryLabel.text = NSLocalizedString(@"EMPTY_LIBRARY", nil);
-    } else {
-        self.groupObject = context;
-        self.title = [self.groupObject name];
-        self.libraryMode = VLCLibraryModeFolder;
-    }
-    [self addNowPlayingMenu];
-
-    /* setup table view controller */
-    VLCWatchTableController *tableController = [[VLCWatchTableController alloc] init];
-    tableController.table = self.table;
-    tableController.previousPageButton = self.previousButton;
-    tableController.nextPageButton = self.nextButton;
-    tableController.emptyLibraryInterfaceObjects = self.emptyLibraryGroup;
-    tableController.pageSize = 20;
-    tableController.rowType = rowType;
-    tableController.identifierKeyPath = @"objectID.URIRepresentation";
-
-    tableController.configureRowControllerWithObjectBlock = ^(id controller, id object) {
-        if ([controller respondsToSelector:@selector(configureWithMediaLibraryObject:)]) {
-            [controller configureWithMediaLibraryObject:object];
-        }
-    };
-    self.tableController = tableController;
-
-    [self updateData];
-
-    if (self.tableController.objects.count == 0) {
-        NSDictionary *dict = [VLCWatchMessage messageDictionaryForName:VLCWatchMessageNameRequestDB];
-        [[WCSession defaultSession] sendMessage:dict
-                                   replyHandler:nil
-                                   errorHandler:nil];
-    }
-}
-
-- (void)table:(WKInterfaceTable *)table didSelectRowAtIndex:(NSInteger)rowIndex {
-    id object = self.tableController.displayedObjects[rowIndex];
-
-    if ([object isKindOfClass:[MLAlbum class]] || [object isKindOfClass:[MLLabel class]] || [object isKindOfClass:[MLShow class]]) {
-        [self pushControllerWithName:@"tableViewController" context:object];
-        NSString *folderRepresentation = [((NSManagedObject *)object).objectID.URIRepresentation absoluteString];
-        NSDictionary *userDict = @{@"state" : @(self.libraryMode),
-                                   @"folder" : folderRepresentation};
-
-        [self invalidateUserActivity];
-        [self updateUserActivity:@"org.videolan.vlc-ios.libraryselection"
-                        userInfo:userDict
-                      webpageURL:nil];
-    } else {
-        [self pushControllerWithName:@"detailInfo" context:object];
-    }
-}
-
-- (IBAction)nextPagePressed {
-    [self.tableController nextPageButtonPressed];
-}
-
-- (IBAction)previousPagePressed {
-    [self.tableController previousPageButtonPressed];
-}
-
-- (void)setupMenuButtons {
-
-    [self addMenuItemWithImageNamed:@"AllFiles" title: NSLocalizedString(@"LIBRARY_ALL_FILES", nil) action:@selector(switchToAllFiles)];
-    [self addMenuItemWithImageNamed:@"MusicAlbums" title: NSLocalizedString(@"LIBRARY_MUSIC", nil) action:@selector(switchToMusic)];
-    [self addMenuItemWithImageNamed:@"TVShows" title: NSLocalizedString(@"LIBRARY_SERIES", nil) action:@selector(switchToSeries)];
-}
-
-- (void)switchToAllFiles{
-    self.title = NSLocalizedString(@"LIBRARY_ALL_FILES", nil);
-    self.libraryMode = VLCLibraryModeAllFiles;
-    [self updateData];
-}
-
-- (void)switchToMusic{
-    self.title = NSLocalizedString(@"LIBRARY_MUSIC", nil);
-    self.libraryMode = VLCLibraryModeAllAlbums;
-    [self updateData];
-}
-
-- (void)switchToSeries{
-    self.title = NSLocalizedString(@"LIBRARY_SERIES", nil);
-    self.libraryMode = VLCLibraryModeAllSeries;
-    [self updateData];
-}
-
-#pragma mark - data handling
-
-- (void)updateData {
-    [super updateData];
-    NSManagedObjectContext *moc = [(NSManagedObject *)self.tableController.objects.firstObject managedObjectContext];
-    [moc refreshAllObjects];
-    self.tableController.objects = [self mediaArray];
-}
-
-
-- (void)setLibraryMode:(VLCLibraryMode)libraryMode
-{
-    //should also handle diving into a folder
-    [self invalidateUserActivity];
-    [self updateUserActivity:@"org.videolan.vlc-ios.librarymode" userInfo:@{@"state" : @(libraryMode)} webpageURL:nil];
-    _libraryMode = libraryMode;
-}
-
-- (NSArray *)mediaArray
-{
-    id groupObject = self.groupObject;
-    if (groupObject) {
-        return [[MLMediaLibrary sharedMediaLibrary] playlistArrayForGroupObject:groupObject];
-    } else {
-        return [[MLMediaLibrary sharedMediaLibrary] playlistArrayForLibraryMode:self.libraryMode];
-    }
-}
-
-@end

+ 0 - 27
VLC WatchKit Native Extension/Classes/VLCRowController.h

@@ -1,27 +0,0 @@
-/*****************************************************************************
- * VLCRowController.h
- * VLC for iOS
- *****************************************************************************
- * Copyright (c) 2015 VideoLAN. All rights reserved.
- * $Id$
- *
- * Authors: Tobias Conradi <videolan # tobias-conradi.de>
- *
- * Refer to the COPYING file of the official project for license.
- *****************************************************************************/
-
-#import <WatchKit/WatchKit.h>
-@interface VLCRowController : NSObject
-@property (nonatomic, weak) IBOutlet WKInterfaceLabel *titleLabel;
-@property (nonatomic, weak) IBOutlet WKInterfaceGroup *group;
-@property (nonatomic, weak) IBOutlet WKInterfaceObject *progressObject;
-
-
-@property (nonatomic, copy) NSString *mediaTitle;
-@property (nonatomic) CGFloat playbackProgress;
-
-@property (nonatomic, weak, readonly) NSManagedObject *mediaLibraryObject;
-
-- (void) configureWithMediaLibraryObject:(NSManagedObject *)object;
-
-@end

+ 0 - 167
VLC WatchKit Native Extension/Classes/VLCRowController.m

@@ -1,167 +0,0 @@
-/*****************************************************************************
- * VLCRowController.m
- * VLC for iOS
- *****************************************************************************
- * Copyright (c) 2015 VideoLAN. All rights reserved.
- * $Id$
- *
- * Authors: Tobias Conradi <videolan # tobias-conradi.de>
- *
- * Refer to the COPYING file of the official project for license.
- *****************************************************************************/
-
-#import "VLCRowController.h"
-#import "WKInterfaceObject+VLCProgress.h"
-#import "VLCThumbnailsCache.h"
-#import "VLCWatchMessage.h"
-#import <WatchConnectivity/WatchConnectivity.h>
-
-@interface VLCRowController()
-@property (nonatomic, weak, readwrite) NSManagedObject *mediaLibraryObject;
-@property (nonatomic, readonly) CGRect thumbnailSize;
-@property (nonatomic, readonly) CGFloat rowWidth;
-@property (nonatomic, readonly) CGFloat scale;
-@property (nonatomic) UIImage *rawBackgroundImage;
-
-@end
-
-@implementation VLCRowController
-
-- (instancetype)init
-{
-    self = [super init];
-    if (self) {
-        [self calculateThumbnailSizeAndRowWidth];
-        _playbackProgress = -1;
-    }
-    return self;
-}
-
-- (void)calculateThumbnailSizeAndRowWidth
-{
-    WKInterfaceDevice *currentDevice = WKInterfaceDevice.currentDevice;
-    CGRect screenRect = currentDevice.screenBounds;
-    CGFloat screenScale = currentDevice.screenScale;
-    _thumbnailSize =  CGRectMake(0,
-                                 0,
-                                 screenRect.size.width,
-                                 120.
-                                 );
-    _rowWidth = screenRect.size.width;
-    _scale = screenScale;
-}
-
-- (void)configureWithMediaLibraryObject:(NSManagedObject *)storageObject
-{
-    NSString *title = nil;
-    float playbackProgress = 0.0;
-    NSString *objectType = nil;
-    if ([storageObject isKindOfClass:[MLShow class]]) {
-        objectType = NSLocalizedString(@"OBJECT_TYPE_SHOW", nil);
-        title = ((MLAlbum *)storageObject).name;
-    } else if ([storageObject isKindOfClass:[MLShowEpisode class]]) {
-        objectType = NSLocalizedString(@"OBJECT_TYPE_SHOW_EPISODE", nil);
-        title = ((MLShowEpisode *)storageObject).name;
-    } else if ([storageObject isKindOfClass:[MLLabel class]]) {
-        objectType = NSLocalizedString(@"OBJECT_TYPE_LABEL", nil);
-        title = ((MLLabel *)storageObject).name;
-    } else if ([storageObject isKindOfClass:[MLAlbum class]]) {
-        objectType = NSLocalizedString(@"OBJECT_TYPE_ALBUM", nil);
-        title = ((MLAlbum *)storageObject).name;
-    } else if ([storageObject isKindOfClass:[MLAlbumTrack class]]) {
-        objectType = NSLocalizedString(@"OBJECT_TYPE_ALBUM_TRACK", nil);
-        title = ((MLAlbumTrack *)storageObject).title;
-    } else if ([storageObject isKindOfClass:[MLFile class]]){
-        MLFile *file = (MLFile *)storageObject;
-        title = [file title];
-        playbackProgress = file.lastPosition.floatValue;
-        if (file.isSupportedAudioFile) {
-            objectType = NSLocalizedString(@"OBJECT_TYPE_FILE_AUDIO", nil);
-        } else {
-            objectType = NSLocalizedString(@"OBJECT_TYPE_FILE", nil);
-        }
-    }
-
-    self.titleLabel.accessibilityValue = objectType;
-    self.mediaTitle = title;
-    self.playbackProgress = playbackProgress;
-
-    /* FIXME: add placeholder image once designed */
-
-    if (![storageObject.objectID.URIRepresentation isEqual: self.mediaLibraryObject.objectID.URIRepresentation]) {
-        self.group.backgroundImage = [UIImage imageNamed:@"tableview-gradient"];
-    }
-
-    NSArray *array = @[self.group, storageObject];
-    [self performSelectorInBackground:@selector(backgroundThumbnailSetter:) withObject:array];
-
-    self.mediaLibraryObject = storageObject;
-}
-
-- (void)requestBackgroundImageForObjectID:(NSManagedObjectID *)objectID {
-    NSDictionary *dict = [VLCWatchMessage messageDictionaryForName:VLCWatchMessageNameRequestThumbnail
-                                                           payload:@{VLCWatchMessageKeyURIRepresentation : objectID.URIRepresentation.absoluteString}];
-
-    [[WCSession defaultSession] sendMessage:dict replyHandler:nil errorHandler:nil];
-}
-
-- (void)backgroundThumbnailSetter:(NSArray *)array
-{
-    WKInterfaceGroup *interfaceGroup = array.firstObject;
-    NSManagedObject *managedObject = array[1];
-
-    UIImage *backgroundImage = [VLCThumbnailsCache thumbnailForManagedObject:managedObject
-                                                                refreshCache:NO
-                                                                   toFitRect:_thumbnailSize
-                                                                       scale:_scale
-                                                          shouldReplaceCache:YES];
-
-    if (!backgroundImage)   {
-        [self requestBackgroundImageForObjectID:managedObject.objectID];
-        return;
-    }
-
-    // don't redo image processing if no necessary
-    if ([self.rawBackgroundImage isEqual:backgroundImage]) {
-        return;
-    }
-    self.rawBackgroundImage = backgroundImage;
-
-    UIImage *gradient = [UIImage imageNamed:@"tableview-gradient"];
-
-    CGSize newSize = backgroundImage ? backgroundImage.size : CGSizeMake(_rowWidth, 120.);
-    UIGraphicsBeginImageContextWithOptions(newSize, YES, _scale);
-
-    if (backgroundImage)
-        [backgroundImage drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
-    else {
-        [[UIColor darkGrayColor] set];
-        UIRectFill(CGRectMake(0., 0., newSize.width, newSize.height));
-    }
-
-    [gradient drawInRect:CGRectMake(0., 0., newSize.width, newSize.height / 2.) blendMode:kCGBlendModeNormal alpha:1.];
-
-    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
-
-    UIGraphicsEndImageContext();
-
-    [interfaceGroup performSelectorOnMainThread:@selector(setBackgroundImage:) withObject:newImage waitUntilDone:NO];
-}
-
-- (void)setMediaTitle:(NSString *)mediaTitle {
-    if (![_mediaTitle isEqualToString:mediaTitle]) {
-        _mediaTitle = [mediaTitle copy];
-        self.titleLabel.text = mediaTitle;
-        //        self.accessibilityLabel = mediaTitle; // TODO: toco
-        self.titleLabel.hidden = mediaTitle.length == 0;
-    }
-}
-
-- (void)setPlaybackProgress:(CGFloat)playbackProgress {
-    if (_playbackProgress != playbackProgress) {
-        _playbackProgress = playbackProgress;
-        [self.progressObject vlc_setProgress:playbackProgress hideForNoProgress:YES];
-    }
-}
-
-@end

+ 0 - 54
VLC WatchKit Native Extension/Classes/VLCTime.h

@@ -1,54 +0,0 @@
-/*****************************************************************************
- * VLCTime.h: VLCKit.framework VLCTime header
- *****************************************************************************
- * Copyright (C) 2007 Pierre d'Herbemont
- * Copyright (C) 2007 VLC authors and VideoLAN
- * $Id$
- *
- * Authors: Pierre d'Herbemont <pdherbemont # videolan.org>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser 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.
- *****************************************************************************/
-
-#import <Foundation/Foundation.h>
-
-/**
- * Provides an object to define VLCMedia's time.
- */
-@interface VLCTime : NSObject
-
-/* Factories */
-+ (VLCTime *)nullTime;
-+ (VLCTime *)timeWithNumber:(NSNumber *)aNumber;
-+ (VLCTime *)timeWithInt:(int)aInt;
-
-/* Initializers */
-- (instancetype)initWithNumber:(NSNumber *)aNumber;
-- (instancetype)initWithInt:(int)aInt;
-
-/* Properties */
-@property (nonatomic, readonly) NSNumber * value;	//< Holds, in milliseconds, the VLCTime value
-@property (readonly) NSNumber * numberValue;		// here for backwards compatibility
-@property (readonly) NSString * stringValue;
-@property (readonly) NSString * verboseStringValue;
-@property (readonly) NSString * minuteStringValue;
-@property (readonly) int intValue;
-
-/* Comparators */
-- (NSComparisonResult)compare:(VLCTime *)aTime;
-- (BOOL)isEqual:(id)object;
-- (NSUInteger)hash;
-
-@end

+ 0 - 172
VLC WatchKit Native Extension/Classes/VLCTime.m

@@ -1,172 +0,0 @@
-/*****************************************************************************
- * VLCTime.m: VLCKit.framework VLCTime implementation
- *****************************************************************************
- * Copyright (C) 2007 Pierre d'Herbemont
- * Copyright (C) 2007 VLC authors and VideoLAN
- * $Id$
- *
- * Authors: Pierre d'Herbemont <pdherbemont # videolan.org>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser 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.
- *****************************************************************************/
-
-#import "VLCTime.h"
-
-@implementation VLCTime
-
-/* Factories */
-+ (VLCTime *)nullTime
-{
-    static VLCTime * nullTime = nil;
-    static dispatch_once_t onceToken;
-    dispatch_once(&onceToken, ^{
-        nullTime = [VLCTime timeWithNumber:nil];
-    });
-    return nullTime;
-}
-
-+ (VLCTime *)timeWithNumber:(NSNumber *)aNumber
-{
-    return [[VLCTime alloc] initWithNumber:aNumber];
-}
-
-+ (VLCTime *)timeWithInt:(int)aInt
-{
-    return [[VLCTime alloc] initWithInt:aInt];
-}
-
-/* Initializers */
-- (instancetype)initWithNumber:(NSNumber *)aNumber
-{
-    if (self = [super init]) {
-        _value = aNumber;
-    }
-    return self;
-}
-
-- (instancetype)initWithInt:(int)aInt
-{
-    if (self = [super init]) {
-        if (aInt)
-            _value = @(aInt);
-    }
-    return self;
-}
-
-/* NSObject Overrides */
-- (NSString *)description
-{
-    return self.stringValue;
-}
-
-- (NSNumber *)numberValue
-{
-    return _value;
-}
-
-- (NSString *)stringValue
-{
-    if (_value) {
-        long long duration = [_value longLongValue];
-        if (duration == INT_MAX || duration == INT_MIN) {
-            // Return a string that represents an undefined time.
-            return @"--:--";
-        }
-        duration = duration / 1000;
-        long long positiveDuration = llabs(duration);
-        if (positiveDuration > 3600)
-            return [NSString stringWithFormat:@"%s%01ld:%02ld:%02ld",
-                        duration < 0 ? "-" : "",
-                (long) (positiveDuration / 3600),
-                (long)((positiveDuration / 60) % 60),
-                (long) (positiveDuration % 60)];
-        else
-            return [NSString stringWithFormat:@"%s%02ld:%02ld",
-                            duration < 0 ? "-" : "",
-                    (long)((positiveDuration / 60) % 60),
-                    (long) (positiveDuration % 60)];
-    } else {
-        // Return a string that represents an undefined time.
-        return @"--:--";
-    }
-}
-
-- (NSString *)verboseStringValue
-{
-    if (!_value)
-        return @"";
-
-    long long duration = [_value longLongValue] / 1000;
-    long long positiveDuration = llabs(duration);
-    long hours = (long)(positiveDuration / 3600);
-    long mins = (long)((positiveDuration / 60) % 60);
-    long seconds = (long)(positiveDuration % 60);
-    BOOL remaining = duration < 0;
-    NSString *format;
-    if (hours > 0) {
-        format = remaining ? NSLocalizedString(@"%ld hours %ld minutes remaining", nil) : NSLocalizedString(@"%ld hours %ld minutes", nil);
-        return [NSString stringWithFormat:format, hours, mins, remaining];
-    }
-    if (mins > 5) {
-        format = remaining ? NSLocalizedString(@"%ld minutes remaining", nil) : NSLocalizedString(@"%ld minutes", nil);
-        return [NSString stringWithFormat:format, mins, remaining];
-    }
-    if (mins > 0) {
-        format = remaining ? NSLocalizedString(@"%ld minutes %ld seconds remaining", nil) : NSLocalizedString(@"%ld minutes %ld seconds", nil);
-        return [NSString stringWithFormat:format, mins, seconds, remaining];
-    }
-    format = remaining ? NSLocalizedString(@"%ld seconds remaining", nil) : NSLocalizedString(@"%ld seconds", nil);
-    return [NSString stringWithFormat:format, seconds, remaining];
-}
-
-- (NSString *)minuteStringValue
-{
-    if (_value) {
-        long long positiveDuration = llabs([_value longLongValue]);
-        long minutes = (long)(positiveDuration / 60000);
-        return [NSString stringWithFormat:@"%ld", minutes];
-    }
-    return @"";
-}
-
-- (int)intValue
-{
-    return [_value intValue];
-}
-
-- (NSComparisonResult)compare:(VLCTime *)aTime
-{
-    NSInteger a = [_value integerValue];
-    NSInteger b = [aTime.value integerValue];
-
-    return (a > b) ? NSOrderedDescending :
-        (a < b) ? NSOrderedAscending :
-            NSOrderedSame;
-}
-
-- (BOOL)isEqual:(id)object
-{
-    if (![object isKindOfClass:[VLCTime class]])
-        return NO;
-
-    return [[self description] isEqual:[object description]];
-}
-
-- (NSUInteger)hash
-{
-    return [[self description] hash];
-}
-
-@end

+ 0 - 70
VLC WatchKit Native Extension/Classes/VLCWatchTableController.h

@@ -1,70 +0,0 @@
-/*****************************************************************************
- * VLCWatchTableController.h
- * VLC for iOS
- *****************************************************************************
- * Copyright (c) 2015 VideoLAN. All rights reserved.
- * $Id$
- *
- * Author: Tobias Conradi <videolan # tobias-conradi.de>
- *
- * Refer to the COPYING file of the official project for license.
- *****************************************************************************/
-
-#import <WatchKit/WatchKit.h>
-
-typedef NSString *(^VLCWatchTableControllerRowTypeForObjectBlock)(id object);
-typedef void(^VLCWatchTableControllerConfigureRowControllerWithObjectBlock)(id rowController, id object);
-
-@interface VLCWatchTableController : NSObject
-@property (nonatomic, weak) IBOutlet WKInterfaceTable *table;
-
-/* 
- * previous and next buttons are automatically hidden/shown depening on number
- * of objects, page size and the current page
- */
-@property (nonatomic, weak) IBOutlet WKInterfaceButton *previousPageButton;
-@property (nonatomic, weak) IBOutlet WKInterfaceButton *nextPageButton;
-
-
-/*
- * Interface object which will be shown when the objects array is empty;
- */
-@property (nonatomic, weak) IBOutlet WKInterfaceObject *emptyLibraryInterfaceObjects;
-
-/* 
- * set eigher rowType if every row should have the same rowType or the
- * rowTypeForObjectBlock which returns the matching row type for an object
- */
-@property (nonatomic, copy) NSString *rowType;
-@property (nonatomic, copy) VLCWatchTableControllerRowTypeForObjectBlock rowTypeForObjectBlock;
-
-@property (nonatomic, copy) VLCWatchTableControllerConfigureRowControllerWithObjectBlock configureRowControllerWithObjectBlock;
-
-@property (nonatomic, copy, readonly) NSArray *displayedObjects;
-@property (nonatomic, copy, readonly) NSIndexSet *displayedIndexes;
-
-/* does setting these does not trigger table update call updateTable manually to update table */
-@property (nonatomic, assign) NSUInteger pageSize;
-@property (nonatomic, assign) NSUInteger currentPage;
-/*
- * When the objects array changes it will figure out inserted and removed objects
- * and updates the table accoringly.
- */
-@property (nonatomic, copy) NSArray *objects;
-
-/*
- * Set the identifierKeyPath to the key path of a unique identifier of the objects.
- * The identifier at the keyPath is used to determine if a object was added or removed.
- * Default is @"self".
- */
-@property (nonatomic, copy) NSString *identifierKeyPath;
-
-
-/* updates the table with the current configuration (pagesize, page, objects) */
-- (void)updateTable;
-
-- (IBAction)previousPageButtonPressed;
-- (IBAction)nextPageButtonPressed;
-
-
-@end

+ 0 - 178
VLC WatchKit Native Extension/Classes/VLCWatchTableController.m

@@ -1,178 +0,0 @@
-/*****************************************************************************
- * VLCWatchTableController.m
- * VLC for iOS
- *****************************************************************************
- * Copyright (c) 2015 VideoLAN. All rights reserved.
- * $Id$
- *
- * Author: Tobias Conradi <videolan # tobias-conradi.de>
- *
- * Refer to the COPYING file of the official project for license.
- *****************************************************************************/
-
-#import "VLCWatchTableController.h"
-
-
-@interface VLCWatchTableController()
-
-@property (nonatomic, copy, readwrite) NSArray *displayedObjects;
-@property (nonatomic, copy, readwrite) NSIndexSet *displayedIndexes;
-@property (nonatomic, copy, readwrite) NSArray *rowTypes;
-
-@end
-
-@implementation VLCWatchTableController
-
-- (NSString *)identifierKey {
-    if (!_identifierKeyPath) {
-        _identifierKeyPath = @"self";
-    }
-    return _identifierKeyPath;
-}
-
-- (void)setObjects:(NSArray *)objects {
-    _objects = [objects copy];
-    [self updateTable];
-}
-
-- (void)updateTable {
-
-    NSUInteger pageSize = self.pageSize;
-    NSUInteger currentPage = self.currentPage;
-    NSUInteger startIndex = self.currentPage*pageSize;
-    NSUInteger objectsCount = self.objects.count;
-
-    /* calculate a valid start index and reset current page if needed */
-    while (startIndex > objectsCount) {
-        if (startIndex < pageSize) {
-            startIndex = 0;
-            currentPage = 0;
-        } else {
-            startIndex -= pageSize;
-            currentPage--;
-        }
-    }
-
-    /* calculate valid end index */
-    NSUInteger endIndex = startIndex+pageSize;
-    if (endIndex > objectsCount) {
-        endIndex = objectsCount;
-    }
-
-    /* get new dispayed objects */
-    NSRange range = NSMakeRange(startIndex, endIndex-startIndex);
-    NSArray *newObjects = [self.objects subarrayWithRange:range];
-    NSSet *newSet = [[NSSet alloc] initWithArray:[newObjects valueForKeyPath:self.identifierKeyPath]];
-
-    NSArray *oldObjects = self.displayedObjects;
-    NSSet *oldSet = [[NSSet alloc] initWithArray:[oldObjects valueForKeyPath:self.identifierKeyPath]];
-
-    WKInterfaceTable *table = self.table;
-
-    NSMutableSet *addedSet = [NSMutableSet setWithSet:newSet];
-    [addedSet minusSet:oldSet];
-    NSMutableSet *removedSet = [NSMutableSet setWithSet:oldSet];
-    [removedSet minusSet:newSet];
-
-    BOOL differentRowTypes = self.rowTypeForObjectBlock != nil;
-    BOOL pageChange = startIndex != self.displayedIndexes.firstIndex;
-
-    NSMutableArray *rowTypes = differentRowTypes ? [NSMutableArray arrayWithCapacity:pageSize] : nil;
-
-    // we changed the page
-    if (pageChange) {
-        if (differentRowTypes) {
-            // TODO add support different rowtypes
-            NSAssert(NO,@"TODO add support different rowtypes");
-        } else {
-            NSUInteger oldCount = oldObjects.count;
-            NSUInteger newCount = newObjects.count;
-            // remove rows if now on smaller page
-            if (oldCount > newCount) {
-                NSRange range = NSMakeRange(newCount, oldCount-newCount);
-                NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:range];
-                [table removeRowsAtIndexes:indexSet];
-            }
-            // add rows if now on bigger page
-            else if (oldCount < newCount) {
-                NSRange range = NSMakeRange(oldCount, newCount-oldCount);
-                NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:range];
-                [table insertRowsAtIndexes:indexSet withRowType:self.rowType];
-            }
-            [newObjects enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
-                [self _configureTableCellAtIndex:idx withObject:obj];
-            }];
-        }
-    }
-    // update on the same page
-    else {
-        NSMutableIndexSet *removeRowIndexes = [NSMutableIndexSet new];
-        [oldObjects enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
-            if ([removedSet containsObject:[obj valueForKeyPath:self.identifierKeyPath]]) {
-                [removeRowIndexes addIndex:idx];
-            }
-        }];
-        [table removeRowsAtIndexes:removeRowIndexes];
-
-        [newObjects enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
-            if ([addedSet containsObject:[obj valueForKeyPath:self.identifierKeyPath]]) {
-                NSString *rowType = [self _rowTypeForObject:obj];
-                [table insertRowsAtIndexes:[NSIndexSet indexSetWithIndex:idx] withRowType:rowType];
-            }
-            [self _configureTableCellAtIndex:idx withObject:obj];
-        }];
-    }
-
-    self.rowTypes = rowTypes;
-    self.displayedObjects = newObjects;
-    self.displayedIndexes = [NSIndexSet indexSetWithIndexesInRange:range];
-
-
-    /* set state for previous and next buttons */
-    self.previousPageButton.hidden = currentPage == 0;
-    self.nextPageButton.hidden = endIndex >= objectsCount;
-
-    self.emptyLibraryInterfaceObjects.hidden = newObjects.count != 0;
-}
-
-- (void)nextPageButtonPressed {
-    NSUInteger nextPageStartIndex = self.pageSize * (self.currentPage+1);
-    if (nextPageStartIndex > self.objects.count) {
-        return;
-    }
-    self.currentPage = self.currentPage+1;
-    [self updateTable];
-    [self.table scrollToRowAtIndex:0];
-}
-
-- (void)previousPageButtonPressed {
-    if (self.currentPage>0) {
-        self.currentPage = self.currentPage-1;
-        [self updateTable];
-    }
-    NSUInteger displayedCount = self.displayedObjects.count;
-    if (displayedCount) {
-        [self.table scrollToRowAtIndex:displayedCount-1];
-    }
-}
-
-#pragma mark - internal helper
-
-- (NSString *)_rowTypeForObject:(id)object {
-    if (self.rowTypeForObjectBlock) {
-        return self.rowTypeForObjectBlock(object);
-    }
-    NSAssert(self.rowType, @"Either rowTypeForObjectBlock or rowType must be set");
-    return self.rowType;
-}
-
-- (void)_configureTableCellAtIndex:(NSUInteger)index withObject:(id)object {
-    VLCWatchTableControllerConfigureRowControllerWithObjectBlock configureBlock = self.configureRowControllerWithObjectBlock;
-    NSAssert(configureBlock, @"configureRowControllerWithObjectBlock must be set");
-    if (configureBlock) {
-        id rowController = [self.table rowControllerAtIndex:index];
-        configureBlock(rowController, object);
-    }
-}
-
-@end

+ 0 - 34
VLC WatchKit Native Extension/Classes/WKInterfaceController+VLCConnectionAlert.h

@@ -1,34 +0,0 @@
-/*****************************************************************************
- * WKInterfaceController+VLCConnectionAlert.h
- * VLC for iOS
- *****************************************************************************
- * Copyright (c) 2015 VideoLAN. All rights reserved.
- * $Id$
- *
- * Author: Tobias Conradi <videolan # tobias-conradi.de>
- *
- * Refer to the COPYING file of the official project for license.
- *****************************************************************************/
-
-#import <WatchKit/WatchKit.h>
-
-@interface WKInterfaceController (VLCConnectionAlert)
-/*+*
- * Same as method below, with nil as default okActionBlock
- ***/
-- (void)vlc_performBlockIfSessionReachable:(void(^__nullable)())reachableBlock
-                      showUnreachableAlert:(BOOL)unreachableAlert;
-
-/*+*
- * check if the default session is reachable ^== iPhone connected to Watch
- * If the session is reachable, perform the block.
- * If the session is unreachable, show a unreachable alert if unreachable alert
- * is true.
- * okActionBlock is executed if the session is unreachable, the alert was 
- * presented and the user pressed the ok button.
- ***/
-- (void)vlc_performBlockIfSessionReachable:(void(^__nullable)())reachableBlock
-                      showUnreachableAlert:(BOOL)unreachableAlert
-                             alertOKAction:(void(^__nullable)())okActionBlock;
-
-@end

+ 0 - 42
VLC WatchKit Native Extension/Classes/WKInterfaceController+VLCConnectionAlert.m

@@ -1,42 +0,0 @@
-/*****************************************************************************
- * WKInterfaceController+VLCConnectionAlert.m
- * VLC for iOS
- *****************************************************************************
- * Copyright (c) 2015 VideoLAN. All rights reserved.
- * $Id$
- *
- * Author: Tobias Conradi <videolan # tobias-conradi.de>
- *
- * Refer to the COPYING file of the official project for license.
- *****************************************************************************/
-
-#import "WKInterfaceController+VLCConnectionAlert.h"
-#import <WatchConnectivity/WatchConnectivity.h>
-
-@implementation WKInterfaceController (VLCConnectionAlert)
-
-- (void)vlc_performBlockIfSessionReachable:(void(^__nullable)())reachableBlock showUnreachableAlert:(BOOL)unreachableAlert {
-    [self vlc_performBlockIfSessionReachable:reachableBlock showUnreachableAlert:unreachableAlert alertOKAction:nil];
-}
-
-- (void)vlc_performBlockIfSessionReachable:(void(^__nullable)())reachableBlock showUnreachableAlert:(BOOL)unreachableAlert alertOKAction:(void (^ _Nullable)())okActionBlock {
-
-    BOOL isReachable = [[WCSession defaultSession] isReachable];
-    if (!isReachable && unreachableAlert) {
-        WKAlertAction *okAction = [WKAlertAction actionWithTitle:NSLocalizedString(@"BUTTON_OK", nil)
-                                                           style:WKAlertActionStyleDefault
-                                                         handler:^{
-                                                             if (okActionBlock) {
-                                                                 okActionBlock();
-                                                             }
-                                                         }];
-        [self presentAlertControllerWithTitle:NSLocalizedString(@"NOT_CONNECTED_TO_PHONE_TITLE", nil)
-                                      message:NSLocalizedString(@"NOT_CONNECTED_TO_PHONE_MESSAGE", nil)
-                               preferredStyle:WKAlertControllerStyleAlert
-                                      actions:@[okAction]];
-        return;
-    } else if (isReachable && reachableBlock) {
-        reachableBlock();
-    }
-}
-@end

+ 0 - 22
VLC WatchKit Native Extension/Classes/WKInterfaceObject+VLCProgress.h

@@ -1,22 +0,0 @@
-/*****************************************************************************
- * WKInterfaceObject+VLCProgress.h
- * VLC for iOS
- *****************************************************************************
- * Copyright (c) 2015 VideoLAN. All rights reserved.
- * $Id$
- *
- * Author: Tobias Conradi <videolan # tobias-conradi.de>
- *
- * Refer to the COPYING file of the official project for license.
- *****************************************************************************/
-
-#import <WatchKit/WatchKit.h>
-
-@interface WKInterfaceObject (VLCProgress)
-
-- (void)vlc_setProgress:(float)progress;
-- (void)vlc_setProgress:(float)progress hideForNoProgress:(BOOL)hide;
-
-/* time and duration must be in the same timescale but we don't care about the scale*/
-- (void)vlc_setProgressFromPlaybackTime:(float)playbackTime duration:(float)duration hideForNoProgess:(BOOL)hide;
-@end

+ 0 - 39
VLC WatchKit Native Extension/Classes/WKInterfaceObject+VLCProgress.m

@@ -1,39 +0,0 @@
-/*****************************************************************************
- * WKInterfaceObject+VLCProgress.m
- * VLC for iOS
- *****************************************************************************
- * Copyright (c) 2015 VideoLAN. All rights reserved.
- * $Id$
- *
- * Author: Tobias Conradi <videolan # tobias-conradi.de>
- *
- * Refer to the COPYING file of the official project for license.
- *****************************************************************************/
-
-#import "WKInterfaceObject+VLCProgress.h"
-
-@implementation WKInterfaceObject (VLCProgress)
-
--(void)vlc_setProgress:(float)progress
-{
-    float progressWidth = ceil(progress * CGRectGetWidth([WKInterfaceDevice currentDevice].screenBounds));
-    self.width = progressWidth;
-}
-
-- (void)vlc_setProgress:(float)progress hideForNoProgress:(BOOL)hideForNoProgress
-{
-    [self vlc_setProgress:progress];
-    BOOL noProgress = progress == 0.0;
-    self.hidden = noProgress && hideForNoProgress;
-}
-
-- (void)vlc_setProgressFromPlaybackTime:(float)playbackTime duration:(float)duration hideForNoProgess:(BOOL)hideForNoProgress
-{
-    float playbackProgress = 0.0;
-    if (playbackTime > 0.0 && duration > 0.0) {
-        playbackProgress = playbackTime / duration;
-    }
-    [self vlc_setProgress:playbackProgress hideForNoProgress:hideForNoProgress];
-}
-
-@end

+ 0 - 44
VLC WatchKit Native Extension/Info.plist

@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>en</string>
-	<key>CFBundleDisplayName</key>
-	<string>VLC WatchKit Native Extension</string>
-	<key>CFBundleExecutable</key>
-	<string>$(EXECUTABLE_NAME)</string>
-	<key>CFBundleIdentifier</key>
-	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundleName</key>
-	<string>$(PRODUCT_NAME)</string>
-	<key>CFBundlePackageType</key>
-	<string>XPC!</string>
-	<key>CFBundleShortVersionString</key>
-	<string>3.0.3</string>
-	<key>CFBundleSignature</key>
-	<string>????</string>
-	<key>CFBundleVersion</key>
-	<string>305
-
-</string>
-	<key>MLKitGroupIdentifier</key>
-	<string>$(GROUP_IDENTIFIER)</string>
-	<key>NSExtension</key>
-	<dict>
-		<key>NSExtensionAttributes</key>
-		<dict>
-			<key>WKAppBundleIdentifier</key>
-			<string>$(BUNDLE_IDENTIFIER_PREFIX).vlc-ios.watchkitapp</string>
-		</dict>
-		<key>NSExtensionPointIdentifier</key>
-		<string>com.apple.watchkit</string>
-	</dict>
-	<key>RemoteInterfacePrincipalClass</key>
-	<string>$(PRODUCT_MODULE_NAME).InterfaceController</string>
-	<key>WKExtensionDelegateClassName</key>
-	<string>VLCExtensionDelegate</string>
-</dict>
-</plist>

+ 0 - 7
VLC WatchKit Native Extension/VLC WatchKit Extension-Bridging-Header.h

@@ -1,7 +0,0 @@
-//
-//  Use this file to import your target's public headers that you would like to expose to Swift.
-//
-
-
-#import "VLCWatchMessage.h"
-#import "VLCBaseInterfaceController.h"

+ 0 - 32
VLC WatchKit Native Extension/VLC for iOS WatchKit Extension-Prefix.pch

@@ -1,32 +0,0 @@
-/*****************************************************************************
- * Prefix header for all source files of the 'VLC for iOS WK Ext' target
- * VLC for iOS
- *****************************************************************************
- * Copyright (c) 2015 VideoLAN. All rights reserved.
- * $Id$
- *
- * Authors: Felix Paul Kühne <fkuehne # videolan.org>
- *
- * Refer to the COPYING file of the official project for license.
- *****************************************************************************/
-
-#import <Availability.h>
-
-#ifndef __IPHONE_8_2
-#error "This project uses features only available in iOS SDK 8.2 and later."
-#endif
-
-#ifdef __OBJC__
-    #import <UIKit/UIKit.h>
-    #import <Foundation/Foundation.h>
-#endif
-
-#import <MediaLibraryKit/MediaLibraryKit.h>
-
-#import "WKInterfaceController+VLCConnectionAlert.h"
-
-#ifndef NDEBUG
-#define APLog(format, ...) NSLog(format, ## __VA_ARGS__)
-#else
-#define APLog(format, ...)
-#endif

+ 0 - 9
VLC WatchKit Native Extension/da.lproj/Localizable.strings

@@ -1,9 +0,0 @@
-"NOW_PLAYING"="Afspiller nu";
-"PLAY_NOW"="Afspil nu";
-"PLAYING"="Afspiller";
-"PAUSED"="Pauset";
-"DETAIL"="Detalje";
-"LIBRARY_ALL_FILES"="Alle filer";
-"LIBRARY_MUSIC"="Musikalbum";
-"LIBRARY_SERIES"="TV-udsendelser";
-"EMPTY_LIBRARY"="Tomt mediebibliotek";

+ 0 - 9
VLC WatchKit Native Extension/de.lproj/Localizable.strings

@@ -1,9 +0,0 @@
-"NOW_PLAYING"="Jetzt läuft";
-"PLAY_NOW"="Jetzt spielen";
-"PLAYING"="Es läuft";
-"PAUSED"="Pausiert";
-"DETAIL"="Details";
-"LIBRARY_ALL_FILES"="Alle Dateien";
-"LIBRARY_MUSIC"="Musikalben";
-"LIBRARY_SERIES"="TV-Sendungen";
-"EMPTY_LIBRARY"="Leere Mediathek";

+ 0 - 9
VLC WatchKit Native Extension/el.lproj/Localizable.strings

@@ -1,9 +0,0 @@
-"NOW_PLAYING"="Αναπαράγεται τώρα";
-"PLAY_NOW"="Αναπαραγωγή Τώρα";
-"PLAYING"="Αναπαράγεται";
-"PAUSED"="Σε παύση";
-"DETAIL"="Λεπτομέρειες";
-"LIBRARY_ALL_FILES"="Όλα τα αρχεία";
-"LIBRARY_MUSIC"="Μουσικά Άλμπουμ";
-"LIBRARY_SERIES"="Εκπομπές TV";
-"EMPTY_LIBRARY"="Άδεια Βιβλιοθήκη Μέσων";

+ 0 - 33
VLC WatchKit Native Extension/en.lproj/Localizable.strings

@@ -1,33 +0,0 @@
-"NOW_PLAYING"="Now Playing";
-"PLAY_NOW"="Play Now";
-"PLAYING"="Playing";
-"PAUSED"="Paused";
-"DETAIL"="Detail";
-"LIBRARY_ALL_FILES"="All Files";
-"LIBRARY_MUSIC"="Music Albums";
-"LIBRARY_SERIES"="TV Shows";
-"EMPTY_LIBRARY"="Empty Media Library";
-
-"BWD_BUTTON"="Jump Backwards";
-"FWD_BUTTON"="Jump Forwards";
-"PLAY_BUTTON"="Play";
-"PAUSE_BUTTON"="Pause";
-
-"VOLUME"="Volume";
-"DURATION"="Duration";
-"TITLE"="Title";
-
-"BUTTON_OK"="OK";
-
-
-"NOT_CONNECTED_TO_PHONE_TITLE"="Not connected to iPhone";
-"NOT_CONNECTED_TO_PHONE_MESSAGE"="Please connect your iPhone to perform remote control actions.";
-
-// accessibility labels for the playlist
-"OBJECT_TYPE_SHOW"="Show";
-"OBJECT_TYPE_SHOW_EPISODE"="Show episode";
-"OBJECT_TYPE_LABEL"="Folder";
-"OBJECT_TYPE_ALBUM"="Album";
-"OBJECT_TYPE_ALBUM_TRACK"="Album track";
-"OBJECT_TYPE_FILE"="File";
-"OBJECT_TYPE_FILE_AUDIO"="Audio file";

+ 0 - 9
VLC WatchKit Native Extension/es.lproj/Localizable.strings

@@ -1,9 +0,0 @@
-"NOW_PLAYING"="Reproduciendo ahora";
-"PLAY_NOW"="Reproducir ahora";
-"PLAYING"="Reproduciendo";
-"PAUSED"="Pausado";
-"DETAIL"="Detalle";
-"LIBRARY_ALL_FILES"="Todos los archivos";
-"LIBRARY_MUSIC"="Álbumes de música";
-"LIBRARY_SERIES"="Programas de TV";
-"EMPTY_LIBRARY"="Biblioteca multimedia vacía";

+ 0 - 9
VLC WatchKit Native Extension/fi.lproj/Localizable.strings

@@ -1,9 +0,0 @@
-"NOW_PLAYING"="Nyt toistetaan";
-"PLAY_NOW"="Toista nyt";
-"PLAYING"="Toistetaan";
-"PAUSED"="Tauko";
-"DETAIL"="Lisätiedot";
-"LIBRARY_ALL_FILES"="Kaikki tiedostot";
-"LIBRARY_MUSIC"="Musiikkialbumit";
-"LIBRARY_SERIES"="TV-ohjelmat";
-"EMPTY_LIBRARY"="Mediakirjasto on tyhjä";

+ 0 - 9
VLC WatchKit Native Extension/fr.lproj/Localizable.strings

@@ -1,9 +0,0 @@
-"NOW_PLAYING"="Lecture en cours";
-"PLAY_NOW"="Lire";
-"PLAYING"="En cours de lecture";
-"PAUSED"="En pause";
-"DETAIL"="Détail";
-"LIBRARY_ALL_FILES"="Tous les fichiers";
-"LIBRARY_MUSIC"="Albums";
-"LIBRARY_SERIES"="Séries TV";
-"EMPTY_LIBRARY"="Bibliothèque de média vide";

+ 0 - 9
VLC WatchKit Native Extension/it.lproj/Localizable.strings

@@ -1,9 +0,0 @@
-"NOW_PLAYING"="In riproduzione";
-"PLAY_NOW"="Riproduci ora";
-"PLAYING"="Riproduzione";
-"PAUSED"="In pausa";
-"DETAIL"="Dettagli";
-"LIBRARY_ALL_FILES"="Tutti i file";
-"LIBRARY_MUSIC"="Album musicali";
-"LIBRARY_SERIES"="Programmi televisivi";
-"EMPTY_LIBRARY"="Raccolta multimediale vuota";

+ 0 - 9
VLC WatchKit Native Extension/ja.lproj/Localizable.strings

@@ -1,9 +0,0 @@
-"NOW_PLAYING"="再生中";
-"PLAY_NOW"="直ちに再生";
-"PLAYING"="再生中";
-"PAUSED"="一時停止";
-"DETAIL"="詳細";
-"LIBRARY_ALL_FILES"="すべてのファイル";
-"LIBRARY_MUSIC"="音楽アルバム";
-"LIBRARY_SERIES"="TVショー";
-"EMPTY_LIBRARY"="メディアライブラリが空です";

+ 0 - 9
VLC WatchKit Native Extension/nl.lproj/Localizable.strings

@@ -1,9 +0,0 @@
-"NOW_PLAYING"="Nu afspelend";
-"PLAY_NOW"="Nu afspelen";
-"PLAYING"="Afspelen";
-"PAUSED"="Gepauzeerd";
-"DETAIL"="Detail";
-"LIBRARY_ALL_FILES"="Alle bestanden";
-"LIBRARY_MUSIC"="Muziek-albums";
-"LIBRARY_SERIES"="Tv-shows";
-"EMPTY_LIBRARY"="Mediabibliotheek leeg";

+ 0 - 9
VLC WatchKit Native Extension/pt-PT.lproj/Localizable.strings

@@ -1,9 +0,0 @@
-"NOW_PLAYING"="Em reprodução";
-"PLAY_NOW"="Reproduzir agora";
-"PLAYING"="Reproduzindo";
-"PAUSED"="Em pausa";
-"DETAIL"="Detalhes";
-"LIBRARY_ALL_FILES"="Todos os Ficheiros";
-"LIBRARY_MUSIC"="Álbuns de Música";
-"LIBRARY_SERIES"="Programas de TV";
-"EMPTY_LIBRARY"="Biblioteca de Multimédia Sem Dados";

+ 0 - 9
VLC WatchKit Native Extension/ru.lproj/Localizable.strings

@@ -1,9 +0,0 @@
-"NOW_PLAYING"="Сейчас Воспроизводится";
-"PLAY_NOW"="Воспроизвести Сейчас";
-"PLAYING"="Проигрывается";
-"PAUSED"="Приостановлено";
-"DETAIL"="Информация";
-"LIBRARY_ALL_FILES"="Все файлы";
-"LIBRARY_MUSIC"="Музыка";
-"LIBRARY_SERIES"="ТВ-сериалы";
-"EMPTY_LIBRARY"="Медиатека пуста";

+ 0 - 9
VLC WatchKit Native Extension/sv.lproj/Localizable.strings

@@ -1,9 +0,0 @@
-"NOW_PLAYING"="Spelas upp nu";
-"PLAY_NOW"="Spela upp nu";
-"PLAYING"="Spelar upp";
-"PAUSED"="Pausad";
-"DETAIL"="Detaljer";
-"LIBRARY_ALL_FILES"="Alla filer";
-"LIBRARY_MUSIC"="Musikalbum";
-"LIBRARY_SERIES"="TV-program";
-"EMPTY_LIBRARY"="Tomt mediabibliotek";

+ 0 - 9
VLC WatchKit Native Extension/ta.lproj/Localizable.strings

@@ -1,9 +0,0 @@
-"NOW_PLAYING"="இப்போ ஒடுவது ";
-"PLAY_NOW"="இப்போ ஒடு";
-"PLAYING"="ஒடுவது ";
-"PAUSED"="நிறுத்தபட்டது";
-"DETAIL"="தகவல்";
-"LIBRARY_ALL_FILES"="அனைத்து கோப்புகளும்";
-"LIBRARY_MUSIC"="இசைத் தொகுப்புகள்";
-"LIBRARY_SERIES"="தொலைக்காட்சி நிகழ்ச்சிகள்";
-"EMPTY_LIBRARY"="காலியான ஊடக நூலகம்";

+ 0 - 9
VLC WatchKit Native Extension/tr.lproj/Localizable.strings

@@ -1,9 +0,0 @@
-"NOW_PLAYING"="Şimdi Oynatılan";
-"PLAY_NOW"="Şimdi Oynat";
-"PLAYING"="Oynatılıyor";
-"PAUSED"="Duraklatıldı";
-"DETAIL"="Ayrıntı";
-"LIBRARY_ALL_FILES"="All Files";
-"LIBRARY_MUSIC"="Music Albums";
-"LIBRARY_SERIES"="TV Shows";
-"EMPTY_LIBRARY"="Ortam Kitaplığı Boş";

+ 0 - 9
VLC WatchKit Native Extension/uk.lproj/Localizable.strings

@@ -1,9 +0,0 @@
-"NOW_PLAYING"="Зараз відтворюється";
-"PLAY_NOW"="Відтворити зараз";
-"PLAYING"="Відтворюється";
-"PAUSED"="Призупинено";
-"DETAIL"="Подробиці";
-"LIBRARY_ALL_FILES"="Усі файли";
-"LIBRARY_MUSIC"="Музичні альбоми";
-"LIBRARY_SERIES"="Серіали";
-"EMPTY_LIBRARY"="Порожня бібліотека медіа";

+ 0 - 9
VLC WatchKit Native Extension/zh-Hans.lproj/Localizable.strings

@@ -1,9 +0,0 @@
-"NOW_PLAYING"="正在播放";
-"PLAY_NOW"="立即播放";
-"PLAYING"="正在播放";
-"PAUSED"="已暂停";
-"DETAIL"="详情";
-"LIBRARY_ALL_FILES"="所有文件";
-"LIBRARY_MUSIC"="唱片专辑";
-"LIBRARY_SERIES"="电视节目";
-"EMPTY_LIBRARY"="媒体库为空";

BIN
VLC WatchKit Native/Assets.xcassets/AllFiles.imageset/AllFiles@2x.png


+ 0 - 21
VLC WatchKit Native/Assets.xcassets/AllFiles.imageset/Contents.json

@@ -1,21 +0,0 @@
-{
-  "images" : [
-    {
-      "idiom" : "universal",
-      "scale" : "1x"
-    },
-    {
-      "idiom" : "universal",
-      "scale" : "2x",
-      "filename" : "AllFiles@2x.png"
-    },
-    {
-      "idiom" : "universal",
-      "scale" : "3x"
-    }
-  ],
-  "info" : {
-    "version" : 1,
-    "author" : "xcode"
-  }
-}

BIN
VLC WatchKit Native/Assets.xcassets/AppIcon.appiconset/AppIcon1024@1x.png


BIN
VLC WatchKit Native/Assets.xcassets/AppIcon.appiconset/AppIcon24@2x.png


BIN
VLC WatchKit Native/Assets.xcassets/AppIcon.appiconset/AppIcon27.5@2x.png


BIN
VLC WatchKit Native/Assets.xcassets/AppIcon.appiconset/AppIcon29@2x.png


BIN
VLC WatchKit Native/Assets.xcassets/AppIcon.appiconset/AppIcon29@3x.png


BIN
VLC WatchKit Native/Assets.xcassets/AppIcon.appiconset/AppIcon40x40@2x.png


BIN
VLC WatchKit Native/Assets.xcassets/AppIcon.appiconset/AppIcon44@2x.png


BIN
VLC WatchKit Native/Assets.xcassets/AppIcon.appiconset/AppIcon86@2x.png


BIN
VLC WatchKit Native/Assets.xcassets/AppIcon.appiconset/AppIcon98@2x.png


+ 0 - 76
VLC WatchKit Native/Assets.xcassets/AppIcon.appiconset/Contents.json

@@ -1,76 +0,0 @@
-{
-  "images" : [
-    {
-      "size" : "24x24",
-      "idiom" : "watch",
-      "filename" : "AppIcon24@2x.png",
-      "scale" : "2x",
-      "role" : "notificationCenter",
-      "subtype" : "38mm"
-    },
-    {
-      "size" : "27.5x27.5",
-      "idiom" : "watch",
-      "filename" : "AppIcon27.5@2x.png",
-      "scale" : "2x",
-      "role" : "notificationCenter",
-      "subtype" : "42mm"
-    },
-    {
-      "size" : "29x29",
-      "idiom" : "watch",
-      "filename" : "AppIcon29@2x.png",
-      "role" : "companionSettings",
-      "scale" : "2x"
-    },
-    {
-      "size" : "29x29",
-      "idiom" : "watch",
-      "filename" : "AppIcon29@3x.png",
-      "role" : "companionSettings",
-      "scale" : "3x"
-    },
-    {
-      "size" : "40x40",
-      "idiom" : "watch",
-      "filename" : "AppIcon40x40@2x.png",
-      "scale" : "2x",
-      "role" : "appLauncher",
-      "subtype" : "38mm"
-    },
-    {
-      "size" : "44x44",
-      "idiom" : "watch",
-      "filename" : "AppIcon44@2x.png",
-      "scale" : "2x",
-      "role" : "longLook",
-      "subtype" : "42mm"
-    },
-    {
-      "size" : "86x86",
-      "idiom" : "watch",
-      "filename" : "AppIcon86@2x.png",
-      "scale" : "2x",
-      "role" : "quickLook",
-      "subtype" : "38mm"
-    },
-    {
-      "size" : "98x98",
-      "idiom" : "watch",
-      "filename" : "AppIcon98@2x.png",
-      "scale" : "2x",
-      "role" : "quickLook",
-      "subtype" : "42mm"
-    },
-    {
-      "size" : "1024x1024",
-      "idiom" : "watch-marketing",
-      "filename" : "AppIcon1024@1x.png",
-      "scale" : "1x"
-    }
-  ],
-  "info" : {
-    "version" : 1,
-    "author" : "xcode"
-  }
-}

+ 0 - 6
VLC WatchKit Native/Assets.xcassets/Contents.json

@@ -1,6 +0,0 @@
-{
-  "info" : {
-    "version" : 1,
-    "author" : "xcode"
-  }
-}

+ 0 - 21
VLC WatchKit Native/Assets.xcassets/MusicAlbums.imageset/Contents.json

@@ -1,21 +0,0 @@
-{
-  "images" : [
-    {
-      "idiom" : "universal",
-      "scale" : "1x"
-    },
-    {
-      "idiom" : "universal",
-      "scale" : "2x",
-      "filename" : "MusicAlbums@2x.png"
-    },
-    {
-      "idiom" : "universal",
-      "scale" : "3x"
-    }
-  ],
-  "info" : {
-    "version" : 1,
-    "author" : "xcode"
-  }
-}

BIN
VLC WatchKit Native/Assets.xcassets/MusicAlbums.imageset/MusicAlbums@2x.png


+ 0 - 21
VLC WatchKit Native/Assets.xcassets/TVShows.imageset/Contents.json

@@ -1,21 +0,0 @@
-{
-  "images" : [
-    {
-      "idiom" : "universal",
-      "scale" : "1x"
-    },
-    {
-      "idiom" : "universal",
-      "scale" : "2x",
-      "filename" : "TVShows@2x.png"
-    },
-    {
-      "idiom" : "universal",
-      "scale" : "3x"
-    }
-  ],
-  "info" : {
-    "version" : 1,
-    "author" : "xcode"
-  }
-}

BIN
VLC WatchKit Native/Assets.xcassets/TVShows.imageset/TVShows@2x.png


+ 0 - 21
VLC WatchKit Native/Assets.xcassets/backward.imageset/Contents.json

@@ -1,21 +0,0 @@
-{
-  "images" : [
-    {
-      "idiom" : "universal",
-      "scale" : "1x"
-    },
-    {
-      "idiom" : "universal",
-      "scale" : "2x",
-      "filename" : "backward.png"
-    },
-    {
-      "idiom" : "universal",
-      "scale" : "3x"
-    }
-  ],
-  "info" : {
-    "version" : 1,
-    "author" : "xcode"
-  }
-}

BIN
VLC WatchKit Native/Assets.xcassets/backward.imageset/backward.png


+ 0 - 21
VLC WatchKit Native/Assets.xcassets/forward.imageset/Contents.json

@@ -1,21 +0,0 @@
-{
-  "images" : [
-    {
-      "idiom" : "universal",
-      "scale" : "1x"
-    },
-    {
-      "idiom" : "universal",
-      "scale" : "2x",
-      "filename" : "forward.png"
-    },
-    {
-      "idiom" : "universal",
-      "scale" : "3x"
-    }
-  ],
-  "info" : {
-    "version" : 1,
-    "author" : "xcode"
-  }
-}

BIN
VLC WatchKit Native/Assets.xcassets/forward.imageset/forward.png


+ 0 - 22
VLC WatchKit Native/Assets.xcassets/pause.imageset/Contents.json

@@ -1,22 +0,0 @@
-{
-  "images" : [
-    {
-      "idiom" : "universal",
-      "scale" : "1x"
-    },
-    {
-      "idiom" : "universal",
-      "scale" : "2x",
-      "filename" : "pause.png"
-    },
-    {
-      "idiom" : "universal",
-      "scale" : "3x"
-    }
-  ],
-  "info" : {
-    "version" : 1,
-    "author" : "xcode",
-    "template-rendering-intent" : "original"
-  }
-}

BIN
VLC WatchKit Native/Assets.xcassets/pause.imageset/pause.png


+ 0 - 21
VLC WatchKit Native/Assets.xcassets/play.imageset/Contents.json

@@ -1,21 +0,0 @@
-{
-  "images" : [
-    {
-      "idiom" : "universal",
-      "scale" : "1x"
-    },
-    {
-      "idiom" : "universal",
-      "scale" : "2x",
-      "filename" : "play.png"
-    },
-    {
-      "idiom" : "universal",
-      "scale" : "3x"
-    }
-  ],
-  "info" : {
-    "version" : 1,
-    "author" : "xcode"
-  }
-}

BIN
VLC WatchKit Native/Assets.xcassets/play.imageset/play.png


BIN
VLC WatchKit Native/Assets.xcassets/vlcCone.imageset/AppIcon76x76@2x.png


+ 0 - 21
VLC WatchKit Native/Assets.xcassets/vlcCone.imageset/Contents.json

@@ -1,21 +0,0 @@
-{
-  "images" : [
-    {
-      "idiom" : "universal",
-      "scale" : "1x"
-    },
-    {
-      "idiom" : "universal",
-      "scale" : "2x",
-      "filename" : "AppIcon76x76@2x.png"
-    },
-    {
-      "idiom" : "universal",
-      "scale" : "3x"
-    }
-  ],
-  "info" : {
-    "version" : 1,
-    "author" : "xcode"
-  }
-}

+ 0 - 194
VLC WatchKit Native/Base.lproj/Interface.storyboard

@@ -1,194 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder.WatchKit.Storyboard" version="3.0" toolsVersion="8164.2" systemVersion="14E46" targetRuntime="watchKit" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="8Kw-Vw-M31">
-    <dependencies>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8135.1"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBWatchKitPlugin" version="8083.2"/>
-    </dependencies>
-    <scenes>
-        <!--nowPlaying-->
-        <scene sceneID="5SR-5f-CHg">
-            <objects>
-                <controller identifier="nowPlaying" id="wXp-wP-Bbn" customClass="VLCNowPlayingInterfaceController">
-                    <items>
-                        <group width="1" height="1" heightAdjustment="-2" alignment="left" verticalAlignment="center" contentMode="scaleAspectFit" layout="vertical" id="q2L-GO-rtM">
-                            <items>
-                                <group width="1" height="1" heightAdjustment="-55" alignment="left" contentMode="scaleAspectFit" layout="vertical" id="z5I-mo-Bub">
-                                    <items>
-                                        <group width="1" height="45" alignment="center" verticalAlignment="center" spacing="0.0" id="R30-tL-swB">
-                                            <items>
-                                                <button alignment="center" verticalAlignment="center" accessibilityLabel="backward" id="D9t-yh-TGk">
-                                                    <group key="contentGroup" width="0.29999999999999999" height="1" alignment="left" backgroundImage="backward" contentMode="center" id="b6R-Z3-p9V"/>
-                                                    <connections>
-                                                        <action selector="skipBackward" destination="wXp-wP-Bbn" id="Int-qZ-fgC"/>
-                                                    </connections>
-                                                </button>
-                                                <button alignment="center" verticalAlignment="center" accessibilityLabel="play / pause" accessibilityHint="starts playing or pauses the current playback" id="3x6-ox-bnK">
-                                                    <group key="contentGroup" width="0.30000000000000004" height="1" alignment="left" backgroundImage="play" contentMode="center" id="4od-0P-P26"/>
-                                                    <connections>
-                                                        <action selector="playPausePressed" destination="wXp-wP-Bbn" id="Cl7-Q1-FND"/>
-                                                    </connections>
-                                                </button>
-                                                <button alignment="center" verticalAlignment="center" accessibilityLabel="forward" id="k1c-4V-CVV">
-                                                    <group key="contentGroup" width="0.29999999999999999" height="1" alignment="left" backgroundImage="forward" contentMode="center" id="DoH-0p-k2x"/>
-                                                    <connections>
-                                                        <action selector="skipForward" destination="wXp-wP-Bbn" id="gv7-b6-Btn"/>
-                                                    </connections>
-                                                </button>
-                                            </items>
-                                        </group>
-                                    </items>
-                                    <variation key="device=watch42mm" heightAdjustment="-60"/>
-                                </group>
-                                <slider width="1" alignment="left" verticalAlignment="bottom" continuous="YES" value="0.5" steps="16" id="uYe-jt-MWv">
-                                    <color key="color" red="1" green="0.50196081400000003" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
-                                    <connections>
-                                        <action selector="volumeSliderChanged:" destination="wXp-wP-Bbn" id="QlO-NP-xGb"/>
-                                    </connections>
-                                </slider>
-                                <group width="1" alignment="left" verticalAlignment="bottom" id="lds-Ir-4BZ">
-                                    <items>
-                                        <label width="100" alignment="left" verticalAlignment="bottom" text="title" id="gzb-lW-3d6">
-                                            <fontDescription key="font" type="system" pointSize="14"/>
-                                        </label>
-                                        <label alignment="right" verticalAlignment="bottom" accessibilityLabel="playback duration" text="duration" id="YZ5-DZ-LtT">
-                                            <color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
-                                            <fontDescription key="font" style="UICTFontTextStyleFootnote"/>
-                                        </label>
-                                    </items>
-                                </group>
-                            </items>
-                            <edgeInsets key="margins" left="1" right="1" top="0.0" bottom="0.0"/>
-                        </group>
-                        <group width="1" height="2" alignment="left" verticalAlignment="bottom" radius="0.0" spacing="0.0" id="SBq-Xe-PWO" userLabel="progress Group">
-                            <color key="backgroundColor" red="0.92549019610000005" green="0.43529411759999997" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
-                        </group>
-                    </items>
-                    <edgeInsets key="margins" left="0.0" right="0.0" top="0.0" bottom="0.0"/>
-                    <connections>
-                        <outlet property="durationLabel" destination="YZ5-DZ-LtT" id="Dh3-Vp-xzF"/>
-                        <outlet property="playElementsGroup" destination="q2L-GO-rtM" id="Fxc-ad-7r6"/>
-                        <outlet property="playPauseButton" destination="3x6-ox-bnK" id="AMc-Yd-Rbb"/>
-                        <outlet property="playPauseButtonGroup" destination="4od-0P-P26" id="9mH-eZ-YKp"/>
-                        <outlet property="progressObject" destination="SBq-Xe-PWO" id="0Cf-pw-QZe"/>
-                        <outlet property="skipBackwardButton" destination="D9t-yh-TGk" id="K0y-TI-Kit"/>
-                        <outlet property="skipForwardButton" destination="k1c-4V-CVV" id="BVN-sa-MUa"/>
-                        <outlet property="titleLabel" destination="gzb-lW-3d6" id="8MQ-Tj-6bC"/>
-                        <outlet property="volumeSlider" destination="uYe-jt-MWv" id="OQr-y7-imh"/>
-                    </connections>
-                </controller>
-            </objects>
-            <point key="canvasLocation" x="373" y="483"/>
-        </scene>
-        <!--detailInfo-->
-        <scene sceneID="Zh3-F7-pab">
-            <objects>
-                <controller identifier="detailInfo" id="hnG-Kr-aOH" customClass="VLCDetailInterfaceController">
-                    <items>
-                        <group width="1" height="100" alignment="left" layout="vertical" id="KLa-8Q-ZjO">
-                            <items>
-                                <group alignment="center" verticalAlignment="center" radius="20" id="cWe-n0-qzZ">
-                                    <items>
-                                        <button width="40" height="40" alignment="center" verticalAlignment="center" title="▶︎" enabled="NO" id="wQV-jM-QFL">
-                                            <accessibilityTraits key="accessibilityTraits" button="YES" playsSound="YES"/>
-                                            <color key="titleColor" red="0.92549019610000005" green="0.43529411759999997" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
-                                            <color key="backgroundColor" red="1" green="1" blue="1" alpha="0.40000000000000002" colorSpace="calibratedRGB"/>
-                                            <connections>
-                                                <action selector="playNow" destination="hnG-Kr-aOH" id="C4n-rC-4JI"/>
-                                            </connections>
-                                        </button>
-                                    </items>
-                                </group>
-                            </items>
-                        </group>
-                        <group width="1" height="2" alignment="left" verticalAlignment="center" radius="0.0" spacing="0.0" id="4lu-Rs-hJN" userLabel="progress Group">
-                            <color key="backgroundColor" red="0.92549019610000005" green="0.43529411759999997" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
-                        </group>
-                        <label alignment="left" verticalAlignment="bottom" text="title" textAlignment="left" numberOfLines="0" id="mQk-aM-hhz">
-                            <fontDescription key="font" style="UICTFontTextStyleCaption1"/>
-                        </label>
-                        <group width="1" alignment="left" verticalAlignment="bottom" layout="vertical" id="8mT-uG-qbw">
-                            <items>
-                                <label alignment="left" verticalAlignment="bottom" text="duration" id="PK7-sh-qfO">
-                                    <fontDescription key="font" type="italicSystem" pointSize="14"/>
-                                </label>
-                            </items>
-                        </group>
-                    </items>
-                    <connections>
-                        <outlet property="durationLabel" destination="PK7-sh-qfO" id="5qZ-4C-Ohl"/>
-                        <outlet property="group" destination="KLa-8Q-ZjO" id="KUP-in-n5M"/>
-                        <outlet property="playNowButton" destination="wQV-jM-QFL" id="c7X-No-nuA"/>
-                        <outlet property="progressObject" destination="4lu-Rs-hJN" id="wkt-PE-oqe"/>
-                        <outlet property="titleLabel" destination="mQk-aM-hhz" id="UfX-qP-U1h"/>
-                    </connections>
-                </controller>
-            </objects>
-            <point key="canvasLocation" x="497" y="222"/>
-        </scene>
-        <!--tableViewController-->
-        <scene sceneID="36c-U0-xsi">
-            <objects>
-                <controller identifier="tableViewController" id="8Kw-Vw-M31" customClass="VLCPlaylistInterfaceController">
-                    <items>
-                        <button width="1" alignment="left" title="︿" id="6Cs-sA-OnZ">
-                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
-                            <connections>
-                                <action selector="previousPagePressed" destination="8Kw-Vw-M31" id="Er3-bh-pa7"/>
-                            </connections>
-                        </button>
-                        <table alignment="left" id="DD3-78-CbV">
-                            <items>
-                                <tableRow identifier="mediaRow" id="j6m-XM-kdB" customClass="VLCRowController">
-                                    <group key="rootItem" width="1" height="60" alignment="left" contentMode="scaleAspectFill" layout="vertical" radius="5" spacing="0.0" id="9aa-8p-fGY">
-                                        <items>
-                                            <group width="1" height="1" heightAdjustment="-2" alignment="left" contentMode="scaleAspectFill" layout="vertical" id="bb7-G9-ggT">
-                                                <items>
-                                                    <label alignment="left" text="title" minimumScaleFactor="0.90000000000000002" id="UnX-S3-Jsk">
-                                                        <fontDescription key="font" style="UICTFontTextStyleCaption2"/>
-                                                    </label>
-                                                </items>
-                                                <edgeInsets key="margins" left="5" right="5" top="5" bottom="5"/>
-                                            </group>
-                                            <group width="1" widthAdjustment="11" height="2" alignment="left" verticalAlignment="bottom" radius="0.0" spacing="0.0" id="Jsb-rc-gPm" userLabel="progress Group">
-                                                <color key="backgroundColor" red="0.92549019610000005" green="0.43529411759999997" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
-                                            </group>
-                                        </items>
-                                        <color key="backgroundColor" red="0.76862745099999996" green="0.74901960779999999" blue="0.75686274509999996" alpha="1" colorSpace="calibratedRGB"/>
-                                        <edgeInsets key="margins" left="0.0" right="0.0" top="0.0" bottom="0.0"/>
-                                    </group>
-                                    <connections>
-                                        <outlet property="group" destination="9aa-8p-fGY" id="rUd-O5-OJC"/>
-                                        <outlet property="progressObject" destination="Jsb-rc-gPm" id="eAc-r5-ckq"/>
-                                        <outlet property="titleLabel" destination="UnX-S3-Jsk" id="I1x-GA-6z1"/>
-                                    </connections>
-                                </tableRow>
-                            </items>
-                        </table>
-                        <button width="1" alignment="left" title="﹀" id="N06-Yc-JEB">
-                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
-                            <connections>
-                                <action selector="nextPagePressed" destination="8Kw-Vw-M31" id="wr5-X0-iIi"/>
-                            </connections>
-                        </button>
-                        <group width="1" alignment="left" hidden="YES" layout="vertical" id="xpI-vG-uo1">
-                            <items>
-                                <imageView alignment="center" image="vlcCone" contentMode="scaleAspectFit" id="GuW-9p-Ed6"/>
-                                <label width="1" alignment="center" textAlignment="center" numberOfLines="0" id="FqM-Wy-AKa">
-                                    <fontDescription key="font" style="UICTFontTextStyleHeadline"/>
-                                </label>
-                            </items>
-                        </group>
-                    </items>
-                    <connections>
-                        <outlet property="emptyLibraryGroup" destination="xpI-vG-uo1" id="d6N-Z8-GlC"/>
-                        <outlet property="emptyLibraryLabel" destination="FqM-Wy-AKa" id="iad-B7-MET"/>
-                        <outlet property="nextButton" destination="N06-Yc-JEB" id="yTF-m8-PND"/>
-                        <outlet property="previousButton" destination="6Cs-sA-OnZ" id="S0M-cO-f1H"/>
-                        <outlet property="table" destination="DD3-78-CbV" id="y6W-Wb-tgc"/>
-                    </connections>
-                </controller>
-            </objects>
-            <point key="canvasLocation" x="221" y="216"/>
-        </scene>
-    </scenes>
-</document>

+ 0 - 37
VLC WatchKit Native/Info.plist

@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>en</string>
-	<key>CFBundleDisplayName</key>
-	<string>VLC</string>
-	<key>CFBundleExecutable</key>
-	<string>$(EXECUTABLE_NAME)</string>
-	<key>CFBundleIdentifier</key>
-	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundleName</key>
-	<string>VLC</string>
-	<key>CFBundlePackageType</key>
-	<string>APPL</string>
-	<key>CFBundleShortVersionString</key>
-	<string>3.0.3</string>
-	<key>CFBundleSignature</key>
-	<string>????</string>
-	<key>CFBundleVersion</key>
-	<string>305
-
-</string>
-	<key>UISupportedInterfaceOrientations</key>
-	<array>
-		<string>UIInterfaceOrientationPortrait</string>
-		<string>UIInterfaceOrientationPortraitUpsideDown</string>
-	</array>
-	<key>WKCompanionAppBundleIdentifier</key>
-	<string>$(BUNDLE_IDENTIFIER_PREFIX).vlc-ios</string>
-	<key>WKWatchKitApp</key>
-	<true/>
-</dict>
-</plist>

Файловите разлики са ограничени, защото са твърде много
+ 9 - 1400
VLC.xcodeproj/project.pbxproj


+ 0 - 2
VLC.xcodeproj/xcshareddata/xcschemes/VLC-iOS.xcscheme

@@ -26,7 +26,6 @@
       buildConfiguration = "Debug"
       selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
       selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
-      language = ""
       shouldUseLaunchSchemeArgsEnv = "YES">
       <Testables>
          <TestableReference
@@ -66,7 +65,6 @@
       buildConfiguration = "Debug"
       selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
       selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
-      language = ""
       launchStyle = "0"
       useCustomWorkingDirectory = "NO"
       ignoresPersistentStateOnLaunch = "NO"

+ 0 - 149
VLC.xcodeproj/xcshareddata/xcschemes/VLC-watchOS.xcscheme

@@ -1,149 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Scheme
-   LastUpgradeVersion = "0800"
-   version = "1.3">
-   <BuildAction
-      parallelizeBuildables = "YES"
-      buildImplicitDependencies = "YES">
-      <BuildActionEntries>
-         <BuildActionEntry
-            buildForTesting = "YES"
-            buildForRunning = "YES"
-            buildForProfiling = "YES"
-            buildForArchiving = "YES"
-            buildForAnalyzing = "YES">
-            <BuildableReference
-               BuildableIdentifier = "primary"
-               BlueprintIdentifier = "DD3567631B6760BF00338947"
-               BuildableName = "VLC-watchOS.app"
-               BlueprintName = "VLC-watchOS"
-               ReferencedContainer = "container:VLC.xcodeproj">
-            </BuildableReference>
-         </BuildActionEntry>
-         <BuildActionEntry
-            buildForTesting = "YES"
-            buildForRunning = "YES"
-            buildForProfiling = "YES"
-            buildForArchiving = "YES"
-            buildForAnalyzing = "YES">
-            <BuildableReference
-               BuildableIdentifier = "primary"
-               BlueprintIdentifier = "7D94FCDA16DE7D1000F2623B"
-               BuildableName = "VLC for iOS.app"
-               BlueprintName = "VLC-iOS"
-               ReferencedContainer = "container:VLC.xcodeproj">
-            </BuildableReference>
-         </BuildActionEntry>
-      </BuildActionEntries>
-   </BuildAction>
-   <TestAction
-      buildConfiguration = "Debug"
-      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
-      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
-      language = ""
-      shouldUseLaunchSchemeArgsEnv = "YES">
-      <Testables>
-         <TestableReference
-            skipped = "NO">
-            <BuildableReference
-               BuildableIdentifier = "primary"
-               BlueprintIdentifier = "41B0BC851F73ED7D0063BA26"
-               BuildableName = "VLC for iOSUITests.xctest"
-               BlueprintName = "VLC for iOSUITests"
-               ReferencedContainer = "container:VLC.xcodeproj">
-            </BuildableReference>
-         </TestableReference>
-         <TestableReference
-            skipped = "NO">
-            <BuildableReference
-               BuildableIdentifier = "primary"
-               BlueprintIdentifier = "4100F9691F78F77800D94E5C"
-               BuildableName = "VLC for iOSVideoCodecTests.xctest"
-               BlueprintName = "VLC for iOSVideoCodecTests"
-               ReferencedContainer = "container:VLC.xcodeproj">
-            </BuildableReference>
-         </TestableReference>
-      </Testables>
-      <MacroExpansion>
-         <BuildableReference
-            BuildableIdentifier = "primary"
-            BlueprintIdentifier = "DD3567631B6760BF00338947"
-            BuildableName = "VLC-watchOS.app"
-            BlueprintName = "VLC-watchOS"
-            ReferencedContainer = "container:VLC.xcodeproj">
-         </BuildableReference>
-      </MacroExpansion>
-      <AdditionalOptions>
-      </AdditionalOptions>
-   </TestAction>
-   <LaunchAction
-      buildConfiguration = "Debug"
-      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
-      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
-      language = ""
-      launchStyle = "0"
-      useCustomWorkingDirectory = "NO"
-      ignoresPersistentStateOnLaunch = "NO"
-      debugDocumentVersioning = "YES"
-      debugServiceExtension = "internal"
-      allowLocationSimulation = "YES">
-      <RemoteRunnable
-         runnableDebuggingMode = "2"
-         BundleIdentifier = "com.apple.carousel"
-         RemotePath = "/VLC">
-         <BuildableReference
-            BuildableIdentifier = "primary"
-            BlueprintIdentifier = "DD3567631B6760BF00338947"
-            BuildableName = "VLC-watchOS.app"
-            BlueprintName = "VLC-watchOS"
-            ReferencedContainer = "container:VLC.xcodeproj">
-         </BuildableReference>
-      </RemoteRunnable>
-      <MacroExpansion>
-         <BuildableReference
-            BuildableIdentifier = "primary"
-            BlueprintIdentifier = "DD3567631B6760BF00338947"
-            BuildableName = "VLC-watchOS.app"
-            BlueprintName = "VLC-watchOS"
-            ReferencedContainer = "container:VLC.xcodeproj">
-         </BuildableReference>
-      </MacroExpansion>
-      <AdditionalOptions>
-      </AdditionalOptions>
-   </LaunchAction>
-   <ProfileAction
-      buildConfiguration = "Release"
-      shouldUseLaunchSchemeArgsEnv = "YES"
-      savedToolIdentifier = ""
-      useCustomWorkingDirectory = "NO"
-      debugDocumentVersioning = "YES">
-      <RemoteRunnable
-         runnableDebuggingMode = "2"
-         BundleIdentifier = "com.apple.carousel"
-         RemotePath = "/VLC">
-         <BuildableReference
-            BuildableIdentifier = "primary"
-            BlueprintIdentifier = "DD3567631B6760BF00338947"
-            BuildableName = "VLC-watchOS.app"
-            BlueprintName = "VLC-watchOS"
-            ReferencedContainer = "container:VLC.xcodeproj">
-         </BuildableReference>
-      </RemoteRunnable>
-      <MacroExpansion>
-         <BuildableReference
-            BuildableIdentifier = "primary"
-            BlueprintIdentifier = "DD3567631B6760BF00338947"
-            BuildableName = "VLC-watchOS.app"
-            BlueprintName = "VLC-watchOS"
-            ReferencedContainer = "container:VLC.xcodeproj">
-         </BuildableReference>
-      </MacroExpansion>
-   </ProfileAction>
-   <AnalyzeAction
-      buildConfiguration = "Debug">
-   </AnalyzeAction>
-   <ArchiveAction
-      buildConfiguration = "Release"
-      revealArchiveInOrganizer = "YES">
-   </ArchiveAction>
-</Scheme>

+ 2 - 6
fastlane/Fastfile

@@ -80,12 +80,8 @@ private_lane :set_version_bump_build_and_commit do |options|
     increment_build_number_in_plist(VLC.info_plist_path[:tvOS])
     set_version_number_in_plist(VLC.info_plist_path[:tvOS], options[:version])
   elsif options[:platform] == 'iOS'
-    increment_build_number_in_plist(VLC.info_plist_path[:iOS])
-    increment_build_number_in_plist(VLC.info_plist_path[:watchKitExtension])
-    increment_build_number_in_plist(VLC.info_plist_path[:watchOS])
-    set_version_number_in_plist(VLC.info_plist_path[:iOS], options[:version])
-    set_version_number_in_plist(VLC.info_plist_path[:watchKitExtension], options[:version])
-    set_version_number_in_plist(VLC.info_plist_path[:watchOS], options[:version])
+    increment_build_number_in_plist(VLC::infoPlistPath[:iOS])
+    set_version_number_in_plist(VLC::infoPlistPath[:iOS], options[:version])
   end
 
   commit_version_bump(message: 'Version Bump by fastlane', force: true)

+ 1 - 3
fastlane/helpers/VLC.rb

@@ -4,9 +4,7 @@ class VLC
   def self.info_plist_path
     {
       iOS: '../Sources/VLC for iOS-Info.plist',
-      tvOS: '../Apple-TV/Info.plist',
-      watchKitExtension: '../VLC WatchKit Native Extension/Info.plist',
-      watchOS: '../VLC WatchKit Native/Info.plist'
+      tvOS: '../Apple-TV/Info.plist'
     }
   end
 end