コード例 #1
0
ファイル: CefCustomObject.cs プロジェクト: kacacukurov/HCI
        public void obrisiPolje(string id, string oznakaPredmeta)
        {
            // pamtimo stanje alikacije pre nego sto uradimo dodavanje novog
            StanjeAplikacije staroStanje = new StanjeAplikacije();

            staroStanje.RacunarskiCentar = DeepClone(racunarskiCentar);
            staroStanje.TipPodataka      = "kalendar";
            staroStanje.Kolicina         = 1;
            staroStanje.TipPromene       = "dodavanje";

            racunarskiCentar.Predmeti[oznakaPredmeta].PreostaliTermini++;
            racunarskiCentar.PoljaKalendara.Remove(id);

            // 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);

            // omogucavamo pozivanje opcije undo
            Application.Current.Dispatcher.Invoke(() =>
            {
                _instanceWindow.omoguciUndo();
            });
        }
コード例 #2
0
ファイル: Tutorijal.xaml.cs プロジェクト: kacacukurov/HCI
        private bool validacijaNovogSoftvera()
        {
            if (!validacijaPodataka())
            {
                return(false);
            }
            else if (racunarskiCentar.Softveri.ContainsKey(oznakaSoftver.Text.Trim()))
            {
                if (racunarskiCentar.Softveri[oznakaSoftver.Text.Trim()].Obrisan)
                {
                    dodavanjeSoftveraIzborStarogUnosa = false;
                    Softver softver = racunarskiCentar.Softveri[oznakaSoftver.Text.Trim()];

                    // vec postoji softver sa tom oznakom, ali je logicki obrisan
                    OdlukaDodavanjaSoftver odluka = new OdlukaDodavanjaSoftver();
                    odluka.Oznaka.Text           = "Oznaka: " + softver.Oznaka;
                    odluka.Naziv.Text            = "Naziv: " + softver.Naziv;
                    odluka.OperativniSistem.Text = "Operativni sistem: " + softver.OperativniSistem;
                    odluka.Proizvodjac.Text      = "Proizvođač: " + softver.Proizvodjac;
                    odluka.GodinaIzdavanja.Text  = "Godina izdavanja: " + softver.GodIzdavanja.ToString();
                    odluka.Sajt.Text             = "Sajt: " + softver.Sajt;
                    odluka.Cena.Text             = "Cena: " + softver.Cena.ToString();
                    odluka.ShowDialog();

                    if (odluka.potvrdaNovogUnosa)
                    {
                        // ukoliko je korisnik potvrdio da zeli da unese nove podatke, gazimo postojeci neaktivan softver
                        racunarskiCentar.Softveri.Remove(oznakaSoftver.Text.Trim());
                    }
                    else
                    {
                        // pamtimo stanje alikacije pre nego sto uradimo dodavanje novog
                        staroStanje = new StanjeAplikacije();
                        staroStanje.RacunarskiCentar = DeepClone(racunarskiCentar);
                        staroStanje.TipPodataka      = "softver";
                        staroStanje.Kolicina         = 1;
                        staroStanje.TipPromene       = "brisanje";
                        staroStanje.Oznake.Add(softver.Oznaka);

                        // vracamo logicki obrisan softver da bude aktivan
                        softver.Obrisan = false;
                        dodavanjeSoftveraIzborStarogUnosa = true;
                    }
                }
                else
                {
                    Application.Current.Dispatcher.Invoke(() =>
                    {
                        notifierError.ShowError("Softver sa unetom oznakom već postoji!");
                    });
                    vratiNaKorak1();
                    UpdateLayout();
                    oznakaSoftver.Focus();
                    return(false);
                }
            }
            return(true);
        }
