diff --git a/res/values/strings.xml b/res/values/strings.xml
index c02cf391e..5b21f4912 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -37,6 +37,8 @@
Broadcast Local Repo
Advertise your local repo using Bonjour (mDNS)
Do not advertise your local repo.
+ Name of your Local Repo
+ The advertised title of your local repo: %s
Search Results
App Details
diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml
index aca5061f6..fce6f7cb3 100644
--- a/res/xml/preferences.xml
+++ b/res/xml/preferences.xml
@@ -48,6 +48,9 @@
android:defaultValue="true"
android:key="localRepoBonjour"
android:title="@string/local_repo_bonjour" />
+
filterAppsRequiringRootListeners = new ArrayList();
private List updateHistoryListeners = new ArrayList();
private List localRepoBonjourListeners = new ArrayList();
+ private List localRepoNameListeners = new ArrayList();
private boolean isInitialized(String key) {
return initialized.containsKey(key) && initialized.get(key);
@@ -81,6 +89,15 @@ public class Preferences implements SharedPreferences.OnSharedPreferenceChangeLi
return preferences.getBoolean(PREF_LOCAL_REPO_BONJOUR, DEFAULT_LOCAL_REPO_BONJOUR);
}
+ private String getDefaultLocalRepoName() {
+ return (Build.BRAND + " " + Build.MODEL + String.valueOf(new Random().nextInt(9999)))
+ .replaceAll(" ", "-");
+ }
+
+ public String getLocalRepoName() {
+ return preferences.getString(PREF_LOCAL_REPO_NAME, getDefaultLocalRepoName());
+ }
+
public boolean hasCompactLayout() {
if (!isInitialized(PREF_COMPACT_LAYOUT)) {
initialize(PREF_COMPACT_LAYOUT);
@@ -157,6 +174,10 @@ public class Preferences implements SharedPreferences.OnSharedPreferenceChangeLi
for ( ChangeListener listener : localRepoBonjourListeners ) {
listener.onPreferenceChange();
}
+ } else if (key.equals(PREF_LOCAL_REPO_NAME)) {
+ for ( ChangeListener listener : localRepoNameListeners ) {
+ listener.onPreferenceChange();
+ }
}
}
@@ -176,6 +197,14 @@ public class Preferences implements SharedPreferences.OnSharedPreferenceChangeLi
localRepoBonjourListeners.remove(listener);
}
+ public void registerLocalRepoNameListeners(ChangeListener listener) {
+ localRepoNameListeners.add(listener);
+ }
+
+ public void unregisterLocalRepoNameListeners(ChangeListener listener) {
+ localRepoNameListeners.remove(listener);
+ }
+
public static interface ChangeListener {
public void onPreferenceChange();
}
diff --git a/src/org/fdroid/fdroid/PreferencesActivity.java b/src/org/fdroid/fdroid/PreferencesActivity.java
index 2d7d40191..15e532e4a 100644
--- a/src/org/fdroid/fdroid/PreferencesActivity.java
+++ b/src/org/fdroid/fdroid/PreferencesActivity.java
@@ -55,6 +55,7 @@ public class PreferencesActivity extends PreferenceActivity implements
Preferences.PREF_COMPACT_LAYOUT,
Preferences.PREF_IGN_TOUCH,
Preferences.PREF_LOCAL_REPO_BONJOUR,
+ Preferences.PREF_LOCAL_REPO_NAME,
Preferences.PREF_CACHE_APK,
Preferences.PREF_EXPERT,
Preferences.PREF_ROOT_INSTALLER,
@@ -88,10 +89,9 @@ public class PreferencesActivity extends PreferenceActivity implements
pref.setSummary(pref.getEntry());
}
- protected void textSummary(String key) {
+ protected void textSummary(String key, int resId) {
EditTextPreference pref = (EditTextPreference)findPreference(key);
- pref.setSummary(getString(R.string.update_history_summ,
- pref.getText()));
+ pref.setSummary(getString(resId, pref.getText()));
}
protected void updateSummary(String key, boolean changing) {
@@ -118,7 +118,7 @@ public class PreferencesActivity extends PreferenceActivity implements
R.string.notify_off);
} else if (key.equals(Preferences.PREF_UPD_HISTORY)) {
- textSummary(key);
+ textSummary(key, R.string.update_history_summ);
} else if (key.equals(Preferences.PREF_PERMISSIONS)) {
onoffSummary(key, R.string.showPermissions_on,
@@ -151,6 +151,9 @@ public class PreferencesActivity extends PreferenceActivity implements
onoffSummary(key, R.string.local_repo_bonjour_on,
R.string.local_repo_bonjour_off);
+ } else if (key.equals(Preferences.PREF_LOCAL_REPO_NAME)) {
+ textSummary(key, R.string.local_repo_name_summary);
+
} else if (key.equals(Preferences.PREF_CACHE_APK)) {
onoffSummary(key, R.string.cache_downloaded_on,
R.string.cache_downloaded_off);
diff --git a/src/org/fdroid/fdroid/Utils.java b/src/org/fdroid/fdroid/Utils.java
index 9b1f29ee3..cd1322f10 100644
--- a/src/org/fdroid/fdroid/Utils.java
+++ b/src/org/fdroid/fdroid/Utils.java
@@ -23,7 +23,6 @@ import android.content.pm.PackageManager.NameNotFoundException;
import android.content.res.AssetManager;
import android.content.res.XmlResourceParser;
import android.net.Uri;
-import android.os.Build;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.util.Log;
@@ -453,8 +452,4 @@ public final class Utils {
return String.format("%0" + (bytes.length << 1) + "X", bi);
}
- public static String getDefaultRepoName() {
- return (Build.BRAND + " " + Build.MODEL).replaceAll(" ", "-");
- }
-
}
diff --git a/src/org/fdroid/fdroid/localrepo/LocalRepoManager.java b/src/org/fdroid/fdroid/localrepo/LocalRepoManager.java
index a1d05ba7f..21108edd1 100644
--- a/src/org/fdroid/fdroid/localrepo/LocalRepoManager.java
+++ b/src/org/fdroid/fdroid/localrepo/LocalRepoManager.java
@@ -16,6 +16,7 @@ import android.preference.PreferenceManager;
import android.text.TextUtils;
import android.util.Log;
+import org.fdroid.fdroid.Preferences;
import org.fdroid.fdroid.Utils;
import org.fdroid.fdroid.data.Apk;
import org.fdroid.fdroid.data.App;
@@ -271,7 +272,7 @@ public class LocalRepoManager {
int repoMaxAge = Float.valueOf(prefs.getString("max_repo_age_days",
DEFAULT_REPO_MAX_AGE_DAYS)).intValue();
- String repoName = prefs.getString("repo_name", Utils.getDefaultRepoName());
+ String repoName = Preferences.get().getLocalRepoName();
Element repo = doc.createElement("repo");
repo.setAttribute("icon", "blah.png");
diff --git a/src/org/fdroid/fdroid/localrepo/LocalRepoService.java b/src/org/fdroid/fdroid/localrepo/LocalRepoService.java
index 18571c401..690105fdc 100644
--- a/src/org/fdroid/fdroid/localrepo/LocalRepoService.java
+++ b/src/org/fdroid/fdroid/localrepo/LocalRepoService.java
@@ -196,14 +196,15 @@ public class LocalRepoService extends Service {
}
private void registerMDNSService() {
+ String repoName = Preferences.get().getLocalRepoName();
final HashMap values = new HashMap();
values.put("path", "/fdroid/repo");
- values.put("name", FDroidApp.repo.name);
+ values.put("name", repoName);
// TODO set type based on "use HTTPS" pref
// values.put("fingerprint", FDroidApp.repo.fingerprint);
values.put("type", "fdroidrepo");
pairService = ServiceInfo.create("_http._tcp.local.",
- FDroidApp.repo.name, FDroidApp.port, 0, 0, values);
+ repoName, FDroidApp.port, 0, 0, values);
new Thread(new Runnable() {
@Override
diff --git a/src/org/fdroid/fdroid/net/WifiStateChangeService.java b/src/org/fdroid/fdroid/net/WifiStateChangeService.java
index 38d05740c..78b35abe6 100644
--- a/src/org/fdroid/fdroid/net/WifiStateChangeService.java
+++ b/src/org/fdroid/fdroid/net/WifiStateChangeService.java
@@ -14,6 +14,7 @@ import android.support.v4.content.LocalBroadcastManager;
import android.util.Log;
import org.fdroid.fdroid.FDroidApp;
+import org.fdroid.fdroid.Preferences;
import org.fdroid.fdroid.Utils;
import java.util.Locale;
@@ -57,11 +58,13 @@ public class WifiStateChangeService extends Service {
FDroidApp.bssid = wifiInfo.getBSSID();
String scheme;
+ // TODO move this to Preferences.get().isHttpsEnabled();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(WifiStateChangeService.this);
if (prefs.getBoolean("use_https", false))
scheme = "https";
else
scheme = "http";
+ FDroidApp.repo.name = Preferences.get().getLocalRepoName();
FDroidApp.repo.address = String.format(Locale.ENGLISH, "%s://%s:%d/fdroid/repo",
scheme, FDroidApp.ipAddressString, FDroidApp.port);
FDroidApp.localRepo.setUriString(FDroidApp.repo.address);