Use string switches from Java 1.7

Advantages:
 * Greatly simplifies code
 * No variable name duplication
 * Potentially more efficient bytecode
This commit is contained in:
Daniel Martí 2015-04-01 13:09:02 +02:00
parent 3eddb1402c
commit b0e4f59f43
16 changed files with 607 additions and 447 deletions

View File

@ -1089,20 +1089,24 @@ public class AppDetails extends ActionBarActivity implements ProgressListener, A
} }
boolean finished = false; boolean finished = false;
if (event.type.equals(Downloader.EVENT_PROGRESS)) { switch (event.type) {
updateProgressDialog(event.progress, event.total); case Downloader.EVENT_PROGRESS:
} else if (event.type.equals(ApkDownloader.EVENT_ERROR)) { updateProgressDialog(event.progress, event.total);
final String text; break;
if (event.getData().getInt(ApkDownloader.EVENT_DATA_ERROR_TYPE) == ApkDownloader.ERROR_HASH_MISMATCH) case ApkDownloader.EVENT_ERROR:
text = getString(R.string.corrupt_download); final String text;
else if (event.getData().getInt(ApkDownloader.EVENT_DATA_ERROR_TYPE) == ApkDownloader.ERROR_HASH_MISMATCH)
text = getString(R.string.details_notinstalled); text = getString(R.string.corrupt_download);
// this must be on the main UI thread else
Toast.makeText(this, text, Toast.LENGTH_LONG).show(); text = getString(R.string.details_notinstalled);
finished = true; // this must be on the main UI thread
} else if (event.type.equals(ApkDownloader.EVENT_APK_DOWNLOAD_COMPLETE)) { Toast.makeText(this, text, Toast.LENGTH_LONG).show();
downloadCompleteInstallApk(); finished = true;
finished = true; break;
case ApkDownloader.EVENT_APK_DOWNLOAD_COMPLETE:
downloadCompleteInstallApk();
finished = true;
break;
} }
if (finished) { if (finished) {
@ -1276,18 +1280,20 @@ public class AppDetails extends ActionBarActivity implements ProgressListener, A
} }
private String descAntiFeature(String af) { private String descAntiFeature(String af) {
if (af.equals("Ads")) switch (af) {
return getString(R.string.antiadslist); case "Ads":
if (af.equals("Tracking")) return getString(R.string.antiadslist);
return getString(R.string.antitracklist); case "Tracking":
if (af.equals("NonFreeNet")) return getString(R.string.antitracklist);
return getString(R.string.antinonfreenetlist); case "NonFreeNet":
if (af.equals("NonFreeAdd")) return getString(R.string.antinonfreenetlist);
return getString(R.string.antinonfreeadlist); case "NonFreeAdd":
if (af.equals("NonFreeDep")) return getString(R.string.antinonfreeadlist);
return getString(R.string.antinonfreedeplist); case "NonFreeDep":
if (af.equals("UpstreamNonFree")) return getString(R.string.antinonfreedeplist);
return getString(R.string.antiupstreamnonfreelist); case "UpstreamNonFree":
return getString(R.string.antiupstreamnonfreelist);
}
return null; return null;
} }

View File

@ -226,30 +226,37 @@ public class Preferences implements SharedPreferences.OnSharedPreferenceChangeLi
Log.d(TAG, "Invalidating preference '" + key + "'."); Log.d(TAG, "Invalidating preference '" + key + "'.");
uninitialize(key); uninitialize(key);
if (key.equals(PREF_COMPACT_LAYOUT)) { switch (key) {
for (ChangeListener listener : compactLayoutListeners) { case PREF_COMPACT_LAYOUT:
listener.onPreferenceChange(); for (ChangeListener listener : compactLayoutListeners) {
} listener.onPreferenceChange();
} else if (key.equals(PREF_ROOTED)) { }
for (ChangeListener listener : filterAppsRequiringRootListeners) { break;
listener.onPreferenceChange(); case PREF_ROOTED:
} for (ChangeListener listener : filterAppsRequiringRootListeners) {
} else if (key.equals(PREF_UPD_HISTORY)) { listener.onPreferenceChange();
for (ChangeListener listener : updateHistoryListeners) { }
listener.onPreferenceChange(); break;
} case PREF_UPD_HISTORY:
} else if (key.equals(PREF_LOCAL_REPO_BONJOUR)) { for (ChangeListener listener : updateHistoryListeners) {
for (ChangeListener listener : localRepoBonjourListeners) { listener.onPreferenceChange();
listener.onPreferenceChange(); }
} break;
} else if (key.equals(PREF_LOCAL_REPO_NAME)) { case PREF_LOCAL_REPO_BONJOUR:
for (ChangeListener listener : localRepoNameListeners) { for (ChangeListener listener : localRepoBonjourListeners) {
listener.onPreferenceChange(); listener.onPreferenceChange();
} }
} else if (key.equals(PREF_LOCAL_REPO_HTTPS)) { break;
for (ChangeListener listener : localRepoHttpsListeners) { case PREF_LOCAL_REPO_NAME:
listener.onPreferenceChange(); for (ChangeListener listener : localRepoNameListeners) {
} listener.onPreferenceChange();
}
break;
case PREF_LOCAL_REPO_HTTPS:
for (ChangeListener listener : localRepoHttpsListeners) {
listener.onPreferenceChange();
}
break;
} }
} }

View File

