FragmentListItemView.java :  » Mp3 » ambient-mix » net » kazed » ambient » fragment » Android Open Source

Android Open Source » Mp3 » ambient mix 
ambient mix » net » kazed » ambient » fragment » FragmentListItemView.java
package net.kazed.ambient.fragment;

import net.kazed.ambient.AudioFragment;
import net.kazed.ambient.R;
import net.kazed.ambient.service.FragmentPlayer;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.ToggleButton;
import android.widget.CompoundButton.OnCheckedChangeListener;

public class FragmentListItemView extends LinearLayout {
  
  private FragmentPlayer fragmentPlayer;
    private TextView name;
    private ToggleButton repeat;
    private ToggleButton playButton;
    private Button menuButton;
    private AudioFragment fragment;
    private SelectionListener selectionListener;

  public FragmentListItemView(Context androidContext, int viewResourceId, FragmentPlayer player) {
    super(androidContext);
    this.fragmentPlayer = player;
    
        LayoutInflater vi = (LayoutInflater) androidContext.
            getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        vi.inflate(viewResourceId, this, true); 

        name = (TextView) findViewById(R.id.fragment_name);
        repeat = (ToggleButton) findViewById(R.id.repeat);
        repeat.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            public void onCheckedChanged(CompoundButton button, boolean value) {
                fragment.setRepeat(value);
                fragmentPlayer.updateFragment(fragment);
            }
        });
        
        playButton = (ToggleButton) findViewById(R.id.play_button);
        playButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
      public void onCheckedChanged(CompoundButton button, boolean state) {
        if (state) {
                fragmentPlayer.play(fragment);
        } else {
                fragmentPlayer.pause(fragment);
        }
      }
        });

        menuButton = (Button) findViewById(R.id.menu_button);
        menuButton.setOnClickListener(new OnClickListener() {
      public void onClick(View view) {
        if (selectionListener != null) {
          selectionListener.select(fragment);
        }
        
      }
        });
  }
  
  public void onDestroy() {
    fragmentPlayer.removeListener(fragment);
  }

  public void update(AudioFragment audioFragment) {
    if (this.fragment != null) {
      fragmentPlayer.removeListener(fragment);
    }
    this.fragment = audioFragment;
    name.setText(audioFragment.getName());
    repeat.setChecked(audioFragment.isRepeat());
        PlayerListener playerListener = new PlayerListener();
        fragmentPlayer.setListener(fragment, playerListener);
        playButton.setChecked(fragmentPlayer.isPlaying(audioFragment));
  }

  /**
   * @return Audio fragment.
   */
  public AudioFragment getAudioFragment() {
    return fragment;
  }
  
  public class PlayerListener implements FragmentPlayer.FragmentListener {

    public void onCompletion(AudioFragment fragment) {
      playButton.setChecked(false);
      fragmentPlayer.removeListener(fragment);
      fragmentPlayer.removePlayer(fragment);
      
//      MediaPlayer player = fragmentPlayer.getPlayer(fragment);
//      player.seekTo(0);
//      player.stop();
//      try {
//        player.prepare();
//      } catch (IllegalStateException e) {
//              throw new AudioException("Failed to prepare", e);
//      } catch (IOException e) {
//              throw new AudioException("Failed to prepare", e);
//      }
    }
    
  }
  
  public void setSelectionListener(SelectionListener selectionListener) {
    this.selectionListener = selectionListener;
  }

  public static interface SelectionListener {
    void select(AudioFragment audioFragment);
  }
  
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.