package com.joyplus.joylink;
import java.io.File;
import java.util.ArrayList;
import android.app.ActionBar;
import android.app.AlertDialog;
import android.content.ActivityNotFoundException;
import android.content.ComponentName;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.TextView;
import com.androidquery.AQuery;
import com.dlcs.dlna.Stack.MediaRenderer;
import com.joyplus.joylink.Adapters.Tab1_Photo_GridData;
import com.joyplus.joylink.Dlna.DlnaPhotoSlideShow;
import com.joyplus.joylink.Dlna.DlnaSelectDevice;
public class PhotoSlideShow extends FragmentActivity implements OnClickListener {
private String TAG = "PhotoSlideShow";
private SectionsPagerAdapter mSectionsPagerAdapter;
/**
* The {@link ViewPager} that will host the section contents.
*/
private ViewPager mViewPager;
private App app;
private AQuery aq;
private ArrayList<Tab1_Photo_GridData> images_array = null;
private int current_item = 0;
private DlnaSelectDevice mMyService;
private ImageButton mButtonDlna;
private ImageButton mButtonBack;
private ServiceConnection mServiceConnection = new ServiceConnection() {
public void onServiceConnected(ComponentName name, IBinder service) {
// TODO Auto-generated method stub
mMyService = ((DlnaSelectDevice.MyBinder) service).getService();
}
public void onServiceDisconnected(ComponentName name) {
// TODO Auto-generated method stub
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.photo_slideshow);
getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
getActionBar().setCustomView(R.layout.actionbar_layout_detail);
app = (App) getApplication();
aq = new AQuery(this);
Intent i = new Intent();
i.setClass(this, DlnaSelectDevice.class);
bindService(i, mServiceConnection, BIND_AUTO_CREATE);
aq.id(R.id.progressBar1).gone();
Intent intent = getIntent();
current_item = intent.getIntExtra("CURRENT", 0);
images_array = intent.getParcelableArrayListExtra("IMAGEARRAY");
TextView mTextView = (TextView) getActionBar().getCustomView()
.findViewById(R.id.actionBarTitle);
mTextView.setText(images_array.get(current_item).title);
mButtonBack = (ImageButton) getActionBar().getCustomView()
.findViewById(R.id.slidingMenuButtonL);
mButtonBack.setOnClickListener(this);
mButtonDlna = (ImageButton) getActionBar().getCustomView()
.findViewById(R.id.slidingMenuButton1);
mButtonDlna.setOnClickListener(this);
// Create the adapter that will return a fragment for each of the three
// primary sections of the app.
mSectionsPagerAdapter = new SectionsPagerAdapter(
getSupportFragmentManager());
// Set up the ViewPager with the sections adapter.
mViewPager = (ViewPager) findViewById(R.id.viewPager1);
mViewPager.setAdapter(mSectionsPagerAdapter);
mViewPager.setOnPageChangeListener(new MyPageChangeListener());
mViewPager.setCurrentItem(current_item);
}
private class MyPageChangeListener implements OnPageChangeListener {
/**
* This method will be invoked when a new page becomes selected.
* position: Position index of the new selected page.
*/
public void onPageSelected(int position) {
current_item = position;
}
public void onPageScrollStateChanged(int arg0) {
}
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
}
@Override
public void onClick(View view) {
if (view == mButtonDlna) {
OnClickTopRight();
} else if (view == mButtonBack)
finish();
}
@Override
protected void onDestroy() {
if (aq != null)
aq.dismiss();
unbindService(mServiceConnection);
super.onDestroy();
}
// @Override
// public boolean onCreateOptionsMenu(Menu menu) {
// // Inflate the menu; this adds items to the action bar if it is present.
// getMenuInflater().inflate(R.menu.activity_main, menu);
// return true;
// }
/**
* A {@link FragmentPagerAdapter} that returns a fragment corresponding to
* one of the sections/tabs/pages.
*/
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
// getItem is called to instantiate the fragment for the given page.
// Return a DummySectionFragment (defined as a static inner class
// below) with the page number as its lone argument.
Fragment fragment = new DummySectionFragment();
Bundle args = new Bundle();
// args.putInt(DummySectionFragment.ARG_SECTION_NUMBER, position +
// 1);
args.putString(DummySectionFragment.ARG_SECTION_NUMBER,
images_array.get(position)._data);
args.putInt("width", images_array.get(position).width);
args.putInt("height", images_array.get(position).height);
fragment.setArguments(args);
return fragment;
}
@Override
public int getCount() {
// Show 3 total pages.
return images_array.size();
}
@Override
public CharSequence getPageTitle(int position) {
// switch (position) {
// case 0:
// return getString(R.string.title_section1).toUpperCase();
// case 1:
// return getString(R.string.title_section2).toUpperCase();
// case 2:
// return getString(R.string.title_section3).toUpperCase();
// }
return null;
}
}
/**
* A dummy fragment representing a section of the app, but that simply
* displays dummy text.
*/
public static class DummySectionFragment extends Fragment {
/**
* The fragment argument representing the section number for this
* fragment.
*/
public static final String ARG_SECTION_NUMBER = "section_number";
public DummySectionFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Create a new TextView and set its text to the fragment's section
// number argument value.
DisplayMetrics dm = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
ImageView mImageView = new ImageView(getActivity());
File file1 = new File(getArguments().getString(ARG_SECTION_NUMBER));
AQuery aq2 = new AQuery(mImageView);
if (file1.exists()) {
aq2.image(file1, 0);
if (getArguments().getInt("width") > dm.widthPixels
|| getArguments().getInt("height") > (dm.heightPixels-150))
// mImageView.setScaleType(ScaleType.FIT_XY);
mImageView.setScaleType(ScaleType.CENTER_INSIDE);
else
mImageView.setScaleType(ScaleType.CENTER);
aq2.dismiss();
}
return mImageView;
}
}
// private class MyPageChangeListener implements OnPageChangeListener {
//
// /**
// * This method will be invoked when a new page becomes selected.
// * position: Position index of the new selected page.
// */
// public void onPageSelected(int position) {
// current_item = position;
// app.dataSaved.setCurrentPlayItem(current_item);
// // tv_title.setText(titles[position]);
// // dots.get(oldPosition).setBackgroundResource(R.drawable.dot_normal);
// // dots.get(position).setBackgroundResource(R.drawable.dot_focused);
// // oldPosition = position;
//
// }
//
// public void onPageScrollStateChanged(int arg0) {
//
// }
//
// public void onPageScrolled(int arg0, float arg1, int arg2) {
//
// }
// }
public void OnClickTopLeft(View v) {
app.dataSaved.setCurrentPlayItem(current_item);
}
public void OnClickTopRight() {
// MediaRenderer mMediaRenderer = app.getmMediaRenderer();
// ArrayList<MediaRenderer> mDmrCache = app.getmDmrCache();
// MediaRenderer mMediaRenderer = mMyService.getMediaRenderer();
// ArrayList<MediaRenderer> mDmrCache = mMyService.getDmrCache();
//
// if (mMediaRenderer != null && mDmrCache != null && mDmrCache.size()
// ==1) {
// gotoDlnaPhotoSlideShow();
// }
ArrayList<MediaRenderer> mDmrCache = mMyService.getDmrCache();
if (mDmrCache.size() > 0) {
CharSequence[] items = new String[mDmrCache.size()];
for (int i = 0; i < mDmrCache.size(); i++)
items[i] = mDmrCache.get(i).friendlyName;
if (mDmrCache.size() == 1) {
MediaRenderer mMediaRenderer = mDmrCache.get(0);
mMyService.SetCurrentDevice(1);
if (mMediaRenderer != null && mDmrCache != null) {
gotoDlnaPhotoSlideShow();
}
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("请选择你的设备:");
builder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
ArrayList<MediaRenderer> mDmrCache = mMyService
.getDmrCache();
MediaRenderer mMediaRenderer = mDmrCache.get(item);
mMyService.SetCurrentDevice(item + 1);
if (mMediaRenderer != null && mDmrCache != null) {
gotoDlnaPhotoSlideShow();
}
}
});
AlertDialog alert = builder.create();
alert.show();
}
} else {
app.MyToast(this, "正在搜索设备 ...");
}
}
private void gotoDlnaPhotoSlideShow() {
Intent intent = new Intent(this, DlnaPhotoSlideShow.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
intent.putExtra("CURRENT", current_item);
intent.putParcelableArrayListExtra("IMAGEARRAY", images_array);
try {
startActivity(intent);
finish();
} catch (ActivityNotFoundException ex) {
Log.e(TAG, "Call DlnaPhotoSlideShow failed", ex);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// add here.
if (resultCode == 102) {
gotoDlnaPhotoSlideShow();
}
super.onActivityResult(requestCode, resultCode, data);
}
}