@ -124,123 +124,159 @@ public class RepoXMLHandler extends DefaultHandler {
apksList.add(curapk); apksList.add(curapk);
curapk = null; curapk = null;
} else if (curapk != null && str != null) { } else if (curapk != null && str != null) {
if (curel.equals("version")) { switch (curel) {
curapk.version = str; case "version":
} else if (curel.equals("versioncode")) { curapk.version = str;
try { break;
curapk.vercode = Integer.parseInt(str); case "versioncode":
} catch (NumberFormatException ex) { try {
curapk.vercode = -1; curapk.vercode = Integer.parseInt(str);
} } catch (NumberFormatException ex) {
} else if (curel.equals("size")) { curapk.vercode = -1;
try {
curapk.size = Integer.parseInt(str);
} catch (NumberFormatException ex) {
curapk.size = 0;
}
} else if (curel.equals("hash")) {
if (hashType == null || hashType.equals("md5")) {
if (curapk.hash == null) {
curapk.hash = str;
curapk.hashType = "MD5";
} }
} else if (hashType.equals("sha256")) { break;
curapk.hash = str; case "size":
curapk.hashType = "SHA-256"; try {
} curapk.size = Integer.parseInt(str);
} else if (curel.equals("sig")) { } catch (NumberFormatException ex) {
curapk.sig = str; curapk.size = 0;
} else if (curel.equals("srcname")) { }
curapk.srcname = str; break;
} else if (curel.equals("apkname")) { case "hash":
curapk.apkName = str; if (hashType == null || hashType.equals("md5")) {
} else if (curel.equals("sdkver")) { if (curapk.hash == null) {
try { curapk.hash = str;
curapk.minSdkVersion = Integer.parseInt(str); curapk.hashType = "MD5";
} catch (NumberFormatException ex) { }
curapk.minSdkVersion = 0; } else if (hashType.equals("sha256")) {
} curapk.hash = str;
} else if (curel.equals("maxsdkver")) { curapk.hashType = "SHA-256";
try { }
curapk.maxSdkVersion = Integer.parseInt(str); break;
} catch (NumberFormatException ex) { case "sig":
curapk.maxSdkVersion = 0; curapk.sig = str;
} break;
} else if (curel.equals("added")) { case "srcname":
try { curapk.srcname = str;
curapk.added = str.length() == 0 ? null : Utils.DATE_FORMAT break;
.parse(str); case "apkname":
} catch (ParseException e) { curapk.apkName = str;
curapk.added = null; break;
} case "sdkver":
} else if (curel.equals("permissions")) { try {
curapk.permissions = Utils.CommaSeparatedList.make(str); curapk.minSdkVersion = Integer.parseInt(str);
} else if (curel.equals("features")) { } catch (NumberFormatException ex) {
curapk.features = Utils.CommaSeparatedList.make(str); curapk.minSdkVersion = 0;
} else if (curel.equals("nativecode")) { }
curapk.nativecode = Utils.CommaSeparatedList.make(str); break;
case "maxsdkver":
try {
curapk.maxSdkVersion = Integer.parseInt(str);
} catch (NumberFormatException ex) {
curapk.maxSdkVersion = 0;
}
break;
case "added":
try {
curapk.added = str.length() == 0 ? null : Utils.DATE_FORMAT
.parse(str);
} catch (ParseException e) {
curapk.added = null;
}
break;
case "permissions":
curapk.permissions = Utils.CommaSeparatedList.make(str);
break;
case "features":
curapk.features = Utils.CommaSeparatedList.make(str);
break;
case "nativecode":
curapk.nativecode = Utils.CommaSeparatedList.make(str);
break;
} }
} else if (curapp != null && str != null) { } else if (curapp != null && str != null) {
if (curel.equals("name")) { switch (curel) {
curapp.name = str; case "name":
} else if (curel.equals("icon")) { curapp.name = str;
curapp.icon = str; break;
} else if (curel.equals("description")) { case "icon":
// This is the old-style description. We'll read it curapp.icon = str;
// if present, to support old repos, but in newer break;
// repos it will get overwritten straight away! case "description":
curapp.description = "<p>" + str + "</p>"; // This is the old-style description. We'll read it
} else if (curel.equals("desc")) { // if present, to support old repos, but in newer
// New-style description. // repos it will get overwritten straight away!
curapp.description = str; curapp.description = "<p>" + str + "</p>";
} else if (curel.equals("summary")) { break;
curapp.summary = str; case "desc":
} else if (curel.equals("license")) { // New-style description.
curapp.license = str; curapp.description = str;
} else if (curel.equals("source")) { break;
curapp.sourceURL = str; case "summary":
} else if (curel.equals("donate")) { curapp.summary = str;
curapp.donateURL = str; break;
} else if (curel.equals("bitcoin")) { case "license":
curapp.bitcoinAddr = str; curapp.license = str;
} else if (curel.equals("litecoin")) { break;
curapp.litecoinAddr = str; case "source":
} else if (curel.equals("dogecoin")) { curapp.sourceURL = str;
curapp.dogecoinAddr = str; break;
} else if (curel.equals("flattr")) { case "donate":
curapp.flattrID = str; curapp.donateURL = str;
} else if (curel.equals("web")) { break;
curapp.webURL = str; case "bitcoin":
} else if (curel.equals("tracker")) { curapp.bitcoinAddr = str;
curapp.trackerURL = str; break;
} else if (curel.equals("added")) { case "litecoin":
try { curapp.litecoinAddr = str;
curapp.added = str.length() == 0 ? null : Utils.DATE_FORMAT break;
.parse(str); case "dogecoin":
} catch (ParseException e) { curapp.dogecoinAddr = str;
curapp.added = null; break;
} case "flattr":
} else if (curel.equals("lastupdated")) { curapp.flattrID = str;
try { break;
curapp.lastUpdated = str.length() == 0 ? null case "web":
: Utils.DATE_FORMAT.parse(str); curapp.webURL = str;
} catch (ParseException e) { break;
curapp.lastUpdated = null; case "tracker":
} curapp.trackerURL = str;
} else if (curel.equals("marketversion")) { break;
curapp.upstreamVersion = str; case "added":
} else if (curel.equals("marketvercode")) { try {
try { curapp.added = str.length() == 0 ? null : Utils.DATE_FORMAT
curapp.upstreamVercode = Integer.parseInt(str); .parse(str);
} catch (NumberFormatException ex) { } catch (ParseException e) {
curapp.upstreamVercode = -1; curapp.added = null;
} }
} else if (curel.equals("categories")) { break;
curapp.categories = Utils.CommaSeparatedList.make(str); case "lastupdated":
} else if (curel.equals("antifeatures")) { try {
curapp.antiFeatures = Utils.CommaSeparatedList.make(str); curapp.lastUpdated = str.length() == 0 ? null
} else if (curel.equals("requirements")) { : Utils.DATE_FORMAT.parse(str);
curapp.requirements = Utils.CommaSeparatedList.make(str); } catch (ParseException e) {
curapp.lastUpdated = null;
}
break;
case "marketversion":
curapp.upstreamVersion = str;
break;
case "marketvercode":
try {
curapp.upstreamVercode = Integer.parseInt(str);
} catch (NumberFormatException ex) {
curapp.upstreamVercode = -1;
}
break;
case "categories":
curapp.categories = Utils.CommaSeparatedList.make(str);
break;
case "antifeatures":
curapp.antiFeatures = Utils.CommaSeparatedList.make(str);
break;
case "requirements":
curapp.requirements = Utils.CommaSeparatedList.make(str);
break;
} }
} else if (curel.equals("description")) { } else if (curel.equals("description")) {
description = cleanWhiteSpace(str); description = cleanWhiteSpace(str);

View File

@ -805,13 +805,16 @@ public class UpdateService extends IntentService implements ProgressListener {
// TODO: Switch to passing through Bundles of data with the event, rather than a repo address. They are // TODO: Switch to passing through Bundles of data with the event, rather than a repo address. They are
// now much more general purpose then just repo downloading. // now much more general purpose then just repo downloading.
String repoAddress = event.getData().getString(RepoUpdater.PROGRESS_DATA_REPO_ADDRESS); String repoAddress = event.getData().getString(RepoUpdater.PROGRESS_DATA_REPO_ADDRESS);
if (event.type.equals(Downloader.EVENT_PROGRESS)) { switch (event.type) {
String downloadedSize = Utils.getFriendlySize(event.progress); case Downloader.EVENT_PROGRESS:
String totalSize = Utils.getFriendlySize(event.total); String downloadedSize = Utils.getFriendlySize(event.progress);
int percent = (int)((double)event.progress/event.total * 100); String totalSize = Utils.getFriendlySize(event.total);
message = getString(R.string.status_download, repoAddress, downloadedSize, totalSize, percent); int percent = (int)((double)event.progress/event.total * 100);
} else if (event.type.equals(RepoUpdater.PROGRESS_TYPE_PROCESS_XML)) { message = getString(R.string.status_download, repoAddress, downloadedSize, totalSize, percent);
message = getString(R.string.status_processing_xml, repoAddress, event.progress, event.total); break;
case RepoUpdater.PROGRESS_TYPE_PROCESS_XML:
message = getString(R.string.status_processing_xml, repoAddress, event.progress, event.total);
break;
} }
sendStatus(STATUS_INFO, message); sendStatus(STATUS_INFO, message);
} }

