From ad0f60b8a69cf1ee80f934db6449c19e67e552c1 Mon Sep 17 00:00:00 2001 From: r0r-5chach Date: Sun, 26 Mar 2023 19:34:34 +0100 Subject: [PATCH] quiz completed --- app/src/main/AndroidManifest.xml | 1 + .../cpsAssist/main/MainActivity.java | 7 +- .../cpsAssist/quiz/BtnOnClickListener.java | 43 +++++++++++ .../cpsAssist/quiz/DialogOnClickListener.java | 36 +++++++++ .../xyz/r0r5chach/cpsAssist/quiz/Quiz.java | 53 +++++++++++++ .../cpsAssist/quiz/QuizActivity.java | 75 ++++++++++++++++++- app/src/main/res/layout/activity_quiz.xml | 13 ++++ app/src/main/res/values/ids.xml | 9 +++ app/src/main/res/values/strings.xml | 6 +- 9 files changed, 240 insertions(+), 3 deletions(-) create mode 100644 app/src/main/java/xyz/r0r5chach/cpsAssist/quiz/BtnOnClickListener.java create mode 100644 app/src/main/java/xyz/r0r5chach/cpsAssist/quiz/DialogOnClickListener.java create mode 100644 app/src/main/java/xyz/r0r5chach/cpsAssist/quiz/Quiz.java create mode 100644 app/src/main/res/layout/activity_quiz.xml create mode 100644 app/src/main/res/values/ids.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 92a7ab2..6a86f08 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -15,6 +15,7 @@ android:exported="false" android:label="@string/title_activity_notes"/> + diff --git a/app/src/main/java/xyz/r0r5chach/cpsAssist/main/MainActivity.java b/app/src/main/java/xyz/r0r5chach/cpsAssist/main/MainActivity.java index 0d761fe..2fe951c 100644 --- a/app/src/main/java/xyz/r0r5chach/cpsAssist/main/MainActivity.java +++ b/app/src/main/java/xyz/r0r5chach/cpsAssist/main/MainActivity.java @@ -13,11 +13,16 @@ public class MainActivity extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setTitle("Home- " + getIntent().getStringExtra("username")); - findViewById(R.id.notes_button).setOnClickListener(new BtnOnClickListener()); + initButtons(); } @Override public void onBackPressed() { finish(); } + + private void initButtons() { + findViewById(R.id.notes_button).setOnClickListener(new BtnOnClickListener()); + findViewById(R.id.quiz_button).setOnClickListener(new BtnOnClickListener()); + } } diff --git a/app/src/main/java/xyz/r0r5chach/cpsAssist/quiz/BtnOnClickListener.java b/app/src/main/java/xyz/r0r5chach/cpsAssist/quiz/BtnOnClickListener.java new file mode 100644 index 0000000..d58accc --- /dev/null +++ b/app/src/main/java/xyz/r0r5chach/cpsAssist/quiz/BtnOnClickListener.java @@ -0,0 +1,43 @@ +package xyz.r0r5chach.cpsAssist.quiz; + +import android.app.Activity; +import android.app.AlertDialog; +import android.view.View; +import android.widget.LinearLayout; +import android.widget.RadioButton; +import android.widget.RadioGroup; + + +import xyz.r0r5chach.cpsAssist.R; + +public class BtnOnClickListener implements View.OnClickListener{ + private final String[] correctAnswers; + + + public BtnOnClickListener(String[] correctAnswers) { + this.correctAnswers = correctAnswers; + } + + @Override + public void onClick(View v) { + LinearLayout l = (LinearLayout) v.getParent(); + RadioGroup[] questions = new RadioGroup[]{l.findViewById(R.id.question1), l.findViewById(R.id.question2), l.findViewById(R.id.question3), l.findViewById(R.id.question4), l.findViewById(R.id.question5)}; + int score = 0; + for (int i = 0; i < questions.length; i++) { + if (questions[i].getCheckedRadioButtonId() == -1) { + continue; + } + RadioButton answer = questions[i].findViewById(questions[i].getCheckedRadioButtonId()); + if (answer.getText().toString().equals(correctAnswers[i])) { + score++; + } + } + + AlertDialog.Builder builder = new AlertDialog.Builder(v.getContext()); + builder.setTitle("Results"); + builder.setMessage(score + "/5"); + builder.setPositiveButton("Save", new DialogOnClickListener(((Activity)v.getContext()).getIntent().getStringExtra("username"), score)); + builder.setNeutralButton("Ok", new DialogOnClickListener()); + builder.create().show(); + } +} diff --git a/app/src/main/java/xyz/r0r5chach/cpsAssist/quiz/DialogOnClickListener.java b/app/src/main/java/xyz/r0r5chach/cpsAssist/quiz/DialogOnClickListener.java new file mode 100644 index 0000000..32b1a46 --- /dev/null +++ b/app/src/main/java/xyz/r0r5chach/cpsAssist/quiz/DialogOnClickListener.java @@ -0,0 +1,36 @@ +package xyz.r0r5chach.cpsAssist.quiz; + +import android.app.AlertDialog; +import android.content.DialogInterface; + +import java.io.File; + +import xyz.r0r5chach.cpsAssist.notes.Notes; + +public class DialogOnClickListener implements DialogInterface.OnClickListener { + private String username; + private int score; + + + public DialogOnClickListener() { + + } + + public DialogOnClickListener(String username, int score) { + this.score = score; + this.username = username; + } + + + @Override + public void onClick(DialogInterface dialog, int which) { + AlertDialog d = (AlertDialog) dialog; + if (which == DialogInterface.BUTTON_POSITIVE) { + Notes notes = new Notes(d.getContext().getExternalFilesDir(null), username); + notes.createNote(); + File note = notes.getNote(notes.getAmount()-1); + notes.updateNote(note, "Quiz Results: " + score + "/5"); + } + d.dismiss(); + } +} diff --git a/app/src/main/java/xyz/r0r5chach/cpsAssist/quiz/Quiz.java b/app/src/main/java/xyz/r0r5chach/cpsAssist/quiz/Quiz.java new file mode 100644 index 0000000..b5c1ed3 --- /dev/null +++ b/app/src/main/java/xyz/r0r5chach/cpsAssist/quiz/Quiz.java @@ -0,0 +1,53 @@ +package xyz.r0r5chach.cpsAssist.quiz; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class Quiz { + private final String[] questions; + + private String[] correctAnswers; + + private final List> answers; + + private final String storedCorrectAnswers; + private final String storedIncorrectAnswers; + + public Quiz(String storedQuestions, String storedCorrectAnswers, String storedIncorrectAnswers) { + questions = parseList(storedQuestions); + answers = new ArrayList<>(); + this.storedCorrectAnswers = storedCorrectAnswers; + this.storedIncorrectAnswers = storedIncorrectAnswers; + parseAnswers(); + + } + + public String[] getCorrectAnswers() { + return correctAnswers; + } + + public String[] getQuestions() { + return questions; + } + + public List> getAnswers() { + return answers; + } + + private void parseAnswers() { + correctAnswers = parseList(storedCorrectAnswers); + String[] incorrectAnswers = parseList(storedIncorrectAnswers); + for (int i = 0; i < incorrectAnswers.length; i++) { + List answers = new ArrayList<>(); + answers.add(correctAnswers[i]); + answers.addAll(Arrays.asList(incorrectAnswers[i].split("%"))); + this.answers.add(answers); + } + } + + + private String[] parseList(String list) { + return list.split("#"); + } +} diff --git a/app/src/main/java/xyz/r0r5chach/cpsAssist/quiz/QuizActivity.java b/app/src/main/java/xyz/r0r5chach/cpsAssist/quiz/QuizActivity.java index 34e25af..50f0b45 100644 --- a/app/src/main/java/xyz/r0r5chach/cpsAssist/quiz/QuizActivity.java +++ b/app/src/main/java/xyz/r0r5chach/cpsAssist/quiz/QuizActivity.java @@ -1,4 +1,77 @@ package xyz.r0r5chach.cpsAssist.quiz; -public class QuizActivity { +import android.os.Bundle; +import android.widget.Button; +import android.widget.LinearLayout; +import android.widget.RadioButton; +import android.widget.RadioGroup; +import android.widget.TextView; + +import androidx.appcompat.app.AppCompatActivity; + + +import java.util.stream.IntStream; + +import xyz.r0r5chach.cpsAssist.R; + +public class QuizActivity extends AppCompatActivity { + private Quiz quiz; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_quiz); + LinearLayout layout = findViewById(R.id.quiz_layout); + quiz = new Quiz(getString(R.string.questions), getString(R.string.correct_answers), getString(R.string.incorrect_answers)); + initQuestions(layout); + initSubmit(layout); + } + + private void initSubmit(LinearLayout l) { + Button button = new Button(this); + button.setText(R.string.submit_button_text); + button.setOnClickListener(new BtnOnClickListener(quiz.getCorrectAnswers())); + l.addView(button); + } + + + private void initQuestions(LinearLayout l) { + IntStream.range(0, quiz.getQuestions().length).forEach(i -> { + RadioGroup questionGroup = new RadioGroup(this); + int id = getId(i); + questionGroup.setId(id); + TextView question = new TextView(this); + question.setText(quiz.getQuestions()[i]); + questionGroup.addView(question); + for (String answer : quiz.getAnswers().get(i)) { + RadioButton answerButton = new RadioButton(this); + answerButton.setText(answer); + questionGroup.addView(answerButton); + } + l.addView(questionGroup); + }); + } + + private int getId(int index) { + int id; + switch(index) { + case 0: + id = R.id.question1; + break; + case 1: + id = R.id.question2; + break; + case 2: + id = R.id.question3; + break; + case 3: + id = R.id.question4; + break; + case 4: + id = R.id.question5; + break; + default: + id = 0; + } + return id; + } } diff --git a/app/src/main/res/layout/activity_quiz.xml b/app/src/main/res/layout/activity_quiz.xml new file mode 100644 index 0000000..bf05f96 --- /dev/null +++ b/app/src/main/res/layout/activity_quiz.xml @@ -0,0 +1,13 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/ids.xml b/app/src/main/res/values/ids.xml new file mode 100644 index 0000000..ce9ea9b --- /dev/null +++ b/app/src/main/res/values/ids.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 81c7102..ab4216c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -5,12 +5,16 @@ Password Login josh#pass%kofi#pass%jaiwin#pass + What is the capital of the UK?#What is the electron count of helium?#What does RAM stand for?#What is the boiling point of water?#When did WWII end? + London#2#Random Access Memory#100 degrees celsius#1945 + New York City%Paris%Madrid#5%6%9%64#Read Admin Memory%Rapid Access Memory#0 degrees celsius%20 degrees celsius#2001%1666%1920 NotesActivity Add Edit Delete - Note + Notes Save Quiz + Submit \ No newline at end of file