package org.mercury_im.messenger.android.ui; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.SearchView; import androidx.appcompat.widget.Toolbar; import androidx.fragment.app.FragmentTransaction; import com.google.android.material.bottomnavigation.BottomNavigationView; import com.google.android.material.navigation.NavigationView; import org.mercury_im.messenger.android.MercuryImApplication; import org.mercury_im.messenger.R; import org.mercury_im.messenger.android.ui.account.AccountDetailsFragment; import org.mercury_im.messenger.android.ui.account.DeleteAccountDialogFragment; import org.mercury_im.messenger.android.ui.account.OnAccountListItemClickListener; import org.mercury_im.messenger.core.data.repository.AccountRepository; import org.mercury_im.messenger.entity.Account; import org.mercury_im.messenger.android.ui.chatlist.ChatListFragment; import org.mercury_im.messenger.android.ui.account.AccountsFragment; import org.mercury_im.messenger.android.ui.roster.RosterFragment; import org.mercury_im.messenger.android.ui.settings.SettingsActivity; import javax.inject.Inject; import butterknife.BindView; import butterknife.ButterKnife; public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener, OnAccountListItemClickListener { @BindView(R.id.toolbar) Toolbar toolbar; @BindView(R.id.bottom_navigation) BottomNavigationView bottomNavigationView; private SearchView searchView; private ChatListFragment chatListFragment = new ChatListFragment(); private RosterFragment rosterFragment = new RosterFragment(); private AccountsFragment accountsFragment = new AccountsFragment(); @Inject AccountRepository accountRepository; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); setSupportActionBar(toolbar); bottomNavigationView.setOnNavigationItemSelectedListener(this::onNavigationItemSelected); bottomNavigationView.setSelectedItemId(R.id.entry_chats); MercuryImApplication.getApplication().getAppComponent().inject(this); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); final MenuItem searchItem = menu.findItem(R.id.action_search); searchView = (SearchView) searchItem.getActionView(); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); switch (id) { case R.id.action_settings: startActivity(new Intent(getApplicationContext(), SettingsActivity.class)); return true; } return super.onOptionsItemSelected(item); } @Override public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) { FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); switch (menuItem.getItemId()) { case R.id.entry_chats: transaction.replace(R.id.fragment, chatListFragment).commit(); return true; case R.id.entry_contacts: transaction.replace(R.id.fragment, rosterFragment).commit(); searchView.setOnQueryTextListener(rosterFragment); return true; case R.id.entry_accounts: transaction.replace(R.id.fragment, accountsFragment).commit(); return true; } return false; } @Override public void onAccountListItemClick(Account item) { getSupportFragmentManager().beginTransaction().addToBackStack("Test") .replace(R.id.fragment, new AccountDetailsFragment(item.getId())).commit(); } @Override public void onAccountListItemLongClick(Account item) { new DeleteAccountDialogFragment(item.getId()).show(getSupportFragmentManager(), "DELETE"); } }