Browse Source

Merge pull request #1112 from Infomaniak/newdrawer-fix

Newdrawer fix for #1101
Marino Faggiana 5 years ago
parent
commit
f0c226bd19

+ 0 - 38
Nextcloud.xcodeproj/project.pbxproj

@@ -318,11 +318,6 @@
 		F762CB191EACB66200B38484 /* XLFormValidator.m in Sources */ = {isa = PBXBuildFile; fileRef = F762CAF11EACB66200B38484 /* XLFormValidator.m */; };
 		F762CB191EACB66200B38484 /* XLFormValidator.m in Sources */ = {isa = PBXBuildFile; fileRef = F762CAF11EACB66200B38484 /* XLFormValidator.m */; };
 		F762CB1A1EACB66200B38484 /* XLForm.m in Sources */ = {isa = PBXBuildFile; fileRef = F762CAF41EACB66200B38484 /* XLForm.m */; };
 		F762CB1A1EACB66200B38484 /* XLForm.m in Sources */ = {isa = PBXBuildFile; fileRef = F762CAF41EACB66200B38484 /* XLForm.m */; };
 		F762CB1B1EACB66200B38484 /* XLForm.bundle in Resources */ = {isa = PBXBuildFile; fileRef = F762CAF51EACB66200B38484 /* XLForm.bundle */; };
 		F762CB1B1EACB66200B38484 /* XLForm.bundle in Resources */ = {isa = PBXBuildFile; fileRef = F762CAF51EACB66200B38484 /* XLForm.bundle */; };
-		F762CB861EACB81000B38484 /* RECommonFunctions.m in Sources */ = {isa = PBXBuildFile; fileRef = F762CB7D1EACB81000B38484 /* RECommonFunctions.m */; };
-		F762CB871EACB81000B38484 /* REMenu.m in Sources */ = {isa = PBXBuildFile; fileRef = F762CB7F1EACB81000B38484 /* REMenu.m */; };
-		F762CB881EACB81000B38484 /* REMenuContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = F762CB811EACB81000B38484 /* REMenuContainerView.m */; };
-		F762CB891EACB81000B38484 /* REMenuItem.m in Sources */ = {isa = PBXBuildFile; fileRef = F762CB831EACB81000B38484 /* REMenuItem.m */; };
-		F762CB8A1EACB81000B38484 /* REMenuItemView.m in Sources */ = {isa = PBXBuildFile; fileRef = F762CB851EACB81000B38484 /* REMenuItemView.m */; };
 		F7632FBF21832F8700721B71 /* NCTrashSectionHeaderMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = F7632FBE21832F8700721B71 /* NCTrashSectionHeaderMenu.xib */; };
 		F7632FBF21832F8700721B71 /* NCTrashSectionHeaderMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = F7632FBE21832F8700721B71 /* NCTrashSectionHeaderMenu.xib */; };
 		F7632FC1218353AA00721B71 /* NCTrashSectionFooter.xib in Resources */ = {isa = PBXBuildFile; fileRef = F7632FC0218353AA00721B71 /* NCTrashSectionFooter.xib */; };
 		F7632FC1218353AA00721B71 /* NCTrashSectionFooter.xib in Resources */ = {isa = PBXBuildFile; fileRef = F7632FC0218353AA00721B71 /* NCTrashSectionFooter.xib */; };
 		F7651A8A23A2A3F2001403D2 /* NCCreateFormUploadDocuments.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F7651A8823A2A3F2001403D2 /* NCCreateFormUploadDocuments.storyboard */; };
 		F7651A8A23A2A3F2001403D2 /* NCCreateFormUploadDocuments.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F7651A8823A2A3F2001403D2 /* NCCreateFormUploadDocuments.storyboard */; };
@@ -1050,16 +1045,6 @@
 		F762CAF31EACB66200B38484 /* XLForm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XLForm.h; sourceTree = "<group>"; };
 		F762CAF31EACB66200B38484 /* XLForm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XLForm.h; sourceTree = "<group>"; };
 		F762CAF41EACB66200B38484 /* XLForm.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XLForm.m; sourceTree = "<group>"; };
 		F762CAF41EACB66200B38484 /* XLForm.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XLForm.m; sourceTree = "<group>"; };
 		F762CAF51EACB66200B38484 /* XLForm.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = XLForm.bundle; sourceTree = "<group>"; };
 		F762CAF51EACB66200B38484 /* XLForm.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = XLForm.bundle; sourceTree = "<group>"; };
-		F762CB7C1EACB81000B38484 /* RECommonFunctions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RECommonFunctions.h; sourceTree = "<group>"; };
-		F762CB7D1EACB81000B38484 /* RECommonFunctions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RECommonFunctions.m; sourceTree = "<group>"; };
-		F762CB7E1EACB81000B38484 /* REMenu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = REMenu.h; sourceTree = "<group>"; };
-		F762CB7F1EACB81000B38484 /* REMenu.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = REMenu.m; sourceTree = "<group>"; };
-		F762CB801EACB81000B38484 /* REMenuContainerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = REMenuContainerView.h; sourceTree = "<group>"; };
-		F762CB811EACB81000B38484 /* REMenuContainerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = REMenuContainerView.m; sourceTree = "<group>"; };
-		F762CB821EACB81000B38484 /* REMenuItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = REMenuItem.h; sourceTree = "<group>"; };
-		F762CB831EACB81000B38484 /* REMenuItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = REMenuItem.m; sourceTree = "<group>"; };
-		F762CB841EACB81000B38484 /* REMenuItemView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = REMenuItemView.h; sourceTree = "<group>"; };
-		F762CB851EACB81000B38484 /* REMenuItemView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = REMenuItemView.m; sourceTree = "<group>"; };
 		F7632FBE21832F8700721B71 /* NCTrashSectionHeaderMenu.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NCTrashSectionHeaderMenu.xib; sourceTree = "<group>"; };
 		F7632FBE21832F8700721B71 /* NCTrashSectionHeaderMenu.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NCTrashSectionHeaderMenu.xib; sourceTree = "<group>"; };
 		F7632FC0218353AA00721B71 /* NCTrashSectionFooter.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NCTrashSectionFooter.xib; sourceTree = "<group>"; };
 		F7632FC0218353AA00721B71 /* NCTrashSectionFooter.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NCTrashSectionFooter.xib; sourceTree = "<group>"; };
 		F76344751BF259A800188725 /* synchronized.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = synchronized.gif; sourceTree = "<group>"; };
 		F76344751BF259A800188725 /* synchronized.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = synchronized.gif; sourceTree = "<group>"; };
@@ -2155,23 +2140,6 @@
 			path = "VFR Pdf Reader";
 			path = "VFR Pdf Reader";
 			sourceTree = "<group>";
 			sourceTree = "<group>";
 		};
 		};
-		F762CB7B1EACB81000B38484 /* REMenu */ = {
-			isa = PBXGroup;
-			children = (
-				F762CB7C1EACB81000B38484 /* RECommonFunctions.h */,
-				F762CB7D1EACB81000B38484 /* RECommonFunctions.m */,
-				F762CB7E1EACB81000B38484 /* REMenu.h */,
-				F762CB7F1EACB81000B38484 /* REMenu.m */,
-				F762CB801EACB81000B38484 /* REMenuContainerView.h */,
-				F762CB811EACB81000B38484 /* REMenuContainerView.m */,
-				F762CB821EACB81000B38484 /* REMenuItem.h */,
-				F762CB831EACB81000B38484 /* REMenuItem.m */,
-				F762CB841EACB81000B38484 /* REMenuItemView.h */,
-				F762CB851EACB81000B38484 /* REMenuItemView.m */,
-			);
-			path = REMenu;
-			sourceTree = "<group>";
-		};
 		F7632FC32183667400721B71 /* Section */ = {
 		F7632FC32183667400721B71 /* Section */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
@@ -2727,7 +2695,6 @@
 				F7F54CAD1E5B14C700E19C62 /* MWPhotoBrowser */,
 				F7F54CAD1E5B14C700E19C62 /* MWPhotoBrowser */,
 				F7B4F1C51F44356F00B53B42 /* NCUchardet */,
 				F7B4F1C51F44356F00B53B42 /* NCUchardet */,
 				F760F75621F21F61006B1A73 /* PhotoEditor */,
 				F760F75621F21F61006B1A73 /* PhotoEditor */,
-				F762CB7B1EACB81000B38484 /* REMenu */,
 				F762CB1C1EACB7D400B38484 /* VFR Pdf Reader */,
 				F762CB1C1EACB7D400B38484 /* VFR Pdf Reader */,
 				F762CA9F1EACB66200B38484 /* XLForm */,
 				F762CA9F1EACB66200B38484 /* XLForm */,
 			);
 			);
@@ -3543,7 +3510,6 @@
 				F78ACD4221903CE00088454D /* NCListCell.swift in Sources */,
 				F78ACD4221903CE00088454D /* NCListCell.swift in Sources */,
 				F78ACD4F2190440D0088454D /* NCLayout.swift in Sources */,
 				F78ACD4F2190440D0088454D /* NCLayout.swift in Sources */,
 				F760F79C21F21F61006B1A73 /* GradientView.swift in Sources */,
 				F760F79C21F21F61006B1A73 /* GradientView.swift in Sources */,
-				F762CB881EACB81000B38484 /* REMenuContainerView.m in Sources */,
 				F7D4237F1F0596C6009C9782 /* ReaderDocumentOutline.m in Sources */,
 				F7D4237F1F0596C6009C9782 /* ReaderDocumentOutline.m in Sources */,
 				F73F537F1E929C8500F8678D /* CCMore.swift in Sources */,
 				F73F537F1E929C8500F8678D /* CCMore.swift in Sources */,
 				F73B4EF71F470D9100BBEE4B /* LangBulgarianModel.cpp in Sources */,
 				F73B4EF71F470D9100BBEE4B /* LangBulgarianModel.cpp in Sources */,
@@ -3555,7 +3521,6 @@
 				F760F79421F21F61006B1A73 /* ResizeControl.swift in Sources */,
 				F760F79421F21F61006B1A73 /* ResizeControl.swift in Sources */,
 				F7DFB7F2219C5C0000680748 /* NCCreateFormUploadFileText.swift in Sources */,
 				F7DFB7F2219C5C0000680748 /* NCCreateFormUploadFileText.swift in Sources */,
 				371B5A2E23D0B04500FAFAE9 /* NCMainMenuTableViewController.swift in Sources */,
 				371B5A2E23D0B04500FAFAE9 /* NCMainMenuTableViewController.swift in Sources */,
