2121import android .app .AlertDialog ;
2222import android .app .ProgressDialog ;
2323import android .content .DialogInterface ;
24- import android .content .Intent ;
2524import android .database .Cursor ;
2625import android .os .AsyncTask ;
27- import android .os .Build ;
2826import android .os .Build .VERSION_CODES ;
2927import android .os .Bundle ;
30- import android .provider .Telephony ;
3128import android .support .v4 .app .LoaderManager ;
3229import android .support .v4 .content .Loader ;
3330import android .text .TextUtils ;
34- import android .util .Log ;
3531import android .view .LayoutInflater ;
3632import android .view .View ;
37- import android .view .View .OnClickListener ;
3833import android .view .ViewGroup ;
3934import android .widget .AdapterView ;
40- import android .widget .Button ;
4135import android .widget .CursorAdapter ;
42- import android .widget .ImageButton ;
43- import android .widget .ImageView ;
4436import android .widget .ListView ;
45- import android .widget .TextView ;
4637
4738import com .actionbarsherlock .app .SherlockListFragment ;
4839import com .actionbarsherlock .view .ActionMode ;
5142import com .actionbarsherlock .view .MenuItem ;
5243import com .actionbarsherlock .widget .SearchView ;
5344
45+ import org .thoughtcrime .securesms .components .DefaultSmsReminder ;
46+ import org .thoughtcrime .securesms .components .PushRegistrationReminder ;
47+ import org .thoughtcrime .securesms .components .ReminderView ;
48+ import org .thoughtcrime .securesms .components .SystemSmsImportReminder ;
5449import org .thoughtcrime .securesms .database .DatabaseFactory ;
5550import org .thoughtcrime .securesms .database .loaders .ConversationListLoader ;
5651import org .thoughtcrime .securesms .notifications .MessageNotifier ;
5752import org .thoughtcrime .securesms .recipients .Recipients ;
5853import org .thoughtcrime .securesms .service .ApplicationMigrationService ;
5954import org .thoughtcrime .securesms .util .Dialogs ;
60- import org .thoughtcrime .securesms .util .TextSecurePreferences ;
6155import org .whispersystems .textsecure .crypto .MasterSecret ;
62- import org .thoughtcrime .securesms .util .Util ;
6356
6457import java .util .Set ;
6558
@@ -71,13 +64,13 @@ public class ConversationListFragment extends SherlockListFragment
7164 private ConversationSelectedListener listener ;
7265 private MasterSecret masterSecret ;
7366 private ActionMode actionMode ;
74- private View reminderView ;
75- private String queryFilter = "" ;
67+ private ReminderView reminderView ;
68+ private String queryFilter = "" ;
7669
7770 @ Override
7871 public View onCreateView (LayoutInflater inflater , ViewGroup container , Bundle bundle ) {
7972 final View view = inflater .inflate (R .layout .conversation_list_fragment , container , false );
80- reminderView = LayoutInflater . from (getActivity ()). inflate ( R . layout . reminder_header , null );
73+ reminderView = new ReminderView (getActivity ());
8174 return view ;
8275 }
8376
@@ -203,17 +196,14 @@ public boolean onItemLongClick(AdapterView<?> arg0, View v, int position, long i
203196 }
204197
205198 private void initializeReminders () {
206- final boolean isDefault = Util .isDefaultSmsProvider (getActivity ());
207- if (isDefault ) {
208- TextSecurePreferences .setPromptedDefaultSmsProvider (getActivity (), false );
209- }
210-
211- if (!isDefault && !TextSecurePreferences .hasPromptedDefaultSmsProvider (getActivity ())) {
212- showDefaultSmsReminder ();
213- } else if (isDefault && !ApplicationMigrationService .isDatabaseImported (getActivity ())) {
214- showSystemSmsImportReminder ();
199+ if (DefaultSmsReminder .isEligible (getActivity ())) {
200+ reminderView .showReminder (new DefaultSmsReminder (getActivity ()));
201+ } else if (SystemSmsImportReminder .isEligible (getActivity ())) {
202+ reminderView .showReminder (new SystemSmsImportReminder (getActivity (), masterSecret ));
203+ } else if (PushRegistrationReminder .isEligible (getActivity ())) {
204+ reminderView .showReminder (new PushRegistrationReminder (getActivity (), masterSecret ));
215205 } else {
216- reminderView .findViewById ( R . id . container ). setVisibility ( View . GONE );
206+ reminderView .hide ( );
217207 }
218208 }
219209
@@ -339,79 +329,6 @@ public void onDestroyActionMode(ActionMode mode) {
339329 actionMode = null ;
340330 }
341331
342- @ TargetApi (VERSION_CODES .KITKAT )
343- private void showDefaultSmsReminder () {
344- final ViewGroup container = (ViewGroup ) reminderView .findViewById (R .id .container );
345-
346- setReminderData (R .drawable .sms_selection_icon ,
347- R .string .reminder_header_sms_default_title ,
348- R .string .reminder_header_sms_default_text ,
349- new OnClickListener () {
350- @ Override
351- public void onClick (View v ) {
352- TextSecurePreferences .setPromptedDefaultSmsProvider (getActivity (), true );
353- Intent intent = new Intent (Telephony .Sms .Intents .ACTION_CHANGE_DEFAULT );
354- intent .putExtra (Telephony .Sms .Intents .EXTRA_PACKAGE_NAME , getActivity ().getPackageName ());
355- startActivity (intent );
356- }
357- },
358- new OnClickListener () {
359- @ Override
360- public void onClick (View v ) {
361- TextSecurePreferences .setPromptedDefaultSmsProvider (getActivity (), true );
362- container .setVisibility (View .GONE );
363- }
364- });
365- container .setVisibility (View .VISIBLE );
366- }
367-
368- private void showSystemSmsImportReminder () {
369- final ViewGroup container = (ViewGroup ) reminderView .findViewById (R .id .container );
370-
371- setReminderData (R .drawable .sms_system_import_icon ,
372- R .string .reminder_header_sms_import_title ,
373- R .string .reminder_header_sms_import_text ,
374- new OnClickListener () {
375- @ Override
376- public void onClick (View v ) {
377- Intent intent = new Intent (getActivity (), ApplicationMigrationService .class );
378- intent .setAction (ApplicationMigrationService .MIGRATE_DATABASE );
379- intent .putExtra ("master_secret" , masterSecret );
380- getActivity ().startService (intent );
381-
382- Intent nextIntent = new Intent (getActivity (), ConversationListActivity .class );
383- intent .putExtra ("master_secret" , masterSecret );
384-
385- Intent activityIntent = new Intent (getActivity (), DatabaseMigrationActivity .class );
386- activityIntent .putExtra ("master_secret" , masterSecret );
387- activityIntent .putExtra ("next_intent" , nextIntent );
388- getActivity ().startActivity (activityIntent );
389- }
390- },
391- new OnClickListener () {
392- @ Override
393- public void onClick (View v ) {
394- ApplicationMigrationService .setDatabaseImported (getActivity ());
395- container .setVisibility (View .GONE );
396- }
397- });
398- container .setVisibility (View .VISIBLE );
399- }
400-
401- private void setReminderData (int iconResId , int titleResId , int textResId , OnClickListener okListener , OnClickListener cancelListener ) {
402- final ImageButton cancel = (ImageButton ) reminderView .findViewById (R .id .cancel );
403- final Button ok = (Button ) reminderView .findViewById (R .id .ok );
404- final TextView title = (TextView ) reminderView .findViewById (R .id .reminder_title );
405- final TextView text = (TextView ) reminderView .findViewById (R .id .reminder_text );
406- final ImageView icon = (ImageView ) reminderView .findViewById (R .id .icon );
407-
408- icon .setImageResource (iconResId );
409- title .setText (titleResId );
410- text .setText (textResId );
411- ok .setOnClickListener (okListener );
412- cancel .setOnClickListener (cancelListener );
413- }
414-
415332}
416333
417334
0 commit comments