diff --git a/KvizClient/build.gradle b/KvizClient/build.gradle index abdaa8e4ac1ea3b27b98e280fc3e3ae82821f171..7eb4161a37e8d3e505fc20b12c80b1faa1e93987 100644 --- a/KvizClient/build.gradle +++ b/KvizClient/build.gradle @@ -7,7 +7,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.1.1' + classpath 'com.android.tools.build:gradle:3.1.2' // NOTE: Do not place your application dependencies here; they belong diff --git a/KvizServer/app/src/main/assets/multiple.txt b/KvizServer/app/src/main/assets/multiple.txt index 5e0e4d92d0509b1dea4d7a9c7a0ba5fc410f33c7..85b863484646406b137cbc4ddbd6e02cbe4a3633 100644 --- a/KvizServer/app/src/main/assets/multiple.txt +++ b/KvizServer/app/src/main/assets/multiple.txt @@ -1,12 +1,12 @@ -egyéb Melyik hónap 31 napos? július február június november disabled -földrajz Mi Olaszország fővárosa? Róma London Berlin Moszkva enabled -földrajz Hány bolygó van a Naprendszerben? 8 enabled -egyéb Melyik nem emlős? szula oroszlán farkas rozmár enabled -egyéb Hogyan írjuk arab számmal az XVII római számot? 17 enabled -földrajz Hány ezer négyzetkilométer Magyarország területe? 93 enabled -földrajz Melyik kontinensen található Peru? Dél-Amerika Észak-Amerika Ázsia Afrika enabled -földrajz Melyik város van legtávolabb Budapesttől? Sydney Makó Jeruzsálem London enabled -egyéb Hány napos hónap a március? 31 enabled -egyéb Melyik nem biztosan trapéz? deltoid paralelogramma négyzet téglalap enabled -földrajz Melyik NEM gázbolygó? Föld Jupiter Uránusz Neptunusz disabled -földrajz Melyik folyó partján fekszik Budapest? Duna Jangce Nílus Szajna enabled +egyéb Melyik hónap 31 napos? július február június november disabled 8 +földrajz Mi Olaszország fővárosa? Róma London Berlin Moszkva enabled 0 +földrajz Hány bolygó van a Naprendszerben? 8 enabled 7 +egyéb Melyik nem emlős? szula oroszlán farkas rozmár enabled 6 +egyéb Hogyan írjuk arab számmal az XVII római számot? 17 enabled 3 +földrajz Hány ezer négyzetkilométer Magyarország területe? 93 enabled 2 +földrajz Melyik kontinensen található Peru? Dél-Amerika Észak-Amerika Ázsia Afrika enabled 0 +földrajz Melyik város van legtávolabb Budapesttől? Sydney Makó Jeruzsálem London enabled 1 +egyéb Hány napos hónap a március? 31 enabled 0 +egyéb Melyik nem biztosan trapéz? deltoid paralelogramma négyzet téglalap enabled 5 +földrajz Melyik NEM gázbolygó? Föld Jupiter Uránusz Neptunusz disabled 4 +földrajz Melyik folyó partján fekszik Budapest? Duna Jangce Nílus Szajna enabled 0 diff --git a/KvizServer/app/src/main/java/onlab/kvizserver/GameActivity.java b/KvizServer/app/src/main/java/onlab/kvizserver/GameActivity.java index 726d6dbcefc2bcbaaf61ff7db29cc3d063d6854b..1826a542aa36a56af3718f3c1afdd50e72a27c2b 100644 --- a/KvizServer/app/src/main/java/onlab/kvizserver/GameActivity.java +++ b/KvizServer/app/src/main/java/onlab/kvizserver/GameActivity.java @@ -1,23 +1,24 @@ package onlab.kvizserver; import android.os.Handler; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentTransaction; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.WindowManager; +import android.widget.Toast; import com.google.gson.Gson; +import com.rustamg.filedialogs.FileDialog; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; -import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; import java.io.IOException; -import java.io.InputStream; import java.io.InputStreamReader; +import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.util.ArrayList; @@ -27,7 +28,7 @@ import onlab.kvizserver.model.PlayerAnswer; import onlab.kvizserver.model.Question; public class GameActivity extends AppCompatActivity implements GameControlFragment.OnFragmentInteractionListener, - QuestionListFragment.OnFragmentInteractionListener { + QuestionListFragment.OnFragmentInteractionListener, FileDialog.OnFileSelectedListener { private Question question = null; private int numberOfPlayers; @@ -238,4 +239,23 @@ public class GameActivity extends AppCompatActivity implements GameControlFragme gameControlFragment.setNextQuestionButtonEnabled(true); } } + + @Override + public void onFileSelected(FileDialog dialog, File file) { + try { + Log.d("SaveFileDialog", file.getCanonicalPath()); + OutputStream outputStream = new FileOutputStream(file); + List<Question> allQuestions = Question.listAll(Question.class); + for (int i = 0; i < allQuestions.size(); i++) { + outputStream.write((allQuestions.get(i).convertToString() + "\t").getBytes()); + } + outputStream.close(); + Toast.makeText(this, "Saved to: " + file.getCanonicalPath(), Toast.LENGTH_LONG).show(); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } diff --git a/KvizServer/app/src/main/java/onlab/kvizserver/QuestionListFragment.java b/KvizServer/app/src/main/java/onlab/kvizserver/QuestionListFragment.java index f0130e06adac8660f91ef344f7f0fd07e03f4c47..0aca790fdd5e01c07a6b53fcf3cdcfb747e35262 100644 --- a/KvizServer/app/src/main/java/onlab/kvizserver/QuestionListFragment.java +++ b/KvizServer/app/src/main/java/onlab/kvizserver/QuestionListFragment.java @@ -10,7 +10,11 @@ import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.Button; +import com.rustamg.filedialogs.SaveFileDialog; +import java.util.Collections; +import java.util.Iterator; import java.util.List; import onlab.kvizserver.model.Question; @@ -50,8 +54,19 @@ public class QuestionListFragment extends Fragment { @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - questions = Question.listAll(Question.class); + initQuestionList(); initRecyclerView(); + + Button exportButton = (Button) getView().findViewById(R.id.ExportButton); + exportButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + SaveFileDialog dialog = new SaveFileDialog(); + dialog.show(getActivity().getSupportFragmentManager(), SaveFileDialog.class.getName()); + } + }); + + Button generateButton = (Button) getView().findViewById(R.id.GenerateButton); } @Override @@ -86,4 +101,21 @@ public class QuestionListFragment extends Fragment { public void selecetedQuestionDisplayed() { adapter.deselectActualQuestion(); } + + private void initQuestionList() { + //kezdetben a teljes kérdésadatbázis + questions = Question.listAll(Question.class); + + //az aktuális kiválasztásban nem szereplő kérdések kidobása + Iterator<Question> it = questions.iterator(); + while( it.hasNext() ) { + Question q = it.next(); + if(q.getCurrentIndex() == 0) + it.remove(); + } + + //kérdések sorbarendezése index alapján + Collections.sort(questions); + } + } diff --git a/KvizServer/app/src/main/java/onlab/kvizserver/model/Question.java b/KvizServer/app/src/main/java/onlab/kvizserver/model/Question.java index 60f102fb6778af50d8e7210d267375d2d202cdf3..9c041b8a49f57d4e62f334fdc78b0a80eea18ad8 100644 --- a/KvizServer/app/src/main/java/onlab/kvizserver/model/Question.java +++ b/KvizServer/app/src/main/java/onlab/kvizserver/model/Question.java @@ -1,12 +1,14 @@ package onlab.kvizserver.model; +import android.support.annotation.NonNull; + import com.orm.SugarRecord; import java.util.ArrayList; import java.util.Collections; import java.util.List; -public class Question extends SugarRecord { +public class Question extends SugarRecord implements Comparable<Question> { private String topic; private String questionText; private String correctAnswer; @@ -14,6 +16,7 @@ public class Question extends SugarRecord { private String wrongAnswer2 = null; private String wrongAnswer3 = null; private boolean enabled; + private int currentIndex; //0, ha nem szerepel az aktuálisan kiválasztott kérdések között public static final int MULTIPLE_CHOICE = 0; public static final int GUESS = 1; @@ -25,16 +28,17 @@ public class Question extends SugarRecord { topic = data[0]; questionText = data[1]; correctAnswer = data[2]; - if (data.length >= 5) { + if (data.length >= 6) { wrongAnswer1 = data[3]; } - if (data.length >= 6) { + if (data.length >= 7) { wrongAnswer2 = data[4]; } - if (data.length >= 7) { + if (data.length >= 8) { wrongAnswer3 = data[5]; } - enabled = data[data.length-1].equals("enabled"); + enabled = data[data.length-2].equals("enabled"); + currentIndex = Integer.parseInt(data[data.length-1]); } public String getQuestionText() { @@ -89,4 +93,27 @@ public class Question extends SugarRecord { } } + public int getCurrentIndex() { + return currentIndex; + } + + @Override + public int compareTo(@NonNull Question question) { + return this.currentIndex - question.currentIndex; + } + + public String convertToString() { + String line = topic + "\t" + questionText + "\t" + correctAnswer; + if (wrongAnswer1 != null) { + line += "\t" + wrongAnswer1; + } + if (wrongAnswer2 != null) { + line += "\t" + wrongAnswer2; + } + if (wrongAnswer3 != null) { + line += "\t" + wrongAnswer3; + } + line += "\t" + (enabled ? "enabled" : "disabled") + "\t" + currentIndex; + return line; + } } diff --git a/KvizServer/app/src/main/res/layout/fragment_question_list.xml b/KvizServer/app/src/main/res/layout/fragment_question_list.xml index 525d344b6c7d91d6bd4170845c242af74b024f90..4551460363c1cccf5d0deaea382549c615af1709 100644 --- a/KvizServer/app/src/main/res/layout/fragment_question_list.xml +++ b/KvizServer/app/src/main/res/layout/fragment_question_list.xml @@ -23,7 +23,6 @@ android:layout_height="wrap_content" android:layout_gravity="center" android:id="@+id/ExportButton" - android:enabled="false" android:text="Export database to file"/> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" diff --git a/KvizServer/build.gradle b/KvizServer/build.gradle index abdaa8e4ac1ea3b27b98e280fc3e3ae82821f171..7eb4161a37e8d3e505fc20b12c80b1faa1e93987 100644 --- a/KvizServer/build.gradle +++ b/KvizServer/build.gradle @@ -7,7 +7,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.1.1' + classpath 'com.android.tools.build:gradle:3.1.2' // NOTE: Do not place your application dependencies here; they belong