package aws.apps.usbDeviceEnumerator.ui.common;
import android.content.Intent;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import aws.apps.usbDeviceEnumerator.R;
import aws.apps.usbDeviceEnumerator.ui.usbinfo.UsbInfoActivity;
import aws.apps.usbDeviceEnumerator.ui.usbinfo.fragments.FragmentFactory;
import uk.co.alt236.usbdeviceenumerator.sysbususb.SysBusUsbDevice;
public class Navigation {
private static final String TAG = Navigation.class.getSimpleName();
private static final int FRAGMENT_CONTAINER = R.id.fragment_container;
private static final int DEFAULT_FRAGMENT_TRANSACTION = FragmentTransaction.TRANSIT_FRAGMENT_FADE;
private final AppCompatActivity activity;
public Navigation(AppCompatActivity activity) {
this.activity = activity;
}
public void showAndroidUsbDeviceInfo(String device) {
if (isSmallScreen()) {
final Intent i = new Intent(activity.getApplicationContext(), UsbInfoActivity.class);
i.putExtra(UsbInfoActivity.EXTRA_DATA_ANDROID, device);
startActivity(i);
} else {
final Fragment fragment = FragmentFactory.getFragment(device);
stackFragment(fragment);
}
}
public void showLinuxUsbDeviceInfo(SysBusUsbDevice device) {
if (isSmallScreen()) {
final Intent i = new Intent(activity.getApplicationContext(), UsbInfoActivity.class);
i.putExtra(UsbInfoActivity.EXTRA_DATA_LINUX, device);
startActivity(i);
} else {
final Fragment fragment = FragmentFactory.getFragment(device);
stackFragment(fragment);
}
}
public boolean isSmallScreen() {
final boolean res = activity.findViewById(FRAGMENT_CONTAINER) == null;
Log.d(TAG, "^ Is " + activity.getClass().getName() + " running in a small screen? " + res);
return res;
}
public void stackFragment(Fragment fragment) {
final FragmentTransaction ft = activity.getSupportFragmentManager().beginTransaction();
ft.replace(FRAGMENT_CONTAINER, fragment);
ft.setTransition(DEFAULT_FRAGMENT_TRANSACTION);
ft.commit();
}
public void removeFragmentsFromContainer() {
final Fragment fragment = activity.getSupportFragmentManager().findFragmentById(FRAGMENT_CONTAINER);
if (fragment != null) {
final FragmentTransaction ft = activity.getSupportFragmentManager().beginTransaction();
ft.remove(fragment);
ft.setTransition(DEFAULT_FRAGMENT_TRANSACTION);
ft.commit();
}
}
private void startActivity(final Intent intent) {
ActivityCompat.startActivity(activity, intent, null);
}
}