diff --git a/res/values/strings.xml b/res/values/strings.xml
index f0d7d4506..d7af74136 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -163,6 +163,9 @@
Compact Layout
Show icons at a smaller size
Show icons at regular size
+ Small screen
+ Adapt layouts to smaller screens
+ Use normal layouts
Theme
Unsigned
URL
diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml
index 7b8cbd11e..3d4b3922d 100644
--- a/res/xml/preferences.xml
+++ b/res/xml/preferences.xml
@@ -25,6 +25,9 @@
+
0) {
holder.api.setText(getString(R.string.minsdk_or_later,
Utils.getAndroidVersionName(apk.minSdkVersion)));
+ holder.api.setEnabled(apk.compatible);
+ holder.api.setVisibility(View.VISIBLE);
} else {
- holder.api.setText("");
+ holder.api.setVisibility(View.GONE);
}
if (apk.srcname != null) {
@@ -325,6 +327,7 @@ public class AppDetails extends ListActivity {
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(getBaseContext());
+ pref_smallDensity = prefs.getBoolean("smallDensity", false);
pref_expert = prefs.getBoolean("expert", false);
pref_permissions = prefs.getBoolean("showPermissions", false);
pref_incompatibleVersions = prefs.getBoolean(
@@ -334,6 +337,7 @@ public class AppDetails extends ListActivity {
}
+ private boolean pref_smallDensity;
private boolean pref_expert;
private boolean pref_permissions;
private boolean pref_incompatibleVersions;
diff --git a/src/org/fdroid/fdroid/Preferences.java b/src/org/fdroid/fdroid/Preferences.java
index d90b46de3..052dbe4e6 100644
--- a/src/org/fdroid/fdroid/Preferences.java
+++ b/src/org/fdroid/fdroid/Preferences.java
@@ -35,17 +35,21 @@ public class Preferences implements SharedPreferences.OnSharedPreferenceChangeLi
public static final String PREF_THEME = "theme";
public static final String PREF_PERMISSIONS = "showPermissions";
public static final String PREF_COMPACT_LAYOUT = "compactlayout";
+ public static final String PREF_SMALL_DENSITY = "smallDensity";
public static final String PREF_IGN_TOUCH = "ignoreTouchscreen";
public static final String PREF_CACHE_APK = "cacheDownloaded";
public static final String PREF_EXPERT = "expert";
public static final String PREF_DB_SYNC = "dbSyncMode";
private static final boolean DEFAULT_COMPACT_LAYOUT = false;
+ private static final boolean DEFAULT_SMALL_DENSITY = false;
private boolean compactLayout = DEFAULT_COMPACT_LAYOUT;
+ private boolean smallDensity = DEFAULT_SMALL_DENSITY;
private Map initialized = new HashMap();
private List compactLayoutListeners = new ArrayList();
+ private List smallDensityListeners = new ArrayList();
private boolean isInitialized(String key) {
return initialized.containsKey(key) && initialized.get(key);
@@ -67,6 +71,14 @@ public class Preferences implements SharedPreferences.OnSharedPreferenceChangeLi
return compactLayout;
}
+ public boolean hasSmallDensity() {
+ if (!isInitialized(PREF_SMALL_DENSITY)) {
+ initialize(PREF_SMALL_DENSITY);
+ smallDensity = preferences.getBoolean(PREF_SMALL_DENSITY, DEFAULT_SMALL_DENSITY);
+ }
+ return smallDensity;
+ }
+
public void registerCompactLayoutChangeListener(ChangeListener listener) {
compactLayoutListeners.add(listener);
}
@@ -75,6 +87,14 @@ public class Preferences implements SharedPreferences.OnSharedPreferenceChangeLi
compactLayoutListeners.remove(listener);
}
+ public void registerSmallDensityChangeListener(ChangeListener listener) {
+ smallDensityListeners.add(listener);
+ }
+
+ public void unregisterSmallDensityChangeListener(ChangeListener listener) {
+ smallDensityListeners.remove(listener);
+ }
+
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
Log.d("FDroid", "Invalidating preference '" + key + "'.");
@@ -85,6 +105,12 @@ public class Preferences implements SharedPreferences.OnSharedPreferenceChangeLi
listener.onPreferenceChange();
}
}
+
+ if (key.equals(PREF_SMALL_DENSITY)) {
+ for ( ChangeListener listener : smallDensityListeners ) {
+ listener.onPreferenceChange();
+ }
+ }
}
private static Preferences instance;
diff --git a/src/org/fdroid/fdroid/PreferencesActivity.java b/src/org/fdroid/fdroid/PreferencesActivity.java
index 109b08870..48b21edea 100644
--- a/src/org/fdroid/fdroid/PreferencesActivity.java
+++ b/src/org/fdroid/fdroid/PreferencesActivity.java
@@ -51,6 +51,7 @@ public class PreferencesActivity extends PreferenceActivity implements
Preferences.PREF_THEME,
Preferences.PREF_PERMISSIONS,
Preferences.PREF_COMPACT_LAYOUT,
+ Preferences.PREF_SMALL_DENSITY,
Preferences.PREF_IGN_TOUCH,
Preferences.PREF_CACHE_APK,
Preferences.PREF_EXPERT,
@@ -67,11 +68,7 @@ public class PreferencesActivity extends PreferenceActivity implements
protected void onoffSummary(String key, int on, int off) {
CheckBoxPreference pref = (CheckBoxPreference)findPreference(key);
- if (pref.isChecked()) {
- pref.setSummary(on);
- } else {
- pref.setSummary(off);
- }
+ pref.setSummary(pref.isChecked() ? on : off);
}
protected void entrySummary(String key) {
@@ -119,6 +116,10 @@ public class PreferencesActivity extends PreferenceActivity implements
onoffSummary(key, R.string.compactlayout_on,
R.string.compactlayout_off);
+ } else if (key.equals(Preferences.PREF_SMALL_DENSITY)) {
+ onoffSummary(key, R.string.small_density_on,
+ R.string.small_density_off);
+
} else if (key.equals(Preferences.PREF_THEME)) {
entrySummary(key);
if (changing) {
diff --git a/src/org/fdroid/fdroid/views/AppListAdapter.java b/src/org/fdroid/fdroid/views/AppListAdapter.java
index d1ad13000..df2157724 100644
--- a/src/org/fdroid/fdroid/views/AppListAdapter.java
+++ b/src/org/fdroid/fdroid/views/AppListAdapter.java
@@ -91,6 +91,7 @@ abstract public class AppListAdapter extends BaseAdapter {
public View getView(int position, View convertView, ViewGroup parent) {
boolean compact = Preferences.get().hasCompactLayout();
+ boolean small = Preferences.get().hasSmallDensity();
DB.App app = items.get(position);
ViewHolder holder;
@@ -116,8 +117,19 @@ abstract public class AppListAdapter extends BaseAdapter {
ImageLoader.getInstance().displayImage(app.iconUrl, holder.icon,
displayImageOptions);
- holder.status.setText(getVersionInfo(app));
- holder.license.setText(app.license);
+ if (small) {
+ holder.status.setVisibility(View.GONE);
+ } else {
+ holder.status.setVisibility(View.VISIBLE);
+ holder.status.setText(getVersionInfo(app));
+ }
+
+ if (small) {
+ holder.license.setVisibility(View.GONE);
+ } else {
+ holder.license.setVisibility(View.VISIBLE);
+ holder.license.setText(app.license);
+ }
// Disable it all if it isn't compatible...
View[] views = {
diff --git a/src/org/fdroid/fdroid/views/fragments/AppListFragment.java b/src/org/fdroid/fdroid/views/fragments/AppListFragment.java
index 98ee1d9b4..a0095d2c3 100644
--- a/src/org/fdroid/fdroid/views/fragments/AppListFragment.java
+++ b/src/org/fdroid/fdroid/views/fragments/AppListFragment.java
@@ -26,12 +26,14 @@ abstract class AppListFragment extends Fragment implements AdapterView.OnItemCli
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Preferences.get().registerCompactLayoutChangeListener(this);
+ Preferences.get().registerSmallDensityChangeListener(this);
}
@Override
public void onDestroy() {
super.onDestroy();
Preferences.get().unregisterCompactLayoutChangeListener(this);
+ Preferences.get().unregisterSmallDensityChangeListener(this);
}
@Override