package typical_if.android.fragment;
import android.app.Activity;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.devspark.robototextview.widget.RobotoTextView;
import com.melnykov.fab.FloatingActionButton;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.viewpagerindicator.CirclePageIndicator;
import com.vk.sdk.api.model.VKApiAudio;
import com.vk.sdk.api.model.VKApiDocument;
import com.vk.sdk.api.model.VKApiPhoto;
import com.vk.sdk.api.model.VKApiVideo;
import java.util.ArrayList;
import typical_if.android.Constants;
import typical_if.android.ItemDataSetter;
import typical_if.android.R;
import typical_if.android.TIFApp;
import typical_if.android.view.TouchMakePostImageButton;
/**
* Created by admin on 18.08.2014.
*/
public abstract class FragmentWithAttach extends Fragment {
private long gid;
private long pid;
private int type;
@Override
public void onResume() {
super.onResume();
Constants.isFragmentMakePostLoaded = true;
}
EditText textField;
RobotoTextView txtPostAttachCounter;
FloatingActionButton btSendPost;
LinearLayout makePostAttachmentsContainer;
LinearLayout makePostAudioContainer;
LinearLayout makePostDocContainer;
RelativeLayout makePostMediaContainer;
ViewPager makePostMediaPager;
ImageButton makePostMediaPagerVideoButton;
CirclePageIndicator makePostMediaPagerIndicator;
TouchMakePostImageButton imgPostAttachPhoto;
TouchMakePostImageButton imgPostAttachVideo;
TouchMakePostImageButton imgPostAttachAudio;
TouchMakePostImageButton imgPostAttachDoc;
static final View.OnClickListener tooManyAttachments = new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(TIFApp.getAppContext(), R.string.max_attaches, Toast.LENGTH_SHORT).show();
}
};
static View.OnClickListener photoAttachClick;
static final View.OnClickListener audioAttachClick = new View.OnClickListener() {
@Override
public void onClick(View v) {
ItemDataSetter.fragmentManager.beginTransaction().add(R.id.container, FragmentAttachPostList.newAudioAttachInstance()).addToBackStack(null).commit();
}
};
static final View.OnClickListener videoAttachClick = new View.OnClickListener() {
@Override
public void onClick(View v) {
ItemDataSetter.fragmentManager.beginTransaction().add(R.id.container, FragmentAttachPostList.newVideoAttachInstance()).addToBackStack(null).commit();
}
};
static final View.OnClickListener docAttachClick = new View.OnClickListener() {
@Override
public void onClick(View v) {
ItemDataSetter.fragmentManager.beginTransaction().add(R.id.container, FragmentAttachPostList.newDocAttachInstance()).addToBackStack(null).commit();
}
};
@Override
public void onDetach() {
super.onDetach();
Constants.isFragmentMakePostLoaded = false;
}
@Override
public void onDestroy() {
super.onDestroy();
Constants.tempAudioPostAttach.clear();
Constants.tempPhotoPostAttach.clear();
Constants.tempVideoPostAttach.clear();
Constants.tempDocPostAttach.clear();
Constants.tempPostAttachCounter = 0;
Constants.isFragmentCommentsLoaded = false;
}
String getAttachesForPost() {
StringBuilder attachments = new StringBuilder("");
if (Constants.tempPostAttachCounter != 0) {
VKApiPhoto photo;
for (int i = 0; i < Constants.tempPhotoPostAttach.size(); i++) {
photo = Constants.tempPhotoPostAttach.get(i);
attachments.append("photo").append(photo.owner_id).append("_").append(photo.id).append(",");
}
VKApiVideo video;
for (int i = 0; i < Constants.tempVideoPostAttach.size(); i++) {
video = Constants.tempVideoPostAttach.get(i);
attachments.append("video").append(video.owner_id).append("_").append(video.id).append(",");
}
VKApiAudio audio;
for (int i = 0; i < Constants.tempAudioPostAttach.size(); i++) {
audio = Constants.tempAudioPostAttach.get(i);
attachments.append("audio").append(audio.owner_id).append("_").append(audio.id).append(",");
}
VKApiDocument doc;
for (int i = 0; i < Constants.tempDocPostAttach.size(); i++) {
doc = Constants.tempDocPostAttach.get(i);
attachments.append("doc").append(doc.owner_id).append("_").append(doc.id).append(",");
}
attachments.deleteCharAt(attachments.lastIndexOf(","));
}
return attachments.toString();
}
public void setAttachmentsOnEdit() {
if (Constants.tempPhotoPostAttach.size() != 0) {
refreshMakePostFragment(0);
}
if (Constants.tempVideoPostAttach.size() != 0) {
refreshMakePostFragment(1);
}
if (Constants.tempAudioPostAttach.size() != 0) {
refreshMakePostFragment(2);
}
if (Constants.tempDocPostAttach.size() != 0) {
refreshMakePostFragment(3);
}
txtPostAttachCounter.setText(Constants.tempPostAttachCounter + " / " + Constants.tempMaxPostAttachCounter);
textField.setText(Constants.tempTextSuggestPost);
}
public void refreshMakePostFragment(int which) {
if (Constants.tempPostAttachCounter >= 1 || textField.getText().length() != 0) {
btSendPost.setVisibility(View.VISIBLE);
} else {
btSendPost.setVisibility(View.INVISIBLE);
}
txtPostAttachCounter.setText(Constants.tempPostAttachCounter + " / " + Constants.tempMaxPostAttachCounter);
if (Constants.tempPostAttachCounter != 10) {
imgPostAttachPhoto.setOnClickListener(photoAttachClick);
imgPostAttachVideo.setOnClickListener(videoAttachClick);
imgPostAttachAudio.setOnClickListener(audioAttachClick);
imgPostAttachDoc.setOnClickListener(docAttachClick);
} else {
imgPostAttachPhoto.setOnClickListener(tooManyAttachments);
imgPostAttachDoc.setOnClickListener(tooManyAttachments);
imgPostAttachAudio.setOnClickListener(tooManyAttachments);
imgPostAttachVideo.setOnClickListener(tooManyAttachments);
}
switch (which) {
case 0:
case 1:
if (Constants.tempPhotoPostAttach.size() == 0 && Constants.tempVideoPostAttach.size() == 0) {
makePostMediaContainer.setVisibility(View.GONE);
} else {
makePostMediaContainer.setVisibility(View.VISIBLE);
setMedia(
makePostMediaPager,
makePostMediaPagerIndicator,
makePostMediaPagerVideoButton,
makePostMediaContainer,
Constants.tempPhotoPostAttach,
Constants.tempVideoPostAttach
);
}
break;
case 2:
makePostAudioContainer.setVisibility(View.VISIBLE);
setAudios(makePostAudioContainer, Constants.tempAudioPostAttach);
break;
case 3:
makePostDocContainer.setVisibility(View.VISIBLE);
setDocs(makePostDocContainer, Constants.tempDocPostAttach);
break;
}
}
public void deleteAttaches(int which, Object object) {
switch (which) {
case 0:
Constants.tempPhotoPostAttach.remove(object);
break;
case 1:
Constants.tempVideoPostAttach.remove(object);
break;
case 2:
Constants.tempAudioPostAttach.remove(object);
break;
case 3:
Constants.tempDocPostAttach.remove(object);
break;
}
Constants.tempPostAttachCounter--;
refreshMakePostFragment(which);
}
public void setAudios(LinearLayout parent, final ArrayList<VKApiAudio> audios) {
ViewGroup tempAudioContainer;
parent.removeAllViews();
parent.setVisibility(View.VISIBLE);
for (final VKApiAudio audio : audios) {
tempAudioContainer = (ViewGroup) ItemDataSetter.inflater.inflate(R.layout.audio_container, parent, false);
tempAudioContainer.setVisibility(View.VISIBLE);
tempAudioContainer.getChildAt(0).setEnabled(false);
((TextView) tempAudioContainer.getChildAt(2)).setText(ItemDataSetter.getMediaTime(audio.duration));
((TextView) tempAudioContainer.getChildAt(3)).setText(audio.artist);
((TextView) tempAudioContainer.getChildAt(4)).setText(audio.title);
tempAudioContainer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
deleteAttaches(2, audio);
}
});
parent.addView(tempAudioContainer);
}
}
public void setDocs(LinearLayout parent, final ArrayList<VKApiDocument> docs) {
ViewGroup tempDocumentContainer;
parent.removeAllViews();
parent.setVisibility(View.VISIBLE);
for (final VKApiDocument doc : docs) {
tempDocumentContainer = (ViewGroup) ItemDataSetter.inflater.inflate(R.layout.document_container, parent, false);
tempDocumentContainer.setVisibility(View.VISIBLE);
final ImageView image = (ImageView) tempDocumentContainer.getChildAt(1);
final TextView title = (TextView) tempDocumentContainer.getChildAt(2);
final TextView size = (TextView) tempDocumentContainer.getChildAt(3);
title.setText(doc.title);
if (doc.isImage()) {
image.setScaleType(ImageView.ScaleType.CENTER_CROP);
// Glide.with(TIFApp.getAppContext())
// .load(doc.photo_100)
// .placeholder(R.drawable.event_stub)
// .crossFade()
// .into(image);
ImageLoader.getInstance().displayImage(doc.photo_100, image, ItemDataSetter.animationLoader);
size.setText(Constants.DOC_TYPE_IMAGE + " " + ItemDataSetter.readableFileSize(doc.size));
} else if (doc.isGif()) {
image.setScaleType(ImageView.ScaleType.CENTER_CROP);
// Glide.with(TIFApp.getAppContext())
// .load(doc.photo_100)
// .placeholder(R.drawable.event_stub)
// .crossFade()
// .into(image);
ImageLoader.getInstance().displayImage(doc.photo_100, image, ItemDataSetter.animationLoader);
size.setText(Constants.DOC_TYPE_ANIMATION + " " + ItemDataSetter.readableFileSize(doc.size));
} else {
image.setImageDrawable(Constants.RESOURCES.getDrawable(android.R.drawable.ic_menu_save));
image.setLayoutParams(new RelativeLayout.LayoutParams(TIFApp.getScaledDp(50), TIFApp.getScaledDp(50)));
RelativeLayout.LayoutParams paramsForTitle = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
paramsForTitle.setMargins(TIFApp.getScaledDp(55), 0, 0, 0);
title.setLayoutParams(paramsForTitle);
RelativeLayout.LayoutParams paramsForSize = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
paramsForSize.setMargins(TIFApp.getScaledDp(55), TIFApp.getScaledDp(20), 0, 0);
size.setLayoutParams(paramsForSize);
size.setText(Constants.DOC_TYPE_DOCUMENT + " " + ItemDataSetter.readableFileSize(doc.size));
}
tempDocumentContainer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
deleteAttaches(3, doc);
}
});
parent.addView(tempDocumentContainer);
}
}
public void setMedia(
final ViewPager mediaPager,
CirclePageIndicator mediaPagerIndicator,
ImageButton mediaPagerVideoButton,
RelativeLayout mediaLayout,
final ArrayList<VKApiPhoto> photos,
final ArrayList<VKApiVideo> videos) {
mediaLayout.setTag(false);
ItemDataSetter.setMediaPager(
this,
mediaPager,
mediaPagerIndicator,
mediaPagerVideoButton,
mediaLayout,
photos,
videos
);
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
Constants.isFragmentMakePostLoaded = true;
}
}