Friday 15 March 2013

c# - Saving directory paths in JSON? -



c# - Saving directory paths in JSON? -

i have application displays treeview of folders, format below:

- main folder - subfolder - subfolder - subfolder - subfolder

questions: 1) how search folders (not files) , add together them list called syncdirectories(fixed)

2) how iterate through json object , save list<saveddata> in order add/remove data (fixed)

3) how loop through syncdirectories list , add together nodes treeview in wpf. (keep in mind treeview checkbox class using.

and on. also, illustration demonstrate format, , users have more subdirectories.

each of these folders has checkbox on treeview class.

in order save folders , subfolders user adds (and checks), thought saving json file listing folder , subfolder paths, along (true/false) checked values idea. right? using json.net.

messing around json, came format:

{ "path": "path/here", "subdirectories": [ {"path": "sub/path/here","sync": false}, {"path": "sub/path/here","sync": true}, {"path": "sub/path/here","sync": false} ] }

which translated class:

public class saveddata { public string path { get; set; } public list<subdirectory> subdirectories { get; set; } } public class subdirectory { public string path { get; set; } public bool sync { get; set; } public list<subdirectory> subdirectories { get; set; } }

this raises question, how search folders (not files) , add together them list called syncdirectories?

here have far in adddirectory function:

private void adddirectory() { var dialog = new folderbrowserdialog(); dialogresult result = dialog.showdialog(); if (result == system.windows.forms.dialogresult.ok) { saveddata info = new saveddata(); data.path = dialog.selectedpath; synceddirectories.add(); } // add together info synceddirectories list, save list , refresh treeview savedata(); }

and save function:

public void savedata() { jsonserializer serializer = new jsonserializer(); using (streamwriter sw = new streamwriter(appdata)) using (jsonwriter author = new jsontextwriter(sw)) { serializer.serialize(writer, synceddirectories); } }

when save info file, how iterate through json object , save list<saveddata> in order add/remove data?

update 1

i have figured out how handle info (below), how add together these "nodes" treeview?

public void getdirectories(string dir) { // create info object saveddata info = new saveddata(); data.path = dir; data.subdirectories = new list<subdirectory>(); foreach (string directory in directory.getdirectories(dir)) { subdirectory subdir = new subdirectory(); subdir.path = directory; subdir.subdirectories = getsubdir(directory); data.subdirectories.add(subdir); } synceddirectories.add(data); } private list<subdirectory> getsubdir(string dir) { list<subdirectory> datalist = new list<subdirectory>(); subdirectory subdir = new subdirectory(); foreach (string directory in directory.getdirectories(dir)) { subdir.path = directory; subdir.subdirectories = new list<subdirectory>(); subdir.subdirectories = getsubdir(directory); datalist.add(subdir); } homecoming datalist; }

later, plan release programme open source on github. when do, post link here.

after couple hours of playing around function, realized needed 2 functions finish task.

public void getdirectories(string dir) { // create info object saveddata info = new saveddata(); data.path = dir; data.subdirectories = new list<subdirectory>(); foreach (string directory in directory.getdirectories(dir)) { subdirectory subdir = new subdirectory(); subdir.path = directory; subdir.subdirectories = getsubdir(directory); data.subdirectories.add(subdir); } synceddirectories.add(data); } private list<subdirectory> getsubdir(string dir) { list<subdirectory> datalist = new list<subdirectory>(); subdirectory subdir = new subdirectory(); foreach (string directory in directory.getdirectories(dir)) { subdir.path = directory; subdir.subdirectories = new list<subdirectory>(); subdir.subdirectories = getsubdir(directory); datalist.add(subdir); } homecoming datalist; }

this gets main directory loops , finds subdirectories , adds them list.

c# json wpf treeview

No comments:

Post a Comment