ServerSettingViewController.m 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556
  1. //
  2. // LoginSettingViewController.m
  3. // RA Image
  4. //
  5. // Created by Jack on 2017/4/27.
  6. // Copyright © 2017年 USAI. All rights reserved.
  7. //
  8. #import "ServerSettingViewController.h"
  9. //#import "ScannerViewController.h"
  10. #import "RAQRCodeScannerViewController.h"
  11. #import "RAUtils.h"
  12. #import "RAUploadManager.h"
  13. #import "AppDelegate.h"
  14. #import "RADataProvider.h"
  15. #import "ZipArchive.h"
  16. #import "AboutViewController.h"
  17. #import "WebViewController.h"
  18. @interface ServerSettingViewController ()<UITextFieldDelegate>
  19. @property (strong, nonatomic) IBOutlet UITextField *nameTextField;
  20. @property (strong, nonatomic) IBOutlet UITextField *internalTextField;
  21. @property (nonatomic,copy) NSString *checkedAddress;
  22. @end
  23. @implementation ServerSettingViewController
  24. - (IBAction)onAboutClick:(id)sender {
  25. AboutViewController * aboutVC =[[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"AboutViewController"];
  26. // loginvc.delegate = self;
  27. // loginvc.modalPresentationStyle = UIModalPresentationFormSheet;//有三种状态,自己看看是哪种
  28. UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:aboutVC] ;
  29. // [self hackModalSheetSize:CGSizeMake(450, 200) ofVC:navi];
  30. navi.modalPresentationStyle = UIModalPresentationFormSheet;//有三种状态,自己看看是哪种
  31. [self presentViewController:navi animated:YES completion:^{
  32. // navi.view.superview.bounds = CGRectMake(0, 0, 480, 320);
  33. DebugLog(@"about present.........");
  34. // self.btop = false;
  35. // <#code#>
  36. }];
  37. }
  38. - (IBAction)onPrivacyClick:(id)sender {
  39. NSString* url = URL_PRIVACY;
  40. NSString* title = @"Privacy Policy";
  41. WebViewController *ViewController = [[UIStoryboard storyboardWithName:@"wkweb" bundle:nil] instantiateViewControllerWithIdentifier:@"WebViewController"];
  42. ViewController.url = url;
  43. ViewController.title = title;
  44. [self.navigationController pushViewController:ViewController animated:YES];
  45. }
  46. - (void)viewDidLoad {
  47. [super viewDidLoad];
  48. // return;
  49. // Do any additional setup after loading the view.
  50. // UIView *v = [UIView new];
  51. // [self.view insertSubview:v atIndex:0];
  52. // self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStylePlain target:self action:@selector(doneItemClick:)];
  53. // self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Scan" style:UIBarButtonItemStylePlain target:self action:@selector(scanItemClick:)];
  54. //
  55. [self loadAddress];
  56. // [self registListenKeyboard];
  57. RAUPloadManagerConfigure *configure = [[RAUPloadManagerConfigure alloc] init];
  58. self.autoSwitch.on = configure.autoUpload;
  59. // self.autoRmFinishSwitch.on = autoRmFinish;
  60. // self.autoRmErrorSwith.on = autoRmErr;
  61. self.retryCountBox.text = [NSString stringWithFormat:@"%d",configure.retryCount];
  62. self.retryTimeIntervalBox.text = [NSString stringWithFormat:@"%d",(int)configure.retryTimeIntetval];
  63. [self loadTemplate];
  64. }
  65. - (void)didReceiveMemoryWarning {
  66. [super didReceiveMemoryWarning];
  67. // Dispose of any resources that can be recreated.
  68. }
  69. - (id)userDefaultsValue:(NSString *)key {
  70. return [[NSUserDefaults standardUserDefaults] valueForKey:key];
  71. }
  72. - (void)loadAddress {
  73. NSDictionary *addressDic = [self userDefaultsValue:kScanAddress];
  74. if (addressDic) {
  75. NSString* ia=addressDic[@"internalAddress"];
  76. NSString* ea=addressDic[@"externalAddress"];
  77. NSString* sa=addressDic[@"serverAddress"];
  78. if(sa.length==0)
  79. {
  80. if(ea.length>0)
  81. sa=ea;
  82. else if(ia.length>0)
  83. sa=ia;
  84. }
  85. self.internalTextField.text = sa;
  86. self.nameTextField.text = [addressDic objectForKey:@"name"];
  87. // NSUInteger selectedIndex = [[addressDic objectForKey:@"selectedIndex"] integerValue];
  88. // switch (selectedIndex) {
  89. // case 0:
  90. // case 1: {
  91. // [self internalCheckBtnClick:self.internalCheckBtn];
  92. // }
  93. // break;
  94. // case 2: {
  95. // [self externalCheckBtnClick:self.externalCheckBtn];
  96. // }
  97. // break;
  98. //
  99. // default:
  100. // break;
  101. // }
  102. } else {
  103. // [self internalCheckBtnClick:self.internalCheckBtn];
  104. }
  105. }
  106. - (void)loadTemplate {
  107. NSDictionary *addressDic = [self userDefaultsValue:@"ScanTemplate"];
  108. if (addressDic) {
  109. NSString* updatetime=addressDic[@"updatetime"];
  110. self.labelUpdate.text = updatetime;
  111. }
  112. }
  113. #pragma mark - Button Click
  114. - (void)doneItemClick:(UIBarButtonItem *)sender {
  115. self.checkedAddress = nil;
  116. NSUInteger selectedIndex = 1;
  117. self.checkedAddress = self.internalTextField.text;
  118. // if (self.internalCheckBtn.selected) {
  119. // self.checkedAddress = self.internalTextField.text;
  120. // selectedIndex = 1;
  121. // }
  122. // if (self.externalCheckBtn.selected) {
  123. // self.checkedAddress = self.externalTextField.text;
  124. // selectedIndex = 2;
  125. // }
  126. // if (self.returnValue) {
  127. // self.returnValue(self.nameTextField.text, self.checkedAddress);
  128. // }
  129. __weak typeof(self) weakself = self;
  130. [self.navigationController dismissViewControllerAnimated:YES completion:^{
  131. if (weakself.checkedAddress.length) {
  132. // 保存信息
  133. NSString *name = weakself.nameTextField.text;
  134. NSString *internalAddr = weakself.internalTextField.text;
  135. // NSString *externalAddr = weakself.externalTextField.text;
  136. NSMutableDictionary *addressDic = [NSMutableDictionary dictionary];
  137. if (internalAddr.length) {
  138. [addressDic setObject:internalAddr forKey:@"serverAddress"];
  139. }
  140. // if (externalAddr.length) {
  141. // [addressDic setObject:externalAddr forKey:@"externalAddress"];
  142. // }
  143. if (name.length) {
  144. [addressDic setObject:name forKey:@"name"];
  145. }
  146. [addressDic setObject:@(selectedIndex) forKey:@"selectedIndex"];
  147. [weakself setUserDefaultsValue:addressDic forKey:kScanAddress];
  148. }
  149. }];
  150. }
  151. - (void)setUserDefaultsValue:(id)value forKey:(NSString *)key {
  152. NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
  153. [userDefaults setValue:value forKey:key];
  154. [userDefaults synchronize];
  155. }
  156. - (IBAction)onUnlockCodeClick:(id)sender {
  157. }
  158. - (IBAction)onUpdateClick:(id)sender {
  159. if(self.internalTextField.text.length>0)
  160. {
  161. AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
  162. NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
  163. NSString *documents = [paths objectAtIndex:0];
  164. // NSString* file_name=[appDelegate.downloadurl lastPathComponent];
  165. dispatch_async(dispatch_get_global_queue(0, 0), ^{
  166. NSData* download_data = [NSData dataWithContentsOfURL:[NSURL URLWithString:appDelegate.downloadurl]];
  167. dispatch_async(dispatch_get_main_queue(), ^{
  168. if(download_data!=nil)
  169. {
  170. NSString* file_name=[appDelegate.downloadurl lastPathComponent];
  171. NSString* path = [documents stringByAppendingPathComponent:file_name];
  172. [RAUtils saveData:download_data toPath:path];
  173. ZipArchive* zip = [[ZipArchive alloc] init];
  174. NSString* unZipTo=[documents stringByAppendingPathComponent:@"download"];
  175. // NSFileManager* fileManager=[NSFileManager defaultManager];
  176. // [fileManager removeItemAtPath:unZipTo error:nil];
  177. // NSString *unZipTo = [temp stringByAppendingPathComponent:unziplocation];
  178. //
  179. // NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
  180. // NSString *documentPath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
  181. //NSString* zipFile = [documentPath stringByAppendingString:@"/images.zip"] ;
  182. // NSString* unZipTo = img_cache;//[documentPath stringByAppendingString:@"/images"] ;
  183. DebugLog(@"path: %@",unZipTo);
  184. if( [zip UnzipOpenFile:path Password:nil] ){
  185. BOOL result = [zip UnzipFileTo:unZipTo overWrite:YES];
  186. if( NO==result )
  187. {
  188. // int aaa=0;
  189. //解压失败
  190. [zip UnzipCloseFile];
  191. //文件损坏,删除文件重试
  192. NSFileManager* fileManager=[NSFileManager defaultManager];
  193. //debug
  194. // BOOL blDele= [fileManager removeItemAtPath:zipFile error:nil];
  195. [fileManager removeItemAtPath:path error:nil];
  196. [fileManager removeItemAtPath:unZipTo error:nil];
  197. [RAUtils message_alert:@"Can not unzip template file, please try download again." title:@"Warrning" controller:self];
  198. }
  199. else
  200. {
  201. [zip UnzipCloseFile];
  202. NSFileManager *fileManager = [NSFileManager defaultManager];
  203. [fileManager removeItemAtPath:path error:nil];
  204. [RAUtils message_alert:@"Update templete file successful." title:@"Message" controller:self];
  205. NSMutableDictionary *templateDic = [NSMutableDictionary dictionary];
  206. NSString* datetime= [RAUtils current_date_time];
  207. templateDic[@"updatetime"]= datetime;
  208. [self setUserDefaultsValue:templateDic forKey:@"ScanTemplate"];
  209. [self loadTemplate];
  210. }
  211. //[zip UnzipCloseFile];
  212. }
  213. else
  214. {
  215. //打开文件失败,通常是文件路径有问题或密码错误。
  216. [RAUtils message_alert:@"Can not unzip template file, please contact the Administrator." title:@"Warrning" controller:self];
  217. // NSFileManager *fileManager = [NSFileManager defaultManager];
  218. // [fileManager removeItemAtPath:zipFile error:nil];
  219. }
  220. // [iSalesDB cache_img:downloadimg_data filename:file_name saveTo:img_url];
  221. //
  222. // UIImage * img =[UIImage imageWithData:downloadimg_data];
  223. // cell.imageView.image=img;
  224. }
  225. else
  226. [RAUtils message_alert:@"Can not download template file, please check your server setting or contact the Administrator." title:@"Warrning" controller:self];
  227. // cell.imageView.image=[UIImage imageNamed:@"notfound_s"];
  228. });
  229. });
  230. // NSData* downloadimg_data = [NSData dataWithContentsOfURL:[NSURL URLWithString:appDelegate.downloadurl]];
  231. // [RADataProvider downloadFileOffset:0 Param:nil from:appDelegate.downloadurl method:@"post" toPath:[documents stringByAppendingPathComponent:file_name] progressHandler:nil completionHandler:^(NSMutableDictionary *result) {
  232. // int i=0; ;
  233. // }];
  234. }
  235. else
  236. {
  237. [RAUtils message_alert:@"Please setup the server first." title:@"Warrning" controller:self];
  238. }
  239. }
  240. - (IBAction)onScanClick:(id)sender {
  241. __weak typeof(self) weakself = self;
  242. // ScannerViewController *scannerVC = [[UIStoryboard storyboardWithName:@"cam_scan" bundle:nil] instantiateViewControllerWithIdentifier:@"NewScannerViewController"];
  243. // scannerVC.returnCode = ^(NSString *code) {
  244. // // 扫描成功保存扫描值
  245. // if (weakself) {
  246. // __strong typeof(weakself) strongSelf = weakself;
  247. // [strongSelf processScanResult:code];
  248. // }
  249. // };
  250. // [self presentViewController:scannerVC animated:YES completion:nil];
  251. RAQRCodeScannerViewController *scannerVC = [[UIStoryboard storyboardWithName:@"QRCode" bundle:nil] instantiateViewControllerWithIdentifier:@"RAQRCodeScannerViewControllerAuto"];
  252. // RAQRCodeScannerViewController *scannerVC = [RAQRCodeScannerViewController viewControllerFromStoryboard];
  253. scannerVC.QRCodeViewControllerDidCompletion = ^(RAQRCodeScannerViewController *qrcodeViewController, NSString *value) {
  254. if (weakself) {
  255. __strong typeof(weakself) strongSelf = weakself;
  256. [strongSelf processScanResult:value];
  257. }
  258. [qrcodeViewController dismissViewControllerAnimated:YES completion:nil];
  259. };
  260. scannerVC.QRCodeViewControllerDidCanceled = ^(RAQRCodeScannerViewController *qrcodeViewController) {
  261. [qrcodeViewController dismissViewControllerAnimated:YES completion:nil];
  262. };
  263. [self presentViewController:scannerVC animated:YES completion:nil];
  264. }
  265. - (void)scanItemClick:(UIBarButtonItem *)sender {
  266. __weak typeof(self) weakself = self;
  267. // ScannerViewController *scannerVC = [[UIStoryboard storyboardWithName:@"cam_scan" bundle:nil] instantiateViewControllerWithIdentifier:@"NewScannerViewController"];
  268. // scannerVC.returnCode = ^(NSString *code) {
  269. // // 扫描成功保存扫描值
  270. // if (weakself) {
  271. // __strong typeof(weakself) strongSelf = weakself;
  272. // [strongSelf processScanResult:code];
  273. // }
  274. // };
  275. // [self presentViewController:scannerVC animated:YES completion:nil];
  276. RAQRCodeScannerViewController *scannerVC = [RAQRCodeScannerViewController viewControllerFromStoryboard];
  277. scannerVC.QRCodeViewControllerDidCompletion = ^(RAQRCodeScannerViewController *qrcodeViewController, NSString *value) {
  278. if (weakself) {
  279. __strong typeof(weakself) strongSelf = weakself;
  280. [strongSelf processScanResult:value];
  281. }
  282. [qrcodeViewController dismissViewControllerAnimated:YES completion:nil];
  283. };
  284. scannerVC.QRCodeViewControllerDidCanceled = ^(RAQRCodeScannerViewController *qrcodeViewController) {
  285. [qrcodeViewController dismissViewControllerAnimated:YES completion:nil];
  286. };
  287. [self presentViewController:scannerVC animated:YES completion:nil];
  288. }
  289. //- (IBAction)internalCheckBtnClick:(UIButton *)sender {
  290. // sender.selected = !sender.selected;
  291. // if (sender.selected) self.externalCheckBtn.selected = NO;
  292. //}
  293. //
  294. //- (IBAction)externalCheckBtnClick:(UIButton *)sender {
  295. // sender.selected = !sender.selected;
  296. // if (sender.selected) self.internalCheckBtn.selected = NO;
  297. //}
  298. #pragma mark - TextField Delegate
  299. - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
  300. self.currentFirstResponder = textField;
  301. return YES;
  302. }
  303. - (BOOL)textFieldShouldEndEditing:(UITextField *)textField {
  304. return YES;
  305. }
  306. #pragma mark - Private
  307. - (void)processScanResult:(NSString *)result {
  308. if (result.length) {
  309. NSArray *dataArr = [result componentsSeparatedByString:@";"];
  310. if (dataArr.count == 3) {
  311. NSString *name = [dataArr objectAtIndex:0];
  312. NSString *internalAddr = [dataArr objectAtIndex:2];
  313. // NSString *externalAddr = [dataArr objectAtIndex:2];
  314. self.nameTextField.text = name;
  315. self.internalTextField.text = internalAddr;
  316. // strongself.externalTextField.text = externalAddr;
  317. }
  318. else if (dataArr.count == 2) {
  319. NSString *name = [dataArr objectAtIndex:0];
  320. NSString *internalAddr = [dataArr objectAtIndex:1];
  321. // NSString *externalAddr = [dataArr objectAtIndex:2];
  322. self.nameTextField.text = name;
  323. self.internalTextField.text = internalAddr;
  324. // strongself.externalTextField.text = externalAddr;
  325. }
  326. else {
  327. [RAUtils message_alert:@"Wrong QR-CODE?" title:@"Can not setup server" controller:self];
  328. // [RAUtils alert_view:@"Wrong QR-CODE?" title:@"Can not setup server"];
  329. // strongself.nameTextField.text = nil;
  330. // strongself.internalTextField.text = [dataArr firstObject];
  331. // strongself.externalTextField.text = nil;
  332. }
  333. self.checkedAddress = nil;
  334. NSUInteger selectedIndex = 1;
  335. self.checkedAddress = self.internalTextField.text;
  336. // if (self.returnValue) {
  337. // self.returnValue(self.nameTextField.text, self.checkedAddress);
  338. // }
  339. if (self.checkedAddress.length) {
  340. // 保存信息
  341. NSString *name = self.nameTextField.text;
  342. NSString *internalAddr = self.internalTextField.text;
  343. // NSString *externalAddr = weakself.externalTextField.text;
  344. NSMutableDictionary *addressDic = [NSMutableDictionary dictionary];
  345. if (internalAddr.length) {
  346. [addressDic setObject:internalAddr forKey:@"serverAddress"];
  347. }
  348. // if (externalAddr.length) {
  349. // [addressDic setObject:externalAddr forKey:@"externalAddress"];
  350. // }
  351. if (name.length) {
  352. [addressDic setObject:name forKey:@"name"];
  353. }
  354. [addressDic setObject:@(selectedIndex) forKey:@"selectedIndex"];
  355. [self setUserDefaultsValue:addressDic forKey:kScanAddress];
  356. AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
  357. appDelegate.address = [addressDic objectForKey:@"serverAddress"];
  358. }
  359. }
  360. }
  361. - (IBAction)onNameChange:(id)sender {
  362. self.checkedAddress = nil;
  363. NSUInteger selectedIndex = 1;
  364. self.checkedAddress = self.internalTextField.text;
  365. // 保存信息
  366. NSString *name = self.nameTextField.text;
  367. NSString *internalAddr = self.internalTextField.text;
  368. // NSString *externalAddr = weakself.externalTextField.text;
  369. NSMutableDictionary *addressDic = [NSMutableDictionary dictionary];
  370. if (internalAddr.length) {
  371. [addressDic setObject:internalAddr forKey:@"serverAddress"];
  372. }
  373. // if (externalAddr.length) {
  374. // [addressDic setObject:externalAddr forKey:@"externalAddress"];
  375. // }
  376. if (name.length) {
  377. [addressDic setObject:name forKey:@"name"];
  378. }
  379. [addressDic setObject:@(selectedIndex) forKey:@"selectedIndex"];
  380. [self setUserDefaultsValue:addressDic forKey:kScanAddress];
  381. }
  382. - (IBAction)onServerChange:(id)sender {
  383. self.checkedAddress = nil;
  384. NSUInteger selectedIndex = 1;
  385. self.checkedAddress = self.internalTextField.text;
  386. // 保存信息
  387. NSString *name = self.nameTextField.text;
  388. NSString *internalAddr = self.internalTextField.text;
  389. // NSString *externalAddr = weakself.externalTextField.text;
  390. NSMutableDictionary *addressDic = [NSMutableDictionary dictionary];
  391. if (internalAddr.length) {
  392. [addressDic setObject:internalAddr forKey:@"serverAddress"];
  393. }
  394. // if (externalAddr.length) {
  395. // [addressDic setObject:externalAddr forKey:@"externalAddress"];
  396. // }
  397. if (name.length) {
  398. [addressDic setObject:name forKey:@"name"];
  399. }
  400. [addressDic setObject:@(selectedIndex) forKey:@"selectedIndex"];
  401. [self setUserDefaultsValue:addressDic forKey:kScanAddress];
  402. AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
  403. appDelegate.address = [addressDic objectForKey:@"serverAddress"];
  404. }
  405. - (IBAction)onAutoUpload:(id)sender {
  406. BOOL autoUpload = self.autoSwitch.isOn;
  407. [RAUploadManager configureUploadManager:^(RAUPloadManagerConfigure *configure) {
  408. configure.autoUpload = autoUpload;
  409. }];
  410. }
  411. - (IBAction)onRetryChange:(id)sender {
  412. int retryCount = [self.retryCountBox.text intValue];
  413. [RAUploadManager configureUploadManager:^(RAUPloadManagerConfigure *configure) {
  414. configure.retryCount = retryCount;
  415. }];
  416. }
  417. - (IBAction)onWaitingChange:(id)sender {
  418. int retryTimeInterval = [self.retryTimeIntervalBox.text intValue];
  419. [RAUploadManager configureUploadManager:^(RAUPloadManagerConfigure *configure) {
  420. configure.retryTimeIntetval = retryTimeInterval;
  421. }];
  422. }
  423. @end