From 3c2754aaf3812f963d0156454b751133060b6445 Mon Sep 17 00:00:00 2001 From: ShiftLeftLogical Date: Sat, 9 Nov 2013 01:47:00 -0500 Subject: [PATCH] Fix for issue #170 "Edit Page always asks to save changes". The save dialog will no longer pop when a page/post content is not modified and the back button is pressed. --- .../android/ui/posts/EditPostActivity.java | 34 +++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/src/org/wordpress/android/ui/posts/EditPostActivity.java b/src/org/wordpress/android/ui/posts/EditPostActivity.java index 7381c74616f8..874799917bbd 100644 --- a/src/org/wordpress/android/ui/posts/EditPostActivity.java +++ b/src/org/wordpress/android/ui/posts/EditPostActivity.java @@ -123,6 +123,8 @@ import java.util.Map; import java.util.Random; import java.util.Vector; +import java.util.zip.Checksum; +import java.util.zip.CRC32; public class EditPostActivity extends SherlockFragmentActivity implements OnClickListener, OnTouchListener, TextWatcher, WPEditText.OnSelectionChangedListener, OnFocusChangeListener, WPEditText.EditTextImeBackListener { @@ -184,6 +186,7 @@ public class EditPostActivity extends SherlockFragmentActivity implements OnClic private int mBlogID = -1; private long mPostID = -1; private long mCustomPubDate = 0; + private long mInitialPostCRC = 0; private int mYear, mMonth, mDay, mHour, mMinute; private int mStyleStart, mSelectionStart, mSelectionEnd; @@ -499,6 +502,8 @@ else if (mQuickMediaType == Constants.QUICK_POST_VIDEO_LIBRARY) mBquoteToggleButton.setOnClickListener(this); mMoreButton.setOnClickListener(this); softKeyboardHook(); + + mInitialPostCRC = computePostCRC(); } private void prepareMediaGallery() { @@ -968,9 +973,34 @@ public void onBackPressed() { showCancelAlert(false); } + private long computePostCRC() { + long crcValue = 0; + String textArray = ""; + byte byteArray[] = null; + Checksum checksum = new CRC32(); + + Spinner postFormatSpinner = (Spinner) findViewById(R.id.postFormat); + + textArray += mContentEditText.getText().toString(); + textArray += mTitleEditText.getText().toString(); + textArray += mPasswordEditText.getText().toString(); + textArray += mLocationText.getText().toString(); + textArray += mPubDateText.getText().toString(); + textArray += mTagsEditText.getText().toString(); + textArray += String.valueOf(mStatusSpinner.getSelectedItemPosition()); + textArray += String.valueOf(postFormatSpinner.getSelectedItemPosition()); + + byteArray = textArray.getBytes(); + + checksum.update(byteArray,0,byteArray.length); + crcValue = checksum.getValue(); + + return crcValue; + } + private void showCancelAlert(final boolean isUpPress) { - // Empty post? Let's not prompt then. - if (mIsNew && mContentEditText.getText().toString().equals("") && mTitleEditText.getText().toString().equals("")) { + // Has the user not changed the post's content? Let's not prompt then. + if(mInitialPostCRC == computePostCRC()) { finish(); return; }