Make the About view into a UIMenu

- Only affects iOS 14
- About, Send your logs, Update all in one spot **EASY TO FIND**
- Also fixed a makefile error
- Also fixed a text field thing
This commit is contained in:
doregon committed 2021-08-09 02:05:41 -04:00
1 parent 79fe422e37
commit a0582d0f26
4 files changed
+71 -20

No files matched your search

+2 -2
View File
@@ -212,14 +212,14 @@ deploy:
Natives/build/PojavLauncher.app/PojavLauncher \
JavaApp/local_out/launcher.jar \
root@$(DEVICE_IP):/var/tmp; \
ssh root@$(DEVICE_IP) -p $(DEVICE_PORT) -t "mv /var/tmp/libawt_xawt.dylib /Applications/PojavLauncher.app/Frameworks/libawt_xawt.dylib && mv /var/tmp/libpojavexec.dylib /Applications/PojavLauncher.app/Frameworks/libpojavexec.dylib && mv /var/tmp/PojavLauncher /Applications/PojavLauncher.app/PojavLauncher && mv /var/tmp/launcher.jar /Applications/PojavLauncher.app/libs/launcher.jar && cd /Application/PojavLauncher.app/Frameworks && ln -sf libawt_xawt.dylib libawt_headless.dylib && killall PojavLauncher"; \
ssh root@$(DEVICE_IP) -p $(DEVICE_PORT) -t "mv /var/tmp/libawt_xawt.dylib /Applications/PojavLauncher.app/Frameworks/libawt_xawt.dylib && mv /var/tmp/libpojavexec.dylib /Applications/PojavLauncher.app/Frameworks/libpojavexec.dylib && mv /var/tmp/PojavLauncher /Applications/PojavLauncher.app/PojavLauncher && mv /var/tmp/launcher.jar /Applications/PojavLauncher.app/libs/launcher.jar && cd /Applications/PojavLauncher.app/Frameworks && ln -sf libawt_xawt.dylib libawt_headless.dylib && killall PojavLauncher"; \
else \
scp -o "StrictHostKeyChecking no" -o "UserKnownHostsFile=/dev/null" Natives/build/libpojavexec.dylib \
Natives/build/libawt_xawt.dylib \
Natives/build/PojavLauncher.app/PojavLauncher \
JavaApp/local_out/launcher.jar \
root@$(DEVICE_IP):/var/tmp; \
ssh root@$(DEVICE_IP) -t "mv /var/tmp/libawt_xawt.dylib /Applications/PojavLauncher.app/Frameworks/libawt_xawt.dylib && mv /var/tmp/libpojavexec.dylib /Applications/PojavLauncher.app/Frameworks/libpojavexec.dylib && mv /var/tmp/PojavLauncher /Applications/PojavLauncher.app/PojavLauncher && mv /var/tmp/launcher.jar /Applications/PojavLauncher.app/libs/launcher.jar && cd /Application/PojavLauncher.app/Frameworks && ln -sf libawt_xawt.dylib libawt_headless.dylib && killall PojavLauncher"; \
ssh root@$(DEVICE_IP) -t "mv /var/tmp/libawt_xawt.dylib /Applications/PojavLauncher.app/Frameworks/libawt_xawt.dylib && mv /var/tmp/libpojavexec.dylib /Applications/PojavLauncher.app/Frameworks/libpojavexec.dylib && mv /var/tmp/PojavLauncher /Applications/PojavLauncher.app/PojavLauncher && mv /var/tmp/launcher.jar /Applications/PojavLauncher.app/libs/launcher.jar && cd /Applications/PojavLauncher.app/Frameworks && ln -sf libawt_xawt.dylib libawt_headless.dylib && killall PojavLauncher"; \
fi; \
else \
echo 'You need to run '\''export DEVICE_IP=<your iOS device IP>'\'' to use make deploy.'; \
+15 -9
View File
@@ -60,14 +60,22 @@
[scrollView addSubview:logoVerView];
[logoVerView setFont:[UIFont boldSystemFontOfSize:20]];
UIButton *updateHistoryButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[updateHistoryButton setTitle:@"See the recent changelog." forState:UIControlStateNormal];
updateHistoryButton.frame = CGRectMake(4, logoVerView.frame.origin.y + logoVerView.frame.size.height + 5, width - 8, 25.0);
updateHistoryButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
[updateHistoryButton addTarget:self action:@selector(updateHistory) forControlEvents:UIControlEventTouchUpInside];
[scrollView addSubview:updateHistoryButton];
CGFloat logoNoteViewOriginY;
if(@available (iOS 14.0, *)) {
// UIMenu on the main screen
logoNoteViewOriginY = logoVerView.frame.origin.y + logoVerView.frame.size.height + 5;
} else {
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Send your logs" style:UIBarButtonItemStyleDone target:self action:@selector(latestLogShare)];
UIButton *updateHistoryButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[updateHistoryButton setTitle:@"See the recent changelog." forState:UIControlStateNormal];
updateHistoryButton.frame = CGRectMake(4, logoVerView.frame.origin.y + logoVerView.frame.size.height + 5, width - 8, 25.0);
updateHistoryButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
[updateHistoryButton addTarget:self action:@selector(updateHistory) forControlEvents:UIControlEventTouchUpInside];
[scrollView addSubview:updateHistoryButton];
logoNoteViewOriginY = logoVerView.frame.origin.y + logoVerView.frame.size.height + updateHistoryButton.frame.origin.y + updateHistoryButton.frame.size.height + 9;
}
UILabel *logoNoteView = [[UILabel alloc] initWithFrame:CGRectMake(4.0, updateHistoryButton.frame.origin.y + updateHistoryButton.frame.size.height + 9.0, width - 8, 700)];
UILabel *logoNoteView = [[UILabel alloc] initWithFrame:CGRectMake(4.0, logoNoteViewOriginY, width - 8, 700)];
logoNoteView.text = @"Created by PojavLauncherTeam in 2021. We do not exist on TikTok. No one from the dev team makes TikTok videos.\n\nDuyKhanhTran - lead iOS port developer\nDoregon - iOS port developer\nSpecial thanks to Hayden Seay, for porting OpenJDK 16, making this possible, and hosting on Procursus.";
logoNoteView.lineBreakMode = NSLineBreakByWordWrapping;
logoNoteView.numberOfLines = 0;
@@ -88,8 +96,6 @@
[safetyNoteView sizeToFit];
[scrollView addSubview:safetyNoteView];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Send your logs" style:UIBarButtonItemStyleDone target:self action:@selector(latestLogShare)];
scrollView.contentSize = CGSizeMake(scrollView.frame.size.width, safetyNoteView.frame.origin.y + safetyNoteView.frame.size.height + 0);
}
+3 -4
View File
@@ -21,7 +21,6 @@
UITextField* rendTextField;
UITextField* jargsTextField;
UITextField* jhomeTextField;
UITextField* versionTextField;
- (void)viewDidLoad
{
@@ -73,7 +72,7 @@ UITextField* versionTextField;
[scrollView addSubview:jargsTextView];
jargsTextField = [[UITextField alloc] initWithFrame:CGRectMake(buttonSizeSlider.frame.origin.x + 3, 54.0, width - jargsTextView.bounds.size.width - 8.0, 30)];
[jargsTextField addTarget:versionTextField action:@selector(resignFirstResponder) forControlEvents:UIControlEventEditingDidEndOnExit];
[jargsTextField addTarget:self action:@selector(resignFirstResponder) forControlEvents:UIControlEventEditingDidEndOnExit];
jargsTextField.tag = 100;
jargsTextField.delegate = self;
jargsTextField.placeholder = @"Specify arguments...";
@@ -89,7 +88,7 @@ UITextField* versionTextField;
[scrollView addSubview:rendTextView];
rendTextField = [[UITextField alloc] initWithFrame:CGRectMake(buttonSizeSlider.frame.origin.x + 3, 94.0, width - jargsTextView.bounds.size.width - 8.0, 30)];
[rendTextField addTarget:versionTextField action:@selector(resignFirstResponder) forControlEvents:UIControlEventEditingDidEndOnExit];
[rendTextField addTarget:self action:@selector(resignFirstResponder) forControlEvents:UIControlEventEditingDidEndOnExit];
rendTextField.tag = 101;
rendTextField.delegate = self;
rendTextField.placeholder = @"Override renderer...";
@@ -105,7 +104,7 @@ UITextField* versionTextField;
[scrollView addSubview:jhomeTextView];
jhomeTextField = [[UITextField alloc] initWithFrame:CGRectMake(buttonSizeSlider.frame.origin.x + 3, 134.0, width - jargsTextView.bounds.size.width - 8.0, 30)];
[jhomeTextField addTarget:versionTextField action:@selector(resignFirstResponder) forControlEvents:UIControlEventEditingDidEndOnExit];
[jhomeTextField addTarget:self action:@selector(resignFirstResponder) forControlEvents:UIControlEventEditingDidEndOnExit];
jhomeTextField.tag = 102;
jhomeTextField.delegate = self;
jhomeTextField.placeholder = @"Override Java path...";
+51 -5
View File
@@ -9,6 +9,7 @@
#import "AboutLauncherViewController.h"
#import "LauncherFAQViewController.h"
#import "LauncherPreferences.h"
#import "UpdateHistoryViewController.h"
#include "ios_uikit_bridge.h"
#include "utils.h"
@@ -51,10 +52,12 @@ void loginAccountInput(UINavigationController *controller, int type, const char*
@interface LoginViewController () <ASWebAuthenticationPresentationContextProviding, UIPopoverPresentationControllerDelegate>{
}
@property (nonatomic, strong) ASWebAuthenticationSession *authVC;
@property (nonatomic, strong) UIActivityViewController *activityViewController;
@end
@implementation LoginViewController
@synthesize authVC;
@synthesize activityViewController;
- (void)viewDidLoad {
[super viewDidLoad];
@@ -97,33 +100,63 @@ void loginAccountInput(UINavigationController *controller, int type, const char*
[self.view addSubview:logoWaterView];
[logoWaterView setFont:[UIFont boldSystemFontOfSize:(logoView.frame.size.width / 2.0)]];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"About" style:UIBarButtonItemStyleDone target:self action:@selector(aboutLauncher)];
if(@available (iOS 14.0, *)) {
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"More" style:UIBarButtonItemStyleDone target:self action:@selector(aboutLauncher)];
UIAction *option1 = [UIAction actionWithTitle:@"About PojavLauncher" image:nil identifier:nil
handler:^(__kindof UIAction * _Nonnull action) {[self aboutLauncher];}];
UIAction *option2 = [UIAction actionWithTitle:@"Send your logs" image:nil identifier:nil
handler:^(__kindof UIAction * _Nonnull action) {[self latestLogShare];}];
UIAction *option3 = [UIAction actionWithTitle:@"Recent updates" image:nil identifier:nil
handler:^(__kindof UIAction * _Nonnull action) {[self updateHistory];}];
UIMenu *menu = [UIMenu menuWithTitle:@"" image:nil identifier:nil
options:UIMenuOptionsDisplayInline children:@[option1, option2, option3]];
self.navigationItem.rightBarButtonItem.action = nil;
self.navigationItem.rightBarButtonItem.primaryAction = nil;
self.navigationItem.rightBarButtonItem.menu = menu;
}
UIButton *button_faq = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button_faq setTitle:@"FAQ" forState:UIControlStateNormal];
[button_faq setTitle:@" FAQ" forState:UIControlStateNormal];
button_faq.frame = CGRectMake(widthSplit2 - (((width - widthSplit * 2.0) / 2) / 2), (height - 80.0), (width - widthSplit * 2.0) / 2, 40.0);
button_faq.backgroundColor = [UIColor colorWithRed:54/255.0 green:176/255.0 blue:48/255.0 alpha:1.0];
button_faq.layer.cornerRadius = 5;
[button_faq setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[button_faq addTarget:self action:@selector(showFAQ) forControlEvents:UIControlEventTouchUpInside];
if(@available (iOS 13.0, *)) {
button_faq.imageView.image = [[UIImage systemImageNamed:@"doc.text.fill"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
[button_faq setTintColor:[UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:1.0]];
[button_faq setImage:button_faq.imageView.image forState:UIControlStateNormal];
}
[scrollView addSubview:button_faq];
UIButton *button_login = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button_login setTitle:@"Sign In" forState:UIControlStateNormal];
[button_login setTitle:@" Sign In" forState:UIControlStateNormal];
button_login.frame = CGRectMake(button_faq.frame.origin.x - button_faq.frame.size.width - 20, (height - 80.0), (width - widthSplit * 2.0) / 2, 40.0);
button_login.backgroundColor = [UIColor colorWithRed:54/255.0 green:176/255.0 blue:48/255.0 alpha:1.0];
button_login.layer.cornerRadius = 5;
[button_login setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[button_login addTarget:self action:@selector(accountType:) forControlEvents:UIControlEventTouchUpInside];
if(@available (iOS 13.0, *)) {
button_login.imageView.image = [[UIImage systemImageNamed:@"person.crop.circle.fill.badge.plus"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
[button_login setTintColor:[UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:1.0]];
[button_login setImage:button_login.imageView.image forState:UIControlStateNormal];
}
[scrollView addSubview:button_login];
UIButton *button_accounts = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button_accounts setTitle:@"Accounts" forState:UIControlStateNormal];
[button_accounts setTitle:@" Accounts" forState:UIControlStateNormal];
button_accounts.frame = CGRectMake(button_faq.frame.origin.x + button_faq.frame.size.width + 20, (height - 80.0), (width - widthSplit * 2.0) / 2, 40.0);
button_accounts.backgroundColor = [UIColor colorWithRed:54/255.0 green:176/255.0 blue:48/255.0 alpha:1.0];
button_accounts.layer.cornerRadius = 5;
[button_accounts setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[button_accounts addTarget:self action:@selector(loginAccount:) forControlEvents:UIControlEventTouchUpInside];
if(@available (iOS 13.0, *)) {
button_accounts.imageView.image = [[UIImage systemImageNamed:@"person.crop.circle.fill"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
[button_accounts setTintColor:[UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:1.0]];
[button_accounts setImage:button_accounts.imageView.image forState:UIControlStateNormal];
}
[scrollView addSubview:button_accounts];
}
@@ -336,8 +369,8 @@ void loginAccountInput(UINavigationController *controller, int type, const char*
- (void)aboutLauncher
{
AboutLauncherViewController *vc = [[AboutLauncherViewController alloc] init];
[self.navigationController pushViewController:vc animated:YES];
AboutLauncherViewController *vc = [[AboutLauncherViewController alloc] init];
[self.navigationController pushViewController:vc animated:YES];
}
- (void)showFAQ
@@ -346,6 +379,19 @@ void loginAccountInput(UINavigationController *controller, int type, const char*
[self.navigationController pushViewController:vc animated:YES];
}
-(void)latestLogShare
{
NSString *latestlogPath = [NSString stringWithFormat:@"file://%s/Documents/.pojavlauncher/latestlog.old.txt", getenv("HOME")];
activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[@"latestlog.txt", [NSURL URLWithString:latestlogPath]] applicationActivities:nil];
[self presentViewController:activityViewController animated:YES completion:nil];
}
- (void)updateHistory {
UpdateHistoryViewController *vc = [[UpdateHistoryViewController alloc] init];
[self.navigationController pushViewController:vc animated:YES];
}
- (void)setPopoverProperties:(UIPopoverPresentationController *)controller sender:(UIButton *)sender {
if (controller != nil) {
controller.sourceView = sender;