From baced120f905ba0752e277ec726bde9f2d4b8e59 Mon Sep 17 00:00:00 2001 From: Umberto Furno Date: Sun, 29 Dec 2019 19:06:12 +0100 Subject: [PATCH] Add view Board and WLists v1 --- app/src/main/AndroidManifest.xml | 13 ++- .../ding/ids/wedroid/app/DriverActivity.java | 46 +++++++++ .../wedroid/app/view/BoardViewActivity.java | 66 +++++++++++++ .../wedroid/app/view/WListsListActivity.java | 48 +++++++++ .../app/view/adapter/WListsAdapter.java | 99 +++++++++++++++++++ .../app/viewModel/WListsListViewModel.java | 40 ++++++++ .../main/res/layout/activity_board_view.xml | 35 +++++++ app/src/main/res/layout/activity_main.xml | 36 +++++-- .../main/res/layout/activity_wlists_view.xml | 20 ++++ .../res/layout/wlist_recyclerview_item.xml | 12 +++ app/src/main/res/values/dimens.xml | 3 + app/src/main/res/values/styles.xml | 10 ++ 12 files changed, 419 insertions(+), 9 deletions(-) create mode 100644 app/src/main/java/it/unisannio/ding/ids/wedroid/app/DriverActivity.java create mode 100644 app/src/main/java/it/unisannio/ding/ids/wedroid/app/view/BoardViewActivity.java create mode 100644 app/src/main/java/it/unisannio/ding/ids/wedroid/app/view/WListsListActivity.java create mode 100644 app/src/main/java/it/unisannio/ding/ids/wedroid/app/view/adapter/WListsAdapter.java create mode 100644 app/src/main/java/it/unisannio/ding/ids/wedroid/app/viewModel/WListsListViewModel.java create mode 100644 app/src/main/res/layout/activity_board_view.xml create mode 100644 app/src/main/res/layout/activity_wlists_view.xml create mode 100644 app/src/main/res/layout/wlist_recyclerview_item.xml create mode 100644 app/src/main/res/values/dimens.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 253fb67..b493584 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,21 +1,30 @@ + + + - + android:theme="@style/AppTheme" + tools:ignore="GoogleAppIndexingWarning"> + + + \ No newline at end of file diff --git a/app/src/main/java/it/unisannio/ding/ids/wedroid/app/DriverActivity.java b/app/src/main/java/it/unisannio/ding/ids/wedroid/app/DriverActivity.java new file mode 100644 index 0000000..94011c4 --- /dev/null +++ b/app/src/main/java/it/unisannio/ding/ids/wedroid/app/DriverActivity.java @@ -0,0 +1,46 @@ +package it.unisannio.ding.ids.wedroid.app; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; + +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; + +import it.unisannio.ding.ids.wedroid.app.util.SharedPreferenceHelper; +import it.unisannio.ding.ids.wedroid.app.view.BoardViewActivity; + +public class DriverActivity extends AppCompatActivity { + + SharedPreferenceHelper sharedPreferences; + EditText idBoard; + Button send; + + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + sharedPreferences = new SharedPreferenceHelper(this); + + String baseUrl = sharedPreferences.getBaseUrl(); + String token = sharedPreferences.getToken(); + String userId = sharedPreferences.getUserId(); + + sharedPreferences.setBaseUrl("https://board.norangeb.it/"); + sharedPreferences.setToken("4waGrVlk0fkLhiQRDgN_rkbIamp4IyB6mThS0IpKbPx"); + sharedPreferences.setUserId(""); + + idBoard = findViewById(R.id.idBoard); + + send= findViewById(R.id.send); + send.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent i = new Intent(getApplicationContext(), BoardViewActivity.class); + i.putExtra("idBoard", idBoard.getText().toString()); + startActivity(i); + } + }); + } +} diff --git a/app/src/main/java/it/unisannio/ding/ids/wedroid/app/view/BoardViewActivity.java b/app/src/main/java/it/unisannio/ding/ids/wedroid/app/view/BoardViewActivity.java new file mode 100644 index 0000000..a25cdc5 --- /dev/null +++ b/app/src/main/java/it/unisannio/ding/ids/wedroid/app/view/BoardViewActivity.java @@ -0,0 +1,66 @@ +package it.unisannio.ding.ids.wedroid.app.view; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; + +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; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +public class BoardViewActivity extends AppCompatActivity { + + TextView boardTitle; + Button getLists; + SharedPreferenceHelper sp; + ServicesFactory service; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_board_view); + + Intent i = getIntent(); + final String idBoard= i.getStringExtra("idBoard"); + boardTitle = findViewById(R.id.title_board); + getLists = findViewById(R.id.getLists); + + sp = new SharedPreferenceHelper(this); + sp.setBoardId(idBoard); + + initializeUI(idBoard); + + getLists.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent i = new Intent(getApplicationContext(), WListsListActivity.class); + i.putExtra("idBoard", idBoard); + startActivity(i); + } + }); + } + + private void initializeUI(String idBoard) { + service = new ServicesFactory(sp); + service.getBoardService().getBoard(idBoard).enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + boardTitle.setText(boardTitle.getText().toString() + response.body().getTitle()); + } + + @Override + public void onFailure(Call call, Throwable t) { + boardTitle.setText(t.toString()); + } + }); + } +} diff --git a/app/src/main/java/it/unisannio/ding/ids/wedroid/app/view/WListsListActivity.java b/app/src/main/java/it/unisannio/ding/ids/wedroid/app/view/WListsListActivity.java new file mode 100644 index 0000000..5ae01d7 --- /dev/null +++ b/app/src/main/java/it/unisannio/ding/ids/wedroid/app/view/WListsListActivity.java @@ -0,0 +1,48 @@ +package it.unisannio.ding.ids.wedroid.app.view; + +import android.os.Bundle; + +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import java.util.List; + +import it.unisannio.ding.ids.wedroid.app.R; +import it.unisannio.ding.ids.wedroid.app.data.entity.WList; +import it.unisannio.ding.ids.wedroid.app.util.PreferenceReader; +import it.unisannio.ding.ids.wedroid.app.util.SharedPreferenceHelper; +import it.unisannio.ding.ids.wedroid.app.view.adapter.WListsAdapter; +import it.unisannio.ding.ids.wedroid.app.viewModel.WListsListViewModel; + +public class WListsListActivity extends AppCompatActivity { + + private WListsListViewModel viewModel; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_wlists_view); + + PreferenceReader reader =new SharedPreferenceHelper(this); + + RecyclerView recyclerView = findViewById(R.id.recyclerviewWList); + final WListsAdapter adapter = new WListsAdapter(this); + recyclerView.setAdapter(adapter); + recyclerView.setLayoutManager(new LinearLayoutManager(this)); + //linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); + //recyclerView.setHasFixedSize(true); + + viewModel = new ViewModelProvider(this).get(WListsListViewModel.class); + + viewModel.getAllWLists().observe(this, new Observer>() { + @Override + public void onChanged(List wLists) { + adapter.setWLists(wLists); + } + }); + } +} diff --git a/app/src/main/java/it/unisannio/ding/ids/wedroid/app/view/adapter/WListsAdapter.java b/app/src/main/java/it/unisannio/ding/ids/wedroid/app/view/adapter/WListsAdapter.java new file mode 100644 index 0000000..11dd361 --- /dev/null +++ b/app/src/main/java/it/unisannio/ding/ids/wedroid/app/view/adapter/WListsAdapter.java @@ -0,0 +1,99 @@ +package it.unisannio.ding.ids.wedroid.app.view.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import java.util.List; + +import it.unisannio.ding.ids.wedroid.app.R; +import it.unisannio.ding.ids.wedroid.app.data.entity.WList; + +public class WListsAdapter extends RecyclerView.Adapter { + + private final LayoutInflater mInflater; + private List mWLists; // Cached copy of words + public WListsAdapter(Context context) { mInflater = LayoutInflater.from(context); } + + class WListViewHolder extends RecyclerView.ViewHolder{ + private final TextView wListItemView; + private WListViewHolder(View itemView){ + super(itemView); + wListItemView= itemView.findViewById(R.id.wListTitle); + } + } + + @NonNull + @Override + public WListViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View itemView = mInflater.inflate(R.layout.wlist_recyclerview_item, parent, false); + return new WListViewHolder(itemView); + } + + @Override + public void onBindViewHolder(@NonNull WListViewHolder holder, int position) { + if (mWLists != null) { + WList current = mWLists.get(position); + holder.wListItemView.setText(current.getTitle()); + } else { + // Covers the case of data not being ready yet. + holder.wListItemView.setText("No wList"); + } + } + + @Override + public int getItemCount() { + if (mWLists != null) + return mWLists.size(); + else return 0; + } + + public void setWLists(List wList){ + mWLists = wList; + notifyDataSetChanged(); + } + +} + +/** Vecchia versione + private List wLists; + private Context context; + + public WListsAdapter(Context context, List wLists){ + this.wLists = wLists; + this.context = context; + } + + public class WListViewHolder extends RecyclerView.ViewHolder { + private TextView title; + public WListViewHolder(View itemView) { + super(itemView); + title = (TextView) itemView.findViewById(R.id.zWListTitle); + } + } + + @NonNull + @Override + public WListViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View itemView = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.z_wlist_recycle_item, parent, false); + return new WListViewHolder(itemView); + } + + @Override + public void onBindViewHolder(@NonNull WListViewHolder holder, int position) { + WList wList = wLists.get(position); + holder.title.setText(wList.getTitle()); + + } + + @Override + public int getItemCount() { + return 0; + } + **/ diff --git a/app/src/main/java/it/unisannio/ding/ids/wedroid/app/viewModel/WListsListViewModel.java b/app/src/main/java/it/unisannio/ding/ids/wedroid/app/viewModel/WListsListViewModel.java new file mode 100644 index 0000000..651aea3 --- /dev/null +++ b/app/src/main/java/it/unisannio/ding/ids/wedroid/app/viewModel/WListsListViewModel.java @@ -0,0 +1,40 @@ +package it.unisannio.ding.ids.wedroid.app.viewModel; + +import android.app.Application; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LiveData; + +import java.util.List; + +import it.unisannio.ding.ids.wedroid.app.data.database.WListDatabase; +import it.unisannio.ding.ids.wedroid.app.data.entity.WList; +import it.unisannio.ding.ids.wedroid.app.data.repository.WListRepository; +import it.unisannio.ding.ids.wedroid.app.util.PreferenceReader; +import it.unisannio.ding.ids.wedroid.app.util.ServicesFactory; +import it.unisannio.ding.ids.wedroid.app.util.SharedPreferenceHelper; + + +public class WListsListViewModel extends AndroidViewModel { + private WListRepository wListRepository; + private LiveData> allWLists; + + public WListsListViewModel(@NonNull Application application) { + super(application); + PreferenceReader reader = new SharedPreferenceHelper(application); + wListRepository = new WListRepository( + WListDatabase.getDatabase(application).wListDao(), + ServicesFactory.Companion.getInstance(reader).getListService(), + reader); + allWLists = wListRepository.getAllWLists(); + } + + public LiveData> getAllWLists(){ + return allWLists; + } + + public void refresh() { + wListRepository.synchronize(); + } +} diff --git a/app/src/main/res/layout/activity_board_view.xml b/app/src/main/res/layout/activity_board_view.xml new file mode 100644 index 0000000..8d379e7 --- /dev/null +++ b/app/src/main/res/layout/activity_board_view.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + +