sb.append("Null service binder\n");
}
- mTvDebug.post(new Runnable() {
- @Override
- public void run() {
- mTvDebug.setText(sb);
- }
- });
+ mTvDebug.post(() -> mTvDebug.setText(sb));
}
@Override
}
View iv = findViewById(R.id.about_image);
- iv.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- try {
- startActivity(new Intent(Intent.ACTION_VIEW,
- Uri.parse("http://www.cmukgb.org/")));
- } catch (ActivityNotFoundException anfe) {
- // NOP
- }
+ iv.setOnClickListener(v -> {
+ try {
+ startActivity(new Intent(Intent.ACTION_VIEW,
+ Uri.parse("http://www.cmukgb.org/")));
+ } catch (ActivityNotFoundException anfe) {
+ // NOP
}
});
private final MainService.Observer mSrvObs = new MainService.Observer() {
@Override
public void onMqttServerChanged(MainService.LocalBinder b, String sURL) {
- ;
}
@Override
public void onMqttServerEvent(MainService.LocalBinder b, MainService.MqttServerEvent mse) {
- ;
}
@Override
sv.setQueryHint("Search handbook...");
sv.setSubmitButtonEnabled(true);
- /*
- sv.setOnSearchClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Log.d(TAG, "sv.OClickL");
- }
- });
-
- sv.setOnCloseListener(new SearchView.OnCloseListener() {
- @Override
- public boolean onClose() {
- Log.d(TAG, "sv.OCloseL");
- return false;
- }
- });
- */
-
sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
@Override
public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case R.id.hand_menu_search:
- return true;
+ if (item.getItemId() == R.id.hand_menu_search) {
+ return true;
}
return false;
\r
import android.content.SharedPreferences;\r
import android.os.Bundle;\r
-import android.util.Log;\r
\r
import androidx.appcompat.app.AppCompatActivity;\r
import androidx.preference.PreferenceFragmentCompat;\r
\r
public static class SettingsFragment extends PreferenceFragmentCompat {\r
private final SharedPreferences.OnSharedPreferenceChangeListener mOSPCL\r
- = new SharedPreferences.OnSharedPreferenceChangeListener() {\r
- @Override\r
- public void onSharedPreferenceChanged(SharedPreferences sp, String key) {\r
- switch (key) {\r
- case "server_def":\r
- findPreference("server").setVisible(!sp.getBoolean(key, false));\r
- break;\r
- }\r
- }\r
- };\r
+ = (sp, key) -> {\r
+ switch (key) {\r
+ case "server_def":\r
+ findPreference("server").setVisible(!sp.getBoolean(key, false));\r
+ break;\r
+ }\r
+ };\r
\r
@Override\r
public void onResume() {\r
package com.acmetensortoys.ctfwstimer.activity.main;
+import android.annotation.SuppressLint;
import android.content.Intent;
+import androidx.annotation.NonNull;
import androidx.annotation.StringRes;
import android.os.Bundle;
import androidx.appcompat.view.menu.MenuBuilder;
+
import android.text.Spanned;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
-import android.view.WindowManager;
import android.widget.TextView;
-import com.acmetensortoys.ctfwstimer.BuildConfig;
import com.acmetensortoys.ctfwstimer.R;
import com.acmetensortoys.ctfwstimer.activity.AboutActivity;
import com.acmetensortoys.ctfwstimer.activity.CtFwSActivityBase;
@Override
public void onHandbookFetch(MainService.LocalBinder b, CheckedAsyncDownloader.DL dl) {
- ;
}
};
private TextView mTvSS; // set in onStart
private void setServerStateText(@StringRes final int resid, Object... args) {
final Spanned h = AndroidResourceUtils.htmlFromStrResId(getResources(), resid, args);
- mTvSS.post(new Runnable() {
- @Override
- public void run() { mTvSS.setText(h); }
- });
+ mTvSS.post(() -> mTvSS.setText(h));
}
@Override
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
- findViewById(R.id.main_connmeta).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- onclick_connmeta(v);
- }
- });
-
- findViewById(R.id.header_gamestate).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- onclick_gamestate(v);
- }
- });
+ findViewById(R.id.main_connmeta).setOnClickListener(this::onclick_connmeta);
+ findViewById(R.id.header_gamestate).setOnClickListener(this::onclick_gamestate);
mTvSS = findViewById(R.id.tv_mqtt_state);
}
@Override
- public void onSaveInstanceState(Bundle out) {
+ public void onSaveInstanceState(@NonNull Bundle out) {
super.onSaveInstanceState(out);
mCdl.timersToBundle(out, SIS_KEY_TMR_FINI);
}
if (!egg) {
egg = true;
tv.setText(R.string.header_egg);
- tv.postDelayed(new Runnable() {
- public void run() {
- if (mCdl != null) {
- tv.setText(mCdl.gameStateLabelText);
- } else {
- tv.setText(R.string.header_gamestate0);
- }
- egg = false;
+ tv.postDelayed(() -> {
+ if (mCdl != null) {
+ tv.setText(mCdl.gameStateLabelText);
+ } else {
+ tv.setText(R.string.header_gamestate0);
}
+ egg = false;
}, 3000);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem mi) {
- switch(mi.getItemId()) {
- case R.id.mainmenu_hand:
- startActivity(new Intent(this, HandbookActivity.class));
- return true;
- case R.id.mainmenu_judge:
- startActivity(new Intent(this, Activity.class));
- return true;
- case R.id.mainmenu_reconn:
- if (mSrvBinder != null) {
- mSrvBinder.connect(true);
- }
- return true;
- case R.id.mainmenu_prf :
- startActivity(new Intent(this, SettingsActivity.class));
- return true;
- case R.id.mainmenu_about :
- startActivity(new Intent(this, AboutActivity.class));
- return true;
- case R.id.mainmenu_quit:
- if (mSrvBinder != null) {
- mSrvBinder.exit();
- }
- finish();
- return true;
+ int itemId = mi.getItemId();
+ if (itemId == R.id.mainmenu_hand) {
+ startActivity(new Intent(this, HandbookActivity.class));
+ return true;
+ } else if (itemId == R.id.mainmenu_reconn) {
+ if (mSrvBinder != null) {
+ mSrvBinder.connect(true);
+ }
+ return true;
+ } else if (itemId == R.id.mainmenu_prf) {
+ startActivity(new Intent(this, SettingsActivity.class));
+ return true;
+ } else if (itemId == R.id.mainmenu_about) {
+ startActivity(new Intent(this, AboutActivity.class));
+ return true;
+ } else if (itemId == R.id.mainmenu_quit) {
+ if (mSrvBinder != null) {
+ mSrvBinder.exit();
+ }
+ finish();
+ return true;
// Cam: Changing this doesn't appear to do anything? Leaving just in case.
- default:
- return super.onOptionsItemSelected(mi);
}
+ return super.onOptionsItemSelected(mi);
}
+ @SuppressLint("RestrictedApi")
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater mi = getMenuInflater();
}
private void updateMenuReconnVis() {
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- switch(mLastMSE) {
- case MSE_CONN:
- case MSE_SUB:
- mMenuReconn.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
- break;
- case MSE_DISCONN:
- mMenuReconn.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
- break;
- }
+ runOnUiThread(() -> {
+ switch(mLastMSE) {
+ case MSE_CONN:
+ case MSE_SUB:
+ mMenuReconn.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
+ break;
+ case MSE_DISCONN:
+ mMenuReconn.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
+ break;
}
});
}
private void wireTimer(int vid, final StunTimer st) {
mAct.findViewById(vid)
- .setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- startTimer(st, System.currentTimeMillis());
- }
- });
+ .setOnClickListener(v -> startTimer(st, System.currentTimeMillis()));
}
void timersToBundle(Bundle out, String key) {
}
final TextView gstv = mAct.findViewById(R.id.header_gamestate);
- gstv.post(new Runnable() {
- @Override
- public void run() {
- gstv.setText(gameStateLabelText);
- }
- });
+ gstv.post(() -> gstv.setText(gameStateLabelText));
}
private void doSetSidesText(final CtFwSGameStateManager gs) {
final TextView stv = mAct.findViewById(R.id.header_sides);
Resources rs = mAct.getResources();
- Runnable r = new Runnable() {
- @Override
- public void run() {
- stv.setText("");
- }
- };
+ Runnable r = () -> stv.setText("");
out: if (gs.isConfigured()) {
String ss = gs.getSides();
default : h = AndroidResourceUtils.htmlFromStrResId(rs, R.string.ctfws_unknown_sides); break;
}
- r = new Runnable() {
- @Override
- public void run() {
- stv.setText(h);
- }
- };
+ r = () -> stv.setText(h);
}
}
private void doSetFlagsLabel(final CtFwSGameStateManager gs) {
final TextView tv_flags = mAct.findViewById(R.id.tv_flags_label);
- tv_flags.post(new Runnable() {
- @Override
- public void run() {
- tv_flags.setText(mAct.getResources()
- .getQuantityString(R.plurals.ctfws_flags,
- gs.getFlagsTotal(),
- gs.getFlagsTotal()));
- }
- });
+ tv_flags.post(() -> tv_flags.setText(mAct.getResources()
+ .getQuantityString(R.plurals.ctfws_flags,
+ gs.getFlagsTotal(),
+ gs.getFlagsTotal())));
}
@Override
// Upper line text
{
final TextView tv_jb = mAct.findViewById(R.id.tv_jailbreak);
- tv_jb.post(new Runnable() {
- @Override
- public void run() {
- if (now.round == 0) {
- tv_jb.setText(R.string.ctfws_gamestart);
- } else if (now.round == gs.getRounds()) {
- tv_jb.setText(R.string.ctfws_gameend);
- } else {
- tv_jb.setText(
- String.format(mAct.getResources().getString(R.string.ctfws_jailbreak),
- now.round, gs.getRounds() - 1));
- }
+ tv_jb.post(() -> {
+ if (now.round == 0) {
+ tv_jb.setText(R.string.ctfws_gamestart);
+ } else if (now.round == gs.getRounds()) {
+ tv_jb.setText(R.string.ctfws_gameend);
+ } else {
+ tv_jb.setText(
+ String.format(mAct.getResources().getString(R.string.ctfws_jailbreak),
+ now.round, gs.getRounds() - 1));
}
});
}
// Upper progress bar and chronometer
{
final ProgressBar pb_jb = mAct.findViewById(R.id.pb_jailbreak);
- pb_jb.post(new Runnable() {
- @Override
- public void run() {
- pb_jb.setVisibility(View.VISIBLE);
- pb_jb.setIndeterminate(false);
- pb_jb.setMax((int) (now.roundEnd - now.roundStart));
- pb_jb.setProgress(0);
- }
+ pb_jb.post(() -> {
+ pb_jb.setVisibility(View.VISIBLE);
+ pb_jb.setIndeterminate(false);
+ pb_jb.setMax((int) (now.roundEnd - now.roundStart));
+ pb_jb.setProgress(0);
});
final Chronometer ch_jb = mAct.findViewById(R.id.ch_jailbreak);
- ch_jb.post(new Runnable() {
- @Override
- public void run() {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
- ch_jb.setBase((now.roundEnd + 1) * 1000 - tbcf);
- ch_jb.setCountDown(true);
- } else {
- ch_jb.setBase(now.roundStart * 1000 - tbcf);
- ch_jb.setBackgroundColor(Color.BLACK);
- ch_jb.setTextColor(Color.WHITE);
- }
- ch_jb.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
- @Override
- public void onChronometerTick(Chronometer c) {
- pb_jb.setProgress((int) (now.roundEnd - System.currentTimeMillis() / 1000));
- }
- });
- ch_jb.setVisibility(View.VISIBLE);
- ch_jb.start();
+ ch_jb.post(() -> {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+ ch_jb.setBase((now.roundEnd + 1) * 1000 - tbcf);
+ ch_jb.setCountDown(true);
+ } else {
+ ch_jb.setBase(now.roundStart * 1000 - tbcf);
+ ch_jb.setBackgroundColor(Color.BLACK);
+ ch_jb.setTextColor(Color.WHITE);
}
+ ch_jb.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
+ @Override
+ public void onChronometerTick(Chronometer c) {
+ pb_jb.setProgress((int) (now.roundEnd - System.currentTimeMillis() / 1000));
+ }
+ });
+ ch_jb.setVisibility(View.VISIBLE);
+ ch_jb.start();
});
}
// Lower progress bar and chronometer
if (now.round > 0) {
final ProgressBar pb_gp = mAct.findViewById(R.id.pb_gameProgress);
- pb_gp.post(new Runnable() {
- @Override
- public void run() {
- pb_gp.setVisibility(View.VISIBLE);
- pb_gp.setIndeterminate(false);
- pb_gp.setMax(gs.getComputedGameDuration());
- pb_gp.setProgress(0);
- }
+ pb_gp.post(() -> {
+ pb_gp.setVisibility(View.VISIBLE);
+ pb_gp.setIndeterminate(false);
+ pb_gp.setMax(gs.getComputedGameDuration());
+ pb_gp.setProgress(0);
});
final Chronometer ch_gp = mAct.findViewById(R.id.ch_gameProgress);
- ch_gp.post(new Runnable() {
- @Override
- public void run() {
- ch_gp.setBase(gs.getFirstRoundStartT() * 1000 - tbcf);
- ch_gp.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
- @Override
- public void onChronometerTick(Chronometer c) {
- pb_gp.setProgress((int) (System.currentTimeMillis() / 1000
- - gs.getFirstRoundStartT()));
- }
- });
- ch_gp.setVisibility(View.VISIBLE);
- ch_gp.start();
- }
+ ch_gp.post(() -> {
+ ch_gp.setBase(gs.getFirstRoundStartT() * 1000 - tbcf);
+ ch_gp.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
+ @Override
+ public void onChronometerTick(Chronometer c) {
+ pb_gp.setProgress((int) (System.currentTimeMillis() / 1000
+ - gs.getFirstRoundStartT()));
+ }
+ });
+ ch_gp.setVisibility(View.VISIBLE);
+ ch_gp.start();
});
} else {
final ProgressBar pb_gp = mAct.findViewById(R.id.pb_gameProgress);
- pb_gp.post(new Runnable() {
- @Override
- public void run() {
- pb_gp.setVisibility(View.INVISIBLE);
- pb_gp.setIndeterminate(true);
- }
+ pb_gp.post(() -> {
+ pb_gp.setVisibility(View.INVISIBLE);
+ pb_gp.setIndeterminate(true);
});
final Chronometer ch_gp = mAct.findViewById(R.id.ch_gameProgress);
- ch_gp.post(new Runnable() {
- @Override
- public void run() {
- ch_gp.setOnChronometerTickListener(null);
- ch_gp.stop();
- ch_gp.setVisibility(View.INVISIBLE);
- }
+ ch_gp.post(() -> {
+ ch_gp.setOnChronometerTickListener(null);
+ ch_gp.stop();
+ ch_gp.setVisibility(View.INVISIBLE);
});
}
}
{
final Chronometer ch = mAct.findViewById(R.id.ch_jailbreak);
- ch.post(new Runnable() {
- @Override
- public void run() {
- ch.setOnChronometerTickListener(null);
- ch.setBase(SystemClock.elapsedRealtime());
- ch.stop();
- ch.setVisibility(View.INVISIBLE);
- }
+ ch.post(() -> {
+ ch.setOnChronometerTickListener(null);
+ ch.setBase(SystemClock.elapsedRealtime());
+ ch.stop();
+ ch.setVisibility(View.INVISIBLE);
});
}
{
final Chronometer ch = mAct.findViewById(R.id.ch_gameProgress);
- ch.post(new Runnable() {
- @Override
- public void run() {
- ch.setOnChronometerTickListener(null);
- ch.stop();
- ch.setVisibility(View.INVISIBLE);
- }
+ ch.post(() -> {
+ ch.setOnChronometerTickListener(null);
+ ch.stop();
+ ch.setVisibility(View.INVISIBLE);
});
}
{
final ProgressBar pb = mAct.findViewById(R.id.pb_jailbreak);
- pb.post(new Runnable() {
- @Override
- public void run() {
- pb.setVisibility(View.INVISIBLE);
- pb.setIndeterminate(true);
- }
+ pb.post(() -> {
+ pb.setVisibility(View.INVISIBLE);
+ pb.setIndeterminate(true);
});
}
{
final ProgressBar pb = mAct.findViewById(R.id.pb_gameProgress);
- pb.post(new Runnable() {
- @Override
- public void run() {
- pb.setVisibility(View.INVISIBLE);
- pb.setIndeterminate(true);
- }
+ pb.post(() -> {
+ pb.setVisibility(View.INVISIBLE);
+ pb.setIndeterminate(true);
});
}
}
}
final TextView msgs = mAct.findViewById(R.id.tv_flags);
- msgs.post(new Runnable() {
- @Override
- public void run() {
- msgs.setText(h);
- }
- });
+ msgs.post(() -> msgs.setText(h));
}
@Override
int s = msgs.size();
if (s == 0) {
- msgstv.post(new Runnable() {
- @Override
- public void run() {
- msgstv.setText("");
- }
- });
+ msgstv.post(() -> msgstv.setText(""));
return;
}
sb.append("\n");
}
- msgstv.post(new Runnable() {
- @Override
- public void run() {
- msgstv.setText(sb);
- }
- });
+ msgstv.post(() -> msgstv.setText(sb));
}
// Stun timers
- private class StunTimer {
+ private static class StunTimer {
final Chronometer ch;
final ProgressBar pb;
final int ms;
final long tbcf = nowWall - nowEla;
st.ch.setBase(wallEnd - st.ms - tbcf);
- st.ch.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
- @Override
- public void onChronometerTick(Chronometer chronometer) {
- final long nowAbsCB = System.currentTimeMillis();
- st.pb.setProgress((int) (wallEnd - nowAbsCB));
- if (wallEnd < nowAbsCB) {
- hideTimer(st);
- }
+ st.ch.setOnChronometerTickListener(chronometer -> {
+ final long nowAbsCB = System.currentTimeMillis();
+ st.pb.setProgress((int) (wallEnd - nowAbsCB));
+ if (wallEnd < nowAbsCB) {
+ hideTimer(st);
}
});
import org.eclipse.paho.client.mqttv3.IMqttActionListener;
import org.eclipse.paho.client.mqttv3.IMqttAsyncClient;
import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
-import org.eclipse.paho.client.mqttv3.IMqttMessageListener;
import org.eclipse.paho.client.mqttv3.IMqttToken;
import org.eclipse.paho.client.mqttv3.MqttCallbackExtended;
import org.eclipse.paho.client.mqttv3.MqttClient;
mMqc.subscribe(p + "messagereset", 2, null, subal, mCtfwscbs.onMessageReset);
/* This one isn't really about the game state so much, so handle it ourselves. */
- mMqc.subscribe("ctfws/timesync", 2, null, subal, new IMqttMessageListener() {
- @Override
- public void messageArrived(String topic, MqttMessage message) {
- // Retained timesync messages wouldn't make any sense; they are,
- // by definition, stale. Just skip 'em.
- if (message.isRetained()) {
- return;
- }
- long rxtime = System.currentTimeMillis() / 1000;
- long mtime;
- String msg = message.toString();
- Log.d("CtFws", "time msg=" + msg);
- try {
- mtime = Long.parseLong(msg);
- } catch (NumberFormatException e) {
- return;
- }
- lastServerTimeDeltaEstimate = rxtime - mtime;
- notifyMSE();
+ mMqc.subscribe("ctfws/timesync", 2, null, subal, (topic, message) -> {
+ // Retained timesync messages wouldn't make any sense; they are,
+ // by definition, stale. Just skip 'em.
+ if (message.isRetained()) {
+ return;
}
+ long rxtime = System.currentTimeMillis() / 1000;
+ long mtime;
+ String msg = message.toString();
+ Log.d("CtFws", "time msg=" + msg);
+ try {
+ mtime = Long.parseLong(msg);
+ } catch (NumberFormatException e) {
+ return;
+ }
+ lastServerTimeDeltaEstimate = rxtime - mtime;
+ notifyMSE();
});
mHandDL.subscribeOn(mMqc);
}
// TODO make all of these configurable?
+ @SuppressWarnings("FieldCanBeLocal")
private final long NOTIFY_SUPPRESS_THRESHOLD = 5000; // suppress rapid-fire buzzing
private final long[] VIBRATE_PATTERN_NOW = {0, 100, 100, 300, 100, 300, 100, 300}; // 'J' = .---
@Override
public void onCtFwSConfigure(final CtFwSGameStateManager gs) {
if (!gs.isConfigured()) {
- mCh.post(new Runnable() {
- @Override
- public void run() {
- mCh.setText(R.string.ctfws_chrono_nogame);
- }
- });
+ mCh.post(() -> mCh.setText(R.string.ctfws_chrono_nogame));
}
}
public void onCtFwSNow(final CtFwSGameStateManager gs, final CtFwSGameStateManager.Now now) {
final long tbcf = System.currentTimeMillis() - SystemClock.elapsedRealtime();
- mCh.post(new Runnable() {
- @Override
- public void run() {
- mCh.stop();
-
- if (now.rationale != CtFwSGameStateManager.NowRationale.NR_GAME_IN_PROGRESS) {
- int rid = R.string.ctfws_chrono_nogame;
- switch(now.rationale) {
- case NR_TIME_UP:
- case NR_EXPLICIT_END:
- rid = R.string.ctfws_chrono_over;
- break;
- case NR_START_FUTURE:
- rid = R.string.ctfws_chrono_future;
- break;
- case NR_NOT_CONFIG:
- rid = R.string.ctfws_chrono_nogame;
- break;
- }
- mCh.setText(rid);
- return;
- }
-
- if (now.round == 0) {
- mCh.setFormat(mRes.getString(R.string.ctfws_chrono_gamestart));
- } else if (now.round == gs.getRounds()) {
- mCh.setFormat(mRes.getString(R.string.ctfws_chrono_gameend));
- } else {
- mCh.setFormat(String.format(mRes.getString(R.string.ctfws_chrono_jailbreak),
- now.round));
+ mCh.post(() -> {
+ mCh.stop();
+
+ if (now.rationale != CtFwSGameStateManager.NowRationale.NR_GAME_IN_PROGRESS) {
+ int rid = R.string.ctfws_chrono_nogame;
+ switch(now.rationale) {
+ case NR_TIME_UP:
+ case NR_EXPLICIT_END:
+ rid = R.string.ctfws_chrono_over;
+ break;
+ case NR_START_FUTURE:
+ rid = R.string.ctfws_chrono_future;
+ break;
+ case NR_NOT_CONFIG:
+ rid = R.string.ctfws_chrono_nogame;
+ break;
}
+ mCh.setText(rid);
+ return;
+ }
- mCh.setBase(now.roundStart * 1000 - tbcf);
- mCh.start();
+ if (now.round == 0) {
+ mCh.setFormat(mRes.getString(R.string.ctfws_chrono_gamestart));
+ } else if (now.round == gs.getRounds()) {
+ mCh.setFormat(mRes.getString(R.string.ctfws_chrono_gameend));
+ } else {
+ mCh.setFormat(String.format(mRes.getString(R.string.ctfws_chrono_jailbreak),
+ now.round));
}
+ mCh.setBase(now.roundStart * 1000 - tbcf);
+ mCh.start();
});
}
if (self.nextSubRunnable != null) {
self.mHdl.removeCallbacks(self.nextSubRunnable);
}
- self.nextSubRunnable = new Runnable() {
- @Override
- public void run() {
- Log.d(TAG, "Resubscribing to handbook topic");
-
- HandbookDownloader self2 = mSelf.get();
- if (self2 == null) {
- return;
- }
+ self.nextSubRunnable = () -> {
+ Log.d(TAG, "Resubscribing to handbook topic");
+
+ HandbookDownloader self2 = mSelf.get();
+ if (self2 == null) {
+ return;
+ }
- synchronized (self2) {
- try {
- self2.subscribe(self2.mMqc);
- self2.nextSubRunnable = null;
- } catch (MqttException mqe) {
- /*
- * Well this stinks. Presumably it is because
- * something has gone wrong somewhere else and
- * we will notice shortly.
- */
- }
+ synchronized (self2) {
+ try {
+ self2.subscribe(self2.mMqc);
+ self2.nextSubRunnable = null;
+ } catch (MqttException mqe) {
+ /*
+ * Well this stinks. Presumably it is because
+ * something has gone wrong somewhere else and
+ * we will notice shortly.
+ */
}
}
};
</string>
<string name="ctfws_unknown_sides">We seem to be lost; where are we?</string>
- <string name="dialog_reset">Default</string>
-
<string name="flags_viz_fmt">
<![CDATA[<font color=#a94442><b>Red</b>: %1$s</font>, <font color=#8a6d3b><b>Yellow</b>: %2$s</font>]]>
</string>
This project is open source under AGPLv3; see the
<a href="https://github.com/cmukgb/ctfws-timer-android">GitHub Project Page</a>
<br/>
- © 2017-2019 Nathaniel Wesley Filardo, Cameron Wong, and others
+ © 2017-2019 Nathaniel Wesley Filardo, Cameron Wong, and others
</center>
]]>
</string>
-<?xml version="1.0" encoding="utf-8"?>\r
-<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"\r
- xmlns:app="http://schemas.android.com/apk/res-auto">\r
-\r
- <PreferenceCategory android:title="@string/preftext_mqtt_prefcat">\r
-\r
- <CheckBoxPreference\r
- android:defaultValue="true"\r
- android:key="server_def"\r
- android:title="@string/preftext_mqtt_def"/>\r
-\r
- <EditTextPreference\r
- android:selectAllOnFocus="true"\r
- android:singleLine="true"\r
- android:key="server"\r
- android:defaultValue="@string/server_default"\r
- android:title="@string/preftext_mqtt"\r
- app:isPreferenceVisible="false"/>\r
-\r
- </PreferenceCategory>\r
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto">
+
+ <PreferenceCategory android:title="@string/preftext_mqtt_prefcat">
+
+ <CheckBoxPreference
+ android:defaultValue="true"
+ android:key="server_def"
+ android:title="@string/preftext_mqtt_def"/>
+
+ <EditTextPreference
+ android:selectAllOnFocus="true"
+ android:singleLine="true"
+ android:key="server"
+ android:defaultValue="@string/server_default"
+ android:title="@string/preftext_mqtt"
+ app:isPreferenceVisible="false"/>
+
+ </PreferenceCategory>
<PreferenceCategory android:title="@string/preftext_screen_prefcat">
<CheckBoxPreference
android:defaultValue="false"
android:key="screen_on_when_game"
android:title="@string/preftext_screen_on_when_game" />
-\r
+
</PreferenceCategory>
<PreferenceCategory android:title="@string/preftext_notif_prefcat">
-\r
- <CheckBoxPreference\r
- android:defaultValue="true"\r
- android:key="prf_vibr_jb"\r
- android:title="@string/preftext_vibrate_jb" />\r
- <CheckBoxPreference\r
- android:defaultValue="true"\r
- android:key="prf_sound_jb"\r
- android:title="@string/preftext_sound_jb" />\r
-\r
- <CheckBoxPreference\r
- android:layout_width="wrap_content"\r
- android:layout_height="wrap_content"\r
- android:defaultValue="true"\r
- android:key="prf_vibr_flag"\r
- android:title="@string/preftext_vibrate_flag" />\r
- <CheckBoxPreference\r
- android:layout_width="wrap_content"\r
- android:layout_height="wrap_content"\r
- android:defaultValue="true"\r
- android:key="prf_sound_flag"\r
- android:title="@string/preftext_sound_flag" />\r
-\r
- <CheckBoxPreference\r
- android:layout_width="wrap_content"\r
- android:layout_height="wrap_content"\r
- android:defaultValue="true"\r
- android:key="prf_vibr_mesg"\r
- android:title="@string/preftext_vibrate_mesg" />\r
- <CheckBoxPreference\r
- android:layout_width="wrap_content"\r
- android:layout_height="wrap_content"\r
- android:defaultValue="true"\r
- android:key="prf_sound_mesg"\r
- android:title="@string/preftext_sound_mesg" />\r
-\r
- </PreferenceCategory>\r
-\r
-</androidx.preference.PreferenceScreen>\r
+
+ <CheckBoxPreference
+ android:defaultValue="true"
+ android:key="prf_vibr_jb"
+ android:title="@string/preftext_vibrate_jb" />
+ <CheckBoxPreference
+ android:defaultValue="true"
+ android:key="prf_sound_jb"
+ android:title="@string/preftext_sound_jb" />
+
+ <CheckBoxPreference
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:defaultValue="true"
+ android:key="prf_vibr_flag"
+ android:title="@string/preftext_vibrate_flag" />
+ <CheckBoxPreference
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:defaultValue="true"
+ android:key="prf_sound_flag"
+ android:title="@string/preftext_sound_flag" />
+
+ <CheckBoxPreference
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:defaultValue="true"
+ android:key="prf_vibr_mesg"
+ android:title="@string/preftext_vibrate_mesg" />
+ <CheckBoxPreference
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:defaultValue="true"
+ android:key="prf_sound_mesg"
+ android:title="@string/preftext_sound_mesg" />
+
+ </PreferenceCategory>
+
+</androidx.preference.PreferenceScreen>