152 lines
3.7 KiB
Java
152 lines
3.7 KiB
Java
package modules.playlist;
|
|
|
|
import com.one.ErrScreen;
|
|
import com.one.FileSource;
|
|
import com.one.ModuleRegistry;
|
|
import com.one.file.Connector;
|
|
import com.one.file.FileConnection;
|
|
import com.vmx.AuxClass;
|
|
import com.vmx.Locale;
|
|
import com.vmx.OutputStreamEncoder;
|
|
import com.vmx.StringEncoder;
|
|
import filemanager.Buffer;
|
|
import filemanager.main;
|
|
import java.io.IOException;
|
|
import java.util.Enumeration;
|
|
import java.util.Vector;
|
|
import javax.microedition.lcdui.AlertType;
|
|
import javax.microedition.lcdui.Choice;
|
|
import javax.microedition.lcdui.ChoiceGroup;
|
|
import javax.microedition.lcdui.Command;
|
|
import javax.microedition.lcdui.CommandListener;
|
|
import javax.microedition.lcdui.Displayable;
|
|
import javax.microedition.lcdui.Form;
|
|
|
|
public class M3UFileSource implements FileSource, CommandListener
|
|
{
|
|
protected Object parent;
|
|
protected String filename;
|
|
|
|
protected ChoiceGroup cgType;
|
|
|
|
public void createFile(String filename) throws IOException
|
|
{
|
|
this.filename = filename;
|
|
|
|
Form form = new Form(ModuleRegistry.getModuleName(getClass().getName()));
|
|
|
|
cgType = new ChoiceGroup(/* Locale.getString(this, Locale.FILE_TYPE) */ null, Choice.EXCLUSIVE);
|
|
|
|
Enumeration groups = ModuleRegistry.listSimalarityGroups();
|
|
String group;
|
|
|
|
while(groups.hasMoreElements())
|
|
{
|
|
group = (String)groups.nextElement();
|
|
cgType.append(group, ModuleRegistry.getIcon((String)ModuleRegistry.listSimilars(group).nextElement()));
|
|
}
|
|
|
|
cgType.setSelectedIndex(0, true);
|
|
|
|
form.append(cgType);
|
|
|
|
form.addCommand(new Command(Locale.getString(this, Locale.OK_CMD), Command.OK, 1));
|
|
form.addCommand(new Command(Locale.getString(this, Locale.CANCEL_CMD), Command.CANCEL, 2));
|
|
form.setCommandListener(this);
|
|
|
|
parent = main.dsp.getCurrent();
|
|
main.dsp.setCurrent(form);
|
|
}
|
|
|
|
public void commandAction(Command c, Displayable dp)
|
|
{
|
|
if(c.getCommandType() == Command.OK)
|
|
{
|
|
try
|
|
{
|
|
if(Buffer.getSize() == 0)
|
|
{
|
|
main.showMessage(Locale.getString(this, Locale.ERROR), Locale.getString(this, Locale.BUFFER_EMPTY), AlertType.WARNING, 3000, main.dsp.getCurrent());
|
|
return;
|
|
}
|
|
|
|
Vector group = AuxClass.enumerationToVector(ModuleRegistry.listSimilars(cgType.getString(cgType.getSelectedIndex())), null);
|
|
|
|
FileConnection fc = (FileConnection)Connector.open("file:///" + filename);
|
|
|
|
if(fc.exists())
|
|
{
|
|
fc.truncate(0);
|
|
}
|
|
else
|
|
{
|
|
fc.create();
|
|
}
|
|
|
|
OutputStreamEncoder ose = new OutputStreamEncoder(fc.openOutputStream(), StringEncoder.ENC_DEFAULT);
|
|
|
|
ose.writeBOM();
|
|
|
|
String disk = filename.substring(0, filename.indexOf('/'));
|
|
String path = filename.substring(0, filename.lastIndexOf('/') + 1);
|
|
|
|
int dlen = disk.length();
|
|
int plen = path.length();
|
|
|
|
Buffer.flattenBuffer();
|
|
//Buffer.sortBuffer();
|
|
|
|
Enumeration buf = Buffer.getBuffer();
|
|
String s, module;
|
|
int index;
|
|
|
|
while(buf.hasMoreElements())
|
|
{
|
|
s = (String)buf.nextElement();
|
|
|
|
index = s.lastIndexOf('.');
|
|
|
|
if(index >= 0)
|
|
{
|
|
module = ModuleRegistry.getModule(s.substring(index + 1));
|
|
|
|
if(module != null && group.contains(module))
|
|
{
|
|
if(s.startsWith(path))
|
|
{
|
|
ose.writeString(s.substring(plen).replace('/', '\\'));
|
|
}
|
|
else if(s.startsWith(disk))
|
|
{
|
|
ose.writeString(s.substring(dlen).replace('/', '\\'));
|
|
}
|
|
else
|
|
{
|
|
ose.writeString(s.replace('/', '\\'));
|
|
}
|
|
|
|
ose.writeChar('\r');
|
|
ose.writeChar('\n');
|
|
}
|
|
}
|
|
}
|
|
|
|
ose.close();
|
|
fc.close();
|
|
|
|
Buffer.clear();
|
|
|
|
main.FileSelect.showWait(filename.substring(filename.lastIndexOf('/') + 1));
|
|
}
|
|
catch(Exception e)
|
|
{
|
|
ErrScreen.showErrMsg(20400, e);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
main.dsp.setCurrent(parent);
|
|
}
|
|
}
|
|
}
|