@@ -67,6 +67,11 @@ public class FeedbackActivity extends Activity implements OnClickListener {
67
67
*/
68
68
public static final String EXTRA_URL = "url" ;
69
69
70
+ /**
71
+ * Optional extra that can be passed as {@code true} to force a new feedback message thread.
72
+ */
73
+ public static final String EXTRA_FORCE_NEW_THREAD = "forceNewThread" ;
74
+
70
75
/**
71
76
* Extra for initial username to set for the feedback message.
72
77
*/
@@ -165,6 +170,12 @@ public class FeedbackActivity extends Activity implements OnClickListener {
165
170
**/
166
171
private boolean mInSendFeedback ;
167
172
173
+ /**
174
+ * Indicates if a new thread should be created for each new feedback message as opposed to
175
+ * the default resume thread behaviour.
176
+ */
177
+ private boolean mForceNewThread ;
178
+
168
179
/**
169
180
* True when the view was initialized
170
181
**/
@@ -193,6 +204,7 @@ public void onCreate(Bundle savedInstanceState) {
193
204
Bundle extras = getIntent ().getExtras ();
194
205
if (extras != null ) {
195
206
mUrl = extras .getString (EXTRA_URL );
207
+ mForceNewThread = extras .getBoolean (EXTRA_FORCE_NEW_THREAD );
196
208
initialUserName = extras .getString (EXTRA_INITIAL_USER_NAME );
197
209
initialUserEmail = extras .getString (EXTRA_INITIAL_USER_EMAIL );
198
210
@@ -316,8 +328,8 @@ public void onClick(View v) {
316
328
openContextMenu (v );
317
329
}
318
330
} else if (viewId == R .id .button_add_response ) {
319
- configureFeedbackView (false );
320
331
mInSendFeedback = true ;
332
+ configureFeedbackView (false );
321
333
} else if (viewId == R .id .button_refresh ) {
322
334
sendFetchFeedback (mUrl , null , null , null , null , null , PrefsUtil .getInstance ().getFeedbackTokenFromPrefs (mContext ), mFeedbackHandler , true );
323
335
}
@@ -494,7 +506,7 @@ protected void configureFeedbackView(boolean haveToken) {
494
506
mNameInput .setText (nameEmailSubjectArray [0 ]);
495
507
mEmailInput .setText (nameEmailSubjectArray [1 ]);
496
508
497
- if (nameEmailSubjectArray .length >= 3 ) {
509
+ if (! mForceNewThread && nameEmailSubjectArray .length >= 3 ) {
498
510
mSubjectInput .setText (nameEmailSubjectArray [2 ]);
499
511
mTextInput .requestFocus ();
500
512
} else {
@@ -524,8 +536,8 @@ protected void configureFeedbackView(boolean haveToken) {
524
536
/** Reset the remaining fields if previously populated */
525
537
mTextInput .setText ("" );
526
538
527
- /** Check to see if the Feedback Token is availabe */
528
- if (PrefsUtil .getInstance ().getFeedbackTokenFromPrefs (mContext ) != null ) {
539
+ /** Check to see if the Feedback Token is available */
540
+ if ((! mForceNewThread || mInSendFeedback ) && PrefsUtil .getInstance ().getFeedbackTokenFromPrefs (mContext ) != null ) {
529
541
/** If Feedback Token is available, hide the Subject Input field */
530
542
mSubjectInput .setVisibility (View .GONE );
531
543
} else {
@@ -586,8 +598,11 @@ private boolean addAttachment(int request) {
586
598
587
599
private void configureAppropriateView () {
588
600
/** Try to retrieve the Feedback Token from {@link SharedPreferences} */
589
- mToken = PrefsUtil .getInstance ().getFeedbackTokenFromPrefs (this );
590
- if ((mToken == null ) || (mInSendFeedback )) {
601
+ if (!mForceNewThread || mInSendFeedback ) {
602
+ mToken = PrefsUtil .getInstance ().getFeedbackTokenFromPrefs (this );
603
+ }
604
+
605
+ if (mToken == null || mInSendFeedback ) {
591
606
/** If Feedback Token is NULL, show the usual feedback view */
592
607
configureFeedbackView (false );
593
608
} else {
@@ -708,7 +723,7 @@ private void sendFeedback() {
708
723
enableDisableSendFeedbackButton (false );
709
724
hideKeyboard ();
710
725
711
- String token = PrefsUtil .getInstance ().getFeedbackTokenFromPrefs (mContext );
726
+ String token = mForceNewThread && ! mInSendFeedback ? null : PrefsUtil .getInstance ().getFeedbackTokenFromPrefs (mContext );
712
727
713
728
String name = mNameInput .getText ().toString ().trim ();
714
729
String email = mEmailInput .getText ().toString ().trim ();
0 commit comments