package de.graeb.adsbsniffer; import android.app.Activity; import android.app.Fragment; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.hardware.usb.UsbManager; import android.os.Bundle; import android.support.v4.widget.DrawerLayout; import android.view.Menu; import android.widget.CompoundButton; import android.widget.Switch; import de.graeb.adsbsniffer.fragments.AboutFragment; import de.graeb.adsbsniffer.fragments.NavigationDrawerFragment; import de.graeb.adsbsniffer.fragments.RecordingListFragment; import de.graeb.adsbsniffer.fragments.SetupFragment; import de.graeb.adsbsniffer.fragments.StatusFragment; /** * Main activity contains the NavigationDrawer */ public class OverviewActivity extends Activity implements NavigationDrawerFragment.NavigationDrawerCallbacks { @Override protected void onCreate(Bundle savedInstanceState) { if (getIntent().getParcelableExtra(UsbManager.EXTRA_DEVICE) != null) { Recorder.getInstance().reattach(); } super.onCreate(savedInstanceState); setContentView(R.layout.activity_overview); // Fragment managing the behaviors, interactions and presentation of the navigation drawer. NavigationDrawerFragment mNavigationDrawerFragment = (NavigationDrawerFragment) getFragmentManager().findFragmentById(R.id.navigation_drawer); // Set up the drawer. mNavigationDrawerFragment.setUp( R.id.navigation_drawer, (DrawerLayout) findViewById(R.id.drawer_layout)); } @Override public void onNavigationDrawerItemSelected(int position) { // update the main content by replacing fragments FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); switch (position) { case 0: fragmentTransaction = fragmentTransaction .replace(R.id.container, SetupFragment.newInstance(position + 1)); break; case 1: fragmentTransaction = fragmentTransaction .replace(R.id.container, RecordingListFragment.newInstance(position + 1)); break; case 2: fragmentTransaction = fragmentTransaction .replace(R.id.container, StatusFragment.newInstance(position + 1)); break; case 3: fragmentTransaction = fragmentTransaction .replace(R.id.container, AboutFragment.newInstance(position + 1)); break; default: throw new IllegalArgumentException("position unknown: " + position); } fragmentTransaction.commit(); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.overview, menu); Switch switchRecording = (Switch) menu.findItem(R.id.menu_switch_streaming) .getActionView(); switchRecording.setOnCheckedChangeListener(new RecordingSwitchHandler()); switchRecording.setChecked(Recorder.getInstance().isRecording()); switchRecording.setEnabled(Recorder.getInstance().isAvailable()); return true; } private class RecordingSwitchHandler implements CompoundButton.OnCheckedChangeListener { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { Recorder recorder = Recorder.getInstance(); if (isChecked && !recorder.isRecording()) { recorder.startRecording(); } else if (!isChecked && recorder.isRecording()) { recorder.stopRecording(); Fragment fragment = getFragmentManager().findFragmentById(R.id.container); if (fragment instanceof RecordingListFragment) { onNavigationDrawerItemSelected(1); } } } } }