Updated msg_received, msg_write, notok, ok icons.

Added check of students not belonging to the selected subject

git-svn-id: https://forja.rediris.es/svn/cusl6-swadroid/trunk@281 5bc14d19-1e4b-4ba2-aa50-860af135f48c
This commit is contained in:
Antonio Aguilera 2012-04-15 22:27:42 +00:00
parent 11baf2b9f0
commit 5cfee34a6a
16 changed files with 128 additions and 183 deletions

Binary file not shown.

View File

@ -66,37 +66,39 @@ public final class R {
public static final int launcher_icon=0x7f02000c;
public static final int message_reply=0x7f02000d;
public static final int msg=0x7f02000e;
public static final int newmsg=0x7f02000f;
public static final int note=0x7f020010;
public static final int notif=0x7f020011;
public static final int recmsg=0x7f020012;
public static final int rollcall=0x7f020013;
public static final int rotate_refresh=0x7f020014;
public static final int share_via_barcode=0x7f020015;
public static final int shopper_icon=0x7f020016;
public static final int survey=0x7f020017;
public static final int test=0x7f020018;
public static final int timepicker_down_btn=0x7f020019;
public static final int timepicker_down_disabled=0x7f02001a;
public static final int timepicker_down_disabled_focused=0x7f02001b;
public static final int timepicker_down_normal=0x7f02001c;
public static final int timepicker_down_pressed=0x7f02001d;
public static final int timepicker_down_selected=0x7f02001e;
public static final int timepicker_input=0x7f02001f;
public static final int timepicker_input_disabled=0x7f020020;
public static final int timepicker_input_normal=0x7f020021;
public static final int timepicker_input_pressed=0x7f020022;
public static final int timepicker_input_selected=0x7f020023;
public static final int timepicker_up_btn=0x7f020024;
public static final int timepicker_up_disabled=0x7f020025;
public static final int timepicker_up_disabled_focused=0x7f020026;
public static final int timepicker_up_normal=0x7f020027;
public static final int timepicker_up_pressed=0x7f020028;
public static final int timepicker_up_selected=0x7f020029;
public static final int title_button=0x7f02002a;
public static final int title_refresh=0x7f02002b;
public static final int users=0x7f02002c;
public static final int usr_bl=0x7f02002d;
public static final int msg_received=0x7f02000f;
public static final int msg_write=0x7f020010;
public static final int note=0x7f020011;
public static final int notif=0x7f020012;
public static final int notok=0x7f020013;
public static final int ok=0x7f020014;
public static final int rollcall=0x7f020015;
public static final int rotate_refresh=0x7f020016;
public static final int share_via_barcode=0x7f020017;
public static final int shopper_icon=0x7f020018;
public static final int survey=0x7f020019;
public static final int test=0x7f02001a;
public static final int timepicker_down_btn=0x7f02001b;
public static final int timepicker_down_disabled=0x7f02001c;
public static final int timepicker_down_disabled_focused=0x7f02001d;
public static final int timepicker_down_normal=0x7f02001e;
public static final int timepicker_down_pressed=0x7f02001f;
public static final int timepicker_down_selected=0x7f020020;
public static final int timepicker_input=0x7f020021;
public static final int timepicker_input_disabled=0x7f020022;
public static final int timepicker_input_normal=0x7f020023;
public static final int timepicker_input_pressed=0x7f020024;
public static final int timepicker_input_selected=0x7f020025;
public static final int timepicker_up_btn=0x7f020026;
public static final int timepicker_up_disabled=0x7f020027;
public static final int timepicker_up_disabled_focused=0x7f020028;
public static final int timepicker_up_normal=0x7f020029;
public static final int timepicker_up_pressed=0x7f02002a;
public static final int timepicker_up_selected=0x7f02002b;
public static final int title_button=0x7f02002c;
public static final int title_refresh=0x7f02002d;
public static final int users=0x7f02002e;
public static final int usr_bl=0x7f02002f;
}
public static final class id {
public static final int RelativeLayout1=0x7f080030;
@ -110,7 +112,7 @@ public final class R {
public static final int bookmark_title=0x7f080014;
public static final int bookmark_url=0x7f080015;
public static final int check=0x7f080032;
public static final int clean_database_menu=0x7f080078;
public static final int clean_database_menu=0x7f080079;
public static final int contentWebView=0x7f08005a;
public static final int contents_supplement_text_view=0x7f080023;
public static final int contents_text_view=0x7f080022;
@ -136,6 +138,7 @@ public final class R {
public static final int help_contents=0x7f080029;
public static final int history_detail=0x7f08002d;
public static final int history_title=0x7f08002c;
public static final int icon=0x7f080075;
public static final int image=0x7f080074;
public static final int imageView1=0x7f080031;
public static final int image_view=0x7f080028;
@ -159,13 +162,13 @@ public final class R {
public static final int notice_button_cancel=0x7f08003d;
public static final int notificationIcon=0x7f08003f;
public static final int page_number_view=0x7f080050;
public static final int preferences_menu=0x7f080079;
public static final int preferences_menu=0x7f08007a;
public static final int preview_view=0x7f080016;
public static final int progress_refresh=0x7f080013;
public static final int query_button=0x7f08004e;
public static final int query_text_view=0x7f08004d;
public static final int quit=0x7f080005;
public static final int rate_menu=0x7f080077;
public static final int rate_menu=0x7f080078;
public static final int refresh=0x7f080012;
public static final int restart_preview=0x7f080006;
public static final int result_button_view=0x7f080024;
@ -179,7 +182,7 @@ public final class R {
public static final int share_bookmark_button=0x7f080053;
public static final int share_clipboard_button=0x7f080055;
public static final int share_contact_button=0x7f080054;
public static final int share_menu=0x7f080076;
public static final int share_menu=0x7f080077;
public static final int share_text_view=0x7f080056;
public static final int shopper_button=0x7f080025;
public static final int snippet_view=0x7f080051;
@ -212,7 +215,7 @@ public final class R {
public static final int testTagsList=0x7f080071;
public static final int testTagsText=0x7f080070;
public static final int test_questions_bar=0x7f080068;
public static final int text=0x7f080075;
public static final int text=0x7f080076;
public static final int time_text_view=0x7f08001f;
public static final int time_text_view_label=0x7f08001e;
public static final int timepicker_input=0x7f08004b;

View File

@ -66,37 +66,39 @@ public final class R {
public static final int launcher_icon=0x7f02000c;
public static final int message_reply=0x7f02000d;
public static final int msg=0x7f02000e;
public static final int newmsg=0x7f02000f;
public static final int note=0x7f020010;
public static final int notif=0x7f020011;
public static final int recmsg=0x7f020012;
public static final int rollcall=0x7f020013;
public static final int rotate_refresh=0x7f020014;
public static final int share_via_barcode=0x7f020015;
public static final int shopper_icon=0x7f020016;
public static final int survey=0x7f020017;
public static final int test=0x7f020018;
public static final int timepicker_down_btn=0x7f020019;
public static final int timepicker_down_disabled=0x7f02001a;
public static final int timepicker_down_disabled_focused=0x7f02001b;
public static final int timepicker_down_normal=0x7f02001c;
public static final int timepicker_down_pressed=0x7f02001d;
public static final int timepicker_down_selected=0x7f02001e;
public static final int timepicker_input=0x7f02001f;
public static final int timepicker_input_disabled=0x7f020020;
public static final int timepicker_input_normal=0x7f020021;
public static final int timepicker_input_pressed=0x7f020022;
public static final int timepicker_input_selected=0x7f020023;
public static final int timepicker_up_btn=0x7f020024;
public static final int timepicker_up_disabled=0x7f020025;
public static final int timepicker_up_disabled_focused=0x7f020026;
public static final int timepicker_up_normal=0x7f020027;
public static final int timepicker_up_pressed=0x7f020028;
public static final int timepicker_up_selected=0x7f020029;
public static final int title_button=0x7f02002a;
public static final int title_refresh=0x7f02002b;
public static final int users=0x7f02002c;
public static final int usr_bl=0x7f02002d;
public static final int msg_received=0x7f02000f;
public static final int msg_write=0x7f020010;
public static final int note=0x7f020011;
public static final int notif=0x7f020012;
public static final int notok=0x7f020013;
public static final int ok=0x7f020014;
public static final int rollcall=0x7f020015;
public static final int rotate_refresh=0x7f020016;
public static final int share_via_barcode=0x7f020017;
public static final int shopper_icon=0x7f020018;
public static final int survey=0x7f020019;
public static final int test=0x7f02001a;
public static final int timepicker_down_btn=0x7f02001b;
public static final int timepicker_down_disabled=0x7f02001c;
public static final int timepicker_down_disabled_focused=0x7f02001d;
public static final int timepicker_down_normal=0x7f02001e;
public static final int timepicker_down_pressed=0x7f02001f;
public static final int timepicker_down_selected=0x7f020020;
public static final int timepicker_input=0x7f020021;
public static final int timepicker_input_disabled=0x7f020022;
public static final int timepicker_input_normal=0x7f020023;
public static final int timepicker_input_pressed=0x7f020024;
public static final int timepicker_input_selected=0x7f020025;
public static final int timepicker_up_btn=0x7f020026;
public static final int timepicker_up_disabled=0x7f020027;
public static final int timepicker_up_disabled_focused=0x7f020028;
public static final int timepicker_up_normal=0x7f020029;
public static final int timepicker_up_pressed=0x7f02002a;
public static final int timepicker_up_selected=0x7f02002b;
public static final int title_button=0x7f02002c;
public static final int title_refresh=0x7f02002d;
public static final int users=0x7f02002e;
public static final int usr_bl=0x7f02002f;
}
public static final class id {
public static final int RelativeLayout1=0x7f080030;
@ -110,7 +112,7 @@ public final class R {
public static final int bookmark_title=0x7f080014;
public static final int bookmark_url=0x7f080015;
public static final int check=0x7f080032;
public static final int clean_database_menu=0x7f080078;
public static final int clean_database_menu=0x7f080079;
public static final int contentWebView=0x7f08005a;
public static final int contents_supplement_text_view=0x7f080023;
public static final int contents_text_view=0x7f080022;
@ -136,6 +138,7 @@ public final class R {
public static final int help_contents=0x7f080029;
public static final int history_detail=0x7f08002d;
public static final int history_title=0x7f08002c;
public static final int icon=0x7f080075;
public static final int image=0x7f080074;
public static final int imageView1=0x7f080031;
public static final int image_view=0x7f080028;
@ -159,13 +162,13 @@ public final class R {
public static final int notice_button_cancel=0x7f08003d;
public static final int notificationIcon=0x7f08003f;
public static final int page_number_view=0x7f080050;
public static final int preferences_menu=0x7f080079;
public static final int preferences_menu=0x7f08007a;
public static final int preview_view=0x7f080016;
public static final int progress_refresh=0x7f080013;
public static final int query_button=0x7f08004e;
public static final int query_text_view=0x7f08004d;
public static final int quit=0x7f080005;
public static final int rate_menu=0x7f080077;
public static final int rate_menu=0x7f080078;
public static final int refresh=0x7f080012;
public static final int restart_preview=0x7f080006;
public static final int result_button_view=0x7f080024;
@ -179,7 +182,7 @@ public final class R {
public static final int share_bookmark_button=0x7f080053;
public static final int share_clipboard_button=0x7f080055;
public static final int share_contact_button=0x7f080054;
public static final int share_menu=0x7f080076;
public static final int share_menu=0x7f080077;
public static final int share_text_view=0x7f080056;
public static final int shopper_button=0x7f080025;
public static final int snippet_view=0x7f080051;
@ -212,7 +215,7 @@ public final class R {
public static final int testTagsList=0x7f080071;
public static final int testTagsText=0x7f080070;
public static final int test_questions_bar=0x7f080068;
public static final int text=0x7f080075;
public static final int text=0x7f080076;
public static final int time_text_view=0x7f08001f;
public static final int time_text_view_label=0x7f08001e;
public static final int timepicker_input=0x7f08004b;

View File

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -30,7 +30,7 @@ public class Global {
/**
* SWAD application key
*/
private static final String AppKey = "cuerre-aguilerin";
private static final String AppKey = "";
/**
* Server URL
*/

View File

@ -295,7 +295,7 @@ public class SWADMain extends MenuExpandableListActivity {
map = new HashMap<String,Object>();
map.put(NAME, getString(R.string.messagesModuleLabel) );
map.put(IMAGE, getResources().getDrawable(R.drawable.newmsg));
map.put(IMAGE, getResources().getDrawable(R.drawable.msg_write));
messagesData.add(map);
map = new HashMap<String,Object>();

View File

@ -278,12 +278,13 @@ public class DataBaseHelper {
* Gets the user that matches userId and selectedCourseCode
* @param userId User's DNI (national identity)
* @param selectedCourseCode Course code to be referenced
* @return The requested user, or null if the user does not exist or is not enrolled in the selected course
* @return True if user is enrolled in the selected course. False otherwise
*/
public User getUser(String userID, long selectedCourseCode) {
public boolean getUserCourse(String userID, long selectedCourseCode) {
boolean enrolled = false;
User u = (User) getRow(Global.DB_TABLE_USERS, "userID", userID);
/*if (u != null) {
if (u != null) {
String sentencia = "SELECT userCode AS _id, crsCod" +
" FROM " + Global.DB_TABLE_USERS_COURSES +
" WHERE userCode = ? AND crsCod = ?" +
@ -294,13 +295,14 @@ public class DataBaseHelper {
String.valueOf(selectedCourseCode)
});
// Return null if the user is not enrolled in the selected course
if (!c.moveToFirst()) {
u = null;
if (c.moveToFirst()) {
enrolled = true;
}
c.close();
}*/
return u;
} else
enrolled = false;
return enrolled;
}
/**
@ -445,7 +447,7 @@ public class DataBaseHelper {
/**
* Inserts a user in database
* @param u User to be inserted
* @return True if user doesn't exist in database and is inserted. False otherwise.
* @return True if user does not exist in database and is inserted. False otherwise.
*/
public boolean insertUser(User u) {
List<Entity> rows = db.getEntityList(Global.DB_TABLE_USERS, "userCode = " + u.getId());
@ -467,6 +469,27 @@ public class DataBaseHelper {
return false;
}
/**
* Inserts a new record in database indicating that the user belongs to the course
* @param u User to be inserted
* @param selectedCourseCode Course code to be referenced
* @return True if record does not exist in database and is inserted. False otherwise.
*/
public boolean insertUserCourse(User u, long selectedCourseCode) {
// TODO Auto-generated method stub
List<Entity> rows = db.getEntityList(Global.DB_TABLE_USERS_COURSES,
"userCode = " + u.getId() + " AND crsCod = " + selectedCourseCode);
if(rows.isEmpty()) {
Entity ent = new Entity(Global.DB_TABLE_USERS_COURSES);
ent.setValue("userCode", u.getId());
ent.setValue("crsCod", selectedCourseCode);
ent.save();
return true;
} else
return false;
}
/**
* Updates a course in database
* @param prev Course to be updated

View File

@ -43,11 +43,11 @@ import android.widget.TextView;
import android.widget.Toast;
import com.android.dataframework.DataFramework;
import com.google.zxing.client.android.swadroid.model.DataBaseHelper;
import com.google.zxing.client.android.swadroid.model.User;
import es.ugr.swad.swadroid.Global;
import es.ugr.swad.swadroid.R;
import es.ugr.swad.swadroid.model.DataBaseHelper;
import es.ugr.swad.swadroid.model.User;
import es.ugr.swad.swadroid.modules.Module;
/**
@ -59,6 +59,7 @@ public class Attendance extends Module {
private AlertDialog mAlertDialog;
private List<ListItemModel> listModel;
private ArrayList<String> listaDnis = null;
private ArrayList<Boolean> enrolledStudents = null;
private long selectedCourseCode;
/**
* Database Helper.
@ -135,6 +136,7 @@ public class Attendance extends Module {
Toast.makeText(getApplicationContext(), "No se han detectado codigos validos", Toast.LENGTH_SHORT).show();
else if (!listaDnis.isEmpty()) {
listModel = new ArrayList<ListItemModel>();
enrolledStudents = new ArrayList<Boolean>();
// Initialize database
try {
@ -148,19 +150,24 @@ public class Attendance extends Module {
// utilizar aqui el dni para buscar el usuario, y si existe en el grupo seleccionado, ponerlo como marcado
for (String dni: listaDnis) {
User u = dbHelper.getUser(dni, selectedCourseCode);
User u = (User) dbHelper.getRow(Global.DB_TABLE_USERS, "userID", dni);
String userName;
if (u != null) {
userName = u.getUserFirstname() + " " + u.getUserSurname1() + " " + u.getUserSurname2();
// We put the default photo for each item in the list
listModel.add(new ListItemModel(userName, R.drawable.usr_bl));
// Comprobamos si el alumno pertenece a la asignatura, y lo marcamos en consecuencia
// añadimos a la lista el resultado de si pertenece o no a la asignatura
enrolledStudents.add(dbHelper.getUserCourse(dni, selectedCourseCode));
}
}
// Marcamos como asistentes a todos los escaneados (cambiar cuando pueda comprobarse el grupo)
// Mark as attending all scans (change when the group can be checked)
for (ListItemModel i: listModel)
i.setSelected(true);
int listSize = listModel.size();
for (int i=0; i < listSize; i++) {
listModel.get(i).setSelected(enrolledStudents.get(i));
}
ArrayAdapter<ListItemModel> modeAdapter = new InteractiveArrayAdapter(this, listModel);
lv = new ListView(this);
@ -179,28 +186,6 @@ public class Attendance extends Module {
}
break;
}
/*String dni_escaneado = intent.getStringExtra("SCAN_RESULT");
String formato = intent.getStringExtra("SCAN_RESULT_FORMAT");
if (!formato.contentEquals("QR_CODE"))
Toast.makeText(
getApplicationContext(),
"ERROR: el codigo detectado no es un codigo QR valido",
Toast.LENGTH_SHORT).show();
else if (!Util.isValidDni(dni_escaneado))
Toast.makeText(
getApplicationContext(),
"ERROR: el codigo detectado no contiene un DNI valido",
Toast.LENGTH_SHORT).show();
else {
Toast.makeText(getApplicationContext(), "DNI valido: " + dni_escaneado, Toast.LENGTH_SHORT).show();
listaDnis.add(dni_escaneado);
}
break;*/
/* }
} else {
}*/
}
public void prepareAlertDialog() {

View File

@ -163,7 +163,6 @@ public class AttendanceConfigDownload extends Module {
break;
case Global.SCAN_QR_REQUEST_CODE:
// Propagate the scan result to the previous activity
intent.putExtra("selectedCourseCode", selectedCourseCode);
setResult(resultCode, intent);
finish();
break;
@ -239,6 +238,8 @@ public class AttendanceConfigDownload extends Module {
);
if (dbHelper.insertUser(u))
insertedUsersCount++;
dbHelper.insertUserCourse(u, selectedCourseCode);
} // end for (int i=0; i < usersCount; i++)
//Request finalized without errors
@ -275,6 +276,7 @@ public class AttendanceConfigDownload extends Module {
Intent activity = new Intent("es.ugr.swad.swadroid.android.SCAN");
activity.putExtra("SCAN_MODE", "QR_CODE_MODE");
activity.putExtra("SCAN_FORMATS", "QR_CODE");
activity.putExtra("selectedCourseCode", selectedCourseCode);
// pasar a CaptureActivity selectedCourseCode + cualquier otra informacion que necesite
// recibir esta informacion adecuadamente en CaptureActivity y trabajar a partir de ella (ej: lista
//de alumnos -> comprobar al escanear un QR si pertenece a la lista)

View File

@ -1,71 +0,0 @@
package es.ugr.swad.swadroid.modules.attendance;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Util {
public static boolean isValidEmail(String email) {
String expression = "^[\\w\\.-]+@([\\w\\-]+\\.)+[A-Z]{2,4}$";
CharSequence inputStr = email;
Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(inputStr);
return matcher.matches();
}
public static boolean isValidDate(String date) {
String monthExpression = "(0?[1-9]|1[0-2])";
String dayExpression = "(0?[1-9]|[12][0-9]|3[01])";
String expression = "^" + dayExpression + "/" + monthExpression + "/(18|19|20|21)\\d{2}";
CharSequence inputStr = date;
Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(inputStr);
return matcher.matches();
}
public static boolean isValidTime(String hora) {
String TIME24HOURS_PATTERN = "([01]?[0-9]|2[0-3]):[0-5][0-9]";
Pattern pattern = Pattern.compile(TIME24HOURS_PATTERN);
Matcher matcher = pattern.matcher(hora);
return matcher.matches();
}
public static String pad(int c) {
if (c >= 10)
return String.valueOf(c);
else
return "0" + String.valueOf(c);
}
public static boolean isValidDni(String dni) {
//String patronDni = "^\\d{8}[A-Z]$";
//String patronDni = "^\\d{8}$"; // 8 digitos
String patronDni = "^\\d{1,16}$"; // 1-16 digitos
Pattern pattern = Pattern.compile(patronDni, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(dni);
return matcher.matches();
/*if (matcher.matches())
return validarLetra(dni);
return false;*/
}
@SuppressWarnings("unused")
private static boolean validarLetra(String n) {
String numero = n.substring(0, n.length()-1);
String letra = n.substring(n.length()-1, n.length());
int codigo = (Integer.valueOf(numero).intValue()) % 23;
String[] abc = {"T","R","W","A","G","M","Y","F","P","D","X","B","N","J","Z","S","Q","V","H","L","C","K","E","T"};
if(abc[codigo].compareToIgnoreCase(letra) == 0)
return true;
return false;
}
}

View File

@ -129,7 +129,7 @@ public class NotificationsCursorAdapter extends CursorAdapter {
} else if(type.equals("message"))
{
type = context.getString(R.string.message);
notificationIcon.setImageResource(R.drawable.recmsg);
notificationIcon.setImageResource(R.drawable.msg_received);
messageReplyButton.setOnClickListener(replyMessageListener);
messageReplyButton.setVisibility(View.VISIBLE);
} else if(type.equals("forumReply"))