Android Open Source - ampdroid Main Activity






From Project

Back to project page ampdroid.

License

The source code is released under:

MIT License

If you think the Android project ampdroid listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/**
 * The MIT License (MIT)//from   ww w .j  a v  a  2 s.  c  om
 * 
 * Copyright (c) 2014 Daniel Schruhl
 * 
 * Permission is hereby granted, free of charge, to any person obtaining a copy of
 * this software and associated documentation files (the "Software"), to deal in
 * the Software without restriction, including without limitation the rights to
 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
 * the Software, and to permit persons to whom the Software is furnished to do so,
 * subject to the following conditions:
 * 
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
 * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
 * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
 * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
 */
package com.racoon.ampdroid;

import java.util.ArrayList;

import android.annotation.SuppressLint;
import android.app.SearchManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.content.res.Configuration;
import android.media.AudioManager;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.IBinder;
import android.os.StrictMode;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.SearchView;
import android.widget.TextView;
import android.widget.Toast;

import com.racoon.ampache.Album;
import com.racoon.ampache.Artist;
import com.racoon.ampache.Playlist;
import com.racoon.ampache.ServerConnection;
import com.racoon.ampache.Song;
import com.racoon.ampdroid.views.CurrentPlaylistView;
import com.racoon.ampdroid.views.SelectedAlbumsView;
import com.racoon.ampdroid.views.SelectedArtistsView;
import com.racoon.ampdroid.views.SelectedPlaylistsView;
import com.racoon.ampdroid.views.SelectedSongsView;

public class MainActivity extends FragmentActivity {

