diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e7f88df..b01b4b0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -5,17 +5,18 @@ + diff --git a/app/src/main/java/com/example/cosmosclient/entities/AddRequestsResponse.java b/app/src/main/java/com/example/cosmosclient/entities/AddRequestsResponse.java new file mode 100644 index 0000000..e7d164d --- /dev/null +++ b/app/src/main/java/com/example/cosmosclient/entities/AddRequestsResponse.java @@ -0,0 +1,16 @@ +package com.example.cosmosclient.entities; + +import java.util.Date; +import java.util.HashSet; +import java.util.Set; + +public class AddRequestsResponse { + public String rId; + public String uri; + public String product; + public Date date; + public Date deadline; + public int location; + public boolean done; + public String issuerUid; +} diff --git a/app/src/main/java/com/example/cosmosclient/entities/MemberListResponse.java b/app/src/main/java/com/example/cosmosclient/entities/MemberListResponse.java new file mode 100644 index 0000000..6606c3b --- /dev/null +++ b/app/src/main/java/com/example/cosmosclient/entities/MemberListResponse.java @@ -0,0 +1,10 @@ +package com.example.cosmosclient.entities; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.Set; + +public class MemberListResponse { + public ArrayList member = new ArrayList<>(); + +} diff --git a/app/src/main/java/com/example/cosmosclient/entities/Request.java b/app/src/main/java/com/example/cosmosclient/entities/Request.java index 8524945..a323c01 100644 --- a/app/src/main/java/com/example/cosmosclient/entities/Request.java +++ b/app/src/main/java/com/example/cosmosclient/entities/Request.java @@ -1,25 +1,34 @@ package com.example.cosmosclient.entities; +import com.fasterxml.jackson.annotation.JsonIgnore; + import java.util.Date; public class Request { private String rId; private String uri; - private Date date; - private String IssuerUid; +// private String IssuerUid; + private UserJsonforRequests issuer; private String product; + private Date date; private Date deadline; - // private String location; +// private String location; private int location; - private String name; //消 - private boolean done = false; + private boolean done; - public Request(String product, Date deadline, int location, String name) { + public Request() { + } + + public Request(String rId, String uri/*, UserJsonforRequests issuer*/, String product, Date date, Date deadline, int location, String name, boolean done) { + this.rId = rId; + this.uri = uri; +// this.issuer = issuer; this.product = product; + this.date = date; this.deadline = deadline; this.location = location; - this.name = name; + this.done = done; } public String getrId() { @@ -30,6 +39,22 @@ this.rId = rId; } + public String getUri() { + return uri; + } + + public void setUri(String uri) { + this.uri = uri; + } + + public UserJsonforRequests getIssuer() { + return issuer; + } + + public void setIssuer(UserJsonforRequests issuer) { + this.issuer = issuer; + } + public String getProduct() { return product; } @@ -38,6 +63,14 @@ this.product = product; } + public Date getDate() { + return date; + } + + public void setDate(Date date) { + this.date = date; + } + public Date getDeadline() { return deadline; } @@ -54,12 +87,11 @@ this.location = location; } - public String getName() { - return name; + public boolean isDone() { + return done; } - public void setName(String name) { - this.name = name; + public void setDone(boolean done) { + this.done = done; } - -} \ No newline at end of file +} diff --git a/app/src/main/java/com/example/cosmosclient/entities/Requests.java b/app/src/main/java/com/example/cosmosclient/entities/Requests.java new file mode 100644 index 0000000..df14a88 --- /dev/null +++ b/app/src/main/java/com/example/cosmosclient/entities/Requests.java @@ -0,0 +1,52 @@ +package com.example.cosmosclient.entities; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +import java.util.ArrayList; +import java.util.List; + +public class Requests { + private List requests; + + public Requests() { + + } + + public Requests(List requests) { + this.requests = requests; + } + + public List getRequests() { + return requests; + } + + public void setRequests(List requests) { + this.requests = requests; + } + + public void addRequests(Request r) { + requests.add(r); + } + + public Request getRequest(int index) { + return requests.get(index); + } + + public void clearRequest() { + requests.clear(); + } + + public void removeRequest(int index) { + requests.remove(index); + } + + public int getRequestCount() { + return requests.size(); + } + +// @Override +// public boolean equals(Object other) { +// if (!(other instanceof Container)) return false; +// return components.equals(((Container)other).components); +// } +} diff --git a/app/src/main/java/com/example/cosmosclient/entities/SigninResponse.java b/app/src/main/java/com/example/cosmosclient/entities/SigninResponse.java index 8600404..53700f8 100644 --- a/app/src/main/java/com/example/cosmosclient/entities/SigninResponse.java +++ b/app/src/main/java/com/example/cosmosclient/entities/SigninResponse.java @@ -2,5 +2,5 @@ public class SigninResponse { public String token; - public String uId; +// public String uId; } diff --git a/app/src/main/java/com/example/cosmosclient/entities/UserJsonforRequests.java b/app/src/main/java/com/example/cosmosclient/entities/UserJsonforRequests.java new file mode 100644 index 0000000..bf816eb --- /dev/null +++ b/app/src/main/java/com/example/cosmosclient/entities/UserJsonforRequests.java @@ -0,0 +1,80 @@ +package com.example.cosmosclient.entities; + +import java.util.HashSet; +import java.util.Set; + +public class UserJsonforRequests { + + /** + * USER用のクラス + * + * @param uId string //LONGに変更 + * @param uri String + * @param name String + * @param iconUri String iconの保存先 + * @param login Boolean トークンが存在するか否か + * @param tokens String userが持トークン一覧 + * + */ + + public String uId, uri, name, iconUri; + //仕様ではStringを返すため + //public Set tokens = new HashSet<>(); + //public Set tokens = new HashSet<>(); + + public UserJsonforRequests() { + + } + + public UserJsonforRequests(String name, String uId, String uri, String iconUri) { + setuId(uId); + setUri(uri); + setName(name); + setIconUri(iconUri); + } + + public String getuId() { + return uId; + } + + public void setuId(String uId) { + this.uId = uId; + } + + public String getUri() { + return uri; + } + + public void setUri(String uri) { + this.uri = uri; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getIconUri() { + return iconUri; + } + + public void setIconUri(String iconUri) { + this.iconUri = iconUri; + } + + /* + * //仕様ではStringで返すため + * public Set getTokens(){ + * return tokens; + * } + * public void setTokens(Set tokens){ + * this.tokens=tokens; + * } + * public void addToken (String token){ + * tokens.add(token); + * } + */ +} 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 95244ff..47e300f 100644 --- a/app/src/main/java/com/example/cosmosclient/resources/GroupsRest.java +++ b/app/src/main/java/com/example/cosmosclient/resources/GroupsRest.java @@ -1,19 +1,26 @@ package com.example.cosmosclient.resources; +import com.example.cosmosclient.entities.AddRequestsResponse; import com.example.cosmosclient.entities.CreateGroupResponse; import com.example.cosmosclient.entities.Group; +import com.example.cosmosclient.entities.MemberListResponse; import com.example.cosmosclient.entities.Request; +import com.example.cosmosclient.entities.Requests; +import com.example.cosmosclient.entities.User; import java.util.ArrayList; +import java.util.Date; import retrofit2.Call; import retrofit2.http.Field; import retrofit2.http.FormUrlEncoded; import retrofit2.http.GET; import retrofit2.http.POST; +import retrofit2.http.PUT; import retrofit2.http.Path; import retrofit2.http.Query; + public interface GroupsRest { @GET("groups") Call getGroups(@Field("uId") String uId, @Field("token") String token); @@ -22,10 +29,21 @@ @FormUrlEncoded Call createGroup(@Field("name") String name, @Field("uId") String uId, @Field("token") String token); -// @GET("/{gId}/requests") -// Call> getRequestsListByGid(@Path("gid") String gid, @Query("token") String token); -// + @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); + @GET("groups/{gId}/members") + Call getMemberListByGid(@Path("gId") String gId, @Query("token") String token); + } diff --git a/app/src/main/java/com/example/cosmosclient/resources/UsersRest.java b/app/src/main/java/com/example/cosmosclient/resources/UsersRest.java index 754b307..b05522c 100644 --- a/app/src/main/java/com/example/cosmosclient/resources/UsersRest.java +++ b/app/src/main/java/com/example/cosmosclient/resources/UsersRest.java @@ -22,5 +22,5 @@ @POST("users") @FormUrlEncoded - Call createUser(@Field("name") String name, @Field("pw") String pw, @Field("icon-image") String icon_image); + Call createUser(@Field("name") String name, @Field("pw") String pw, @Field("iconImage") String icon_image); } diff --git a/app/src/main/java/com/example/cosmosclient/views/AddMemberActivity.java b/app/src/main/java/com/example/cosmosclient/views/AddMemberActivity.java index 92cc9ec..0446342 100644 --- a/app/src/main/java/com/example/cosmosclient/views/AddMemberActivity.java +++ b/app/src/main/java/com/example/cosmosclient/views/AddMemberActivity.java @@ -15,6 +15,8 @@ import android.widget.TextView; import com.example.cosmosclient.R; +import com.example.cosmosclient.app.Cosmos; +import com.example.cosmosclient.entities.Group; public class AddMemberActivity extends AppCompatActivity implements AdapterView.OnItemClickListener { @@ -35,7 +37,13 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_add_member); - + /*ここからグループ名表示*/ + TextView groupName = findViewById(R.id.groupName); + //現在のグループ情報を格納しているものからgIdを取得 + Cosmos app = (Cosmos) getApplication(); + Group curentGroup = app.getCurentGroup(); + groupName.setText(curentGroup.getName()); + /*終了*/ // ListViewのインスタンスを生成 ListView listView = findViewById(R.id.list_view); 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 5a1622f..465353e 100644 --- a/app/src/main/java/com/example/cosmosclient/views/AddRequestActivity.java +++ b/app/src/main/java/com/example/cosmosclient/views/AddRequestActivity.java @@ -3,6 +3,7 @@ import android.app.DatePickerDialog; import android.content.Context; import android.os.Bundle; +import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.view.KeyEvent; import android.view.View; @@ -14,23 +15,32 @@ import android.widget.EditText; import android.widget.ImageButton; import android.widget.Spinner; +import android.widget.Toast; import com.example.cosmosclient.R; -import com.example.cosmosclient.entities.Request; +import com.example.cosmosclient.app.Cosmos; +import com.example.cosmosclient.entities.AddRequestsResponse; +import com.example.cosmosclient.resources.GroupsRest; import com.example.cosmosclient.yolp.Yolp; -import java.sql.Date; +import java.io.IOException; import java.util.Calendar; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; +import retrofit2.Retrofit; +import retrofit2.converter.jackson.JacksonConverterFactory; + public class AddRequestActivity extends AppCompatActivity { private InputMethodManager inputMethodManager; private ImageButton calenderButton; - private int curYear; - private int curMonth; - private int curDayOfMonth; + private Integer deadlineYear; + private Integer deadlineMonth; + private Integer deadlineDayOfMonth; private EditText editTextProduct; private EditText editTextDeadline; @@ -76,9 +86,9 @@ @Override public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { - curYear = year; - curMonth = month; - curDayOfMonth = dayOfMonth; + deadlineYear = year; + deadlineMonth = month; + deadlineDayOfMonth = dayOfMonth; //setした日付を取得して表示 editTextDeadline.setText(String.format("%d / %02d / %02d", year, month+1, dayOfMonth)); @@ -114,48 +124,71 @@ addButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { -// //retrofitの処理 -// final Retrofit retrofit = new Retrofit.Builder() -// .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/") -// .addConverterFactory(JacksonConverterFactory.create()) -// .build(); -// -// //interfaceから実装を取得 -// final GroupsRest requestsService = retrofit.create(GroupsRest.class); -// -// Call call = requestsService.getRequestsListByGid(); -// //サーバからのレスポンス -// call.enqueue(new Callback() { -// //成功時 -// @Override -// public void onResponse(Call call, Response response) { -// if (response.isSuccessful()) { -// Request result = response.body(); -// -// //app/Cosmosに情報保存 -// Cosmos app = (Cosmos) getApplication(); -// -// Toast.makeText(RequestListActivity.this, "RequestListに追加しました", Toast.LENGTH_SHORT).show(); -// } else { -// //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(); -// } -// }); + //ボタン連打防止 + addButton.setEnabled(false); + new Handler().postDelayed(new Runnable() { + public void run() { + addButton.setEnabled(true); + } + }, 3000L); // エディットテキストのテキストを取得 String inputProduct = editTextProduct.getText().toString(); - // 取得したテキストを TextView に張り付ける - RequestListActivity.requestlist.add(0, (new Request(inputProduct, new Date(curYear, curMonth, curDayOfMonth), Yolp.getInstance().getCodeBySubcategory(selectedSubCategory), "a-hongo"))); - finish(); + //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 addRequestsService = retrofit.create(GroupsRest.class); + + //RequestList取得するための必要な情報 + Cosmos app = (Cosmos) getApplication(); + final String uId = app.getuId(); + final String gId = app.getCurentGroup().getgId(); + final String token = app.getToken(); + final boolean detail = true; + String deadline = null; + + if(deadlineYear != null && deadlineMonth != null && deadlineDayOfMonth != null) { + deadline = String.format("%d-%02d-%02d %02d:%02d:%02d", deadlineYear, deadlineMonth +1, deadlineDayOfMonth, 23, 59, 59); + } + Call call = addRequestsService.addRequests(gId, uId, inputProduct, deadline, Yolp.getInstance().getCodeBySubcategory(selectedSubCategory), token); +// Call call = addRequestsService.addRequests(gId, uId, inputProduct, new Date(deadlineYear, deadlineMonth, deadlineDayOfMonth), Yolp.getInstance().getCodeBySubcategory(selectedSubCategory), token); +// Call call = addRequestsService.addRequests(gId, uId, inputProduct, Yolp.getInstance().getCodeBySubcategory(selectedSubCategory), token); + + //サーバからのレスポンス + call.enqueue(new Callback() { + //成功時 + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()) { + AddRequestsResponse result = response.body(); + finish(); + + Toast.makeText(AddRequestActivity.this, "RequestListに追加しました", Toast.LENGTH_SHORT).show(); + } else { + try { + System.out.println(response.errorBody().string()); + } catch (IOException e) { + e.printStackTrace(); + } + + //onFailureでキャッチできないエラーの処理 + Toast.makeText(AddRequestActivity.this, "通信エラー", Toast.LENGTH_SHORT).show(); + } + } + + //失敗時 + @Override + public void onFailure(Call call, Throwable t) { + t.printStackTrace(); + Toast.makeText(AddRequestActivity.this, "RequestListの追加失敗しました", Toast.LENGTH_SHORT).show(); + } + }); } }); diff --git a/app/src/main/java/com/example/cosmosclient/views/DisplayGroupIDActivity.java b/app/src/main/java/com/example/cosmosclient/views/DisplayGroupIDActivity.java index 09cc020..c078659 100644 --- a/app/src/main/java/com/example/cosmosclient/views/DisplayGroupIDActivity.java +++ b/app/src/main/java/com/example/cosmosclient/views/DisplayGroupIDActivity.java @@ -21,7 +21,7 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_display_group_id); - + TextView groupName = findViewById(R.id.groupName); EditText groupID = (EditText)findViewById(R.id.groupID); // ボタンを設定 Button copyButton = findViewById(R.id.copy_Button); @@ -30,6 +30,8 @@ // //現在のグループ情報を格納しているものからgIdを取得 Cosmos app = (Cosmos) getApplication(); Group curentGroup = app.getCurentGroup(); + groupName.setText(curentGroup.getName()); + // //元となるgIdを取得完了 final String gId = curentGroup.getgId(); // final String gId = "vrehngortis"; diff --git a/app/src/main/java/com/example/cosmosclient/views/DisplayQRActivity.java b/app/src/main/java/com/example/cosmosclient/views/DisplayQRActivity.java index 6daa9d1..ab24efc 100644 --- a/app/src/main/java/com/example/cosmosclient/views/DisplayQRActivity.java +++ b/app/src/main/java/com/example/cosmosclient/views/DisplayQRActivity.java @@ -5,6 +5,7 @@ import android.os.Bundle; import android.util.AndroidRuntimeException; import android.widget.ImageView; +import android.widget.TextView; import com.example.cosmosclient.R; import com.example.cosmosclient.app.Cosmos; @@ -19,9 +20,12 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_display_qr); + TextView groupName = findViewById(R.id.groupName); //現在のグループ情報を格納しているものからgIdを取得 Cosmos app = (Cosmos) getApplication(); Group curentGroup = app.getCurentGroup(); + groupName.setText(curentGroup.getName()); + //元となるgIdを取得完了 String data = curentGroup.getgId(); diff --git a/app/src/main/java/com/example/cosmosclient/views/JoinGroupByIDActivity.java b/app/src/main/java/com/example/cosmosclient/views/JoinGroupByIDActivity.java index d62ef21..d6c8dda 100644 --- a/app/src/main/java/com/example/cosmosclient/views/JoinGroupByIDActivity.java +++ b/app/src/main/java/com/example/cosmosclient/views/JoinGroupByIDActivity.java @@ -67,21 +67,30 @@ @Override public void onResponse(Call call, Response response) { if (response.isSuccessful()) { -// JoinGroupResponse result = response.body(); //成功時 - JoinGroupResponse result = response.body(); - Group g = new Group(result.gId,result.uri,result.name,uId); + final JoinGroupResponse result = response.body(); + //追加ボタンに関する記述 + test.setText(result.name); + Button AddBtn = (Button)findViewById(R.id.Addbutton); + AddBtn.setVisibility(View.VISIBLE); - //app/CosmosにgIdを保存 - Cosmos app = (Cosmos)getApplication(); - app.setCurrentGroup(g); + AddBtn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Group g = new Group(result.gId, result.uri, result.name, uId); - Intent intent = new Intent(getApplication(), RequestListActivity.class); - startActivity(intent); - //ここで成功の処理を記述 - finish(); + //app/CosmosにgIdを保存 + Cosmos app = (Cosmos) getApplication(); + app.setCurrentGroup(g); - } else { + Intent intent = new Intent(getApplication(), RequestListActivity.class); + startActivity(intent); + finish(); + + } + }); + + }else { //onFailureでキャッチできないエラー用 //ここでエラーの処理を記述 test.setText("失敗"); diff --git a/app/src/main/java/com/example/cosmosclient/views/ListViewAdapter.java b/app/src/main/java/com/example/cosmosclient/views/ListViewAdapter.java index 850be3f..64113fa 100644 --- a/app/src/main/java/com/example/cosmosclient/views/ListViewAdapter.java +++ b/app/src/main/java/com/example/cosmosclient/views/ListViewAdapter.java @@ -10,6 +10,8 @@ import com.example.cosmosclient.R; +import java.util.ArrayList; + public class ListViewAdapter extends BaseAdapter { static class ViewHolder { TextView textView; @@ -73,3 +75,5 @@ return 0; } } + + diff --git a/app/src/main/java/com/example/cosmosclient/views/MemberListActivity.java b/app/src/main/java/com/example/cosmosclient/views/MemberListActivity.java new file mode 100644 index 0000000..ad97c66 --- /dev/null +++ b/app/src/main/java/com/example/cosmosclient/views/MemberListActivity.java @@ -0,0 +1,147 @@ +package com.example.cosmosclient.views; + +import android.content.Intent; +import android.content.SharedPreferences; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.net.Uri; +import android.support.design.widget.FloatingActionButton; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.util.Base64; +import android.view.View; +import android.widget.AdapterView; +import android.widget.BaseAdapter; +import android.widget.Button; +import android.widget.ListView; +import android.widget.TextView; +import android.widget.Toast; + +import com.example.cosmosclient.R; +import com.example.cosmosclient.app.Cosmos; +import com.example.cosmosclient.entities.Group; +import com.example.cosmosclient.entities.MemberListResponse; +import com.example.cosmosclient.entities.User; +import com.example.cosmosclient.resources.GroupsRest; + +import java.io.ByteArrayOutputStream; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.Set; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; +import retrofit2.Retrofit; +import retrofit2.converter.jackson.JacksonConverterFactory; + +public class MemberListActivity extends AppCompatActivity { + private int count; + private ArrayList userName = new ArrayList<>(); + private ArrayList userIcon = new ArrayList<>(); + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_member_list); + /*ここからグループ名表示*/ + TextView groupName = findViewById(R.id.groupName); + + //メンバー追加ボタン処理 + FloatingActionButton fab = findViewById(R.id.addrequest_button); + fab.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + startActivity(new Intent(MemberListActivity.this, + AddMemberActivity.class)); + finish(); + } + }); + + //app/CosmosにGETメソッドに必要なデータを取得 + Cosmos app = (Cosmos) getApplication(); + //現在のグループ情報を格納しているものからgIdを取得 + Group curentGroup = app.getCurentGroup(); + groupName.setText(curentGroup.getName()); + final String token = app.getToken(); + final String gId = app.getCurentGroup().getgId(); + + // ListViewのインスタンスを生成 + final ListView listView = findViewById(R.id.list_view); + + //retrofitの処理 + final Retrofit retrofit = new Retrofit.Builder() + .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/") + .addConverterFactory(JacksonConverterFactory.create()) + .build(); + //interfaceから実装を取得 + final GroupsRest MemberListService = retrofit.create(GroupsRest.class); + + //API呼び出しのための値入力 + final Call call = MemberListService.getMemberListByGid(gId,token); + + //サーバからデータ受け取り + call.enqueue(new Callback() { + //成功時 + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()) { + MemberListResponse result = response.body(); + +// Iterator it = result.member.iterator(); +// int i = 0; + + //画像をBase64に変換 + Bitmap icon = BitmapFactory.decodeResource(getResources(),R.drawable.default_icon_image); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + icon.compress(Bitmap.CompressFormat.JPEG,100, baos); + byte[] b = baos.toByteArray(); + String imageEncoded = Base64.encodeToString(b, Base64.DEFAULT); + + +// while(it.hasNext()){ +// userName.add(it.next().name); +// if(it.next().iconUri != null) { +// userIcon.add(it.next().iconUri); +// }else{ +// userIcon.add(String.valueOf(icon)); +// } +// i++; +// } + + //アイコンが未設定ならデフォルト画像を設定 + for(int i = 0; i call, Throwable t) { + t.printStackTrace(); + Toast.makeText(MemberListActivity.this, + "メンバー情報取得失敗", Toast.LENGTH_SHORT).show(); + } + }); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/cosmosclient/views/MemberListAdapter.java b/app/src/main/java/com/example/cosmosclient/views/MemberListAdapter.java new file mode 100644 index 0000000..c532a6c --- /dev/null +++ b/app/src/main/java/com/example/cosmosclient/views/MemberListAdapter.java @@ -0,0 +1,102 @@ +package com.example.cosmosclient.views; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.util.Base64; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import com.example.cosmosclient.R; + +import java.util.ArrayList; + +public class MemberListAdapter extends BaseAdapter { + static class ViewHolder { + TextView textView; + ImageView imageView; + } + private LayoutInflater inflater; + private int itemLayoutId; + + private ArrayList memberName = new ArrayList<>(); + private ArrayList memberIcon = new ArrayList<>(); + + MemberListAdapter(Context context, int itemLayoutId, + ArrayList scenes, ArrayList photos) { + super(); + ArrayList b = new ArrayList<>(); + Bitmap bitmap; + this.inflater = (LayoutInflater) + context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + this.itemLayoutId = itemLayoutId; + + for(int i = 0; i scenes) { +// //アイコン無し動作用 +// super(); +// this.inflater = (LayoutInflater) +// context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); +// this.itemLayoutId = itemLayoutId; +// this.memberName = scenes; +// } + + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + MemberListAdapter.ViewHolder holder; + // 最初だけ View を inflate して、それを再利用する + if (convertView == null) { + // activity_main.xml に list.xml を inflate して convertView とする + convertView = inflater.inflate(itemLayoutId, parent, false); + // ViewHolder を生成 + holder = new MemberListAdapter.ViewHolder(); + holder.textView = convertView.findViewById(R.id.textView); + holder.imageView = convertView.findViewById(R.id.imageView); + convertView.setTag(holder); + } + // holder を使って再利用 + else { + holder = (MemberListAdapter.ViewHolder) convertView.getTag(); + } + + // holder の imageView にセット + holder.imageView.setImageBitmap(memberIcon.get(position)); + // 現在の position にあるファイル名リストを holder の textView にセット + holder.textView.setText(memberName.get(position)); + + return convertView; + } + + @Override + public int getCount() { + // texts 配列の要素数 + return memberName.size(); + } + + @Override + public Object getItem(int position) { + return null; + } + + @Override + public long getItemId(int position) { + return 0; + } + +} diff --git a/app/src/main/java/com/example/cosmosclient/views/QRcodeReadingActivity.java b/app/src/main/java/com/example/cosmosclient/views/QRcodeReadingActivity.java index 94c6750..957fee5 100644 --- a/app/src/main/java/com/example/cosmosclient/views/QRcodeReadingActivity.java +++ b/app/src/main/java/com/example/cosmosclient/views/QRcodeReadingActivity.java @@ -5,6 +5,7 @@ import android.os.Bundle; import android.util.Log; import android.view.View; +import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; @@ -50,7 +51,7 @@ final IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); if(result != null) { QRcodeData = (String)result.getContents(); - QRcodeResult.setText(QRcodeData); +// QRcodeResult.setText(QRcodeData); } else { super.onActivityResult(requestCode, resultCode, data); } @@ -88,18 +89,25 @@ public void onResponse(Call call, Response response) { if (response.isSuccessful()) { //成功時 - JoinGroupResponse result = response.body(); - Group g = new Group(result.gId,result.uri,result.name,uId); + final JoinGroupResponse result = response.body(); + QRcodeResult.setText(result.name); + Button AddBtn = (Button)findViewById(R.id.Addbutton); - //app/CosmosにgIdを保存 - Cosmos app = (Cosmos)getApplication(); - app.setCurrentGroup(g); + AddBtn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Group g = new Group(result.gId, result.uri, result.name, uId); - Intent intent = new Intent(getApplication(), RequestListActivity.class); - startActivity(intent); - //ここで成功の処理を記述 - finish(); + //app/CosmosにgIdを保存 + Cosmos app = (Cosmos) getApplication(); + app.setCurrentGroup(g); + Intent intent = new Intent(getApplication(), RequestListActivity.class); + startActivity(intent); + finish(); + + } + }); } else { 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 4e4afcd..ed8ce4c 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,16 +27,21 @@ 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; import com.example.cosmosclient.yolp.Yolp; +import java.io.IOException; import java.text.Collator; -import java.util.ArrayList; 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; import retrofit2.Call; import retrofit2.Callback; @@ -47,12 +54,20 @@ 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 - public static ArrayList requestlist = new ArrayList<>(); + Requests requests; //Color制御 boolean productColorFlag = true; //買うもの (true:白, false:黒) @@ -70,6 +85,14 @@ Collator collator = Collator.getInstance(Locale.JAPANESE); + 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 @@ -83,7 +106,7 @@ product.setColorFilter(null); productColorFlag = true; ResetRequestListTable(); - AddRequestListTable(requestlist); + AddRequestListTable(requests); } else { if(deadlineRotationFlag) { deadlineRotationFlag = false; @@ -117,7 +140,7 @@ deadline.setColorFilter(null); deadlineColorFlag = true; ResetRequestListTable(); - AddRequestListTable(requestlist); + AddRequestListTable(requests); if(!deadlineRotationFlag) { deadline.setRotation(0); } @@ -158,7 +181,7 @@ location.setColorFilter(null); locationColorFlag = true; ResetRequestListTable(); - AddRequestListTable(requestlist); + AddRequestListTable(requests); } else { if(deadlineRotationFlag) { deadlineRotationFlag = false; @@ -179,7 +202,7 @@ } }; - //locationOnClick + //nameOnClick public View.OnClickListener nameOnClick = new View.OnClickListener() { @Override public void onClick(View view) { @@ -192,7 +215,7 @@ name.setColorFilter(null); nameColorFlag = true; ResetRequestListTable(); - AddRequestListTable(requestlist); + AddRequestListTable(requests); } else { if(deadlineRotationFlag) { deadlineRotationFlag = false; @@ -213,15 +236,110 @@ } }; + //requestListRowOnClick + 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() { @Override public int compare(Request r1, Request r2) { - return collator.compare(r1.getProduct().toString(), r2.getProduct().toString()); + return collator.compare(r1.getProduct(), r2.getProduct()); } }; //deadlineSortComparator + //!null処理 public Comparator deadlineSortComparator = new Comparator() { @Override public int compare(Request r1, Request r2) { @@ -255,7 +373,7 @@ public Comparator nameSortComparator = new Comparator() { @Override public int compare(Request r1, Request r2) { - return collator.compare(r1.getName().toString(), r2.getName().toString()); + return collator.compare(r1.getIssuer().getName(), r2.getIssuer().getName()); } }; @@ -264,68 +382,6 @@ super.onCreate(savedInstanceState); setContentView(R.layout.activity_request_list); -// //retrofitの処理 -// final Retrofit retrofit = new Retrofit.Builder() -// .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/") -// .addConverterFactory(JacksonConverterFactory.create()) -// .build(); -// -// //interfaceから実装を取得 -// final GroupsRest requestsService = retrofit.create(GroupsRest.class); -// -// //RequestList取得するための必要な情報 -// Cosmos app = (Cosmos) getApplication(); -// final String gid = app.getCurentGroup().getgId(); -// final String token = app.getToken(); -// -// final Call> requestsListByGidCall = requestsService.getRequestsListByGid(gid, token); -// -// //サーバからのレスポンス -// requestsListByGidCall.enqueue(new Callback() { -// //成功時 -// @Override -// public void onResponse(Call call, Response response) { -// if (response.isSuccessful()) { -// Request result = response.body(); -// -// Call requestsDetailByGidAndRidcall = requestsService.getRequestsDetailByGidAndRid(gid, token, result.getrId()); -// //サーバからのレスポンス -// requestsDetailByGidAndRidcall.enqueue(new Callback() { -// //成功時 -// @Override -// public void onResponse(Call call, Response response) { -// if (response.isSuccessful()) { -// Request result = response.body(); -// -// -// Toast.makeText(RequestListActivity.this, "RequestList詳細を取得しました", Toast.LENGTH_SHORT).show(); -// } else { -// //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(); -// } -// }); -// Toast.makeText(RequestListActivity.this, "RequestListを取得しました", Toast.LENGTH_SHORT).show(); -// } else { -// //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(); -// } -// }); - Toolbar toolbar = (Toolbar) findViewById(R.id.requestlist_toolbar); setSupportActionBar(toolbar); @@ -340,16 +396,6 @@ } }); - requestlist.clear(); - - //Add Request - requestlist.add(new Request("わさび", new Date(2019, 6, 7), 205002, "a-hongo")); - requestlist.add(new Request("ケーキ" , new Date(2019, 6, 6), 205001, "t-sugisawa")); - requestlist.add(new Request("からし", new Date(2018, 6, 4), 205002, "n-kande")); - - //Add RequestList Table - AddRequestListTable(requestlist); - //LEFT hamburger button DrawerLayout requestlistDrawer = (DrawerLayout) findViewById(R.id.request_list_drawer_layout); ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( @@ -360,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); @@ -372,6 +420,68 @@ 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 + protected void onStart() { + super.onStart(); + + //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); + + //RequestList取得するための必要な情報 + Cosmos app = (Cosmos) getApplication(); + final String gId = app.getCurentGroup().getgId(); + final String token = app.getToken(); + final boolean detail = true; + int quantity = 20; + + final Call requestsListByGidCall = requestsService.getRequestsListByGid(gId, token, detail, quantity); + + //サーバからのレスポンス + requestsListByGidCall.enqueue(new Callback() { + //成功時 + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()) { + TimeZone.setDefault(TimeZone.getTimeZone("Asia/Tokyo")); + requests = response.body(); + + //Add RequestList Table + AddRequestListTable(requests); + + Toast.makeText(RequestListActivity.this, "RequestListを取得しました", Toast.LENGTH_SHORT).show(); + } else { + try { + System.out.println("a" + 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(); + } + }); + } @Override @@ -380,8 +490,10 @@ ResetRequestListTable(); - //Add RequestList Table - AddRequestListTable(requestlist); + requests.clearRequest(); + +// //Add RequestList Table +// AddRequestListTable(requests); } @SuppressWarnings("StatementWithEmptyBody") @@ -393,6 +505,7 @@ if (id == R.id.nav_member_list) { // Handle the member list action toast = Toast.makeText(RequestListActivity.this, "Next Member List Activity", Toast.LENGTH_LONG); + startActivity(new Intent(RequestListActivity.this, MemberListActivity.class)); toast.show(); } else if (id == R.id.nav_add_member) { startActivity(new Intent(RequestListActivity.this, AddMemberActivity.class)); @@ -411,21 +524,21 @@ return true; } - private int ConvertMonth(int i, ArrayList requestList) { - return requestList.get(i).getDeadline().getMonth() + 1; + private int ConvertMonth(int i, Requests requests) { + return requests.getRequest(i).getDeadline().getMonth() + 1; } @TargetApi(Build.VERSION_CODES.O) - private void AddRequestListTable(ArrayList requestList) { + 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 < requestList.size(); i++) { + for (int i = 0; i < requests.getRequestCount(); i++) { TableRow tableRow = new TableRow(this); TextView textProduct = new TextView(this); - textProduct.setText(requestList.get(i).getProduct()); + textProduct.setText(requests.getRequest(i).getProduct()); textProduct.setTextSize(20); textProduct.setHeight(150); textProduct.setGravity(Gravity.CENTER); @@ -441,7 +554,9 @@ // if (requestList.get(i).getDeadline().getMonth() == now.getMonth() && requestList.get(i).getDeadline().getDate() - now.getDate() == 1) { // textDeadline.setText("明日まで"); // } - textDeadline.setText(ConvertMonth(i, requestList) + "/" + requestList.get(i).getDeadline().getDate()); + if(requests.getRequest(i).getDeadline() != null) { + textDeadline.setText(ConvertMonth(i, requests) + "/" + requests.getRequest(i).getDeadline().getDate()); + } // textDeadline.setText(now.getMonth() + "/" + now.getDate()); textDeadline.setTextSize(20); textDeadline.setHeight(150); @@ -449,23 +564,29 @@ tableRow.addView(textDeadline, new TableRow.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT)); TextView textLocation = new TextView(this); - textLocation.setText(Yolp.getInstance().getSubCategoryByCode(requestList.get(i).getLocation()).getSubName()); + if(Yolp.getInstance().getSubCategoryByCode(requests.getRequest(i).getLocation()) != null) { + textLocation.setText(Yolp.getInstance().getSubCategoryByCode(requests.getRequest(i).getLocation()).getSubName()); + } + textLocation.setTextSize(20); textLocation.setHeight(150); textLocation.setGravity(Gravity.CENTER); tableRow.addView(textLocation, new TableRow.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT)); TextView textName = new TextView(this); - textName.setText(requestList.get(i).getName()); + textName.setText(requests.getRequest(i).getIssuer().getName()); textName.setTextSize(20); textName.setHeight(150); textName.setGravity(Gravity.CENTER); tableRow.addView(textName, new TableRow.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT)); + tableRow.setOnLongClickListener(requestListRowOnClick); + requesttable.addView(tableRow); } } + // Can not to reset! private void ResetRequestListTable() { TableLayout requesttable = (TableLayout)findViewById(R.id.RequestList); int childCount = requesttable.getChildCount(); @@ -476,38 +597,38 @@ } } - private ArrayList SortProduct() { - ArrayList productsortRequestlist = (ArrayList) requestlist.clone(); + private Requests SortProduct() { + List productsortRequestlist = (List) requests.getRequests(); Collections.sort(productsortRequestlist, productSortComparator); - return productsortRequestlist; + return new Requests(productsortRequestlist); } - private ArrayList SortDeadline() { - ArrayList deadlinesortRequestlist = (ArrayList) requestlist.clone(); + private Requests SortDeadline() { + List deadlinesortRequestlist = (List) requests.getRequests(); Collections.sort(deadlinesortRequestlist, deadlineSortComparator); - return deadlinesortRequestlist; + return new Requests(deadlinesortRequestlist); } - private ArrayList ReverseDeadline() { - ArrayList deadlinesortRequestlist = (ArrayList) requestlist.clone(); + private Requests ReverseDeadline() { + List deadlinesortRequestlist = (List) requests.getRequests(); Collections.sort(deadlinesortRequestlist, deadlineReverseComparator); - return deadlinesortRequestlist; + return new Requests(deadlinesortRequestlist); } - private ArrayList SortLocation() { - ArrayList locationsortRequestlist = (ArrayList) requestlist.clone(); + private Requests SortLocation() { + List locationsortRequestlist = (List) requests.getRequests(); Collections.sort(locationsortRequestlist, locationSortComparator); - return locationsortRequestlist; + return new Requests(locationsortRequestlist); } - private ArrayList SortName() { - ArrayList namesortRequestlist = (ArrayList) requestlist.clone(); + private Requests SortName() { + List namesortRequestlist = (List) requests.getRequests(); Collections.sort(namesortRequestlist, nameSortComparator); - return namesortRequestlist; + return new Requests(namesortRequestlist); } } \ No newline at end of file diff --git a/app/src/main/java/com/example/cosmosclient/views/SigninActivity.java b/app/src/main/java/com/example/cosmosclient/views/SigninActivity.java index dbfd08e..2a70436 100644 --- a/app/src/main/java/com/example/cosmosclient/views/SigninActivity.java +++ b/app/src/main/java/com/example/cosmosclient/views/SigninActivity.java @@ -94,7 +94,7 @@ //app/Cosmosに情報保存 Cosmos app = (Cosmos)getApplication(); app.setToken(result.token); - app.setuId(result.uId); + app.setuId(UserIdText.getText().toString()); //画面遷移 Intent intent = new Intent(getApplication(), GroupListActivity.class); diff --git a/app/src/main/java/com/example/cosmosclient/views/SignupActivity.java b/app/src/main/java/com/example/cosmosclient/views/SignupActivity.java index 8e5f0b5..5770dcc 100644 --- a/app/src/main/java/com/example/cosmosclient/views/SignupActivity.java +++ b/app/src/main/java/com/example/cosmosclient/views/SignupActivity.java @@ -3,8 +3,10 @@ import android.content.Intent; import android.content.SharedPreferences; +import android.graphics.Bitmap; import android.net.Uri; import android.os.Handler; +import android.provider.MediaStore; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.text.Editable; @@ -23,6 +25,9 @@ import com.theartofdev.edmodo.cropper.CropImage; import com.theartofdev.edmodo.cropper.CropImageView; +import java.io.ByteArrayOutputStream; +import java.io.IOException; + import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; @@ -35,6 +40,7 @@ private boolean cpwEnable; private Button MakeAccountButton; private ImageView iconChoice; + private String iconImageBase64; @Override protected void onCreate(Bundle savedInstanceState) { @@ -91,7 +97,7 @@ //API呼び出しのための値入力 Call call = signupService.createUser(NameText.getText().toString(), - PasswordText.getText().toString(), "https://yumenavi.info/live/2018/photo/k/s015980019.jpg"); + PasswordText.getText().toString(), iconImageBase64); //サーバからデータ受け取り call.enqueue(new Callback() { @@ -169,10 +175,36 @@ CropImage.ActivityResult result = CropImage.getActivityResult(data); if (resultCode == RESULT_OK) { Uri resultUri = result.getUri(); - iconChoice.setImageURI(resultUri); + //画面にトリミングした画像をセット + //iconChoice.setImageURI(resultUri); + + try { + //UriからBitmapの取得 + Bitmap image = MediaStore.Images.Media.getBitmap(getContentResolver(),resultUri); + + //画像をBase64に変換 + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + Bitmap afterResizeBitmap = Bitmap.createScaledBitmap(image,50,50,true); + afterResizeBitmap.compress(Bitmap.CompressFormat.JPEG,70, baos); + + byte[] b = baos.toByteArray(); + String imageEncoded = Base64.encodeToString(b, Base64.DEFAULT); + + if(imageEncoded.length() <= 2000){ + iconChoice.setImageBitmap(image); + iconImageBase64 = imageEncoded; + }else{ + Toast.makeText(SignupActivity.this, + "この画像は使用できません。\n別の画像を選択してください。",Toast.LENGTH_LONG).show(); + } + }catch(IOException e){ + e.printStackTrace(); + } } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) { Exception error = result.getError(); + error.printStackTrace(); } + } } diff --git a/app/src/main/java/com/example/cosmosclient/yolp/Yolp.java b/app/src/main/java/com/example/cosmosclient/yolp/Yolp.java index f317028..edcf194 100644 --- a/app/src/main/java/com/example/cosmosclient/yolp/Yolp.java +++ b/app/src/main/java/com/example/cosmosclient/yolp/Yolp.java @@ -56,6 +56,7 @@ return code; } + public void setCodeToSubcategory(HashMap codeToSubcategory) { this.codeToSubcategory = codeToSubcategory; } @@ -64,6 +65,7 @@ codeToSubcategory.put(code, subCategory); } + // 業種名2から業種名3 public String[] getCategoryNames() { return nameToCategory.keySet().toArray(new String[0]); diff --git a/app/src/main/res/drawable/default_icon_image.png b/app/src/main/res/drawable/default_icon_image.png new file mode 100644 index 0000000..95c82e7 --- /dev/null +++ b/app/src/main/res/drawable/default_icon_image.png Binary files differ diff --git a/app/src/main/res/layout/activity_add_member.xml b/app/src/main/res/layout/activity_add_member.xml index 242f8aa..3e218c9 100644 --- a/app/src/main/res/layout/activity_add_member.xml +++ b/app/src/main/res/layout/activity_add_member.xml @@ -12,7 +12,7 @@ android:layout_height="75dp" android:background="#e6eae3" android:gravity="center" - android:text="家族用 グループ" + android:text="" android:textSize="24sp" app:layout_constraintTop_toTopOf="parent" tools:layout_editor_absoluteX="0dp" /> diff --git a/app/src/main/res/layout/activity_display_group_id.xml b/app/src/main/res/layout/activity_display_group_id.xml index 8f17cde..bc5af51 100644 --- a/app/src/main/res/layout/activity_display_group_id.xml +++ b/app/src/main/res/layout/activity_display_group_id.xml @@ -12,7 +12,7 @@ android:layout_height="75dp" android:background="#e6eae3" android:gravity="center" - android:text="家族用 グループ" + android:text="" android:textSize="24sp" app:layout_constraintTop_toTopOf="parent" tools:layout_editor_absoluteX="16dp" /> diff --git a/app/src/main/res/layout/activity_display_qr.xml b/app/src/main/res/layout/activity_display_qr.xml index 32a602e..fd64cdc 100644 --- a/app/src/main/res/layout/activity_display_qr.xml +++ b/app/src/main/res/layout/activity_display_qr.xml @@ -12,7 +12,7 @@ android:layout_height="75dp" android:background="#e6eae3" android:gravity="center" - android:text="家族用 グループ" + android:text="" android:textSize="24sp" app:layout_constraintTop_toTopOf="parent" tools:layout_editor_absoluteX="16dp" /> diff --git a/app/src/main/res/layout/activity_join_group_by_id.xml b/app/src/main/res/layout/activity_join_group_by_id.xml index 4ddeff1..bb755b3 100644 --- a/app/src/main/res/layout/activity_join_group_by_id.xml +++ b/app/src/main/res/layout/activity_join_group_by_id.xml @@ -16,13 +16,14 @@ android:digits="abcdefghijklmnopqrstuvwxyz1234567890-" android:ems="10" android:gravity="start|top" + android:hint="IDを入力してください" android:inputType="textEmailAddress" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@+id/button" - app:layout_constraintHorizontal_bias="0.765" + app:layout_constraintHorizontal_bias="1.0" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/textView7" - app:layout_constraintVertical_bias="0.441" /> + app:layout_constraintVertical_bias="0.233" /> + + +