CultureQuestORG/SDP2023

View on GitHub
app/src/main/java/ch/epfl/culturequest/ui/quiz/QuizActivity.java

Summary

Maintainability
A
0 mins
Test Coverage
A
94%
package ch.epfl.culturequest.ui.quiz;


import android.os.Bundle;
import android.view.View;

import androidx.appcompat.app.AppCompatActivity;

import java.util.ArrayList;

import ch.epfl.culturequest.R;
import ch.epfl.culturequest.authentication.Authenticator;
import ch.epfl.culturequest.backend.tournament.apis.TournamentManagerApi;
import ch.epfl.culturequest.backend.tournament.tournamentobjects.QuizQuestion;
import ch.epfl.culturequest.backend.tournament.tournamentobjects.Tournament;
import ch.epfl.culturequest.databinding.ActivityQuizBinding;
import ch.epfl.culturequest.utils.AndroidUtils;

public class QuizActivity extends AppCompatActivity {

    private ActivityQuizBinding binding;

    private String uid;
    private Tournament tournament;
    private String artName;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // To make the status bar transparent
        AndroidUtils.removeStatusBar(getWindow());
        // fetch the tournament and artname from the intent
        tournament = TournamentManagerApi.getTournamentFromSharedPref();
        //tournament = getIntent().getStringExtra("tournament");
        artName = getIntent().getStringExtra("artName");
        uid = Authenticator.getCurrentUser().getUid();

        if (artName == null) {
            throw new RuntimeException("Null argument");
        }

        binding = ActivityQuizBinding.inflate(getLayoutInflater());


        QuizViewModel.addQuiz(artName, this, uid);


        setContentView(binding.getRoot());


    }


    public QuizWelcomeFragment welcome() {
        Bundle bundle = basicBundle();
        QuizWelcomeFragment fragment = new QuizWelcomeFragment();
        fragment.setArguments(bundle);
        getSupportFragmentManager().beginTransaction()
                .replace(R.id.nav_host_fragment_activity_quiz, fragment)
                .commit();
        return fragment;
    }


    public QuizQuestionFragment goToQuestion(int questionNumber, QuizQuestion question) {
        Bundle bundle = basicBundle();
        bundle.putInt("questionNumber", questionNumber);
        bundle.putStringArrayList("possibleAnswers", new ArrayList<>(question.getPossibleAnswers()));
        bundle.putString("question", question.getQuestionContent());
        QuizQuestionFragment fragment = new QuizQuestionFragment();
        fragment.setArguments(bundle);
        getSupportFragmentManager().beginTransaction()
                .replace(R.id.nav_host_fragment_activity_quiz, fragment)
                .commit();
        return fragment;
    }

    public QuizInterFragment interQuestion(int score) {
        Bundle bundle = basicBundle();
        bundle.putInt("score", score);
        QuizInterFragment fragment = new QuizInterFragment();
        fragment.setArguments(bundle);
        getSupportFragmentManager().beginTransaction()
                .replace(R.id.nav_host_fragment_activity_quiz, fragment)
                .commit();
        return fragment;
    }

    public QuizGameOverFragment FailQuiz() {
        QuizGameOverFragment fragment = new QuizGameOverFragment();
        getSupportFragmentManager().beginTransaction()
                .replace(R.id.nav_host_fragment_activity_quiz, fragment)
                .commit();
        return fragment;
    }


    private Bundle basicBundle() {
        Bundle bundle = new Bundle();
        bundle.putString("uid", uid);
        // bundle.putString("tournament", tournament);
        bundle.putString("artName", artName);
        return bundle;
    }


    public QuizVictoryFragment endQuiz(int score) {
        Bundle bundle = new Bundle();
        bundle.putInt("score", score);
        QuizVictoryFragment fragment = new QuizVictoryFragment();
        fragment.setArguments(bundle);
        getSupportFragmentManager().beginTransaction()
                .replace(R.id.nav_host_fragment_activity_quiz, fragment)
                .commit();
        return fragment;

    }

    /**
     * Returns to the previous activity
     */
    public void goBack(View view) {
        onBackPressed();
    }
}