package com.moupress.app.friendshost.activity; import android.app.Activity; import android.app.ProgressDialog; import android.content.ContentValues; import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Matrix; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; import android.util.Log; import android.view.Display; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.Toast; import com.moupress.app.friendshost.Const; import com.moupress.app.friendshost.PubSub; import com.moupress.app.friendshost.R; /** * @author Li Ji * */ public class FeedPublishActivity extends Activity{ public static final String TAG = "FeedPublishActivity"; private String sns; private Activity activity; private ProgressDialog progressDialog; //Sns Boolean Selected Indicator // private boolean FBSelected = false; // private boolean RRSelected = false; // private boolean TWSelected = false; // private boolean WBSelected = false; //Controls & variables to publish Photos private ImageButton btnUploadPic; private ImageButton btnTakePic; private ImageView imgUploadPic; public static int uploadPicRotateDegree = 0; private static final int SELECT_PICTURE = 1; private static final int CAMERA_PIC_REQUEST = 2; private String selectedImagePath; //Message to publish private String message; private String title; private String bodyText; //Button to publish msg private ImageButton publishButton; private Button cancelButton; //Uri of captured Image private Uri mCapturedImageURI; //Notification & Handler; // private Handler mNotificationHandler = new Handler(); // private Runnable mNotification; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); //ScrollView layout = (ScrollView) LayoutInflater.from(this).inflate(R.layout.feed_publish_layout, null); requestWindowFeature(Window.FEATURE_NO_TITLE); this.setContentView(R.layout.feed_publish_layout); //ScrollView layout = (ScrollView) this.findViewById(R.id.scrollView); selectedImagePath = ""; uploadPicRotateDegree = 0; activity= this; fGetIntent(); fInitFieldUI(); fInitPicButtons(); fInitPicView(); fInitPubButtons(); } private void fGetIntent() { Intent intent = activity.getIntent(); title = null; bodyText = null; Bundle extras = intent.getExtras(); title = extras.getString(Intent.EXTRA_SUBJECT); bodyText = extras.getString(Intent.EXTRA_TEXT); PubSub.zSnsOrg.SnsResetPublishNewFeedSelected(); } private void fInitFieldUI() { //Controls Capture user's input info //ScrollView layout = (ScrollView) LayoutInflater.from(this).inflate(R.layout.feed_publish_layout, null); final EditText editTextMessage = (EditText) this.findViewById(R.id.message); if(title != null||bodyText != null) { editTextMessage.setText(title+" - "+ bodyText); } cancelButton = (Button) this.findViewById(R.id.CancelBtn); cancelButton.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { activity.finish(); }}); publishButton = (ImageButton) this.findViewById(R.id.thirdbtn); publishButton.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View arg0) { Log.i(TAG, "Publish Button is Clicked!"); message = editTextMessage.getText().toString(); boolean bPublished = false; if(selectedImagePath != null && selectedImagePath.length() > 0) { bPublished = uploadPhoto(activity.getApplicationContext()); selectedImagePath=""; } else { if (message == null || message.length() == 0 ) { Toast.makeText(getApplicationContext(), "Empty feed message and No Photo attached", Toast.LENGTH_SHORT).show(); } else { bPublished = publishFeed(); } } if (bPublished) { Toast.makeText(getApplicationContext(), "Your feed will be published shortly", Toast.LENGTH_SHORT).show(); activity.finish(); } else { Toast.makeText(getApplicationContext(), "Please check you selection. No feed has been published", Toast.LENGTH_SHORT).show(); } } }); } //Select or Unselect Sns Btn private void toggleBtnSelected(ImageButton btn) { if (btn.isSelected()){ btn.setSelected(false); } else { btn.setSelected(true); } } //Pop up Toast private void popUpToast(String snsSelected, boolean Selected) { String text = snsSelected + " is "+ (Selected?"selected":"unselected"); if (snsSelected.equals(Const.SNS_SINA) && Selected) { text += "\nSina does NOT allow you to update status to other sns together." + "\nWe will disable other sns you have selected"; } Toast.makeText(activity, text, Toast.LENGTH_LONG).show(); } //Initialize Buttons on UI public void fInitPubButtons() { final ImageButton imgBtn_Facebook = (ImageButton) this.findViewById(R.id.imgBtn_pubFacebook); SetButtonVisibility(imgBtn_Facebook,Const.SNS_FACEBOOK); final ImageButton imgBtn_Renren = (ImageButton) this.findViewById(R.id.imgBtn_pubRenren); SetButtonVisibility(imgBtn_Renren,Const.SNS_RENREN); final ImageButton imgBtn_Twitter = (ImageButton) this.findViewById(R.id.imgBtn_pubTwitter); SetButtonVisibility(imgBtn_Twitter,Const.SNS_TWITTER); final ImageButton imgBtn_Sina = (ImageButton) this.findViewById(R.id.imgBtn_pubSina); SetButtonVisibility(imgBtn_Sina,Const.SNS_SINA); //Facebook imgBtn_Facebook.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { toggleBtnSelected(imgBtn_Facebook); PubSub.zSnsOrg.GetSnsInstance(Const.SNS_FACEBOOK).fToogleSelectToPublish(); if (PubSub.zSnsOrg.GetSnsInstance(Const.SNS_FACEBOOK).fIsSelectedToPublish()) { imgBtn_Sina.setSelected(false); PubSub.zSnsOrg.GetSnsInstance(Const.SNS_SINA).fUnSelectToPublish(); } // if (imgBtn_Facebook.isSelected()) { // imgBtn_Sina.setSelected(false); // WBSelected = false; // } // FBSelected = imgBtn_Facebook.isSelected(); // popUpToast(Const.SNS_FACEBOOK,FBSelected); } }); //Renren imgBtn_Renren.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { toggleBtnSelected(imgBtn_Renren); PubSub.zSnsOrg.GetSnsInstance(Const.SNS_RENREN).fToogleSelectToPublish(); if (PubSub.zSnsOrg.GetSnsInstance(Const.SNS_RENREN).fIsSelectedToPublish()) { imgBtn_Sina.setSelected(false); PubSub.zSnsOrg.GetSnsInstance(Const.SNS_SINA).fUnSelectToPublish(); } // if (imgBtn_Renren.isSelected()) { // imgBtn_Sina.setSelected(false); // WBSelected = false; // } // RRSelected = imgBtn_Renren.isSelected(); // popUpToast(Const.SNS_RENREN,RRSelected); } }); //Twitter imgBtn_Twitter.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { toggleBtnSelected(imgBtn_Twitter); PubSub.zSnsOrg.GetSnsInstance(Const.SNS_TWITTER).fToogleSelectToPublish(); if (PubSub.zSnsOrg.GetSnsInstance(Const.SNS_TWITTER).fIsSelectedToPublish()) { imgBtn_Sina.setSelected(false); PubSub.zSnsOrg.GetSnsInstance(Const.SNS_SINA).fUnSelectToPublish(); } // if (imgBtn_Twitter.isSelected()) { // imgBtn_Sina.setSelected(false); // WBSelected = false; // } // // TWSelected = imgBtn_Twitter.isSelected(); // popUpToast(Const.SNS_TWITTER,TWSelected); } }); //Sina imgBtn_Sina.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { toggleBtnSelected(imgBtn_Sina); PubSub.zSnsOrg.GetSnsInstance(Const.SNS_SINA).fToogleSelectToPublish(); if (PubSub.zSnsOrg.GetSnsInstance(Const.SNS_SINA).fIsSelectedToPublish()) { imgBtn_Facebook.setSelected(false); PubSub.zSnsOrg.GetSnsInstance(Const.SNS_FACEBOOK).fUnSelectToPublish(); imgBtn_Renren.setSelected(false); PubSub.zSnsOrg.GetSnsInstance(Const.SNS_RENREN).fUnSelectToPublish(); imgBtn_Twitter.setSelected(false); PubSub.zSnsOrg.GetSnsInstance(Const.SNS_TWITTER).fUnSelectToPublish(); } // if (imgBtn_Sina.isSelected()) { // imgBtn_Facebook.setSelected(false); // FBSelected = false; // imgBtn_Renren.setSelected(false); // RRSelected = false; // imgBtn_Twitter.setSelected(false); // TWSelected = false; // } // WBSelected = imgBtn_Sina.isSelected(); popUpToast(Const.SNS_SINA, PubSub.zSnsOrg.GetSnsInstance(Const.SNS_SINA).fIsSelectedToPublish()); } }); } private void SetButtonVisibility(ImageButton snsButton, String snsName) { if(!PubSub.zSnsOrg.GetSnsInstance(snsName).isSelected()) snsButton.setVisibility(View.GONE); } public void fInitPicButtons() { //ScrollView layout = (ScrollView) LayoutInflater.from(this).inflate(R.layout.feed_publish_layout, null); //Functions of Photos btnUploadPic = (ImageButton) this.findViewById(R.id.updPic); btnUploadPic.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.i(TAG, "Upload Pictures"); Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(Intent.createChooser(intent, "Select Picture"), SELECT_PICTURE); } }); btnTakePic = (ImageButton) this.findViewById(R.id.tkePic); btnTakePic.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.i(TAG, "Take Photo Button is Clicked! "); //takePhoto(); String fileName = "temp.jpg"; ContentValues values = new ContentValues(); values.put(MediaStore.Images.Media.TITLE, fileName); mCapturedImageURI = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI); startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST); } }); } public void fInitPicView() { imgUploadPic = (ImageView) this.findViewById(R.id.img_uploadPic); imgUploadPic.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { uploadPicRotateDegree = (uploadPicRotateDegree + 90) % 360; Matrix matrix = new Matrix(); matrix.postRotate(uploadPicRotateDegree, imgUploadPic.getWidth()/2, imgUploadPic.getHeight()/2); imgUploadPic.setImageMatrix(matrix); } }); } public void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK ) { if (requestCode == SELECT_PICTURE) { Uri selectedImageUri = data.getData(); selectedImagePath = getPath(selectedImageUri); Log.d(TAG, "Image Selection Path is " + selectedImagePath); } else if(requestCode == CAMERA_PIC_REQUEST) { //pic = (Bitmap) data.getExtras().get("data"); String[] projection = { MediaStore.Images.Media.DATA}; Cursor cursor = managedQuery(mCapturedImageURI, projection, null, null, null); int column_index_data = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToFirst(); selectedImagePath = cursor.getString(column_index_data); Log.d(TAG, "Camera is capturing pics!"); } fLoadUploadPicToView(selectedImagePath); } } private void fLoadUploadPicToView(String selectedImagePath) { Display display = getWindowManager().getDefaultDisplay(); int screen_width = display.getWidth(); // deprecated int screen_height = display.getHeight(); // deprecated BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = 2; Bitmap bmp_uploadPic = BitmapFactory.decodeFile(selectedImagePath); int pic_width = bmp_uploadPic.getWidth(); int pic_height = bmp_uploadPic.getHeight(); float scale_width = (float) Math.min(1.0, ((float)screen_width)/((float)pic_width)); float scale_height = (float) Math.min(1.0, ((float)screen_height)/((float)pic_height)); Matrix matrix = new Matrix(); matrix.postScale(Math.min(scale_width, scale_height), Math.min(scale_width, scale_height)); //matrix.postRotate(90); bmp_uploadPic = Bitmap.createBitmap(bmp_uploadPic, 0, 0, bmp_uploadPic.getWidth(), bmp_uploadPic.getHeight(), matrix, true); imgUploadPic.setImageBitmap(bmp_uploadPic); imgUploadPic.setVisibility(View.VISIBLE); } public String getPath(Uri uri) { String[] projection = { MediaStore.Images.Media.DATA }; Cursor cursor = managedQuery(uri, projection, null, null, null); int column_index = cursor .getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToFirst(); return cursor.getString(column_index); } private boolean publishFeed() { Bundle params = new Bundle(); params.putString(Const.SMSGBODY, message); return PubSub.zSnsOrg.SnsPublishNewFeed(params, this.getApplicationContext()); // // if(this.WBSelected) // { // PubSub.zSinaUtil.fPublishFeeds(message); // } // if(this.RRSelected) // { // PubSub.zRenrenUtil.fPublishFeeds(" ", " ", " ", " ", " ", message); // } // if(this.FBSelected) // { // PubSub.zFacebook.fPublishFeeds(null, null, null, null, null, message); // } // if(this.TWSelected) // { // PubSub.zTwitterUtil.SendFeed(message); // } } private boolean uploadPhoto(final Context context) { return PubSub.zSnsOrg.SnsUploadPic(message, selectedImagePath,context); // // if(this.WBSelected) // { // PubSub.zSinaUtil.fUploadPic(message, selectedImagePath); // } // if(this.RRSelected) // { // PubSub.zRenrenUtil.fUploadPic(message,selectedImagePath); // } // // if(this.FBSelected) // { // PubSub.zFacebook.fUploadPic(message,selectedImagePath); // } // // if(this.TWSelected) // { // PubSub.zTwitterUtil.fUploadPic(message, selectedImagePath); // } } protected void showProgress() { showProgress("Please wait", "progressing"); } protected void showProgress(String title, String message) { progressDialog = ProgressDialog.show(this, title, message); } protected void dismissProgress() { if (progressDialog != null) { try { progressDialog.dismiss(); } catch (Exception e) { } } } }