Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
signalapp
GitHub Repository: signalapp/Signal-iOS
Path: blob/main/Signal/src/ViewControllers/AppSettings/Appearance/AppIconLearnMoreTableViewController.swift
1 views
//
// Copyright 2024 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//

import SignalServiceKit
import SignalUI

final class AppIconLearnMoreTableViewController: OWSTableViewController2 {
    override func viewDidLoad() {
        super.viewDidLoad()
        updateTableContents()

        navigationItem.rightBarButtonItem = .doneButton(dismissingFrom: self)
    }

    override func themeDidChange() {
        super.themeDidChange()
        updateTableContents()
    }

    private func updateTableContents() {
        let contents = OWSTableContents()

        let topSection = OWSTableSection()
        topSection.headerAttributedTitle = NSAttributedString(
            string: OWSLocalizedString(
                "SETTINGS_APP_ICON_EDUCATION_APP_NAME",
                comment: "Information on sheet about changing the app icon - first line",
            ),
        )
        .styled(
            with: .font(.dynamicTypeSubheadlineClamped),
            .color(defaultFooterTextColor),
        )
        topSection.add(.init(customCellBlock: { [weak self] in
            let homescreenImageName = UIDevice.current.isIPad ? "homescreen_ipados" : "homescreen_ios"
            return self?.createCell(
                with: homescreenImageName,
                insets: .init(hMargin: 48, vMargin: 24),
            ) ?? UITableViewCell()
        }))
        topSection.shouldDisableCellSelection = true

        let bottomSection = OWSTableSection()
        bottomSection.headerAttributedTitle = NSAttributedString(
            string: OWSLocalizedString(
                "SETTINGS_APP_ICON_EDUCATION_HOME_SCREEN_DOCK",
                comment: "Information on sheet about changing the app icon - second line",
            ),
        )
        .styled(
            with: .font(.dynamicTypeSubheadlineClamped),
            .color(defaultFooterTextColor),
        )
        bottomSection.add(.init(customCellBlock: { [weak self] in
            let dockImageName = UIDevice.current.isIPad ? "dock_ipados" : "dock_ios"
            return self?.createCell(
                with: dockImageName,
                insets: .init(top: 0, leading: 16, bottom: 29, trailing: 16),
            ) ?? UITableViewCell()
        }))
        bottomSection.shouldDisableCellSelection = true

        contents.add(sections: [topSection, bottomSection])
        self.contents = contents
    }

    private func createCell(
        with image: String,
        insets: UIEdgeInsets,
    ) -> UITableViewCell {
        let cell = OWSTableItem.newCell()
        let image = UIImage(named: image)
        let imageView = UIImageView(image: image)
        imageView.contentMode = .scaleAspectFit
        cell.contentView.addSubview(imageView)
        imageView.autoPinEdgesToSuperviewEdges(with: insets)
        return cell
    }
}