SWADroid/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/messages/SearchUsers.java
Javier Bueno López ab0898c571 Indoor Location new module (#287)
* Adding icons and text for manage location

* Adding manage location to main menu

* Adding class to manage location

* Adding view layout to manage location

* Share location switch created

* Basic listener added to switch

* Moving manage location to users menu

* Adding icons and text for manage location

* Adding manage location to main menu

* Adding class to manage location

* Adding view layout to manage location

* Share location switch created

* Basic listener added to switch

* Moving manage location to users menu

* Adding elements to indoor_location view

* Improving indoor_location with default text

* Logic to calculate distance

* Trying to connect to the API.

* Adding model to location distance

* Changing textview to listview

* Making request to MacStore API to get location of Mac

* Search user menu

* New designs manage location activity

* Connecting to swad api

* Connection to swad api working

* Location history showing up in activity

* Adding button and user code to find user

* Sorting locations and saving only one

* Implementing GetLastLocation API method

* Adding location preferences translations

* Adding translations to location menu toast

* Return without error from searching user

* Removing warning

* Adding translations

* Changing permissions

* Changing module name

* Making location serializable

* Changing deprecated implementation

* Cleaning code and refactoring deprecated classes

* Changing location name in menu

* Scanning all wifi networks

* Hiding white activities

* Showing more information in each location

* Fixing bug when searching user

* Fixing available networks sort

* Using roomCode instead of institutionCode

* Changes scheduling tasks

* Deleting dependencies

* Deleting useless import

* Getting correct mac

* Requesting permissions to user

* LocationTimeStamp inherits from Location

* Using new variable to soap object

* Setting const defaultValue

* Extracting common lines on update location click

* Extracting common lines on activity result

* Update SWADroid/src/main/res/values/strings.xml

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Update SWADroid/src/main/res/values/strings.xml

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Update SWADroid/src/main/res/values-es/strings.xml

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Using functions to reduce code

* Update SWADroid/src/main/res/values/strings.xml

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Update SWADroid/src/main/java/es/ugr/swad/swadroid/modules/indoorlocation/GetLastLocation.java

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Update SWADroid/src/main/java/es/ugr/swad/swadroid/model/UserFilter.java

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Update SWADroid/src/main/java/es/ugr/swad/swadroid/modules/indoorlocation/GetLocation.java

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Update SWADroid/src/main/java/es/ugr/swad/swadroid/modules/indoorlocation/GetLocation.java

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Update SWADroid/src/main/java/es/ugr/swad/swadroid/modules/indoorlocation/GetLocation.java

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Update SWADroid/src/main/java/es/ugr/swad/swadroid/modules/indoorlocation/IndoorLocation.java

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Update SWADroid/src/main/java/es/ugr/swad/swadroid/modules/indoorlocation/IndoorLocation.java

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Update SWADroid/src/main/java/es/ugr/swad/swadroid/modules/indoorlocation/IndoorLocation.java

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Update SWADroid/src/main/java/es/ugr/swad/swadroid/modules/indoorlocation/IndoorLocation.java

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Update SWADroid/src/main/java/es/ugr/swad/swadroid/modules/indoorlocation/IndoorLocation.java

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Update SWADroid/src/main/java/es/ugr/swad/swadroid/modules/indoorlocation/IndoorLocation.java

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Update SWADroid/src/main/java/es/ugr/swad/swadroid/modules/indoorlocation/IndoorLocation.java

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Update SWADroid/src/main/java/es/ugr/swad/swadroid/modules/indoorlocation/IndoorLocation.java

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Update SWADroid/src/main/java/es/ugr/swad/swadroid/modules/indoorlocation/IndoorLocation.java

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Constant moved to class level

* Update SWADroid/src/main/java/es/ugr/swad/swadroid/modules/indoorlocation/SendCurrentLocation.java

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Update SWADroid/src/main/java/es/ugr/swad/swadroid/modules/indoorlocation/SendCurrentLocation.java

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Update SWADroid/src/main/java/es/ugr/swad/swadroid/modules/indoorlocation/SendCurrentLocation.java

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Update SWADroid/src/main/java/es/ugr/swad/swadroid/modules/messages/SearchUsers.java

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Update SWADroid/src/main/res/values-es/strings.xml

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Update SWADroid/src/main/res/values-es/strings.xml

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Update SWADroid/src/main/res/values-es/strings.xml

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Update SWADroid/src/main/res/values-es/strings.xml

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Update SWADroid/src/main/res/values-es/strings.xml

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Update SWADroid/src/main/res/values-es/strings.xml

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Update SWADroid/src/main/res/values-es/strings.xml

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Update SWADroid/src/main/res/values/strings.xml

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Update SWADroid/src/main/res/values/strings.xml

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Update SWADroid/src/main/res/values/strings.xml

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Update SWADroid/src/main/res/values/strings.xml

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Update SWADroid/src/main/res/values/strings.xml

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Adding dependency to preferences

* Changing indoor location title text

* Showing text when no location is found

* Allow always location option

* Adding new button to show mac

* Find mac button added and working

* Stopping scheduler when user can't be located

* Update SWADroid/src/main/java/es/ugr/swad/swadroid/model/LocationTimeStamp.java

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Update SWADroid/src/main/java/es/ugr/swad/swadroid/model/LocationTimeStamp.java

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Update SWADroid/src/main/java/es/ugr/swad/swadroid/model/LocationTimeStamp.java

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Update SWADroid/src/main/res/xml/preferences.xml

Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>

* Update material version to 1.2.1

* Updating plugin

* Fixing API permissions

* Update gradle/wrapper/gradle-wrapper.properties

* Minor code style improvements

* Fix IndexOutOfBoundsException

* Add default locale to SimpleDateFormat

* Use complete Gradle distribution

* Update authors

* Update CHANGELOG

* Remove unused import

* Minor code style improvements

Co-authored-by: javibl8@correo.ugr.es <javier.bueno@jitkey.com>
Co-authored-by: Juan Miguel Boyero Corral <juanmi1982@gmail.com>
2020-10-14 19:50:20 +02:00

548 lines
20 KiB
Java

package es.ugr.swad.swadroid.modules.messages;
import android.annotation.TargetApi;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Configuration;
import android.graphics.Typeface;
import android.os.Build;
import android.os.Bundle;
import androidx.core.view.MenuItemCompat;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.SearchView;
import android.text.SpannableString;
import android.text.style.StyleSpan;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.CheckBox;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import org.ksoap2.serialization.SoapObject;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
import es.ugr.swad.swadroid.Constants;
import es.ugr.swad.swadroid.R;
import es.ugr.swad.swadroid.database.DataBaseHelper;
import es.ugr.swad.swadroid.gui.ProgressScreen;
import es.ugr.swad.swadroid.model.FrequentUser;
import es.ugr.swad.swadroid.model.User;
import es.ugr.swad.swadroid.model.UserFilter;
import es.ugr.swad.swadroid.modules.Module;
import es.ugr.swad.swadroid.modules.courses.Courses;
import es.ugr.swad.swadroid.modules.login.Login;
import es.ugr.swad.swadroid.webservices.SOAPClient;
/**
* Class for search users
* @see <a href="https://openswad.org/ws/#findUsers">findUsers</a>
*
* @author Rubén Martín Hidalgo
*/
public class SearchUsers extends Module implements SearchView.OnQueryTextListener {
/**
* SearchUsers tag name for Logcat
*/
private static final String TAG = Constants.APP_TAG + " SearchUsers";
/**
* SearchView to search users field
*/
private SearchView searchView;
/**
* Messages tag name for Logcat
*/
private MenuItem searchItem;
/**
* List of users
*/
private static ListView lvUsers;
/**
* Current text in searchView
*/
private String search;
/**
* Array of receivers
*/
private ArrayList<UserFilter> arrayReceivers;
/**
* Array of old receivers. It's used when we discard the users added
*/
private ArrayList<UserFilter> oldReceivers;
/**
* Adapter to show UserFilter in list
*/
private UsersAdapter adapter;
/**
* Adapter to show FrequentUser in list
*/
private FrequentUsersAdapter frequentAdapter;
/**
* Checkbox of every user
*/
private CheckBox checkbox;
/**
* List of UserFilter
*/
private UsersList usersFilter;
/**
* List of FrequentUser
*/
private FrequentUsersList frequentUsers;
/**
* Loading screen
*/
private ProgressScreen progressLayout;
/**
* True if buttons of ActionBar are hidden
*/
private boolean hideMenu = false;
/**
* Identifier of course to search users inside
*/
private long courseCode;
/**
* Number of users in user list
*/
private int numUsers;
/**
* Number of frequent users
*/
private int numFrequents;
/**
* Title of frequent users
*/
private TextView frequentUsersTitle;
/**
* Text to inform that there aren't frequent users
*/
private TextView frequentUsersText;
/**
* List where requests of database are saved
*/
private List<FrequentUser> frequentsList;
/**
* User logged identifier
*/
private String userLogged;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_users);
setTitle(R.string.actionBarAddUser);
userLogged = Login.getLoggedUser().getUserID();
usersFilter = new UsersList();
frequentUsers = new FrequentUsersList();
arrayReceivers = (ArrayList) getIntent().getSerializableExtra("receivers");
//save the old receivers
if (arrayReceivers != null) {
oldReceivers = (ArrayList) arrayReceivers.clone();
}
search = "";
//users list
lvUsers = (ListView) findViewById(R.id.listItems);
lvUsers.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
//loading screen
View mUsersListView = findViewById(R.id.layoutUsersList);
View mProgressScreenView = findViewById(R.id.progress_screen);
progressLayout = new ProgressScreen(mProgressScreenView, mUsersListView,
getString(R.string.loadingMsg), this);
//frequent users screen
frequentUsersTitle = (TextView) findViewById(R.id.listTitle);
//font title of frequent users in bold
SpannableString title = new SpannableString(frequentUsersTitle.getHint().toString());
title.setSpan(new StyleSpan(Typeface.BOLD), 0, title.length(), 0);
frequentUsersTitle.setHint(title);
frequentUsersText = (TextView) findViewById(R.id.listText);
frequentsList = dbHelper.getAllRows(DataBaseHelper.DB_TABLE_FREQUENT_RECIPIENTS, "idUser='" + userLogged + "'", "score DESC");
numFrequents = frequentsList.size();
if(numFrequents == 0) {
frequentUsersText.setVisibility(View.VISIBLE);
}
else{
frequentUsersText.setVisibility(View.GONE);
for(int i=0; i<numFrequents; i++){
String idUser = frequentsList.get(i).getidUser();
String nickname = frequentsList.get(i).getUserNickname();
String surname1 = frequentsList.get(i).getUserSurname1();
String surname2 = frequentsList.get(i).getUserSurname2();
String firstname = frequentsList.get(i).getUserFirstname();
String userPhoto = frequentsList.get(i).getUserPhoto();
int userCode = frequentsList.get(i).getUserCode();
boolean selected = frequentsList.get(i).getCheckbox();
Double score = frequentsList.get(i).getScore();
frequentUsers.saveUser(new FrequentUser(idUser, nickname, surname1, surname2, firstname, userPhoto, userCode, selected, score));
}
updateCheckboxesFrequentUsers();
frequentAdapter = new FrequentUsersAdapter(getBaseContext(), frequentUsers.getUsers());
lvUsers.setAdapter(frequentAdapter);
lvUsers.setVisibility(View.VISIBLE);
}
//checkbox is checked when the row of an user is clicked
listenerFrequentUsers();
setMETHOD_NAME("findUsers");
}
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.search_users_bar, menu);
searchItem = menu.findItem(R.id.action_search_field);
MenuItemCompat.setOnActionExpandListener(searchItem, new MenuItemCompat.OnActionExpandListener(){
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
if(arrayReceivers.equals(oldReceivers)) // there aren't new receivers added
sendReceivers(false);
else {
hideMenu = true;
invalidateOptionsMenu(); //reload the actionbar
showDiscardDialog(search);
}
return true;
}
});
searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
searchView.setQueryHint(getText(R.string.search_user));
// listener to searchview
searchView.setOnQueryTextListener(this);
searchView.setMaxWidth(Integer.MAX_VALUE);
searchView.setPadding(-20,0,0,0);
// searview expanded
searchItem.expandActionView();
// manage the actionbar when searchview is closed
if(hideMenu){
searchView.setVisibility(View.GONE);
}
searchView.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
//select checkboxes whose users were added before
updateCheckboxesUsersFilter();
}
});
return super.onCreateOptionsMenu(menu);
}
/*
* send receivers to parent activity
*/
private void sendReceivers(boolean send){
hideMenu = true;
invalidateOptionsMenu();
Intent intent = new Intent();
if(send){
intent.putExtra("receivers", arrayReceivers);
}else{
intent.putExtra("receivers", oldReceivers);
}
setResult(RESULT_OK, intent);
finish();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_search:
if(!search.equals("")) {
onQueryTextSubmit(search); //find users with string search
}
else if(numFrequents == 0) {
// shows frequent users
lvUsers.setVisibility(View.GONE);
frequentUsersTitle.setVisibility(View.VISIBLE);
frequentUsersText.setVisibility(View.VISIBLE);
}
else{
frequentUsersText.setVisibility(View.GONE);
updateCheckboxesFrequentUsers();
frequentAdapter = new FrequentUsersAdapter(getBaseContext(), frequentUsers.getUsers());
lvUsers.setAdapter(frequentAdapter);
lvUsers.setVisibility(View.VISIBLE);
//checkbox is checked when the row of an user is clicked
listenerFrequentUsers();
}
return true;
case R.id.confirm_receivers:
sendReceivers(true);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
@Override
public boolean onQueryTextSubmit(String query) {
String searchWithoutSpaces = search.replace(" ","");
if (searchWithoutSpaces.length() < 7){ //At least 7 characters
Toast.makeText(SearchUsers.this, R.string.introduceLongerText, Toast.LENGTH_SHORT).show();
}
else if (Courses.getSelectedCourseCode() != -1) {
//is not a guest user
showSearchDialog();
} else {
courseCode = -1;
runConnection();
}
return true;
}
@Override
public boolean onQueryTextChange(String newText) {
search = newText;
return true;
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
//select checkboxes who users were added before
updateCheckboxesUsersFilter();
updateCheckboxesFrequentUsers();
}
@Override
protected void requestService() throws Exception {
createRequest(SOAPClient.CLIENT_TYPE);
addParam("wsKey", Login.getLoggedUser().getWsKey());
addParam("courseCode", courseCode);
addParam("filter", search);
addParam("userRole", 0);
sendRequest(User.class, false);
if (result != null) {
ArrayList<?> res = new ArrayList<Object>((Vector<?>) result);
SoapObject soap = (SoapObject) res.get(1);
int csSize = soap.getPropertyCount();
usersFilter = new UsersList();
for (int i = 0; i < csSize; i++) {
SoapObject pii = (SoapObject) soap.getProperty(i);
String nickname = pii.getPrimitiveProperty("userNickname").toString(); //getPrimitive to get empty instead anytype{}
if (!nickname.isEmpty()) { //if user doesn't have a nickname, he will not appear in the list
String surname1 = pii.getPrimitiveProperty("userSurname1").toString();
String surname2 = pii.getPrimitiveProperty("userSurname2").toString();
String firstname = pii.getPrimitiveProperty("userFirstname").toString();
String userPhoto = pii.getPrimitiveProperty("userPhoto").toString();
int userCode = Integer.parseInt(pii.getPrimitiveProperty("userCode").toString());
boolean selected = false;
for(int j=0; j<arrayReceivers.size(); j++){
if(arrayReceivers.get(j).getUserNickname().equals(nickname)) {
selected = true;
j = arrayReceivers.size();
}
}
usersFilter.saveUser(new UserFilter(nickname, surname1, surname2, firstname, userPhoto, userCode, selected));
}
}
numUsers = usersFilter.getUsers().size();
Log.d(TAG, "numUsersSWAD = " + String.valueOf(csSize) + ", numUsersSWADroid = " + numUsers);
}
setResult(RESULT_OK);
}
@Override
protected void connect() {
searchView.clearFocus();
startConnection();
progressLayout.show();
}
@Override
protected void postConnect() {
frequentUsersTitle.setVisibility(View.GONE);
frequentUsersText.setVisibility(View.GONE);
progressLayout.hide();
adapter = new UsersAdapter(getBaseContext(), usersFilter.getUsers());
lvUsers.setAdapter(adapter);
lvUsers.setVisibility(View.VISIBLE);
//checkbox is checked when the row of an user is clicked
listenerUserList();
//toasts to inform about found users
if (numUsers == 0){
Toast.makeText(SearchUsers.this, R.string.users_NOTfound, Toast.LENGTH_SHORT).show();
}
else if (numUsers == 1) {
Toast.makeText(SearchUsers.this, String.valueOf(numUsers) + " " + getResources().getString(R.string.user_found), Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(SearchUsers.this, String.valueOf(numUsers) + " " + getResources().getString(R.string.users_found), Toast.LENGTH_SHORT).show();
}
}
@Override
protected void onError() {
}
private void listenerUserList() {
lvUsers.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
checkbox = (CheckBox) view.findViewById(R.id.check);
if (checkbox.isChecked()){
checkbox.setChecked(false);
for(int i=0; i<arrayReceivers.size(); i++) {
if (arrayReceivers.get(i).getUserNickname().equals(usersFilter.getUsers().get(position).getUserNickname()))
arrayReceivers.remove(i);
}
}
else{
checkbox.setChecked(true);
arrayReceivers.add(usersFilter.getUsers().get(position));
}
}
});
}
private void listenerFrequentUsers() {
lvUsers.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
checkbox = (CheckBox) view.findViewById(R.id.check);
if (checkbox.isChecked()){
checkbox.setChecked(false);
for(int i=0; i<arrayReceivers.size(); i++) {
if (arrayReceivers.get(i).getUserNickname().equals(frequentUsers.getUsers().get(position).getUserNickname()))
arrayReceivers.remove(i);
}
}
else{
checkbox.setChecked(true);
FrequentUser currentFrequent = frequentUsers.getUsers().get(position);
arrayReceivers.add(new UserFilter(currentFrequent.getUserNickname(), currentFrequent.getUserSurname1(), currentFrequent.getUserSurname2(), currentFrequent.getUserFirstname(), currentFrequent.getUserPhoto(), currentFrequent.getUserCode(), currentFrequent.getCheckbox()));
}
}
});
}
private void updateCheckboxesUsersFilter(){
boolean selected;
String nickname;
for(int i=0; i<numUsers; i++){
for(int j=0; j<arrayReceivers.size(); j++){
nickname = usersFilter.getUsers().get(i).getUserNickname();
selected = arrayReceivers.get(j).getUserNickname().equals(nickname);
if(selected)
j = arrayReceivers.size();
usersFilter.getUsers().get(i).setCheckbox(selected);
}
}
}
private void updateCheckboxesFrequentUsers(){
boolean selected;
String nickname;
for(int i=0; i<numFrequents; i++){
for(int j=0; j<arrayReceivers.size(); j++){
nickname = frequentUsers.getUsers().get(i).getUserNickname();
selected = arrayReceivers.get(j).getUserNickname().equals(nickname);
frequentUsers.getUsers().get(i).setCheckbox(selected);
}
}
}
private void showSearchDialog(){
final String[] choiceList = {getString(R.string.in_subject) + " " + Courses.getSelectedCourseShortName(), getString(R.string.inAllPlatform)};
AlertDialog.Builder builder = new AlertDialog.Builder(SearchUsers.this);
builder.setTitle(R.string.where_to_search);
builder.setCancelable(false);
builder.setSingleChoiceItems(choiceList, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int item) {
}
});
builder.setNegativeButton(getString(R.string.cancelMsg), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
builder.setPositiveButton(getString(R.string.acceptMsg), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
int selectedPosition = ((AlertDialog)dialog).getListView().getCheckedItemPosition();
if (selectedPosition == 0)
courseCode = Courses.getSelectedCourseCode();
else
courseCode = -1;
runConnection();
}
});
AlertDialog alert = builder.create();
alert.show();
}
private void showDiscardDialog(final String search){
AlertDialog.Builder builder = new AlertDialog.Builder(SearchUsers.this);
builder.setTitle(R.string.areYouSure);
builder.setMessage(R.string.cancelSendReceivers);
builder.setCancelable(true);
builder.setNegativeButton(getString(R.string.cancelMsg), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
hideMenu = false;
invalidateOptionsMenu();
searchView.setIconified(false);
searchView.setQuery(search, false);
}
});
builder.setPositiveButton(getString(R.string.discardMsg), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
sendReceivers(false);
}
});
AlertDialog alert = builder.create();
alert.show();
}
}