Esempio n. 1
0
        private void listView1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            if (lockedItemSelect)
            {
                return;
            }
            int index = -1;

            if (FileList.SelectedIndices.Count > 0)
            {
                index = FileList.SelectedIndices[0];
            }

            if (index >= 0)
            {
                string       filepathxy = FileList.Items[index].Text;
                ListViewItem lvi        = null;
                this.FileList.SuspendLayout();
                this.FileList.BeginUpdate();
                if (filepathxy.Equals(".."))
                {
                    folderDeep--;
                    if (folderDeep <= 0)
                    {
                        this.FileList.EndUpdate();
                        folderDeeplist = new Dictionary <int, FolderTreeModel>();
                        drawListViewInitial();
                        return;
                    }
                    else
                    {
                        if (folderDeeplist != null)
                        {
                            Console.WriteLine("Back");
                            FileList.Items.Clear();
                            lvi            = new ListViewItem();
                            lvi.Text       = "..";
                            lvi.ImageIndex = _iconListManager.AddFileId("d", "d", true);
                            FileList.Items.Add(lvi);
                            selectedtree = folderDeeplist[folderDeep - 1];
                            foreach (FolderTreeModel row in folderDeeplist[folderDeep - 1].Rows.OrderBy(o => o.File != null).ToList())
                            {
                                lvi      = new ListViewItem();
                                lvi.Text = row.Title;
                                if (row.File != null)
                                {
                                    lvi.ImageIndex = _iconListManager.AddFileId(Path.GetExtension(row.Title), row.Title, false);
                                    double compresRatio = ConvertSize(row.File.decompressedSize, "MB") - ConvertSize(row.File.compressedSize, "MB") / ConvertSize(row.File.decompressedSize, "MB");
                                    lvi.SubItems.Add(SizeSuffix(row.File.compressedSize));
                                    lvi.SubItems.Add(SizeSuffix(row.File.decompressedSize));
                                    lvi.SubItems.Add((compresRatio * 100).ToString("F").Substring(1) + " %");
                                    lvi.Tag = row.File;
                                }
                                else
                                {
                                    lvi.ImageIndex = _iconListManager.AddFileId(row.Title, row.Title, true);
                                    lvi.SubItems.Add("-");
                                    lvi.SubItems.Add("-");
                                    lvi.SubItems.Add("-");
                                    lvi.Tag = row;
                                }
                                FileList.Items.Add(lvi);
                            }
                            folderDeeplist.Remove(folderDeep);
                        }
                    }
                }
                else if (FileList.Items[index].Tag != null && FileList.Items[index].Tag is PackStructureManager)
                {
                    Console.WriteLine("In pck");
                    selectedPck = (PackStructureManager)FileList.Items[index].Tag;
                    FileList.Items.Clear();
                    lvi            = new ListViewItem();
                    lvi.Text       = "..";
                    lvi.ImageIndex = _iconListManager.AddFileId("d", "d", true);
                    FileList.Items.Add(lvi);
                    if (selectedPck.root.Rows.Count > 0)
                    {
                        selectedtree = selectedPck.root.Rows[0];
                        folderDeeplist[folderDeep] = selectedtree;
                        foreach (FolderTreeModel row in selectedtree.Rows.OrderBy(o => o.File != null).ToList())
                        {
                            lvi      = new ListViewItem();
                            lvi.Text = row.Title;
                            if (row.File != null)
                            {
                                lvi.ImageIndex = _iconListManager.AddFileId(Path.GetExtension(row.Title), row.Title, false);
                                double compresRatio = ConvertSize(row.File.decompressedSize, "MB") - ConvertSize(row.File.compressedSize, "MB") / ConvertSize(row.File.decompressedSize, "MB");
                                lvi.SubItems.Add(SizeSuffix(row.File.compressedSize));
                                lvi.SubItems.Add(SizeSuffix(row.File.decompressedSize));
                                lvi.SubItems.Add((compresRatio * 100).ToString("F").Substring(1) + " %");
                                lvi.Tag = row.File;
                            }
                            else
                            {
                                lvi.ImageIndex = _iconListManager.AddFileId(row.Title, row.Title, true);
                                lvi.SubItems.Add("-");
                                lvi.SubItems.Add("-");
                                lvi.SubItems.Add("-");
                                lvi.Tag = row;
                            }
                            FileList.Items.Add(lvi);
                        }
                        folderDeep++;
                    }
                    else
                    {
                        selectedtree = selectedPck.root;
                        folderDeeplist[folderDeep] = selectedtree;
                    }
                }
                else if (FileList.Items[index].Tag != null && FileList.Items[index].Tag is FolderTreeModel)
                {
                    Console.WriteLine("In Directory");

                    selectedtree = (FolderTreeModel)FileList.Items[index].Tag;
                    FileList.Items.Clear();
                    lvi            = new ListViewItem();
                    lvi.Text       = "..";
                    lvi.ImageIndex = _iconListManager.AddFileId("d", "d", true);
                    FileList.Items.Add(lvi);
                    folderDeeplist[folderDeep] = selectedtree;
                    foreach (FolderTreeModel row in selectedtree.Rows.OrderBy(o => o.File != null).ToList())
                    {
                        lvi      = new ListViewItem();
                        lvi.Text = row.Title;
                        if (row.File != null)
                        {
                            lvi.ImageIndex = _iconListManager.AddFileId(Path.GetExtension(row.Title), row.Title, false);
                            double compresRatio = ConvertSize(row.File.decompressedSize, "MB") - ConvertSize(row.File.compressedSize, "MB") / ConvertSize(row.File.decompressedSize, "MB");
                            lvi.SubItems.Add(SizeSuffix(row.File.compressedSize));
                            lvi.SubItems.Add(SizeSuffix(row.File.decompressedSize));
                            lvi.SubItems.Add((compresRatio * 100).ToString("F").Substring(1) + " %");
                            lvi.Tag = row.File;
                        }
                        else
                        {
                            lvi.ImageIndex = _iconListManager.AddFileId(row.Title, row.Title, true);
                            lvi.SubItems.Add("-");
                            lvi.SubItems.Add("-");
                            lvi.SubItems.Add("-");
                            lvi.Tag = row;
                        }

                        FileList.Items.Add(lvi);
                    }
                    folderDeep++;
                }
                this.FileList.ResumeLayout();
                this.FileList.EndUpdate();
                textBox1.Text = "";
                foreach (FolderTreeModel list in folderDeeplist.Values)
                {
                    textBox1.AppendText(list.Title + Path.DirectorySeparatorChar);
                }
                string ddd = textBox1.Text;
                textBox1.Text = ddd.TrimEnd(Path.DirectorySeparatorChar);
            }
        }