├── NearbyNews.plist ├── .gitignore ├── control ├── Makefile └── Tweak.xm /NearbyNews.plist: -------------------------------------------------------------------------------- 1 | { Filter = { Bundles = ( "com.apple.springboard" ); }; } 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.o 2 | *.stamp 3 | .theos 4 | .DS_Store 5 | theos 6 | _ 7 | obj 8 | debs -------------------------------------------------------------------------------- /control: -------------------------------------------------------------------------------- 1 | Package: org.thebigboss.nearbynews 2 | Name: NearbyNews 3 | Depends: mobilesubstrate 4 | Version: 1.1 5 | Architecture: iphoneos-arm 6 | Description: Siri Suggestions, Nearby, and News in every Spotlight! 7 | Maintainer: twodayslate 8 | Author: twodayslate 9 | Section: Tweaks 10 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | THEOS_DEVICE_IP = 127.0.0.1 2 | THEOS_DEVICE_PORT = 2222 3 | 4 | include $(THEOS)/makefiles/common.mk 5 | 6 | TWEAK_NAME = NearbyNews 7 | NearbyNews_FILES = Tweak.xm 8 | 9 | include $(THEOS_MAKE_PATH)/tweak.mk 10 | 11 | after-install:: 12 | install.exec "killall -9 SpringBoard" 13 | -------------------------------------------------------------------------------- /Tweak.xm: -------------------------------------------------------------------------------- 1 | #import "CydiaSubstrate.h" 2 | 3 | @interface SPUISearchViewController 4 | - (BOOL)_hasResults; 5 | + (id)sharedInstance; 6 | @property (assign, nonatomic) BOOL isActuallyPullDownSpotlight; 7 | @property (assign, nonatomic) int actualSearchMode; 8 | - (BOOL)_isPullDownSpotlight; 9 | - (BOOL)isZKWSearchMode; 10 | - (BOOL)_hasNoQuery; 11 | - (void)dismiss; 12 | @end 13 | 14 | @interface SPUISearchModel 15 | + (id)sharedInstance; 16 | + (id)sharedFullZWKInstance; 17 | + (id)sharedGeneralInstance; 18 | + (id)sharedPartialZKWInstance; 19 | - (void)addSections:(NSMutableArray *)arg1; 20 | @property (nonatomic, retain) NSArray *searchDomains; 21 | @property (readonly, copy) NSString *debugDescription; 22 | @property (nonatomic, retain) id queryProcessor; 23 | @property (nonatomic) int options; 24 | -(void)searchDaemonQuery:(id)arg1 addedResults:(id)arg2; 25 | @end 26 | 27 | @interface SPSearchResultSection 28 | @property (nonatomic, retain) NSString *displayIdentifier; 29 | @property (nonatomic) unsigned int domain; 30 | @property (nonatomic, retain) NSString *category; 31 | @end 32 | 33 | @interface SPUISearchHeader 34 | - (void)setCancelButtonHidden:(BOOL)arg1 animated:(BOOL)arg2; 35 | @end 36 | 37 | // This works too but there are some annoying bugs that are too hard to fix correctly so I don't do this. 38 | //static BOOL canDeclare = NO; 39 | //%hook SPUISearchModel 40 | // + (id)sharedPartialZKWInstance { 41 | // if(canDeclare) { 42 | // return [self sharedFullZWKInstance]; 43 | // } 44 | // canDeclare = YES; 45 | // return %orig; 46 | // } 47 | //%end 48 | 49 | %hook SPUISearchViewController 50 | %property (assign, nonatomic) BOOL isActuallyPullDownSpotlight; 51 | - (BOOL)_isPullDownSpotlight { 52 | %log; 53 | self.isActuallyPullDownSpotlight = %orig; 54 | 55 | HBLogDebug(@"orig = %d", self.isActuallyPullDownSpotlight ); 56 | return NO; 57 | } 58 | - (BOOL)_allowSwipeToDismiss { 59 | %log; 60 | return %orig; 61 | } 62 | 63 | // This will disable to swipe up to dismiss gesture. 64 | - (void)_setDismissGestureRecognizersEnabled:(BOOL)arg1 { 65 | %log; 66 | %orig; 67 | } 68 | - (void)_triggerDismissForGesture:(id)arg1 { 69 | %log; 70 | %orig; 71 | } 72 | - (void)_updateGestureRecognizerEnabledStatus { 73 | %log; 74 | %orig; 75 | } 76 | - (void)setPresentsFromEdge:(unsigned int)arg1 { 77 | %log; 78 | %orig; 79 | } 80 | 81 | %property (assign, nonatomic) int actualSearchMode; 82 | - (void)setSearchMode:(int)arg1 { 83 | %log; 84 | // Search Modes 85 | // 0 = left 86 | // 1 = top 87 | // 2 = search 88 | self.actualSearchMode = arg1; 89 | %orig( (self.actualSearchMode == 1) ? 0 : self.actualSearchMode ); 90 | } 91 | - (BOOL)_showKeyboardOnPresentation { 92 | %log; 93 | return NO; 94 | } 95 | 96 | - (void)_didFinishPresenting { 97 | %log; 98 | %orig; 99 | if(self.isActuallyPullDownSpotlight ) { 100 | SPUISearchHeader *searchHeader = MSHookIvar(self, "_searchHeader"); 101 | [searchHeader setCancelButtonHidden:NO animated:YES]; 102 | } 103 | } 104 | 105 | - (void)cancelButtonPressed { 106 | %log; 107 | %orig; 108 | if(self.isActuallyPullDownSpotlight) { 109 | [self dismiss]; 110 | } 111 | } 112 | %end 113 | 114 | %hook SPUISearchHeader 115 | - (void)setCancelButtonHidden:(BOOL)arg1 animated:(BOOL)arg2 { 116 | %log; 117 | SPUISearchViewController *vc = [%c(SPUISearchViewController) sharedInstance]; 118 | if(!vc.isActuallyPullDownSpotlight) { 119 | return %orig; 120 | } 121 | 122 | if(vc.isActuallyPullDownSpotlight && !arg1) { 123 | return %orig; 124 | } 125 | } 126 | %end --------------------------------------------------------------------------------