示例#1
0
        /// <summary>Dodaje zawartość podanego posortowanego katalogu do katalogu głównego.
        /// </summary>
        /// <remarks>Implementacja: Krzysztof</remarks>
        /// <param name="folder">Folder do dodania.</param>
        public void dodajFolder(Folder folder)
        {
            /* Zwraca że nie jest prawidłowo posortowane na posortowanym katalogu.
            if (!folder.analizuj())
            {
                throw new InvalidOperationException("Próba dodawania folderu " + folder.Sciezka
                    + " do folderu głównego nie powiodła się, gdyż nie jest on posortowany.");
            }*/

            string nazwaFolderu = new DirectoryInfo(folder.Sciezka).Parent.Name;
            try
            {
                var destinationDirectoryName = Path.Combine(sciezka, nazwaFolderu);
                Microsoft.VisualBasic.FileIO.FileSystem.CopyDirectory(folder.Sciezka, destinationDirectoryName);
                logi += "Przeniesiono folder: " + folder.Sciezka + " do folderu: " + this.sciezka + Environment.NewLine;
            }
            /*
             * IOException rzucane jest w 3 przypadkach:
             * Source jest root: niemożliwe, bo source to podfolder Musesort wybranego folderu.
             * Source path==target path: możliwość już obsłużona w MainGUI.dodajDoGlownegoFolderuButton_Click.
             * A więc rzucane jest z powodu kolizji plików zaś e.Data.Keys będzie zawierał pliki w folderze źródłowym które kolidują.
             */
            catch (IOException e)
            {
                foreach (string plikDodawany in e.Data.Keys)
                {
                    string plikDodawanyFolderRelatywny = Directory.GetParent(plikDodawany).ToString().Substring(folder.Sciezka.Length);
                    string nazwaPliku = Path.GetFileName(plikDodawany);
                    int i = 1;
                    string nowaSciezka = Path.Combine(this.sciezka, nazwaFolderu, plikDodawanyFolderRelatywny + "(" + i + ")", nazwaPliku);
                    for (; File.Exists(nowaSciezka); i++)
                    {
                        nowaSciezka = Path.Combine(this.sciezka, nazwaFolderu, plikDodawanyFolderRelatywny + "(" + i + ")", nazwaPliku);
                    }

                    Directory.CreateDirectory(Directory.GetParent(nowaSciezka).ToString()); //Tworzymy katalog jeśli potrzeba.
                    File.Copy(plikDodawany, nowaSciezka); //Kopiujemy plik.
                    logi += "Przeniesiono plik: " + plikDodawany + " do sciezki: " + nowaSciezka + Environment.NewLine;
                }
            }
            catch (UnauthorizedAccessException)
            {
                System.Windows.Forms.MessageBox.Show("UnauthorizedAccessException: Uprawnień do folderu.");
                logi += "UnauthorizedAccessException: Brak uprawnień do folderu." + Environment.NewLine;
                return;
            }
            catch (System.Security.SecurityException)
            {
                System.Windows.Forms.MessageBox.Show("SecurityException: Uprawnień do folderu.");
                logi += "UnauthorizedAccessException: Brak uprawnień do folderu." + Environment.NewLine;
                return;
            }
            System.Windows.Forms.MessageBox.Show("Operacja zakończona.");
        }
示例#2
0
        public void KonstruktorTest()
        {
            using (ShimsContext.Create())
            {
                ShimFolderXML.ConstructorString = (@this, path) => { };
                ShimFolderXML.AllInstances.analizuj = @this => false;

                ShimDirectory.ExistsString = path => path == _sciezkaMuzyka;

                var folder = new Folder(_sciezkaMuzyka);
                Assert.AreEqual(_sciezkaMuzyka, folder.Sciezka);
                Assert.AreEqual("", folder.logi);
            }
        }
示例#3
0
        public void AnalizujTest()
        {
            using (ShimsContext.Create())
            {
                ShimFolderXML.ConstructorString = (@this, path) => { };
                ShimFolderXML.AllInstances.analizuj = @this => false;

                ShimFile.ExistsString = path => path == _sciezkaMuzyka;

                var folder = new Folder(_sciezkaMuzyka);
                Assert.IsFalse(folder.analizuj());

                ShimFolderXML.AllInstances.analizuj = @this => true;
                Assert.IsTrue(folder.analizuj());
            }
        }
