Ejemplo n.º 1
0
        public DodavanjeSoftvera(RacunarskiCentar racunarskiCentar, ObservableCollection <Softver> softveri, bool izmena, string oznaka,
                                 Notifier notifierMainWindow, UndoRedoStack stack, OrderedDictionary prethodnaStanja)
        {
            notifierError = new Notifier(cfg =>
            {
                cfg.PositionProvider = new WindowPositionProvider(
                    parentWindow: this,
                    corner: Corner.TopRight,
                    offsetX: 20,
                    offsetY: 10);

                cfg.LifetimeSupervisor = new TimeAndCountBasedLifetimeSupervisor(
                    notificationLifetime: System.TimeSpan.FromSeconds(5),
                    maximumNotificationCount: MaximumNotificationCount.FromCount(1));

                cfg.Dispatcher = Application.Current.Dispatcher;
            });
            this.potvrdio           = false;
            this.stekStanja         = stack;
            this.notifierMainWindow = notifierMainWindow;
            InitializeComponent();
            this.racunarskiCentar                  = racunarskiCentar;
            this.izmena                            = izmena;
            this.unosPrviPut                       = true;
            this.oznakaSoftveraZaIzmenu            = oznaka;
            this.dodavanjeSoftveraIzborStarogUnosa = false;
            tabelaSoftvera                         = softveri;
            noviSoftver                            = new Softver();
            if (!izmena)
            {
                oznakaSoftver.Focus();
            }
            BackStepMenuItem.IsEnabled     = false;
            this.prethodnaStanjaAplikacije = prethodnaStanja;
            this.staroStanje = null;
        }
Ejemplo n.º 2
0
        private void prikazOdgovarajucihSoftvera(object sender, EventArgs e)
        {
            if (inicijalizacija)
            {
                softverPretragaUnosUcionica.Text = "";
                if ((bool)LinuxOSUcionica.IsChecked)
                {
                    // ukoliko postoje vec prethodno izabrani softveri, proverava se da li medju njima ima neki
                    // kom je OS Windows --> ukoliko ima, izbacuje se

                    // samo odcekiramo softvere koji imaju OS Windows iz tabele softvera u prozoru za dodavanje

                    for (int i = 0; i < softverTabela.Items.Count; i++)
                    {
                        Softver softver = (Softver)softverTabela.Items[i];
                        if (softver.Instaliran && softver.OperativniSistem.Equals("Windows"))
                        {
                            softver.Instaliran = false;
                        }
                    }
                    softverTabela.Items.Refresh();


                    // filtriranje i prikazivanje softvera za linux i cross platform
                    ICollectionView cv = CollectionViewSource.GetDefaultView(softverTabela.ItemsSource);

                    cv.Filter = o =>
                    {
                        Softver s = o as Softver;
                        return(s.OperativniSistem.ToUpper().Equals("LINUX") || s.OperativniSistem.ToUpper().Contains("LINUX"));
                    };
                }
                else if ((bool)WindowsOSUcionica.IsChecked)
                {
                    // ukoliko postoje vec prethodno izabrani softveri, proverava se da li medju njima ima neki
                    // kom je OS Linux --> ukoliko ima, izbacuje se

                    // samo odcekiramo softvere koji imaju OS Linux iz tabele softvera u prozoru za dodavanje

                    for (int i = 0; i < softverTabela.Items.Count; i++)
                    {
                        Softver softver = (Softver)softverTabela.Items[i];
                        if (softver.Instaliran && softver.OperativniSistem.Equals("Linux"))
                        {
                            softver.Instaliran = false;
                        }
                    }
                    softverTabela.Items.Refresh();


                    // filtriranje i prikazivanje softvera za windows i cross platform
                    ICollectionView cv = CollectionViewSource.GetDefaultView(softverTabela.ItemsSource);

                    cv.Filter = o =>
                    {
                        Softver s = o as Softver;
                        return(s.OperativniSistem.ToUpper().Equals("WINDOWS") || s.OperativniSistem.ToUpper().Contains("WINDOWS"));
                    };
                }
                else if ((bool)WindowsAndLinuxOSUcionica.IsChecked)
                {
                    // prikaz svih softvera koji postoje (linux, windows, cross platform)
                    ICollectionView cv = CollectionViewSource.GetDefaultView(softverTabela.ItemsSource);

                    cv.Filter = o =>
                    {
                        Softver s = o as Softver;
                        return(s.OperativniSistem.ToUpper().Contains("LINUX") || s.OperativniSistem.ToUpper().Contains("WINDOWS"));
                    };
                }
            }
        }
