diff --git a/Chan/AndroidManifest.xml b/Chan/AndroidManifest.xml index 3d3a658a..72f4436f 100644 --- a/Chan/AndroidManifest.xml +++ b/Chan/AndroidManifest.xml @@ -83,6 +83,14 @@ android:name="android.support.PARENT_ACTIVITY" android:value="org.floens.chan.ui.activity.BoardActivity" /> + + + + + + + + + + \ No newline at end of file diff --git a/Chan/res/menu/watch_settings.xml b/Chan/res/menu/action_bar_switch.xml similarity index 82% rename from Chan/res/menu/watch_settings.xml rename to Chan/res/menu/action_bar_switch.xml index bbaf3b6f..c9903db7 100644 --- a/Chan/res/menu/watch_settings.xml +++ b/Chan/res/menu/action_bar_switch.xml @@ -2,7 +2,7 @@ diff --git a/Chan/res/values/strings.xml b/Chan/res/values/strings.xml index 14681b60..583e899f 100644 --- a/Chan/res/values/strings.xml +++ b/Chan/res/values/strings.xml @@ -94,6 +94,7 @@ Only delete the image Thread watcher + 4chan pass General Ask before opening links @@ -138,6 +139,10 @@ 3600 + 4chan pass enables you to post without filling in CAPTCHAs + Learn more + https://www.4chan.org/pass + diff --git a/Chan/res/xml/preference.xml b/Chan/res/xml/preference.xml index f79b8518..5db7a0ad 100644 --- a/Chan/res/xml/preference.xml +++ b/Chan/res/xml/preference.xml @@ -15,6 +15,14 @@ android:targetClass="org.floens.chan.ui.activity.BoardEditor" android:targetPackage="org.floens.chan" /> + + + + + + + + diff --git a/Chan/src/org/floens/chan/core/ChanPreferences.java b/Chan/src/org/floens/chan/core/ChanPreferences.java index d292e577..9e071491 100644 --- a/Chan/src/org/floens/chan/core/ChanPreferences.java +++ b/Chan/src/org/floens/chan/core/ChanPreferences.java @@ -58,4 +58,14 @@ public class ChanPreferences { public static boolean getVideoAutoPlay() { return ChanApplication.getPreferences().getBoolean("preference_autoplay", false); } + + public static boolean getPassEnabled() { + return ChanApplication.getPreferences().getBoolean("preference_pass_enabled", false); + } + + public static void setPassEnabled(boolean enabled) { + if (getWatchEnabled() != enabled) { + ChanApplication.getPreferences().edit().putBoolean("preference_pass_enabled", enabled).commit(); + } + } } diff --git a/Chan/src/org/floens/chan/ui/activity/PassSettingsActivity.java b/Chan/src/org/floens/chan/ui/activity/PassSettingsActivity.java new file mode 100644 index 00000000..73e6aa9f --- /dev/null +++ b/Chan/src/org/floens/chan/ui/activity/PassSettingsActivity.java @@ -0,0 +1,105 @@ +package org.floens.chan.ui.activity; + +import org.floens.chan.R; +import org.floens.chan.core.ChanPreferences; +import org.floens.chan.utils.Utils; + +import android.app.Activity; +import android.app.Fragment; +import android.app.FragmentTransaction; +import android.os.Bundle; +import android.os.Handler; +import android.os.Looper; +import android.preference.PreferenceFragment; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.View; +import android.view.ViewGroup; +import android.widget.CompoundButton; +import android.widget.CompoundButton.OnCheckedChangeListener; +import android.widget.Switch; +import android.widget.TextView; + +public class PassSettingsActivity extends Activity implements OnCheckedChangeListener { + private Switch enableSwitch; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + setFragment(ChanPreferences.getPassEnabled()); + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.action_bar_switch, menu); + + enableSwitch = (Switch) menu.findItem(R.id.action_bar_switch).getActionView(); + enableSwitch.setOnCheckedChangeListener(this); + enableSwitch.setPadding(0, 0, Utils.dp(14), 0); + + setSwitch(ChanPreferences.getPassEnabled()); + + return true; + } + + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + setFragment(isChecked); + setSwitch(isChecked); + } + + private void setSwitch(boolean enabled) { + enableSwitch.setChecked(enabled); + + ChanPreferences.setPassEnabled(enabled); + + enableSwitch.setEnabled(false); + new Handler(Looper.getMainLooper()).postDelayed(new Runnable() { + @Override + public void run() { + enableSwitch.setEnabled(true); + } + }, 500); + } + + private void setFragment(boolean enabled) { + if (enabled) { + FragmentTransaction t = getFragmentManager().beginTransaction(); + t.replace(android.R.id.content, new PassSettingsFragment()); + t.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); + t.commit(); + } else { + FragmentTransaction t = getFragmentManager().beginTransaction(); + t.replace(android.R.id.content, new TextFragment()); + t.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); + t.commit(); + } + } + + public static class TextFragment extends Fragment { + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup group, Bundle savedInstanceState) { + View container = inflater.inflate(R.layout.preference_pass, null); + + TextView link = (TextView) container.findViewById(R.id.pass_link); + link.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Utils.openLink(v.getContext(), v.getContext().getString(R.string.pass_info_link)); + } + }); + + return container; + } + } + + public static class PassSettingsFragment extends PreferenceFragment { + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + addPreferencesFromResource(R.xml.preference_pass); + } + } +} diff --git a/Chan/src/org/floens/chan/ui/activity/WatchSettingsActivity.java b/Chan/src/org/floens/chan/ui/activity/WatchSettingsActivity.java index 5be65600..91661ecf 100644 --- a/Chan/src/org/floens/chan/ui/activity/WatchSettingsActivity.java +++ b/Chan/src/org/floens/chan/ui/activity/WatchSettingsActivity.java @@ -37,9 +37,9 @@ public class WatchSettingsActivity extends Activity implements OnCheckedChangeLi @Override public boolean onCreateOptionsMenu(Menu menu) { - getMenuInflater().inflate(R.menu.watch_settings, menu); + getMenuInflater().inflate(R.menu.action_bar_switch, menu); - watchSwitch = (Switch) menu.findItem(R.id.enable_watch_switch).getActionView(); + watchSwitch = (Switch) menu.findItem(R.id.action_bar_switch).getActionView(); watchSwitch.setOnCheckedChangeListener(this); watchSwitch.setPadding(0, 0, Utils.dp(14), 0);