View File

@ -477,27 +477,31 @@ public final class Utils {
@Override @Override
public void handleTag(boolean opening, String tag, Editable output, public void handleTag(boolean opening, String tag, Editable output,
XMLReader reader) { XMLReader reader) {
if (tag.equals("ul")) { switch (tag) {
if (opening) case "ul":
listNum = -1; if (opening)
else listNum = -1;
output.append('\n'); else
} else if (tag.equals("ol")) { output.append('\n');
if (opening) break;
listNum = 1; case "ol":
else if (opening)
output.append('\n'); listNum = 1;
} else if (tag.equals("li")) { else
if (opening) { output.append('\n');
if (listNum == -1) { break;
output.append("\t• "); case "li":
if (opening) {
if (listNum == -1) {
output.append("\t• ");
} else {
output.append("\t").append(Integer.toString(listNum)).append(". ");
listNum++;
}
} else { } else {
output.append("\t").append(Integer.toString(listNum)).append(". "); output.append('\n');
listNum++;
} }
} else { break;
output.append('\n');
}
} }
} }
} }

View File

@ -63,46 +63,67 @@ public class Apk extends ValueObject implements Comparable<Apk> {
for (int i = 0; i < cursor.getColumnCount(); i++) { for (int i = 0; i < cursor.getColumnCount(); i++) {
String column = cursor.getColumnName(i); String column = cursor.getColumnName(i);
if (column.equals(ApkProvider.DataColumns.HASH)) { switch (cursor.getColumnName(i)) {
hash = cursor.getString(i); case ApkProvider.DataColumns.HASH:
} else if (column.equals(ApkProvider.DataColumns.HASH_TYPE)) { hash = cursor.getString(i);
hashType = cursor.getString(i); break;
} else if (column.equals(ApkProvider.DataColumns.ADDED_DATE)) { case ApkProvider.DataColumns.HASH_TYPE:
added = ValueObject.toDate(cursor.getString(i)); hashType = cursor.getString(i);
} else if (column.equals(ApkProvider.DataColumns.FEATURES)) { break;
features = Utils.CommaSeparatedList.make(cursor.getString(i)); case ApkProvider.DataColumns.ADDED_DATE:
} else if (column.equals(ApkProvider.DataColumns.APK_ID)) { added = ValueObject.toDate(cursor.getString(i));
id = cursor.getString(i); break;
} else if (column.equals(ApkProvider.DataColumns.IS_COMPATIBLE)) { case ApkProvider.DataColumns.FEATURES:
compatible = cursor.getInt(i) == 1; features = Utils.CommaSeparatedList.make(cursor.getString(i));
} else if (column.equals(ApkProvider.DataColumns.MIN_SDK_VERSION)) { break;
minSdkVersion = cursor.getInt(i); case ApkProvider.DataColumns.APK_ID:
} else if (column.equals(ApkProvider.DataColumns.MAX_SDK_VERSION)) { id = cursor.getString(i);
maxSdkVersion = cursor.getInt(i); break;
} else if (column.equals(ApkProvider.DataColumns.NAME)) { case ApkProvider.DataColumns.IS_COMPATIBLE:
apkName = cursor.getString(i); compatible = cursor.getInt(i) == 1;
} else if (column.equals(ApkProvider.DataColumns.PERMISSIONS)) { break;
permissions = Utils.CommaSeparatedList.make(cursor.getString(i)); case ApkProvider.DataColumns.MIN_SDK_VERSION:
} else if (column.equals(ApkProvider.DataColumns.NATIVE_CODE)) { minSdkVersion = cursor.getInt(i);
nativecode = Utils.CommaSeparatedList.make(cursor.getString(i)); break;
} else if (column.equals(ApkProvider.DataColumns.INCOMPATIBLE_REASONS)) { case ApkProvider.DataColumns.MAX_SDK_VERSION:
incompatible_reasons = Utils.CommaSeparatedList.make(cursor.getString(i)); maxSdkVersion = cursor.getInt(i);
} else if (column.equals(ApkProvider.DataColumns.REPO_ID)) { break;
repo = cursor.getInt(i); case ApkProvider.DataColumns.NAME:
} else if (column.equals(ApkProvider.DataColumns.SIGNATURE)) { apkName = cursor.getString(i);
sig = cursor.getString(i); break;
} else if (column.equals(ApkProvider.DataColumns.SIZE)) { case ApkProvider.DataColumns.PERMISSIONS:
size = cursor.getInt(i); permissions = Utils.CommaSeparatedList.make(cursor.getString(i));
} else if (column.equals(ApkProvider.DataColumns.SOURCE_NAME)) { break;
srcname = cursor.getString(i); case ApkProvider.DataColumns.NATIVE_CODE:
} else if (column.equals(ApkProvider.DataColumns.VERSION)) { nativecode = Utils.CommaSeparatedList.make(cursor.getString(i));
version = cursor.getString(i); break;
} else if (column.equals(ApkProvider.DataColumns.VERSION_CODE)) { case ApkProvider.DataColumns.INCOMPATIBLE_REASONS:
vercode = cursor.getInt(i); incompatible_reasons = Utils.CommaSeparatedList.make(cursor.getString(i));
} else if (column.equals(ApkProvider.DataColumns.REPO_VERSION)) { break;
repoVersion = cursor.getInt(i); case ApkProvider.DataColumns.REPO_ID:
} else if (column.equals(ApkProvider.DataColumns.REPO_ADDRESS)) { repo = cursor.getInt(i);
repoAddress = cursor.getString(i); break;
case ApkProvider.DataColumns.SIGNATURE:
sig = cursor.getString(i);
break;
case ApkProvider.DataColumns.SIZE:
size = cursor.getInt(i);
break;
case ApkProvider.DataColumns.SOURCE_NAME:
srcname = cursor.getString(i);
break;
case ApkProvider.DataColumns.VERSION:
version = cursor.getString(i);
break;
case ApkProvider.DataColumns.VERSION_CODE:
vercode = cursor.getInt(i);
break;
case ApkProvider.DataColumns.REPO_VERSION:
repoVersion = cursor.getInt(i);
break;
case ApkProvider.DataColumns.REPO_ADDRESS:
repoAddress = cursor.getString(i);
break;
} }
} }
} }