Ejemplo n.º 3
0
        private bool validacijaIzmeneSoftvera()
        {
            Ucionica      staraUcionica       = racunarskiCentar.Ucionice[oznakaUcioniceZaIzmenu];
            List <string> sviPredmetiUcionice = new List <string>();

            foreach (KalendarPolje polje in racunarskiCentar.PoljaKalendara.Values)  //trazimo sve predmete koji se odrzavaju u datoj ucionici
            {
                if (polje.Ucionica.Trim().Equals(staraUcionica.Oznaka.Trim()))
                {
                    sviPredmetiUcionice.Add(polje.NazivPolja.Split('-')[0].Trim());
                }
            }

            List <string> predmetiUcionice    = sviPredmetiUcionice.Distinct().ToList(); //izbacimo duplikate
            List <string> predmetiBezSoftvera = new List <string>();

            foreach (string poz in sviPredmetiUcionice)     // prolazim kroz sve predmete unutar ucionice
            {
                Predmet predmet = racunarskiCentar.Predmeti[poz];
                foreach (string soft in predmet.Softveri)       //prolazim kroz sve softvere jednog predmeta
                {
                    bool postoji = false;
                    for (int i = 0; i < softverTabela.Items.Count; i++) //iteriram kroz svaki oznaceni softver
                    {
                        Softver softver = (Softver)softverTabela.Items[i];
                        if (softver.Instaliran)
                        {
                            if (soft.Trim().Equals(softver.Oznaka.Trim()))  //trazim taj softver u ucionici
                            {
                                postoji = true;
                            }
                        }
                    }
                    if (!postoji)
                    {
                        predmetiBezSoftvera.Add(poz);
                    }
                }
            }

            List <string> predmetiBezSoftBezDupl = predmetiBezSoftvera.Distinct().ToList();

            if (predmetiBezSoftBezDupl.Count > 0)
            {
                PotvrdaIzmene potvrda = new PotvrdaIzmene();
                potvrda.Title = "Nedostatak softvera";
                potvrda.PorukaBrisanja.Text = "Da li ste sigurni?\n\nUkoliko potvrdite izmenu, sledeci predmeti ce se ukloniti iz rasporeda"
                                              + " u ucionici zbog nedostatka softvera:\n";
                List <string> kljuceviPolja = new List <string>();
                for (int i = 0; i < predmetiBezSoftBezDupl.Count; i++)
                {
                    potvrda.PorukaBrisanja.Text += "\n" + (i + 1) + ". " + predmetiBezSoftBezDupl[i];
                    foreach (KalendarPolje polje in racunarskiCentar.PoljaKalendara.Values)
                    {
                        if (polje.NazivPolja.Split('-')[0].Trim().Equals(predmetiBezSoftBezDupl[i]) && polje.Ucionica.Equals(staraUcionica.Oznaka))
                        {
                            kljuceviPolja.Add(polje.Id);
                        }
                    }
                }
                potvrda.ShowDialog();
                if (potvrda.daKlik)
                {
                    foreach (string id in kljuceviPolja)
                    {
                        racunarskiCentar.PoljaKalendara.Remove(id);
                    }
                    foreach (string poz in predmetiBezSoftvera)
                    {
                        racunarskiCentar.Predmeti[poz].PreostaliTermini++;
                    }
                }
                else
                {
                    return(false);
                }
            }
            if ((bool)LinuxOSUcionica.IsChecked)
            {
                staraUcionica.OperativniSistem = "Linux";
            }
            else if ((bool)WindowsOSUcionica.IsChecked)
            {
                staraUcionica.OperativniSistem = "Windows";
            }
            else
            {
                staraUcionica.OperativniSistem = "Windows i Linux";
            }

            staraUcionica.InstaliraniSoftveri.Clear();
            StringBuilder sb           = new StringBuilder();
            int           brojSoftvera = 0;

            for (int i = 0; i < softverTabela.Items.Count; i++)
            {
                Softver softver = (Softver)softverTabela.Items[i];
                if (softver.Instaliran)
                {
                    brojSoftvera++;
                    staraUcionica.InstaliraniSoftveri.Add(softver.Oznaka);

                    if (brojSoftvera > 1)
                    {
                        sb.Append("\n");
                    }
                    sb.Append("Oznaka: " + softver.Oznaka);
                    sb.Append("\nNaziv: " + softver.Naziv);
                    sb.Append("\nOpis: " + softver.Opis + "\n");
                    softver.Instaliran = false;
                }
            }
            staraUcionica.SoftveriLista = sb.ToString();
            return(true);
        }
