comparison android/DWindows.kt @ 2650:7101b5692601

Android: Attempt at implementing splitbar using ConstraintLayout. Getting errors with the layout with HandyFTP, but I need to switch locations... so committing unfinished.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Tue, 14 Sep 2021 05:53:51 +0000
parents 28ca1e59e76f
children 7700c8022af3
comparison
equal deleted inserted replaced
2649:76d876c441c9 2650:7101b5692601
40 import android.widget.SeekBar.OnSeekBarChangeListener 40 import android.widget.SeekBar.OnSeekBarChangeListener
41 import androidx.appcompat.app.AlertDialog 41 import androidx.appcompat.app.AlertDialog
42 import androidx.appcompat.app.AppCompatActivity 42 import androidx.appcompat.app.AppCompatActivity
43 import androidx.appcompat.widget.AppCompatEditText 43 import androidx.appcompat.widget.AppCompatEditText
44 import androidx.collection.SimpleArrayMap 44 import androidx.collection.SimpleArrayMap
45 import androidx.constraintlayout.widget.ConstraintLayout
46 import androidx.constraintlayout.widget.ConstraintSet
45 import androidx.core.app.NotificationCompat 47 import androidx.core.app.NotificationCompat
46 import androidx.core.app.NotificationManagerCompat 48 import androidx.core.app.NotificationManagerCompat
47 import androidx.core.content.res.ResourcesCompat 49 import androidx.core.content.res.ResourcesCompat
48 import androidx.core.view.MenuCompat 50 import androidx.core.view.MenuCompat
49 import androidx.recyclerview.widget.RecyclerView 51 import androidx.recyclerview.widget.RecyclerView
1970 val adapter: DWTabViewPagerAdapter = pager.adapter as DWTabViewPagerAdapter 1972 val adapter: DWTabViewPagerAdapter = pager.adapter as DWTabViewPagerAdapter
1971 val index = adapter.pageList.indexOf(pageID) 1973 val index = adapter.pageList.indexOf(pageID)
1972 val tab = tabs.getTabAt(index) 1974 val tab = tabs.getTabAt(index)
1973 1975
1974 tabs.selectTab(tab) 1976 tabs.selectTab(tab)
1977 }
1978 }
1979 }
1980
1981 fun splitBarNew(type: Int, topleft: View?, bottomright: View?, cid: Int): ConstraintLayout?
1982 {
1983 var splitbar: ConstraintLayout? = null
1984
1985 waitOnUiThread {
1986 splitbar = ConstraintLayout(this)
1987
1988 if(splitbar != null) {
1989 val constraintSet = ConstraintSet()
1990 constraintSet.clone(splitbar)
1991
1992 splitbar!!.id = cid
1993
1994 // Place the top/left item
1995 if(topleft != null) {
1996 if(topleft.id == 0) {
1997 topleft.id = View.generateViewId()
1998 }
1999 splitbar!!.addView(topleft)
2000 constraintSet.connect(
2001 topleft.id,
2002 ConstraintLayout.LayoutParams.TOP,
2003 ConstraintLayout.LayoutParams.PARENT_ID,
2004 ConstraintLayout.LayoutParams.TOP
2005 )
2006 constraintSet.connect(
2007 topleft.id,
2008 ConstraintLayout.LayoutParams.LEFT,
2009 ConstraintLayout.LayoutParams.PARENT_ID,
2010 ConstraintLayout.LayoutParams.LEFT
2011 )
2012
2013 if (type == 0) {
2014 // Horizontal
2015 constraintSet.connect(
2016 topleft.id,
2017 ConstraintLayout.LayoutParams.BOTTOM,
2018 ConstraintLayout.LayoutParams.PARENT_ID,
2019 ConstraintLayout.LayoutParams.BOTTOM
2020 )
2021 constraintSet.constrainPercentWidth(topleft.id, 0.5F)
2022 } else {
2023 // Vertical
2024 constraintSet.connect(
2025 topleft.id,
2026 ConstraintLayout.LayoutParams.RIGHT,
2027 ConstraintLayout.LayoutParams.PARENT_ID,
2028 ConstraintLayout.LayoutParams.RIGHT
2029 )
2030 constraintSet.constrainPercentHeight(topleft.id, 0.5F)
2031 }
2032 }
2033
2034 // Place the bottom/right item
2035 if(bottomright != null) {
2036 if (bottomright.id == 0) {
2037 bottomright.id = View.generateViewId()
2038 }
2039 splitbar!!.addView(bottomright)
2040 constraintSet.connect(
2041 bottomright.id,
2042 ConstraintLayout.LayoutParams.BOTTOM,
2043 ConstraintLayout.LayoutParams.PARENT_ID,
2044 ConstraintLayout.LayoutParams.BOTTOM
2045 )
2046 constraintSet.connect(
2047 bottomright.id,
2048 ConstraintLayout.LayoutParams.RIGHT,
2049 ConstraintLayout.LayoutParams.PARENT_ID,
2050 ConstraintLayout.LayoutParams.RIGHT
2051 )
2052
2053 if (type == 0) {
2054 // Horizontal
2055 constraintSet.connect(
2056 bottomright.id,
2057 ConstraintLayout.LayoutParams.TOP,
2058 ConstraintLayout.LayoutParams.PARENT_ID,
2059 ConstraintLayout.LayoutParams.TOP
2060 )
2061 constraintSet.constrainPercentWidth(bottomright.id, 0.5F)
2062 } else {
2063 // Vertical
2064 constraintSet.connect(
2065 bottomright.id,
2066 ConstraintLayout.LayoutParams.LEFT,
2067 ConstraintLayout.LayoutParams.PARENT_ID,
2068 ConstraintLayout.LayoutParams.LEFT
2069 )
2070 constraintSet.constrainPercentHeight(bottomright.id, 0.5F)
2071 }
2072 }
2073
2074 // finally, apply the constraint set to layout
2075 constraintSet.applyTo(splitbar)
2076 }
2077 }
2078 return splitbar
2079 }
2080
2081 fun splitBarGet(splitbar: ConstraintLayout): Float {
2082 var position: Float = 50.0F
2083
2084 waitOnUiThread {
2085 val topleft: View? = splitbar.getChildAt(0)
2086 val bottomright: View? = splitbar.getChildAt(1)
2087
2088 if(splitbar.width > 0 && splitbar.height > 0) {
2089 if (topleft != null) {
2090 if (splitbar.width == topleft.width) {
2091 position = (topleft.height / splitbar.height) * 100.0F
2092 } else {
2093 position = (topleft.width / splitbar.width) * 100.0F
2094 }
2095 } else if (bottomright != null) {
2096 if (splitbar.width == bottomright.width) {
2097 position = 100.0F - ((bottomright.height / splitbar.height) * 100.0F)
2098 } else {
2099 position = 100.0F - ((bottomright.width / splitbar.width) * 100.0F)
2100 }
2101 }
2102 }
2103 }
2104 return position
2105 }
2106
2107 fun splitBarSet(splitbar: ConstraintLayout, position: Float) {
2108 waitOnUiThread {
2109 val topleft: View? = splitbar.getChildAt(0)
2110 val bottomright: View? = splitbar.getChildAt(1)
2111
2112 if(splitbar.width > 0 && splitbar.height > 0) {
2113 val constraintSet = ConstraintSet()
2114 constraintSet.clone(splitbar)
2115 if (topleft != null) {
2116 if (splitbar.width == topleft.width) {
2117 constraintSet.constrainPercentHeight(topleft.id, position / 100.0F)
2118 } else {
2119 constraintSet.constrainPercentWidth(topleft.id, position / 100.0F)
2120 }
2121 }
2122 if (bottomright != null) {
2123 val altper: Float = (100.0F - position) / 100.0F
2124 if (splitbar.width == bottomright.width) {
2125 constraintSet.constrainPercentHeight(bottomright.id, altper)
2126 } else {
2127 constraintSet.constrainPercentWidth(bottomright.id, altper)
2128 }
2129 }
2130 constraintSet.applyTo(splitbar)
1975 } 2131 }
1976 } 2132 }
1977 } 2133 }
1978 2134
1979 fun sliderNew(vertical: Int, increments: Int, cid: Int): SeekBar? 2135 fun sliderNew(vertical: Int, increments: Int, cid: Int): SeekBar?