コード例 #3
0
        private bool validacijaNoveUcionice()
        {
            if (!validacijaPodataka())
            {
                return(false);
            }
            else if (racunarskiCentar.Ucionice.ContainsKey(oznakaUcionica.Text.Trim()))
            {
                if (racunarskiCentar.Ucionice[oznakaUcionica.Text.Trim()].Obrisan)
                {
                    dodavanjeUcioniceIzborStarogUnosa = false;
                    Ucionica ucionica = racunarskiCentar.Ucionice[oznakaUcionica.Text.Trim()];

                    // vec postoji ucionica sa tom oznakom, ali je logicki obrisana
                    OdlukaDodavanjaUcionica odluka = new OdlukaDodavanjaUcionica();
                    odluka.Oznaka.Text           = "Oznaka: " + ucionica.Oznaka;
                    odluka.BrojRadnihMesta.Text  = "Broj radnih mesta: " + ucionica.BrojRadnihMesta;
                    odluka.Projektor.Text        = "Projektor: " + ucionica.ProjektorString;
                    odluka.Tabla.Text            = "Tabla: " + ucionica.TablaString;
                    odluka.PametnaTabla.Text     = "Pametna tabla: " + ucionica.PametnaTablaString;
                    odluka.OperativniSistem.Text = "Operativni sistem: " + ucionica.OperativniSistem;
                    odluka.ShowDialog();

                    if (odluka.potvrdaNovogUnosa)
                    {
                        // ukoliko je korisnik potvrdio da zeli da unese nove podatke, gazimo postojecu neaktivnu ucionicu
                        racunarskiCentar.Ucionice.Remove(oznakaUcionica.Text.Trim());
                    }
                    else
                    {
                        // 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(ucionica.Oznaka);

                        // vracamo logicki obrisanu ucionicu da bude aktivna
                        ucionica.Obrisan = false;
                        dodavanjeUcioniceIzborStarogUnosa = true;
                    }
                }
                else
                {
                    Application.Current.Dispatcher.Invoke(() =>
                    {
                        notifierError.ShowError("Učionica sa unetom oznakom već postoji!");
                    });
                    vratiNaKorak1();
                    UpdateLayout();
                    oznakaUcionica.Focus();
                    return(false);
                }
            }
            return(true);
        }
コード例 #4
0
        private bool validacijaDodavanjaSmera()
        {
            if (!validacijaPraznihPolja())
            {
                return(false);
            }
            else if (racunarskiCentar.Smerovi.ContainsKey(OznakaSmera.Text.Trim()))
            {
                if (racunarskiCentar.Smerovi[OznakaSmera.Text.Trim()].Obrisan)
                {
                    dodavanjeSmeraIzborStarogUnosa = false;
                    Smer smer = racunarskiCentar.Smerovi[OznakaSmera.Text.Trim()];

                    // vec postoji smer sa tom oznakom, ali je logicki obrisan
                    OdlukaDodavanjaSmer odluka = new OdlukaDodavanjaSmer();
                    odluka.Oznaka.Text         = "Oznaka: " + smer.Oznaka;
                    odluka.Naziv.Text          = "Naziv: " + smer.Naziv;
                    odluka.DatumUvodjenja.Text = "Datum uvođenja: " + smer.Datum;
                    odluka.ShowDialog();

                    if (odluka.potvrdaNovogUnosa)
                    {
                        // ukoliko je korisnik potvrdio da zeli da unese nove podatke, gazimo postojeci neaktivan smer
                        racunarskiCentar.Smerovi.Remove(OznakaSmera.Text.Trim());
                    }
                    else
                    {
                        // pamtimo stanje alikacije pre nego sto uradimo dodavanje novog
                        staroStanje = new StanjeAplikacije();
                        staroStanje.RacunarskiCentar = DeepClone(racunarskiCentar);
                        staroStanje.TipPodataka      = "smer";
                        staroStanje.Kolicina         = 1;
                        staroStanje.TipPromene       = "brisanje";
                        staroStanje.Oznake.Add(smer.Oznaka);

                        // vracamo logicki obrisan smer da bude aktivan
                        smer.Obrisan = false;
                        dodavanjeSmeraIzborStarogUnosa = true;
                    }
                }
                else
                {
                    Application.Current.Dispatcher.Invoke(() =>
                    {
                        notifierError.ShowError("Smer sa unetom oznakom već postoji!");
                    });
                    OznakaSmera.Focus();
                    return(false);
                }
            }
            return(true);
        }
