package com.alorma.github.ui.fragment.content.source;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import com.alorma.github.R;
import com.alorma.github.sdk.bean.info.FileInfo;
import com.alorma.github.ui.fragment.content.BaseFileFragment;
import com.alorma.github.ui.utils.MarkdownUtils;
import com.pddstudio.highlightjs.HighlightJsView;
import com.pddstudio.highlightjs.models.Language;
import com.pddstudio.highlightjs.models.Theme;
public abstract class TextBaseFileFragment extends BaseFileFragment {
private HighlightJsView codeView;
private FileCallback fileCallback;
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
if (fileInfo != null && fileInfo.content != null && MarkdownUtils.isMarkdown(fileInfo.name)) {
menu.removeItem(R.id.action_show_markdown);
getActivity().getMenuInflater().inflate(R.menu.file_from_markdown, menu);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
switch (item.getItemId()) {
case R.id.action_show_markdown:
if (fileCallback != null) {
fileCallback.showAsMarkdown(fileInfo);
}
break;
}
return false;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.file_fragment, null, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
codeView = (HighlightJsView) view.findViewById(R.id.codeview);
codeView.setZoomSupportEnabled(true);
if (isDarkTheme()) {
codeView.setTheme(Theme.ANDROID_STUDIO);
} else {
codeView.setTheme(Theme.ARDUINO_LIGHT);
}
codeView.setHighlightLanguage(Language.AUTO_DETECT);
}
@Override
protected void onContentLoaded(String content) {
codeView.setSource(content);
}
public void setFileCallback(FileCallback fileCallback) {
this.fileCallback = fileCallback;
}
public interface FileCallback {
void showAsMarkdown(FileInfo fileInfo);
}
}