Ejemplo n.º 4
0
        private bool validacijaPodataka()
        {
            if (oznakaUcionica.Text.Trim() == "" || opisUcionica.Text.Trim() == "" || brojRadnihMestaUcionica.Text.Trim() == "")
            {
                // provera praznih polja da bismo ih uokvirili u crveno
                if (oznakaUcionica.Text.Trim() == "")
                {
                    oznakaUcionica.BorderBrush = System.Windows.Media.Brushes.Red;
                }
                if (opisUcionica.Text.Trim() == "")
                {
                    opisUcionica.BorderBrush = System.Windows.Media.Brushes.Red;
                }


                Application.Current.Dispatcher.Invoke(() =>
                {
                    notifierError.ShowError("Niste popunili sva polja!");
                });
                if (oznakaUcionica.Text.Trim() == "")
                {
                    vratiNaKorak1();
                    UpdateLayout();
                    oznakaUcionica.Focus();
                }
                else if (opisUcionica.Text.Trim() == "")
                {
                    vratiNaKorak1();
                    UpdateLayout();
                    opisUcionica.Focus();
                }
                else if (brojRadnihMestaUcionica.Text.Trim() == "")
                {
                    vratiNaKorak2();
                    UpdateLayout();
                    brojRadnihMestaUcionica.Focus();
                }
                return(false);
            }

            int brMesta;

            if (!int.TryParse(brojRadnihMestaUcionica.Text.Trim(), out brMesta))
            {
                Application.Current.Dispatcher.Invoke(() =>
                {
                    notifierError.ShowError("Broj radnih mesta nije dobro unesen, unesite broj!");
                });
                brojRadnihMestaUcionica.Text = "";
                brojRadnihMestaUcionica.Focus();
                return(false);
            }

            bool postojiSoftver = false;

            if (softverTabela.Items.Count > 0)
            {
                for (int i = 0; i < softverTabela.Items.Count; i++)
                {
                    Softver softver = (Softver)softverTabela.Items[i];
                    if (softver.Instaliran)
                    {
                        postojiSoftver = true;
                    }
                }
                if (!postojiSoftver)
                {
                    Application.Current.Dispatcher.Invoke(() =>
                    {
                        notifierError.ShowError("Niste označili potreban softver/softvere!");
                    });
                    if (tabControlUcionica.SelectedIndex != 1)
                    {
                        vratiNaKorak2();
                        UpdateLayout();
                    }
                    softverTabela.Focus();
                    DataGridCellInfo firstRowCell = new DataGridCellInfo(softverTabela.Items[0], softverTabela.Columns[3]);
                    softverTabela.CurrentCell = firstRowCell;
                    softverTabela.ScrollIntoView(softverTabela.Items[0]);
                    softverTabela.BeginEdit();
                    return(false);
                }
            }
            else
            {
                Application.Current.Dispatcher.Invoke(() =>
                {
                    notifierError.ShowError("Morate prvo uneti softver da biste mogli da unesete učionicu!");
                });
                return(false);
            }
            return(true);
        }
Ejemplo n.º 5
0
        private void finishClick(object sender, RoutedEventArgs e)
        {
            finishButton.Focus();
            if (izmena)
            {
                izmenaUcionice();
                return;
            }
            if (validacijaNoveUcionice() && !dodavanjeUcioniceIzborStarogUnosa)
            {
                // pamtimo stanje alikacije pre nego sto uradimo dodavanje novog
                staroStanje = new StanjeAplikacije();
                staroStanje.RacunarskiCentar = DeepClone(racunarskiCentar);
                staroStanje.TipPodataka      = "ucionica";
                staroStanje.Kolicina         = 1;
                staroStanje.TipPromene       = "brisanje";
                staroStanje.Oznake.Add(oznakaUcionica.Text.Trim());

                novaUcionica.Oznaka = oznakaUcionica.Text.Trim();
                novaUcionica.Opis   = opisUcionica.Text.Trim();

                novaUcionica.PrisustvoPametneTable = prisustvoPametneTableUcionica.IsChecked;
                novaUcionica.PametnaTablaString    = novaUcionica.PrisustvoPametneTable ? "prisutna" : "nije prisutna";
                novaUcionica.PrisustvoTable        = prisustvoTableUcionica.IsChecked;
                novaUcionica.TablaString           = novaUcionica.PrisustvoTable ? "prisutna" : "nije prisutna";
                novaUcionica.PrisustvoProjektora   = prisustvoProjektoraUcionica.IsChecked;
                novaUcionica.ProjektorString       = novaUcionica.PrisustvoProjektora ? "prisutan" : "nije prisutan";

                novaUcionica.BrojRadnihMesta = int.Parse(brojRadnihMestaUcionica.Text.Trim());
                if ((bool)LinuxOSUcionica.IsChecked)
                {
                    novaUcionica.OperativniSistem = "Linux";
                }
                else if ((bool)WindowsOSUcionica.IsChecked)
                {
                    novaUcionica.OperativniSistem = "Windows";
                }
                else
                {
                    novaUcionica.OperativniSistem = "Windows i Linux";
                }

                StringBuilder sb           = new StringBuilder();
                int           brojSoftvera = 0;
                for (int i = 0; i < softverTabela.Items.Count; i++)
                {
                    Softver softver = (Softver)softverTabela.Items[i];
                    if (softver.Instaliran)
                    {
                        brojSoftvera++;
                        novaUcionica.InstaliraniSoftveri.Add(softver.Oznaka);

                        if (brojSoftvera > 1)
                        {
                            sb.Append("\n");
                        }
                        sb.Append("Oznaka: " + softver.Oznaka);
                        sb.Append("\nNaziv: " + softver.Naziv);
                        sb.Append("\nOpis: " + softver.Opis + "\n");
                        softver.Instaliran = false;
                    }
                }
                novaUcionica.SoftveriLista = sb.ToString();

                tabelaUcionica.Add(novaUcionica);
                racunarskiCentar.DodajUcionicu(novaUcionica);
                Application.Current.Dispatcher.Invoke(() =>
                {
                    notifierMainWindow.ShowSuccess("Uspešno ste dodali novu učionicu!");
                });

                // na undo stek treba da upisemo staro stanje aplikacije
                // generisemo neki novi kljuc pod kojim cemo cuvati prethodno stanje na steku
                string kljuc = Guid.NewGuid().ToString();
                // proveravamo da li vec ima 10 koraka za undo operaciju, ako ima, izbacujemo prvi koji je ubacen kako bismo
                // i dalje imali 10 mogucih koraka, ali ukljucujuci i ovaj novi
                if (prethodnaStanjaAplikacije.Count >= 10)
                {
                    prethodnaStanjaAplikacije.RemoveAt(0);
                }
                prethodnaStanjaAplikacije.Add(kljuc, staroStanje);
                stekStanja.GetUndo().Push(kljuc);
                // postavljamo flag na true, da bismo mogli da omogucimo klik na dugme za undo operaciju
                potvrdio = true;

                this.Close();
            }
            else if (dodavanjeUcioniceIzborStarogUnosa)
            {
                // ukoliko postoji predmet (logicki neaktivan) sa istom oznakom
                // kao sto je uneta, ponovo aktiviramo taj predmet (postaje logicki aktivan)
                tabelaUcionica.Add(racunarskiCentar.Ucionice[oznakaUcionica.Text.Trim()]);
                Application.Current.Dispatcher.Invoke(() =>
                {
                    notifierMainWindow.ShowSuccess("Uspešno ste aktivirali postojeću učionicu!");
                });

                // na undo stek treba da upisemo staro stanje aplikacije
                // generisemo neki novi kljuc pod kojim cemo cuvati prethodno stanje na steku
                string kljuc = Guid.NewGuid().ToString();
                // proveravamo da li vec ima 10 koraka za undo operaciju, ako ima, izbacujemo prvi koji je ubacen kako bismo
                // i dalje imali 10 mogucih koraka, ali ukljucujuci i ovaj novi
                if (prethodnaStanjaAplikacije.Count >= 10)
                {
                    prethodnaStanjaAplikacije.RemoveAt(0);
                }
                prethodnaStanjaAplikacije.Add(kljuc, staroStanje);
                stekStanja.GetUndo().Push(kljuc);
                // postavljamo flag na true, da bismo mogli da omogucimo klik na dugme za undo operaciju
                potvrdio = true;

                this.Close();
            }
        }