-				F762CB861EACB81000B38484 /* RECommonFunctions.m in Sources */,
 				F76C6F8E21943C8C0063591B /* NCActionSheetHeader.swift in Sources */,
 				F76C6F8E21943C8C0063591B /* NCActionSheetHeader.swift in Sources */,
 				F760F79121F21F61006B1A73 /* EmojiCollectionViewCell.swift in Sources */,
 				F760F79121F21F61006B1A73 /* EmojiCollectionViewCell.swift in Sources */,
 				F750374F1DBFA91A008FB480 /* NSArray+PureLayout.m in Sources */,
 				F750374F1DBFA91A008FB480 /* NSArray+PureLayout.m in Sources */,
@@ -3683,7 +3648,6 @@
 				F73B4EF51F470D9100BBEE4B /* JpCntx.cpp in Sources */,
 				F73B4EF51F470D9100BBEE4B /* JpCntx.cpp in Sources */,
 				F78071091EDAB65800EAFFF6 /* NSNotificationCenter+MainThread.m in Sources */,
 				F78071091EDAB65800EAFFF6 /* NSNotificationCenter+MainThread.m in Sources */,
 				F76B3CCE1EAE01BD00921AC9 /* NCBrand.swift in Sources */,
 				F76B3CCE1EAE01BD00921AC9 /* NCBrand.swift in Sources */,
-				F762CB8A1EACB81000B38484 /* REMenuItemView.m in Sources */,
 				F7BF1B431D51E893000854F6 /* CCLogin.m in Sources */,
 				F7BF1B431D51E893000854F6 /* CCLogin.m in Sources */,
 				F760F79821F21F61006B1A73 /* StickerCollectionViewCell.swift in Sources */,
 				F760F79821F21F61006B1A73 /* StickerCollectionViewCell.swift in Sources */,
 				F70022FB1EC4C9100080073F /* NSString+Encode.m in Sources */,
 				F70022FB1EC4C9100080073F /* NSString+Encode.m in Sources */,
@@ -3739,7 +3703,6 @@
 				F762CB0F1EACB66200B38484 /* NSObject+XLFormAdditions.m in Sources */,
 				F762CB0F1EACB66200B38484 /* NSObject+XLFormAdditions.m in Sources */,
 				F7B2DEF01F976854007CF4D2 /* NYMnemonic.m in Sources */,
 				F7B2DEF01F976854007CF4D2 /* NYMnemonic.m in Sources */,
 				F707C26521A2DC5200F6181E /* NCStoreReview.swift in Sources */,
 				F707C26521A2DC5200F6181E /* NCStoreReview.swift in Sources */,
-				F762CB891EACB81000B38484 /* REMenuItem.m in Sources */,
 				F7D423791F0596C6009C9782 /* CGPDFDocument.m in Sources */,
 				F7D423791F0596C6009C9782 /* CGPDFDocument.m in Sources */,
 				F73B4EFF1F470D9100BBEE4B /* LangRussianModel.cpp in Sources */,
 				F73B4EFF1F470D9100BBEE4B /* LangRussianModel.cpp in Sources */,
 				F7BAADCB1ED5A87C00B7EAD4 /* NCManageDatabase.swift in Sources */,
 				F7BAADCB1ED5A87C00B7EAD4 /* NCManageDatabase.swift in Sources */,
@@ -3770,7 +3733,6 @@
 				F7D4237B1F0596C6009C9782 /* ReaderContentPage.m in Sources */,
 				F7D4237B1F0596C6009C9782 /* ReaderContentPage.m in Sources */,
 				F73B4F0A1F470D9100BBEE4B /* nsEUCTWProber.cpp in Sources */,
 				F73B4F0A1F470D9100BBEE4B /* nsEUCTWProber.cpp in Sources */,
 				F765608F23BF813600765969 /* NCContentPresenter.swift in Sources */,
 				F765608F23BF813600765969 /* NCContentPresenter.swift in Sources */,
-				F762CB871EACB81000B38484 /* REMenu.m in Sources */,
 				F762CB091EACB66200B38484 /* XLFormViewController.m in Sources */,
 				F762CB091EACB66200B38484 /* XLFormViewController.m in Sources */,
 				F760F79621F21F61006B1A73 /* PhotoEditorViewController.swift in Sources */,
 				F760F79621F21F61006B1A73 /* PhotoEditorViewController.swift in Sources */,
 				F762CB161EACB66200B38484 /* XLFormTextView.m in Sources */,
 				F762CB161EACB66200B38484 /* XLFormTextView.m in Sources */,

+ 0 - 1
iOSClient/AppDelegate.h

@@ -26,7 +26,6 @@
 #import <PushKit/PushKit.h>
 #import <PushKit/PushKit.h>
 
 
 #import "BKPasscodeLockScreenManager.h"
 #import "BKPasscodeLockScreenManager.h"
-#import "REMenu.h"
 #import "Reachability.h"
 #import "Reachability.h"
 #import "CCBKPasscode.h"
 #import "CCBKPasscode.h"
 #import "CCUtility.h"
 #import "CCUtility.h"

+ 0 - 32
iOSClient/Library/REMenu/RECommonFunctions.h

@@ -1,32 +0,0 @@
-//
-// RECommonFunctions.h
-// REMenu
-//
-// Copyright (c) 2013 Roman Efimov (https://github.com/romaonthego)
-//
-// 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 <Foundation/Foundation.h>
-#import <UIKit/UIKit.h>
-
-#ifndef REUIKitIsFlatModeFunction
-#define REUIKitIsFlatModeFunction
-BOOL REUIKitIsFlatMode();
-#endif

+ 0 - 44
iOSClient/Library/REMenu/RECommonFunctions.m

@@ -1,44 +0,0 @@
-//
-// RECommonFunctions.m
-// REMenu
-//
-// Copyright (c) 2013 Roman Efimov (https://github.com/romaonthego)
-//
-// 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 "RECommonFunctions.h"
-
-BOOL REUIKitIsFlatMode()
-{
-    static BOOL isUIKitFlatMode = NO;
-    static dispatch_once_t onceToken;
-    dispatch_once(&onceToken, ^{
-        if (floor(NSFoundationVersionNumber) > 993.0) {
-            // If your app is running in legacy mode, tintColor will be nil - else it must be set to some color.
-            if (UIApplication.sharedApplication.keyWindow) {
-                isUIKitFlatMode = [UIApplication.sharedApplication.delegate.window respondsToSelector:@selector(tintColor)];
-            } else {
-                // Possible that we're called early on (e.g. when used in a Storyboard). Adapt and use a temporary window.
-                isUIKitFlatMode = [[UIWindow new] respondsToSelector:@selector(tintColor)];
-            }
-        }
-    });
-    return isUIKitFlatMode;
-}

+ 0 - 121
iOSClient/Library/REMenu/REMenu.h

@@ -1,121 +0,0 @@
-//
-// REMenu.h
-// REMenu
-//
-// Copyright (c) 2013 Roman Efimov (https://github.com/romaonthego)
-//
-// 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 <UIKit/UIKit.h>
-#import <QuartzCore/QuartzCore.h>
-#import "RECommonFunctions.h"
-#import "REMenuItem.h"
-#import "REMenuContainerView.h"
-
-@class REMenuItem;
-
-typedef NS_ENUM(NSInteger, REMenuImageAlignment) {
-    REMenuImageAlignmentLeft,
-    REMenuImageAlignmentRight
-};
-
-typedef NS_ENUM(NSInteger, REMenuLiveBackgroundStyle) {
-    REMenuLiveBackgroundStyleLight,
-    REMenuLiveBackgroundStyleDark
-};
-
-@interface REMenu : NSObject 
-
-// Menu View
-//
-@property (strong, readwrite, nonatomic) UIView *menuView;
-
-// Data
-//
-@property (strong, readwrite, nonatomic) NSArray *items;
-@property (strong, readwrite, nonatomic) UIView *backgroundView;
-@property (assign, readonly, nonatomic) BOOL isOpen;
-@property (assign, readonly, nonatomic) BOOL isAnimating;
-@property (assign, readwrite, nonatomic) BOOL waitUntilAnimationIsComplete;
-@property (copy, readwrite, nonatomic) void (^closeCompletionHandler)(void);
-@property (copy, readwrite, nonatomic) void (^closePreparationBlock)(void);
-@property (assign, readwrite, nonatomic) BOOL closeOnSelection;
-
-// Style
-//
-@property (assign, readwrite, nonatomic) CGFloat cornerRadius;
-@property (strong, readwrite, nonatomic) UIColor *shadowColor;
-@property (assign, readwrite, nonatomic) CGSize shadowOffset;
-@property (assign, readwrite, nonatomic) CGFloat shadowOpacity;
-@property (assign, readwrite, nonatomic) CGFloat shadowRadius;
-@property (assign, readwrite, nonatomic) CGFloat itemHeight;
-@property (assign, readwrite, nonatomic) CGFloat backgroundAlpha;
-@property (strong, readwrite, nonatomic) UIColor *backgroundColor;
-@property (strong, readwrite, nonatomic) UIColor *separatorColor;
-@property (assign, readwrite, nonatomic) CGFloat separatorHeight;
-@property (assign, readwrite, nonatomic) CGSize separatorOffset;
-@property (strong, readwrite, nonatomic) UIFont *font;
-@property (strong, readwrite, nonatomic) UIColor *textColor;
-@property (strong, readwrite, nonatomic) UIColor *textShadowColor;
-@property (assign, readwrite, nonatomic) CGSize textOffset;
-@property (assign, readwrite, nonatomic) CGSize textShadowOffset;
-@property (assign, readwrite, nonatomic) REMenuImageAlignment imageAlignment;
-@property (strong, readwrite, nonatomic) UIColor *imageTintColor;
-@property (assign, readwrite, nonatomic) CGSize imageOffset;
-@property (strong, readwrite, nonatomic) UIColor *highlightedBackgroundColor;
-@property (strong, readwrite, nonatomic) UIColor *highlightedSeparatorColor;
-@property (strong, readwrite, nonatomic) UIColor *highlightedTextColor;
-@property (strong, readwrite, nonatomic) UIColor *highlightedTextShadowColor;
-@property (strong, readwrite, nonatomic) UIColor *highlightedImageTintColor;
-@property (assign, readwrite, nonatomic) CGSize highlightedTextShadowOffset;
-@property (assign, readwrite, nonatomic) CGFloat borderWidth;
-@property (strong, readwrite, nonatomic) UIColor *borderColor;
-@property (assign, readwrite, nonatomic) NSTextAlignment textAlignment;
-@property (strong, readwrite, nonatomic) UIFont *subtitleFont;
-@property (strong, readwrite, nonatomic) UIColor *subtitleTextColor;
-@property (strong, readwrite, nonatomic) UIColor *subtitleTextShadowColor;
-@property (assign, readwrite, nonatomic) CGSize subtitleTextOffset;
-@property (assign, readwrite, nonatomic) CGSize subtitleTextShadowOffset;
-@property (strong, readwrite, nonatomic) UIColor *subtitleHighlightedTextColor;
-@property (strong, readwrite, nonatomic) UIColor *subtitleHighlightedTextShadowColor;
-@property (assign, readwrite, nonatomic) CGSize subtitleHighlightedTextShadowOffset;
-@property (assign, readwrite, nonatomic) NSTextAlignment subtitleTextAlignment;
-@property (assign, readwrite, nonatomic) NSTimeInterval animationDuration;
-@property (assign, readwrite, nonatomic) NSTimeInterval closeAnimationDuration;
-@property (assign, readwrite, nonatomic) NSTimeInterval bounceAnimationDuration;
-@property (assign, readwrite, nonatomic) BOOL appearsBehindNavigationBar;
-@property (assign, readwrite, nonatomic) BOOL bounce;
-@property (assign, readwrite, nonatomic) BOOL liveBlur; // Available only in iOS 7
-@property (strong, readwrite, nonatomic) UIColor *liveBlurTintColor; // Available only in iOS 7
-@property (assign, readwrite, nonatomic) REMenuLiveBackgroundStyle liveBlurBackgroundStyle; // Available only in iOS 7
-@property (copy, readwrite, nonatomic) void (^badgeLabelConfigurationBlock)(UILabel *badgeLabel, REMenuItem *item);
-
-- (id)initWithItems:(NSArray *)items;
-- (void)showFromRect:(CGRect)rect inView:(UIView *)view;
-- (void)showInView:(UIView *)view;
-- (void)showFromNavigationController:(UINavigationController *)navigationController;
-- (void)showFromNavigationController:(UINavigationController *)navigationController offsetX:(CGFloat)offsetX width:(CGFloat)width;
-- (void)setNeedsLayout;
-- (void)closeWithCompletion:(void (^)(void))completion;
-- (void)close;
-
-- (CGFloat)computeNavigationBarOffset;
-
-@end

