35 private static final String TAG =
"HomeActivity";
36 private static final String PARAM_SEARCH_QUERY =
"search_query";
38 private HomeBinding binding;
40 private BookmarkListAdapter bookmarkListAdapter;
41 private MenuItem searchMenuItem;
42 private SearchView searchView;
44 @Override
public void onCreate(Bundle savedInstanceState)
46 super.onCreate(savedInstanceState);
47 binding = HomeBinding.inflate(getLayoutInflater());
48 setContentView(binding.getRoot());
50 long heapSize = Runtime.getRuntime().maxMemory();
51 Log.i(TAG,
"Max HeapSize: " + heapSize);
52 Log.i(TAG,
"App data folder: " + getFilesDir().toString());
55 Intent caller = getIntent();
56 Uri callParameter = caller.getData();
58 if (Intent.ACTION_VIEW.equals(caller.getAction()) && callParameter !=
null)
60 String refStr = ConnectionReference.getFileReference(callParameter.getPath());
61 Bundle bundle =
new Bundle();
64 Intent bookmarkIntent =
66 bookmarkIntent.putExtras(bundle);
67 startActivity(bookmarkIntent);
70 viewModel =
new ViewModelProvider(
this).get(
HomeViewModel.class);
72 bookmarkListAdapter =
new BookmarkListAdapter();
73 bookmarkListAdapter.setCallbacks(
new BookmarkListAdapter.Callbacks() {
74 @Override public void onItemClick(String refStr)
76 if (ConnectionReference.isBookmarkReference(refStr) ||
77 ConnectionReference.isHostnameReference(refStr))
79 Bundle bundle = new Bundle();
80 bundle.putString(SessionActivity.PARAM_CONNECTION_REFERENCE, refStr);
82 Intent sessionIntent = new Intent(HomeActivity.this, SessionActivity.class);
83 sessionIntent.putExtras(bundle);
84 startActivity(sessionIntent);
86 if (searchView != null)
88 searchView.setQuery(
"", false);
89 searchView.setIconified(true);
91 if (searchMenuItem != null)
93 searchMenuItem.collapseActionView();
95 viewModel.loadBookmarks(
"");
99 @Override
public void onDelete(
long id)
101 viewModel.deleteBookmark(
id);
105 binding.recyclerViewBookmarks.setLayoutManager(
new LinearLayoutManager(
this));
106 binding.recyclerViewBookmarks.setAdapter(bookmarkListAdapter);
108 viewModel.getBookmarks().observe(
this,
109 bookmarks -> bookmarkListAdapter.setItems(bookmarks));
112 if (savedInstanceState !=
null)
114 String query = savedInstanceState.getString(PARAM_SEARCH_QUERY);
115 if (query !=
null && !query.isEmpty() && viewModel.getCurrentQuery().isEmpty())
117 viewModel.loadBookmarks(query);
121 getOnBackPressedDispatcher().addCallback(
this,
new OnBackPressedCallback(
true) {
122 @Override
public void handleOnBackPressed()
127 .setTitle(R.string.dlg_title_exit)
128 .setMessage(R.string.dlg_msg_exit)
129 .setPositiveButton(R.string.yes, (dialog, which) -> finish())
130 .setNegativeButton(R.string.no, (dialog, which) -> dialog.dismiss())
141 @Override
protected void onResume()
144 Log.v(TAG,
"HomeActivity.onResume");
145 viewModel.loadBookmarks(viewModel.getCurrentQuery());
148 @Override
protected void onSaveInstanceState(Bundle outState)
150 super.onSaveInstanceState(outState);
151 outState.putString(PARAM_SEARCH_QUERY, viewModel.getCurrentQuery());
154 @Override
public boolean onCreateOptionsMenu(Menu menu)
156 MenuInflater inflater = getMenuInflater();
157 inflater.inflate(R.menu.home_menu, menu);
158 setupSearchView(menu);
162 @Override
public boolean onOptionsItemSelected(MenuItem item)
166 int itemId = item.getItemId();
167 if (itemId == R.id.newBookmark)
169 Intent bookmarkIntent =
new Intent(
this, BookmarkActivity.class);
170 startActivity(bookmarkIntent);
172 else if (itemId == R.id.appSettings)
174 Intent settingsIntent =
new Intent(
this, ApplicationSettingsActivity.class);
175 startActivity(settingsIntent);
177 else if (itemId == R.id.help)
179 Intent helpIntent =
new Intent(
this, HelpActivity.class);
180 startActivity(helpIntent);
182 else if (itemId == R.id.about)
184 Intent aboutIntent =
new Intent(
this, AboutActivity.class);
185 startActivity(aboutIntent);
191 private void setupSearchView(Menu menu)
193 searchMenuItem = menu.findItem(R.id.action_search);
194 if (searchMenuItem !=
null)
196 searchView = (SearchView)searchMenuItem.getActionView();
198 String currentQuery = viewModel.getCurrentQuery();
199 if (currentQuery !=
null && !currentQuery.isEmpty())
201 searchMenuItem.expandActionView();
202 searchView.setQuery(currentQuery,
false);
203 searchView.clearFocus();
206 searchView.setOnQueryTextListener(
new SearchView.OnQueryTextListener() {
207 @Override
public boolean onQueryTextSubmit(String query)
212 @Override
public boolean onQueryTextChange(String s)
214 viewModel.loadBookmarks(s);