diff --git a/SWADroid/AndroidManifest.xml b/SWADroid/AndroidManifest.xml index 8e46184e..ba9c2ff3 100644 --- a/SWADroid/AndroidManifest.xml +++ b/SWADroid/AndroidManifest.xml @@ -19,11 +19,12 @@ android:name=".modules.Login" android:label="@string/loginModuleLabel" android:configChanges="keyboard|keyboardHidden|orientation" android:theme="@android:style/Theme.Translucent.NoTitleBar"> - + + diff --git a/SWADroid/gen/es/ugr/swad/swadroid/R.java b/SWADroid/gen/es/ugr/swad/swadroid/R.java index c82854ad..45f0ddf7 100644 --- a/SWADroid/gen/es/ugr/swad/swadroid/R.java +++ b/SWADroid/gen/es/ugr/swad/swadroid/R.java @@ -38,80 +38,87 @@ public final class R { public static final int forward=0x7f020008; public static final int grades=0x7f020009; public static final int ic_launcher_swadroid=0x7f02000a; - public static final int msg=0x7f02000b; - public static final int note=0x7f02000c; - public static final int notif=0x7f02000d; - public static final int recmsg=0x7f02000e; - public static final int survey=0x7f02000f; - public static final int test=0x7f020010; - public static final int timepicker_down_btn=0x7f020011; - public static final int timepicker_down_disabled=0x7f020012; - public static final int timepicker_down_disabled_focused=0x7f020013; - public static final int timepicker_down_normal=0x7f020014; - public static final int timepicker_down_pressed=0x7f020015; - public static final int timepicker_down_selected=0x7f020016; - public static final int timepicker_input=0x7f020017; - public static final int timepicker_input_disabled=0x7f020018; - public static final int timepicker_input_normal=0x7f020019; - public static final int timepicker_input_pressed=0x7f02001a; - public static final int timepicker_input_selected=0x7f02001b; - public static final int timepicker_up_btn=0x7f02001c; - public static final int timepicker_up_disabled=0x7f02001d; - public static final int timepicker_up_disabled_focused=0x7f02001e; - public static final int timepicker_up_normal=0x7f02001f; - public static final int timepicker_up_pressed=0x7f020020; - public static final int timepicker_up_selected=0x7f020021; - public static final int title_button=0x7f020022; - public static final int title_refresh=0x7f020023; + public static final int message_reply=0x7f02000b; + public static final int msg=0x7f02000c; + public static final int note=0x7f02000d; + public static final int notif=0x7f02000e; + public static final int recmsg=0x7f02000f; + public static final int survey=0x7f020010; + public static final int test=0x7f020011; + public static final int timepicker_down_btn=0x7f020012; + public static final int timepicker_down_disabled=0x7f020013; + public static final int timepicker_down_disabled_focused=0x7f020014; + public static final int timepicker_down_normal=0x7f020015; + public static final int timepicker_down_pressed=0x7f020016; + public static final int timepicker_down_selected=0x7f020017; + public static final int timepicker_input=0x7f020018; + public static final int timepicker_input_disabled=0x7f020019; + public static final int timepicker_input_normal=0x7f02001a; + public static final int timepicker_input_pressed=0x7f02001b; + public static final int timepicker_input_selected=0x7f02001c; + public static final int timepicker_up_btn=0x7f02001d; + public static final int timepicker_up_disabled=0x7f02001e; + public static final int timepicker_up_disabled_focused=0x7f02001f; + public static final int timepicker_up_normal=0x7f020020; + public static final int timepicker_up_pressed=0x7f020021; + public static final int timepicker_up_selected=0x7f020022; + public static final int title_button=0x7f020023; + public static final int title_refresh=0x7f020024; } public static final class id { public static final int actionBarLayout=0x7f090000; - public static final int decrement=0x7f090018; - public static final int eventContent=0x7f090011; - public static final int eventDate=0x7f09000e; - public static final int eventLocation=0x7f090013; - public static final int eventMetaData=0x7f09000c; - public static final int eventSender=0x7f090010; - public static final int eventSummary=0x7f090014; - public static final int eventText=0x7f090015; - public static final int eventTime=0x7f09000f; - public static final int eventType=0x7f090012; - public static final int increment=0x7f090016; + public static final int decrement=0x7f09001e; + public static final int eventContent=0x7f090017; + public static final int eventDate=0x7f090013; + public static final int eventLocation=0x7f090019; + public static final int eventMetaData=0x7f090011; + public static final int eventSender=0x7f090015; + public static final int eventSummary=0x7f09001a; + public static final int eventText=0x7f09001b; + public static final int eventTime=0x7f090014; + public static final int eventType=0x7f090018; + public static final int increment=0x7f09001c; public static final int listIcon=0x7f090009; public static final int listItems=0x7f09000b; public static final int listText=0x7f09000a; + public static final int messageReplyButton=0x7f090016; + public static final int message_body_text=0x7f09000e; + public static final int message_button_accept=0x7f09000f; + public static final int message_button_cancel=0x7f090010; + public static final int message_receivers_text=0x7f09000c; + public static final int message_subject_text=0x7f09000d; public static final int moduleIcon=0x7f090001; public static final int moduleName=0x7f090002; - public static final int notificationIcon=0x7f09000d; - public static final int preferences_menu=0x7f090031; + public static final int notificationIcon=0x7f090012; + public static final int preferences_menu=0x7f090037; public static final int refresh=0x7f090008; - public static final int testAnswerTypesAcceptButton=0x7f09001b; - public static final int testAnswerTypesList=0x7f09001a; - public static final int testAnswerTypesText=0x7f090019; + public static final int testAnswerTypesAcceptButton=0x7f090021; + public static final int testAnswerTypesList=0x7f090020; + public static final int testAnswerTypesText=0x7f09001f; public static final int testEvaluateButton=0x7f090006; - public static final int testMakeAnswer=0x7f09001f; - public static final int testMakeBottomBar=0x7f090024; - public static final int testMakeCorrectAnswer=0x7f090022; - public static final int testMakeCorrectAnswerImage=0x7f090020; - public static final int testMakeEditText=0x7f090021; - public static final int testMakeList=0x7f090023; - public static final int testMakeNextButton=0x7f090027; - public static final int testMakePrevButton=0x7f090025; - public static final int testMakeQuestionScore=0x7f09001d; - public static final int testMakeStem=0x7f09001c; - public static final int testMakeText=0x7f09001e; - public static final int testNumQuestionsAcceptButton=0x7f09002d; - public static final int testNumQuestionsNumberPicker=0x7f09002a; - public static final int testNumQuestionsText=0x7f09002c; - public static final int testResultsButton=0x7f09002b; - public static final int testResultsScore=0x7f090029; - public static final int testResultsText=0x7f090028; + public static final int testMakeAnswer=0x7f090025; + public static final int testMakeBottomBar=0x7f09002a; + public static final int testMakeCorrectAnswer=0x7f090028; + public static final int testMakeCorrectAnswerImage=0x7f090026; + public static final int testMakeEditText=0x7f090027; + public static final int testMakeList=0x7f090029; + public static final int testMakeNextButton=0x7f09002d; + public static final int testMakePrevButton=0x7f09002b; + public static final int testMakeQuestionScore=0x7f090023; + public static final int testMakeStem=0x7f090022; + public static final int testMakeText=0x7f090024; + public static final int testNumQuestionsAcceptButton=0x7f090033; + public static final int testNumQuestionsNumberPicker=0x7f090030; + public static final int testNumQuestionsText=0x7f090032; + public static final int testResultsButton=0x7f090031; + public static final int testResultsScore=0x7f09002f; + public static final int testResultsText=0x7f09002e; public static final int testShowResultsButton=0x7f090004; - public static final int testTagsAcceptButton=0x7f090030; - public static final int testTagsList=0x7f09002f; - public static final int testTagsText=0x7f09002e; - public static final int test_questions_bar=0x7f090026; - public static final int timepicker_input=0x7f090017; + public static final int testTagsAcceptButton=0x7f090036; + public static final int testTagsList=0x7f090035; + public static final int testTagsText=0x7f090034; + public static final int test_questions_bar=0x7f09002c; + public static final int timepicker_input=0x7f09001d; public static final int title_sep_1=0x7f090007; public static final int title_sep_2=0x7f090005; public static final int title_sep_3=0x7f090003; @@ -123,99 +130,108 @@ public final class R { public static final int list_item_single_choice=0x7f030003; public static final int list_items=0x7f030004; public static final int main=0x7f030005; - public static final int notifications_list_item=0x7f030006; - public static final int number_picker=0x7f030007; - public static final int simple_list_item=0x7f030008; - public static final int tests_answer_types=0x7f030009; - public static final int tests_make_main=0x7f03000a; - public static final int tests_make_questions=0x7f03000b; - public static final int tests_make_results=0x7f03000c; - public static final int tests_num_questions=0x7f03000d; - public static final int tests_tags=0x7f03000e; + public static final int messages_dialog=0x7f030006; + public static final int notifications_list_item=0x7f030007; + public static final int number_picker=0x7f030008; + public static final int simple_list_item=0x7f030009; + public static final int tests_answer_types=0x7f03000a; + public static final int tests_make_main=0x7f03000b; + public static final int tests_make_questions=0x7f03000c; + public static final int tests_make_results=0x7f03000d; + public static final int tests_num_questions=0x7f03000e; + public static final int tests_tags=0x7f03000f; } public static final class menu { public static final int menu_main=0x7f080000; } public static final class string { public static final int about_preferences=0x7f070014; - public static final int acceptMsg=0x7f07003b; - public static final int allMsg=0x7f07003d; + public static final int acceptMsg=0x7f07003c; + public static final int allMsg=0x7f07003e; public static final int app_name=0x7f070000; - public static final int assignment=0x7f070030; + public static final int assignment=0x7f070031; public static final int author_preferences=0x7f070016; - public static final int cancelMsg=0x7f07003c; + public static final int cancelMsg=0x7f07003d; public static final int close_dialog=0x7f070007; - public static final int content=0x7f07002d; + public static final int content=0x7f07002e; public static final int coursesModuleLabel=0x7f070003; - public static final int coursesProgressDescription=0x7f070021; - public static final int coursesProgressTitle=0x7f070020; - public static final int dateMsg=0x7f070034; - public static final int errorBadLoginMsg=0x7f070054; - public static final int errorConnectionMsg=0x7f070056; - public static final int errorCopyMsg_DB=0x7f070024; - public static final int errorMsgLaunchingActivity=0x7f070022; - public static final int errorMsgNoConnection=0x7f070025; - public static final int errorMsgWorkaroundEmulator=0x7f070023; - public static final int errorServerResponseMsg=0x7f070055; - public static final int errorTimeoutMsg=0x7f070057; - public static final int evaluation=0x7f07002f; - public static final int examAnnouncement=0x7f070028; - public static final int falseMsg=0x7f07003a; + public static final int coursesProgressDescription=0x7f070022; + public static final int coursesProgressTitle=0x7f070021; + public static final int dateMsg=0x7f070035; + public static final int errorBadLoginMsg=0x7f070055; + public static final int errorConnectionMsg=0x7f070057; + public static final int errorCopyMsg_DB=0x7f070025; + public static final int errorMsgLaunchingActivity=0x7f070023; + public static final int errorMsgNoConnection=0x7f070026; + public static final int errorMsgWorkaroundEmulator=0x7f070024; + public static final int errorServerResponseMsg=0x7f070056; + public static final int errorTimeoutMsg=0x7f070058; + public static final int evaluation=0x7f070030; + public static final int examAnnouncement=0x7f070029; + public static final int falseMsg=0x7f07003b; public static final int firstRunMsg=0x7f070052; - public static final int forumReply=0x7f07002c; - public static final int fromMsg=0x7f070033; - public static final int initialDialogTitle=0x7f070051; + public static final int forumReply=0x7f07002d; + public static final int fromMsg=0x7f070034; + public static final int initialDialogTitle=0x7f070053; public static final int loginModuleLabel=0x7f070001; public static final int loginProgressDescription=0x7f07001a; public static final int loginProgressTitle=0x7f070019; - public static final int loginSuccessfulMsg=0x7f070027; + public static final int loginSuccessfulMsg=0x7f070028; public static final int loginTitle_menu=0x7f070018; - public static final int marksFile=0x7f070029; - public static final int message=0x7f07002b; - public static final int messageModuleLabel=0x7f070005; - public static final int messages=0x7f07002e; - public static final int noContentMsg=0x7f070036; - public static final int noCourseSelectedMsg=0x7f07003f; - public static final int noMsg=0x7f070038; - public static final int noQuestionsAvailableTestsDownloadMsg=0x7f070040; - public static final int noQuestionsPluggableTestsDownloadMsg=0x7f070041; - public static final int noSubjectMsg=0x7f070035; - public static final int notice=0x7f07002a; + public static final int marksFile=0x7f07002a; + public static final int message=0x7f07002c; + public static final int messageSendErrorMsg=0x7f07005b; + public static final int messageSendedMsg=0x7f07005a; + public static final int message_body_title=0x7f07005e; + public static final int message_receivers_title=0x7f07005c; + public static final int message_subject_title=0x7f07005d; + public static final int messages=0x7f07002f; + public static final int messagesModuleLabel=0x7f070005; + public static final int noContentMsg=0x7f070037; + public static final int noCourseSelectedMsg=0x7f070040; + public static final int noMsg=0x7f070039; + public static final int noQuestionsAvailableTestsDownloadMsg=0x7f070041; + public static final int noQuestionsPluggableTestsDownloadMsg=0x7f070042; + public static final int noSubjectMsg=0x7f070036; + public static final int notice=0x7f07002b; + public static final int notificationsDownloadedMsg=0x7f07001e; public static final int notificationsEmptyListMsg=0x7f07001d; public static final int notificationsModuleLabel=0x7f070002; public static final int notificationsProgressDescription=0x7f07001c; public static final int notificationsProgressTitle=0x7f07001b; public static final int organization_preferences=0x7f070017; public static final int preferencesTitle_menu=0x7f070013; - public static final int questionsTestsDownloadSuccesfulMsg=0x7f070042; + public static final int questionsTestsDownloadSuccesfulMsg=0x7f070043; public static final int saveMsg_preferences=0x7f070010; public static final int saveSummary_preferences=0x7f070011; public static final int saveTitle_preferences=0x7f070012; - public static final int selectCourseTitle=0x7f07003e; + public static final int selectCourseTitle=0x7f07003f; + public static final int sendMsg=0x7f07005f; + public static final int sendingMessageMsg=0x7f070059; public static final int set_preferences=0x7f070008; - public static final int survey=0x7f070031; - public static final int testAnswerTypesMsg=0x7f070049; - public static final int testEvaluateMsg=0x7f07004b; - public static final int testNoAnswerTypesSelectedMsg=0x7f07004a; - public static final int testNoDetailsMsg=0x7f07004f; - public static final int testNoQuestionsCourseMsg=0x7f070043; - public static final int testNoQuestionsMeetsSpecifiedCriteriaMsg=0x7f070045; - public static final int testNoQuestionsMsg=0x7f070044; - public static final int testNoResultsMsg=0x7f070050; - public static final int testNoTagsSelectedMsg=0x7f070048; - public static final int testNumQuestionsMsg=0x7f070046; - public static final int testResultsTextMsg=0x7f07004c; - public static final int testShowResultsDetailsMsg=0x7f07004e; - public static final int testShowResultsMsg=0x7f07004d; - public static final int testTagsMsg=0x7f070047; - public static final int testsDownloadProgressDescription=0x7f07001f; - public static final int testsDownloadProgressTitle=0x7f07001e; + public static final int survey=0x7f070032; + public static final int testAnswerTypesMsg=0x7f07004a; + public static final int testEvaluateMsg=0x7f07004c; + public static final int testNoAnswerTypesSelectedMsg=0x7f07004b; + public static final int testNoDetailsMsg=0x7f070050; + public static final int testNoQuestionsCourseMsg=0x7f070044; + public static final int testNoQuestionsMeetsSpecifiedCriteriaMsg=0x7f070046; + public static final int testNoQuestionsMsg=0x7f070045; + public static final int testNoResultsMsg=0x7f070051; + public static final int testNoTagsSelectedMsg=0x7f070049; + public static final int testNumQuestionsMsg=0x7f070047; + public static final int testResultsTextMsg=0x7f07004d; + public static final int testShowResultsDetailsMsg=0x7f07004f; + public static final int testShowResultsMsg=0x7f07004e; + public static final int testTagsMsg=0x7f070048; + public static final int testsDownloadProgressDescription=0x7f070020; + public static final int testsDownloadProgressTitle=0x7f07001f; public static final int testsModuleLabel=0x7f070004; public static final int title_error_dialog=0x7f070006; - public static final int trueMsg=0x7f070039; - public static final int unknownNotification=0x7f070032; - public static final int upgradeMsg=0x7f070053; - public static final int upgradeMsg_DB=0x7f070026; + public static final int trueMsg=0x7f07003a; + public static final int unknownNotification=0x7f070033; + public static final int upgradeMsg=0x7f070054; + public static final int upgradeMsg_DB=0x7f070027; public static final int userIDName_preferences=0x7f07000a; public static final int userIDSummary_preferences=0x7f07000b; public static final int userIDTitle_preferences=0x7f07000c; @@ -224,7 +240,7 @@ public final class R { public static final int userPasswordTitle_preferences=0x7f07000f; public static final int user_preferences=0x7f070009; public static final int versionTitle_preferences=0x7f070015; - public static final int yesMsg=0x7f070037; + public static final int yesMsg=0x7f070038; } public static final class xml { public static final int preferences=0x7f040000; diff --git a/SWADroid/res/drawable-hdpi/message_reply.png b/SWADroid/res/drawable-hdpi/message_reply.png new file mode 100644 index 00000000..841eb147 Binary files /dev/null and b/SWADroid/res/drawable-hdpi/message_reply.png differ diff --git a/SWADroid/res/drawable-ldpi/message_reply.png b/SWADroid/res/drawable-ldpi/message_reply.png new file mode 100644 index 00000000..b2248b43 Binary files /dev/null and b/SWADroid/res/drawable-ldpi/message_reply.png differ diff --git a/SWADroid/res/drawable-mdpi/message_reply.png b/SWADroid/res/drawable-mdpi/message_reply.png new file mode 100644 index 00000000..5fc78964 Binary files /dev/null and b/SWADroid/res/drawable-mdpi/message_reply.png differ diff --git a/SWADroid/res/layout/messages_dialog.xml b/SWADroid/res/layout/messages_dialog.xml new file mode 100644 index 00000000..a1f59eea --- /dev/null +++ b/SWADroid/res/layout/messages_dialog.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SWADroid/res/layout/notifications_list_item.xml b/SWADroid/res/layout/notifications_list_item.xml index 1224e3dd..c19ae353 100644 --- a/SWADroid/res/layout/notifications_list_item.xml +++ b/SWADroid/res/layout/notifications_list_item.xml @@ -8,7 +8,10 @@ + + + android:layout_height="wrap_content" + android:layout_width="match_parent" + android:orientation="vertical" + android:layout_marginTop="3dip" + android:layout_marginRight="6dip"> Notificaciones Asignaturas Tests - Enviar mensaje + Enviar mensaje ERROR Cerrar Configuración @@ -32,7 +32,7 @@ Notificaciones Obteniendo nuevas notificaciones... No se ha descargado ninguna notificación.\n\nPara descargar las - notificaciones más recientes pulse el icono de la esquina superior derecha de la pantalla. + notificaciones más recientes pulse el icono de la esquina superior derecha de la pantalla.Notificaciones descargadas Tests Sincronizando preguntas de test.\n\nDependiendo del número de preguntas a sincronizar, el procesamiento de los datos puede tardar unos minutos.\n\nPor favor, espere... @@ -102,4 +102,12 @@ Error durante la conexión con el servidor Tiempo de espera agotado intentando conectar con el servidor + Enviando mensaje... + Mensaje enviadoError al enviar el mensaje. Compruebe los datos introducidos + Destinatarios (separados por comas) + Asunto + Mensaje + Enviar + + \ No newline at end of file diff --git a/SWADroid/res/values/strings.xml b/SWADroid/res/values/strings.xml index cc953045..f9457ade 100644 --- a/SWADroid/res/values/strings.xml +++ b/SWADroid/res/values/strings.xml @@ -5,7 +5,7 @@ Notifications Courses Tests - Send message + Send message ERROR Close Preferences @@ -30,7 +30,7 @@ Notifications Retrieving new notifications... Did not download any notification.\n\nTo download most recent - notifications click the icon in the upper right of the screen. + notifications click the icon in the upper right of the screen.Notifications downloaded Tests Synchronizing test questions.\n\nDepending of the number of questions to synchronize, the data processing can take several minutes.\n\nPlease wait... @@ -87,16 +87,22 @@ Show details The teacher does not allow to see the details The teacher does not allow to see the results - IMPORTANT Before using the application for the first time you must enter the user name and password for SWAD at the setup screen.\n\nYou can access to the setup screen from the application menu anytime.\n\nDo you want to open the configuration screen now? - + IMPORTANT + Due to changes in the database all notifications data have been deleted.\n\nSorry. Incorrect user or password Error in server response Error while connecting to server Timeout trying to connect to the server + Sending message... + Message sended successfullyError while sending the message. Check the data in the message fields + Receivers (separated by comma) + Subject + Message + Send \ No newline at end of file diff --git a/SWADroid/src/es/ugr/swad/swadroid/Global.java b/SWADroid/src/es/ugr/swad/swadroid/Global.java index a89cac01..c1fc01a5 100644 --- a/SWADroid/src/es/ugr/swad/swadroid/Global.java +++ b/SWADroid/src/es/ugr/swad/swadroid/Global.java @@ -68,6 +68,10 @@ public class Global { * Request code for Tests module. */ public static final int TESTS_MAKE_REQUEST_CODE = 7; + /** + * Request code for Tests module. + */ + public static final int MESSAGES_REQUEST_CODE = 8; /** * Prefix tag name for Logcat */ diff --git a/SWADroid/src/es/ugr/swad/swadroid/SWADMain.java b/SWADroid/src/es/ugr/swad/swadroid/SWADMain.java index cf1397b8..ebf24cad 100644 --- a/SWADroid/src/es/ugr/swad/swadroid/SWADMain.java +++ b/SWADroid/src/es/ugr/swad/swadroid/SWADMain.java @@ -38,8 +38,8 @@ import android.view.View; import android.widget.ExpandableListView; import android.widget.ImageView; import android.widget.TextView; -import android.widget.Toast; import es.ugr.swad.swadroid.model.DataBaseHelper; +import es.ugr.swad.swadroid.modules.Messages; import es.ugr.swad.swadroid.modules.notifications.Notifications; import es.ugr.swad.swadroid.modules.tests.Tests; import es.ugr.swad.swadroid.ssl.SecureConnection; @@ -177,8 +177,11 @@ public class SWADMain extends ExpandableListActivity { } else if(keyword.equals(getString(R.string.testsModuleLabel))) { activity = new Intent(getBaseContext(), Tests.class); startActivityForResult(activity, Global.TESTS_REQUEST_CODE); - } else if(keyword.equals(getString(R.string.messageModuleLabel))) { - Toast.makeText(this, "Opción en desarrollo", Toast.LENGTH_SHORT).show(); + } else if(keyword.equals(getString(R.string.messagesModuleLabel))) { + //Toast.makeText(this, "Opción en desarrollo", Toast.LENGTH_SHORT).show(); + activity = new Intent(getBaseContext(), Messages.class); + activity.putExtra("notificationCode", new Long(0)); + startActivityForResult(activity, Global.MESSAGES_REQUEST_CODE); } return true; @@ -226,7 +229,7 @@ public class SWADMain extends ExpandableListActivity { messagesData.add(map); map = new HashMap(); - map.put(NAME, getString(R.string.messageModuleLabel) ); + map.put(NAME, getString(R.string.messagesModuleLabel) ); map.put(IMAGE, getResources().getDrawable(R.drawable.msg)); messagesData.add(map); diff --git a/SWADroid/src/es/ugr/swad/swadroid/modules/Messages.java b/SWADroid/src/es/ugr/swad/swadroid/modules/Messages.java new file mode 100644 index 00000000..f6a6c183 --- /dev/null +++ b/SWADroid/src/es/ugr/swad/swadroid/modules/Messages.java @@ -0,0 +1,202 @@ +/* + * This file is part of SWADroid. + * + * Copyright (C) 2010 Juan Miguel Boyero Corral + * + * SWADroid is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * SWADroid is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with SWADroid. If not, see . + */ +package es.ugr.swad.swadroid.modules; + +import java.io.IOException; +import java.security.NoSuchAlgorithmException; + +import org.ksoap2.SoapFault; +import org.xmlpull.v1.XmlPullParserException; + +import es.ugr.swad.swadroid.Global; +import es.ugr.swad.swadroid.R; +import es.ugr.swad.swadroid.model.User; +import android.app.Dialog; +import android.os.Bundle; +import android.util.Log; +import android.view.View; +import android.view.View.OnClickListener; +import android.widget.Button; +import android.widget.EditText; +import android.widget.LinearLayout.LayoutParams; +import android.widget.Toast; + +/** + * Module for send messages. + * @author Juan Miguel Boyero Corral + */ +public class Messages extends Module { + /** + * Messages tag name for Logcat + */ + public static final String TAG = Global.APP_TAG + " Messages"; + /** + * Message code + */ + private Long notificationCode; + /** + * Message's receivers + */ + private String receivers; + /** + * Message's subject + */ + private String subject; + /** + * Message's body + */ + private String body; + private Dialog messageDialog; + private OnClickListener positiveClickListener = new OnClickListener() { + public void onClick(View v) { + try { + if(isDebuggable) { + Log.d(TAG, "notificationCode = " + Long.toString(notificationCode)); + } + + runConnection(); + } catch (Exception ex) { + String errorMsg = getString(R.string.errorServerResponseMsg); + error(errorMsg); + + if(isDebuggable) { + Log.e(ex.getClass().getSimpleName(), errorMsg); + ex.printStackTrace(); + } + } + } + }; + private OnClickListener negativeClickListener = new OnClickListener() { + public void onClick(View v) { + finish(); + } + }; + + /* (non-Javadoc) + * @see es.ugr.swad.swadroid.modules.Module#onCreate(android.os.Bundle) + */ + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setMETHOD_NAME("sendMessage"); + } + + /* (non-Javadoc) + * @see es.ugr.swad.swadroid.modules.Module#onStart() + */ + @Override + protected void onStart() { + messageDialog = new Dialog(this); + Button acceptButton, cancelButton; + EditText receiversText, subjectText; + + super.onStart(); + notificationCode = getIntent().getLongExtra("notificationCode", 0); + + messageDialog.setTitle(R.string.messagesModuleLabel); + messageDialog.setContentView(R.layout.messages_dialog); + messageDialog.setCancelable(true); + + messageDialog.getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); + + acceptButton = (Button) messageDialog.findViewById(R.id.message_button_accept); + acceptButton.setOnClickListener(positiveClickListener); + + cancelButton = (Button) messageDialog.findViewById(R.id.message_button_cancel); + cancelButton.setOnClickListener(negativeClickListener); + + if(notificationCode != 0) { + subject = getIntent().getStringExtra("summary"); + + receiversText = (EditText) messageDialog.findViewById(R.id.message_receivers_text); + subjectText = (EditText) messageDialog.findViewById(R.id.message_subject_text); + + subjectText.setText("Re: " + subject); + receiversText.setVisibility(View.GONE); + } + + messageDialog.show(); + } + + /* (non-Javadoc) + * @see es.ugr.swad.swadroid.modules.Module#onPause() + */ + @Override + protected void onPause() { + super.onPause(); + messageDialog.dismiss(); + } + + private void readData() { + EditText rcv = (EditText) messageDialog.findViewById(R.id.message_receivers_text); + receivers = rcv.getText().toString(); + + EditText subj = (EditText) messageDialog.findViewById(R.id.message_subject_text); + subject = subj.getText().toString(); + + EditText bd = (EditText) messageDialog.findViewById(R.id.message_body_text); + body = bd.getText().toString(); + } + + /* (non-Javadoc) + * @see es.ugr.swad.swadroid.modules.Module#requestService() + */ + @Override + protected void requestService() throws NoSuchAlgorithmException, + IOException, XmlPullParserException, SoapFault, + IllegalAccessException, InstantiationException { + + readData(); + + createRequest(); + addParam("wsKey", User.getWsKey()); + addParam("notificationCode", notificationCode); + addParam("to", receivers); + addParam("subject", subject); + addParam("body", body); + sendRequest(User.class, false); + + setResult(RESULT_OK); + } + + /* (non-Javadoc) + * @see es.ugr.swad.swadroid.modules.Module#connect() + */ + @Override + protected void connect() { + String progressDescription = getString(R.string.sendingMessageMsg); + int progressTitle = R.string.messagesModuleLabel; + + new Connect(false, progressDescription, progressTitle).execute(); + + Toast.makeText(this, R.string.sendingMessageMsg, Toast.LENGTH_SHORT).show(); + Log.i(TAG, getString(R.string.sendingMessageMsg)); + } + + /* (non-Javadoc) + * @see es.ugr.swad.swadroid.modules.Module#postConnect() + */ + @Override + protected void postConnect() { + Toast.makeText(this, R.string.messageSendedMsg, Toast.LENGTH_SHORT).show(); + Log.i(TAG, getString(R.string.messageSendedMsg)); + finish(); + } + +} diff --git a/SWADroid/src/es/ugr/swad/swadroid/modules/notifications/Notifications.java b/SWADroid/src/es/ugr/swad/swadroid/modules/notifications/Notifications.java index fa67c630..17289556 100644 --- a/SWADroid/src/es/ugr/swad/swadroid/modules/notifications/Notifications.java +++ b/SWADroid/src/es/ugr/swad/swadroid/modules/notifications/Notifications.java @@ -45,6 +45,7 @@ import android.widget.ImageButton; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; +import android.widget.Toast; /** * Notifications module for get user's notifications @@ -105,16 +106,8 @@ public class Notifications extends Module { TextView text; ListView list; OnItemClickListener clickListener = new OnItemClickListener() { - public void onItemClick(AdapterView av, View v, int arg2, - long arg3) { - - TextView content = (TextView) v.findViewById(R.id.eventText); - if(content.getVisibility() == View.VISIBLE) - { - content.setVisibility(View.GONE); - } else { - content.setVisibility(View.VISIBLE); - } + public void onItemClick(AdapterView av, View v, int position, long rowId) { + adapter.toggleContentVisibility(position); } }; @@ -193,8 +186,7 @@ public class Notifications extends Module { if (result != null) { //Stores notifications data returned by webservice response - @SuppressWarnings("rawtypes") - Vector res = (Vector) result; + Vector res = (Vector) result; SoapObject soap = (SoapObject) res.get(1); int csSize = soap.getPropertyCount(); for (int i = 0; i < csSize; i++) { @@ -240,7 +232,8 @@ public class Notifications extends Module { */ @Override protected void postConnect() { - refreshScreen(); + refreshScreen(); + Toast.makeText(this, R.string.notificationsDownloadedMsg, Toast.LENGTH_SHORT).show(); } /** diff --git a/SWADroid/src/es/ugr/swad/swadroid/modules/notifications/NotificationsCursorAdapter.java b/SWADroid/src/es/ugr/swad/swadroid/modules/notifications/NotificationsCursorAdapter.java index bf3827c0..97a45c80 100644 --- a/SWADroid/src/es/ugr/swad/swadroid/modules/notifications/NotificationsCursorAdapter.java +++ b/SWADroid/src/es/ugr/swad/swadroid/modules/notifications/NotificationsCursorAdapter.java @@ -21,11 +21,14 @@ package es.ugr.swad.swadroid.modules.notifications; import java.util.Date; import es.ugr.swad.swadroid.R; +import es.ugr.swad.swadroid.modules.Messages; import android.content.Context; +import android.content.Intent; import android.database.Cursor; import android.text.Html; import android.view.LayoutInflater; import android.view.View; +import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.CursorAdapter; import android.widget.ImageView; @@ -36,9 +39,18 @@ import android.widget.TextView; * @author Juan Miguel Boyero Corral * */ -public class NotificationsCursorAdapter extends CursorAdapter { +public class NotificationsCursorAdapter extends CursorAdapter { + private boolean [] contentVisible; + public NotificationsCursorAdapter(Context context, Cursor c) { super(context, c); + + int numRows = c.getCount(); + + contentVisible = new boolean[numRows]; + for(int i=0; i