View File

@ -112,65 +112,94 @@ public class App extends ValueObject implements Comparable<App> {
checkCursorPosition(cursor); checkCursorPosition(cursor);
for (int i = 0; i < cursor.getColumnCount(); i++) { for (int i = 0; i < cursor.getColumnCount(); i++) {
String column = cursor.getColumnName(i); switch (cursor.getColumnName(i)) {
if (column.equals(AppProvider.DataColumns.IS_COMPATIBLE)) { case AppProvider.DataColumns.IS_COMPATIBLE:
compatible = cursor.getInt(i) == 1; compatible = cursor.getInt(i) == 1;
} else if (column.equals(AppProvider.DataColumns.APP_ID)) { break;
id = cursor.getString(i); case AppProvider.DataColumns.APP_ID:
} else if (column.equals(AppProvider.DataColumns.NAME)) { id = cursor.getString(i);
name = cursor.getString(i); break;
} else if (column.equals(AppProvider.DataColumns.SUMMARY)) { case AppProvider.DataColumns.NAME:
summary = cursor.getString(i); name = cursor.getString(i);
} else if (column.equals(AppProvider.DataColumns.ICON)) { break;
icon = cursor.getString(i); case AppProvider.DataColumns.SUMMARY:
} else if (column.equals(AppProvider.DataColumns.DESCRIPTION)) { summary = cursor.getString(i);
description = cursor.getString(i); break;
} else if (column.equals(AppProvider.DataColumns.LICENSE)) { case AppProvider.DataColumns.ICON:
license = cursor.getString(i); icon = cursor.getString(i);
} else if (column.equals(AppProvider.DataColumns.WEB_URL)) { break;
webURL = cursor.getString(i); case AppProvider.DataColumns.DESCRIPTION:
} else if (column.equals(AppProvider.DataColumns.TRACKER_URL)) { description = cursor.getString(i);
trackerURL = cursor.getString(i); break;
} else if (column.equals(AppProvider.DataColumns.SOURCE_URL)) { case AppProvider.DataColumns.LICENSE:
sourceURL = cursor.getString(i); license = cursor.getString(i);
} else if (column.equals(AppProvider.DataColumns.DONATE_URL)) { break;
donateURL = cursor.getString(i); case AppProvider.DataColumns.WEB_URL:
} else if (column.equals(AppProvider.DataColumns.BITCOIN_ADDR)) { webURL = cursor.getString(i);
bitcoinAddr = cursor.getString(i); break;
} else if (column.equals(AppProvider.DataColumns.LITECOIN_ADDR)) { case AppProvider.DataColumns.TRACKER_URL:
litecoinAddr = cursor.getString(i); trackerURL = cursor.getString(i);
} else if (column.equals(AppProvider.DataColumns.DOGECOIN_ADDR)) { break;
dogecoinAddr = cursor.getString(i); case AppProvider.DataColumns.SOURCE_URL:
} else if (column.equals(AppProvider.DataColumns.FLATTR_ID)) { sourceURL = cursor.getString(i);
flattrID = cursor.getString(i); break;
} else if (column.equals(AppProvider.DataColumns.SuggestedApk.VERSION)) { case AppProvider.DataColumns.DONATE_URL:
suggestedVersion = cursor.getString(i); donateURL = cursor.getString(i);
} else if (column.equals(AppProvider.DataColumns.SUGGESTED_VERSION_CODE)) { break;
suggestedVercode = cursor.getInt(i); case AppProvider.DataColumns.BITCOIN_ADDR:
} else if (column.equals(AppProvider.DataColumns.UPSTREAM_VERSION_CODE)) { bitcoinAddr = cursor.getString(i);
upstreamVercode = cursor.getInt(i); break;
} else if (column.equals(AppProvider.DataColumns.UPSTREAM_VERSION)) { case AppProvider.DataColumns.LITECOIN_ADDR:
upstreamVersion = cursor.getString(i); litecoinAddr = cursor.getString(i);
} else if (column.equals(AppProvider.DataColumns.ADDED)) { break;
added = ValueObject.toDate(cursor.getString(i)); case AppProvider.DataColumns.DOGECOIN_ADDR:
} else if (column.equals(AppProvider.DataColumns.LAST_UPDATED)) { dogecoinAddr = cursor.getString(i);
lastUpdated = ValueObject.toDate(cursor.getString(i)); break;
} else if (column.equals(AppProvider.DataColumns.CATEGORIES)) { case AppProvider.DataColumns.FLATTR_ID:
categories = Utils.CommaSeparatedList.make(cursor.getString(i)); flattrID = cursor.getString(i);
} else if (column.equals(AppProvider.DataColumns.ANTI_FEATURES)) { break;
antiFeatures = Utils.CommaSeparatedList.make(cursor.getString(i)); case AppProvider.DataColumns.SuggestedApk.VERSION:
} else if (column.equals(AppProvider.DataColumns.REQUIREMENTS)) { suggestedVersion = cursor.getString(i);
requirements = Utils.CommaSeparatedList.make(cursor.getString(i)); break;
} else if (column.equals(AppProvider.DataColumns.IGNORE_ALLUPDATES)) { case AppProvider.DataColumns.SUGGESTED_VERSION_CODE:
ignoreAllUpdates = cursor.getInt(i) == 1; suggestedVercode = cursor.getInt(i);
} else if (column.equals(AppProvider.DataColumns.IGNORE_THISUPDATE)) { break;
ignoreThisUpdate = cursor.getInt(i); case AppProvider.DataColumns.UPSTREAM_VERSION_CODE:
} else if (column.equals(AppProvider.DataColumns.ICON_URL)) { upstreamVercode = cursor.getInt(i);
iconUrl = cursor.getString(i); break;
} else if (column.equals(AppProvider.DataColumns.InstalledApp.VERSION_CODE)) { case AppProvider.DataColumns.UPSTREAM_VERSION:
installedVersionCode = cursor.getInt(i); upstreamVersion = cursor.getString(i);
} else if (column.equals(AppProvider.DataColumns.InstalledApp.VERSION_NAME)) { break;
installedVersionName = cursor.getString(i); case AppProvider.DataColumns.ADDED:
added = ValueObject.toDate(cursor.getString(i));
break;
case AppProvider.DataColumns.LAST_UPDATED:
lastUpdated = ValueObject.toDate(cursor.getString(i));
break;
case AppProvider.DataColumns.CATEGORIES:
categories = Utils.CommaSeparatedList.make(cursor.getString(i));
break;
case AppProvider.DataColumns.ANTI_FEATURES:
antiFeatures = Utils.CommaSeparatedList.make(cursor.getString(i));
break;
case AppProvider.DataColumns.REQUIREMENTS:
requirements = Utils.CommaSeparatedList.make(cursor.getString(i));
break;
case AppProvider.DataColumns.IGNORE_ALLUPDATES:
ignoreAllUpdates = cursor.getInt(i) == 1;
break;
case AppProvider.DataColumns.IGNORE_THISUPDATE:
ignoreThisUpdate = cursor.getInt(i);
break;
case AppProvider.DataColumns.ICON_URL:
iconUrl = cursor.getString(i);
break;
case AppProvider.DataColumns.InstalledApp.VERSION_CODE:
installedVersionCode = cursor.getInt(i);
break;
case AppProvider.DataColumns.InstalledApp.VERSION_NAME:
installedVersionName = cursor.getString(i);
break;
} }
} }
} }