コード例 #5
0
        public DodavanjeUcionice(RacunarskiCentar racunarskiCentar, ObservableCollection <Ucionica> ucionice, 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.prethodnaStanjaAplikacije = prethodnaStanja;
            this.staroStanje        = null;
            this.potvrdio           = false;
            this.stekStanja         = stack;
            this.notifierMainWindow = notifierMainWindow;
            this.inicijalizacija    = false;
            InitializeComponent();
            this.inicijalizacija = true;
            this.dodavanjeUcioniceIzborStarogUnosa = false;
            novaUcionica                = new Ucionica();
            this.racunarskiCentar       = racunarskiCentar;
            this.izmena                 = izmena;
            this.unosPrviPut            = true;
            this.oznakaUcioniceZaIzmenu = oznaka;
            List <Softver> softveri = new List <Softver>();

            foreach (Softver s in racunarskiCentar.Softveri.Values)
            {
                if (!s.Obrisan)
                {
                    s.Instaliran = false;
                    softveri.Add(s);
                }
            }
            softverTabela.ItemsSource = softveri;
            softverTabela.IsSynchronizedWithCurrentItem = true;
            tabelaUcionica = ucionice;
            if (!izmena)
            {
                oznakaUcionica.Focus();
            }
            BackStepMenuItem.IsEnabled = false;
        }
コード例 #6
0
ファイル: CefCustomObject.cs プロジェクト: kacacukurov/HCI
        public void getEvent(string id, string naziv, string pocetak, string kraj, string dan, string ucionica, bool dodat)
        {
            // pamtimo stanje alikacije pre nego sto uradimo dodavanje novog
            StanjeAplikacije staroStanje = new StanjeAplikacije();

            staroStanje.RacunarskiCentar = DeepClone(racunarskiCentar);
            staroStanje.TipPodataka      = "kalendar";
            staroStanje.Kolicina         = 1;

            if (!racunarskiCentar.PoljaKalendara.ContainsKey(id))
            {
                staroStanje.TipPromene = "brisanje";
                racunarskiCentar.PoljaKalendara.Add(id, new KalendarPolje(id, naziv, pocetak, kraj, dan, ucionica));
            }
            else
            {
                staroStanje.TipPromene = "pomeranje";
                KalendarPolje polje = racunarskiCentar.PoljaKalendara[id];
                polje.Pocetak  = pocetak;
                polje.Kraj     = kraj;
                polje.Dan      = dan;
                polje.Ucionica = ucionica;
            }
            if (dodat)
            {
                Predmet p = racunarskiCentar.Predmeti[naziv.Split('-')[0]];
                p.PreostaliTermini--;
            }

            // 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);

            // omogucavamo pozivanje opcije undo
            Application.Current.Dispatcher.Invoke(() =>
            {
                _instanceWindow.omoguciUndo();
            });
        }
コード例 #7
0
        public DodavanjeSmera(RacunarskiCentar racunarskiCentar, ObservableCollection <Smer> smerovi, 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.prethodnaStanjaAplikacije = prethodnaStanja;
            this.staroStanje        = null;
            this.potvrdio           = false;
            this.stekStanja         = stack;
            this.notifierMainWindow = notifierMainWindow;
            smer = new Smer();
            this.racunarskiCentar               = racunarskiCentar;
            this.izmena                         = izmena;
            this.unosPrviPut                    = true;
            this.oznakaSmeraZaIzmenu            = oznaka;
            this.dodavanjeSmeraIzborStarogUnosa = false;
            tabelaSmerova                       = smerovi;
            InitializeComponent();
            if (!izmena)
            {
                OznakaSmera.Focus();
            }
        }
