|
30 | 30 | import android.widget.*;
|
31 | 31 | import androidx.annotation.NonNull;
|
32 | 32 | import androidx.annotation.Nullable;
|
| 33 | +import androidx.core.view.MenuProvider; |
33 | 34 | import androidx.fragment.app.Fragment;
|
34 | 35 | import androidx.lifecycle.ViewModelProvider;
|
35 | 36 | import androidx.preference.PreferenceManager;
|
|
64 | 65 | import com.google.android.material.tabs.TabLayout;
|
65 | 66 | import com.google.android.material.tabs.TabLayoutMediator;
|
66 | 67 | import com.google.android.material.textfield.TextInputLayout;
|
| 68 | +import org.jetbrains.annotations.NotNull; |
67 | 69 |
|
68 |
| -import static be.ugent.zeus.hydra.common.utils.FragmentUtils.registerMenuProvider; |
69 | 70 | import static be.ugent.zeus.hydra.common.utils.FragmentUtils.requireBaseActivity;
|
70 | 71 |
|
71 | 72 | /**
|
@@ -133,31 +134,48 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
|
133 | 134 | super.onViewCreated(view, savedInstanceState);
|
134 | 135 | Log.d(TAG, "receiveResto: on view created");
|
135 | 136 |
|
136 |
| - registerMenuProvider(this, R.menu.menu_resto, new int[]{R.id.action_history}, menuItem -> { |
137 |
| - int itemId = menuItem.getItemId(); |
138 |
| - if (itemId == R.id.action_refresh) { |
139 |
| - Toast toast = Toast.makeText(requireContext(), R.string.resto_extra_refresh_started, Toast.LENGTH_SHORT); |
140 |
| - toast.show(); |
141 |
| - metaViewModel.onRefresh(); |
142 |
| - menuViewModel.onRefresh(); |
143 |
| - return true; |
144 |
| - } else if (itemId == R.id.resto_show_website) { |
145 |
| - NetworkUtils.maybeLaunchBrowser(requireContext(), URL); |
146 |
| - return true; |
147 |
| - } else if (itemId == R.id.action_history) { |
148 |
| - startActivity(new Intent(requireContext(), HistoryActivity.class)); |
149 |
| - return true; |
150 |
| - } else if (itemId == R.id.resto_order_online) { |
151 |
| - String url = ORDER_URL + requireContext().getString(R.string.value_info_endpoint); |
152 |
| - NetworkUtils.maybeLaunchBrowser(requireContext(), url); |
153 |
| - return true; |
154 |
| - } else if (itemId == R.id.resto_show_allergens) { |
155 |
| - menuItem.setChecked(!menuItem.isChecked()); |
156 |
| - pageAdapter.setShowAllergens(menuItem.isChecked()); |
157 |
| - return true; |
| 137 | + var manager = PreferenceManager.getDefaultSharedPreferences(requireContext()); |
| 138 | + var activity = requireBaseActivity(this); |
| 139 | + activity.addMenuProvider(new MenuProvider() { |
| 140 | + @Override |
| 141 | + public void onCreateMenu(@NonNull @NotNull Menu menu, @NonNull @NotNull MenuInflater menuInflater) { |
| 142 | + menuInflater.inflate(R.menu.menu_resto, menu); |
| 143 | + activity.tintToolbarIcons(menu, R.id.action_history); |
| 144 | + var showAllergens = manager.getBoolean(RestoPreferenceFragment.PREF_SHOW_ALLERGENS, false); |
| 145 | + menu.findItem(R.id.resto_show_allergens).setChecked(showAllergens); |
158 | 146 | }
|
159 |
| - return false; |
160 |
| - }); |
| 147 | + |
| 148 | + @Override |
| 149 | + public boolean onMenuItemSelected(@NonNull @NotNull MenuItem menuItem) { |
| 150 | + int itemId = menuItem.getItemId(); |
| 151 | + if (itemId == R.id.action_refresh) { |
| 152 | + Toast toast = Toast.makeText(requireContext(), R.string.resto_extra_refresh_started, Toast.LENGTH_SHORT); |
| 153 | + toast.show(); |
| 154 | + metaViewModel.onRefresh(); |
| 155 | + menuViewModel.onRefresh(); |
| 156 | + return true; |
| 157 | + } else if (itemId == R.id.resto_show_website) { |
| 158 | + NetworkUtils.maybeLaunchBrowser(requireContext(), URL); |
| 159 | + return true; |
| 160 | + } else if (itemId == R.id.action_history) { |
| 161 | + startActivity(new Intent(requireContext(), HistoryActivity.class)); |
| 162 | + return true; |
| 163 | + } else if (itemId == R.id.resto_order_online) { |
| 164 | + String url = ORDER_URL + requireContext().getString(R.string.value_info_endpoint); |
| 165 | + NetworkUtils.maybeLaunchBrowser(requireContext(), url); |
| 166 | + return true; |
| 167 | + } else if (itemId == R.id.resto_show_allergens) { |
| 168 | + menuItem.setChecked(!menuItem.isChecked()); |
| 169 | + var newValue = menuItem.isChecked(); |
| 170 | + manager.edit() |
| 171 | + .putBoolean(RestoPreferenceFragment.PREF_SHOW_ALLERGENS, newValue) |
| 172 | + .apply(); |
| 173 | + pageAdapter.setShowAllergens(newValue); |
| 174 | + return true; |
| 175 | + } |
| 176 | + return false; |
| 177 | + } |
| 178 | + }, getViewLifecycleOwner()); |
161 | 179 |
|
162 | 180 | requireBaseActivity(this).requireToolbar().setDisplayShowTitleEnabled(false);
|
163 | 181 | exposedDropdown = requireActivity().findViewById(R.id.exposed_dropdown);
|
|
0 commit comments