+ 0 - 430
iOSClient/Library/REMenu/REMenu.m

@@ -1,430 +0,0 @@
-//
-// REMenu.m
-// REMenu
-//
-// Copyright (c) 2013 Roman Efimov (https://github.com/romaonthego)
-//
-// 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 "REMenu.h"
-#import "REMenuItem.h"
-#import "REMenuItemView.h"
-
-@interface REMenuItem ()
-
-@property (assign, readwrite, nonatomic) REMenuItemView *itemView;
-
-@end
-
-@interface REMenu ()
-
-@property (strong, readwrite, nonatomic) UIView *menuWrapperView;
-@property (strong, readwrite, nonatomic) REMenuContainerView *containerView;
-@property (strong, readwrite, nonatomic) UIButton *backgroundButton;
-@property (assign, readwrite, nonatomic) BOOL isOpen;
-@property (assign, readwrite, nonatomic) BOOL isAnimating;
-@property (strong, readwrite, nonatomic) NSMutableArray *itemViews;
-@property (weak, readwrite, nonatomic) UINavigationBar *navigationBar;
-@property (strong, readwrite, nonatomic) UIToolbar *toolbar;
-
-@end
-
-@implementation REMenu
-
-- (id)init
-{
-    self = [super init];
-    if (self) {
-        _imageAlignment = REMenuImageAlignmentLeft;
-        _closeOnSelection = YES;
-        _itemHeight = 48.0;
-        _separatorHeight = 2.0;
-        _separatorOffset = CGSizeMake(0.0, 0.0);
-        _waitUntilAnimationIsComplete = YES;
-        
-        _textOffset = CGSizeMake(0, 0);
-        _subtitleTextOffset = CGSizeMake(0, 0);
-        _font = [UIFont boldSystemFontOfSize:21.0];
-        _subtitleFont = [UIFont systemFontOfSize:14.0];
-        
-        _backgroundAlpha = 1.0;
-        _backgroundColor = [UIColor colorWithRed:53/255.0 green:53/255.0 blue:52/255.0 alpha:1.0];
-        _separatorColor = [UIColor colorWithPatternImage:self.separatorImage];
-        _textColor = [UIColor colorWithRed:128/255.0 green:126/255.0 blue:124/255.0 alpha:1.0];
-        _textShadowColor = [UIColor blackColor];
-        _textShadowOffset = CGSizeMake(0, -1.0);
-        _textAlignment = NSTextAlignmentCenter;
-        
-        _highlightedBackgroundColor = [UIColor colorWithRed:28/255.0 green:28/255.0 blue:27/255.0 alpha:1.0];
-        _highlightedSeparatorColor = [UIColor colorWithRed:28/255.0 green:28/255.0 blue:27/255.0 alpha:1.0];
-        _highlightedTextColor = [UIColor colorWithRed:128/255.0 green:126/255.0 blue:124/255.0 alpha:1.0];
-        _highlightedTextShadowColor = [UIColor blackColor];
-        _highlightedTextShadowOffset = CGSizeMake(0, -1.0);
-        
-        _subtitleTextColor = [UIColor colorWithWhite:0.425 alpha:1.000];
-        _subtitleTextShadowColor = [UIColor blackColor];
-        _subtitleTextShadowOffset = CGSizeMake(0, -1.0);
-        _subtitleHighlightedTextColor = [UIColor colorWithRed:0.389 green:0.384 blue:0.379 alpha:1.000];
-        _subtitleHighlightedTextShadowColor = [UIColor blackColor];
-        _subtitleHighlightedTextShadowOffset = CGSizeMake(0, -1.0);
-        _subtitleTextAlignment = NSTextAlignmentCenter;
-        
-        _borderWidth = 1.0;
-        _borderColor =  [UIColor colorWithRed:28/255.0 green:28/255.0 blue:27/255.0 alpha:1.0];
-        _animationDuration = 0.3;
-        _closeAnimationDuration = 0.2;
-        _bounce = YES;
-        _bounceAnimationDuration = 0.2;
-        
-        _appearsBehindNavigationBar = REUIKitIsFlatMode() ? YES : NO;
-    }
-    return self;
-}
-
-- (id)initWithItems:(NSArray *)items
-{
-    self = [self init];
-    if (self) {
-        _items = items;
-    }
-    return self;
-}
-
-- (void)showFromRect:(CGRect)rect inView:(UIView *)view
-{
-    if (self.isAnimating) {
-        return;
-    }
-    
-    self.isOpen = YES;
-    self.isAnimating = YES;
-    
-    // Create views
-    //
-    self.containerView = ({
-        REMenuContainerView *view = [[REMenuContainerView alloc] init];
-        view.clipsToBounds = YES;
-        view.autoresizingMask = UIViewAutoresizingFlexibleWidth;
-        
-        if (self.backgroundView) {
-            self.backgroundView.alpha = 0;
-            [view addSubview:self.backgroundView];
-        }
-        view;
-    });
-    
-    self.menuView = ({
-        UIView *view = [[UIView alloc] init];
-        if (!self.liveBlur || !REUIKitIsFlatMode()) {
-            view.backgroundColor = self.backgroundColor;
-        }
-        view.layer.cornerRadius = self.cornerRadius;
-        view.layer.borderColor = self.borderColor.CGColor;
-        view.layer.borderWidth = self.borderWidth;
-        view.layer.masksToBounds = YES;
-        view.layer.shouldRasterize = YES;
-        view.layer.rasterizationScale = [UIScreen mainScreen].scale;
-        view.autoresizingMask = UIViewAutoresizingFlexibleWidth;
-        view;
-    });
-    
-    if (REUIKitIsFlatMode()) {
-        self.toolbar = ({
-            UIToolbar *toolbar = [[UIToolbar alloc] init];
-            toolbar.barStyle = (UIBarStyle)self.liveBlurBackgroundStyle;
-            if ([toolbar respondsToSelector:@selector(setBarTintColor:)])
-                [toolbar performSelector:@selector(setBarTintColor:) withObject:self.liveBlurTintColor];
-            toolbar.autoresizingMask = UIViewAutoresizingFlexibleWidth;
-            toolbar.layer.cornerRadius = self.cornerRadius;
-            toolbar.layer.borderColor = self.borderColor.CGColor;
-            toolbar.layer.borderWidth = self.borderWidth;
-            toolbar.layer.masksToBounds = YES;
-            toolbar;
-        });
-    }
-    
-    self.menuWrapperView = ({
-        UIView *view = [[UIView alloc] init];
-        view.autoresizingMask = UIViewAutoresizingFlexibleWidth;
-        if (!self.liveBlur || !REUIKitIsFlatMode()) {
-            view.layer.shadowColor = self.shadowColor.CGColor;
-            view.layer.shadowOffset = self.shadowOffset;
-            view.layer.shadowOpacity = self.shadowOpacity;
-            view.layer.shadowRadius = self.shadowRadius;
-            view.layer.shouldRasterize = YES;
-            view.layer.rasterizationScale = [UIScreen mainScreen].scale;
-        }
-        view;
-    });
-    
-    self.backgroundButton = ({
-        UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
-        button.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
-        button.accessibilityLabel = NSLocalizedString(@"Menu background", @"Menu background");
-        button.accessibilityHint = NSLocalizedString(@"Double tap to close", @"Double tap to close");
-        [button addTarget:self action:@selector(close) forControlEvents:UIControlEventTouchUpInside];
-        button;
-    });
-    
-    CGFloat navigationBarOffset = [self computeNavigationBarOffset];
-    
-    // Append new item views to REMenuView
-    //
-    for (REMenuItem *item in self.items) {
-        NSInteger index = [self.items indexOfObject:item];
-        
-        CGFloat itemHeight = self.itemHeight;
-        if (index == self.items.count - 1)
-            itemHeight += self.cornerRadius;
-        
-        UIView *separatorView = [[UIView alloc] initWithFrame:CGRectMake(self.separatorOffset.width,
-                                                                         index * self.itemHeight + index * self.separatorHeight + 40.0 + navigationBarOffset + self.separatorOffset.height,
-                                                                         rect.size.width - self.separatorOffset.width,
-                                                                         self.separatorHeight)];
-        separatorView.backgroundColor = self.separatorColor;
-        separatorView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
-        [self.menuView addSubview:separatorView];
-        
-        REMenuItemView *itemView = [[REMenuItemView alloc] initWithFrame:CGRectMake(0,
-                                                                                    index * self.itemHeight + (index + 1.0) * self.separatorHeight + 40.0 + navigationBarOffset,
-                                                                                    rect.size.width,
-                                                                                    itemHeight)
-                                                                    menu:self item:item
-                                                             hasSubtitle:item.subtitle.length > 0];
-        itemView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
-        item.itemView = itemView;
-        itemView.separatorView = separatorView;
-        itemView.autoresizesSubviews = YES;
-        if (item.customView) {
-            item.customView.frame = itemView.bounds;
-            [itemView addSubview:item.customView];
-        }
-        [self.menuView addSubview:itemView];
-    }
-    
-    // Set up frames
-    //
-    self.menuWrapperView.frame = CGRectMake(0, -self.combinedHeight - navigationBarOffset, rect.size.width, self.combinedHeight + navigationBarOffset);
-    self.menuView.frame = self.menuWrapperView.bounds;
-    if (REUIKitIsFlatMode() && self.liveBlur) {
-        self.toolbar.frame = self.menuWrapperView.bounds;
-    }
-    self.containerView.frame = CGRectMake(rect.origin.x, rect.origin.y, rect.size.width, rect.size.height);
-    self.backgroundButton.frame = self.containerView.bounds;
-    
-    // Add subviews
-    //
-    if (REUIKitIsFlatMode() && self.liveBlur) {
-        [self.menuWrapperView addSubview:self.toolbar];
-    }
-    [self.menuWrapperView addSubview:self.menuView];
-    [self.containerView addSubview:self.backgroundButton];
-    [self.containerView addSubview:self.menuWrapperView];
-    [view addSubview:self.containerView];
-    
-    // Animate appearance
-    //
-    if (self.bounce) {
-        self.isAnimating = YES;
-        if ([UIView respondsToSelector:@selector(animateWithDuration:delay:usingSpringWithDamping:initialSpringVelocity:options:animations:completion:)]) {
-            [UIView animateWithDuration:self.animationDuration+self.bounceAnimationDuration
-                                  delay:0.0
-                 usingSpringWithDamping:0.6
-                  initialSpringVelocity:4.0
-                                options:UIViewAnimationOptionBeginFromCurrentState|UIViewAnimationOptionCurveEaseInOut
-                             animations:^{
-                 self.backgroundView.alpha = self.backgroundAlpha;
-                 CGRect frame = self.menuView.frame;
-                 frame.origin.y = -40.0 - self.separatorHeight;
-                 self.menuWrapperView.frame = frame;
-             } completion:^(BOOL finished) {
-                 self.isAnimating = NO;
-             }];
-        } else {
-            [UIView animateWithDuration:self.animationDuration
-                                  delay:0.0
-                                options:UIViewAnimationOptionBeginFromCurrentState|UIViewAnimationOptionCurveEaseInOut
-                             animations:^{
-                 self.backgroundView.alpha = self.backgroundAlpha;
-                 CGRect frame = self.menuView.frame;
-                 frame.origin.y = -40.0 - self.separatorHeight;
-                 self.menuWrapperView.frame = frame;
-             } completion:^(BOOL finished) {
-                 self.isAnimating = NO;
-             }];
-
-        }
-    } else {
-        [UIView animateWithDuration:self.animationDuration
-                              delay:0.0
-                            options:UIViewAnimationOptionBeginFromCurrentState|UIViewAnimationOptionCurveEaseInOut
-                         animations:^{
-            self.backgroundView.alpha = self.backgroundAlpha;
-            CGRect frame = self.menuView.frame;
-            frame.origin.y = -40.0 - self.separatorHeight;
-            self.menuWrapperView.frame = frame;
-        } completion:^(BOOL finished) {
-            self.isAnimating = NO;
-        }];
-    }
-}
-
-- (void)showInView:(UIView *)view
-{
-    [self showFromRect:view.bounds inView:view];
-}
-
--(void)showFromNavigationController:(UINavigationController *)navigationController
-{
-    [self showFromNavigationController:navigationController offsetX:0 width:navigationController.navigationBar.frame.size.width];
-}
-
-- (void)showFromNavigationController:(UINavigationController *)navigationController offsetX:(CGFloat)offsetX width:(CGFloat)width
-{
-    if (self.isAnimating) {
-        return;
-    }
-    
-    self.navigationBar = navigationController.navigationBar;
-    
-    [self showFromRect:CGRectMake(offsetX, 0, width, navigationController.view.frame.size.height) inView:navigationController.view];
-    self.containerView.appearsBehindNavigationBar = self.appearsBehindNavigationBar;
-    self.containerView.navigationBar = navigationController.navigationBar;
-    if (self.appearsBehindNavigationBar) {
-        [navigationController.view bringSubviewToFront:navigationController.navigationBar];
-    }
-    
-    if(width != navigationController.navigationBar.frame.size.width)
-    {
-        self.containerView.autoresizingMask = UIViewAutoresizingFlexibleRightMargin;
-    }
-}
-
-- (void)closeWithCompletion:(void (^)(void))completion
-{
-    if (self.isAnimating) return;
-    
-    self.isAnimating = YES;
-    
-    CGFloat navigationBarOffset = [self computeNavigationBarOffset];
-    
-    void (^closeMenu)(void) = ^{
-        [UIView animateWithDuration:self.closeAnimationDuration
-                              delay:0.0
-                            options:UIViewAnimationOptionBeginFromCurrentState|UIViewAnimationOptionCurveEaseInOut
-                         animations:^ {
-            CGRect frame = self.menuView.frame;
-            frame.origin.y = - self.combinedHeight - navigationBarOffset;
-            self.menuWrapperView.frame = frame;
-            self.backgroundView.alpha = 0;
-        } completion:^(BOOL finished) {
-            self.isOpen = NO;
-            self.isAnimating = NO;
-            
-            [self.menuView removeFromSuperview];
-            [self.menuWrapperView removeFromSuperview];
-            [self.backgroundButton removeFromSuperview];
-            [self.backgroundView removeFromSuperview];
-            [self.containerView removeFromSuperview];
-            
-            if (completion) {
-                completion();
-            }
-            
-            if (self.closeCompletionHandler) {
-                self.closeCompletionHandler();
-            }
-        }];
-        
-    };
-    
-    if (self.closePreparationBlock) {
-        self.closePreparationBlock();
-    }
-    
-    if (self.bounce) {
-        [UIView animateWithDuration:self.bounceAnimationDuration animations:^{
-            CGRect frame = self.menuView.frame;
-            frame.origin.y = -20.0;
-            self.menuWrapperView.frame = frame;
-        } completion:^(BOOL finished) {
-            closeMenu();
-        }];
-    } else {
-        closeMenu();
-    }
-}
-
-- (void)close
-{
-    [self closeWithCompletion:nil];
-}
-
-- (CGFloat)combinedHeight
-{
-    return self.items.count * self.itemHeight + self.items.count * self.separatorHeight + 40.0 + self.cornerRadius;
-}
-
-- (void)setNeedsLayout
-{
-    [UIView animateWithDuration:0.35 animations:^{
-        [self.containerView layoutSubviews];
-    }];
-}
-
-#pragma mark -
-#pragma mark Setting style
-
-- (UIImage *)separatorImage
-{
-    UIGraphicsBeginImageContext(CGSizeMake(1, 4.0));
-    CGContextRef context = UIGraphicsGetCurrentContext();
-    UIGraphicsPushContext(context);
-    CGContextSetFillColorWithColor(context, [UIColor colorWithRed:28/255.0 green:28/255.0 blue:27/255.0 alpha:1.0].CGColor);
-    CGContextFillRect(context, CGRectMake(0, 0, 1.0, 2.0));
-    CGContextSetFillColorWithColor(context, [UIColor colorWithRed:79/255.0 green:79/255.0 blue:77/255.0 alpha:1.0].CGColor);
-    CGContextFillRect(context, CGRectMake(0, 3.0, 1.0, 2.0));
-    UIGraphicsPopContext();
-    UIImage *outputImage = UIGraphicsGetImageFromCurrentImageContext();
-    UIGraphicsEndImageContext();
-    
-    return [UIImage imageWithCGImage:outputImage.CGImage scale:2.0 orientation:UIImageOrientationUp];
-}
-
-- (CGFloat)computeNavigationBarOffset
-{
-    //TWS
-    //CGFloat navigationBarOffset = self.appearsBehindNavigationBar && self.navigationBar ? ([UIApplication sharedApplication].statusBarHidden ? 44 : 64) : 0;
-    
-    CGFloat offsetY = 0;
-    
-    if (@available(iOS 11, *)) {
-        UIEdgeInsets insets = [UIApplication sharedApplication].delegate.window.safeAreaInsets;
-        if (insets.bottom > 0)
-            offsetY = 20;
-    }
-    
-    CGFloat navigationBarOffset = self.appearsBehindNavigationBar && self.navigationBar ? ([UIApplication sharedApplication].statusBarHidden ? 44+offsetY : 64+offsetY) : 0;
-    
-    return navigationBarOffset;
-}
-
-
-@end

