diff --git a/app/src/main/java/com/example/cosmosclient/views/RequestList.java b/app/src/main/java/com/example/cosmosclient/views/RequestList.java index 0223ff2..ac5903e 100644 --- a/app/src/main/java/com/example/cosmosclient/views/RequestList.java +++ b/app/src/main/java/com/example/cosmosclient/views/RequestList.java @@ -1,11 +1,13 @@ package com.example.cosmosclient.views; +import java.util.Date; + public class RequestList { private String product; - private String deadline; + private Date deadline; private String location; - public RequestList(String product, String deadline, String location) { + public RequestList(String product, Date deadline, String location) { this.product = product; this.deadline = deadline; this.location = location; @@ -19,11 +21,11 @@ this.product = product; } - public String getDeadline() { + public Date getDeadline() { return deadline; } - public void setDeadline(String deadline) { + public void setDeadline(Date deadline) { this.deadline = deadline; } 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 ca532e6..d05028a 100644 --- a/app/src/main/java/com/example/cosmosclient/views/RequestListActivity.java +++ b/app/src/main/java/com/example/cosmosclient/views/RequestListActivity.java @@ -22,9 +22,12 @@ import com.example.cosmosclient.R; +import java.text.Collator; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; +import java.util.Date; +import java.util.Locale; import static android.graphics.Color.BLACK; @@ -32,20 +35,167 @@ implements NavigationView.OnNavigationItemSelectedListener { Toast toast; //動作テスト用 - boolean productColorFlag = true; //買うもの色制御 - boolean deadlineColorFlag = true; //購入期限色制御 - boolean locationColorFlag = true; //場所色制御 - ArrayList requestList = new ArrayList<>(); + //Request List + ArrayList requestlist = new ArrayList<>(); + + //Color制御 + boolean productColorFlag = true; //買うもの (true:白, false:黒) + boolean deadlineColorFlag = true; //購入期限 + boolean locationColorFlag = true; //場所 + + //Rotation制御 + boolean deadlineRotationFlag = false; //(true:回転, false:未回転) + + Collator collator = Collator.getInstance(Locale.JAPANESE); + + //productOnClick + public View.OnClickListener productOnClick = new View.OnClickListener() { + @Override + public void onClick(View view) { + Toast.makeText(RequestListActivity.this, "product sorted", Toast.LENGTH_SHORT).show(); + ImageView product = (ImageView) findViewById(R.id.image_product); + ImageView deadline = (ImageView) findViewById(R.id.image_deadline); + ImageView location = (ImageView) findViewById(R.id.image_location); + if (!productColorFlag) { + product.setColorFilter(null); + productColorFlag = true; + ResetRequestListTable(); + AddRequestListTable(requestlist); + } else { + if(deadlineRotationFlag) { + deadlineRotationFlag = false; + } else { + deadline.setRotation(0); + } + product.setColorFilter(BLACK); + productColorFlag = false; + deadline.setColorFilter(null); + deadlineColorFlag = true; + location.setColorFilter(null); + locationColorFlag = true; + ResetRequestListTable(); + AddRequestListTable(SortProduct()); + } + } + }; + + //deadlineOnClick + public View.OnClickListener deadlineOnClick = new View.OnClickListener() { + @Override + public void onClick(View view) { + Toast.makeText(RequestListActivity.this, "deadline sorted", Toast.LENGTH_SHORT).show(); + ImageView product = (ImageView) findViewById(R.id.image_product); + ImageView deadline = (ImageView) findViewById(R.id.image_deadline); + ImageView location = (ImageView) findViewById(R.id.image_location); + if (!deadlineColorFlag) { + deadline.setColorFilter(null); + deadlineColorFlag = true; + ResetRequestListTable(); + AddRequestListTable(requestlist); + if(!deadlineRotationFlag) { + deadline.setRotation(0); + } + } else { + product.setColorFilter(null); + productColorFlag = true; + location.setColorFilter(null); + locationColorFlag = true; + + if (!deadlineRotationFlag) { + deadline.setColorFilter(BLACK); + deadlineRotationFlag = true; + ResetRequestListTable(); + AddRequestListTable(SortDeadline()); + } else { + deadline.setRotation(180); + deadlineColorFlag = false; + deadlineRotationFlag = false; + ResetRequestListTable(); + AddRequestListTable(ReverseDeadline()); + } + + } + } + }; + + //locationOnClick + public View.OnClickListener locationOnClick = new View.OnClickListener() { + @Override + public void onClick(View view) { + Toast.makeText(RequestListActivity.this, "location sorted", Toast.LENGTH_SHORT).show(); + ImageView product = (ImageView) findViewById(R.id.image_product); + ImageView deadline = (ImageView) findViewById(R.id.image_deadline); + ImageView location = (ImageView) findViewById(R.id.image_location); + if (!locationColorFlag) { + location.setColorFilter(null); + locationColorFlag = true; + ResetRequestListTable(); + AddRequestListTable(requestlist); + } else { + if(deadlineRotationFlag) { + deadlineRotationFlag = false; + } else { + deadline.setRotation(0); + } + location.setColorFilter(BLACK); + locationColorFlag = false; + product.setColorFilter(null); + productColorFlag = true; + deadline.setColorFilter(null); + deadlineColorFlag = true; + ResetRequestListTable(); + AddRequestListTable(SortLocation()); + } + } + }; + + //productSortComparator + public Comparator productSortComparator = new Comparator() { + @Override + public int compare(RequestList r1, RequestList r2) { + return collator.compare(r1.getProduct().toString(), r2.getProduct().toString()); + } + }; + + //deadlineSortComparator + public Comparator deadlineSortComparator = new Comparator() { + @Override + public int compare(RequestList r1, RequestList r2) { + return r1.getDeadline().compareTo(r2.getDeadline()); + } + }; + + //deadlineReverseComparator + public Comparator deadlineReverseComparator = new Comparator() { + @Override + public int compare(RequestList r1, RequestList r2) { + if (r1.getDeadline() == null || r2.getDeadline() == null) + return 0; + if(r1.getDeadline().getDate() >= r2.getDeadline().getDate() || r1.getDeadline().getMonth() < r2.getDeadline().getMonth()) + return -1; + if(r1.getDeadline().getDate() <= r2.getDeadline().getDate() || r1.getDeadline().getMonth() < r2.getDeadline().getMonth()) + return 1; + return r1.getDeadline().compareTo(r2.getDeadline()); + } + }; + + //locationSortComparator + public Comparator locationSortComparator = new Comparator() { + @Override + public int compare(RequestList r1, RequestList r2) { + return r1.getLocation().compareTo(r2.getLocation()); + } + }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_request_list); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); + Toolbar toolbar = (Toolbar) findViewById(R.id.requestlist_toolbar); setSupportActionBar(toolbar); - FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); + FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.addrequest_button); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { @@ -55,21 +205,22 @@ }); //LEFT hamburger button - DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); + DrawerLayout requestlistDrawer = (DrawerLayout) findViewById(R.id.request_list_drawer_layout); ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( - this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); - drawer.addDrawerListener(toggle); - + this, requestlistDrawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); + requestlistDrawer.addDrawerListener(toggle); toggle.syncState(); - NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); + NavigationView navigationView = (NavigationView) findViewById(R.id.request_list_nav_view); navigationView.setNavigationItemSelectedListener(this); - requestList.add(new RequestList("わさび", "明日まで", "スーパー")); - requestList.add(new RequestList("ケーキ" , "12/25", "ダニエル")); - requestList.add(new RequestList("からし", "12/22", "コンビニ")); + //Add Request + requestlist.add(new RequestList("わさび", new Date(2019, 6, 7), "スーパー")); + requestlist.add(new RequestList("ケーキ" , new Date(2019, 6, 6), "ダニエル")); + requestlist.add(new RequestList("からし", new Date(2018, 6, 4), "コンビニ")); - AddRequestList(requestList); + //Add RequestList Table + AddRequestListTable(requestlist); LinearLayout productView = (LinearLayout) findViewById(R.id.product); productView.setOnClickListener(productOnClick); @@ -82,50 +233,6 @@ } -// @Override -// public void onBackPressed() { -// DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); -// if (drawer.isDrawerOpen(GravityCompat.START)) { -// drawer.closeDrawer(GravityCompat.START); -// } else { -// super.onBackPressed(); -// } -// } -// -// @Override -// public boolean onCreateOptionsMenu(Menu menu) { -// // Inflate the menu; this adds items to the action bar if it is present. -// getMenuInflater().inflate(R.menu.request_list, menu); -// return true; -// } -// -// @Override -// public boolean onOptionsItemSelected(MenuItem item) { -// // Handle action bar item clicks here. The action bar will -// // automatically handle clicks on the Home/Up button, so long -// // as you specify a parent activity in AndroidManifest.xml. -// int id = item.getItemId(); -// -// //noinspection SimplifiableIfStatement -// if (id == R.id.nav_member_list) { -// // Handle the camera action -// toast = Toast.makeText(RequestListActivity.this, "Next Member List Activity", Toast.LENGTH_LONG); -// toast.show(); -// } else if (id == R.id.nav_add_member) { -// startActivity(new Intent(RequestListActivity.this, AddMemberActivity.class)); -// } else if (id == R.id.nav_notification) { -// toast = Toast.makeText(RequestListActivity.this, "Next Notification Activity", Toast.LENGTH_LONG); -// toast.show(); -// } else if (id == R.id.nav_settings) { -// toast = Toast.makeText(RequestListActivity.this, "Next Settings Activity", Toast.LENGTH_LONG); -// toast.show(); -// } else if (id == R.id.nav_close) { -// -// } -// -// return super.onOptionsItemSelected(item); -// } - @SuppressWarnings("StatementWithEmptyBody") @Override public boolean onNavigationItemSelected(MenuItem item) { @@ -133,7 +240,7 @@ int id = item.getItemId(); if (id == R.id.nav_member_list) { - // Handle the camera action + // Handle the member list action toast = Toast.makeText(RequestListActivity.this, "Next Member List Activity", Toast.LENGTH_LONG); toast.show(); } else if (id == R.id.nav_add_member) { @@ -144,18 +251,25 @@ } else if (id == R.id.nav_settings) { toast = Toast.makeText(RequestListActivity.this, "Next Settings Activity", Toast.LENGTH_LONG); toast.show(); - } else if (id == R.id.nav_close) { + } else if (id == R.id.request_list_nav_close) { } - DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); - drawer.closeDrawer(GravityCompat.START); + DrawerLayout requestlistDrawer = (DrawerLayout) findViewById(R.id.request_list_drawer_layout); + requestlistDrawer.closeDrawer(GravityCompat.START); return true; } - private void AddRequestList(ArrayList requestList) { - TableLayout requesttable = (TableLayout)findViewById(R.id.RequestList); + private int ConvertMonth(int i, ArrayList requestList) { + if(requestList.get(i).getDeadline().getMonth() == 0) { + return 12; + } else { + return requestList.get(i).getDeadline().getMonth(); + } + } + private void AddRequestListTable(ArrayList requestList) { + Date now = new Date(); for (int i = 0; i < requestList.size(); i++) { TableRow tableRow = new TableRow(this); @@ -167,7 +281,16 @@ tableRow.addView(textProduct); TextView textDeadline = new TextView(this); - textDeadline.setText(requestList.get(i).getDeadline()); +// if(now.after(requestList.get(i).getDeadline())) { +// textDeadline.setText("期限切れ"); +// } +// if (requestList.get(i).getDeadline().getMonth() == now.getMonth()) { +// textDeadline.setText("今日まで"); +// } +// 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()); textDeadline.setTextSize(20); textDeadline.setHeight(150); textDeadline.setGravity(Gravity.CENTER); @@ -180,13 +303,13 @@ textLocation.setGravity(Gravity.CENTER); tableRow.addView(textLocation); + TableLayout requesttable = (TableLayout)findViewById(R.id.RequestList); requesttable.addView(tableRow); } } - private void DeleateRequestList() { - TableLayout requesttable = (TableLayout) findViewById(R.id.RequestList); - + private void ResetRequestListTable() { + TableLayout requesttable = (TableLayout)findViewById(R.id.RequestList); int childCount = requesttable.getChildCount(); // Remove all rows except the first one @@ -195,93 +318,35 @@ } } - public View.OnClickListener productOnClick = new View.OnClickListener() { - @Override - public void onClick(View view) { - Toast.makeText(RequestListActivity.this, "product sorted", Toast.LENGTH_SHORT).show(); - ImageView product = (ImageView) findViewById(R.id.imageProduct); - if (!productColorFlag) { - product.setColorFilter(null); - productColorFlag = true; - DeleateRequestList(); - AddRequestList(requestList); - } else { - product.setColorFilter(BLACK); - productColorFlag = false; - DeleateRequestList(); - productSort(); - } - } - }; + private ArrayList SortProduct() { + ArrayList productsortRequestlist = (ArrayList) requestlist.clone(); - private void productSort() { - ArrayList requestList1 = (ArrayList) requestList.clone(); - - Collections.sort(requestList1, new Comparator() { - @Override - public int compare(RequestList r1, RequestList r2) { - return r1.getProduct().compareTo((r2.getProduct())); - } - }); - - TableLayout requesttable = (TableLayout)findViewById(R.id.RequestList); - AddRequestList(requestList1); -// -// for (int i = 0; i < requestList1.size(); i++) { -// TableRow tableRow = new TableRow(this); -// -// TextView textProduct = new TextView(this); -// textProduct.setText(requestList1.get(i).getProduct()); -// textProduct.setTextSize(20); -// textProduct.setHeight(150); -// textProduct.setGravity(Gravity.CENTER); -// tableRow.addView(textProduct); -// -// TextView textDeadline = new TextView(this); -// textDeadline.setText(requestList1.get(i).getDeadline()); -// textDeadline.setTextSize(20); -// textDeadline.setHeight(150); -// textDeadline.setGravity(Gravity.CENTER); -// tableRow.addView(textDeadline); -// -// TextView textLocation = new TextView(this); -// textLocation.setText(requestList1.get(i).getLocation()); -// textLocation.setTextSize(20); -// textLocation.setHeight(150); -// textLocation.setGravity(Gravity.CENTER); -// tableRow.addView(textLocation); -// -// requesttable.addView(tableRow); -// } + Collections.sort(productsortRequestlist, productSortComparator); + return productsortRequestlist; } - public View.OnClickListener deadlineOnClick = new View.OnClickListener() { - @Override - public void onClick(View view) { - Toast.makeText(RequestListActivity.this, "deadline sorted", Toast.LENGTH_SHORT).show(); - ImageView deadline = (ImageView) findViewById(R.id.imageDeadline); - if (!deadlineColorFlag) { - deadline.setColorFilter(null); - deadlineColorFlag = true; - } else { - deadline.setColorFilter(BLACK); - deadlineColorFlag = false; - } - } - }; + private ArrayList SortDeadline() { + ArrayList deadlinesortRequestlist = (ArrayList) requestlist.clone(); - public View.OnClickListener locationOnClick = new View.OnClickListener() { - @Override - public void onClick(View view) { - Toast.makeText(RequestListActivity.this, "location sorted", Toast.LENGTH_SHORT).show(); - ImageView location = (ImageView) findViewById(R.id.imageLocation); - if (!locationColorFlag) { - location.setColorFilter(null); - locationColorFlag = true; - } else { - location.setColorFilter(BLACK); - locationColorFlag = false; - } - } - }; + Collections.sort(deadlinesortRequestlist, deadlineSortComparator); + return deadlinesortRequestlist; + } + + private ArrayList ReverseDeadline() { + ArrayList deadlinesortRequestlist = (ArrayList) requestlist.clone(); + + Collections.sort(deadlinesortRequestlist, deadlineReverseComparator); + return deadlinesortRequestlist; + } + + private ArrayList SortLocation() { + ArrayList locationsortRequestlist = (ArrayList) requestlist.clone(); + + Collections.sort(locationsortRequestlist, locationSortComparator); + return locationsortRequestlist; + } } + + + + diff --git a/app/src/main/res/drawable/ic_add_alert.xml b/app/src/main/res/drawable/ic_add_alert.xml new file mode 100644 index 0000000..a3fa696 --- /dev/null +++ b/app/src/main/res/drawable/ic_add_alert.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_add_alert_24dp.xml b/app/src/main/res/drawable/ic_add_alert_24dp.xml deleted file mode 100644 index a3fa696..0000000 --- a/app/src/main/res/drawable/ic_add_alert_24dp.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_close.xml b/app/src/main/res/drawable/ic_close.xml new file mode 100644 index 0000000..ca48b78 --- /dev/null +++ b/app/src/main/res/drawable/ic_close.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_person.xml b/app/src/main/res/drawable/ic_person.xml new file mode 100644 index 0000000..8dcc1ac --- /dev/null +++ b/app/src/main/res/drawable/ic_person.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_person_24dp.xml b/app/src/main/res/drawable/ic_person_24dp.xml deleted file mode 100644 index 8dcc1ac..0000000 --- a/app/src/main/res/drawable/ic_person_24dp.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_person_add.xml b/app/src/main/res/drawable/ic_person_add.xml new file mode 100644 index 0000000..ab2ae36 --- /dev/null +++ b/app/src/main/res/drawable/ic_person_add.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_person_add_24dp.xml b/app/src/main/res/drawable/ic_person_add_24dp.xml deleted file mode 100644 index ab2ae36..0000000 --- a/app/src/main/res/drawable/ic_person_add_24dp.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/app/src/main/res/layout/activity_request_list.xml b/app/src/main/res/layout/activity_request_list.xml index 10aaf54..715e880 100644 --- a/app/src/main/res/layout/activity_request_list.xml +++ b/app/src/main/res/layout/activity_request_list.xml @@ -2,7 +2,7 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/menu/activity_request_list_drawer.xml b/app/src/main/res/menu/activity_request_list_drawer.xml index 8587e90..7e1ae63 100644 --- a/app/src/main/res/menu/activity_request_list_drawer.xml +++ b/app/src/main/res/menu/activity_request_list_drawer.xml @@ -6,20 +6,20 @@ diff --git a/app/src/main/res/menu/request_list.xml b/app/src/main/res/menu/request_list.xml index e2e29e7..40c7a7b 100644 --- a/app/src/main/res/menu/request_list.xml +++ b/app/src/main/res/menu/request_list.xml @@ -4,7 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" tools:showIn="navigation_view">