@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_view_diff); setupActionBar(); mDiffContent = (WebView) findViewById(R.id.fileContent); mLoading = (ProgressBar) findViewById(R.id.loading); Bundle extras = getIntent().getExtras(); mOldCommit = extras.getString(OLD_COMMIT); mNewCommit = extras.getString(NEW_COMMIT); mShowDescription = extras.getBoolean(SHOW_DESCRIPTION); mRepo = (Repo) extras.getSerializable(Repo.TAG); String title = Repo.getCommitDisplayName(mNewCommit); if (mOldCommit != null) title += " : " + Repo.getCommitDisplayName(mOldCommit); setTitle(getString(R.string.title_activity_commit_diff) + title); loadFileContent(); }
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_SAVE_DIFF && resultCode == RESULT_OK) { Uri diffUri = data.getData(); try { saveDiff(getContentResolver().openOutputStream(diffUri)); } catch (IOException e) { showToastMessage(R.string.alert_file_creation_failure); } } }
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); return true; case R.id.action_save_diff: Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT) .setType("text/x-patch") .putExtra(Intent.EXTRA_TITLE, Repo.getCommitDisplayName(mNewCommit) + ".diff"); startActivityForResult(intent, REQUEST_SAVE_DIFF); return true; } return super.onOptionsItemSelected(item); }
@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.diff_commits, menu); MenuItem item = menu.findItem(R.id.action_share_diff); ShareActionProvider shareActionProvider = (ShareActionProvider) item.getActionProvider(); final Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND); shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Uri futurePathName = Uri.fromFile(sharedDiffPathName()); shareIntent.putExtra(Intent.EXTRA_STREAM, futurePathName); shareIntent.setData(futurePathName); shareIntent.setType("text/x-patch"); shareActionProvider.setOnShareTargetSelectedListener(new ShareActionProvider.OnShareTargetSelectedListener () { public boolean onShareTargetSelected(ShareActionProvider source, Intent intent) { try { File diff = sharedDiffPathName(); saveDiff(new FileOutputStream(diff)); } catch (IOException e) { showToastMessage(R.string.alert_file_creation_failure); } return false; } }); shareActionProvider.setShareIntent(shareIntent); return true; }
@JavascriptInterface public String getTheme() { return Profile.getCodeMirrorTheme(getApplicationContext()); } }
private void saveDiff(OutputStream fos) throws IOException { /* FIXME: LOCK!!! */ if (mCommit != null) { String message; fos.write(formatCommitInfo().getBytes()); fos.write("\n".getBytes()); message = mCommit.getFullMessage(); for (String line : message.split("\n", -1)) { fos.write((" " + line + "\n").getBytes()); } fos.write("\n".getBytes()); } for (String str : mDiffStrs) { fos.write(str.getBytes()); } }
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); return true; case R.id.action_save_diff: Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT) .setType("text/x-patch") .putExtra(Intent.EXTRA_TITLE, Repo.getCommitDisplayName(mNewCommit) + ".diff"); startActivityForResult(intent, REQUEST_SAVE_DIFF); return true; } return super.onOptionsItemSelected(item); }
@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.diff_commits, menu); MenuItem item = menu.findItem(R.id.action_share_diff); ShareActionProvider shareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(item); final Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND); shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Uri futurePathName = Uri.fromFile(sharedDiffPathName()); shareIntent.putExtra(Intent.EXTRA_STREAM, futurePathName); shareIntent.setData(futurePathName); shareIntent.setType("text/x-patch"); shareActionProvider.setOnShareTargetSelectedListener(new ShareActionProvider.OnShareTargetSelectedListener () { public boolean onShareTargetSelected(ShareActionProvider source, Intent intent) { try { File diff = sharedDiffPathName(); saveDiff(new FileOutputStream(diff)); } catch (IOException e) { showToastMessage(R.string.alert_file_creation_failure); } return false; } }); shareActionProvider.setShareIntent(shareIntent); return true; }
@JavascriptInterface public String getTheme() { return Profile.getCodeMirrorTheme(getApplicationContext()); } }
private void saveDiff(OutputStream fos) throws IOException { /* FIXME: LOCK!!! */ if (mCommit != null) { String message; fos.write(formatCommitInfo().getBytes()); fos.write("\n".getBytes()); message = mCommit.getFullMessage(); for (String line : message.split("\n", -1)) { fos.write((" " + line + "\n").getBytes()); } fos.write("\n".getBytes()); } for (String str : mDiffStrs) { fos.write(str.getBytes()); } }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_view_diff); setupActionBar(); mDiffContent = (WebView) findViewById(R.id.fileContent); mLoading = (ProgressBar) findViewById(R.id.loading); Bundle extras = getIntent().getExtras(); mOldCommit = extras.getString(OLD_COMMIT); mNewCommit = extras.getString(NEW_COMMIT); mShowDescription = extras.getBoolean(SHOW_DESCRIPTION); mRepo = (Repo) extras.getSerializable(Repo.TAG); String title = Repo.getCommitDisplayName(mNewCommit); if (mOldCommit != null) title += " : " + Repo.getCommitDisplayName(mOldCommit); setTitle(getString(R.string.title_activity_commit_diff) + title); loadFileContent(); }
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_SAVE_DIFF && resultCode == RESULT_OK) { Uri diffUri = data.getData(); try { saveDiff(getContentResolver().openOutputStream(diffUri)); } catch (IOException e) { showToastMessage(R.string.alert_file_creation_failure); } } }