package com.alorma.github.ui.activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import com.alorma.github.R;
import com.alorma.github.sdk.bean.info.FileInfo;
import com.alorma.github.ui.activity.base.RepositoryThemeActivity;
import com.alorma.github.ui.fragment.content.BaseFileFragment;
import com.alorma.github.ui.fragment.content.markdown.BaseMarkdownFileFragment;
import com.alorma.github.ui.fragment.content.markdown.MarkdownContentFileFragment;
import com.alorma.github.ui.fragment.content.markdown.MarkdownFileFragment;
import com.alorma.github.ui.fragment.content.source.ContentFileFragment;
import com.alorma.github.ui.fragment.content.source.FileFragment;
import com.alorma.github.ui.fragment.content.source.ImageFileFragment;
import com.alorma.github.ui.fragment.content.source.TextBaseFileFragment;
import com.alorma.github.ui.utils.MarkdownUtils;
import com.alorma.github.utils.ImageUtils;
public class FileActivity extends RepositoryThemeActivity
implements BaseMarkdownFileFragment.MarkdownFileCallback, TextBaseFileFragment.FileCallback {
public static Intent createLauncherIntent(Context context, FileInfo fileInfo) {
Bundle bundle = new Bundle();
bundle.putParcelable(BaseFileFragment.FILE_INFO, fileInfo);
Intent intent = new Intent(context, FileActivity.class);
intent.putExtras(bundle);
return intent;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.generic_toolbar_responsive);
FileInfo info = getIntent().getExtras().getParcelable(BaseFileFragment.FILE_INFO);
if (info != null) {
setTitle(info.name);
if (ImageUtils.isImage(info.name)) {
setFragment(ImageFileFragment.getInstance(info), false);
} else if (MarkdownUtils.isMarkdown(info.name)) {
BaseMarkdownFileFragment fragment;
if (info.content != null) {
fragment = MarkdownContentFileFragment.getInstance(info);
} else {
fragment = MarkdownFileFragment.getInstance(info);
}
fragment.setMarkdownFileCallback(this);
setFragment(fragment, false);
} else if (info.content != null) {
TextBaseFileFragment fileFragment = ContentFileFragment.getInstance(info);
fileFragment.setFileCallback(this);
setFragment(fileFragment, false);
} else {
TextBaseFileFragment fileFragment = FileFragment.getInstance(info);
fileFragment.setFileCallback(this);
setFragment(fileFragment, false);
}
}
}
private void setFragment(Fragment fragment, boolean addToBackStack) {
fragment.setArguments(getIntent().getExtras());
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.content, fragment);
if (addToBackStack) {
ft.addToBackStack(null);
}
ft.commit();
}
@Override
public void showAsContent(FileInfo fileInfo) {
if (fileInfo != null && fileInfo.repoInfo != null) {
FileFragment fileFragment = FileFragment.getInstance(fileInfo);
fileFragment.setFileCallback(this);
setFragment(fileFragment, true);
}
}
@Override
public void showAsMarkdown(FileInfo fileInfo) {
BaseMarkdownFileFragment markdownFileFragment = MarkdownFileFragment.getInstance(fileInfo);
markdownFileFragment.setMarkdownFileCallback(this);
setFragment(markdownFileFragment, true);
}
}