+ 0 - 33
iOSClient/Library/REMenu/REMenuContainerView.h

@@ -1,33 +0,0 @@
-//
-// REMenuContainerView.h
-// REMenu
-//
-// Copyright (c) 2013 Roman Efimov (https://github.com/romaonthego)
-//
-// 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 <UIKit/UIKit.h>
-
-@interface REMenuContainerView : UIView
-
-@property (strong, readwrite, nonatomic) UINavigationBar *navigationBar;
-@property (assign, readwrite, nonatomic) BOOL appearsBehindNavigationBar;
-
-@end

+ 0 - 66
iOSClient/Library/REMenu/REMenuContainerView.m

@@ -1,66 +0,0 @@
-//
-// REMenuContainerView.m
-// REMenu
-//
-// Copyright (c) 2013 Roman Efimov (https://github.com/romaonthego)
-//
-// 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 "REMenuContainerView.h"
-#import <QuartzCore/QuartzCore.h>
-
-@implementation REMenuContainerView
-
-- (void)layoutSubviews
-{
-    [super layoutSubviews];
-    UIDeviceOrientation orientation = [UIDevice currentDevice].orientation;
-    
-    CGFloat landscapeOffset = UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone ? 32.0 : 44.0;
-    
-    if (self.navigationBar && !self.appearsBehindNavigationBar) {
-        CGRect frame = self.frame;
-        frame.origin.y = self.navigationBar.frame.origin.y + (UIDeviceOrientationIsPortrait(orientation) ? 44.0 : landscapeOffset);
-        self.frame = frame;
-    }
-    
-    if (self.appearsBehindNavigationBar) {
-        CGRect frame = self.frame;
-        long height = [[UIScreen mainScreen] bounds].size.height;
-        
-        if (([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortrait) || [[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortraitUpsideDown) {
-            frame.origin.y = 0;
-            frame.size.height = height;
-        } else {
-            // landscape
-            if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
-                frame.origin.y = -12;
-                frame.size.height = height + 12;
-            } else {
-                frame.origin.y = 0;
-                frame.size.height = height;
-            }
-        }
-        
-        self.frame = frame;
-    }
-}
-
-@end

+ 0 - 69
iOSClient/Library/REMenu/REMenuItem.h

@@ -1,69 +0,0 @@
-//
-// REMenuItem.h
-// REMenu
-//
-// Copyright (c) 2013 Roman Efimov (https://github.com/romaonthego)
-//
-// 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 <Foundation/Foundation.h>
-#import <UIKit/UIKit.h>
-
-@interface REMenuItem : NSObject
-
-@property (strong, readwrite, nonatomic) UIColor *backgroundColor;
-@property (strong, readwrite, nonatomic) UIColor *separatorColor;
-@property (strong, readwrite, nonatomic) UIFont *font;
-@property (strong, readwrite, nonatomic) UIColor *textColor;
-@property (strong, readwrite, nonatomic) UIColor *textShadowColor;
-@property (assign, readwrite, nonatomic) CGSize textOffset;
-@property (assign, readwrite, nonatomic) CGSize textShadowOffset;
-@property (strong, readwrite, nonatomic) UIColor *highlightedBackgroundColor;
-@property (strong, readwrite, nonatomic) UIColor *highlightedSeparatorColor;
-@property (strong, readwrite, nonatomic) UIColor *highlightedTextColor;
-@property (strong, readwrite, nonatomic) UIColor *highlightedTextShadowColor;
-@property (assign, readwrite, nonatomic) CGSize highlightedTextShadowOffset;
-@property (assign, readwrite, nonatomic) NSTextAlignment textAlignment;
-@property (strong, readwrite, nonatomic) UIFont *subtitleFont;
-@property (strong, readwrite, nonatomic) UIColor *subtitleTextColor;
-@property (strong, readwrite, nonatomic) UIColor *subtitleTextShadowColor;
-@property (assign, readwrite, nonatomic) CGSize subtitleTextOffset;
-@property (assign, readwrite, nonatomic) CGSize subtitleTextShadowOffset;
-@property (strong, readwrite, nonatomic) UIColor *subtitleHighlightedTextColor;
-@property (strong, readwrite, nonatomic) UIColor *subtitleHighlightedTextShadowColor;
-@property (assign, readwrite, nonatomic) CGSize subtitleHighlightedTextShadowOffset;
-@property (assign, readwrite, nonatomic) NSTextAlignment subtitleTextAlignment;
-
-@property (copy, readwrite, nonatomic) NSString *title;
-@property (copy, readwrite, nonatomic) NSString *subtitle;
-@property (copy, readwrite, nonatomic) NSString *badge;
-@property (strong, readwrite, nonatomic) UIImage *image;
-@property (strong, readwrite, nonatomic) UIImage *highlightedImage;
-@property (copy, readwrite, nonatomic) void (^action)(REMenuItem *item);
-@property (assign, readwrite, nonatomic) NSInteger tag;
-@property (strong, readwrite, nonatomic) UIView *customView;
-
-- (id)initWithTitle:(NSString *)title image:(UIImage *)image highlightedImage:(UIImage *)highlightedImage action:(void (^)(REMenuItem *item))action;
-- (id)initWithTitle:(NSString *)title subtitle:(NSString *)subtitle image:(UIImage *)image highlightedImage:(UIImage *)highlightedImage action:(void (^)(REMenuItem *item))action;
-- (id)initWithCustomView:(UIView *)customView action:(void (^)(REMenuItem *item))action;
-- (id)initWithCustomView:(UIView *)customView;
-- (void)setNeedsLayout;
-
-@end

+ 0 - 120
iOSClient/Library/REMenu/REMenuItem.m

@@ -1,120 +0,0 @@
-//
-// REMenuItem.m
-// REMenu
-//
-// Copyright (c) 2013 Roman Efimov (https://github.com/romaonthego)
-//
-// 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 "REMenuItem.h"
-#import "REMenuItemView.h"
-
-@interface REMenuItem ()
-@property (assign, nonatomic) REMenuItemView *itemView;
-@end
-
-
-@implementation REMenuItem
-
-- (id)initWithTitle:(NSString *)title image:(UIImage *)image highlightedImage:(UIImage *)highlightedImage action:(void (^)(REMenuItem *item))action
-{
-    self = [super init];
-    if (self) {
-        _title = title;
-        _image = image;
-        _highlightedImage = highlightedImage;
-        _action = action;
-        _textAlignment = -1;
-        _subtitleTextAlignment = -1;
-    }
-    return self;
-}
-
-- (id)initWithTitle:(NSString *)title subtitle:(NSString *)subtitle image:(UIImage *)image highlightedImage:(UIImage *)highlightedImage action:(void (^)(REMenuItem *item))action
-{
-    self = [super init];
-    if (self) {
-        _title = title;
-        _subtitle = subtitle;
-        _image = image;
-        _highlightedImage = highlightedImage;
-        _action = action;
-        _textAlignment = -1;
-        _subtitleTextAlignment = -1;
-    }
-    return self;
-}
-
-- (id)initWithCustomView:(UIView *)customView action:(void (^)(REMenuItem *item))action
-{
-    self = [super init];
-    if (self) {
-        _customView = customView;
-        _action = action;
-    }
-    return self;
-}
-
-- (id)initWithCustomView:(UIView *)customView
-{
-    self = [super init];
-    if (self) {
-        _customView = customView;
-    }
-    return self;
-}
-
-- (NSString *)description
-{
-    return [NSString stringWithFormat:@"<title: %@; subtitle: %@; tag: %li>", self.title, self.subtitle, (long)self.tag];
-}
-
-- (void)setTitle:(NSString *)title
-{
-    _title = title;
-    self.itemView.titleLabel.text = title;
-    self.itemView.accessibilityLabel = title;
-}
-
-- (void)setSubtitle:(NSString *)subtitle
-{
-    _subtitle = subtitle;
-    self.itemView.subtitleLabel.text = subtitle;
-    self.itemView.accessibilityLabel = [NSString stringWithFormat:@"%@, %@", self.itemView.titleLabel.text, subtitle];
-}
-
-- (void)setImage:(UIImage *)image
-{
-    _image = image;
-    self.itemView.imageView.image = image;
-}
-
-- (void)setHighlightedImage:(UIImage *)highlightedImage
-{
-    _highlightedImage = highlightedImage;
-    self.itemView.imageView.highlightedImage = highlightedImage;
-}
-
-- (void)setNeedsLayout
-{
-    [self.itemView layoutSubviews];
-}
-
-@end

+ 0 - 42
iOSClient/Library/REMenu/REMenuItemView.h

@@ -1,42 +0,0 @@
-//
-// REMenuItemView.h
-// REMenu
-//
-// Copyright (c) 2013 Roman Efimov (https://github.com/romaonthego)
-//
-// 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 <UIKit/UIKit.h>
-#import "REMenuItem.h"
-#import "REMenu.h"
-
-@interface REMenuItemView : UIView
-
-@property (weak, readwrite, nonatomic) REMenu *menu;
-@property (weak, readwrite, nonatomic) UIView *separatorView;
-@property (strong, readwrite, nonatomic) UILabel *titleLabel;
-@property (strong, readwrite, nonatomic) UILabel *subtitleLabel;
-@property (strong, readwrite, nonatomic) UIImageView *imageView;
-@property (strong, readwrite, nonatomic) UILabel *badgeLabel;
-@property (strong, readwrite, nonatomic) REMenuItem *item;
-
-- (id)initWithFrame:(CGRect)frame menu:(REMenu *)menu item:(REMenuItem*) item hasSubtitle:(BOOL)hasSubtitle;
-
-@end

+ 0 - 240
iOSClient/Library/REMenu/REMenuItemView.m

@@ -1,240 +0,0 @@
-//
-// REMenuItemView.m
-// REMenu
-//
-// Copyright (c) 2013 Roman Efimov (https://github.com/romaonthego)
-//
-// 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 "REMenuItemView.h"
-#import "REMenuItem.h"
-
-@interface REMenuItemView ()
-
-@property (strong, readwrite, nonatomic) UIView *backgroundView;
-
-@end
-
-@implementation REMenuItemView
-
-- (id)initWithFrame:(CGRect)frame menu:(REMenu *)menu item:(REMenuItem*) item hasSubtitle:(BOOL)hasSubtitle
-{
-    self = [super initWithFrame:frame];
-    if (self) {
-        self.menu = menu;
-        self.item = item;
-        self.isAccessibilityElement = YES;
-        self.accessibilityTraits = UIAccessibilityTraitButton;
-        self.accessibilityHint = NSLocalizedString(@"Double tap to choose", @"Double tap to choose");
-        
-        _backgroundView = ({
-            UIView *view = [[UIView alloc] initWithFrame:self.bounds];
-            view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
-            if (menu.liveBlur && REUIKitIsFlatMode())
-                view.alpha = 0.5f;
-            view;
-        });
-        [self addSubview:_backgroundView];
-        
-        
-        CGRect titleFrame;
-        if (hasSubtitle) {
-            // Dividing lines at 1/1.725 (vs 1/2.000) results in labels about 28-top 20-bottom or 60/40 title/subtitle (for a 48 frame height)
-            //
-            titleFrame = CGRectMake(self.item.textOffset.width == 0.0 && self.item.textOffset.height == 0.0 ? self.menu.textOffset.width : self.item.textOffset.width, self.item.textOffset.width == 0.0 && self.item.textOffset.height == 0.0 ? self.menu.textOffset.height : self.item.textOffset.height, 0, floorf(frame.size.height / 1.725));
-
-            CGRect subtitleFrame = CGRectMake(self.item.subtitleTextOffset.width == 0.0 && self.item.subtitleTextOffset.height == 0.0 ? self.menu.subtitleTextOffset.width : self.item.subtitleTextOffset.width, (self.item.subtitleTextOffset.width == 0.0 && self.item.subtitleTextOffset.height == 0.0 ? self.menu.subtitleTextOffset.height : self.item.subtitleTextOffset.height) + titleFrame.size.height, 0, floorf(frame.size.height * (1.0 - 1.0 / 1.725)));
-            self.subtitleLabel = ({
-                UILabel *label =[[UILabel alloc] initWithFrame:subtitleFrame];
-                label.contentMode = UIViewContentModeCenter;
-                label.textAlignment = (NSInteger)self.item.subtitleTextAlignment == -1 ? self.menu.subtitleTextAlignment : self.item.subtitleTextAlignment;
-                label.backgroundColor = [UIColor clearColor];
-                label.autoresizingMask = UIViewAutoresizingFlexibleWidth;
-                label.isAccessibilityElement = NO;
-                label;
-            });
-            [self addSubview:_subtitleLabel];
-        } else {
-            titleFrame = CGRectMake(self.item.textOffset.width == 0.0 && self.item.textOffset.height == 0.0 ? self.menu.textOffset.width : self.item.textOffset.width, self.item.textOffset.width == 0.0 && self.item.textOffset.height == 0.0 ? self.menu.textOffset.height : self.item.textOffset.height, 0, frame.size.height);
-        }
-
-        _titleLabel = ({
-            UILabel *label = [[UILabel alloc] initWithFrame:titleFrame];
-            label.isAccessibilityElement = NO;
-            label.contentMode = UIViewContentModeCenter;
-            label.textAlignment = (NSInteger)self.item.textAlignment == -1 ? self.menu.textAlignment : self.item.subtitleTextAlignment;
-            label.backgroundColor = [UIColor clearColor];
-            label.autoresizingMask = UIViewAutoresizingFlexibleWidth;
-            label;
-        });
-
-        _imageView = [[UIImageView alloc] initWithFrame:CGRectNull];
-        
-        _badgeLabel = ({
-            UILabel *label = [[UILabel alloc] init];
-            label.backgroundColor = [UIColor colorWithWhite:0.559 alpha:1.000];
-            label.font = [UIFont systemFontOfSize:11];
-            label.textAlignment = NSTextAlignmentCenter;
-            label.textColor = [UIColor whiteColor];
-            label.hidden = YES;
-            label.layer.cornerRadius = 4.0;
-            label.layer.borderColor =  [UIColor colorWithWhite:0.630 alpha:1.000].CGColor;
-            label.layer.borderWidth = 1.0;
-            label.layer.masksToBounds = YES;
-            label;
-        });
-        
-        [self addSubview:_titleLabel];
-        [self addSubview:_imageView];
-        [self addSubview:_badgeLabel];
-    }
-    return self;
-}
-
-- (void)layoutSubviews
-{
-    [super layoutSubviews];
-    
-    self.imageView.image = self.item.image;
-    
-    // Adjust frames
-    //
-    CGFloat verticalOffset = floor((self.frame.size.height - self.item.image.size.height) / 2.0);
-    CGFloat horizontalOffset = floor((self.menu.itemHeight - self.item.image.size.height) / 2.0);
-    CGFloat x = (self.menu.imageAlignment == REMenuImageAlignmentLeft) ? horizontalOffset + self.menu.imageOffset.width :
-                                                                         self.titleLabel.frame.size.width - (horizontalOffset + self.menu.imageOffset.width + self.item.image.size.width);
-    self.imageView.frame = CGRectMake(x, verticalOffset + self.menu.imageOffset.height, self.item.image.size.width, self.item.image.size.height);
-    if ([self.imageView respondsToSelector:@selector(setTintColor:)]) {
-        self.imageView.tintColor = self.menu.imageTintColor;
-    }
-    
-    // Set up badge
-    //
-    self.badgeLabel.hidden = !self.item.badge;
-    if (self.item.badge) {
-        self.badgeLabel.text = self.item.badge;
-        NSAttributedString *badgeAttributedString = [[NSAttributedString alloc] initWithString:self.item.badge
-                                                                                    attributes:@{NSFontAttributeName:self.badgeLabel.font}];
-        CGRect rect = [badgeAttributedString boundingRectWithSize:CGSizeMake(CGRectGetMaxX(self.frame), CGRectGetMaxY(self.frame))
-                                                          options:NSStringDrawingUsesLineFragmentOrigin
-                                                          context:nil];
-        CGFloat x = self.menu.imageAlignment == REMenuImageAlignmentLeft ? CGRectGetMaxX(self.imageView.frame) - 2.0 :
-        CGRectGetMinX(self.imageView.frame) - rect.size.height - 4.0;
-        self.badgeLabel.frame = CGRectMake(x, self.imageView.frame.origin.y - 2.0, rect.size.width + 6.0, rect.size.height + 2.0);
-       
-        if (self.menu.badgeLabelConfigurationBlock)
-            self.menu.badgeLabelConfigurationBlock(self.badgeLabel, self.item);
-    }
-    
-    // Accessibility
-    //
-    self.accessibilityLabel = self.item.title;
-    if (self.subtitleLabel.text)
-        self.accessibilityLabel = [NSString stringWithFormat:@"%@, %@", self.item.title, self.item.subtitle];
-    
-    // Adjust styles
-    //
-    self.backgroundView.backgroundColor = self.item.backgroundColor == nil ? [UIColor clearColor] : self.item.backgroundColor;
-    self.titleLabel.font = self.item.font == nil ? self.menu.font : self.item.font;
-    self.titleLabel.text = self.item.title;
-    self.titleLabel.textColor = self.item.textColor == nil ? self.menu.textColor : self.item.textColor;
-    self.titleLabel.shadowColor = self.item.textShadowColor ? self.menu.textShadowColor : self.item.textShadowColor;
-    self.titleLabel.shadowOffset = self.item.textShadowOffset.width == 0 && self.item.textShadowOffset.height == 0 ? self.menu.textShadowOffset : self.item.textShadowOffset;
-    self.titleLabel.textAlignment = (NSInteger)self.item.textAlignment == -1 ? self.menu.textAlignment : self.item.textAlignment;
-    self.subtitleLabel.font = self.item.subtitleFont == nil ? self.menu.subtitleFont : self.item.subtitleFont;
-    self.subtitleLabel.text = self.item.subtitle;
-    self.subtitleLabel.textColor = self.item.subtitleTextColor == nil ? self.menu.subtitleTextColor : self.item.subtitleTextColor;
-    self.subtitleLabel.shadowColor = self.item.subtitleTextShadowColor == nil ? self.menu.subtitleTextShadowColor : self.item.subtitleTextShadowColor;
-    self.subtitleLabel.shadowOffset = self.item.subtitleTextShadowOffset.width == 0 && self.item.subtitleTextShadowOffset.height == 0 ? self.menu.subtitleTextShadowOffset : self.item.subtitleTextShadowOffset;
-    self.subtitleLabel.textAlignment = (NSInteger)self.item.subtitleTextAlignment == -1 ? self.menu.subtitleTextAlignment : self.item.subtitleTextAlignment;
-    
-    self.item.customView.frame = CGRectMake(0, 0, self.titleLabel.frame.size.width, self.frame.size.height);
-}
-
-- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
-{
-    self.backgroundView.backgroundColor = self.item.highlightedBackgroundColor == nil ? self.menu.highlightedBackgroundColor : self.item.highlightedBackgroundColor;
-    self.separatorView.backgroundColor = self.item.highlightedSeparatorColor == nil ? self.menu.highlightedSeparatorColor : self.item.highlightedSeparatorColor;
-    self.imageView.image = self.item.highlightedImage ? self.item.highlightedImage : self.item.image;
-    if ([self.imageView respondsToSelector:@selector(setTintColor:)]) {
-        self.imageView.tintColor = self.menu.highlightedImageTintColor;
-    }
-    self.titleLabel.textColor = self.item.highlightedTextColor == nil ? self.menu.highlightedTextColor : self.item.highlightedTextColor;
-    self.titleLabel.shadowColor = self.item.highlightedTextShadowColor == nil ? self.menu.highlightedTextShadowColor : self.item.highlightedTextShadowColor;
-    self.titleLabel.shadowOffset = self.item.highlightedTextShadowOffset.width == 0 && self.item.highlightedTextShadowOffset.height == 0 ? self.menu.highlightedTextShadowOffset : self.item.highlightedTextShadowOffset;
-    self.subtitleLabel.textColor = self.item.subtitleHighlightedTextColor == nil ? self.menu.subtitleHighlightedTextColor : self.item.subtitleHighlightedTextColor;
-    self.subtitleLabel.shadowColor = self.item.subtitleHighlightedTextShadowColor == nil ? self.menu.subtitleHighlightedTextShadowColor : self.item.subtitleHighlightedTextShadowColor;
-    self.subtitleLabel.shadowOffset = self.item.subtitleHighlightedTextShadowOffset.width == 0 && self.item.subtitleHighlightedTextShadowOffset.height == 0 ? self.menu.subtitleHighlightedTextShadowOffset : self.item.subtitleHighlightedTextShadowOffset;
-}
-
-- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
-{
-    self.backgroundView.backgroundColor = self.item.backgroundColor == nil ? [UIColor clearColor] : self.item.backgroundColor;
-    self.separatorView.backgroundColor = self.menu.separatorColor;
-    self.imageView.image = self.item.image;
-    if ([self.imageView respondsToSelector:@selector(setTintColor:)]) {
-        self.imageView.tintColor = self.menu.imageTintColor;
-    }
-    self.titleLabel.textColor = self.item.textColor == nil ? self.menu.textColor : self.item.textColor;
-    self.titleLabel.shadowColor = self.item.textShadowColor == nil ?self.menu.textShadowColor : self.item.textShadowColor;
-    self.titleLabel.shadowOffset = self.item.textShadowOffset.width == 0  && self.item.textShadowOffset.height == 0 ? self.menu.textShadowOffset : self.item.textShadowOffset;
-    self.subtitleLabel.textColor = self.item.subtitleTextColor == nil ? self.menu.subtitleTextColor : self.item.subtitleTextColor;
-    self.subtitleLabel.shadowColor = self.item.subtitleTextShadowColor == nil ? self.menu.subtitleTextShadowColor : self.item.subtitleTextShadowColor;
-    self.subtitleLabel.shadowOffset = self.item.subtitleTextShadowOffset.width == 0 && self.item.subtitleTextShadowOffset.height == 0 ? self.menu.subtitleTextShadowOffset : self.item.subtitleTextShadowOffset;
-}
-
-- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
-{
-    self.backgroundView.backgroundColor = self.item.backgroundColor == nil ? [UIColor clearColor] : self.item.backgroundColor;
-    self.separatorView.backgroundColor = self.item.separatorColor == nil ? self.menu.separatorColor : self.item.separatorColor;
-    self.imageView.image = self.item.image;
-    if ([self.imageView respondsToSelector:@selector(setTintColor:)]) {
-        self.imageView.tintColor = self.menu.imageTintColor;
-    }
-    self.titleLabel.textColor = self.item.textColor == nil ? self.menu.textColor : self.item.textColor;
-    self.titleLabel.shadowColor = self.item.textShadowColor == nil ? self.menu.textShadowColor : self.item.textShadowColor;
-    self.titleLabel.shadowOffset = self.item.textShadowOffset.width == 0 && self.item.textShadowOffset.height ? self.menu.textShadowOffset : self.item.textShadowOffset;
-    self.subtitleLabel.textColor = self.item.subtitleTextColor == nil ? self.menu.subtitleTextColor : self.item.subtitleTextColor;
-    self.subtitleLabel.shadowColor = self.menu.subtitleTextShadowColor == nil ? self.menu.subtitleTextShadowColor : self.item.subtitleTextShadowColor;
-    self.subtitleLabel.shadowOffset = self.item.subtitleTextShadowOffset.width == 0 && self.item.subtitleTextShadowOffset.height == 0 ? self.menu.subtitleTextShadowOffset : self.item.subtitleTextShadowOffset;
-
-    CGPoint endedPoint = [touches.anyObject locationInView:self];
-    if (endedPoint.y < 0 || endedPoint.y > CGRectGetHeight(self.bounds))
-        return;
-    
-    if (!self.menu.closeOnSelection) {
-        if (self.item.action)
-            self.item.action(self.item);
-    } else {
-        if (self.item.action) {
-            if (self.menu.waitUntilAnimationIsComplete) {
-                __typeof (&*self) __weak weakSelf = self;
-                [self.menu closeWithCompletion:^{
-                    weakSelf.item.action(weakSelf.item);
-                }];
-            } else {
-                [self.menu close];
-                self.item.action(self.item);
-            }
-        }
-    }
-}
-
-@end

+ 0 - 1
iOSClient/Main/CCMain.h

@@ -59,7 +59,6 @@
 @property (nonatomic, strong) NSString *richWorkspaceText;
 @property (nonatomic, strong) NSString *richWorkspaceText;
 @property (nonatomic, weak) CCDetail *detailViewController;
 @property (nonatomic, weak) CCDetail *detailViewController;
 @property (nonatomic, strong) UISearchController *searchController;
 @property (nonatomic, strong) UISearchController *searchController;
-@property (nonatomic, strong) UIView *reMenuBackgroundView;
 @property (nonatomic, strong) UITapGestureRecognizer *singleFingerTap;
 @property (nonatomic, strong) UITapGestureRecognizer *singleFingerTap;
 @property (nonatomic, strong) NSString *blinkFileNamePath;
 @property (nonatomic, strong) NSString *blinkFileNamePath;
 @property (nonatomic, readonly, strong) UIImage *cellFavouriteImage;
 @property (nonatomic, readonly, strong) UIImage *cellFavouriteImage;

+ 19 - 18
iOSClient/Main/CCMain.m

@@ -181,10 +181,6 @@
         [self registerForPreviewingWithDelegate:self sourceView:self.view];
         [self registerForPreviewingWithDelegate:self sourceView:self.view];
     }
     }
 
 
