ObjectivesFragment to kotlin
This commit is contained in:
parent
a75312eea0
commit
702ca21459
|
@ -1,255 +0,0 @@
|
|||
package info.nightscout.androidaps.plugins.constraints.objectives;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.text.Html;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.EditText;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.cardview.widget.CardView;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.LinearSmoothScroller;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.R;
|
||||
import info.nightscout.androidaps.plugins.common.SubscriberFragment;
|
||||
import info.nightscout.androidaps.plugins.constraints.objectives.objectives.Objective;
|
||||
import info.nightscout.androidaps.utils.DateUtil;
|
||||
import info.nightscout.androidaps.utils.FabricPrivacy;
|
||||
|
||||
public class ObjectivesFragment extends SubscriberFragment {
|
||||
private RecyclerView recyclerView;
|
||||
private CheckBox enableFake;
|
||||
private TextView reset;
|
||||
private ObjectivesAdapter objectivesAdapter = new ObjectivesAdapter();
|
||||
private Handler handler = new Handler(Looper.getMainLooper());
|
||||
|
||||
private Runnable objectiveUpdater = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
handler.postDelayed(this, 60 * 1000);
|
||||
updateGUI();
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
try {
|
||||
View view = inflater.inflate(R.layout.objectives_fragment, container, false);
|
||||
|
||||
recyclerView = view.findViewById(R.id.objectives_recyclerview);
|
||||
recyclerView.setLayoutManager(new LinearLayoutManager(view.getContext()));
|
||||
recyclerView.setAdapter(objectivesAdapter);
|
||||
enableFake = view.findViewById(R.id.objectives_fake);
|
||||
reset = view.findViewById(R.id.objectives_reset);
|
||||
enableFake.setOnClickListener(v -> updateGUI());
|
||||
reset.setOnClickListener(v -> {
|
||||
ObjectivesPlugin.INSTANCE.reset();
|
||||
recyclerView.getAdapter().notifyDataSetChanged();
|
||||
scrollToCurrentObjective();
|
||||
});
|
||||
scrollToCurrentObjective();
|
||||
startUpdateTimer();
|
||||
return view;
|
||||
} catch (Exception e) {
|
||||
FabricPrivacy.logException(e);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
handler.removeCallbacks(objectiveUpdater);
|
||||
}
|
||||
|
||||
private void startUpdateTimer() {
|
||||
handler.removeCallbacks(objectiveUpdater);
|
||||
for (Objective objective : ObjectivesPlugin.INSTANCE.getObjectives()) {
|
||||
if (objective.isStarted() && !objective.isAccomplished()) {
|
||||
long timeTillNextMinute = (System.currentTimeMillis() - objective.getStartedOn()) % (60 * 1000);
|
||||
handler.postDelayed(objectiveUpdater, timeTillNextMinute);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void scrollToCurrentObjective() {
|
||||
for (int i = 0; i < ObjectivesPlugin.INSTANCE.getObjectives().size(); i++) {
|
||||
Objective objective = ObjectivesPlugin.INSTANCE.getObjectives().get(i);
|
||||
if (!objective.isStarted() || !objective.isAccomplished()) {
|
||||
RecyclerView.SmoothScroller smoothScroller = new LinearSmoothScroller(getContext()) {
|
||||
@Override
|
||||
protected int getVerticalSnapPreference() {
|
||||
return LinearSmoothScroller.SNAP_TO_START;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int calculateTimeForScrolling(int dx) {
|
||||
return super.calculateTimeForScrolling(dx) * 4;
|
||||
}
|
||||
};
|
||||
smoothScroller.setTargetPosition(i);
|
||||
recyclerView.getLayoutManager().startSmoothScroll(smoothScroller);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private class ObjectivesAdapter extends RecyclerView.Adapter<ObjectivesAdapter.ViewHolder> {
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.objectives_item, parent, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
|
||||
Objective objective = ObjectivesPlugin.INSTANCE.getObjectives().get(position);
|
||||
holder.title.setText(MainApp.gs(R.string.nth_objective, position + 1));
|
||||
holder.revert.setVisibility(View.INVISIBLE);
|
||||
if (objective.getObjective() != 0) {
|
||||
holder.objective.setVisibility(View.VISIBLE);
|
||||
holder.objective.setText(MainApp.gs(objective.getObjective()));
|
||||
} else holder.objective.setVisibility(View.GONE);
|
||||
if (objective.getGate() != 0) {
|
||||
holder.gate.setVisibility(View.VISIBLE);
|
||||
holder.gate.setText(MainApp.gs(objective.getGate()));
|
||||
} else holder.gate.setVisibility(View.GONE);
|
||||
if (!objective.isStarted()) {
|
||||
holder.gate.setTextColor(0xFFFFFFFF);
|
||||
holder.verify.setVisibility(View.GONE);
|
||||
holder.progress.setVisibility(View.GONE);
|
||||
holder.accomplished.setVisibility(View.GONE);
|
||||
if (position == 0 || ObjectivesPlugin.INSTANCE.getObjectives().get(position - 1).isAccomplished())
|
||||
holder.start.setVisibility(View.VISIBLE);
|
||||
else holder.start.setVisibility(View.GONE);
|
||||
} else if (objective.isAccomplished()) {
|
||||
holder.gate.setTextColor(0xFF4CAF50);
|
||||
holder.verify.setVisibility(View.GONE);
|
||||
holder.progress.setVisibility(View.GONE);
|
||||
holder.start.setVisibility(View.GONE);
|
||||
holder.accomplished.setVisibility(View.VISIBLE);
|
||||
} else if (objective.isStarted()) {
|
||||
holder.gate.setTextColor(0xFFFFFFFF);
|
||||
holder.verify.setVisibility(View.VISIBLE);
|
||||
holder.verify.setEnabled(objective.isCompleted() || enableFake.isChecked());
|
||||
holder.start.setVisibility(View.GONE);
|
||||
holder.accomplished.setVisibility(View.GONE);
|
||||
if (objective.isRevertable()) {
|
||||
holder.revert.setVisibility(View.VISIBLE);
|
||||
}
|
||||
holder.progress.setVisibility(View.VISIBLE);
|
||||
holder.progress.removeAllViews();
|
||||
for (Objective.Task task : objective.getTasks()) {
|
||||
if (task.shouldBeIgnored()) continue;
|
||||
TextView textView = new TextView(holder.progress.getContext());
|
||||
textView.setTextColor(0xFFFFFFFF);
|
||||
String basicHTML = "%2$s: <font color=\"%1$s\"><b>%3$s</b></font>";
|
||||
String formattedHTML = String.format(basicHTML, task.isCompleted() ? "#4CAF50" : "#FF9800", MainApp.gs(task.getTask()), task.getProgress());
|
||||
textView.setText(Html.fromHtml(formattedHTML));
|
||||
holder.progress.addView(textView, LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
|
||||
}
|
||||
}
|
||||
holder.accomplished.setText(MainApp.gs(R.string.accomplished, DateUtil.dateAndTimeString(objective.getAccomplishedOn())));
|
||||
holder.accomplished.setTextColor(0xFFC1C1C1);
|
||||
holder.verify.setOnClickListener((view) -> {
|
||||
objective.setAccomplishedOn(DateUtil.now());
|
||||
notifyDataSetChanged();
|
||||
scrollToCurrentObjective();
|
||||
startUpdateTimer();
|
||||
});
|
||||
holder.start.setOnClickListener((view) -> {
|
||||
objective.setStartedOn(DateUtil.now());
|
||||
notifyDataSetChanged();
|
||||
scrollToCurrentObjective();
|
||||
startUpdateTimer();
|
||||
});
|
||||
holder.revert.setOnClickListener((view) -> {
|
||||
objective.setAccomplishedOn(0);
|
||||
objective.setStartedOn(0);
|
||||
if (position > 0) {
|
||||
Objective prevObj = ObjectivesPlugin.INSTANCE.getObjectives().get(position - 1);
|
||||
prevObj.setAccomplishedOn(0);
|
||||
}
|
||||
notifyDataSetChanged();
|
||||
scrollToCurrentObjective();
|
||||
});
|
||||
if (objective.hasSpecialInput && !objective.isAccomplished()) {
|
||||
holder.enterButton.setVisibility(View.VISIBLE);
|
||||
holder.input.setVisibility(View.VISIBLE);
|
||||
holder.inputHint.setVisibility(View.VISIBLE);
|
||||
holder.enterButton.setOnClickListener((view) -> {
|
||||
String input = holder.input.getText().toString();
|
||||
objective.specialAction(getActivity(), input);
|
||||
notifyDataSetChanged();
|
||||
});
|
||||
} else {
|
||||
holder.enterButton.setVisibility(View.GONE);
|
||||
holder.input.setVisibility(View.GONE);
|
||||
holder.inputHint.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return ObjectivesPlugin.INSTANCE.getObjectives().size();
|
||||
}
|
||||
|
||||
public class ViewHolder extends RecyclerView.ViewHolder {
|
||||
|
||||
CardView cardView;
|
||||
public TextView title;
|
||||
public TextView objective;
|
||||
TextView gate;
|
||||
TextView accomplished;
|
||||
public LinearLayout progress;
|
||||
Button verify;
|
||||
public Button start;
|
||||
Button revert;
|
||||
TextView inputHint;
|
||||
EditText input;
|
||||
Button enterButton;
|
||||
|
||||
ViewHolder(View itemView) {
|
||||
super(itemView);
|
||||
cardView = (CardView) itemView;
|
||||
title = itemView.findViewById(R.id.objective_title);
|
||||
objective = itemView.findViewById(R.id.objective_objective);
|
||||
gate = itemView.findViewById(R.id.objective_gate);
|
||||
progress = itemView.findViewById(R.id.objective_progress);
|
||||
verify = itemView.findViewById(R.id.objective_verify);
|
||||
start = itemView.findViewById(R.id.objective_start);
|
||||
revert = itemView.findViewById(R.id.objective_back);
|
||||
accomplished = itemView.findViewById(R.id.objective_accomplished);
|
||||
inputHint = itemView.findViewById(R.id.objective_inputhint);
|
||||
input = itemView.findViewById(R.id.objective_input);
|
||||
enterButton = itemView.findViewById(R.id.objective_enterbutton);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateGUI() {
|
||||
Activity activity = getActivity();
|
||||
if (activity != null)
|
||||
activity.runOnUiThread(() -> {
|
||||
objectivesAdapter.notifyDataSetChanged();
|
||||
});
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,220 @@
|
|||
package info.nightscout.androidaps.plugins.constraints.objectives
|
||||
|
||||
import android.graphics.Color
|
||||
import android.os.Bundle
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import android.view.Gravity
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.Button
|
||||
import android.widget.EditText
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.TextView
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.LinearSmoothScroller
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import info.nightscout.androidaps.MainApp
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.utils.DateUtil
|
||||
import info.nightscout.androidaps.utils.HtmlHelper
|
||||
import kotlinx.android.synthetic.main.objectives_fragment.*
|
||||
|
||||
class ObjectivesFragment : Fragment() {
|
||||
private val objectivesAdapter = ObjectivesAdapter()
|
||||
private val handler = Handler(Looper.getMainLooper())
|
||||
|
||||
private val objectiveUpdater = object : Runnable {
|
||||
override fun run() {
|
||||
handler.postDelayed(this, (60 * 1000).toLong())
|
||||
updateGUI()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?): View? {
|
||||
return inflater.inflate(R.layout.objectives_fragment, container, false)
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
objectives_recyclerview.layoutManager = LinearLayoutManager(view.context)
|
||||
objectives_recyclerview.adapter = objectivesAdapter
|
||||
objectives_fake.setOnClickListener { updateGUI() }
|
||||
objectives_reset.setOnClickListener {
|
||||
ObjectivesPlugin.reset()
|
||||
objectives_recyclerview.adapter?.notifyDataSetChanged()
|
||||
scrollToCurrentObjective()
|
||||
}
|
||||
scrollToCurrentObjective()
|
||||
startUpdateTimer()
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
handler.removeCallbacks(objectiveUpdater)
|
||||
}
|
||||
|
||||
private fun startUpdateTimer() {
|
||||
handler.removeCallbacks(objectiveUpdater)
|
||||
for (objective in ObjectivesPlugin.objectives) {
|
||||
if (objective.isStarted && !objective.isAccomplished) {
|
||||
val timeTillNextMinute = (System.currentTimeMillis() - objective.startedOn) % (60 * 1000)
|
||||
handler.postDelayed(objectiveUpdater, timeTillNextMinute)
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun scrollToCurrentObjective() {
|
||||
for (i in 0 until ObjectivesPlugin.objectives.size) {
|
||||
val objective = ObjectivesPlugin.objectives[i]
|
||||
if (!objective.isStarted || !objective.isAccomplished) {
|
||||
val smoothScroller = object : LinearSmoothScroller(context!!) {
|
||||
override fun getVerticalSnapPreference(): Int {
|
||||
return SNAP_TO_START
|
||||
}
|
||||
|
||||
override fun calculateTimeForScrolling(dx: Int): Int {
|
||||
return super.calculateTimeForScrolling(dx) * 4
|
||||
}
|
||||
}
|
||||
smoothScroller.targetPosition = i
|
||||
objectives_recyclerview.layoutManager?.startSmoothScroll(smoothScroller)
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private inner class ObjectivesAdapter : RecyclerView.Adapter<ObjectivesAdapter.ViewHolder>() {
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
||||
return ViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.objectives_item, parent, false))
|
||||
}
|
||||
|
||||
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
||||
val objective = ObjectivesPlugin.objectives[position]
|
||||
holder.title.text = MainApp.gs(R.string.nth_objective, position + 1)
|
||||
holder.revert.visibility = View.GONE
|
||||
if (objective.objective != 0) {
|
||||
holder.objective.visibility = View.VISIBLE
|
||||
holder.objective.text = MainApp.gs(objective.objective)
|
||||
} else
|
||||
holder.objective.visibility = View.GONE
|
||||
if (objective.gate != 0) {
|
||||
holder.gate.visibility = View.VISIBLE
|
||||
holder.gate.text = MainApp.gs(objective.gate)
|
||||
} else
|
||||
holder.gate.visibility = View.GONE
|
||||
if (!objective.isStarted) {
|
||||
holder.gate.setTextColor(-0x1)
|
||||
holder.verify.visibility = View.GONE
|
||||
holder.progress.visibility = View.GONE
|
||||
holder.accomplished.visibility = View.GONE
|
||||
if (position == 0 || ObjectivesPlugin.objectives[position - 1].isAccomplished)
|
||||
holder.start.visibility = View.VISIBLE
|
||||
else
|
||||
holder.start.visibility = View.GONE
|
||||
} else if (objective.isAccomplished) {
|
||||
holder.gate.setTextColor(-0xb350b0)
|
||||
holder.verify.visibility = View.GONE
|
||||
holder.progress.visibility = View.GONE
|
||||
holder.start.visibility = View.GONE
|
||||
holder.accomplished.visibility = View.VISIBLE
|
||||
} else if (objective.isStarted) {
|
||||
holder.gate.setTextColor(-0x1)
|
||||
holder.verify.visibility = View.VISIBLE
|
||||
holder.verify.isEnabled = objective.isCompleted || objectives_fake.isChecked
|
||||
holder.start.visibility = View.GONE
|
||||
holder.accomplished.visibility = View.GONE
|
||||
if (objective.isRevertable) {
|
||||
holder.revert.visibility = View.VISIBLE
|
||||
}
|
||||
holder.progress.visibility = View.VISIBLE
|
||||
holder.progress.removeAllViews()
|
||||
for (task in objective.tasks) {
|
||||
if (task.shouldBeIgnored()) continue
|
||||
val name = TextView(holder.progress.context)
|
||||
name.text = MainApp.gs(task.task) + ":"
|
||||
name.setTextColor(-0x1)
|
||||
holder.progress.addView(name, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)
|
||||
val state = TextView(holder.progress.context)
|
||||
state.setTextColor(-0x1)
|
||||
val basicHTML = "<font color=\"%1\$s\"><b>%2\$s</b></font>"
|
||||
val formattedHTML = String.format(basicHTML, if (task.isCompleted) "#4CAF50" else "#FF9800", task.progress)
|
||||
state.text = HtmlHelper.fromHtml(formattedHTML)
|
||||
state.gravity = Gravity.END
|
||||
holder.progress.addView(state, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)
|
||||
val separator = View(holder.progress.context)
|
||||
separator.setBackgroundColor(Color.DKGRAY)
|
||||
holder.progress.addView(separator, LinearLayout.LayoutParams.MATCH_PARENT, 2)
|
||||
}
|
||||
}
|
||||
holder.accomplished.text = MainApp.gs(R.string.accomplished, DateUtil.dateAndTimeString(objective.accomplishedOn))
|
||||
holder.accomplished.setTextColor(-0x3e3e3f)
|
||||
holder.verify.setOnClickListener {
|
||||
objective.accomplishedOn = DateUtil.now()
|
||||
notifyDataSetChanged()
|
||||
scrollToCurrentObjective()
|
||||
startUpdateTimer()
|
||||
}
|
||||
holder.start.setOnClickListener {
|
||||
objective.startedOn = DateUtil.now()
|
||||
notifyDataSetChanged()
|
||||
scrollToCurrentObjective()
|
||||
startUpdateTimer()
|
||||
}
|
||||
holder.revert.setOnClickListener {
|
||||
objective.accomplishedOn = 0
|
||||
objective.startedOn = 0
|
||||
if (position > 0) {
|
||||
val prevObj = ObjectivesPlugin.objectives[position - 1]
|
||||
prevObj.accomplishedOn = 0
|
||||
}
|
||||
notifyDataSetChanged()
|
||||
scrollToCurrentObjective()
|
||||
}
|
||||
if (objective.hasSpecialInput && !objective.isAccomplished && objective.isStarted) {
|
||||
holder.enterButton.visibility = View.VISIBLE
|
||||
holder.input.visibility = View.VISIBLE
|
||||
holder.inputHint.visibility = View.VISIBLE
|
||||
holder.enterButton.setOnClickListener {
|
||||
val input = holder.input.text.toString()
|
||||
objective.specialAction(activity, input)
|
||||
notifyDataSetChanged()
|
||||
}
|
||||
} else {
|
||||
holder.enterButton.visibility = View.GONE
|
||||
holder.input.visibility = View.GONE
|
||||
holder.inputHint.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
override fun getItemCount(): Int {
|
||||
return ObjectivesPlugin.objectives.size
|
||||
}
|
||||
|
||||
inner class ViewHolder internal constructor(itemView: View) : RecyclerView.ViewHolder(itemView) {
|
||||
val title: TextView = itemView.findViewById(R.id.objective_title)
|
||||
val objective: TextView = itemView.findViewById(R.id.objective_objective)
|
||||
val gate: TextView = itemView.findViewById(R.id.objective_gate)
|
||||
val accomplished: TextView = itemView.findViewById(R.id.objective_accomplished)
|
||||
val progress: LinearLayout = itemView.findViewById(R.id.objective_progress)
|
||||
val verify: Button = itemView.findViewById(R.id.objective_verify)
|
||||
val start: Button = itemView.findViewById(R.id.objective_start)
|
||||
val revert: Button = itemView.findViewById(R.id.objective_back)
|
||||
val inputHint: TextView = itemView.findViewById(R.id.objective_inputhint)
|
||||
val input: EditText = itemView.findViewById(R.id.objective_input)
|
||||
val enterButton: Button = itemView.findViewById(R.id.objective_enterbutton)
|
||||
}
|
||||
}
|
||||
|
||||
fun updateGUI() {
|
||||
activity?.runOnUiThread { objectivesAdapter.notifyDataSetChanged() }
|
||||
}
|
||||
}
|
|
@ -20,7 +20,7 @@ import java.util.*
|
|||
*/
|
||||
object ObjectivesPlugin : PluginBase(PluginDescription()
|
||||
.mainType(PluginType.CONSTRAINTS)
|
||||
.fragmentClass(ObjectivesFragment::class.java.name)
|
||||
.fragmentClass(ObjectivesFragment::class.qualifiedName)
|
||||
.alwaysEnabled(!Config.NSCLIENT)
|
||||
.showInList(!Config.NSCLIENT)
|
||||
.pluginName(R.string.objectives)
|
||||
|
@ -90,13 +90,13 @@ object ObjectivesPlugin : PluginBase(PluginDescription()
|
|||
SP.putBoolean(R.string.key_ObjectivesbgIsAvailableInNS, false)
|
||||
SP.putBoolean(R.string.key_ObjectivespumpStatusIsAvailableInNS, false)
|
||||
SP.putInt(R.string.key_ObjectivesmanualEnacts, 0)
|
||||
SP.putBoolean(R.string.key_objectiveuseprofileswitch, false);
|
||||
SP.putBoolean(R.string.key_objectiveusedisconnect, false);
|
||||
SP.putBoolean(R.string.key_objectiveusereconnect, false);
|
||||
SP.putBoolean(R.string.key_objectiveusetemptarget, false);
|
||||
SP.putBoolean(R.string.key_objectiveuseactions, false);
|
||||
SP.putBoolean(R.string.key_objectiveuseloop, false);
|
||||
SP.putBoolean(R.string.key_objectiveusescale, false);
|
||||
SP.putBoolean(R.string.key_objectiveuseprofileswitch, false)
|
||||
SP.putBoolean(R.string.key_objectiveusedisconnect, false)
|
||||
SP.putBoolean(R.string.key_objectiveusereconnect, false)
|
||||
SP.putBoolean(R.string.key_objectiveusetemptarget, false)
|
||||
SP.putBoolean(R.string.key_objectiveuseactions, false)
|
||||
SP.putBoolean(R.string.key_objectiveuseloop, false)
|
||||
SP.putBoolean(R.string.key_objectiveusescale, false)
|
||||
}
|
||||
|
||||
fun completeObjectives(activity: Activity, request: String) {
|
||||
|
|
Loading…
Reference in a new issue