ProfileSwitchActivity -> kt
This commit is contained in:
parent
9a90400f37
commit
59394e5260
9 changed files with 122 additions and 152 deletions
|
@ -569,8 +569,8 @@
|
||||||
android:exported="true"
|
android:exported="true"
|
||||||
android:label="@string/action_insulin" />
|
android:label="@string/action_insulin" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".interaction.actions.CPPActivity"
|
android:name=".interaction.actions.ProfileSwitchActivity"
|
||||||
android:label="@string/status_cpp" />
|
android:label="@string/status_profile_switch" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".interaction.actions.AcceptActivity"
|
android:name=".interaction.actions.AcceptActivity"
|
||||||
android:label="@string/action_confirm"
|
android:label="@string/action_confirm"
|
||||||
|
|
|
@ -19,7 +19,7 @@ import info.nightscout.androidaps.R
|
||||||
import info.nightscout.androidaps.events.EventWearToMobile
|
import info.nightscout.androidaps.events.EventWearToMobile
|
||||||
import info.nightscout.androidaps.interaction.WatchfaceConfigurationActivity
|
import info.nightscout.androidaps.interaction.WatchfaceConfigurationActivity
|
||||||
import info.nightscout.androidaps.interaction.actions.AcceptActivity
|
import info.nightscout.androidaps.interaction.actions.AcceptActivity
|
||||||
import info.nightscout.androidaps.interaction.actions.CPPActivity
|
import info.nightscout.androidaps.interaction.actions.ProfileSwitchActivity
|
||||||
import info.nightscout.androidaps.interaction.utils.Persistence
|
import info.nightscout.androidaps.interaction.utils.Persistence
|
||||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||||
import info.nightscout.androidaps.tile.ActionsTileService
|
import info.nightscout.androidaps.tile.ActionsTileService
|
||||||
|
@ -101,7 +101,7 @@ class DataHandlerWear @Inject constructor(
|
||||||
.observeOn(aapsSchedulers.io)
|
.observeOn(aapsSchedulers.io)
|
||||||
.subscribe { event ->
|
.subscribe { event ->
|
||||||
aapsLogger.debug(LTag.WEAR, "ActionProfileSwitchOpenActivity received from ${event.sourceNodeId}")
|
aapsLogger.debug(LTag.WEAR, "ActionProfileSwitchOpenActivity received from ${event.sourceNodeId}")
|
||||||
context.startActivity(Intent(context, CPPActivity::class.java).apply {
|
context.startActivity(Intent(context, ProfileSwitchActivity::class.java).apply {
|
||||||
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||||
putExtras(Bundle().also { bundle ->
|
putExtras(Bundle().also { bundle ->
|
||||||
bundle.putInt("percentage", event.percentage)
|
bundle.putInt("percentage", event.percentage)
|
||||||
|
|
|
@ -23,7 +23,7 @@ abstract class WearActivitiesModule {
|
||||||
@ContributesAndroidInjector abstract fun contributesAcceptActivity(): AcceptActivity
|
@ContributesAndroidInjector abstract fun contributesAcceptActivity(): AcceptActivity
|
||||||
@ContributesAndroidInjector abstract fun contributesBolusActivity(): BolusActivity
|
@ContributesAndroidInjector abstract fun contributesBolusActivity(): BolusActivity
|
||||||
@ContributesAndroidInjector abstract fun contributesCarbActivity(): CarbActivity
|
@ContributesAndroidInjector abstract fun contributesCarbActivity(): CarbActivity
|
||||||
@ContributesAndroidInjector abstract fun contributesCPPActivity(): CPPActivity
|
@ContributesAndroidInjector abstract fun contributesProfileSwitchActivity(): ProfileSwitchActivity
|
||||||
@ContributesAndroidInjector abstract fun contributesECarbActivity(): ECarbActivity
|
@ContributesAndroidInjector abstract fun contributesECarbActivity(): ECarbActivity
|
||||||
@ContributesAndroidInjector abstract fun contributesFillActivity(): FillActivity
|
@ContributesAndroidInjector abstract fun contributesFillActivity(): FillActivity
|
||||||
@ContributesAndroidInjector abstract fun contributesTempTargetActivity(): TempTargetActivity
|
@ContributesAndroidInjector abstract fun contributesTempTargetActivity(): TempTargetActivity
|
||||||
|
|
|
@ -35,12 +35,12 @@ class TileConfigurationActivity : WearPreferenceActivity() {
|
||||||
// Note that TileService updates are hard limited to once every 20 seconds.
|
// Note that TileService updates are hard limited to once every 20 seconds.
|
||||||
when {
|
when {
|
||||||
configFileName === "tile_configuration_activity" -> {
|
configFileName === "tile_configuration_activity" -> {
|
||||||
aapsLogger.info(LTag.WEAR, "onDestroy a: requestUpdate!!")
|
aapsLogger.info(LTag.WEAR, "onDestroy a: requestUpdate")
|
||||||
TileService.getUpdater(this).requestUpdate(ActionsTileService::class.java)
|
TileService.getUpdater(this).requestUpdate(ActionsTileService::class.java)
|
||||||
}
|
}
|
||||||
|
|
||||||
configFileName === "tile_configuration_tempt" -> {
|
configFileName === "tile_configuration_tempt" -> {
|
||||||
aapsLogger.info(LTag.WEAR, "onDestroy tt: requestUpdate!!")
|
aapsLogger.info(LTag.WEAR, "onDestroy tt: requestUpdate")
|
||||||
TileService.getUpdater(this).requestUpdate(TempTargetTileService::class.java)
|
TileService.getUpdater(this).requestUpdate(TempTargetTileService::class.java)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -33,10 +33,10 @@ class AcceptActivity : ViewSelectorActivity() {
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
dismissThread = DismissThread()
|
dismissThread = DismissThread()
|
||||||
dismissThread!!.start()
|
dismissThread?.start()
|
||||||
val extras = intent.extras
|
val extras = intent.extras
|
||||||
message = extras!!.getString("message", "")
|
message = extras?.getString("message", "") ?: ""
|
||||||
actionKey = extras.getString(DataLayerListenerServiceWear.KEY_ACTION_DATA, "")
|
actionKey = extras?.getString(DataLayerListenerServiceWear.KEY_ACTION_DATA, "") ?: ""
|
||||||
if (message.isEmpty() || actionKey.isEmpty()) {
|
if (message.isEmpty() || actionKey.isEmpty()) {
|
||||||
finish()
|
finish()
|
||||||
return
|
return
|
||||||
|
@ -117,19 +117,16 @@ class AcceptActivity : ViewSelectorActivity() {
|
||||||
|
|
||||||
override fun run() {
|
override fun run() {
|
||||||
SystemClock.sleep((60 * 1000L))
|
SystemClock.sleep((60 * 1000L))
|
||||||
synchronized(this) {
|
synchronized(this) { if (valid) finish() }
|
||||||
if (valid) finish()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Synchronized override fun onNewIntent(intent: Intent) {
|
@Synchronized override fun onNewIntent(intent: Intent) {
|
||||||
super.onNewIntent(intent)
|
super.onNewIntent(intent)
|
||||||
if (dismissThread != null) dismissThread!!.invalidate()
|
dismissThread?.invalidate()
|
||||||
val extras = intent.extras
|
intent.extras?.let {
|
||||||
val msgIntent = Intent(this, AcceptActivity::class.java)
|
startActivity(Intent(this, AcceptActivity::class.java).apply { putExtras(it) })
|
||||||
msgIntent.putExtras(extras!!)
|
|
||||||
startActivity(msgIntent)
|
|
||||||
finish()
|
finish()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
|
@ -1,121 +0,0 @@
|
||||||
package info.nightscout.androidaps.interaction.actions;
|
|
||||||
|
|
||||||
import android.os.Bundle;
|
|
||||||
import android.support.wearable.view.GridPagerAdapter;
|
|
||||||
import android.view.LayoutInflater;
|
|
||||||
import android.view.View;
|
|
||||||
import android.view.ViewGroup;
|
|
||||||
import android.widget.ImageView;
|
|
||||||
|
|
||||||
import java.text.DecimalFormat;
|
|
||||||
|
|
||||||
import info.nightscout.androidaps.R;
|
|
||||||
import info.nightscout.androidaps.events.EventWearToMobile;
|
|
||||||
import info.nightscout.androidaps.interaction.utils.PlusMinusEditText;
|
|
||||||
import info.nightscout.shared.SafeParse;
|
|
||||||
import info.nightscout.shared.weardata.EventData;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by adrian on 09/02/17.
|
|
||||||
*/
|
|
||||||
|
|
||||||
public class CPPActivity extends ViewSelectorActivity {
|
|
||||||
|
|
||||||
PlusMinusEditText editPercentage;
|
|
||||||
PlusMinusEditText editTimeshift;
|
|
||||||
|
|
||||||
int percentage = -1;
|
|
||||||
int timeshift = -25;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
|
||||||
super.onCreate(savedInstanceState);
|
|
||||||
|
|
||||||
Bundle extras = getIntent().getExtras();
|
|
||||||
percentage = extras.getInt("percentage", -1);
|
|
||||||
timeshift = extras.getInt("timeshift", -1);
|
|
||||||
|
|
||||||
if (percentage == -1 || timeshift == -25) {
|
|
||||||
finish();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (timeshift < 0) timeshift += 24;
|
|
||||||
|
|
||||||
setAdapter(new MyGridViewPagerAdapter());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void onPause() {
|
|
||||||
super.onPause();
|
|
||||||
finish();
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
private class MyGridViewPagerAdapter extends GridPagerAdapter {
|
|
||||||
@Override
|
|
||||||
public int getColumnCount(int arg0) {
|
|
||||||
return 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getRowCount() {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object instantiateItem(ViewGroup container, int row, int col) {
|
|
||||||
|
|
||||||
if (col == 0) {
|
|
||||||
final View view = getInflatedPlusMinusView(container);
|
|
||||||
double def = timeshift;
|
|
||||||
if (editTimeshift != null) {
|
|
||||||
def = SafeParse.stringToDouble(editTimeshift.editText.getText().toString());
|
|
||||||
}
|
|
||||||
editTimeshift = new PlusMinusEditText(view, R.id.amountfield, R.id.plusbutton, R.id.minusbutton, def, 0d, 23d, 1d, new DecimalFormat("0"), true, true);
|
|
||||||
setLabelToPlusMinusView(view, getString(R.string.action_timeshift));
|
|
||||||
container.addView(view);
|
|
||||||
view.requestFocus();
|
|
||||||
return view;
|
|
||||||
} else if (col == 1) {
|
|
||||||
final View view = getInflatedPlusMinusView(container);
|
|
||||||
double def = percentage;
|
|
||||||
if (editPercentage != null) {
|
|
||||||
def = SafeParse.stringToDouble(editPercentage.editText.getText().toString());
|
|
||||||
}
|
|
||||||
editPercentage = new PlusMinusEditText(view, R.id.amountfield, R.id.plusbutton, R.id.minusbutton, def, 30d, 250d, 1d, new DecimalFormat("0"), false);
|
|
||||||
setLabelToPlusMinusView(view, getString(R.string.action_percentage));
|
|
||||||
container.addView(view);
|
|
||||||
return view;
|
|
||||||
} else {
|
|
||||||
|
|
||||||
final View view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.action_send_item, container, false);
|
|
||||||
final ImageView confirmButton = view.findViewById(R.id.confirmbutton);
|
|
||||||
confirmButton.setOnClickListener((View v) -> {
|
|
||||||
//check if it can happen that the fragment is never created that hold data?
|
|
||||||
// (you have to swipe past them anyways - but still)
|
|
||||||
EventData.ActionProfileSwitchPreCheck ps =
|
|
||||||
new EventData.ActionProfileSwitchPreCheck(SafeParse.stringToInt(editTimeshift.editText.getText().toString()), SafeParse.stringToInt(editPercentage.editText.getText().toString()));
|
|
||||||
rxBus.send(new EventWearToMobile(ps));
|
|
||||||
showToast(CPPActivity.this, R.string.action_cpp_confirmation);
|
|
||||||
finishAffinity();
|
|
||||||
});
|
|
||||||
container.addView(view);
|
|
||||||
return view;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void destroyItem(ViewGroup container, int row, int col, Object view) {
|
|
||||||
// Handle this to get the data before the view is destroyed?
|
|
||||||
// Object should still be kept by this, just setup for re-init?
|
|
||||||
container.removeView((View) view);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isViewFromObject(View view, Object object) {
|
|
||||||
return view == object;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,94 @@
|
||||||
|
@file:Suppress("DEPRECATION")
|
||||||
|
|
||||||
|
package info.nightscout.androidaps.interaction.actions
|
||||||
|
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.support.wearable.view.GridPagerAdapter
|
||||||
|
import android.view.LayoutInflater
|
||||||
|
import android.view.View
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import android.widget.ImageView
|
||||||
|
import info.nightscout.androidaps.R
|
||||||
|
import info.nightscout.androidaps.events.EventWearToMobile
|
||||||
|
import info.nightscout.androidaps.interaction.utils.PlusMinusEditText
|
||||||
|
import info.nightscout.shared.SafeParse
|
||||||
|
import info.nightscout.shared.weardata.EventData.ActionProfileSwitchPreCheck
|
||||||
|
import java.text.DecimalFormat
|
||||||
|
|
||||||
|
class ProfileSwitchActivity : ViewSelectorActivity() {
|
||||||
|
|
||||||
|
var editPercentage: PlusMinusEditText? = null
|
||||||
|
var editTimeshift: PlusMinusEditText? = null
|
||||||
|
var percentage = -1
|
||||||
|
var timeshift = -25
|
||||||
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
super.onCreate(savedInstanceState)
|
||||||
|
percentage = intent.extras?.getInt("percentage", -1) ?: -1
|
||||||
|
timeshift = intent.extras?.getInt("timeshift", -25) ?: -25
|
||||||
|
if (percentage == -1 || timeshift == -25) {
|
||||||
|
finish()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (timeshift < 0) timeshift += 24
|
||||||
|
setAdapter(MyGridViewPagerAdapter())
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onPause() {
|
||||||
|
super.onPause()
|
||||||
|
finish()
|
||||||
|
}
|
||||||
|
|
||||||
|
private inner class MyGridViewPagerAdapter : GridPagerAdapter() {
|
||||||
|
|
||||||
|
override fun getColumnCount(arg0: Int): Int = 3
|
||||||
|
override fun getRowCount(): Int = 1
|
||||||
|
|
||||||
|
override fun instantiateItem(container: ViewGroup, row: Int, col: Int): Any {
|
||||||
|
return if (col == 0) {
|
||||||
|
val view = getInflatedPlusMinusView(container)
|
||||||
|
var def = timeshift.toDouble()
|
||||||
|
if (editTimeshift != null) {
|
||||||
|
def = SafeParse.stringToDouble(editTimeshift?.editText?.text.toString())
|
||||||
|
}
|
||||||
|
editTimeshift = PlusMinusEditText(view, R.id.amountfield, R.id.plusbutton, R.id.minusbutton, def, 0.0, 23.0, 1.0, DecimalFormat("0"), true, true)
|
||||||
|
setLabelToPlusMinusView(view, getString(R.string.action_timeshift))
|
||||||
|
container.addView(view)
|
||||||
|
view.requestFocus()
|
||||||
|
view
|
||||||
|
} else if (col == 1) {
|
||||||
|
val view = getInflatedPlusMinusView(container)
|
||||||
|
var def = percentage.toDouble()
|
||||||
|
if (editPercentage != null) {
|
||||||
|
def = SafeParse.stringToDouble(editPercentage?.editText?.text.toString())
|
||||||
|
}
|
||||||
|
editPercentage = PlusMinusEditText(view, R.id.amountfield, R.id.plusbutton, R.id.minusbutton, def, 30.0, 250.0, 1.0, DecimalFormat("0"), false)
|
||||||
|
setLabelToPlusMinusView(view, getString(R.string.action_percentage))
|
||||||
|
container.addView(view)
|
||||||
|
view
|
||||||
|
} else {
|
||||||
|
val view = LayoutInflater.from(applicationContext).inflate(R.layout.action_send_item, container, false)
|
||||||
|
val confirmButton = view.findViewById<ImageView>(R.id.confirmbutton)
|
||||||
|
confirmButton.setOnClickListener {
|
||||||
|
//check if it can happen that the fragment is never created that hold data?
|
||||||
|
// (you have to swipe past them anyways - but still)
|
||||||
|
val ps = ActionProfileSwitchPreCheck(SafeParse.stringToInt(editTimeshift?.editText?.text.toString()), SafeParse.stringToInt(editPercentage?.editText?.text.toString()))
|
||||||
|
rxBus.send(EventWearToMobile(ps))
|
||||||
|
showToast(this@ProfileSwitchActivity, R.string.action_profile_switch_confirmation)
|
||||||
|
finishAffinity()
|
||||||
|
}
|
||||||
|
container.addView(view)
|
||||||
|
view
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun destroyItem(container: ViewGroup, row: Int, col: Int, view: Any) {
|
||||||
|
// Handle this to get the data before the view is destroyed?
|
||||||
|
// Object should still be kept by this, just setup for re-init?
|
||||||
|
container.removeView(view as View)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun isViewFromObject(view: View, `object`: Any): Boolean {
|
||||||
|
return view === `object`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -32,7 +32,7 @@ class MainMenuActivity : MenuListActivity() {
|
||||||
add(MenuItem(R.drawable.ic_e_carbs, getString(R.string.menu_ecarb)))
|
add(MenuItem(R.drawable.ic_e_carbs, getString(R.string.menu_ecarb)))
|
||||||
add(MenuItem(R.drawable.ic_treatment, getString(R.string.menu_treatment)))
|
add(MenuItem(R.drawable.ic_treatment, getString(R.string.menu_treatment)))
|
||||||
add(MenuItem(R.drawable.ic_temptarget, getString(R.string.menu_tempt)))
|
add(MenuItem(R.drawable.ic_temptarget, getString(R.string.menu_tempt)))
|
||||||
add(MenuItem(R.drawable.ic_status, getString(R.string.status_cpp)))
|
add(MenuItem(R.drawable.ic_status, getString(R.string.status_profile_switch)))
|
||||||
add(MenuItem(R.drawable.ic_settings, getString(R.string.menu_settings)))
|
add(MenuItem(R.drawable.ic_settings, getString(R.string.menu_settings)))
|
||||||
add(MenuItem(R.drawable.ic_status, getString(R.string.menu_status)))
|
add(MenuItem(R.drawable.ic_status, getString(R.string.menu_status)))
|
||||||
if (sp.getBoolean(R.string.key_prime_fill, false))
|
if (sp.getBoolean(R.string.key_prime_fill, false))
|
||||||
|
@ -44,7 +44,7 @@ class MainMenuActivity : MenuListActivity() {
|
||||||
when (action) {
|
when (action) {
|
||||||
getString(R.string.menu_settings) -> startActivity(Intent(this, WatchfaceConfigurationActivity::class.java).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) })
|
getString(R.string.menu_settings) -> startActivity(Intent(this, WatchfaceConfigurationActivity::class.java).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) })
|
||||||
getString(R.string.menu_resync) -> rxBus.send(EventWearToMobile(ActionResendData("Re-Sync")))
|
getString(R.string.menu_resync) -> rxBus.send(EventWearToMobile(ActionResendData("Re-Sync")))
|
||||||
getString(R.string.status_cpp) -> rxBus.send(EventWearToMobile(EventData.ActionProfileSwitchSendInitialData(System.currentTimeMillis())))
|
getString(R.string.status_profile_switch) -> rxBus.send(EventWearToMobile(EventData.ActionProfileSwitchSendInitialData(System.currentTimeMillis())))
|
||||||
getString(R.string.menu_tempt) -> startActivity(Intent(this, TempTargetActivity::class.java).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) })
|
getString(R.string.menu_tempt) -> startActivity(Intent(this, TempTargetActivity::class.java).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) })
|
||||||
getString(R.string.menu_treatment) -> startActivity(Intent(this, TreatmentActivity::class.java).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) })
|
getString(R.string.menu_treatment) -> startActivity(Intent(this, TreatmentActivity::class.java).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) })
|
||||||
getString(R.string.menu_wizard) -> startActivity(Intent(this, WizardActivity::class.java).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) })
|
getString(R.string.menu_wizard) -> startActivity(Intent(this, WizardActivity::class.java).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) })
|
||||||
|
|
|
@ -98,7 +98,7 @@
|
||||||
<string name="action_wizard_confirmation">Calculation Requested</string>
|
<string name="action_wizard_confirmation">Calculation Requested</string>
|
||||||
<string name="action_fill_confirmation">Fill Requested</string>
|
<string name="action_fill_confirmation">Fill Requested</string>
|
||||||
<string name="action_ecarb_confirmation">Carbs Requested</string>
|
<string name="action_ecarb_confirmation">Carbs Requested</string>
|
||||||
<string name="action_cpp_confirmation">CPP Requested</string>
|
<string name="action_profile_switch_confirmation">Profile Switch Requested</string>
|
||||||
<string name="action_target" comment="In temp target menu, single target value">Target</string>
|
<string name="action_target" comment="In temp target menu, single target value">Target</string>
|
||||||
<string name="action_low" comment="In temp target menu, lower value from range">Low</string>
|
<string name="action_low" comment="In temp target menu, lower value from range">Low</string>
|
||||||
<string name="action_high" comment="In temp target menu, higher value from range">High</string>
|
<string name="action_high" comment="In temp target menu, higher value from range">High</string>
|
||||||
|
@ -122,7 +122,7 @@
|
||||||
|
|
||||||
<string name="status_pump">Pump</string>
|
<string name="status_pump">Pump</string>
|
||||||
<string name="status_loop">Loop</string>
|
<string name="status_loop">Loop</string>
|
||||||
<string name="status_cpp">CPP</string>
|
<string name="status_profile_switch">Profile switch</string>
|
||||||
<string name="status_tdd">TDD</string>
|
<string name="status_tdd">TDD</string>
|
||||||
|
|
||||||
<string name="activity_carb">Carb</string>
|
<string name="activity_carb">Carb</string>
|
||||||
|
|
Loading…
Reference in a new issue