/*
* Created by Angel Leon (@gubatron), Alden Torres (aldenml)
* Copyright (c) 2011-2013, FrostWire(R). All rights reserved.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.bt.download.android.core;
import com.frostwire.util.ByteUtils;
import android.os.Environment;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
/**
*
* @author gubatron
* @author aldenml
*
*/
final class ConfigurationDefaults {
private final Map<String, Object> defaultValues;
private final Map<String, Object> resetValues;
public ConfigurationDefaults() {
defaultValues = new HashMap<String, Object>();
resetValues = new HashMap<String, Object>();
load();
}
public Map<String, Object> getDefaultValues() {
return Collections.unmodifiableMap(defaultValues);
}
public Map<String, Object> getResetValues() {
return Collections.unmodifiableMap(resetValues);
}
private void load() {
defaultValues.put(Constants.PREF_KEY_CORE_UUID, ByteUtils.uuidToByteArray(UUID.randomUUID()));
defaultValues.put(Constants.PREF_KEY_CORE_LAST_SEEN_VERSION,"");//won't know until I see it.
defaultValues.put(Constants.PREF_KEY_GUI_NICKNAME, "Newbie");
defaultValues.put(Constants.PREF_KEY_GUI_VIBRATE_ON_FINISHED_DOWNLOAD, true);
defaultValues.put(Constants.PREF_KEY_GUI_SHOW_SHARE_INDICATION, true);
defaultValues.put(Constants.PREF_KEY_GUI_LAST_MEDIA_TYPE_FILTER, Constants.FILE_TYPE_AUDIO);
defaultValues.put(Constants.PREF_KEY_GUI_TOS_ACCEPTED, false);
defaultValues.put(Constants.PREF_KEY_GUI_INITIAL_SETTINGS_COMPLETE, false);
defaultValues.put(Constants.PREF_KEY_GUI_SHOW_TRANSFERS_ON_DOWNLOAD_START, true);
defaultValues.put(Constants.PREF_KEY_GUI_SHOW_NEW_TRANSFER_DIALOG, true);
defaultValues.put(Constants.PREF_KEY_GUI_SUPPORT_FROSTWIRE, Constants.IS_FREE_DISTRIBUTION);
defaultValues.put(Constants.PREF_KEY_GUI_SUPPORT_FROSTWIRE_THRESHOLD, true);
defaultValues.put(Constants.PREF_KEY_GUI_SHOW_TV_MENU_ITEM, true);
defaultValues.put(Constants.PREF_KEY_GUI_INITIALIZE_OFFERCAST_LOCKSCREEN,true);
defaultValues.put(Constants.PREF_KEY_GUI_INITIALIZE_APPIA, true);
defaultValues.put(Constants.PREF_KEY_GUI_USE_APPIA_SEARCH, true);
defaultValues.put(Constants.PREF_KEY_SEARCH_COUNT_DOWNLOAD_FOR_TORRENT_DEEP_SCAN, 20);
defaultValues.put(Constants.PREF_KEY_SEARCH_COUNT_ROUNDS_FOR_TORRENT_DEEP_SCAN, 10);
defaultValues.put(Constants.PREF_KEY_SEARCH_INTERVAL_MS_FOR_TORRENT_DEEP_SCAN, 2000);
defaultValues.put(Constants.PREF_KEY_SEARCH_MIN_SEEDS_FOR_TORRENT_DEEP_SCAN, 20); // this number must be bigger than PREF_KEY_SEARCH_MIN_SEEDS_FOR_TORRENT_RESULT to become relevant
defaultValues.put(Constants.PREF_KEY_SEARCH_MIN_SEEDS_FOR_TORRENT_RESULT, 20);
defaultValues.put(Constants.PREF_KEY_SEARCH_MAX_TORRENT_FILES_TO_INDEX, 100); // no ultra big torrents here
defaultValues.put(Constants.PREF_KEY_SEARCH_FULLTEXT_SEARCH_RESULTS_LIMIT, 256);
defaultValues.put(Constants.PREF_KEY_SEARCH_USE_EXTRATORRENT, true);
defaultValues.put(Constants.PREF_KEY_SEARCH_USE_MININOVA, true);
defaultValues.put(Constants.PREF_KEY_SEARCH_USE_VERTOR, true);
defaultValues.put(Constants.PREF_KEY_SEARCH_USE_YOUTUBE, true);
defaultValues.put(Constants.PREF_KEY_SEARCH_USE_SOUNDCLOUD, true);
defaultValues.put(Constants.PREF_KEY_SEARCH_USE_ARCHIVEORG, true);
defaultValues.put(Constants.PREF_KEY_SEARCH_USE_FROSTCLICK, true);
defaultValues.put(Constants.PREF_KEY_SEARCH_USE_BITSNOOP, true);
defaultValues.put(Constants.PREF_KEY_SEARCH_USE_TORLOCK, true);
defaultValues.put(Constants.PREF_KEY_SEARCH_USE_EZTV, true);
defaultValues.put(Constants.PREF_KEY_SEARCH_USE_APPIA, true);
defaultValues.put(Constants.PREF_KEY_SEARCH_USE_TPB, true);
defaultValues.put(Constants.PREF_KEY_SEARCH_USE_MONOVA, true);
defaultValues.put(Constants.PREF_KEY_SEARCH_USE_YIFY, true);
defaultValues.put(Constants.PREF_KEY_SEARCH_USE_TORRENTSFM, true);
defaultValues.put(Constants.PREF_KEY_NETWORK_USE_RANDOM_LISTENING_PORT, true);
defaultValues.put(Constants.PREF_KEY_NETWORK_USE_UPNP, false);
defaultValues.put(Constants.PREF_KEY_NETWORK_USE_MOBILE_DATA, true);
defaultValues.put(Constants.PREF_KEY_NETWORK_MAX_CONCURRENT_UPLOADS, 3);
defaultValues.put(Constants.PREF_KEY_NETWORK_PINGS_INTERVAL, 4000);
defaultValues.put(Constants.PREF_KEY_TRANSFER_SHARE_FINISHED_DOWNLOADS, false);
defaultValues.put(Constants.PREF_KEY_TORRENT_SEED_FINISHED_TORRENTS, false);
defaultValues.put(Constants.PREF_KEY_TORRENT_SEED_FINISHED_TORRENTS_WIFI_ONLY, true);
defaultValues.put(Constants.PREF_KEY_TORRENT_MAX_DOWNLOAD_SPEED, Long.valueOf(0));
defaultValues.put(Constants.PREF_KEY_TORRENT_MAX_UPLOAD_SPEED, Long.valueOf(0));
defaultValues.put(Constants.PREF_KEY_TORRENT_MAX_DOWNLOADS, Long.valueOf(4));
defaultValues.put(Constants.PREF_KEY_TORRENT_MAX_UPLOADS, Long.valueOf(4));
defaultValues.put(Constants.PREF_KEY_TORRENT_MAX_TOTAL_CONNECTIONS, Long.valueOf(200));
defaultValues.put(Constants.PREF_KEY_TORRENT_MAX_PEERS, Long.valueOf(200));
defaultValues.put(Constants.PREF_KEY_STORAGE_PATH, Environment.getExternalStorageDirectory().getAbsolutePath()); // /mnt/sdcard
defaultValues.put(Constants.PREF_KEY_UXSTATS_ENABLED, true);
resetValue(Constants.PREF_KEY_NETWORK_PINGS_INTERVAL);
resetValue(Constants.PREF_KEY_SEARCH_COUNT_DOWNLOAD_FOR_TORRENT_DEEP_SCAN);
resetValue(Constants.PREF_KEY_SEARCH_COUNT_ROUNDS_FOR_TORRENT_DEEP_SCAN);
resetValue(Constants.PREF_KEY_SEARCH_INTERVAL_MS_FOR_TORRENT_DEEP_SCAN);
resetValue(Constants.PREF_KEY_SEARCH_MIN_SEEDS_FOR_TORRENT_DEEP_SCAN);
resetValue(Constants.PREF_KEY_SEARCH_MIN_SEEDS_FOR_TORRENT_RESULT);
resetValue(Constants.PREF_KEY_SEARCH_MAX_TORRENT_FILES_TO_INDEX);
resetValue(Constants.PREF_KEY_SEARCH_FULLTEXT_SEARCH_RESULTS_LIMIT);
}
private void resetValue(String key) {
resetValues.put(key, defaultValues.get(key));
}
}