Пример #1
0
        public TipView()
        {
            var zajednickiElementi = new ZajednickiElementiAplikacije();

            BindingContext = new TipViewModel();

            Title = "Tip vježbe";

            var pitanjaButton = zajednickiElementi.PrimarniNavigacijskiButton("Generator pitanja");

            pitanjaButton.SetBinding(Button.CommandProperty, nameof(TipViewModel.PitanjeCommand));

            var korakButton = zajednickiElementi.PrimarniNavigacijskiButton("Korak po korak");

            korakButton.SetBinding(Button.CommandProperty, nameof(TipViewModel.KorakCommand));

            Content = new StackLayout
            {
                Children =
                {
                    pitanjaButton,
                    korakButton
                }

                ,
                Margin = new Thickness(0, 10, 0, 0)
            };
        }
Пример #2
0
        public TemeView()
        {
            var zajednickiElementi = new ZajednickiElementiAplikacije();

            BindingContext = new TemeViewModel();

            Title = "Grane fizike";

            var temaKinematikaButton = zajednickiElementi.PrimarniNavigacijskiButton(kinematika);

            temaKinematikaButton.SetBinding(Button.CommandProperty, nameof(TemeViewModel.OdabirGraneFizikeCommand));

            var temaDinamikaButton = zajednickiElementi.PrimarniNavigacijskiButton(dinamika);

            temaDinamikaButton.SetBinding(Button.CommandProperty, nameof(TemeViewModel.OdabirGraneFizikeCommand));

            Content = new StackLayout
            {
                Children =
                {
                    temaKinematikaButton,
                    temaDinamikaButton
                },
                Margin = new Thickness(0, 10, 0, 0)
            };
        }
Пример #3
0
        public PrikazRjesenjaView(string param, ArrayList odgovorArray, string imageSource)
        {
            BindingContext = new PrikazRjesenjaViewModel(odgovorArray, imageSource);
            Title          = param;

            var zajednickiElementi = new ZajednickiElementiAplikacije();

            var collectionViweFormula = new CollectionView
            {
                ItemTemplate = new ImageFromulaTemplate()
            };

            collectionViweFormula.SetBinding(ItemsView.ItemsSourceProperty, nameof(PrikazRjesenjaViewModel.FormulaCollection));

            var collectionViewOdgovor = new CollectionView
            {
                ItemTemplate = new LableOdgovorTemplate(),
                VerticalScrollBarVisibility = ScrollBarVisibility.Always
            };

            collectionViewOdgovor.SetBinding(ItemsView.ItemsSourceProperty, nameof(PrikazRjesenjaViewModel.OdgovorCollection));

            var backButton = zajednickiElementi.BackNavigationButton("Nazad");

            backButton.SetBinding(Button.CommandProperty, nameof(PrikazRjesenjaViewModel.NazadCommand));

            var grid = new Grid
            {
                ColumnDefinitions =
                {
                    new ColumnDefinition {
                        Width = new GridLength(1, GridUnitType.Star)
                    },
                },

                RowDefinitions =
                {
                    new RowDefinition {
                        Height = new GridLength(110, GridUnitType.Absolute)
                    },
                    new RowDefinition {
                        Height = new GridLength(0.5, GridUnitType.Star)
                    },
                    new RowDefinition {
                        Height = new GridLength(90, GridUnitType.Absolute)
                    }
                }
            };

            grid.Children.Add(collectionViweFormula, 0, 0);

            grid.Children.Add(collectionViewOdgovor, 0, 1);

            grid.Children.Add(backButton, 0, 2);

            Content = grid;
        }
Пример #4
0
        public App()
        {
            var zajednickiElementi = new ZajednickiElementiAplikacije();

            InitializeComponent();

            MainPage = new NavigationPage(new TipView())
            {
                BarBackgroundColor = zajednickiElementi.NavigacijaDrugaBoja,
                BarTextColor       = Color.Black,
                BackgroundColor    = zajednickiElementi.GridBackColor,
            };
        }
Пример #5
0
        public KorakFormuleView(string title)
        {
            var zajednickiElementi = new ZajednickiElementiAplikacije();

            BindingContext = new KorakFormuleViewModel();

            Title = title;

            var mjerneJedinice = new Button
            {
                Text = "Odaberi mjerne jedinici"
            };

            mjerneJedinice.Clicked += async(sender, args) =>
            {
                mjerneJedinice.CommandParameter = await DisplayActionSheet("Odaber mjernu jedinicu", "Cancel", null, "m, s", "km, h");
            };
            mjerneJedinice.SetBinding(Button.CommandParameterProperty, nameof(KorakFormuleViewModel.MjernaJedinica), BindingMode.OneWayToSource);

            var brzinaButton = zajednickiElementi.FormulaNavButton("Vst");

            brzinaButton.SetBinding(Button.CommandProperty, nameof(KorakFormuleViewModel.KalkulatorButtonCommand));

            var vrijemeButton = zajednickiElementi.FormulaNavButton("Tsv");

            vrijemeButton.SetBinding(Button.CommandProperty, nameof(KorakFormuleViewModel.KalkulatorButtonCommand));

            var putButton = zajednickiElementi.FormulaNavButton("Svt");

            putButton.SetBinding(Button.CommandProperty, nameof(KorakFormuleViewModel.KalkulatorButtonCommand));

            Content = new StackLayout
            {
                Children =
                {
                    mjerneJedinice,
                    brzinaButton,
                    vrijemeButton,
                    putButton
                },
                Margin = new Thickness(0, 10, 0, 0)
            };
        }