-    // reMenu Background
-    _reMenuBackgroundView = [UIView new];
-    _reMenuBackgroundView.backgroundColor = [UIColor colorWithWhite:0 alpha:0.5];
-    
     // if this is not Main (the Main uses inizializeMain)
     // if this is not Main (the Main uses inizializeMain)
     if (_isRoot == NO && appDelegate.activeAccount.length > 0) {
     if (_isRoot == NO && appDelegate.activeAccount.length > 0) {
         // Read (File) Folder
         // Read (File) Folder
@@ -653,7 +649,7 @@
     buttonMore = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"navigationSort"] style:UIBarButtonItemStylePlain target:self action:@selector(toggleReMainMenu)];
     buttonMore = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"navigationSort"] style:UIBarButtonItemStylePlain target:self action:@selector(toggleReMainMenu)];
     buttonMore.enabled = true;
     buttonMore.enabled = true;
     
     
-    buttonSelect = [[UIBarButtonItem alloc] initWithImage:[CCGraphics changeThemingColorImage:[UIImage imageNamed:@"select"] width:50 height:50 color:NCBrandColor.sharedInstance.textView] style:UIBarButtonItemStylePlain target:self action:@selector(tableViewSelect)];
+    buttonSelect = [[UIBarButtonItem alloc] initWithImage:[CCGraphics changeThemingColorImage:[UIImage imageNamed:@"select"] width:50 height:50 color:NCBrandColor.sharedInstance.textView] style:UIBarButtonItemStylePlain target:self action:@selector(tableViewToggle)];
     buttonSelect.enabled = true;
     buttonSelect.enabled = true;
     
     
     // <
     // <
