├── .gitignore ├── CydiaHeader.h ├── IMG_0079.PNG ├── IMG_0742.PNG ├── LICENSE ├── Makefile ├── SwipeActionController.h ├── SwipeActionController.m ├── SwipeForMore.plist ├── Tweak.xm ├── control └── layout └── Library └── PreferenceLoader └── Preferences └── SwipeForMore ├── SFM.png ├── SFM@2x.png ├── SFM@3x.png └── SwipeForMore.plist /.gitignore: -------------------------------------------------------------------------------- 1 | .theos 2 | obj 3 | packages 4 | .DS_Store 5 | -------------------------------------------------------------------------------- /CydiaHeader.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface Database : NSObject 4 | + (instancetype)sharedInstance; 5 | @end 6 | 7 | @interface Package : NSObject 8 | - (NSString *)id; 9 | - (NSString *)name; 10 | - (NSString *)latest; 11 | - (NSString *)installed; 12 | - (NSString *)mode; 13 | - (NSArray *)downgrades; 14 | - (BOOL)uninstalled; 15 | - (BOOL)upgradableAndEssential:(BOOL)essential; 16 | - (BOOL)essential; 17 | - (BOOL)broken; 18 | - (BOOL)unfiltered; 19 | - (BOOL)visible; 20 | - (BOOL)half; 21 | - (BOOL)halfConfigured; 22 | - (BOOL)halfInstalled; 23 | - (BOOL)hasMode; 24 | - (bool)isCommercial; 25 | @end 26 | 27 | @interface CyteApplication : UIApplication 28 | @end 29 | 30 | @interface CyteViewController : UIViewController 31 | @end 32 | 33 | @interface CyteListController : CyteViewController 34 | @end 35 | 36 | @interface CyteWebViewController : CyteViewController 37 | @end 38 | 39 | @interface CYPackageController : NSObject 40 | @end 41 | 42 | @interface CydiaWebViewController : CyteWebViewController 43 | @end 44 | 45 | @protocol ConfirmationControllerDelegate 46 | - (void)cancelAndClear:(bool)clear; 47 | - (void)confirmWithNavigationController:(UINavigationController *)navigation; 48 | - (void)queue; 49 | @end 50 | 51 | @interface ConfirmationController : CydiaWebViewController 52 | @end 53 | 54 | @interface PackageListController : CyteListController 55 | - (Package *)packageAtIndexPath:(NSIndexPath *)path; 56 | - (void)didSelectPackage:(Package *)package; 57 | @end 58 | 59 | @interface FilteredPackageListController : PackageListController 60 | @end 61 | 62 | @interface ProgressController : CydiaWebViewController 63 | @end 64 | 65 | @protocol CydiaDelegate 66 | - (void)returnToCydia; 67 | - (void)saveState; 68 | - (void)retainNetworkActivityIndicator; 69 | - (void)releaseNetworkActivityIndicator; 70 | - (void)clearPackage:(Package *)package; 71 | - (void)installPackage:(Package *)package; 72 | - (void)installPackages:(NSArray *)packages; 73 | - (void)removePackage:(Package *)package; 74 | - (void)beginUpdate; 75 | - (BOOL)updating; 76 | - (bool)requestUpdate; 77 | - (void)distUpgrade; 78 | - (void)loadData; 79 | - (void)updateData; 80 | - (void)_saveConfig; 81 | - (void)syncData; 82 | - (void)addSource:(NSDictionary *)source; 83 | - (BOOL)addTrivialSource:(NSString *)href; 84 | - (void)reloadDataWithInvocation:(NSInvocation *)invocation; 85 | @end 86 | 87 | @interface Cydia : CyteApplication 88 | @end 89 | -------------------------------------------------------------------------------- /IMG_0079.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoomSmart/SwipeForMore/036d9653eca6d71808c04e02ec46f5c6100b70b4/IMG_0079.PNG -------------------------------------------------------------------------------- /IMG_0742.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoomSmart/SwipeForMore/036d9653eca6d71808c04e02ec46f5c6100b70b4/IMG_0742.PNG -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2015 - 2025 PoomSmart 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | TAGET = iphone:clang:latest:8.0 2 | ARCHS = armv7 arm64 3 | PACKAGE_VERSION = 1.2.5 4 | INSTALL_TARGET_PROCESSES = Cydia 5 | 6 | include $(THEOS)/makefiles/common.mk 7 | 8 | TWEAK_NAME = SwipeForMore 9 | $(TWEAK_NAME)_FILES = SwipeActionController.m Tweak.xm 10 | $(TWEAK_NAME)_CFLAGS = -fobjc-arc 11 | $(TWEAK_NAME)_FRAMEWORKS = UIKit 12 | 13 | include $(THEOS_MAKE_PATH)/tweak.mk 14 | -------------------------------------------------------------------------------- /SwipeActionController.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface SwipeActionController : NSObject 4 | + (instancetype)sharedInstance; 5 | @property (assign) BOOL dismissAfterProgress; 6 | @property (assign) BOOL dismissAsQueue; 7 | @property (assign) BOOL fromSwipeAction; 8 | @property (assign) BOOL fromProgressInvoke; 9 | @property (assign) BOOL autoClickDowngrade; 10 | @property (assign) BOOL autoClickBuy; 11 | 12 | @property (assign) BOOL shortLabel; 13 | @property (assign) BOOL autoDismissWhenQueue; 14 | @property (assign) BOOL autoPerform; 15 | @property (assign) BOOL suppressCC; 16 | 17 | - (NSString *)installString; 18 | - (NSString *)reinstallString; 19 | - (NSString *)upgradeString; 20 | - (NSString *)removeString; 21 | - (NSString *)queueString; 22 | - (NSString *)clearString; 23 | - (NSString *)downgradeString; 24 | - (NSString *)buyString; 25 | - (NSString *)normalizedString:(NSString *)string; 26 | - (NSString *)queueString:(NSString *)action; 27 | @end 28 | -------------------------------------------------------------------------------- /SwipeActionController.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import "SwipeActionController.h" 3 | 4 | #define UCLocalize(key) [[NSBundle mainBundle] localizedStringForKey:@key value:nil table:nil] 5 | 6 | @implementation SwipeActionController 7 | 8 | + (instancetype)sharedInstance { 9 | static dispatch_once_t p = 0; 10 | __strong static SwipeActionController *controller = nil; 11 | dispatch_once(&p, ^{ 12 | controller = [[self alloc] init]; 13 | }); 14 | return controller; 15 | } 16 | 17 | - (NSString *)installString { 18 | if ([self shortLabel]) 19 | return IS_IOS_OR_NEWER(iOS_11_0) ? @"⤓" : @"⇩"; 20 | return UCLocalize("INSTALL"); 21 | } 22 | 23 | - (NSString *)reinstallString { 24 | return [self shortLabel] ? @"↺" : UCLocalize("REINSTALL"); 25 | } 26 | 27 | - (NSString *)upgradeString { 28 | return [self shortLabel] ? @"↑" : UCLocalize("UPGRADE"); 29 | } 30 | 31 | - (NSString *)removeString { 32 | return [self shortLabel] ? @"╳" : UCLocalize("REMOVE"); 33 | } 34 | 35 | - (NSString *)queueString { 36 | return [self shortLabel] ? @"Q" : UCLocalize("QUEUE"); 37 | } 38 | 39 | - (NSString *)clearString { 40 | return [self shortLabel] ? @"⌧" : UCLocalize("CLEAR"); 41 | } 42 | 43 | - (NSString *)downgradeString { 44 | return [self shortLabel] ? @"↓" : UCLocalize("DOWNGRADE"); 45 | } 46 | 47 | - (NSString *)buyString { 48 | return @"💳"; 49 | } 50 | 51 | - (NSString *)normalizedString:(NSString *)string { 52 | return [string stringByReplacingOccurrencesOfString:@" " withString:@"\n"]; 53 | } 54 | 55 | - (NSString *)queueString:(NSString *)action { 56 | return [NSString stringWithFormat:@"%@\n%@", [self queueString], action]; 57 | } 58 | 59 | @end 60 | -------------------------------------------------------------------------------- /SwipeForMore.plist: -------------------------------------------------------------------------------- 1 | { Filter = { Bundles = ( "com.saurik.Cydia" ); }; } 2 | -------------------------------------------------------------------------------- /Tweak.xm: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import 4 | #import 5 | #import "CydiaHeader.h" 6 | #import "SwipeActionController.h" 7 | 8 | @interface UINavigationController (Cydia) 9 | - (UIViewController *)parentOrPresentingViewController; 10 | @end 11 | 12 | static void UpdateExternalStatus(uint64_t newStatus) { 13 | int notify_token; 14 | if (notify_register_check("com.saurik.Cydia.status", ¬ify_token) == NOTIFY_STATUS_OK) { 15 | notify_set_state(notify_token, newStatus); 16 | notify_cancel(notify_token); 17 | } 18 | notify_post("com.saurik.Cydia.status"); 19 | } 20 | 21 | BOOL enabled; 22 | 23 | #define SAC [SwipeActionController sharedInstance] 24 | 25 | BOOL suppressCC = NO; 26 | 27 | CFStringRef PreferencesNotification = CFSTR("com.PS.SwipeForMore.prefs"); 28 | NSString *format = @"%@\n%@"; 29 | 30 | static void prefs() { 31 | NSDictionary *prefs = [NSDictionary dictionaryWithContentsOfFile:@"/var/mobile/Library/Preferences/com.PS.SwipeForMore.plist"]; 32 | id val = prefs[@"enabled"]; 33 | enabled = val ? [val boolValue] : YES; 34 | val = prefs[@"confirm"]; 35 | SAC.autoPerform = [val boolValue]; 36 | val = prefs[@"autoDismiss"]; 37 | SAC.autoDismissWhenQueue = val ? [val boolValue] : YES; 38 | val = prefs[@"short"]; 39 | SAC.shortLabel = val ? [val boolValue] : YES; 40 | } 41 | 42 | static void prefsChanged(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo) { 43 | prefs(); 44 | } 45 | 46 | #define cyDelegate ((Cydia *)[UIApplication sharedApplication]) 47 | 48 | CYPackageController *cy; 49 | ProgressController *pc; 50 | 51 | %hook CYPackageController 52 | 53 | - (id)initWithDatabase:(Database *)database forPackage:(Package *)package withReferrer:(id)referrer { 54 | self = %orig; 55 | cy = self; 56 | return self; 57 | } 58 | 59 | %end 60 | 61 | %hook Cydia 62 | 63 | - (bool)perform { 64 | [SAC setSuppressCC:[SAC fromSwipeAction] && [SAC dismissAsQueue]]; 65 | bool value = %orig; 66 | [SAC setSuppressCC:NO]; 67 | [SAC setFromSwipeAction:NO]; 68 | return value; 69 | } 70 | 71 | - (ProgressController *)invokeNewProgress:(NSInvocation *)invocation forController:(UINavigationController *)navigation withTitle:(NSString *)title { 72 | [SAC setFromProgressInvoke:YES]; 73 | ProgressController *cont = %orig; 74 | [SAC setFromProgressInvoke:NO]; 75 | return cont; 76 | } 77 | 78 | %end 79 | 80 | %hook ConfirmationController 81 | 82 | - (void)dismissModalViewControllerAnimated:(BOOL)animated { 83 | if ([SAC suppressCC]) 84 | return; 85 | %orig; 86 | } 87 | 88 | %end 89 | 90 | %hook CydiaTabBarController 91 | 92 | - (void)presentViewController:(UIViewController *)vc animated:(BOOL)animated completion:(void (^)(void))completion { 93 | if ([vc isKindOfClass:[UINavigationController class]]) { 94 | if ([((UINavigationController *)vc).topViewController class] == NSClassFromString(@"ConfirmationController")) { 95 | ConfirmationController *cc = (ConfirmationController *)(((UINavigationController *)vc).topViewController); 96 | NSMutableArray *issues = MSHookIvar(cc, "issues_"); 97 | if (issues.count) { 98 | // Problem detected, won't auto-dismiss here 99 | %orig; 100 | return; 101 | } 102 | if ([SAC fromSwipeAction]) { 103 | // some actions needed after package confirmation page presentation triggered by swipe actions 104 | if ([SAC dismissAsQueue]) { 105 | if (completion) 106 | completion(); 107 | [cc performSelector:@selector(_doContinue) withObject:nil afterDelay:0.06]; 108 | [SAC setDismissAsQueue:NO]; 109 | return; 110 | } 111 | void (^block)(void) = ^(void) { 112 | if (completion) 113 | completion(); 114 | else if ([SAC dismissAfterProgress]) { 115 | [cc performSelector:@selector(confirmButtonClicked) withObject:nil afterDelay:0.2]; 116 | } 117 | [SAC setFromSwipeAction:NO]; 118 | }; 119 | %orig(vc, animated, block); 120 | return; 121 | } 122 | } 123 | } 124 | %orig; 125 | } 126 | 127 | %end 128 | 129 | %hook CydiaProgressData 130 | 131 | - (void)setRunning:(bool)running { 132 | %orig; 133 | if (!running && [SAC dismissAfterProgress] && [SAC fromProgressInvoke]) { 134 | [SAC setDismissAfterProgress:NO]; 135 | uint64_t status = -1; 136 | int notify_token; 137 | if (notify_register_check("com.saurik.Cydia.status", ¬ify_token) == NOTIFY_STATUS_OK) { 138 | notify_get_state(notify_token, &status); 139 | notify_cancel(notify_token); 140 | } 141 | if (status == 0) { 142 | UpdateExternalStatus(0); 143 | [cyDelegate returnToCydia]; 144 | [[[pc navigationController] parentOrPresentingViewController] dismissViewControllerAnimated:YES completion:nil]; 145 | } 146 | } 147 | } 148 | 149 | %end 150 | 151 | %hook ProgressController 152 | 153 | - (id)initWithDatabase:(id)arg1 delegate:(id)arg2 { 154 | self = %orig; 155 | pc = self; 156 | return self; 157 | } 158 | 159 | %end 160 | 161 | %hook FilteredPackageListController 162 | 163 | %new(c@:@@) 164 | - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { 165 | return YES; 166 | } 167 | 168 | %new(@@:@@) 169 | - (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath_ { 170 | Package *package = [self packageAtIndexPath:indexPath_]; 171 | Cydia *delegate = (Cydia *)[UIApplication sharedApplication]; 172 | NSMutableArray *actions = [NSMutableArray array]; 173 | BOOL installed = ![package uninstalled]; 174 | BOOL upgradable = [package upgradableAndEssential:NO]; 175 | BOOL isQueue = [package mode] != nil; 176 | bool commercial = [package isCommercial]; 177 | if (installed) { 178 | // uninstall action 179 | UITableViewRowAction *deleteAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:[SAC removeString] handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) { 180 | [SAC setFromSwipeAction:YES]; 181 | [SAC setDismissAfterProgress:[SAC autoDismissWhenQueue]]; 182 | [delegate removePackage:package]; 183 | }]; 184 | [actions addObject:deleteAction]; 185 | } 186 | NSString *installTitle = installed ? (upgradable ? [SAC upgradeString] : [SAC reinstallString]) :(commercial ? [SAC buyString] : [SAC installString]); 187 | installTitle = [SAC normalizedString:installTitle]; // In some languages, localized "reinstall" string is too long 188 | if ((!installed || IS_IPAD || [SAC shortLabel]) && !isQueue) { 189 | // Install or reinstall or upgrade action 190 | UITableViewRowAction *installAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:installTitle handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) { 191 | [SAC setFromSwipeAction:YES]; 192 | [SAC setDismissAfterProgress:[SAC autoPerform] && (!commercial || (commercial && installed))]; 193 | if (commercial && !installed) { 194 | [self didSelectPackage:package]; 195 | [cy performSelector:@selector(customButtonClicked) withObject:nil afterDelay:1.3]; 196 | } else 197 | [delegate installPackage:package]; 198 | }]; 199 | installAction.backgroundColor = [UIColor systemBlueColor]; 200 | [actions addObject:installAction]; 201 | } 202 | if (installed && !isQueue) { 203 | // Queue reinstall action 204 | NSString *queueReinstallTitle = [SAC queueString:installTitle]; 205 | UITableViewRowAction *queueReinstallAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:queueReinstallTitle handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) { 206 | [SAC setDismissAfterProgress:NO]; 207 | [SAC setDismissAsQueue:[SAC autoDismissWhenQueue]]; 208 | [SAC setFromSwipeAction:YES]; 209 | [delegate installPackage:package]; 210 | }]; 211 | queueReinstallAction.backgroundColor = [UIColor orangeColor]; 212 | [actions addObject:queueReinstallAction]; 213 | } 214 | if (isQueue) { 215 | // Clear action 216 | UITableViewRowAction *clearAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:[SAC clearString] handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) { 217 | [SAC setDismissAfterProgress:NO]; 218 | [SAC setDismissAsQueue:YES]; 219 | [SAC setFromSwipeAction:YES]; 220 | [delegate clearPackage:package]; 221 | }]; 222 | clearAction.backgroundColor = [UIColor grayColor]; 223 | [actions addObject:clearAction]; 224 | } else { 225 | // Queue install/remove action 226 | NSString *queueTitle = [SAC queueString:(installed ? [SAC removeString] : installTitle)]; 227 | UITableViewRowAction *queueAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:queueTitle handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) { 228 | [SAC setDismissAfterProgress:NO]; 229 | [SAC setDismissAsQueue:[SAC autoDismissWhenQueue]]; 230 | [SAC setFromSwipeAction:YES]; 231 | if (installed) 232 | [delegate removePackage:package]; 233 | else 234 | [delegate installPackage:package]; 235 | }]; 236 | queueAction.backgroundColor = installed ? [UIColor systemYellowColor] : [UIColor systemGreenColor]; 237 | [actions addObject:queueAction]; 238 | } 239 | if (!isQueue) { 240 | NSArray *downgrades = [package downgrades]; 241 | if (downgrades.count) { 242 | UITableViewRowAction *downgradeAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:[SAC downgradeString] handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) { 243 | [SAC setDismissAfterProgress:NO]; 244 | [SAC setDismissAsQueue:NO]; 245 | [SAC setFromSwipeAction:YES]; 246 | [self didSelectPackage:package]; 247 | [cy performSelector:@selector(_clickButtonWithName:) withObject:@"DOWNGRADE" afterDelay:0.6]; 248 | }]; 249 | downgradeAction.backgroundColor = [UIColor purpleColor]; 250 | [actions addObject:downgradeAction]; 251 | } 252 | } 253 | return actions; 254 | } 255 | 256 | #ifdef __LP64__ 257 | %new(v@:@l@) 258 | #else 259 | %new(v@:@i@) 260 | #endif 261 | - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { 262 | [tableView setEditing:NO animated:YES]; 263 | } 264 | 265 | %end 266 | 267 | %ctor { 268 | CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), NULL, &prefsChanged, PreferencesNotification, NULL, CFNotificationSuspensionBehaviorCoalesce); 269 | prefs(); 270 | if (enabled) { 271 | %init; 272 | } 273 | } 274 | -------------------------------------------------------------------------------- /control: -------------------------------------------------------------------------------- 1 | Name: SwipeForMore 2 | Package: org.thebigboss.swipeformore 3 | Maintainer: PoomSmart 4 | Author: PoomSmart 5 | Depends: firmware (>= 8.0), mobilesubstrate, preferenceloader 6 | Section: Tweaks 7 | Version: 1.0.0 8 | Architecture: iphoneos-arm 9 | Description: Manage packages in Cydia via swipe. 10 | -------------------------------------------------------------------------------- /layout/Library/PreferenceLoader/Preferences/SwipeForMore/SFM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoomSmart/SwipeForMore/036d9653eca6d71808c04e02ec46f5c6100b70b4/layout/Library/PreferenceLoader/Preferences/SwipeForMore/SFM.png -------------------------------------------------------------------------------- /layout/Library/PreferenceLoader/Preferences/SwipeForMore/SFM@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoomSmart/SwipeForMore/036d9653eca6d71808c04e02ec46f5c6100b70b4/layout/Library/PreferenceLoader/Preferences/SwipeForMore/SFM@2x.png -------------------------------------------------------------------------------- /layout/Library/PreferenceLoader/Preferences/SwipeForMore/SFM@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PoomSmart/SwipeForMore/036d9653eca6d71808c04e02ec46f5c6100b70b4/layout/Library/PreferenceLoader/Preferences/SwipeForMore/SFM@3x.png -------------------------------------------------------------------------------- /layout/Library/PreferenceLoader/Preferences/SwipeForMore/SwipeForMore.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | title 6 | SwipeForMore 7 | entry 8 | 9 | cell 10 | PSLinkCell 11 | icon 12 | SFM.png 13 | label 14 | SwipeForMore 15 | 16 | items 17 | 18 | 19 | cell 20 | PSGroupCell 21 | footerAlignment 22 | 1 23 | footerText 24 | Auto install/remove enabled: SwipeForMore will automatically confirm any package (re)install/remove/upgrade task only if there is no issue with that package. 25 | 26 | Auto dismiss enabled: SwipeForMore will automatically dismiss the installation progress page after Install or Remove operation is performed. 27 | 28 | SwipeForMore usually suppresses confirmation page when you perform queueing operations, unless the target package has any issues (cannot automatically be installed). 29 | 30 | If you are on iOS 8 or lower, TapForMore is an alternative. 31 | 32 | © 2013 - 2025 PoomSmart 33 | 34 | 35 | cell 36 | PSSwitchCell 37 | PostNotification 38 | com.PS.SwipeForMore.prefs 39 | default 40 | 41 | defaults 42 | com.PS.SwipeForMore 43 | key 44 | enabled 45 | label 46 | Enabled 47 | 48 | 49 | cell 50 | PSSwitchCell 51 | PostNotification 52 | com.PS.SwipeForMore.prefs 53 | default 54 | 55 | defaults 56 | com.PS.SwipeForMore 57 | key 58 | confirm 59 | label 60 | Auto install/remove 61 | 62 | 63 | cell 64 | PSSwitchCell 65 | PostNotification 66 | com.PS.SwipeForMore.prefs 67 | default 68 | 69 | defaults 70 | com.PS.SwipeForMore 71 | key 72 | autoDismiss 73 | label 74 | Auto dismiss 75 | 76 | 77 | cell 78 | PSSwitchCell 79 | PostNotification 80 | com.PS.SwipeForMore.prefs 81 | default 82 | 83 | defaults 84 | com.PS.SwipeForMore 85 | key 86 | short 87 | label 88 | Use icons 89 | 90 | 91 | 92 | 93 | --------------------------------------------------------------------------------