示例#4
0
 private void dodajButton_Click(object sender, EventArgs e)
 {
     String source;
     String destination;
     if (sourceFolderTextBox.Text == "")
     {
         MessageBox.Show("Nie został wybrany folder do dodania!");
         return;
     } else {
         source = sourceFolderTextBox.Text;
     }
     if (destinationFolderTextBox.Text == "")
     {
         MessageBox.Show("Nie został wybrany folder docelowy!");
         return;
     } else {
         destination = destinationFolderTextBox.Text;
     }
     if (!(Directory.Exists(source) || Directory.Exists(destination)))
     {
         MessageBox.Show("Błąd podanych katalogów!");
         return;
     }
     Folder docelowy = new Folder(destination);
     if (!docelowy.analizuj())
     {
         MessageBox.Show("Folder docelowy nie został posortowany!");
         return;
     }
     //MessageBox.Show("Dodawanie rozpoczęte.");
     AkcjaDialog dlg = new AkcjaDialog("Dodawanie plików do folderu");
     dlg.Show();
     docelowy.dodajIPosortujFolder(source, UstawieniaProgramu.getInstance().wspieraneRozszerzeniaAudio);
     logiTextBox.Text += docelowy.logi;
     dlg.Dispose();
     MessageBox.Show("Pomyślnie dodano pliki.");
     dodajPanel.Visible = false;
 }
示例#5
0
 private void sortujPlikiButton_Click(object sender, EventArgs e)
 {
     niestandardoweSortowaniePanel.Visible = false;
     if (drzewoFolderow.SelectedNode == null || aktualnyFolder.SelectedItems.Count == 0)
     {
         MessageBox.Show("Nie został wybrany folder do posortowania!");
         return;
     }
     String sciezka = drzewoFolderow.SelectedNode.Name + "\\" + aktualnyFolder.SelectedItems[0].Text;
     if (!Directory.Exists(sciezka)) return;
     AkcjaDialog dlg = new AkcjaDialog("Sortowanie plików");
     dlg.Show();
     Folder folder = new Folder(sciezka) {progressBar2 = toolStripProgressBar1.ProgressBar};
     folder.ustalSchemat(UstawieniaProgramu.getInstance().domyslneSortowanieMuzyki);
     folder.sortuj(UstawieniaProgramu.getInstance().wspieraneRozszerzeniaAudio);
     folder.ustalSchemat(UstawieniaProgramu.getInstance().domyslneSortowanieFilmow);
     folder.sortuj(UstawieniaProgramu.getInstance().wspieraneRozszerzeniaVideo);
     dlg.Dispose();
     logiTextBox.Text += folder.logi;
 }
示例#6
0
        private void dodajPlikDoGlownegoFolderuButton_Click(object sender, EventArgs e)
        {
            niestandardoweSortowaniePanel.Visible = false;
            if (folderGlowny == null || folderGlowny.Sciezka == "")
            {
                MessageBox.Show("Nie został ustawiony folder główny!");
                return;
            }

            if (drzewoFolderow.SelectedNode == null || aktualnyFolder.SelectedItems.Count == 0)
            {
                MessageBox.Show("Nie został wybrany folder do dodania!");
                return;
            }
            String sciezka = drzewoFolderow.SelectedNode.Name + "\\" + aktualnyFolder.SelectedItems[0].Text;

            if (sciezka == folderGlowny.Sciezka)
            {
                MessageBox.Show("Próba dodania folderu głównego do folderu głównego!");
                return;
            }

            if (System.IO.Directory.Exists(sciezka))
            {
                Folder temp = new Folder(sciezka);
                if (temp.analizuj())
                {
                    AkcjaDialog dlg = new AkcjaDialog("Dodawanie do głównego folderu");
                    dlg.Show();
                    folderGlowny.dodajFolder(sciezka);
                    dlg.Dispose();
                    logiTextBox.Text += folderGlowny.logi;
                }
                else
                {
                    MessageBox.Show("Folder nie został posortowany!");
                    return;
                }
            }
        }
 private static Folder CreateTestFolder(string sciezkaTestowa, string schemat)
 {
     var testFolder = new Folder(sciezkaTestowa);
     var progressBar = new ProgressBar();
     testFolder.progressBar2 = progressBar;
     testFolder.ustalSchemat(schemat);
     return testFolder;
 }