ChooseActionDialog to kotlin
This commit is contained in:
parent
a809c0ac35
commit
063c27fb89
|
@ -1,109 +0,0 @@
|
||||||
package info.nightscout.androidaps.plugins.general.automation.dialogs;
|
|
||||||
|
|
||||||
import android.os.Bundle;
|
|
||||||
import android.view.LayoutInflater;
|
|
||||||
import android.view.View;
|
|
||||||
import android.view.ViewGroup;
|
|
||||||
import android.widget.RadioButton;
|
|
||||||
import android.widget.RadioGroup;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
import androidx.fragment.app.DialogFragment;
|
|
||||||
|
|
||||||
import butterknife.BindView;
|
|
||||||
import butterknife.ButterKnife;
|
|
||||||
import butterknife.OnClick;
|
|
||||||
import butterknife.Unbinder;
|
|
||||||
import info.nightscout.androidaps.MainApp;
|
|
||||||
import info.nightscout.androidaps.R;
|
|
||||||
import info.nightscout.androidaps.plugins.bus.RxBus;
|
|
||||||
import info.nightscout.androidaps.plugins.general.automation.AutomationPlugin;
|
|
||||||
import info.nightscout.androidaps.plugins.general.automation.actions.Action;
|
|
||||||
import info.nightscout.androidaps.plugins.general.automation.events.EventAutomationAddAction;
|
|
||||||
import info.nightscout.androidaps.plugins.general.automation.events.EventAutomationUpdateGui;
|
|
||||||
|
|
||||||
public class ChooseActionDialog extends DialogFragment {
|
|
||||||
|
|
||||||
private Unbinder mUnbinder;
|
|
||||||
|
|
||||||
@BindView(R.id.radioGroup)
|
|
||||||
RadioGroup mRadioGroup;
|
|
||||||
|
|
||||||
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
|
|
||||||
Bundle savedInstanceState) {
|
|
||||||
View view = inflater.inflate(R.layout.automation_dialog_choose_action, container, false);
|
|
||||||
mUnbinder = ButterKnife.bind(this, view);
|
|
||||||
|
|
||||||
for (Action a : AutomationPlugin.INSTANCE.getActionDummyObjects()) {
|
|
||||||
RadioButton radioButton = new RadioButton(getContext());
|
|
||||||
radioButton.setText(a.friendlyName());
|
|
||||||
radioButton.setTag(a);
|
|
||||||
mRadioGroup.addView(radioButton);
|
|
||||||
}
|
|
||||||
|
|
||||||
// restore checked radio button
|
|
||||||
int checkedIndex = 0;
|
|
||||||
if (savedInstanceState != null) {
|
|
||||||
checkedIndex = savedInstanceState.getInt("checkedIndex");
|
|
||||||
}
|
|
||||||
|
|
||||||
((RadioButton) mRadioGroup.getChildAt(checkedIndex)).setChecked(true);
|
|
||||||
|
|
||||||
return view;
|
|
||||||
}
|
|
||||||
|
|
||||||
private int getCheckedIndex() {
|
|
||||||
for (int i = 0; i < mRadioGroup.getChildCount(); ++i) {
|
|
||||||
if (((RadioButton) mRadioGroup.getChildAt(i)).isChecked())
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
private Class getActionClass() {
|
|
||||||
int radioButtonID = mRadioGroup.getCheckedRadioButtonId();
|
|
||||||
RadioButton radioButton = mRadioGroup.findViewById(radioButtonID);
|
|
||||||
if (radioButton != null) {
|
|
||||||
Object tag = radioButton.getTag();
|
|
||||||
if (tag instanceof Action)
|
|
||||||
return tag.getClass();
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private Action instantiateAction() {
|
|
||||||
Class actionClass = getActionClass();
|
|
||||||
if (actionClass != null) {
|
|
||||||
try {
|
|
||||||
return (Action) actionClass.newInstance();
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onDestroyView() {
|
|
||||||
mUnbinder.unbind();
|
|
||||||
super.onDestroyView();
|
|
||||||
}
|
|
||||||
|
|
||||||
@OnClick(R.id.ok)
|
|
||||||
public void onButtonOk(View unused) {
|
|
||||||
dismiss();
|
|
||||||
RxBus.INSTANCE.send(new EventAutomationAddAction(instantiateAction()));
|
|
||||||
RxBus.INSTANCE.send(new EventAutomationUpdateGui());
|
|
||||||
}
|
|
||||||
|
|
||||||
@OnClick(R.id.cancel)
|
|
||||||
public void onButtonCancel(View unused) {
|
|
||||||
dismiss();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onSaveInstanceState(Bundle bundle) {
|
|
||||||
bundle.putInt("checkedIndex", getCheckedIndex());
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,85 @@
|
||||||
|
package info.nightscout.androidaps.plugins.general.automation.dialogs
|
||||||
|
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.view.LayoutInflater
|
||||||
|
import android.view.View
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import android.widget.RadioButton
|
||||||
|
import androidx.fragment.app.DialogFragment
|
||||||
|
import info.nightscout.androidaps.R
|
||||||
|
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||||
|
import info.nightscout.androidaps.plugins.general.automation.AutomationPlugin
|
||||||
|
import info.nightscout.androidaps.plugins.general.automation.actions.Action
|
||||||
|
import info.nightscout.androidaps.plugins.general.automation.events.EventAutomationAddAction
|
||||||
|
import info.nightscout.androidaps.plugins.general.automation.events.EventAutomationUpdateGui
|
||||||
|
import kotlinx.android.synthetic.main.automation_dialog_choose_action.*
|
||||||
|
import kotlinx.android.synthetic.main.okcancel.*
|
||||||
|
|
||||||
|
class ChooseActionDialog : DialogFragment() {
|
||||||
|
|
||||||
|
var checkedIndex = -1
|
||||||
|
|
||||||
|
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
|
||||||
|
savedInstanceState: Bundle?): View? {
|
||||||
|
// restore checked radio button
|
||||||
|
savedInstanceState?.let { bundle ->
|
||||||
|
checkedIndex = bundle.getInt("checkedIndex")
|
||||||
|
}
|
||||||
|
|
||||||
|
dialog.setCanceledOnTouchOutside(false)
|
||||||
|
return inflater.inflate(R.layout.automation_dialog_choose_action, container, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
|
||||||
|
for (a in AutomationPlugin.getActionDummyObjects()) {
|
||||||
|
val radioButton = RadioButton(context)
|
||||||
|
radioButton.setText(a.friendlyName())
|
||||||
|
radioButton.tag = a.javaClass
|
||||||
|
automation_radioGroup.addView(radioButton)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (checkedIndex != -1)
|
||||||
|
(automation_radioGroup.getChildAt(checkedIndex) as RadioButton).isChecked = true
|
||||||
|
|
||||||
|
// OK button
|
||||||
|
ok.setOnClickListener {
|
||||||
|
dismiss()
|
||||||
|
instantiateAction()?.let {
|
||||||
|
RxBus.send(EventAutomationAddAction(it))
|
||||||
|
RxBus.send(EventAutomationUpdateGui())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cancel button
|
||||||
|
cancel.setOnClickListener { dismiss() }
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onSaveInstanceState(bundle: Bundle) {
|
||||||
|
bundle.putInt("checkedIndex", determineCheckedIndex())
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun instantiateAction(): Action? {
|
||||||
|
return getActionClass()?.let {
|
||||||
|
it.newInstance() as Action
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getActionClass(): Class<*>? {
|
||||||
|
val radioButtonID = automation_radioGroup.checkedRadioButtonId
|
||||||
|
val radioButton = automation_radioGroup.findViewById<RadioButton>(radioButtonID)
|
||||||
|
return radioButton?.let {
|
||||||
|
it.tag as Class<*>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun determineCheckedIndex(): Int {
|
||||||
|
for (i in 0 until automation_radioGroup.childCount) {
|
||||||
|
if ((automation_radioGroup.getChildAt(i) as RadioButton).isChecked)
|
||||||
|
return i
|
||||||
|
}
|
||||||
|
return -1
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -18,12 +18,12 @@
|
||||||
android:text="@string/please_choose_an_action_type" />
|
android:text="@string/please_choose_an_action_type" />
|
||||||
|
|
||||||
<RadioGroup
|
<RadioGroup
|
||||||
android:id="@+id/radioGroup"
|
android:id="@+id/automation_radioGroup"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_marginVertical="5dp" />
|
android:layout_marginVertical="5dp" />
|
||||||
|
|
||||||
<include layout="@layout/mdtp_done_button" />
|
<include layout="@layout/okcancel" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
44
app/src/main/res/layout/okcancel.xml
Normal file
44
app/src/main/res/layout/okcancel.xml
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Copyright (C) 2013 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.
|
||||||
|
-->
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:id="@+id/done_background"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="56dp"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:background="@android:color/transparent"
|
||||||
|
android:gravity="end|right"
|
||||||
|
android:layout_gravity="center_vertical"
|
||||||
|
android:paddingBottom="8dp">
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/cancel"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_marginRight="8dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
style="@style/mdtp_ActionButton.Text"
|
||||||
|
android:text="@string/mdtp_cancel" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/ok"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginRight="16dp"
|
||||||
|
android:layout_marginEnd="16dp"
|
||||||
|
style="@style/mdtp_ActionButton.Text"
|
||||||
|
android:text="@string/mdtp_ok" />
|
||||||
|
</LinearLayout>
|
||||||
|
<!-- From: file:/Users/wdullaer/Documents/Programming%20Projects/MaterialDateTimePicker/library/src/main/res/layout/mdtp_done_button.xml -->
|
Loading…
Reference in a new issue