package com.garethevans.church.opensongtablet;
import android.app.Activity;
import android.util.Base64;
import org.xmlpull.v1.XmlPullParserException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
public class CreateNewSet extends Activity {
public static String tempsongfilename;
public static String tempdir;
public static boolean doCreation() {
// Keep the current song and directory aside for now
tempsongfilename = FullscreenActivity.songfilename;
tempdir = FullscreenActivity.whichSongFolder;
// Only do this is the mSetList isn't empty
if (FullscreenActivity.mSetList!=null && FullscreenActivity.mSetList.length>0) {
FullscreenActivity.newSetContents = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+ "<set name=\""
+ PopUpEditSongFragment.parseToHTMLEntities(FullscreenActivity.settoload)
+ "\">\n<slide_groups>\n";
for (int x = 0; x < FullscreenActivity.mSetList.length; x++) {
// Check if song is in subfolder
if (!FullscreenActivity.mSetList[x].contains("/")) {
FullscreenActivity.mSetList[x] = "/" + FullscreenActivity.mSetList[x];
}
// Split the string into two
String[] songparts;
songparts = FullscreenActivity.mSetList[x].split("/");
if (songparts.length<1) {
return false;
}
// If the path isn't empty, add a forward slash to the end
if (songparts[0].length() > 0) {
songparts[0] = songparts[0] + "/";
}
if (!songparts[0].contains("**"+FullscreenActivity.image) &&
!songparts[0].contains("**"+FullscreenActivity.text_variation) &&
!songparts[0].contains("**"+FullscreenActivity.text_scripture) &&
!songparts[0].contains("**"+FullscreenActivity.text_slide) &&
!songparts[0].contains("**"+FullscreenActivity.text_note)) {
// Adding a song
FullscreenActivity.newSetContents = FullscreenActivity.newSetContents
+ " <slide_group name=\""
+ PopUpEditSongFragment.parseToHTMLEntities(songparts[1])
+ "\" type=\"song\" presentation=\"\" path=\""
+ PopUpEditSongFragment.parseToHTMLEntities(songparts[0]) + "\"/>\n";
} else if (songparts[0].contains("**"+FullscreenActivity.text_scripture) &&
!songparts[0].contains("**"+FullscreenActivity.text_variation) &&
!songparts[0].contains("**"+FullscreenActivity.image) &&
!songparts[0].contains("**"+FullscreenActivity.text_slide) &&
!songparts[0].contains("**"+FullscreenActivity.text_note)) {
// Adding a scripture
// Load the scripture file up
FullscreenActivity.whichSongFolder = "../Scripture/_cache";
FullscreenActivity.songfilename = songparts[1];
try {
LoadXML.loadXML();
} catch (XmlPullParserException | IOException e) {
e.printStackTrace();
}
FullscreenActivity.myLyrics = FullscreenActivity.mLyrics;
String scripture_lyrics = FullscreenActivity.mLyrics;
// Parse the lyrics into individual slides;
scripture_lyrics = scripture_lyrics.replace("[]", "_SPLITHERE_");
String[] mySlides = scripture_lyrics.split("_SPLITHERE_");
String newname = songparts[1];
if (FullscreenActivity.mAuthor!="") {
newname = newname+"|"+FullscreenActivity.mAuthor;
}
FullscreenActivity.newSetContents = FullscreenActivity.newSetContents
+ " <slide_group type=\"scripture\" name=\""
+ PopUpEditSongFragment.parseToHTMLEntities(newname)
+ "\" print=\"true\">\n"
+ " <title>" + PopUpEditSongFragment.parseToHTMLEntities(songparts[1]) + "</title>\n"
+ " <slides>\n";
for (String mySlide : mySlides) {
if (mySlide != null && mySlide.length() > 0) {
FullscreenActivity.newSetContents = FullscreenActivity.newSetContents
+ " <slide>\n"
+ " <body>" + PopUpEditSongFragment.parseToHTMLEntities(mySlide.trim()) + "</body>\n"
+ " </slide>\n";
}
}
FullscreenActivity.newSetContents = FullscreenActivity.newSetContents + " </slides>\n"
+ " <subtitle>" + "</subtitle>\n"
+ " <notes />\n"
+ " </slide_group>\n";
} else if (songparts[0].contains("**"+FullscreenActivity.text_slide) &&
!songparts[0].contains("**"+FullscreenActivity.text_variation) &&
!songparts[0].contains("**"+FullscreenActivity.image) &&
!songparts[0].contains("**"+FullscreenActivity.text_note) &&
!songparts[0].contains("**"+FullscreenActivity.text_scripture)) {
// Adding a custom slide
// Load the slide file up
// Keep the songfile as a temp
FullscreenActivity.whichSongFolder = "../Slides/_cache";
FullscreenActivity.songfilename = songparts[1];
try {
LoadXML.loadXML();
} catch (XmlPullParserException | IOException e) {
e.printStackTrace();
}
FullscreenActivity.myLyrics = FullscreenActivity.mLyrics;
String slide_lyrics = FullscreenActivity.mLyrics;
if (slide_lyrics.indexOf("---\n") == 0) {
slide_lyrics = slide_lyrics.replaceFirst("---\n", "");
}
// Parse the lyrics into individual slides;
slide_lyrics = slide_lyrics.replace("---", "_SPLITHERE_");
String[] mySlides = slide_lyrics.split("_SPLITHERE_");
FullscreenActivity.newSetContents = FullscreenActivity.newSetContents
+ " <slide_group name=\"" + PopUpEditSongFragment.parseToHTMLEntities(songparts[1])
+ "\" type=\"custom\" print=\"true\""
+ " seconds=\"" + PopUpEditSongFragment.parseToHTMLEntities(FullscreenActivity.mUser1) + "\""
+ " loop=\"" + PopUpEditSongFragment.parseToHTMLEntities(FullscreenActivity.mUser2) + "\""
+ " transition=\"" + PopUpEditSongFragment.parseToHTMLEntities(FullscreenActivity.mUser3) + "\">\n"
+ " <title>" + PopUpEditSongFragment.parseToHTMLEntities(FullscreenActivity.mTitle.toString()) + "</title>\n"
+ " <subtitle>" + PopUpEditSongFragment.parseToHTMLEntities(FullscreenActivity.mCopyright.toString()) + "</subtitle>\n"
+ " <notes>" + PopUpEditSongFragment.parseToHTMLEntities(FullscreenActivity.mKeyLine) + "</notes>\n"
+ " <slides>\n";
for (String mySlide : mySlides) {
if (mySlide != null && mySlide.length() > 0) {
FullscreenActivity.newSetContents = FullscreenActivity.newSetContents
+ " <slide>\n"
+ " <body>" + PopUpEditSongFragment.parseToHTMLEntities(mySlide.trim()) + "</body>\n"
+ " </slide>\n";
}
}
FullscreenActivity.newSetContents = FullscreenActivity.newSetContents + " </slides>\n"
+ " </slide_group>\n";
} else if (songparts[0].contains("**"+FullscreenActivity.text_note) &&
!songparts[0].contains("**"+FullscreenActivity.text_variation) &&
!songparts[0].contains("**"+FullscreenActivity.image) &&
!songparts[0].contains("**"+FullscreenActivity.text_slide) &&
!songparts[0].contains("**"+FullscreenActivity.text_scripture)) {
// Adding a custom note
// Load the note up to grab the contents
FullscreenActivity.whichSongFolder = "../Notes/_cache";
FullscreenActivity.songfilename = songparts[1];
try {
LoadXML.loadXML();
} catch (XmlPullParserException | IOException e) {
e.printStackTrace();
}
FullscreenActivity.myLyrics = FullscreenActivity.mLyrics;
String slide_lyrics = FullscreenActivity.mLyrics;
FullscreenActivity.newSetContents = FullscreenActivity.newSetContents
+ " <slide_group name=\"# " + PopUpEditSongFragment.parseToHTMLEntities(FullscreenActivity.text_note) + " # - " + songparts[1] + "\""
+ " type=\"custom\" print=\"true\" seconds=\"\" loop=\"\" transition=\"\">\n"
+ " <title></title>\n"
+ " <subtitle></subtitle>\n"
+ " <notes>" + PopUpEditSongFragment.parseToHTMLEntities(slide_lyrics) + "</notes>\n"
+ " <slides></slides>\n"
+ " </slide_group>\n";
} else if (songparts[0].contains("**"+FullscreenActivity.text_variation) &&
!songparts[0].contains("**"+FullscreenActivity.text_note) &&
!songparts[0].contains("**"+FullscreenActivity.image) &&
!songparts[0].contains("**"+FullscreenActivity.text_slide) &&
!songparts[0].contains("**"+FullscreenActivity.text_scripture)) {
// Adding a variation
// The entire song is copied to the notes, and a simplified version is copied to the text
// Load the variation song up to grab the contents
FullscreenActivity.whichSongFolder = "../Variations";
FullscreenActivity.songfilename = songparts[1];
try {
LoadXML.loadXML();
} catch (XmlPullParserException | IOException e) {
e.printStackTrace();
}
FullscreenActivity.myLyrics = FullscreenActivity.mLyrics;
String slide_lyrics = FullscreenActivity.mLyrics;
try {
byte[] data = FullscreenActivity.myXML.getBytes("UTF-8");
slide_lyrics = Base64.encodeToString(data, Base64.DEFAULT);
} catch (Exception e) {
e.printStackTrace();
}
// Prepare the slide contents so it remains compatible with the desktop app
// Split the lyrics into individual lines
String[] lyrics_lines = FullscreenActivity.myLyrics.split("\n");
String currentslide = "";
ArrayList<String> newslides = new ArrayList<>();
for (String thisline:lyrics_lines) {
if (!thisline.equals("") && !thisline.startsWith(".") && !thisline.startsWith("[") && !thisline.startsWith(";")) {
// Add the current line into the new slide
// Replace any new line codes | with \n
thisline = thisline.replace("||","\n");
thisline = thisline.replace("---","\n");
thisline = thisline.replace("|","\n");
currentslide = currentslide + thisline.trim() + "\n";
} else if (thisline.startsWith("[")) {
// Save the current slide and create a new one
currentslide = currentslide.trim();
newslides.add(currentslide);
currentslide = "";
}
}
newslides.add(currentslide);
// Now go back through the currentslides and write the slide text
String slidetexttowrite = "";
for (int z=0; z<newslides.size();z++) {
if (!newslides.get(z).equals("")) {
slidetexttowrite = slidetexttowrite
+ " <slide>\n"
+ " <body>" + PopUpEditSongFragment.parseToHTMLEntities(newslides.get(z).trim()) +"\n"
+ " </body>\n"
+ " </slide>\n";
}
}
FullscreenActivity.newSetContents = FullscreenActivity.newSetContents
+ " <slide_group name=\"# " + PopUpEditSongFragment.parseToHTMLEntities(FullscreenActivity.text_variation) + " # - " + songparts[1] + "\""
+ " type=\"custom\" print=\"true\" seconds=\"\" loop=\"\" transition=\"\">\n"
+ " <title>"+PopUpEditSongFragment.parseToHTMLEntities(songparts[1])+"</title>\n"
+ " <subtitle>"+PopUpEditSongFragment.parseToHTMLEntities(FullscreenActivity.mAuthor.toString())+"</subtitle>\n"
+ " <notes>" + PopUpEditSongFragment.parseToHTMLEntities(slide_lyrics) + "</notes>\n"
+ " <slides>\n" + slidetexttowrite
+ " </slides>\n"
+ " </slide_group>\n";
} else if (songparts[0].contains("**"+FullscreenActivity.image) &&
!songparts[0].contains("**"+FullscreenActivity.text_variation) &&
!songparts[0].contains("**"+FullscreenActivity.text_note) &&
!songparts[0].contains("**"+FullscreenActivity.text_slide) &&
!songparts[0].contains("**"+FullscreenActivity.text_scripture)) {
// Adding a custom image slide
// Load the image slide up to grab the contents
FullscreenActivity.whichSongFolder = "../Images/_cache";
FullscreenActivity.songfilename = songparts[1];
try {
LoadXML.loadXML();
} catch (XmlPullParserException | IOException e) {
e.printStackTrace();
}
// The hymn_number field should contain all the images
// Each image is separated by \n$$$\n
String imagecode[] = FullscreenActivity.mHymnNumber.split("XX_IMAGE_XX");
// Break all the images into the relevant slides
String[] separate_slide = FullscreenActivity.mUser3.split("\n");
// Get the number of image codes
int sepslidesnum = separate_slide.length;
FullscreenActivity.myLyrics = FullscreenActivity.mLyrics;
String slide_code = "";
for (int e=0;e<sepslidesnum;e++) {
String imglinetext;
if (e<imagecode.length && imagecode[e]!=null && !imagecode[e].equals("")) {
imglinetext = " <image>" + imagecode[e].trim() + "</image>\n";
} else {
imglinetext = " <filename>" + separate_slide[e] + "</filename>\n";
}
slide_code = slide_code
+ " <slide>\n"
+ imglinetext
+ " <description>" + separate_slide[e] + "</description>\n"
+ " </slide>\n";
}
FullscreenActivity.newSetContents = FullscreenActivity.newSetContents
+ " <slide_group name=\"" + PopUpEditSongFragment.parseToHTMLEntities(FullscreenActivity.mAka)
+ "\" type=\"image\" print=\"true\" seconds=\"" + PopUpEditSongFragment.parseToHTMLEntities(FullscreenActivity.mUser1)
+ "\" loop=\"" + PopUpEditSongFragment.parseToHTMLEntities(FullscreenActivity.mUser2) + "\" transition=\"0\""
+ " resize=\"screen\" keep_aspect=\"false\" link=\"false\">\n"
+ " <title>" + PopUpEditSongFragment.parseToHTMLEntities(FullscreenActivity.mTitle.toString()) + "</title>\n"
+ " <subtitle>" + PopUpEditSongFragment.parseToHTMLEntities(FullscreenActivity.mAuthor.toString()) + "</subtitle>\n"
+ " <notes>" + PopUpEditSongFragment.parseToHTMLEntities(FullscreenActivity.mKeyLine) + "</notes>\n"
+ " <slides>\n"
+ slide_code + "\n"
+ " </slides>\n"
+ " </slide_group>\n";
}
}
FullscreenActivity.newSetContents = FullscreenActivity.newSetContents
+ "</slide_groups>\n</set>";
// Write the string to the file
FileOutputStream newFile;
try {
newFile = new FileOutputStream(FullscreenActivity.dirsets + "/"
+ FullscreenActivity.settoload, false);
newFile.write(FullscreenActivity.newSetContents.getBytes());
newFile.flush();
newFile.close();
FullscreenActivity.myToastMessage = "yes";
} catch (IOException e) {
FullscreenActivity.myToastMessage = "no";
e.printStackTrace();
}
// Now we are finished, put the original songfilename back
FullscreenActivity.songfilename = tempsongfilename;
FullscreenActivity.whichSongFolder = tempdir;
try {
LoadXML.loadXML();
} catch (XmlPullParserException | IOException e) {
e.printStackTrace();
}
FullscreenActivity.myLyrics = FullscreenActivity.mLyrics;
}
return true;
}
}