/**
* Copyright (c) 2015 unfoldingWord
* http://creativecommons.org/licenses/MIT/
* See LICENSE file for details.
* Contributors:
* PJ Fechner <pj@actsmedia.com>
*/
package activity.sharing;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.view.View;
import android.widget.TextView;
import com.github.peejweej.androidsideloading.fragments.TypeChoosingFragment;
import com.github.peejweej.androidsideloading.model.SideLoadInformation;
import org.unfoldingword.mobile.R;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import activity.AnimationParadigm;
import activity.UWBaseActivity;
import fragments.ResourceChoosingFragment;
import fragments.selection.ShareSelectionFragment;
import model.DaoDBHelper;
import model.DataFileManager;
import model.DownloadState;
import model.SharingHelper;
import model.daoModels.Project;
import model.daoModels.Version;
import model.parsers.MediaType;
public class ShareActivity extends UWBaseActivity {
private static final String TAG = "ShareActivity";
private ShareSelectionFragment selectionFragment;
private Project[] projects;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_share);
setupToolbar(false, getString(R.string.app_name), false);
setupData();
addFragment();
}
@Override
public AnimationParadigm getAnimationParadigm() {
return AnimationParadigm.ANIMATION_VERTICAL;
}
private void setupData(){
List<Project> projectList = Project.getAllModels(DaoDBHelper.getDaoSession(getApplicationContext()));
projects = new Project[projectList.size()];
projectList.toArray(projects);
}
private void addFragment(){
selectionFragment = ShareSelectionFragment.newInstance(projects);
getSupportFragmentManager().beginTransaction().add(R.id.share_fragment_frame, selectionFragment).commit();
}
public void shareClicked(View view) {
final List<Version> versions = selectionFragment.getSelectedVersions();
if(versions != null) {
DataFileManager.getStateOfContent(getApplicationContext(), versions, MediaType.MEDIA_TYPE_AUDIO, new DataFileManager.GetDownloadStateResponse() {
@Override
public void foundDownloadState(DownloadState state) {
if(state == DownloadState.DOWNLOAD_STATE_DOWNLOADED){
ResourceChoosingFragment.newInstance(versions.toArray(new Version[versions.size()]), new ResourceChoosingFragment.ResourceChoosingListener() {
@Override
public void resourcesChosen(DialogFragment dialogFragment, Map<Version, List<MediaType>> sharingChoices) {
shareVersions(sharingChoices);
dialogFragment.dismiss();
}
}).show(getSupportFragmentManager(), "ResourceChoosingFragment");
}
else{
Map<Version, List<MediaType>> shareInfo = new HashMap<Version, List<MediaType>>();
for(Version version : versions) {
shareInfo.put(version, Arrays.asList(MediaType.MEDIA_TYPE_TEXT));
}
shareVersions(shareInfo);
}
}
});
}
}
private void shareVersions(Map<Version, List<MediaType>> versions){
setLoadingFragmentVisibility(true, "Preparing Sharable Version", false);
SharingHelper.getShareInformation(getApplicationContext(), versions, new SharingHelper.SideLoadInformationResponse() {
@Override
public void informationLoaded(SideLoadInformation information) {
if(information != null) {
TypeChoosingFragment.constructFragment(information)
.show(getSupportFragmentManager(), "TypeChoosingFragment");
}
else{
showFailedAlert();
}
setLoadingFragmentVisibility(false, "", true);
}
});
}
private void showFailedAlert(){
View titleView = View.inflate(getApplicationContext(), R.layout.alert_title, null);
((TextView) titleView.findViewById(R.id.alert_title_text_view)).setText("Sharing Failure");
new AlertDialog.Builder(this)
.setCustomTitle(titleView)
.setMessage("Sharing failed. Please try again")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
})
.create().show();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
// @Override
// public void rowSelectedOrDeselected() {
//// int numOfKeyboards = selectionFragment.getSelectedVersion().size();
// }
}