65.9K
CodeProject is changing. Read more.
Home

Ebook Shelf

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.50/5 (4 votes)

Apr 5, 2010

MIT

1 min read

viewsIcon

34960

downloadIcon

1190

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