mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge.git
synced 2026-07-31 07:44:24 +02:00
Fossil Q: Fix commands being sent to all connected Fossil watches
This commit is contained in:
committed by
Arjan Schrijver
parent
f161d129f5
commit
b6b9781f0b
+11
-9
@@ -39,9 +39,6 @@ import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
||||
import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.activities.AbstractGBActivity;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
@@ -51,6 +48,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.QHybridSuppo
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
||||
|
||||
public class AppsManagementActivity extends AbstractGBActivity {
|
||||
private GBDevice device;
|
||||
ListView appsListView;
|
||||
String[] appNames;
|
||||
|
||||
@@ -59,6 +57,13 @@ public class AppsManagementActivity extends AbstractGBActivity {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_qhybrid_apps_management);
|
||||
|
||||
device = getIntent().getParcelableExtra(GBDevice.EXTRA_DEVICE);
|
||||
if (device == null || !device.isInitialized()) {
|
||||
GB.toast(this, getString(R.string.watch_not_connected), Toast.LENGTH_LONG, GB.ERROR);
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
|
||||
initViews();
|
||||
refreshInstalledApps();
|
||||
}
|
||||
@@ -69,8 +74,6 @@ public class AppsManagementActivity extends AbstractGBActivity {
|
||||
|
||||
private void refreshInstalledApps() {
|
||||
try {
|
||||
List<GBDevice> devices = GBApplication.app().getDeviceManager().getSelectedDevices();
|
||||
for(GBDevice device : devices){
|
||||
if (
|
||||
device.getType() == DeviceType.FOSSILQHYBRID &&
|
||||
device.isConnected() &&
|
||||
@@ -88,15 +91,13 @@ public class AppsManagementActivity extends AbstractGBActivity {
|
||||
appNames[i] = apps.getString(i);
|
||||
}
|
||||
appsListView.setAdapter(new AppsListAdapter(this, appNames));
|
||||
} else {
|
||||
throw new RuntimeException("Device not connected");
|
||||
}
|
||||
return;
|
||||
}
|
||||
} catch (JSONException e) {
|
||||
toast(e.getLocalizedMessage());
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
throw new RuntimeException("Device not connected");
|
||||
}
|
||||
|
||||
static class AppsListAdapter extends ArrayAdapter<String> {
|
||||
@@ -149,6 +150,7 @@ public class AppsManagementActivity extends AbstractGBActivity {
|
||||
@Override
|
||||
public boolean onMenuItemClick(MenuItem item) {
|
||||
Intent intent = new Intent(QHybridSupport.QHYBRID_COMMAND_UNINSTALL_APP);
|
||||
intent.putExtra(GBDevice.EXTRA_DEVICE, device);
|
||||
intent.putExtra("EXTRA_APP_NAME", appNames[position]);
|
||||
LocalBroadcastManager.getInstance(AppsManagementActivity.this).sendBroadcast(intent);
|
||||
return true;
|
||||
|
||||
+21
-30
@@ -23,22 +23,20 @@ import android.widget.AdapterView;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.Button;
|
||||
import android.widget.Spinner;
|
||||
import android.widget.SpinnerAdapter;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
||||
import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.activities.AbstractGBActivity;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.QHybridSupport;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
||||
|
||||
public class CalibrationActivity extends AbstractGBActivity {
|
||||
GBDevice device;
|
||||
|
||||
enum HAND{
|
||||
MINUTE,
|
||||
HOUR,
|
||||
@@ -87,33 +85,25 @@ public class CalibrationActivity extends AbstractGBActivity {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_qhybrid_calibration);
|
||||
|
||||
List<GBDevice> devices = GBApplication.app().getDeviceManager().getSelectedDevices();
|
||||
boolean atLeastOneConnected = false;
|
||||
for(GBDevice device : devices){
|
||||
if(device.getType() == DeviceType.FOSSILQHYBRID){
|
||||
atLeastOneConnected = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(!atLeastOneConnected){
|
||||
Toast.makeText(this, R.string.watch_not_connected, Toast.LENGTH_LONG).show();
|
||||
device = getIntent().getParcelableExtra(GBDevice.EXTRA_DEVICE);
|
||||
if (device == null || !device.isInitialized()) {
|
||||
GB.toast(this, getString(R.string.watch_not_connected), Toast.LENGTH_LONG, GB.ERROR);
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
|
||||
localBroadcastManager = LocalBroadcastManager.getInstance(this);
|
||||
|
||||
localBroadcastManager.sendBroadcast(
|
||||
new Intent(QHybridSupport.QHYBRID_COMMAND_CONTROL)
|
||||
);
|
||||
final Intent cncIntent = new Intent(QHybridSupport.QHYBRID_COMMAND_CONTROL);
|
||||
cncIntent.putExtra(GBDevice.EXTRA_DEVICE, device);
|
||||
localBroadcastManager.sendBroadcast(cncIntent);
|
||||
|
||||
initViews();
|
||||
}
|
||||
|
||||
private void initViews(){
|
||||
Spinner handSpinner = findViewById(R.id.qhybrid_calibration_hand_spinner);
|
||||
handSpinner.setAdapter(new ArrayAdapter<HAND>(this, android.R.layout.simple_spinner_dropdown_item, HAND.values()));
|
||||
handSpinner.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, HAND.values()));
|
||||
handSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
||||
@Override
|
||||
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
||||
@@ -122,21 +112,18 @@ public class CalibrationActivity extends AbstractGBActivity {
|
||||
|
||||
@Override
|
||||
public void onNothingSelected(AdapterView<?> parent) {
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
for(final MOVE_BUTTON buttonDeclaration : MOVE_BUTTON.values()) {
|
||||
final Button button = findViewById(buttonDeclaration.layoutId);
|
||||
|
||||
button.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Intent intent = new Intent(QHybridSupport.QHYBRID_COMMAND_MOVE);
|
||||
intent.putExtra("EXTRA_DISTANCE_" + selectedHand.getVariableName(), (short) buttonDeclaration.distance);
|
||||
button.setOnClickListener(v -> {
|
||||
final Intent intent = new Intent(QHybridSupport.QHYBRID_COMMAND_MOVE);
|
||||
intent.putExtra(GBDevice.EXTRA_DEVICE, device);
|
||||
intent.putExtra("EXTRA_DISTANCE_" + selectedHand.getVariableName(), (short) buttonDeclaration.distance);
|
||||
|
||||
localBroadcastManager.sendBroadcast(intent);
|
||||
}
|
||||
localBroadcastManager.sendBroadcast(intent);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -151,8 +138,12 @@ public class CalibrationActivity extends AbstractGBActivity {
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
if (localBroadcastManager != null) {
|
||||
localBroadcastManager.sendBroadcast(new Intent(QHybridSupport.QHYBRID_COMMAND_SAVE_CALIBRATION));
|
||||
localBroadcastManager.sendBroadcast(new Intent(QHybridSupport.QHYBRID_COMMAND_UNCONTROL));
|
||||
final Intent saveIntent = new Intent(QHybridSupport.QHYBRID_COMMAND_SAVE_CALIBRATION);
|
||||
saveIntent.putExtra(GBDevice.EXTRA_DEVICE, device);
|
||||
localBroadcastManager.sendBroadcast(saveIntent);
|
||||
final Intent uncontrolIntent = new Intent(QHybridSupport.QHYBRID_COMMAND_UNCONTROL);
|
||||
uncontrolIntent.putExtra(GBDevice.EXTRA_DEVICE, device);
|
||||
localBroadcastManager.sendBroadcast(uncontrolIntent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+24
-4
@@ -23,6 +23,7 @@ import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.EditText;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||
@@ -43,11 +44,14 @@ import java.util.List;
|
||||
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
||||
import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.activities.AbstractGBActivity;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.QHybridSupport;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
||||
|
||||
public class CommuteActionsActivity extends AbstractGBActivity implements CommuteActionsListAdapter.ItemClickListener, DialogInterface.OnClickListener, View.OnClickListener {
|
||||
protected final List<String> actionsList = new ArrayList<>();
|
||||
private static final Logger LOG = LoggerFactory.getLogger(CommuteActionsActivity.class);
|
||||
private GBDevice device;
|
||||
private SharedPreferences sharedPreferences;
|
||||
private ItemTouchHelper actionTouchHelper;
|
||||
private CommuteActionsListAdapter actionsListAdapter;
|
||||
@@ -57,6 +61,14 @@ public class CommuteActionsActivity extends AbstractGBActivity implements Commut
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_commute_actions);
|
||||
|
||||
device = getIntent().getParcelableExtra(GBDevice.EXTRA_DEVICE);
|
||||
if (device == null || !device.isInitialized()) {
|
||||
GB.toast(this, getString(R.string.watch_not_connected), Toast.LENGTH_LONG, GB.ERROR);
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
|
||||
sharedPreferences = GBApplication.getPrefs().getPreferences();
|
||||
|
||||
findViewById(R.id.actionAddFab).setOnClickListener(this);
|
||||
@@ -134,7 +146,9 @@ public class CommuteActionsActivity extends AbstractGBActivity implements Commut
|
||||
putActionItems(actionsList);
|
||||
refreshActions();
|
||||
|
||||
LocalBroadcastManager.getInstance(CommuteActionsActivity.this).sendBroadcast(new Intent(QHybridSupport.QHYBRID_COMMAND_OVERWRITE_BUTTONS));
|
||||
final Intent intent = new Intent(QHybridSupport.QHYBRID_COMMAND_OVERWRITE_BUTTONS);
|
||||
intent.putExtra(GBDevice.EXTRA_DEVICE, device);
|
||||
LocalBroadcastManager.getInstance(CommuteActionsActivity.this).sendBroadcast(intent);
|
||||
}
|
||||
})
|
||||
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
|
||||
@@ -144,7 +158,9 @@ public class CommuteActionsActivity extends AbstractGBActivity implements Commut
|
||||
putActionItems(actionsList);
|
||||
refreshActions();
|
||||
|
||||
LocalBroadcastManager.getInstance(CommuteActionsActivity.this).sendBroadcast(new Intent(QHybridSupport.QHYBRID_COMMAND_OVERWRITE_BUTTONS));
|
||||
final Intent intent = new Intent(QHybridSupport.QHYBRID_COMMAND_OVERWRITE_BUTTONS);
|
||||
intent.putExtra(GBDevice.EXTRA_DEVICE, device);
|
||||
LocalBroadcastManager.getInstance(CommuteActionsActivity.this).sendBroadcast(intent);
|
||||
}
|
||||
})
|
||||
.setTitle(R.string.fossil_hr_edit_action)
|
||||
@@ -162,7 +178,9 @@ public class CommuteActionsActivity extends AbstractGBActivity implements Commut
|
||||
sharedPreferences.edit().putString(CONFIG_KEY_Q_ACTIONS, actionArray.toString()).apply();
|
||||
refreshActions();
|
||||
|
||||
LocalBroadcastManager.getInstance(CommuteActionsActivity.this).sendBroadcast(new Intent(QHybridSupport.QHYBRID_COMMAND_OVERWRITE_BUTTONS));
|
||||
final Intent intent = new Intent(QHybridSupport.QHYBRID_COMMAND_OVERWRITE_BUTTONS);
|
||||
intent.putExtra(GBDevice.EXTRA_DEVICE, device);
|
||||
LocalBroadcastManager.getInstance(CommuteActionsActivity.this).sendBroadcast(intent);
|
||||
} catch (JSONException e) {
|
||||
LOG.error("Error adding new commute action", e);
|
||||
}
|
||||
@@ -207,7 +225,9 @@ public class CommuteActionsActivity extends AbstractGBActivity implements Commut
|
||||
public void clearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
|
||||
super.clearView(recyclerView, viewHolder);
|
||||
putActionItems(actionsList);
|
||||
LocalBroadcastManager.getInstance(CommuteActionsActivity.this).sendBroadcast(new Intent(QHybridSupport.QHYBRID_COMMAND_OVERWRITE_BUTTONS));
|
||||
final Intent intent = new Intent(QHybridSupport.QHYBRID_COMMAND_OVERWRITE_BUTTONS);
|
||||
intent.putExtra(GBDevice.EXTRA_DEVICE, device);
|
||||
LocalBroadcastManager.getInstance(CommuteActionsActivity.this).sendBroadcast(intent);
|
||||
}
|
||||
}
|
||||
}
|
||||
+12
-2
@@ -38,12 +38,14 @@ import java.io.IOException;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.activities.AbstractGBActivity;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.QHybridSupport;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.file.FileHandle;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.AndroidUtils;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
||||
|
||||
public class FileManagementActivity extends AbstractGBActivity implements View.OnClickListener {
|
||||
private GBDevice device;
|
||||
private final int REQUEST_CODE_PICK_UPLOAD_FILE = 0;
|
||||
|
||||
private Spinner fileTypesSpinner;
|
||||
@@ -79,6 +81,13 @@ public class FileManagementActivity extends AbstractGBActivity implements View.O
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_qhybrid_file_management);
|
||||
|
||||
device = getIntent().getParcelableExtra(GBDevice.EXTRA_DEVICE);
|
||||
if (device == null || !device.isInitialized()) {
|
||||
GB.toast(this, getString(R.string.watch_not_connected), Toast.LENGTH_LONG, GB.ERROR);
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
|
||||
initViews();
|
||||
}
|
||||
|
||||
@@ -156,6 +165,7 @@ public class FileManagementActivity extends AbstractGBActivity implements View.O
|
||||
}
|
||||
|
||||
Intent callIntent = new Intent(QHybridSupport.QHYBRID_COMMAND_UPLOAD_FILE);
|
||||
callIntent.putExtra(GBDevice.EXTRA_DEVICE, device);
|
||||
callIntent.putExtra("EXTRA_HANDLE", (FileHandle) fileTypesSpinner.getSelectedItem());
|
||||
callIntent.putExtra("EXTRA_ENCRYPTED", encryptedFile.isChecked());
|
||||
callIntent.putExtra("EXTRA_GENERATE_FILE_HEADER", generateFileHeader);
|
||||
@@ -173,9 +183,9 @@ public class FileManagementActivity extends AbstractGBActivity implements View.O
|
||||
boolean isEncrypted = encryptedFile.isChecked();
|
||||
|
||||
if (v.getId() == R.id.qhybrid_button_download_file) {
|
||||
Intent fileIntent = new Intent();
|
||||
Intent fileIntent = new Intent(QHybridSupport.QHYBRID_COMMAND_DOWNLOAD_FILE);
|
||||
fileIntent.putExtra(GBDevice.EXTRA_DEVICE, device);
|
||||
fileIntent.putExtra("EXTRA_ENCRYPTED", isEncrypted);
|
||||
fileIntent.setAction(QHybridSupport.QHYBRID_COMMAND_DOWNLOAD_FILE);
|
||||
fileIntent.putExtra("EXTRA_MAJORHANDLE", ((FileHandle) fileTypesSpinner.getSelectedItem()).getMajorHandle());
|
||||
fileIntent.putExtra("EXTRA_MINORHANDLE", ((FileHandle) fileTypesSpinner.getSelectedItem()).getMinorHandle());
|
||||
fileIntent.putExtra("EXTRA_NAME", ((FileHandle) fileTypesSpinner.getSelectedItem()).name());
|
||||
|
||||
+23
-6
@@ -17,8 +17,6 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>. */
|
||||
package nodomain.freeyourgadget.gadgetbridge.devices.qhybrid;
|
||||
|
||||
import static nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.QHybridSupport.QHYBRID_COMMAND_UPDATE_WIDGETS;
|
||||
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
@@ -62,6 +60,7 @@ import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.Version;
|
||||
|
||||
public class HRConfigActivity extends AbstractGBActivity {
|
||||
private GBDevice device;
|
||||
private SharedPreferences sharedPreferences;
|
||||
private WidgetListAdapter widgetListAdapter;
|
||||
private ArrayList<CustomWidget> customWidgets = new ArrayList<>();
|
||||
@@ -77,6 +76,13 @@ public class HRConfigActivity extends AbstractGBActivity {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_qhybrid_hr_settings);
|
||||
|
||||
device = getIntent().getParcelableExtra(GBDevice.EXTRA_DEVICE);
|
||||
if (device == null || !device.isInitialized()) {
|
||||
GB.toast(this, getString(R.string.watch_not_connected), Toast.LENGTH_LONG, GB.ERROR);
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
|
||||
sharedPreferences = GBApplication.getPrefs().getPreferences();
|
||||
|
||||
initMappings();
|
||||
@@ -133,6 +139,7 @@ public class HRConfigActivity extends AbstractGBActivity {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
Intent intent = new Intent(QHybridSupport.QHYBRID_COMMAND_SET_BACKGROUND_IMAGE);
|
||||
intent.putExtra(GBDevice.EXTRA_DEVICE, device);
|
||||
intent.putIntegerArrayListExtra("EXTRA_PIXELS", null);
|
||||
LocalBroadcastManager.getInstance(HRConfigActivity.this).sendBroadcast(intent);
|
||||
}
|
||||
@@ -203,7 +210,9 @@ public class HRConfigActivity extends AbstractGBActivity {
|
||||
refreshWidgetList();
|
||||
saveCustomWidgetList();
|
||||
|
||||
LocalBroadcastManager.getInstance(HRConfigActivity.this).sendBroadcast(new Intent(QHYBRID_COMMAND_UPDATE_WIDGETS));
|
||||
final Intent intent = new Intent(QHybridSupport.QHYBRID_COMMAND_UPDATE_WIDGETS);
|
||||
intent.putExtra(GBDevice.EXTRA_DEVICE, device);
|
||||
LocalBroadcastManager.getInstance(HRConfigActivity.this).sendBroadcast(intent);
|
||||
} else if (resultCode == WidgetSettingsActivity.RESULT_CODE_WIDGET_UPDATED) {
|
||||
CustomWidget widget = (CustomWidget) data.getExtras().get("EXTRA_WIDGET");
|
||||
int updateIndex = data.getIntExtra("EXTRA_WIDGET_IDNEX", -1);
|
||||
@@ -221,7 +230,9 @@ public class HRConfigActivity extends AbstractGBActivity {
|
||||
refreshWidgetList();
|
||||
saveCustomWidgetList();
|
||||
|
||||
LocalBroadcastManager.getInstance(HRConfigActivity.this).sendBroadcast(new Intent(QHYBRID_COMMAND_UPDATE_WIDGETS));
|
||||
final Intent intent = new Intent(QHybridSupport.QHYBRID_COMMAND_UPDATE_WIDGETS);
|
||||
intent.putExtra(GBDevice.EXTRA_DEVICE, device);
|
||||
LocalBroadcastManager.getInstance(HRConfigActivity.this).sendBroadcast(intent);
|
||||
} else if (resultCode == WidgetSettingsActivity.RESULT_CODE_WIDGET_DELETED) {
|
||||
int updateIndex = data.getIntExtra("EXTRA_WIDGET_IDNEX", -1);
|
||||
|
||||
@@ -230,7 +241,9 @@ public class HRConfigActivity extends AbstractGBActivity {
|
||||
refreshWidgetList();
|
||||
saveCustomWidgetList();
|
||||
|
||||
LocalBroadcastManager.getInstance(HRConfigActivity.this).sendBroadcast(new Intent(QHYBRID_COMMAND_UPDATE_WIDGETS));
|
||||
final Intent intent = new Intent(QHybridSupport.QHYBRID_COMMAND_UPDATE_WIDGETS);
|
||||
intent.putExtra(GBDevice.EXTRA_DEVICE, device);
|
||||
LocalBroadcastManager.getInstance(HRConfigActivity.this).sendBroadcast(intent);
|
||||
}
|
||||
}else if(requestCode == REQUEST_CODE_IMAGE_PICK){
|
||||
if (resultCode == RESULT_OK)
|
||||
@@ -245,6 +258,7 @@ public class HRConfigActivity extends AbstractGBActivity {
|
||||
}else if(requestCode == REQUEST_CODE_IMAGE_EDIT){
|
||||
if(resultCode == ImageEditActivity.RESULT_CODE_EDIT_SUCCESS){
|
||||
data.setAction(QHybridSupport.QHYBRID_COMMAND_SET_BACKGROUND_IMAGE);
|
||||
data.putExtra(GBDevice.EXTRA_DEVICE, device);
|
||||
LocalBroadcastManager.getInstance(this).sendBroadcast(data);
|
||||
}
|
||||
}
|
||||
@@ -343,7 +357,10 @@ public class HRConfigActivity extends AbstractGBActivity {
|
||||
keyConfig.remove(jsonKey);
|
||||
}
|
||||
sharedPreferences.edit().putString("FOSSIL_HR_WIDGETS", keyConfig.toString()).apply();
|
||||
LocalBroadcastManager.getInstance(this).sendBroadcast(new Intent(QHYBRID_COMMAND_UPDATE_WIDGETS));
|
||||
|
||||
final Intent intent = new Intent(QHybridSupport.QHYBRID_COMMAND_UPDATE_WIDGETS);
|
||||
intent.putExtra(GBDevice.EXTRA_DEVICE, device);
|
||||
LocalBroadcastManager.getInstance(HRConfigActivity.this).sendBroadcast(intent);
|
||||
|
||||
loadWidgetConfigs();
|
||||
} catch (JSONException e) {
|
||||
|
||||
+14
-1
@@ -47,12 +47,14 @@ import java.util.concurrent.atomic.AtomicLong;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.activities.AbstractGBActivity;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.QHybridSupport;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
||||
|
||||
public class QHybridAppChooserActivity extends AbstractGBActivity {
|
||||
private static final AtomicLong THREAD_COUNTER = new AtomicLong(0L);
|
||||
|
||||
private GBDevice device;
|
||||
boolean hasControl = false;
|
||||
|
||||
private PackageConfigHelper helper;
|
||||
@@ -62,6 +64,13 @@ public class QHybridAppChooserActivity extends AbstractGBActivity {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_qhybrid_app_chooser);
|
||||
|
||||
device = getIntent().getParcelableExtra(GBDevice.EXTRA_DEVICE);
|
||||
if (device == null || !device.isInitialized()) {
|
||||
GB.toast(this, getString(R.string.watch_not_connected), Toast.LENGTH_LONG, GB.ERROR);
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
|
||||
helper = new PackageConfigHelper(getApplicationContext());
|
||||
|
||||
final ListView appList = findViewById(R.id.qhybrid_appChooserList);
|
||||
@@ -111,6 +120,7 @@ public class QHybridAppChooserActivity extends AbstractGBActivity {
|
||||
private void setControl(boolean control) {
|
||||
if (hasControl == control) return;
|
||||
Intent intent = new Intent(control ? QHybridSupport.QHYBRID_COMMAND_CONTROL : QHybridSupport.QHYBRID_COMMAND_UNCONTROL);
|
||||
intent.putExtra(GBDevice.EXTRA_DEVICE, device);
|
||||
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
|
||||
this.hasControl = control;
|
||||
}
|
||||
@@ -125,6 +135,7 @@ public class QHybridAppChooserActivity extends AbstractGBActivity {
|
||||
|
||||
private void sendControl(NotificationConfiguration config, String request){
|
||||
Intent intent = new Intent(request);
|
||||
intent.putExtra(GBDevice.EXTRA_DEVICE, device);
|
||||
intent.putExtra("CONFIG", config);
|
||||
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
|
||||
}
|
||||
@@ -140,7 +151,9 @@ public class QHybridAppChooserActivity extends AbstractGBActivity {
|
||||
if(success){
|
||||
try {
|
||||
helper.saveNotificationConfiguration(config);
|
||||
LocalBroadcastManager.getInstance(QHybridAppChooserActivity.this).sendBroadcast(new Intent(QHybridSupport.QHYBRID_COMMAND_NOTIFICATION_CONFIG_CHANGED));
|
||||
final Intent intent = new Intent(QHybridSupport.QHYBRID_COMMAND_NOTIFICATION_CONFIG_CHANGED);
|
||||
intent.putExtra(GBDevice.EXTRA_DEVICE, device);
|
||||
LocalBroadcastManager.getInstance(QHybridAppChooserActivity.this).sendBroadcast(intent);
|
||||
} catch (Exception e) {
|
||||
GB.toast("error saving configuration", Toast.LENGTH_SHORT, GB.ERROR, e);
|
||||
}
|
||||
|
||||
+15
-8
@@ -85,7 +85,7 @@ public class QHybridConfigActivity extends AbstractGBActivity {
|
||||
|
||||
SharedPreferences prefs;
|
||||
|
||||
GBDevice device;
|
||||
private GBDevice device;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
@@ -142,7 +142,9 @@ public class QHybridConfigActivity extends AbstractGBActivity {
|
||||
if (success) {
|
||||
try {
|
||||
helper.saveNotificationConfiguration(config);
|
||||
LocalBroadcastManager.getInstance(QHybridConfigActivity.this).sendBroadcast(new Intent(QHybridSupport.QHYBRID_COMMAND_NOTIFICATION_CONFIG_CHANGED));
|
||||
final Intent intent = new Intent(QHybridSupport.QHYBRID_COMMAND_NOTIFICATION_CONFIG_CHANGED);
|
||||
intent.putExtra(GBDevice.EXTRA_DEVICE, device);
|
||||
LocalBroadcastManager.getInstance(QHybridConfigActivity.this).sendBroadcast(intent);
|
||||
} catch (Exception e) {
|
||||
GB.toast("error saving notification", Toast.LENGTH_SHORT, GB.ERROR, e);
|
||||
}
|
||||
@@ -158,7 +160,9 @@ public class QHybridConfigActivity extends AbstractGBActivity {
|
||||
case 1: {
|
||||
try {
|
||||
helper.deleteNotificationConfiguration((NotificationConfiguration) adapterView.getItemAtPosition(i));
|
||||
LocalBroadcastManager.getInstance(QHybridConfigActivity.this).sendBroadcast(new Intent(QHybridSupport.QHYBRID_COMMAND_NOTIFICATION_CONFIG_CHANGED));
|
||||
final Intent intent = new Intent(QHybridSupport.QHYBRID_COMMAND_NOTIFICATION_CONFIG_CHANGED);
|
||||
intent.putExtra(GBDevice.EXTRA_DEVICE, device);
|
||||
LocalBroadcastManager.getInstance(QHybridConfigActivity.this).sendBroadcast(intent);
|
||||
} catch (Exception e) {
|
||||
GB.toast("error deleting setting", Toast.LENGTH_SHORT, GB.ERROR, e);
|
||||
}
|
||||
@@ -178,6 +182,7 @@ public class QHybridConfigActivity extends AbstractGBActivity {
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
|
||||
Intent notificationIntent = new Intent(QHybridSupport.QHYBRID_COMMAND_NOTIFICATION);
|
||||
notificationIntent.putExtra(GBDevice.EXTRA_DEVICE, device);
|
||||
notificationIntent.putExtra("CONFIG", (NotificationConfiguration) adapterView.getItemAtPosition(i));
|
||||
LocalBroadcastManager.getInstance(QHybridConfigActivity.this).sendBroadcast(notificationIntent);
|
||||
}
|
||||
@@ -253,6 +258,7 @@ public class QHybridConfigActivity extends AbstractGBActivity {
|
||||
device.addDeviceInfo(new GenericItem(FossilWatchAdapter.ITEM_BUTTONS, buttonConfig.toString()));
|
||||
updateSettings();
|
||||
Intent buttonIntent = new Intent(QHybridSupport.QHYBRID_COMMAND_OVERWRITE_BUTTONS);
|
||||
buttonIntent.putExtra(GBDevice.EXTRA_DEVICE, device);
|
||||
buttonIntent.putExtra(FossilWatchAdapter.ITEM_BUTTONS, buttonConfig.toString());
|
||||
LocalBroadcastManager.getInstance(QHybridConfigActivity.this).sendBroadcast(buttonIntent);
|
||||
} catch (JSONException e) {
|
||||
@@ -278,6 +284,7 @@ public class QHybridConfigActivity extends AbstractGBActivity {
|
||||
private void setControl(boolean control, NotificationConfiguration config) {
|
||||
if (hasControl == control) return;
|
||||
Intent intent = new Intent(control ? QHybridSupport.QHYBRID_COMMAND_CONTROL : QHybridSupport.QHYBRID_COMMAND_UNCONTROL);
|
||||
intent.putExtra(GBDevice.EXTRA_DEVICE, device);
|
||||
intent.putExtra("CONFIG", config);
|
||||
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
|
||||
this.hasControl = control;
|
||||
@@ -293,6 +300,7 @@ public class QHybridConfigActivity extends AbstractGBActivity {
|
||||
|
||||
private void sendControl(NotificationConfiguration config, String request) {
|
||||
Intent intent = new Intent(request);
|
||||
intent.putExtra(GBDevice.EXTRA_DEVICE, device);
|
||||
intent.putExtra("CONFIG", config);
|
||||
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
|
||||
}
|
||||
@@ -373,11 +381,10 @@ public class QHybridConfigActivity extends AbstractGBActivity {
|
||||
Button addButton = new Button(QHybridConfigActivity.this);
|
||||
addButton.setText("+");
|
||||
addButton.setLayoutParams(new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
|
||||
addButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
startActivityForResult(new Intent(QHybridConfigActivity.this, QHybridAppChooserActivity.class), REQUEST_CODE_ADD_APP);
|
||||
}
|
||||
addButton.setOnClickListener(view1 -> {
|
||||
final Intent appChooserIntent = new Intent(QHybridConfigActivity.this, QHybridAppChooserActivity.class);
|
||||
appChooserIntent.putExtra(GBDevice.EXTRA_DEVICE, device);
|
||||
startActivityForResult(appChooserIntent, REQUEST_CODE_ADD_APP);
|
||||
});
|
||||
return addButton;
|
||||
}
|
||||
|
||||
+29
-5
@@ -38,9 +38,9 @@ public class QHybridSettingsCustomizer implements DeviceSpecificSettingsCustomiz
|
||||
public void customizeSettings(final DeviceSpecificSettingsHandler handler, final Prefs prefs, final String rootKey) {
|
||||
handler.addPreferenceHandlerFor("use_activity_hand_as_notification_counter");
|
||||
|
||||
final Preference pref = handler.findPreference("pref_key_qhybrid_legacy");
|
||||
if (pref != null) {
|
||||
pref.setOnPreferenceClickListener(preference -> {
|
||||
final Preference legacyPref = handler.findPreference("pref_key_qhybrid_legacy");
|
||||
if (legacyPref != null) {
|
||||
legacyPref.setOnPreferenceClickListener(preference -> {
|
||||
final Intent intent = new Intent(handler.getContext(), QHybridConfigActivity.class);
|
||||
intent.putExtra(GBDevice.EXTRA_DEVICE, handler.getDevice());
|
||||
handler.getContext().startActivity(intent);
|
||||
@@ -48,6 +48,26 @@ public class QHybridSettingsCustomizer implements DeviceSpecificSettingsCustomiz
|
||||
});
|
||||
}
|
||||
|
||||
final Preference calibrationPref = handler.findPreference("pref_key_qhybrid_calibration");
|
||||
if (calibrationPref != null) {
|
||||
calibrationPref.setOnPreferenceClickListener(preference -> {
|
||||
final Intent intent = new Intent(handler.getContext(), CalibrationActivity.class);
|
||||
intent.putExtra(GBDevice.EXTRA_DEVICE, handler.getDevice());
|
||||
handler.getContext().startActivity(intent);
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
final Preference commutePref = handler.findPreference("pref_key_qhybrid_commute_actions");
|
||||
if (commutePref != null) {
|
||||
commutePref.setOnPreferenceClickListener(preference -> {
|
||||
final Intent intent = new Intent(handler.getContext(), CommuteActionsActivity.class);
|
||||
intent.putExtra(GBDevice.EXTRA_DEVICE, handler.getDevice());
|
||||
handler.getContext().startActivity(intent);
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
timeOffsetPref = handler.findPreference("time_offset");
|
||||
if (timeOffsetPref != null) {
|
||||
timeOffsetPref.setOnPreferenceClickListener(preference -> {
|
||||
@@ -80,7 +100,9 @@ public class QHybridSettingsCustomizer implements DeviceSpecificSettingsCustomiz
|
||||
int value = hourPicker.getValue() * 60 + minPicker.getValue();
|
||||
prefs.getPreferences().edit().putInt("QHYBRID_TIME_OFFSET", value).apply();
|
||||
updateTimeOffsetSummary(value);
|
||||
LocalBroadcastManager.getInstance(handler.getContext()).sendBroadcast(new Intent(QHybridSupport.QHYBRID_COMMAND_UPDATE));
|
||||
final Intent intent = new Intent(QHybridSupport.QHYBRID_COMMAND_UPDATE);
|
||||
intent.putExtra(GBDevice.EXTRA_DEVICE, handler.getDevice());
|
||||
LocalBroadcastManager.getInstance(handler.getContext()).sendBroadcast(intent);
|
||||
GB.toast(handler.getContext().getString(R.string.qhybrid_changes_delay_prompt), Toast.LENGTH_SHORT, GB.INFO);
|
||||
})
|
||||
.setNegativeButton(handler.getContext().getString(R.string.fossil_hr_new_action_cancel), null)
|
||||
@@ -122,7 +144,9 @@ public class QHybridSettingsCustomizer implements DeviceSpecificSettingsCustomiz
|
||||
int value = hourPicker.getValue() * 60 + minPicker.getValue();
|
||||
prefs.getPreferences().edit().putInt("QHYBRID_TIMEZONE_OFFSET", value).apply();
|
||||
updateTimezoneOffsetSummary(value);
|
||||
LocalBroadcastManager.getInstance(handler.getContext()).sendBroadcast(new Intent(QHybridSupport.QHYBRID_COMMAND_UPDATE_TIMEZONE));
|
||||
final Intent intent = new Intent(QHybridSupport.QHYBRID_COMMAND_UPDATE_TIMEZONE);
|
||||
intent.putExtra(GBDevice.EXTRA_DEVICE, handler.getDevice());
|
||||
LocalBroadcastManager.getInstance(handler.getContext()).sendBroadcast(intent);
|
||||
GB.toast(handler.getContext().getString(R.string.qhybrid_changes_delay_prompt), Toast.LENGTH_SHORT, GB.INFO);
|
||||
})
|
||||
.setNegativeButton(handler.getContext().getString(R.string.fossil_hr_new_action_cancel), null)
|
||||
|
||||
+10
-2
@@ -43,7 +43,6 @@ import java.io.FileOutputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Objects;
|
||||
import java.util.UUID;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
@@ -62,7 +61,6 @@ import nodomain.freeyourgadget.gadgetbridge.model.CalendarEventSpec;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.CallSpec;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.CannedMessagesSpec;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.GenericItem;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.ItemWithDetails;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.MusicSpec;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.MusicStateSpec;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.NavigationInfoSpec;
|
||||
@@ -179,6 +177,16 @@ public class QHybridSupport extends QHybridBaseSupport {
|
||||
return;
|
||||
}
|
||||
|
||||
final GBDevice intentDevice = intent.getParcelableExtra(GBDevice.EXTRA_DEVICE);
|
||||
if (intentDevice == null) {
|
||||
logger.warn("Received command Intent without device extra. Command will not be sent to any device.");
|
||||
return;
|
||||
}
|
||||
if (!intentDevice.getAddress().equals(gbDevice.getAddress())) {
|
||||
// Abort, the command is targeted at another device
|
||||
return;
|
||||
}
|
||||
|
||||
switch (intent.getAction()) {
|
||||
case QHYBRID_COMMAND_CONTROL: {
|
||||
log("sending control request");
|
||||
|
||||
@@ -3,11 +3,9 @@
|
||||
|
||||
<Preference
|
||||
android:title="@string/qhybrid_title_calibration"
|
||||
android:key="pref_key_qhybrid_calibration"
|
||||
android:icon="@drawable/ic_sensor_calibration"
|
||||
android:summary="@string/qhybrid_summary_calibration">
|
||||
<intent
|
||||
android:targetPackage="@string/applicationId"
|
||||
android:targetClass="nodomain.freeyourgadget.gadgetbridge.devices.qhybrid.CalibrationActivity" />
|
||||
</Preference>
|
||||
|
||||
</androidx.preference.PreferenceScreen>
|
||||
|
||||
@@ -57,11 +57,9 @@
|
||||
|
||||
<Preference
|
||||
android:title="@string/qhybrid_pref_title_actions"
|
||||
android:key="pref_key_qhybrid_commute_actions"
|
||||
android:icon="@drawable/ic_pending_actions"
|
||||
android:summary="@string/qhybrid_pref_summary_actions">
|
||||
<intent
|
||||
android:targetPackage="@string/applicationId"
|
||||
android:targetClass="nodomain.freeyourgadget.gadgetbridge.devices.qhybrid.CommuteActionsActivity" />
|
||||
</Preference>
|
||||
|
||||
</androidx.preference.PreferenceScreen>
|
||||
Reference in New Issue
Block a user