package typical_if.android.fragment;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.GridView;
import android.widget.Toast;
import com.melnykov.fab.FloatingActionButton;
import com.vk.sdk.VKSdk;
import com.vk.sdk.api.VKApi;
import com.vk.sdk.api.VKRequest;
import com.vk.sdk.api.model.VKPhotoArray;
import java.io.File;
import java.util.ArrayList;
import java.util.concurrent.atomic.AtomicInteger;
import typical_if.android.Constants;
import typical_if.android.R;
import typical_if.android.TIFApp;
import typical_if.android.UploadPhotoService;
import typical_if.android.VKRequestListener;
import typical_if.android.activity.MainActivity;
import typical_if.android.adapter.PhotoUploadAdapter;
import typical_if.android.model.UploadPhotos;
/**
* Created by LJ on 25.07.2014.
*/
public class FragmentUploadPhotoList extends FragmentWithAttach {
static String category;
static String[] uris;
ArrayList<UploadPhotos> photolist = null;
static GridView photos;
int which;
long gid;
public static FragmentUploadPhotoList newInstance(String category, String[] uris, long gid, int which) {
FragmentUploadPhotoList fragment = new FragmentUploadPhotoList();
Bundle args = new Bundle();
fragment.setArguments(args);
fragment.category = category;
fragment.uris = uris;
fragment.which = which;
fragment.gid = gid;
return fragment;
}
public FragmentUploadPhotoList() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// ((MainActivity) getActivity()).getSupportActionBar().hide();
float scalefactor = getResources().getDisplayMetrics().density * 100;
int number = getActivity().getWindowManager().getDefaultDisplay().getWidth();
final int columns = (int) ((float) number / (float) scalefactor);
photolist = new ArrayList<UploadPhotos>();
for (String uri : uris) {
String[] temp = uri.split("/");
if (temp[temp.length - 2].contains(category)) {
photolist.add(new UploadPhotos(uri));
}
}
final View rootView = inflater.inflate(R.layout.fragment_add_photo_upload_list, container, false);
handleResponse(rootView, inflater, photolist, columns);
setRetainInstance(true);
return rootView;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
}
@Override
public void onDetach() {
super.onDetach();
}
public void setFabVisibility(int VISIBILITY) {
uploadPhotoFromSd.setVisibility(VISIBILITY);
}
public static void refreshCheckBoxes() {
CheckBox checkBox = null;
if (Constants.tempCurrentPhotoAttachCounter == (Constants.tempMaxPostAttachCounter - Constants.tempPostAttachCounter)) {
for (int i = 0; i < photos.getCount(); i++) {
checkBox = (CheckBox) photos.getChildAt(i).findViewById(R.id.checkBox_for_upload);
if (!checkBox.isChecked()) {
checkBox.setEnabled(false);
}
}
} else {
for (int i = 0; i < photos.getCount(); i++) {
try {
checkBox = (CheckBox) photos.getChildAt(i).findViewById(R.id.checkBox_for_upload);
} catch (NullPointerException e) {
}
if (!checkBox.isChecked()) {
checkBox.setEnabled(true);
}
}
}
}
@Override
public void onDestroy() {
super.onDestroy();
Constants.tempCurrentPhotoAttachCounter = 0;
getActivity().stopService(new Intent(getActivity().getApplicationContext(), UploadPhotoService.class));
}
public FloatingActionButton uploadPhotoFromSd;
protected void handleResponse(View rootView, LayoutInflater inflater, final ArrayList<UploadPhotos> photolist, int columns) {
uploadPhotoFromSd = (FloatingActionButton) rootView.findViewById(R.id.upload_photo_from_sd);
if (!VKSdk.isLoggedIn()) {
uploadPhotoFromSd.setVisibility(View.GONE);
}
//uploadPhotoFromSd.initBackground();
if (which == 0) {
uploadPhotoFromSd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
decrementer = new AtomicInteger(Constants.tempCurrentPhotoAttachCounter);
for (int j = 0; j < photolist.size(); j++) {
getActivity().startService(new Intent(getActivity().getApplicationContext(), UploadPhotoService.class));
if (photolist.get(j).isChecked) {
VKApi.uploadWallPhotoRequest(new File(photolist.get(j).photoSrc), Constants.USER_ID, (int) gid).executeWithListener(new VKRequestListener() {
@Override
public void onSuccess() {
Constants.tempPhotoPostAttach.add(((VKPhotoArray) vkResponse.parsedModel).get(0));
decrementThreadsCounter();
}
// @Override
// public void onError() {
// TIFApp.showCommonErrorToast();
// }
});
}
}
}
});
} else {
uploadPhotoFromSd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for (int j = 0; j < photolist.size(); j++) {
getActivity().startService(new Intent(getActivity().getApplicationContext(), UploadPhotoService.class));
if (photolist.get(j).isChecked) {
VKApi.uploadAlbumPhotoRequest(new File(photolist.get(j).photoSrc), Constants.ALBUM_ID, (int) gid).executeWithListener(new VKRequestListener() {
// @Override
// public void onError() {
// showErrorToast();
// }
});
getActivity().getSupportFragmentManager().popBackStack();
getActivity().getSupportFragmentManager().popBackStack();
getActivity().getSupportFragmentManager().popBackStack();
}
}
}
});
}
photos = (GridView) rootView.findViewById(R.id.adding_photo_upload);
PhotoUploadAdapter photoUploadAdapter = new PhotoUploadAdapter(this, category, inflater, photolist, getActivity().getSupportFragmentManager(), which);
photos.setAdapter(photoUploadAdapter);
photos.setNumColumns(columns);
}
private AtomicInteger decrementer;
private int counter = 1;
public void decrementThreadsCounter() {
Toast.makeText(TIFApp.getAppContext(), TIFApp.getAppContext().getString(R.string.upload_progress,counter,Constants.tempCurrentPhotoAttachCounter), Toast.LENGTH_SHORT).show();
if (decrementer.decrementAndGet() == 0) {
getActivity().getSupportFragmentManager().popBackStack();
getActivity().getSupportFragmentManager().popBackStack();
Constants.tempPostAttachCounter += Constants.tempCurrentPhotoAttachCounter;
refreshMakePostFragment(0);
}
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.upload_captured_photo, menu);
MenuItem item = menu.getItem(0);
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
if (which == 0) {
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
decrementer = new AtomicInteger(Constants.tempCurrentPhotoAttachCounter);
for (int j = 0; j < photolist.size(); j++) {
getActivity().startService(new Intent(getActivity().getApplicationContext(), UploadPhotoService.class));
if (photolist.get(j).isChecked) {
VKApi.uploadWallPhotoRequest(new File(photolist.get(j).photoSrc), Constants.USER_ID, (int) gid).executeWithListener(new VKRequestListener() {
@Override
public void onSuccess() {
Constants.tempPhotoPostAttach.add(((VKPhotoArray) vkResponse.parsedModel).get(0));
decrementThreadsCounter();
}
});
}
}
return true;
}
});
} else {
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
VKRequest req;
for (int j = 0; j < photolist.size(); j++) {
getActivity().startService(new Intent(getActivity().getApplicationContext(), UploadPhotoService.class));
if (photolist.get(j).isChecked) {
req = VKApi.uploadAlbumPhotoRequest(new File(photolist.get(j).photoSrc), Constants.ALBUM_ID, (int) gid);
req.executeWithListener(new VKRequestListener() {
// @Override
// public void onError() {
// showErrorToast();
// }
});
}
}
return true;
}
});
}
}
}