wedroid/app/src/main/java/it/unisannio/ding/ids/wedroid/app/view/BoardViewActivity.java

232 lines
8.9 KiB
Java
Raw Normal View History

2019-12-29 18:06:12 +00:00
package it.unisannio.ding.ids.wedroid.app.view;
import android.content.Intent;
2019-12-31 13:53:08 +00:00
import android.graphics.Color;
import android.graphics.drawable.Drawable;
2019-12-29 18:06:12 +00:00
import android.os.Bundle;
import android.view.View;
2019-12-31 13:53:08 +00:00
import android.widget.ArrayAdapter;
2019-12-29 18:06:12 +00:00
import android.widget.Button;
2019-12-31 13:53:08 +00:00
import android.widget.ListView;
2019-12-29 18:06:12 +00:00
import android.widget.TextView;
2020-01-05 18:53:43 +00:00
import android.widget.Toast;
2019-12-29 18:06:12 +00:00
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
2019-12-31 13:53:08 +00:00
import androidx.appcompat.widget.Toolbar;
2020-01-06 21:47:04 +00:00
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
2019-12-31 13:53:08 +00:00
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.Objects;
2019-12-29 18:06:12 +00:00
import it.unisannio.ding.ids.wedroid.app.R;
import it.unisannio.ding.ids.wedroid.app.util.ServicesFactory;
import it.unisannio.ding.ids.wedroid.app.util.SharedPreferenceHelper;
import it.unisannio.ding.ids.wedroid.wrapper.entity.Board;
2019-12-31 13:53:08 +00:00
import it.unisannio.ding.ids.wedroid.wrapper.entity.User;
2019-12-29 18:06:12 +00:00
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
public class BoardViewActivity extends AppCompatActivity {
2020-01-05 18:53:43 +00:00
static final int WLISTS_REQUEST = 30;
private String idBoard, username, boardTitle;
private int boardColor;
private TextView description, members, permission, creationDate, lastModificationDate;
private View divider1, divider2, divider3;
private ListView listView;
private Button getListsButton;
2020-01-05 18:53:43 +00:00
private SharedPreferenceHelper sp;
private ServicesFactory service;
private Toolbar myToolbar;
private Board board;
2020-01-06 21:47:04 +00:00
private SwipeRefreshLayout swipeRefreshLayout;
2019-12-29 18:06:12 +00:00
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_board_view);
2020-01-16 18:00:58 +00:00
findViews();
2019-12-31 13:53:08 +00:00
setSupportActionBar(myToolbar);
2019-12-29 18:06:12 +00:00
2020-01-06 21:47:04 +00:00
swipeRefreshLayout.setRefreshing(false);
2019-12-29 18:06:12 +00:00
Intent i = getIntent();
idBoard = i.getStringExtra("idBoard");
2020-01-05 18:53:43 +00:00
2019-12-29 18:06:12 +00:00
sp = new SharedPreferenceHelper(this);
sp.setBoardId(idBoard);
initializeUI(idBoard);
2019-12-31 13:53:08 +00:00
getListsButton.setOnClickListener(new View.OnClickListener() {
2019-12-29 18:06:12 +00:00
@Override
public void onClick(View view) {
Intent i = new Intent(getApplicationContext(), WListsListActivity.class);
i.putExtra("idBoard", idBoard);
2020-01-02 19:03:26 +00:00
i.putExtra("barTitle", boardTitle);
i.putExtra("barColor", boardColor);
2020-01-05 18:53:43 +00:00
startActivityForResult(i, WLISTS_REQUEST);
2019-12-29 18:06:12 +00:00
}
});
2020-01-06 21:47:04 +00:00
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
initializeUI(idBoard);
swipeRefreshLayout.setRefreshing(false);
}
});
2019-12-29 18:06:12 +00:00
}
2020-01-16 18:00:58 +00:00
private void findViews() {
myToolbar = findViewById(R.id.my_toolbar);
getListsButton = findViewById(R.id.getLists);
description = findViewById(R.id.descriptionTxt);
members = findViewById(R.id.membersTxt);
permission = findViewById(R.id.permissionTxt);
creationDate = findViewById(R.id.createdDate);
lastModificationDate = findViewById(R.id.modifiedDate);
divider1 = findViewById(R.id.divider1);
divider2 = findViewById(R.id.divider2);
divider3 = findViewById(R.id.divider3);
listView = findViewById(R.id.listViewID);
swipeRefreshLayout = findViewById(R.id.pullToRefresh);
}
2019-12-29 18:06:12 +00:00
private void initializeUI(String idBoard) {
service = new ServicesFactory(sp);
service.getBoardService().getBoard(idBoard).enqueue(new Callback<Board>() {
@Override
2019-12-31 13:53:08 +00:00
public void onResponse(@NotNull Call<Board> call, @NotNull Response<Board> response) {
2020-01-06 21:47:04 +00:00
assert response.body() != null;
2019-12-31 13:53:08 +00:00
board = response.body();
if (board.getId() == null) {
2020-01-06 21:47:04 +00:00
Toast.makeText(
getApplicationContext(),
getApplicationContext().getString(R.string.board_deleted),
Toast.LENGTH_LONG)
.show();
getListsButton.setEnabled(false);
} else {
Objects.requireNonNull(getSupportActionBar()).setTitle(board.getTitle());
myToolbar.setBackgroundColor(Color.parseColor(encodeColor(
board.getBackgroundColor().toString())));
boardTitle = board.getTitle();
boardColor = Color.parseColor(encodeColor(
board.getBackgroundColor().toString()));
Drawable background = getListsButton.getBackground();
background.setTint(boardColor);
getListsButton.setBackgroundDrawable(background);
description.setText(board.getDescription());
permission.setText(board.getPermission().toString());
members.setText("");
for (int i = 0; i < board.getMembers().size(); i++) {
replaceIDUserToUsername(board.getMembers().get(i).getUserId());
}
creationDate.setText(R.string.created_at);
creationDate.append("\n"
+ board.getCreatedAt());
lastModificationDate.setText(R.string.modified_at);
lastModificationDate.append("\n"
+ board.getModifiedAt());
2020-01-06 21:47:04 +00:00
divider1.setBackgroundColor(boardColor);
divider2.setBackgroundColor(boardColor);
divider3.setBackgroundColor(boardColor);
ArrayList<String> labelsTitle = new ArrayList<>();
for (int i = 0; i < board.getLabels().size(); i++) {
labelsTitle.add(board.getLabels().get(i).getName());
}
ArrayAdapter<String> adapter = new ArrayAdapter<>(getApplicationContext(),
android.R.layout.simple_list_item_1, labelsTitle);
listView.setAdapter(adapter);
2020-01-15 20:49:50 +00:00
getListsButton.setEnabled(true);
2019-12-31 13:53:08 +00:00
}
}
@Override
public void onFailure(@NotNull Call<Board> call, @NotNull Throwable t) {
Toast.makeText(getApplicationContext(),
2020-01-15 20:49:50 +00:00
"connection error",
Toast.LENGTH_LONG).show();
2020-01-15 20:49:50 +00:00
getListsButton.setEnabled(false);
}
2019-12-31 13:53:08 +00:00
});
}
private String encodeColor(String color) {
2019-12-31 13:53:08 +00:00
String encodedColor;
if (color.equalsIgnoreCase("belize")) {
encodedColor = "#2980B9";
} else if (color.equalsIgnoreCase("nephritis")) {
encodedColor = "#27AE60";
} else if (color.equalsIgnoreCase("pomegranate")) {
encodedColor = "#C0392B";
} else if (color.equalsIgnoreCase("pumpkin")) {
encodedColor = "#E67E22";
} else if (color.equalsIgnoreCase("wisteria")) {
encodedColor = "#8E44AD";
} else if (color.equalsIgnoreCase("moderatepink")) {
encodedColor = "#CD5A91";
} else if (color.equalsIgnoreCase("strongcyan")) {
encodedColor = "#00AECC";
} else if (color.equalsIgnoreCase("dark")) {
encodedColor = "#2C3E51";
} else if (color.equalsIgnoreCase("midnight")) {
encodedColor = "#2C3E50";
} else if (color.equalsIgnoreCase("relax")) {
encodedColor = "#27AE61";
} else if (color.equalsIgnoreCase("corteza")) {
encodedColor = "#568BA2";
} else
2019-12-31 13:53:08 +00:00
encodedColor = "#38DF87";
return encodedColor;
}
private void replaceIDUserToUsername(String idUser) {
2019-12-31 13:53:08 +00:00
service = new ServicesFactory(sp);
service.getUserService().getUser(idUser).enqueue(new Callback<User>() {
@Override
public void onResponse(@NotNull Call<User> call, @NotNull Response<User> response) {
User u = response.body();
assert u != null;
username = u.getUsername();
if (u.isAdmin()) {
2019-12-31 13:53:08 +00:00
members.append("Admin: " + username + ";\n");
} else
2019-12-31 13:53:08 +00:00
members.append("Other member: " + username + ";\n");
}
@Override
2020-01-05 18:53:43 +00:00
public void onFailure(@NotNull Call<User> call, @NotNull Throwable t) {
2019-12-31 13:53:08 +00:00
//TODO
2019-12-29 18:06:12 +00:00
}
});
}
2020-01-05 18:53:43 +00:00
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == WLISTS_REQUEST) {
if (resultCode != WListsListActivity.RESULT_OK) {
Toast.makeText(this, "It's not possible view the lists",
Toast.LENGTH_LONG).show();
}
}
}
2019-12-29 18:06:12 +00:00
}