@@ -688,7 +684,7 @@
 
 
 - (void)cancelSelect
 - (void)cancelSelect
 {
 {
-    [self tableViewSelect];
+    [self tableViewSelect:false];
 }
 }
 
 
 #pragma --------------------------------------------------------------------------------------------
 #pragma --------------------------------------------------------------------------------------------
@@ -916,7 +912,7 @@
         [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:self.serverUrl ocId:nil action:k_action_NULL];
         [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:self.serverUrl ocId:nil action:k_action_NULL];
     });
     });
     
     
-    [self tableViewSelect];
+    [self tableViewSelect:false];
 }
 }
 
 
 #pragma --------------------------------------------------------------------------------------------
 #pragma --------------------------------------------------------------------------------------------
@@ -1005,7 +1001,7 @@
         [_hud hideHud];
         [_hud hideHud];
     });
     });
     
     
-    [self tableViewSelect];
+    [self tableViewSelect:false];
 }
 }
 
 
 #pragma --------------------------------------------------------------------------------------------
 #pragma --------------------------------------------------------------------------------------------
@@ -1444,7 +1440,7 @@
     }];
     }];
     
     
     // End Select Table View
     // End Select Table View
-    [self tableViewSelect];
+    [self tableViewSelect:false];
 }
 }
 
 
 #pragma --------------------------------------------------------------------------------------------
 #pragma --------------------------------------------------------------------------------------------
