Пример #1
0
        void BuildOptionItems()
        {
            // Replace top margin of option items
            SetTopMargin(2, flOptionItems);

            // Shuffle options
            if (!Lesson.DoNotShuffleOptionItems)
            {
                optionItems.Shuffle();
            }

            // Add options to view
            flOptionItems.RemoveAllViews();
            foreach (var item in optionItems)
            {
                // Flag item as an option
                item.IsOption = true;

                // Init container (the additional container is used only to define a padding for IRMGARD.FlowLayout elements)
                var container = CreateContentContainer(Resource.Id.flOptionContainer, CreateConceptView(item));

                // Add drag handler
                container.GetChildAt(0).Touch += ConceptView_Touch_StartDrag;

                // Add view to option items
                flOptionItems.AddView(container);
            }
        }
Пример #2
0
        private void BuildOptions(List <AbcRankOption> currentOptions)
        {
            // Shuffle options
            currentOptions.Shuffle();

            // Add options to view
            flOptions.RemoveAllViews();
            var adapter = new AbcRankAdapter(Activity.BaseContext, 0, currentOptions);

            for (var i = 0; i < currentOptions.Count; i++)
            {
                var view = adapter.GetView(i, null, null);
                var item = currentOptions.ElementAt(i);

                // Play sound if item has a media element that gets touched
                if (item.Media != null)
                {
                    view.Touch += (sender, e) => {
                        SoundPlayer.PlaySound(Activity.BaseContext, item.Media.SoundPath);
                    };
                }

                // Add drag
                view.Touch += (sender, e) => {
                    var data = ClipData.NewPlainText("letter", item.Name);
                    (sender as View).StartDrag(data, new View.DragShadowBuilder(sender as View), null, 0);
                };

                flOptions.AddView(view);
            }
        }
Пример #3
0
        protected override void InitIteration()
        {
            base.InitIteration();

            var currentIteration = GetCurrentIteration <LetterDropIteration>();

            // Randomize font case
            var random   = new Random();
            var fontCase = (Case)(random.Next(2) + 1);

            // Generate Options
            currentIteration.Options = GenerateOptions(currentIteration, 10, fontCase);

            // Generate Task letters
            currentIteration.TaskItems = new List <TaskItem>();
            foreach (var letter in currentIteration.LettersToLearn)
            {
                var taskLetter = new TaskLetter(letter.ToCase(fontCase));
                var taskItem   = new TaskItem(taskLetter, null, true);
                currentIteration.TaskItems.Add(taskItem);
            }

            currentIteration.TaskItems.Shuffle();
            flLetters.RemoveAllViews();

            // Add options to view
            var letterAdapter = new LetterAdapter(Activity.BaseContext, 0, currentIteration.Options);

            for (var i = 0; i < currentIteration.Options.Count; i++)
            {
                // Add letter to view
                var view   = letterAdapter.GetView(i, null, null);
                var letter = currentIteration.Options.ElementAt(i).Letter;

                // Add drag
                view.Touch += (sender, e) => {
                    var data = ClipData.NewPlainText("letter", letter);
                    (sender as View).StartDrag(data, new View.DragShadowBuilder(sender as View), null, 0);
                };

                flLetters.AddView(view);
            }

            // Add task letters to view
            useAlternateView       = currentIteration.TaskItems.Count > 5;
            llTaskItems.Visibility = (useAlternateView) ? ViewStates.Gone : ViewStates.Visible;
            flTaskItems.Visibility = (useAlternateView) ? ViewStates.Visible : ViewStates.Gone;
            BuildTaskLetters(currentIteration.TaskItems);
        }
Пример #4
0
        void BuildOptions(List <LetterBase> options)
        {
            flLetters.RemoveAllViews();
            var adapter = new LetterAdapter(Activity.BaseContext, 0, options);

            for (int i = 0; i < options.Count; i++)
            {
                // Add letter to view
                var view   = adapter.GetView(i, null, null);
                var letter = options.ElementAt(i).Letter;

                view.Touch += (sender, e) => {
                    var data = ClipData.NewPlainText("letter", letter);
                    (sender as View).StartDrag(data, new View.DragShadowBuilder(sender as View), null, 0);
                };

                flLetters.AddView(view);
            }
        }
Пример #5
0
        private void BuildTaskLetters(List <TaskItem> taskItems)
        {
            if (useAlternateView)
            {
                flTaskItems.RemoveAllViews();
                flTaskItems.HorizontalSpacing = (int)(8 * Resources.DisplayMetrics.Density);
            }
            else
            {
                llTaskItems.RemoveAllViews();
            }
            var taskItemAdapter = new TaskItemAdapter(Activity.BaseContext, 0, taskItems);

            for (var i = 0; i < taskItems.Count; i++)
            {
                var view = taskItemAdapter.GetView(i, null, null);

                // Use different text size
                var letter = view.FindViewById <TextView>(Resource.Id.letter);
                letterTextSize = letter.TextSize / Resources.DisplayMetrics.ScaledDensity;

                // Define searched letters as drop zone
                if (taskItems.ElementAt(i).IsSearched)
                {
                    view.Drag += View_Drag;
                }

                // Add letter to view
                if (useAlternateView)
                {
                    var llLayout = view.FindViewById <RelativeLayout>(Resource.Id.llLayout);
                    llLayout.SetMinimumWidth((int)(80 * Resources.DisplayMetrics.Density));
                    flTaskItems.AddView(view);
                }
                else
                {
                    llTaskItems.AddView(view);
                }
            }
        }
Пример #6
0
        protected override void InitIteration()
        {
            base.InitIteration();

            var currentIteration = GetCurrentIteration <FindMissingLetterIteration>();

            // Set random font case for whole iteration
            fontCase = Case.Lower;
            if (currentIteration.RandomizeCase)
            {
                var random = new Random();
                fontCase = (Case)(random.Next(2) + 1);
            }

            // Create task letters
            ResetCorrectTaskLetter(currentIteration.TaskItems);
            BuildTaskLetters(currentIteration.TaskItems, fontCase);

            // Generate options
            currentIteration.Options = GenerateOptions(currentIteration, 10, fontCase);

            flLetters.RemoveAllViews();
            var letterAdapter = new LetterAdapter(Activity.BaseContext, 0, currentIteration.Options.Cast <LetterBase>().ToList());

            for (var i = 0; i < currentIteration.Options.Count; i++)
            {
                // Add letter to view
                var view   = letterAdapter.GetView(i, null, null);
                var letter = currentIteration.Options.ElementAt(i).Letter;

                // Add drag
                view.Touch += (sender, e) => {
                    var data = ClipData.NewPlainText("letter", letter);
                    (sender as View).StartDrag(data, new View.DragShadowBuilder(sender as View), null, 0);
                };

                flLetters.AddView(view);
            }
        }