void prepare(object sender, TreeViewCancelEventArgs e)
        {
            BeginUpdate();
            DirTreeNode tn = (DirTreeNode)e.Node;

            try
            {
                tn.populate();
                EndUpdate();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                //tn.Nodes.Add(new TreeNode());
                //tn.Nodes.Clear();
                tn.Collapse();
                //tn.Parent.Collapse();
                //tn.Nodes.Clear();
                tn.Collapse();
                e.Node.Remove();
                //tn.
                //Nodes.Add(tn);
                Nodes.Insert(tn.Index, tn);


                EndUpdate();
            }
        }
        /// <summary>
        /// Metoda tworz¹ca obiekty zdjêc i dodaj¹ca je do kontrolki wyœwietlaj¹cej
        /// </summary>
        /// <param name="Node">wêz³ dla którego tworzymy obiekty zdjêæ</param>
        /// <returns>zwraca tablice obiektów zdjêæ</returns>
        private Zdjecie[] WybierzPlikiZdjec(DirTreeNode Node)
        {
            List <Zdjecie> zdjecia = new List <Zdjecie>();
            List <string>  pliki   = Przefiltruj(Node.Path);

            Zdjecie z;

            if (Node.Text != "Mój Komputer")
            {
                try
                {
                    for (int i = 0; i < pliki.Count; i++)
                    {
                        try
                        {
                            if ((pliki[i].ToLower().LastIndexOf(".jpg") != -1 && pliki[i].ToLower().LastIndexOf(".jpg") == (pliki[i].Length - 4)) || (pliki[i].ToLower().LastIndexOf(".jpeg") != -1 && pliki[i].ToLower().LastIndexOf(".jpeg") == (pliki[i].Length - 5)))
                            {
                                z = new Zdjecie(pliki[i]);
                                z.ZweryfikujZdjecie();
                                zdjecia.Add(z);
                            }
                        }
                        catch (ArgumentException)
                        {
                            MessageBox.Show("Plik: \"" + pliki[i].Substring(pliki[i].LastIndexOf("\\") + 1) + "\" mimo poprawnego rozszezenie nie zawiera zdjêcia", pliki[i], MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        }
                    }
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message + " - Odmowa dostêpu", Node.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            return(zdjecia.ToArray());
        }
        protected override void OnAfterSelect(TreeViewEventArgs e)
        {
            base.OnAfterSelect(e);

            if (RozpoczetoWyszukiwanie != null)
            {
                RozpoczetoWyszukiwanie(null);
            }

            BackgroundWorker bw = new BackgroundWorker();

            bw.WorkerReportsProgress = true;
            bw.DoWork             += new DoWorkEventHandler(bw_DoWork);
            bw.ProgressChanged    += new ProgressChangedEventHandler(bw_ProgressChanged);
            bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
            bw.RunWorkerAsync(e.Node);

            DirTreeNode dn = new DirTreeNode("napis");

            if (e.Node.Text.IndexOf("A:\\") == 0 && e.Node.Text.LastIndexOf("\\") < 4)
            {
                e.Node.Text               = "A:\\ " + "[" + dn.Etykieta(e.Node.Text.Substring(0, 3)) + "]";
                e.Node.ImageIndex         = 5;
                e.Node.SelectedImageIndex = 5;
            }
            else if (e.Node.Text.IndexOf("B:\\") == 0 && e.Node.Text.LastIndexOf("\\") < 4)
            {
                e.Node.Text               = "B:\\ " + "[" + dn.Etykieta(e.Node.Text.Substring(0, 3)) + "]";
                e.Node.ImageIndex         = 5;
                e.Node.SelectedImageIndex = 5;
            }
        }
        /// <summary>
        /// Metoda przygotowuj¹ca wêze³ drzewa do otwarcia
        /// </summary>
        void prepare(object sender, TreeViewCancelEventArgs e)
        {
            BeginUpdate();
            DirTreeNode tn = (DirTreeNode)e.Node;

            //zaznaczony = (DirTreeNode)e.Node;
            try
            {
                tn.populate(tn);
                EndUpdate();
            }
            catch (Exception ex)
            {
                if (tn.Path.Length == 3)
                {
                    MessageBox.Show(ex.Message + " - Odmowa dostêpu", e.Node.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
                    //e.Node.
                    e.Node.Remove();
                    //Nodes.Insert(tn.Index, tn);
                    kat_MKomputer.Nodes.Insert(tn.Index, tn);
                    //zaznaczony.Collapse(false);
                }
                else
                {
                    //DirNode("", false);
                }
                EndUpdate();
            }
        }
        void bw_DoWork(object sender, DoWorkEventArgs args)
        {
            DirTreeNode      Node = (DirTreeNode)args.Argument;
            BackgroundWorker bw   = sender as BackgroundWorker;

            args.Result = ZnajdzPlikiWKatalogu(bw, Node);
        }
        public void Open(string path)
        {
            TreeNodeCollection nodes = Nodes;
            DirTreeNode        subnode = null;
            int i, n;



            path  = path.ToLower();
            nodes = Nodes;
            while (nodes != null)
            {
                n = nodes.Count;
                for (i = 0; i < n; i++)
                {
                    subnode = (DirTreeNode)nodes[i];
                    if (path == subnode.Path)
                    {
                        subnode.Expand();
                        return;
                    }
                    if (path.StartsWith(subnode.Path))
                    {
                        subnode.Expand();
                        break;
                    }
                }
                if (i == n)
                {
                    return;
                }
                nodes = subnode.Nodes;
            }
        }
        void clear(object sender, TreeViewEventArgs e)
        {
            BeginUpdate();
            DirTreeNode tn = (DirTreeNode)e.Node;

            tn.setLeaf(true);
            EndUpdate();
        }
        /// <summary>
        /// Metoda która dotosowuje wygl¹d drzewa do sytuacji w widoku miniatur
        /// </summary>
        /// <param name="czy_do_gory">czy katalog nadrzêdny</param>
        /// <param name="napis">sciezka katalogu do wyœwietlenia</param>
        public void DirNode(string napis, bool czy_do_gory)
        {
            string nn = "";

            try
            {
                if (napis != "" || czy_do_gory == true)
                {
                    nn = PootwierajDrzewoDoZaznaczonego(zaznaczony);
                }
                if (czy_do_gory)
                {
                    if (nn == "")
                    {
                        zaznaczony = (DirTreeNode)zaznaczony.Parent;
                        zaznaczony.Collapse(true);
                    }

                    FullPath_zaznaczonego = zaznaczony.FullPath;
                }
                else
                {
                    if (napis != "" && nn == "")
                    {
                        zaznaczony.Expand();

                        TreeNodeCollection kolekcja = zaznaczony.Nodes;
                        DirTreeNode        ppp      = zaznaczony;

                        foreach (TreeNode t in kolekcja)
                        {
                            ppp = (DirTreeNode)t;
                            if (napis.ToLower().CompareTo(ppp.Path) == 0)
                            {
                                break;
                            }
                        }
                        zaznaczony            = ppp;
                        FullPath_zaznaczonego = zaznaczony.FullPath;//FullPath_zaznaczonego + "\\" + napis.Substring(napis.LastIndexOf("\\") + 1, napis.Length - napis.LastIndexOf("\\") - 1);
                    }
                }
                PowiadomOZawartosciKatalogu(zaznaczony);
                UstawienieEtykietyDyskietki(zaznaczony);
            }
            catch (Exception)
            {
                MessageBox.Show("Dany katalog zosta³ usuniety drzewo zostanie zwiniête", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Delete();
                Fill();
                zaznaczony            = kat_MKomputer;
                FullPath_zaznaczonego = zaznaczony.FullPath;
                PowiadomOZawartosciKatalogu(zaznaczony);
                UstawienieEtykietyDyskietki(zaznaczony);
            }
        }
        private Zdjecie[] ZnajdzPlikiWKatalogu(BackgroundWorker bw, DirTreeNode Node)
        {
            List <Zdjecie> zdjecia = new List <Zdjecie>();
            List <string>  pliki   = new List <string>();

            try
            {
                pliki.AddRange(Directory.GetFiles(Node.Path, "*.jpg"));
                pliki.AddRange(Directory.GetFiles(Node.Path, "*.jpeg"));
                pliki.AddRange(Directory.GetFiles(Node.Path, "*.tif"));
                pliki.AddRange(Directory.GetFiles(Node.Path, "*.tiff"));

                pliki.Sort();

                for (int i = 0; i < pliki.Count; i++)
                {
                    try
                    {
                        if ((pliki[i].ToLower().LastIndexOf(".jpg") != -1 && pliki[i].ToLower().LastIndexOf(".jpg") == (pliki[i].Length - 4)) || (pliki[i].ToLower().LastIndexOf(".jpeg") != -1 && pliki[i].ToLower().LastIndexOf(".jpeg") == (pliki[i].Length - 5)) || (pliki[i].ToLower().LastIndexOf(".tif") != -1 && pliki[i].ToLower().LastIndexOf(".tif") == (pliki[i].Length - 4)) || (pliki[i].ToLower().LastIndexOf(".tiff") != -1 && pliki[i].ToLower().LastIndexOf(".tiff") == (pliki[i].Length - 5)))
                        {
                            Zdjecie z = new Zdjecie(pliki[i]);
                            bw.ReportProgress(0, z);
                            zdjecia.Add(z);
                        }
                    }
                    catch (ArgumentException)
                    {
                        //MessageBox.Show("testowo: plik nie jest w poprawnym formacie ");
                        MessageBox.Show("Plik: \"" + pliki[i].Substring(pliki[i].LastIndexOf("\\") + 1) + "\" mimo poprawnego rozszezenie nie zawiera zdjêcia", pliki[i], MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message + " - Odmowa dostêpu", Node.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);



                /*if (Node.Text.Length == 3)
                 * {
                 *  if (Node.Text.CompareTo("A:\\") == 0 || Node.Text.CompareTo("B:\\") == 0 )
                 *  {
                 *      Node.ImageIndex = Dyskietka;
                 *      Node.SelectedImageIndex = Dyskietka;
                 *  }
                 * }
                 */
                DirTreeNode dd = new DirTreeNode("napis");

                this.SelectedNode = dd;
                //this.SelectedNode = null;
            }
            return(zdjecia.ToArray());
        }
        /// <summary>
        /// Metoda do nawigacji za pomoc¹ klawiatury po drzewie. Naciœniecie klawisza Enter na zaznaczonym wêŸle drzewa spowoduje jego eyœwietlenie
        /// </summary>
        protected override void OnKeyPress(KeyPressEventArgs e)
        {
            base.OnKeyPress(e);

            DirTreeNode wezel = (DirTreeNode)this.SelectedNode;

            if (wezel != null)
            {
                if (e.KeyChar == (char)Keys.Enter)
                {
                    zaznaczony            = (DirTreeNode)this.SelectedNode;
                    FullPath_zaznaczonego = zaznaczony.FullPath;
                    DirNode("", false);
                }
            }
        }
Example #11
0
    public void Fill()
    {
        BeginUpdate();
        string[] drives = Directory.GetLogicalDrives();
        for (int i = 0; i < drives.Length; i++)
        {
            DirTreeNode dn = new DirTreeNode(drives[i]);
            dn.ImageIndex = HD;

            Nodes.Add(dn);
        }
        EndUpdate();

        BeforeExpand  += new TreeViewCancelEventHandler(prepare);
        AfterCollapse += new TreeViewEventHandler(clear);
    }
Example #12
0
    public void Fill()
    {
        BeginUpdate();
        string[] drives = Directory.GetLogicalDrives();
        for (int i = 0; i < drives.Length; i++)
        {
            DirTreeNode dn = new DirTreeNode(drives[i]);
            dn.ImageIndex = HD;

            Nodes.Add(dn);
        }
        EndUpdate();

        BeforeExpand += new TreeViewCancelEventHandler(prepare);
        AfterCollapse += new TreeViewEventHandler(clear);
    }
Example #13
0
    void prepare(object sender, TreeViewCancelEventArgs e)
    {
        BeginUpdate();
        DirTreeNode tn = (DirTreeNode)e.Node;

        try
        {
            tn.populate();
            EndUpdate();
        }
        catch (Exception ex)
        {
            EndUpdate();
            MessageBox.Show(ex.Message);
            tn.Nodes.Clear();
        }
    }
        protected override void OnAfterExpand(TreeViewEventArgs e)
        {
            base.OnAfterExpand(e);


            if (e.Node.Text.IndexOf("A:\\") == 0 && e.Node.Text.LastIndexOf("\\") < 4)
            {
                e.Node.Text               = "A:\\ " + "[" + DirTreeNode.Etykieta(e.Node.Text.Substring(0, 3)) + "]";
                e.Node.ImageIndex         = Dyskietka_z;
                e.Node.SelectedImageIndex = Dyskietka_z;
            }
            else if (e.Node.Text.IndexOf("B:\\") == 0 && e.Node.Text.LastIndexOf("\\") < 4)
            {
                e.Node.Text               = "B:\\ " + "[" + DirTreeNode.Etykieta(e.Node.Text.Substring(0, 3)) + "]";
                e.Node.ImageIndex         = Dyskietka_z;
                e.Node.SelectedImageIndex = Dyskietka_z;
            }
        }
        /// <summary>
        /// Metoda do otwierania wez³a drzewa
        /// </summary>
        /// <param name="path">sciezka katalogu do otwrcia</param>
        public void Open(string path)
        {
            TreeNodeCollection nodes = Nodes;
            DirTreeNode        subnode = null;
            int i, n;

            if (path.IndexOf("Mój Komputer") == 0)
            {
                path = path.ToLower().Substring("Mój Komputer".Length, path.Length - "Mój Komputer".Length);
            }
            else
            {
                path = path.ToLower();
            }

            Nodes.Clear();

            nodes = Nodes;
            while (nodes != null)
            {
                n = nodes.Count;
                for (i = 0; i < n; i++)
                {
                    subnode = (DirTreeNode)nodes[i];
                    if (path == subnode.Path)
                    {
                        subnode.Expand();
                        return;
                    }
                    if (path.StartsWith(subnode.Path))
                    {
                        subnode.Expand();
                        break;
                    }
                }
                if (i == n)
                {
                    return;
                }
                nodes = subnode.Nodes;
            }
        }
        void prepare(object sender, TreeViewCancelEventArgs e)
        {
            BeginUpdate();
            DirTreeNode tn = (DirTreeNode)e.Node;

            try
            {
                tn.populate();
                EndUpdate();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + " - Odmowa dostêpu", e.Node.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);

                e.Node.Remove();
                Nodes.Insert(tn.Index, tn);

                EndUpdate();
            }
        }
            /// <summary>
            /// Metoda tworz¹ca i dodaj¹ca wêz³y do drzewa katalogów
            /// </summary>
            /// <param name="tn">wêze³ drzewa który zostanie otwarty</param>
            internal void populate(DirTreeNode tn)
            {
                ArrayList folder = new ArrayList();;

                if (tn.FullPath != "Mój Komputer")
                {
                    DirTreeNode dnn   = new DirTreeNode(tn.Text);
                    int         gdzie = tn.Index;

                    string[] files = Directory.GetDirectories(Path);
                    Array.Sort(files);

                    for (int i = 0; i < files.Length; i++)
                    {
                        folder.Add(new DirTreeNode(files[i], FOLDER));
                    }

                    Nodes.Clear();
                    foreach (DirTreeNode dtn in folder)
                    {
                        Nodes.Add(dtn);
                    }
                    czy_otwiera = false;
                }
                else
                {
                    string[] drives = Directory.GetLogicalDrives();

                    foreach (string tempDrive in drives)
                    {
                        DirTreeNode dn = new DirTreeNode(tempDrive);
                        folder.Add(dn);
                    }
                    Nodes.Clear();
                    foreach (DirTreeNode dtn in folder)
                    {
                        Nodes.Add(dtn);
                    }
                }
            }
        public void Fill()
        {
            BeginUpdate();
            string[] drives = Directory.GetLogicalDrives();

            foreach (string tempDrive in drives)
            {
                DirTreeNode dn = new DirTreeNode(tempDrive);
                Nodes.Add(dn);

                if (tempDrive.IndexOf("C:\\") != -1)
                {
                    this.SelectedNode = dn;
                    this.Select(true, true);
                }
            }

            EndUpdate();

            BeforeExpand += new TreeViewCancelEventHandler(prepare);
            AfterCollapse += new TreeViewEventHandler(clear);
        }
        public void Fill()
        {
            BeginUpdate();
            string[] drives = Directory.GetLogicalDrives();

            foreach (string tempDrive in drives)
            {
                DirTreeNode dn = new DirTreeNode(tempDrive);
                Nodes.Add(dn);

                if (tempDrive.IndexOf("C:\\") != -1)
                {
                    this.SelectedNode = dn;
                    this.Select(true, true);
                }
            }

            EndUpdate();

            BeforeExpand  += new TreeViewCancelEventHandler(prepare);
            AfterCollapse += new TreeViewEventHandler(clear);
        }
        public void Fill()
        {
            BeginUpdate();
            string[] drives = Directory.GetLogicalDrives();

            //string[] tempString = Directory.GetLogicalDrives();

            //DriveInfo tempInfo = new DriveInfo("", 0, "My Computer");
            //availableDrives.Add(tempInfo);

            foreach (string tempDrive in drives)
            {
                /* int tempType = getDriveType(tempDrive);
                 string tempName = GetDriveName(tempDrive);
                 tempInfo = new DriveInfo(tempDrive, tempType, tempName);
                 availableDrives.Add(tempInfo);
                 */
                //string tempName = GetDriveName(tempDrive);

                DirTreeNode dn = new DirTreeNode(tempDrive);

                //dn.Text = tempName + "(" + tempDrive + ")";
                Nodes.Add(dn);

            }

            //Directory.g

            //for (int i = 0; i < drives.Length; i++)
            //{
            //drives[i].GetType

            //}
            EndUpdate();

            BeforeExpand += new TreeViewCancelEventHandler(prepare);
            AfterCollapse += new TreeViewEventHandler(clear);
        }
        public void Fill()
        {
            BeginUpdate();
            string[] drives = Directory.GetLogicalDrives();

            //string[] tempString = Directory.GetLogicalDrives();

            //DriveInfo tempInfo = new DriveInfo("", 0, "My Computer");
            //availableDrives.Add(tempInfo);

            foreach (string tempDrive in drives)
            {
                /* int tempType = getDriveType(tempDrive);
                 * string tempName = GetDriveName(tempDrive);
                 * tempInfo = new DriveInfo(tempDrive, tempType, tempName);
                 * availableDrives.Add(tempInfo);
                 */
                //string tempName = GetDriveName(tempDrive);

                DirTreeNode dn = new DirTreeNode(tempDrive);

                //dn.Text = tempName + "(" + tempDrive + ")";
                Nodes.Add(dn);
            }

            //Directory.g

            //for (int i = 0; i < drives.Length; i++)
            //{
            //drives[i].GetType

            //}
            EndUpdate();

            BeforeExpand  += new TreeViewCancelEventHandler(prepare);
            AfterCollapse += new TreeViewEventHandler(clear);
        }
        /// <summary>
        /// Metoda ustawia etykiete dyskietki
        /// </summary>
        /// <param name="zap">wêze³ zaznaczony</param>
        private void UstawienieEtykietyDyskietki(DirTreeNode zap)
        {
            string etykieta;

            if (zap.Text.IndexOf("A:\\") == 0 && zap.Text.LastIndexOf("\\") < 4)
            {
                etykieta = DirTreeNode.Etykieta(zap.Text.Substring(0, 3));
                if (etykieta != "")
                {
                    zap.Text               = "A:\\" + " [" + etykieta + "]";
                    zap.ImageIndex         = Dyskietka_z;
                    zap.SelectedImageIndex = Dyskietka_z;
                }
                else
                {
                    zap.Text               = "A:\\" + " [Floppy]";
                    zap.ImageIndex         = Dyskietka;
                    zap.SelectedImageIndex = Dyskietka;
                }
            }
            else if (zap.Text.IndexOf("B:\\") == 0 && zap.Text.LastIndexOf("\\") < 4)
            {
                etykieta = DirTreeNode.Etykieta(zap.Text.Substring(0, 3));
                if (etykieta != "")
                {
                    zap.Text               = "B:\\" + " [" + etykieta + "]";
                    zap.ImageIndex         = Dyskietka_z;
                    zap.SelectedImageIndex = Dyskietka_z;
                }
                else
                {
                    zap.Text               = "B:\\" + " [Floppy]";
                    zap.ImageIndex         = Dyskietka;
                    zap.SelectedImageIndex = Dyskietka;
                }
            }
        }
        /// <summary>
        /// Metoda informuj¹ca za pomoc¹ delegatów kontrolkê wyœwietlaj¹ca o zawartoœci katalogu w zdjêcia i podkatalogi
        /// </summary>
        /// <param name="zap">wêz³ dla ktorego wykonujemy zapytanie</param>
        private void PowiadomOZawartosciKatalogu(DirTreeNode zap)
        {
            List <Zdjecie> zdjecia  = new List <Zdjecie>();
            List <Katalog> katalogi = new List <Katalog>();

            if (ZmienionoZrodlo != null)
            {
                ZmienionoZrodlo(zap.Path);
            }

            if (RozpoczetoWyszukiwanie != null)
            {
                RozpoczetoWyszukiwanie(null);
            }

            try
            {
                katalogi.AddRange(ZnajdzKatalogiWKatalogu((DirTreeNode)zap));

                if (!zap.Path.Equals("mój komputer"))
                {
                    //MessageBox.Show(zap.Path);
                    zdjecia.AddRange(WybierzPlikiZdjec((DirTreeNode)zap));
                }
            }
            catch (UnauthorizedAccessException)
            {
                MessageBox.Show("Brak dostêpu do wybranego katalogu.");
                return;
            }

            if (ZakonczonoWyszukiwanie != null)
            {
                ZakonczonoWyszukiwanie(zdjecia.ToArray(), katalogi.ToArray(), true);
            }
        }
        /// <summary>
        /// Metoda wype³niaj¹ca drzewo katalogow
        /// </summary>
        public void Fill()
        {
            BeginUpdate();

            DirTreeNode kat_Pulpit = new DirTreeNode(Config.katalogPulpit, Pulpit, true);

            kat_Pulpit.Text = "Pulpit";
            //kat_Pulpit.Path = Config.katalogPulpit;

            try
            {
                string[] n = Directory.GetDirectories(Config.katalogPulpit);

                if (n.Length == 0)
                {
                    kat_Pulpit.Nodes.Clear();
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString() + e.Message);
            }

            Nodes.Add(kat_Pulpit);

            DirTreeNode kat_MDokumenty = new DirTreeNode(Config.katalogMojeDokumenty, User, true);

            kat_MDokumenty.Text = "Moje Dokumenty";

            try
            {
                string[] n = Directory.GetDirectories(Config.katalogMojeDokumenty);

                if (n.Length == 0)
                {
                    kat_MDokumenty.Nodes.Clear();
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString() + e.Message);
            }

            Nodes.Add(kat_MDokumenty);

            DirTreeNode kat_MObrazy = new DirTreeNode(Config.katalogMojeObrazy, Pictures_2, true);

            kat_MObrazy.Text = "Moje Obrazy";

            try
            {
                string[] n = Directory.GetDirectories(Config.katalogMojeObrazy);

                if (n.Length == 0)
                {
                    kat_MObrazy.Nodes.Clear();
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString() + e.Message);
            }

            Nodes.Add(kat_MObrazy);

            kat_MKomputer      = new DirTreeNode("Mój Komputer", Computer, true);
            kat_MKomputer.Text = "Mój Komputer";
            Nodes.Add(kat_MKomputer);



            //kat_MKomputer.Nodes.Clear();

            string[] drives = Directory.GetLogicalDrives();

            foreach (string tempDrive in drives)
            {
                DirTreeNode dn = new DirTreeNode(tempDrive);
                kat_MKomputer.Nodes.Add(dn);
            }

            kat_MKomputer.Expand();

            EndUpdate();

            BeforeExpand  += new TreeViewCancelEventHandler(prepare);
            AfterCollapse += new TreeViewEventHandler(clear);
        }
        protected override void OnAfterExpand(TreeViewEventArgs e)
        {
            base.OnAfterExpand(e);

            DirTreeNode dn = new DirTreeNode("napis");

            if (e.Node.Text.IndexOf("A:\\") == 0 && e.Node.Text.LastIndexOf("\\") < 4)
            {
                e.Node.Text = "A:\\ " + "[" + dn.Etykieta(e.Node.Text.Substring(0, 3)) + "]";
                e.Node.ImageIndex = 5;
                e.Node.SelectedImageIndex = 5;
            }
            else if (e.Node.Text.IndexOf("B:\\") == 0 && e.Node.Text.LastIndexOf("\\") < 4)
            {
                e.Node.Text = "B:\\ " + "[" + dn.Etykieta(e.Node.Text.Substring(0, 3)) + "]";
                e.Node.ImageIndex = 5;
                e.Node.SelectedImageIndex = 5;
            }
        }
        /// <summary>
        /// Metoda zwracaj�ca tablice katalog�w z danego katalogu
        /// </summary>
        /// <param name="Node">w�z� drzewa</param>
        /// <returns>zwraca tablice katalog�w</returns>
        private Katalog[] ZnajdzKatalogiWKatalogu(DirTreeNode Node)
        {
            List<string> katal_tab = new List<string>();
            List<Katalog> katalogi = new List<Katalog>();

            //MessageBox.Show(Node.Text);

            if (Node.Text != "M�j Komputer")
            {

                try
                {
                    katal_tab.AddRange(Directory.GetDirectories(Node.Path));
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message + " - Odmowa dost�pu", Node.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                //if (Node.Path.Length > 3)
                //{
                    string s1 = "";

                    s1 = Node.Path.Substring(0, Node.Path.LastIndexOf("\\"));

                    if (Node.Text != "Pulpit" && Node.Text != "Moje Dokumenty" && Node.Text != "Moje Obrazy")
                    {
                        if (s1.Length == 2)
                        {
                            katalogi.Add(new Katalog(s1 + "\\", true));
                        }
                        else
                        {
                            katalogi.Add(new Katalog(s1, true));
                        }
                    }

                //}

                katal_tab.Sort();
                foreach (string t in katal_tab)
                {
                    katalogi.Add(new Katalog(t, false));
                }
            }
            else
            {
                try
                {
                    katal_tab.AddRange(Directory.GetLogicalDrives());
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message + " - Odmowa dost�pu", Node.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                katal_tab.Sort();
                foreach (string t in katal_tab)
                {
                    //MessageBox.Show(t);
                    katalogi.Add(new Katalog(t, false));
                }
            }
            return katalogi.ToArray();
        }
        /// <summary>
        /// Metoda tworz�ca obiekty zdj�c i dodaj�ca je do kontrolki wy�wietlaj�cej
        /// </summary>
        /// <param name="Node">w�z� dla kt�rego tworzymy obiekty zdj��</param>
        /// <returns>zwraca tablice obiekt�w zdj��</returns>
        private Zdjecie[] WybierzPlikiZdjec(DirTreeNode Node)
        {
            List<Zdjecie> zdjecia = new List<Zdjecie>();
            List<string> pliki = Przefiltruj(Node.Path);

            Zdjecie z;
            if (Node.Text != "M�j Komputer")
            {
                try
                {
                    for (int i = 0; i < pliki.Count; i++)
                    {
                        try
                        {
                            if ((pliki[i].ToLower().LastIndexOf(".jpg") != -1 && pliki[i].ToLower().LastIndexOf(".jpg") == (pliki[i].Length - 4)) || (pliki[i].ToLower().LastIndexOf(".jpeg") != -1 && pliki[i].ToLower().LastIndexOf(".jpeg") == (pliki[i].Length - 5)) )
                            {
                                z = new Zdjecie(pliki[i]);
                                z.ZweryfikujZdjecie();
                                zdjecia.Add(z);
                            }
                        }
                        catch (ArgumentException)
                        {

                            MessageBox.Show("Plik: \"" + pliki[i].Substring(pliki[i].LastIndexOf("\\") + 1) + "\" mimo poprawnego rozszezenie nie zawiera zdj�cia", pliki[i], MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        }
                    }
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message + " - Odmowa dost�pu", Node.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            return zdjecia.ToArray();
        }
        /// <summary>
        /// Metoda ustawia etykiete dyskietki
        /// </summary>
        /// <param name="zap">w�ze� zaznaczony</param>
        private void UstawienieEtykietyDyskietki(DirTreeNode zap)
        {
            string etykieta;

            if (zap.Text.IndexOf("A:\\") == 0 && zap.Text.LastIndexOf("\\") < 4)
            {
                etykieta = DirTreeNode.Etykieta(zap.Text.Substring(0, 3));
                if (etykieta != "")
                {
                    zap.Text = "A:\\" + " [" + etykieta + "]";
                    zap.ImageIndex = Dyskietka_z;
                    zap.SelectedImageIndex = Dyskietka_z;
                }
                else
                {
                    zap.Text = "A:\\" + " [Floppy]";
                    zap.ImageIndex = Dyskietka;
                    zap.SelectedImageIndex = Dyskietka;
                }
            }
            else if (zap.Text.IndexOf("B:\\") == 0 && zap.Text.LastIndexOf("\\") < 4)
            {
                etykieta = DirTreeNode.Etykieta(zap.Text.Substring(0, 3));
                if (etykieta != "")
                {
                    zap.Text = "B:\\" + " [" + etykieta + "]";
                    zap.ImageIndex = Dyskietka_z;
                    zap.SelectedImageIndex = Dyskietka_z;
                }
                else
                {
                    zap.Text = "B:\\" + " [Floppy]";
                    zap.ImageIndex = Dyskietka;
                    zap.SelectedImageIndex = Dyskietka;
                }
            }
        }
        /// <summary>
        /// Metoda informuj�ca za pomoc� delegat�w kontrolk� wy�wietlaj�ca o zawarto�ci katalogu w zdj�cia i podkatalogi
        /// </summary>
        /// <param name="zap">w�z� dla ktorego wykonujemy zapytanie</param>
        private void PowiadomOZawartosciKatalogu(DirTreeNode zap)
        {
            List<Zdjecie> zdjecia = new List<Zdjecie>();
            List<Katalog> katalogi = new List<Katalog>();

            if (ZmienionoZrodlo != null)
                ZmienionoZrodlo(zap.Path);

            if (RozpoczetoWyszukiwanie != null)
                RozpoczetoWyszukiwanie(null);

            try
            {
                katalogi.AddRange(ZnajdzKatalogiWKatalogu((DirTreeNode)zap));

                if (!zap.Path.Equals("m�j komputer"))
                {
                    //MessageBox.Show(zap.Path);
                    zdjecia.AddRange(WybierzPlikiZdjec((DirTreeNode)zap));
                }
            }
            catch (UnauthorizedAccessException)
            {
                MessageBox.Show("Brak dost�pu do wybranego katalogu.");
                return;
            }

            if (ZakonczonoWyszukiwanie != null)
                ZakonczonoWyszukiwanie(zdjecia.ToArray(), katalogi.ToArray(), true);
        }
        /// <summary>
        /// Metoda otwiera drzewo do zaznaczonego w�z�a
        /// </summary>
        /// <param name="zaz">w�z� do kt�rego nale�y pootwiera�</param>
        private string PootwierajDrzewoDoZaznaczonego(DirTreeNode zaz)
        {
            TreeNodeCollection kolekcja = this.Nodes;

            ostatni = null;

            string sciezka = FullPath_zaznaczonego, nazwa_pliku = "", do_sprawdzenia = "";

            string[] spl = sciezka.Split("\\".ToCharArray());

            int licznik = 0, ilosc_w_sciezka = spl.Length - 1;

            bool stan = false, znaleziono_wezl = false, dysk = false, czy_byl_blad = false;

            while (stan == false)
            {
                foreach (DirTreeNode dn in kolekcja)
                {
                    if (licznik == spl.Length)
                    {
                        stan = true;
                        czy_byl_blad = true;
                        break;
                    }

                    if (licznik < spl.Length-1)
                    {
                        if (spl[licznik].IndexOf(":") == 1 && spl[licznik].Length == 2 && spl[licznik + 1].IndexOf("[") == 1 && spl[licznik + 1].LastIndexOf("]") == (spl[licznik + 1].Length - 1))
                        {
                            do_sprawdzenia = spl[licznik] + "\\" + spl[licznik + 1];
                            nazwa_pliku = dn.FullPath.Substring(dn.FullPath.LastIndexOf("\\") - 2, dn.FullPath.Length - dn.FullPath.LastIndexOf("\\") + 2);
                            dysk = true;
                        }
                        else
                        {
                            do_sprawdzenia = spl[licznik];
                            nazwa_pliku = dn.FullPath.Substring(dn.FullPath.LastIndexOf("\\") + 1, dn.FullPath.Length - dn.FullPath.LastIndexOf("\\") - 1);
                        }
                    }
                    else
                    {
                        do_sprawdzenia = spl[licznik];
                        nazwa_pliku = dn.FullPath.Substring(dn.FullPath.LastIndexOf("\\") + 1, dn.FullPath.Length - dn.FullPath.LastIndexOf("\\") - 1);
                    }

                    if (do_sprawdzenia.CompareTo(nazwa_pliku) == 0)
                    {
                        dn.Expand();

                        kolekcja = dn.Nodes;

                        if (sciezka.CompareTo(dn.FullPath) == 0)
                        {
                            dn.Collapse();
                            zaznaczony = dn;
                            FullPath_zaznaczonego = zaznaczony.FullPath;
                            stan = true;
                        }

                        znaleziono_wezl = true;
                        ostatni = dn;

                        break;
                    }
                }

                if (dysk == true)
                {
                    licznik++;
                    dysk = false;
                }

                if (znaleziono_wezl == false)
                {
                    stan = true;
                    zaznaczony = ostatni;
                    zaznaczony.Collapse();
                    czy_byl_blad = true;
                }
                else
                {
                    znaleziono_wezl = false;
                }

                licznik++;
            }

            if (czy_byl_blad == true)
            {
                return "cos";
            }
            else
            {
                return "";
            }
        }
        private Zdjecie[] ZnajdzPlikiWKatalogu(BackgroundWorker bw, DirTreeNode Node)
        {
            List <Zdjecie> zdjecia = new List <Zdjecie>();

            try
            {
                string[] files  = Directory.GetFiles(Node.Path, "*.jpg");
                string[] files2 = Directory.GetFiles(Node.Path, "*.jpeg");
                string[] files3 = Directory.GetFiles(Node.Path, "*.tif");
                string[] files4 = Directory.GetFiles(Node.Path, "*.tiff");

                string[] f1 = new string[files.Length];
                string[] f2 = new string[files2.Length];
                string[] f3 = new string[files3.Length];
                string[] f4 = new string[files4.Length];


                int i = 0;

                int z_f1 = 0;
                for (i = 0; i < files.Length; i++)
                {
                    if (files[i].ToLower().LastIndexOf(".jpg") == (files[i].Length - 4))
                    {
                        f1[z_f1] = files[i];
                        z_f1++;
                    }
                }
                int z_f2 = 0;
                for (i = 0; i < files2.Length; i++)
                {
                    //string str = files2[i].ToLower();
                    if (files2[i].ToLower().LastIndexOf(".jpeg") == (files2[i].Length - 5))
                    {
                        f2[z_f2] = files2[i];
                        z_f2++;
                    }
                }
                int z_f3 = 0;
                for (i = 0; i < files3.Length; i++)
                {
                    if (files3[i].ToLower().LastIndexOf(".tif") == (files3[i].Length - 4))
                    {
                        f3[z_f3] = files3[i];
                        z_f3++;
                    }
                }

                int z_f4 = 0;
                for (i = 0; i < files4.Length; i++)
                {
                    if (files4[i].ToLower().LastIndexOf(".tiff") == (files4[i].Length - 5))
                    {
                        f4[z_f4] = files4[i];
                        z_f4++;
                    }
                }

                zdjecia = new List <Zdjecie>(z_f1 + z_f2 + z_f3 + z_f4);

                int ile = 0;
                for (i = 0; i < z_f1; i++)
                {
                    try
                    {
                        Zdjecie z = new Zdjecie(f1[i]);
                        bw.ReportProgress(0, z);
                        zdjecia.Add(z);
                    }
                    catch (ArgumentException)
                    {
                        //MessageBox.Show("testowo: plik nie jest w poprawnym formacie ");
                        MessageBox.Show("Plik: \"" + files[i].Substring(files[i].LastIndexOf("\\") + 1) + "\" mimo poprawnego rozszezenie nie zawiera zdjêcia", files[i], MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }
                ile = i;
                for (i = 0; i < z_f2; i++)
                {
                    try
                    {
                        Zdjecie z = new Zdjecie(f2[i]);
                        bw.ReportProgress(0, z);
                        zdjecia.Add(z);
                    }
                    catch (ArgumentException)
                    {
                        //MessageBox.Show("testowo: plik nie jest w poprawnym formacie ");

                        MessageBox.Show("Plik: \"" + files2[i].Substring(files2[i].LastIndexOf("\\") + 1) + "\" mimo poprawnego rozszezenie nie zawiera zdjêcia", files2[i], MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }
                ile += i;
                for (i = 0; i < z_f3; i++)
                {
                    try
                    {
                        Zdjecie z = new Zdjecie(f3[i]);
                        bw.ReportProgress(0, z);
                        zdjecia.Add(z);
                    }
                    catch (ArgumentException)
                    {
                        //MessageBox.Show("testowo: plik nie jest w poprawnym formacie ");
                        MessageBox.Show("Plik: \"" + files3[i].Substring(files3[i].LastIndexOf("\\") + 1) + "\" mimo poprawnego rozszezenie nie zawiera zdjêcia", files3[i], MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }
                ile += i;
                for (i = 0; i < z_f4; i++)
                {
                    try
                    {
                        Zdjecie z = new Zdjecie(f4[i]);
                        bw.ReportProgress(0, z);
                        zdjecia.Add(z);
                    }
                    catch (ArgumentException)
                    {
                        //MessageBox.Show("testowo: plik nie jest w poprawnym formacie ");
                        MessageBox.Show("Plik: \"" + files4[i].Substring(files4[i].LastIndexOf("\\") + 1) + "\" mimo poprawnego rozszezenie nie zawiera zdjêcia", files4[i], MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message + " - Odmowa dostêpu", Node.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);

                /*if (e.Node.Text.Length == 3)
                 * {
                 *  if (e.Node.Text.CompareTo("A:\\") == 0 || e.Node.Text.CompareTo("B:\\") == 0 )
                 *  {
                 *
                 *  }
                 *  MessageBox.Show("numer: "+e.Node.SelectedImageIndex);
                 *  //e.Node.ImageIndex = getDriveType(e.Node.Text);
                 *
                 *  this.Refresh();
                 *  //this.
                 *
                 *
                 * }*/

                DirTreeNode dd = new DirTreeNode("napis");

                this.SelectedNode = dd;
            }

            return(zdjecia.ToArray());
        }
        /// <summary>
        /// Metoda zwracaj¹ca tablice katalogów z danego katalogu
        /// </summary>
        /// <param name="Node">wêz³ drzewa</param>
        /// <returns>zwraca tablice katalogów</returns>
        private Katalog[] ZnajdzKatalogiWKatalogu(DirTreeNode Node)
        {
            List <string>  katal_tab = new List <string>();
            List <Katalog> katalogi  = new List <Katalog>();

            //MessageBox.Show(Node.Text);

            if (Node.Text != "Mój Komputer")
            {
                try
                {
                    katal_tab.AddRange(Directory.GetDirectories(Node.Path));
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message + " - Odmowa dostêpu", Node.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                //if (Node.Path.Length > 3)
                //{
                string s1 = "";

                s1 = Node.Path.Substring(0, Node.Path.LastIndexOf("\\"));

                if (Node.Text != "Pulpit" && Node.Text != "Moje Dokumenty" && Node.Text != "Moje Obrazy")
                {
                    if (s1.Length == 2)
                    {
                        katalogi.Add(new Katalog(s1 + "\\", true));
                    }
                    else
                    {
                        katalogi.Add(new Katalog(s1, true));
                    }
                }

                //}

                katal_tab.Sort();
                foreach (string t in katal_tab)
                {
                    katalogi.Add(new Katalog(t, false));
                }
            }
            else
            {
                try
                {
                    katal_tab.AddRange(Directory.GetLogicalDrives());
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message + " - Odmowa dostêpu", Node.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                katal_tab.Sort();
                foreach (string t in katal_tab)
                {
                    //MessageBox.Show(t);
                    katalogi.Add(new Katalog(t, false));
                }
            }
            return(katalogi.ToArray());
        }
        private Zdjecie[] ZnajdzPlikiWKatalogu(BackgroundWorker bw, DirTreeNode Node)
        {
            List<Zdjecie> zdjecia = new List<Zdjecie>();

            try
            {
                string[] files = Directory.GetFiles(Node.Path, "*.jpg");
                string[] files2 = Directory.GetFiles(Node.Path, "*.jpeg");
                string[] files3 = Directory.GetFiles(Node.Path, "*.tif");
                string[] files4 = Directory.GetFiles(Node.Path, "*.tiff");

                string[] f1 = new string[files.Length];
                string[] f2 = new string[files2.Length];
                string[] f3 = new string[files3.Length];
                string[] f4 = new string[files4.Length];

                int i = 0;

                int z_f1 = 0;
                for (i = 0; i < files.Length; i++)
                {
                    if (files[i].ToLower().LastIndexOf(".jpg") == (files[i].Length - 4))
                    {
                        f1[z_f1] = files[i];
                        z_f1++;
                    }
                }
                int z_f2 = 0;
                for (i = 0; i < files2.Length; i++)
                {
                    //string str = files2[i].ToLower();
                    if (files2[i].ToLower().LastIndexOf(".jpeg") == (files2[i].Length - 5))
                    {
                        f2[z_f2] = files2[i];
                        z_f2++;
                    }
                }
                int z_f3 = 0;
                for (i = 0; i < files3.Length; i++)
                {
                    if (files3[i].ToLower().LastIndexOf(".tif") == (files3[i].Length - 4))
                    {
                        f3[z_f3] = files3[i];
                        z_f3++;
                    }
                }

                int z_f4 = 0;
                for (i = 0; i < files4.Length; i++)
                {
                    if (files4[i].ToLower().LastIndexOf(".tiff") == (files4[i].Length - 5))
                    {
                        f4[z_f4] = files4[i];
                        z_f4++;
                    }
                }

                zdjecia = new List<Zdjecie>(z_f1 + z_f2 + z_f3 + z_f4);

                int ile = 0;
                for (i = 0; i < z_f1; i++)
                {
                    try
                    {
                        Zdjecie z = new Zdjecie(f1[i]);
                        bw.ReportProgress(0, z);
                        zdjecia.Add(z);
                    }
                    catch (ArgumentException)
                    {
                        //MessageBox.Show("testowo: plik nie jest w poprawnym formacie ");
                        MessageBox.Show("Plik: \"" + files[i].Substring(files[i].LastIndexOf("\\") + 1) + "\" mimo poprawnego rozszezenie nie zawiera zdjêcia", files[i], MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }
                ile = i;
                for (i = 0; i < z_f2; i++)
                {
                    try
                    {
                        Zdjecie z = new Zdjecie(f2[i]);
                        bw.ReportProgress(0, z);
                        zdjecia.Add(z);
                    }
                    catch (ArgumentException)
                    {
                        //MessageBox.Show("testowo: plik nie jest w poprawnym formacie ");

                        MessageBox.Show("Plik: \"" + files2[i].Substring(files2[i].LastIndexOf("\\") + 1) + "\" mimo poprawnego rozszezenie nie zawiera zdjêcia", files2[i], MessageBoxButtons.OK, MessageBoxIcon.Warning);

                    }
                }
                ile += i;
                for (i = 0; i < z_f3; i++)
                {
                    try
                    {
                        Zdjecie z = new Zdjecie(f3[i]);
                        bw.ReportProgress(0, z);
                        zdjecia.Add(z);
                    }
                    catch (ArgumentException)
                    {
                        //MessageBox.Show("testowo: plik nie jest w poprawnym formacie ");
                        MessageBox.Show("Plik: \"" + files3[i].Substring(files3[i].LastIndexOf("\\") + 1) + "\" mimo poprawnego rozszezenie nie zawiera zdjêcia", files3[i], MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }
                ile += i;
                for (i = 0; i < z_f4; i++)
                {
                    try
                    {
                        Zdjecie z = new Zdjecie(f4[i]);
                        bw.ReportProgress(0, z);
                        zdjecia.Add(z);
                    }
                    catch (ArgumentException)
                    {
                        //MessageBox.Show("testowo: plik nie jest w poprawnym formacie ");
                        MessageBox.Show("Plik: \"" + files4[i].Substring(files4[i].LastIndexOf("\\") + 1) + "\" mimo poprawnego rozszezenie nie zawiera zdjêcia", files4[i], MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message + " - Odmowa dostêpu", Node.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
                /*if (e.Node.Text.Length == 3)
                {
                    if (e.Node.Text.CompareTo("A:\\") == 0 || e.Node.Text.CompareTo("B:\\") == 0 )
                    {

                    }
                    MessageBox.Show("numer: "+e.Node.SelectedImageIndex);
                    //e.Node.ImageIndex = getDriveType(e.Node.Text);

                    this.Refresh();
                    //this.

                }*/

                DirTreeNode dd = new DirTreeNode("napis");

                this.SelectedNode = dd;

            }

            return zdjecia.ToArray();
        }
        protected override void OnAfterSelect(TreeViewEventArgs e)
        {
            base.OnAfterSelect(e);

            if (RozpoczetoWyszukiwanie != null)
                RozpoczetoWyszukiwanie(null);

            BackgroundWorker bw = new BackgroundWorker();
            bw.WorkerReportsProgress = true;
            bw.DoWork += new DoWorkEventHandler(bw_DoWork);
            bw.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged);
            bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
            bw.RunWorkerAsync(e.Node);

            DirTreeNode dn = new DirTreeNode("napis");

            if (e.Node.Text.IndexOf("A:\\") == 0 && e.Node.Text.LastIndexOf("\\") < 4)
            {
                e.Node.Text = "A:\\ " + "[" + dn.Etykieta(e.Node.Text.Substring(0, 3)) + "]";
                e.Node.ImageIndex = 5;
                e.Node.SelectedImageIndex = 5;
            }
            else if (e.Node.Text.IndexOf("B:\\") == 0 && e.Node.Text.LastIndexOf("\\") < 4)
            {
                e.Node.Text = "B:\\ " + "[" + dn.Etykieta(e.Node.Text.Substring(0, 3)) + "]";
                e.Node.ImageIndex = 5;
                e.Node.SelectedImageIndex = 5;
            }
        }
            /// <summary>
            /// Metoda tworz�ca i dodaj�ca w�z�y do drzewa katalog�w
            /// </summary>
            /// <param name="tn">w�ze� drzewa kt�ry zostanie otwarty</param>
            internal void populate(DirTreeNode tn)
            {
                ArrayList folder = new ArrayList(); ;

                if (tn.FullPath != "M�j Komputer")
                {

                    DirTreeNode dnn = new DirTreeNode(tn.Text);
                    int gdzie = tn.Index;

                    string[] files = Directory.GetDirectories(Path);
                    Array.Sort(files);

                    for (int i = 0; i < files.Length; i++)
                    {
                        folder.Add(new DirTreeNode(files[i], FOLDER));
                    }

                    Nodes.Clear();
                    foreach (DirTreeNode dtn in folder)
                    {
                        Nodes.Add(dtn);
                    }
                    czy_otwiera = false;
                }
                else
                {
                    string[] drives = Directory.GetLogicalDrives();

                    foreach (string tempDrive in drives)
                    {
                        DirTreeNode dn = new DirTreeNode(tempDrive);
                        folder.Add(dn);
                    }
                    Nodes.Clear();
                    foreach (DirTreeNode dtn in folder)
                    {
                        Nodes.Add(dtn);
                    }
                }
            }
        /// <summary>
        /// Metoda wype�niaj�ca drzewo katalogow
        /// </summary>
        public void Fill()
        {
            BeginUpdate();

            DirTreeNode kat_Pulpit = new DirTreeNode(Config.katalogPulpit, Pulpit, true);
            kat_Pulpit.Text = "Pulpit";
            //kat_Pulpit.Path = Config.katalogPulpit;

            try
            {
                string[] n = Directory.GetDirectories(Config.katalogPulpit);

                if (n.Length == 0)
                    kat_Pulpit.Nodes.Clear();
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString() + e.Message);
            }

            Nodes.Add(kat_Pulpit);

            DirTreeNode kat_MDokumenty = new DirTreeNode(Config.katalogMojeDokumenty, User, true);
            kat_MDokumenty.Text = "Moje Dokumenty";

            try
            {
                string[] n = Directory.GetDirectories(Config.katalogMojeDokumenty);

                if (n.Length == 0)
                    kat_MDokumenty.Nodes.Clear();

            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString() + e.Message);
            }

            Nodes.Add(kat_MDokumenty);

            DirTreeNode kat_MObrazy = new DirTreeNode(Config.katalogMojeObrazy, Pictures_2, true);
            kat_MObrazy.Text = "Moje Obrazy";

            try
            {
                string[] n = Directory.GetDirectories(Config.katalogMojeObrazy);

                if (n.Length == 0)
                    kat_MObrazy.Nodes.Clear();

            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString() + e.Message);
            }

            Nodes.Add(kat_MObrazy);

            kat_MKomputer = new DirTreeNode("M�j Komputer", Computer, true);
            kat_MKomputer.Text = "M�j Komputer";
            Nodes.Add(kat_MKomputer);

            //kat_MKomputer.Nodes.Clear();

            string[] drives = Directory.GetLogicalDrives();

            foreach (string tempDrive in drives)
            {
                DirTreeNode dn = new DirTreeNode(tempDrive);
                kat_MKomputer.Nodes.Add(dn);
            }

            kat_MKomputer.Expand();

            EndUpdate();

            BeforeExpand += new TreeViewCancelEventHandler(prepare);
            AfterCollapse += new TreeViewEventHandler(clear);
        }
        private Zdjecie[] ZnajdzPlikiWKatalogu(BackgroundWorker bw, DirTreeNode Node)
        {
            List<Zdjecie> zdjecia = new List<Zdjecie>();
            List<string> pliki = new List<string>();

            try
            {
                pliki.AddRange(Directory.GetFiles(Node.Path, "*.jpg"));
                pliki.AddRange(Directory.GetFiles(Node.Path, "*.jpeg"));
                pliki.AddRange(Directory.GetFiles(Node.Path, "*.tif"));
                pliki.AddRange(Directory.GetFiles(Node.Path, "*.tiff"));

                pliki.Sort();

                for (int i = 0; i < pliki.Count; i++)
                {
                    try
                    {
                        if ((pliki[i].ToLower().LastIndexOf(".jpg") != -1 && pliki[i].ToLower().LastIndexOf(".jpg") == (pliki[i].Length - 4)) || (pliki[i].ToLower().LastIndexOf(".jpeg") != -1 && pliki[i].ToLower().LastIndexOf(".jpeg") == (pliki[i].Length - 5)) || (pliki[i].ToLower().LastIndexOf(".tif") != -1 && pliki[i].ToLower().LastIndexOf(".tif") == (pliki[i].Length - 4)) || (pliki[i].ToLower().LastIndexOf(".tiff") != -1 && pliki[i].ToLower().LastIndexOf(".tiff") == (pliki[i].Length - 5)))
                        {
                            Zdjecie z = new Zdjecie(pliki[i]);
                            bw.ReportProgress(0, z);
                            zdjecia.Add(z);
                        }
                    }
                    catch (ArgumentException)
                    {
                        //MessageBox.Show("testowo: plik nie jest w poprawnym formacie ");
                        MessageBox.Show("Plik: \"" + pliki[i].Substring(pliki[i].LastIndexOf("\\") + 1) + "\" mimo poprawnego rozszezenie nie zawiera zdjêcia", pliki[i], MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message + " - Odmowa dostêpu", Node.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);

                /*if (Node.Text.Length == 3)
                {
                    if (Node.Text.CompareTo("A:\\") == 0 || Node.Text.CompareTo("B:\\") == 0 )
                    {
                        Node.ImageIndex = Dyskietka;
                        Node.SelectedImageIndex = Dyskietka;
                    }
                }
            */
                DirTreeNode dd = new DirTreeNode("napis");

                this.SelectedNode = dd;
                //this.SelectedNode = null;

            }
            return zdjecia.ToArray();
        }
        /// <summary>
        /// Metoda otwiera drzewo do zaznaczonego wêz³a
        /// </summary>
        /// <param name="zaz">wêz³ do którego nale¿y pootwieraæ</param>
        private string PootwierajDrzewoDoZaznaczonego(DirTreeNode zaz)
        {
            TreeNodeCollection kolekcja = this.Nodes;

            ostatni = null;

            string sciezka = FullPath_zaznaczonego, nazwa_pliku = "", do_sprawdzenia = "";

            string[] spl = sciezka.Split("\\".ToCharArray());

            int licznik = 0, ilosc_w_sciezka = spl.Length - 1;

            bool stan = false, znaleziono_wezl = false, dysk = false, czy_byl_blad = false;

            while (stan == false)
            {
                foreach (DirTreeNode dn in kolekcja)
                {
                    if (licznik == spl.Length)
                    {
                        stan         = true;
                        czy_byl_blad = true;
                        break;
                    }

                    if (licznik < spl.Length - 1)
                    {
                        if (spl[licznik].IndexOf(":") == 1 && spl[licznik].Length == 2 && spl[licznik + 1].IndexOf("[") == 1 && spl[licznik + 1].LastIndexOf("]") == (spl[licznik + 1].Length - 1))
                        {
                            do_sprawdzenia = spl[licznik] + "\\" + spl[licznik + 1];
                            nazwa_pliku    = dn.FullPath.Substring(dn.FullPath.LastIndexOf("\\") - 2, dn.FullPath.Length - dn.FullPath.LastIndexOf("\\") + 2);
                            dysk           = true;
                        }
                        else
                        {
                            do_sprawdzenia = spl[licznik];
                            nazwa_pliku    = dn.FullPath.Substring(dn.FullPath.LastIndexOf("\\") + 1, dn.FullPath.Length - dn.FullPath.LastIndexOf("\\") - 1);
                        }
                    }
                    else
                    {
                        do_sprawdzenia = spl[licznik];
                        nazwa_pliku    = dn.FullPath.Substring(dn.FullPath.LastIndexOf("\\") + 1, dn.FullPath.Length - dn.FullPath.LastIndexOf("\\") - 1);
                    }

                    if (do_sprawdzenia.CompareTo(nazwa_pliku) == 0)
                    {
                        dn.Expand();

                        kolekcja = dn.Nodes;

                        if (sciezka.CompareTo(dn.FullPath) == 0)
                        {
                            dn.Collapse();
                            zaznaczony            = dn;
                            FullPath_zaznaczonego = zaznaczony.FullPath;
                            stan = true;
                        }

                        znaleziono_wezl = true;
                        ostatni         = dn;

                        break;
                    }
                }

                if (dysk == true)
                {
                    licznik++;
                    dysk = false;
                }


                if (znaleziono_wezl == false)
                {
                    stan       = true;
                    zaznaczony = ostatni;
                    zaznaczony.Collapse();
                    czy_byl_blad = true;
                }
                else
                {
                    znaleziono_wezl = false;
                }

                licznik++;
            }

            if (czy_byl_blad == true)
            {
                return("cos");
            }
            else
            {
                return("");
            }
        }