View File

@ -314,19 +314,25 @@ public class AppProvider extends FDroidProvider {
@Override @Override
public void addField(String field) { public void addField(String field) {
if (field.equals(DataColumns.SuggestedApk.VERSION)) { switch (field) {
addSuggestedApkVersionField(); case DataColumns.SuggestedApk.VERSION:
} else if (field.equals(DataColumns.InstalledApp.VERSION_NAME)) { addSuggestedApkVersionField();
addInstalledAppVersionName(); break;
} else if (field.equals(DataColumns.InstalledApp.VERSION_CODE)) { case DataColumns.InstalledApp.VERSION_NAME:
addInstalledAppVersionCode(); addInstalledAppVersionName();
} else if (field.equals(DataColumns._COUNT)) { break;
appendCountField(); case DataColumns.InstalledApp.VERSION_CODE:
} else { addInstalledAppVersionCode();
if (field.equals(DataColumns.CATEGORIES)) { break;
categoryFieldAdded = true; case DataColumns._COUNT:
} appendCountField();
appendField(field, "fdroid_app"); break;
default:
if (field.equals(DataColumns.CATEGORIES)) {
categoryFieldAdded = true;
}
appendField(field, "fdroid_app");
break;
} }
} }

View File

@ -41,33 +41,46 @@ public class Repo extends ValueObject {
checkCursorPosition(cursor); checkCursorPosition(cursor);
for (int i = 0; i < cursor.getColumnCount(); i++) { for (int i = 0; i < cursor.getColumnCount(); i++) {
String column = cursor.getColumnName(i); switch (cursor.getColumnName(i)) {
if (column.equals(RepoProvider.DataColumns._ID)) { case RepoProvider.DataColumns._ID:
id = cursor.getInt(i); id = cursor.getInt(i);
} else if (column.equals(RepoProvider.DataColumns.LAST_ETAG)) { break;
lastetag = cursor.getString(i); case RepoProvider.DataColumns.LAST_ETAG:
} else if (column.equals(RepoProvider.DataColumns.ADDRESS)) { lastetag = cursor.getString(i);
address = cursor.getString(i); break;
} else if (column.equals(RepoProvider.DataColumns.DESCRIPTION)) { case RepoProvider.DataColumns.ADDRESS:
description = cursor.getString(i); address = cursor.getString(i);
} else if (column.equals(RepoProvider.DataColumns.FINGERPRINT)) { break;
fingerprint = cursor.getString(i); case RepoProvider.DataColumns.DESCRIPTION:
} else if (column.equals(RepoProvider.DataColumns.IN_USE)) { description = cursor.getString(i);
inuse = cursor.getInt(i) == 1; break;
} else if (column.equals(RepoProvider.DataColumns.LAST_UPDATED)) { case RepoProvider.DataColumns.FINGERPRINT:
lastUpdated = toDate(cursor.getString(i)); fingerprint = cursor.getString(i);
} else if (column.equals(RepoProvider.DataColumns.MAX_AGE)) { break;
maxage = cursor.getInt(i); case RepoProvider.DataColumns.IN_USE:
} else if (column.equals(RepoProvider.DataColumns.VERSION)) { inuse = cursor.getInt(i) == 1;
version = cursor.getInt(i); break;
} else if (column.equals(RepoProvider.DataColumns.NAME)) { case RepoProvider.DataColumns.LAST_UPDATED:
name = cursor.getString(i); lastUpdated = toDate(cursor.getString(i));
} else if (column.equals(RepoProvider.DataColumns.PUBLIC_KEY)) { break;
pubkey = cursor.getString(i); case RepoProvider.DataColumns.MAX_AGE:
} else if (column.equals(RepoProvider.DataColumns.PRIORITY)) { maxage = cursor.getInt(i);
priority = cursor.getInt(i); break;
} else if (column.equals(RepoProvider.DataColumns.IS_SWAP)) { case RepoProvider.DataColumns.VERSION:
isSwap = cursor.getInt(i) == 1; version = cursor.getInt(i);
break;
case RepoProvider.DataColumns.NAME:
name = cursor.getString(i);
break;
case RepoProvider.DataColumns.PUBLIC_KEY:
pubkey = cursor.getString(i);
break;
case RepoProvider.DataColumns.PRIORITY:
priority = cursor.getInt(i);
break;
case RepoProvider.DataColumns.IS_SWAP:
isSwap = cursor.getInt(i) == 1;
break;
} }
} }
} }

