package eu.fiskur.markdownview; import android.content.Context; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.MenuItem; public class MarkdownActivity extends AppCompatActivity { private static final String TAG = "MarkdownActivity"; public static final String EXTRA_SHOW_TOOLBAR = "eu.fiskur.markdownview.MarkdownActivity.EXTRA_SHOW_TOOLBAR"; public static final String EXTRA_ALLOW_GESTURES = "eu.fiskur.markdownview.MarkdownActivity.EXTRA_ALLOW_GESTURES"; public static final String EXTRA_TOOLBAR_TITLE = "eu.fiskur.markdownview.MarkdownActivity.EXTRA_TOOLBAR_TITLE"; public static final String EXTRA_MARKDOWN = "eu.fiskur.markdownview.MarkdownActivity.EXTRA_MARKDOWN"; public static final String EXTRA_STRING_RESOURCE = "eu.fiskur.markdownview.MarkdownActivity.EXTRA_STRING_RESOURCE"; public static final String EXTRA_RAW_FILE = "eu.fiskur.markdownview.MarkdownActivity.EXTRA_RAW_FILE"; public static final String EXTRA_DISPLAY_HOMEASUP = "eu.fiskur.markdownview.MarkdownActivity.EXTRA_DISPLAY_HOMEASUP"; private MarkdownView markdownView; public static class IntentBuilder { private Bundle extras; public static IntentBuilder getBuilder() { IntentBuilder builder = new IntentBuilder(); return builder; } private IntentBuilder() { extras = new Bundle(); } public IntentBuilder showToolbar(boolean showToolbar) { extras.putBoolean(EXTRA_SHOW_TOOLBAR, showToolbar); return this; } public IntentBuilder displayHomeAsUp(boolean displayHomeAsUp) { extras.putBoolean(EXTRA_DISPLAY_HOMEASUP, displayHomeAsUp); return this; } public IntentBuilder title(String title) { extras.putString(EXTRA_TOOLBAR_TITLE, title); return this; } public IntentBuilder allowGestures(boolean allowGestures) { extras.putBoolean(EXTRA_ALLOW_GESTURES, allowGestures); return this; } public IntentBuilder markdown(String markdown) { extras.putString(EXTRA_MARKDOWN, markdown); return this; } public IntentBuilder resourceId(int stringResourceId) { extras.putInt(EXTRA_STRING_RESOURCE, stringResourceId); return this; } public IntentBuilder rawFileId(int rawFileId) { extras.putInt(EXTRA_RAW_FILE, rawFileId); return this; } public Intent build(Context context) { Intent intent = new Intent(context, MarkdownActivity.class); intent.putExtras(extras); return intent; } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_markdown); markdownView = (MarkdownView) findViewById(R.id.markdown_view); setup(); } private void setup(){ Log.d(TAG, "setup()"); Bundle bundle = getIntent().getExtras(); boolean showToolbar = bundle.getBoolean(EXTRA_SHOW_TOOLBAR); String toolbarTitle = bundle.getString(EXTRA_TOOLBAR_TITLE); if(showToolbar || toolbarTitle != null){ getSupportActionBar().setTitle(toolbarTitle); boolean displayHomeAsUp = bundle.getBoolean(EXTRA_DISPLAY_HOMEASUP); if(displayHomeAsUp){ getSupportActionBar().setDisplayHomeAsUpEnabled(true); } }else{ getSupportActionBar().hide(); } boolean allowGestures = bundle.getBoolean(EXTRA_ALLOW_GESTURES); if(!allowGestures){ markdownView.allowGestures(false); } String markdown = bundle.getString(EXTRA_MARKDOWN); int stringId = bundle.getInt(EXTRA_STRING_RESOURCE, -1); int rawId = bundle.getInt(EXTRA_RAW_FILE, -1); if(markdown != null && !markdown.isEmpty() && stringId != -1){ Log.e(TAG, "Cannot set both a markdown String literal and a String resource Id"); }else if(markdown != null && !markdown.isEmpty() && rawId != -1){ Log.e(TAG, "Cannot set both a markdown String literal and a Raw file Id"); }else if(rawId != -1 && stringId != -1){ Log.e(TAG, "Cannot set both a Raw file Id and a String resource Id"); }else{ if(markdown != null && !markdown.isEmpty()){ markdownView.showMarkdown(markdown); } if(stringId != -1){ markdownView.showMarkdown(getResources().getString(stringId)); } if(rawId != -1){ markdownView.showMarkdown(rawId); } } Log.d(TAG, "markdown: " + markdown); } @Override public boolean onOptionsItemSelected(MenuItem item) { finish(); return super.onOptionsItemSelected(item); } }