package me.ccrama.redditslide.Activities;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.widget.PopupMenu;
import android.support.v7.widget.SwitchCompat;
import android.view.KeyEvent;
import android.view.MenuItem;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import java.util.ArrayList;
import me.ccrama.redditslide.PostMatch;
import me.ccrama.redditslide.R;
import me.ccrama.redditslide.Reddit;
import me.ccrama.redditslide.SettingValues;
/**
* Created by l3d00m on 11/13/2015.
*/
public class SettingsHandling extends BaseActivityAnim
implements CompoundButton.OnCheckedChangeListener {
public ArrayList<String> domains = new ArrayList<>();
EditText domain;
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
switch (buttonView.getId()) {
case R.id.web:
SettingValues.web = isChecked;
(((SwitchCompat) findViewById(R.id.chrome))).setEnabled(isChecked);
SettingValues.prefs.edit().putBoolean(SettingValues.PREFS_WEB, isChecked).apply();
break;
case R.id.image:
SettingValues.image = isChecked;
SettingValues.prefs.edit().putBoolean(SettingValues.PREF_IMAGE, isChecked).apply();
break;
case R.id.gif:
SettingValues.gif = isChecked;
SettingValues.prefs.edit().putBoolean(SettingValues.PREF_GIF, isChecked).apply();
break;
case R.id.album:
SettingValues.album = isChecked;
SettingValues.prefs.edit().putBoolean(SettingValues.PREF_ALBUM, isChecked).apply();
break;
case R.id.peek:
SettingValues.peek = isChecked;
SettingValues.prefs.edit().putBoolean(SettingValues.PREF_PEEK, isChecked).apply();
break;
}
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
applyColorTheme();
setContentView(R.layout.activity_settings_handling);
setupAppBar(R.id.toolbar, R.string.settings_link_handling, true, true);
TextView web = (TextView) findViewById(R.id.browser);
//todo web stuff
SwitchCompat image = (SwitchCompat) findViewById(R.id.image);
SwitchCompat gif = (SwitchCompat) findViewById(R.id.gif);
SwitchCompat album = (SwitchCompat) findViewById(R.id.album);
SwitchCompat peek = (SwitchCompat) findViewById(R.id.peek);
image.setChecked(SettingValues.image);
gif.setChecked(SettingValues.gif);
album.setChecked(SettingValues.album);
peek.setChecked(SettingValues.peek);
image.setOnCheckedChangeListener(this);
gif.setOnCheckedChangeListener(this);
album.setOnCheckedChangeListener(this);
peek.setOnCheckedChangeListener(this);
if (!Reddit.videoPlugin) {
findViewById(R.id.video).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
startActivity(new Intent(Intent.ACTION_VIEW,
Uri.parse("market://details?id=ccrama.me.slideyoutubeplugin")));
} catch (android.content.ActivityNotFoundException anfe) {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(
"http://play.google.com/store/apps/details?id=ccrama.me.slideyoutubeplugin")));
}
}
});
} else {
findViewById(R.id.video).setVisibility(View.GONE);
}
((TextView) findViewById(R.id.browser)).setText(
SettingValues.web ? (SettingValues.reader ? getString(R.string.handling_reader_mode) : (SettingValues.customtabs ? getString(
R.string.settings_link_chrome)
: getString(R.string.handling_internal_browser)))
: getString(R.string.handling_external_browser));
final SwitchCompat readernight = (SwitchCompat) findViewById(R.id.readernight);
readernight.setEnabled(SettingValues.nightMode && SettingValues.web && SettingValues.reader);
readernight.setChecked(SettingValues.readerNight);
readernight.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
SettingValues.readerNight = isChecked;
SettingValues.prefs.edit().putBoolean(SettingValues.PREF_READER_NIGHT, isChecked).apply();
}
});
findViewById(R.id.select_browser).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PopupMenu popup = new PopupMenu(SettingsHandling.this, v);
popup.getMenuInflater().inflate(R.menu.browser_type, popup.getMenu());
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.chrome:
SettingValues.customtabs = true;
SettingValues.web = true;
SettingValues.reader = false;
SettingValues.prefs.edit()
.putBoolean(SettingValues.PREFS_WEB, true)
.apply();
SettingValues.prefs.edit()
.putBoolean(SettingValues.PREF_READER, false)
.apply();
SettingValues.prefs.edit()
.putBoolean(SettingValues.PREF_CUSTOMTABS, true)
.apply();
break;
case R.id.internal:
SettingValues.customtabs = false;
SettingValues.web = true;
SettingValues.reader = false;
SettingValues.prefs.edit()
.putBoolean(SettingValues.PREFS_WEB, true)
.apply();
SettingValues.prefs.edit()
.putBoolean(SettingValues.PREF_READER, false)
.apply();
SettingValues.prefs.edit()
.putBoolean(SettingValues.PREF_CUSTOMTABS, false)
.apply();
break;
case R.id.reader:
SettingValues.customtabs = false;
SettingValues.web = true;
SettingValues.reader = true;
SettingValues.prefs.edit()
.putBoolean(SettingValues.PREFS_WEB, true)
.apply();
SettingValues.prefs.edit()
.putBoolean(SettingValues.PREF_READER, true)
.apply();
SettingValues.prefs.edit()
.putBoolean(SettingValues.PREF_CUSTOMTABS, false)
.apply();
break;
case R.id.external:
SettingValues.web = false;
SettingValues.reader = false;
SettingValues.prefs.edit()
.putBoolean(SettingValues.PREFS_WEB, false)
.apply();
SettingValues.prefs.edit()
.putBoolean(SettingValues.PREF_READER, false)
.apply();
break;
}
((TextView) findViewById(R.id.browser)).setText(
SettingValues.web ? SettingValues.reader? getString(R.string.handling_reader_mode) : (SettingValues.customtabs ? getString(
R.string.settings_link_chrome)
: getString(R.string.handling_internal_browser))
: getString(R.string.handling_external_browser));
readernight.setEnabled(SettingValues.nightMode && SettingValues.web && SettingValues.reader);
return true;
}
});
popup.show();
}
});
domain = (EditText) findViewById(R.id.domain);
domain.setOnEditorActionListener(new EditText.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_DONE) {
SettingValues.alwaysExternal =
SettingValues.alwaysExternal + ", " + domain.getText().toString();
domain.setText("");
updateFilters();
}
return false;
}
});
updateFilters();
}
@Override
public void onPause() {
super.onPause();
SharedPreferences.Editor e = SettingValues.prefs.edit();
e.putString(SettingValues.PREF_ALWAYS_EXTERNAL, Reddit.arrayToString(domains));
e.apply();
PostMatch.externalDomain = null;
SettingValues.alwaysExternal =
SettingValues.prefs.getString(SettingValues.PREF_ALWAYS_EXTERNAL, "");
}
public void updateFilters() {
domains = new ArrayList<>();
((LinearLayout) findViewById(R.id.domainlist)).removeAllViews();
for (String s : SettingValues.alwaysExternal.replaceAll("^[,\\s]+", "").split("[,\\s]+")) {
if (!s.isEmpty() && (Reddit.videoPlugin && (!s.contains("youtube.co") && !s.contains(
"youtu.be")) || !Reddit.videoPlugin)) {
s = s.trim();
final String finalS = s;
domains.add(finalS);
final View t = getLayoutInflater().inflate(R.layout.account_textview,
((LinearLayout) findViewById(R.id.domainlist)), false);
((TextView) t.findViewById(R.id.name)).setText(s);
t.findViewById(R.id.remove).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
domains.remove(finalS);
SettingValues.alwaysExternal = Reddit.arrayToString(domains);
updateFilters();
}
});
((LinearLayout) findViewById(R.id.domainlist)).addView(t);
}
}
}
}