zoukankan      html  css  js  c++  java
  • 团队冲刺第二阶段08

    今天对闹钟的提醒功能等进行了完善,继续解决之前的问题:

    public class SnoozeActivity extends AppCompatActivity implements OnReminderPickedListener {
    
      private Note note;
      private Note[] notes;
    
      public static void setNextRecurrentReminder(Note note) {
        if (!TextUtils.isEmpty(note.getRecurrenceRule())) {
          long nextReminder = RecurrenceHelper.nextReminderFromRecurrenceRule(Long.parseLong(note.getAlarm()), note
              .getRecurrenceRule());
          if (nextReminder > 0) {
            updateNoteReminder(nextReminder, note, true);
          }
        } else {
          new SaveNoteTask(false).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, note);
        }
      }
    
      private static void updateNoteReminder(long reminder, Note note) {
        updateNoteReminder(reminder, note, false);
      }
    
      private static void updateNoteReminder(long reminder, Note noteToUpdate, boolean updateNote) {
        if (updateNote) {
          noteToUpdate.setAlarm(reminder);
          new SaveNoteTask(false).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, noteToUpdate);
        } else {
          ReminderHelper.addReminder(OmniNotes.getAppContext(), noteToUpdate, reminder);
          ReminderHelper.showReminderMessage(noteToUpdate.getAlarm());
        }
      }
    
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        if (getIntent().getParcelableExtra(INTENT_NOTE) != null) {
          note = getIntent().getParcelableExtra(INTENT_NOTE);
          manageNotification(getSharedPreferences(PREFS_NAME, MODE_MULTI_PROCESS));
        } else {
          Object[] notesObjs = (Object[]) getIntent().getExtras().get(INTENT_NOTE);
          notes = Arrays.copyOf(notesObjs, notesObjs.length, Note[].class);
          postpone(getSharedPreferences(PREFS_NAME, MODE_MULTI_PROCESS), DateUtils.getNextMinute(), null);
        }
      }
    
      private void manageNotification(SharedPreferences prefs) {
        if (ACTION_DISMISS.equals(getIntent().getAction())) {
          setNextRecurrentReminder(note);
          finish();
        } else if (ACTION_SNOOZE.equals(getIntent().getAction())) {
          String snoozeDelay = prefs.getString("settings_notification_snooze_delay", PREF_SNOOZE_DEFAULT);
          long newReminder = Calendar.getInstance().getTimeInMillis() + Integer.parseInt(snoozeDelay) * 60 * 1000;
          updateNoteReminder(newReminder, note);
          finish();
        } else if (ACTION_POSTPONE.equals(getIntent().getAction())) {
          postpone(prefs, Long.parseLong(note.getAlarm()), note.getRecurrenceRule());
        } else {
          Intent intent = new Intent(this, MainActivity.class);
          intent.putExtra(INTENT_KEY, note.get_id());
          intent.setAction(ACTION_NOTIFICATION_CLICK);
          startActivity(intent);
          finish();
        }
        removeNotification(note);
      }
    
      private void postpone(SharedPreferences prefs, Long alarm, String recurrenceRule) {
        ReminderPickers reminderPicker = new ReminderPickers(this, this);
        reminderPicker.pick(alarm, recurrenceRule);
      }
    
      private void removeNotification(Note note) {
        NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        manager.cancel(String.valueOf(note.get_id()), 0);
      }
    
      @Override
      public void onReminderPicked(long reminder) {
        if (note != null) {
          note.setAlarm(reminder);
        } else {
          for (Note currentNote : notes) {
            currentNote.setAlarm(reminder);
          }
        }
      }
    
      @Override
      public void onRecurrenceReminderPicked(String recurrenceRule) {
        if (note != null) {
          note.setRecurrenceRule(recurrenceRule);
          setNextRecurrentReminder(note);
        } else {
          for (Note processedNotes : notes) {
            processedNotes.setRecurrenceRule(recurrenceRule);
            setNextRecurrentReminder(processedNotes);
          }
          setResult(RESULT_OK, getIntent());
        }
        finish();
      }
    
    }
    

      

  • 相关阅读:
    String.format in JavaScript
    dojo/domReady! 中感叹号的作用
    文本三剑客之sed的用法
    文本三剑客之grep的用法
    通配符与特殊符号
    文件属性信息
    文件属性及find命令总结
    linux系统常用命令
    系统优化
    vim编辑器 与etc目录
  • 原文地址:https://www.cnblogs.com/cfypd/p/13088009.html
Copyright © 2011-2022 走看看