https://cyanogen.atlassian.net/browse/MUSIC-134
Change-Id: I08f7f60134ceb1b77e37b5a0d33481c1fd0dd747
<!-- Empty list / error messages -->
<string name="no_effects_for_you">The equalizer could not be opened.</string>
<string name="empty_music">To copy music from your computer to your device, use a USB cable.</string>
<!-- Empty list / error messages -->
<string name="no_effects_for_you">The equalizer could not be opened.</string>
<string name="empty_music">To copy music from your computer to your device, use a USB cable.</string>
- <string name="empty_search">No search results for</string>
+ <string name="empty_search">No search results found</string>
<string name="empty_search_check">Please check that you have the correct spelling or try a different keyword.</string>
<string name="empty_favorite">Songs you mark as favorites will be shown here.</string>
<string name="empty_recent_main">No recent songs</string>
<string name="empty_search_check">Please check that you have the correct spelling or try a different keyword.</string>
<string name="empty_favorite">Songs you mark as favorites will be shown here.</string>
<string name="empty_recent_main">No recent songs</string>
<string name="empty_queue_secondary">To add songs to your Play Queue, tap the options menu on a song, album, or artist and select \"Add to queue\".</string>
<!-- Section Headers -->
<string name="empty_queue_secondary">To add songs to your Play Queue, tap the options menu on a song, album, or artist and select \"Add to queue\".</string>
<!-- Section Headers -->
- <string name="header_unknown_year">Unknown Year</string>
- <string name="header_less_than_30s">Less than 30s</string>
+ <string name="header_unknown_year">Unknown year</string>
+ <string name="header_less_than_30s">Less than 30 seconds</string>
<string name="header_30_to_60_seconds">30 - 60 seconds</string>
<string name="header_1_to_2_minutes">1 - 2 minutes</string>
<string name="header_2_to_3_minutes">2 - 3 minutes</string>
<string name="header_30_to_60_seconds">30 - 60 seconds</string>
<string name="header_1_to_2_minutes">1 - 2 minutes</string>
<string name="header_2_to_3_minutes">2 - 3 minutes</string>
<string name="header_5_to_9_songs">5 - 9 songs</string>
<string name="header_10_plus_songs">10+ songs</string>
<string name="header_5_to_9_songs">5 - 9 songs</string>
<string name="header_10_plus_songs">10+ songs</string>
- <string name="header_1_album">1 album</string>
- <string name="header_n_albums"><xliff:g id="number">%d</xliff:g> albums</string>
<string name="header_5_plus_albums">5+ albums</string>
<string name="footer_search_artists">Show all artists</string>
<string name="header_5_plus_albums">5+ albums</string>
<string name="footer_search_artists">Show all artists</string>
addBitmapToMemCache(data, bitmap, replace);
// Add to disk cache
addBitmapToMemCache(data, bitmap, replace);
// Add to disk cache
- if (mDiskCache != null) {
+ if (mDiskCache != null && !mDiskCache.isClosed()) {
final String key = hashKeyForDisk(data);
OutputStream out = null;
try {
final String key = hashKeyForDisk(data);
OutputStream out = null;
try {
}
} catch (final IOException e) {
Log.e(TAG, "addBitmapToCache - " + e);
}
} catch (final IOException e) {
Log.e(TAG, "addBitmapToCache - " + e);
+ } catch (final IllegalStateException e) {
+ // if the user clears the cache while we have an async task going we could try
+ // writing to the disk cache while it isn't ready. Catching here will silently
+ // fail instead
+ Log.e(TAG, "addBitmapToCache - " + e);
} finally {
try {
if (out != null) {
} finally {
try {
if (out != null) {
if (mImageCache != null) {
mImageCache.clearCaches();
}
if (mImageCache != null) {
mImageCache.clearCaches();
}
+
+ // clear the keys of images we've already downloaded
+ sKeys.clear();
// prep the loader in case the query takes a long time
setLoading();
// prep the loader in case the query takes a long time
setLoading();
- // set the no results string ahead of time in case the user changes the string whiel loading
- NoResultsContainer noResults = mLoadingEmptyContainer.getNoResultsContainer();
- noResults.setMainHighlightText("\"" + mFilterString + "\"");
-
// if we are at the top level, create a comparator to separate the different types into
// their own sections (artists, albums, etc)
if (mTopLevelSearch) {
// if we are at the top level, create a comparator to separate the different types into
// their own sections (artists, albums, etc)
if (mTopLevelSearch) {
import android.preference.PreferenceActivity;
import android.view.MenuItem;
import android.preference.PreferenceActivity;
import android.view.MenuItem;
-import com.cyngn.eleven.MusicPlaybackService;
import com.cyngn.eleven.R;
import com.cyngn.eleven.R;
-import com.cyngn.eleven.cache.ImageCache;
-import com.cyngn.eleven.utils.ApolloUtils;
+import com.cyngn.eleven.cache.ImageFetcher;
import com.cyngn.eleven.utils.MusicUtils;
import com.cyngn.eleven.utils.MusicUtils;
-import com.cyngn.eleven.utils.PreferenceUtils;
* @author Andrew Neal (andrewdneal@gmail.com)
*/
@SuppressWarnings("deprecation")
public class SettingsActivity extends PreferenceActivity {
/**
* @author Andrew Neal (andrewdneal@gmail.com)
*/
@SuppressWarnings("deprecation")
public class SettingsActivity extends PreferenceActivity {
/**
- * Image cache
- */
- private ImageCache mImageCache;
-
- private PreferenceUtils mPreferences;
-
- /**
* {@inheritDoc}
*/
@Override
* {@inheritDoc}
*/
@Override
// Fade it in
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
// Fade it in
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
- // Get the preferences
- mPreferences = PreferenceUtils.getInstance(this);
-
- // Initialze the image cache
- mImageCache = ImageCache.getInstance(this);
-
// UP
getActionBar().setIcon(R.drawable.ic_action_back_padded);
getActionBar().setHomeButtonEnabled(true);
// UP
getActionBar().setIcon(R.drawable.ic_action_back_padded);
getActionBar().setHomeButtonEnabled(true);
@Override
public boolean onPreferenceClick(final Preference preference) {
new AlertDialog.Builder(SettingsActivity.this).setMessage(R.string.delete_warning)
@Override
public boolean onPreferenceClick(final Preference preference) {
new AlertDialog.Builder(SettingsActivity.this).setMessage(R.string.delete_warning)
- .setPositiveButton(android.R.string.ok, new OnClickListener() {
-
- @Override
- public void onClick(final DialogInterface dialog, final int which) {
- mImageCache.clearCaches();
- }
- }).setNegativeButton(R.string.cancel, new OnClickListener() {
-
- @Override
- public void onClick(final DialogInterface dialog, final int which) {
- dialog.dismiss();
- }
- }).create().show();
+ .setPositiveButton(android.R.string.ok, new OnClickListener() {
+ @Override
+ public void onClick(final DialogInterface dialog, final int which) {
+ ImageFetcher.getInstance(SettingsActivity.this).clearCaches();
+ }
+ })
+ .setNegativeButton(R.string.cancel, new OnClickListener() {
+ @Override
+ public void onClick(final DialogInterface dialog, final int which) {
+ dialog.dismiss();
+ }
+ })
+ .create().show();
@Override
protected int getStringId(int value) {
@Override
protected int getStringId(int value) {
- if (value <= 1) {
- return R.string.header_1_album;
- } else if (value <= 4) {
- return R.string.header_n_albums;
+ if (value <= 4) {
+ return R.plurals.Nalbums;
}
return R.string.header_5_plus_albums;
}
return R.string.header_5_plus_albums;
@Override
protected String createLabel(int stringId, T item) {
@Override
protected String createLabel(int stringId, T item) {
- if (stringId == R.string.header_n_albums) {
- return mContext.getString(stringId, getInt(item));
+ if (stringId == R.plurals.Nalbums) {
+ final int numItems = getInt(item);
+ return mContext.getResources().getQuantityString(stringId, numItems, numItems);
}
return super.createLabel(stringId, item);
}
return super.createLabel(stringId, item);