Ejemplo n.º 6
0
        private void finishClick(object sender, RoutedEventArgs e)
        {
            if (validacijaPodataka())
            {
                // pamtimo stanje alikacije pre nego sto uradimo dodavanje novog
                StanjeAplikacije staroStanje = new StanjeAplikacije();
                staroStanje.RacunarskiCentar = DeepClone(racunarskiCentar);
                staroStanje.TipPodataka      = "softver";
                staroStanje.Kolicina         = indeksiZaIzmenu.Count;
                staroStanje.TipPromene       = "izmena";
                foreach (int index in indeksiZaIzmenu)
                {
                    staroStanje.Oznake.Add(tabelaSoftvera[index].Oznaka);
                }

                List <string> softveriIzmenjenogNazivaIliOpisa = new List <string>();
                foreach (int index in indeksiZaIzmenu)
                {
                    Softver softverIzmena = racunarskiCentar.Softveri[tabelaSoftvera[index].Oznaka];

                    if (nazivSoftver.Text.Trim() != "")
                    {
                        if (!softverIzmena.Naziv.Equals(nazivSoftver.Text.Trim()))
                        {
                            softveriIzmenjenogNazivaIliOpisa.Add(softverIzmena.Oznaka);
                        }
                        softverIzmena.Naziv = nazivSoftver.Text.Trim();
                    }

                    if (opisSoftver.Text.Trim() != "")
                    {
                        if (!softverIzmena.Opis.Equals(opisSoftver.Text.Trim()))
                        {
                            softveriIzmenjenogNazivaIliOpisa.Add(softverIzmena.Oznaka);
                        }
                        softverIzmena.Opis = opisSoftver.Text.Trim();
                    }

                    if (godinaSoftver.Text.Trim() != "")
                    {
                        softverIzmena.GodIzdavanja = int.Parse(godinaSoftver.Text.Trim());
                    }
                    if (cenaSoftver.Text.Trim() != "")
                    {
                        softverIzmena.Cena = double.Parse(cenaSoftver.Text.Trim());
                    }
                    if (proizvodjacSoftver.Text.Trim() != "")
                    {
                        softverIzmena.Proizvodjac = proizvodjacSoftver.Text.Trim();
                    }
                    if (sajtSoftver.Text.Trim() != "")
                    {
                        softverIzmena.Sajt = sajtSoftver.Text.Trim();
                    }

                    tabelaSoftvera[index] = softverIzmena;
                }

                if (softveriIzmenjenogNazivaIliOpisa.Count > 0)
                {
                    // azurira se i ispis softvera za ucionicu/predmet
                    StringBuilder sb = new StringBuilder();

                    List <string> obradjeneUcionice = new List <string>();
                    List <string> obradjeniPredmeti = new List <string>();
                    foreach (string oznaka in softveriIzmenjenogNazivaIliOpisa)
                    {
                        // azuriranje ispisa u ucionici ako postoji taj softver
                        foreach (Ucionica u in racunarskiCentar.Ucionice.Values)
                        {
                            if (!obradjeneUcionice.Contains(u.Oznaka) && u.InstaliraniSoftveri.Contains(oznaka))
                            {
                                foreach (string s in u.InstaliraniSoftveri)
                                {
                                    Softver softver = racunarskiCentar.Softveri[s];
                                    if (u.InstaliraniSoftveri.IndexOf(softver.Oznaka) != 0)
                                    {
                                        sb.Append("\n");
                                    }
                                    sb.Append("Oznaka: " + softver.Oznaka);
                                    sb.Append("\nNaziv: " + softver.Naziv);
                                    sb.Append("\nOpis: " + softver.Opis + "\n");
                                }
                                u.SoftveriLista = sb.ToString();
                                sb.Clear();
                                obradjeneUcionice.Add(u.Oznaka);
                            }
                        }

                        // azuriranje ispisa u predmetu ako postoji taj softver
                        foreach (Predmet p in racunarskiCentar.Predmeti.Values)
                        {
                            if (!obradjeniPredmeti.Contains(p.Oznaka) && p.Softveri.Contains(oznaka))
                            {
                                foreach (string s in p.Softveri)
                                {
                                    Softver softver = racunarskiCentar.Softveri[s];
                                    if (p.Softveri.IndexOf(softver.Oznaka) != 0)
                                    {
                                        sb.Append("\n");
                                    }
                                    sb.Append("Oznaka: " + softver.Oznaka);
                                    sb.Append("\nNaziv: " + softver.Naziv);
                                    sb.Append("\nOpis: " + softver.Opis + "\n");
                                }
                                p.SoftveriLista = sb.ToString();
                                sb.Clear();
                                obradjeniPredmeti.Add(p.Oznaka);
                            }
                        }
                    }
                }
                Application.Current.Dispatcher.Invoke(() =>
                {
                    notifierMainWindow.ShowSuccess("Uspešno ste izmenili softvere!");
                });

                // na undo stek treba da upisemo staro stanje aplikacije
                // generisemo neki novi kljuc pod kojim cemo cuvati prethodno stanje na steku
                string kljuc = Guid.NewGuid().ToString();
                // proveravamo da li vec ima 10 koraka za undo operaciju, ako ima, izbacujemo prvi koji je ubacen kako bismo
                // i dalje imali 10 mogucih koraka, ali ukljucujuci i ovaj novi
                if (prethodnaStanjaAplikacije.Count >= 2)
                {
                    prethodnaStanjaAplikacije.RemoveAt(0);
                }
                prethodnaStanjaAplikacije.Add(kljuc, staroStanje);
                stekStanja.GetUndo().Push(kljuc);
                // postavljamo flag na true, da bismo mogli da omogucimo klik na dugme za undo operaciju
                potvrdaIzmena = true;

                this.Close();
            }
        }
