I think this should serve as a warning to those who are not as familiar with computers... never mix data managed by you with data managed by a program -- the program will often assume that it has full ownership of the location that it is managing.
I dislike the recycle bin idea, mostly because it's not portable... (What do you do on Linux if the user is just using a window manager w/o a desktop environment (and thus no recycle bin concept)? Do you support every last DE? No!)
That said, the delete was implemented exactly as I would have... I would have assumed that library folders were for the unique use of the program (which is enforced at creation -- must be an empty folder), and thus I can just blindly delete that folder.
Perhaps a viable solution (with some performance impact, possibly significant for large libraries) would be to only delete files referenced by the metadata file, only remove subfolders that are empty after the deletion, then finally delete the metadata file. This would be a safer library delete in case the user decided to repurpose their library folder (for example, pointing a reader application directly at the folder, which stores annotations in the same folders).
|