Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -249,20 +249,26 @@ public extension WMFNavigationBarConfiguring where Self: UIViewController {
if let searchButtonConfig {
var rightBarButtonItems: [UIBarButtonItem] = []

let image = WMFSFSymbolIcon.for(symbol: .magnifyingGlass)
let searchButton = UIBarButtonItem(image: image, style: .plain, target: searchButtonConfig.target, action: searchButtonConfig.action)
rightBarButtonItems.append(searchButton)
if let profileButtonConfig {
let profileImage = profileButtonImage(theme: WMFAppEnvironment.current.theme, needsBadge: profileButtonConfig.needsBadge)
let profileButton = UIBarButtonItem(image: profileImage, style: .plain, target: profileButtonConfig.target, action: profileButtonConfig.action)
profileButton.accessibilityLabel = profileButtonAccessibilityStrings(config: profileButtonConfig)
profileButton.accessibilityIdentifier = profileButtonAccessibilityID
rightBarButtonItems.append(profileButton)
}

if let tabsButtonConfig {
let tabsImage = WMFSFSymbolIcon.for(symbol: .tabsIcon)
let tabsButton = UIBarButtonItem(image: tabsImage, style: .plain, target: tabsButtonConfig.target, action: tabsButtonConfig.action)
tabsButton.accessibilityLabel = tabsButtonConfig.accessibilityLabel
tabsButton.accessibilityHint = tabsButtonConfig.accessibilityHint
rightBarButtonItems.append(tabsButton)

if let leadingBarButtonItem = tabsButtonConfig.leadingBarButtonItem {
rightBarButtonItems.append(leadingBarButtonItem)
}
}

let image = WMFSFSymbolIcon.for(symbol: .magnifyingGlass)
let searchButton = UIBarButtonItem(image: image, style: .plain, target: searchButtonConfig.target, action: searchButtonConfig.action)
rightBarButtonItems.append(searchButton)

if let leadingBarButtonItem = searchButtonConfig.leadingBarButtonItem {
navigationItem.leftBarButtonItem = leadingBarButtonItem
}
Expand Down
3 changes: 1 addition & 2 deletions Wikipedia/Code/ArticleViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -773,10 +773,9 @@ class ArticleViewController: ThemeableViewController, HintPresenting, UIScrollVi

var titleConfig: WMFNavigationBarTitleConfig = WMFNavigationBarTitleConfig(title: articleURL.wmf_title ?? "", customView: wButton, alignment: .centerCompact)


let backButtonConfig = WMFNavigationBarBackButtonConfig(needsCustomTruncateBackButtonTitle: true)

var profileButtonConfig: WMFNavigationBarProfileButtonConfig? = nil
var profileButtonConfig = profileButtonConfig(target: self, action: #selector(userDidTapProfile), dataStore: dataStore, yirDataController: yirDataController, leadingBarButtonItem: nil)

let tabsButtonConfig = tabsButtonConfig(target: self, action: #selector(userDidTapTabs), dataStore: dataStore)

Expand Down
22 changes: 16 additions & 6 deletions Wikipedia/Code/SearchViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -258,10 +258,11 @@ class SearchViewController: ThemeableViewController, WMFNavigationBarConfiguring

private func configureNavigationBar() {

let title = customTitle ?? CommonStrings.searchTitle
var title = customTitle ?? CommonStrings.searchTitle

// check if it comes from article vc
let isPushed = (navigationController?.viewControllers.first !== self)

var alignment: WMFNavigationBarTitleConfig.Alignment = (needsCenteredTitle || isPushed) ? .centerCompact : .leadingCompact
extendedLayoutIncludesOpaqueBars = false
if #available(iOS 18, *) {
Expand All @@ -270,21 +271,18 @@ class SearchViewController: ThemeableViewController, WMFNavigationBarConfiguring
extendedLayoutIncludesOpaqueBars = true
}
}
let wButton = UIButton(type: .custom)
wButton.setImage(UIImage(named: "W"), for: .normal)

var titleConfig: WMFNavigationBarTitleConfig
titleConfig = WMFNavigationBarTitleConfig(title: title, customView: nil, alignment: alignment)


if #available(iOS 18, *) {
if UIDevice.current.userInterfaceIdiom == .pad && traitCollection.horizontalSizeClass == .regular {
titleConfig = WMFNavigationBarTitleConfig(title: CommonStrings.searchTitle, customView: nil, alignment: .leadingLarge)
}
}

let profileButtonConfig: WMFNavigationBarProfileButtonConfig?
let tabsButtonConfig: WMFNavigationBarTabsButtonConfig?
var profileButtonConfig: WMFNavigationBarProfileButtonConfig?
var tabsButtonConfig: WMFNavigationBarTabsButtonConfig?
if let dataStore {
profileButtonConfig = self.profileButtonConfig(target: self, action: #selector(userDidTapProfile), dataStore: dataStore, yirDataController: yirDataController, leadingBarButtonItem: nil)
let leadingItem: UIBarButtonItem? = (currentEmbeddedViewController === historyViewController) ? deleteButton : nil
Expand All @@ -294,9 +292,21 @@ class SearchViewController: ThemeableViewController, WMFNavigationBarConfiguring
tabsButtonConfig = nil
}

// If in article view, except in iPad, we only keep the clear button
var isPushedWithoutTabsAndProfile = false
if isPushed && !(UIDevice.current.userInterfaceIdiom == .pad && traitCollection.horizontalSizeClass == .regular) {
profileButtonConfig = nil
tabsButtonConfig = nil
isPushedWithoutTabsAndProfile = true
}

let searchBarConfig = WMFNavigationBarSearchConfig(searchResultsController: nil, searchControllerDelegate: self, searchResultsUpdater: self, searchBarDelegate: self, searchBarPlaceholder: CommonStrings.searchBarPlaceholder, showsScopeBar: false, scopeButtonTitles: nil)

configureNavigationBar(titleConfig: titleConfig, backButtonConfig: nil, closeButtonConfig: nil, profileButtonConfig: profileButtonConfig, tabsButtonConfig: tabsButtonConfig, searchBarConfig: searchBarConfig, hideNavigationBarOnScroll: !presentingSearchResults)

if isPushedWithoutTabsAndProfile && currentEmbeddedViewController === historyViewController {
navigationItem.rightBarButtonItems = [deleteButton]
}
}

@MainActor
Expand Down
Loading