Ejemplo n.º 7
0
        private void izmeniSoftver()
        {
            string novaOznaka = oznakaSoftver.Text.Trim();

            if (novaOznaka != oznakaSoftveraZaIzmenu && racunarskiCentar.Softveri.ContainsKey(novaOznaka))
            {
                notifierError.ShowError("Softver sa unetom oznakom već postoji u bazi!");
                oznakaSoftver.Focus();
                return;
            }

            if (validacijaPodataka() && proveraIzmeneOS(oznakaSoftveraZaIzmenu))
            {
                // pamtimo stanje alikacije pre nego sto uradimo dodavanje novog
                staroStanje = new StanjeAplikacije();
                staroStanje.RacunarskiCentar = DeepClone(racunarskiCentar);
                staroStanje.TipPodataka      = "softver";
                staroStanje.Kolicina         = 1;
                staroStanje.TipPromene       = "izmena";
                staroStanje.Oznake.Add(oznakaSoftveraZaIzmenu);

                Softver softverIzmena     = racunarskiCentar.Softveri[oznakaSoftveraZaIzmenu];
                bool    promenilaSeOznaka = false;
                bool    promenioSeNaziv   = false;
                bool    promenioSeOpis    = false;
                string  staraOznaka       = softverIzmena.Oznaka;

                if ((bool)WindowsOSSoftver.IsChecked)
                {
                    softverIzmena.OperativniSistem = "Windows";
                }
                else if ((bool)LinuxOSSoftver.IsChecked)
                {
                    softverIzmena.OperativniSistem = "Linux";
                }
                else
                {
                    softverIzmena.OperativniSistem = "Windows i Linux";
                }

                if (!softverIzmena.Oznaka.Equals(oznakaSoftver.Text.Trim()))
                {
                    promenilaSeOznaka = true;
                }
                softverIzmena.Oznaka = oznakaSoftver.Text.Trim();

                if (!softverIzmena.Naziv.Equals(nazivSoftver.Text.Trim()))
                {
                    promenioSeNaziv = true;
                }
                softverIzmena.Naziv = nazivSoftver.Text.Trim();

                if (!softverIzmena.Opis.Equals(opisSoftver.Text.Trim()))
                {
                    promenioSeOpis = true;
                }
                softverIzmena.Opis = opisSoftver.Text.Trim();

                softverIzmena.GodIzdavanja = int.Parse(godinaSoftver.Text.Trim());
                softverIzmena.Cena         = double.Parse(cenaSoftver.Text.Trim());

                softverIzmena.Proizvodjac = proizvodjacSoftver.Text.Trim();
                softverIzmena.Sajt        = sajtSoftver.Text.Trim();


                // azurira se oznaka u listi instaliranih softvera/neophodnih softvera u ucionici/predmetu
                // azurira se i ispis softvera za ucionicu/predmet
                StringBuilder sb = new StringBuilder();
                if (promenilaSeOznaka || promenioSeNaziv || promenioSeOpis)
                {
                    List <string> ucioniceZaIzmenu = new List <string>();
                    foreach (Ucionica u in racunarskiCentar.Ucionice.Values)
                    {
                        if (u.InstaliraniSoftveri.Contains(staraOznaka))
                        {
                            if (promenilaSeOznaka)
                            {
                                // ukoliko se promenila oznaka softvera, uklanjamo staru iz odgovarajcue liste u ucionici
                                // u kojoj je instaliran i pamtimo oznaku ucionice u koju treba da dodamo promenjenu oznaku softvera
                                u.InstaliraniSoftveri.Remove(staraOznaka);
                                ucioniceZaIzmenu.Add(u.Oznaka);
                            }
                        }
                    }
                    // idemo kroz sve ucionice u kojima treba azurirati stanje softvera i menjamo staru oznaku novom (izbacili smo
                    // staru i sad ubacujemo novu), azuriramo ispis
                    foreach (string oznaka in ucioniceZaIzmenu)
                    {
                        Ucionica u = racunarskiCentar.Ucionice[oznaka];
                        u.InstaliraniSoftveri.Add(softverIzmena.Oznaka);

                        foreach (string s in u.InstaliraniSoftveri)
                        {
                            if (s.Equals(softverIzmena.Oznaka))
                            {
                                if (u.InstaliraniSoftveri.IndexOf(s) != 0)
                                {
                                    sb.Append("\n");
                                }
                                sb.Append("Oznaka: " + softverIzmena.Oznaka);
                                sb.Append("\nNaziv: " + softverIzmena.Naziv);
                                sb.Append("\nOpis: " + softverIzmena.Opis + "\n");
                            }
                            else
                            {
                                Softver softver = racunarskiCentar.Softveri[s];
                                if (u.InstaliraniSoftveri.IndexOf(s) != 0)
                                {
                                    sb.Append("\n");
                                }
                                sb.Append("Oznaka: " + softver.Oznaka);
                                sb.Append("\nNaziv: " + softver.Naziv);
                                sb.Append("\nOpis: " + softver.Opis + "\n");
                            }
                        }
                        u.SoftveriLista = sb.ToString();
                        sb.Clear();
                    }


                    List <string> predmetiZaIzmenu = new List <string>();
                    foreach (Predmet p in racunarskiCentar.Predmeti.Values)
                    {
                        if (p.Softveri.Contains(staraOznaka))
                        {
                            if (promenilaSeOznaka)
                            {
                                // ukoliko se promenila oznaka softvera, uklanjamo staru iz odgovarajcue liste u predmetu
                                // koji koristi ovaj softver i pamtimo oznaku predmeta u koji treba da dodamo promenjenu oznaku predmeta
                                p.Softveri.Remove(staraOznaka);
                                predmetiZaIzmenu.Add(p.Oznaka);
                            }
                        }
                    }
                    // idemo kroz sve predmete u kojima treba azurirati stanje softvera i menjamo staru oznaku novom (izbacili smo
                    // staru i sad ubacujemo novu), azuriramo ispis
                    foreach (string oznaka in predmetiZaIzmenu)
                    {
                        Predmet p = racunarskiCentar.Predmeti[oznaka];
                        p.Softveri.Add(softverIzmena.Oznaka);

                        foreach (string s in p.Softveri)
                        {
                            if (s.Equals(softverIzmena.Oznaka))
                            {
                                if (p.Softveri.IndexOf(s) != 0)
                                {
                                    sb.Append("\n");
                                }
                                sb.Append("Oznaka: " + softverIzmena.Oznaka);
                                sb.Append("\nNaziv: " + softverIzmena.Naziv);
                                sb.Append("\nOpis: " + softverIzmena.Opis + "\n");
                            }
                            else
                            {
                                Softver softver = racunarskiCentar.Softveri[s];
                                if (p.Softveri.IndexOf(s) != 0)
                                {
                                    sb.Append("\n");
                                }
                                sb.Append("Oznaka: " + softver.Oznaka);
                                sb.Append("\nNaziv: " + softver.Naziv);
                                sb.Append("\nOpis: " + softver.Opis + "\n");
                            }
                        }
                        p.SoftveriLista = sb.ToString();
                        sb.Clear();
                    }
                }

                if (promenilaSeOznaka)
                {
                    racunarskiCentar.Softveri.Remove(staraOznaka);
                    racunarskiCentar.Softveri.Add(softverIzmena.Oznaka, softverIzmena);
                }

                tabelaSoftvera[indeks] = softverIzmena;
                Application.Current.Dispatcher.Invoke(() =>
                {
                    notifierMainWindow.ShowSuccess("Uspešno ste izmenili softver!");
                });

                // na undo stek treba da upisemo staro stanje aplikacije
                // generisemo neki novi kljuc pod kojim cemo cuvati prethodno stanje na steku
                string kljuc = Guid.NewGuid().ToString();
                // proveravamo da li vec ima 10 koraka za undo operaciju, ako ima, izbacujemo prvi koji je ubacen kako bismo
                // i dalje imali 10 mogucih koraka, ali ukljucujuci i ovaj novi
                if (prethodnaStanjaAplikacije.Count >= 3)
                {
                    prethodnaStanjaAplikacije.RemoveAt(0);
                }
                prethodnaStanjaAplikacije.Add(kljuc, staroStanje);
                stekStanja.GetUndo().Push(kljuc);
                // postavljamo flag na true, da bismo mogli da omogucimo klik na dugme za undo operaciju
                potvrdio = true;

                this.Close();
            }
        }
