package org.limewire.ui.swing.settings;
import java.io.File;
import java.util.Collection;
import org.limewire.core.api.Category;
import org.limewire.core.settings.LimeProps;
import org.limewire.setting.BooleanSetting;
import org.limewire.setting.FileArraySetting;
import org.limewire.setting.FileSetting;
import org.limewire.setting.FloatSetting;
import org.limewire.setting.IntSetting;
import org.limewire.setting.StringSetting;
import org.limewire.ui.swing.search.SearchViewType;
import org.limewire.util.CommonUtils;
import org.limewire.util.OSUtils;
import com.google.common.collect.ImmutableList;
/**
* Settings to deal with UI.
*/
public final class SwingUiSettings extends LimeProps {
private SwingUiSettings() {}
/** The directories that have been warned as bad Vista directories. */
public static final FileArraySetting VISTA_WARN_DIRECTORIES =
FACTORY.createFileArraySetting("VISTA_WARN_DIRECTORIES", new File[0]);
/**
* Whether or not 'REMEMBER_ME' is checked -- this has nothing to do with
* auto logging in. It's only the state of the REMEMBER ME checkbox, so if
* you uncheck it it doesn't stay checked on the next login.
*/
public static final BooleanSetting REMEMBER_ME_CHECKED =
FACTORY.createBooleanSetting("REMEMBER_ME_XMPP", true);
/** Show classic warning. */
public static final BooleanSetting SHOW_CLASSIC_REMINDER =
FACTORY.createBooleanSetting("SHOW_CLASSIC_SEARCH_REMINDER", true);
/**
* Setting for whether or not to group similar results
*/
public static final BooleanSetting GROUP_SIMILAR_RESULTS_ENABLED =
FACTORY.createBooleanSetting("GROUP_SIMILAR_RESULTS_ENABLED", true);
/**
* Setting for whether to display search tips for smart queries.
* If true, tips should be displayed, if false they should not.
*/
public static final BooleanSetting SHOW_SMART_SUGGESTIONS =
FACTORY.createBooleanSetting("SHOW_SMART_SUGGESTIONS", true);
/**
* Setting for whether to display old searches as search tips. If true,
* old search will be displayed as tips, if false they won't be displayed
*/
public static final BooleanSetting KEEP_SEARCH_HISTORY =
FACTORY.createBooleanSetting("KEEP_SEARCH_HISTORY", true);
/**
* The default search category for the search bar.
*/
public static final IntSetting DEFAULT_SEARCH_CATEGORY_ID =
FACTORY.createIntSetting("DEFAULT_SEARCH_CATEGORY_ID", -1);
/**
* The default search view, list versus classic.
*/
public static final IntSetting SEARCH_VIEW_TYPE_ID =
FACTORY.createIntSetting("SEARCH_VIEW_TYPE_ID", -1);
/**
* The view type used for torrent searches, by default the table
* view.
*/
public static final IntSetting TORRENT_SEARCH_VIEW_TYPE_ID =
FACTORY.createIntSetting("TORRENT_SEARCH_VIEW_TYPE_ID", SearchViewType.TABLE.getId());
/**
* Auto rename new downloads with filenames matching old downloads.
*/
public static final BooleanSetting AUTO_RENAME_DUPLICATE_FILES =
FACTORY.createBooleanSetting("AUTO_RENAME_DUPLICATE_FILES", true);
/** True if any positions have been set. */
public static final BooleanSetting POSITIONS_SET =
FACTORY.createBooleanSetting("POSITIONS_SET", false);
/**
* The width that the application should be.
*/
public static final IntSetting APP_WIDTH =
FACTORY.createIntSetting("APP_WIDTH_V5", 1024);
/**
* The height that the application should be.
*/
public static final IntSetting APP_HEIGHT =
FACTORY.createIntSetting("APP_HEIGHT_V5", 768);
/**
* The x position of the window for the next time the application
* is started.
*/
public static final IntSetting WINDOW_X =
FACTORY.createIntSetting("WINDOW_X_V5", 0).setAlwaysSave(true);
/**
* The y position of the window for the next time the application
* is started.
*/
public static final IntSetting WINDOW_Y =
FACTORY.createIntSetting("WINDOW_Y_V5", 0).setAlwaysSave(true);
/** Setting for whether or not LW should start maximized. */
public static final BooleanSetting MAXIMIZE_WINDOW =
FACTORY.createBooleanSetting("MAXIMIZE_WINDOW_V5", false);
/**
* A flag for whether or not the application should be minimized
* to the system tray on windows.
*/
public static final BooleanSetting MINIMIZE_TO_TRAY =
FACTORY.createBooleanSetting("MINIMIZE_TO_TRAY",
OSUtils.supportsTray());
/**
* Whether LimeWire should handle magnets.
*/
public static final BooleanSetting HANDLE_MAGNETS =
FACTORY.createBooleanSetting("HANDLE_MAGNETS", true);
/**
* Whether LimeWire should handle torrents.
*/
public static final BooleanSetting HANDLE_TORRENTS =
FACTORY.createBooleanSetting("HANDLE_TORRENTS", true);
/**
* Whether LimeWire should warn user about file association changes.
*/
public static final BooleanSetting WARN_FILE_ASSOCIATION_CHANGES =
FACTORY.createBooleanSetting("WARN_FILE_ASSOCIATION_CHANGES", true);
/** The last directory used for opening a file chooser. */
public static final FileSetting LAST_FILECHOOSER_DIRECTORY =
FACTORY.createFileSetting("LAST_FILECHOOSER_DIR", getDefaultLastFileChooserDir()).setAlwaysSave(true);
/** Whether collecting and reporting usage stats is allowed.*/
public static final BooleanSetting USAGE_STATS =
FACTORY.createBooleanSetting("USAGE_STATS", false);
/** Setting for if native icons should be preloaded. */
public static final BooleanSetting PRELOAD_NATIVE_ICONS =
FACTORY.createBooleanSetting("PRELOAD_NATIVE_ICONS", true);
/**
* Setting that globally enables or disables notifications.
*/
public static final BooleanSetting SHOW_NOTIFICATIONS =
FACTORY.createBooleanSetting("SHOW_NOTIFICATIONS", true);
/**
* Setting that globally enables or disables notification sounds.
*/
public static final BooleanSetting PLAY_NOTIFICATION_SOUND =
FACTORY.createBooleanSetting("PLAY_NOTIFICATION_SOUND", false);
/** User-defined custom jabber server. */
public static final StringSetting USER_DEFINED_JABBER_SERVICENAME =
(StringSetting)FACTORY.createStringSetting("CUSTOM_JABBER_SERVICENAME", "").setPrivate(true);
public static final StringSetting XMPP_AUTO_LOGIN =
(StringSetting)FACTORY.createStringSetting("XMPP_AUTO_LOGIN", "").setPrivate(true);
/** If the 'offline contacts' in the nav are collapsed. */
public static final BooleanSetting OFFLINE_COLLAPSED =
FACTORY.createBooleanSetting("OFFLINE_CONTACTS_COLLAPSED", true);
/** If the 'online contacts' in the nav are collapsed. */
public static final BooleanSetting ONLINE_COLLAPSED =
FACTORY.createBooleanSetting("ONLINE_CONTACTS_COLLAPSED", false);
/** If the LimeWire media player is enabled. */
public static final BooleanSetting PLAYER_ENABLED =
FACTORY.createBooleanSetting("PLAYER_ENABLED", true);
/** Volume for the LimeWire media player. */
public static final FloatSetting PLAYER_VOLUME =
FACTORY.createFloatSetting("PLAYER_VOLUME", .5f, 0, 1);
/** Setting for whether or not video should stretch to fill the screen. */
public static final BooleanSetting VIDEO_FIT_TO_SCREEN =
FACTORY.createBooleanSetting("VIDEO_FIT_TO_SCREEN", false);
/** Shows a sign-on overlay message to highlight the Library/Private Shared feature. */
public static final BooleanSetting SHOW_LIBRARY_OVERLAY_MESSAGE =
FACTORY.createBooleanSetting("SHOW_LIBRARY_OVERLAY_MESSAGE", true);
/** Shows a sign-on overlay message to highlight the Sharing features. */
public static final BooleanSetting SHOW_SHARING_OVERLAY_MESSAGE =
FACTORY.createBooleanSetting("SHOW_SHARING_OVERLAY_MESSAGE", true);
/** If the Library filters are displayed or not. */
public static final BooleanSetting SHOW_LIBRARY_FILTERS =
FACTORY.createBooleanSetting("SHOW_LIBRARY_FILTERS", true);
/** Setting for whether or not to resolve host names in Advanced Tools. */
public static final BooleanSetting RESOLVE_CONNECTION_HOSTNAMES =
FACTORY.createBooleanSetting("RESOLVE_CONNECTION_HOSTNAMES", true);
/** Saves the bottom tray size when the tray is resized. */
public static final IntSetting BOTTOM_TRAY_SIZE =
FACTORY.createIntSetting("DOWNLOAD_TRAY_SIZE", 0);
/** Hides the bottom tray size when all transfers are cleared. */
public static final BooleanSetting HIDE_BOTTOM_TRAY_WHEN_NO_TRANSFERS =
FACTORY.createBooleanSetting("HIDE_BOTTOM_TRAY_WHEN_NO_TRANSFERS", true);
/** Displays total bandwidth for transfers in bottom tray header. */
public static final BooleanSetting SHOW_TOTAL_BANDWIDTH =
FACTORY.createBooleanSetting("SHOW_TOTAL_BANDWIDTH", false);
/**
* Returns the default directory for the file chooser.
* Defaults to the users home directory if it exists,
* otherwise the current directory is used.
*/
private static File getDefaultLastFileChooserDir() {
File defaultDirectory = CommonUtils.getUserHomeDir();
if(defaultDirectory == null || !defaultDirectory.exists()) {
defaultDirectory = CommonUtils.getCurrentDirectory();
}
return defaultDirectory;
}
/** True if AUDIO files are added by default when adding a folder. */
public static final BooleanSetting CATEGORY_AUDIO_DEFAULT =
FACTORY.createBooleanSetting("MANAGE_AUDIO_FILES", true);
/** True if VIDEO files are added by default when adding a folder. */
public static final BooleanSetting CATEGORY_VIDEO_DEFAULT =
FACTORY.createBooleanSetting("MANAGE_VIDEO_FILES", true);
/** True if IMAGES files are added by default when adding a folder. */
public static final BooleanSetting CATEGORY_IMAGES_DEFAULT =
FACTORY.createBooleanSetting("MANAGE_IMAGES_FILES", true);
/** True if DOCUMENTS files are added by default when adding a folder. */
public static final BooleanSetting CATEGORY_DOCUMENTS_DEFAULT =
FACTORY.createBooleanSetting("MANAGE_DOCUMENTS_FILES", false);
/** True if PROGRAMS files are added by default when adding a folder. */
public static final BooleanSetting CATEGORY_PROGRAMS_DEFAULT =
FACTORY.createBooleanSetting("MANAGE_PROGRAMS_FILES", false);
/** Returns all categories that should be selected by default when adding a folder. */
public static Collection<Category> getDefaultSelectedCategories() {
ImmutableList.Builder<Category> builder = ImmutableList.builder();
if(CATEGORY_AUDIO_DEFAULT.get()) {
builder.add(Category.AUDIO);
}
if(CATEGORY_DOCUMENTS_DEFAULT.get()) {
builder.add(Category.DOCUMENT);
}
if(CATEGORY_IMAGES_DEFAULT.get()) {
builder.add(Category.IMAGE);
}
if(CATEGORY_PROGRAMS_DEFAULT.get()) {
builder.add(Category.PROGRAM);
}
if(CATEGORY_VIDEO_DEFAULT.get()) {
builder.add(Category.VIDEO);
}
return builder.build();
}
/**
* Whether or not to show the downloads tray. Whether there are any active downloads or not.
*/
public static final BooleanSetting SHOW_TRANSFERS_TRAY = FACTORY.createBooleanSetting(
"ALWAYS_SHOW_DOWNLOADS_TRAY", false);
/** Setting for the Download table sort direction. */
public static final BooleanSetting DOWNLOAD_SORT_ASCENDING =
FACTORY.createBooleanSetting("DOWNLOAD_SORT_ASCENDING", false);
/** Setting for the Download table sort key. */
public static final StringSetting DOWNLOAD_SORT_KEY =
FACTORY.createStringSetting("DOWNLOAD_SORT_KEY", "ORDER_ADDED");
/** Setting for the Upload table sort direction. */
public static final BooleanSetting UPLOAD_SORT_ASCENDING =
FACTORY.createBooleanSetting("UPLOAD_SORT_ASCENDING", true);
/** Setting for the Upload table sort key. */
public static final StringSetting UPLOAD_SORT_KEY =
FACTORY.createStringSetting("UPLOAD_SORT_KEY", "ORDER_STARTED");
/** Setting for do-not-show checkbox for download dangerous warning. */
public static final BooleanSetting HIDE_DOWNLOAD_DANGEROUS =
FACTORY.createBooleanSetting("HIDE_DOWNLOAD_DANGEROUS", true);
/** Setting for do-not-show checkbox for download scan failed warning. */
public static final BooleanSetting HIDE_DOWNLOAD_SCAN_FAILED =
FACTORY.createBooleanSetting("HIDE_DOWNLOAD_SCAN_FAILED", true);
/** Setting for do-not-show checkbox for download threat found warning. */
public static final BooleanSetting HIDE_DOWNLOAD_THREAT_FOUND =
FACTORY.createBooleanSetting("HIDE_DOWNLOAD_THREAT_FOUND", true);
/** Notify user immediately when downloaded file is dangerous. */
public static final BooleanSetting WARN_DOWNLOAD_DANGEROUS =
FACTORY.createBooleanSetting("WARN_DOWNLOAD_DANGEROUS", true);
/** Notify user immediately when scan aborted for downloaded file. */
public static final BooleanSetting WARN_DOWNLOAD_SCAN_FAILED =
FACTORY.createBooleanSetting("WARN_DOWNLOAD_SCAN_FAILED", true);
/** Notify user immediately when threat found in downloaded file. */
public static final BooleanSetting WARN_DOWNLOAD_THREAT_FOUND =
FACTORY.createBooleanSetting("WARN_DOWNLOAD_THREAT_FOUND", true);
}