Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(445)

Side by Side Diff: ios/chrome/browser/ui/bookmarks/bookmark_home_view_controller.mm

Issue 2972733002: Creates common super class for bookmark handset and tablet view controllers (Closed)
Patch Set: Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #import "ios/chrome/browser/ui/bookmarks/bookmark_home_view_controller.h"
6
7 #include "components/bookmarks/browser/bookmark_model.h"
8 #include "ios/chrome/browser/bookmarks/bookmark_model_factory.h"
9 #include "ios/chrome/browser/browser_state/chrome_browser_state.h"
10 #import "ios/chrome/browser/ui/bookmarks/bars/bookmark_navigation_bar.h"
11 #import "ios/chrome/browser/ui/bookmarks/bookmark_collection_view.h"
12 #import "ios/chrome/browser/ui/bookmarks/bookmark_home_primary_view.h"
13 #import "ios/chrome/browser/ui/bookmarks/bookmark_home_waiting_view.h"
14 #import "ios/chrome/browser/ui/bookmarks/bookmark_menu_item.h"
15 #import "ios/chrome/browser/ui/bookmarks/bookmark_menu_view.h"
16 #import "ios/chrome/browser/ui/bookmarks/bookmark_panel_view.h"
17 #import "ios/chrome/browser/ui/rtl_geometry.h"
18 #import "ios/chrome/browser/ui/ui_util.h"
19 #import "ios/chrome/browser/ui/uikit_ui_util.h"
20 #import "ios/chrome/browser/ui/url_loader.h"
21
22 using bookmarks::BookmarkNode;
23
24 namespace {
25 // The width of the bookmark menu, displaying the different sections.
26 const CGFloat kMenuWidth = 264;
27 }
28
29 @interface BookmarkHomeViewController ()
30 // Read / write declaration of read only properties.
31 @property(nonatomic, assign) bookmarks::BookmarkModel* bookmarks;
32 @property(nonatomic, assign) ios::ChromeBrowserState* browserState;
33 @property(nonatomic, strong) BookmarkCollectionView* folderView;
34 @property(nonatomic, weak) id<UrlLoader> loader;
35 @property(nonatomic, strong) BookmarkMenuView* menuView;
36 @property(nonatomic, strong) BookmarkNavigationBar* navigationBar;
37 @property(nonatomic, strong) BookmarkPanelView* panelView;
38 @property(nonatomic, strong) BookmarkMenuItem* primaryMenuItem;
39 @end
40
41 @implementation BookmarkHomeViewController
42
43 @synthesize bookmarks = _bookmarks;
44 @synthesize browserState = _browserState;
45 @synthesize folderView = _folderView;
46 @synthesize loader = _loader;
47 @synthesize menuView = _menuView;
48 @synthesize navigationBar = _navigationBar;
49 @synthesize panelView = _panelView;
50 @synthesize primaryMenuItem = _primaryMenuItem;
51 @synthesize waitForModelView = _waitForModelView;
52 @synthesize scrollToTop = _scrollToTop;
53
54 #if !defined(__has_feature) || !__has_feature(objc_arc)
55 #error "This file requires ARC support."
56 #endif
57
58 #pragma mark - Initializer
59
60 - (instancetype)initWithLoader:(id<UrlLoader>)loader
61 browserState:(ios::ChromeBrowserState*)browserState {
62 DCHECK(browserState);
63 self = [super initWithNibName:nil bundle:nil];
64 if (self) {
65 _browserState = browserState->GetOriginalChromeBrowserState();
66 _loader = loader;
67
68 _bookmarks = ios::BookmarkModelFactory::GetForBrowserState(browserState);
69 }
70 return self;
71 }
72
73 #pragma mark - UIViewController
74
75 - (void)viewDidLoad {
76 [super viewDidLoad];
77 self.navigationBar = [[BookmarkNavigationBar alloc] initWithFrame:CGRectZero];
78 }
79
80 #pragma mark - Public
81
82 - (void)loadBookmarkViews {
83 LayoutRect menuLayout =
84 LayoutRectMake(0, self.view.bounds.size.width, 0, self.menuWidth,
85 self.view.bounds.size.height);
86
87 // Create menu view.
88 self.menuView = [[BookmarkMenuView alloc]
89 initWithBrowserState:_browserState
90 frame:LayoutRectGetRect(menuLayout)];
91 self.menuView.autoresizingMask =
92 UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
93
94 // Create panel view.
95 self.panelView = [[BookmarkPanelView alloc] initWithFrame:CGRectZero
96 menuViewWidth:self.menuWidth];
97 self.panelView.autoresizingMask =
98 UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
99
100 // Create folder view.
101 BookmarkCollectionView* view =
102 [[BookmarkCollectionView alloc] initWithBrowserState:self.browserState
103 frame:CGRectZero];
104 self.folderView = view;
105 [self.folderView setEditing:self.editing animated:NO];
106 self.folderView.autoresizingMask =
107 UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
108 }
109
110 - (void)updatePrimaryMenuItem:(BookmarkMenuItem*)menuItem {
111 DCHECK(menuItem.type == bookmarks::MenuItemFolder);
112 if ([self.primaryMenuItem isEqual:menuItem])
113 return;
114
115 // TODO(crbug.com/705339): Folder view is the only primary view now,
116 // hence we don't need to remove primary view anymore.
117 // Simplify this code that removes primary view and adds it back
118 // in subclasses, once the addition code moves here.
119 [[self primaryView] removeFromSuperview];
120 self.primaryMenuItem = menuItem;
121
122 [self.folderView resetFolder:self.primaryMenuItem.folder];
123 [self.folderView promoStateChangedAnimated:NO];
124
125 [[self primaryView] changeOrientation:GetInterfaceOrientation()];
126 [[self primaryView] setScrollsToTop:!self.scrollToTop];
127
128 [self.menuView updatePrimaryMenuItem:self.primaryMenuItem];
129 }
130
131 - (UIView<BookmarkHomePrimaryView>*)primaryView {
132 if (self.primaryMenuItem.type == bookmarks::MenuItemFolder)
133 return self.folderView;
134 return nil;
135 }
136
137 - (void)loadWaitingView {
138 DCHECK(!self.waitForModelView);
139 DCHECK(self.view);
140
141 // Present a waiting view.
142 BookmarkHomeWaitingView* waitingView =
143 [[BookmarkHomeWaitingView alloc] initWithFrame:self.view.bounds];
144 self.waitForModelView = waitingView;
145 [self.view addSubview:self.waitForModelView];
146 [self.waitForModelView startWaiting];
147 }
148
149 - (CGFloat)menuWidth {
150 return kMenuWidth;
151 }
152
153 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698