PageRenderTime 52ms CodeModel.GetById 25ms RepoModel.GetById 0ms app.codeStats 0ms

/DigitoRJ/ViewController.m

https://gitlab.com/eduardo.alencar/digitorj
Objective C | 397 lines | 320 code | 66 blank | 11 comment | 184 complexity | da51e41850bebedfb8a3599e1cc7f649 MD5 | raw file
  1. //
  2. // ViewController.m
  3. // DigitoRJ
  4. //
  5. // Created by Eduardo on 01/02/13.
  6. // Copyright (c) 2013 Solution4Mac. All rights reserved.
  7. //
  8. #import "ViewController.h"
  9. @interface ViewController ()
  10. @end
  11. @implementation ViewController
  12. @synthesize bmigrar;
  13. @synthesize peoplePickerPopoverController;
  14. @synthesize lsufixo;
  15. @synthesize lasufixo;
  16. @synthesize lafundoCor;
  17. @synthesize snewName;
  18. - (void)viewDidLoad
  19. {
  20. [super viewDidLoad];
  21. // Do any additional setup after loading the view, typically from a nib.
  22. bnovo = YES;
  23. [snewName setOn:YES];
  24. [lsufixo setText:@"DigitoRJ"];
  25. [snewName setOn:bnovo];
  26. }
  27. - (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
  28. [theTextField resignFirstResponder];
  29. return YES;
  30. }
  31. - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
  32. [lsufixo resignFirstResponder];
  33. }
  34. -(IBAction)swapName:(id) sender {
  35. if ([snewName isOn]) {
  36. lsufixo.hidden = NO;
  37. lasufixo.hidden = NO;
  38. lafundoCor.hidden = NO;
  39. }else {
  40. lsufixo.hidden = YES;
  41. lasufixo.hidden = YES;
  42. lafundoCor.hidden = YES;
  43. }
  44. }
  45. -(void)startFixed {
  46. ABAddressBookRef addressBook = ABAddressBookCreate();
  47. NSArray *array = (__bridge NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook);
  48. CFErrorRef anError = NULL;
  49. NSString *npNumber;
  50. for (int i = 0; i < [array count]; i++) {
  51. alter = NO;
  52. ABRecordRef person = (__bridge ABRecordRef) array[i];
  53. NSString *Label;
  54. ABMultiValueRef multiPhones = ABRecordCopyValue((__bridge ABRecordRef)(array[i]),kABPersonPhoneProperty);
  55. ABMutableMultiValueRef multi = ABMultiValueCreateMutableCopy(multiPhones);
  56. for(CFIndex j=0;j<ABMultiValueGetCount(multi);++j) {
  57. CFStringRef phoneNumberRef = ABMultiValueCopyValueAtIndex(multiPhones, j);
  58. Label = (__bridge NSString *)(ABMultiValueCopyLabelAtIndex(multiPhones, j));
  59. NSString *pNumber = (__bridge NSString *) phoneNumberRef;
  60. pNumber = [[[[[pNumber stringByReplacingOccurrencesOfString:@"-" withString:@""] stringByReplacingOccurrencesOfString:@" " withString:@""]stringByReplacingOccurrencesOfString:@"+" withString:@""] stringByReplacingOccurrencesOfString:@"(" withString:@""] stringByReplacingOccurrencesOfString:@")" withString:@""];
  61. npNumber = [self startFormat:pNumber];
  62. if (![npNumber isEqualToString:pNumber]) {
  63. alter = YES;
  64. if (bnovo){
  65. Label = [NSString stringWithFormat:@"%@ - %@",[[Label stringByReplacingOccurrencesOfString:@"_$!<" withString:@""]stringByReplacingOccurrencesOfString:@">!$_" withString:@""], [lsufixo text]];
  66. }
  67. ABMultiValueAddValueAndLabel(multi, (__bridge CFStringRef)npNumber, (__bridge CFStringRef)(Label), NULL);
  68. }
  69. }
  70. if (alter) {
  71. if (!bnovo) {
  72. for(CFIndex j=0;j<ABMultiValueGetCount(multi);++j) {
  73. CFStringRef phoneNumberRef = ABMultiValueCopyValueAtIndex(multi, j);
  74. NSString *pNumber = (__bridge NSString *) phoneNumberRef;
  75. pNumber = [[[[[pNumber stringByReplacingOccurrencesOfString:@"-" withString:@""] stringByReplacingOccurrencesOfString:@" " withString:@""]stringByReplacingOccurrencesOfString:@"+" withString:@""] stringByReplacingOccurrencesOfString:@"(" withString:@""] stringByReplacingOccurrencesOfString:@")" withString:@""];
  76. npNumber = [self startFormat:pNumber];
  77. if (![npNumber isEqualToString:pNumber]) {
  78. BOOL didRemove = ABMultiValueRemoveValueAndLabelAtIndex(multi,j);
  79. BOOL didSet = ABRecordSetValue(person, kABPersonPhoneProperty, multi, nil);
  80. ABRecordSetValue((__bridge ABRecordRef)(array[i]), kABPersonPhoneProperty, multi, &anError);
  81. j--;
  82. }
  83. }
  84. }
  85. ABRecordSetValue((__bridge ABRecordRef)(array[i]), kABPersonPhoneProperty, multi, &anError);
  86. ABAddressBookRef aBook;
  87. CFErrorRef error = NULL;
  88. aBook = ABAddressBookCreate();
  89. BOOL isAdded = ABAddressBookAddRecord (addressBook, (__bridge ABRecordRef)(array[i]), &error);
  90. BOOL isSaved = ABAddressBookSave (addressBook,NULL);
  91. }
  92. }
  93. CFRelease(addressBook);
  94. }
  95. - (void)didReceiveMemoryWarning
  96. {
  97. [super didReceiveMemoryWarning];
  98. // Dispose of any resources that can be recreated.
  99. }
  100. -(IBAction)saveContact:(id) sender {
  101. alertsearch = [[UIAlertView alloc] initWithTitle:@"Migrando Contatos ..." message:nil delegate:nil cancelButtonTitle:nil otherButtonTitles: nil];
  102. [alertsearch setTag:555];
  103. [alertsearch show];
  104. [bmigrar setEnabled:FALSE];
  105. bnovo = [snewName isOn];
  106. NSString *msg = nil;
  107. ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, NULL);
  108. if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusNotDetermined) {
  109. ABAddressBookRequestAccessWithCompletion(addressBookRef, ^(bool granted, CFErrorRef error) {
  110. [self startFixed];
  111. });
  112. msg = @"Seus contatos foram alterados com sucesso. Obrigado por usar DigitoRJ";
  113. }
  114. else if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusAuthorized) {
  115. // The user has previously given access, add the contact
  116. [self startFixed];
  117. msg = @"Seus contatos foram alterados com sucesso. Obrigado por usar DigitoRJ";
  118. }
  119. else {
  120. msg = @"O DigitoRJ não tem permissão para rodar nesse dispositivo. Altere as permissões de antes rodar o DigitoRJ. Obrigado por usar DigitoRJ";
  121. }
  122. [alertsearch dismissWithClickedButtonIndex:0 animated:YES];
  123. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"DigitoRJ" message:msg delegate:nil cancelButtonTitle:@"OK"otherButtonTitles: nil];
  124. [alert show];
  125. }
  126. - (void)peoplePickerNavigationControllerDidCancel:
  127. (ABPeoplePickerNavigationController *)peoplePicker {
  128. [self dismissModalViewControllerAnimated:YES];
  129. }
  130. - (BOOL)peoplePickerNavigationController:
  131. (ABPeoplePickerNavigationController *)peoplePicker
  132. shouldContinueAfterSelectingPerson:(ABRecordRef)person {
  133. [self displayPerson:person];
  134. [self dismissModalViewControllerAnimated:YES];
  135. return NO;
  136. }
  137. - (BOOL)peoplePickerNavigationController:
  138. (ABPeoplePickerNavigationController *)peoplePicker
  139. shouldContinueAfterSelectingPerson:(ABRecordRef)person
  140. property:(ABPropertyID)property
  141. identifier:(ABMultiValueIdentifier)identifier
  142. {
  143. return NO;
  144. }
  145. - (void)displayPerson:(ABRecordRef)person
  146. {
  147. //NSString* name = (__bridge_transfer NSString*)ABRecordCopyValue(person, kABPersonFirstNameProperty);
  148. NSString* phone = nil;
  149. ABMultiValueRef phoneNumbers = ABRecordCopyValue(person,
  150. kABPersonPhoneProperty);
  151. if (ABMultiValueGetCount(phoneNumbers) > 0) {
  152. phone = (__bridge_transfer NSString*)
  153. ABMultiValueCopyValueAtIndex(phoneNumbers, 0);
  154. } else {
  155. phone = @"[None]";
  156. }
  157. CFRelease(phoneNumbers);
  158. }
  159. -(NSString *)startFormat:(NSString *)Number {
  160. if (Number != Nil){
  161. if ([Number length] > 7) {
  162. int tam = [Number length];
  163. NSRange range1, range2, range4, range7, rangeE;
  164. if (tam == 8) {
  165. range1 = [Number rangeOfString:@"3"];
  166. range2 = [Number rangeOfString:@"2"];
  167. range4 = [Number rangeOfString:@"4"];
  168. range7 = [Number rangeOfString:@"7"];
  169. rangeE = [Number rangeOfString:@"*"];
  170. if (range1.location != 0 && range2.location != 0 && range4.location != 0 && range7.location != 0 && rangeE.length == 0 ) {
  171. Number = [NSString stringWithFormat:@"9%@",Number];
  172. return Number;
  173. }
  174. }else if (tam == 10) {
  175. range1 = [Number rangeOfString:@"21"];
  176. if (range1.location == 0) {
  177. range1 = [Number rangeOfString:@"3"];
  178. range4 = [Number rangeOfString:@"4"];
  179. range7 = [Number rangeOfString:@"7"];
  180. rangeE = [Number rangeOfString:@"*"];
  181. if (range1.location != 2 && ![[Number substringWithRange:NSMakeRange(2, 1)] isEqual: @"2"] && range4.location != 2 && range7.location != 2 && rangeE.length == 0 ) {
  182. Number = [NSString stringWithFormat:@"219%@",[Number substringWithRange:NSMakeRange(2, 8)]];
  183. return Number;
  184. }
  185. }
  186. range1 = [Number rangeOfString:@"22"];
  187. if (range1.location == 0) {
  188. range1 = [Number rangeOfString:@"3"];
  189. range4 = [Number rangeOfString:@"4"];
  190. range7 = [Number rangeOfString:@"7"];
  191. rangeE = [Number rangeOfString:@"*"];
  192. if (range1.location != 2 && ![[Number substringWithRange:NSMakeRange(2, 1)] isEqual: @"2"] && range4.location != 2 && range7.location != 2 && rangeE.length == 0 ) {
  193. Number = [NSString stringWithFormat:@"229%@",[Number substringWithRange:NSMakeRange(2, 8)]];
  194. return Number;
  195. }
  196. }
  197. range1 = [Number rangeOfString:@"24"];
  198. if (range1.location == 0) {
  199. range1 = [Number rangeOfString:@"3"];
  200. range4 = [Number rangeOfString:@"4"];
  201. range7 = [Number rangeOfString:@"7"];
  202. rangeE = [Number rangeOfString:@"*"];
  203. if (range1.location != 2 && ![[Number substringWithRange:NSMakeRange(2, 1)] isEqual: @"2"] && range4.location != 2 && range7.location != 2 && rangeE.length == 0 ) {
  204. Number = [NSString stringWithFormat:@"249%@",[Number substringWithRange:NSMakeRange(2, 8)]];
  205. return Number;
  206. }
  207. }
  208. }else if (tam == 12) {
  209. range1 = [Number rangeOfString:@"5521"];
  210. if (range1.location == 0) {
  211. range1 = [Number rangeOfString:@"3"];
  212. range4 = [Number rangeOfString:@"4"];
  213. range7 = [Number rangeOfString:@"7"];
  214. rangeE = [Number rangeOfString:@"*"];
  215. if (range1.location != 4 && ![[Number substringWithRange:NSMakeRange(4, 1)] isEqual: @"2"] && range4.location != 4 && range7.location != 4 && rangeE.length == 0 ) {
  216. Number = [NSString stringWithFormat:@"+55219%@",[Number substringWithRange:NSMakeRange(4, 8)]];
  217. return Number;
  218. }
  219. }
  220. range1 = [Number rangeOfString:@"5522"];
  221. if (range1.location == 0) {
  222. range1 = [Number rangeOfString:@"3"];
  223. range4 = [Number rangeOfString:@"4"];
  224. range7 = [Number rangeOfString:@"7"];
  225. rangeE = [Number rangeOfString:@"*"];
  226. if (range1.location != 4 && ![[Number substringWithRange:NSMakeRange(4, 1)] isEqual: @"2"] && range4.location != 4 && range7.location != 4 && rangeE.length == 0 ) {
  227. Number = [NSString stringWithFormat:@"+55229%@",[Number substringWithRange:NSMakeRange(4, 8)]];
  228. return Number;
  229. }
  230. }
  231. range1 = [Number rangeOfString:@"5524"];
  232. if (range1.location == 0) {
  233. range1 = [Number rangeOfString:@"3"];
  234. range4 = [Number rangeOfString:@"4"];
  235. range7 = [Number rangeOfString:@"7"];
  236. rangeE = [Number rangeOfString:@"*"];
  237. if (range1.location != 4 && ![[Number substringWithRange:NSMakeRange(4, 1)] isEqual: @"2"] && range4.location != 4 && range7.location != 4 && rangeE.length == 0 ) {
  238. Number = [NSString stringWithFormat:@"+55249%@",[Number substringWithRange:NSMakeRange(4, 8)]];
  239. return Number;
  240. }
  241. }
  242. }else if (tam == 13) {
  243. range1 = [Number rangeOfString:@"0"];
  244. range2 = [Number rangeOfString:@"21"];
  245. if (range1.location == 0 && range2.location == 3) {
  246. range1 = [Number rangeOfString:@"3"];
  247. range4 = [Number rangeOfString:@"4"];
  248. range7 = [Number rangeOfString:@"7"];
  249. rangeE = [Number rangeOfString:@"*"];
  250. if (range1.location != 5 && ![[Number substringWithRange:NSMakeRange(5, 1)] isEqual: @"2"] && range4.location != 5 && range7.location != 5 && rangeE.length == 0 ) {
  251. Number = [NSString stringWithFormat:@"0%@219%@",[Number substringWithRange:NSMakeRange(1, 2)], [Number substringWithRange:NSMakeRange(5, 8)]];
  252. return Number;
  253. }
  254. }
  255. range1 = [Number rangeOfString:@"0"];
  256. range2 = [Number rangeOfString:@"22"];
  257. if (range1.location == 0 && range2.location == 3) {
  258. range1 = [Number rangeOfString:@"3"];
  259. range4 = [Number rangeOfString:@"4"];
  260. range7 = [Number rangeOfString:@"7"];
  261. rangeE = [Number rangeOfString:@"*"];
  262. if (range1.location != 5 && ![[Number substringWithRange:NSMakeRange(5, 1)] isEqual: @"2"] && range4.location != 5 && range7.location != 5 && rangeE.length == 0 ) {
  263. Number = [NSString stringWithFormat:@"0%@229%@",[Number substringWithRange:NSMakeRange(1, 2)], [Number substringWithRange:NSMakeRange(5, 8)]];
  264. return Number;
  265. }
  266. }
  267. range1 = [Number rangeOfString:@"0"];
  268. range2 = [Number rangeOfString:@"24"];
  269. if (range1.location == 0 && range2.location == 3) {
  270. range1 = [Number rangeOfString:@"3"];
  271. range4 = [Number rangeOfString:@"4"];
  272. range7 = [Number rangeOfString:@"7"];
  273. rangeE = [Number rangeOfString:@"*"];
  274. if (range1.location != 5 && ![[Number substringWithRange:NSMakeRange(5, 1)] isEqual: @"2"] && range4.location != 5 && range7.location != 5 && rangeE.length == 0 ) {
  275. Number = [NSString stringWithFormat:@"0%@249%@",[Number substringWithRange:NSMakeRange(1, 2)], [Number substringWithRange:NSMakeRange(5, 8)]];
  276. return Number;
  277. }
  278. }
  279. }else if (tam == 15) {
  280. range1 = [Number rangeOfString:@"550"];
  281. range2 = [Number rangeOfString:@"21"];
  282. if (range1.location == 0 && range2.location == 5) {
  283. range1 = [Number rangeOfString:@"3"];
  284. range2 = [Number rangeOfString:@"2"];
  285. range4 = [Number rangeOfString:@"4"];
  286. range7 = [Number rangeOfString:@"7"];
  287. rangeE = [Number rangeOfString:@"*"];
  288. if (range1.location != 7 && ![[Number substringWithRange:NSMakeRange(7, 1)] isEqual: @"2"] && range4.location != 7 && range7.location != 7 && rangeE.length == 0 ) {
  289. Number = [NSString stringWithFormat:@"+550%@219%@",[Number substringWithRange:NSMakeRange(3, 2)], [Number substringWithRange:NSMakeRange(7, 8)]];
  290. return Number;
  291. }
  292. }
  293. range1 = [Number rangeOfString:@"550"];
  294. range2 = [Number rangeOfString:@"22"];
  295. if (range1.location == 0 && range2.location == 5) {
  296. range1 = [Number rangeOfString:@"3"];
  297. range2 = [Number rangeOfString:@"2"];
  298. range4 = [Number rangeOfString:@"4"];
  299. range7 = [Number rangeOfString:@"7"];
  300. rangeE = [Number rangeOfString:@"*"];
  301. if (range1.location != 7 && ![[Number substringWithRange:NSMakeRange(7, 1)] isEqual: @"2"] && range4.location != 7 && range7.location != 7 && rangeE.length == 0 ) {
  302. Number = [NSString stringWithFormat:@"+550%@229%@",[Number substringWithRange:NSMakeRange(3, 2)], [Number substringWithRange:NSMakeRange(7, 8)]];
  303. return Number;
  304. }
  305. }
  306. range1 = [Number rangeOfString:@"550"];
  307. range2 = [Number rangeOfString:@"24"];
  308. if (range1.location == 0 && range2.location == 5) {
  309. range1 = [Number rangeOfString:@"3"];
  310. range2 = [Number rangeOfString:@"2"];
  311. range4 = [Number rangeOfString:@"4"];
  312. range7 = [Number rangeOfString:@"7"];
  313. rangeE = [Number rangeOfString:@"*"];
  314. if (range1.location != 7 && ![[Number substringWithRange:NSMakeRange(7, 1)] isEqual: @"2"] && range4.location != 7 && range7.location != 7 && rangeE.length == 0 ) {
  315. Number = [NSString stringWithFormat:@"+550%@249%@",[Number substringWithRange:NSMakeRange(3, 2)], [Number substringWithRange:NSMakeRange(7, 8)]];
  316. return Number;
  317. }
  318. }
  319. }else return Number;
  320. }
  321. }
  322. return Number;
  323. }
  324. - (IBAction)OpenLinkS4M:(id)sender{
  325. [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.solution4mac.com.br"]];
  326. }
  327. -(IBAction)Info:(id) sender {
  328. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"DigitoRJ" message:@"Será mantido uma cópia de seus contatos, preservando o histórico de outros APPs que utilizam a listagem de contatos." delegate:nil cancelButtonTitle:@"OK"otherButtonTitles: nil];
  329. [alert show];
  330. }
  331. @end