UIFactory.mm 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810
  1. //
  2. // UIFactory.m
  3. // SmartMeeting
  4. //
  5. // Created by luddong on 12-3-30.
  6. // Copyright (c) 2012年 Twin-Fish. All rights reserved.
  7. //
  8. #import "AlertView.h"
  9. #import "ConfirmView.h"
  10. #import "UIFactory.h"
  11. #import "AppDelegate.h"
  12. #import "JXLabel.h"
  13. #import <arpa/inet.h>
  14. static UIFactory* factory;
  15. NSString *kStyle2Dir;
  16. #define kDefaultLanguage @"kDefaultLanguage"
  17. #define kDefaultIsFirstLaunch @"kDefaultIsFirstLaunch"
  18. /*
  19. @implementation UIImage(ImageNamed)
  20. + (UIImage *)imageNamed:(NSString *)name {
  21. NSString *skin = [[NSUserDefaults standardUserDefaults] stringForKey:kDefaultSkin];
  22. NSString *image_file = nil;
  23. if (name == nil || [name length] == 0)
  24. return nil;
  25. if ([skin isEqualToString:SKIN_SECOND] == YES) {
  26. if ([[name pathExtension] isEqualToString:@""] == YES) // Assumes test=>test.png
  27. image_file = [[NSBundle mainBundle] pathForResource:name ofType:@"png" inDirectory:kStyle2Dir];
  28. else
  29. image_file = [[NSBundle mainBundle] pathForResource:name ofType:@"" inDirectory:kStyle2Dir];
  30. }
  31. if (image_file == nil) {
  32. if ([[name pathExtension] isEqualToString:@""] == YES) //Assumes test=>test.png
  33. image_file = [[NSBundle mainBundle] pathForResource:name ofType:@"png"];
  34. else
  35. image_file = [[NSBundle mainBundle] pathForResource:name ofType:@""];
  36. }
  37. return [UIImage imageWithContentsOfFile:image_file];
  38. }
  39. @end*/
  40. @implementation UIFactory
  41. @synthesize font7,font8,font9,font10,font11,font12,font13,font14,font15,font16,font17,font18,font20,font24,font28;
  42. @synthesize font7b,font8b,font9b,font10b,font11b,font12b,font13b,font14b,font15b,font16b,font17b,font18b,font20b,font24b,font28b;
  43. + (UIFactory*)sharedUIFactory{
  44. if(factory == nil)
  45. factory = [[UIFactory alloc]init];
  46. return factory;
  47. }
  48. -(id)init{
  49. self = [super init];
  50. self.font7 = [UIFont systemFontOfSize:7];
  51. self.font8 = [UIFont systemFontOfSize:8];
  52. self.font9 = [UIFont systemFontOfSize:9];
  53. self.font10= [UIFont systemFontOfSize:10];
  54. self.font11= [UIFont systemFontOfSize:11];
  55. self.font12= [UIFont systemFontOfSize:12];
  56. self.font13= [UIFont systemFontOfSize:13];
  57. self.font14= [UIFont systemFontOfSize:14];
  58. self.font15= [UIFont systemFontOfSize:15];
  59. self.font16= [UIFont systemFontOfSize:16];
  60. self.font17= [UIFont systemFontOfSize:17];
  61. self.font18= [UIFont systemFontOfSize:18];
  62. self.font20= [UIFont systemFontOfSize:20];
  63. self.font24= [UIFont systemFontOfSize:24];
  64. self.font28= [UIFont systemFontOfSize:28];
  65. self.font7b = [UIFont boldSystemFontOfSize:7];
  66. self.font8b = [UIFont boldSystemFontOfSize:8];
  67. self.font9b = [UIFont boldSystemFontOfSize:9];
  68. self.font10b= [UIFont boldSystemFontOfSize:10];
  69. self.font11b= [UIFont boldSystemFontOfSize:11];
  70. self.font12b= [UIFont boldSystemFontOfSize:12];
  71. self.font13b= [UIFont boldSystemFontOfSize:13];
  72. self.font14b= [UIFont boldSystemFontOfSize:14];
  73. self.font15b= [UIFont boldSystemFontOfSize:15];
  74. self.font16b= [UIFont boldSystemFontOfSize:16];
  75. self.font17b= [UIFont boldSystemFontOfSize:17];
  76. self.font18b= [UIFont boldSystemFontOfSize:18];
  77. self.font20b= [UIFont boldSystemFontOfSize:20];
  78. self.font24b= [UIFont boldSystemFontOfSize:24];
  79. self.font28b= [UIFont boldSystemFontOfSize:28];
  80. return self;
  81. }
  82. + (id)createTextFieldWith:(CGRect)frame
  83. delegate:(id<UITextFieldDelegate>)delegate
  84. returnKeyType:(UIReturnKeyType)returnKeyType
  85. secureTextEntry:(BOOL)secureTextEntry
  86. placeholder:(NSString *)placeholder
  87. font:(UIFont *)font {
  88. UITextField *textField = [[UITextField alloc] initWithFrame:frame];
  89. if (delegate != nil) {
  90. textField.delegate = delegate;
  91. textField.returnKeyType = returnKeyType;
  92. textField.secureTextEntry = secureTextEntry;
  93. textField.placeholder = placeholder;
  94. textField.font = font;
  95. // Default property
  96. textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
  97. textField.enablesReturnKeyAutomatically = YES;
  98. textField.clearButtonMode = UITextFieldViewModeWhileEditing;
  99. textField.borderStyle = UITextBorderStyleRoundedRect;
  100. textField.autocapitalizationType = UITextAutocapitalizationTypeNone;
  101. textField.autocorrectionType = UITextAutocorrectionTypeNo;
  102. }
  103. return textField;
  104. }
  105. + (id)createLabelWith:(CGRect)frame text:(NSString *)text {
  106. UILabel *label = [[UILabel alloc] initWithFrame:frame];
  107. label.text = text;
  108. return label;
  109. }
  110. + (id)createLabelWith:(CGRect)frame
  111. text:(NSString *)text
  112. backgroundColor:(UIColor *)backgroundColor {
  113. UILabel *label = [[UILabel alloc] initWithFrame:frame];
  114. label.text = text;
  115. label.backgroundColor = backgroundColor;
  116. return label;
  117. }
  118. + (id)createClearBackgroundLabelWith:(CGRect)frame
  119. text:(NSString *)text {
  120. return [UIFactory createLabelWith:frame
  121. text:text
  122. backgroundColor:[UIColor clearColor]];
  123. }
  124. + (id)createLabelWith:(CGRect)frame
  125. text:(NSString *)text
  126. font:(UIFont *)font
  127. textColor:(UIColor *)textColor
  128. backgroundColor:(UIColor *)backgroundColor {
  129. UILabel *label = [[UILabel alloc] initWithFrame:frame];
  130. label.text = text;
  131. label.font = font;
  132. label.textColor = textColor;
  133. if (backgroundColor != nil) {
  134. label.backgroundColor = backgroundColor;
  135. }
  136. return label ;
  137. }
  138. + (UIImage*)resizableImageWithSize:(CGSize)size
  139. image:(UIImage*)image {
  140. if (image == nil)
  141. return nil;
  142. if ([image respondsToSelector:@selector(resizableImageWithCapInsets:)]) {
  143. return [image resizableImageWithCapInsets:UIEdgeInsetsMake(size.height, size.width, size.height, size.width)];
  144. } else {
  145. return [image stretchableImageWithLeftCapWidth:size.width topCapHeight:size.height];
  146. }
  147. }
  148. + (UIButton *)createCommonButton:(NSString *)title target:(id)target action:(SEL)selector{
  149. UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
  150. if (title != nil)
  151. [button setTitle:title forState:UIControlStateNormal];
  152. [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
  153. [button.titleLabel setFont:g_factory.font15];
  154. UIImage* p = [UIFactory resizableImageWithSize:CGSizeMake(10, 10) image:[g_theme themeTintImage:@"navBarBackground"]];
  155. [button setBackgroundImage:p forState:UIControlStateNormal];
  156. p = [UIFactory resizableImageWithSize:CGSizeMake(10, 10) image:[g_theme themeTintImage:@"navBarBackground"]];
  157. [button setBackgroundImage:p forState:UIControlStateHighlighted];
  158. p = nil;
  159. if ((selector != nil) && (target != nil))
  160. [button addTarget:target action:selector forControlEvents:UIControlEventTouchUpInside];
  161. return button;
  162. }
  163. + (UIButton *)createButtonWithTitle:(NSString *)title
  164. titleFont:(UIFont *)font
  165. titleColor:(UIColor *)titleColor
  166. normal:(NSString *)normalImage
  167. highlight:(NSString *)clickIamge
  168. {
  169. UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
  170. if (title != nil)
  171. [button setTitle:title forState:UIControlStateNormal];
  172. if (titleColor != nil)
  173. [button setTitleColor:titleColor forState:UIControlStateNormal];
  174. if (font != nil)
  175. [button.titleLabel setFont:font];
  176. if (normalImage != nil){
  177. UIImage* p = [UIFactory resizableImageWithSize:CGSizeMake(10, 10) image:[UIImage imageNamed:normalImage]];
  178. [button setBackgroundImage:p forState:UIControlStateNormal];
  179. p = nil;
  180. }
  181. if (clickIamge != nil){
  182. UIImage* p = [UIFactory resizableImageWithSize:CGSizeMake(10, 10) image:[UIImage imageNamed:clickIamge]];
  183. [button setBackgroundImage:p forState:UIControlStateHighlighted];
  184. p = nil;
  185. }
  186. return button;
  187. }
  188. + (UIButton *)createButtonWithTitle:(NSString *)title
  189. titleFont:(UIFont *)font
  190. titleColor:(UIColor *)titleColor
  191. normal:(NSString *)normalImage
  192. highlight:(NSString *)clickIamge
  193. selected:(NSString *)selectIamge
  194. {
  195. UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
  196. if (title != nil)
  197. [button setTitle:title forState:UIControlStateNormal];
  198. if (titleColor != nil)
  199. [button setTitleColor:titleColor forState:UIControlStateNormal];
  200. if (font != nil)
  201. [button.titleLabel setFont:font];
  202. if (normalImage != nil){
  203. UIImage* p = [UIFactory resizableImageWithSize:CGSizeMake(10, 10) image:[UIImage imageNamed:normalImage]];
  204. [button setBackgroundImage:p forState:UIControlStateNormal];
  205. p = nil;
  206. }
  207. if (clickIamge != nil){
  208. UIImage* p = [UIFactory resizableImageWithSize:CGSizeMake(10, 10) image:[UIImage imageNamed:clickIamge]];
  209. [button setBackgroundImage:p forState:UIControlStateHighlighted];
  210. p = nil;
  211. }
  212. if (clickIamge != nil){
  213. UIImage* p = [UIFactory resizableImageWithSize:CGSizeMake(10, 10) image:[UIImage imageNamed:selectIamge]];
  214. [button setBackgroundImage:p forState:UIControlStateSelected];
  215. p = nil;
  216. }
  217. return button;
  218. }
  219. + (UIButton *)createButtonWithImage:(NSString *)normalImage
  220. highlight:(NSString *)clickIamge
  221. target:(id)target
  222. selector:(SEL)selector
  223. {
  224. UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
  225. button.backgroundColor = [UIColor clearColor];
  226. button.custom_acceptEventInterval = 1.0f;
  227. if (normalImage != nil)
  228. [button setImage:[UIImage imageNamed:normalImage] forState:UIControlStateNormal];
  229. if (clickIamge != nil)
  230. [button setImage:[UIImage imageNamed:clickIamge] forState:UIControlStateHighlighted];
  231. if ((selector != nil) && (target != nil))
  232. [button addTarget:target action:selector forControlEvents:UIControlEventTouchUpInside];
  233. return button;
  234. }
  235. + (UIButton *)createButtonWithImage:(NSString *)normalImage
  236. selected:(NSString *)clickIamge
  237. target:(id)target
  238. selector:(SEL)selector
  239. {
  240. UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
  241. button.backgroundColor = [UIColor clearColor];
  242. if (normalImage != nil)
  243. [button setBackgroundImage:[UIImage imageNamed:normalImage] forState:UIControlStateNormal];
  244. if (clickIamge != nil)
  245. [button setBackgroundImage:[UIImage imageNamed:clickIamge] forState:UIControlStateSelected];
  246. if ((selector != nil) && (target != nil))
  247. [button addTarget:target action:selector forControlEvents:UIControlEventTouchUpInside];
  248. return button;
  249. }
  250. + (UIButton *)createButtonWithRect:(CGRect)frame
  251. title:(NSString *)title
  252. titleFont:(UIFont *)font
  253. titleColor:(UIColor *)titleColor
  254. normal:(NSString *)normalImage
  255. selected:(NSString *)clickIamge
  256. selector:(SEL)selector
  257. target:(id)target;
  258. {
  259. UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
  260. button.backgroundColor = [UIColor clearColor];
  261. button.frame = frame;
  262. if (title != nil)
  263. [button setTitle:title forState:UIControlStateNormal];
  264. if (titleColor != nil)
  265. [button setTitleColor:titleColor forState:UIControlStateNormal];
  266. if (font != nil)
  267. [button.titleLabel setFont:font];
  268. if (normalImage != nil)
  269. [button setBackgroundImage:[UIImage imageNamed:normalImage] forState:UIControlStateNormal];
  270. if (clickIamge != nil)
  271. [button setBackgroundImage:[UIImage imageNamed:clickIamge] forState:UIControlStateSelected];
  272. if ((selector != nil) && (target != nil))
  273. [button addTarget:target action:selector forControlEvents:UIControlEventTouchUpInside];
  274. return button;
  275. }
  276. + (UIButton *)createButtonWithRect:(CGRect)frame
  277. title:(NSString *)title
  278. titleFont:(UIFont *)font
  279. titleColor:(UIColor *)titleColor
  280. normal:(NSString *)normalImage
  281. highlight:(NSString *)clickIamge
  282. selector:(SEL)selector
  283. target:(id)target;
  284. {
  285. UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
  286. button.backgroundColor = [UIColor clearColor];
  287. button.frame = frame;
  288. if (title != nil)
  289. [button setTitle:title forState:UIControlStateNormal];
  290. if (titleColor != nil)
  291. [button setTitleColor:titleColor forState:UIControlStateNormal];
  292. if (font != nil)
  293. [button.titleLabel setFont:font];
  294. if (normalImage != nil)
  295. [button setBackgroundImage:[UIImage imageNamed:normalImage] forState:UIControlStateNormal];
  296. if (clickIamge != nil)
  297. [button setBackgroundImage:[UIImage imageNamed:clickIamge] forState:UIControlStateHighlighted];
  298. if ((selector != nil) && (target != nil))
  299. [button addTarget:target action:selector forControlEvents:UIControlEventTouchUpInside];
  300. return button;
  301. }
  302. + (UIButton *)createButtonWithRect:(CGRect)frame
  303. title:(NSString *)title
  304. titleFont:(UIFont *)font
  305. titleColor:(UIColor *)titleColor
  306. normal:(NSString *)normalImage
  307. highlight:(NSString *)clickIamge
  308. fixed:(CGSize)fixedSize
  309. selector:(SEL)selector
  310. target:(id)target
  311. {
  312. UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
  313. button.backgroundColor = [UIColor clearColor];
  314. button.frame = frame;
  315. if (title != nil)
  316. [button setTitle:title forState:UIControlStateNormal];
  317. if (titleColor != nil)
  318. [button setTitleColor:titleColor forState:UIControlStateNormal];
  319. if (font != nil)
  320. [button.titleLabel setFont:font];
  321. if (normalImage != nil) {
  322. [button setBackgroundImage:[UIFactory resizableImageWithSize:fixedSize image:[UIImage imageNamed:normalImage]]
  323. forState:UIControlStateNormal];
  324. }
  325. if (clickIamge != nil) {
  326. [button setBackgroundImage:[UIFactory resizableImageWithSize:fixedSize image:[UIImage imageNamed:clickIamge]]
  327. forState:UIControlStateHighlighted];
  328. }
  329. if ((selector != nil) && (target != nil))
  330. [button addTarget:target action:selector forControlEvents:UIControlEventTouchUpInside];
  331. return button;
  332. }
  333. + (UIButton *)createButtonWithRect:(CGRect)frame
  334. title:(NSString *)title
  335. titleFont:(UIFont *)font
  336. titleColor:(UIColor *)titleColor
  337. normal:(NSString *)normalImage
  338. highlight:(NSString *)clickIamge
  339. selected:(NSString *)selectedImage
  340. selector:(SEL)selector
  341. target:(id)target
  342. {
  343. UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
  344. button.frame = frame;
  345. button.backgroundColor = [UIColor clearColor];
  346. if (title != nil)
  347. [button setTitle:title forState:UIControlStateNormal];
  348. if (titleColor != nil)
  349. [button setTitleColor:titleColor forState:UIControlStateNormal];
  350. if (font != nil)
  351. [button.titleLabel setFont:font];
  352. if (normalImage != nil)
  353. [button setBackgroundImage:[UIImage imageNamed:normalImage] forState:UIControlStateNormal];
  354. if (clickIamge != nil)
  355. [button setBackgroundImage:[UIImage imageNamed:clickIamge] forState:UIControlStateHighlighted];
  356. if (selectedImage != nil)
  357. [button setBackgroundImage:[UIImage imageNamed:selectedImage] forState:UIControlStateSelected];
  358. if ((selector != nil) && (target != nil))
  359. [button addTarget:target action:selector forControlEvents:UIControlEventTouchDown];
  360. return button;
  361. }
  362. + (UITextField *)createTextFieldWithRect:(CGRect)frame
  363. keyboardType:(UIKeyboardType)keyboardType
  364. secure:(BOOL)secure
  365. placeholder:(NSString *)placeholder
  366. font:(UIFont *)font
  367. color:(UIColor *)color
  368. delegate:(id)delegate;
  369. {
  370. UITextField *textField = [UIFactory createTextFieldWith:frame
  371. delegate:delegate
  372. returnKeyType:UIReturnKeyNext
  373. secureTextEntry:secure
  374. placeholder:placeholder
  375. font:font];
  376. textField.borderStyle = UITextBorderStyleRoundedRect;
  377. textField.clearButtonMode = UITextFieldViewModeWhileEditing;
  378. textField.keyboardType = keyboardType;
  379. if (color != nil)
  380. [textField setTextColor:color];
  381. return textField;
  382. }
  383. +(UIButton*)createCheckButtonWithRect:(CGRect)frame
  384. selector:(SEL)selector
  385. target:(id)target
  386. {
  387. UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
  388. button.frame = frame;
  389. [button setBackgroundImage:[UIImage imageNamed:@"com_checkbox1_normal"] forState:UIControlStateNormal];
  390. [button setBackgroundImage:[UIImage imageNamed:@"com_checkbox1_select"] forState:UIControlStateSelected];
  391. if ((selector != nil) && (target != nil))
  392. [button addTarget:target action:selector forControlEvents:UIControlEventTouchUpInside];
  393. return button;
  394. }
  395. +(UIButton*)createCheckButtonWithRect1:(CGRect)frame
  396. selector:(SEL)selector
  397. target:(id)target
  398. {
  399. UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
  400. button.frame = frame;
  401. [button setBackgroundImage:[UIImage imageNamed:@"select_none"] forState:UIControlStateNormal];
  402. [button setBackgroundImage:[UIImage imageNamed:@"select_default"] forState:UIControlStateSelected];
  403. if ((selector != nil) && (target != nil))
  404. [button addTarget:target action:selector forControlEvents:UIControlEventTouchUpInside];
  405. return button;
  406. }
  407. + (UIButton *)createRadioButtonWithRect:(CGRect)frame
  408. normalImage:(NSString *)normalImage
  409. selectedImage:(NSString *)selectedImage
  410. labelText:(NSString *)labelText
  411. textColor:(UIColor*)textColor
  412. selector:(SEL)selector
  413. target:(id)target
  414. thisView:(UIView*)thisView
  415. {
  416. UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
  417. CGRect frame1;
  418. frame1 = CGRectMake(CGRectGetMinX(frame), CGRectGetMinY(frame), 25,25);
  419. button.frame = frame1;
  420. [button setBackgroundImage:[UIImage imageNamed:normalImage] forState:UIControlStateNormal];
  421. [button setBackgroundImage:[UIImage imageNamed:selectedImage] forState:UIControlStateSelected];
  422. [button addTarget:target action:selector forControlEvents:UIControlEventTouchUpInside];
  423. [thisView addSubview:button];
  424. frame1 = CGRectMake(CGRectGetMinX(frame)+30, CGRectGetMinY(frame), CGRectGetWidth(frame)-30,CGRectGetHeight(frame));
  425. JXLabel* label = [[JXLabel alloc]initWithFrame:frame1];
  426. label.backgroundColor = [UIColor clearColor];
  427. label.text = labelText;
  428. label.userInteractionEnabled = YES;
  429. label.textColor = textColor;
  430. label.font = [UIFactory sharedUIFactory].font16;
  431. label.didTouch = selector;
  432. label.delegate = target;
  433. [thisView addSubview:label];
  434. return button;
  435. }
  436. + (UIButton *)createRadioButtonWithRect:(CGRect)frame
  437. labelText:(NSString *)labelText
  438. textColor:(UIColor*)textColor
  439. selector:(SEL)selector
  440. target:(id)target
  441. thisView:(UIView*)thisView
  442. {
  443. UIButton* button = [self createRadioButtonWithRect:frame
  444. normalImage:@"com_radiobox_normal"
  445. selectedImage:@"com_radiobox_select"
  446. labelText:labelText
  447. textColor:textColor
  448. selector:selector
  449. target:target
  450. thisView:thisView];
  451. return button;
  452. }
  453. +(UIButton*)createTopButton:(NSString*)s action:(SEL)action target:(id)target{
  454. UIButton* btn = [UIFactory createButtonWithRect:CGRectMake(5, 5, 70, 30)
  455. title:s
  456. titleFont:[UIFactory sharedUIFactory].font13
  457. titleColor:nil
  458. normal:@"enter"
  459. highlight:nil
  460. selector:action
  461. target:target
  462. ];
  463. // btn.showsTouchWhenHighlighted = YES;
  464. return btn;
  465. }
  466. + (UINavigationBar *)createNavigationBarWithBackgroundImage:(UIImage *)backgroundImage title:(NSString *)title {
  467. UINavigationBar *customNavigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, JX_SCREEN_WIDTH, 44)];
  468. UIImageView *navigationBarBackgroundImageView = [[UIImageView alloc] initWithImage:backgroundImage];
  469. [customNavigationBar addSubview:navigationBarBackgroundImageView];
  470. // [navigationBarBackgroundImageView release];
  471. UINavigationItem *navigationTitle = [[UINavigationItem alloc] initWithTitle:title];
  472. [customNavigationBar pushNavigationItem:navigationTitle animated:NO];
  473. // [navigationTitle release];
  474. return customNavigationBar;
  475. }
  476. + (void)showAlert:(NSString *)message
  477. {
  478. AlertView *view = [[AlertView alloc] initWithTitle:@""
  479. message:message
  480. delegate:nil
  481. cancelButtonTitle:[UIFactory localized:@"Ok"]
  482. otherButtonTitles:nil, nil];
  483. [view show];
  484. }
  485. + (void)dissAlert{
  486. }
  487. + (void)showAlert:(NSString *)message tag:(NSUInteger)tag delegate:(id)delegate
  488. {
  489. AlertView *view = [[AlertView alloc] initWithTitle:@""
  490. message:message
  491. delegate:delegate
  492. cancelButtonTitle:[UIFactory localized:@"Ok"]
  493. otherButtonTitles:nil, nil];
  494. view.tag = tag;
  495. [view show];
  496. }
  497. + (void)showConfirm:(NSString *)message tag:(NSUInteger)tag delegate:(id)delegate
  498. {
  499. ConfirmView *view = [[ConfirmView alloc] initWithTitle:@""
  500. message:message
  501. delegate:delegate
  502. cancelButtonTitle:[UIFactory localized:@"Cancel"]
  503. otherButtonTitles:[UIFactory localized:@"Ok"], nil];
  504. view.tag = tag;
  505. [view show];
  506. }
  507. + (NSString *)localized:(NSString *)key
  508. {
  509. NSString *langCode = @"";
  510. if ([[NSUserDefaults standardUserDefaults] stringForKey:kDefaultIsFirstLaunch] == nil) {
  511. NSUserDefaults *defs = [NSUserDefaults standardUserDefaults];
  512. NSArray *languages = [defs objectForKey:@"AppleLanguages"];
  513. langCode = [languages objectAtIndex:0];
  514. if ([langCode isEqualToString:@"zh-Hans"] == NO)
  515. langCode = @"en";
  516. } else {
  517. NSString *appLanguage = [[NSUserDefaults standardUserDefaults] stringForKey:kDefaultLanguage];
  518. if ([appLanguage isEqualToString:@"English"] == YES) {
  519. langCode = @"en";
  520. } else {
  521. langCode = @"zh-Hans";
  522. }
  523. }
  524. NSString *path = [[NSBundle mainBundle] pathForResource:langCode ofType:@"lproj"];
  525. NSBundle *languageBundle = [NSBundle bundleWithPath:path];
  526. return [languageBundle localizedStringForKey:key value:@"" table:nil];
  527. }
  528. + (BOOL)isValidIPAddress:(NSString *)address
  529. {
  530. if ([address length] < 1)
  531. return NO;
  532. struct in_addr addr;
  533. return (inet_aton([address UTF8String], &addr) == 1);
  534. }
  535. + (BOOL)isValidPortAddress:(NSString *)address
  536. {
  537. return [UIFactory checkIntValueRange:address min:1 max:65535];
  538. }
  539. + (BOOL)checkIntValueRange:(NSString *)value min:(int)min max:(int)max
  540. {
  541. if ([value length] < 1)
  542. return NO;
  543. NSScanner * scanner = [NSScanner scannerWithString:value];
  544. if ([scanner scanInt:nil] && [scanner isAtEnd]) {
  545. // NSLog(@"min = %u, max = %u, value = %u %@", min, max, [value integerValue], value);
  546. return (min <= [value integerValue]) && ([value integerValue] <= max);
  547. }
  548. return NO;
  549. }
  550. + (NSString *)checkValidName:(NSString *)value
  551. {
  552. if ([value length] == 0) {
  553. [self showAlert:[self localized:@"ContactInputNamePrompt"]];
  554. return nil;
  555. }
  556. NSString *newString = [value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
  557. if ([newString length] > 0) {
  558. NSString *str = [newString stringByTrimmingCharactersInSet:[NSCharacterSet alphanumericCharacterSet]];
  559. if ([str length] == 0)
  560. return newString;
  561. }
  562. [self showAlert:[self localized:@"ContactInputValidNamePrompt"]];
  563. return nil;
  564. }
  565. + (NSString *)checkValidPhoneNumber:(NSString *)value
  566. {
  567. if ([value length] == 0) {
  568. [self showAlert:[self localized:@"ContactInputPhonePrompt"]];
  569. return nil;
  570. }
  571. NSString *newString = [value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
  572. if ([newString length] > 0) {
  573. NSString *str = [newString stringByTrimmingCharactersInSet:[NSCharacterSet decimalDigitCharacterSet]];
  574. if ([str length] == 0)
  575. return newString;
  576. }
  577. [self showAlert:[self localized:@"ContactInputValidPhonePrompt"]];
  578. return nil;
  579. }
  580. + (NSString *)stringFromDate:(NSDate *)date format:(NSString *)formatStr
  581. {
  582. NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
  583. [formatter setTimeZone:[NSTimeZone localTimeZone]];
  584. [formatter setDateFormat:formatStr];
  585. NSLocale *timeLocale;
  586. NSString *appLanguage = [[NSUserDefaults standardUserDefaults] stringForKey:kDefaultLanguage];
  587. if ([appLanguage isEqualToString:@"English"] == YES) {
  588. timeLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en"];
  589. } else {
  590. timeLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh"];
  591. }
  592. [formatter setLocale:timeLocale];
  593. NSString *str = [formatter stringFromDate:date];
  594. // [timeLocale release];
  595. // [formatter release];
  596. return str;
  597. }
  598. + (NSDate *)dateFromString:(NSString *)str format:(NSString *)formatStr
  599. {
  600. NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
  601. [formatter setTimeZone:[NSTimeZone localTimeZone]];
  602. [formatter setDateFormat:formatStr];
  603. NSLocale *timeLocale;
  604. NSString *appLanguage = [[NSUserDefaults standardUserDefaults] stringForKey:kDefaultLanguage];
  605. if ([appLanguage isEqualToString:@"English"] == YES) {
  606. timeLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en"];
  607. } else {
  608. timeLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh"];
  609. }
  610. [formatter setLocale:timeLocale];
  611. NSDate *date = [formatter dateFromString:str];
  612. // [timeLocale release];
  613. // [formatter release];
  614. return date;
  615. }
  616. +(void)freeTable:(NSMutableArray*)pool{
  617. if(pool==nil)
  618. return;
  619. // NSLog(@"App.freeTable.count=%d",[pool count]);
  620. for(NSInteger i=[pool count]-1;i>=0;i--){
  621. id p = [pool objectAtIndex:i];
  622. if([p isKindOfClass:[UIView class]]){
  623. for(NSInteger i=[[p subviews] count]-1;i>=0;i--)
  624. [[[p subviews] objectAtIndex:i] removeFromSuperview];
  625. [p removeFromSuperview];
  626. }
  627. if([p isKindOfClass:[NSMutableArray class]]){
  628. // NSLog(@"array.count=%d",[p retainCount]);
  629. //[p removeAllObjects];
  630. }
  631. if([p isKindOfClass:[NSMutableDictionary class]]){
  632. // NSLog(@"dict.count=%d",[p retainCount]);
  633. //[p removeAllObjects];
  634. }
  635. [pool removeObjectAtIndex:i];
  636. // [p release];
  637. }
  638. }
  639. +(void)addToPool:(NSMutableArray*)pool object:(NSObject*)object{
  640. if(pool == nil || object==nil)
  641. return;
  642. [pool addObject:object];
  643. }
  644. +(void)onGotoBack:(UIViewController*)vc{
  645. CGContextRef context = UIGraphicsGetCurrentContext();
  646. [UIView beginAnimations:nil context:context];
  647. [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
  648. [UIView setAnimationDuration:0.2];
  649. vc.view.frame = CGRectMake (JX_SCREEN_WIDTH, 0, vc.view.frame.size.width, vc.view.frame.size.height);
  650. [UIView commitAnimations];
  651. [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(doQuit:) userInfo:vc repeats:NO];
  652. }
  653. +(void)doQuit:(NSTimer*)timer{
  654. UIViewController* vc = timer.userInfo;
  655. [vc.view removeFromSuperview];
  656. // [vc release];
  657. vc = nil;
  658. }
  659. -(void)removeAllChild:(UIView*)parent{
  660. for(NSInteger i=[[parent subviews] count]-1;i>=0;i--){
  661. [[[parent subviews] objectAtIndex:i] removeFromSuperview];
  662. }
  663. }
  664. +(UIView*)createLine:(UIColor*)color parent:(UIView*)parent{
  665. UIView* line = [[UIView alloc]initWithFrame:CGRectMake(0,0,parent.frame.size.width,0.5)];
  666. line.backgroundColor = color;
  667. [parent addSubview:line];
  668. return line;
  669. }
  670. +(UIView*)createLine:(UIView*)parent{
  671. return [self createLine:THE_LINE_COLOR parent:parent];
  672. }
  673. @end