package com.seafile.seadroid2.ui.activity; import android.content.ActivityNotFoundException; import android.content.Intent; import android.content.pm.PackageManager; import android.net.Uri; import android.os.Bundle; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import com.seafile.seadroid2.R; import com.seafile.seadroid2.util.Utils; import us.feras.mdv.MarkdownView; import java.io.File; /** * For showing markdown files */ public class MarkdownActivity extends BaseActivity implements Toolbar.OnMenuItemClickListener { @SuppressWarnings("unused") private static final String DEBUG_TAG = "MarkdownActivity"; private MarkdownView markdownView; String path; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_markdown); Intent intent = getIntent(); path = intent.getStringExtra("path"); if (path == null) return; markdownView = (MarkdownView) findViewById(R.id.markdownView); Toolbar toolbar = getActionBarToolbar(); toolbar.setOnMenuItemClickListener(this); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); } @Override public void onResume() { super.onResume(); File file = new File(path); if (!file.exists()) return; String content = Utils.readFile(file); markdownView.loadMarkdown(content); getSupportActionBar().setTitle(file.getName()); } @Override public boolean onCreateOptionsMenu(Menu menu) { getActionBarToolbar().inflateMenu(R.menu.markdown_view_menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); break; case R.id.edit_markdown: edit(); break; } return super.onOptionsItemSelected(item); } @Override public boolean onMenuItemClick(MenuItem item) { return super.onOptionsItemSelected(item); } private void edit() { PackageManager pm = getPackageManager(); // First try to find an activity who can handle markdown edit Intent editAsMarkDown = new Intent(Intent.ACTION_EDIT); Uri uri = Uri.parse(path); String mime = "text/markdown"; editAsMarkDown.setDataAndType(uri, mime); if (pm.queryIntentActivities(editAsMarkDown, 0).size() > 0) { // Some activity can edit markdown startActivity(editAsMarkDown); } else { // No activity to handle markdown, take it as text Intent editAsText = new Intent(Intent.ACTION_EDIT); mime = "text/plain"; editAsText.setDataAndType(uri, mime); try { startActivity(editAsText); } catch (ActivityNotFoundException e) { showShortToast(this, getString(R.string.activity_not_found)); } } } }