package com.csound.wizard;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserFactory;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Fragment;
import android.content.Context;
import android.content.DialogInterface;
import android.view.WindowManager;
import android.widget.EditText;
import android.widget.TextView;
import com.csound.wizard.model.Model;
import com.example.proglayout.R;
public class Utils {
public static File csdFromFile(Context ctx, String fileText) {
return createTempFile(ctx, fileText);
}
public static File csdFromResource(Context ctx, int resId) {
return createTempFile(ctx, getResourceFileAsString(ctx, resId));
}
public static File createTempFile(Context ctx, String csd) {
File f = null;
try {
f = File.createTempFile("temp", ".csd", ctx.getCacheDir());
FileOutputStream fos = new FileOutputStream(f);
fos.write(csd.getBytes());
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return f;
}
public static String getResourceFileAsString(Context ctx, int resId) {
return readFile(ctx.getResources().openRawResource(resId));
}
public static String readFile(InputStream is) {
StringBuilder str = new StringBuilder();
BufferedReader r = new BufferedReader(new InputStreamReader(is));
String line;
try {
while ((line = r.readLine()) != null) {
str.append(line).append("\n");
}
} catch (IOException ios) {
}
return str.toString();
}
public static Model getModel(Fragment x) {
return getModel(x.getActivity());
}
public static Model getModel(Activity x) {
return ((App) x.getApplication()).getModel();
}
public static Settings getSettings(Fragment x) {
return getSettings(x.getActivity());
}
public static Settings getSettings(Activity x) {
return ((App) x.getApplication()).getModel().getSettings();
}
public interface EditInputDialog {
public void apply(String text);
}
public interface ConfirmActionDialog {
public void apply();
}
public static void confirmActionDialog(Context ctx, String title, String message, final ConfirmActionDialog action) {
AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
builder.setTitle(title);
TextView tv = new TextView(ctx);
tv.setText(message);
tv.setTextSize(22);
int n = 30;
tv.setPadding(n, n, n, n);
builder.setView(tv);
builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
action.apply();
}
});
builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
AlertDialog dialog = builder.show();
}
public static void editInputDialog(Context ctx, final EditInputDialog action) {
AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
builder.setTitle(R.string.action_new_playlist);
// Set up the input
final EditText input = new EditText(ctx);
builder.setView(input);
// Set up the buttons
builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
action.apply(input.getText().toString());
}
});
builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
AlertDialog dialog = builder.show();
input.requestFocus();
dialog.getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
}
public static String getUi(InputStream xml) {
try {
XmlPullParser xpp = XmlPullParserFactory.newInstance().newPullParser();
xpp.setInput(xml, "UTF-8");
skipToTag(xpp, "wizard");
return xpp.nextText();
} catch (Exception e) {
return "";
}
}
private static void skipToTag(XmlPullParser xpp, String tagName) throws Exception {
int event = xpp.getEventType();
while (event != XmlPullParser.END_DOCUMENT
&& !tagName.equals(xpp.getName())) {
event = xpp.next();
}
}
public static String addSuffix(String x, String suffix) {
return x + "." + suffix;
}
}