コード例 #8
0
        private void izmenaUcionice()
        {
            string novaOznaka = oznakaUcionica.Text.Trim();

            if (novaOznaka != oznakaUcioniceZaIzmenu && racunarskiCentar.Ucionice.ContainsKey(novaOznaka))
            {
                notifierError.ShowError("Učionica sa unetom oznakom već postoji u bazi!");
                oznakaUcionica.Focus();
                return;
            }

            if (validacijaPodataka() && validacijaIzmeneSoftvera() && validacijaIzmeneTable() && validacijaIzmenePametneTable() &&
                validacijaIzmeneProjektora() && validacijaBrojaRadnihMesta())
            {
                // pamtimo stanje alikacije pre nego sto uradimo dodavanje novog
                staroStanje = new StanjeAplikacije();
                staroStanje.RacunarskiCentar = DeepClone(racunarskiCentar);
                staroStanje.TipPodataka      = "ucionica";
                staroStanje.Kolicina         = 1;
                staroStanje.TipPromene       = "izmena";
                staroStanje.Oznake.Add(oznakaUcioniceZaIzmenu);

                Ucionica ucionicaIzmena  = racunarskiCentar.Ucionice[oznakaUcioniceZaIzmenu];
                string   staraOznaka     = ucionicaIzmena.Oznaka;
                bool     oznakaIzmenjena = false;

                if (!staraOznaka.Equals(oznakaUcionica.Text.Trim()))
                {
                    oznakaIzmenjena = true;
                }

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

                if (oznakaIzmenjena)
                {
                    foreach (KalendarPolje polje in racunarskiCentar.PoljaKalendara.Values)
                    {
                        if (polje.Ucionica.Trim().Equals(staraOznaka))
                        {
                            polje.Ucionica = ucionicaIzmena.Oznaka;
                        }
                    }
                    racunarskiCentar.Ucionice.Remove(staraOznaka);
                    racunarskiCentar.Ucionice.Add(ucionicaIzmena.Oznaka, ucionicaIzmena);
                }

                tabelaUcionica[indeks] = ucionicaIzmena;
                Application.Current.Dispatcher.Invoke(() =>
                {
                    notifierMainWindow.ShowSuccess("Uspešno ste izmenili 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();
            }
        }
コード例 #9
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();
            }
        }
コード例 #10
0
        private void izmeniSmer()
        {
            string novaOznaka = OznakaSmera.Text.Trim();

            if (novaOznaka != oznakaSmeraZaIzmenu && racunarskiCentar.Smerovi.ContainsKey(novaOznaka))
            {
                notifierError.ShowError("Smer sa unetom oznakom već postoji u bazi!");
                OznakaSmera.Focus();
                return;
            }

            if (validacijaPraznihPolja())
            {
                // pamtimo stanje alikacije pre nego sto uradimo dodavanje novog
                staroStanje = new StanjeAplikacije();
                staroStanje.RacunarskiCentar = DeepClone(racunarskiCentar);
                staroStanje.TipPodataka      = "smer";
                staroStanje.Kolicina         = 1;
                staroStanje.TipPromene       = "izmena";
                staroStanje.Oznake.Add(oznakaSmeraZaIzmenu);

                Smer   smerIzmena      = racunarskiCentar.Smerovi[oznakaSmeraZaIzmenu];
                string staraOznaka     = smerIzmena.Oznaka;
                bool   oznakaIzmenjena = false;

                if (!staraOznaka.Equals(OznakaSmera.Text.Trim()))
                {
                    oznakaIzmenjena = true;
                }

                smerIzmena.Oznaka = OznakaSmera.Text.Trim();
                smerIzmena.Naziv  = NazivSmera.Text.Trim();
                smerIzmena.Opis   = OpisSmera.Text.Trim();
                string datum = DateTime.Parse(DatumUvodjenja.Text.Trim()).ToString("dd/MM/yyyy");
                smerIzmena.Datum = datum;

                if (smerIzmena.Predmeti.Count > 0)
                {
                    foreach (string predmet in smerIzmena.Predmeti)
                    {
                        racunarskiCentar.Predmeti[predmet].Smer        = smerIzmena.Oznaka;
                        racunarskiCentar.Predmeti[predmet].SmerDetalji = "Oznaka: " + smerIzmena.Oznaka + "\nNaziv: " + smerIzmena.Naziv;
                    }
                }

                if (oznakaIzmenjena)
                {
                    foreach (KalendarPolje polje in racunarskiCentar.PoljaKalendara.Values)
                    {
                        if (polje.NazivPolja.Split('-')[1].Trim().Equals(staraOznaka))
                        {
                            polje.NazivPolja = polje.NazivPolja.Split('-')[0].Trim() + '-' + smerIzmena.Oznaka;
                        }
                    }
                    racunarskiCentar.Smerovi.Remove(staraOznaka);
                    racunarskiCentar.Smerovi.Add(smerIzmena.Oznaka, smerIzmena);
                }

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

                // 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();
            }
        }
コード例 #11
0
        private void finishClick(object sender, RoutedEventArgs e)
        {
            if (izmena)
            {
                izmeniSmer();
                return;
            }
            if (validacijaDodavanjaSmera() && !dodavanjeSmeraIzborStarogUnosa)
            {
                // pamtimo stanje alikacije pre nego sto uradimo dodavanje novog
                staroStanje = new StanjeAplikacije();
                staroStanje.RacunarskiCentar = DeepClone(racunarskiCentar);
                staroStanje.TipPodataka      = "smer";
                staroStanje.Kolicina         = 1;
                staroStanje.TipPromene       = "brisanje";
                staroStanje.Oznake.Add(OznakaSmera.Text.Trim());

                smer.Naziv  = NazivSmera.Text.Trim();
                smer.Oznaka = OznakaSmera.Text.Trim();
                smer.Opis   = OpisSmera.Text.Trim();
                string datum = DateTime.Parse(DatumUvodjenja.Text.Trim()).ToString("dd/MM/yyyy");
                smer.Datum = datum;

                tabelaSmerova.Add(smer);
                racunarskiCentar.DodajSmer(smer);
                Application.Current.Dispatcher.Invoke(() =>
                {
                    notifierMainWindow.ShowSuccess("Uspešno ste dodali novi smer!");
                });

                // 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 (dodavanjeSmeraIzborStarogUnosa)
            {
                // ukoliko postoji smer (logicki neaktivan) sa istom oznakom
                // kao sto je uneta, ponovo aktiviramo taj smer (postaje logicki aktivan)
                tabelaSmerova.Add(racunarskiCentar.Smerovi[OznakaSmera.Text.Trim()]);
                Application.Current.Dispatcher.Invoke(() =>
                {
                    notifierMainWindow.ShowSuccess("Uspešno ste aktivirali smer!");
                });

                // 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();
            }
        }
コード例 #12
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();
            }
        }
