-
Notifications
You must be signed in to change notification settings - Fork 419
/
TabViewListCell.swift
94 lines (78 loc) · 3.4 KB
/
TabViewListCell.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
//
// TabViewListCell.swift
// DuckDuckGo
//
// Copyright © 2017 DuckDuckGo. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
import UIKit
import Core
class TabViewListCell: TabViewCell {
struct Constants {
static let selectedBorderWidth: CGFloat = 2.0
static let unselectedBorderWidth: CGFloat = 0.0
static let selectedAlpha: CGFloat = 1.0
static let unselectedAlpha: CGFloat = 0.92
static let swipeToDeleteAlpha: CGFloat = 0.5
}
static let reuseIdentifier = "TabViewListCell"
@IBOutlet weak var background: UIView!
@IBOutlet weak var favicon: UIImageView!
@IBOutlet weak var title: UILabel!
@IBOutlet weak var link: UILabel!
@IBOutlet weak var removeButton: UIButton!
@IBOutlet weak var unread: UIView!
override func update(withTab tab: Tab,
preview: UIImage?,
reorderRecognizer: UIGestureRecognizer?) {
accessibilityElements = [ title as Any, removeButton as Any ]
self.tab = tab
self.collectionReorderRecognizer = reorderRecognizer
if !isDeleting {
isHidden = false
}
isCurrent = delegate?.isCurrent(tab: tab) ?? false
decorate(with: ThemeManager.shared.currentTheme)
if let link = tab.link {
removeButton.accessibilityLabel = UserText.closeTab(withTitle: link.displayTitle, atAddress: link.url.host ?? "")
title.accessibilityLabel = UserText.openTab(withTitle: link.displayTitle, atAddress: link.url.host ?? "")
title.text = tab.link?.displayTitle
}
unread.isHidden = tab.viewed
if tab.link == nil {
let linkText = UserText.homeTabSearchAndFavorites
title.text = UserText.homeTabTitle
link.text = linkText
favicon.image = UIImage(named: "Logo")
unread.isHidden = true
title.isHidden = !tab.viewed
favicon.isHidden = !tab.viewed
removeButton.isHidden = !tab.viewed
link.isHidden = !tab.viewed
} else {
removeButton.isHidden = false
link.text = tab.link?.url.absoluteString ?? ""
favicon.loadFavicon(forDomain: tab.link?.url.host, usingCache: .tabs)
}
}
override func decorate(with theme: Theme) {
super.decorate(with: theme)
background.layer.borderWidth = isCurrent ? Constants.selectedBorderWidth : Constants.unselectedBorderWidth
background.layer.borderColor = theme.tabSwitcherCellBorderColor.cgColor
background.alpha = isCurrent ? Constants.selectedAlpha : Constants.unselectedAlpha
background.backgroundColor = theme.tabSwitcherCellBackgroundColor
title.textColor = theme.tabSwitcherCellTextColor
link.textColor = theme.tabSwitcherCellSecondaryTextColor
}
}