frequent recipient can be removed, and listener of users list has been corrected

This commit is contained in:
Rubén Martín Hidalgo 2016-08-21 19:06:15 +02:00
parent e00e1a9a89
commit 0456b8461a
2 changed files with 79 additions and 47 deletions

View File

@ -67,6 +67,20 @@ public class Messages extends Module {
* Messages tag name for Logcat
*/
private static final String TAG = Constants.APP_TAG + " Messages";
/**
* Constants to manage the frequents recipients
*/
private static final Double MIN_SCORE = 0.5;
private static final Double MAX_SCORE = 20.0;
private static final Double INITIAL_SCORE = 1.0;
private static final Double INCREASE_FACTOR = 1.2;
private static final Double DECREASE_FACTOR = 0.95;
/**
* Message code
*/
@ -337,28 +351,35 @@ public class Messages extends Module {
frequentsList = dbHelper.getAllRows(DataBaseHelper.DB_TABLE_FREQUENT_RECIPIENTS);
boolean frequent = false;
int newFrequents = 0;
double score;
for(int i=0; i < arrayReceivers.size(); i++){
for(int j=0; j < frequentsList.size(); j++){
if(frequentsList.get(j).getUserNickname().equals(arrayReceivers.get(i).toString())){
frequent = true;
frequentsList.get(j).setScore(frequentsList.get(j).getScore() * 1.2);
score = frequentsList.get(j).getScore() * INCREASE_FACTOR;
if(score > MAX_SCORE)
score = MAX_SCORE;
dbHelper.updateFrequentRecipient(frequentsList.get(j).getUserNickname(), score);
Log.d(TAG, "frequent user updated, score = " + score);
}
else{
frequentsList.get(j).setScore(frequentsList.get(j).getScore() * 0.95);
score = frequentsList.get(j).getScore() * DECREASE_FACTOR;
if(score < MIN_SCORE) {
dbHelper.removeAllRows(DataBaseHelper.DB_TABLE_FREQUENT_RECIPIENTS, "nicknameRecipient", frequentsList.get(j).getUserNickname());
Log.d(TAG, "frequent user removed");
}else {
dbHelper.updateFrequentRecipient(frequentsList.get(j).getUserNickname(), score);
Log.d(TAG, "frequent user updated, score = " + score);
}
}
}
if(frequent == false){
frequentsList.add(new FrequentUser(arrayReceivers.get(i), arrayReceiversSurNames1.get(i), arrayReceiversSurNames2.get(i), arrayReceiversFirstNames.get(i), arrayPhotos.get(i), false, 1));
frequentsList.add(new FrequentUser(arrayReceivers.get(i), arrayReceiversSurNames1.get(i), arrayReceiversSurNames2.get(i), arrayReceiversFirstNames.get(i), arrayPhotos.get(i), false, INITIAL_SCORE));
newFrequents++;
}
frequent = false;
}
for(int i=0; i < frequentsList.size()-newFrequents; i++){
dbHelper.updateFrequentRecipient(frequentsList.get(i).getUserNickname(), frequentsList.get(i).getScore());
Log.d(TAG, "frequent user updated, score = " + frequentsList.get(i).getScore());
}
for(int i=frequentsList.size()-newFrequents; i < frequentsList.size(); i++){
dbHelper.insertFrequentRecipient(frequentsList.get(i));
Log.d(TAG, "frequent user added = " + frequentsList.get(i).getScore());

View File

@ -228,31 +228,7 @@ public class SearchUsers extends Module implements SearchView.OnQueryTextListene
}
//checkbox is checked when the row of an user is clicked
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);
int index = arrayReceivers.indexOf(frequentUsers.getUsers().get(position).getUserNickname());
arrayReceivers.remove(index);
arrayReceiversFirstNames.remove(index);
arrayReceiversSurNames1.remove(index);
arrayReceiversSurNames2.remove(index);
arrayPhotos.remove(index);
//Toast.makeText(SearchUsers.this, R.string.user_deleted, Toast.LENGTH_SHORT).show();
}
else{
checkbox.setChecked(true);
arrayReceivers.add(frequentUsers.getUsers().get(position).getUserNickname());
arrayReceiversFirstNames.add(frequentUsers.getUsers().get(position).getUserFirstname());
arrayReceiversSurNames1.add(frequentUsers.getUsers().get(position).getUserSurname1());
arrayReceiversSurNames2.add(frequentUsers.getUsers().get(position).getUserSurname2());
arrayPhotos.add(frequentUsers.getUsers().get(position).getUserPhoto());
//Toast.makeText(SearchUsers.this, R.string.user_added, Toast.LENGTH_SHORT).show();
}
}
});
listenerFrequentUsers();
setMETHOD_NAME("findUsers");
}
@ -374,6 +350,9 @@ public class SearchUsers extends Module implements SearchView.OnQueryTextListene
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;
@ -511,6 +490,26 @@ public class SearchUsers extends Module implements SearchView.OnQueryTextListene
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) {
@ -536,22 +535,34 @@ public class SearchUsers extends Module implements SearchView.OnQueryTextListene
}
}
});
//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 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);
int index = arrayReceivers.indexOf(frequentUsers.getUsers().get(position).getUserNickname());
arrayReceivers.remove(index);
arrayReceiversFirstNames.remove(index);
arrayReceiversSurNames1.remove(index);
arrayReceiversSurNames2.remove(index);
arrayPhotos.remove(index);
//Toast.makeText(SearchUsers.this, R.string.user_deleted, Toast.LENGTH_SHORT).show();
}
else{
checkbox.setChecked(true);
arrayReceivers.add(frequentUsers.getUsers().get(position).getUserNickname());
arrayReceiversFirstNames.add(frequentUsers.getUsers().get(position).getUserFirstname());
arrayReceiversSurNames1.add(frequentUsers.getUsers().get(position).getUserSurname1());
arrayReceiversSurNames2.add(frequentUsers.getUsers().get(position).getUserSurname2());
arrayPhotos.add(frequentUsers.getUsers().get(position).getUserPhoto());
//Toast.makeText(SearchUsers.this, R.string.user_added, Toast.LENGTH_SHORT).show();
}
}
});
}
private void showSearchDialog(){