package org.mercury_im.messenger.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.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.MercuryImApplication; import org.mercury_im.messenger.R; import org.mercury_im.messenger.data.repository.AccountRepository; import org.mercury_im.messenger.entity.Account; import org.mercury_im.messenger.ui.chatlist.ChatListFragment; import org.mercury_im.messenger.ui.account.AccountsFragment; import org.mercury_im.messenger.ui.roster.RosterFragment; import org.mercury_im.messenger.ui.settings.SettingsActivity; import javax.inject.Inject; import butterknife.BindView; import butterknife.ButterKnife; public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener, AccountsFragment.OnAccountListItemClickListener { @BindView(R.id.toolbar) Toolbar toolbar; @BindView(R.id.bottom_navigation) BottomNavigationView bottomNavigationView; 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); 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(); return true; case R.id.entry_accounts: transaction.replace(R.id.fragment, accountsFragment).commit(); return true; } return false; } @Override public void onAccountListItemClick(Account item) { } @Override public void onAccountListItemLongClick(Account item) { accountRepository.deleteAccount(item).subscribe(); } }