|
31 | 31 | import androidx.appcompat.app.ActionBar; |
32 | 32 | import androidx.appcompat.app.AlertDialog; |
33 | 33 | import androidx.appcompat.app.AppCompatActivity; |
| 34 | +import androidx.core.view.MenuProvider; |
34 | 35 | import androidx.fragment.app.Fragment; |
35 | 36 | import androidx.fragment.app.FragmentManager; |
36 | 37 | import at.tomtasche.reader.R; |
|
46 | 47 | import at.tomtasche.reader.ui.widget.PageView; |
47 | 48 | import at.tomtasche.reader.ui.widget.ProgressDialogFragment; |
48 | 49 |
|
49 | | -public class DocumentFragment extends Fragment implements LoaderService.LoaderListener, ActionBar.TabListener { |
| 50 | +public class DocumentFragment extends Fragment implements LoaderService.LoaderListener, ActionBar.TabListener, MenuProvider { |
50 | 51 |
|
51 | 52 | private static final String SAVED_KEY_LAST_RESULT = "LAST_RESULT"; |
52 | 53 | private static final String SAVED_KEY_CURRENT_HTML_DIFF = "CURRENT_HTML_DIFF"; |
@@ -80,6 +81,8 @@ public class DocumentFragment extends Fragment implements LoaderService.LoaderLi |
80 | 81 | public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { |
81 | 82 | this.container = container; |
82 | 83 |
|
| 84 | + getActivity().addMenuProvider(this, getActivity()); |
| 85 | + |
83 | 86 | return super.onCreateView(inflater, container, savedInstanceState); |
84 | 87 | } |
85 | 88 |
|
@@ -114,8 +117,6 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) { |
114 | 117 |
|
115 | 118 | mainHandler = new Handler(); |
116 | 119 |
|
117 | | - setHasOptionsMenu(true); |
118 | | - |
119 | 120 | MainActivity mainActivity = (MainActivity) getActivity(); |
120 | 121 | analyticsManager = mainActivity.getAnalyticsManager(); |
121 | 122 | configManager = mainActivity.getConfigManager(); |
@@ -154,17 +155,25 @@ public void onService(LoaderService service) { |
154 | 155 | } |
155 | 156 |
|
156 | 157 | @Override |
157 | | - public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { |
158 | | - super.onCreateOptionsMenu(menu, inflater); |
159 | | - |
| 158 | + public void onCreateMenu(@NonNull Menu menu, @NonNull MenuInflater menuInflater) { |
160 | 159 | this.menu = menu; |
161 | 160 |
|
162 | 161 | menu.findItem(R.id.menu_fullscreen).setVisible(true); |
163 | 162 | menu.findItem(R.id.menu_open_with).setVisible(true); |
164 | 163 | menu.findItem(R.id.menu_share).setVisible(true); |
165 | 164 | menu.findItem(R.id.menu_save).setVisible(true); |
166 | 165 | menu.findItem(R.id.menu_print).setVisible(true); |
167 | | - // the other menu items are dynamically enabled on document load |
| 166 | + |
| 167 | + // the other menu items are dynamically enabled based on the loaded document |
| 168 | + if (lastResult != null) { |
| 169 | + prepareMenu(lastResult.loaderType); |
| 170 | + } |
| 171 | + } |
| 172 | + |
| 173 | + @Override |
| 174 | + public boolean onMenuItemSelected(@NonNull MenuItem menuItem) { |
| 175 | + // TODO: handle menu item clicks here. currently done in Activity for historical reasons |
| 176 | + return false; |
168 | 177 | } |
169 | 178 |
|
170 | 179 | @Override |
@@ -378,12 +387,9 @@ public void onLoadSuccess(FileLoader.Result result) { |
378 | 387 | return; |
379 | 388 | } |
380 | 389 |
|
381 | | - |
382 | 390 | Activity activity = getActivity(); |
383 | 391 | FileLoader.Options options = result.options; |
384 | 392 |
|
385 | | - prepareMenu(result.loaderType); |
386 | | - |
387 | 393 | analyticsManager.setCurrentScreen(activity, result.loaderType.toString() + "_" + options.fileType); |
388 | 394 |
|
389 | 395 | resetTabs(); |
|
0 commit comments