Newer
Older
IrisClient / app / src / main / java / org / ntlab / irisclient / OwnerRoomActivity.java
k-fujii on 25 Oct 2022 8 KB CreateRoomActivityの作成
  1. package org.ntlab.irisclient;
  2.  
  3. import android.content.ClipData;
  4. import android.content.ClipDescription;
  5. import android.content.ClipboardManager;
  6. import android.content.Intent;
  7. import android.graphics.Color;
  8. import android.os.Bundle;
  9. import android.view.View;
  10. import android.widget.ArrayAdapter;
  11. import android.widget.BaseAdapter;
  12. import android.widget.Button;
  13. import android.widget.EditText;
  14. import android.widget.ImageButton;
  15. import android.widget.ListView;
  16. import android.widget.TextView;
  17.  
  18. import com.google.android.material.snackbar.Snackbar;
  19.  
  20. import androidx.appcompat.app.AppCompatActivity;
  21. import androidx.lifecycle.Observer;
  22. import androidx.lifecycle.ViewModelProvider;
  23.  
  24. import org.ntlab.irisclient.entities.RoomJson;
  25. import org.ntlab.irisclient.models.Member;
  26. import org.ntlab.irisclient.resources.RoomsRest;
  27. import org.ntlab.irisclient.viewmodels.RoomViewModel;
  28.  
  29. import java.util.ArrayList;
  30. import java.util.Collections;
  31. import java.util.List;
  32.  
  33. import retrofit2.Call;
  34. import retrofit2.Callback;
  35. import retrofit2.Response;
  36. import retrofit2.Retrofit;
  37. import retrofit2.converter.jackson.JacksonConverterFactory;
  38.  
  39. public class OwnerRoomActivity extends AppCompatActivity {
  40.  
  41. //フィールド
  42. ArrayList<String> viewMembers = new ArrayList<>();
  43. ArrayList<String> oldMembers = new ArrayList<>();
  44. List<Member> gMembers = new ArrayList<>();
  45. String roomId = "null";
  46. String myName = "null";
  47. //String nickname;
  48. String belongs;
  49. Boolean isMaster;
  50.  
  51. @Override
  52. protected void onCreate(Bundle savedInstanceState) {
  53. super.onCreate(savedInstanceState);
  54. setContentView(R.layout.activity_owner_room);
  55.  
  56. myName = ((Iris) getApplication()).getNickname();
  57. roomId = ((Iris) getApplication()).getRid();
  58.  
  59. //自分のなまえ
  60. //Intent intentMain = getIntent();
  61. //myName = intentMain.getStringExtra("nickname");
  62.  
  63. //--------------------------------------------------------------------------
  64. //メンバー表示
  65. Member mn = new Member(myName);
  66. mn.setBelongs("g");
  67. mn.setMaster(false);
  68.  
  69. viewMembers.add(mn.getNickname());
  70.  
  71. //RoomViewModelへのアクセス
  72. RoomViewModel roomViewModel = new ViewModelProvider(this).get(RoomViewModel.class);
  73.  
  74. roomViewModel.setRid(roomId);
  75.  
  76. ListView membersList = (ListView) findViewById(R.id.MembersList);
  77.  
  78. BaseAdapter adapter = new MemberListAdapter(this.getApplicationContext(), R.layout.member_list_layout, viewMembers, gMembers);
  79. membersList.setAdapter(adapter);
  80.  
  81. //LiveData(List<Member>)への購読
  82. roomViewModel.getMembersLiveData().observe(this, new Observer<List<Member>>() {
  83. private List<Member> members;
  84. @Override
  85. public void onChanged(List<Member> irisMembers) {
  86.  
  87. viewMembers.clear();
  88. irisMembers.forEach(m -> viewMembers.add(m.getNickname()));
  89. gMembers = irisMembers;
  90.  
  91. BaseAdapter adapter = new MemberListAdapter(getApplicationContext(), R.layout.member_list_layout, viewMembers, gMembers);
  92. membersList.setAdapter(adapter);
  93.  
  94. }
  95. });
  96.  
  97.  
  98. //各ボタン処理
  99. ArrayList<String> members = new ArrayList<>();
  100. Button redMasterButton = (Button) findViewById(R.id.beRedMaster);
  101. Button redSpyButton = (Button) findViewById(R.id.beRedSpy);
  102. Button blueMasterButton = (Button) findViewById(R.id.beBlueMaster);
  103. Button blueSpyButton = (Button) findViewById(R.id.beBlueSpy);
  104. ImageButton copyButton = (ImageButton) findViewById(R.id.copyButton);
  105.  
  106. //OwnerRoom専用ボタン
  107. Button randomButton = (Button) findViewById(R.id.random);
  108. Button startButton = (Button) findViewById(R.id.start);
  109.  
  110.  
  111.  
  112. //チームと役職の変更
  113. //赤チーム・スパイマスター
  114. redMasterButton.setOnClickListener(new View.OnClickListener() {
  115. @Override
  116. public void onClick(View v) {
  117. roomViewModel.changeBelongsAndMaster(roomId, myName,"r",true);
  118. }
  119. });
  120.  
  121. //赤チーム・諜報員
  122. redSpyButton.setOnClickListener(new View.OnClickListener() {
  123. @Override
  124. public void onClick(View v) {
  125. roomViewModel.changeBelongsAndMaster(roomId, myName,"r",false);
  126. }
  127. });
  128.  
  129. //青チーム・スパイマスター
  130. blueMasterButton.setOnClickListener(new View.OnClickListener() {
  131. @Override
  132. public void onClick(View v) {
  133. roomViewModel.changeBelongsAndMaster(roomId, myName,"b",true);
  134. }
  135. });
  136.  
  137. //青チーム・諜報員
  138. blueSpyButton.setOnClickListener(new View.OnClickListener() {
  139. @Override
  140. public void onClick(View v) {
  141. roomViewModel.changeBelongsAndMaster(roomId, myName,"b",false);
  142. }
  143. });
  144.  
  145. //コピーボタン
  146. copyButton.setOnClickListener(new View.OnClickListener() {
  147. @Override
  148. public void onClick(View v) {
  149. Snackbar.make(v, "コピーしました", Snackbar.LENGTH_LONG).show();
  150. CopyClipBoard();
  151. CreateCommonIntent();
  152. }
  153. });
  154.  
  155. //ランダムボタン
  156. randomButton.setOnClickListener(new View.OnClickListener() {
  157. @Override
  158. public void onClick(View v) {
  159. roomViewModel.randomTeam(roomId,myName);
  160. }
  161. });
  162.  
  163. //スタートボタン
  164. startButton.setOnClickListener(new View.OnClickListener() {
  165. @Override
  166. public void onClick(View v) {
  167. roomViewModel.startDrawing(roomId, myName);
  168.  
  169. Intent intent = new Intent(OwnerRoomActivity.this,DrawingActivity.class);
  170. startActivity(intent);
  171.  
  172. }
  173. });
  174.  
  175. //---------------------------------------------------------------
  176. //settings情報
  177. String s = "設定\\nお絵描き";
  178. TextView settingsText = findViewById(R.id.settings);
  179. settingsText.setText(s);
  180.  
  181. //---------------------------------------------------------------
  182. //部屋ID情報
  183. TextView RoomIdText = findViewById(R.id.roomID);
  184. RoomIdText.setText(roomId);
  185.  
  186.  
  187.  
  188.  
  189. roomViewModel.start(500,(Iris)getApplication());
  190. }
  191.  
  192. public void CopyClipBoard() {
  193. String copyText = roomId; // 作成したレース結果を取得
  194.  
  195. // クリップボードへの格納成功時は成功メッセージをトーストで表示
  196. boolean result = SetClipData(copyText);
  197. if(result) {
  198.  
  199. } else {
  200.  
  201. }
  202. }
  203.  
  204. private boolean SetClipData(String copyText) {
  205. try {
  206. //クリップボードに格納するItemを作成
  207. ClipData.Item item = new ClipData.Item(copyText);
  208.  
  209. //MIMETYPEの作成
  210. String[] mimeType = new String[1];
  211. mimeType[0] = ClipDescription.MIMETYPE_TEXT_URILIST;
  212.  
  213. //クリップボードに格納するClipDataオブジェクトの作成
  214. ClipData cd = new ClipData(new ClipDescription("text_data", mimeType), item);
  215.  
  216. //クリップボードにデータを格納
  217. ClipboardManager cm = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
  218. cm.setPrimaryClip(cd);
  219. return true;
  220. } catch (Exception e) {
  221. return false;
  222. }
  223. }
  224.  
  225. private void CreateCommonIntent() {
  226. //システムのクリップボードを取得
  227. ClipboardManager cm = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
  228.  
  229. //クリップボードからClipDataを取得
  230. ClipData cd = cm.getPrimaryClip();
  231.  
  232. if(cd != null) { // クリップボードにコピーがある場合
  233. ClipData.Item item = cd.getItemAt(0);
  234. Intent sendIntent =new Intent();
  235. sendIntent.setAction(Intent.ACTION_SEND);
  236. sendIntent.setType("text/plain");
  237. sendIntent.putExtra(sendIntent.EXTRA_TEXT, item.getText()); // メモ帳のテキスト欄、メールアプリの本文にテキストをセット
  238. startActivity(sendIntent); // 共有メニューを開く
  239. }
  240. }
  241.  
  242. }