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 butterknife.BindView; import butterknife.ButterKnife; 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.persistence.model.AccountModel; import org.mercury_im.messenger.persistence.repository.ChatRepository; import org.mercury_im.messenger.ui.chatlist.ChatListFragment; import org.mercury_im.messenger.ui.login.AccountsActivity; import org.mercury_im.messenger.ui.login.AccountsFragment; import org.mercury_im.messenger.ui.login.LoginActivity; import org.mercury_im.messenger.ui.roster.RosterFragment; import org.mercury_im.messenger.ui.settings.SettingsActivity; import javax.inject.Inject; public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener, AccountsFragment.OnAccountListItemClickListener { @Inject ChatRepository chatRepository; @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(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); setSupportActionBar(toolbar); bottomNavigationView.setOnNavigationItemSelectedListener(this::onNavigationItemSelected); 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; case R.id.action_login: startActivity(new Intent(getApplicationContext(), LoginActivity.class)); return true; case R.id.action_accounts: startActivity(new Intent(getApplicationContext(), AccountsActivity.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(AccountModel item) { } @Override public void onAccountListItemLongClick(AccountModel item) { } }