diff --git a/src/main/java/org/amahi/anywhere/fragment/NavigationFragment.java b/src/main/java/org/amahi/anywhere/fragment/NavigationFragment.java index ce44a05df..d2cfef82f 100644 --- a/src/main/java/org/amahi/anywhere/fragment/NavigationFragment.java +++ b/src/main/java/org/amahi/anywhere/fragment/NavigationFragment.java @@ -26,6 +26,8 @@ import android.accounts.AuthenticatorException; import android.accounts.OnAccountsUpdateListener; import android.accounts.OperationCanceledException; +import android.app.Activity; +import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; @@ -90,10 +92,22 @@ public class NavigationFragment extends Fragment implements AccountManagerCallba ServerClient serverClient; View view; private Intent tvIntent; + private Context mContext; + private Activity mActivity; private boolean areServersVisible; private List serversList; + @Override + public void onAttach(Context context) { + super.onAttach(context); + mContext = context; + + if (context instanceof Activity) { + mActivity = (Activity) context; + } + } + @Override public View onCreateView(LayoutInflater layoutInflater, ViewGroup container, Bundle savedInstanceState) { view = layoutInflater.inflate(R.layout.fragment_navigation, container, false); @@ -117,7 +131,7 @@ public void onActivityCreated(Bundle savedInstanceState) { } private void setUpInjections() { - AmahiApplication.from(getActivity()).inject(this); + AmahiApplication.from(mActivity).inject(this); } private void setUpSettingsMenu() { @@ -129,13 +143,13 @@ private void setUpAuthenticationListener() { } private AccountManager getAccountManager() { - return AccountManager.get(getActivity()); + return AccountManager.get(mContext); } @Override public void onAccountsUpdated(Account[] accounts) { - if (Preferences.getFirstRun(getContext())) { + if (Preferences.getFirstRun(mContext)) { launchIntro(); } @@ -145,8 +159,8 @@ public void onAccountsUpdated(Account[] accounts) { } private void launchIntro() { - startActivity(new Intent(getContext(), IntroductionActivity.class)); - getActivity().finishAffinity(); + startActivity(new Intent(mContext, IntroductionActivity.class)); + mActivity.finishAffinity(); } private void setUpContentRefreshing() { @@ -159,7 +173,7 @@ private void setUpContentRefreshing() { android.R.color.holo_red_light); refreshLayout.setOnRefreshListener(() -> { - ViewDirector.of(getActivity(), R.id.animator_content).show(R.id.empty_view); + ViewDirector.of(mActivity, R.id.animator_content).show(R.id.empty_view); setUpServers(new Bundle()); }); } @@ -169,13 +183,13 @@ private List getAccounts() { } private void setUpAccount() { - getAccountManager().addAccount(AmahiAccount.TYPE, AmahiAccount.TYPE_TOKEN, null, null, getActivity(), this, null); + getAccountManager().addAccount(AmahiAccount.TYPE, AmahiAccount.TYPE_TOKEN, null, null, mActivity, this, null); } private void setUpAuthenticationToken() { Account account = getAccounts().get(0); - getAccountManager().getAuthToken(account, AmahiAccount.TYPE, null, getActivity(), this, null); + getAccountManager().getAuthToken(account, AmahiAccount.TYPE, null, mActivity, this, null); } @Override @@ -198,7 +212,7 @@ public void run(AccountManagerFuture accountManagerFuture) { } private void tearDownActivity() { - getActivity().finish(); + mActivity.finish(); } private void setUpServers(Bundle state) { @@ -236,11 +250,11 @@ private void setUpServersState(Bundle state) { } private void setUpServersContent(List servers) { - if (!CheckTV.isATV(getContext())) { + if (!CheckTV.isATV(mContext)) { replaceServersList(filterActiveServers(servers)); } else { serversList = filterActiveServers(servers); - String serverName = Preferences.getPreference(getContext()).getString(getString(R.string.pref_server_select_key), serversList.get(0).getName()); + String serverName = Preferences.getPreference(mContext).getString(getString(R.string.pref_server_select_key), serversList.get(0).getName()); if (serversList.get(0).getName().matches(serverName)) replaceServersList(serversList); @@ -258,7 +272,7 @@ private void replaceServersList(List servers) { } private int findTheServer(List serverList) { - String serverName = Preferences.getPreference(getContext()).getString(getString(R.string.pref_server_select_key), serverList.get(0).getName()); + String serverName = Preferences.getPreference(mContext).getString(getString(R.string.pref_server_select_key), serverList.get(0).getName()); for (int i = 0; i < serverList.size(); i++) { if (serverName.matches(serverList.get(i).getName())) @@ -299,7 +313,7 @@ private void setUpAuthentication() { if (getAccounts().isEmpty()) { setUpAccount(); } else { - if (Preferences.getFirstRun(getActivity()) && !CheckTV.isATV(getActivity())) { + if (Preferences.getFirstRun(mActivity) && !CheckTV.isATV(mActivity)) { launchIntro(); } setUpAuthenticationToken(); @@ -317,7 +331,7 @@ private void setUpServers(String authenticationToken) { } private void setUpServersContent(String authenticationToken) { - amahiClient.getServers(getContext(), authenticationToken); + amahiClient.getServers(mContext, authenticationToken); } @Subscribe @@ -330,7 +344,7 @@ public void onServersLoaded(ServersLoadedEvent event) { showContent(); - tvIntent = new Intent(getContext(), MainTVActivity.class); + tvIntent = new Intent(mContext, MainTVActivity.class); tvIntent.putParcelableArrayListExtra(getString(R.string.intent_servers), new ArrayList<>(filterActiveServers(event.getServers()))); } @@ -347,7 +361,7 @@ private void setUpNavigation() { private void setUpNavigationList() { getNavigationListView().setVisibility(View.VISIBLE); - getNavigationListView().setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false)); + getNavigationListView().setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false)); if (!areServersVisible) { showNavigationItems(); @@ -371,14 +385,14 @@ private void setUpNavigationAdapter() { //Setting the layout of a vertical list dynamically. if (!serverClient.isConnected()) { - getNavigationListView().setAdapter(NavigationDrawerAdapter.newRemoteAdapter(getActivity())); + getNavigationListView().setAdapter(NavigationDrawerAdapter.newRemoteAdapter(mActivity)); return; } if (serverClient.isConnectedLocal()) { - getNavigationListView().setAdapter(NavigationDrawerAdapter.newLocalAdapter(getActivity())); + getNavigationListView().setAdapter(NavigationDrawerAdapter.newLocalAdapter(mActivity)); } else { - getNavigationListView().setAdapter(NavigationDrawerAdapter.newRemoteAdapter(getActivity())); + getNavigationListView().setAdapter(NavigationDrawerAdapter.newRemoteAdapter(mActivity)); } } @@ -403,7 +417,7 @@ private TextView getServerNameTextView() { } private void setUpNavigationListener() { - getNavigationListView().addOnItemTouchListener(new RecyclerItemClickListener(getContext(), (view, position) -> { + getNavigationListView().addOnItemTouchListener(new RecyclerItemClickListener(mContext, (view, position) -> { getNavigationListView().dispatchSetActivated(false); view.setActivated(true); @@ -531,11 +545,11 @@ private void showOfflineNavigation() { areServersVisible = false; setUpNavigationList(); getLinearLayoutSelectedServer().setOnClickListener((v) -> { - Toast.makeText(getContext(), R.string.message_connection_error, Toast.LENGTH_SHORT).show(); + Toast.makeText(mContext, R.string.message_connection_error, Toast.LENGTH_SHORT).show(); }); showContent(); - Toast.makeText(getContext(), R.string.message_connection_error, Toast.LENGTH_SHORT).show(); + Toast.makeText(mContext, R.string.message_connection_error, Toast.LENGTH_SHORT).show(); } @Subscribe @@ -547,16 +561,16 @@ private void setUpServerConnection(Server server) { if (serverClient.isConnected(server)) { setUpServerConnection(); } else { - serverClient.connect(getContext(), server); + serverClient.connect(mContext, server); } } private void storeServerName(Server server) { - Preferences.setServerName(getContext(), server.getName()); + Preferences.setServerName(mContext, server.getName()); } private String getServerName() { - return Preferences.getServerName(getContext()); + return Preferences.getServerName(mContext); } @Subscribe @@ -565,7 +579,7 @@ public void onServerConnected(ServerConnectedEvent event) { setUpNavigationList(); showContent(); - if (CheckTV.isATV(getContext())) launchTV(); + if (CheckTV.isATV(mContext)) launchTV(); } private void setUpServerConnection() { @@ -586,20 +600,20 @@ private void launchTV() { } private boolean isConnectionAvailable() { - SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getActivity()); + SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(mActivity); return preferences.contains(getString(R.string.preference_key_server_connection)); } private boolean isConnectionAuto() { - SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getActivity()); + SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(mActivity); String preferenceConnection = preferences.getString(getString(R.string.preference_key_server_connection), null); return preferenceConnection.equals(getString(R.string.preference_key_server_connection_auto)); } private boolean isConnectionLocal() { - SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getActivity()); + SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(mActivity); String preferenceConnection = preferences.getString(getString(R.string.preference_key_server_connection), null); return preferenceConnection.equals(getString(R.string.preference_key_server_connection_local)); @@ -686,7 +700,7 @@ private void tearDownAuthenticationListener() { public void showServers() { areServersVisible = true; getNavigationListView().setAdapter(null); - getNavigationListView().setAdapter(new NavigationDrawerAdapter(getContext(), getServerNames())); + getNavigationListView().setAdapter(new NavigationDrawerAdapter(mContext, getServerNames())); getServerNameTextView().setCompoundDrawablesWithIntrinsicBounds( 0, 0, R.drawable.nav_arrow_up, 0); }