/*
* Copyright (C) 2012 yueyueniao
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.suan.weclient.fragment;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.util.AttributeSet;
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.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.internal.nineoldandroids.animation.ObjectAnimator;
import com.actionbarsherlock.internal.nineoldandroids.animation.ValueAnimator;
import com.suan.weclient.R;
import com.suan.weclient.activity.MainActivity;
import com.suan.weclient.fragment.mass.MassAPPFragment;
import com.suan.weclient.fragment.mass.MassImgFragment;
import com.suan.weclient.fragment.mass.MassTextFragment;
import com.suan.weclient.fragment.mass.MassVideoFragment;
import com.suan.weclient.fragment.mass.MassVoiceFragment;
import com.suan.weclient.fragment.mass.VoiceFragment;
import com.suan.weclient.util.GlobalContext;
import com.suan.weclient.util.Util;
import com.suan.weclient.util.data.DataManager;
import com.suan.weclient.util.data.bean.UserBean;
import com.suan.weclient.util.data.DataManager.DialogSureClickListener;
import com.suan.weclient.util.data.DataManager.LoginListener;
import com.tencent.mm.sdk.openapi.SendMessageToWX;
import org.jsoup.examples.HtmlToPlainText;
import java.io.File;
public class MassFragment extends BaseFragment {
private DataManager mDataManager;
/*
about pop dialog
*/
private Dialog dialog;
public static final int REQUEST_CODE_SELECT_PHOTO = 5;
public static final int REQUEST_CODE_TAKE_PHOTO = 6;
private LinearLayout contentLayout;
private LinearLayout recordLayout;
private View view;
private RelativeLayout[] indexLayout = new RelativeLayout[5];
/*
about fragments
*/
MassTextFragment massTextFragment;
MassImgFragment massImgFragment;
MassVoiceFragment massVoiceFragment;
MassAPPFragment massAPPFragment;
MassVideoFragment massVideoFragment;
VoiceFragment voiceFragment;
private FragmentManager fragmentManager;
private FragmentTransaction fragmentTransaction;
private int nowIndex = 0;
/*
about select img
*/
public static final String UPLOAD_IMG_NAME = "ImgToUpload.jpg";
private String capturedImageName = "";
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.mass_layout, null);
/*
init data
*/
MainActivity mainActivity = (MainActivity) getActivity();
mDataManager = ((GlobalContext) mainActivity.getApplicationContext()).getDataManager();
initFragments();
initWidgets();
initWidgetsEvent();
initListener();
return view;
}
private void initListener() {
mDataManager.setRecordControlListener(new RecordLayoutControlListener() {
@Override
public void onLayoutShow() {
ValueHolder yValueHolder = new ValueHolder();
ObjectAnimator yObjectAnimator = ObjectAnimator.ofFloat(yValueHolder, "y",
view.getBottom() + recordLayout.getHeight(), view.getBottom()).setDuration(500);
yObjectAnimator.addUpdateListener(new YUpdateListener());
yObjectAnimator.start();
}
@Override
public void onLayoutDismiss() {
ValueHolder yValueHolder = new ValueHolder();
ObjectAnimator yObjectAnimator = ObjectAnimator.ofFloat(yValueHolder, "y",
view.getBottom(), view.getBottom() + recordLayout.getHeight()).setDuration(300);
yObjectAnimator.addUpdateListener(new YUpdateListener());
yObjectAnimator.start();
}
});
}
private void initWidgets() {
indexLayout[0] = (RelativeLayout) view.findViewById(R.id.mass_layout_index_first);
indexLayout[1] = (RelativeLayout) view.findViewById(R.id.mass_layout_index_second);
indexLayout[2] = (RelativeLayout) view.findViewById(R.id.mass_layout_index_third);
indexLayout[3] = (RelativeLayout) view.findViewById(R.id.mass_layout_index_forth);
indexLayout[4] = (RelativeLayout) view.findViewById(R.id.mass_layout_index_fifth);
for (int i = 0; i < 5; i++) {
indexLayout[i].setOnClickListener(new IndexClickListener(i));
}
indexLayout[0].setSelected(true);
contentLayout = (LinearLayout) view.findViewById(R.id.mass_layout_content);
recordLayout = (LinearLayout) view.findViewById(R.id.mass_voice_record_layout);
}
public class IndexClickListener implements OnClickListener {
private int index;
public IndexClickListener(int index) {
this.index = index;
}
@Override
public void onClick(View v) {
setIndex(index);
}
}
@Override
public void onStart() {
super.onStart();
}
@Override
public void onResume() {
super.onResume();
setIndex(nowIndex);
}
private void setIndex(int index) {
nowIndex = index;
for (int i = 0; i < 5; i++) {
indexLayout[i].setSelected(false);
}
indexLayout[index].setSelected(true);
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
switch (index) {
case 0:
fragmentTransaction.replace(R.id.mass_layout_content, massTextFragment);
break;
case 1:
fragmentTransaction.replace(R.id.mass_layout_content, massImgFragment);
massImgFragment.setSelectPhotoListener(new SelectPhotoListener() {
@Override
public void onSelectFromAlbum() {
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
startActivityForResult(photoPickerIntent, REQUEST_CODE_SELECT_PHOTO);
}
@Override
public void onTakePhoto() {
Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
String uploadImgPath = Util.getFilePath(UPLOAD_IMG_NAME);
File out = new File(uploadImgPath);
capturedImageName = out.getAbsolutePath();
i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(out));
startActivityForResult(i, REQUEST_CODE_TAKE_PHOTO);
}
});
break;
case 2:
fragmentTransaction.replace(R.id.mass_layout_content, massVoiceFragment);
break;
case 3:
fragmentTransaction.replace(R.id.mass_layout_content, massAPPFragment);
break;
case 4:
fragmentTransaction.replace(R.id.mass_layout_content, massVideoFragment);
break;
}
fragmentTransaction.commit();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {
super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
switch (requestCode) {
case REQUEST_CODE_SELECT_PHOTO:
if (resultCode == Activity.RESULT_OK) {
try {
Uri selectedImage = imageReturnedIntent.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getActivity().getContentResolver().query(
selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
capturedImageName = cursor.getString(columnIndex);
cursor.close();
massImgFragment.setCapturedImageName(capturedImageName);
} catch (Exception e) {
Log.e("parse selected photo error", "" + e);
}
}
break;
case REQUEST_CODE_TAKE_PHOTO:
if (resultCode == Activity.RESULT_OK) {
massImgFragment.setCapturedImageName(capturedImageName);
}
break;
}
}
@Override
public void onPause() {
super.onPause();
}
private void initFragments() {
massTextFragment = new MassTextFragment();
massImgFragment = new MassImgFragment();
massVoiceFragment = new MassVoiceFragment();
massAPPFragment = new MassAPPFragment();
massVideoFragment = new MassVideoFragment();
voiceFragment = new VoiceFragment();
fragmentManager = getChildFragmentManager();
fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.disallowAddToBackStack();
fragmentTransaction.add(R.id.mass_voice_record_layout, voiceFragment);
fragmentTransaction.commit();
}
public class ValueHolder {
private float y = 0;
private float degree = 0;
public float getY() {
return y;
}
public void setY(float y) {
this.y = y;
}
}
public class YUpdateListener implements ValueAnimator.AnimatorUpdateListener {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
Float value = (Float) animation.getAnimatedValue();
float top = (float) value;
int toTop = (int) top;
recordLayout.setTop(toTop - recordLayout.getHeight());
recordLayout.setBottom(toTop);
}
}
private void initWidgetsEvent() {
}
public interface SelectPhotoListener {
public void onSelectFromAlbum();
public void onTakePhoto();
}
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
public interface RecordLayoutControlListener {
public void onLayoutShow();
public void onLayoutDismiss();
}
}