Ejemplo n.º 8
0
        private bool proveraIzmeneOS(string oznaka)
        {
            Softver softver   = racunarskiCentar.Softveri[oznaka];
            string  zeljeniOS = "";

            if ((bool)WindowsOSSoftver.IsChecked)
            {
                zeljeniOS = "Windows";
            }
            else if ((bool)LinuxOSSoftver.IsChecked)
            {
                zeljeniOS = "Linux";
            }
            else
            {
                zeljeniOS = "Windows i Linux";
            }

            bool nadjenPredmetKomSmetaOS     = false;
            bool nadjenaUcionicaKojojSmetaOS = false;

            foreach (Predmet p in racunarskiCentar.Predmeti.Values)
            {
                if (zeljeniOS == "Windows")
                {
                    if (p.OperativniSistem == "Linux" && p.Softveri.Contains(oznaka) && !p.Obrisan)
                    {
                        // nije dozvoljena promena OS softvera na windows, ako medju predmetima koji ga koriste
                        // postoji neki koji ima OS linux
                        nadjenPredmetKomSmetaOS = true;
                        break;
                    }
                }
                else if (zeljeniOS == "Linux")
                {
                    if (p.OperativniSistem == "Windows" && p.Softveri.Contains(oznaka) && !p.Obrisan)
                    {
                        // nije dozvoljena promena OS softvera na linux, ako medju predmetima koji ga koriste
                        // postoji neki koji ima OS windows
                        nadjenPredmetKomSmetaOS = true;
                        break;
                    }
                }
            }

            if (nadjenPredmetKomSmetaOS)
            {
                Application.Current.Dispatcher.Invoke(() =>
                {
                    notifierError.ShowError("Ne možete promeniti operativni sistem softvera \njer se on koristi na predmetu gde nije podržan \nizabrani operativni sistem!");
                });
                return(false);
            }
            else
            {
                // ukoliko ne postoji problem za izmenu OS softvera u pogledu sa poklapanjem OS na predmetima
                // koji koriste taj softver, proveravamo poklapanje izmedju softvera i ucionica koje ga koriste
                foreach (Ucionica u in racunarskiCentar.Ucionice.Values)
                {
                    if (zeljeniOS == "Windows")
                    {
                        if (u.OperativniSistem == "Linux" && u.InstaliraniSoftveri.Contains(oznaka) && !u.Obrisan)
                        {
                            // nije dozvoljena promena OS softvera na windows, ako medju ucionicama u kojima se koristi
                            // postoji neka koja ima OS linux
                            nadjenaUcionicaKojojSmetaOS = true;
                            break;
                        }
                    }
                    else if (zeljeniOS == "Linux")
                    {
                        if (u.OperativniSistem == "Windows" && u.InstaliraniSoftveri.Contains(oznaka) && !u.Obrisan)
                        {
                            // nije dozvoljena promena OS softvera na linux, ako medju ucionicama u kojima se koristi
                            // postoji neka koja ima OS windows
                            nadjenaUcionicaKojojSmetaOS = true;
                            break;
                        }
                    }
                }

                if (nadjenaUcionicaKojojSmetaOS)
                {
                    Application.Current.Dispatcher.Invoke(() =>
                    {
                        notifierError.ShowError("Ne možete promeniti operativni sistem softvera \njer se on koristi u učionici gde nije intaliran \nizabrani operativni sistem!");
                    });
                    return(false);
                }
                // ako nema ni predmeta ni ucionice kojoj smeta promenja OS softvera, onda je data dozvola za izmenu
                return(true);
            }
        }