Пример #6
0
        public KorakView()
        {
            var zajednickiElementi = new ZajednickiElementiAplikacije();

            BindingContext = new KorakViewModel();

            Title = "Korak po korak";

            var kinematikaButton = zajednickiElementi.PrimarniNavigacijskiButton("Kinematika");

            kinematikaButton.SetBinding(Button.CommandProperty, nameof(KorakViewModel.KinematikaCommand));

            Content = new StackLayout
            {
                Children =
                {
                    kinematikaButton
                },
                Margin = new Thickness(0, 10, 0, 0)
            };
        }
Пример #7
0
            private static StackLayout LoadTemplate()
            {
                var zajednickiElementi = new ZajednickiElementiAplikacije();
                var textLable          = new Label
                {
                    FontSize = 18,
                };

                textLable.SetBinding(Label.TextProperty, nameof(PitanjeModel.MJRješenje));

                var frame = new Frame
                {
                    VerticalOptions = LayoutOptions.Center,
                    Content         = textLable,
                    BackgroundColor = zajednickiElementi.PrimarnaBoja,
                };

                return(new StackLayout
                {
                    Children = { frame },
                    Padding = new Thickness(20, 10)
                });
            }
Пример #8
0
        public PitanjeView(string nazivGraneNavigacija)
        {
            // Instanciranje klase zajednicki elementi aplikacije koja sadrži unificirani gumb
            var zajednickiElementi = new ZajednickiElementiAplikacije();

            // Veza sa view modelom koji je potereban jer view model odrađuje poslovnu logiku aplikacije
            BindingContext = new PitanjeViewModel(nazivGraneNavigacija);

            // Naziv stranice koji se prikazuje u navigacijskom elenentu stranice.
            // Naziv dolazi vezan za command property guba sa prijašnjeg view-a u ovom slučaju temaView

            Title = nazivGraneNavigacija;

            var item = new ToolbarItem
            {
                Text = "Napredak",
            };

            this.ToolbarItems.Add(item);
            item.SetBinding(ToolbarItem.CommandProperty, nameof(PitanjeViewModel.NapredakCommand));

            // Kolekcija koja može biti i samo label jer sadrži vrijednost string pitanja koje se postavlja korsniku
            // Vezan je za ViewModel vrijednost pitanje kolekcija koji sadrži string i koji se vraća u view za prikaz korisniku
            var collectionViewPitanje = new CollectionView
            {
                ItemTemplate = new LablePitanjeTemplate()
            };

            collectionViewPitanje.SetBinding(ItemsView.ItemsSourceProperty, nameof(PitanjeViewModel.PitanjeCollection));

            // Entry polje (bolje poznato kao input korisnik unosi vrijednost riješenja formule koju je napravio na "papiru"
            // Entry je vezan za property OdgovorKorisnika u ViewModelu koji se ažurira u stvarno vremenu automatski
            // Entry polje se ne prikazuje priliku instanciranja Pregleda, postaje vidljivo tek kad se generira prvo pitanje
            var unosOdgovora = new Entry
            {
                Placeholder     = "Unesi odgovor",
                BackgroundColor = Color.White,
                Margin          = new Thickness(20, 10),
                Keyboard        = Keyboard.Numeric
            };

            unosOdgovora.SetBinding(Entry.TextProperty, nameof(PitanjeViewModel.OdgovorKorisnika));
            unosOdgovora.SetBinding(IsVisibleProperty, nameof(PitanjeViewModel.IsVisible));


            var collectionViewMjernaJedinica = new CollectionView
            {
                ItemTemplate = new LableMjernaJedinicaTemplate()
            };

            collectionViewMjernaJedinica.SetBinding(ItemsView.ItemsSourceProperty, nameof(PitanjeViewModel.MjernaJedinicaOdgovoraCollection));

            var obavjestNakonOdgovora = new CollectionView
            {
                ItemTemplate = new LableObavjestOdgvorTemplate()
            };

            obavjestNakonOdgovora.SetBinding(ItemsView.ItemsSourceProperty, nameof(PitanjeViewModel.ObavijestKorisnikuCollection));


            var collectionViewOdgovor = new CollectionView
            {
                ItemTemplate = new LableOdgovorTemplate()
            };

            collectionViewOdgovor.SetBinding(ItemsView.ItemsSourceProperty, nameof(PitanjeViewModel.OdgovorCollection));

            // Button za generiranje novog pitanja
            // Vezano je na ViewModel na ICommand GenerirajPitanjeCommand
            // Pošto je to button koji korisiti primarne boje instancira se iz zajedničkih elemenata
            // Sam gumb je preopterečena metoda za izradu novog gumba jer naziv gumba i commandProperty nisu ista vrijednost
            var generirajPitanjeButton = zajednickiElementi.OtherButton(novoPitanje, nazivGraneNavigacija);

            generirajPitanjeButton.SetBinding(Button.CommandProperty, nameof(PitanjeViewModel.GenerirajPitanjeCommand));

            // Button koji će prikazati korisniku odogovor nakon što je unešeno riješenje i provjereno
            // Pošto je to jedini gumb ovih vrijednosti onda ga ne generiramo iz zajedničkih elelemnata
            // Ali pošto koristi boje aplikacije da bi se održala uniformiranost boju vuče iz zajedničkih elemenata
            // Gumb nije vidljiv dok se ne unese riješenje
            var prikaziOdgovorButton = zajednickiElementi.OtherButton(prikaziRiješenjeButton, prikaziRješenjeNaziv);

            prikaziOdgovorButton.BackgroundColor = zajednickiElementi.NavigacijaDrugaBoja;
            prikaziOdgovorButton.SetBinding(Button.CommandProperty, nameof(PitanjeViewModel.PrikaziOdgovorCommand));
            prikaziOdgovorButton.SetBinding(IsEnabledProperty, nameof(PitanjeViewModel.IsEnabledRiješenje));

            // Gumb koji korsnik uspoređuje svoje rješenje jednadžbe s rješenjem aplikacije
            var provjeriOdgovorButton = zajednickiElementi.OtherButton("Provjeri rješenje");

            provjeriOdgovorButton.BackgroundColor = zajednickiElementi.BackColorGreen;
            provjeriOdgovorButton.SetBinding(Button.CommandProperty, nameof(PitanjeViewModel.ProvjeriOdgovorCommand));
            provjeriOdgovorButton.SetBinding(IsEnabledProperty, nameof(PitanjeViewModel.IsEnabledProvjeriOdgovor));


            // Generiranje mreže koja će držati elemente aplikacije u pregledu za korisnika
            // Mreža ima dvije kolone i 4 reda
            var grid = new Grid
            {
                Margin = new Thickness(10, 10),

                ColumnDefinitions =
                {
                    new ColumnDefinition {
                        Width = new GridLength(1, GridUnitType.Star)
                    },
                    new ColumnDefinition {
                        Width = new GridLength(1, GridUnitType.Star)
                    }
                },

                RowDefinitions =
                {
                    new RowDefinition {
                        Height = new GridLength(0.5, GridUnitType.Star)
                    },
                    new RowDefinition {
                        Height = new GridLength(0.5, GridUnitType.Auto)
                    },
                    new RowDefinition {
                        Height = new GridLength(90, GridUnitType.Absolute)
                    },
                    new RowDefinition {
                        Height = new GridLength(90, GridUnitType.Absolute)
                    },
                    new RowDefinition {
                        Height = new GridLength(70, GridUnitType.Absolute)
                    },
                    new RowDefinition {
                        Height = new GridLength(70, GridUnitType.Absolute)
                    }
                }
            };

            // Dodavanje elementa na sam pregled neki elementi se protežu preko cijelog reda dok drugi zauzimaju jednu od kolona
            grid.Children.Add(collectionViewPitanje, 0, 0);
            Grid.SetColumnSpan(collectionViewPitanje, 2);

            //grid.Children.Add(collectionViewOdgovor, 0, 1);

            grid.Children.Add(unosOdgovora, 0, 1);
            Grid.SetColumnSpan(unosOdgovora, 2);

            grid.Children.Add(collectionViewMjernaJedinica, 0, 2);
            Grid.SetColumnSpan(collectionViewMjernaJedinica, 2);

            grid.Children.Add(obavjestNakonOdgovora, 0, 3);
            Grid.SetColumnSpan(obavjestNakonOdgovora, 2);

            grid.Children.Add(prikaziOdgovorButton, 0, 4);
            Grid.SetColumnSpan(prikaziOdgovorButton, 1);

            grid.Children.Add(provjeriOdgovorButton, 1, 4);
            Grid.SetColumnSpan(provjeriOdgovorButton, 1);

            grid.Children.Add(generirajPitanjeButton, 0, 5);
            Grid.SetColumnSpan(generirajPitanjeButton, 2);

            Content = grid;
        }