コード例 #13
0
ファイル: Tutorijal.xaml.cs プロジェクト: kacacukurov/HCI
        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();
            }
        }
コード例 #14
0
ファイル: Tutorijal.xaml.cs プロジェクト: kacacukurov/HCI
        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;
                };
            }
        }
コード例 #15
0
ファイル: Tutorijal.xaml.cs プロジェクト: kacacukurov/HCI
        private void finishClick(object sender, RoutedEventArgs e)
        {
            if (izmena)
            {
                izmeniSoftver();
                return;
            }
            if (validacijaNovogSoftvera() && !dodavanjeSoftveraIzborStarogUnosa)
            {
                // pamtimo stanje alikacije pre nego sto uradimo dodavanje novog
                staroStanje = new StanjeAplikacije();
                staroStanje.RacunarskiCentar = DeepClone(racunarskiCentar);
                staroStanje.TipPodataka      = "softver";
                staroStanje.Kolicina         = 1;
                staroStanje.TipPromene       = "brisanje";
                staroStanje.Oznake.Add(oznakaSoftver.Text.Trim());

                noviSoftver.Oznaka       = oznakaSoftver.Text.Trim();
                noviSoftver.Naziv        = nazivSoftver.Text.Trim();
                noviSoftver.Opis         = opisSoftver.Text.Trim();
                noviSoftver.GodIzdavanja = int.Parse(godinaSoftver.Text.Trim());
                noviSoftver.Cena         = double.Parse(cenaSoftver.Text.Trim());
                if ((bool)WindowsOSSoftver.IsChecked)
                {
                    noviSoftver.OperativniSistem = "Windows";
                }
                else if ((bool)LinuxOSSoftver.IsChecked)
                {
                    noviSoftver.OperativniSistem = "Linux";
                }
                else
                {
                    noviSoftver.OperativniSistem = "Windows i Linux";
                }
                noviSoftver.Proizvodjac = proizvodjacSoftver.Text.Trim();
                noviSoftver.Sajt        = sajtSoftver.Text.Trim();

                tabelaSoftvera.Add(noviSoftver);
                racunarskiCentar.DodajSoftver(noviSoftver);
                Application.Current.Dispatcher.Invoke(() =>
                {
                    notifierMainWindow.ShowSuccess("Uspešno ste dodali novi 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();
            }
            else if (dodavanjeSoftveraIzborStarogUnosa)
            {
                // ukoliko postoji softver (logicki neaktivan) sa istom oznakom
                // kao sto je uneta, ponovo aktiviramo taj softver (postaje logicki aktivan)
                tabelaSoftvera.Add(racunarskiCentar.Softveri[oznakaSoftver.Text.Trim()]);
                Application.Current.Dispatcher.Invoke(() =>
                {
                    notifierMainWindow.ShowSuccess("Uspešno ste aktivirali postojeći 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();
            }
        }
コード例 #16
0
        private void finishClick(object sender, RoutedEventArgs e)
        {
            if (validacijaPraznihPolja())
            {
                // pamtimo stanje alikacije pre nego sto uradimo dodavanje novog
                StanjeAplikacije staroStanje = new StanjeAplikacije();
                staroStanje.RacunarskiCentar = DeepClone(racunarskiCentar);
                staroStanje.TipPodataka      = "smer";
                staroStanje.Kolicina         = indeksi.Count;
                staroStanje.TipPromene       = "izmena";
                foreach (int index in indeksi)
                {
                    staroStanje.Oznake.Add(tabelaSmerova[index].Oznaka);
                }

                foreach (int index in indeksi)
                {
                    Smer smerIzmena     = racunarskiCentar.Smerovi[tabelaSmerova[index].Oznaka];
                    bool nazivPromenjen = false;

                    if (NazivSmera.Text.Trim() != "")
                    {
                        smerIzmena.Naziv = NazivSmera.Text.Trim();
                        nazivPromenjen   = true;
                    }
                    if (OpisSmera.Text.Trim() != "")
                    {
                        smerIzmena.Opis = OpisSmera.Text.Trim();
                    }
                    if (DatumUvodjenja.Text.Trim() != "")
                    {
                        smerIzmena.Datum = DateTime.Parse(DatumUvodjenja.Text.Trim()).ToString("dd/MM/yyyy");
                    }

                    if (smerIzmena.Predmeti.Count > 0 && nazivPromenjen)
                    {
                        foreach (string predmet in smerIzmena.Predmeti)
                        {
                            racunarskiCentar.Predmeti[predmet].SmerDetalji = "Oznaka: " + smerIzmena.Oznaka + "\nNaziv: " + smerIzmena.Naziv;
                        }
                    }

                    tabelaSmerova[index] = smerIzmena;
                }

                Application.Current.Dispatcher.Invoke(() =>
                {
                    notifierMainWindow.ShowSuccess("Uspešno ste izmenili smerove!");
                });

                // 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();
            }
        }