View File

@ -200,11 +200,13 @@ public class ApkDownloader implements AsyncDownloadWrapper.Listener {
} }
private void sendProgressEvent(Event event) { private void sendProgressEvent(Event event) {
if (event.type.equals(Downloader.EVENT_PROGRESS)) { switch (event.type) {
// Keep a copy of these ourselves, so people can interrogate us for the case Downloader.EVENT_PROGRESS:
// info (in addition to receiving events with the info). // Keep a copy of these ourselves, so people can interrogate us for the
totalSize = event.total; // info (in addition to receiving events with the info).
progress = event.progress; totalSize = event.total;
progress = event.progress;
break;
} }
event.getData().putLong(EVENT_SOURCE_ID, id); event.getData().putLong(EVENT_SOURCE_ID, id);

View File

@ -212,15 +212,16 @@ public class ManageReposActivity extends ActionBarActivity {
new ProgressListener() { new ProgressListener() {
@Override @Override
public void onProgress(Event event) { public void onProgress(Event event) {
if (event.type.equals(UpdateService.EVENT_COMPLETE_AND_SAME) || switch (event.type) {
event.type.equals(UpdateService.EVENT_COMPLETE_WITH_CHANGES)) { case UpdateService.EVENT_COMPLETE_AND_SAME:
// No need to prompt to update any more, we just case UpdateService.EVENT_COMPLETE_WITH_CHANGES:
// did it! // No need to prompt to update any more, we just
changed = false; // did it!
} changed = false;
break;
if (event.type.equals(UpdateService.EVENT_FINISHED)) { case UpdateService.EVENT_FINISHED:
updateHandler = null; updateHandler = null;
break;
} }
} }
}); });

View File

@ -189,12 +189,11 @@ public class AvailableAppsFragment extends AppListFragment implements
protected Uri getDataUri() { protected Uri getDataUri() {
if (currentCategory == null || currentCategory.equals(AppProvider.Helper.getCategoryAll(getActivity()))) if (currentCategory == null || currentCategory.equals(AppProvider.Helper.getCategoryAll(getActivity())))
return AppProvider.getContentUri(); return AppProvider.getContentUri();
else if (currentCategory.equals(AppProvider.Helper.getCategoryRecentlyUpdated(getActivity()))) if (currentCategory.equals(AppProvider.Helper.getCategoryRecentlyUpdated(getActivity())))
return AppProvider.getRecentlyUpdatedUri(); return AppProvider.getRecentlyUpdatedUri();
else if (currentCategory.equals(AppProvider.Helper.getCategoryWhatsNew(getActivity()))) if (currentCategory.equals(AppProvider.Helper.getCategoryWhatsNew(getActivity())))
return AppProvider.getNewlyAddedUri(); return AppProvider.getNewlyAddedUri();
else return AppProvider.getCategoryUri(currentCategory);
return AppProvider.getCategoryUri(currentCategory);
} }
private void setCurrentCategory(String category) { private void setCurrentCategory(String category) {

View File

@ -67,90 +67,111 @@ public class PreferenceFragment
int result = 0; int result = 0;
if (key.equals(Preferences.PREF_UPD_INTERVAL)) { switch (key) {
ListPreference pref = (ListPreference)findPreference( case Preferences.PREF_UPD_INTERVAL:
Preferences.PREF_UPD_INTERVAL); ListPreference listPref = (ListPreference)findPreference(
int interval = Integer.parseInt(pref.getValue()); Preferences.PREF_UPD_INTERVAL);
Preference onlyOnWifi = findPreference( int interval = Integer.parseInt(listPref.getValue());
Preferences.PREF_UPD_WIFI_ONLY); Preference onlyOnWifi = findPreference(
onlyOnWifi.setEnabled(interval > 0); Preferences.PREF_UPD_WIFI_ONLY);
if (interval == 0) { onlyOnWifi.setEnabled(interval > 0);
pref.setSummary(R.string.update_interval_zero); if (interval == 0) {
} else { listPref.setSummary(R.string.update_interval_zero);
pref.setSummary(pref.getEntry()); } else {
} listPref.setSummary(listPref.getEntry());
}
break;
} else if (key.equals(Preferences.PREF_UPD_WIFI_ONLY)) { case Preferences.PREF_UPD_WIFI_ONLY:
checkSummary(key, R.string.automatic_scan_wifi_on); checkSummary(key, R.string.automatic_scan_wifi_on);
break;
} else if (key.equals(Preferences.PREF_UPD_NOTIFY)) { case Preferences.PREF_UPD_NOTIFY:
checkSummary(key, R.string.notify_on); checkSummary(key, R.string.notify_on);
break;
} else if (key.equals(Preferences.PREF_UPD_HISTORY)) { case Preferences.PREF_UPD_HISTORY:
textSummary(key, R.string.update_history_summ); textSummary(key, R.string.update_history_summ);
break;
} else if (key.equals(Preferences.PREF_PERMISSIONS)) { case Preferences.PREF_PERMISSIONS:
checkSummary(key, R.string.showPermissions_on); checkSummary(key, R.string.showPermissions_on);
break;
} else if (key.equals(Preferences.PREF_COMPACT_LAYOUT)) { case Preferences.PREF_COMPACT_LAYOUT:
checkSummary(key, R.string.compactlayout_on); checkSummary(key, R.string.compactlayout_on);
break;
} else if (key.equals(Preferences.PREF_THEME)) { case Preferences.PREF_THEME:
entrySummary(key); entrySummary(key);
if (changing) { if (changing) {
result |= PreferencesActivity.RESULT_RESTART; result |= PreferencesActivity.RESULT_RESTART;
getActivity().setResult(result); getActivity().setResult(result);
} }
break;
} else if (key.equals(Preferences.PREF_INCOMP_VER)) { case Preferences.PREF_INCOMP_VER:
checkSummary(key, R.string.show_incompat_versions_on); checkSummary(key, R.string.show_incompat_versions_on);
break;
} else if (key.equals(Preferences.PREF_ROOTED)) { case Preferences.PREF_ROOTED:
checkSummary(key, R.string.rooted_on); checkSummary(key, R.string.rooted_on);
break;
} else if (key.equals(Preferences.PREF_IGN_TOUCH)) { case Preferences.PREF_IGN_TOUCH:
checkSummary(key, R.string.ignoreTouch_on); checkSummary(key, R.string.ignoreTouch_on);
break;
} else if (key.equals(Preferences.PREF_LOCAL_REPO_BONJOUR)) { case Preferences.PREF_LOCAL_REPO_BONJOUR:
checkSummary(key, R.string.local_repo_bonjour_on); checkSummary(key, R.string.local_repo_bonjour_on);
break;
} else if (key.equals(Preferences.PREF_LOCAL_REPO_NAME)) { case Preferences.PREF_LOCAL_REPO_NAME:
textSummary(key, R.string.local_repo_name_summary); textSummary(key, R.string.local_repo_name_summary);
break;
} else if (key.equals(Preferences.PREF_LOCAL_REPO_HTTPS)) { case Preferences.PREF_LOCAL_REPO_HTTPS:
checkSummary(key, R.string.local_repo_https_on); checkSummary(key, R.string.local_repo_https_on);
break;
} else if (key.equals(Preferences.PREF_CACHE_APK)) { case Preferences.PREF_CACHE_APK:
checkSummary(key, R.string.cache_downloaded_on); checkSummary(key, R.string.cache_downloaded_on);
break;
} else if (key.equals(Preferences.PREF_EXPERT)) { case Preferences.PREF_EXPERT:
checkSummary(key, R.string.expert_on); checkSummary(key, R.string.expert_on);
break;
} else if (key.equals(Preferences.PREF_ROOT_INSTALLER)) { case Preferences.PREF_ROOT_INSTALLER:
checkSummary(key, R.string.root_installer_on); checkSummary(key, R.string.root_installer_on);
break;
} else if (key.equals(Preferences.PREF_SYSTEM_INSTALLER)) { case Preferences.PREF_SYSTEM_INSTALLER:
checkSummary(key, R.string.system_installer_on); checkSummary(key, R.string.system_installer_on);
break;
} else if (key.equals(Preferences.PREF_ENABLE_PROXY)) { case Preferences.PREF_ENABLE_PROXY:
CheckBoxPreference pref = (CheckBoxPreference) findPreference(key); CheckBoxPreference checkPref = (CheckBoxPreference) findPreference(key);
pref.setSummary(R.string.enable_proxy_summary); checkPref.setSummary(R.string.enable_proxy_summary);
break;
} else if (key.equals(Preferences.PREF_PROXY_HOST)) { case Preferences.PREF_PROXY_HOST:
EditTextPreference textPref = (EditTextPreference) findPreference(key); EditTextPreference textPref = (EditTextPreference) findPreference(key);
String text = Preferences.get().getProxyHost(); String text = Preferences.get().getProxyHost();
if (TextUtils.isEmpty(text) || text.equals(Preferences.DEFAULT_PROXY_HOST)) if (TextUtils.isEmpty(text) || text.equals(Preferences.DEFAULT_PROXY_HOST))
textPref.setSummary(R.string.proxy_host_summary); textPref.setSummary(R.string.proxy_host_summary);
else else
textPref.setSummary(text); textPref.setSummary(text);
break;
} else if (key.equals(Preferences.PREF_PROXY_PORT)) { case Preferences.PREF_PROXY_PORT:
EditTextPreference textPref = (EditTextPreference) findPreference(key); EditTextPreference textPref2 = (EditTextPreference) findPreference(key);
int port = Preferences.get().getProxyPort(); int port = Preferences.get().getProxyPort();
if (port == Preferences.DEFAULT_PROXY_PORT) if (port == Preferences.DEFAULT_PROXY_PORT)
textPref.setSummary(R.string.proxy_port_summary); textPref2.setSummary(R.string.proxy_port_summary);
else else
textPref.setSummary(String.valueOf(port)); textPref2.setSummary(String.valueOf(port));
break;
} }
} }

View File

@ -229,13 +229,14 @@ public class RepoDetailsFragment extends Fragment {
updateHandler = UpdateService.updateRepoNow(repo.address, getActivity()).setListener(new ProgressListener() { updateHandler = UpdateService.updateRepoNow(repo.address, getActivity()).setListener(new ProgressListener() {
@Override @Override
public void onProgress(Event event) { public void onProgress(Event event) {
if (event.type.equals(UpdateService.EVENT_COMPLETE_WITH_CHANGES)) { switch (event.type) {
repo = loadRepoDetails(); case UpdateService.EVENT_COMPLETE_WITH_CHANGES:
updateView((ViewGroup)getView()); repo = loadRepoDetails();
} updateView((ViewGroup)getView());
break;
if (event.type.equals(UpdateService.EVENT_FINISHED)) { case UpdateService.EVENT_FINISHED:
updateHandler = null; updateHandler = null;
break;
} }
} }
}); });

View File

@ -106,17 +106,20 @@ public class ConfirmReceiveSwapFragment extends Fragment implements ProgressList
// an additional dialog. E.g. White text on blue, letting the user // an additional dialog. E.g. White text on blue, letting the user
// know what we are up to. // know what we are up to.
if (event.type.equals(UpdateService.EVENT_COMPLETE_AND_SAME) || switch (event.type) {
event.type.equals(UpdateService.EVENT_COMPLETE_WITH_CHANGES)) { case UpdateService.EVENT_COMPLETE_AND_SAME:
((ConnectSwapActivity)getActivity()).onRepoUpdated(repo); case UpdateService.EVENT_COMPLETE_WITH_CHANGES:
/*Intent intent = new Intent(); ((ConnectSwapActivity)getActivity()).onRepoUpdated(repo);
intent.putExtra("category", newRepoConfig.getHost()); // TODO: Load repo from database to get proper name. This is what the category we want to select will be called. /*Intent intent = new Intent();
getActivity().setResult(Activity.RESULT_OK, intent); intent.putExtra("category", newRepoConfig.getHost()); // TODO: Load repo from database to get proper name. This is what the category we want to select will be called.
finish();*/ getActivity().setResult(Activity.RESULT_OK, intent);
} else if (event.type.equals(UpdateService.EVENT_ERROR)) { finish();*/
// TODO: Show message on this screen (with a big "okay" button that goes back to F-Droid activity) break;
// rather than finishing directly. case UpdateService.EVENT_ERROR:
finish(); // TODO: Show message on this screen (with a big "okay" button that goes back to F-Droid activity)
} // rather than finishing directly.
finish();
break;
}
} }
} }

