示例#1
0
  @Override
  public void setContentView(int viewId) {
    if (isTv()) {
      super.setContentView(R.layout.static_drawer_activity);
    } else {
      super.setContentView(R.layout.abstract_activity);
    }
    rootView = (ViewGroup) findViewById(R.id.content_frame);

    if (viewId != 0) {
      LayoutInflater layoutInflater = getLayoutInflater();
      layoutInflater.inflate(viewId, rootView);
    }

    drawerList = (NavigationView) findViewById(R.id.left_drawer);
    drawerList.setNavigationItemSelectedListener(
        new NavigationView.OnNavigationItemSelectedListener() {
          @Override
          public boolean onNavigationItemSelected(final MenuItem menuItem) {
            if (showingTabs) {
              // Settings are on a different selectable track
              if (menuItem.getItemId() != R.id.drawer_settings
                  && menuItem.getItemId() != R.id.drawer_admin
                  && menuItem.getItemId() != R.id.drawer_offline) {
                menuItem.setChecked(true);
                lastSelectedPosition = menuItem.getItemId();
              }

              switch (menuItem.getItemId()) {
                case R.id.drawer_home:
                  drawerItemSelected("Home");
                  return true;
                case R.id.drawer_library:
                  drawerItemSelected("Artist");
                  return true;
                case R.id.drawer_playlists:
                  drawerItemSelected("Playlist");
                  return true;
                case R.id.drawer_podcasts:
                  drawerItemSelected("Podcast");
                  return true;
                case R.id.drawer_bookmarks:
                  drawerItemSelected("Bookmark");
                  return true;
                case R.id.drawer_shares:
                  drawerItemSelected("Share");
                  return true;
                case R.id.drawer_chat:
                  drawerItemSelected("Chat");
                  return true;
                case R.id.drawer_admin:
                  if (UserUtil.isCurrentAdmin()) {
                    UserUtil.confirmCredentials(
                        SubsonicActivity.this,
                        new Runnable() {
                          @Override
                          public void run() {
                            drawerItemSelected("Admin");
                            menuItem.setChecked(true);
                            lastSelectedPosition = menuItem.getItemId();
                          }
                        });
                  } else {
                    drawerItemSelected("Admin");
                    menuItem.setChecked(true);
                    lastSelectedPosition = menuItem.getItemId();
                  }
                  return true;
                case R.id.drawer_downloading:
                  drawerItemSelected("Download");
                  return true;
                case R.id.drawer_offline:
                  toggleOffline();
                  return true;
                case R.id.drawer_settings:
                  startActivity(new Intent(SubsonicActivity.this, SettingsActivity.class));
                  drawer.closeDrawers();
                  return true;
              }
            } else {
              int activeServer = menuItem.getItemId() - MENU_ITEM_SERVER_BASE;
              SubsonicActivity.this.setActiveServer(activeServer);
              populateTabs();
              return true;
            }

            return false;
          }
        });

    drawerHeader = drawerList.inflateHeaderView(R.layout.drawer_header);
    drawerHeader.setOnClickListener(
        new View.OnClickListener() {
          @Override
          public void onClick(View v) {
            if (showingTabs) {
              populateServers();
            } else {
              populateTabs();
            }
          }
        });

    drawerHeaderToggle = (ImageView) drawerHeader.findViewById(R.id.header_select_image);
    drawerServerName = (TextView) drawerHeader.findViewById(R.id.header_server_name);
    drawerUserName = (TextView) drawerHeader.findViewById(R.id.header_user_name);

    drawerUserAvatar = (ImageView) drawerHeader.findViewById(R.id.header_user_avatar);

    updateDrawerHeader();

    if (!isTv()) {
      drawer = (DrawerLayout) findViewById(R.id.drawer_layout);

      // Pass in toolbar if it exists
      Toolbar toolbar = (Toolbar) findViewById(R.id.main_toolbar);
      drawerToggle =
          new ActionBarDrawerToggle(
              this, drawer, toolbar, R.string.common_appname, R.string.common_appname) {
            @Override
            public void onDrawerClosed(View view) {
              drawerIdle = true;
              drawerOpen = false;

              if (!showingTabs) {
                populateTabs();
              }
            }

            @Override
            public void onDrawerOpened(View view) {
              DownloadService downloadService = getDownloadService();
              boolean downloadingVisible =
                  downloadService != null && !downloadService.getBackgroundDownloads().isEmpty();
              if (lastSelectedPosition == R.id.drawer_downloading) {
                downloadingVisible = true;
              }
              setDrawerItemVisible(R.id.drawer_downloading, downloadingVisible);

              drawerIdle = true;
              drawerOpen = true;
            }

            @Override
            public void onDrawerSlide(View drawerView, float slideOffset) {
              super.onDrawerSlide(drawerView, slideOffset);
              drawerIdle = false;
            }
          };
      drawer.setDrawerListener(drawerToggle);
      drawerToggle.setDrawerIndicatorEnabled(true);

      drawer.setOnTouchListener(
          new View.OnTouchListener() {
            public boolean onTouch(View v, MotionEvent event) {
              if (drawerIdle
                  && currentFragment != null
                  && currentFragment.getGestureDetector() != null) {
                return currentFragment.getGestureDetector().onTouchEvent(event);
              } else {
                return false;
              }
            }
          });
    }

    // Check whether this is a tablet or not
    secondaryContainer = findViewById(R.id.fragment_second_container);
    if (secondaryContainer != null) {
      primaryContainer = findViewById(R.id.fragment_container);
    }
  }