From 5b5a43ffd9f7831da96ed4fb1e8f96bb44073976 Mon Sep 17 00:00:00 2001 From: BandarHelal <31299470+BandarHL@users.noreply.github.com> Date: Tue, 5 Jul 2022 01:30:50 +0300 Subject: [PATCH] Update 2.9.7 - Add new feature: Theme like Twitter blue - Add a new feature: Hide spaces bar - Add a new feature: Disable RTL - Fix RTL issue with Save tweet as an image - Fix the colour issue with Save tweet as an image - Fix voice in DM feature - Fix issues with the Font feature - Fix Auto Highest Load feature --- BHTwitter.xcodeproj/project.pbxproj | 12 + BHTwitter/BHDownloadInlineButton.m | 4 +- BHTwitter/BHTManager.h | 4 +- BHTwitter/BHTManager.m | 66 +- BHTwitter/BHTwitter+NSURL.h | 4 +- BHTwitter/BHTwitter-Bridging-Header.h | 2 + BHTwitter/BHTwitter.xm | 1147 +++++------------ .../CustomTabBarViewController.swift | 1 - BHTwitter/HBPreferences/HBPreferences.m | 4 +- BHTwitter/Package/DEBIAN/control | 2 +- .../Ressources.bundle/Acknowledgements.rtf | 155 +++ .../BHT/Ressources.bundle/BandarHL.jpg | Bin 63116 -> 81789 bytes BHTwitter/TWHeaders.h | 65 +- .../BHColorThemeViewController.swift | 272 ++++ 14 files changed, 905 insertions(+), 833 deletions(-) create mode 100644 BHTwitter/Package/Library/Application Support/BHT/Ressources.bundle/Acknowledgements.rtf create mode 100644 BHTwitter/ThemeColor/BHColorThemeViewController.swift diff --git a/BHTwitter.xcodeproj/project.pbxproj b/BHTwitter.xcodeproj/project.pbxproj index cd58a9c6..67245947 100644 --- a/BHTwitter.xcodeproj/project.pbxproj +++ b/BHTwitter.xcodeproj/project.pbxproj @@ -504,6 +504,7 @@ 50D73502252CBFC6007838C7 /* SceneKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50D73501252CBFC6007838C7 /* SceneKit.framework */; }; 50D73504252CBFD0007838C7 /* libsqlite3.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 50D73503252CBFCB007838C7 /* libsqlite3.tbd */; }; 50E7ABEF24F5A8F700A8619D /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50E7ABEE24F5A8F600A8619D /* WebKit.framework */; }; + 50EE4D4B286F7F70007DE117 /* BHColorThemeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50EE4D4A286F7F70007DE117 /* BHColorThemeViewController.swift */; }; 50FCAB7E27268E1600265B5D /* HBlinkCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 50FCAB7C27268E1600265B5D /* HBlinkCell.h */; }; 50FCAB7F27268E1600265B5D /* HBlinkCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 50FCAB7D27268E1600265B5D /* HBlinkCell.m */; }; /* End PBXBuildFile section */ @@ -1019,6 +1020,7 @@ 50D73501252CBFC6007838C7 /* SceneKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SceneKit.framework; path = System/Library/Frameworks/SceneKit.framework; sourceTree = SDKROOT; }; 50D73503252CBFCB007838C7 /* libsqlite3.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.tbd; path = usr/lib/libsqlite3.tbd; sourceTree = SDKROOT; }; 50E7ABEE24F5A8F600A8619D /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; + 50EE4D4A286F7F70007DE117 /* BHColorThemeViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BHColorThemeViewController.swift; sourceTree = ""; }; 50FCAB7C27268E1600265B5D /* HBlinkCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HBlinkCell.h; sourceTree = ""; }; 50FCAB7D27268E1600265B5D /* HBlinkCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HBlinkCell.m; sourceTree = ""; }; /* End PBXFileReference section */ @@ -1123,6 +1125,7 @@ 505C0EBD2801ED020028D1C9 /* BHDownloadInlineButton.m */, 50C15C9B271400DA00E8B5E8 /* BHTwitter+UIImage.h */, 50C15C9C271401CB00E8B5E8 /* BHTwitter+NSURL.h */, + 50EE4D49286F7F56007DE117 /* ThemeColor */, 5061F3BE2806132400F3D5D3 /* CustomTabBar */, 503FA66D2753F04A00BBB92A /* Classes */, 50C15CA827178C0D00E8B5E8 /* HBPreferences */, @@ -2009,6 +2012,14 @@ path = HBPreferences; sourceTree = ""; }; + 50EE4D49286F7F56007DE117 /* ThemeColor */ = { + isa = PBXGroup; + children = ( + 50EE4D4A286F7F70007DE117 /* BHColorThemeViewController.swift */, + ); + path = ThemeColor; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -2578,6 +2589,7 @@ 503FA9252753F04C00BBB92A /* FLEXKeychain.m in Sources */, 503FA96C2753F04D00BBB92A /* FHSView.m in Sources */, 503FA9392753F04C00BBB92A /* FLEXAddressExplorerCoordinator.m in Sources */, + 50EE4D4B286F7F70007DE117 /* BHColorThemeViewController.swift in Sources */, 503FA8412753F04B00BBB92A /* FLEXKeyValueTableViewCell.m in Sources */, 503FA97C2753F04D00BBB92A /* FLEXUtility.m in Sources */, 503FA8722753F04B00BBB92A /* FLEXShortcut.m in Sources */, diff --git a/BHTwitter/BHDownloadInlineButton.m b/BHTwitter/BHDownloadInlineButton.m index a87f500a..0ef1e851 100644 --- a/BHTwitter/BHDownloadInlineButton.m +++ b/BHTwitter/BHDownloadInlineButton.m @@ -44,14 +44,12 @@ - (id)_t1_imageNamed:(id)arg1 fitSize:(struct CGSize)arg2 fillColor:(id)arg3 { } - (void)DownloadHandler:(UIButton *)sender { NSAttributedString *AttString = [[NSAttributedString alloc] initWithString:@"\nSelect video quality you want to download" attributes:@{ - NSFontAttributeName: [[objc_getClass("TAEStandardFontGroup") sharedFontGroup] fixedLargeBoldFont], + NSFontAttributeName: [[objc_getClass("TAEStandardFontGroup") sharedFontGroup] headline2BoldFont], NSForegroundColorAttributeName: UIColor.labelColor }]; TFNActiveTextItem *title = [[objc_getClass("TFNActiveTextItem") alloc] initWithTextModel:[[objc_getClass("TFNAttributedTextModel") alloc] initWithAttributedString:AttString] activeRanges:nil]; - TFNMenuSheetCenteredIconItem *icon = [[objc_getClass("TFNMenuSheetCenteredIconItem") alloc] initWithIconImageName:@"2728" height:55 fillColor:UIColor.clearColor]; NSMutableArray *actions = [[NSMutableArray alloc] init]; - [actions addObject:icon]; [actions addObject:title]; for (TFSTwitterEntityMedia *i in self.delegate.viewModel.entities.media) { diff --git a/BHTwitter/BHTManager.h b/BHTwitter/BHTManager.h index 550bb97d..8d27fdb5 100644 --- a/BHTwitter/BHTManager.h +++ b/BHTwitter/BHTManager.h @@ -15,7 +15,7 @@ + (BOOL)isVideoCell:(id )model; + (bool)isDMVideoCell:(T1InlineMediaView *)view; + (BOOL)doesContainDigitsOnly:(NSString *)string; -+ (UIViewController *)BHTSettings; ++ (UIViewController *)BHTSettingsWithAccount:(TFNTwitterAccount *)twAccount; + (void)showSaveVC:(NSURL *)url; + (void)save:(NSURL *)url; + (float)TwitterVersion; @@ -47,5 +47,7 @@ + (BOOL)TwitterCircle; + (BOOL)CopyProfileInfo; + (BOOL)tweetToImage; ++ (BOOL)hideSpacesBar; ++ (BOOL)disableRTL; @end diff --git a/BHTwitter/BHTManager.m b/BHTwitter/BHTManager.m index 22a66eb3..3f810fd1 100644 --- a/BHTwitter/BHTManager.m +++ b/BHTwitter/BHTManager.m @@ -6,6 +6,8 @@ // #import "BHTManager.h" +#import "BHTwitter-Swift.h" +#import "BHTwitter+NSURL.h" @implementation BHTManager + (float)TwitterVersion { @@ -188,13 +190,22 @@ + (BOOL)CopyProfileInfo { + (BOOL)tweetToImage { return [[NSUserDefaults standardUserDefaults] boolForKey:@"TweetToImage"]; } -+ (UIViewController *)BHTSettings { ++ (BOOL)hideSpacesBar { + return [[NSUserDefaults standardUserDefaults] boolForKey:@"hide_spaces"]; +} ++ (BOOL)disableRTL { + return [[NSUserDefaults standardUserDefaults] boolForKey:@"dis_rtl"]; +} ++ (UIViewController *)BHTSettingsWithAccount:(TFNTwitterAccount *)twAccount { HBPreferences *pref = [[HBPreferences alloc] initTableWithTableStyle:UITableViewStyleInsetGrouped title:@"BHTwitter" SeparatorStyle:UITableViewCellSeparatorStyleSingleLine]; + [pref.navigationItem setTitleView:[objc_getClass("TFNTitleView") titleViewWithTitle:@"BHTwitter" subtitle:twAccount.displayUsername]]; + HBSection *mainSection = [HBSection sectionWithTitle:@"BHTwitter Preferences" footer:nil]; + HBSection *twitterBlueSection = [HBSection sectionWithTitle:@"Twitter blue features" footer:@"You may need to restart Twitter app to apply changes"]; HBSection *layoutSection = [HBSection sectionWithTitle:@"Layout customization" footer:@"Restart Twitter app to apply changes"]; - HBSection *tabBarLayoutSection = [HBSection sectionWithTitle:@"Tab bar customization" footer:@"Restart Twitter app to apply changes"]; HBSection *debug = [HBSection sectionWithTitle:@"Debugging" footer:nil]; - HBSection *developer = [HBSection sectionWithTitle:@"Developer" footer:nil]; + HBSection *legalSection = [HBSection sectionWithTitle:@"Legal notices" footer:nil]; + HBSection *developer = [HBSection sectionWithTitle:@"Developer" footer:@"BHTwitter v2.9.7"]; HBSwitchCell *download = [[HBSwitchCell alloc] initSwitchCellWithImage:nil Title:@"Downloading videos" DetailTitle:@"Downloading videos. By adding button in tweet and inside video tab bar." switchKey:@"dw_v" withBlock:^(UISwitch *weakSender) { if (weakSender.isOn) { @@ -381,7 +392,7 @@ + (UIViewController *)BHTSettings { } }]; - HBSwitchCell *tweetToImage = [[HBSwitchCell alloc] initSwitchCellWithImage:nil Title:@"Save tweet as image" DetailTitle:@"You can export tweets as image, by long pressing on the Tweet Share button" switchKey:@"TweetToImage" withBlock:^(UISwitch *weakSender) { + HBSwitchCell *tweetToImage = [[HBSwitchCell alloc] initSwitchCellWithImage:nil Title:@"Save tweet as an image" DetailTitle:@"You can export tweets as image, by long pressing on the Tweet Share button" switchKey:@"TweetToImage" withBlock:^(UISwitch *weakSender) { if (weakSender.isOn) { [[NSUserDefaults standardUserDefaults] setBool:true forKey:@"TweetToImage"]; } else { @@ -389,6 +400,22 @@ + (UIViewController *)BHTSettings { } }]; + HBSwitchCell *hideSpace = [[HBSwitchCell alloc] initSwitchCellWithImage:nil Title:@"Hide spaces bar" DetailTitle:nil switchKey:@"hide_spaces" withBlock:^(UISwitch *weakSender) { + if (weakSender.isOn) { + [[NSUserDefaults standardUserDefaults] setBool:true forKey:@"hide_spaces"]; + } else { + [[NSUserDefaults standardUserDefaults] setBool:false forKey:@"hide_spaces"]; + } + }]; + + HBSwitchCell *disableRTL = [[HBSwitchCell alloc] initSwitchCellWithImage:nil Title:@"Disable RTL" DetailTitle:@"Force Twitter use LTL with RTL language.\nRestart Twitter app to apply changes" switchKey:@"dis_rtl" withBlock:^(UISwitch *weakSender) { + if (weakSender.isOn) { + [[NSUserDefaults standardUserDefaults] setBool:true forKey:@"dis_rtl"]; + } else { + [[NSUserDefaults standardUserDefaults] setBool:false forKey:@"dis_rtl"]; + } + }]; + HBViewControllerCell *fontsPicker = [[HBViewControllerCell alloc] initCellWithTitle:@"Font" detail:[[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"] action:^UIViewController *{ UIFontPickerViewControllerConfiguration *configuration = [[UIFontPickerViewControllerConfiguration alloc] init]; [configuration setFilteredTraits:UIFontDescriptorClassMask]; @@ -410,20 +437,31 @@ + (UIViewController *)BHTSettings { }]; HBViewControllerCell *CustomTabBarVC = [[HBViewControllerCell alloc] initCellWithTitle:@"Custom Tab Bar" detail:nil action:^UIViewController *{ - return [[CustomTabBarViewController alloc] init]; + CustomTabBarViewController *customTabBArVC = [[CustomTabBarViewController alloc] init]; + [customTabBArVC.navigationItem setTitleView:[objc_getClass("TFNTitleView") titleViewWithTitle:@"Custom Tab Bar" subtitle:twAccount.displayUsername]]; + return customTabBArVC; + }]; + + HBViewControllerCell *appTheme = [[HBViewControllerCell alloc] initCellWithTitle:@"Theme" detail:@"Choose a theme color for you Twitter experience that can only be seen by you." action:^UIViewController *{ +// I create my own Color Theme ViewController for two main reasons: +// 1- Twitter use swift to build their view controller, so I can't hook anything on it. +// 2- Twitter knows you do not actually subscribe with Twitter Blue, so it keeps resting the changes and resting 'T1ColorSettingsPrimaryColorOptionKey' key, so I had to create another key to track the original one and keep sure no changes, but it still not enough to keep the new theme after relaunching app, so i had to force the changes again with new lunch. + BHColorThemeViewController *themeVC = [[BHColorThemeViewController alloc] init]; + [themeVC.navigationItem setTitleView:[objc_getClass("TFNTitleView") titleViewWithTitle:@"Theme" subtitle:twAccount.displayUsername]]; + return themeVC; }]; HBSwitchCell *font = [[HBSwitchCell alloc] initSwitchCellWithImage:nil Title:@"Enable changing font" DetailTitle:@"Option to allow changing Twitter font and show font picker." switchKey:@"en_font" withBlock:^(UISwitch *weakSender) { if (weakSender.isOn) { [[NSUserDefaults standardUserDefaults] setBool:true forKey:@"en_font"]; [layoutSection addCells:@[fontsPicker, BoldfontsPicker]]; - [pref.tableView insertRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:3 inSection:1], [NSIndexPath indexPathForRow:4 inSection:1]] withRowAnimation:UITableViewRowAnimationAutomatic]; + [pref.tableView insertRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:3 inSection:2], [NSIndexPath indexPathForRow:4 inSection:2]] withRowAnimation:UITableViewRowAnimationAutomatic]; } else { [[NSUserDefaults standardUserDefaults] setBool:false forKey:@"en_font"]; [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"bhtwitter_font_1"]; [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"bhtwitter_font_2"]; [layoutSection removeCells:@[fontsPicker, BoldfontsPicker]]; - [pref.tableView deleteRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:3 inSection:1], [NSIndexPath indexPathForRow:4 inSection:1]] withRowAnimation:UITableViewRowAnimationAutomatic]; + [pref.tableView deleteRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:3 inSection:2], [NSIndexPath indexPathForRow:4 inSection:2]] withRowAnimation:UITableViewRowAnimationAutomatic]; } }]; @@ -445,22 +483,30 @@ + (UIViewController *)BHTSettings { } }]; + HBViewControllerCell *acknowledgements = [[HBViewControllerCell alloc] initCellWithTitle:@"Acknowledgements" detail:nil action:^UIViewController *{ + T1RichTextFormatViewController *acknowledgementsVC = [[objc_getClass("T1RichTextFormatViewController") alloc] initWithRichTextFormatDocumentPath:[NSURL bhtwitter_fileURLWithPath:@"Acknowledgements.rtf"].path]; + [acknowledgementsVC.navigationItem setTitleView:[objc_getClass("TFNTitleView") titleViewWithTitle:@"Acknowledgements" subtitle:twAccount.displayUsername]]; + return acknowledgementsVC; + }]; + HBTwitterCell *bandarhl = [[HBTwitterCell alloc] initTwitterCellWithTitle:@"BandarHelal" detail:@"@BandarHL" AccountLink:@"https://twitter.com/BandarHL"]; HBlinkCell *tipJar = [[HBlinkCell alloc] initLinkCellWithTitle:@"Tip Jar" detailTitle:@"Donate" link:@"https://www.paypal.me/BandarHL"]; HBGithubCell *sourceCode = [[HBGithubCell alloc] initGithubCellWithTitle:@"BHTwitter" detailTitle:@"Code source of BHTwitter" GithubURL:@"https://github.com/BandarHL/BHTwitter/"]; - [mainSection addCells:@[download, hide_ads, hide_topics, disable_VODCaptions, direct_save, voice, voice_in_replay, UndoTweet, ReaderMode, ReplyLater, VideoZoom, NoHistory, BioTranslate, like_confirm, tweet_confirm, follow_confirm, padlock, DmModularSearch, autoHighestLoad, disableSensitiveTweetWarnings, copyProfileInfo, trustedFriends, tweetToImage]]; + [mainSection addCells:@[download, hide_ads, hide_topics, disable_VODCaptions, direct_save, voice, voice_in_replay, ReplyLater, VideoZoom, NoHistory, BioTranslate, like_confirm, tweet_confirm, follow_confirm, padlock, DmModularSearch, autoHighestLoad, disableSensitiveTweetWarnings, copyProfileInfo, tweetToImage, hideSpace, disableRTL]]; + [twitterBlueSection addCells:@[UndoTweet, ReaderMode, trustedFriends, appTheme, CustomTabBarVC]]; [layoutSection addCells:@[oldTweetStyle, dwbLayout, font]]; if ([BHTManager changeFont]) { [layoutSection addCells:@[fontsPicker, BoldfontsPicker]]; } - [tabBarLayoutSection addCell:CustomTabBarVC]; + [debug addCell:flex]; + [legalSection addCell:acknowledgements]; [developer addCells:@[bandarhl, sourceCode, tipJar]]; - [pref addSections:@[mainSection, layoutSection, tabBarLayoutSection, debug, developer]]; + [pref addSections:@[mainSection, twitterBlueSection, layoutSection, debug, legalSection, developer]]; return pref; } diff --git a/BHTwitter/BHTwitter+NSURL.h b/BHTwitter/BHTwitter+NSURL.h index 8576bc7e..b515b8b7 100644 --- a/BHTwitter/BHTwitter+NSURL.h +++ b/BHTwitter/BHTwitter+NSURL.h @@ -17,7 +17,9 @@ if ([fileManager fileExistsAtPath:@"/Library/Application Support/BHT/Ressources.bundle"]) { return [NSURL fileURLWithPath:[NSString stringWithFormat:@"/Library/Application Support/BHT/Ressources.bundle/%@", path]]; } else { - return [NSURL fileURLWithPath:[NSString stringWithFormat:@"Ressources.bundle/%@", path]]; + NSURL *ressourcesBundle = [[NSBundle mainBundle] URLForResource:@"Ressources" withExtension:@"bundle"]; +// return [NSURL fileURLWithPath:[NSString stringWithFormat:@"Ressources.bundle/%@", path]]; + return [ressourcesBundle URLByAppendingPathComponent:path]; } } @end diff --git a/BHTwitter/BHTwitter-Bridging-Header.h b/BHTwitter/BHTwitter-Bridging-Header.h index 1b2cb5d6..abd5c6a7 100644 --- a/BHTwitter/BHTwitter-Bridging-Header.h +++ b/BHTwitter/BHTwitter-Bridging-Header.h @@ -2,3 +2,5 @@ // Use this file to import your target's public headers that you would like to expose to Swift. // +#import "BHTwitter+UIImage.h" +#import "TWHeaders.h" diff --git a/BHTwitter/BHTwitter.xm b/BHTwitter/BHTwitter.xm index a1c7afcf..79e18292 100644 --- a/BHTwitter/BHTwitter.xm +++ b/BHTwitter/BHTwitter.xm @@ -2,6 +2,7 @@ #import "SAMKeychain/AuthViewController.h" #import "Colours.h" #import "BHTManager.h" +#import "BHTwitter-Swift.h" %config(generator=internal) @@ -269,14 +270,12 @@ } %new - (void)DownloadHandler { NSAttributedString *AttString = [[NSAttributedString alloc] initWithString:@"\nSelect video quality you want to download" attributes:@{ - NSFontAttributeName: [[%c(TAEStandardFontGroup) sharedFontGroup] fixedLargeBoldFont], + NSFontAttributeName: [[%c(TAEStandardFontGroup) sharedFontGroup] headline2BoldFont], NSForegroundColorAttributeName: UIColor.labelColor }]; TFNActiveTextItem *title = [[%c(TFNActiveTextItem) alloc] initWithTextModel:[[%c(TFNAttributedTextModel) alloc] initWithAttributedString:AttString] activeRanges:nil]; - TFNMenuSheetCenteredIconItem *icon = [[%c(TFNMenuSheetCenteredIconItem) alloc] initWithIconImageName:@"2728" height:55 fillColor:UIColor.clearColor]; NSMutableArray *actions = [[NSMutableArray alloc] init]; - [actions addObject:icon]; [actions addObject:title]; T1PlayerMediaEntitySessionProducible *session = self.inlineMediaView.viewModel.playerSessionProducer.sessionProducible; @@ -316,24 +315,68 @@ } %end -// MARK: Save tweet as image +// MARK: Color theme +%hook TFNPagingViewController +- (void)viewDidAppear:(_Bool)animated { + %orig(animated); + + static dispatch_once_t once; + dispatch_once(&once, ^ { + if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bh_color_theme_selectedColor"]) { + BH_changeTwitterColor([[NSUserDefaults standardUserDefaults] integerForKey:@"bh_color_theme_selectedColor"]); + } + }); +} +%end + +%hook T1AppSplitViewController +- (void)viewDidAppear:(_Bool)animated { + %orig(animated); + + static dispatch_once_t once; + dispatch_once(&once, ^ { + if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bh_color_theme_selectedColor"]) { + BH_changeTwitterColor([[NSUserDefaults standardUserDefaults] integerForKey:@"bh_color_theme_selectedColor"]); + } + }); +} +%end + +%hook NSUserDefaults +- (void)setObject:(id)value forKey:(NSString *)defaultName { + if ([defaultName isEqualToString:@"T1ColorSettingsPrimaryColorOptionKey"]) { + id selectedColor = [[NSUserDefaults standardUserDefaults] objectForKey:@"bh_color_theme_selectedColor"]; + if (selectedColor != nil) { + if ([value isEqual:selectedColor]) { + return %orig; + } else { + return; + } + } + return %orig; + } + return %orig; +} +%end + +// MARK: Save tweet as an image %hook T1StatusInlineShareButton - (void)didLongPressActionButton:(UILongPressGestureRecognizer *)gestureRecognizer { if ([BHTManager tweetToImage]) { if (gestureRecognizer.state == UIGestureRecognizerStateBegan) { T1StatusInlineActionsView *actionsView = self.delegate; - UIView *tweetView; + T1StatusCell *tweetView; // it supposed the T1StatusInlineShareButton class only exist in Tweet view, but just to make sure we are working in tweet. :) if ([actionsView.superview isKindOfClass:%c(T1StandardStatusView)]) { // normal tweet in the time line - tweetView = actionsView.superview; + tweetView = [(T1StandardStatusView *)actionsView.superview eventHandler]; } else if ([actionsView.superview isKindOfClass:%c(T1TweetDetailsFocalStatusView)]) { // Focus tweet - tweetView = actionsView.superview; + tweetView = [(T1TweetDetailsFocalStatusView *)actionsView.superview eventHandler]; } else { - return; + return %orig; } - UIImage *tweetImage = imageFromView(tweetView); + UIImage *tweetImage = BH_imageFromView(tweetView); UIActivityViewController *acVC = [[UIActivityViewController alloc] initWithActivityItems:@[tweetImage] applicationActivities:nil]; if (is_iPad()) { acVC.popoverPresentationController.sourceView = self; @@ -370,6 +413,22 @@ } %end +// MARK: Disable RTL +%hook NSParagraphStyle ++ (NSWritingDirection)defaultWritingDirectionForLanguage:(id)lang { + if ([BHTManager disableRTL]) { + return NSWritingDirectionLeftToRight; + } + return %orig; +} ++ (NSWritingDirection)_defaultWritingDirection { + if ([BHTManager disableRTL]) { + return NSWritingDirectionLeftToRight; + } + return %orig; +} +%end + // MARK: Bio Translate %hook TFNTwitterCanonicalUser - (_Bool)isProfileBioTranslatable { @@ -403,6 +462,27 @@ } %end +// MARK: Voice, TwitterCircle, SensitiveTweetWarnings, autoHighestLoad, VideoZoom, ReplyLater, VODCaptions, disableSpacesBar feature +%hook TPSTwitterFeatureSwitches +// Twitter save all the features and keys in side JSON file in bundle of application fs_embedded_defaults_production.json, and use it in TFNTwitterAccount class but with DM voice maybe developers forget to add boolean variable in the class, so i had to change it from the file. +// also, you can find every key for every feature i used in this tweak, i can remove all the codes below and find every key for it but I'm lazy to do that, :) +- (BOOL)boolForKey:(NSString *)key { + if ([BHTManager VoiceFeature] && [key isEqualToString:@"dm_voice_creation_enabled"]) { + return true; + } + return %orig; +} +%end + +%hook T1HomeTimelineItemsViewController +- (void)_t1_initializeFleets { + if ([BHTManager hideSpacesBar]) { + return; + } + return %orig; +} +%end + %hook TFNTwitterMediaUploadConfiguration - (_Bool)photoUploadHighQualityImagesSettingIsVisible { if ([BHTManager autoHighestLoad]) { @@ -423,7 +503,7 @@ if ([BHTManager autoHighestLoad]) { arg3 = true; } - return %orig; + return %orig(arg1, arg2, arg3); } %end @@ -451,7 +531,6 @@ } %end -// MARK: Voice feature %hook TFSTwitterAPICommandAccountStateProvider - (_Bool)allowPromotedContent { if ([BHTManager HidePromoted]) { @@ -538,15 +617,6 @@ } return %orig; } -- (bool)isVODInlineAudioToggleEnabled { - return true; -} -- (_Bool)isConversationThreadingVoiceOverSupportEnabled { - if ([BHTManager VoiceFeature]) { - return true; - } - return %orig; -} - (_Bool)isDMVoiceRenderingEnabled { if ([BHTManager VoiceFeature]) { return true; @@ -569,21 +639,6 @@ } %end -%hook T1MediaAutoplaySettings -- (_Bool)voiceOverEnabled { - if ([BHTManager VoiceFeature]) { - return true; - } - return %orig; -} -- (void)setVoiceOverEnabled:(_Bool)arg1 { - if ([BHTManager VoiceFeature]) { - arg1 = true; - } - return %orig(arg1); -} -%end - %hook T1PhotoMediaRailViewController - (void)setVoiceButtonHidden:(BOOL)arg1 { if ([BHTManager VoiceFeature]) { @@ -745,7 +800,7 @@ if ([self.sections count] == 1) { TFNItemsDataViewControllerBackingStore *DataViewControllerBackingStore = self.backingStore; TFNSettingsNavigationItem *bhtwitter = [[%c(TFNSettingsNavigationItem) alloc] initWithTitle:@"Settings" detail:@"BHTwitter preferences" systemIconName:@"gear" controllerFactory:^UIViewController *{ - return [BHTManager BHTSettings]; + return [BHTManager BHTSettingsWithAccount:self.account]; }]; [DataViewControllerBackingStore insertSection:0 atIndex:0]; [DataViewControllerBackingStore insertItem:bhtwitter atIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]]; @@ -786,7 +841,7 @@ - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { if ([indexPath section]== 0 && [indexPath row]== 1) { - [self.navigationController pushViewController:[BHTManager BHTSettings] animated:true]; + [self.navigationController pushViewController:[BHTManager BHTSettingsWithAccount:self.account] animated:true]; } else { return %orig; } @@ -800,916 +855,388 @@ self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Custom fonts" style:UIBarButtonItemStylePlain target:self action:@selector(customFontsHandler)]; } %new - (void)customFontsHandler { - NSAttributedString *AttString = [[NSAttributedString alloc] initWithString:@"\nSelect your custom font" attributes:@{ - NSFontAttributeName: [[%c(TAEStandardFontGroup) sharedFontGroup] fixedLargeBoldFont], - NSForegroundColorAttributeName: UIColor.labelColor - }]; - TFNActiveTextItem *title = [[%c(TFNActiveTextItem) alloc] initWithTextModel:[[%c(TFNAttributedTextModel) alloc] initWithAttributedString:AttString] activeRanges:nil]; - TFNMenuSheetCenteredIconItem *icon = [[%c(TFNMenuSheetCenteredIconItem) alloc] initWithIconImageName:@"2728" height:55 fillColor:UIColor.clearColor]; - - NSMutableArray *actions = [[NSMutableArray alloc] init]; - [actions addObject:icon]; - [actions addObject:title]; - - NSPropertyListFormat plistFormat; - NSMutableDictionary *plistDictionary = [NSPropertyListSerialization propertyListWithData:[NSData dataWithContentsOfURL:[NSURL fileURLWithPath:@"/var/mobile/Library/Fonts/AddedFontCache.plist"]] options:NSPropertyListImmutable format:&plistFormat error:nil]; - [plistDictionary enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) { - @try { - NSString *fontName = ((NSMutableArray *)[[plistDictionary valueForKey:key] valueForKey:@"psNames"]).firstObject; - TFNActionItem *fontAction = [%c(TFNActionItem) actionItemWithTitle:fontName action:^{ - if (self.configuration.includeFaces) { - [self setSelectedFontDescriptor:[UIFontDescriptor fontDescriptorWithFontAttributes:@{ - UIFontDescriptorNameAttribute: fontName - }]]; - } else { - [self setSelectedFontDescriptor:[UIFontDescriptor fontDescriptorWithFontAttributes:@{ - UIFontDescriptorFamilyAttribute: fontName - }]]; - } - [self.delegate fontPickerViewControllerDidPickFont:self]; - }]; - [actions addObject:fontAction]; - } @catch (NSException *exception) { - NSLog(@"Unable to find installed fonts /n reason: %@", exception.reason); - } - }]; - - TFNMenuSheetViewController *alert = [[%c(TFNMenuSheetViewController) alloc] initWithActionItems:[NSArray arrayWithArray:actions]]; - [alert tfnPresentedCustomPresentFromViewController:self animated:YES completion:nil]; + if ([[NSFileManager defaultManager] fileExistsAtPath:@"/var/mobile/Library/Fonts/AddedFontCache.plist"]) { + NSAttributedString *AttString = [[NSAttributedString alloc] initWithString:@"\nSelect your custom font" attributes:@{ + NSFontAttributeName: [[%c(TAEStandardFontGroup) sharedFontGroup] headline2BoldFont], + NSForegroundColorAttributeName: UIColor.labelColor + }]; + TFNActiveTextItem *title = [[%c(TFNActiveTextItem) alloc] initWithTextModel:[[%c(TFNAttributedTextModel) alloc] initWithAttributedString:AttString] activeRanges:nil]; + + NSMutableArray *actions = [[NSMutableArray alloc] init]; + [actions addObject:title]; + + NSPropertyListFormat plistFormat; + NSMutableDictionary *plistDictionary = [NSPropertyListSerialization propertyListWithData:[NSData dataWithContentsOfURL:[NSURL fileURLWithPath:@"/var/mobile/Library/Fonts/AddedFontCache.plist"]] options:NSPropertyListImmutable format:&plistFormat error:nil]; + [plistDictionary enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) { + @try { + NSString *fontName = ((NSMutableArray *)[[plistDictionary valueForKey:key] valueForKey:@"psNames"]).firstObject; + TFNActionItem *fontAction = [%c(TFNActionItem) actionItemWithTitle:fontName action:^{ + if (self.configuration.includeFaces) { + [self setSelectedFontDescriptor:[UIFontDescriptor fontDescriptorWithFontAttributes:@{ + UIFontDescriptorNameAttribute: fontName + }]]; + } else { + [self setSelectedFontDescriptor:[UIFontDescriptor fontDescriptorWithFontAttributes:@{ + UIFontDescriptorFamilyAttribute: fontName + }]]; + } + [self.delegate fontPickerViewControllerDidPickFont:self]; + }]; + [actions addObject:fontAction]; + } @catch (NSException *exception) { + NSLog(@"Unable to find installed fonts /n reason: %@", exception.reason); + } + }]; + + TFNMenuSheetViewController *alert = [[%c(TFNMenuSheetViewController) alloc] initWithActionItems:[NSArray arrayWithArray:actions]]; + [alert tfnPresentedCustomPresentFromViewController:self animated:YES completion:nil]; + } else { + UIAlertController *errAlert = [UIAlertController alertControllerWithTitle:@"BHTwitter" message:@"Cannot find any custom/installed font on this device. \nHow can I install custom fonts? \nGo to the AppStore and install the iFont application, from iFont you can search or import fonts to install, after that you should find your custom font here." preferredStyle:UIAlertControllerStyleAlert]; + + [errAlert addAction:[UIAlertAction actionWithTitle:@"iFont application" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { + [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://apps.apple.com/sa/app/ifont-find-install-any-font/id1173222289"] options:@{} completionHandler:nil]; + }]]; + [errAlert addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleCancel handler:nil]]; + [self presentViewController:errAlert animated:true completion:nil]; + } } %end %hook TAEStandardFontGroup - (UIFont *)profilesFollowingCountFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)profilesFollowingFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)userCellFollowsYouFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)dashFollowingCountFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)dashFollowingFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)carouselUsernameFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)carouselDisplayNameFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)profilesFullNameFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)profilesUsernameFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)readerModeSmallFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)readerModeSmallBoldFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_2"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_2"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(true, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)readerModeMediumFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)readerModeMediumBoldFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_2"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_2"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(true, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)readerModeLargeFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)readerModeLargeBoldFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_2"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_2"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(true, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)treeTopicsDescriptionFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)treeTopicsCategoryNameFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)treeTopicsNameFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)treeTopicsCategoryNameLargeFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)topicsPillNameFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)topicsDescriptionFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)topicsNameFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)composerTextEditorFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)statusCellEdgeToEdgeBodyBoldFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_2"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_2"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(true, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)statusCellEdgeToEdgeBodyFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)statusCellBodyFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)statusCellBodyBoldFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_2"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_2"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(true, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)cardAttributionFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)cardTitleBoldFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_2"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_2"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(true, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)cardTitleFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)tweetDetailBoldFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_2"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_2"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(true, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)tweetDetailFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)directMessageBubbleBodyFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)directMessageComposePersistentBarFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)fixedJumboBoldFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_2"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_2"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(true, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)fixedXLargeBoldFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_2"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_2"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(true, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)fixedLargeBoldFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_2"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_2"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(true, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)fixedNormalBoldFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_2"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_2"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(true, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)fixedSmallBoldFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_2"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_2"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(true, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)fixedJumboFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)fixedXLargeFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)fixedLargeFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)fixedNormalFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)fixedSmallFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)jumboBoldFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_2"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_2"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(true, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)xLargeBoldFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_2"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_2"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(true, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)largeBoldFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_2"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_2"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(true, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)normalBoldFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_2"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_2"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(true, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)smallBoldFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_2"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_2"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(true, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)xSmallBoldFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_2"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_2"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(true, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)jumboFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)xLargeFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)largeFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)normalFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)smallFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)xSmallFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)buttonXLargeFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)buttonLargeFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)buttonMediumFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)buttonMedium_CondensedFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)buttonMedium_CondensedLighterFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)buttonSmallFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)buttonSmallLighterFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)buttonSmall_CondensedFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)buttonSmall_CondensedLighterFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)buttonNavigationBarFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } - (UIFont *)buttonHeavyNavigationBarFont { - if ([BHTManager changeFont]) { - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]) { - NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:@"bhtwitter_font_1"]; - UIFont *ffont = %orig; - return [UIFont fontWithName:fontName size:ffont.pointSize]; - } else { - return %orig; - } - } else { - return %orig; - } + UIFont *origFont = %orig; + UIFont *newFont = BH_getDefaultFont(false, origFont.pointSize); + return newFont != nil ? newFont : origFont; } %end diff --git a/BHTwitter/CustomTabBar/CustomTabBarViewController.swift b/BHTwitter/CustomTabBar/CustomTabBarViewController.swift index 24d4a297..a297bf22 100644 --- a/BHTwitter/CustomTabBar/CustomTabBarViewController.swift +++ b/BHTwitter/CustomTabBar/CustomTabBarViewController.swift @@ -80,7 +80,6 @@ class CustomTabBarViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() - title = "Custom Tab Bar" view.addSubview(tableView) NSLayoutConstraint.activate([ tableView.topAnchor.constraint(equalTo: view.topAnchor), diff --git a/BHTwitter/HBPreferences/HBPreferences.m b/BHTwitter/HBPreferences/HBPreferences.m index ee2ad833..e7e8d99a 100755 --- a/BHTwitter/HBPreferences/HBPreferences.m +++ b/BHTwitter/HBPreferences/HBPreferences.m @@ -109,13 +109,13 @@ - (void)fontPickerViewControllerDidPickFont:(UIFontPickerViewController *)viewCo if (viewController.configuration.includeFaces) { [[NSUserDefaults standardUserDefaults] setObject:fontName forKey:@"bhtwitter_font_2"]; [viewController dismissViewControllerAnimated:true completion:^{ - HBCell *cell = [self.sections[1] cells][4]; + HBCell *cell = [self.sections[2] cells][4]; [cell.detailTextLabel setText:fontName]; }]; } else { [[NSUserDefaults standardUserDefaults] setObject:fontFamily forKey:@"bhtwitter_font_1"]; [viewController dismissViewControllerAnimated:true completion:^{ - HBCell *cell = [self.sections[1] cells][3]; + HBCell *cell = [self.sections[2] cells][3]; [cell.detailTextLabel setText:fontFamily]; }]; } diff --git a/BHTwitter/Package/DEBIAN/control b/BHTwitter/Package/DEBIAN/control index 670f6125..8eb74634 100644 --- a/BHTwitter/Package/DEBIAN/control +++ b/BHTwitter/Package/DEBIAN/control @@ -1,6 +1,6 @@ Package: com.bandarhl.BHTwitter Name: BHTwitter -Version: 2.9.6 +Version: 2.9.7 Description: Awesome tweak for Twitter Section: Tweaks Depends: firmware (>= 13.0), mobilesubstrate diff --git a/BHTwitter/Package/Library/Application Support/BHT/Ressources.bundle/Acknowledgements.rtf b/BHTwitter/Package/Library/Application Support/BHT/Ressources.bundle/Acknowledgements.rtf new file mode 100644 index 00000000..33003bcf --- /dev/null +++ b/BHTwitter/Package/Library/Application Support/BHT/Ressources.bundle/Acknowledgements.rtf @@ -0,0 +1,155 @@ +{\rtf1\ansi\ansicpg1252\cocoartf2638 +\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica-Bold;\f1\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;\red0\green0\blue0;} +{\*\expandedcolortbl;;\cssrgb\c0\c0\c0;} +\paperw11900\paperh16840\margl1440\margr1440\vieww11520\viewh8400\viewkind0 +\deftab720 +\pard\pardeftab720\partightenfactor0 + +\f0\b\fs24 \cf0 \expnd0\expndtw0\kerning0 +Colours +\f1\b0 \ +\ +Copyright (C) 2013 by Benjamin Gordon\ +\ +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.\ +\ + +\f0\b FLEX +\f1\b0 \ +\ +Copyright (c) 2014-2016, Flipboard\ +All rights reserved.\ +\ +Redistribution and use in source and binary forms, with or without modification,\ +are permitted provided that the following conditions are met:\ +\ +* Redistributions of source code must retain the above copyright notice, this\ + list of conditions and the following disclaimer.\ +\ +* Redistributions in binary form must reproduce the above copyright notice, this\ + list of conditions and the following disclaimer in the documentation and/or\ + other materials provided with the distribution.\ +\ +* Neither the name of Flipboard nor the names of its\ + contributors may be used to endorse or promote products derived from\ + this software without specific prior written permission.\ +\ +* You must NOT include this project in an application to be submitted\ + to the App Store\'99, as this project uses too many private APIs.\ +\ +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND\ +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\ +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\ +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR\ +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\ +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\ +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\ +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\ +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\ +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\ +\ + +\f0\b SAMKeychain +\f1\b0 \ +\ +Copyright (c) 2010-2016 Sam Soffes, http://soff.es\ +\ +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.\ +\ + +\f0\b JGProgressHUD +\f1\b0 \ +\ +The MIT License (MIT)\ +\ +Copyright (c) 2014-2018 Jonas Gessner\ +\ +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.\ +\ + +\f0\b ALActionBlocks +\f1\b0 \ +\ +Copyright (c) 2014 Andy LaVoy\ +\ +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.\ +\ + +\f0\b SwifterSwift +\f1\b0 \ +\ +MIT License\ +\ +Copyright (c) 2015-2018 SwifterSwift (https://github.com/swifterswift)\ +\ +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.\ +} \ No newline at end of file diff --git a/BHTwitter/Package/Library/Application Support/BHT/Ressources.bundle/BandarHL.jpg b/BHTwitter/Package/Library/Application Support/BHT/Ressources.bundle/BandarHL.jpg index f44a59af3f8d787fb6f4eb28d057b495c9c8693a..8873946ccb4e47b5bba2b0eb9a73ac5a1310cef8 100644 GIT binary patch literal 81789 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 literal 63116 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 z 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≀5&=~%*WQ#bjXM1gVpt9jZFX{UuOe7q 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 #import #import -#import "BHTwitter-Swift.h" #import "./Classes/Utility/FLEXAlert.h" #import "./Classes/FLEX.h" #import "BHDownload.h" @@ -27,6 +26,18 @@ @property(retain, nonatomic) UIWindow *window; @end +@interface NSParagraphStyle () ++ (NSWritingDirection)_defaultWritingDirection; +@end + +@interface TFNTwitterAccount : NSObject +@property (nonatomic, strong) NSString *displayFullName; +@property (nonatomic, strong) NSString *username; +@property (nonatomic, strong) NSString *displayUsername; +@property (nonatomic, strong) NSString *fullName; +@property (nonatomic, strong) id scribe; +@end + @interface TFNTableView: UITableView @end @@ -57,6 +68,7 @@ @interface T1GenericSettingsViewController: UIViewController @property (nonatomic, strong) TFNItemsDataViewControllerBackingStore *backingStore; @property (nonatomic, strong) NSArray *sections; +@property (nonatomic, strong) TFNTwitterAccount *account; @end @interface TTSSearchTypeaheadViewController : TFNItemsDataViewController @@ -66,9 +78,14 @@ - (void)clearActionControlWantsClear:(id)arg1; @end +@interface T1ColorThemeSettingsViewController : TFNItemsDataViewController +- (instancetype)initWithAccount:(TFNTwitterAccount *)acoount scribeContext:(id)context; +@end + @interface TAEStandardFontGroup : NSObject + (instancetype)sharedFontGroup; - (UIFont *)fixedLargeBoldFont; +- (UIFont *)headline2BoldFont; @end @interface TFNActionItem : NSObject @@ -105,6 +122,7 @@ @interface T1SettingsViewController : UIViewController @property (nonatomic, strong) TFNItemsDataViewControllerBackingStore *backingStore; @property (nonatomic, strong) NSArray *sections; +@property (nonatomic, strong) TFNTwitterAccount *account; @end @interface TFNSettingsNavigationItem : NSObject @@ -153,6 +171,15 @@ @property(nonatomic) __weak id delegate; @end +@protocol TTACoreStatusViewEventHandler +@end + +@interface T1StatusCell : UITableViewCell +@end + +@interface T1TweetDetailsFocalStatusViewTableViewCell : T1StatusCell +@end + @interface TFSTwitterEntityMediaVideoVariant : NSObject @property(readonly, copy, nonatomic) NSString *contentType; @property(readonly, copy, nonatomic) NSString *url; @@ -181,10 +208,12 @@ @end @interface T1StandardStatusView : UIView +@property(nonatomic) __weak id eventHandler; @property(readonly, nonatomic) UIView *visibleInlineActionsView; @end @interface T1TweetDetailsFocalStatusView : UIView +@property(nonatomic) __weak id eventHandler; @end @interface TFNButtonBarView : UIView @@ -279,26 +308,54 @@ @property(readonly, nonatomic) id viewModel; // @synthesize viewModel=_viewModel; @end +@interface T1RichTextFormatViewController : UIViewController +- (instancetype)initWithRichTextFormatDocumentPath:(NSString *)documentPath; +@end + +@interface TFNTitleView: UIView ++ (instancetype)titleViewWithTitle:(NSString *)title subtitle:(NSString *)subTitle; +@end + @interface TAETwitterColorPaletteSettingInfo : NSObject @property(readonly, nonatomic) _Bool isDark; @end @interface TAEColorSettings : NSObject @property(retain, nonatomic) TAETwitterColorPaletteSettingInfo *currentColorPalette; +- (void)setPrimaryColorOption:(NSInteger)colorOption; + (instancetype)sharedSettings; @end -static UIImage *imageFromView(UIView *view) { +static void BH_changeTwitterColor(NSInteger colorID) { + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + TAEColorSettings *colorSettings = [objc_getClass("TAEColorSettings") sharedSettings]; + + [defaults setObject:@(colorID) forKey:@"T1ColorSettingsPrimaryColorOptionKey"]; + [colorSettings setPrimaryColorOption:colorID]; +} +static UIImage *BH_imageFromView(UIView *view) { TAEColorSettings *colorSettings = [objc_getClass("TAEColorSettings") sharedSettings]; bool opaque = [colorSettings.currentColorPalette isDark] ? true : false; - UIGraphicsBeginImageContextWithOptions(view.layer.frame.size, opaque, 0.0); - [view.layer renderInContext:UIGraphicsGetCurrentContext()]; + UIGraphicsBeginImageContextWithOptions(view.frame.size, opaque, 0.0); +// [view.layer renderInContext:UIGraphicsGetCurrentContext()]; + [view drawViewHierarchyInRect:view.bounds afterScreenUpdates:false]; UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return img; } +static UIFont * _Nullable BH_getDefaultFont(bool isBold, CGFloat pointSize) { + if ([[NSUserDefaults standardUserDefaults] boolForKey:@"en_font"]) { + if ([[NSUserDefaults standardUserDefaults] objectForKey:isBold ? @"bhtwitter_font_2" : @"bhtwitter_font_1"]) { + NSString *fontName = [[NSUserDefaults standardUserDefaults] objectForKey:isBold ? @"bhtwitter_font_2" : @"bhtwitter_font_1"]; + return [UIFont fontWithName:fontName size:pointSize]; + } + return nil; + } + return nil; +} + static BOOL isDeviceLanguageRTL() { return ([NSLocale characterDirectionForLanguage:[[NSLocale preferredLanguages] objectAtIndex:0]] == NSLocaleLanguageDirectionRightToLeft); } diff --git a/BHTwitter/ThemeColor/BHColorThemeViewController.swift b/BHTwitter/ThemeColor/BHColorThemeViewController.swift new file mode 100644 index 00000000..0e292e25 --- /dev/null +++ b/BHTwitter/ThemeColor/BHColorThemeViewController.swift @@ -0,0 +1,272 @@ +// +// BHColorThemeViewController.swift +// BHTwitter +// +// Created by BandarHelal on 27/06/2022. +// + +import UIKit + +class ColorThemeCell: UICollectionViewCell { + + var colorLabel: UILabel = { + let label = UILabel() + label.translatesAutoresizingMaskIntoConstraints = false + label.textColor = .label + label.textAlignment = .center + label.layer.masksToBounds = true + label.layer.cornerRadius = 18 + label.font = .systemFont(ofSize: 15, weight: .bold) + return label + }() + let checkIMG: UIImageView = { + let imageView = UIImageView() + imageView.image = .init(systemName: "circle") + imageView.translatesAutoresizingMaskIntoConstraints = false + return imageView + }() + + override init(frame: CGRect) { + super.init(frame: frame) + self.addSubview(colorLabel) + self.addSubview(checkIMG) + + NSLayoutConstraint.activate([ + colorLabel.topAnchor.constraint(equalTo: self.topAnchor), + colorLabel.leadingAnchor.constraint(equalTo: self.leadingAnchor), + colorLabel.trailingAnchor.constraint(equalTo: self.trailingAnchor), + colorLabel.heightAnchor.constraint(equalToConstant: 36), + + checkIMG.topAnchor.constraint(equalTo: colorLabel.bottomAnchor, constant: 12), + checkIMG.centerXAnchor.constraint(equalTo: self.centerXAnchor), + checkIMG.widthAnchor.constraint(equalToConstant: 24), + checkIMG.heightAnchor.constraint(equalToConstant: 24), + ]) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} +struct ColorThemeItem { + let colorID: Int + let name: String + var color: UIColor + + init(colorID: Int, name: String, color: UIColor = .label) { + self.colorID = colorID + self.name = name + self.color = color + } +} + +class BHColorThemeViewController: UIViewController { + + var colors = [ + ColorThemeItem(colorID: 1, name: "Blue", color: UIColor(argbHexString: "#1D9BF0")!), + ColorThemeItem(colorID: 2, name: "Yellow", color: UIColor(argbHexString: "#FFD400")!), + ColorThemeItem(colorID: 3, name: "Red", color: UIColor(argbHexString: "#F91880")!), + ColorThemeItem(colorID: 4, name: "Purple", color: UIColor(argbHexString: "#7856FF")!), + ColorThemeItem(colorID: 5, name: "Orange", color: UIColor(argbHexString: "#FF7A00")!), + ColorThemeItem(colorID: 6, name: "Green", color: UIColor(argbHexString: "#00BA7C")!), + ] { + didSet { + colorCollectionView.reloadData() + } + } + lazy var colorCollectionView: UICollectionView = { + let collection = UICollectionView(frame: .zero, collectionViewLayout: UICollectionViewFlowLayout()) + collection.contentInsetAdjustmentBehavior = .always + collection.register(ColorThemeCell.self, forCellWithReuseIdentifier: "colorItem") + collection.delegate = self + collection.dataSource = self + collection.translatesAutoresizingMaskIntoConstraints = false + return collection + }() + + var headerLabel: UILabel = { + let label = UILabel() + label.text = "Choose a theme color for your Twitter experience that can be seen by you." + label.textColor = .secondaryLabel + label.numberOfLines = 0 + label.font = .systemFont(ofSize: 15) + label.textAlignment = .justified + label.translatesAutoresizingMaskIntoConstraints = false + return label + }() + + override func viewDidLoad() { + super.viewDidLoad() + self.view.backgroundColor = .systemBackground + self.view.addSubview(headerLabel) + self.view.addSubview(colorCollectionView) + + NSLayoutConstraint.activate([ + headerLabel.topAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.topAnchor), + headerLabel.leadingAnchor.constraint(equalTo: self.view.leadingAnchor, constant: 16), + headerLabel.trailingAnchor.constraint(equalTo: self.view.trailingAnchor, constant: -16), + + colorCollectionView.topAnchor.constraint(equalTo: self.headerLabel.bottomAnchor), + colorCollectionView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor), + colorCollectionView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor), + colorCollectionView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor), + ]) + + } + override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { + colorCollectionView.collectionViewLayout.invalidateLayout() + super.viewWillTransition(to: size, with: coordinator) + } +} + +extension BHColorThemeViewController: UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout { + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + return self.colors.count + } + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "colorItem", for: indexPath) as! ColorThemeCell + let currCell = self.colors[indexPath.row] + + cell.colorLabel.text = currCell.name + cell.colorLabel.backgroundColor = currCell.color + + if (UserDefaults.standard.object(forKey: "bh_color_theme_selectedColor") != nil) { + let selectedColor = UserDefaults.standard.integer(forKey: "bh_color_theme_selectedColor") + switch selectedColor { + case 1: + if (currCell.colorID == 1) { + collectionView.visibleCells.forEach { cell in + guard let colorCell = cell as? ColorThemeCell else {return} + colorCell.checkIMG.image = .init(systemName: "circle") + } + cell.checkIMG.image = .init(systemName: "checkmark.circle") + } + case 2: + if (currCell.colorID == 2) { + collectionView.visibleCells.forEach { cell in + guard let colorCell = cell as? ColorThemeCell else {return} + colorCell.checkIMG.image = .init(systemName: "circle") + } + cell.checkIMG.image = .init(systemName: "checkmark.circle") + } + case 3: + if (currCell.colorID == 3) { + collectionView.visibleCells.forEach { cell in + guard let colorCell = cell as? ColorThemeCell else {return} + colorCell.checkIMG.image = .init(systemName: "circle") + } + cell.checkIMG.image = .init(systemName: "checkmark.circle") + } + case 4: + if (currCell.colorID == 4) { + collectionView.visibleCells.forEach { cell in + guard let colorCell = cell as? ColorThemeCell else {return} + colorCell.checkIMG.image = .init(systemName: "circle") + } + cell.checkIMG.image = .init(systemName: "checkmark.circle") + } + case 5: + if (currCell.colorID == 5) { + collectionView.visibleCells.forEach { cell in + guard let colorCell = cell as? ColorThemeCell else {return} + colorCell.checkIMG.image = .init(systemName: "circle") + } + cell.checkIMG.image = .init(systemName: "checkmark.circle") + } + case 6: + if (currCell.colorID == 6) { + collectionView.visibleCells.forEach { cell in + guard let colorCell = cell as? ColorThemeCell else {return} + colorCell.checkIMG.image = .init(systemName: "circle") + } + cell.checkIMG.image = .init(systemName: "checkmark.circle") + } + default: + break + } + } else { + if (currCell.colorID == 0) { + cell.checkIMG.image = .init(systemName: "checkmark.circle") + } + } + + return cell + } + + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + let colorItem = self.colors[indexPath.row] + collectionView.visibleCells.forEach { cell in + guard let colorCell = cell as? ColorThemeCell else {return} + colorCell.checkIMG.image = .init(systemName: "circle") + } + guard let currCell = collectionView.cellForItem(at: indexPath) as? ColorThemeCell else {return} + currCell.checkIMG.image = .init(systemName: "checkmark.circle") + UserDefaults.standard.set(colorItem.colorID, forKey: "bh_color_theme_selectedColor") + BH_changeTwitterColor(colorItem.colorID) + } + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets { + return UIEdgeInsets(top: 16, left: 16, bottom: 16, right: 16) + } + + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat { + return 10 + } + + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat { + return 10 + } + + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { + return CGSize(width: 98, height: 74) + } +} + +// https://github.com/SwifterSwift/SwifterSwift/ +public extension UIColor { + /// SwifterSwift: Create Color from RGB values with optional transparency. + /// + /// - Parameters: + /// - red: red component. + /// - green: green component. + /// - blue: blue component. + /// - transparency: optional transparency value (default is 1). + convenience init?(red: Int, green: Int, blue: Int, transparency: CGFloat = 1) { + guard red >= 0, red <= 255 else { return nil } + guard green >= 0, green <= 255 else { return nil } + guard blue >= 0, blue <= 255 else { return nil } + + var trans = transparency + if trans < 0 { trans = 0 } + if trans > 1 { trans = 1 } + + self.init(red: CGFloat(red) / 255.0, green: CGFloat(green) / 255.0, blue: CGFloat(blue) / 255.0, alpha: trans) + } + + /// SwifterSwift: Create Color from hexadecimal string in the format ARGB (alpha-red-green-blue). + /// + /// - Parameters: + /// - argbHexString: hexadecimal string (examples: 7FEDE7F6, 0x7FEDE7F6, #7FEDE7F6, #f0ff, 0xFF0F, ..). + convenience init?(argbHexString: String) { + var string = argbHexString.replacingOccurrences(of: "0x", with: "").replacingOccurrences(of: "#", with: "") + + if string.count <= 4 { // convert hex to long format if in short format + var str = "" + for character in string { + str.append(String(repeating: String(character), count: 2)) + } + string = str + } + + guard let hexValue = Int(string, radix: 16) else { return nil } + + let hasAlpha = string.count == 8 + + let alpha = hasAlpha ? (hexValue >> 24) & 0xFF : 0xFF + let red = (hexValue >> 16) & 0xFF + let green = (hexValue >> 8) & 0xFF + let blue = hexValue & 0xFF + + self.init(red: red, green: green, blue: blue, transparency: CGFloat(alpha) / 255) + } +}