OverviewFragment simplify

This commit is contained in:
Milos Kozak 2021-01-26 15:44:56 +01:00
parent a15522fd50
commit f2e5ef76aa
9 changed files with 88 additions and 169 deletions

View file

@ -65,8 +65,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable import io.reactivex.disposables.CompositeDisposable
import io.reactivex.schedulers.Schedulers import io.reactivex.schedulers.Schedulers
import kotlinx.android.synthetic.main.overview_buttons_layout.* import kotlinx.android.synthetic.main.overview_buttons_layout.*
import kotlinx.android.synthetic.main.overview_fragment.overview_notifications import kotlinx.android.synthetic.main.overview_fragment.*
import kotlinx.android.synthetic.main.overview_fragment_nsclient.*
import kotlinx.android.synthetic.main.overview_graphs_layout.* import kotlinx.android.synthetic.main.overview_graphs_layout.*
import kotlinx.android.synthetic.main.overview_info_layout.* import kotlinx.android.synthetic.main.overview_info_layout.*
import kotlinx.android.synthetic.main.overview_loop_pumpstatus_layout.* import kotlinx.android.synthetic.main.overview_loop_pumpstatus_layout.*
@ -138,20 +137,21 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
dm = DisplayMetrics() dm = DisplayMetrics()
activity?.windowManager?.defaultDisplay?.getMetrics(dm) activity?.windowManager?.defaultDisplay?.getMetrics(dm)
val screenWidth = dm.widthPixels return inflater.inflate(R.layout.overview_fragment, container, false)
val screenHeight = dm.heightPixels
smallWidth = screenWidth <= Constants.SMALL_WIDTH
smallHeight = screenHeight <= Constants.SMALL_HEIGHT
val landscape = screenHeight < screenWidth
return inflater.inflate(skinProvider.activeSkin().overviewLayout(landscape, resourceHelper.gb(R.bool.isTablet), smallHeight), container, false)
} }
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
// pre-process landscape mode // pre-process landscape mode
skinProvider.activeSkin().preProcessLandscapeOverviewLayout(dm, view, resourceHelper.gb(R.bool.isTablet)) val screenWidth = dm.widthPixels
val screenHeight = dm.heightPixels
smallWidth = screenWidth <= Constants.SMALL_WIDTH
smallHeight = screenHeight <= Constants.SMALL_HEIGHT
val landscape = screenHeight < screenWidth
skinProvider.activeSkin().preProcessLandscapeOverviewLayout(dm, view, landscape, resourceHelper.gb(R.bool.isTablet), smallHeight)
nsclient_layout?.visibility = config.NSCLIENT.toVisibility()
overview_pumpstatus?.setBackgroundColor(resourceHelper.gc(R.color.colorInitializingBorder)) overview_pumpstatus?.setBackgroundColor(resourceHelper.gc(R.color.colorInitializingBorder))

View file

@ -11,11 +11,4 @@ class SkinButtonsOn @Inject constructor(private val config: Config) : SkinInterf
override val description: Int get() = R.string.buttonson_description override val description: Int get() = R.string.buttonson_description
override val mainGraphHeight: Int get() = 200 override val mainGraphHeight: Int get() = 200
override val secondaryGraphHeight: Int get() = 100 override val secondaryGraphHeight: Int get() = 100
override fun overviewLayout(isLandscape: Boolean, isTablet: Boolean, isSmallHeight: Boolean): Int =
when {
config.NSCLIENT -> R.layout.overview_fragment_nsclient
else -> R.layout.overview_fragment
}
} }

View file

@ -1,5 +1,8 @@
package info.nightscout.androidaps.skins package info.nightscout.androidaps.skins
import android.util.DisplayMetrics
import android.view.View
import android.widget.LinearLayout
import info.nightscout.androidaps.Config import info.nightscout.androidaps.Config
import info.nightscout.androidaps.R import info.nightscout.androidaps.R
import javax.inject.Inject import javax.inject.Inject
@ -12,11 +15,8 @@ class SkinClassic @Inject constructor(private val config: Config): SkinInterface
override val mainGraphHeight: Int get() = 200 override val mainGraphHeight: Int get() = 200
override val secondaryGraphHeight: Int get() = 100 override val secondaryGraphHeight: Int get() = 100
override fun overviewLayout(isLandscape: Boolean, isTablet: Boolean, isSmallHeight: Boolean): Int = override fun preProcessLandscapeOverviewLayout(dm: DisplayMetrics, view: View, isLandscape: Boolean, isTablet: Boolean, isSmallHeight: Boolean) {
when { super.preProcessLandscapeOverviewLayout(dm, view, isLandscape, isTablet, isSmallHeight)
config.NSCLIENT -> R.layout.overview_fragment_nsclient if (!config.NSCLIENT && (isSmallHeight || isLandscape)) moveButtonsLayout(view as LinearLayout)
isSmallHeight || isLandscape -> R.layout.overview_fragment_landscape
else -> R.layout.overview_fragment
} }
} }

