summaryrefslogtreecommitdiff
path: root/quickstep/src/com/android/launcher3/taskbar/navbutton/KidsNavLayoutter.kt
blob: 4a53c0c3b1badbdf3e815c74774a2890fc8bff90 (plain)
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
/*
 * Copyright (C) 2022 The Android Open Source Project
 *
 * 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
 */

package com.android.launcher3.taskbar.navbutton

import android.content.res.Resources
import android.graphics.Color
import android.graphics.drawable.PaintDrawable
import android.view.Gravity
import android.view.ViewGroup
import android.widget.FrameLayout
import android.widget.ImageView
import android.widget.LinearLayout
import com.android.launcher3.DeviceProfile
import com.android.launcher3.taskbar.navbutton.LayoutResourceHelper.*

class KidsNavLayoutter(
    resources: Resources,
    navBarContainer: LinearLayout,
    endContextualContainer: ViewGroup,
    startContextualContainer: ViewGroup
) :
    AbstractNavButtonLayoutter(
        resources,
        navBarContainer,
        endContextualContainer,
        startContextualContainer
    ) {

    override fun layoutButtons(dp: DeviceProfile, isContextualButtonShowing: Boolean) {
        val iconSize: Int = resources.getDimensionPixelSize(DIMEN_TASKBAR_ICON_SIZE_KIDS)
        val buttonWidth: Int = resources.getDimensionPixelSize(DIMEN_TASKBAR_NAV_BUTTONS_WIDTH_KIDS)
        val buttonHeight: Int =
            resources.getDimensionPixelSize(DIMEN_TASKBAR_NAV_BUTTONS_HEIGHT_KIDS)
        val buttonRadius: Int =
            resources.getDimensionPixelSize(DIMEN_TASKBAR_NAV_BUTTONS_CORNER_RADIUS_KIDS)
        val paddingLeft = (buttonWidth - iconSize) / 2
        val paddingTop = (buttonHeight - iconSize) / 2

        // Update icons
        backButton!!.setImageDrawable(backButton.context.getDrawable(DRAWABLE_SYSBAR_BACK_KIDS))
        backButton.scaleType = ImageView.ScaleType.FIT_CENTER
        backButton.setPadding(paddingLeft, paddingTop, paddingLeft, paddingTop)
        homeButton!!.setImageDrawable(homeButton.context.getDrawable(DRAWABLE_SYSBAR_HOME_KIDS))
        homeButton.scaleType = ImageView.ScaleType.FIT_CENTER
        homeButton.setPadding(paddingLeft, paddingTop, paddingLeft, paddingTop)

        // Home button layout
        val homeLayoutparams = LinearLayout.LayoutParams(buttonWidth, buttonHeight)
        val homeButtonLeftMargin: Int =
            resources.getDimensionPixelSize(DIMEN_TASKBAR_HOME_BUTTON_LEFT_MARGIN_KIDS)
        homeLayoutparams.setMargins(homeButtonLeftMargin, 0, 0, 0)
        homeButton.layoutParams = homeLayoutparams

        // Back button layout
        val backLayoutParams = LinearLayout.LayoutParams(buttonWidth, buttonHeight)
        val backButtonLeftMargin: Int =
            resources.getDimensionPixelSize(DIMEN_TASKBAR_BACK_BUTTON_LEFT_MARGIN_KIDS)
        backLayoutParams.setMargins(backButtonLeftMargin, 0, 0, 0)
        backButton.layoutParams = backLayoutParams

        // Button backgrounds
        val whiteWith10PctAlpha = Color.argb(0.1f, 1f, 1f, 1f)
        val buttonBackground = PaintDrawable(whiteWith10PctAlpha)
        buttonBackground.setCornerRadius(buttonRadius.toFloat())
        homeButton.background = buttonBackground
        backButton.background = buttonBackground

        // Update alignment within taskbar
        val navButtonsLayoutParams = navButtonContainer.layoutParams as FrameLayout.LayoutParams
        navButtonsLayoutParams.apply {
            marginStart = navButtonsLayoutParams.marginEnd / 2
            marginEnd = navButtonsLayoutParams.marginStart
            gravity = Gravity.CENTER
        }
        navButtonContainer.requestLayout()

        homeButton.onLongClickListener = null
    }
}