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;
}