1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-11-27 12:26:48 +01:00

Pebble: allow reinstallation of apps in pbw-cache from App Manager (long press menu)

See #93
Also bump version, update CHANGELOG.md
This commit is contained in:
Andreas Shimokawa 2016-01-02 12:24:23 +01:00
parent 50cd5b2629
commit d7f74851e2
7 changed files with 34 additions and 11 deletions

View File

@ -1,6 +1,7 @@
###Changelog ###Changelog
####Next Version ####Version 0.7.1
* Pebble: allow reinstallation of apps in pbw-cache from App Manager (long press menu)
* Pebble: Fix regression which freezes Gadgetbridge when disconnecting via long-press menu * Pebble: Fix regression which freezes Gadgetbridge when disconnecting via long-press menu
####Version 0.7.0 ####Version 0.7.0

View File

@ -14,8 +14,8 @@ android {
targetSdkVersion 23 targetSdkVersion 23
// note: always bump BOTH versionCode and versionName! // note: always bump BOTH versionCode and versionName!
versionName "0.7.0" versionName "0.7.1"
versionCode 36 versionCode 37
} }
buildTypes { buildTypes {
release { release {

View File

@ -6,6 +6,7 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import android.support.v4.app.NavUtils; import android.support.v4.app.NavUtils;
@ -150,10 +151,13 @@ public class AppManagerActivity extends Activity {
@Override @Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo); super.onCreateContextMenu(menu, v, menuInfo);
getMenuInflater().inflate( getMenuInflater().inflate(R.menu.appmanager_context, menu);
R.menu.appmanager_context, menu);
AdapterView.AdapterContextMenuInfo acmi = (AdapterView.AdapterContextMenuInfo) menuInfo; AdapterView.AdapterContextMenuInfo acmi = (AdapterView.AdapterContextMenuInfo) menuInfo;
selectedApp = appList.get(acmi.position); selectedApp = appList.get(acmi.position);
if (!selectedApp.isInCache()) {
menu.removeItem(R.id.appmanager_app_reinstall);
}
menu.setHeaderTitle(selectedApp.getName()); menu.setHeaderTitle(selectedApp.getName());
} }
@ -161,9 +165,17 @@ public class AppManagerActivity extends Activity {
public boolean onContextItemSelected(MenuItem item) { public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) { switch (item.getItemId()) {
case R.id.appmanager_app_delete: case R.id.appmanager_app_delete:
if (selectedApp != null) {
GBApplication.deviceService().onAppDelete(selectedApp.getUUID()); GBApplication.deviceService().onAppDelete(selectedApp.getUUID());
return true;
case R.id.appmanager_app_reinstall:
File cachePath;
try {
cachePath = new File(FileUtils.getExternalFilesDir().getPath() + "/pbw-cache/" + selectedApp.getUUID() + ".pbw");
} catch (IOException e) {
LOG.warn("could not get external dir while reading pbw cache.");
return true;
} }
GBApplication.deviceService().onInstallApp(Uri.fromFile(cachePath));
return true; return true;
default: default:
return super.onContextItemSelected(item); return super.onContextItemSelected(item);

View File

@ -2,7 +2,6 @@ package nodomain.freeyourgadget.gadgetbridge.activities;
import android.app.Activity; import android.app.Activity;
import android.app.ProgressDialog; import android.app.ProgressDialog;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothDevice;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
@ -35,9 +34,7 @@ import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.activities.charts.ChartsActivity; import nodomain.freeyourgadget.gadgetbridge.activities.charts.ChartsActivity;
import nodomain.freeyourgadget.gadgetbridge.adapter.GBDeviceAdapter; import nodomain.freeyourgadget.gadgetbridge.adapter.GBDeviceAdapter;
import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
import nodomain.freeyourgadget.gadgetbridge.util.DeviceHelper; import nodomain.freeyourgadget.gadgetbridge.util.DeviceHelper;
import nodomain.freeyourgadget.gadgetbridge.util.GB; import nodomain.freeyourgadget.gadgetbridge.util.GB;

View File

@ -11,6 +11,7 @@ public class GBDeviceApp {
private final String version; private final String version;
private final UUID uuid; private final UUID uuid;
private final Type type; private final Type type;
private final boolean inCache;
public GBDeviceApp(UUID uuid, String name, String creator, String version, Type type) { public GBDeviceApp(UUID uuid, String name, String creator, String version, Type type) {
this.uuid = uuid; this.uuid = uuid;
@ -18,6 +19,8 @@ public class GBDeviceApp {
this.creator = creator; this.creator = creator;
this.version = version; this.version = version;
this.type = type; this.type = type;
//FIXME: do not assume
this.inCache = false;
} }
public GBDeviceApp(JSONObject json) { public GBDeviceApp(JSONObject json) {
@ -42,6 +45,12 @@ public class GBDeviceApp {
this.creator = creator; this.creator = creator;
this.version = version; this.version = version;
this.type = type; this.type = type;
//FIXME: do not assume
this.inCache = true;
}
public boolean isInCache() {
return inCache;
} }
public String getName() { public String getName() {

View File

@ -1,5 +1,8 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/appmanager_app_reinstall"
android:title="@string/appmananger_app_reinstall"/>
<item <item
android:id="@+id/appmanager_app_delete" android:id="@+id/appmanager_app_delete"
android:title="@string/appmananger_app_delete"/> android:title="@string/appmananger_app_delete"/>

View File

@ -216,4 +216,5 @@
<string name="fwinstaller_firmware_not_compatible_to_device">This firmware is not compatible with the device</string> <string name="fwinstaller_firmware_not_compatible_to_device">This firmware is not compatible with the device</string>
<string name="miband_prefs_reserve_alarm_calendar">Alarms to reserve for upcoming events</string> <string name="miband_prefs_reserve_alarm_calendar">Alarms to reserve for upcoming events</string>
<string name="waiting_for_reconnect">waiting for reconnect</string> <string name="waiting_for_reconnect">waiting for reconnect</string>
<string name="appmananger_app_reinstall">Reinstall</string>
</resources> </resources>