Adapted all Modules to work with a global actual course. It is
functional, however, initial states should be revised and better defined. The appearance should be also improved. git-svn-id: https://forja.rediris.es/svn/cusl6-swadroid/trunk@276 5bc14d19-1e4b-4ba2-aa50-860af135f48c
This commit is contained in:
parent
e6621d23b5
commit
9d58178baa
|
@ -5,11 +5,17 @@
|
|||
android:layout_height="match_parent"
|
||||
android:background="@color/background">
|
||||
<include layout="@layout/action_bar"/>
|
||||
|
||||
<Spinner
|
||||
android:id="@+id/spinner"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:prompt="@string/selectCourseTitle"
|
||||
/>
|
||||
<ExpandableListView
|
||||
android:id="@+id/android:list"
|
||||
android:cacheColorHint="@color/background"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
</ExpandableListView>
|
||||
|
||||
</LinearLayout>
|
|
@ -27,7 +27,7 @@ public class Global {
|
|||
/**
|
||||
* SWAD application key
|
||||
*/
|
||||
private static final String AppKey = "";
|
||||
private static final String AppKey = "HTC-Desire";
|
||||
/**
|
||||
* Server URL
|
||||
*/
|
||||
|
@ -40,6 +40,11 @@ public class Global {
|
|||
* Time of application's last login
|
||||
*/
|
||||
private static long lastLoginTime;
|
||||
|
||||
/**
|
||||
* Code of the chosen course. All next actions are referred to this course.
|
||||
*/
|
||||
private static long selectedCourseCode = -1;
|
||||
/**
|
||||
* Time to force relogin
|
||||
*/
|
||||
|
@ -200,4 +205,18 @@ public class Global {
|
|||
public static String parseBoolString(boolean b) {
|
||||
return b ? "Y" : "N";
|
||||
}
|
||||
/**
|
||||
* Gets code of actual course
|
||||
* return -1 if no course chosen; code of actual course in other case
|
||||
* */
|
||||
public static long getSelectedCourseCode(){
|
||||
return selectedCourseCode;
|
||||
}
|
||||
/**
|
||||
* Sets code of actual course
|
||||
* @param courseCode. Code of the chosen course. It should be courseCode>0. Otherwise nothing will change
|
||||
* */
|
||||
public static void setSelectedCourseCode(long actualCourseCode){
|
||||
if(actualCourseCode >0) selectedCourseCode = actualCourseCode;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,19 +19,29 @@
|
|||
|
||||
package es.ugr.swad.swadroid;
|
||||
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.database.Cursor;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.AdapterView.OnItemSelectedListener;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.ExpandableListView;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.SimpleCursorAdapter;
|
||||
import android.widget.Spinner;
|
||||
import android.widget.TextView;
|
||||
import es.ugr.swad.swadroid.model.Course;
|
||||
import es.ugr.swad.swadroid.model.DataBaseHelper;
|
||||
import es.ugr.swad.swadroid.model.Model;
|
||||
import es.ugr.swad.swadroid.modules.Messages;
|
||||
import es.ugr.swad.swadroid.modules.notifications.Notifications;
|
||||
import es.ugr.swad.swadroid.modules.tests.Tests;
|
||||
|
@ -55,6 +65,18 @@ public class SWADMain extends MenuExpandableListActivity {
|
|||
* Function text field
|
||||
*/
|
||||
final String IMAGE = "listIcon";
|
||||
/**
|
||||
* Code of selected course
|
||||
* */
|
||||
long courseCode;
|
||||
/**
|
||||
* Cursor for database access
|
||||
*/
|
||||
private Cursor dbCursor;
|
||||
/**
|
||||
* User courses list
|
||||
*/
|
||||
private List<Model>listCourses;
|
||||
|
||||
/**
|
||||
* Gets the database helper
|
||||
|
@ -139,7 +161,7 @@ public class SWADMain extends MenuExpandableListActivity {
|
|||
/**
|
||||
* Create main menu with an expandable list
|
||||
*/
|
||||
private void createMainMenu()
|
||||
private void createTeacherMenu()
|
||||
{
|
||||
//Construct Expandable List
|
||||
final ArrayList<HashMap<String, Object>> headerData = new ArrayList<HashMap<String, Object>>();
|
||||
|
@ -198,6 +220,63 @@ public class SWADMain extends MenuExpandableListActivity {
|
|||
|
||||
getExpandableListView().setOnChildClickListener(this);
|
||||
}
|
||||
/**
|
||||
* Create main menu with an expandable list
|
||||
*/
|
||||
private void createStudentMenu()
|
||||
{
|
||||
//Construct Expandable List
|
||||
final ArrayList<HashMap<String, Object>> headerData = new ArrayList<HashMap<String, Object>>();
|
||||
|
||||
final HashMap<String, Object> messages = new HashMap<String, Object>();
|
||||
messages.put(NAME, getString(R.string.messages));
|
||||
messages.put(IMAGE, getResources().getDrawable(R.drawable.msg));
|
||||
headerData.add( messages );
|
||||
|
||||
final HashMap<String, Object> evaluation = new HashMap<String, Object>();
|
||||
evaluation.put(NAME, getString(R.string.evaluation));
|
||||
evaluation.put(IMAGE, getResources().getDrawable(R.drawable.grades));
|
||||
headerData.add( evaluation);
|
||||
|
||||
final ArrayList<ArrayList<HashMap<String, Object>>> childData = new ArrayList<ArrayList<HashMap<String, Object>>>();
|
||||
|
||||
final ArrayList<HashMap<String, Object>> messagesData = new ArrayList<HashMap<String, Object>>();
|
||||
childData.add(messagesData);
|
||||
|
||||
final ArrayList<HashMap<String, Object>> evaluationData = new ArrayList<HashMap<String, Object>>();
|
||||
childData.add(evaluationData);
|
||||
|
||||
//Messages category
|
||||
HashMap<String, Object> map = new HashMap<String,Object>();
|
||||
map.put(NAME, getString(R.string.notificationsModuleLabel) );
|
||||
map.put(IMAGE, getResources().getDrawable(R.drawable.notif));
|
||||
messagesData.add(map);
|
||||
|
||||
map = new HashMap<String,Object>();
|
||||
map.put(NAME, getString(R.string.messagesModuleLabel) );
|
||||
map.put(IMAGE, getResources().getDrawable(R.drawable.msg));
|
||||
messagesData.add(map);
|
||||
|
||||
//Evaluation category
|
||||
map = new HashMap<String,Object>();
|
||||
map.put(NAME, getString(R.string.testsModuleLabel) );
|
||||
map.put(IMAGE, getResources().getDrawable(R.drawable.test));
|
||||
evaluationData.add(map);
|
||||
|
||||
setListAdapter( new ImageExpandableListAdapter(
|
||||
this,
|
||||
headerData,
|
||||
R.layout.image_list_item,
|
||||
new String[] { NAME }, // the name of the field data
|
||||
new int[] { R.id.listText }, // the text field to populate with the field data
|
||||
childData,
|
||||
0,
|
||||
null,
|
||||
new int[] {}
|
||||
));
|
||||
|
||||
getExpandableListView().setOnChildClickListener(this);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see android.app.Activity#onCreate()
|
||||
|
@ -217,8 +296,22 @@ public class SWADMain extends MenuExpandableListActivity {
|
|||
|
||||
text = (TextView)this.findViewById(R.id.moduleName);
|
||||
text.setText(R.string.app_name);
|
||||
|
||||
Spinner spinner = (Spinner) this.findViewById(R.id.spinner);
|
||||
listCourses = dbHelper.getAllRows(Global.DB_TABLE_COURSES,"","name");
|
||||
dbCursor = dbHelper.getDb().getCursor(Global.DB_TABLE_COURSES,"","name");
|
||||
// if(dbCursor.getCount()==0)
|
||||
|
||||
SimpleCursorAdapter adapter = new SimpleCursorAdapter (this,
|
||||
android.R.layout.simple_spinner_item,
|
||||
dbCursor,
|
||||
new String[]{"name"},
|
||||
new int[]{android.R.id.text1},0);
|
||||
|
||||
createMainMenu();
|
||||
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||
spinner.setAdapter(adapter);
|
||||
spinner.setOnItemSelectedListener(new onItemSelectedListener());
|
||||
//createMainMenu();
|
||||
|
||||
try {
|
||||
//Initialize database
|
||||
|
@ -255,4 +348,25 @@ public class SWADMain extends MenuExpandableListActivity {
|
|||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private class onItemSelectedListener implements OnItemSelectedListener{
|
||||
|
||||
@Override
|
||||
public void onItemSelected(AdapterView<?> parent, View view, int position,
|
||||
long id) {
|
||||
Course courseSelected = (Course)listCourses.get(position);
|
||||
courseCode = courseSelected.getId();
|
||||
Global.setSelectedCourseCode(courseCode);
|
||||
int userRole = courseSelected.getUserRole();
|
||||
if(userRole == 3) createTeacherMenu();
|
||||
if(userRole == 2) createStudentMenu();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNothingSelected(AdapterView<?> arg0) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -110,14 +110,12 @@ public class Login extends Module {
|
|||
md.update(prefs.getUserPassword().getBytes());
|
||||
userPassword = new String(Base64.encodeBytes(md.digest()));
|
||||
userPassword = userPassword.replace('+','-').replace('/','_').replace('=', ' ').replaceAll("\\s+", "").trim();
|
||||
Log.i("Login", "pre send login");
|
||||
//Creates webservice request, adds required params and sends request to webservice
|
||||
createRequest();
|
||||
addParam("userID", prefs.getUserID());
|
||||
addParam("userPassword", userPassword);
|
||||
addParam("appKey", Global.getAppKey());
|
||||
sendRequest(User.class, true);
|
||||
Log.i("Login", "sended login");
|
||||
if (result != null) {
|
||||
SoapObject soap = (SoapObject) result;
|
||||
|
||||
|
|
|
@ -412,6 +412,7 @@ public abstract class Module extends MenuActivity {
|
|||
* Use of KeepAliveHttpsTransport deals with the problems with the Android ssl libraries having trouble
|
||||
* with certificates and certificate authorities somehow messing up connecting/needing reconnects.
|
||||
*/
|
||||
String u =prefs.getServer();
|
||||
URL = prefs.getServer();
|
||||
connection = new KeepAliveHttpsTransportSE(URL, 443, "", TIMEOUT);
|
||||
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
|
||||
|
|
|
@ -25,8 +25,6 @@ import java.util.List;
|
|||
import org.ksoap2.SoapFault;
|
||||
import org.xmlpull.v1.XmlPullParserException;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.app.Dialog;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
|
@ -42,7 +40,6 @@ import android.widget.Toast;
|
|||
import es.ugr.swad.swadroid.Global;
|
||||
import es.ugr.swad.swadroid.Preferences;
|
||||
import es.ugr.swad.swadroid.R;
|
||||
import es.ugr.swad.swadroid.model.Course;
|
||||
import es.ugr.swad.swadroid.model.Model;
|
||||
import es.ugr.swad.swadroid.model.User;
|
||||
|
||||
|
@ -55,10 +52,7 @@ public class Notices extends Module {
|
|||
* Messages tag name for Logcat
|
||||
*/
|
||||
public static final String TAG = Global.APP_TAG + " Notice";
|
||||
/**
|
||||
* Course code
|
||||
*/
|
||||
private Long courseCode;
|
||||
|
||||
/**
|
||||
* Notice's body
|
||||
*/
|
||||
|
@ -70,15 +64,6 @@ public class Notices extends Module {
|
|||
*/
|
||||
protected static Preferences prefs = new Preferences();
|
||||
|
||||
/**
|
||||
* Cursor for database access
|
||||
*/
|
||||
private Cursor dbCursor;
|
||||
|
||||
/**
|
||||
* User courses list
|
||||
*/
|
||||
private List<Model>listCourses;
|
||||
/**
|
||||
* Selected course code
|
||||
*/
|
||||
|
@ -120,11 +105,7 @@ public class Notices extends Module {
|
|||
noticeDialog = new Dialog(this);
|
||||
Button acceptButton, cancelButton;
|
||||
|
||||
//Course selectedCourse = (Course)listCourses.get(selectedCourseCode);
|
||||
//String selectedCourseName = selectedCourse.getName();
|
||||
|
||||
noticeDialog.setTitle(R.string.noticesModuleLabel);
|
||||
//TODO noticeDialog.setTitle(R.string.noticeModuleLabel + listCourses.get(selectedCourseCode));
|
||||
noticeDialog.setContentView(R.layout.notice_dialog);
|
||||
noticeDialog.setCancelable(true);
|
||||
|
||||
|
@ -198,7 +179,7 @@ public class Notices extends Module {
|
|||
@Override
|
||||
protected void onPause() {
|
||||
super.onPause();
|
||||
//noticeDialog.dismiss();
|
||||
noticeDialog.dismiss();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -207,91 +188,11 @@ public class Notices extends Module {
|
|||
|
||||
super.onStart();
|
||||
prefs.getPreferences(getBaseContext());
|
||||
activity = new Intent(getBaseContext(), Courses.class );
|
||||
Toast.makeText(getBaseContext(), R.string.coursesProgressDescription, Toast.LENGTH_LONG).show();
|
||||
startActivityForResult(activity,Global.COURSES_REQUEST_CODE);
|
||||
selectedCourseCode = Global.getSelectedCourseCode();
|
||||
launchNoticeDialog();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
int lastCourseSelected;
|
||||
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
if(resultCode == Activity.RESULT_OK){
|
||||
switch(requestCode){
|
||||
//After get the list of courses, a dialog is launched to choice the course
|
||||
case Global.COURSES_REQUEST_CODE:
|
||||
final AlertDialog.Builder coursesDialog = new AlertDialog.Builder(this);
|
||||
|
||||
dbCursor = dbHelper.getDb().getCursor(Global.DB_TABLE_COURSES, "userRole>=3", "name");
|
||||
listCourses = dbHelper.getAllRows(Global.DB_TABLE_COURSES, "userRole>=3", "name");
|
||||
lastCourseSelected = prefs.getLastCourseSelected();
|
||||
coursesDialog.setSingleChoiceItems(dbCursor, lastCourseSelected, "name", new DialogInterface.OnClickListener() {
|
||||
|
||||
public void onClick(DialogInterface dialog, int whichButton) {
|
||||
Course c = (Course) listCourses.get(whichButton);
|
||||
selectedCourseCode = c.getId();
|
||||
prefs.setLastCourseSelected(whichButton);
|
||||
|
||||
if(isDebuggable){
|
||||
Integer s = whichButton;
|
||||
Log.i(TAG, "singleChoice = " + s.toString());
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
coursesDialog.setTitle(R.string.selectCourseTitle);
|
||||
coursesDialog.setPositiveButton(R.string.acceptMsg, new DialogInterface.OnClickListener() {
|
||||
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
try {
|
||||
if(selectedCourseCode == 0) {
|
||||
Course c = (Course) listCourses.get(prefs.getLastCourseSelected());
|
||||
selectedCourseCode = c.getId();
|
||||
}
|
||||
|
||||
if(isDebuggable) {
|
||||
Log.i(TAG, "selectedCourseCode = " + Long.toString(selectedCourseCode));
|
||||
}
|
||||
dialog.dismiss();
|
||||
launchNoticeDialog();
|
||||
} catch (Exception ex) {
|
||||
String errorMsg = getString(R.string.errorServerResponseMsg);
|
||||
error(errorMsg);
|
||||
|
||||
if(isDebuggable) {
|
||||
Log.e(ex.getClass().getSimpleName(), errorMsg);
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
coursesDialog.setNegativeButton(R.string.cancelMsg, new DialogInterface.OnClickListener() {
|
||||
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
dialog.cancel();
|
||||
setResult(RESULT_CANCELED);
|
||||
finish();
|
||||
}
|
||||
});
|
||||
coursesDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
|
||||
|
||||
public void onCancel(DialogInterface dialog) {
|
||||
//dialog.cancel();
|
||||
setResult(RESULT_CANCELED);
|
||||
finish();
|
||||
|
||||
}
|
||||
});
|
||||
coursesDialog.show();
|
||||
break;
|
||||
}
|
||||
|
||||
} else {
|
||||
setResult(RESULT_CANCELED);
|
||||
finish();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onError() {
|
||||
// TODO Auto-generated method stub
|
||||
|
|
|
@ -50,18 +50,6 @@ import es.ugr.swad.swadroid.modules.Module;
|
|||
* @author Juan Miguel Boyero Corral <juanmi1982@gmail.com>
|
||||
*/
|
||||
public class TestsConfigDownload extends Module {
|
||||
/**
|
||||
* Cursor for database access
|
||||
*/
|
||||
private Cursor dbCursor;
|
||||
/**
|
||||
* User courses list
|
||||
*/
|
||||
private List<Model>listCourses;
|
||||
/**
|
||||
* Selected course code
|
||||
*/
|
||||
private long selectedCourseCode = 0;
|
||||
/**
|
||||
* Flag for detect if the teacher allows questions download
|
||||
*/
|
||||
|
@ -93,88 +81,27 @@ public class TestsConfigDownload extends Module {
|
|||
*/
|
||||
@Override
|
||||
protected void onStart() {
|
||||
Intent activity;
|
||||
|
||||
super.onStart();
|
||||
prefs.getPreferences(getBaseContext());
|
||||
activity = new Intent(getBaseContext(), Courses.class);
|
||||
Toast.makeText(getBaseContext(), R.string.coursesProgressDescription, Toast.LENGTH_LONG).show();
|
||||
startActivityForResult(activity, Global.COURSES_REQUEST_CODE);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see es.ugr.swad.swadroid.modules.Module#onActivityResult(int, int, android.content.Intent)
|
||||
*/
|
||||
@Override
|
||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
int lastCourseSelected;
|
||||
OnClickListener singleChoiceItemsClickListener = new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int whichButton) {
|
||||
Course c = (Course) listCourses.get(whichButton);
|
||||
selectedCourseCode = c.getId();
|
||||
prefs.setLastCourseSelected(whichButton);
|
||||
|
||||
if(isDebuggable) {
|
||||
Integer s = whichButton;
|
||||
Log.d(TAG, "singleChoice = " + s.toString());
|
||||
}
|
||||
}
|
||||
};
|
||||
OnClickListener positiveClickListener = new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int whichButton) {
|
||||
try {
|
||||
if(selectedCourseCode == 0) {
|
||||
//Toast.makeText(getBaseContext(), R.string.noCourseSelectedMsg, Toast.LENGTH_LONG).show();
|
||||
Course c = (Course) listCourses.get(0);
|
||||
selectedCourseCode = c.getId();
|
||||
}
|
||||
|
||||
if(isDebuggable) {
|
||||
Log.d(TAG, "selectedCourseCode = " + Long.toString(selectedCourseCode));
|
||||
}
|
||||
|
||||
runConnection();
|
||||
} catch (Exception ex) {
|
||||
String errorMsg = getString(R.string.errorServerResponseMsg);
|
||||
error(errorMsg);
|
||||
|
||||
if(isDebuggable) {
|
||||
Log.e(ex.getClass().getSimpleName(), errorMsg);
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
OnClickListener negativeClickListener = new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int whichButton) {
|
||||
dialog.cancel();
|
||||
finish();
|
||||
}
|
||||
};
|
||||
try {
|
||||
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
if (resultCode == Activity.RESULT_OK) {
|
||||
switch(requestCode) {
|
||||
case Global.COURSES_REQUEST_CODE:
|
||||
final AlertDialog.Builder alert = new AlertDialog.Builder(this);
|
||||
dbCursor = dbHelper.getDb().getCursor(Global.DB_TABLE_COURSES);
|
||||
listCourses = dbHelper.getAllRows(Global.DB_TABLE_COURSES);
|
||||
lastCourseSelected = prefs.getLastCourseSelected();
|
||||
alert.setSingleChoiceItems(dbCursor, lastCourseSelected, "name",
|
||||
singleChoiceItemsClickListener);
|
||||
|
||||
alert.setTitle(R.string.selectCourseTitle);
|
||||
alert.setPositiveButton(R.string.acceptMsg, positiveClickListener);
|
||||
alert.setNegativeButton(R.string.cancelMsg, negativeClickListener);
|
||||
alert.show();
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
setResult(RESULT_CANCELED);
|
||||
finish();
|
||||
}
|
||||
if(isDebuggable) {
|
||||
Log.d(TAG, "selectedCourseCode = " + Long.toString(Global.getSelectedCourseCode()));
|
||||
}
|
||||
|
||||
runConnection();
|
||||
} catch (Exception ex) {
|
||||
String errorMsg = getString(R.string.errorServerResponseMsg);
|
||||
error(errorMsg);
|
||||
|
||||
if(isDebuggable) {
|
||||
Log.e(ex.getClass().getSimpleName(), errorMsg);
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see es.ugr.swad.swadroid.modules.Module#requestService()
|
||||
*/
|
||||
|
@ -184,13 +111,13 @@ public class TestsConfigDownload extends Module {
|
|||
IllegalAccessException, InstantiationException {
|
||||
|
||||
//Calculates next timestamp to be requested
|
||||
Long timestamp = new Long(dbHelper.getTimeOfLastTestUpdate(selectedCourseCode));
|
||||
Long timestamp = new Long(dbHelper.getTimeOfLastTestUpdate(Global.getSelectedCourseCode()));
|
||||
timestamp++;
|
||||
|
||||
//Creates webservice request, adds required params and sends request to webservice
|
||||
createRequest();
|
||||
addParam("wsKey", User.getWsKey());
|
||||
addParam("courseCode", (int)selectedCourseCode);
|
||||
addParam("courseCode", (int)Global.getSelectedCourseCode());
|
||||
sendRequest(Test.class, false);
|
||||
|
||||
if (result != null) {
|
||||
|
@ -216,11 +143,11 @@ public class TestsConfigDownload extends Module {
|
|||
Integer maxQuestions = new Integer(res.get(4).toString());
|
||||
String feedback = res.get(5).toString();
|
||||
Test tDB = (Test) dbHelper.getRow(Global.DB_TABLE_TEST_CONFIG, "id",
|
||||
Long.toString(selectedCourseCode));
|
||||
Long.toString(Global.getSelectedCourseCode()));
|
||||
|
||||
//If not exists a test configuration for this course, insert to database
|
||||
if(tDB == null) {
|
||||
Test t = new Test(selectedCourseCode, minQuestions, defQuestions, maxQuestions, feedback);
|
||||
Test t = new Test(Global.getSelectedCourseCode(), minQuestions, defQuestions, maxQuestions, feedback);
|
||||
dbHelper.insertTestConfig(t);
|
||||
}
|
||||
|
||||
|
@ -232,7 +159,6 @@ public class TestsConfigDownload extends Module {
|
|||
}
|
||||
|
||||
Intent activity = new Intent(getBaseContext(), TestsQuestionsDownload.class);
|
||||
activity.putExtra("selectedCourseCode", selectedCourseCode);
|
||||
activity.putExtra("timestamp", timestamp);
|
||||
startActivityForResult(activity, Global.TESTS_QUESTIONS_DOWNLOAD_REQUEST_CODE);
|
||||
}
|
||||
|
|
|
@ -67,18 +67,6 @@ import es.ugr.swad.swadroid.widget.TextProgressBar;
|
|||
* @author Juan Miguel Boyero Corral <juanmi1982@gmail.com>
|
||||
*/
|
||||
public class TestsMake extends Module {
|
||||
/**
|
||||
* Cursor for database access
|
||||
*/
|
||||
private Cursor dbCursor;
|
||||
/**
|
||||
* User courses list
|
||||
*/
|
||||
private List<Model>listCourses;
|
||||
/**
|
||||
* Selected course code
|
||||
*/
|
||||
private long selectedCourseCode = 0;
|
||||
/**
|
||||
* Test's number of questions
|
||||
*/
|
||||
|
@ -95,18 +83,6 @@ public class TestsMake extends Module {
|
|||
* Answer types's list of the test
|
||||
*/
|
||||
private List<String> answerTypesList;
|
||||
/**
|
||||
* Click listener for courses dialog items
|
||||
*/
|
||||
private OnClickListener coursesDialogSingleChoiceItemsClickListener;
|
||||
/**
|
||||
* Click listener for courses dialog accept button
|
||||
*/
|
||||
private OnClickListener coursesDialogPositiveClickListener;
|
||||
/**
|
||||
* Click listener for courses dialog cancel button
|
||||
*/
|
||||
private OnClickListener coursesDialogNegativeClickListener;
|
||||
/**
|
||||
* Click listener for courses dialog cancel button
|
||||
*/
|
||||
|
@ -115,10 +91,6 @@ public class TestsMake extends Module {
|
|||
* Adapter for answer TF questions
|
||||
*/
|
||||
private ArrayAdapter<String> tfAdapter;
|
||||
/**
|
||||
* Course selection dialog
|
||||
*/
|
||||
private AlertDialog.Builder coursesDialog;
|
||||
/**
|
||||
* Test question being showed
|
||||
*/
|
||||
|
@ -183,7 +155,7 @@ public class TestsMake extends Module {
|
|||
Button acceptButton;
|
||||
final ListView checkBoxesList;
|
||||
final TagsArrayAdapter tagsAdapter;
|
||||
final List<TestTag> allTagsList = dbHelper.getOrderedCourseTags(selectedCourseCode);
|
||||
final List<TestTag> allTagsList = dbHelper.getOrderedCourseTags(Global.getSelectedCourseCode());
|
||||
|
||||
//Add "All tags" item in list's top
|
||||
allTagsList.add(0, new TestTag(0, getResources().getString(R.string.allMsg), 0));
|
||||
|
@ -528,7 +500,7 @@ public class TestsMake extends Module {
|
|||
List<TestQuestion> questions;
|
||||
|
||||
//Generates the test
|
||||
questions = dbHelper.getRandomCourseQuestionsByTagAndAnswerType(selectedCourseCode, tagsList, answerTypesList,
|
||||
questions = dbHelper.getRandomCourseQuestionsByTagAndAnswerType(Global.getSelectedCourseCode(), tagsList, answerTypesList,
|
||||
numQuestions);
|
||||
if(!questions.isEmpty()) {
|
||||
test.setQuestions(questions);
|
||||
|
@ -626,47 +598,7 @@ public class TestsMake extends Module {
|
|||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setLayout(R.layout.layout_with_action_bar);
|
||||
|
||||
coursesDialogSingleChoiceItemsClickListener = new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int whichButton) {
|
||||
Course c = (Course) listCourses.get(whichButton);
|
||||
selectedCourseCode = c.getId();
|
||||
prefs.setLastCourseSelected(whichButton);
|
||||
|
||||
if(isDebuggable) {
|
||||
Integer s = whichButton;
|
||||
Log.d(TAG, "singleChoice = " + s.toString());
|
||||
}
|
||||
}
|
||||
};
|
||||
coursesDialogPositiveClickListener = new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int whichButton) {
|
||||
if(selectedCourseCode != 0) {
|
||||
if(isDebuggable) {
|
||||
Log.d(TAG, "selectedCourseCode = " + Long.toString(selectedCourseCode));
|
||||
}
|
||||
|
||||
test = (Test) dbHelper.getRow(Global.DB_TABLE_TEST_CONFIG, "id",
|
||||
Long.toString(selectedCourseCode));
|
||||
|
||||
if(test != null) {
|
||||
setNumQuestions();
|
||||
} else {
|
||||
Toast.makeText(getBaseContext(), R.string.testNoQuestionsCourseMsg, Toast.LENGTH_LONG).show();
|
||||
finish();
|
||||
}
|
||||
} else {
|
||||
Toast.makeText(getBaseContext(), R.string.noCourseSelectedMsg, Toast.LENGTH_LONG).show();
|
||||
finish();
|
||||
}
|
||||
}
|
||||
};
|
||||
coursesDialogNegativeClickListener = new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int whichButton) {
|
||||
dialog.cancel();
|
||||
finish();
|
||||
}
|
||||
};
|
||||
|
||||
tagsAnswersTypeItemClickListener = new OnItemClickListener() {
|
||||
public void onItemClick(AdapterView<?> parent, View v, int position,
|
||||
long id) {
|
||||
|
@ -697,11 +629,6 @@ public class TestsMake extends Module {
|
|||
}
|
||||
};
|
||||
|
||||
coursesDialog = new AlertDialog.Builder(this);
|
||||
coursesDialog.setTitle(R.string.selectCourseTitle);
|
||||
coursesDialog.setPositiveButton(R.string.acceptMsg, coursesDialogPositiveClickListener);
|
||||
coursesDialog.setNegativeButton(R.string.cancelMsg, coursesDialogNegativeClickListener);
|
||||
|
||||
tfAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item);
|
||||
tfAdapter.add(getString(R.string.trueMsg));
|
||||
tfAdapter.add(getString(R.string.falseMsg));
|
||||
|
@ -719,21 +646,26 @@ public class TestsMake extends Module {
|
|||
|
||||
super.onStart();
|
||||
prefs.getPreferences(getBaseContext());
|
||||
|
||||
if(dbHelper.getDb().getCursor(Global.DB_TABLE_TEST_CONFIG).getCount() > 0) {
|
||||
dbCursor = dbHelper.getDb().getCursor(Global.DB_TABLE_COURSES);
|
||||
listCourses = dbHelper.getAllRows(Global.DB_TABLE_COURSES);
|
||||
lastCourseSelected = prefs.getLastCourseSelected();
|
||||
c = (Course) listCourses.get(lastCourseSelected);
|
||||
selectedCourseCode = c.getId();
|
||||
coursesDialog.setSingleChoiceItems(dbCursor, lastCourseSelected, "name",
|
||||
coursesDialogSingleChoiceItemsClickListener);
|
||||
String selection ="id=" + Long.toString(Global.getSelectedCourseCode());
|
||||
if(dbHelper.getDb().getCursor(Global.DB_TABLE_TEST_CONFIG,selection,null).getCount() > 0) {
|
||||
if(isDebuggable) {
|
||||
Log.d(TAG, "selectedCourseCode = " + Long.toString(Global.getSelectedCourseCode()));
|
||||
}
|
||||
|
||||
test = (Test) dbHelper.getRow(Global.DB_TABLE_TEST_CONFIG, "id",
|
||||
Long.toString(Global.getSelectedCourseCode()));
|
||||
|
||||
coursesDialog.show();
|
||||
if(test != null) {
|
||||
setNumQuestions();
|
||||
} else {
|
||||
Toast.makeText(getBaseContext(), R.string.testNoQuestionsCourseMsg, Toast.LENGTH_LONG).show();
|
||||
finish();
|
||||
}
|
||||
} else {
|
||||
Toast.makeText(getBaseContext(), R.string.testNoQuestionsMsg, Toast.LENGTH_LONG).show();
|
||||
finish();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
|
|
@ -47,10 +47,6 @@ import es.ugr.swad.swadroid.modules.Module;
|
|||
* @author Juan Miguel Boyero Corral <juanmi1982@gmail.com>
|
||||
*/
|
||||
public class TestsQuestionsDownload extends Module {
|
||||
/**
|
||||
* Selected course code
|
||||
*/
|
||||
private long selectedCourseCode;
|
||||
/**
|
||||
* Next timestamp to be requested
|
||||
*/
|
||||
|
@ -75,7 +71,6 @@ public class TestsQuestionsDownload extends Module {
|
|||
@Override
|
||||
protected void onStart() {
|
||||
super.onStart();
|
||||
selectedCourseCode = getIntent().getLongExtra("selectedCourseCode", 0);
|
||||
timestamp = getIntent().getLongExtra("timestamp", 0);
|
||||
runConnection();
|
||||
}
|
||||
|
@ -91,7 +86,7 @@ public class TestsQuestionsDownload extends Module {
|
|||
//Creates webservice request, adds required params and sends request to webservice
|
||||
createRequest();
|
||||
addParam("wsKey", User.getWsKey());
|
||||
addParam("courseCode", (int)selectedCourseCode);
|
||||
addParam("courseCode", (int)Global.getSelectedCourseCode());
|
||||
addParam("beginTime", timestamp);
|
||||
sendRequest(Test.class, false);
|
||||
|
||||
|
@ -137,7 +132,7 @@ public class TestsQuestionsDownload extends Module {
|
|||
|
||||
//If it's a new question, insert in database
|
||||
try {
|
||||
dbHelper.insertTestQuestion(q, selectedCourseCode);
|
||||
dbHelper.insertTestQuestion(q, Global.getSelectedCourseCode());
|
||||
|
||||
if(isDebuggable)
|
||||
Log.d(TAG, "INSERTED: " + q.toString());
|
||||
|
@ -145,7 +140,7 @@ public class TestsQuestionsDownload extends Module {
|
|||
//If it's an updated question, update it's row in database
|
||||
} catch (SQLException e) {
|
||||
TestQuestion old = (TestQuestion) questionsListDB.get(questionsListDB.indexOf(q));
|
||||
dbHelper.updateTestQuestion(old, q, selectedCourseCode);
|
||||
dbHelper.updateTestQuestion(old, q, Global.getSelectedCourseCode());
|
||||
|
||||
if(isDebuggable)
|
||||
Log.d(TAG, "UPDATED: " + q.toString());
|
||||
|
@ -217,7 +212,7 @@ public class TestsQuestionsDownload extends Module {
|
|||
Log.i(TAG, "Retrieved " + listSize + " relationships between questions and tags");
|
||||
|
||||
//Update last time test was updated
|
||||
Test oldTestConfigDB = (Test) dbHelper.getRow(Global.DB_TABLE_TEST_CONFIG, "id", Long.toString(selectedCourseCode));
|
||||
Test oldTestConfigDB = (Test) dbHelper.getRow(Global.DB_TABLE_TEST_CONFIG, "id", Long.toString(Global.getSelectedCourseCode()));
|
||||
Test testConfig = oldTestConfigDB;
|
||||
testConfig.setEditTime(System.currentTimeMillis() / 1000L);
|
||||
dbHelper.updateTestConfig(oldTestConfigDB, testConfig);
|
||||
|
|
Loading…
Reference in New Issue
Block a user