View file

@ -17,13 +17,10 @@ interface SkinInterface {
val mainGraphHeight: Int // in dp val mainGraphHeight: Int // in dp
val secondaryGraphHeight: Int // in dp val secondaryGraphHeight: Int // in dp
@LayoutRes
fun overviewLayout(isLandscape: Boolean, isTablet: Boolean, isSmallHeight: Boolean): Int
@LayoutRes @LayoutRes
fun actionsLayout(isLandscape: Boolean, isSmallWidth: Boolean): Int = R.layout.actions_fragment fun actionsLayout(isLandscape: Boolean, isSmallWidth: Boolean): Int = R.layout.actions_fragment
fun preProcessLandscapeOverviewLayout(dm: DisplayMetrics, view: View, isTablet: Boolean) { fun preProcessLandscapeOverviewLayout(dm: DisplayMetrics, view: View, isLandscape: Boolean, isTablet: Boolean, isSmallHeight: Boolean) {
// pre-process landscape mode // pre-process landscape mode
val screenWidth = dm.widthPixels val screenWidth = dm.widthPixels
val screenHeight = dm.heightPixels val screenHeight = dm.heightPixels
@ -81,4 +78,11 @@ interface SkinInterface {
} }
} }
} }
fun moveButtonsLayout(root: LinearLayout) {
val buttonsLayout = root.findViewById<LinearLayout>(R.id.buttons_layout)
root.removeView(buttonsLayout)
val innerLayout = root.findViewById<LinearLayout>(R.id.inner_layout)
innerLayout.addView(buttonsLayout)
}
} }

View file

@ -1,5 +1,8 @@
package info.nightscout.androidaps.skins package info.nightscout.androidaps.skins
import android.util.DisplayMetrics
import android.view.View
import android.widget.LinearLayout
import info.nightscout.androidaps.Config import info.nightscout.androidaps.Config
import info.nightscout.androidaps.R import info.nightscout.androidaps.R
import javax.inject.Inject import javax.inject.Inject
@ -12,11 +15,8 @@ class SkinLargeDisplay @Inject constructor(private val config: Config): SkinInte
override val mainGraphHeight: Int get() = 400 override val mainGraphHeight: Int get() = 400
override val secondaryGraphHeight: Int get() = 150 override val secondaryGraphHeight: Int get() = 150
override fun overviewLayout(isLandscape: Boolean, isTablet: Boolean, isSmallHeight: Boolean): Int = override fun preProcessLandscapeOverviewLayout(dm: DisplayMetrics, view: View, isLandscape: Boolean, isTablet: Boolean, isSmallHeight: Boolean) {
when { super.preProcessLandscapeOverviewLayout(dm, view, isLandscape, isTablet, isSmallHeight)
config.NSCLIENT -> R.layout.overview_fragment_nsclient if (!config.NSCLIENT && (isSmallHeight || isLandscape)) moveButtonsLayout(view as LinearLayout)
isSmallHeight || isLandscape -> R.layout.overview_fragment_landscape
else -> R.layout.overview_fragment
} }
} }

View file

@ -2,6 +2,7 @@ package info.nightscout.androidaps.skins
import android.util.DisplayMetrics import android.util.DisplayMetrics
import android.view.View import android.view.View
import android.widget.LinearLayout
import info.nightscout.androidaps.Config import info.nightscout.androidaps.Config
import info.nightscout.androidaps.R import info.nightscout.androidaps.R
import javax.inject.Inject import javax.inject.Inject
@ -14,18 +15,13 @@ class SkinLowRes @Inject constructor(private val config: Config) : SkinInterface
override val mainGraphHeight: Int get() = 200 override val mainGraphHeight: Int get() = 200
override val secondaryGraphHeight: Int get() = 100 override val secondaryGraphHeight: Int get() = 100
override fun overviewLayout(isLandscape: Boolean, isTablet: Boolean, isSmallHeight: Boolean): Int =
when {
config.NSCLIENT -> R.layout.overview_fragment_nsclient
isLandscape -> R.layout.overview_fragment_landscape
else -> R.layout.overview_fragment
}
override fun actionsLayout(isLandscape: Boolean, isSmallWidth: Boolean): Int = override fun actionsLayout(isLandscape: Boolean, isSmallWidth: Boolean): Int =
when { when {
isLandscape -> R.layout.actions_fragment isLandscape -> R.layout.actions_fragment
else -> R.layout.actions_fragment_lowres else -> R.layout.actions_fragment_lowres
} }
override fun preProcessLandscapeOverviewLayout(dm: DisplayMetrics, view: View, isTablet: Boolean) {} override fun preProcessLandscapeOverviewLayout(dm: DisplayMetrics, view: View, isLandscape: Boolean, isTablet: Boolean, isSmallHeight: Boolean) {
if (!config.NSCLIENT && isLandscape) moveButtonsLayout(view as LinearLayout)
}
} }

