package com.ihateflyingbugs.kidsm.showimage;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.ArrayList;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.AssetFileDescriptor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.os.Parcelable;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.ScrollView;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import com.ihateflyingbugs.kidsm.ImageLoader;
import com.ihateflyingbugs.kidsm.NetworkActivity;
import com.ihateflyingbugs.kidsm.R;
import com.ihateflyingbugs.kidsm.gallery.Album;
import com.ihateflyingbugs.kidsm.gallery.AlbumActivity;
import com.ihateflyingbugs.kidsm.gallery.Photo;
import com.ihateflyingbugs.kidsm.gallery.Album.ALBUMTYPE;
import com.ihateflyingbugs.kidsm.menu.Profile;
import com.ihateflyingbugs.kidsm.menu.SlidingMenuMaker;
import com.ihateflyingbugs.kidsm.uploadphoto.InputTag;
import com.ihateflyingbugs.kidsm.uploadphoto.InputTagActivity;
import com.ihateflyingbugs.kidsm.uploadphoto.InputTagAdapter;
import com.ihateflyingbugs.kidsm.uploadphoto.UploadPhotoActivity.TAGMODE;
import com.localytics.android.LocalyticsSession;
public class ModifyImageActivity extends NetworkActivity {
ImageLoader imageLoader;
int requestGetClassStudentCounter;
int requestGetMemberCounter;
ArrayList<InputTag> tagMemberList;
String tagValue;
TAGMODE tagMode;
InputTagAdapter tagAdapter;
ListView listView;
private LocalyticsSession localyticsSession;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_modifyimage);
getActionBar().setHomeButtonEnabled(true);
getActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.general_actionbar_function_bg));
getActionBar().setIcon(R.drawable.general_actionbar_back_btnset);
tagMode = TAGMODE.SEE_TAGGED_FRIEND;
tagValue = "";
tagMemberList = new ArrayList<InputTag>();
tagAdapter = new InputTagAdapter(this, tagMemberList);
listView = (ListView) findViewById(R.id.modifyphoto_taglist);
listView.setAdapter(tagAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, final int position, long id) {
onUpdate(Integer.parseInt(((CheckBox)v.findViewById(R.id.tag_check)).getTag().toString()), !((CheckBox)v.findViewById(R.id.tag_check)).isChecked());
}
});
listView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
((ScrollView)findViewById(R.id.modifyphoto_scroll)).requestDisallowInterceptTouchEvent(true);
return false;
}
});
requestTagData();
RadioGroup tagmode = (RadioGroup) findViewById(R.id.modifyphoto_tagmode);
final RadioButton btn1 = (RadioButton) tagmode.findViewById(R.id.modifyphoto_tagmode_all);
final RadioButton btn2 = (RadioButton) tagmode.findViewById(R.id.modifyphoto_tagmode_tagged);
final RadioButton btn3 = (RadioButton) tagmode.findViewById(R.id.modifyphoto_tagmode_private);
tagmode.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
btn1.setTextColor(Color.BLACK);
btn2.setTextColor(Color.BLACK);
btn3.setTextColor(Color.BLACK);
RadioButton btn = (RadioButton) group.findViewById(checkedId);
btn.setTextColor(Color.parseColor("#63C3B1"));
View layout = findViewById(R.id.modifyphoto_tagstatepage);
switch(checkedId) {
case R.id.modifyphoto_tagmode_all:
tagMode = TAGMODE.SEE_ALL_FRIEND;
layout.setVisibility(View.GONE);
findViewById(R.id.modifyphoto_tagpage).setVisibility(View.INVISIBLE);
OnFinishTagging(null);
break;
case R.id.modifyphoto_tagmode_tagged:
tagMode = TAGMODE.SEE_TAGGED_FRIEND;
layout.setVisibility(View.VISIBLE);
findViewById(R.id.modifyphoto_tagpage).setVisibility(View.VISIBLE);
break;
case R.id.modifyphoto_tagmode_private:
tagMode = TAGMODE.SEE_PRIVATE;
layout.setVisibility(View.GONE);
findViewById(R.id.modifyphoto_tagpage).setVisibility(View.INVISIBLE);
OnFinishTagging(null);
break;
}
}
});
imageLoader = new ImageLoader(this, R.drawable.photo_in_album_default);
imageLoader.DisplayImage(getIntent().getStringExtra("photo_url"), (ImageView)findViewById(R.id.modifyphoto_selected));
this.localyticsSession = new LocalyticsSession(this.getApplicationContext()); // Context used to access device resources
this.localyticsSession.open(); // open the session
this.localyticsSession.upload(); // upload any data
}
public void onResume() {
super.onResume();
this.localyticsSession.open();
}
public void onPause() {
this.localyticsSession.close();
this.localyticsSession.upload();
super.onPause();
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if( resultCode == RESULT_OK ) {
switch(requestCode) {
case 1:
break;
case 2:
break;
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.modifyphoto_register, menu);
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
Intent intent;
switch(item.getItemId()) {
case android.R.id.home:
finish();
return true;
case R.id.modifyphoto_register:
//String message = ((EditText)findViewById(R.id.modifyphoto_message)).getText().toString();
switch(tagMode) {
case SEE_ALL_FRIEND:
this.request_Album_modPhotoTag(getIntent().getStringExtra("photo_srl"), makeAllMemberIncludedTag());
break;
case SEE_TAGGED_FRIEND:
this.request_Album_modPhotoTag(getIntent().getStringExtra("photo_srl"), tagValue);
break;
case SEE_PRIVATE:
this.request_Album_modPhotoTag(getIntent().getStringExtra("photo_srl"), "");
break;
}
return true;
}
return false;
}
private void requestTagData() {
Profile profile = SlidingMenuMaker.getProfile();
tagMemberList.clear();
tagMemberList.add(new InputTag("", "��ü����"));
requestGetClassStudentCounter = 0;
requestGetMemberCounter = 0;
switch(profile.member_type.charAt(0)) {
case 'P':
tagMemberList.add(new InputTag(profile.org_manager_member_srl, profile.org_manager_name + " ���弱����"));
for(int i = 0; i < profile.getCurrentChildren().teacherList.size(); i++)
tagMemberList.add(new InputTag(profile.getCurrentChildren().teacherList.get(i).teacher_member_srl, profile.getCurrentChildren().teacherList.get(i).teacher_name + " ������"));
this.request_Member_getFriends(profile.getCurrentChildren().student_member_srl);
break;
case 'T':
tagMemberList.add(new InputTag(profile.org_manager_member_srl, profile.org_manager_name + " ���弱����"));
this.request_Class_getClassStudent(profile.member_org_srl, profile.getCurrentClass().getClass_srl());
break;
case 'M':
for(int i = 0; i < profile.classList.size()-1; i++) {
for(int j = 0; j < profile.classList.get(i).getTeacherList().size(); j++)
tagMemberList.add(new InputTag(profile.classList.get(i).getTeacherList().get(j).teacher_member_srl, profile.classList.get(i).getTeacherList().get(j).teacher_name + " ������"));
this.request_Class_getClassStudent(SlidingMenuMaker.getProfile().member_org_srl, SlidingMenuMaker.getProfile().classList.get(i).getClass_srl());
}
break;
}
}
public void OnDeletePhoto(final View v) {
new AlertDialog.Builder(this)
.setMessage("������ ������ �����Ͻðڽ��ϱ�?")
.setPositiveButton("Ȯ��", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String member_srl = "";
switch(SlidingMenuMaker.getProfile().member_type.charAt(0)) {
case 'P':
member_srl = SlidingMenuMaker.getProfile().getCurrentChildren().student_member_srl;
break;
case 'T':
case 'M':
member_srl = SlidingMenuMaker.getProfile().member_srl;
break;
}
request_Album_delPhoto(getIntent().getStringExtra("photo_srl"), member_srl);
}
})
.setNegativeButton("���", null)
.show();
}
private void updateTagValue() {
tagValue = "";
for(int i = 1; i < tagMemberList.size(); i++) {
if( tagMemberList.get(i).isTagged ) {
tagValue += tagMemberList.get(i).member_srl + ",";
}
}
}
private String makeAllMemberIncludedTag() {
String tagValue = "";
for(int i = 1; i < tagMemberList.size(); i++) {
tagValue += tagMemberList.get(i).member_srl + ",";
}
return tagValue;
}
private void showTaggedList() {
ArrayList<InputTag> tagList = tagMemberList;
TextView txt = (TextView)findViewById(R.id.modifyphoto_taggedname);
String taggedName = "";
ArrayList<String> taggedNameList = new ArrayList<String>();
for(int i = 1; i < tagList.size(); i++) {
if( tagList.get(i).isTagged ) {
taggedNameList.add(tagList.get(i).member_name);
}
}
for(int i = 0; i < taggedNameList.size(); i++) {
taggedName += taggedNameList.get(i);
if( i != taggedNameList.size()-1 ) {
taggedName += ", ";
}
}
updateTagValue();
ImageView img = (ImageView)findViewById(R.id.modifyphoto_tagicon);
if( taggedName.isEmpty() )
img.setImageResource(R.drawable.photo_edit_tag_off);
else
img.setImageResource(R.drawable.photo_edit_tag_on);
txt.setText(taggedName);
}
public void OnButtonCheck(View v) {
CheckBox cb = (CheckBox)v;
boolean isChecked = cb.isChecked();
int position = (Integer) cb.getTag();
onUpdate(position, isChecked);
}
public void onUpdate(final int position, boolean checker) {
if(position == 0) {
for(int i = 0; i < tagMemberList.size(); i++) {
tagMemberList.get(i).isTagged = checker;
}
}
else {
tagMemberList.get(position).isTagged = checker;
if(checker == false)
tagMemberList.get(0).isTagged = checker;
else {
boolean isAllChecked = true;
for(int i = 1; i < tagMemberList.size(); i++) {
if( tagMemberList.get(i).isTagged == false ) {
isAllChecked = false;
break;
}
}
if(isAllChecked)
tagMemberList.get(0).isTagged = checker;
}
}
tagAdapter.notifyDataSetChanged();
showTaggedList();
}
public void OnSelectImage(final View v) {
if( tagMode == TAGMODE.SEE_TAGGED_FRIEND) {
findViewById(R.id.modifyphoto_tagpage).setVisibility(View.VISIBLE);
}
}
public void OnFinishTagging(View v) {
findViewById(R.id.modifyphoto_tagpage).setVisibility(View.INVISIBLE);
}
private void setTagMemberData() {
new Thread(new Runnable() {
@Override
public void run() {
runOnUiThread(new Runnable(){
@Override
public void run() {
tagAdapter.notifyDataSetChanged();
}
});
}
}).start();
}
@Override
public void response(String uri, String response) {
try {
if( response.isEmpty() )
return;
JSONObject jsonObj = new JSONObject(response);
String result = jsonObj.getString("result");
if( result.equals("OK") ) {
// if(uri.equals("Album/setPhoto")) {
// String nativeData = jsonObj.getString("data");
// jsonObj = new JSONObject(nativeData);
// String photo_srl = jsonObj.getString("photo_srl");
// String photo_member_srl = jsonObj.getString("photo_member_srl");
// String photo_album_srl = jsonObj.getString("photo_album_srl");
// String photo_timeline_srl = jsonObj.getString("photo_timeline_srl");
// String photo_tag = jsonObj.getString("photo_tag");
// String photo_path = jsonObj.getString("photo_path");
// String photo_thumbnail = photo_path.substring(0, photo_path.length()-4 ) + "_96x96.png";
// String photo_like = jsonObj.getString("photo_like");
// String photo_private = jsonObj.getString("photo_private");
// String photo_created = jsonObj.getString("photo_created");
// String photo_updated = jsonObj.getString("photo_updated");
// uploadedPhotoList.add(new Photo(photo_srl, photo_member_srl, photo_album_srl, photo_timeline_srl, photo_tag, photo_path, photo_thumbnail, photo_like, photo_private, photo_created, photo_updated));
//
// String targetList = "";
// isRequestAlarmingMember = true;
// ArrayList<String> tagList = this.makeTagListForTimeline(photo_tag);
// alarmingCounter = tagList.size();
// for(int i = 0; i < tagList.size(); i++) {
// targetList += tagList.get(i) + ",";
// this.request_Member_getMember(tagList.get(i));
// }
// this.request_Timeline_setTimelineMessage(photo_member_srl, "P", photo_srl, targetList);
// }
// else if(uri.equals("Timeline/setTimelineMessage")) {
// String nativeData = jsonObj.getString("data");
// JSONArray dataArray = new JSONArray(nativeData);
// for(int i = 0; i < dataArray.length(); i++ ) {
// JSONObject dataObj = dataArray.getJSONObject(i);
// String timeline_type = dataObj.getString("timeline_type");
// String timeline_srl = dataObj.getJSONObject("_id").getString("$oid");
// String timeline_member_srl = dataObj.getString("timeline_member_srl");
// String timeline_target_member_srl = dataObj.getString("timeline_target_member_srl");
// String timeline_target_srl = dataObj.getString("timeline_target_srl");
// String timeline_created = dataObj.getString("timeline_created");
// for(int j = 0; j < uploadedPhotoList.size(); j++) {
// if(uploadedPhotoList.get(j).photo_srl.equals(timeline_target_srl)) {
// uploadedPhotoList.get(j).photo_timeline_srl = timeline_srl;
// break;
// }
// }
// this.request_Album_setPhotoTimeline(timeline_target_srl, timeline_srl);
// break;
// }
// //}
// }
// else if(uri.equals("Album/setPhotoTimeline")) {
// new Thread(new Runnable() {
// @Override
// public void run() {
// runOnUiThread(new Runnable(){
// @Override
// public void run() {
// sendCounter++;
// isFinished();
// }
// });
// }
// }).start();
// }
// else if(uri.equals("Album/setAlbum")) {
// String nativeData = jsonObj.getString("data");
// jsonObj = new JSONObject(nativeData);
// String album_srl = jsonObj.getString("album_srl");
// String album_member_srl = jsonObj.getString("album_member_srl");
// final String album_name = jsonObj.getString("album_name");
// String album_type = jsonObj.getString("album_type");
// String album_created = jsonObj.getString("album_created");
// String album_updated = jsonObj.getString("album_updated");
// String album_count = jsonObj.getString("album_count");
// current_album_srl = album_srl;
// albumList.add(albumList.size()-1, new Album(ALBUMTYPE.NORMAL, album_srl, album_member_srl, album_name, album_type, album_created, album_updated, album_count));
// newAlbumList.add(new Album(ALBUMTYPE.NORMAL, album_srl, album_member_srl, album_name, album_type, album_created, album_updated, album_count));
// new Thread(new Runnable() {
// @Override
// public void run() {
// runOnUiThread(new Runnable(){
// @Override
// public void run() {
// albumListAdapter.notifyDataSetChanged();
// spinner.setSelection(albumList.size()-2);
// albumListAdapter.notifyDataSetChanged();
// }
// });
// }
// }).start();
// }
if(uri.equals("Member/getFriends")) {
String nativeData = jsonObj.getString("data");
JSONArray dataArray = new JSONArray(nativeData);
ArrayList<String> getMemberList = new ArrayList<String>();
for(int i = 0; i < dataArray.length(); i++) {
String friend_srl = dataArray.getJSONObject(i).getString("friend_srl");
String friend_origin_srl = dataArray.getJSONObject(i).getString("friend_origin_srl");
String friend_target_srl = dataArray.getJSONObject(i).getString("friend_target_srl");
String friend_status = dataArray.getJSONObject(i).getString("friend_status");
String friend_created = dataArray.getJSONObject(i).getString("friend_created");
if(friend_status.equals("A")) {
if(friend_origin_srl.equals(SlidingMenuMaker.getProfile().getCurrentChildren().student_member_srl))
getMemberList.add(friend_target_srl);
else
getMemberList.add(friend_origin_srl);
requestGetMemberCounter++;
}
}
for(int i = 0; i < getMemberList.size(); i++)
this.request_Member_getMember(getMemberList.get(i));
}
else if(uri.equals("Class/getClassStudent")) {
String nativeData = jsonObj.getString("data");
JSONArray dataArray = new JSONArray(nativeData);
for(int i = 0; i < dataArray.length(); i++) {
String member_srl = dataArray.getJSONObject(i).getString("member_srl");
String member_name = dataArray.getJSONObject(i).getString("member_name");
String member_type = dataArray.getJSONObject(i).getString("member_type");
String member_org_srl = dataArray.getJSONObject(i).getString("member_org_srl");
String member_picture = dataArray.getJSONObject(i).getString("member_picture");
JSONObject studentObj = dataArray.getJSONObject(i).getJSONObject("student");
String student_srl = studentObj.getString("student_srl");
String student_member_srl = studentObj.getString("student_member_srl");
String student_class_srl = studentObj.getString("student_class_srl");
String student_parent_srl = studentObj.getString("student_parent_srl");
String student_teacher_srl = studentObj.getString("student_teacher_srl");
String student_shuttle_srl = studentObj.getString("student_shuttle_srl");
String student_birthday = studentObj.getString("student_birthday");
String student_parent_key = studentObj.getString("student_parent_key");
tagMemberList.add(new InputTag(member_srl, member_name));
}
switch(SlidingMenuMaker.getProfile().member_type.charAt(0)) {
case 'T':
setTagMemberData();
break;
case 'M':
if( ++requestGetClassStudentCounter == SlidingMenuMaker.getProfile().classList.size()-1 ) {
setTagMemberData();
}
break;
}
}
else if(uri.equals("Member/getMember")) {
String nativeData = jsonObj.getString("data");
jsonObj = new JSONObject(nativeData);
String member_srl = jsonObj.getString("member_srl");
String member_name = jsonObj.getString("member_name");
String member_type = jsonObj.getString("member_type");
tagMemberList.add(new InputTag(member_srl, member_name));
if(--requestGetMemberCounter == 0) {
setTagMemberData();
}
}
else if(uri.equals("Album/delPhoto")) {
String nativeData = jsonObj.getString("data");
jsonObj = new JSONObject(nativeData);
String photo_member_srl = jsonObj.getString("photo_member_srl");
String photo_timeline_srl = jsonObj.getString("photo_timeline_srl");
this.request_Timeline_delTimelineMessage(photo_member_srl, photo_timeline_srl);
new Thread(new Runnable() {
@Override
public void run() {
runOnUiThread(new Runnable(){
@Override
public void run() {
new AlertDialog.Builder(ModifyImageActivity.this)
.setMessage("������ �����Ǿ����ϴ�.")
.setPositiveButton("Ȯ��", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.show();
finish();
}
});
}
}).start();
}
// else if(uri.equals("Member/getParent")) {
// String nativeData = jsonObj.getString("data");
// jsonObj = new JSONObject(nativeData);
// String member_srl = jsonObj.getString("member_srl");
// switch(SlidingMenuMaker.getProfile().member_type.charAt(0)) {
// case 'P':
// this.request_Service_notify_sendNotify(SlidingMenuMaker.getProfile().member_srl, member_srl, "���� �±� �˸�", SlidingMenuMaker.getProfile().member_name+"�кθ���� ȸ������ �±� ������ ���ε��߽��ϴ�.", "P");
// break;
// case 'T':
// this.request_Service_notify_sendNotify(SlidingMenuMaker.getProfile().member_srl, member_srl, "���� �±� �˸�", SlidingMenuMaker.getProfile().member_name+"�������� ȸ������ �±� ������ ���ε��߽��ϴ�.", "P");
// break;
// case 'M':
// this.request_Service_notify_sendNotify(SlidingMenuMaker.getProfile().member_srl, member_srl, "���� �±� �˸�", SlidingMenuMaker.getProfile().member_name+"���弱������ ȸ������ �±� ������ ���ε��߽��ϴ�.", "P");
// break;
// }
// new Thread(new Runnable() {
// @Override
// public void run() {
// runOnUiThread(new Runnable(){
// @Override
// public void run() {
// alarmingCounter--;
// isFinished();
// }
// });
// }
// }).start();
// }
else if(uri.equals("Album/modPhotoTag")) {
new Thread(new Runnable() {
@Override
public void run() {
runOnUiThread(new Runnable(){
@Override
public void run() {
Toast.makeText(ModifyImageActivity.this, "�±װ� �����Ǿ����ϴ�.", Toast.LENGTH_SHORT).show();
finish();
}
});
}
}).start();
}
}
else {
}
}
catch(JSONException e) {
StringWriter errors = new StringWriter();
e.printStackTrace(new PrintWriter(errors));
String s = errors.toString();
System.out.println(s);
}
}
}