diff --git a/core/res/drawable-hdpi/ic_priority_high.png b/core/res/drawable-hdpi/ic_priority_high.png deleted file mode 100644 index 43dd253b..00000000 Binary files a/core/res/drawable-hdpi/ic_priority_high.png and /dev/null differ diff --git a/core/res/drawable-hdpi/ic_priority_low.png b/core/res/drawable-hdpi/ic_priority_low.png deleted file mode 100644 index fa8e7bfb..00000000 Binary files a/core/res/drawable-hdpi/ic_priority_low.png and /dev/null differ diff --git a/core/res/drawable-hdpi/ic_priority_normal.png b/core/res/drawable-hdpi/ic_priority_normal.png deleted file mode 100644 index b59edc02..00000000 Binary files a/core/res/drawable-hdpi/ic_priority_normal.png and /dev/null differ diff --git a/core/res/drawable-hdpi/ic_priority_off.png b/core/res/drawable-hdpi/ic_priority_off.png deleted file mode 100644 index e44ea25a..00000000 Binary files a/core/res/drawable-hdpi/ic_priority_off.png and /dev/null differ diff --git a/core/res/drawable/selectable_background_transdroid2.xml b/core/res/drawable/selectable_background_transdroid2.xml index 5aab0bfc..268cdcd4 100644 --- a/core/res/drawable/selectable_background_transdroid2.xml +++ b/core/res/drawable/selectable_background_transdroid2.xml @@ -1,26 +1,11 @@ - - - - - - - \ No newline at end of file diff --git a/core/res/layout/list_item_torrent.xml b/core/res/layout/list_item_torrent.xml index 0b9c8a30..3f3e0a0a 100644 --- a/core/res/layout/list_item_torrent.xml +++ b/core/res/layout/list_item_torrent.xml @@ -4,7 +4,8 @@ android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" - android:paddingRight="@dimen/margin_default" > + android:paddingRight="@dimen/margin_default" + android:background="?attr/selectable_background_transdroid" > + android:contentDescription="@string/status_priority_normal" /> - + android:paddingLeft="@dimen/margin_default" + android:paddingRight="@dimen/margin_default" + android:background="?attr/selectable_background_transdroid"> - - - - - - + + diff --git a/core/res/menu/fragment_details_file.xml b/core/res/menu/fragment_details_file.xml index aaad63d9..64116eb7 100644 --- a/core/res/menu/fragment_details_file.xml +++ b/core/res/menu/fragment_details_file.xml @@ -1,7 +1,7 @@ - Uploading Active Inactive + + %1$d torrent selected + %1$d torrents selected + + + %1$d files selected + %1$d files selected + STATUS: %1$s Waiting to check… @@ -100,6 +108,7 @@ Trackers updated Label set to \'%1$s\' Torrent moved to \'%1$s\' + File priorities updated Torrent search Search for torrents diff --git a/core/src/org/transdroid/core/app/settings/SettingsPersistence.java b/core/src/org/transdroid/core/app/settings/SettingsPersistence.java index e1bc3533..f860cf09 100644 --- a/core/src/org/transdroid/core/app/settings/SettingsPersistence.java +++ b/core/src/org/transdroid/core/app/settings/SettingsPersistence.java @@ -18,6 +18,11 @@ import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.os.Environment; +/** + * Singleton class that can persist user settings (servers, RSS feeds, etc.) to and from a plain text JSON file. + * + * @author Eric Kok + */ @EBean(scope = Scope.Singleton) public class SettingsPersistence { diff --git a/core/src/org/transdroid/core/gui/DetailsActivity.java b/core/src/org/transdroid/core/gui/DetailsActivity.java index 9f9eaade..1803ce63 100644 --- a/core/src/org/transdroid/core/gui/DetailsActivity.java +++ b/core/src/org/transdroid/core/gui/DetailsActivity.java @@ -14,14 +14,13 @@ import org.androidannotations.annotations.OptionsItem; import org.androidannotations.annotations.OptionsMenu; import org.androidannotations.annotations.UiThread; import org.transdroid.core.R; -import org.transdroid.core.app.settings.ApplicationSettings; -import org.transdroid.core.app.settings.ServerSetting; import org.transdroid.core.app.settings.*; import org.transdroid.core.gui.lists.LocalTorrent; import org.transdroid.core.gui.log.Log; import org.transdroid.core.gui.navigation.NavigationHelper; import org.transdroid.daemon.Daemon; import org.transdroid.daemon.IDaemonAdapter; +import org.transdroid.daemon.Priority; import org.transdroid.daemon.Torrent; import org.transdroid.daemon.TorrentDetails; import org.transdroid.daemon.TorrentFile; @@ -38,6 +37,7 @@ import org.transdroid.daemon.task.ResumeTask; import org.transdroid.daemon.task.RetrieveTask; import org.transdroid.daemon.task.RetrieveTaskSuccessResult; import org.transdroid.daemon.task.SetDownloadLocationTask; +import org.transdroid.daemon.task.SetFilePriorityTask; import org.transdroid.daemon.task.SetLabelTask; import org.transdroid.daemon.task.SetTrackersTask; import org.transdroid.daemon.task.StartTask; @@ -247,12 +247,24 @@ public class DetailsActivity extends SherlockFragmentActivity implements Torrent } } + @Background + @Override + public void updatePriority(Torrent torrent, List files, Priority priority) { + DaemonTaskResult result = SetFilePriorityTask.create(currentConnection, torrent, priority, + new ArrayList(files)).execute(); + if (result instanceof DaemonTaskResult) { + onTaskSucceeded((DaemonTaskSuccessResult) result, getString(R.string.result_priotitiesset)); + } else { + onCommunicationError((DaemonTaskFailureResult) result); + } + } + @UiThread protected void onTaskSucceeded(DaemonTaskSuccessResult result, String successMessage) { // Refresh the screen as well refreshTorrent(); refreshTorrentDetails(torrent); - Crouton.showText(this, successMessage, navigationHelper.CROUTON_INFO_STYLE); + Crouton.showText(this, successMessage, NavigationHelper.CROUTON_INFO_STYLE); } @UiThread @@ -272,7 +284,7 @@ public class DetailsActivity extends SherlockFragmentActivity implements Torrent Log.i(this, result.getException().toString()); fragmentDetails.updateIsLoading(false); Crouton.showText(this, getString(LocalTorrent.getResourceForDaemonException(result.getException())), - navigationHelper.CROUTON_ERROR_STYLE); + NavigationHelper.CROUTON_ERROR_STYLE); } @UiThread diff --git a/core/src/org/transdroid/core/gui/DetailsFragment.java b/core/src/org/transdroid/core/gui/DetailsFragment.java index e1078190..859ecddd 100644 --- a/core/src/org/transdroid/core/gui/DetailsFragment.java +++ b/core/src/org/transdroid/core/gui/DetailsFragment.java @@ -13,7 +13,9 @@ import org.androidannotations.annotations.ViewById; import org.transdroid.core.R; import org.transdroid.core.gui.lists.DetailsAdapter; import org.transdroid.core.gui.lists.SimpleListItemAdapter; +import org.transdroid.core.gui.navigation.NavigationHelper; import org.transdroid.daemon.Daemon; +import org.transdroid.daemon.Priority; import org.transdroid.daemon.Torrent; import org.transdroid.daemon.TorrentDetails; import org.transdroid.daemon.TorrentFile; @@ -23,8 +25,13 @@ import android.widget.ProgressBar; import android.widget.TextView; import com.actionbarsherlock.app.SherlockFragment; +import com.actionbarsherlock.view.ActionMode; import com.actionbarsherlock.view.Menu; +import com.actionbarsherlock.view.MenuItem; import com.actionbarsherlock.view.SherlockListView; +import com.actionbarsherlock.view.SherlockListView.MultiChoiceModeListenerCompat; + +import de.keyboardsurfer.android.widget.crouton.Crouton; /** * Fragment that shows detailed statistics about some torrent. These come from some already fetched {@link Torrent} @@ -57,7 +64,10 @@ public class DetailsFragment extends SherlockFragment { @AfterViews protected void init() { + // Set up details adapter (itself containing the actual lists to show), which allows multi-select and fast + // scrolling detailsList.setAdapter(new DetailsAdapter(getActivity())); + detailsList.setMultiChoiceModeListener(onDetailsSelected); detailsList.setFastScrollEnabled(true); if (torrent != null) updateTorrent(torrent); @@ -233,6 +243,70 @@ public class DetailsFragment extends SherlockFragment { // TODO: Show trackers edit dialog } + private MultiChoiceModeListenerCompat onDetailsSelected = new MultiChoiceModeListenerCompat() { + + @Override + public boolean onCreateActionMode(ActionMode mode, Menu menu) { + // Show contextual action bar to start/stop/remove/etc. torrents in batch mode + mode.getMenuInflater().inflate(R.menu.fragment_details_file, menu); + return true; + } + + @Override + public boolean onActionItemClicked(ActionMode mode, MenuItem item) { + + // Get checked torrents + List checked = new ArrayList(); + for (int i = 0; i < detailsList.getCheckedItemPositions().size(); i++) { + if (detailsList.getCheckedItemPositions().valueAt(i) + && detailsList.getAdapter().getItem(detailsList.getCheckedItemPositions().keyAt(i)) instanceof TorrentFile) + checked.add((TorrentFile) detailsList.getAdapter().getItem( + detailsList.getCheckedItemPositions().keyAt(i))); + } + + int itemId = item.getItemId(); + if (itemId == R.id.action_download) { + // TODO: Start FTP download command for the selected torrents + Crouton.showText(getActivity(), "TODO: Start FTP download command for the selected torrents", + NavigationHelper.CROUTON_INFO_STYLE); + //for (TorrentFile file : checked) { + //} + mode.finish(); + return true; + } else { + Priority priority = Priority.Normal; + if (itemId == R.id.action_priority_low) + priority = Priority.Low; + getTasksExecutor().updatePriority(torrent, checked, priority); + mode.finish(); + return true; + } + } + + @Override + public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) { + // Show the number of selected files in the CAB + // torrentsList.getCheckedItemPositions().size() ? + int checkedCount = 0; + for (int i = 0; i < detailsList.getCheckedItemPositions().size(); i++) { + if (detailsList.getCheckedItemPositions().valueAt(i) + && detailsList.getAdapter().getItem(detailsList.getCheckedItemPositions().keyAt(i)) instanceof TorrentFile) + checkedCount++; + } + mode.setTitle(getResources().getQuantityString(R.plurals.navigation_filesselected, checkedCount, checkedCount)); + } + + @Override + public boolean onPrepareActionMode(ActionMode mode, Menu menu) { + return false; + } + + @Override + public void onDestroyActionMode(ActionMode mode) { + } + + }; + /** * Returns the object responsible for executing torrent tasks against a connected server * @return The executor for tasks on some torrent diff --git a/core/src/org/transdroid/core/gui/TorrentTasksExecutor.java b/core/src/org/transdroid/core/gui/TorrentTasksExecutor.java index d416d902..420d7e10 100644 --- a/core/src/org/transdroid/core/gui/TorrentTasksExecutor.java +++ b/core/src/org/transdroid/core/gui/TorrentTasksExecutor.java @@ -2,7 +2,9 @@ package org.transdroid.core.gui; import java.util.List; +import org.transdroid.daemon.Priority; import org.transdroid.daemon.Torrent; +import org.transdroid.daemon.TorrentFile; public interface TorrentTasksExecutor { void resumeTorrent(Torrent torrent); @@ -15,4 +17,5 @@ public interface TorrentTasksExecutor { void updateLocation(Torrent torrent, String newLocation); void refreshTorrentDetails(Torrent torrent); void refreshTorrentFiles(Torrent torrent); + void updatePriority(Torrent torrent, List files, Priority priority); } \ No newline at end of file diff --git a/core/src/org/transdroid/core/gui/TorrentsActivity.java b/core/src/org/transdroid/core/gui/TorrentsActivity.java index 44ebe7b1..7eb21292 100644 --- a/core/src/org/transdroid/core/gui/TorrentsActivity.java +++ b/core/src/org/transdroid/core/gui/TorrentsActivity.java @@ -31,6 +31,7 @@ import org.transdroid.core.gui.search.UrlEntryDialog; import org.transdroid.core.gui.settings.*; import org.transdroid.daemon.Daemon; import org.transdroid.daemon.IDaemonAdapter; +import org.transdroid.daemon.Priority; import org.transdroid.daemon.Torrent; import org.transdroid.daemon.TorrentDetails; import org.transdroid.daemon.TorrentFile; @@ -54,6 +55,7 @@ import org.transdroid.daemon.task.RetrieveTask; import org.transdroid.daemon.task.RetrieveTaskSuccessResult; import org.transdroid.daemon.task.SetAlternativeModeTask; import org.transdroid.daemon.task.SetDownloadLocationTask; +import org.transdroid.daemon.task.SetFilePriorityTask; import org.transdroid.daemon.task.SetLabelTask; import org.transdroid.daemon.task.SetTrackersTask; import org.transdroid.daemon.task.StartTask; @@ -631,16 +633,16 @@ public class TorrentsActivity extends SherlockFragmentActivity implements OnNavi } } catch (SecurityException e) { // No longer access to this file - Crouton.showText(this, R.string.error_torrentfile, navigationHelper.CROUTON_ERROR_STYLE); + Crouton.showText(this, R.string.error_torrentfile, NavigationHelper.CROUTON_ERROR_STYLE); } catch (IOException e1) { // Can't write temporary file - Crouton.showText(this, R.string.error_torrentfile, navigationHelper.CROUTON_ERROR_STYLE); + Crouton.showText(this, R.string.error_torrentfile, NavigationHelper.CROUTON_ERROR_STYLE); } finally { try { if (input != null) input.close(); } catch (IOException e) { - Crouton.showText(this, R.string.error_torrentfile, navigationHelper.CROUTON_ERROR_STYLE); + Crouton.showText(this, R.string.error_torrentfile, NavigationHelper.CROUTON_ERROR_STYLE); } } } @@ -739,18 +741,30 @@ public class TorrentsActivity extends SherlockFragmentActivity implements OnNavi } } + @Background + @Override + public void updatePriority(Torrent torrent, List files, Priority priority) { + DaemonTaskResult result = SetFilePriorityTask.create(currentConnection, torrent, priority, + new ArrayList(files)).execute(); + if (result instanceof DaemonTaskResult) { + onTaskSucceeded((DaemonTaskSuccessResult) result, getString(R.string.result_priotitiesset)); + } else { + onCommunicationError((DaemonTaskFailureResult) result, false); + } + } + @UiThread protected void onTaskSucceeded(DaemonTaskSuccessResult result, String successMessage) { // Refresh the screen as well refreshScreen(); - Crouton.showText(this, successMessage, navigationHelper.CROUTON_INFO_STYLE); + Crouton.showText(this, successMessage, NavigationHelper.CROUTON_INFO_STYLE); } @UiThread protected void onCommunicationError(DaemonTaskFailureResult result, boolean isCritical) { Log.i(this, result.getException().toString()); String error = getString(LocalTorrent.getResourceForDaemonException(result.getException())); - Crouton.showText(this, error, navigationHelper.CROUTON_ERROR_STYLE); + Crouton.showText(this, error, NavigationHelper.CROUTON_ERROR_STYLE); fragmentTorrents.updateIsLoading(false); if (isCritical) fragmentTorrents.updateError(error); diff --git a/core/src/org/transdroid/core/gui/TorrentsFragment.java b/core/src/org/transdroid/core/gui/TorrentsFragment.java index 6131bacb..9857d2d6 100644 --- a/core/src/org/transdroid/core/gui/TorrentsFragment.java +++ b/core/src/org/transdroid/core/gui/TorrentsFragment.java @@ -70,13 +70,18 @@ public class TorrentsFragment extends SherlockFragment { @AfterViews protected void init() { + + // Load the requested sort order from the user settings this.currentSortOrder = applicationSettings.getLastUsedSortOrder(); this.currentSortDescending = applicationSettings.getLastUsedSortDescending(); + + // Set up the list adapter, which allows multi-select and fast scrolling torrentsList.setAdapter(TorrentsAdapter_.getInstance_(getActivity())); torrentsList.setMultiChoiceModeListener(onTorrentsSelected); torrentsList.setFastScrollEnabled(true); if (torrents != null) updateTorrents(torrents); + } /** @@ -183,8 +188,9 @@ public class TorrentsFragment extends SherlockFragment { // Get checked torrents List checked = new ArrayList(); for (int i = 0; i < torrentsList.getCheckedItemPositions().size(); i++) { - if (torrentsList.getCheckedItemPositions().get(i)) - checked.add((Torrent) torrentsList.getAdapter().getItem(i)); + if (torrentsList.getCheckedItemPositions().valueAt(i)) + checked.add((Torrent) torrentsList.getAdapter().getItem( + torrentsList.getCheckedItemPositions().keyAt(i))); } int itemId = item.getItemId(); @@ -223,7 +229,15 @@ public class TorrentsFragment extends SherlockFragment { @Override public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) { - // TODO: Update title or otherwise show number of selected torrents? + // Show the number of selected torrents in the CAB + // torrentsList.getCheckedItemPositions().size() ? + int checkedCount = 0; + for (int i = 0; i < torrentsList.getCheckedItemPositions().size(); i++) { + if (torrentsList.getCheckedItemPositions().valueAt(i)) + checkedCount++; + } + mode.setTitle(getResources().getQuantityString(R.plurals.navigation_torrentsselected, checkedCount, + checkedCount)); } @Override diff --git a/core/src/org/transdroid/core/gui/lists/TorrentFilePriorityLayout.java b/core/src/org/transdroid/core/gui/lists/TorrentFilePriorityLayout.java new file mode 100644 index 00000000..a7880a2b --- /dev/null +++ b/core/src/org/transdroid/core/gui/lists/TorrentFilePriorityLayout.java @@ -0,0 +1,77 @@ +package org.transdroid.core.gui.lists; + +import org.transdroid.daemon.Priority; + +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.RectF; +import android.util.AttributeSet; +import fr.marvinlabs.widget.CheckableRelativeLayout; + +public class TorrentFilePriorityLayout extends CheckableRelativeLayout { + + private final float scale = getContext().getResources().getDisplayMetrics().density; + private final int WIDTH = (int) (5 * scale + 0.5f); + + private Priority priority = null; + private final Paint offPaint = new Paint(); + private final Paint lowPaint = new Paint(); + private final Paint highPaint = new Paint(); + private final Paint normalPaint = new Paint(); + private final RectF fullRect = new RectF(); + + public TorrentFilePriorityLayout(Context context) { + super(context); + initPaints(); + setWillNotDraw(false); + } + + public TorrentFilePriorityLayout(Context context, AttributeSet attrs) { + super(context, attrs); + initPaints(); + setWillNotDraw(false); + } + + private void initPaints() { + offPaint.setColor(0xFF9E9E9E); // Grey + lowPaint.setColor(0x778ACC12); // Very Light green + normalPaint.setColor(0xBB8ACC12); // Light green + highPaint.setColor(0xFF8ACC12); // Green + } + + public void setPriority(Priority priority) { + this.priority = priority; + this.invalidate(); + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + + int height = getHeight(); + int width = WIDTH; + fullRect.set(0, 0, width, height); + + if (priority == null) { + return; + } + + switch (priority) { + case Low: + canvas.drawRect(fullRect, lowPaint); + break; + case Normal: + canvas.drawRect(fullRect, normalPaint); + break; + case High: + canvas.drawRect(fullRect, highPaint); + break; + default: // Off + canvas.drawRect(fullRect, offPaint); + break; + } + + } + +} diff --git a/core/src/org/transdroid/core/gui/lists/TorrentFileView.java b/core/src/org/transdroid/core/gui/lists/TorrentFileView.java index d4eab7ff..f7926c62 100644 --- a/core/src/org/transdroid/core/gui/lists/TorrentFileView.java +++ b/core/src/org/transdroid/core/gui/lists/TorrentFileView.java @@ -2,25 +2,20 @@ package org.transdroid.core.gui.lists; import org.androidannotations.annotations.EViewGroup; import org.androidannotations.annotations.ViewById; -import org.transdroid.core.R; import org.transdroid.daemon.TorrentFile; import android.content.Context; -import android.widget.ImageView; import android.widget.TextView; -import fr.marvinlabs.widget.CheckableRelativeLayout; /** * View that represents some {@link TorrentFile} object and show the file's name, status and priority * @author Eric Kok */ @EViewGroup(resName="list_item_torrentfile") -public class TorrentFileView extends CheckableRelativeLayout { +public class TorrentFileView extends TorrentFilePriorityLayout { @ViewById protected TextView nameText, progressText, sizesText; - @ViewById - protected ImageView priorityImage; public TorrentFileView(Context context) { super(context, null); @@ -30,24 +25,7 @@ public class TorrentFileView extends CheckableRelativeLayout { nameText.setText(torrentFile.getName()); sizesText.setText(torrentFile.getDownloadedAndTotalSizeText()); progressText.setText(torrentFile.getProgressText()); - switch (torrentFile.getPriority()) { - case Off: - priorityImage.setImageResource(R.drawable.ic_priority_off); - priorityImage.setContentDescription(getResources().getString(R.string.status_priority_off)); - break; - case Low: - priorityImage.setImageResource(R.drawable.ic_priority_low); - priorityImage.setContentDescription(getResources().getString(R.string.status_priority_low)); - break; - case Normal: - priorityImage.setImageResource(R.drawable.ic_priority_normal); - priorityImage.setContentDescription(getResources().getString(R.string.status_priority_normal)); - break; - case High: - priorityImage.setImageResource(R.drawable.ic_priority_high); - priorityImage.setContentDescription(getResources().getString(R.string.status_priority_high)); - break; - } + setPriority(torrentFile.getPriority()); } } diff --git a/core/src/org/transdroid/core/gui/navigation/NavigationHelper.java b/core/src/org/transdroid/core/gui/navigation/NavigationHelper.java index 431672d8..813e5f9c 100644 --- a/core/src/org/transdroid/core/gui/navigation/NavigationHelper.java +++ b/core/src/org/transdroid/core/gui/navigation/NavigationHelper.java @@ -26,14 +26,14 @@ public class NavigationHelper { /** * Use with {@link Crouton#showText(android.app.Activity, int, Style)} (and variants) to display error messages. */ - public Style CROUTON_ERROR_STYLE = new Style.Builder().setBackgroundColor(R.color.crouton_error).setTextSize(13) - .setDuration(2500).build(); - + public static Style CROUTON_ERROR_STYLE = new Style.Builder().setBackgroundColor(R.color.crouton_error) + .setTextSize(13).setDuration(2500).build(); + /** * Use with {@link Crouton#showText(android.app.Activity, int, Style)} (and variants) to display info messages. */ - public Style CROUTON_INFO_STYLE = new Style.Builder().setBackgroundColor(R.color.crouton_info).setTextSize(13) - .setDuration(1500).build(); + public static Style CROUTON_INFO_STYLE = new Style.Builder().setBackgroundColor(R.color.crouton_info) + .setTextSize(13).setDuration(1500).build(); /** * Whether any search-related UI components should be shown in the interface. At the moment returns false only if we diff --git a/core/src/org/transdroid/core/gui/settings/SystemSettingsActivity.java b/core/src/org/transdroid/core/gui/settings/SystemSettingsActivity.java index 60adc3fa..8e6da89f 100644 --- a/core/src/org/transdroid/core/gui/settings/SystemSettingsActivity.java +++ b/core/src/org/transdroid/core/gui/settings/SystemSettingsActivity.java @@ -41,8 +41,6 @@ public class SystemSettingsActivity extends SherlockPreferenceActivity { protected static final int DIALOG_EXPORTSETTINGS = 3; protected static final String INSTALLHELP_URI = "http://www.transdroid.org/download/"; - @Bean - protected NavigationHelper navigationHelper; @Bean protected ApplicationSettings applicationSettings; @Bean @@ -160,13 +158,13 @@ public class SystemSettingsActivity extends SherlockPreferenceActivity { try { settingsPersistence.importSettings(prefs, SettingsPersistence.DEFAULT_SETTINGS_FILE); Crouton.showText(SystemSettingsActivity.this, R.string.pref_import_success, - navigationHelper.CROUTON_INFO_STYLE); + NavigationHelper.CROUTON_INFO_STYLE); } catch (FileNotFoundException e) { Crouton.showText(SystemSettingsActivity.this, R.string.error_file_not_found, - navigationHelper.CROUTON_ERROR_STYLE); + NavigationHelper.CROUTON_ERROR_STYLE); } catch (JSONException e) { Crouton.showText(SystemSettingsActivity.this, R.string.error_no_valid_settings_file, - navigationHelper.CROUTON_ERROR_STYLE); + NavigationHelper.CROUTON_ERROR_STYLE); } } }; @@ -178,13 +176,13 @@ public class SystemSettingsActivity extends SherlockPreferenceActivity { try { settingsPersistence.exportSettings(prefs, SettingsPersistence.DEFAULT_SETTINGS_FILE); Crouton.showText(SystemSettingsActivity.this, R.string.pref_export_success, - navigationHelper.CROUTON_INFO_STYLE); + NavigationHelper.CROUTON_INFO_STYLE); } catch (JSONException e) { Crouton.showText(SystemSettingsActivity.this, R.string.error_cant_write_settings_file, - navigationHelper.CROUTON_ERROR_STYLE); + NavigationHelper.CROUTON_ERROR_STYLE); } catch (IOException e) { Crouton.showText(SystemSettingsActivity.this, R.string.error_cant_write_settings_file, - navigationHelper.CROUTON_ERROR_STYLE); + NavigationHelper.CROUTON_ERROR_STYLE); } } };