OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #import "ios/chrome/today_extension/today_view_controller.h" | 5 #import "ios/chrome/today_extension/today_view_controller.h" |
6 | 6 |
7 #import <CommonCrypto/CommonDigest.h> | 7 #import <CommonCrypto/CommonDigest.h> |
8 #import <NotificationCenter/NotificationCenter.h> | 8 #import <NotificationCenter/NotificationCenter.h> |
9 #include <unistd.h> | 9 #include <unistd.h> |
10 | 10 |
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
369 setLayoutMargins:UIEdgeInsetsMake(ui_util::kFirstLineButtonMargin, | 369 setLayoutMargins:UIEdgeInsetsMake(ui_util::kFirstLineButtonMargin, |
370 firstLineOuterMargin, | 370 firstLineOuterMargin, |
371 ui_util::kFirstLineButtonMargin, | 371 ui_util::kFirstLineButtonMargin, |
372 firstLineOuterMargin)]; | 372 firstLineOuterMargin)]; |
373 | 373 |
374 _urlsTable.reset([[UITableView alloc] initWithFrame:CGRectZero]); | 374 _urlsTable.reset([[UITableView alloc] initWithFrame:CGRectZero]); |
375 [_urlsTable setDataSource:self]; | 375 [_urlsTable setDataSource:self]; |
376 [_urlsTable setRowHeight:ui_util::kSecondLineHeight]; | 376 [_urlsTable setRowHeight:ui_util::kSecondLineHeight]; |
377 [_urlsTable setSeparatorStyle:UITableViewCellSeparatorStyleNone]; | 377 [_urlsTable setSeparatorStyle:UITableViewCellSeparatorStyleNone]; |
378 _tableViewHeight.reset( | 378 _tableViewHeight.reset( |
379 [[[_urlsTable heightAnchor] constraintEqualToConstant:0] retain]); | 379 [[_urlsTable heightAnchor] constraintEqualToConstant:0]); |
380 [_tableViewHeight setActive:YES]; | 380 [_tableViewHeight setActive:YES]; |
381 | 381 |
382 _contentStackView.reset([[UIStackView alloc] | 382 _contentStackView.reset([[UIStackView alloc] |
383 initWithArrangedSubviews:@[ _buttonsView, _urlsTable ]]); | 383 initWithArrangedSubviews:@[ _buttonsView, _urlsTable ]]); |
384 [[_urlsTable widthAnchor] | 384 [[_urlsTable widthAnchor] |
385 constraintEqualToAnchor:[_contentStackView widthAnchor]] | 385 constraintEqualToAnchor:[_contentStackView widthAnchor]] |
386 .active = YES; | 386 .active = YES; |
387 [_contentStackView setAxis:UILayoutConstraintAxisVertical]; | 387 [_contentStackView setAxis:UILayoutConstraintAxisVertical]; |
388 [_contentStackView setDistribution:UIStackViewDistributionFill]; | 388 [_contentStackView setDistribution:UIStackViewDistributionFill]; |
389 [_contentStackView setSpacing:0]; | 389 [_contentStackView setSpacing:0]; |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
528 return; | 528 return; |
529 if (footerLabel == PW_OPTIN_DIALOG && | 529 if (footerLabel == PW_OPTIN_DIALOG && |
530 _currentFooterLabel != PW_OPTIN_DIALOG) { | 530 _currentFooterLabel != PW_OPTIN_DIALOG) { |
531 TodayMetricsLogger::GetInstance()->RecordUserAction( | 531 TodayMetricsLogger::GetInstance()->RecordUserAction( |
532 base::UserMetricsAction("PhysicalWeb.OptinDisplayed")); | 532 base::UserMetricsAction("PhysicalWeb.OptinDisplayed")); |
533 } | 533 } |
534 | 534 |
535 _currentFooterLabel = footerLabel; | 535 _currentFooterLabel = footerLabel; |
536 [[_footerLabel view] removeFromSuperview]; | 536 [[_footerLabel view] removeFromSuperview]; |
537 base::WeakNSObject<TodayViewController> weakSelf(self); | 537 base::WeakNSObject<TodayViewController> weakSelf(self); |
538 base::mac::ScopedBlock<ProceduralBlock> learnMoreBlock; | 538 ProceduralBlock learnMoreBlock = ^{ |
539 base::mac::ScopedBlock<ProceduralBlock> turnOffPhysicalWeb; | 539 [weakSelf learnMore]; |
540 base::mac::ScopedBlock<ProceduralBlock> turnOnPhysicalWeb; | 540 }; |
541 base::mac::ScopedBlock<ProceduralBlock> optInPhysicalWeb; | |
542 base::mac::ScopedBlock<ProceduralBlock> optOutPhysicalWeb; | |
543 | 541 |
544 learnMoreBlock.reset( | 542 ProceduralBlock turnOffPhysicalWeb; |
545 ^{ | 543 ProceduralBlock turnOnPhysicalWeb; |
546 [weakSelf learnMore]; | 544 ProceduralBlock optInPhysicalWeb; |
547 }, | 545 ProceduralBlock optOutPhysicalWeb; |
548 base::scoped_policy::RETAIN); | 546 |
549 if (![[LockScreenState sharedInstance] isScreenLocked]) { | 547 if (![[LockScreenState sharedInstance] isScreenLocked]) { |
550 turnOffPhysicalWeb.reset( | 548 turnOffPhysicalWeb = ^{ |
551 ^{ | 549 [weakSelf setPhysicalWebEnabled:NO]; |
552 [weakSelf setPhysicalWebEnabled:NO]; | 550 }; |
553 }, | |
554 base::scoped_policy::RETAIN); | |
555 | 551 |
556 turnOnPhysicalWeb.reset( | 552 turnOnPhysicalWeb = ^{ |
557 ^{ | 553 [weakSelf setPhysicalWebEnabled:YES]; |
558 [weakSelf setPhysicalWebEnabled:YES]; | 554 }; |
559 }, | |
560 base::scoped_policy::RETAIN); | |
561 | 555 |
562 optInPhysicalWeb.reset( | 556 optInPhysicalWeb = ^{ |
563 ^{ | 557 [weakSelf physicalWebOptIn]; |
564 [weakSelf physicalWebOptIn]; | 558 }; |
565 }, | |
566 base::scoped_policy::RETAIN); | |
567 | 559 |
568 optOutPhysicalWeb.reset( | 560 optOutPhysicalWeb = ^{ |
569 ^{ | 561 [weakSelf physicalWebOptOut]; |
570 [weakSelf physicalWebOptOut]; | 562 }; |
571 }, | |
572 base::scoped_policy::RETAIN); | |
573 } | 563 } |
574 | 564 |
575 switch (footerLabel) { | 565 switch (footerLabel) { |
576 case NO_FOOTER_LABEL: | 566 case NO_FOOTER_LABEL: |
577 _footerLabel.reset(); | 567 _footerLabel.reset(); |
578 break; | 568 break; |
579 case PW_IS_OFF_FOOTER_LABEL: | 569 case PW_IS_OFF_FOOTER_LABEL: |
580 _footerLabel.reset([[PWIsOffFooterLabel alloc] | 570 _footerLabel.reset([[PWIsOffFooterLabel alloc] |
581 initWithLearnMoreBlock:learnMoreBlock | 571 initWithLearnMoreBlock:learnMoreBlock |
582 turnOnBlock:turnOnPhysicalWeb]); | 572 turnOnBlock:turnOnPhysicalWeb]); |
(...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
971 if (cell) { | 961 if (cell) { |
972 [cell setTitle:l10n_util::GetNSString( | 962 [cell setTitle:l10n_util::GetNSString( |
973 IDS_IOS_OPEN_COPIED_LINK_TODAY_EXTENSION) | 963 IDS_IOS_OPEN_COPIED_LINK_TODAY_EXTENSION) |
974 url:_pasteURL]; | 964 url:_pasteURL]; |
975 | 965 |
976 } else { | 966 } else { |
977 base::WeakNSObject<TodayViewController> weakSelf(self); | 967 base::WeakNSObject<TodayViewController> weakSelf(self); |
978 URLActionBlock action = ^(NSString* url) { | 968 URLActionBlock action = ^(NSString* url) { |
979 [weakSelf openClipboardURLInChrome:url]; | 969 [weakSelf openClipboardURLInChrome:url]; |
980 }; | 970 }; |
981 cell = [[[URLTableCell alloc] | 971 cell = [[URLTableCell alloc] |
982 initWithTitle:l10n_util::GetNSString( | 972 initWithTitle:l10n_util::GetNSString( |
983 IDS_IOS_OPEN_COPIED_LINK_TODAY_EXTENSION) | 973 IDS_IOS_OPEN_COPIED_LINK_TODAY_EXTENSION) |
984 url:_pasteURL | 974 url:_pasteURL |
985 icon:@"todayview_clipboard" | 975 icon:@"todayview_clipboard" |
986 leftInset:_defaultLeadingMarginInset | 976 leftInset:_defaultLeadingMarginInset |
987 reuseIdentifier:pasteboardReusableID | 977 reuseIdentifier:pasteboardReusableID |
988 block:action] autorelease]; | 978 block:action]; |
989 cell.selectionStyle = UITableViewCellSelectionStyleNone; | 979 cell.selectionStyle = UITableViewCellSelectionStyleNone; |
990 } | 980 } |
991 return cell; | 981 return cell; |
992 } | 982 } |
993 | 983 |
994 - (URLTableCell*)cellForShowMore { | 984 - (URLTableCell*)cellForShowMore { |
995 NSString* showMoreReusableID = @"ShowMoreCell"; | 985 NSString* showMoreReusableID = @"ShowMoreCell"; |
996 URLTableCell* cell = base::mac::ObjCCast<URLTableCell>( | 986 URLTableCell* cell = base::mac::ObjCCast<URLTableCell>( |
997 [_urlsTable dequeueReusableCellWithIdentifier:showMoreReusableID]); | 987 [_urlsTable dequeueReusableCellWithIdentifier:showMoreReusableID]); |
998 NSString* title = l10n_util::GetNSString( | 988 NSString* title = l10n_util::GetNSString( |
999 IDS_IOS_PYSICAL_WEB_TODAY_EXTENSION_SHOW_MORE_BEACONS); | 989 IDS_IOS_PYSICAL_WEB_TODAY_EXTENSION_SHOW_MORE_BEACONS); |
1000 if (cell) { | 990 if (cell) { |
1001 [cell setTitle:title url:@""]; | 991 [cell setTitle:title url:@""]; |
1002 } else { | 992 } else { |
1003 base::WeakNSObject<TodayViewController> weakSelf(self); | 993 base::WeakNSObject<TodayViewController> weakSelf(self); |
1004 URLActionBlock action = ^(NSString* url) { | 994 URLActionBlock action = ^(NSString* url) { |
1005 [weakSelf setDisplayAllPhysicalWebItems:YES]; | 995 [weakSelf setDisplayAllPhysicalWebItems:YES]; |
1006 [weakSelf refreshWidget]; | 996 [weakSelf refreshWidget]; |
1007 }; | 997 }; |
1008 cell = [[[URLTableCell alloc] initWithTitle:title | 998 cell = [[URLTableCell alloc] initWithTitle:title |
1009 url:@"" | 999 url:@"" |
1010 icon:@"" | 1000 icon:@"" |
1011 leftInset:_defaultLeadingMarginInset | 1001 leftInset:_defaultLeadingMarginInset |
1012 reuseIdentifier:showMoreReusableID | 1002 reuseIdentifier:showMoreReusableID |
1013 block:action] autorelease]; | 1003 block:action]; |
1014 cell.selectionStyle = UITableViewCellSelectionStyleNone; | 1004 cell.selectionStyle = UITableViewCellSelectionStyleNone; |
1015 } | 1005 } |
1016 return cell; | 1006 return cell; |
1017 } | 1007 } |
1018 | 1008 |
1019 - (URLTableCell*)cellForPhysicalWebURLAtIndex:(NSInteger)index { | 1009 - (URLTableCell*)cellForPhysicalWebURLAtIndex:(NSInteger)index { |
1020 NSString* physicalWebReusableID = @"PhysicalWebCell"; | 1010 NSString* physicalWebReusableID = @"PhysicalWebCell"; |
1021 URLTableCell* cell = base::mac::ObjCCast<URLTableCell>( | 1011 URLTableCell* cell = base::mac::ObjCCast<URLTableCell>( |
1022 [_urlsTable dequeueReusableCellWithIdentifier:physicalWebReusableID]); | 1012 [_urlsTable dequeueReusableCellWithIdentifier:physicalWebReusableID]); |
1023 PhysicalWebDevice* device = [[_scanner devices] objectAtIndex:index]; | 1013 PhysicalWebDevice* device = [[_scanner devices] objectAtIndex:index]; |
1024 if (cell) { | 1014 if (cell) { |
1025 [cell setTitle:[device title] url:[[device url] absoluteString]]; | 1015 [cell setTitle:[device title] url:[[device url] absoluteString]]; |
1026 } else { | 1016 } else { |
1027 base::WeakNSObject<TodayViewController> weakSelf(self); | 1017 base::WeakNSObject<TodayViewController> weakSelf(self); |
1028 URLActionBlock action = ^(NSString* url) { | 1018 URLActionBlock action = ^(NSString* url) { |
1029 [weakSelf openPhysicalWebURLInChrome:url]; | 1019 [weakSelf openPhysicalWebURLInChrome:url]; |
1030 }; | 1020 }; |
1031 cell = [[[URLTableCell alloc] initWithTitle:[device title] | 1021 cell = [[URLTableCell alloc] initWithTitle:[device title] |
1032 url:[[device url] absoluteString] | 1022 url:[[device url] absoluteString] |
1033 icon:@"todayview_physical_web" | 1023 icon:@"todayview_physical_web" |
1034 leftInset:_defaultLeadingMarginInset | 1024 leftInset:_defaultLeadingMarginInset |
1035 reuseIdentifier:physicalWebReusableID | 1025 reuseIdentifier:physicalWebReusableID |
1036 block:action] autorelease]; | 1026 block:action]; |
1037 cell.selectionStyle = UITableViewCellSelectionStyleNone; | 1027 cell.selectionStyle = UITableViewCellSelectionStyleNone; |
1038 } | 1028 } |
1039 return cell; | 1029 return cell; |
1040 } | 1030 } |
1041 | 1031 |
1042 - (UITableViewCell*)tableView:(UITableView*)tableView | 1032 - (UITableViewCell*)tableView:(UITableView*)tableView |
1043 cellForRowAtIndexPath:(NSIndexPath*)indexPath { | 1033 cellForRowAtIndexPath:(NSIndexPath*)indexPath { |
1044 DCHECK(tableView == _urlsTable.get()); | 1034 DCHECK(tableView == _urlsTable.get()); |
1045 NSInteger indexRequested = [indexPath row]; | 1035 NSInteger indexRequested = [indexPath row]; |
1046 NSInteger lastRowIndex = | 1036 NSInteger lastRowIndex = |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1097 if (ui_util::IsRTL()) { | 1087 if (ui_util::IsRTL()) { |
1098 _defaultLeadingMarginInset = defaultMarginInsets.right; | 1088 _defaultLeadingMarginInset = defaultMarginInsets.right; |
1099 } else { | 1089 } else { |
1100 _defaultLeadingMarginInset = defaultMarginInsets.left; | 1090 _defaultLeadingMarginInset = defaultMarginInsets.left; |
1101 } | 1091 } |
1102 } | 1092 } |
1103 return UIEdgeInsetsZero; | 1093 return UIEdgeInsetsZero; |
1104 } | 1094 } |
1105 | 1095 |
1106 @end | 1096 @end |
OLD | NEW |