Adjust label positioning

This commit is contained in:
Ali
2022-12-25 02:40:56 +04:00
parent e5d2e90b1e
commit 07c09c3fb8
2 changed files with 27 additions and 4 deletions

View File

@@ -391,6 +391,10 @@ final class PieChartComponent: Component {
let intersectionOuterBottomRight = lineCircleIntersection(relLabelCenter, relLabelCenter, CGPoint(x: relLabelCenter.x + labelSize.width * 0.5, y: relLabelCenter.y - labelSize.height * 0.5), diameter * 0.5) let intersectionOuterBottomRight = lineCircleIntersection(relLabelCenter, relLabelCenter, CGPoint(x: relLabelCenter.x + labelSize.width * 0.5, y: relLabelCenter.y - labelSize.height * 0.5), diameter * 0.5)
let intersectionInnerBottomRight = lineCircleIntersection(relLabelCenter, relLabelCenter, CGPoint(x: relLabelCenter.x + labelSize.width * 0.5, y: relLabelCenter.y - labelSize.height * 0.5), innerDiameter * 0.5) let intersectionInnerBottomRight = lineCircleIntersection(relLabelCenter, relLabelCenter, CGPoint(x: relLabelCenter.x + labelSize.width * 0.5, y: relLabelCenter.y - labelSize.height * 0.5), innerDiameter * 0.5)
let horizontalInset: CGFloat = 2.0
let intersectionOuterLeft = lineCircleIntersection(relLabelCenter, relLabelCenter, CGPoint(x: relLabelCenter.x + labelSize.width * 0.5, y: relLabelCenter.y), diameter * 0.5) - horizontalInset
let intersectionInnerLeft = lineCircleIntersection(relLabelCenter, relLabelCenter, CGPoint(x: relLabelCenter.x + labelSize.width * 0.5, y: relLabelCenter.y), innerDiameter * 0.5) - horizontalInset
let intersectionLine1TopRight = lineLineIntersection(relLabelCenter, CGPoint(x: relLabelCenter.x + labelSize.width * 0.5, y: relLabelCenter.y + labelSize.height * 0.5), CGPoint(), CGPoint(x: cos(innerStartAngle), y: sin(innerStartAngle))) let intersectionLine1TopRight = lineLineIntersection(relLabelCenter, CGPoint(x: relLabelCenter.x + labelSize.width * 0.5, y: relLabelCenter.y + labelSize.height * 0.5), CGPoint(), CGPoint(x: cos(innerStartAngle), y: sin(innerStartAngle)))
let intersectionLine1BottomRight = lineLineIntersection(relLabelCenter, CGPoint(x: relLabelCenter.x + labelSize.width * 0.5, y: relLabelCenter.y - labelSize.height * 0.5), CGPoint(), CGPoint(x: cos(innerStartAngle), y: sin(innerStartAngle))) let intersectionLine1BottomRight = lineLineIntersection(relLabelCenter, CGPoint(x: relLabelCenter.x + labelSize.width * 0.5, y: relLabelCenter.y - labelSize.height * 0.5), CGPoint(), CGPoint(x: cos(innerStartAngle), y: sin(innerStartAngle)))
let intersectionLine2TopRight = lineLineIntersection(relLabelCenter, CGPoint(x: relLabelCenter.x + labelSize.width * 0.5, y: relLabelCenter.y + labelSize.height * 0.5), CGPoint(), CGPoint(x: cos(innerEndAngle), y: sin(innerEndAngle))) let intersectionLine2TopRight = lineLineIntersection(relLabelCenter, CGPoint(x: relLabelCenter.x + labelSize.width * 0.5, y: relLabelCenter.y + labelSize.height * 0.5), CGPoint(), CGPoint(x: cos(innerEndAngle), y: sin(innerEndAngle)))
@@ -400,7 +404,9 @@ final class PieChartComponent: Component {
intersectionOuterTopRight, intersectionOuterTopRight,
intersectionInnerTopRight, intersectionInnerTopRight,
intersectionOuterBottomRight, intersectionOuterBottomRight,
intersectionInnerBottomRight intersectionInnerBottomRight,
intersectionOuterLeft,
intersectionInnerLeft
] ]
if angleValue < CGFloat.pi / 2.0 { if angleValue < CGFloat.pi / 2.0 {
@@ -414,7 +420,7 @@ final class PieChartComponent: Component {
var minDistance: CGFloat = 1000.0 var minDistance: CGFloat = 1000.0
for distance in distances { for distance in distances {
minDistance = min(minDistance, distance) minDistance = min(minDistance, max(distance, 1.0))
} }
let diagonalAngle = atan2(labelSize.height, labelSize.width) let diagonalAngle = atan2(labelSize.height, labelSize.width)

View File

@@ -231,7 +231,22 @@ final class StorageUsageScreenComponent: Component {
private var selectionState: SelectionState? private var selectionState: SelectionState?
private var isClearing: Bool = false private var isClearing: Bool = false {
didSet {
if self.isClearing != oldValue {
if self.isClearing {
if self.keepScreenActiveDisposable == nil {
self.keepScreenActiveDisposable = self.component?.context.sharedContext.applicationBindings.pushIdleTimerExtension()
}
} else {
if let keepScreenActiveDisposable = self.keepScreenActiveDisposable {
self.keepScreenActiveDisposable = nil
keepScreenActiveDisposable.dispose()
}
}
}
}
}
private var selectedCategories: Set<Category> = Set() private var selectedCategories: Set<Category> = Set()
private var isOtherCategoryExpanded: Bool = false private var isOtherCategoryExpanded: Bool = false
@@ -288,6 +303,7 @@ final class StorageUsageScreenComponent: Component {
private var statsDisposable: Disposable? private var statsDisposable: Disposable?
private var messagesDisposable: Disposable? private var messagesDisposable: Disposable?
private var cacheSettingsDisposable: Disposable? private var cacheSettingsDisposable: Disposable?
private var keepScreenActiveDisposable: Disposable?
override init(frame: CGRect) { override init(frame: CGRect) {
self.headerOffsetContainer = UIView() self.headerOffsetContainer = UIView()
@@ -349,6 +365,7 @@ final class StorageUsageScreenComponent: Component {
deinit { deinit {
self.statsDisposable?.dispose() self.statsDisposable?.dispose()
self.messagesDisposable?.dispose() self.messagesDisposable?.dispose()
self.keepScreenActiveDisposable?.dispose()
} }
func scrollViewWillBeginDragging(_ scrollView: UIScrollView) { func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
@@ -1784,7 +1801,7 @@ final class StorageUsageScreenComponent: Component {
if result.imageItems.isEmpty && result.fileItems.isEmpty && result.musicItems.isEmpty && peerItems.isEmpty { if result.imageItems.isEmpty && result.fileItems.isEmpty && result.musicItems.isEmpty && peerItems.isEmpty {
self.selectionState = nil self.selectionState = nil
} else { } else {
self.selectionState = SelectionState() self.selectionState = nil
} }
} }