@@ -1606,8 +1602,8 @@
             [self presentViewController:alert animated:YES completion:nil];
             [self presentViewController:alert animated:YES completion:nil];
             
             
             // End Select Table View
             // End Select Table View
-            [self tableViewSelect];
-            
+            [self tableViewSelect:false];
+
             // reload Datasource
             // reload Datasource
             [self readFileReloadFolder];
             [self readFileReloadFolder];
             
             
@@ -1645,8 +1641,8 @@
                         } else {
                         } else {
                             
                             
                             // End Select Table View
                             // End Select Table View
-                            [self tableViewSelect];
-                            
+                            [self tableViewSelect:false];
+
                             // reload Datasource
                             // reload Datasource
                             if (self.searchController.isActive)
                             if (self.searchController.isActive)
                                 [self readFolder:metadata.serverUrl];
                                 [self readFolder:metadata.serverUrl];
@@ -1659,8 +1655,8 @@
                         [[NCContentPresenter shared] messageNotification:@"_move_" description:message delay:k_dismissAfterSecond type:messageTypeError errorCode:errorCode];
                         [[NCContentPresenter shared] messageNotification:@"_move_" description:message delay:k_dismissAfterSecond type:messageTypeError errorCode:errorCode];
                         
                         
                         // End Select Table View
                         // End Select Table View
-                        [self tableViewSelect];
-                        
+                        [self tableViewSelect:false];
+
                         // reload Datasource
                         // reload Datasource
                         if (self.searchController.isActive)
                         if (self.searchController.isActive)
                             [self readFolder:metadata.serverUrl];
                             [self readFolder:metadata.serverUrl];
@@ -2344,7 +2340,7 @@
         }
         }
     }
     }
     
     
-    [self tableViewSelect];
+    [self tableViewSelect:false];
 }
 }
 
 
 - (void)copyFileToPasteboard:(tableMetadata *)metadata
 - (void)copyFileToPasteboard:(tableMetadata *)metadata
@@ -2851,9 +2847,14 @@
 #pragma mark - ==== Table ==== 
 #pragma mark - ==== Table ==== 
 #pragma --------------------------------------------------------------------------------------------
 #pragma --------------------------------------------------------------------------------------------
 
 
