vkpc-mac/VKPC/HostsHackWindowController.m
2015-08-14 01:04:22 +03:00

106 lines
4.7 KiB
Objective-C

//
// HostsHackWindowController.m
// VKPC
//
// Created by Eugene on 10/30/14.
// Copyright (c) 2014 Eugene Z. All rights reserved.
//
#import "HostsHackWindowController.h"
#import "HostsHack.h"
// TODO rewrite using normal coords
@implementation HostsHackWindowController {
NSMutableAttributedString *configurationRequired;
NSView *contentView;
}
- (BOOL)allowsClosingWithShortcut {
return YES;
}
- (void)windowDidLoad {
[super windowDidLoad];
contentView = self.window.contentView;
NSTextFieldCell *cell = (NSTextFieldCell *)_configurationRequiredTextField.cell;
NSString *configurationTextHTML = [NSString stringWithFormat:
@"<html><span style=\"font-family: %@;\">"
"<span style=\"line-height: 10px; font-size: 14px\"><b>Welcome to VK Player Controller!</b></span>"
"<span style=\"font-size: 6px\"><br/><br/></span>"
"<span style=\"font-size: 13px\">"
"Let's make one magic trick with system DNS settings, it's necessary for a proper work of VK Player Controller. Don't worry, <b>it's absolutely safe</b>. Please press <b>Continue</b> button below."
// "For VK Player Controller to work it is necessary to do some hacking with DNS resolution configuration. Press <b>Continue</b> to continue."
"</span>"
"<span style=\"font-size: 7px\"><br/><br/></span>"
"<span style=\"font-size: 12px; color: #707070;\">"
"The app modifies the file <b>%@</b>. If you don't trust us, open that file manually with admin privileges, add this line: <b>127.0.0.1\t%@</b>, save it and relaunch the app."
"</span>"
"</span></html>",
//GetSystemFontName(),
@"Helvetica Neue",
[NSString stringWithUTF8String:VKPCHostsFile],
[NSString stringWithUTF8String:VKPCWSClientHost]];
configurationRequired = [[NSMutableAttributedString alloc] initWithHTML:[configurationTextHTML dataUsingEncoding:NSUTF8StringEncoding]
options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)}
documentAttributes:nil];
[_configurationRequiredTextField setAttributedStringValue:configurationRequired];
[cell setWraps:YES];
// Position text
NSRect textFrame = _configurationRequiredTextField.frame;
float textHeight = [configurationRequired boundingRectWithSize:CGSizeMake(textFrame.size.width, FLT_MAX) options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading].size.height;
textFrame.origin.y += textFrame.size.height - textHeight;
textFrame.size.height = textHeight;
[_configurationRequiredTextField setFrame:textFrame];
// Position button
NSRect buttonFrame = _button.frame;
float padding = contentView.frame.size.height - (textFrame.origin.y + textFrame.size.height);
float buttonPadding = 20;
float buttonY = [self.window.contentView frame].size.height - textHeight - padding * 2 - buttonFrame.size.height;
buttonFrame.origin.y = buttonY;
[_button setFrame:buttonFrame];
float windowHeight = contentView.frame.size.height - buttonFrame.origin.y + padding + buttonPadding;
NSRect windowFrame = self.window.frame;
windowFrame.origin.y += windowFrame.size.height;
windowFrame.origin.y -= windowHeight;
windowFrame.size.height = windowHeight;
[self.window setFrame:windowFrame display:YES];
}
- (void)setButtonContinue {
[_button setTitle:@"Continue"];
[_button setEnabled:YES];
}
- (void)setButtonRetry {
[_button setTitle:@"Retry"];
[_button setEnabled:YES];
}
- (void)setButtonWait {
[_button setTitle:@"Please wait.."];
[_button setEnabled:NO];
}
- (IBAction)buttonPressed:(id)sender {
[HostsHack hack];
}
- (void)showWindow:(id)sender {
[self setButtonContinue];
[super showWindow:sender];
[self.window setDefaultButtonCell:_button.cell];
}
@end