Ejemplo n.º 9
0
        public Tutorijal(RacunarskiCentar racunarskiCentar, ObservableCollection <Softver> softveri, bool izmena, string oznaka,
                         Notifier notifierMainWindow, UndoRedoStack stack, OrderedDictionary prethodnaStanja)
        {
            notifierError = new Notifier(cfg =>
            {
                cfg.PositionProvider = new WindowPositionProvider(
                    parentWindow: this,
                    corner: Corner.TopRight,
                    offsetX: 20,
                    offsetY: 10);

                cfg.LifetimeSupervisor = new TimeAndCountBasedLifetimeSupervisor(
                    notificationLifetime: System.TimeSpan.FromSeconds(5),
                    maximumNotificationCount: MaximumNotificationCount.FromCount(1));

                cfg.Dispatcher = Application.Current.Dispatcher;
            });
            this.potvrdio           = false;
            this.stekStanja         = stack;
            this.notifierMainWindow = notifierMainWindow;
            InitializeComponent();
            this.racunarskiCentar                  = racunarskiCentar;
            this.izmena                            = izmena;
            this.unosPrviPut                       = true;
            this.oznakaSoftveraZaIzmenu            = oznaka;
            this.dodavanjeSoftveraIzborStarogUnosa = false;
            tabelaSoftvera                         = softveri;
            noviSoftver                            = new Softver();
            if (!izmena)
            {
                oznakaSoftver.Focus();
            }
            BackStepMenuItem.IsEnabled     = false;
            this.prethodnaStanjaAplikacije = prethodnaStanja;
            this.staroStanje = null;

            //ukljuci prvi pop-up
            popupOznaka.IsOpen = true;
            pop = popupOznaka;
            Window w = this;

            if (null != w)
            {
                w.LocationChanged += delegate(object sender, EventArgs e)
                {
                    var offset = popupOznaka.HorizontalOffset;
                    popupOznaka.HorizontalOffset = offset + 1;
                    popupOznaka.HorizontalOffset = offset;

                    offset = popupNaziv.HorizontalOffset;
                    popupNaziv.HorizontalOffset = offset + 1;
                    popupNaziv.HorizontalOffset = offset;

                    offset = popupOS.HorizontalOffset;
                    popupOS.HorizontalOffset = offset + 1;
                    popupOS.HorizontalOffset = offset;

                    offset = popupProizvodjac.HorizontalOffset;
                    popupProizvodjac.HorizontalOffset = offset + 1;
                    popupProizvodjac.HorizontalOffset = offset;

                    offset = popupNastavi.HorizontalOffset;
                    popupNastavi.HorizontalOffset = offset + 1;
                    popupNastavi.HorizontalOffset = offset;

                    offset = popupSajt.HorizontalOffset;
                    popupSajt.HorizontalOffset = offset + 1;
                    popupSajt.HorizontalOffset = offset;

                    offset = popupGodina.HorizontalOffset;
                    popupGodina.HorizontalOffset = offset + 1;
                    popupGodina.HorizontalOffset = offset;

                    offset = popupCena.HorizontalOffset;
                    popupCena.HorizontalOffset = offset + 1;
                    popupCena.HorizontalOffset = offset;

                    offset = popupOpis.HorizontalOffset;
                    popupOpis.HorizontalOffset = offset + 1;
                    popupOpis.HorizontalOffset = offset;

                    offset = popupZavrsi.HorizontalOffset;
                    popupZavrsi.HorizontalOffset = offset + 1;
                    popupZavrsi.HorizontalOffset = offset;
                };

                w.SizeChanged += delegate(object sender, SizeChangedEventArgs e)
                {
                    var offset = popupOznaka.HorizontalOffset;
                    popupOznaka.HorizontalOffset = offset + 1;
                    popupOznaka.HorizontalOffset = offset;

                    offset = popupNaziv.HorizontalOffset;
                    popupNaziv.HorizontalOffset = offset + 1;
                    popupNaziv.HorizontalOffset = offset;

                    offset = popupOS.HorizontalOffset;
                    popupOS.HorizontalOffset = offset + 1;
                    popupOS.HorizontalOffset = offset;

                    offset = popupProizvodjac.HorizontalOffset;
                    popupProizvodjac.HorizontalOffset = offset + 1;
                    popupProizvodjac.HorizontalOffset = offset;

                    offset = popupNastavi.HorizontalOffset;
                    popupNastavi.HorizontalOffset = offset + 1;
                    popupNastavi.HorizontalOffset = offset;

                    offset = popupSajt.HorizontalOffset;
                    popupSajt.HorizontalOffset = offset + 1;
                    popupSajt.HorizontalOffset = offset;

                    offset = popupGodina.HorizontalOffset;
                    popupGodina.HorizontalOffset = offset + 1;
                    popupGodina.HorizontalOffset = offset;

                    offset = popupCena.HorizontalOffset;
                    popupCena.HorizontalOffset = offset + 1;
                    popupCena.HorizontalOffset = offset;

                    offset = popupOpis.HorizontalOffset;
                    popupOpis.HorizontalOffset = offset + 1;
                    popupOpis.HorizontalOffset = offset;

                    offset = popupZavrsi.HorizontalOffset;
                    popupZavrsi.HorizontalOffset = offset + 1;
                    popupZavrsi.HorizontalOffset = offset;
                };
            }
        }