@Override
  public void onBackPressed() {
    // If the note has been deleted, just return
    if (IsDeleted) {
      setResult(RESULT_CANCELED);
      finish();
      return;
    }

    // Save it to original file
    HelperFunctions.SaveBmpPicture(ContentView.getFingerPaint(), EditOneNote.NoteFilePath);
    // Update database record
    NotesDb.UpdateOneNote(EditOneNote);

    // Update the specific alarm if user has changed the notify time
    if (!Pre_UseNotifyTime.equals(EditOneNote.Use_NotifyTime)) {
      // From Y(use notify) to N(don't use notify), User cancels alarm
      if (EditOneNote.Use_NotifyTime.equals(ProjectConst.No)) {
        Log.d(ProjectConst.TAG, "EditNoteActivity: delete alarm");
        Alarms.DeleteOneAlarm(this, EditOneNote.NoteRowId);
      }
      // From N(don't use notify) to Y(use notify), add one alarm
      if (EditOneNote.Use_NotifyTime.equals(ProjectConst.Yes)) {
        Log.d(ProjectConst.TAG, "EditNoteActivity: add alarm");
        NotesDb.UpdateNoteNotifyRingTime(EditOneNote.NoteRowId, EditOneNote.NotifyTime);
        Alarms.AddOneAlarm(this);
      }
    } else {
      // User changes the notify time
      if (EditOneNote.Use_NotifyTime.equals(ProjectConst.Yes)
          && HelperFunctions.CmpDatePrefix2(Pre_NotifyTime, EditOneNote.NotifyTime) != 0) {
        Log.d(ProjectConst.TAG, "EditNoteActivity: update alarm");
        NotesDb.UpdateNoteNotifyRingTime(EditOneNote.NoteRowId, EditOneNote.NotifyTime);
        Alarms.UpdateOneAlarm(this, EditOneNote.NoteRowId);
      }
    }

    // Refresh widget note list
    HelperFunctions.RefreshWidgetNoteList(this, NotesDb.GetAllNotes());
    // Refresh 1x1 widget
    if (EditOneNote.WidgetId != 0)
      HelperFunctions.Refresh1x1Widget(
          this,
          EditOneNote.WidgetId,
          EditOneNote.NoteTitle,
          EditOneNote.NoteRowId,
          EditOneNote.DrawableResIdx,
          EditOneNote.Password.length() > 0,
          EditOneNote.NoteType);
    // Show toast to notify user settings have been saved
    Toast.makeText(this, getString(R.string.notesavingtip), Toast.LENGTH_SHORT).show();
    // Return to main activity
    Intent ReturnBackData = new Intent();
    ReturnBackData.putExtra(OneNote.KEY_TITLE, EditOneNote.NoteTitle);
    ReturnBackData.putExtra(OneNote.KEY_INDEX, EditOneNote.PosIdx);
    ReturnBackData.putExtra(OneNote.KEY_DRAWABLE_ID, EditOneNote.DrawableResIdx);
    setResult(RESULT_OK, ReturnBackData);
    finish();
  }