diff --git a/Podfile b/Podfile index 1ec8cc11b..49b5d52aa 100644 --- a/Podfile +++ b/Podfile @@ -19,3 +19,4 @@ pod 'DJWActionSheet' pod 'UICKeyChainStore', :podspec => 'Podspecs/UICKeyChainStore.podspec' pod 'APDropDownNavToolbar', :git => 'https://github.com/corbett/APDropDownNavToolbar.git', :branch => 'master' pod 'FFCircularProgressView', '>= 0.1' +pod 'SCWaveformView' diff --git a/Podfile.lock b/Podfile.lock index fb92ed2be..0b42c1c06 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -45,6 +45,7 @@ PODS: - PastelogKit (1.2): - CocoaLumberjack (~> 1.9) - ProtocolBuffers (1.9.3) + - SCWaveformView (1.0.0) - SocketRocket (0.3.1-beta2) - SQLCipher/common (3.1.0) - SQLCipher/fts (3.1.0): @@ -71,6 +72,7 @@ DEPENDENCIES: - Mantle (~> 1.5) - OpenSSL (~> 1.0.200) - PastelogKit (~> 1.2) + - SCWaveformView - SocketRocket (from `https://github.com/square/SocketRocket.git`, commit `954750c018`) - SSKeychain - TwistedOakCollapsingFutures (~> 1.0) @@ -117,6 +119,7 @@ SPEC CHECKSUMS: OpenSSL: 4c7be3eca71139f52984542d8c4c0752154d26c3 PastelogKit: 8bab71b1d187617a83e7124cffe9eb1a600e6695 ProtocolBuffers: e80f9e4fc401aec9d3c30be70db87fcd5f1cb880 + SCWaveformView: 55f0cd6e80df1a46ff70892bc4041f5b7d8ad43c SocketRocket: 9cbe08469513356cddc0afcab1ff160bd190296a SQLCipher: 981110217eb93c2779c34fb59e646a1c1da918d8 SSKeychain: cc48bd3ad24fcd9125adb9e0d23dd50b8bbd08b9 diff --git a/Pods b/Pods index a5b5acb18..19ec30e1b 160000 --- a/Pods +++ b/Pods @@ -1 +1 @@ -Subproject commit a5b5acb189a2f9f5ddb14dd0552199324a9167a3 +Subproject commit 19ec30e1b24355b4115a21b6895a49f378ad40c4 diff --git a/Signal.xcodeproj/project.pbxproj b/Signal.xcodeproj/project.pbxproj index 62513eae0..04b4bcd06 100644 --- a/Signal.xcodeproj/project.pbxproj +++ b/Signal.xcodeproj/project.pbxproj @@ -287,6 +287,14 @@ AA0C8E498E2046B0B81EEE6E /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8313AE91B4954215858A5662 /* libPods.a */; }; AD41D7B51A6F6F0600241130 /* play_button.png in Resources */ = {isa = PBXBuildFile; fileRef = AD41D7B31A6F6F0600241130 /* play_button.png */; }; AD41D7B61A6F6F0600241130 /* play_button@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = AD41D7B41A6F6F0600241130 /* play_button@2x.png */; }; + AD83FF3F1A73426500B5C81A /* audio_pause_button_blue.png in Resources */ = {isa = PBXBuildFile; fileRef = AD83FF381A73426500B5C81A /* audio_pause_button_blue.png */; }; + AD83FF401A73426500B5C81A /* audio_pause_button_blue@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = AD83FF391A73426500B5C81A /* audio_pause_button_blue@2x.png */; }; + AD83FF411A73426500B5C81A /* audio_play_button_blue@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = AD83FF3A1A73426500B5C81A /* audio_play_button_blue@2x.png */; }; + AD83FF421A73426500B5C81A /* audio_play_button.png in Resources */ = {isa = PBXBuildFile; fileRef = AD83FF3B1A73426500B5C81A /* audio_play_button.png */; }; + AD83FF431A73426500B5C81A /* audio_play_button@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = AD83FF3C1A73426500B5C81A /* audio_play_button@2x.png */; }; + AD83FF441A73426500B5C81A /* audio_pause_button.png in Resources */ = {isa = PBXBuildFile; fileRef = AD83FF3D1A73426500B5C81A /* audio_pause_button.png */; }; + AD83FF451A73426500B5C81A /* audio_pause_button@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = AD83FF3E1A73426500B5C81A /* audio_pause_button@2x.png */; }; + AD83FF471A73428300B5C81A /* audio_play_button_blue.png in Resources */ = {isa = PBXBuildFile; fileRef = AD83FF461A73428300B5C81A /* audio_play_button_blue.png */; }; B10C9B5F1A7049EC00ECA2BF /* pause_icon.png in Resources */ = {isa = PBXBuildFile; fileRef = B10C9B5B1A7049EC00ECA2BF /* pause_icon.png */; }; B10C9B601A7049EC00ECA2BF /* pause_icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B10C9B5C1A7049EC00ECA2BF /* pause_icon@2x.png */; }; B10C9B611A7049EC00ECA2BF /* play_icon.png in Resources */ = {isa = PBXBuildFile; fileRef = B10C9B5D1A7049EC00ECA2BF /* play_icon.png */; }; @@ -885,6 +893,14 @@ A5E9D4BA1A65FAD800E4481C /* TSVideoAttachmentAdapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TSVideoAttachmentAdapter.h; sourceTree = ""; }; AD41D7B31A6F6F0600241130 /* play_button.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = play_button.png; sourceTree = ""; }; AD41D7B41A6F6F0600241130 /* play_button@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "play_button@2x.png"; sourceTree = ""; }; + AD83FF381A73426500B5C81A /* audio_pause_button_blue.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = audio_pause_button_blue.png; sourceTree = ""; }; + AD83FF391A73426500B5C81A /* audio_pause_button_blue@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "audio_pause_button_blue@2x.png"; sourceTree = ""; }; + AD83FF3A1A73426500B5C81A /* audio_play_button_blue@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "audio_play_button_blue@2x.png"; sourceTree = ""; }; + AD83FF3B1A73426500B5C81A /* audio_play_button.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = audio_play_button.png; sourceTree = ""; }; + AD83FF3C1A73426500B5C81A /* audio_play_button@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "audio_play_button@2x.png"; sourceTree = ""; }; + AD83FF3D1A73426500B5C81A /* audio_pause_button.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = audio_pause_button.png; sourceTree = ""; }; + AD83FF3E1A73426500B5C81A /* audio_pause_button@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "audio_pause_button@2x.png"; sourceTree = ""; }; + AD83FF461A73428300B5C81A /* audio_play_button_blue.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = audio_play_button_blue.png; sourceTree = ""; }; B10C9B5B1A7049EC00ECA2BF /* pause_icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = pause_icon.png; sourceTree = ""; }; B10C9B5C1A7049EC00ECA2BF /* pause_icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "pause_icon@2x.png"; sourceTree = ""; }; B10C9B5D1A7049EC00ECA2BF /* play_icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = play_icon.png; sourceTree = ""; }; @@ -2136,6 +2152,14 @@ B633C4FD1A1D190B0059AC12 /* Images */ = { isa = PBXGroup; children = ( + AD83FF461A73428300B5C81A /* audio_play_button_blue.png */, + AD83FF381A73426500B5C81A /* audio_pause_button_blue.png */, + AD83FF391A73426500B5C81A /* audio_pause_button_blue@2x.png */, + AD83FF3A1A73426500B5C81A /* audio_play_button_blue@2x.png */, + AD83FF3B1A73426500B5C81A /* audio_play_button.png */, + AD83FF3C1A73426500B5C81A /* audio_play_button@2x.png */, + AD83FF3D1A73426500B5C81A /* audio_pause_button.png */, + AD83FF3E1A73426500B5C81A /* audio_pause_button@2x.png */, B10C9B5B1A7049EC00ECA2BF /* pause_icon.png */, B10C9B5C1A7049EC00ECA2BF /* pause_icon@2x.png */, B10C9B5D1A7049EC00ECA2BF /* play_icon.png */, @@ -2906,17 +2930,20 @@ AD41D7B61A6F6F0600241130 /* play_button@2x.png in Resources */, B633C5DC1A1D190B0059AC12 /* shred@2x.png in Resources */, B633C5E61A1D190B0059AC12 /* speaker_on@2x.png in Resources */, + AD83FF3F1A73426500B5C81A /* audio_pause_button_blue.png in Resources */, B633C5BB1A1D190B0059AC12 /* message_bubble.png in Resources */, B633C5B51A1D190B0059AC12 /* lock@2x.png in Resources */, A5509ECA1A69AB8B00ABA4BC /* Storyboard.storyboard in Resources */, A507A3B11A6C60E300BEED0D /* InboxTableViewCell.xib in Resources */, FCA52AE81A2B676C00CCADFA /* call_incoming@2x.png in Resources */, + AD83FF421A73426500B5C81A /* audio_play_button.png in Resources */, FC1F90C01A22342B004F8253 /* group_photo@2x.png in Resources */, FCA52AE91A2B676C00CCADFA /* call_missed@2x.png in Resources */, B633C5C41A1D190B0059AC12 /* mute_on@2x.png in Resources */, B633C5CE1A1D190B0059AC12 /* quit@2x.png in Resources */, FCA52AEB1A2B676C00CCADFA /* checkmark_light@2x.png in Resources */, B633C5D01A1D190B0059AC12 /* red-delete@2x.png in Resources */, + AD83FF441A73426500B5C81A /* audio_pause_button.png in Resources */, AD41D7B51A6F6F0600241130 /* play_button.png in Resources */, B633C59D1A1D190B0059AC12 /* endcall@2x.png in Resources */, B633C5B41A1D190B0059AC12 /* keypad@2x.png in Resources */, @@ -2935,13 +2962,16 @@ FCB626A51A3B00FA00FDB504 /* info@2x.png in Resources */, B633C5971A1D190B0059AC12 /* delete@2x.png in Resources */, FC9120431A39F9E00074545C /* qr_scan_fingerprint@2x.png in Resources */, + AD83FF401A73426500B5C81A /* audio_pause_button_blue@2x.png in Resources */, B66DBF4A19D5BBC8006EA940 /* Images.xcassets in Resources */, FCA52AE71A2B676C00CCADFA /* call_failed@2x.png in Resources */, 70B8FEE21909FE360042E3F0 /* 171756__nenadsimic__picked-coin-echo-2.wav in Resources */, B633C5801A1D190B0059AC12 /* archive@2x.png in Resources */, + AD83FF431A73426500B5C81A /* audio_play_button@2x.png in Resources */, FC1F90C71A223991004F8253 /* signals_tab@2x.png in Resources */, FCB626B51A3B067900FDB504 /* ArrowBottom@2x.png in Resources */, B633C5C31A1D190B0059AC12 /* mute_off@2x.png in Resources */, + AD83FF411A73426500B5C81A /* audio_play_button_blue@2x.png in Resources */, FCB626B71A3B067900FDB504 /* ArrowTop@3x.png in Resources */, FC1F90C61A223991004F8253 /* settings_tab@2x.png in Resources */, FCA52AEA1A2B676C00CCADFA /* call_outgoing@2x.png in Resources */, @@ -2979,8 +3009,10 @@ B633C5961A1D190B0059AC12 /* DefaultContactImage.png in Resources */, B10C9B5F1A7049EC00ECA2BF /* pause_icon.png in Resources */, E148751218A06AFD002CC4F3 /* HelveticaNeueLTStd-Bd.otf in Resources */, + AD83FF471A73428300B5C81A /* audio_play_button_blue.png in Resources */, FCA52AE61A2B676C00CCADFA /* call_canceled@2x.png in Resources */, FC3BD9861A30A62D005B96BB /* twitter@2x.png in Resources */, + AD83FF451A73426500B5C81A /* audio_pause_button@2x.png in Resources */, E148751318A06AFD002CC4F3 /* HelveticaNeueLTStd-Th.otf in Resources */, FC3BD9841A306483005B96BB /* signals_error@2x.png in Resources */, E148751418A06AFD002CC4F3 /* HelveticaNeueLTStd-Lt.otf in Resources */, diff --git a/Signal/Images/audio_pause_button.png b/Signal/Images/audio_pause_button.png new file mode 100644 index 000000000..47118938d Binary files /dev/null and b/Signal/Images/audio_pause_button.png differ diff --git a/Signal/Images/audio_pause_button@2x.png b/Signal/Images/audio_pause_button@2x.png new file mode 100644 index 000000000..d3ebcce71 Binary files /dev/null and b/Signal/Images/audio_pause_button@2x.png differ diff --git a/Signal/Images/audio_pause_button_blue.png b/Signal/Images/audio_pause_button_blue.png new file mode 100644 index 000000000..5cb97f4b1 Binary files /dev/null and b/Signal/Images/audio_pause_button_blue.png differ diff --git a/Signal/Images/audio_pause_button_blue@2x.png b/Signal/Images/audio_pause_button_blue@2x.png new file mode 100644 index 000000000..73c6d892f Binary files /dev/null and b/Signal/Images/audio_pause_button_blue@2x.png differ diff --git a/Signal/Images/audio_play_button.png b/Signal/Images/audio_play_button.png new file mode 100644 index 000000000..744f41bc7 Binary files /dev/null and b/Signal/Images/audio_play_button.png differ diff --git a/Signal/Images/audio_play_button@2x.png b/Signal/Images/audio_play_button@2x.png new file mode 100644 index 000000000..60716a5ce Binary files /dev/null and b/Signal/Images/audio_play_button@2x.png differ diff --git a/Signal/Images/audio_play_button_blue.png b/Signal/Images/audio_play_button_blue.png new file mode 100644 index 000000000..3804b162c Binary files /dev/null and b/Signal/Images/audio_play_button_blue.png differ diff --git a/Signal/Images/audio_play_button_blue@2x.png b/Signal/Images/audio_play_button_blue@2x.png new file mode 100644 index 000000000..c6c77815b Binary files /dev/null and b/Signal/Images/audio_play_button_blue@2x.png differ diff --git a/Signal/Signal-Info.plist b/Signal/Signal-Info.plist index e450ea2d2..8a99a587c 100644 --- a/Signal/Signal-Info.plist +++ b/Signal/Signal-Info.plist @@ -2,10 +2,6 @@ - UIStatusBarStyle - UIStatusBarStyleLightContent - UIViewControllerBasedStatusBarAppearance - CFBundleDevelopmentRegion en CFBundleDisplayName @@ -69,9 +65,13 @@ armv7 + UIStatusBarStyle + UIStatusBarStyleLightContent UISupportedInterfaceOrientations UIInterfaceOrientationPortrait + UIViewControllerBasedStatusBarAppearance + diff --git a/Signal/src/textsecure/Messages/Attachements/TSAttachmentStream.m b/Signal/src/textsecure/Messages/Attachements/TSAttachmentStream.m index 3b67d7c1f..257dfc819 100644 --- a/Signal/src/textsecure/Messages/Attachements/TSAttachmentStream.m +++ b/Signal/src/textsecure/Messages/Attachements/TSAttachmentStream.m @@ -54,8 +54,12 @@ NSString * const TSAttachementFileRelationshipEdge = @"TSAttachementFileEdge"; - (NSString*)filePath { if ([self isVideo] || [self isAudio]) { - return [[[[self class] attachmentsFolder] stringByAppendingFormat:@"/%@", self.uniqueId] stringByAppendingPathExtension:[self mediaExtension]]; - + NSString *path = [[[[self class] attachmentsFolder] stringByAppendingFormat:@"/%@", self.uniqueId] stringByAppendingPathExtension:[self mediaExtension]]; + NSURL *pathURL = [NSURL URLWithString:path]; + NSString *mp3String = [NSString stringWithFormat:@"%@.mp3", [[pathURL URLByDeletingPathExtension] absoluteString]]; + if ([[NSFileManager defaultManager] fileExistsAtPath:mp3String]) { + return mp3String; + } else return path; } else { return [[[self class] attachmentsFolder] stringByAppendingFormat:@"/%@", self.uniqueId]; diff --git a/Signal/src/view controllers/ContactsTableViewController.m b/Signal/src/view controllers/ContactsTableViewController.m index 2512c38fc..23f782868 100644 --- a/Signal/src/view controllers/ContactsTableViewController.m +++ b/Signal/src/view controllers/ContactsTableViewController.m @@ -147,7 +147,6 @@ static NSString *const CONTACT_BROWSE_TABLE_CELL_IDENTIFIER = @"ContactTableView return [latestAlphabeticalContacts valueForKey:self.latestSortedAlphabeticalContactKeys[index]]; } - -(NSMutableDictionary*)alphabetDictionaryInit { NSDictionary * dic; @@ -167,7 +166,6 @@ static NSString *const CONTACT_BROWSE_TABLE_CELL_IDENTIFIER = @"ContactTableView return [dic mutableCopy]; } - #pragma mark - Table view data source - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { diff --git a/Signal/src/view controllers/MessagesViewController.m b/Signal/src/view controllers/MessagesViewController.m index 0e93d2def..ffbd64f03 100644 --- a/Signal/src/view controllers/MessagesViewController.m +++ b/Signal/src/view controllers/MessagesViewController.m @@ -86,6 +86,7 @@ typedef enum : NSUInteger { @property (nonatomic, retain) JSQMessagesBubbleImage *incomingBubbleImageData; @property (nonatomic, retain) JSQMessagesBubbleImage *outgoingMessageFailedImageData; @property (nonatomic, strong) NSTimer *audioPlayerPoller; +@property (nonatomic, strong) TSVideoAttachmentAdapter *currentMediaAdapter; @property (nonatomic, retain) NSTimer *readTimer; @@ -645,7 +646,7 @@ typedef enum : NSUInteger { // fileurl disappeared should look up in db as before. will do refactor // full screen, check this setup with a .mov TSVideoAttachmentAdapter* messageMedia = (TSVideoAttachmentAdapter*)[messageItem media]; - + _currentMediaAdapter = messageMedia; __block TSAttachment *attachment = nil; [self.uiDatabaseConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) { attachment = [TSAttachment fetchObjectWithUniqueID:messageMedia.attachmentId transaction:transaction]; @@ -682,7 +683,7 @@ typedef enum : NSUInteger { } else { BOOL isResuming = NO; [_audioPlayerPoller invalidate]; - + // loop through all the other bubbles and set their isPlaying to false NSInteger num_bubbles = [self collectionView:collectionView numberOfItemsInSection:0]; for (NSInteger i=0; i= 1) { _maskLayer.hidden = YES; _progressView.hidden = YES; - _playButton.hidden = NO; + _videoPlayButton.hidden = NO; _attachment.isDownloaded = YES; [[TSMessagesManager sharedManager].dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { [_attachment saveWithTransaction:transaction];