Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

Ebook Shelf

0.00/5 (No votes)
2 Apr 2011 1  
Ebook Shelf works like resource manager
EbookShelf_1.0.6.png

Introduction

EbookShelf acts like the resource manager. It scans the directories that can be edited via config.ini to generate dynamic treeview. When the tree node is clicked, it also scans the files under such directory to generate dynamic listview. The files could be dragged from the listview then dropped to the treeview. The directory could be dragged / dropped in the treeview section. The file could be renamed and deleted, also the directory could be renamed, deleted and sub-directory created. The listview is in the smallicon view, so it needs to fix the small icons overlap issue via fired largeicon view first, then smallicon view.

Using the Code

Dynamically generated directories treeView:

  1. Declare Thread handler objTreeViewInitThread:
    Thread objTreeViewInitThread = null; 
  2. Create thread handler with callback function pointer m_treeViewInitProc:
    objTreeViewInitThread = new Thread(MainForm.m_treeViewInitProc);
    objTreeViewInitThread.IsBackground = true;
    objTreeViewInitThread.Start(this);
    objTreeViewInitThread.Join(); 
  3. Recursively travel directories tree:
    private void m_ListDirectory(TreeNode Parent, DirectoryInfo dir)
    {
        if (!dir.Exists) return;
        DirectoryInfo[] ChildDirectory;
        TreeNode node = new TreeNode();
        node.Name = dir.FullName;   // Directory full path
        node.Text = dir.Name;       // Directory folder name
        if (null == Parent)
        {
            treeView.Nodes.Add(node);
        }
        else
        {
             Parent.Nodes.Add(node);
        }
        ChildDirectory = dir.GetDirectories();
        foreach (DirectoryInfo dirInfo in ChildDirectory)
        {
             m_ListDirectory(node, dirInfo);
        }
    } 

Points of Interest

Thanks to IniParser, IconListManager, SHFileOperation to delete files and directories to trash developed by CodeProject members, I could do the stuff so quickly ^_^.

History

  • 1.0.6
    • Function:
      • Edit config.ini to set Directory
      • Support create, edit, delete and drag / drop category
      • Support edit, delete and drag / drop file
      • Support order by type and name
    • BUG:
      • It cannot refresh directories treeview or files listview when edited out of the application
      • Dragging / dropping categories, the target dropped node does not highlight
      • Click order by name first then click order by type, it failed to order by type

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here