Skip to content
Snippets Groups Projects
Commit f5f9f604 authored by Eugene So's avatar Eugene So
Browse files

Modify filearea-lb.js to use .dnload for batch downloads

parent 48cc4775
No related branches found
No related tags found
1 merge request!240Migrate filearea-lb.js to use FileBase
...@@ -143,16 +143,19 @@ var Batch = function(parentFrame) { ...@@ -143,16 +143,19 @@ var Batch = function(parentFrame) {
if(typeof colors[c] != "undefined") if(typeof colors[c] != "undefined")
self.tree.colors[c] = colors[c]; self.tree.colors[c] = colors[c];
} }
for(var b in state.batch) { var fileItems = batchGet();
if (fileItems) {
fileItems.forEach( function(fileItem) {
var item = self.tree.addItem( var item = self.tree.addItem(
format( format(
"%-25s %7s %s", "%-25s %7s %s",
formatFileName(state.batch[b].name), formatFileName(fileItem.name),
file_size_str(state.batch[b].size), file_size_str(fileItem.size),
state.batch[b].desc ? state.batch[b].desc : "" fileItem.desc ? fileItem.desc : ""
) )
); );
item.fileItem = state.batch[b]; item.fileItem = fileItem;
});
} }
} }
buildTree(); buildTree();
...@@ -161,18 +164,11 @@ var Batch = function(parentFrame) { ...@@ -161,18 +164,11 @@ var Batch = function(parentFrame) {
this.tree.open(); this.tree.open();
var sendBatch = function() { var sendBatch = function() {
var fn = system.temp_dir + format("%04d.dwn", user.number);
var f = new File(fn);
f.open("w");
for(var b in state.batch) {
f.writeln(state.batch[b].name);
}
f.close();
console.clear(BG_BLACK|LIGHTGRAY); console.clear(BG_BLACK|LIGHTGRAY);
bbs.batch_add_list(fn); var result = bbs.batch_download();
bbs.batch_download();
console.clear(BG_BLACK|LIGHTGRAY); console.clear(BG_BLACK|LIGHTGRAY);
frame.invalidate(); frame.invalidate();
return result;
} }
this.cycle = function() { this.cycle = function() {
...@@ -182,15 +178,17 @@ var Batch = function(parentFrame) { ...@@ -182,15 +178,17 @@ var Batch = function(parentFrame) {
this.getcmd = function(cmd) { this.getcmd = function(cmd) {
switch(cmd.toUpperCase()) { switch(cmd.toUpperCase()) {
case "D": case "D":
sendBatch(); if (sendBatch()) {
batchClear();
this.close();
}
break; break;
case "G": case "G":
this.close(); this.close();
break; break;
case "R": case "R":
if(typeof this.tree.currentItem.fileItem != "undefined") { if(typeof this.tree.currentItem.fileItem != "undefined") {
var key = md5_calc(this.tree.currentItem.fileItem.fullPath, true); batchRemove(this.tree.currentItem.fileItem);
delete state.batch[key];
this.tree.close(); this.tree.close();
buildTree(); buildTree();
this.tree.open(); this.tree.open();
...@@ -209,6 +207,7 @@ var Batch = function(parentFrame) { ...@@ -209,6 +207,7 @@ var Batch = function(parentFrame) {
this.frame.delete(); this.frame.delete();
state.chooser = chooser; state.chooser = chooser;
state.browse = browse; state.browse = browse;
chooser.refresh();
} }
} }
...@@ -371,6 +370,12 @@ var Chooser = function(parentFrame, list, treeBuilder) { ...@@ -371,6 +370,12 @@ var Chooser = function(parentFrame, list, treeBuilder) {
scrollBar.cycle(); scrollBar.cycle();
} }
this.refresh = function() {
self.tree.items = [];
list.forEach(function(item) { treeBuilder(self.tree, item); });
self.tree.open();
}
this.close = function() { this.close = function() {
this.tree.close(); this.tree.close();
this.frame.close(); this.frame.close();
...@@ -379,14 +384,71 @@ var Chooser = function(parentFrame, list, treeBuilder) { ...@@ -379,14 +384,71 @@ var Chooser = function(parentFrame, list, treeBuilder) {
} }
var batchSelected = function(fileItem) {
var fn = system.data_dir + format("user/%04d.dnload", user.number);
var f = new File(fn);
if (f.open("r")) {
var filenames = f.iniGetSections();
for (var i = 0; i < filenames.length; ++i) {
if (filenames[i] === fileItem.name) {
var dirCode = f.iniGetValue(fileItem.name, "dir");
if (dirCode === fileItem.dirCode)
return true;
}
}
}
return false;
}
var batchGet = function() {
var fileItems = [];
var fn = system.data_dir + format("user/%04d.dnload", user.number);
var f = new File(fn);
if (!f.open("r"))
return;
var filenames = f.iniGetSections();
filenames.forEach( function(filename) {
var dirCode = f.iniGetValue(filename, "dir");
var fb = new FileBase(dirCode);
fb.open();
var item = fb.get(filename);
item.fullPath = fb.get_path(filename);
item.dirCode = dirCode;
fileItems.push(item);
});
return fileItems;
}
var batchAdd = function(fileItem) {
var fn = system.data_dir + format("user/%04d.dnload", user.number);
var f = new File(fn);
f.open(f.exists ? "r+" : "w+");
f.iniSetValue(fileItem.name, "dir", fileItem.dirCode);
f.close();
}
var batchRemove = function(fileItem) {
var fn = system.data_dir + format("user/%04d.dnload", user.number);
var f = new File(fn);
f.open(f.exists ? "r+" : "w+");
f.iniRemoveSection(fileItem.name);
f.close();
}
var batchClear = function() {
file_remove(system.data_dir + format("user/%04d.dnload", user.number));
}
var batchToggle = function() { var batchToggle = function() {
var key = md5_calc(state.chooser.tree.currentItem.fileItem.fullPath, true); if (!batchSelected(state.chooser.tree.currentItem.fileItem)) {
if(typeof state.batch[key] == "undefined") {
state.chooser.tree.currentItem.text = state.chooser.tree.currentItem.text.replace(/^./, "*"); state.chooser.tree.currentItem.text = state.chooser.tree.currentItem.text.replace(/^./, "*");
state.batch[key] = state.chooser.tree.currentItem.fileItem; batchAdd(state.chooser.tree.currentItem.fileItem);
} else { } else {
state.chooser.tree.currentItem.text = state.chooser.tree.currentItem.text.replace(/^\*/, " "); state.chooser.tree.currentItem.text = state.chooser.tree.currentItem.text.replace(/^\*/, " ");
delete state.batch[key]; batchRemove(state.chooser.tree.currentItem.fileItem);
} }
state.chooser.tree.refresh(); state.chooser.tree.refresh();
} }
...@@ -412,9 +474,9 @@ var formatFileName = function(name, length) { ...@@ -412,9 +474,9 @@ var formatFileName = function(name, length) {
var fileChooser = function(code) { var fileChooser = function(code) {
var treeBuilder = function(tree, item) { var treeBuilder = function(tree, item) {
var str = format( var str = format(
" %-25s%-8s%8s %s", "%c%-25s%-8s%8s %s",
batchSelected(item) ? '*' : ' ',
formatFileName(item.name), formatFileName(item.name),
file_size_str(item.size), file_size_str(item.size),
system.datestr(item.added), system.datestr(item.added),
...@@ -438,6 +500,7 @@ var fileChooser = function(code) { ...@@ -438,6 +500,7 @@ var fileChooser = function(code) {
var files = fd.get_list("", FileBase.DETAIL.EXTENDED); var files = fd.get_list("", FileBase.DETAIL.EXTENDED);
files.forEach(function(item) { files.forEach(function(item) {
item.fullPath = fd.get_path(item.name); item.fullPath = fd.get_path(item.name);
item.dirCode = code;
}); });
state.chooser = new Chooser( state.chooser = new Chooser(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment