diff --git a/matrixConsole.xcodeproj/project.pbxproj b/matrixConsole.xcodeproj/project.pbxproj index 5f6c69c66..16b5dd86b 100644 --- a/matrixConsole.xcodeproj/project.pbxproj +++ b/matrixConsole.xcodeproj/project.pbxproj @@ -7,8 +7,6 @@ objects = { /* Begin PBXBuildFile section */ - 710210691A665F7300364868 /* HPGrowingTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 710210661A665F7300364868 /* HPGrowingTextView.m */; }; - 7102106A1A665F7300364868 /* HPTextViewInternal.m in Sources */ = {isa = PBXBuildFile; fileRef = 710210681A665F7300364868 /* HPTextViewInternal.m */; }; 71D2E4EC1A49814B000DE015 /* MemberActionsCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 71D2E4EB1A49814B000DE015 /* MemberActionsCell.m */; }; 71DB9DC11A495B6400504A09 /* MemberViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 71DB9DC01A495B6400504A09 /* MemberViewController.m */; }; 71E94A771A5C4020009F52E5 /* PieChartView.m in Sources */ = {isa = PBXBuildFile; fileRef = 71E94A761A5C4020009F52E5 /* PieChartView.m */; }; @@ -71,10 +69,6 @@ /* Begin PBXFileReference section */ 13057A57E74FD5504196F47F /* Pods-matrixConsole.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-matrixConsole.release.xcconfig"; path = "Pods/Target Support Files/Pods-matrixConsole/Pods-matrixConsole.release.xcconfig"; sourceTree = ""; }; - 710210651A665F7300364868 /* HPGrowingTextView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HPGrowingTextView.h; path = External/GrowingTextView/class/HPGrowingTextView.h; sourceTree = ""; }; - 710210661A665F7300364868 /* HPGrowingTextView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HPGrowingTextView.m; path = External/GrowingTextView/class/HPGrowingTextView.m; sourceTree = ""; }; - 710210671A665F7300364868 /* HPTextViewInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HPTextViewInternal.h; path = External/GrowingTextView/class/HPTextViewInternal.h; sourceTree = ""; }; - 710210681A665F7300364868 /* HPTextViewInternal.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HPTextViewInternal.m; path = External/GrowingTextView/class/HPTextViewInternal.m; sourceTree = ""; }; 71D2E4EA1A49814B000DE015 /* MemberActionsCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MemberActionsCell.h; sourceTree = ""; }; 71D2E4EB1A49814B000DE015 /* MemberActionsCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MemberActionsCell.m; sourceTree = ""; }; 71DB9DBF1A495B6400504A09 /* MemberViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MemberViewController.h; sourceTree = ""; }; @@ -176,34 +170,6 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 710210631A665F4E00364868 /* External */ = { - isa = PBXGroup; - children = ( - 710210641A665F5C00364868 /* GrowingTextView */, - ); - name = External; - sourceTree = ""; - }; - 710210641A665F5C00364868 /* GrowingTextView */ = { - isa = PBXGroup; - children = ( - 7102106B1A665FDD00364868 /* GrowingTextView */, - 710210651A665F7300364868 /* HPGrowingTextView.h */, - 710210661A665F7300364868 /* HPGrowingTextView.m */, - 710210671A665F7300364868 /* HPTextViewInternal.h */, - 710210681A665F7300364868 /* HPTextViewInternal.m */, - ); - name = GrowingTextView; - sourceTree = ""; - }; - 7102106B1A665FDD00364868 /* GrowingTextView */ = { - isa = PBXGroup; - children = ( - ); - name = GrowingTextView; - path = External/GrowingTextView; - sourceTree = ""; - }; B18A10A9FB884DD357EBD414 /* Pods */ = { isa = PBXGroup; children = ( @@ -336,7 +302,6 @@ F07A80D419DD9DE700B621A1 /* matrixConsole */ = { isa = PBXGroup; children = ( - 710210631A665F4E00364868 /* External */, F021FBEC1A5EF57300EA3AE6 /* API */, F0465AF71A251F85003639F9 /* Model */, F03EF5FC19F1762000A0EE52 /* View */, @@ -555,13 +520,11 @@ 71E94A771A5C4020009F52E5 /* PieChartView.m in Sources */, F0465AFA1A251F85003639F9 /* RoomMessage.m in Sources */, F021FBF21A5F1F8E00EA3AE6 /* MediaManager.m in Sources */, - 7102106A1A665F7300364868 /* HPTextViewInternal.m in Sources */, F04EE51F1A3A01D500C64930 /* APNSHandler.m in Sources */, F03C47111A02952800E445AB /* CustomAlert.m in Sources */, F0E84D401A1F9AEC005F2E42 /* RecentsTableViewCell.m in Sources */, F02D707619F1DC9E007B47D3 /* RoomMemberTableCell.m in Sources */, F00B5DB91A1B9BCE00EA1C8D /* CustomImageView.m in Sources */, - 710210691A665F7300364868 /* HPGrowingTextView.m in Sources */, F0D3C30C1A011EF10000D49E /* AppSettings.m in Sources */, F03EF5F719F171EB00A0EE52 /* LoginViewController.m in Sources */, F0D3C30F1A01330F0000D49E /* SettingsTableViewCell.m in Sources */, diff --git a/matrixConsole/External/GrowingTextView/class/HPGrowingTextView.h b/matrixConsole/External/GrowingTextView/class/HPGrowingTextView.h deleted file mode 100755 index 8b343c5be..000000000 --- a/matrixConsole/External/GrowingTextView/class/HPGrowingTextView.h +++ /dev/null @@ -1,126 +0,0 @@ -// -// HPTextView.h -// -// Created by Hans Pinckaers on 29-06-10. -// -// MIT License -// -// Copyright (c) 2011 Hans Pinckaers -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import - -#if __IPHONE_OS_VERSION_MAX_ALLOWED < 60000 - // UITextAlignment is deprecated in iOS 6.0+, use NSTextAlignment instead. - // Reference: https://developer.apple.com/library/ios/documentation/uikit/reference/NSString_UIKit_Additions/Reference/Reference.html - #define NSTextAlignment UITextAlignment -#endif - -@class HPGrowingTextView; -@class HPTextViewInternal; - -@protocol HPGrowingTextViewDelegate - -@optional -- (BOOL)growingTextViewShouldBeginEditing:(HPGrowingTextView *)growingTextView; -- (BOOL)growingTextViewShouldEndEditing:(HPGrowingTextView *)growingTextView; - -- (void)growingTextViewDidBeginEditing:(HPGrowingTextView *)growingTextView; -- (void)growingTextViewDidEndEditing:(HPGrowingTextView *)growingTextView; - -- (BOOL)growingTextView:(HPGrowingTextView *)growingTextView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text; -- (void)growingTextViewDidChange:(HPGrowingTextView *)growingTextView; - -- (void)growingTextView:(HPGrowingTextView *)growingTextView willChangeHeight:(float)height; -- (void)growingTextView:(HPGrowingTextView *)growingTextView didChangeHeight:(float)height; - -- (void)growingTextViewDidChangeSelection:(HPGrowingTextView *)growingTextView; -- (BOOL)growingTextViewShouldReturn:(HPGrowingTextView *)growingTextView; -@end - -@interface HPGrowingTextView : UIView { - HPTextViewInternal *internalTextView; - - int minHeight; - int maxHeight; - - //class properties - int maxNumberOfLines; - int minNumberOfLines; - - BOOL animateHeightChange; - NSTimeInterval animationDuration; - - //uitextview properties - NSObject *__unsafe_unretained delegate; - NSTextAlignment textAlignment; - NSRange selectedRange; - BOOL editable; - UIDataDetectorTypes dataDetectorTypes; - UIReturnKeyType returnKeyType; - UIKeyboardType keyboardType; - - UIEdgeInsets contentInset; -} - -//real class properties -@property int maxNumberOfLines; -@property int minNumberOfLines; -@property (nonatomic) int maxHeight; -@property (nonatomic) int minHeight; -@property BOOL animateHeightChange; -@property NSTimeInterval animationDuration; -@property (nonatomic, strong) NSString *placeholder; -@property (nonatomic, strong) UIColor *placeholderColor; -@property (nonatomic, strong) UITextView *internalTextView; - - -//uitextview properties -@property(unsafe_unretained) NSObject *delegate; -@property(nonatomic,strong) NSString *text; -@property(nonatomic,strong) UIFont *font; -@property(nonatomic,strong) UIColor *textColor; -@property(nonatomic) NSTextAlignment textAlignment; // default is NSTextAlignmentLeft -@property(nonatomic) NSRange selectedRange; // only ranges of length 0 are supported -@property(nonatomic,getter=isEditable) BOOL editable; -@property(nonatomic) UIDataDetectorTypes dataDetectorTypes __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_3_0); -@property (nonatomic) UIReturnKeyType returnKeyType; -@property (nonatomic) UIKeyboardType keyboardType; -@property (assign) UIEdgeInsets contentInset; -@property (nonatomic) BOOL isScrollable; -@property(nonatomic) BOOL enablesReturnKeyAutomatically; - -#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 -- (id)initWithFrame:(CGRect)frame textContainer:(NSTextContainer *)textContainer; -#endif - -//uitextview methods -//need others? use .internalTextView -- (BOOL)becomeFirstResponder; -- (BOOL)resignFirstResponder; -- (BOOL)isFirstResponder; - -- (BOOL)hasText; -- (void)scrollRangeToVisible:(NSRange)range; - -// call to force a height change (e.g. after you change max/min lines) -- (void)refreshHeight; - -@end diff --git a/matrixConsole/External/GrowingTextView/class/HPGrowingTextView.m b/matrixConsole/External/GrowingTextView/class/HPGrowingTextView.m deleted file mode 100755 index 9871c6fa9..000000000 --- a/matrixConsole/External/GrowingTextView/class/HPGrowingTextView.m +++ /dev/null @@ -1,666 +0,0 @@ -// -// HPTextView.m -// -// Created by Hans Pinckaers on 29-06-10. -// -// MIT License -// -// Copyright (c) 2011 Hans Pinckaers -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import "HPGrowingTextView.h" -#import "HPTextViewInternal.h" - -@interface HPGrowingTextView(private) --(void)commonInitialiser; --(void)resizeTextView:(NSInteger)newSizeH; --(void)growDidStop; -@end - -@implementation HPGrowingTextView -@synthesize internalTextView; -@synthesize delegate; -@synthesize maxHeight; -@synthesize minHeight; -@synthesize font; -@synthesize textColor; -@synthesize textAlignment; -@synthesize selectedRange; -@synthesize editable; -@synthesize dataDetectorTypes; -@synthesize animateHeightChange; -@synthesize animationDuration; -@synthesize returnKeyType; -@dynamic placeholder; -@dynamic placeholderColor; - -// having initwithcoder allows us to use HPGrowingTextView in a Nib. -- aob, 9/2011 -- (id)initWithCoder:(NSCoder *)aDecoder -{ - if ((self = [super initWithCoder:aDecoder])) { - [self commonInitialiser]; - } - return self; -} - -- (id)initWithFrame:(CGRect)frame { - if ((self = [super initWithFrame:frame])) { - [self commonInitialiser]; - } - return self; -} - -#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 -- (id)initWithFrame:(CGRect)frame textContainer:(NSTextContainer *)textContainer { - if ((self = [super initWithFrame:frame])) { - [self commonInitialiser:textContainer]; - } - return self; -} - --(void)commonInitialiser { - [self commonInitialiser:nil]; -} - --(void)commonInitialiser:(NSTextContainer *)textContainer -#else --(void)commonInitialiser -#endif -{ - // Initialization code - CGRect r = self.frame; - r.origin.y = 0; - r.origin.x = 0; -#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 - internalTextView = [[HPTextViewInternal alloc] initWithFrame:r textContainer:textContainer]; -#else - internalTextView = [[HPTextViewInternal alloc] initWithFrame:r]; -#endif - internalTextView.delegate = self; - internalTextView.scrollEnabled = NO; - internalTextView.font = [UIFont fontWithName:@"Helvetica" size:13]; - internalTextView.contentInset = UIEdgeInsetsZero; - internalTextView.showsHorizontalScrollIndicator = NO; - internalTextView.text = @"-"; - internalTextView.contentMode = UIViewContentModeRedraw; - [self addSubview:internalTextView]; - - minHeight = internalTextView.frame.size.height; - minNumberOfLines = 1; - - animateHeightChange = YES; - animationDuration = 0.1f; - - internalTextView.text = @""; - - [self setMaxNumberOfLines:3]; - - [self setPlaceholderColor:[UIColor lightGrayColor]]; - internalTextView.displayPlaceHolder = YES; -} - --(CGSize)sizeThatFits:(CGSize)size -{ - if (self.text.length == 0) { - size.height = minHeight; - } - return size; -} - --(void)layoutSubviews -{ - [super layoutSubviews]; - - CGRect r = self.bounds; - r.origin.y = 0; - r.origin.x = contentInset.left; - r.size.width -= contentInset.left + contentInset.right; - - internalTextView.frame = r; -} - --(void)setContentInset:(UIEdgeInsets)inset -{ - contentInset = inset; - - CGRect r = self.frame; - r.origin.y = inset.top - inset.bottom; - r.origin.x = inset.left; - r.size.width -= inset.left + inset.right; - - internalTextView.frame = r; - - [self setMaxNumberOfLines:maxNumberOfLines]; - [self setMinNumberOfLines:minNumberOfLines]; -} - --(UIEdgeInsets)contentInset -{ - return contentInset; -} - --(void)setMaxNumberOfLines:(int)n -{ - if(n == 0 && maxHeight > 0) return; // the user specified a maxHeight themselves. - - // Use internalTextView for height calculations, thanks to Gwynne - NSString *saveText = internalTextView.text, *newText = @"-"; - - internalTextView.delegate = nil; - internalTextView.hidden = YES; - - for (int i = 1; i < n; ++i) - newText = [newText stringByAppendingString:@"\n|W|"]; - - internalTextView.text = newText; - - maxHeight = [self measureHeight]; - - internalTextView.text = saveText; - internalTextView.hidden = NO; - internalTextView.delegate = self; - - [self sizeToFit]; - - maxNumberOfLines = n; -} - --(int)maxNumberOfLines -{ - return maxNumberOfLines; -} - -- (void)setMaxHeight:(int)height -{ - maxHeight = height; - maxNumberOfLines = 0; -} - --(void)setMinNumberOfLines:(int)m -{ - if(m == 0 && minHeight > 0) return; // the user specified a minHeight themselves. - - // Use internalTextView for height calculations, thanks to Gwynne - NSString *saveText = internalTextView.text, *newText = @"-"; - - internalTextView.delegate = nil; - internalTextView.hidden = YES; - - for (int i = 1; i < m; ++i) - newText = [newText stringByAppendingString:@"\n|W|"]; - - internalTextView.text = newText; - - minHeight = [self measureHeight]; - - internalTextView.text = saveText; - internalTextView.hidden = NO; - internalTextView.delegate = self; - - [self sizeToFit]; - - minNumberOfLines = m; -} - --(int)minNumberOfLines -{ - return minNumberOfLines; -} - -- (void)setMinHeight:(int)height -{ - minHeight = height; - minNumberOfLines = 0; -} - -- (NSString *)placeholder -{ - return internalTextView.placeholder; -} - -- (void)setPlaceholder:(NSString *)placeholder -{ - [internalTextView setPlaceholder:placeholder]; - [internalTextView setNeedsDisplay]; -} - -- (UIColor *)placeholderColor -{ - return internalTextView.placeholderColor; -} - -- (void)setPlaceholderColor:(UIColor *)placeholderColor -{ - [internalTextView setPlaceholderColor:placeholderColor]; -} - -- (void)textViewDidChange:(UITextView *)textView -{ - [self refreshHeight]; -} - -- (void)refreshHeight -{ - //size of content, so we can set the frame of self - NSInteger newSizeH = [self measureHeight]; - if (newSizeH < minHeight || !internalTextView.hasText) { - newSizeH = minHeight; //not smalles than minHeight - } - else if (maxHeight && newSizeH > maxHeight) { - newSizeH = maxHeight; // not taller than maxHeight - } - - if (internalTextView.frame.size.height != newSizeH) - { - // if our new height is greater than the maxHeight - // sets not set the height or move things - // around and enable scrolling - if (newSizeH >= maxHeight) - { - if(!internalTextView.scrollEnabled){ - internalTextView.scrollEnabled = YES; - [internalTextView flashScrollIndicators]; - } - - } else { - internalTextView.scrollEnabled = NO; - } - - // [fixed] Pasting too much text into the view failed to fire the height change, - // thanks to Gwynne - if (newSizeH <= maxHeight) - { - if(animateHeightChange) { - - if ([UIView resolveClassMethod:@selector(animateWithDuration:animations:)]) { -#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 40000 - [UIView animateWithDuration:animationDuration - delay:0 - options:(UIViewAnimationOptionAllowUserInteraction| - UIViewAnimationOptionBeginFromCurrentState) - animations:^(void) { - [self resizeTextView:newSizeH]; - } - completion:^(BOOL finished) { - if ([delegate respondsToSelector:@selector(growingTextView:didChangeHeight:)]) { - [delegate growingTextView:self didChangeHeight:newSizeH]; - } - }]; -#endif - } else { - [UIView beginAnimations:@"" context:nil]; - [UIView setAnimationDuration:animationDuration]; - [UIView setAnimationDelegate:self]; - [UIView setAnimationDidStopSelector:@selector(growDidStop)]; - [UIView setAnimationBeginsFromCurrentState:YES]; - [self resizeTextView:newSizeH]; - [UIView commitAnimations]; - } - } else { - [self resizeTextView:newSizeH]; - // [fixed] The growingTextView:didChangeHeight: delegate method was not called at all when not animating height changes. - // thanks to Gwynne - - if ([delegate respondsToSelector:@selector(growingTextView:didChangeHeight:)]) { - [delegate growingTextView:self didChangeHeight:newSizeH]; - } - } - } - } - // Display (or not) the placeholder string - - BOOL wasDisplayingPlaceholder = internalTextView.displayPlaceHolder; - internalTextView.displayPlaceHolder = self.internalTextView.text.length == 0; - - if (wasDisplayingPlaceholder != internalTextView.displayPlaceHolder) { - [internalTextView setNeedsDisplay]; - } - - - // scroll to caret (needed on iOS7) - if ([self respondsToSelector:@selector(snapshotViewAfterScreenUpdates:)]) - { - [self performSelector:@selector(resetScrollPositionForIOS7) withObject:nil afterDelay:0.1f]; - } - - // Tell the delegate that the text view changed - if ([delegate respondsToSelector:@selector(growingTextViewDidChange:)]) { - [delegate growingTextViewDidChange:self]; - } -} - -// Code from apple developer forum - @Steve Krulewitz, @Mark Marszal, @Eric Silverberg -- (CGFloat)measureHeight -{ - if ([self respondsToSelector:@selector(snapshotViewAfterScreenUpdates:)]) - { - return ceilf([self.internalTextView sizeThatFits:self.internalTextView.frame.size].height); - } - else { - return self.internalTextView.contentSize.height; - } -} - -- (void)resetScrollPositionForIOS7 -{ - CGRect r = [internalTextView caretRectForPosition:internalTextView.selectedTextRange.end]; - CGFloat caretY = MAX(r.origin.y - internalTextView.frame.size.height + r.size.height + 8, 0); - if (internalTextView.contentOffset.y < caretY && r.origin.y != INFINITY) - internalTextView.contentOffset = CGPointMake(0, caretY); -} - --(void)resizeTextView:(NSInteger)newSizeH -{ - if ([delegate respondsToSelector:@selector(growingTextView:willChangeHeight:)]) { - [delegate growingTextView:self willChangeHeight:newSizeH]; - } - - CGRect internalTextViewFrame = self.frame; - internalTextViewFrame.size.height = newSizeH; // + padding - self.frame = internalTextViewFrame; - - internalTextViewFrame.origin.y = contentInset.top - contentInset.bottom; - internalTextViewFrame.origin.x = contentInset.left; - - if(!CGRectEqualToRect(internalTextView.frame, internalTextViewFrame)) internalTextView.frame = internalTextViewFrame; -} - -- (void)growDidStop -{ - // scroll to caret (needed on iOS7) - if ([self respondsToSelector:@selector(snapshotViewAfterScreenUpdates:)]) - { - [self resetScrollPositionForIOS7]; - } - - if ([delegate respondsToSelector:@selector(growingTextView:didChangeHeight:)]) { - [delegate growingTextView:self didChangeHeight:self.frame.size.height]; - } -} - --(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event -{ - [internalTextView becomeFirstResponder]; -} - -- (BOOL)becomeFirstResponder -{ - [super becomeFirstResponder]; - return [self.internalTextView becomeFirstResponder]; -} - --(BOOL)resignFirstResponder -{ - [super resignFirstResponder]; - return [internalTextView resignFirstResponder]; -} - --(BOOL)isFirstResponder -{ - return [self.internalTextView isFirstResponder]; -} - - - -/////////////////////////////////////////////////////////////////////////////////////////////////// -#pragma mark UITextView properties -/////////////////////////////////////////////////////////////////////////////////////////////////// - --(void)setText:(NSString *)newText -{ - internalTextView.text = newText; - - // include this line to analyze the height of the textview. - // fix from Ankit Thakur - [self performSelector:@selector(textViewDidChange:) withObject:internalTextView]; -} - --(NSString*) text -{ - return internalTextView.text; -} - -/////////////////////////////////////////////////////////////////////////////////////////////////// - --(void)setFont:(UIFont *)afont -{ - internalTextView.font= afont; - - [self setMaxNumberOfLines:maxNumberOfLines]; - [self setMinNumberOfLines:minNumberOfLines]; -} - --(UIFont *)font -{ - return internalTextView.font; -} - -/////////////////////////////////////////////////////////////////////////////////////////////////// - --(void)setTextColor:(UIColor *)color -{ - internalTextView.textColor = color; -} - --(UIColor*)textColor{ - return internalTextView.textColor; -} - -/////////////////////////////////////////////////////////////////////////////////////////////////// - --(void)setBackgroundColor:(UIColor *)backgroundColor -{ - [super setBackgroundColor:backgroundColor]; - internalTextView.backgroundColor = backgroundColor; -} - --(UIColor*)backgroundColor -{ - return internalTextView.backgroundColor; -} - -/////////////////////////////////////////////////////////////////////////////////////////////////// - --(void)setTextAlignment:(NSTextAlignment)aligment -{ - internalTextView.textAlignment = aligment; -} - --(NSTextAlignment)textAlignment -{ - return internalTextView.textAlignment; -} - -/////////////////////////////////////////////////////////////////////////////////////////////////// - --(void)setSelectedRange:(NSRange)range -{ - internalTextView.selectedRange = range; -} - --(NSRange)selectedRange -{ - return internalTextView.selectedRange; -} - -/////////////////////////////////////////////////////////////////////////////////////////////////// - -- (void)setIsScrollable:(BOOL)isScrollable -{ - internalTextView.scrollEnabled = isScrollable; -} - -- (BOOL)isScrollable -{ - return internalTextView.scrollEnabled; -} - -/////////////////////////////////////////////////////////////////////////////////////////////////// - --(void)setEditable:(BOOL)beditable -{ - internalTextView.editable = beditable; -} - --(BOOL)isEditable -{ - return internalTextView.editable; -} - -/////////////////////////////////////////////////////////////////////////////////////////////////// - --(void)setReturnKeyType:(UIReturnKeyType)keyType -{ - internalTextView.returnKeyType = keyType; -} - --(UIReturnKeyType)returnKeyType -{ - return internalTextView.returnKeyType; -} - -/////////////////////////////////////////////////////////////////////////////////////////////////// - -- (void)setKeyboardType:(UIKeyboardType)keyType -{ - internalTextView.keyboardType = keyType; -} - -- (UIKeyboardType)keyboardType -{ - return internalTextView.keyboardType; -} - -/////////////////////////////////////////////////////////////////////////////////////////////////// - -- (void)setEnablesReturnKeyAutomatically:(BOOL)enablesReturnKeyAutomatically -{ - internalTextView.enablesReturnKeyAutomatically = enablesReturnKeyAutomatically; -} - -- (BOOL)enablesReturnKeyAutomatically -{ - return internalTextView.enablesReturnKeyAutomatically; -} - -/////////////////////////////////////////////////////////////////////////////////////////////////// - --(void)setDataDetectorTypes:(UIDataDetectorTypes)datadetector -{ - internalTextView.dataDetectorTypes = datadetector; -} - --(UIDataDetectorTypes)dataDetectorTypes -{ - return internalTextView.dataDetectorTypes; -} - -/////////////////////////////////////////////////////////////////////////////////////////////////// - -- (BOOL)hasText{ - return [internalTextView hasText]; -} - -- (void)scrollRangeToVisible:(NSRange)range -{ - [internalTextView scrollRangeToVisible:range]; -} - -///////////////////////////////////////////////////////////////////////////////////////////////////// -///////////////////////////////////////////////////////////////////////////////////////////////////// -#pragma mark - -#pragma mark UITextViewDelegate - - -/////////////////////////////////////////////////////////////////////////////////////////////////// -- (BOOL)textViewShouldBeginEditing:(UITextView *)textView { - if ([delegate respondsToSelector:@selector(growingTextViewShouldBeginEditing:)]) { - return [delegate growingTextViewShouldBeginEditing:self]; - - } else { - return YES; - } -} - - -/////////////////////////////////////////////////////////////////////////////////////////////////// -- (BOOL)textViewShouldEndEditing:(UITextView *)textView { - if ([delegate respondsToSelector:@selector(growingTextViewShouldEndEditing:)]) { - return [delegate growingTextViewShouldEndEditing:self]; - - } else { - return YES; - } -} - - -/////////////////////////////////////////////////////////////////////////////////////////////////// -- (void)textViewDidBeginEditing:(UITextView *)textView { - if ([delegate respondsToSelector:@selector(growingTextViewDidBeginEditing:)]) { - [delegate growingTextViewDidBeginEditing:self]; - } -} - - -/////////////////////////////////////////////////////////////////////////////////////////////////// -- (void)textViewDidEndEditing:(UITextView *)textView { - if ([delegate respondsToSelector:@selector(growingTextViewDidEndEditing:)]) { - [delegate growingTextViewDidEndEditing:self]; - } -} - - -/////////////////////////////////////////////////////////////////////////////////////////////////// -- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range - replacementText:(NSString *)atext { - - //weird 1 pixel bug when clicking backspace when textView is empty - if(![textView hasText] && [atext isEqualToString:@""]) return NO; - - //Added by bretdabaker: sometimes we want to handle this ourselves - if ([delegate respondsToSelector:@selector(growingTextView:shouldChangeTextInRange:replacementText:)]) - return [delegate growingTextView:self shouldChangeTextInRange:range replacementText:atext]; - - if ([atext isEqualToString:@"\n"]) { - if ([delegate respondsToSelector:@selector(growingTextViewShouldReturn:)]) { - if (![delegate performSelector:@selector(growingTextViewShouldReturn:) withObject:self]) { - return YES; - } else { - [textView resignFirstResponder]; - return NO; - } - } - } - - return YES; - - -} - -/////////////////////////////////////////////////////////////////////////////////////////////////// -- (void)textViewDidChangeSelection:(UITextView *)textView { - if ([delegate respondsToSelector:@selector(growingTextViewDidChangeSelection:)]) { - [delegate growingTextViewDidChangeSelection:self]; - } -} - - - -@end diff --git a/matrixConsole/External/GrowingTextView/class/HPTextViewInternal.h b/matrixConsole/External/GrowingTextView/class/HPTextViewInternal.h deleted file mode 100755 index 175f4d472..000000000 --- a/matrixConsole/External/GrowingTextView/class/HPTextViewInternal.h +++ /dev/null @@ -1,37 +0,0 @@ -// -// HPTextViewInternal.h -// -// Created by Hans Pinckaers on 29-06-10. -// -// MIT License -// -// Copyright (c) 2011 Hans Pinckaers -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import - - -@interface HPTextViewInternal : UITextView - -@property (nonatomic, strong) NSString *placeholder; -@property (nonatomic, strong) UIColor *placeholderColor; -@property (nonatomic) BOOL displayPlaceHolder; - -@end diff --git a/matrixConsole/External/GrowingTextView/class/HPTextViewInternal.m b/matrixConsole/External/GrowingTextView/class/HPTextViewInternal.m deleted file mode 100755 index f3a6a1d60..000000000 --- a/matrixConsole/External/GrowingTextView/class/HPTextViewInternal.m +++ /dev/null @@ -1,126 +0,0 @@ -// -// HPTextViewInternal.m -// -// Created by Hans Pinckaers on 29-06-10. -// -// MIT License -// -// Copyright (c) 2011 Hans Pinckaers -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import "HPTextViewInternal.h" - - -@implementation HPTextViewInternal - --(void)setText:(NSString *)text -{ - BOOL originalValue = self.scrollEnabled; - //If one of GrowingTextView's superviews is a scrollView, and self.scrollEnabled == NO, - //setting the text programatically will cause UIKit to search upwards until it finds a scrollView with scrollEnabled==yes - //then scroll it erratically. Setting scrollEnabled temporarily to YES prevents this. - [self setScrollEnabled:YES]; - [super setText:text]; - [self setScrollEnabled:originalValue]; -} - -- (void)setScrollable:(BOOL)isScrollable -{ - [super setScrollEnabled:isScrollable]; -} - --(void)setContentOffset:(CGPoint)s -{ - if(self.tracking || self.decelerating){ - //initiated by user... - - UIEdgeInsets insets = self.contentInset; - insets.bottom = 0; - insets.top = 0; - self.contentInset = insets; - - } else { - - float bottomOffset = (self.contentSize.height - self.frame.size.height + self.contentInset.bottom); - if(s.y < bottomOffset && self.scrollEnabled){ - UIEdgeInsets insets = self.contentInset; - insets.bottom = 8; - insets.top = 0; - self.contentInset = insets; - } - } - - // Fix "overscrolling" bug - if (s.y > self.contentSize.height - self.frame.size.height && !self.decelerating && !self.tracking && !self.dragging) - s = CGPointMake(s.x, self.contentSize.height - self.frame.size.height); - - [super setContentOffset:s]; -} - --(void)setContentInset:(UIEdgeInsets)s -{ - UIEdgeInsets insets = s; - - if(s.bottom>8) insets.bottom = 0; - insets.top = 0; - - [super setContentInset:insets]; -} - --(void)setContentSize:(CGSize)contentSize -{ - // is this an iOS5 bug? Need testing! - if(self.contentSize.height > contentSize.height) - { - UIEdgeInsets insets = self.contentInset; - insets.bottom = 0; - insets.top = 0; - self.contentInset = insets; - } - - [super setContentSize:contentSize]; -} - -- (void)drawRect:(CGRect)rect -{ - [super drawRect:rect]; - if (self.displayPlaceHolder && self.placeholder && self.placeholderColor) - { - if ([self respondsToSelector:@selector(snapshotViewAfterScreenUpdates:)]) - { - NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; - paragraphStyle.alignment = self.textAlignment; - [self.placeholder drawInRect:CGRectMake(5, 8 + self.contentInset.top, self.frame.size.width-self.contentInset.left, self.frame.size.height- self.contentInset.top) withAttributes:@{NSFontAttributeName:self.font, NSForegroundColorAttributeName:self.placeholderColor, NSParagraphStyleAttributeName:paragraphStyle}]; - } - else { - [self.placeholderColor set]; - [self.placeholder drawInRect:CGRectMake(8.0f, 8.0f, self.frame.size.width - 16.0f, self.frame.size.height - 16.0f) withFont:self.font]; - } - } -} - --(void)setPlaceholder:(NSString *)placeholder -{ - _placeholder = placeholder; - - [self setNeedsDisplay]; -} - -@end