-- (void)tableViewSelect
+- (void)tableViewToggle
+{
+    [self tableViewSelect:!_isSelectedMode];
+}
+
+- (void)tableViewSelect:(BOOL)toggle
 {
 {
-    _isSelectedMode = !_isSelectedMode;
+    _isSelectedMode = toggle;
     // chiudiamo eventuali swipe aperti
     // chiudiamo eventuali swipe aperti
     if (_isSelectedMode)
     if (_isSelectedMode)
         [self.tableView setEditing:NO animated:NO];
         [self.tableView setEditing:NO animated:NO];

+ 2 - 2
iOSClient/Main/Menu/AppDelegate+Menu.swift

@@ -6,7 +6,7 @@
 //  Copyright © 2020 Philippe Weidmann. All rights reserved.
 //  Copyright © 2020 Philippe Weidmann. All rights reserved.
 //  Copyright © 2020 Marino Faggiana All rights reserved.
 //  Copyright © 2020 Marino Faggiana All rights reserved.
 //
 //
-//  Author Philippe Weidmann
+//  Author Philippe Weidmann <philippe.weidmann@infomaniak.com>
 //  Author Marino Faggiana <marino.faggiana@nextcloud.com>
 //  Author Marino Faggiana <marino.faggiana@nextcloud.com>
 //
 //
 //  This program is free software: you can redistribute it and/or modify
 //  This program is free software: you can redistribute it and/or modify
@@ -291,7 +291,7 @@ extension AppDelegate {
         mainMenuViewController.actions = self.initMenu()
         mainMenuViewController.actions = self.initMenu()
 
 
         let menuPanelController = NCMenuPanelController()
         let menuPanelController = NCMenuPanelController()
-        menuPanelController.panelWidth = Int(viewController.view.frame.width)
+        menuPanelController.parentPresenter = viewController
         menuPanelController.delegate = mainMenuViewController
         menuPanelController.delegate = mainMenuViewController
         menuPanelController.set(contentViewController: mainMenuViewController)
         menuPanelController.set(contentViewController: mainMenuViewController)
         menuPanelController.track(scrollView: mainMenuViewController.tableView)
         menuPanelController.track(scrollView: mainMenuViewController.tableView)

+ 1 - 1
iOSClient/Main/Menu/CCFavorites+Menu.swift

@@ -97,7 +97,7 @@ extension CCFavorites {
         mainMenuViewController.actions = self.initMoreMenu(indexPath: indexPath, metadata: metadata)
         mainMenuViewController.actions = self.initMoreMenu(indexPath: indexPath, metadata: metadata)
 
 
         let menuPanelController = NCMenuPanelController()
         let menuPanelController = NCMenuPanelController()
-        menuPanelController.panelWidth = Int(viewController.view.frame.width)
+        menuPanelController.parentPresenter = viewController
         menuPanelController.delegate = mainMenuViewController
         menuPanelController.delegate = mainMenuViewController
         menuPanelController.set(contentViewController: mainMenuViewController)
         menuPanelController.set(contentViewController: mainMenuViewController)
         menuPanelController.track(scrollView: mainMenuViewController.tableView)
         menuPanelController.track(scrollView: mainMenuViewController.tableView)

+ 4 - 4
iOSClient/Main/Menu/CCMain+Menu.swift

@@ -6,7 +6,7 @@
 //  Copyright © 2020 Philippe Weidmann. All rights reserved.
 //  Copyright © 2020 Philippe Weidmann. All rights reserved.
 //  Copyright © 2020 Marino Faggiana All rights reserved.
 //  Copyright © 2020 Marino Faggiana All rights reserved.
 //
 //
-//  Author Philippe Weidmann
+//  Author Philippe Weidmann <philippe.weidmann@infomaniak.com>
 //  Author Marino Faggiana <marino.faggiana@nextcloud.com>
 //  Author Marino Faggiana <marino.faggiana@nextcloud.com>
 //
 //
 //  This program is free software: you can redistribute it and/or modify
 //  This program is free software: you can redistribute it and/or modify
@@ -114,7 +114,7 @@ extension CCMain {
         mainMenuViewController.actions = self.initSortMenu()
         mainMenuViewController.actions = self.initSortMenu()
 
 
         let menuPanelController = NCMenuPanelController()
         let menuPanelController = NCMenuPanelController()
-        menuPanelController.panelWidth = Int(viewController.view.frame.width)
+        menuPanelController.parentPresenter = viewController
         menuPanelController.delegate = mainMenuViewController
         menuPanelController.delegate = mainMenuViewController
         menuPanelController.set(contentViewController: mainMenuViewController)
         menuPanelController.set(contentViewController: mainMenuViewController)
         menuPanelController.track(scrollView: mainMenuViewController.tableView)
         menuPanelController.track(scrollView: mainMenuViewController.tableView)
@@ -127,7 +127,7 @@ extension CCMain {
         mainMenuViewController.actions = self.initSelectMenu()
         mainMenuViewController.actions = self.initSelectMenu()
 
 
         let menuPanelController = NCMenuPanelController()
         let menuPanelController = NCMenuPanelController()
-        menuPanelController.panelWidth = Int(viewController.view.frame.width)
+        menuPanelController.parentPresenter = viewController
         menuPanelController.delegate = mainMenuViewController
         menuPanelController.delegate = mainMenuViewController
         menuPanelController.set(contentViewController: mainMenuViewController)
         menuPanelController.set(contentViewController: mainMenuViewController)
         menuPanelController.track(scrollView: mainMenuViewController.tableView)
         menuPanelController.track(scrollView: mainMenuViewController.tableView)
@@ -527,7 +527,7 @@ extension CCMain {
         mainMenuViewController.actions = self.initMoreMenu(indexPath: indexPath, metadata: metadata, metadataFolder: metadataFolder)
         mainMenuViewController.actions = self.initMoreMenu(indexPath: indexPath, metadata: metadata, metadataFolder: metadataFolder)
 
 
         let menuPanelController = NCMenuPanelController()
         let menuPanelController = NCMenuPanelController()
-        menuPanelController.panelWidth = Int(viewController.view.frame.width)
+        menuPanelController.parentPresenter = viewController
         menuPanelController.delegate = mainMenuViewController
         menuPanelController.delegate = mainMenuViewController
         menuPanelController.set(contentViewController: mainMenuViewController)
         menuPanelController.set(contentViewController: mainMenuViewController)
         menuPanelController.track(scrollView: mainMenuViewController.tableView)
         menuPanelController.track(scrollView: mainMenuViewController.tableView)

+ 1 - 1
iOSClient/Main/Menu/NCMainMenuTableViewController.swift

@@ -6,7 +6,7 @@
 //  Copyright © 2020 Philippe Weidmann. All rights reserved.
 //  Copyright © 2020 Philippe Weidmann. All rights reserved.
 //  Copyright © 2020 Marino Faggiana All rights reserved.
 //  Copyright © 2020 Marino Faggiana All rights reserved.
 //
 //
-//  Author Philippe Weidmann
+//  Author Philippe Weidmann <philippe.weidmann@infomaniak.com>
 //  Author Marino Faggiana <marino.faggiana@nextcloud.com>
 //  Author Marino Faggiana <marino.faggiana@nextcloud.com>
 //
 //
 //  This program is free software: you can redistribute it and/or modify
 //  This program is free software: you can redistribute it and/or modify

+ 3 - 3
iOSClient/Main/Menu/NCMenu.storyboard

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15702" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15705" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
     <device id="retina6_1" orientation="portrait" appearance="light"/>
     <device id="retina6_1" orientation="portrait" appearance="light"/>
     <dependencies>
     <dependencies>
         <deployment identifier="iOS"/>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15704"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15706"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     </dependencies>
     <scenes>
     <scenes>
@@ -11,7 +11,7 @@
         <scene sceneID="ibU-BJ-tlj">
         <scene sceneID="ibU-BJ-tlj">
             <objects>
             <objects>
                 <tableViewController storyboardIdentifier="NCMainMenuTableViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="dbT-V0-aXb" customClass="NCMainMenuTableViewController" customModule="Nextcloud" customModuleProvider="target" sceneMemberID="viewController">
                 <tableViewController storyboardIdentifier="NCMainMenuTableViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="dbT-V0-aXb" customClass="NCMainMenuTableViewController" customModule="Nextcloud" customModuleProvider="target" sceneMemberID="viewController">
-                    <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" bounces="NO" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="60" estimatedRowHeight="-1" sectionHeaderHeight="28" sectionFooterHeight="28" id="pvY-CD-sI6">
+                    <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" bounces="NO" alwaysBounceVertical="YES" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="60" estimatedRowHeight="-1" sectionHeaderHeight="28" sectionFooterHeight="28" id="pvY-CD-sI6">
                         <rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
                         <rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
                         <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>

+ 1 - 1
iOSClient/Main/Menu/NCMenuAction.swift

@@ -6,7 +6,7 @@
 //  Copyright © 2020 Philippe Weidmann. All rights reserved.
 //  Copyright © 2020 Philippe Weidmann. All rights reserved.
 //  Copyright © 2020 Marino Faggiana All rights reserved.
 //  Copyright © 2020 Marino Faggiana All rights reserved.
 //
 //
-//  Author Philippe Weidmann
+//  Author Philippe Weidmann <philippe.weidmann@infomaniak.com>
 //  Author Marino Faggiana <marino.faggiana@nextcloud.com>
 //  Author Marino Faggiana <marino.faggiana@nextcloud.com>
 //
 //
 //  This program is free software: you can redistribute it and/or modify
 //  This program is free software: you can redistribute it and/or modify

+ 13 - 11
iOSClient/Main/Menu/NCMenuPanelController.swift

@@ -6,7 +6,7 @@
 //  Copyright © 2020 Philippe Weidmann. All rights reserved.
 //  Copyright © 2020 Philippe Weidmann. All rights reserved.
 //  Copyright © 2020 Marino Faggiana All rights reserved.
 //  Copyright © 2020 Marino Faggiana All rights reserved.
 //
 //
-//  Author Philippe Weidmann
+//  Author Philippe Weidmann <philippe.weidmann@infomaniak.com>
 //  Author Marino Faggiana <marino.faggiana@nextcloud.com>
 //  Author Marino Faggiana <marino.faggiana@nextcloud.com>
 //
 //
 //  This program is free software: you can redistribute it and/or modify
 //  This program is free software: you can redistribute it and/or modify
@@ -27,11 +27,11 @@ import FloatingPanel
 
 
 class NCMenuPanelController: FloatingPanelController {
 class NCMenuPanelController: FloatingPanelController {
 
 
-    var panelWidth: Int? = 0
-    
+    var parentPresenter: UIViewController?
+
     override func viewDidLoad() {
     override func viewDidLoad() {
         super.viewDidLoad()
         super.viewDidLoad()
-                
+
         self.surfaceView.grabberHandle.isHidden = true
         self.surfaceView.grabberHandle.isHidden = true
         self.isRemovalInteractionEnabled = true
         self.isRemovalInteractionEnabled = true
         if #available(iOS 11, *) {
         if #available(iOS 11, *) {
@@ -40,13 +40,15 @@ class NCMenuPanelController: FloatingPanelController {
             self.surfaceView.cornerRadius = 0
             self.surfaceView.cornerRadius = 0
         }
         }
     }
     }
-    
-    override func viewWillLayoutSubviews() {
-        super.viewWillLayoutSubviews()
-        
-        if let width = panelWidth {
-            self.view.frame = CGRect(x: 0, y: 0, width: width, height: Int(self.view.frame.height))
+
+    override func viewDidLayoutSubviews() {
+        super.viewDidLayoutSubviews()
+        if let presenter = parentPresenter {
+            self.view.frame = presenter.view.frame
         }
         }
     }
     }
-    
+
+    override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
+        self.dismiss(animated: true, completion: nil)
+    }
 }
 }