  private String[] mNavItems;
  private DrawerLayout mDrawerLayout;
  private ListView mDrawerList;
  private ActionBarDrawerToggle mDrawerToggle;
  private CharSequence mDrawerTitle;
  private CharSequence mTitle;
  private Controller controller;
  private int mProgressStatus = 0;
  private ProgressBar mProgress;
  private TextView loadingText;
  private LinearLayout progressLinearLayout;
  private boolean syncAlbums;
  private boolean syncArtists;
  private boolean syncPlaylists;
  private boolean syncSongs;
  private int syncFilesCount;
  private String syncText;
  private FrameLayout contentFrame;
  private boolean serviceConnected;
  private Mp3PlayerService service = null;
  private Intent Mp3PlayerIntent = null;
  private int activeFragment;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_activity);
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);

    controller = Controller.getInstance(getResources().getStringArray(R.array.menu_array));
    mNavItems = getResources().getStringArray(R.array.menu_array);
    mDrawerTitle = getResources().getString(R.string.app_name);
    mTitle = controller.getFragmentsNames()[0];

    getActionBar().setDisplayHomeAsUpEnabled(true);
    getActionBar().setHomeButtonEnabled(true);
    getActionBar().setTitle(mTitle);

    mProgress = (ProgressBar) findViewById(R.id.load_progressbar);
    mProgress.setVisibility(ProgressBar.GONE);
    loadingText = (TextView) findViewById(R.id.load_progressbar_text);
    loadingText.setVisibility(TextView.GONE);
    progressLinearLayout = (LinearLayout) findViewById(R.id.progressbar_layout);
    progressLinearLayout.setVisibility(LinearLayout.GONE);
    contentFrame = (FrameLayout) findViewById(R.id.content_frame);

    /** Media Control **/
    setVolumeControlStream(AudioManager.STREAM_MUSIC);
    /** Connection established **/
    if (controller.getServerConfig(this) != null
        && controller.getServer().isConnected(controller.isOnline(getApplicationContext()))) {
      Log.d("bug", controller.getServer().getAmpacheConnection().getAuth());
      FragmentTransaction tx = getSupportFragmentManager().beginTransaction();
      tx.replace(R.id.content_frame, Fragment.instantiate(MainActivity.this, controller.getFragments()[0]),
          controller.getFragmentsNames()[0]);
      activeFragment = 0;
      // tx.addToBackStack(null);
      clearBackStack();
      tx.commit();
      showToast(getResources().getString(R.string.toastServerConnected), Toast.LENGTH_LONG);
      controller.loadCachedFiles();
      /** Sync Files **/
      synchronize(false);

    } else if (controller.getServerConfig(this) != null
        && !controller.getServer().isConnected(controller.isOnline(getApplicationContext()))) {
      FragmentTransaction tx = getSupportFragmentManager().beginTransaction();
      tx.replace(R.id.content_frame, Fragment.instantiate(MainActivity.this, controller.getFragments()[5]),
          controller.getFragmentsNames()[5]);
      activeFragment = 5;
      // tx.addToBackStack(null);
      clearBackStack();
      tx.commit();
      mTitle = controller.getFragmentsNames()[5];
      getActionBar().setTitle(mTitle);
      showToast(getResources().getString(R.string.toastServerConnectionRefused), Toast.LENGTH_LONG);
    } else {
      FragmentTransaction tx = getSupportFragmentManager().beginTransaction();
      tx.replace(R.id.content_frame, Fragment.instantiate(MainActivity.this, controller.getFragments()[5]),
          controller.getFragmentsNames()[5]);
      activeFragment = 5;
      // tx.addToBackStack(null);
      clearBackStack();
      tx.commit();
      mTitle = controller.getFragmentsNames()[5];
      getActionBar().setTitle(mTitle);
      showToast(getResources().getString(R.string.toastSettingsNotSet), Toast.LENGTH_LONG);
    }

    // just styling option add shadow the right edge of the drawer
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);

    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.drawable.ic_drawer, R.string.drawer_open,
        R.string.drawer_close) {

      /** Called when a drawer has settled in a completely open state. */
      @Override
      public void onDrawerOpened(View drawerView) {
        getActionBar().setTitle(mDrawerTitle);
        invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
      }

      @Override
      public void onDrawerClosed(View drawerView) {
        getActionBar().setTitle(mTitle);
        invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
      }
    };

    // Set the drawer toggle as the DrawerListener
    mDrawerLayout.setDrawerListener(mDrawerToggle);

    mDrawerList = (ListView) findViewById(R.id.left_drawer);
    // Set the adapter for the list view
    mDrawerList.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_list_item, mNavItems));
    // Set the list's click listener
    mDrawerList.setOnItemClickListener(new OnItemClickListener() {
      @Override
      public void onItemClick(AdapterView<?> parent, View view, final int pos, long id) {
        FragmentTransaction tx = getSupportFragmentManager().beginTransaction();
        tx.replace(R.id.content_frame, Fragment.instantiate(MainActivity.this, controller.getFragments()[pos]),
            controller.getFragmentsNames()[pos]);
        activeFragment = pos;
        // tx.addToBackStack(null);
        clearBackStack();
        tx.commit();
        mTitle = controller.getFragmentsNames()[pos];
        getActionBar().setTitle(controller.getFragmentsNames()[pos]);
        invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
        mDrawerLayout.closeDrawer(mDrawerList);
      }
    });
    handleIntent(getIntent());
  }

  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);

    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));

    return true;
  }

  /* Called whenever we call invalidateOptionsMenu() */
  @Override
  public boolean onPrepareOptionsMenu(Menu menu) {
    // If the nav drawer is open, hide action items related to the content view
    // boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
    // menu.findItem(R.id.action_websearch).setVisible(!drawerOpen);
    return super.onPrepareOptionsMenu(menu);
  }

  @Override
  protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    // Sync the toggle state after onRestoreInstanceState has occurred.
    mDrawerToggle.syncState();
  }

  @Override
  public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    mDrawerToggle.onConfigurationChanged(newConfig);
  }

  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
    // Pass the event to ActionBarDrawerToggle, if it returns
    // true, then it has handled the app icon touch event
    if (mDrawerToggle.onOptionsItemSelected(item)) {
      return true;
    }
    // Handle your other action bar items...
    if (item.toString().equals(getResources().getString(R.string.action_settings))) {
      FragmentTransaction tx = getSupportFragmentManager().beginTransaction();
      tx.replace(R.id.content_frame, Fragment.instantiate(MainActivity.this, controller.getFragments()[5]),
          controller.getFragmentsNames()[5]);
      activeFragment = 5;
      // tx.addToBackStack(null);
      clearBackStack();
      tx.commit();
      getActionBar().setTitle(R.string.action_settings);
    }
    return super.onOptionsItemSelected(item);
  }

  @Override
  protected void onStart() {
    super.onStart();
    bindService(new Intent(this, Mp3PlayerService.class), connection, Context.BIND_AUTO_CREATE);
  }

  @Override
  protected void onStop() {
    super.onStop();
    // Unbind from the service
    if (serviceConnected) {
      unbindService(connection);
      serviceConnected = false;
    }
  }

  @Override
  protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    handleIntent(intent);
  }

  public void saveSettings(View view) {
    String server = ((EditText) findViewById(R.id.settingsServer)).getText().toString();
    String user = ((EditText) findViewById(R.id.settingsUser)).getText().toString();
    String password = ((EditText) findViewById(R.id.settingsPassword)).getText().toString();
    if (controller.getServer() != null && !controller.getServer().getPassword().equals(password)) {
      password = controller.generateShaHash(password);
    }
    controller.saveSettings(password, user, server);
    if (!controller.saveServer(getApplicationContext())) {
      showToast(getResources().getString(R.string.toastSettingsCouldntSave), Toast.LENGTH_LONG);
    } else {
      showToast(getResources().getString(R.string.toastSettingsSaved), Toast.LENGTH_SHORT);
      if (!this.controller.getServer().isConnected(controller.isOnline(getApplicationContext()))) {
        showToast(getResources().getString(R.string.toastConnectionRefused), Toast.LENGTH_SHORT);
      } else {
        showToast(getResources().getString(R.string.toastConnected), Toast.LENGTH_SHORT);
        FragmentTransaction tx = getSupportFragmentManager().beginTransaction();
        tx.replace(R.id.content_frame, Fragment.instantiate(MainActivity.this, controller.getFragments()[0]),
            controller.getFragmentsNames()[0]);
        activeFragment = 0;
        // tx.addToBackStack(null);
        clearBackStack();
        tx.commit();
        getActionBar().setTitle(controller.getFragmentsNames()[0]);

        /** Sync Files **/
        synchronize(true);
      }
    }
  }

  public void togglePlay(View view) {
    if (!controller.getPlayNow().isEmpty()) {
      if (serviceConnected) {
        CurrentPlaylistView instanceFragment = (CurrentPlaylistView) getSupportFragmentManager()
            .findFragmentById(R.id.content_frame);
        if (getService().getCurrentSong() != null) {
          service.pause();
        } else {
          service.stop();
          Mp3PlayerIntent = new Intent(this, Mp3PlayerService.class);
          Mp3PlayerIntent.putExtra("com.racoon.ampdroid.NowPlaying", this.controller.getPlayNow());
          Mp3PlayerIntent.putExtra("ACTION", "play");
          startService(Mp3PlayerIntent);
        }
        instanceFragment.updateSongData();
      }

    }
  }

  public void stop(View view) {
    service.stop();
    CurrentPlaylistView instanceFragment = (CurrentPlaylistView) getSupportFragmentManager().findFragmentById(
        R.id.content_frame);
    instanceFragment.cleanView();
  }

  public void play(int pos) {
    Log.d("service", "artist name: " + service.getArtist());
    service.stop();
    Mp3PlayerIntent = new Intent(this, Mp3PlayerService.class);
    Mp3PlayerIntent.putExtra("com.racoon.ampdroid.NowPlaying", this.controller.getPlayNow());
    Mp3PlayerIntent.putExtra("CURSOR", pos);
    Mp3PlayerIntent.putExtra("SESSION", this.controller.getServer().getAmpacheConnection().getAuth());
    Mp3PlayerIntent.putExtra("ACTION", "play");
    startService(Mp3PlayerIntent);
  }

  public void next(View view) {
    if (service != null) {
      service.next();
      CurrentPlaylistView instanceFragment = (CurrentPlaylistView) getSupportFragmentManager().findFragmentById(
          R.id.content_frame);
      instanceFragment.updateSongData();
    }
  }

  public void previous(View view) {
    if (service != null) {
      service.previous();
      CurrentPlaylistView instanceFragment = (CurrentPlaylistView) getSupportFragmentManager().findFragmentById(
          R.id.content_frame);
      instanceFragment.updateSongData();
    }
  }

  /**
   * Synchronizes the files if the corresponding boolean is true and starts an AsyncTask.
   * 
   * @param force boolean True if a synchronization is forced to synchronize everything
   */
  public void synchronize(boolean force) {
    syncFilesCount = 0;
    ServerConnection ampache = controller.getServer().getAmpacheConnection();
    Log.d("bug songs anzahl", controller.getServer().getCachedData().getSongs().size() + ", "
        + controller.getServer().getAmpacheConnection().getSongs());
    Log.d("bug albums anzahl", controller.getServer().getCachedData().getAlbums().size() + ", "
        + controller.getServer().getAmpacheConnection().getAlbums());
    Log.d("bug artists anzahl", controller.getServer().getCachedData().getArtists().size() + ", "
        + controller.getServer().getAmpacheConnection().getArtists());
    Log.d("bug playlists anzahl", controller.getServer().getCachedData().getPlaylists().size() + ", "
        + controller.getServer().getAmpacheConnection().getPlaylists());
    if (controller.getServer().getCachedData().getAlbums().size() != controller.getServer().getAmpacheConnection()
        .getAlbums()
        || force) {
      syncAlbums = true;
      syncFilesCount += ampache.getAlbums();
    }
    if (controller.getServer().getCachedData().getArtists().size() != controller.getServer().getAmpacheConnection()
        .getArtists()
        || force) {
      syncArtists = true;
      syncFilesCount += ampache.getArtists();
    }
    if (controller.getServer().getCachedData().getPlaylists().size() != controller.getServer()
        .getAmpacheConnection().getPlaylists()
        || force) {
      syncPlaylists = true;
      syncFilesCount += ampache.getPlaylists();
    }
    if (controller.getServer().getCachedData().getSongs().size() != controller.getServer().getAmpacheConnection()
        .getSongs()
        || force) {
      syncSongs = true;
      syncFilesCount += ampache.getSongs();
    }

    if (syncAlbums || syncArtists || syncPlaylists || syncSongs || force) {
      new DownloadFilesTask().execute();
    }
  }

  private class DownloadFilesTask extends AsyncTask<Void, Void, Void> {

    @Override
    protected void onPreExecute() {
      progressLinearLayout.setVisibility(LinearLayout.VISIBLE);
      mProgress.setVisibility(ProgressBar.VISIBLE);
      loadingText.setVisibility(TextView.VISIBLE);
      float scale = getResources().getDisplayMetrics().density;
      int dpAsPixels = (int) (48 * scale + 0.5f);
      int dpAsPixelsDim = (int) (16 * scale + 0.5f);
      contentFrame.setPadding(dpAsPixelsDim, dpAsPixels, dpAsPixelsDim, dpAsPixelsDim);
    }

    /*
     * (non-Javadoc)
     * @see android.os.AsyncTask#doInBackground(Params[])
     */
    @Override
    protected Void doInBackground(Void... params) {
      String urlString = "";
      if (syncSongs) {
        syncText = "Lade Songs";
        urlString = controller.getServer().getHost() + "/server/xml.server.php?action=songs&auth="
            + controller.getServer().getAuthKey();
        controller.parseSongs(urlString);
        controller.getServer().getCachedData().setSongs(controller.getSongs());
        publishProgress();
      }

      if (syncAlbums) {
        syncText = "Lade Alben";
        urlString = controller.getServer().getHost() + "/server/xml.server.php?action=albums&auth="
            + controller.getServer().getAuthKey();
        controller.parseAlbums(urlString);
        controller.getServer().getCachedData().setAlbums(controller.getAlbums());
        publishProgress();
      }

      if (syncPlaylists) {
        syncText = "Lade Playlists";
        urlString = controller.getServer().getHost() + "/server/xml.server.php?action=playlists&auth="
            + controller.getServer().getAuthKey();
        controller.parsePlaylists(urlString);
        controller.getServer().getCachedData().setPlaylists(controller.getPlaylists());
        publishProgress();
      }

      if (syncArtists) {
        syncText = "Lade Interpreten";
        urlString = controller.getServer().getHost() + "/server/xml.server.php?action=artists&auth="
            + controller.getServer().getAuthKey();
        controller.parseArtists(urlString);
        controller.getServer().getCachedData().setArtists(controller.getArtists());
        publishProgress();
      }
      if (controller.saveServer(getApplicationContext())) {
        Log.d("bug", "sync erfolgreich gespeichert.");
        Log.d("bug", "songs hat jetzt " + controller.getServer().getCachedData().getSongs().size() + " Dateien");
      }
      return null;
    }

    @Override
    protected void onProgressUpdate(Void... params) {
      loadingText.setText(syncText);
      mProgressStatus = ((int) ((((double) (controller.getProgress()) / ((double) (syncFilesCount))) * 100)));
      Log.d("progress", String.valueOf(controller.getProgress()));
      Log.d("progress prozent", String.valueOf(mProgressStatus));
      mProgress.setProgress(mProgressStatus);
    }

    @Override
    protected void onPostExecute(Void result) {
      mProgress.setVisibility(ProgressBar.GONE);
      loadingText.setVisibility(TextView.GONE);
      progressLinearLayout.setVisibility(LinearLayout.GONE);
      Log.d("sync", "done");
      Log.d("bug songs anzahl", controller.getServer().getCachedData().getSongs().size() + ", "
          + controller.getServer().getAmpacheConnection().getSongs());
      Log.d("bug albums anzahl", controller.getServer().getCachedData().getAlbums().size() + ", "
          + controller.getServer().getAmpacheConnection().getAlbums());
      Log.d("bug artists anzahl", controller.getServer().getCachedData().getArtists().size() + ", "
          + controller.getServer().getAmpacheConnection().getArtists());
      Log.d("bug playlists anzahl", controller.getServer().getCachedData().getPlaylists().size() + ", "
          + controller.getServer().getAmpacheConnection().getPlaylists());
      controller.setProgress(0);
      float scale = getResources().getDisplayMetrics().density;
      int dpAsPixels = (int) (16 * scale + 0.5f);
      contentFrame.setPadding(dpAsPixels, dpAsPixels, dpAsPixels, dpAsPixels);
    }

  }

  /**
   * Reconnects the server connection and gets new session or prolongs it.
   * 
   * @param view View
   */
  public void reconnect(View view) {
    try {
      if (controller.isOnline(getApplicationContext())) {
        if (this.controller.getServer().isConnected(controller.isOnline(getApplicationContext()))) {
          showToast(getResources().getString(R.string.toastConnected), Toast.LENGTH_SHORT);
          /** Sync Files **/
          synchronize(false);
        } else {
          showToast(getResources().getString(R.string.toastConnectionRefused), Toast.LENGTH_SHORT);
        }
      } else {
        showToast(getResources().getString(R.string.toastInternetConnectionLost), Toast.LENGTH_SHORT);
      }
    } catch (NullPointerException e) {
      Log.d("bug", "Server Verbindung nicht vorhanden");
    }
  }

  public void showToast(String message, int duration) {
    Context context = getApplicationContext();
    Toast toast = Toast.makeText(context, message, duration);
    toast.show();
  }

  /**
   * Forces a sync of all files.
   * 
   * @param view View
   */
  public void forceSync(View view) {
    try {
      if (controller.isOnline(getApplicationContext())) {
        if (this.controller.getServer().isConnected(controller.isOnline(getApplicationContext()))) {
          showToast(getResources().getString(R.string.toastConnected), Toast.LENGTH_SHORT);
          /** Sync Files **/
          synchronize(true);
        } else {
          showToast(getResources().getString(R.string.toastConnectionRefused), Toast.LENGTH_SHORT);
        }
      } else {
        showToast(getResources().getString(R.string.toastInternetConnectionLost), Toast.LENGTH_SHORT);
      }
    } catch (NullPointerException e) {
      Log.d("bug", "Server Verbindung nicht vorhanden");
    }
  }

  @SuppressLint("DefaultLocale")
  private void handleIntent(Intent intent) {
    if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
      String query = intent.getStringExtra(SearchManager.QUERY);
      ArrayList<Song> searchableSongs = new ArrayList<Song>();
      Log.d("bugs", "active fragment " + String.valueOf(activeFragment));
      /** find song **/
      if (activeFragment < 2 || activeFragment == 6) {
        ArrayList<Song> result = new ArrayList<Song>();
        if (activeFragment == 0) {
          searchableSongs = controller.getPlayNow();
        } else if (activeFragment == 1) {
          searchableSongs = controller.getSongs();
        } else if (activeFragment == 6) {
          searchableSongs = controller.getSelectedSongs();
        }
        for (int i = 0; i < searchableSongs.size(); i++) {
          if (searchableSongs.get(i).getTitle().toLowerCase().contains(query.toLowerCase())) {
            result.add(searchableSongs.get(i));
          }
        }
        controller.setSelectedSongs(result);
        // Create new fragment and transaction
        SelectedSongsView newFragment = new SelectedSongsView();
        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

        // Replace whatever is in the fragment_container view with this fragment,
        // and add the transaction to the back stack
        transaction.replace(R.id.content_frame, newFragment);
        transaction.addToBackStack(null);
        activeFragment = 6;
        // Commit the transaction
        transaction.commit();
      }
      /** find artist **/
      else if (activeFragment == 2) {
        ArrayList<Artist> result = new ArrayList<Artist>();
        for (int i = 0; i < controller.getArtists().size(); i++) {
          if (controller.getArtists().get(i).getName().toLowerCase().contains(query.toLowerCase())) {
            result.add(controller.getArtists().get(i));
          }
        }
        controller.setSelectedArtists(result);
        // Create new fragment and transaction
        SelectedArtistsView newFragment = new SelectedArtistsView();
        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

        // Replace whatever is in the fragment_container view with this fragment,
        // and add the transaction to the back stack
        transaction.replace(R.id.content_frame, newFragment);
        transaction.addToBackStack(null);
        // Commit the transaction
        transaction.commit();
      }
      /** find playlist **/
      else if (activeFragment == 4) {
        ArrayList<Playlist> result = new ArrayList<Playlist>();
        for (int i = 0; i < controller.getPlaylists().size(); i++) {
          if (controller.getPlaylists().get(i).getName().toLowerCase().contains(query.toLowerCase())) {
            result.add(controller.getPlaylists().get(i));
          }
        }
        controller.setSelectedPlaylists(result);
        // Create new fragment and transaction
        SelectedPlaylistsView newFragment = new SelectedPlaylistsView();
        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

        // Replace whatever is in the fragment_container view with this fragment,
        // and add the transaction to the back stack
        transaction.replace(R.id.content_frame, newFragment);
        transaction.addToBackStack(null);
        // Commit the transaction
        transaction.commit();
      }
      /** find album **/
      else if (activeFragment == 3) {
        ArrayList<Album> result = new ArrayList<Album>();
        for (int i = 0; i < controller.getAlbums().size(); i++) {
          if (controller.getAlbums().get(i).getName().toLowerCase().contains(query.toLowerCase())) {
            result.add(controller.getAlbums().get(i));
          }
        }
        controller.setSelectedAlbums(result);
        // Create new fragment and transaction
        SelectedAlbumsView newFragment = new SelectedAlbumsView();
        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

        // Replace whatever is in the fragment_container view with this fragment,
        // and add the transaction to the back stack
        transaction.replace(R.id.content_frame, newFragment);
        transaction.addToBackStack(null);
        // Commit the transaction
        transaction.commit();
      }
      Log.d("search", "searchquery " + query);
    }
  }

  private void clearBackStack() {
    for (int i = 0; i < getSupportFragmentManager().getBackStackEntryCount(); i++) {
      getSupportFragmentManager().popBackStack();
    }
  }

  /**
   * @return the mProgress
   */
  public ProgressBar getmProgress() {
    return mProgress;
  }

  /**
   * @param mProgress the mProgress to set
   */
  public void setmProgress(ProgressBar mProgress) {
    this.mProgress = mProgress;
  }

  /**
   * @return the loadingText
   */
  public TextView getLoadingText() {
    return loadingText;
  }

  /**
   * @param loadingText the loadingText to set
   */
  public void setLoadingText(TextView loadingText) {
    this.loadingText = loadingText;
  }

  /**
   * @return the service
   */
  public Mp3PlayerService getService() {
    return service;
  }

  /**
   * @param service the service to set
   */
  public void setService(Mp3PlayerService service) {
    this.service = service;
  }

  /**
   * @param activeFragment the activeFragment to set
   */
  public void setActiveFragment(int activeFragment) {
    this.activeFragment = activeFragment;
  }

  /**
   * Create a connection to the Mp3PlayerService
   */
  private ServiceConnection connection = new ServiceConnection() {
    @Override
    // Called when connection is made
    public void onServiceConnected(ComponentName cName, IBinder binder) {
      service = ((Mp3PlayerService.Mp3Binder) binder).getService();
      serviceConnected = true;
    }

    @Override
    //
    public void onServiceDisconnected(ComponentName cName) {
      service = null;
      serviceConnected = false;
    }
  };

}




