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