diff --git a/F-Droid/res/drawable-hdpi/circle.png b/F-Droid/res/drawable-hdpi/circle.png new file mode 100644 index 000000000..2cad3645b Binary files /dev/null and b/F-Droid/res/drawable-hdpi/circle.png differ diff --git a/F-Droid/res/drawable-ldpi/circle.png b/F-Droid/res/drawable-ldpi/circle.png new file mode 100644 index 000000000..ff147a8b8 Binary files /dev/null and b/F-Droid/res/drawable-ldpi/circle.png differ diff --git a/F-Droid/res/drawable-mdpi/circle.png b/F-Droid/res/drawable-mdpi/circle.png new file mode 100644 index 000000000..30d6fa9d5 Binary files /dev/null and b/F-Droid/res/drawable-mdpi/circle.png differ diff --git a/F-Droid/res/drawable-xhdpi/circle.png b/F-Droid/res/drawable-xhdpi/circle.png new file mode 100644 index 000000000..bdb13ba71 Binary files /dev/null and b/F-Droid/res/drawable-xhdpi/circle.png differ diff --git a/F-Droid/res/drawable-xxhdpi/circle.png b/F-Droid/res/drawable-xxhdpi/circle.png new file mode 100644 index 000000000..ecf3ed94f Binary files /dev/null and b/F-Droid/res/drawable-xxhdpi/circle.png differ diff --git a/F-Droid/res/drawable-xxxhdpi/circle.png b/F-Droid/res/drawable-xxxhdpi/circle.png new file mode 100644 index 000000000..11a766be0 Binary files /dev/null and b/F-Droid/res/drawable-xxxhdpi/circle.png differ diff --git a/F-Droid/res/drawable/circle.png b/F-Droid/res/drawable/circle.png new file mode 100644 index 000000000..211bb48b8 Binary files /dev/null and b/F-Droid/res/drawable/circle.png differ diff --git a/F-Droid/res/layout/swap_peer_list_item.xml b/F-Droid/res/layout/swap_peer_list_item.xml new file mode 100644 index 000000000..c47aaf3a6 --- /dev/null +++ b/F-Droid/res/layout/swap_peer_list_item.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/F-Droid/res/values/colors.xml b/F-Droid/res/values/colors.xml index 5bc4e07e5..762421be7 100644 --- a/F-Droid/res/values/colors.xml +++ b/F-Droid/res/values/colors.xml @@ -21,5 +21,6 @@ #00b9e6 #bbbbbb #4a4a4a + #bbbbbb \ No newline at end of file diff --git a/F-Droid/src/org/fdroid/fdroid/UpdateService.java b/F-Droid/src/org/fdroid/fdroid/UpdateService.java index fcd910327..5d5f44596 100644 --- a/F-Droid/src/org/fdroid/fdroid/UpdateService.java +++ b/F-Droid/src/org/fdroid/fdroid/UpdateService.java @@ -153,9 +153,11 @@ public class UpdateService extends IntentService implements ProgressListener { } public void hideDialog() { - dialog.hide(); - dialog.dismiss(); - dialog = null; + if (dialog != null) { + dialog.hide(); + dialog.dismiss(); + dialog = null; + } } @Override @@ -220,9 +222,15 @@ public class UpdateService extends IntentService implements ProgressListener { } public static UpdateReceiver updateRepoNow(String address, Context context) { + return updateRepoNow(address, context, true); + } + + public static UpdateReceiver updateRepoNow(String address, Context context, boolean showDialog) { Intent intent = new Intent(context, UpdateService.class); UpdateReceiver receiver = new UpdateReceiver(new Handler()); - receiver.showDialog(context); + if (showDialog) { + receiver.showDialog(context); + } intent.putExtra(EXTRA_RECEIVER, receiver); if (!TextUtils.isEmpty(address)) { intent.putExtra(EXTRA_ADDRESS, address); diff --git a/F-Droid/src/org/fdroid/fdroid/localrepo/SwapManager.java b/F-Droid/src/org/fdroid/fdroid/localrepo/SwapManager.java index 7f81042fa..9b8a70a15 100644 --- a/F-Droid/src/org/fdroid/fdroid/localrepo/SwapManager.java +++ b/F-Droid/src/org/fdroid/fdroid/localrepo/SwapManager.java @@ -148,7 +148,7 @@ public class SwapManager { Log.e(TAG, "Oops, got a different peer to swap with than initially planned."); } - return UpdateService.updateRepoNow(peer.getRepoAddress(), context); + return UpdateService.updateRepoNow(peer.getRepoAddress(), context, false); } /** diff --git a/F-Droid/src/org/fdroid/fdroid/localrepo/peers/BluetoothPeer.java b/F-Droid/src/org/fdroid/fdroid/localrepo/peers/BluetoothPeer.java index e2d7def0f..096e81b62 100644 --- a/F-Droid/src/org/fdroid/fdroid/localrepo/peers/BluetoothPeer.java +++ b/F-Droid/src/org/fdroid/fdroid/localrepo/peers/BluetoothPeer.java @@ -3,6 +3,8 @@ package org.fdroid.fdroid.localrepo.peers; import android.bluetooth.BluetoothDevice; import android.os.Parcel; +import org.fdroid.fdroid.R; + // TODO: Still to be implemented. public class BluetoothPeer implements Peer { @@ -19,12 +21,12 @@ public class BluetoothPeer implements Peer { @Override public String getName() { - return "Bluetooth: " + device.getName(); + return device.getName(); } @Override public int getIcon() { - return android.R.drawable.stat_sys_data_bluetooth; + return R.drawable.ic_bluetooth_white; } @Override diff --git a/F-Droid/src/org/fdroid/fdroid/localrepo/peers/BonjourFinder.java b/F-Droid/src/org/fdroid/fdroid/localrepo/peers/BonjourFinder.java index bb0e50770..cfffddc11 100644 --- a/F-Droid/src/org/fdroid/fdroid/localrepo/peers/BonjourFinder.java +++ b/F-Droid/src/org/fdroid/fdroid/localrepo/peers/BonjourFinder.java @@ -5,6 +5,10 @@ import android.net.wifi.WifiManager; import android.os.AsyncTask; import android.util.Log; +import org.fdroid.fdroid.FDroidApp; +import org.fdroid.fdroid.Utils; +import org.fdroid.fdroid.localrepo.LocalRepoKeyStore; + import java.io.IOException; import java.net.InetAddress; @@ -106,9 +110,18 @@ public class BonjourFinder extends PeerFinder implements ServiceLis addFDroidService(event); } + /** + * Broadcasts the fact that a Bonjour peer was found to swap with. + * Checks that the service is an F-Droid service, and also that it is not the F-Droid service + * for this device (by comparing its signing fingerprint to our signing fingerprint). + */ private void addFDroidService(ServiceEvent event) { final ServiceInfo serviceInfo = event.getInfo(); - if (serviceInfo.getPropertyString("type").startsWith("fdroidrepo")) { + final String type = serviceInfo.getPropertyString("type"); + final String fingerprint = serviceInfo.getPropertyString("fingerprint"); + final boolean isFDroid = type != null && type.startsWith("fdroidrepo"); + final boolean isSelf = FDroidApp.repo != null && fingerprint != null && fingerprint.equalsIgnoreCase(FDroidApp.repo.fingerprint); + if (isFDroid && !isSelf) { foundPeer(new BonjourPeer(serviceInfo)); } } diff --git a/F-Droid/src/org/fdroid/fdroid/localrepo/peers/BonjourPeer.java b/F-Droid/src/org/fdroid/fdroid/localrepo/peers/BonjourPeer.java index fabb89d66..8f0e5b91c 100644 --- a/F-Droid/src/org/fdroid/fdroid/localrepo/peers/BonjourPeer.java +++ b/F-Droid/src/org/fdroid/fdroid/localrepo/peers/BonjourPeer.java @@ -21,12 +21,12 @@ public class BonjourPeer implements Peer { @Override public String getName() { - return "Bonjour: " + serviceInfo.getName(); + return serviceInfo.getName(); } @Override public int getIcon() { - return R.drawable.wifi; + return R.drawable.ic_network_wifi_white; } @Override diff --git a/F-Droid/src/org/fdroid/fdroid/views/swap/StartSwapView.java b/F-Droid/src/org/fdroid/fdroid/views/swap/StartSwapView.java index a232325cb..7a46c40a8 100644 --- a/F-Droid/src/org/fdroid/fdroid/views/swap/StartSwapView.java +++ b/F-Droid/src/org/fdroid/fdroid/views/swap/StartSwapView.java @@ -6,6 +6,8 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffColorFilter; import android.os.Build; import android.support.annotation.ColorRes; import android.support.annotation.NonNull; @@ -22,6 +24,7 @@ import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.CompoundButton; +import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.ProgressBar; @@ -72,11 +75,12 @@ public class StartSwapView extends LinearLayout implements SwapWorkflowActivity. @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { - convertView = LayoutInflater.from(getContext()).inflate(android.R.layout.two_line_list_item, parent, false); + convertView = LayoutInflater.from(getContext()).inflate(R.layout.swap_peer_list_item, parent, false); } Peer peer = getItem(position); - ((TextView)convertView.findViewById(android.R.id.text1)).setText(peer.getName()); + ((TextView)convertView.findViewById(R.id.peer_name)).setText(peer.getName()); + ((ImageView)convertView.findViewById(R.id.icon)).setImageDrawable(getResources().getDrawable(peer.getIcon())); return convertView; }