/*
* Copyright (c) 2012 Hai Bison
*
* See the file LICENSE at the root directory of this project for copying
* permission.
*/
package group.pals.android.lib.ui.filechooser.prefs;
import group.pals.android.lib.ui.filechooser.FileChooserActivity.ViewType;
import group.pals.android.lib.ui.filechooser.R;
import group.pals.android.lib.ui.filechooser.services.IFileProvider.SortType;
import android.content.Context;
/**
* Display preferences.
*
* @author Hai Bison
* @since v4.3 beta
*
*/
public class DisplayPrefs extends Prefs {
/**
* Delay time for waiting for other threads inside a thread... This is in
* milliseconds.
*/
public static final int _DelayTimeWaitingThreads = 10;
/**
* Default history capacity. Because we need to check duplicates before
* showing history list, this value should be small.
*/
public static final int _DefHistoryCapacity = 51;
/**
* Gets view type.
*
* @param c
* {@link Context}
* @return {@link ViewType}
*/
public static ViewType getViewType(Context c) {
return ViewType.List.ordinal() == p(c).getInt(c.getString(R.string.afc_pkey_display_view_type),
c.getResources().getInteger(R.integer.afc_pkey_display_view_type_def)) ? ViewType.List : ViewType.Grid;
}
/**
* Sets view type.
*
* @param c
* {@link Context}
* @param v
* {@link ViewType}, if {@code null}, default value will be used.
*/
public static void setViewType(Context c, ViewType v) {
String key = c.getString(R.string.afc_pkey_display_view_type);
if (v == null)
p(c).edit().putInt(key, c.getResources().getInteger(R.integer.afc_pkey_display_view_type_def)).commit();
else
p(c).edit().putInt(key, v.ordinal()).commit();
}
/**
* Gets sort type.
*
* @param c
* {@link Context}
* @return {@link SortType}
*/
public static SortType getSortType(Context c) {
for (SortType s : SortType.values())
if (s.ordinal() == p(c).getInt(c.getString(R.string.afc_pkey_display_sort_type),
c.getResources().getInteger(R.integer.afc_pkey_display_sort_type_def)))
return s;
return SortType.SortByName;
}
/**
* Sets {@link SortType}
*
* @param c
* {@link Context}
* @param v
* {@link SortType}, if {@code null}, default value will be used.
*/
public static void setSortType(Context c, SortType v) {
String key = c.getString(R.string.afc_pkey_display_sort_type);
if (v == null)
p(c).edit().putInt(key, c.getResources().getInteger(R.integer.afc_pkey_display_sort_type_def)).commit();
else
p(c).edit().putInt(key, v.ordinal()).commit();
}
/**
* Gets sort ascending.
*
* @param c
* {@link Context}
* @return {@code true} if sort is ascending, {@code false} otherwise.
*/
public static boolean isSortAscending(Context c) {
return p(c).getBoolean(c.getString(R.string.afc_pkey_display_sort_ascending),
c.getResources().getBoolean(R.bool.afc_pkey_display_sort_ascending_def));
}
/**
* Sets sort ascending.
*
* @param c
* {@link Context}
* @param v
* {@link Boolean}, if {@code null}, default value will be used.
*/
public static void setSortAscending(Context c, Boolean v) {
if (v == null)
v = c.getResources().getBoolean(R.bool.afc_pkey_display_sort_ascending_def);
p(c).edit().putBoolean(c.getString(R.string.afc_pkey_display_sort_ascending), v).commit();
}
/**
* Checks setting of showing time for old days in this year. Default is
* {@code false}.
*
* @param c
* {@link Context}.
* @return {@code true} or {@code false}.
* @since v4.7 beta
*/
public static boolean isShowTimeForOldDaysThisYear(Context c) {
return p(c).getBoolean(c.getString(R.string.afc_pkey_display_show_time_for_old_days_this_year),
c.getResources().getBoolean(R.bool.afc_pkey_display_show_time_for_old_days_this_year_def));
}
/**
* Enables or disables showing time of old days in this year.
*
* @param c
* {@link Context}.
* @param v
* your preferred flag. If {@code null}, default will be used (
* {@code false}).
* @since v4.7 beta
*/
public static void setShowTimeForOldDaysThisYear(Context c, Boolean v) {
if (v == null)
v = c.getResources().getBoolean(R.bool.afc_pkey_display_show_time_for_old_days_this_year_def);
p(c).edit().putBoolean(c.getString(R.string.afc_pkey_display_show_time_for_old_days_this_year), v).commit();
}
/**
* Checks setting of showing time for old days in last year and older.
* Default is {@code false}.
*
* @param c
* {@link Context}.
* @return {@code true} or {@code false}.
* @since v4.7 beta
*/
public static boolean isShowTimeForOldDays(Context c) {
return p(c).getBoolean(c.getString(R.string.afc_pkey_display_show_time_for_old_days),
c.getResources().getBoolean(R.bool.afc_pkey_display_show_time_for_old_days_def));
}
/**
* Enables or disables showing time of old days in last year and older.
*
* @param c
* {@link Context}.
* @param v
* your preferred flag. If {@code null}, default will be used (
* {@code false}).
* @since v4.7 beta
*/
public static void setShowTimeForOldDays(Context c, Boolean v) {
if (v == null)
v = c.getResources().getBoolean(R.bool.afc_pkey_display_show_time_for_old_days_def);
p(c).edit().putBoolean(c.getString(R.string.afc_pkey_display_show_time_for_old_days), v).commit();
}
/**
* Checks if remembering last location is enabled or not.
*
* @param c
* {@link Context}.
* @return {@code true} if remembering last location is enabled.
* @since v4.7 beta
*/
public static boolean isRememberLastLocation(Context c) {
return p(c).getBoolean(c.getString(R.string.afc_pkey_display_remember_last_location),
c.getResources().getBoolean(R.bool.afc_pkey_display_remember_last_location_def));
}
/**
* Enables or disables remembering last location.
*
* @param c
* {@link Context}.
* @param v
* your preferred flag. If {@code null}, default will be used (
* {@code true}).
* @since v4.7 beta
*/
public static void setRememberLastLocation(Context c, Boolean v) {
if (v == null)
v = c.getResources().getBoolean(R.bool.afc_pkey_display_remember_last_location_def);
p(c).edit().putBoolean(c.getString(R.string.afc_pkey_display_remember_last_location), v).commit();
}
/**
* Gets last location.
*
* @param c
* {@link Context}.
* @return the last location, or {@code null} if not available.
* @since v4.7 beta
*/
public static String getLastLocation(Context c) {
return p(c).getString(c.getString(R.string.afc_pkey_display_last_location), null);
}
/**
* Sets last location.
*
* @param c
* {@link Context}.
* @param v
* the last location.
*/
public static void setLastLocation(Context c, String v) {
p(c).edit().putString(c.getString(R.string.afc_pkey_display_last_location), v).commit();
}
/*
* HELPER CLASSES
*/
/**
* File time display options.
*
* @see DisplayPrefs#isShowTimeForOldDaysThisYear(Context)
* @see DisplayPrefs#isShowTimeForOldDays(Context)
* @author Hai Bison
* @since v4.9 beta
*
*/
public static class FileTimeDisplay {
private boolean mShowTimeForOldDaysThisYear;
private boolean mShowTimeForOldDays;
/**
* Creates new instance.
*
* @param showTimeForOldDaysThisYear
* @param showTimeForOldDays
*/
public FileTimeDisplay(boolean showTimeForOldDaysThisYear, boolean showTimeForOldDays) {
mShowTimeForOldDaysThisYear = showTimeForOldDaysThisYear;
mShowTimeForOldDays = showTimeForOldDays;
}// FileTimeDisplay()
public boolean isShowTimeForOldDaysThisYear() {
return mShowTimeForOldDaysThisYear;
}// isShowTimeForOldDaysThisYear()
public FileTimeDisplay setShowTimeForOldDaysThisYear(boolean v) {
mShowTimeForOldDaysThisYear = v;
return this;
}// setShowTimeForOldDaysThisYear()
public boolean isShowTimeForOldDays() {
return mShowTimeForOldDays;
}// isShowTimeForOldDays()
public FileTimeDisplay setShowTimeForOldDays(boolean v) {
mShowTimeForOldDays = v;
return this;
}// setShowTimeForOldDays()
}// FileTimeDisplay
}