mirror of
https://github.com/ClaytonWWilson/Listify.git
synced 2025-12-16 10:48:46 +00:00
Merge pull request #42 from ClaytonWWilson/hamburger-menu-additions
Hamburger menu additions
This commit is contained in:
commit
fad60c6b90
@ -3,6 +3,7 @@ package com.example.listify;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.ImageButton;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
@ -26,7 +27,7 @@ import java.util.Arrays;
|
||||
import java.util.Properties;
|
||||
import java.util.Random;
|
||||
|
||||
public class MainActivity extends AppCompatActivity {
|
||||
public class MainActivity extends AppCompatActivity implements CreateListDialogFragment.OnNewListListener {
|
||||
private AppBarConfiguration mAppBarConfiguration;
|
||||
|
||||
@Override
|
||||
@ -128,12 +129,13 @@ public class MainActivity extends AppCompatActivity {
|
||||
NavigationView navigationView = findViewById(R.id.nav_view);
|
||||
// Passing each menu ID as a set of Ids because each menu should be considered as top level destinations.
|
||||
mAppBarConfiguration = new AppBarConfiguration.Builder(
|
||||
R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow)
|
||||
R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow, R.id.nav_lists)
|
||||
.setDrawerLayout(drawer)
|
||||
.build();
|
||||
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
|
||||
NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
|
||||
NavigationUI.setupWithNavController(navigationView, navController);
|
||||
|
||||
// Handle search button click
|
||||
ImageButton searchButton = (ImageButton) findViewById(R.id.searchButton);
|
||||
searchButton.setOnClickListener(new View.OnClickListener() {
|
||||
@ -160,4 +162,21 @@ public class MainActivity extends AppCompatActivity {
|
||||
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
|
||||
return NavigationUI.navigateUp(navController, mAppBarConfiguration) || super.onSupportNavigateUp();
|
||||
}
|
||||
|
||||
// This function only exists for the create new list option in hamburger menu
|
||||
public void onClickCreateList(MenuItem m) {
|
||||
m.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
|
||||
@Override
|
||||
public boolean onMenuItemClick(MenuItem item) {
|
||||
CreateListDialogFragment createListDialogFragment = new CreateListDialogFragment();
|
||||
createListDialogFragment.show(getSupportFragmentManager(), "Create New List");
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendNewListName(String name) {
|
||||
|
||||
}
|
||||
}
|
||||
@ -155,6 +155,7 @@ public class SearchResults extends AppCompatActivity implements SortDialogFragme
|
||||
"Sapien eget mi proin sed libero enim sed faucibus turpis. Pharetra massa massa ultricies mi quis hendrerit dolor magna. Integer enim neque volutpat ac tincidunt vitae semper. Euismod lacinia at quis risus sed vulputate. Ut venenatis tellus in metus vulputate eu scelerisque. Etiam erat velit scelerisque in dictum non consectetur. Viverra nam libero justo laoreet sit amet cursus sit. Arcu non sodales neque sodales. Vivamus arcu felis bibendum ut tristique et egestas quis. Sed adipiscing diam donec adipiscing tristique risus. Sollicitudin tempor id eu nisl nunc mi ipsum faucibus vitae. Velit ut tortor pretium viverra suspendisse potenti nullam ac tortor. Non nisi est sit amet facilisis magna etiam. Tortor at risus viverra adipiscing. Donec ultrices tincidunt arcu non sodales neque sodales. Eget egestas purus viverra accumsan. Enim lobortis scelerisque fermentum dui faucibus in ornare. Porttitor massa id neque aliquam. Ut consequat semper viverra nam. Orci ac auctor augue mauris augue neque gravida.\n" +
|
||||
"\n" +
|
||||
"Lacus sed viverra tellus in hac habitasse platea dictumst. Nec ullamcorper sit amet risus nullam eget felis eget nunc. Semper feugiat nibh sed pulvinar. Consequat nisl vel pretium lectus quam id leo in. Volutpat maecenas volutpat blandit aliquam etiam erat velit scelerisque. Faucibus a pellentesque sit amet porttitor eget. Sed viverra tellus in hac habitasse platea dictumst vestibulum. Placerat vestibulum lectus mauris ultrices eros in cursus turpis. Sed tempus urna et pharetra pharetra massa massa ultricies mi. Ornare arcu odio ut sem. Ornare arcu dui vivamus arcu felis bibendum ut. Feugiat pretium nibh ipsum consequat. Consectetur adipiscing elit ut aliquam purus sit amet luctus venenatis. Felis eget velit aliquet sagittis id consectetur purus ut.", "Automotive", 45.22, "9/24/2020", "1", "http://cdn.sheknows.com/articles/2013/05/pet5.jpg");
|
||||
Product h = new Product("Tin Foil", "0001", "Kroger", "0001", "0123456781", "Not aluminum foil", "Grocery", 1.00, "9/24/2020", "1", "https://i.ytimg.com/vi/q9N1doYMxR0/maxresdefault.jpg");
|
||||
resultsProductList.add(a);
|
||||
resultsProductList.add(b);
|
||||
resultsProductList.add(c);
|
||||
@ -162,6 +163,7 @@ public class SearchResults extends AppCompatActivity implements SortDialogFragme
|
||||
resultsProductList.add(e);
|
||||
resultsProductList.add(f);
|
||||
resultsProductList.add(g);
|
||||
resultsProductList.add(h);
|
||||
}
|
||||
|
||||
// Create a list of all stores in the results so the user can filter by store name
|
||||
@ -180,6 +182,10 @@ public class SearchResults extends AppCompatActivity implements SortDialogFragme
|
||||
|
||||
// Sorts the search results
|
||||
private void sortResults() {
|
||||
// Reset the filtered list
|
||||
resultsProductListSorted.clear();
|
||||
resultsProductListSorted.addAll(resultsProductList);
|
||||
|
||||
// Sort Modes
|
||||
// 0 default (no sorting)
|
||||
// 1 itemName
|
||||
@ -190,10 +196,8 @@ public class SearchResults extends AppCompatActivity implements SortDialogFragme
|
||||
// Sort based on mode
|
||||
switch (this.sortMode) {
|
||||
case 0:
|
||||
resultsProductListSorted.clear();
|
||||
resultsProductListSorted.addAll(resultsProductList);
|
||||
searchResultsListAdapter.notifyDataSetChanged();
|
||||
return;
|
||||
// Do nothing
|
||||
break;
|
||||
case 1:
|
||||
resultsProductListSorted.sort(new Comparator<Product>() {
|
||||
@Override
|
||||
@ -238,7 +242,7 @@ public class SearchResults extends AppCompatActivity implements SortDialogFragme
|
||||
break;
|
||||
}
|
||||
|
||||
if (this.descending) {
|
||||
if (this.sortMode != 0 & this.descending) {
|
||||
for (int i = 0; i < resultsProductListSorted.size() / 2; i++) {
|
||||
Product temp = resultsProductListSorted.get(i);
|
||||
resultsProductListSorted.set(i, resultsProductListSorted.get(resultsProductListSorted.size() - i - 1));
|
||||
@ -246,6 +250,18 @@ public class SearchResults extends AppCompatActivity implements SortDialogFragme
|
||||
}
|
||||
}
|
||||
|
||||
// Only keep results that match the current store selection
|
||||
if (this.storeSelection != 0) {
|
||||
ArrayList<Product> temp = new ArrayList<>();
|
||||
resultsProductListSorted.forEach(product -> {
|
||||
if (product.getChainName().equals(this.stores.get(this.storeSelection - 1))) {
|
||||
temp.add(product);
|
||||
}
|
||||
});
|
||||
resultsProductListSorted.clear();
|
||||
resultsProductListSorted.addAll(temp);
|
||||
}
|
||||
|
||||
searchResultsListAdapter.notifyDataSetChanged();
|
||||
}
|
||||
}
|
||||
@ -52,4 +52,4 @@ public class DisplayShoppingListsAdapter extends BaseAdapter {
|
||||
|
||||
return convertView;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -71,4 +71,4 @@ public class ShoppingList extends ArrayList<Product> {
|
||||
public boolean addAll(@NonNull Collection<? extends Product> c) {
|
||||
return list.addAll(c);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,69 @@
|
||||
package com.example.listify.ui.lists;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.LayoutInflater;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ListView;
|
||||
import android.widget.Toast;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.example.listify.CreateListDialogFragment;
|
||||
import com.example.listify.MainActivity;
|
||||
import com.example.listify.R;
|
||||
import com.example.listify.adapter.DisplayShoppingListsAdapter;
|
||||
import com.example.listify.model.ShoppingList;
|
||||
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class ListsFragment extends Fragment implements CreateListDialogFragment.OnNewListListener {
|
||||
ListView shoppingListsView;
|
||||
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
View root = inflater.inflate(R.layout.fragment_lists, container, false);
|
||||
|
||||
// Toolbar toolbar = (Toolbar) root.findViewById(R.id.toolbar_lists);
|
||||
// ((AppCompatActivity)getActivity()).setActionBar(toolbar);
|
||||
|
||||
// Hardcode shopping lists to demonstrate displaying lists
|
||||
shoppingListsView = root.findViewById(R.id.shopping_lists);
|
||||
ShoppingList a = new ShoppingList("first list");
|
||||
ShoppingList b = new ShoppingList("Groceries");
|
||||
ShoppingList c = new ShoppingList("Expensive Stuff");
|
||||
ArrayList<ShoppingList> shoppingLists = new ArrayList<>();
|
||||
shoppingLists.add(a);
|
||||
shoppingLists.add(b);
|
||||
shoppingLists.add(c);
|
||||
|
||||
// Set adapter and display this users lists
|
||||
DisplayShoppingListsAdapter displayShoppingListsAdapter = new DisplayShoppingListsAdapter(getActivity(), shoppingLists);
|
||||
shoppingListsView.setAdapter(displayShoppingListsAdapter);
|
||||
shoppingListsView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
Toast.makeText(getContext(), "open and display " + shoppingLists.get(position).getName(), Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
});
|
||||
|
||||
FloatingActionButton fab = (FloatingActionButton) root.findViewById(R.id.new_list_fab);
|
||||
fab.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
CreateListDialogFragment createListDialogFragment = new CreateListDialogFragment();
|
||||
createListDialogFragment.show(getActivity().getSupportFragmentManager(), "Create New List");
|
||||
}
|
||||
});
|
||||
|
||||
return root;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendNewListName(String name) {
|
||||
Toast.makeText(getActivity(), String.format("%s created", name), Toast.LENGTH_LONG).show();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,5 @@
|
||||
<vector android:height="28dp" android:tint="?attr/colorControlNormal"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="28dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M19,5v14L5,19L5,5h14m1.1,-2L3.9,3c-0.5,0 -0.9,0.4 -0.9,0.9v16.2c0,0.4 0.4,0.9 0.9,0.9h16.2c0.4,0 0.9,-0.5 0.9,-0.9L21,3.9c0,-0.5 -0.5,-0.9 -0.9,-0.9zM11,7h6v2h-6L11,7zM11,11h6v2h-6v-2zM11,15h6v2h-6zM7,7h2v2L7,9zM7,11h2v2L7,13zM7,15h2v2L7,17z"/>
|
||||
</vector>
|
||||
46
Listify/app/src/main/res/layout/app_bar_lists.xml
Normal file
46
Listify/app/src/main/res/layout/app_bar_lists.xml
Normal file
@ -0,0 +1,46 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:context=".MainActivity">
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:theme="@style/AppTheme.AppBarOverlay">
|
||||
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
android:id="@+id/toolbar_lists"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="?attr/colorPrimary"
|
||||
app:popupTheme="@style/AppTheme.PopupOverlay" >
|
||||
<!-- <ImageButton-->
|
||||
<!-- android:id="@+id/searchButton"-->
|
||||
<!-- android:layout_width="30dp"-->
|
||||
<!-- android:layout_gravity="end"-->
|
||||
<!-- android:layout_marginEnd="5dp"-->
|
||||
<!-- android:layout_height="wrap_content"-->
|
||||
<!-- app:srcCompat="@drawable/ic_baseline_search_28"-->
|
||||
<!-- android:contentDescription="@string/search_button_desc"-->
|
||||
<!-- android:background="@null"/>-->
|
||||
</androidx.appcompat.widget.Toolbar>
|
||||
|
||||
|
||||
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
<include layout="@layout/content_main" />
|
||||
|
||||
<!-- <com.google.android.material.floatingactionbutton.FloatingActionButton-->
|
||||
<!-- android:id="@+id/fab"-->
|
||||
<!-- android:layout_width="wrap_content"-->
|
||||
<!-- android:layout_height="wrap_content"-->
|
||||
<!-- android:layout_gravity="bottom|end"-->
|
||||
<!-- android:layout_margin="@dimen/fab_margin"-->
|
||||
<!-- app:srcCompat="@android:drawable/ic_dialog_email" />-->
|
||||
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
31
Listify/app/src/main/res/layout/fragment_lists.xml
Normal file
31
Listify/app/src/main/res/layout/fragment_lists.xml
Normal file
@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingBottom="@dimen/activity_vertical_margin"
|
||||
android:paddingLeft="@dimen/activity_horizontal_margin"
|
||||
android:paddingRight="@dimen/activity_horizontal_margin"
|
||||
android:paddingTop="@dimen/activity_vertical_margin"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior"
|
||||
tools:context=".ui.lists.ListsFragment"
|
||||
tools:showIn="@layout/fragment_lists">
|
||||
|
||||
<ListView
|
||||
android:id="@+id/shopping_lists"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:divider="@color/list_divider"
|
||||
android:dividerHeight="1dp"/>
|
||||
|
||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
android:id="@+id/new_list_fab"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="@dimen/fab_margin"
|
||||
app:srcCompat="@drawable/ic_baseline_add_28"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_alignParentEnd="true"/>
|
||||
|
||||
</RelativeLayout>
|
||||
@ -16,5 +16,14 @@
|
||||
android:id="@+id/nav_slideshow"
|
||||
android:icon="@drawable/ic_menu_slideshow"
|
||||
android:title="@string/menu_slideshow" />
|
||||
<item
|
||||
android:id="@+id/nav_lists"
|
||||
android:icon="@drawable/ic_baseline_list_alt_28"
|
||||
android:title="@string/menu_lists" />
|
||||
<item
|
||||
android:id="@+id/nav_create_list"
|
||||
android:icon="@drawable/ic_baseline_add_28"
|
||||
android:title="Create New List"
|
||||
android:onClick="onClickCreateList"/>
|
||||
</group>
|
||||
</menu>
|
||||
9
Listify/app/src/main/res/menu/lists_menu.xml
Normal file
9
Listify/app/src/main/res/menu/lists_menu.xml
Normal file
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
<item
|
||||
android:id="@+id/action_create_list"
|
||||
android:orderInCategory="101"
|
||||
android:title="Create List"
|
||||
app:showAsAction="never" />
|
||||
</menu>
|
||||
@ -22,4 +22,10 @@
|
||||
android:name="com.example.listify.ui.slideshow.SlideshowFragment"
|
||||
android:label="@string/menu_slideshow"
|
||||
tools:layout="@layout/fragment_slideshow" />
|
||||
|
||||
<fragment
|
||||
android:id="@+id/nav_lists"
|
||||
android:name="com.example.listify.ui.lists.ListsFragment"
|
||||
android:label="@string/menu_lists"
|
||||
tools:layout="@layout/fragment_lists" />
|
||||
</navigation>
|
||||
@ -29,6 +29,7 @@
|
||||
<string name="search_button_desc">Search Button</string>
|
||||
<string name="title_activity_search_results">SearchResults</string>
|
||||
<string name="store_selection">Store selection</string>
|
||||
<string name="menu_lists">My Lists</string>
|
||||
<string name="title_activity_item_details">ItemDetails</string>
|
||||
<string name="add_to_list">Add to list</string>
|
||||
<string name="create_new_list">Create new list</string>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user