======New File Dialog======
Sometimes you have to create new files in a folder.\\
Its easy with if you use a dialog.\\ \\
(look for the example to [[sample_code:new_folder|create a new folder]] too)\\ \\
{{:pics:newfile.png?400|}}
Save the **DlgNewFile.js** in the Droidscriptfolder where you need the file.\\
You can call the dialog after you load the Script into your app at the OnStart() Event.
/********************************************************************
* CreateNewFile Dialog
=====================================================================
* Creation date: 20-01-2015 by octazid
* Last update: 22-01-2015 by octazid
=====================================================================
* Simple dialog to create a new file in a folder
********************************************************************/
//*** CreateNewFile Dialog***//
function NewFileDialog(savepath)
{
var self = this;
this.Nfdlg = app.CreateDialog("Create a new File:");
this.Nflay = app.CreateLayout( "Linear", "FillXY" );
this.txtpath = app.CreateText(savepath,0.9,0.02,"Left,Autoscale");
this.txtpath.SetMargins(0,0.01,0,0);
this.txtpath.parent = self;
this.Nflay.AddChild(this.txtpath);
this.Nfedt = app.CreateTextEdit("",0.9,0.05,"Left");
this.Nfedt.SetTextSize(18);
this.Nfedt.SetHint("Filename.js");
this.Nfedt.parent = self;
this.Nflay.AddChild(this.Nfedt);
this.Nfbtnlay = app.CreateLayout( "Linear", "Horizontal,FillXY" );
this.Nfdlgbtn = app.CreateButton("OK", 0.45);
this.Nfdlgbtn.parent = self;
this.Nfdlgbtn.SetOnTouch(Nfdlgbtn_OnTouch);
this.Nfbtnlay.AddChild(this.Nfdlgbtn);
this.NfdlgbtnCancel = app.CreateButton("Chancel",0.45);
this.NfdlgbtnCancel.parent = self;
this.NfdlgbtnCancel.SetOnTouch(Nfdlgbtn_OnTouch);
this.Nfbtnlay.AddChild(this.NfdlgbtnCancel);
this.Nflay.AddChild(this.Nfbtnlay)
this.Nfdlg.AddLayout(this.Nflay);
this.Show = function(){self.Nfdlg.Show();}
this.Hide = function(){self.Nfdlg.Hide();}
}//function NewFileDialog()
// Called if a button is touched
function Nfdlgbtn_OnTouch()
{
var par = this.parent;
file = par.Nfedt.GetText();
path = par.txtpath.GetText();
if(this.GetText() == "OK") CreateFile(file, path);
par.Hide();
}//function dlgbtn_OnTouch
// Called if Button Ok is touched
function CreateFile(filename, path)
{
if (filename != "")
{
//Replace illegal letters
filename = filename.replace(/(=|\\|\/|\*|:|,|;|\+|<|>|\"|\[|\]|\?|\|)/g,"");
//Replace double Whitespaces
filename = filename.replace(/(\s+)/g," ");
//Replace Whitespaces at the start and at the end
filename = filename.trim();
//Check if File exists. if yes, show a message
if (app.FileExists(path + filename))
{
app.Alert("Please select another Filename!",
"Error - Filename already exists!");
}
else
{
//Create the file
app.WriteFile(path + filename);
//show a message if creation was ok
if (app.FileExists(path + filename))
app.ShowPopup("File Created!");
}
}
}//function CreateFile
In your app you have to do just three things,\\ \\
1. Load the Script with
app.LoadScript("DlgNewFile.js")
2. Create a Button to call the Dialog and add it to the layout
btn = app.CreateButton( "Create a new File", 0.3, 0.1, "Alum" );
btn.SetOnTouch(CreateNewFile);
lay.AddChild( btn );
3. Write a function to call the Dialog
function CreateNewFile()
{
// write the path where you want create the file
DlgNewFile = new NewFileDialog("/mnt/sdcard/");
DlgNewFile.Show();
}
Or you can use this Example.
//Called when application is started.
function OnStart()
{
app.LoadScript("DlgNewFile.js")
lay = app.CreateLayout( "Linear", "VCenter,FillXY" );
btn = app.CreateButton( "Create a new File", 0.3, 0.1, "Alum" );
btn.SetOnTouch(CreateNewFile);
lay.AddChild( btn );
app.AddLayout( lay );
}
//Create a new Dialog
function CreateNewFile()
{
// write the path where you want create the file
DlgNewFile = new NewFileDialog("/mnt/sdcard/");
DlgNewFile.Show();
}