package yuku.alkitab.base.ac;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import com.afollestad.materialdialogs.MaterialDialog;
import yuku.afw.V;
import yuku.alkitab.base.App;
import yuku.alkitab.base.ac.base.BaseActivity;
import yuku.alkitab.base.dialog.VersesDialog;
import yuku.alkitab.base.util.Announce;
import yuku.alkitab.base.util.TargetDecoder;
import yuku.alkitab.debug.BuildConfig;
import yuku.alkitab.debug.R;
import yuku.alkitab.util.IntArrayList;
import yuku.alkitabintegration.display.Launcher;
import java.util.Locale;
public class HelpActivity extends BaseActivity {
private static final String EXTRA_page = "page";
private static final String EXTRA_overrideTitle = "overrideTitle";
private static final String EXTRA_overflowMenuItemTitle = "overflowMenuItemTitle";
private static final String EXTRA_overflowMenuItemIntent = "overflowMenuItemIntent";
private static final String EXTRA_announcementIds = "announcementIds";
public static final int REQCODE_overflowMenuItem = 1;
WebView webview;
View progress;
String overflowMenuItemTitle;
Intent overflowMenuItemIntent;
public static Intent createIntentWithOverflowMenu(final String page, final String overrideTitle, final String overflowMenuItemTitle, final Intent overflowMenuItemIntent) {
return _createIntent(page, overrideTitle, overflowMenuItemTitle, overflowMenuItemIntent);
}
public static Intent createIntent(final String page, final String overrideTitle) {
return _createIntent(page, overrideTitle, null, null);
}
private static Intent _createIntent(final String page, final String overrideTitle, final String overflowMenuItemTitle, final Intent overflowMenuItemIntent) {
return new Intent(App.context, HelpActivity.class)
.putExtra(EXTRA_page, page)
.putExtra(EXTRA_overrideTitle, overrideTitle)
.putExtra(EXTRA_overflowMenuItemTitle, overflowMenuItemTitle)
.putExtra(EXTRA_overflowMenuItemIntent, overflowMenuItemIntent);
}
public static Intent createViewAnnouncementIntent(final long[] announcementIds) {
return new Intent(App.context, HelpActivity.class)
.putExtra(EXTRA_announcementIds, announcementIds);
}
@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_help);
final Toolbar toolbar = V.get(this, R.id.toolbar);
setSupportActionBar(toolbar);
final ActionBar ab = getSupportActionBar();
assert ab != null;
ab.setDisplayHomeAsUpEnabled(true);
webview = V.get(this, R.id.webview);
progress = V.get(this, R.id.progress);
if (BuildConfig.DEBUG) {
if (Build.VERSION.SDK_INT >= 19) {
WebView.setWebContentsDebuggingEnabled(true);
}
}
final WebSettings webSettings = webview.getSettings();
//noinspection deprecation
webSettings.setSavePassword(false);
webSettings.setSaveFormData(false);
webSettings.setJavaScriptEnabled(true);
final String page = getIntent().getStringExtra(EXTRA_page);
final String overrideTitle = getIntent().getStringExtra(EXTRA_overrideTitle);
final long[] announcementIds = getIntent().getLongArrayExtra(EXTRA_announcementIds);
overflowMenuItemTitle = getIntent().getStringExtra(EXTRA_overflowMenuItemTitle);
overflowMenuItemIntent = getIntent().getParcelableExtra(EXTRA_overflowMenuItemIntent);
if (overrideTitle != null) {
setTitle(overrideTitle);
}
webview.setVisibility(View.GONE);
progress.setVisibility(View.VISIBLE);
if (page != null) {
if (page.startsWith("http:") || page.startsWith("https:")) {
webview.loadUrl(page);
} else {
webview.loadUrl("file:///android_asset/" + page);
}
} else if (announcementIds != null) {
final Locale locale = getResources().getConfiguration().locale;
final String url = BuildConfig.SERVER_HOST + "announce/view?ids=" + App.getDefaultGson().toJson(announcementIds) + (locale == null ? "" : ("&locale=" + locale.toString()));
if (BuildConfig.DEBUG) {
Log.d(TAG, "loading announce view url: " + url);
}
webview.loadUrl(url);
}
webview.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
final Uri uri = Uri.parse(url);
final String scheme = uri.getScheme();
if (scheme == null) {
return false;
}
switch (scheme) {
case "http":
case "https":
case "market": {
// open in external browser
final Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(uri);
startActivity(intent);
} return true;
case "alkitab": {
// send back to caller
final Intent intent = new Intent();
intent.setData(uri);
setResult(RESULT_OK, intent);
finish();
} return true;
case "suggest":
startActivity(com.example.android.wizardpager.MainActivity.createIntent(App.context));
finish();
return true;
case "bible":
// try to decode using OSIS format
final String ssp = uri.getSchemeSpecificPart();
final IntArrayList ariRanges = TargetDecoder.decode("o:" + ssp);
if (ariRanges == null || ariRanges.size() == 0) {
new MaterialDialog.Builder(HelpActivity.this)
.content(getString(R.string.alamat_tidak_sah_alamat, url))
.positiveText(R.string.ok)
.show();
} else {
final VersesDialog dialog = VersesDialog.newInstance(ariRanges);
dialog.show(getSupportFragmentManager(), VersesDialog.class.getSimpleName());
dialog.setListener(new VersesDialog.VersesDialogListener() {
@Override
public void onVerseSelected(final VersesDialog dialog, final int ari) {
Log.d(TAG, "Verse link clicked from page");
startActivity(Launcher.openAppAtBibleLocation(ari));
}
});
}
return true;
}
return false;
}
@SuppressWarnings("deprecation")
@Override
public void onReceivedError(final WebView view, final int errorCode, final String description, final String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
webview.setVisibility(View.VISIBLE);
progress.setVisibility(View.GONE);
}
@Override
public void onPageFinished(final WebView view, final String url) {
super.onPageFinished(view, url);
webview.setVisibility(View.VISIBLE);
progress.setVisibility(View.GONE);
if (overrideTitle == null) {
setTitle(view.getTitle());
}
if (announcementIds != null) {
Announce.markAsRead(announcementIds);
}
}
});
}
@Override
public boolean onCreateOptionsMenu(final Menu menu) {
if (overflowMenuItemTitle != null) {
final MenuItem item = menu.add(0, 1, 0, overflowMenuItemTitle);
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
}
return true;
}
@Override
public boolean onOptionsItemSelected(final MenuItem item) {
if (item.getItemId() == 1) {
startActivityForResult(overflowMenuItemIntent, REQCODE_overflowMenuItem);
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
if (requestCode == REQCODE_overflowMenuItem && resultCode == RESULT_OK) {
setResult(resultCode, data);
finish();
}
}
}