View file

@ -8,11 +8,13 @@
<ScrollView <ScrollView
android:id="@+id/overview_toppart_scrollbar" android:id="@+id/overview_toppart_scrollbar"
android:layout_weight="1"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="0dp"> android:layout_height="0dp"
android:layout_weight="1"
tools:ignore="UselessParent">
<LinearLayout <LinearLayout
android:id="@+id/inner_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical"> android:orientation="vertical">
@ -28,12 +30,59 @@
<include layout="@layout/overview_statuslights_layout" /> <include layout="@layout/overview_statuslights_layout" />
<com.google.android.flexbox.FlexboxLayout xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/nsclient_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorControlHighlight"
app:alignContent="stretch"
app:alignItems="stretch"
app:flexDirection="row"
app:flexWrap="wrap"
app:justifyContent="center">
<TextView
android:id="@+id/overview_pump"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingStart="4sp"
android:paddingEnd="4sp"
android:text="Pump: running"
android:textColor="@android:color/white"
android:textSize="16sp" />
<TextView
android:id="@+id/overview_openaps"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingStart="4sp"
android:paddingEnd="4sp"
android:text="OAPS: 3 min ago"
android:textColor="@android:color/white"
android:textSize="16sp" />
<TextView
android:id="@+id/overview_uploader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingStart="4sp"
android:paddingEnd="4sp"
android:text="UPLD: 84%"
android:textColor="@android:color/white"
android:textSize="16sp" />
</com.google.android.flexbox.FlexboxLayout>
<include layout="@layout/overview_graphs_layout" /> <include layout="@layout/overview_graphs_layout" />
</LinearLayout> </LinearLayout>
</ScrollView> </ScrollView>
<include layout="@layout/overview_buttons_layout" /> <include
android:id="@+id/buttons_layout"
layout="@layout/overview_buttons_layout" />
</LinearLayout> </LinearLayout>

View file

@ -1,40 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".plugins.general.overview.OverviewFragment">
<ScrollView
android:id="@+id/overview_toppart_scrollbar"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
tools:ignore="UselessParent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/overview_notifications"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<include layout="@layout/overview_loop_pumpstatus_layout" />
<include layout="@layout/overview_info_layout" />
<include layout="@layout/overview_statuslights_layout" />
<include layout="@layout/overview_graphs_layout" />
<include layout="@layout/overview_buttons_layout" />
</LinearLayout>
</ScrollView>
</LinearLayout>

View file

@ -1,83 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".plugins.general.overview.OverviewFragment">
<ScrollView
android:id="@+id/overview_toppart_scrollbar"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/overview_notifications"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<include layout="@layout/overview_loop_pumpstatus_layout" />
<include layout="@layout/overview_info_layout" />
<include layout="@layout/overview_statuslights_layout" />
<com.google.android.flexbox.FlexboxLayout xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorControlHighlight"
app:alignContent="stretch"
app:alignItems="stretch"
app:flexDirection="row"
app:flexWrap="wrap"
app:justifyContent="center">
<TextView
android:id="@+id/overview_pump"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingStart="4sp"
android:paddingEnd="4sp"
android:text="Pump: running"
android:textColor="@android:color/white"
android:textSize="16sp" />
<TextView
android:id="@+id/overview_openaps"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingStart="4sp"
android:paddingEnd="4sp"
android:text="OAPS: 3 min ago"
android:textColor="@android:color/white"
android:textSize="16sp" />
<TextView
android:id="@+id/overview_uploader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingStart="4sp"
android:paddingEnd="4sp"
android:text="UPLD: 84%"
android:textColor="@android:color/white"
android:textSize="16sp" />
</com.google.android.flexbox.FlexboxLayout>
<include layout="@layout/overview_graphs_layout" />
</LinearLayout>
</ScrollView>
<include layout="@layout/overview_buttons_layout" />
</LinearLayout>