View File

@ -37,10 +37,13 @@ public class SwapActivity extends ActionBarActivity implements SwapProcessManage
@Override @Override
public void onBackPressed() { public void onBackPressed() {
if (currentState().equals(STATE_START_SWAP)) { switch (currentState()) {
finish(); case STATE_START_SWAP:
} else { finish();
super.onBackPressed(); break;
default:
super.onBackPressed();
break;
} }
} }
@ -50,19 +53,24 @@ public class SwapActivity extends ActionBarActivity implements SwapProcessManage
} }
public void nextStep() { public void nextStep() {
String current = currentState(); switch (currentState()) {
if (current.equals(STATE_START_SWAP)) { case STATE_START_SWAP:
showSelectApps(); showSelectApps();
} else if (current.equals(STATE_SELECT_APPS)) { break;
prepareLocalRepo(); case STATE_SELECT_APPS:
} else if (current.equals(STATE_JOIN_WIFI)) { prepareLocalRepo();
ensureLocalRepoRunning(); break;
if (!attemptToShowNfc()) { case STATE_JOIN_WIFI:
ensureLocalRepoRunning();
if (!attemptToShowNfc()) {
showWifiQr();
}
break;
case STATE_NFC:
showWifiQr(); showWifiQr();
} break;
} else if (current.equals(STATE_NFC)) { case STATE_WIFI_QR:
showWifiQr(); break;
} else if (current.equals(STATE_WIFI_QR)) {
} }
supportInvalidateOptionsMenu(); supportInvalidateOptionsMenu();
} }