Java Source Code List

com.racoon.ampache.Album.java
com.racoon.ampache.Artist.java
com.racoon.ampache.CachedData.java
com.racoon.ampache.Playlist.java
com.racoon.ampache.ServerConnection.java
com.racoon.ampache.Song.java
com.racoon.ampdroid.AlbumArrayAdapter.java
com.racoon.ampdroid.ArtistArrayAdapter.java
com.racoon.ampdroid.Controller.java
com.racoon.ampdroid.CurrentlyPlayingPlaylistArrayAdapter.java
com.racoon.ampdroid.ImageLoadTask.java
com.racoon.ampdroid.MainActivity.java
com.racoon.ampdroid.Mp3PlayerService.java
com.racoon.ampdroid.PlaylistArrayAdapter.java
com.racoon.ampdroid.ServerConnector.java
com.racoon.ampdroid.SongArrayAdapter.java
com.racoon.ampdroid.views.AlbumsView.java
com.racoon.ampdroid.views.ArtistsView.java
com.racoon.ampdroid.views.CurrentPlaylistView.java
com.racoon.ampdroid.views.PlaylistsView.java
com.racoon.ampdroid.views.SelectedAlbumsView.java
com.racoon.ampdroid.views.SelectedArtistsView.java
com.racoon.ampdroid.views.SelectedPlaylistsView.java
com.racoon.ampdroid.views.SelectedSongsView.java
com.racoon.ampdroid.views.SettingsView.java
com.racoon.ampdroid.views.SongsView.java