Windows File Tagger Shell Extensions (C++)




This project requires solid experience in developing shell extensions -- particularly context menu and namespace extensions.

Develop a set of Windows shell extensions that will allow the user to 1) assign (and remove) one or more arbitrary tags to any file, and 2) browse a virtual folder whose subdirectories are the tags in use and whose contents are files who share the tags in this virtual subdirectory. This is a small utility with some tricky plumbing.




== General Requirements ==

- Must run under Windows XP/Vista/7. 64-bit support is not required.

- Must be written in unmanaged C++. VB6 or managed solutions (i.e. C#) are prohibited (If you're submitting a bid, you should already know this restriction.)

- Must be efficient. Rough goal for a dual-core 2GHz machine w/ 1GB RAM is no more than 3s to filter down 5,000 files in the worst case. This is flexible, and meant to give a starting point, but it should be relatively quick.

- File tagging (or untagging) should not modify the file itself in any way.

- Security of tags or tag/file associations is not an issue.

- Must not access/require internet access.

== Requirement 1 - Tag Manipulation - 10% ==

Tagging and removing of tags on arbitrary files, should be the easier of the two tasks and should be implemented as a context menu. The context submenu should include a list of all tags available with those already selected checked or otherwise marked, and allow a user to mark one or more selected files with a given tag.

A tag list will be stored in a plaintext, user-modifiable file. This could be a CSV, INI, whatever. Tag & files associations can be stored in any way that proves efficient. This part does not have to be human readable so a binary format will likely be optimal.

(Optional requirement 1b, a property page accessible via the Properties context menu item displaying checkboxes for the available tags indicating which tags the file is associated with and allowing the user to toggle them. Only if you're feeling ambitious...)

== Requirement 2 - Tag Browsing - 90% ==

Develop a shell namespace extension to create a virtual directory on the local machine. This directory will 'point' to a real directory on the machine but display the contents of that folder and (its subfolders) in a tag-based way. This virtual directory will contain subfolders. The subfolders are tags that have 1 or more files associated with them (empty tags will not be shown). Opening a subfolder will the display subfolders and items -- the subfolders will be tags which, in combination with the current tag, yield 1 or more files; and files which match the currently selected tags. In essence, the relative path from the namespace root becomes a list of tags to filter for. At no point should a tag be listed as a subfolder if navigating to it would yield 0 results.

For example, assuming the namespace is rooted at C:\User\Tags, then a 'path' of "C:\User\Tags\Wallpapers\Car" should display files tagged with at least 'Wallpapers' and 'Car'. If there were files tagged with 'Wallpaper', 'Car', and 'Beach', then "Beach" would be a subfolder (files with the Beach tag would be shown at this point, however, clicking on the Beach folder would filter out those without that tag.)

Folders under this namespace should behave and respond as standard Windows Explorer folders. Toolbar features such as various ShellViews should work as well as context menus -- and of course, Tagging. This will probably entail using DefView. If I knew for sure, I'd be writing this myself.




- Compiled DLLs

- List of any necessary registry settings needed to 'install'. (.reg file will work)

- Source, including but not limited to: classes, header files, any other resource files or data necessary for compilation and/or use.

Code should be reasonably well documented, at least at the procedure level.

Taidot: C-ohjelmointi, Windows Desktop

Näytä lisää: shell extensions windows, shell extension virtual folder, tag windows files, virtual folder shell extension, windows shell extensions, writing wallpaper, writing file, writing car windows, writing folders, writing procedure, use case include example, use case extension, submitting bid, resource one solutions, registry utility, toggle bit, core mark, car re, bit manipulation, bit binary, binary manipulation, binary bit, windows file tagger, file tagger, windows shell extension

About the Employer:
( 0 reviews ) Hampton, United States

Projektin tunnus: #514165