diff --git a/app/src/main/java/com/example/cosmosclient/resources/GroupsRest.java b/app/src/main/java/com/example/cosmosclient/resources/GroupsRest.java index 34ebcfc..70b976e 100644 --- a/app/src/main/java/com/example/cosmosclient/resources/GroupsRest.java +++ b/app/src/main/java/com/example/cosmosclient/resources/GroupsRest.java @@ -15,6 +15,7 @@ import retrofit2.http.FormUrlEncoded; import retrofit2.http.GET; import retrofit2.http.POST; +import retrofit2.http.PUT; import retrofit2.http.Path; import retrofit2.http.Query; @@ -24,13 +25,17 @@ @FormUrlEncoded Call createGroup(@Field("name") String name, @Field("uId") String uId, @Field("token") String token); - @GET("groups/{gId}/requests") - Call getRequestsListByGid(@Path("gId") String gId, @Query("token") String token, @Query("detail") boolean detail, @Query("quantity") int quantity); - @POST("groups/{gId}/requests") @FormUrlEncoded Call addRequests(@Path("gId") String gId, @Field("uId") String uId, @Field("product") String product, @Field("deadline") String deadline, @Field("location") int location, @Field("token") String token); + @GET("groups/{gId}/requests") + Call getRequestsListByGid(@Path("gId") String gId, @Query("token") String token, @Query("detail") boolean detail, @Query("quantity") int quantity); + + @PUT("groups/{gId}/requests/{rId}") + @FormUrlEncoded + Call updateRequest(@Path("gId") String gId, @Path("rId") String rId, @Field("uId") String uId, @Field("product") String product, @Field("deadline") String deadline, @Field("location") int location, @Field("done") boolean done, @Field("token") String token); + // @GET("{gId}/requests/{rId}") // Call getRequestsDetailByGidAndRid(@Path("gid") String gid, @Path("rid") String rid, @Query("token") String token); diff --git a/app/src/main/java/com/example/cosmosclient/views/AddRequestActivity.java b/app/src/main/java/com/example/cosmosclient/views/AddRequestActivity.java index cc32455..465353e 100644 --- a/app/src/main/java/com/example/cosmosclient/views/AddRequestActivity.java +++ b/app/src/main/java/com/example/cosmosclient/views/AddRequestActivity.java @@ -138,7 +138,7 @@ //retrofitの処理 final Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/") -// .baseUrl("http://localhost:8080/") +// .baseUrl("http://10.0.2.2:8080/") .addConverterFactory(JacksonConverterFactory.create()) .build(); diff --git a/app/src/main/java/com/example/cosmosclient/views/RequestListActivity.java b/app/src/main/java/com/example/cosmosclient/views/RequestListActivity.java index 1a223bd..e557dd3 100644 --- a/app/src/main/java/com/example/cosmosclient/views/RequestListActivity.java +++ b/app/src/main/java/com/example/cosmosclient/views/RequestListActivity.java @@ -2,6 +2,7 @@ import android.annotation.TargetApi; import android.content.Intent; +import android.graphics.Color; import android.os.Build; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; @@ -16,6 +17,7 @@ import android.support.v7.widget.Toolbar; import android.view.MenuItem; import android.view.ViewGroup; +import android.widget.Button; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TableLayout; @@ -25,6 +27,7 @@ import com.example.cosmosclient.R; import com.example.cosmosclient.app.Cosmos; +import com.example.cosmosclient.entities.AddRequestsResponse; import com.example.cosmosclient.entities.Request; import com.example.cosmosclient.entities.Requests; import com.example.cosmosclient.resources.GroupsRest; @@ -35,6 +38,7 @@ import java.util.Collections; import java.util.Comparator; import java.util.Date; +import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.TimeZone; @@ -50,6 +54,16 @@ public class RequestListActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { + //retrofitの処理 + final Retrofit retrofit = new Retrofit.Builder() + .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/") +// .baseUrl("http://10.0.2.2:8080/") + .addConverterFactory(JacksonConverterFactory.create()) + .build(); + + //interfaceから実装を取得 + final GroupsRest requestsService = retrofit.create(GroupsRest.class); + Toast toast; //動作テスト用 //Request List @@ -71,9 +85,14 @@ Collator collator = Collator.getInstance(Locale.JAPANESE); -// TableLayout requesttable = (TableLayout)findViewById(R.id.RequestList); + TableLayout requesttable; // TableLayout accomplishedRequesttable = (TableLayout)findViewById(R.id.RequestList); + HashMap selectedRequestList = new HashMap<>(); + + Button deleteButton; + Button accomplishButton; + //productOnClick public View.OnClickListener productOnClick = new View.OnClickListener() { @Override @@ -183,7 +202,7 @@ } }; - //locationOnClick + //nameOnClick public View.OnClickListener nameOnClick = new View.OnClickListener() { @Override public void onClick(View view) { @@ -218,12 +237,98 @@ }; //requestListRowOnClick -// public View.OnClickListener requestListRowOnClick = new View.OnClickListener() { -// @Override -// public void onClick(View view) { + public View.OnLongClickListener requestListRowOnClick = new View.OnLongClickListener() { + @Override + public boolean onLongClick(View view) { + if(!deleteButton.isShown()) { + deleteButton.setVisibility(View.VISIBLE); + accomplishButton.setVisibility(View.VISIBLE); + + deleteButton.setClickable(true); + accomplishButton.setClickable(true); + + deleteButton.setOnClickListener(deleteOnClick); + accomplishButton.setOnClickListener(accomplishOnClick); + } + // requesttable.removeView(view); -// } -// }; + for(View selectedRow : selectedRequestList.values()) { + if(view.equals(selectedRow)) { + selectedRequestList.remove(selectedRow); + view.setBackgroundColor(Color.rgb(255, 255, 255)); + Toast.makeText(RequestListActivity.this, view + " Reset Clicked!", Toast.LENGTH_SHORT).show(); + return false; + } + } + selectedRequestList.put(requesttable.indexOfChild(view), view); + view.setBackgroundColor(Color.rgb(200, 200, 200)); + Toast.makeText(RequestListActivity.this, requesttable.indexOfChild(view) + "row Clicked!", Toast.LENGTH_SHORT).show(); + return false; + } + }; + + //nameOnClick + public View.OnClickListener deleteOnClick = new View.OnClickListener() { + @Override + public void onClick(View view) { + } + }; + + //nameOnClick + public View.OnClickListener accomplishOnClick = new View.OnClickListener() { + @Override + public void onClick(View view) { + + //RequestList取得するための必要な情報 + Cosmos app = (Cosmos) getApplication(); + final String gId = app.getCurentGroup().getgId(); + final String uId = app.getuId(); + final String token = app.getToken(); + + for(Integer i : selectedRequestList.keySet()) { + Request request = requests.getRequest(i - 1); + String deadline = null; + if(request.getDeadline() != null) { + deadline = String.format("%d-%02d-%02d %02d:%02d:%02d", request.getDeadline().getYear(), request.getDeadline().getMonth() + 1, request.getDeadline().getDate() + 1, 23, 59, 59); + } + final Call updateReqestCall = requestsService.updateRequest(gId, request.getrId(), uId, request.getProduct(), deadline, request.getLocation(), true, token); + requests.removeRequest(i - 1); + + //サーバからのレスポンス + updateReqestCall.enqueue(new Callback() { + //成功時 + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()) { + AddRequestsResponse result = response.body(); + Toast.makeText(RequestListActivity.this, "RequestListを達成しました", Toast.LENGTH_SHORT).show(); + + ResetRequestListTable(); + AddRequestListTable(requests); + } else { + try { + System.out.println(response.errorBody().string()); + } catch (IOException e) { + e.printStackTrace(); + } + + //onFailureでキャッチできないエラーの処理 + Toast.makeText(RequestListActivity.this, "通信エラー", Toast.LENGTH_SHORT).show(); + } + } + + //失敗時 + @Override + public void onFailure(Call call, Throwable t) { + t.printStackTrace(); + Toast.makeText(RequestListActivity.this, "RequestListの達成失敗しました", Toast.LENGTH_SHORT).show(); + } + }); + } + deleteButton.setVisibility(View.INVISIBLE); + accomplishButton.setVisibility(View.INVISIBLE); + } + }; //productSortComparator public Comparator productSortComparator = new Comparator() { @@ -234,6 +339,7 @@ }; //deadlineSortComparator + //!null処理 public Comparator deadlineSortComparator = new Comparator() { @Override public int compare(Request r1, Request r2) { @@ -300,6 +406,8 @@ NavigationView navigationView = (NavigationView) findViewById(R.id.request_list_nav_view); navigationView.setNavigationItemSelectedListener(this); + requesttable = (TableLayout)findViewById(R.id.RequestList); + productView = (LinearLayout) findViewById(R.id.product); productView.setOnClickListener(productOnClick); @@ -311,6 +419,12 @@ nameView = (LinearLayout)findViewById(R.id.name); nameView.setOnClickListener(nameOnClick); + + deleteButton = findViewById(R.id.buttonDelete); + deleteButton.setVisibility(View.INVISIBLE); + + accomplishButton = findViewById(R.id.buttonAccomplish); + accomplishButton.setVisibility(View.INVISIBLE); } @Override @@ -318,14 +432,14 @@ super.onStart(); //retrofitの処理 - final Retrofit retrofit = new Retrofit.Builder() - .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/") +// final Retrofit retrofit = new Retrofit.Builder() +//// .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/") // .baseUrl("http://10.0.2.2:8080/") - .addConverterFactory(JacksonConverterFactory.create()) - .build(); +// .addConverterFactory(JacksonConverterFactory.create()) +// .build(); - //interfaceから実装を取得 - final GroupsRest requestsService = retrofit.create(GroupsRest.class); +// //interfaceから実装を取得 +// final GroupsRest requestsService = retrofit.create(GroupsRest.class); //RequestList取得するための必要な情報 Cosmos app = (Cosmos) getApplication(); @@ -416,7 +530,7 @@ @TargetApi(Build.VERSION_CODES.O) private void AddRequestListTable(Requests requests) { Date now = new Date(); - TableLayout requesttable = (TableLayout)findViewById(R.id.RequestList); +// TableLayout requesttable = (TableLayout)findViewById(R.id.RequestList); requesttable.setShrinkAllColumns(true); for (int i = 0; i < requests.getRequestCount(); i++) { @@ -465,7 +579,7 @@ textName.setGravity(Gravity.CENTER); tableRow.addView(textName, new TableRow.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT)); -// tableRow.setOnClickListener(requestListRowOnClick); + tableRow.setOnLongClickListener(requestListRowOnClick); requesttable.addView(tableRow); } diff --git a/app/src/main/res/layout/content_request_list.xml b/app/src/main/res/layout/content_request_list.xml index c894494..329f873 100644 --- a/app/src/main/res/layout/content_request_list.xml +++ b/app/src/main/res/layout/content_request_list.xml @@ -46,18 +46,18 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" - android:stretchColumns="0, 1, 2, 3" - android:shrinkColumns="0, 1, 2, 3" android:layout_marginStart="15dp" - android:layout_marginTop="20dp" android:layout_marginLeft="15dp" - android:layout_marginRight="15dp"> + android:layout_marginTop="20dp" + android:layout_marginEnd="15dp" + android:layout_marginRight="15dp" + android:shrinkColumns="0, 1, 2, 3" + android:stretchColumns="0, 1, 2, 3"> + android:layout_height="wrap_content"> +