Search in sources :

Example 1 with ActivityMainBinding

use of org.kde.kdeconnect_tp.databinding.ActivityMainBinding in project kdeconnect-android by KDE.

the class MainActivity method onCreate.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // Workaround: If the activity starts in landscape orientation and we call this before super.onCreate, the PluginItem entries appears with white on white background
    ThemeUtil.setUserPreferredTheme(this);
    final ActivityMainBinding binding = ActivityMainBinding.inflate(getLayoutInflater());
    setContentView(binding.getRoot());
    mNavigationView = binding.navigationDrawer;
    mDrawerLayout = binding.drawerLayout;
    View mDrawerHeader = mNavigationView.getHeaderView(0);
    mNavViewDeviceName = mDrawerHeader.findViewById(R.id.device_name);
    ImageView mNavViewDeviceType = mDrawerHeader.findViewById(R.id.device_type);
    setSupportActionBar(binding.toolbarLayout.toolbar);
    ActionBar actionBar = getSupportActionBar();
    ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(this, /* host Activity */
    mDrawerLayout, /* DrawerLayout object */
    R.string.open, /* "open drawer" description */
    R.string.close);
    mDrawerLayout.addDrawerListener(mDrawerToggle);
    mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
    if (actionBar != null) {
        actionBar.setDisplayHomeAsUpEnabled(true);
    }
    mDrawerToggle.setDrawerIndicatorEnabled(true);
    mDrawerToggle.syncState();
    preferences = getSharedPreferences("stored_menu_selection", Context.MODE_PRIVATE);
    // Note: The preference changed listener should be registered before getting the name, because getting
    // it can trigger a background fetch from the internet that will eventually update the preference
    PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(this);
    String deviceName = DeviceHelper.getDeviceName(this);
    mNavViewDeviceType.setImageDrawable(DeviceHelper.getDeviceType(this).getIcon(this));
    mNavViewDeviceName.setText(deviceName);
    mNavigationView.setNavigationItemSelectedListener(menuItem -> {
        mCurrentMenuEntry = menuItem.getItemId();
        switch(mCurrentMenuEntry) {
            case MENU_ENTRY_ADD_DEVICE:
                mCurrentDevice = null;
                preferences.edit().putString(STATE_SELECTED_DEVICE, null).apply();
                setContentFragment(new PairingFragment());
                break;
            case MENU_ENTRY_SETTINGS:
                mCurrentDevice = null;
                preferences.edit().putString(STATE_SELECTED_DEVICE, null).apply();
                setContentFragment(new SettingsFragment());
                break;
            case MENU_ENTRY_ABOUT:
                mCurrentDevice = null;
                preferences.edit().putString(STATE_SELECTED_DEVICE, null).apply();
                setContentFragment(AboutFragment.newInstance(Objects.requireNonNull(ApplicationAboutDataKt.getApplicationAboutData(this))));
                break;
            default:
                String deviceId = mMapMenuToDeviceId.get(menuItem);
                onDeviceSelected(deviceId);
                break;
        }
        mDrawerLayout.closeDrawer(mNavigationView);
        return true;
    });
    // Decide which menu entry should be selected at start
    String savedDevice;
    int savedMenuEntry;
    if (getIntent().hasExtra("forceOverview")) {
        Log.i("MainActivity", "Requested to start main overview");
        savedDevice = null;
        savedMenuEntry = MENU_ENTRY_ADD_DEVICE;
    } else if (getIntent().hasExtra(EXTRA_DEVICE_ID)) {
        Log.i("MainActivity", "Loading selected device from parameter");
        savedDevice = getIntent().getStringExtra(EXTRA_DEVICE_ID);
        savedMenuEntry = MENU_ENTRY_DEVICE_UNKNOWN;
        // If pairStatus is not empty, then the user has accepted/reject the pairing from the notification
        String pairStatus = getIntent().getStringExtra(PAIR_REQUEST_STATUS);
        if (pairStatus != null) {
            Log.i("MainActivity", "pair status is " + pairStatus);
            savedDevice = onPairResultFromNotification(savedDevice, pairStatus);
            if (savedDevice == null) {
                savedMenuEntry = MENU_ENTRY_ADD_DEVICE;
            }
        }
    } else if (savedInstanceState != null) {
        Log.i("MainActivity", "Loading selected device from saved activity state");
        savedDevice = savedInstanceState.getString(STATE_SELECTED_DEVICE);
        savedMenuEntry = savedInstanceState.getInt(STATE_SELECTED_MENU_ENTRY, MENU_ENTRY_ADD_DEVICE);
    } else {
        Log.i("MainActivity", "Loading selected device from persistent storage");
        savedDevice = preferences.getString(STATE_SELECTED_DEVICE, null);
        savedMenuEntry = (savedDevice != null) ? MENU_ENTRY_DEVICE_UNKNOWN : MENU_ENTRY_ADD_DEVICE;
    }
    mCurrentMenuEntry = savedMenuEntry;
    mCurrentDevice = savedDevice;
    mNavigationView.setCheckedItem(savedMenuEntry);
    // FragmentManager will restore whatever fragment was there
    if (savedInstanceState != null) {
        Fragment frag = getSupportFragmentManager().findFragmentById(R.id.container);
        if (!(frag instanceof DeviceFragment) || ((DeviceFragment) frag).getDeviceId().equals(savedDevice)) {
            return;
        }
    }
    // Activate the chosen fragment and select the entry in the menu
    if (savedMenuEntry >= MENU_ENTRY_DEVICE_FIRST_ID && savedDevice != null) {
        onDeviceSelected(savedDevice);
    } else {
        if (mCurrentMenuEntry == MENU_ENTRY_SETTINGS) {
            setContentFragment(new SettingsFragment());
        } else if (mCurrentMenuEntry == MENU_ENTRY_ABOUT) {
            setContentFragment(AboutFragment.newInstance(Objects.requireNonNull(ApplicationAboutDataKt.getApplicationAboutData(this))));
        } else {
            setContentFragment(new PairingFragment());
        }
    }
}
Also used : ShareSettingsFragment(org.kde.kdeconnect.Plugins.SharePlugin.ShareSettingsFragment) ActionBarDrawerToggle(androidx.appcompat.app.ActionBarDrawerToggle) ImageView(android.widget.ImageView) ActivityMainBinding(org.kde.kdeconnect_tp.databinding.ActivityMainBinding) NavigationView(com.google.android.material.navigation.NavigationView) ImageView(android.widget.ImageView) View(android.view.View) TextView(android.widget.TextView) Fragment(androidx.fragment.app.Fragment) ShareSettingsFragment(org.kde.kdeconnect.Plugins.SharePlugin.ShareSettingsFragment) AboutFragment(org.kde.kdeconnect.UserInterface.About.AboutFragment) ActionBar(androidx.appcompat.app.ActionBar)

Aggregations

View (android.view.View)1 ImageView (android.widget.ImageView)1 TextView (android.widget.TextView)1 ActionBar (androidx.appcompat.app.ActionBar)1 ActionBarDrawerToggle (androidx.appcompat.app.ActionBarDrawerToggle)1 Fragment (androidx.fragment.app.Fragment)1 NavigationView (com.google.android.material.navigation.NavigationView)1 ShareSettingsFragment (org.kde.kdeconnect.Plugins.SharePlugin.ShareSettingsFragment)1 AboutFragment (org.kde.kdeconnect.UserInterface.About.AboutFragment)1 ActivityMainBinding (org.kde.kdeconnect_tp.databinding.ActivityMainBinding)1