/*
* Copyright (C) 2014 Saravan Pantham
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.jams.music.player.SettingsActivity;
import android.accounts.Account;
import android.accounts.AccountManager;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Paint;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceActivity;
import android.preference.PreferenceCategory;
import android.preference.PreferenceManager;
import android.preference.PreferenceScreen;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
import android.widget.Toast;
import com.jams.music.player.R;
import com.jams.music.player.AsyncTasks.AsyncGoogleMusicAuthenticationTask;
import com.jams.music.player.BlacklistManagerActivity.BlacklistManagerActivity;
import com.jams.music.player.Helpers.TypefaceHelper;
import com.jams.music.player.Helpers.UIElementsHelper;
import com.jams.music.player.InAppBilling.IabHelper;
import com.jams.music.player.InAppBilling.IabResult;
import com.jams.music.player.InAppBilling.Purchase;
import com.jams.music.player.Services.AutoFetchAlbumArtService;
import com.jams.music.player.Utils.Common;
public class SettingsActivity____ extends PreferenceActivity {
//Context.
public static Context mContext;
public static SettingsActivity____ mSettingsActivity;
private Common mApp;
//Preference Manager.
private SharedPreferences sharedPreferences;
private PreferenceManager preferenceManager;
//Upgrade Preferences.
private Preference upgradePreference;
//Customization Preferences.
private Preference appThemePreference;
private Preference playerColorSchemePreference;
private Preference trackChangeAnimationPreference;
private Preference defaultScreenPreference;
private Preference artistsLayoutPreference;
private Preference albumArtistsLayoutPreference;
private Preference albumsLayoutPreference;
private Preference lockscreenControlsPreference;
//Google Play Music Preferences.
private Preference chooseGooglePlayMusicAccountPreference;
private Preference getPinnedSongsPreference;
//Folder View Preferences.
private Preference defaultFolderPreference;
//Music Libraries Preferences.
private Preference addMusicLibraryPreference;
private Preference editMusicLibraryPreference;
private Preference deleteMusicLibraryPreference;
//Album Art Preferences.
private Preference albumArtStylePreference;
private Preference albumArtSourcesPreference;
private Preference albumArtScanDownloadPreference;
//Music Folders Preferences.
private Preference selectFoldersPreference;
private Preference rescanFoldersPreference;
private Preference scanFrequencyPreference;
//Blacklist Preferences.
private Preference blacklistManagerPreference;
private Preference unblacklistAllPreference;
//Scrobbling Preference.
private Preference scrobblingPreference;
//Audio Settings Preferences.
private Preference headphonesUnplugActionPreference;
private Preference crossfadeTracksPreference;
private Preference crossfadeTracksDurationPreference;
private Preference equalizerPreference;
//About & Contact Preferences.
private Preference licensesPreference;
private Preference contactUsPreference;
public static Dialog dialogHolder;
public static String mAccountName = "";
public static boolean accountPicked = false;
private IabHelper mHelper;
static final String ITEM_SKU = "com.jams.music.player.unlock";
protected boolean mPurchased;
//Misc.
private AlertDialog mTrackChangeAnimationDialog;
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
//Context.
mContext = this;
mSettingsActivity = this;
mApp = (Common) mContext.getApplicationContext();
//Initialize SharedPreferences.
sharedPreferences = this.getSharedPreferences("com.jams.music.player", Context.MODE_PRIVATE);
//Set the UI theme.
if (mApp.getCurrentTheme()==Common.DARK_THEME) {
this.setTheme(R.style.AppThemeNoActionBar);
} else {
this.setTheme(R.style.AppThemeNoActionBarLight);
}
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
preferenceManager = this.getPreferenceManager();
//Retrieve the preferences based on their unique keys.
upgradePreference = preferenceManager.findPreference("preference_key_upgrade");
appThemePreference = preferenceManager.findPreference("preference_key_app_theme");
playerColorSchemePreference = preferenceManager.findPreference("preference_key_player_color_scheme");
trackChangeAnimationPreference = preferenceManager.findPreference("preference_key_track_change_animation");
defaultScreenPreference = preferenceManager.findPreference("preference_key_startup_screen");
artistsLayoutPreference = preferenceManager.findPreference("preference_key_artists_layout");
albumArtistsLayoutPreference = preferenceManager.findPreference("preference_key_album_artists_layout");
albumsLayoutPreference = preferenceManager.findPreference("preference_key_albums_layout");
lockscreenControlsPreference = preferenceManager.findPreference("preference_key_lockscreen_controls");
albumArtStylePreference = preferenceManager.findPreference("preference_key_album_art_style");
albumArtSourcesPreference = preferenceManager.findPreference("preference_key_album_art_sources");
albumArtScanDownloadPreference = preferenceManager.findPreference("preference_key_scan_download_album_art");
chooseGooglePlayMusicAccountPreference = preferenceManager.findPreference("preference_key_google_play_music_account");
getPinnedSongsPreference = preferenceManager.findPreference("preference_key_get_pinned_songs");
defaultFolderPreference = preferenceManager.findPreference("preference_key_default_folder");
addMusicLibraryPreference = preferenceManager.findPreference("preference_key_add_music_library");
editMusicLibraryPreference = preferenceManager.findPreference("preference_key_edit_music_library");
deleteMusicLibraryPreference = preferenceManager.findPreference("preference_key_delete_music_library");
selectFoldersPreference = preferenceManager.findPreference("preference_key_select_folders");
rescanFoldersPreference = preferenceManager.findPreference("preference_key_rescan_folders");
scanFrequencyPreference = preferenceManager.findPreference("preference_key_scan_frequency");
blacklistManagerPreference = preferenceManager.findPreference("preference_key_blacklist_manager");
unblacklistAllPreference = preferenceManager.findPreference("preference_key_unblacklist_all");
scrobblingPreference = preferenceManager.findPreference("preference_key_scrobbling");
headphonesUnplugActionPreference = preferenceManager.findPreference("preference_key_headphones_unplug_action");
crossfadeTracksPreference = preferenceManager.findPreference("preference_key_crossfade_tracks");
crossfadeTracksDurationPreference = preferenceManager.findPreference("preference_key_crossfade_tracks_duration");
equalizerPreference = preferenceManager.findPreference("preference_key_equalizer_toggle");
licensesPreference = preferenceManager.findPreference("preference_key_licenses");
contactUsPreference = preferenceManager.findPreference("preference_key_contact_us");
//Set the preference icons.
upgradePreference.setIcon(UIElementsHelper.getIcon(mContext, "checkmark"));
appThemePreference.setIcon(UIElementsHelper.getIcon(mContext, "color_palette"));
playerColorSchemePreference.setIcon(UIElementsHelper.getIcon(mContext, "color_palette_play"));
trackChangeAnimationPreference.setIcon(UIElementsHelper.getIcon(mContext, "customize_screens"));
defaultScreenPreference.setIcon(UIElementsHelper.getIcon(mContext, "default_screen"));
artistsLayoutPreference.setIcon(UIElementsHelper.getIcon(mContext, "mic"));
albumArtistsLayoutPreference.setIcon(UIElementsHelper.getIcon(mContext, "album_artists"));
albumsLayoutPreference.setIcon(UIElementsHelper.getIcon(mContext, "albums"));
lockscreenControlsPreference.setIcon(UIElementsHelper.getIcon(mContext, "lockscreen_controls"));
getPinnedSongsPreference.setIcon(UIElementsHelper.getIcon(mContext, "pin_settings"));
chooseGooglePlayMusicAccountPreference.setIcon(UIElementsHelper.getIcon(mContext, "accounts"));
addMusicLibraryPreference.setIcon(UIElementsHelper.getIcon(mContext, "add_new_library"));
editMusicLibraryPreference.setIcon(UIElementsHelper.getIcon(mContext, "edit_library"));
deleteMusicLibraryPreference.setIcon(UIElementsHelper.getIcon(mContext, "delete_library"));
albumArtStylePreference.setIcon(UIElementsHelper.getIcon(mContext, "cover_art_icon"));
albumArtSourcesPreference.setIcon(UIElementsHelper.getIcon(mContext, "album_art_source"));
albumArtScanDownloadPreference.setIcon(UIElementsHelper.getIcon(mContext, "auto_cover_fetch"));
defaultFolderPreference.setIcon(UIElementsHelper.getIcon(mContext, "folders_settings"));
selectFoldersPreference.setIcon(UIElementsHelper.getIcon(mContext, "folders_settings"));
rescanFoldersPreference.setIcon(UIElementsHelper.getIcon(mContext, "rescan"));
scanFrequencyPreference.setIcon(UIElementsHelper.getIcon(mContext, "scan_frequency"));
blacklistManagerPreference.setIcon(UIElementsHelper.getIcon(mContext, "manage_blacklists"));
unblacklistAllPreference.setIcon(UIElementsHelper.getIcon(mContext, "unblacklist_all"));
scrobblingPreference.setIcon(UIElementsHelper.getIcon(mContext, "scrobbling"));
headphonesUnplugActionPreference.setIcon(UIElementsHelper.getIcon(mContext, "headphones"));
crossfadeTracksPreference.setIcon(UIElementsHelper.getIcon(mContext, "crossfade_tracks"));
crossfadeTracksDurationPreference.setIcon(UIElementsHelper.getIcon(mContext, "crossfade_tracks_duration"));
equalizerPreference.setIcon(UIElementsHelper.getIcon(mContext, "equalizer_settings"));
licensesPreference.setIcon(UIElementsHelper.getIcon(mContext, "licenses"));
contactUsPreference.setIcon(UIElementsHelper.getIcon(mContext, "contact_us"));
if (sharedPreferences.getBoolean("TRIAL", true)==false) {
PreferenceScreen screen = getPreferenceScreen();
PreferenceCategory upgradePrefCategory = (PreferenceCategory) preferenceManager.findPreference("upgrade_pref_category");
screen.removePreference(upgradePrefCategory);
}
upgradePreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
//initInAppBilling();
Intent intent = new Intent(mContext, com.jams.music.player.LauncherActivity.LauncherActivity.class);
intent.putExtra("UPGRADE", true);
startActivity(intent);
finish();
return false;
}
});
//Set click listeners on each preference.
appThemePreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference arg0) {
Intent intent = new Intent(mContext, PreferenceDialogLauncherActivity.class);
intent.putExtra("INDEX", 0);
startActivity(intent);
return false;
}
});
playerColorSchemePreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference arg0) {
Intent intent = new Intent(mContext, PreferenceDialogLauncherActivity.class);
intent.putExtra("INDEX", 1);
startActivity(intent);
return false;
}
});
trackChangeAnimationPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
int selectedIndex = sharedPreferences.getInt("TRACK_CHANGE_ANIMATION", 0);
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
builder.setTitle(R.string.track_change_animation);
View layoutView = mSettingsActivity.getLayoutInflater().inflate(R.layout.generic_message_listview_dialog_layout, null);
TextView message = (TextView) layoutView.findViewById(R.id.generic_message);
ListView listView = (ListView) layoutView.findViewById(R.id.generic_listview);
message.setTypeface(TypefaceHelper.getTypeface(mContext, "RobotoCondensed-Light"));
message.setPaintFlags(message.getPaintFlags() | Paint.ANTI_ALIAS_FLAG | Paint.SUBPIXEL_TEXT_FLAG);
message.setText(R.string.track_change_animation_info);
String[] values = { mSettingsActivity.getResources().getString(R.string.slide_away),
mSettingsActivity.getResources().getString(R.string.zoom_out_and_slide_away),
mSettingsActivity.getResources().getString(R.string.depth_transformer) };
ArrayAdapter<String> adapter = new ArrayAdapter<String>(mSettingsActivity,
android.R.layout.simple_list_item_single_choice,
android.R.id.text1,
values);
listView.setAdapter(adapter);
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
listView.setItemChecked(selectedIndex, true);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int which, long arg3) {
Toast.makeText(mContext, R.string.changes_saved, Toast.LENGTH_SHORT).show();
sharedPreferences.edit().putInt("TRACK_CHANGE_ANIMATION", which).commit();
mTrackChangeAnimationDialog.dismiss();
}
});
builder.setView(layoutView);
mTrackChangeAnimationDialog = builder.create();
mTrackChangeAnimationDialog.show();
return false;
}
});
defaultScreenPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
//Get the current preference.
int currentPreference = sharedPreferences.getInt("STARTUP_SCREEN", 0);
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
//builder.setTitle(R.string.startup_screen);
builder.setSingleChoiceItems(R.array.startup_screen_items, currentPreference, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
sharedPreferences.edit().putInt("STARTUP_SCREEN", which).commit();
dialog.dismiss();
Toast.makeText(mContext, R.string.changes_saved, Toast.LENGTH_SHORT).show();
}
});
builder.create().show();
return false;
}
});
artistsLayoutPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
//Get the current preference.
int currentPreference = sharedPreferences.getInt("ARTISTS_LAYOUT_PREF", 0);
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
builder.setTitle(R.string.artists_layout);
builder.setSingleChoiceItems(R.array.layout_preference_items, currentPreference, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
sharedPreferences.edit().putInt("ARTISTS_LAYOUT_PREF", which).commit();
dialog.dismiss();
Toast.makeText(mContext, R.string.changes_saved, Toast.LENGTH_SHORT).show();
}
});
builder.create().show();
return false;
}
});
albumArtistsLayoutPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
//Get the current preference.
int currentPreference = sharedPreferences.getInt("ALBUM_ARTISTS_LAYOUT_PREF", 0);
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
builder.setTitle(R.string.album_artists_layout);
builder.setSingleChoiceItems(R.array.layout_preference_items, currentPreference, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
sharedPreferences.edit().putInt("ALBUM_ARTISTS_LAYOUT_PREF", which).commit();
dialog.dismiss();
Toast.makeText(mContext, R.string.changes_saved, Toast.LENGTH_SHORT).show();
}
});
builder.create().show();
return false;
}
});
albumsLayoutPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
//Get the current preference.
int currentPreference = sharedPreferences.getInt("ALBUMS_LAYOUT_PREF", 0);
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
builder.setTitle(R.string.albums_layout);
builder.setSingleChoiceItems(R.array.layout_preference_items, currentPreference, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
sharedPreferences.edit().putInt("ALBUMS_LAYOUT_PREF", which).commit();
dialog.dismiss();
Toast.makeText(mContext, R.string.changes_saved, Toast.LENGTH_SHORT).show();
}
});
builder.create().show();
return false;
}
});
lockscreenControlsPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
//Get the current preference.
int currentPreference = sharedPreferences.getInt(Common.SHOW_LOCKSCREEN_CONTROLS, 0);
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
//builder.setTitle(R.string.lockscreen_controls);
builder.setSingleChoiceItems(R.array.enable_disable, currentPreference, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
sharedPreferences.edit().putInt(Common.SHOW_LOCKSCREEN_CONTROLS, which).commit();
dialog.dismiss();
//Enable/disable the lockscreen controls for this session.
try {
if (which==0) {
Toast.makeText(mContext, R.string.changes_saved, Toast.LENGTH_SHORT).show();
if (sharedPreferences.getBoolean("SERVICE_RUNNING", false)==true) {
mApp.getService().initRemoteControlClient();
mApp.getService().updateRemoteControlClients(mApp.getService().getCurrentSong());
}
} else if (which==1) {
if (sharedPreferences.getBoolean("SERVICE_RUNNING", false)==true) {
Toast.makeText(mContext, R.string.lockscreen_controls_disabled_next_run, Toast.LENGTH_LONG).show();
} else {
Toast.makeText(mContext, R.string.changes_saved, Toast.LENGTH_SHORT).show();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
builder.create().show();
return false;
}
});
defaultFolderPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
builder.setTitle(R.string.default_folder_for_folders_view);
builder.setMessage(R.string.default_folder_for_folders_view_info);
builder.setPositiveButton(R.string.ok, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.create().show();
return false;
}
});
chooseGooglePlayMusicAccountPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference arg0) {
final AccountManager accountManager = AccountManager.get(mContext);
final Account[] accounts = accountManager.getAccounts();
final int size = accounts.length;
final String[] accountNames = new String[size+1];
accountNames[0] = "Don't use Google Play Music";
//Create a new array with a list of all account names on the device.
for (int i=0; i < accounts.length; i++) {
accountNames[i+1] = accounts[i].name;
}
//Get the current account name (if it exists) and get the index of the account name.
String currentAccountName = sharedPreferences.getString("GOOGLE_PLAY_MUSIC_ACCOUNT", "");
int accountIndex = -1;
if (!currentAccountName.isEmpty()) {
for (int i=0; i < accounts.length; i++) {
if (currentAccountName.equals(accountNames[i+1])) {
accountIndex = i+1;
}
}
} else {
accountIndex = 0;
}
//Display a list of all accounts that are currently on the device.
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
builder.setTitle(R.string.select_google_account);
builder.setSingleChoiceItems(accountNames, accountIndex, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int position) {
if (position!=0) {
//Start the sign-in process.
Toast.makeText(mContext, R.string.signing_in_dot_dot_dot, Toast.LENGTH_SHORT).show();
sharedPreferences.edit().putString("GOOGLE_PLAY_MUSIC_ACCOUNT", accountNames[position]).commit();
AsyncGoogleMusicAuthenticationTask task = new AsyncGoogleMusicAuthenticationTask(mContext.getApplicationContext(),
mSettingsActivity,
false,
accountNames[position]);
task.execute();
} else {
Toast.makeText(mContext, R.string.google_play_music_disabled, Toast.LENGTH_SHORT).show();
sharedPreferences.edit().putBoolean("GOOGLE_PLAY_MUSIC_ENABLED", false).commit();
sharedPreferences.edit().putString("GOOGLE_PLAY_MUSIC_ACCOUNT", "").commit();
//Restart the app.
final Intent i = getBaseContext().getPackageManager().getLaunchIntentForPackage(getBaseContext().getPackageName());
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
finish();
startActivity(i);
}
dialog.dismiss();
}
});
AlertDialog dialog = builder.create();
dialog.show();
return false;
}
});
getPinnedSongsPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference arg0) {
mApp.queueSongsToPin(true, false, null);
return false;
}
});
addMusicLibraryPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference arg0) {
Intent intent = new Intent(mContext, PreferenceDialogLauncherActivity.class);
intent.putExtra("INDEX", 13);
startActivity(intent);
return false;
}
});
editMusicLibraryPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
Intent intent = new Intent(mContext, PreferenceDialogLauncherActivity.class);
intent.putExtra("INDEX", 14);
intent.putExtra("OPERATION", "EDIT");
startActivity(intent);
return false;
}
});
deleteMusicLibraryPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference arg0) {
Intent intent = new Intent(mContext, PreferenceDialogLauncherActivity.class);
intent.putExtra("INDEX", 14);
intent.putExtra("OPERATION", "DELETE");
startActivity(intent);
return false;
}
});
albumArtStylePreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference arg0) {
Intent intent = new Intent(mContext, PreferenceDialogLauncherActivity.class);
intent.putExtra("INDEX", 3);
startActivity(intent);
return false;
}
});
albumArtSourcesPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference arg0) {
Intent intent = new Intent(mContext, PreferenceDialogLauncherActivity.class);
intent.putExtra("INDEX", 4);
startActivity(intent);
return false;
}
});
albumArtScanDownloadPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference arg0) {
//Start the service that will download album art.
mContext.startService(new Intent(mContext, AutoFetchAlbumArtService.class));
return false;
}
});
selectFoldersPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference arg0) {
Intent intent = new Intent(mContext, PreferenceDialogLauncherActivity.class);
intent.putExtra("INDEX", 5);
startActivity(intent);
return false;
}
});
rescanFoldersPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference arg0) {
//Seting the "REBUILD_LIBRARY" flag to true will force MainActivity to rescan the folders.
sharedPreferences.edit().putBoolean("REBUILD_LIBRARY", true).commit();
//Restart the app.
final Intent i = getBaseContext().getPackageManager().getLaunchIntentForPackage(getBaseContext().getPackageName());
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
finish();
startActivity(i);
return false;
}
});
scanFrequencyPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference arg0) {
Intent intent = new Intent(mContext, PreferenceDialogLauncherActivity.class);
intent.putExtra("INDEX", 7);
startActivity(intent);
return false;
}
});
blacklistManagerPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference arg0) {
/* Intent intent = new Intent(mContext, PreferenceDialogLauncherActivity.class);
intent.putExtra("INDEX", 8);
startActivity(intent);*/
/*String[] blacklistManagerChoices = { mContext.getResources().getString(R.string.manage_blacklisted_artists),
mContext.getResources().getString(R.string.manage_blacklisted_albums),
mContext.getResources().getString(R.string.manage_blacklisted_songs),
mContext.getResources().getString(R.string.manage_blacklisted_playlists) };
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
//Set the dialog title.
builder.setTitle(R.string.blacklist_manager);
builder.setItems(blacklistManagerChoices, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Bundle bundle = new Bundle();
if (which==0) {
bundle.putString("MANAGER_TYPE", "ARTISTS");
} else if (which==1) {
bundle.putString("MANAGER_TYPE", "ALBUMS");
} else if (which==2) {
bundle.putString("MANAGER_TYPE", "SONGS");
} else if (which==3) {
bundle.putString("MANAGER_TYPE", "PLAYLISTS");
}
dialog.dismiss();
Intent intent = new Intent(mContext, BlacklistManagerActivity.class);
intent.putExtras(bundle);
startActivity(intent);
}
});
builder.create().show();*/
Intent intent = new Intent(mContext, BlacklistManagerActivity.class);
startActivity(intent);
return false;
}
});
unblacklistAllPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference arg0) {
AsyncUnblacklistAllSongsTask task = new AsyncUnblacklistAllSongsTask();
task.execute();
return false;
}
});
/* bluetoothControlsPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference arg0) {
// TODO Auto-generated method stub
return false;
}
});
headphonesUnplugActionPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference arg0) {
// TODO Auto-generated method stub
return false;
}
});*/
scrobblingPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
int currentSelection = 0;
if (sharedPreferences.getInt("SCROBBLING", 0)==0) {
currentSelection = 0;
} else if (sharedPreferences.getInt("SCROBBLING", 0)==1) {
currentSelection = 1;
} else if (sharedPreferences.getInt("SCROBBLING", 0)==2) {
currentSelection = 2;
}
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
builder.setTitle(R.string.scrobbling);
builder.setSingleChoiceItems(R.array.scrobbling_options, currentSelection, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
Toast.makeText(mContext, R.string.changes_saved, Toast.LENGTH_SHORT).show();
sharedPreferences.edit().putInt("SCROBBLING", which).commit();
}
});
builder.create().show();
return false;
}
});
headphonesUnplugActionPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference arg0) {
//Get the current selection.
int currentSelection;
if (sharedPreferences.getString("UNPLUG_ACTION", "DO_NOTHING").equals("DO_NOTHING")) {
currentSelection = 0;
} else {
currentSelection = 1;
}
String[] unplugActionsArray = mContext.getResources().getStringArray(R.array.headphones_unplug_actions);
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
builder.setTitle(R.string.headphones_unplug_action);
builder.setSingleChoiceItems(unplugActionsArray, currentSelection, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
Toast.makeText(mContext, R.string.changes_saved, Toast.LENGTH_SHORT).show();
if (which==0) {
sharedPreferences.edit().putString("UNPLUG_ACTION", "DO_NOTHING").commit();
if (sharedPreferences.getBoolean("SERVICE_RUNNING", false)==true) {
mApp.getService().unregisterReceiver(mApp.getService().getHeadsetPlugReceiver());
}
} else {
sharedPreferences.edit().putString("UNPLUG_ACTION", "PAUSE_MUSIC_PLAYBACK").commit();
if (sharedPreferences.getBoolean("SERVICE_RUNNING", false)==true) {
mApp.getService().registerHeadsetPlugReceiver();
}
}
}
});
builder.create().show();
return false;
}
});
crossfadeTracksPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
int currentSelection;
if (sharedPreferences.getBoolean(Common.CROSSFADE_ENABLED, false)==true) {
currentSelection = 0;
} else {
currentSelection = 1;
}
String[] enableDisableArray = mContext.getResources().getStringArray(R.array.enable_disable);
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
builder.setTitle(R.string.crossfade_tracks);
builder.setSingleChoiceItems(enableDisableArray, currentSelection, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
Toast.makeText(mContext, R.string.changes_saved, Toast.LENGTH_SHORT).show();
if (which==0) {
sharedPreferences.edit().putBoolean(Common.CROSSFADE_ENABLED, true).commit();
//Enable crossfade for the current queue.
if (mApp.isServiceRunning() && mApp.getService().getHandler()!=null) {
mApp.getService().getHandler().post(mApp.getService().startCrossFadeRunnable);
}
} else {
sharedPreferences.edit().putBoolean(Common.CROSSFADE_ENABLED, false).commit();
//Disable crossfade for the current queue.
if (mApp.isServiceRunning() && mApp.getService().getHandler()!=null) {
mApp.getService().getHandler().removeCallbacks(mApp.getService().startCrossFadeRunnable);
mApp.getService().getHandler().removeCallbacks(mApp.getService().crossFadeRunnable);
}
}
}
});
builder.create().show();
return false;
}
});
crossfadeTracksDurationPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
AlertDialog.Builder builder = new AlertDialog.Builder(mSettingsActivity);
builder.setTitle(R.string.crossfade_duration);
RelativeLayout dialogView = (RelativeLayout) mSettingsActivity.getLayoutInflater().inflate(R.layout.dialog_crossfade_duration, null);
final TextView durationText = (TextView) dialogView.findViewById(R.id.crossfade_duration_text);
final SeekBar durationSeekBar = (SeekBar) dialogView.findViewById(R.id.crossfade_duration_seekbar);
int currentSeekBarDuration = sharedPreferences.getInt(Common.CROSSFADE_DURATION, 5);
durationSeekBar.setMax(14);
durationSeekBar.setProgress(currentSeekBarDuration);
durationText.setText(currentSeekBarDuration + " secs");
durationSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
sharedPreferences.edit().putInt(Common.CROSSFADE_DURATION, (progress+1)).commit();
durationText.setText((progress + 1) + " secs");
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
});
builder.setView(dialogView);
builder.setPositiveButton(R.string.ok, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int arg1) {
dialog.dismiss();
Toast.makeText(mContext, R.string.changes_saved, Toast.LENGTH_SHORT).show();
}
});
builder.create().show();
return false;
}
});
equalizerPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
boolean currentSetting = sharedPreferences.getBoolean("EQUALIZER_ENABLED", true);
int intCurrentSetting = -1;
if (currentSetting==true)
intCurrentSetting = 0;
else
intCurrentSetting = 1;
AlertDialog.Builder builder = new AlertDialog.Builder(mSettingsActivity);
builder.setTitle(R.string.equalizer);
builder.setSingleChoiceItems(R.array.enable_disable, intCurrentSetting, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
boolean isEnabled;
if (which==0)
isEnabled = true;
else
isEnabled = false;
sharedPreferences.edit().putBoolean("EQUALIZER_ENABLED", isEnabled).commit();
Toast.makeText(mContext, R.string.changes_saved, Toast.LENGTH_SHORT).show();
if (Build.PRODUCT.contains("HTC") && which==0) {
showHTCEqualizerIssueDialog();
}
if (sharedPreferences.getBoolean("SERVICE_RUNNING", false)==true && which==0) {
mApp.getService().initAudioFX();
} else if (sharedPreferences.getBoolean("SERVICE_RUNNING", false)==true && which==1) {
try {
mApp.getService().getEqualizerHelper().releaseEQObjects();
} catch (Exception e) {
e.printStackTrace();
}
}
dialog.dismiss();
}
private void showHTCEqualizerIssueDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
builder.setTitle(R.string.htc_devices);
builder.setMessage(R.string.htc_devices_equalizer_issue);
builder.setPositiveButton(R.string.ok, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.create().show();
}
});
builder.create().show();
return false;
}
});
licensesPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference arg0) {
Intent intent = new Intent(mContext, PreferenceDialogLauncherActivity.class);
intent.putExtra("INDEX", 12);
startActivity(intent);
return false;
}
});
contactUsPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference arg0) {
Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto","jamsmusicplayer@gmail.com", null));
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Jams Music Player Support");
startActivity(Intent.createChooser(emailIntent, "Send email"));
return false;
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//Result Code 45 = UserRecoverableAuthenticationException from GooglePlayMusicAuthenticationDialog.
if (requestCode==45) {
final Intent finalData = data;
final int finalResultCode = resultCode;
runOnUiThread(new Runnable() {
@Override
public void run() {
//An unknown error occurred.
if (finalData==null) {
Toast.makeText(mContext, R.string.unknown_error_google_music, Toast.LENGTH_LONG).show();
return;
}
//The user handled the exception properly.
if (finalResultCode==RESULT_OK) {
sharedPreferences.edit().putBoolean("GOOGLE_PLAY_MUSIC_ENABLED", true).commit();
sharedPreferences.edit().putString("GOOGLE_PLAY_MUSIC_ACCOUNT", mAccountName).commit();
return;
}
if (finalResultCode==RESULT_CANCELED) {
return;
}
Toast.makeText(mContext, R.string.unknown_error_google_music, Toast.LENGTH_LONG).show();
}
});
}
}
/*private void initInAppBilling() {
String base64EncodedPublicKey = "";
base64EncodedPublicKey = Common.uid4 +
Common.uid2 +
Common.uid6 +
Common.uid1 +
Common.uid3 +
Common.uid5;
mHelper = new IabHelper(this, base64EncodedPublicKey);
mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
@Override
public void onIabSetupFinished(IabResult result) {
if (!result.isSuccess()) {
//In-app billing could not be initialized.
Toast.makeText(mSettingsActivity, R.string.unable_to_reach_google_play, Toast.LENGTH_LONG).show();
} else {
//In-app billing was initialized successfully.
try {
mHelper.launchPurchaseFlow(mSettingsActivity, ITEM_SKU, 10001, mPurchaseFinishedListener, "");
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(mContext, R.string.unable_to_reach_google_play, Toast.LENGTH_LONG).show();
finish();
}
}
}
});
}*/
IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {
public void onIabPurchaseFinished(IabResult result, Purchase purchase) {
if (result.isFailure()) {
Toast.makeText(mContext, R.string.unable_to_purchase, Toast.LENGTH_LONG).show();
sharedPreferences.edit().putBoolean("TRIAL", true).commit();
return;
} else if (purchase.getSku().equals(ITEM_SKU)) {
Toast.makeText(mContext, R.string.jams_trial_time_removed, Toast.LENGTH_LONG).show();
mApp.getSharedPreferences().edit().putBoolean("TRIAL", false).commit();
PreferenceCategory upgradePrefCategory = (PreferenceCategory) preferenceManager.findPreference("upgrade_pref_category");
upgradePrefCategory.removeAll();
}
}
};
class AsyncUnblacklistAllSongsTask extends AsyncTask<String, Void, Void> {
private ProgressDialog pd;
@Override
public void onPreExecute() {
super.onPreExecute();
pd = new ProgressDialog(mSettingsActivity);
pd.setTitle(R.string.reset_blacklist);
pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);
pd.setMessage(getResources().getString(R.string.resetting_blacklist));
pd.show();
}
@Override
protected Void doInBackground(String... params) {
return null;
}
@Override
public void onPostExecute(Void result) {
super.onPostExecute(result);
pd.dismiss();
Toast.makeText(mContext, R.string.blacklist_reset, Toast.LENGTH_SHORT).show();
}
}
@Override
public void onBackPressed() {
super.onBackPressed();
finish();
}
}