package me.ccrama.redditslide.Activities; import android.app.Dialog; import android.content.ActivityNotFoundException; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.content.res.Resources; import android.net.Uri; import android.os.Bundle; import android.support.v7.widget.SwitchCompat; import android.view.LayoutInflater; import android.view.View; import android.view.ViewTreeObserver; import android.widget.CompoundButton; import android.widget.ScrollView; import android.widget.SeekBar; import android.widget.TextView; import com.afollestad.materialdialogs.AlertDialogWrapper; import me.ccrama.redditslide.Authentication; import me.ccrama.redditslide.DragSort.ReorderSubreddits; import me.ccrama.redditslide.FDroid; import me.ccrama.redditslide.R; import me.ccrama.redditslide.Reddit; import me.ccrama.redditslide.SettingValues; import me.ccrama.redditslide.Visuals.Palette; import me.ccrama.redditslide.util.NetworkUtil; import me.ccrama.redditslide.util.OnSingleClickListener; /** * Created by ccrama on 3/5/2015. */ public class Settings extends BaseActivity { private final static int RESTART_SETTINGS_RESULT = 2; private int scrollY; private SharedPreferences.OnSharedPreferenceChangeListener prefsListener; public static boolean changed; //whether or not a Setting was changed @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == RESTART_SETTINGS_RESULT) { Intent i = new Intent(Settings.this, Settings.class); i.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); i.putExtra("position", scrollY); startActivity(i); overridePendingTransition(0, 0); finish(); overridePendingTransition(0, 0); } } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); applyColorTheme(); setContentView(R.layout.activity_settings); setupAppBar(R.id.toolbar, R.string.title_settings, true, true); SettingValues.expandedSettings = true; setSettingItems(); final ScrollView mScrollView = ((ScrollView) findViewById(R.id.base)); prefsListener = new SharedPreferences.OnSharedPreferenceChangeListener() { @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { Settings.changed = true; } }; SettingValues.prefs.registerOnSharedPreferenceChangeListener(prefsListener); mScrollView.post(new Runnable() { @Override public void run() { ViewTreeObserver observer = mScrollView.getViewTreeObserver(); if (getIntent().hasExtra("position")) { mScrollView.scrollTo(0, getIntent().getIntExtra("position", 0)); } observer.addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() { @Override public void onScrollChanged() { scrollY = mScrollView.getScrollY(); } }); } }); } private void setSettingItems() { View pro = findViewById(R.id.pro); if (SettingValues.tabletUI) { pro.setVisibility(View.GONE); } else { pro.setOnClickListener(new OnSingleClickListener() { @Override public void onSingleClick(View v) { new AlertDialogWrapper.Builder(Settings.this).setTitle( R.string.settings_support_slide) .setMessage(R.string.pro_upgrade_msg) .setPositiveButton(R.string.btn_yes_exclaim, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { try { startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse( "market://details?id=me.ccrama.slideforreddittabletuiunlock"))); } catch (ActivityNotFoundException e) { startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse( "http://play.google.com/store/apps/details?id=me.ccrama.slideforreddittabletuiunlock"))); } } }) .setNegativeButton(R.string.btn_no_danks, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { dialog.dismiss(); } }) .show(); } }); } findViewById(R.id.general).setOnClickListener(new OnSingleClickListener() { @Override public void onSingleClick(View v) { Intent i = new Intent(Settings.this, SettingsGeneral.class); startActivityForResult(i, RESTART_SETTINGS_RESULT); } }); findViewById(R.id.history).setOnClickListener(new OnSingleClickListener() { @Override public void onSingleClick(View v) { Intent i = new Intent(Settings.this, SettingsHistory.class); startActivity(i); } }); findViewById(R.id.about).setOnClickListener(new OnSingleClickListener() { @Override public void onSingleClick(View v) { Intent i = new Intent(Settings.this, SettingsAbout.class); startActivity(i); } }); findViewById(R.id.offline).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent i = new Intent(Settings.this, ManageOfflineContent.class); startActivity(i); } }); findViewById(R.id.datasave).setOnClickListener(new OnSingleClickListener() { @Override public void onSingleClick(View v) { Intent i = new Intent(Settings.this, SettingsData.class); startActivity(i); } }); findViewById(R.id.subtheme).setOnClickListener(new OnSingleClickListener() { @Override public void onSingleClick(View v) { Intent i = new Intent(Settings.this, SettingsSubreddit.class); startActivityForResult(i, RESTART_SETTINGS_RESULT); } }); findViewById(R.id.filter).setOnClickListener(new OnSingleClickListener() { @Override public void onSingleClick(View v) { Intent i = new Intent(Settings.this, SettingsFilter.class); startActivity(i); } }); findViewById(R.id.synccit).setOnClickListener(new OnSingleClickListener() { @Override public void onSingleClick(View v) { Intent i = new Intent(Settings.this, SettingsSynccit.class); startActivity(i); } }); findViewById(R.id.reorder).setOnClickListener(new OnSingleClickListener() { @Override public void onSingleClick(View view) { Intent inte = new Intent(Settings.this, ReorderSubreddits.class); Settings.this.startActivity(inte); } }); findViewById(R.id.theme).setOnClickListener(new OnSingleClickListener() { @Override public void onSingleClick(View v) { Intent i = new Intent(Settings.this, SettingsTheme.class); startActivityForResult(i, RESTART_SETTINGS_RESULT); } }); findViewById(R.id.handling).setOnClickListener(new OnSingleClickListener() { @Override public void onSingleClick(View v) { Intent i = new Intent(Settings.this, SettingsHandling.class); startActivity(i); } }); findViewById(R.id.layout).setOnClickListener(new OnSingleClickListener() { @Override public void onSingleClick(View v) { Intent i = new Intent(Settings.this, EditCardsLayout.class); startActivity(i); } }); findViewById(R.id.backup).setOnClickListener(new OnSingleClickListener() { @Override public void onSingleClick(View v) { Intent i = new Intent(Settings.this, SettingsBackup.class); startActivity(i); } }); findViewById(R.id.font).setOnClickListener(new OnSingleClickListener() { @Override public void onSingleClick(View v) { Intent i = new Intent(Settings.this, SettingsFont.class); startActivity(i); } }); findViewById(R.id.tablet).setOnClickListener(new OnSingleClickListener() { @Override public void onSingleClick(View view) { /* Intent inte = new Intent(Overview.this, Overview.class); inte.putExtra("type", UpdateSubreddits.COLLECTIONS); Overview.this.startActivity(inte);*/ if (SettingValues.tabletUI) { LayoutInflater inflater = getLayoutInflater(); final View dialoglayout = inflater.inflate(R.layout.tabletui, null); final AlertDialogWrapper.Builder builder = new AlertDialogWrapper.Builder(Settings.this); final Resources res = getResources(); dialoglayout.findViewById(R.id.title) .setBackgroundColor(Palette.getDefaultColor()); //todo final Slider portrait = (Slider) dialoglayout.findViewById(R.id.portrait); final SeekBar landscape = (SeekBar) dialoglayout.findViewById(R.id.landscape); //todo portrait.setBackgroundColor(Palette.getDefaultColor()); landscape.setProgress(Reddit.dpWidth - 1); ((TextView) dialoglayout.findViewById(R.id.progressnumber)).setText( res.getQuantityString(R.plurals.landscape_columns, landscape.getProgress() + 1, landscape.getProgress() + 1)); landscape.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { ((TextView) dialoglayout.findViewById(R.id.progressnumber)).setText( res.getQuantityString(R.plurals.landscape_columns, landscape.getProgress() + 1, landscape.getProgress() + 1)); Settings.changed = true; } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); final Dialog dialog = builder.setView(dialoglayout).create(); dialog.show(); dialog.setOnDismissListener(new DialogInterface.OnDismissListener() { @Override public void onDismiss(DialogInterface dialog) { Reddit.dpWidth = landscape.getProgress() + 1; Reddit.colors.edit() .putInt("tabletOVERRIDE", landscape.getProgress() + 1) .apply(); } }); SwitchCompat s = (SwitchCompat) dialog.findViewById(R.id.dualcolumns); s.setChecked(SettingValues.dualPortrait); s.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { SettingValues.dualPortrait = isChecked; SettingValues.prefs.edit() .putBoolean(SettingValues.PREF_DUAL_PORTRAIT, isChecked) .apply(); } }); SwitchCompat s2 = (SwitchCompat) dialog.findViewById(R.id.fullcomment); s2.setChecked(SettingValues.fullCommentOverride); s2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { SettingValues.fullCommentOverride = isChecked; SettingValues.prefs.edit() .putBoolean(SettingValues.PREF_FULL_COMMENT_OVERRIDE, isChecked) .apply(); } }); } else { new AlertDialogWrapper.Builder(Settings.this).setTitle( "Mutli-Column Settings are a Pro feature") .setMessage(R.string.pro_upgrade_msg) .setPositiveButton(R.string.btn_yes_exclaim, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { try { startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse( "market://details?id=me.ccrama.slideforreddittabletuiunlock"))); } catch (android.content.ActivityNotFoundException anfe) { startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse( "http://play.google.com/store/apps/details?id=me.ccrama.slideforreddittabletuiunlock"))); } } }) .setNegativeButton(R.string.btn_no_danks, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { } }) .show(); } } }); if(FDroid.isFDroid){ ((TextView) findViewById(R.id.donatetext)).setText("Donate via PayPal"); } findViewById(R.id.support).setOnClickListener(new OnSingleClickListener() { @Override public void onSingleClick(View v) { if(FDroid.isFDroid){ Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=56FKCCYLX7L72")); startActivity(browserIntent); } else { Intent inte = new Intent(Settings.this, DonateView.class); Settings.this.startActivity(inte); } } }); findViewById(R.id.comments).setOnClickListener(new OnSingleClickListener() { @Override public void onSingleClick(View v) { Intent inte = new Intent(Settings.this, SettingsComments.class); Settings.this.startActivity(inte); } }); if (Authentication.isLoggedIn && NetworkUtil.isConnected(this)) { findViewById(R.id.reddit_settings).setOnClickListener(new OnSingleClickListener() { @Override public void onSingleClick(View v) { Intent i = new Intent(Settings.this, SettingsReddit.class); startActivity(i); } }); } else { findViewById(R.id.reddit_settings).setEnabled(false); findViewById(R.id.reddit_settings).setAlpha(0.25f); } } @Override public void onDestroy() { super.onDestroy(); SettingValues.prefs.unregisterOnSharedPreferenceChangeListener(prefsListener); } }