Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions sensorhub-android-app/res/drawable/ic_loading.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M12,4V2C6.48,2 2,6.48 2,12h2c0,-4.42 3.58,-8 8,-8z"
android:fillColor="@android:color/white" />
</vector>
5 changes: 5 additions & 0 deletions sensorhub-android-app/res/drawable/ic_loading_animated.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/ic_loading"
android:pivotX="50%"
android:pivotY="50%" />
Original file line number Diff line number Diff line change
Expand Up @@ -169,17 +169,36 @@ private void updateFabIcon() {
}
}

private void showFabProgress() {
if (fab == null) return;
fab.setImageResource(R.drawable.ic_loading_animated);
fab.setEnabled(false);
}

private void hideFabProgress() {
if (fab == null) return;
fab.setEnabled(true);
updateFabIcon();
}

private void stopHub() {
Toast.makeText(requireContext(), R.string.stopping_sensorhub, Toast.LENGTH_SHORT).show();
showFabProgress();
newStatusMessage(getString(R.string.stopping_sensorhub));
stopRefreshingStatus();
provider.stopSensorHub();
updateFabIcon();
hideVideoPreview();
clearTextureView();
videoStatusCard.setVisibility(View.GONE);
if (meshtasticCard != null) meshtasticCard.setVisibility(View.GONE);
newStatusMessage(getString(R.string.sensorhub_stopped));
requireActivity().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
provider.stopSensorHub();

// Brief delay to let the service finish stopping on its background thread
displayHandler.postDelayed(() -> {
if (!isAdded()) return;
hideFabProgress();
updateFabIcon();
newStatusMessage(getString(R.string.sensorhub_stopped));
requireActivity().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}, 1000);
}

private void clearTextureView() {
Expand Down Expand Up @@ -231,7 +250,7 @@ public void onClick(DialogInterface dialog, int whichButton) {
showVideoConfigErrorPopup();
newStatusMessage(getString(R.string.video_config_error));
} else {
Toast.makeText(requireContext(), R.string.starting_sensorhub, Toast.LENGTH_SHORT).show();
showFabProgress();
newStatusMessage(getString(R.string.starting_sensorhub));
provider.getSostClients().clear();
provider.getConSysClients().clear();
Expand Down Expand Up @@ -280,6 +299,7 @@ private void pollHubReady() {

if (!provider.isOshStarted()) {
provider.setOshStarted(true);
hideFabProgress();
updateFabIcon();
serverStatusContainer.removeAllViews();
serverCardViews.clear();
Expand All @@ -292,6 +312,7 @@ private void pollHubReady() {
} else if (hubPollAttempts < HUB_POLL_MAX_ATTEMPTS) {
displayHandler.postDelayed(this::pollHubReady, HUB_POLL_INTERVAL_MS);
} else {
hideFabProgress();
newStatusMessage(getString(R.string.sensorhub_start_failed));
updateFabIcon();
}
Expand Down
Loading