diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e83b75f..1de6c3b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -70,8 +70,9 @@ android:label="メンバー追加" /> + android:label="グループ一覧" + android:theme="@style/AppTheme.NoActionBar"> + diff --git a/app/src/main/java/com/example/cosmosclient/app/Cosmos.java b/app/src/main/java/com/example/cosmosclient/app/Cosmos.java index 51d1010..744c6d9 100644 --- a/app/src/main/java/com/example/cosmosclient/app/Cosmos.java +++ b/app/src/main/java/com/example/cosmosclient/app/Cosmos.java @@ -21,19 +21,18 @@ } //Group処理 + //再考 public void setCurrentGroup(Group g){ curGroup = g; - //ここを考える } public Group getCurentGroup(){ return curGroup; } + //再考 public void setGroup(Group g) { if(groups.get(g.getgId()) == null) { String newGid = g.getgId(); -// Group newGroup = new Group(); -// newGroup.setgId(newGid); groups.put(newGid, g); } } diff --git a/app/src/main/java/com/example/cosmosclient/entities/Group.java b/app/src/main/java/com/example/cosmosclient/entities/Group.java index cecc7a1..1ee3c6d 100644 --- a/app/src/main/java/com/example/cosmosclient/entities/Group.java +++ b/app/src/main/java/com/example/cosmosclient/entities/Group.java @@ -1,5 +1,7 @@ package com.example.cosmosclient.entities; +import com.example.cosmosclient.entities.jsons.GroupJson; + import java.util.ArrayList; import java.util.Set; @@ -21,6 +23,12 @@ setName(name); } + public Group(GroupJson groupJson){ + setgId(groupJson.getgId()); + setUri(groupJson.getUri()); + setName(groupJson.getName()); + } + public String getgId() { return gId; } @@ -75,7 +83,4 @@ // members.remove(members.indexOf(uid)); // return null; //} - - /*リクエスト*/ - } diff --git a/app/src/main/java/com/example/cosmosclient/entities/GroupListResponse.java b/app/src/main/java/com/example/cosmosclient/entities/GroupListResponse.java new file mode 100644 index 0000000..9af528b --- /dev/null +++ b/app/src/main/java/com/example/cosmosclient/entities/GroupListResponse.java @@ -0,0 +1,48 @@ +package com.example.cosmosclient.entities; + +import com.example.cosmosclient.entities.jsons.GroupJson; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +import java.util.List; +//@JsonIgnoreProperties(ignoreUnknown = true) + +public class GroupListResponse { + private List groups; + + public GroupListResponse() { + + } + + public GroupListResponse(List groups) { + this.groups = groups; + } + + public List getGroups() { + return groups; + } + + public void setGroups(List groups) { + this.groups = groups; + } + + public void addGroup(GroupJson g) { + groups.add(g); + } + + public GroupJson getGroup(int index) { + return groups.get(index); + } + + public void clearGroup() { + groups.clear(); + } + + public void removeGroup(int index) { + groups.remove(index); + } + + public int getGroupCount() { + return groups.size(); + } + +} diff --git a/app/src/main/java/com/example/cosmosclient/entities/jsons/GroupJson.java b/app/src/main/java/com/example/cosmosclient/entities/jsons/GroupJson.java new file mode 100644 index 0000000..9264728 --- /dev/null +++ b/app/src/main/java/com/example/cosmosclient/entities/jsons/GroupJson.java @@ -0,0 +1,35 @@ +package com.example.cosmosclient.entities.jsons; + +public class GroupJson { + private String name; + private String gId; + private String uri; + + public String getgId() { + return gId; + } + + public void setgId(String gId) { + this.gId = gId; + } + + public String getUri() { + return uri; + } + + public void setUri(String uri){ + this.uri = uri; + } + + public void setName(String name){ + this.name = name; + } + + public String getName(){ + return name; + } + + public String toString() { + return name; + } +} 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 5e90e48..a424816 100644 --- a/app/src/main/java/com/example/cosmosclient/resources/GroupsRest.java +++ b/app/src/main/java/com/example/cosmosclient/resources/GroupsRest.java @@ -1,7 +1,8 @@ package com.example.cosmosclient.resources; -import com.example.cosmosclient.entities.AddRequestsResponse; +import com.example.cosmosclient.entities.GroupListResponse; import com.example.cosmosclient.entities.CreateGroupResponse; +import com.example.cosmosclient.entities.AddRequestsResponse; import com.example.cosmosclient.entities.MemberListResponse; import com.example.cosmosclient.entities.RequestList; @@ -16,6 +17,9 @@ public interface GroupsRest { + @GET("groups") + Call getGroups(@Query("uId") String uId, @Query("token") String token); + @POST("groups") @FormUrlEncoded Call createGroup(@Field("name") String name, @Field("uId") String uId, @Field("token") String token); @@ -32,7 +36,7 @@ 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); +// 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 608b4f8..b05522c 100644 --- a/app/src/main/java/com/example/cosmosclient/resources/UsersRest.java +++ b/app/src/main/java/com/example/cosmosclient/resources/UsersRest.java @@ -2,10 +2,12 @@ import com.example.cosmosclient.entities.SigninResponse; import com.example.cosmosclient.entities.SignupResponse; +import com.example.cosmosclient.entities.User; import retrofit2.Call; import retrofit2.http.Field; import retrofit2.http.FormUrlEncoded; +import retrofit2.http.GET; import retrofit2.http.POST; import retrofit2.http.Path; import retrofit2.http.Query; @@ -15,6 +17,9 @@ @FormUrlEncoded Call login(@Path("uId") String uId,@Field("pw") String pw); + @GET("users/{uId}") + Call getName(@Path("uId") String uId, @Field("token") String token); + @POST("users") @FormUrlEncoded 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 0446342..857101d 100644 --- a/app/src/main/java/com/example/cosmosclient/views/AddMemberActivity.java +++ b/app/src/main/java/com/example/cosmosclient/views/AddMemberActivity.java @@ -1,5 +1,6 @@ package com.example.cosmosclient.views; +import android.content.ActivityNotFoundException; import android.content.Intent; import android.graphics.BitmapFactory; import android.net.Uri; @@ -39,7 +40,6 @@ 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()); @@ -64,7 +64,8 @@ @Override public void onItemClick(AdapterView parent, View v, int position, long id) { - + Cosmos app = (Cosmos) getApplication(); + Group curentGroup = app.getCurentGroup(); Intent intent = null; // clickされたpositionのtextとphotoのID @@ -75,47 +76,24 @@ intent = new Intent(this.getApplicationContext(), DisplayGroupIDActivity.class); }else{ // intent = new Intent(this.getApplicationContext(), DisplayQRActivity.class); - intent = new Intent(Intent.ACTION_VIEW, Uri.parse("line://msg/text/?GroupID")); + String URL="line://msg/text/あなたは"+curentGroup.getName()+"に招待されています。%0D%0A今すぐアプリを立ち上げて、下記のIDを入力して今すぐ参加しよう!%0D%0A"+curentGroup.getgId(); + intent = new Intent(Intent.ACTION_VIEW, Uri.parse(URL)); + } // Intent intent = new Intent(this.getApplicationContext(), DisplayQRActivity.class); // SubActivityへ遷移 + try { startActivity(intent); + } + //Lineがダウンロードされいない場合に入る + catch (ActivityNotFoundException e) { + // ブラウザアプリが有効でない場合はここに入る + // 必要ならエラー表示とかする + intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=jp.naver.line.android&hl=ja")); + startActivity(intent); + + } } -// @Override -// protected void onCreate(Bundle savedInstanceState) { -// super.onCreate(savedInstanceState); -// setContentView(R.layout.activity_add_member); -// //各種idを取得 -// Button qrButton = findViewById(R.id.addQR); -// Button idButton = findViewById(R.id.addID); -// Button mailButton = findViewById(R.id.addMail); -// TextView groupText=findViewById(R.id.groupName); -// -// //QRからメンバー追加の画面遷移処理画面を記述 -// qrButton.setOnClickListener(new View.OnClickListener() { -// @Override -// public void onClick(View v) { -// Intent intent = new Intent(getApplication(), DisplayQRActivity.class); -// startActivity(intent); -// } -// }); -// //IDからメンバー追加の画面遷移処理画面を記述 -// idButton.setOnClickListener(new View.OnClickListener() { -// @Override -// public void onClick(View v) { -// Intent intent = new Intent(getApplication(), DisplayQRActivity.class); -// startActivity(intent); -// } -// }); -// //Mailからメンバー追加の画面遷移処理画面を記述 -// mailButton.setOnClickListener(new View.OnClickListener() { -// @Override -// public void onClick(View v) { -// Intent intent = new Intent(getApplication(), DisplayQRActivity.class); -// startActivity(intent); -// } -// }); -// -// } + } diff --git a/app/src/main/java/com/example/cosmosclient/views/CheeseDynamicAdapter.java b/app/src/main/java/com/example/cosmosclient/views/CheeseDynamicAdapter.java index b2e17db..f6131ad 100644 --- a/app/src/main/java/com/example/cosmosclient/views/CheeseDynamicAdapter.java +++ b/app/src/main/java/com/example/cosmosclient/views/CheeseDynamicAdapter.java @@ -7,6 +7,7 @@ import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; +import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; @@ -69,12 +70,13 @@ itemList = (ListView) view.findViewById(R.id.listview); //image = (ImageView) view.findViewById(R.id.item_img); + /* ArrayList items = new ArrayList<>(); items.add("からし"); items.add("わさび"); items.add("砂糖"); - - ArrayAdapter adapter = new ArrayAdapter(getContext(), R.layout.item_list, items); + */ + //ArrayAdapter adapter = new ArrayAdapter(getContext(), R.layout.item_list, items); //itemList.setAdapter(adapter); } diff --git a/app/src/main/java/com/example/cosmosclient/views/Cheeses.java b/app/src/main/java/com/example/cosmosclient/views/Cheeses.java index a1386ac..d02cdc2 100644 --- a/app/src/main/java/com/example/cosmosclient/views/Cheeses.java +++ b/app/src/main/java/com/example/cosmosclient/views/Cheeses.java @@ -1,13 +1,16 @@ package com.example.cosmosclient.views; +import com.example.cosmosclient.resources.GroupsRest; +import retrofit2.Call; + public class Cheeses { public static final String[] sCheeseStrings = { - "ファミリー\n 紙コップ\n 延長ケーブル", - "会社\n からし", - "Group3\n ケーキ\n ほげほげ", - "Group4\n ほげほげ\n ほげほげ", - "Group5\n ほげほげ\n ほげほげ\n ほげほげ\n ほげほげ", - "Group6\n ほげほげ\n ほげほげ\n ほげほげ", + "ファミリー", + "会社", + "Group3", + "Group4", + "Group5", + "Group6", "Group7" }; } diff --git a/app/src/main/java/com/example/cosmosclient/views/GroupListActivity.java b/app/src/main/java/com/example/cosmosclient/views/GroupListActivity.java index 22b50ec..35d2ad3 100644 --- a/app/src/main/java/com/example/cosmosclient/views/GroupListActivity.java +++ b/app/src/main/java/com/example/cosmosclient/views/GroupListActivity.java @@ -1,8 +1,11 @@ package com.example.cosmosclient.views; import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.nfc.Tag; import android.os.Bundle; +import android.util.Base64; import android.util.Log; import android.view.View; import android.support.v4.view.GravityCompat; @@ -16,15 +19,28 @@ import android.view.Menu; import android.widget.AdapterView; import android.widget.ArrayAdapter; +import android.widget.BaseAdapter; import android.widget.GridView; import android.widget.ListAdapter; import android.widget.TextView; import android.widget.Toast; +import com.example.cosmosclient.app.Cosmos; +import com.example.cosmosclient.entities.Group; +import com.example.cosmosclient.entities.GroupListResponse; +import com.example.cosmosclient.entities.MemberListResponse; +import com.example.cosmosclient.entities.jsons.GroupJson; import com.example.cosmosclient.views.DynamicGridView; +import com.example.cosmosclient.resources.GroupsRest; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; +import retrofit2.Retrofit; +import retrofit2.converter.jackson.JacksonConverterFactory; import com.example.cosmosclient.R; +import java.io.ByteArrayOutputStream; import java.util.ArrayList; import java.util.Arrays; @@ -33,6 +49,7 @@ private static final String TAG = GroupListActivity.class.getName(); private DynamicGridView gridView; + private GroupListResponse result; @Override @@ -42,12 +59,102 @@ Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); - String[] list = {"ファミリー\n 紙コップ\n 延長ケーブル", "Group2\n からし", "Group3\n ケーキ\n something"}; + final String uId,token; + final Cosmos app = (Cosmos) getApplication(); + uId = app.getuId(); + token = app.getToken(); + //ユーザ名とユーザIDを表示したい + final String uName; + uName = "hogehoge"; + NavigationView navView = (NavigationView) findViewById(R.id.nav_view); + View headerView = navView.getHeaderView(0); + TextView userNameTextView = navView.getHeaderView(0).findViewById(R.id.userName); + TextView userIDTextView = navView.getHeaderView(0).findViewById(R.id.userID); + userNameTextView.setText("ユーザ名:"+uName); + userIDTextView.setText("ユーザID:"+uId); + final ArrayList groupList = new ArrayList<>(); + + //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 getGroupsService = retrofit.create(GroupsRest.class); + + //API呼び出しのための値入力 + final Call call = getGroupsService.getGroups(uId,token); + + //サーバからデータ受け取り + call.enqueue(new Callback() { + //成功時 + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()) { + GroupListResponse result2 = response.body(); + result = result2; +// Iterator it = result.member.iterator(); +// int i = 0; + +// for (int i = 0; i < result.getGroupCount(); i++) { +// groupList.add(result.getGroup(i).getName()); +// } + + // グループ名一覧の表示 + gridView.setAdapter((ListAdapter) new CheeseDynamicAdapter(GroupListActivity.this, + result.getGroups(), + getResources().getInteger(R.integer.column_count))); + + //画像を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); +// Toast.makeText(GroupListActivity.this,"接続できたよ",Toast.LENGTH_LONG).show(); + + + //アイコンが未設定ならデフォルト画像を設定 +// for(int i = 0; i call, Throwable t) { + t.printStackTrace(); + Toast.makeText(GroupListActivity.this, + "グループ情報取得失敗", Toast.LENGTH_SHORT).show(); + } + }); + +// ArrayList GroupList = new ArrayList<>(); +// for (int i = 0; i < result.getGroupCount(); i++) { +// GroupList.add(result.getGroup(i).getName()); +// } gridView = (DynamicGridView) findViewById(R.id.dynamic_grid); - gridView.setAdapter((ListAdapter) new CheeseDynamicAdapter(this, - new ArrayList(Arrays.asList(Cheeses.sCheeseStrings)), - getResources().getInteger(R.integer.column_count))); gridView.setOnDragListener(new DynamicGridView.OnDragListener() { @Override @@ -70,26 +177,30 @@ } }); + // グループの中にはいる(リクエスト一覧画面へ) gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { // Toast.makeText(GroupListActivity.this, parent.getAdapter().getItem(position).toString(), // Toast.LENGTH_SHORT).show(); + GroupJson group = result.getGroups().get(position); + app.setCurrentGroup(new Group(group)); + Intent intent=new Intent(GroupListActivity.this, com.example.cosmosclient.views.RequestListActivity.class); startActivity(intent); } }); /* とりあえずの画面遷移なので変更するかも */ - TextView group1 = findViewById(R.id.group1); - group1.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - gridView.stopEditMode(); - Intent intent=new Intent(GroupListActivity.this, com.example.cosmosclient.views.RequestListActivity.class); - startActivity(intent); - } - }); +// TextView group1 = findViewById(R.id.group1); +// group1.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View view) { +// gridView.stopEditMode(); +// Intent intent=new Intent(GroupListActivity.this, com.example.cosmosclient.views.RequestListActivity.class); +// startActivity(intent); +// } +// }); DrawerLayout drawer = findViewById(R.id.drawer_layout); @@ -172,5 +283,7 @@ DrawerLayout drawer = findViewById(R.id.drawer_layout); drawer.closeDrawer(GravityCompat.START); return true; + + } } 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 99f0054..64113fa 100644 --- a/app/src/main/java/com/example/cosmosclient/views/ListViewAdapter.java +++ b/app/src/main/java/com/example/cosmosclient/views/ListViewAdapter.java @@ -42,7 +42,7 @@ convertView = inflater.inflate(itemLayoutId, parent, false); // ViewHolder を生成 holder = new ViewHolder(); - holder.textView = convertView.findViewById(R.id.textView); + holder.textView = convertView.findViewById(R.id.userID); holder.imageView = convertView.findViewById(R.id.imageView); convertView.setTag(holder); } diff --git a/app/src/main/java/com/example/cosmosclient/views/MemberListAdapter.java b/app/src/main/java/com/example/cosmosclient/views/MemberListAdapter.java index c532a6c..42e1f48 100644 --- a/app/src/main/java/com/example/cosmosclient/views/MemberListAdapter.java +++ b/app/src/main/java/com/example/cosmosclient/views/MemberListAdapter.java @@ -66,7 +66,7 @@ convertView = inflater.inflate(itemLayoutId, parent, false); // ViewHolder を生成 holder = new MemberListAdapter.ViewHolder(); - holder.textView = convertView.findViewById(R.id.textView); + holder.textView = convertView.findViewById(R.id.userID); holder.imageView = convertView.findViewById(R.id.imageView); convertView.setTag(holder); } diff --git a/app/src/main/res/layout/item_grid.xml b/app/src/main/res/layout/item_grid.xml index 829341c..4fc0f67 100644 --- a/app/src/main/res/layout/item_grid.xml +++ b/app/src/main/res/layout/item_grid.xml @@ -2,6 +2,7 @@ \ No newline at end of file diff --git a/app/src/main/res/layout/item_list.xml b/app/src/main/res/layout/item_list.xml index 21d5116..5037c41 100644 --- a/app/src/main/res/layout/item_list.xml +++ b/app/src/main/res/layout/item_list.xml @@ -2,11 +2,10 @@ - \ No newline at end of file diff --git a/app/src/main/res/layout/list.xml b/app/src/main/res/layout/list.xml index f7142e2..5bb4578 100644 --- a/app/src/main/res/layout/list.xml +++ b/app/src/main/res/layout/list.xml @@ -15,7 +15,7 @@ android:contentDescription="picture"/>