You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
java/ui/NoteEditActivity.java

1061 lines
38 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/*
* Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.micode.notes.ui;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.AlertDialog;
import android.app.PendingIntent;
import android.app.SearchManager;
import android.appwidget.AppWidgetManager;
import android.content.ContentUris;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Paint;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.TextUtils;
import android.text.format.DateUtils;
import android.text.style.BackgroundColorSpan;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import net.micode.notes.R;
import net.micode.notes.data.Notes;
import net.micode.notes.data.Notes.TextNote;
import net.micode.notes.model.WorkingNote;
import net.micode.notes.model.WorkingNote.NoteSettingChangedListener;
import net.micode.notes.tool.DataUtils;
import net.micode.notes.tool.ResourceParser;
import net.micode.notes.tool.ResourceParser.TextAppearanceResources;
import net.micode.notes.ui.DateTimePickerDialog.OnDateTimeSetListener;
import net.micode.notes.ui.NoteEditText.OnTextViewChangeListener;
import net.micode.notes.widget.NoteWidgetProvider_2x;
import net.micode.notes.widget.NoteWidgetProvider_4x;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* NoteEditActivity <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>̳<EFBFBD><CCB3><EFBFBD> Activity <20><><EFBFBD><EFBFBD><E0A3AC><EFBFBD><EFBFBD><EFBFBD>ڱ༭<DAB1>ʼDZ<CABC><C7B1><EFBFBD>Ŀ<EFBFBD><C4BF>
*/
public class NoteEditActivity extends Activity implements OnClickListener, NoteSettingChangedListener, OnTextViewChangeListener {
/**
* ͷ<><CDB7><EFBFBD><EFBFBD>ͼ<EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0A3AC><EFBFBD>ڴ洢 TextView <20><> ImageView <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
private class HeadViewHolder {
/**
* <20>޸<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> TextView<65><77>
*/
public TextView tvModified;
/**
* <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD> ImageView<65><77>
*/
public ImageView ivAlertIcon;
/**
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD> TextView<65><77>
*/
public TextView tvAlertDate;
/**
* <20><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB> ImageButton<6F><6E>
*/
public ImageView ibSetBgColor;
}
/**
* <20><>̬<EFBFBD>ı<EFBFBD><C4B1><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ťӳ<C5A5><EFBFBD><E4A3AC><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD>Դ ID ӳ<><EFBFBD><E4B5BD>ɫֵ<C9AB><D6B5>
*/
private static final Map<Integer, Integer> sBgSelectorBtnsMap = new HashMap<Integer, Integer>();
static {
// <20><>ʼ<EFBFBD><CABC>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD>ϵ
sBgSelectorBtnsMap.put(R.id.iv_bg_yellow, ResourceParser.YELLOW);
sBgSelectorBtnsMap.put(R.id.iv_bg_red, ResourceParser.RED);
sBgSelectorBtnsMap.put(R.id.iv_bg_blue, ResourceParser.BLUE);
sBgSelectorBtnsMap.put(R.id.iv_bg_green, ResourceParser.GREEN);
sBgSelectorBtnsMap.put(R.id.iv_bg_white, ResourceParser.WHITE);
}
/**
* <20><>̬<EFBFBD>ı<EFBFBD><C4B1><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>״̬ӳ<CCAC><EFBFBD><E4A3AC><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD>ɫֵӳ<D6B5>ѡ<E4B5BD><D1A1>״̬<D7B4><CCAC><EFBFBD><EFBFBD>Դ ID<49><44>
*/
private static final Map<Integer, Integer> sBgSelectorSelectionMap = new HashMap<Integer, Integer>();
static {
// <20><>ʼ<EFBFBD><CABC>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD>ϵ
sBgSelectorSelectionMap.put(ResourceParser.YELLOW, R.id.iv_bg_yellow_select);
sBgSelectorSelectionMap.put(ResourceParser.RED, R.id.iv_bg_red_select);
sBgSelectorSelectionMap.put(ResourceParser.BLUE, R.id.iv_bg_blue_select);
sBgSelectorSelectionMap.put(ResourceParser.GREEN, R.id.iv_bg_green_select);
sBgSelectorSelectionMap.put(ResourceParser.WHITE, R.id.iv_bg_white_select);
}
/**
* <20><>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1>ťӳ<C5A5><EFBFBD><E4A3AC><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD>Դ ID ӳ<><EFBFBD><E4B5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
private static final Map<Integer, Integer> sFontSizeBtnsMap = new HashMap<Integer, Integer>();
static {
// <20><>ʼ<EFBFBD><CABC>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD>ϵ
sFontSizeBtnsMap.put(R.id.ll_font_large, ResourceParser.TEXT_LARGE);
sFontSizeBtnsMap.put(R.id.ll_font_small, ResourceParser.TEXT_SMALL);
sFontSizeBtnsMap.put(R.id.ll_font_normal, ResourceParser.TEXT_MEDIUM);
sFontSizeBtnsMap.put(R.id.ll_font_super, ResourceParser.TEXT_SUPER);
}
/**
* <20><>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>״̬ӳ<CCAC><EFBFBD><E4A3AC><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>ӳ<EFBFBD>ѡ<E4B5BD><D1A1>״̬<D7B4><CCAC><EFBFBD><EFBFBD>Դ ID<49><44>
*/
private static final Map<Integer, Integer> sFontSelectorSelectionMap = new HashMap<Integer, Integer>();
static {
// <20><>ʼ<EFBFBD><CABC>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD>ϵ
sFontSelectorSelectionMap.put(ResourceParser.TEXT_LARGE, R.id.iv_large_select);
sFontSelectorSelectionMap.put(ResourceParser.TEXT_SMALL, R.id.iv_small_select);
sFontSelectorSelectionMap.put(ResourceParser.TEXT_MEDIUM, R.id.iv_medium_select);
sFontSelectorSelectionMap.put(ResourceParser.TEXT_SUPER, R.id.iv_super_select);
}
/**
* <20><>־<EFBFBD><D6BE><EFBFBD>ǡ<EFBFBD>
*/
private static final String TAG = "NoteEditActivity";
/**
* ͷ<><CDB7><EFBFBD><EFBFBD>ͼ<EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD>ڿ<EFBFBD><DABF>ٷ<EFBFBD><D9B7><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD> TextView <20><> ImageView<65><77>
*/
private HeadViewHolder mNoteHeaderHolder;
/**
* ͷ<><CDB7><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>
*/
private View mHeadViewPanel;
/**
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫѡ<C9AB><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
private View mNoteBgColorSelector;
/**
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сѡ<D0A1><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
private View mFontSizeSelector;
/**
* <20>ʼDZ<CABC><C7B1><EFBFBD>Ŀ<EFBFBD>ı<C4B1><E0BCAD><EFBFBD><EFBFBD>
*/
private EditText mNoteEditor;
/**
* <20>ʼDZ<CABC><C7B1><EFBFBD>Ŀ<EFBFBD><EFBFBD><E0BCAD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
private View mNoteEditorPanel;
/**
* <20><><EFBFBD>ڱ༭<DAB1>ıʼDZ<CABC><C7B1><EFBFBD>Ŀ<EFBFBD><C4BF>
*/
private WorkingNote mWorkingNote;
/**
* <20><><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD><EFBFBD>á<EFBFBD>
*/
private SharedPreferences mSharedPrefs;
/**
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С ID<49><44>
*/
private int mFontSizeId;
/**
* <20><><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
*/
private static final String PREFERENCE_FONT_SIZE = "pref_font_size";
/**
* <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󳤶ȡ<F3B3A4B6>
*/
private static final int SHORTCUT_ICON_TITLE_MAX_LEN = 10;
/**
* <20><><EFBFBD><EFBFBD>״̬<D7B4>ı<EFBFBD><C4B1>ǡ<EFBFBD>
*/
public static final String TAG_CHECKED = String.valueOf('\u221A');
/**
* δ<><CEB4><EFBFBD><EFBFBD>״̬<D7B4>ı<EFBFBD><C4B1>ǡ<EFBFBD>
*/
public static final String TAG_UNCHECKED = String.valueOf('\u25A1');
/**
* <20><><EFBFBD>ڱ༭<DAB1>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2>֡<EFBFBD>
*/
private LinearLayout mEditTextList;
/**
* <20>û<EFBFBD><C3BB>IJ<EFBFBD>ѯ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
*/
private String mUserQuery;
/**
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD>û<EFBFBD><C3BB><EFBFBD>ѯ<EFBFBD><D1AF>
*/
private Pattern mPattern;
/**
* Activity <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻص<DABB><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param savedInstanceState <20><><EFBFBD><EFBFBD> Activity ֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD>ٲ<EFBFBD><D9B2>ؽ<EFBFBD><D8BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Bundle <20><><EFBFBD><EFBFBD>֮ǰ<D6AE><C7B0>״̬<D7B4><CCAC>Ϣ<EFBFBD><CFA2>
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.note_edit);
// <20><><EFBFBD><EFBFBD> Intent û<>г<EFBFBD>ʼ<EFBFBD><CABC> Activity ״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD> Activity
if (!initActivityState(getIntent())) {
finish();
return;
}
initResources();
}
/**
* Activity <20><><EFBFBD><EFBFBD><EFBFBD>ٺ<EFBFBD><D9BA><EFBFBD><EFBFBD>´<EFBFBD><C2B4><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻص<DABB><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param savedInstanceState <20><><EFBFBD><EFBFBD> Activity ֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD>ٲ<EFBFBD><D9B2>ؽ<EFBFBD><D8BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Bundle <20><><EFBFBD><EFBFBD>֮ǰ<D6AE><C7B0>״̬<D7B4><CCAC>Ϣ<EFBFBD><CFA2>
*/
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
// <20><><EFBFBD><EFBFBD> Intent û<>г<EFBFBD>ʼ<EFBFBD><CABC> Activity ״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD> Activity
if (!initActivityState(new Intent(Intent.ACTION_VIEW))) {
finish();
return;
}
Log.d(TAG, "Restoring from killed activity");
}
/**
* <20><>ʼ<EFBFBD><CABC> Activity <20><>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4>ݵ<EFBFBD> Intent <20><><EFBFBD><EFBFBD><EFBFBD>DZ༭<C7B1><E0BCAD><EFBFBD>еıʼDZ<CABC><C7B1><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><C2BD>ʼDZ<CABC><C7B1><EFBFBD>Ŀ<EFBFBD><C4BF>
*
* @param intent <20><><EFBFBD><EFBFBD> Activity <20><> Intent<6E><74>
* @return <20><><EFBFBD><EFBFBD> Activity ״̬<D7B4>ɹ<EFBFBD><C9B9><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> true<75><65><EFBFBD><EFBFBD><EFBFBD>򷵻<EFBFBD> false<73><65>
*/
private boolean initActivityState(Intent intent) {
// <20><>ʼ<EFBFBD><CABC> WorkingNote <20><><EFBFBD><EFBFBD>Ϊ null
mWorkingNote = null;
// <20><><EFBFBD><EFBFBD> Intent <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD> ACTION_VIEW <20><><EFBFBD><EFBFBD>˱ʼDZ<CABC><C7B1><EFBFBD>Ŀ<EFBFBD><C4BF> ID
if (TextUtils.equals(Intent.ACTION_VIEW, intent.getAction())) {
long noteId = intent.getLongExtra(Intent.EXTRA_UID, 0);
mUserQuery = "";
// <20><><EFBFBD><EFBFBD> Intent <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD> SearchManager.EXTRA_DATA_KEY<45><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (intent.hasExtra(SearchManager.EXTRA_DATA_KEY)) {
noteId = Long.parseLong(intent.getStringExtra(SearchManager.EXTRA_DATA_KEY));
mUserQuery = intent.getStringExtra(SearchManager.USER_QUERY);
}
// <20><><EFBFBD><EFBFBD><EFBFBD>ʼDZ<CABC><C7B1><EFBFBD>Ŀ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
if (!DataUtils.visibleInNoteDatabase(getContentResolver(), noteId, Notes.TYPE_NOTE)) {
// <20>ʼDZ<CABC><C7B1><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>ʼDZ<CABC><C7B1>б<EFBFBD> Activity
Intent jump = new Intent(this, NotesListActivity.class);
startActivity(jump);
// <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
showToast(R.string.error_note_not_exist);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ Activity
finish();
return false;
} else {
// <20>ʼDZ<CABC><C7B1><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD> WorkingNote <20><><EFBFBD><EFBFBD>
mWorkingNote = WorkingNote.load(this, noteId);
if (mWorkingNote == null) {
// <20><><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>¼<EFBFBD><C2BC>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Activity
Log.e(TAG, "load note failed with note id" + noteId);
finish();
return false;
}
}
// <20><><EFBFBD>ô<EFBFBD><C3B4>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN
| WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
} else if (TextUtils.equals(Intent.ACTION_INSERT_OR_EDIT, intent.getAction())) {
// <20><><EFBFBD><EFBFBD> Intent <20>Ƿ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>µıʼDZ<CABC><C7B1><EFBFBD>Ŀ
long folderId = intent.getLongExtra(Notes.INTENT_EXTRA_FOLDER_ID, 0);
int widgetId = intent.getIntExtra(Notes.INTENT_EXTRA_WIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID);
int widgetType = intent.getIntExtra(Notes.INTENT_EXTRA_WIDGET_TYPE,
Notes.TYPE_WIDGET_INVALIDE);
int bgResId = intent.getIntExtra(Notes.INTENT_EXTRA_BACKGROUND_ID,
ResourceParser.getDefaultBgId(this));
// <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ǵ绰ͨ<E7BBB0><CDA8><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱʼDZ<CABC><C7B1><EFBFBD>Ŀ
String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
long callDate = intent.getLongExtra(Notes.INTENT_EXTRA_CALL_DATE, 0);
if (callDate != 0 && phoneNumber != null) {
if (TextUtils.isEmpty(phoneNumber)) {
// ͨ<><CDA8><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>Ϊ<EFBFBD>գ<EFBFBD><D5A3><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
Log.w(TAG, "The call record number is null");
} else {
long noteId = DataUtils.getNoteIdByPhoneNumberAndCallDate(getContentResolver(),
phoneNumber, callDate);
if (noteId > 0) {
// ͨ<><CDA8><EFBFBD><EFBFBD>¼<EFBFBD>Ѵ<EFBFBD><D1B4>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD> WorkingNote <20><><EFBFBD><EFBFBD>
mWorkingNote = WorkingNote.load(this, noteId);
if (mWorkingNote == null) {
// <20><><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Activity
Log.e(TAG, "load call note failed with note id" + noteId);
finish();
return false;
}
} else {
// ͨ<><CDA8><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µıʼDZ<CABC><C7B1><EFBFBD>Ŀ
mWorkingNote = WorkingNote.createEmptyNote(this, folderId, widgetId,
widgetType, bgResId);
mWorkingNote.convertToCallNote(phoneNumber, callDate);
}
}
} else {
// <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µıʼDZ<CABC><C7B1><EFBFBD>Ŀ
mWorkingNote = WorkingNote.createEmptyNote(this, folderId, widgetId, widgetType,
bgResId);
}
// <20><><EFBFBD>ô<EFBFBD><C3B4>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE
| WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
} else {
// Intent û<><C3BB>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ȷ<EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ֧<D3A6><D6A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Log.e(TAG, "Intent not specified action, should not support");
finish();
return false;
}
// <20><><EFBFBD><EFBFBD> WorkingNote <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mWorkingNote.setOnSettingStatusChangedListener(this);
return true;
}
/**
* Activity <20>ָ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻص<DABB><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
@Override
protected void onResume() {
super.onResume();
// <20><>ʼ<EFBFBD><CABC><EFBFBD>ʼDZ<CABC><C7B1><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD>ʾ
initNoteScreen();
}
/**
* <20><>ʼ<EFBFBD><CABC><EFBFBD>ʼDZ<CABC><C7B1><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>
*/
private void initNoteScreen() {
// <20><><EFBFBD><EFBFBD><E0BCAD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
mNoteEditor.setTextAppearance(this, TextAppearanceResources
.getTexAppearanceResource(mFontSizeId));
// <20><><EFBFBD><EFBFBD><EFBFBD>ʼDZ<CABC><C7B1><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>ڹ<EFBFBD>ѡ<EFBFBD>б<EFBFBD>ģʽ
if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) {
// <20>л<EFBFBD><D0BB><EFBFBD><EFBFBD>б<EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD>ʹ<EFBFBD>ñʼDZ<CABC><C7B1><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
switchToListMode(mWorkingNote.getContent());
} else {
// <20><><EFBFBD>򣬽<EFBFBD><F2A3ACBD>ʼDZ<CABC><C7B1><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>
mNoteEditor.setText(getHighlightQueryResult(mWorkingNote.getContent(), mUserQuery));
// <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>λ<EFBFBD>õ<EFBFBD><C3B5>ı<EFBFBD>ĩβ
mNoteEditor.setSelection(mNoteEditor.getText().length());
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еı<D0B5><C4B1><EFBFBD><EFBFBD><EFBFBD>ɫѡ<C9AB><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ť
for (Integer id : sBgSelectorSelectionMap.keySet()) {
findViewById(sBgSelectorSelectionMap.get(id)).setVisibility(View.GONE);
}
// <20><><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͱʼDZ<CABC><C7B1><EFBFBD><E0BCAD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5B1B3><EFBFBD><EFBFBD>ɫ
mHeadViewPanel.setBackgroundResource(mWorkingNote.getTitleBgResId());
mNoteEditorPanel.setBackgroundResource(mWorkingNote.getBgColorResId());
// <20><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>
mNoteHeaderHolder.tvModified.setText(DateUtils.formatDateTime(this,
mWorkingNote.getModifiedDate(), DateUtils.FORMAT_SHOW_DATE
| DateUtils.FORMAT_NUMERIC_DATE | DateUtils.FORMAT_SHOW_TIME
| DateUtils.FORMAT_SHOW_YEAR));
/**
* TODO: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѵIJ˵<C4B2><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DateTimePicker <20><>δ׼<CEB4><D7BC><EFBFBD>ã<EFBFBD><C3A3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
showAlertHeader();
}
/**
* <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>
*/
private void showAlertHeader() {
// <20><><EFBFBD><EFBFBD><EFBFBD>ʼDZ<CABC><C7B1><EFBFBD>Ŀ<EFBFBD>ж<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
if (mWorkingNote.hasClockAlert()) {
// <20><>ȡ<EFBFBD><C8A1>ǰʱ<C7B0><CAB1>
long time = System.currentTimeMillis();
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰʱ<C7B0><CAB1><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
if (time > mWorkingNote.getAlertDate()) {
// <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9>ڵ<EFBFBD><DAB5>ı<EFBFBD>
mNoteHeaderHolder.tvAlertDate.setText(R.string.note_alert_expired);
} else {
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
mNoteHeaderHolder.tvAlertDate.setText(DateUtils.getRelativeTimeSpanString(
mWorkingNote.getAlertDate(), time, DateUtils.MINUTE_IN_MILLIS));
}
// <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD>ͼ<EFBFBD><CDBC>
mNoteHeaderHolder.tvAlertDate.setVisibility(View.VISIBLE);
mNoteHeaderHolder.ivAlertIcon.setVisibility(View.VISIBLE);
} else {
// <20><><EFBFBD><EFBFBD>û<EFBFBD>ж<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
mNoteHeaderHolder.tvAlertDate.setVisibility(View.GONE);
mNoteHeaderHolder.ivAlertIcon.setVisibility(View.GONE);
}
}
/**
* <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD> Intent <20><><EFBFBD><EFBFBD> Activity<74><79>
*/
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
// <20><><EFBFBD>³<EFBFBD>ʼ<EFBFBD><CABC> Activity ״̬
initActivityState(intent);
}
/**
* Activity <20><><EFBFBD><EFBFBD>״̬ʱ<CCAC><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻص<DABB><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
// <20><><EFBFBD><EFBFBD><EFBFBD>±ʼDZ<CABC><C7B1><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD>ȱ<EFBFBD><C8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ID
if (!mWorkingNote.existInDatabase()) {
saveNote();
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڱ༭<DAB1>ıʼDZ<CABC><C7B1><EFBFBD>Ŀ<EFBFBD><C4BF> ID
outState.putLong(Intent.EXTRA_UID, mWorkingNote.getNoteId());
Log.d(TAG, "Save working note id: " + mWorkingNote.getNoteId() + " onSaveInstanceState");
}
/**
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD><C6B1><EFBFBD><EFBFBD><EFBFBD>ɫѡ<C9AB><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сѡ<D0A1><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>
*/
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (mNoteBgColorSelector.getVisibility() == View.VISIBLE
&& !inRangeOfView(mNoteBgColorSelector, ev)) {
mNoteBgColorSelector.setVisibility(View.GONE);
return true;
}
if (mFontSizeSelector.getVisibility() == View.VISIBLE
&& !inRangeOfView(mFontSizeSelector, ev)) {
mFontSizeSelector.setVisibility(View.GONE);
return true;
}
return super.dispatchTouchEvent(ev);
}
/**
* <20>жϴ<D0B6><CFB4><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>Ƿ<EFBFBD><C7B7><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>Χ<EFBFBD>ڡ<EFBFBD>
*/
private boolean inRangeOfView(View view, MotionEvent ev) {
int []location = new int[2];
view.getLocationOnScreen(location);
int x = location[0];
int y = location[1];
// <20>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>Χ<EFBFBD><CEA7>
if (ev.getX() < x || ev.getX() > (x + view.getWidth()) || ev.getY() < y || ev.getY() > (y + view.getHeight())) {
return false;
}
return true;
}
/**
* <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
*/
private void initResources() {
// <20>ҵ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>塢ͷ<E5A1A2><CDB7><EFBFBD><EFBFBD> TextView <20><> ImageView
mHeadViewPanel = findViewById(R.id.note_title);
mNoteHeaderHolder = new HeadViewHolder();
mNoteHeaderHolder.tvModified = (TextView) findViewById(R.id.tv_modified_date);
mNoteHeaderHolder.ivAlertIcon = (ImageView) findViewById(R.id.iv_alert_icon);
mNoteHeaderHolder.tvAlertDate = (TextView) findViewById(R.id.tv_alert_date);
mNoteHeaderHolder.ibSetBgColor = (ImageView) findViewById(R.id.btn_set_bg_color);
mNoteHeaderHolder.ibSetBgColor.setOnClickListener(this);
mNoteEditor = (EditText) findViewById(R.id.note_edit_view);
mNoteEditorPanel = findViewById(R.id.sv_note_edit);
mNoteBgColorSelector = findViewById(R.id.note_bg_color_selector);
// Ϊ<><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫѡ<C9AB><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (int id : sBgSelectorBtnsMap.keySet()) {
ImageView iv = (ImageView) findViewById(id);
iv.setOnClickListener(this);
}
mFontSizeSelector = findViewById(R.id.font_size_selector);
// Ϊ<><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сѡ<D0A1><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (int id : sFontSizeBtnsMap.keySet()) {
View view = findViewById(id);
view.setOnClickListener(this);
}
mSharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
mFontSizeId = mSharedPrefs.getInt(PREFERENCE_FONT_SIZE, ResourceParser.BG_DEFAULT_FONT_SIZE);
/**
* HACKME: <20>޸<EFBFBD><DEB8><EFBFBD><E6B4A2>Դ ID <20>ڹ<EFBFBD><DAB9><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD>е<EFBFBD> bug<75><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1>
*/
if (mFontSizeId >= TextAppearanceResources.getResourcesSize()) { mFontSizeId = ResourceParser.BG_DEFAULT_FONT_SIZE;
}
mEditTextList = (LinearLayout) findViewById(R.id.note_edit_list);
}
/**
* Activity <20><>ͣʱ<CDA3><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻص<DABB><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
@Override
protected void onPause() {
super.onPause();
// <20><><EFBFBD><EFBFBD><EFBFBD>ʼDZ<CABC><C7B1><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (saveNote()) {
Log.d(TAG, "Note data was saved with length:" + mWorkingNote.getContent().length());
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
clearSettingState();
}
/**
* <20><><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>µıʼ<C4B1><CABC><EFBFBD><EFBFBD>ݡ<EFBFBD>
*/
private void updateWidget() {
Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
if (mWorkingNote.getWidgetType() == Notes.TYPE_WIDGET_2X) {
intent.setClass(this, NoteWidgetProvider_2x.class);
} else if (mWorkingNote.getWidgetType() == Notes.TYPE_WIDGET_4X) {
intent.setClass(this, NoteWidgetProvider_4x.class);
} else {
Log.e(TAG, "Unsupported widget type");
return;
}
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[] {
mWorkingNote.getWidgetId()
});
sendBroadcast(intent);
setResult(RESULT_OK, intent);
}
/**
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼʱ<CDBC><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC> ID <20><><EFBFBD>в<EFBFBD>ͬ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>
*/
public void onClick(View v) {
int id = v.getId();
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB>ť
if (id == R.id.btn_set_bg_color) {
// <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫѡ<C9AB><D1A1><EFBFBD><EFBFBD>
mNoteBgColorSelector.setVisibility(View.VISIBLE);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB>ť
findViewById(sBgSelectorSelectionMap.get(mWorkingNote.getBgColorId())).setVisibility(
View.GONE);
} else if (sBgSelectorBtnsMap.containsKey(id)) {
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB>ť
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB>ť
findViewById(sBgSelectorSelectionMap.get(mWorkingNote.getBgColorId())).setVisibility(
View.GONE);
// <20><><EFBFBD><EFBFBD><EFBFBD>µı<C2B5><C4B1><EFBFBD><EFBFBD><EFBFBD>ɫ ID
mWorkingNote.setBgColorId(sBgSelectorBtnsMap.get(id));
// <20><><EFBFBD>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>ɫѡ<C9AB><D1A1><EFBFBD><EFBFBD>
mNoteBgColorSelector.setVisibility(View.GONE);
} else if (sFontSizeBtnsMap.containsKey(id)) {
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1>ť
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1>ť
findViewById(sFontSelectorSelectionMap.get(mFontSizeId)).setVisibility(
View.GONE);
// <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С ID
mFontSizeId = sFontSizeBtnsMap.get(id);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>
mSharedPrefs.edit().putInt(PREFERENCE_FONT_SIZE, mFontSizeId).commit();
// <20><>ʾ<EFBFBD><CABE>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1>ť
findViewById(sFontSelectorSelectionMap.get(mFontSizeId)).setVisibility(
View.VISIBLE);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>б<EFBFBD>ģʽ
if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) {
getWorkingText();
switchToListMode(mWorkingNote.getContent());
} else {
// <20><><EFBFBD>ñ༭<C3B1><E0BCAD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD>ʽΪ<CABD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
mNoteEditor.setTextAppearance(this,
TextAppearanceResources.getTexAppearanceResource(mFontSizeId));
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сѡ<D0A1><D1A1><EFBFBD><EFBFBD>
mFontSizeSelector.setVisibility(View.GONE);
}
}
/**
* <20><><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ذ<EFBFBD>ťʱ<C5A5><CAB1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
*/
@Override
public void onBackPressed() {
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>з<EFBFBD><D0B7>ز<EFBFBD><D8B2><EFBFBD>
if (clearSettingState()) {
return;
}
// <20><><EFBFBD><EFBFBD><EFBFBD>ʼDZ<CABC><C7B1><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
saveNote();
// ִ<>и<EFBFBD><D0B8><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Activity
super.onBackPressed();
}
/**
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>ɫѡ<C9AB><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сѡ<D0A1><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
private boolean clearSettingState() {
if (mNoteBgColorSelector.getVisibility() == View.VISIBLE) {
mNoteBgColorSelector.setVisibility(View.GONE);
return true;
} else if (mFontSizeSelector.getVisibility() == View.VISIBLE) {
mFontSizeSelector.setVisibility(View.GONE);
return true;
}
return false;
}
/**
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD>ı<EFBFBD>ʱ<EFBFBD>Ļص<C4BB><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
public void onBackgroundColorChanged() {
// <20><>ʾ<EFBFBD><CABE>ѡ<EFBFBD><D1A1><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB>ť
findViewById(sBgSelectorSelectionMap.get(mWorkingNote.getBgColorId())).setVisibility(
View.VISIBLE);
// <20><><EFBFBD>ñ༭<C3B1><E0BCAD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5B1B3><EFBFBD><EFBFBD>ɫ
mNoteEditorPanel.setBackgroundResource(mWorkingNote.getBgColorResId());
mHeadViewPanel.setBackgroundResource(mWorkingNote.getTitleBgResId());
}
/**
* ׼<><D7BC>ѡ<EFBFBD><D1A1><EFBFBD>˵<EFBFBD><CBB5><EFBFBD>
*/
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
if (isFinishing()) {
return true;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
clearSettingState();
// <20><><EFBFBD>ղ˵<D5B2>
menu.clear();
// <20><><EFBFBD>ݱʼDZ<CABC><C7B1><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> ID <20><><EFBFBD>ز<EFBFBD>ͬ<EFBFBD>IJ˵<C4B2><CBB5><EFBFBD>
if (mWorkingNote.getFolderId() == Notes.ID_CALL_RECORD_FOLDER) {
getMenuInflater().inflate(R.menu.call_note_edit, menu);
} else {
getMenuInflater().inflate(R.menu.note_edit, menu);
}
// <20><><EFBFBD>²˵<C2B2><CBB5><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD>
if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) {
menu.findItem(R.id.menu_list_mode).setTitle(R.string.menu_normal_mode);
} else {
menu.findItem(R.id.menu_list_mode).setTitle(R.string.menu_list_mode);
}
// <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ػ<EFBFBD><D8BB><EFBFBD>ʾ<EFBFBD>˵<EFBFBD><CBB5><EFBFBD>
if (mWorkingNote.hasClockAlert()) {
menu.findItem(R.id.menu_alert).setVisible(false);
} else {
menu.findItem(R.id.menu_delete_remind).setVisible(false);
}
return true;
}
/**
* <20><>ѡ<EFBFBD><D1A1><EFBFBD>˵<EFBFBD><CBB5>ѡ<EEB1BB><D1A1>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
*/
/**
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>һ<EFBFBD><D2BB>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ѡ<EFBFBD>
*/
private void setReminder() {
DateTimePickerDialog d = new DateTimePickerDialog(this, System.currentTimeMillis());
d.setOnDateTimeSetListener(new OnDateTimeSetListener() {
public void OnDateTimeSet(AlertDialog dialog, long date) {
mWorkingNote.setAlertDate(date, true);
}
});
d.show();
}
/**
* <20><><EFBFBD>ʼDZ<CABC><C7B1><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><D6A7> ACTION_SEND <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> text/plain <20><><EFBFBD>͵<EFBFBD>Ӧ<EFBFBD>á<EFBFBD>
*/
private void sendTo(Context context, String info) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_TEXT, info);
intent.setType("text/plain");
context.startActivity(intent);
}
/**
* <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>µıʼDZ<CABC><C7B1><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD>ȱ<EFBFBD><C8B1>浱ǰ<E6B5B1><C7B0><EFBFBD>ڱ༭<DAB1>ıʼDZ<CABC><C7B1><EFBFBD>Ŀ<EFBFBD><C4BF>
*/
private void createNewNote() {
// <20><><EFBFBD>ȱ<EFBFBD><C8B1>浱ǰ<E6B5B1><C7B0><EFBFBD>ڱ༭<DAB1>ıʼDZ<CABC><C7B1><EFBFBD>Ŀ
saveNote();
// Ϊ<><CEAA>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>µ<EFBFBD> NoteEditActivity
finish();
Intent intent = new Intent(this, NoteEditActivity.class);
intent.setAction(Intent.ACTION_INSERT_OR_EDIT);
intent.putExtra(Notes.INTENT_EXTRA_FOLDER_ID, mWorkingNote.getFolderId());
startActivity(intent);
}
/**
* ɾ<><C9BE><EFBFBD><EFBFBD>ǰ<EFBFBD>ıʼDZ<CABC><C7B1><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵĻ<DAB5><C4BB><EFBFBD>
*/
private void deleteCurrentNote() {
if (mWorkingNote.existInDatabase()) {
HashSet<Long> ids = new HashSet<Long>();
long id = mWorkingNote.getNoteId();
if (id != Notes.ID_ROOT_FOLDER) {
ids.add(id);
} else {
Log.d(TAG, "Wrong note id, should not happen");
}
if (!isSyncMode()) {
if (!DataUtils.batchDeleteNotes(getContentResolver(), ids)) {
Log.e(TAG, "Delete Note error");
}
} else {
if (!DataUtils.batchMoveToFolder(getContentResolver(), ids, Notes.ID_TRASH_FOLER)) {
Log.e(TAG, "Move notes to trash folder error, should not happens");
}
}
}
mWorkingNote.markDeleted(true);
}
/**
* <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC>ģʽ<C4A3><CABD>
*/
private boolean isSyncMode() {
return NotesPreferenceActivity.getSyncAccountName(this).trim().length() > 0;
}
/**
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ı<EFBFBD>ʱ<EFBFBD>Ļص<C4BB><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD>ıʼDZ<CABC><C7B1><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><E4A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ȱ<EFBFBD><C8B1><EFBFBD><EFBFBD>ʼDZ<CABC><C7B1><EFBFBD>Ŀ<EFBFBD><C4BF>
*/
public void onClockAlertChanged(long date, boolean set) {
if (!mWorkingNote.existInDatabase()) {
saveNote();
}
if (mWorkingNote.getNoteId() > 0) {
Intent intent = new Intent(this, AlarmReceiver.class);
intent.setData(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, mWorkingNote.getNoteId()));
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
AlarmManager alarmManager = ((AlarmManager) getSystemService(ALARM_SERVICE));
showAlertHeader();
if (!set) {
alarmManager.cancel(pendingIntent);
} else {
alarmManager.set(AlarmManager.RTC_WAKEUP, date, pendingIntent);
}
} else {
// <20><><EFBFBD><EFBFBD><EFBFBD>ʼDZ<CABC><C7B1><EFBFBD>Ŀδ<C4BF><CEB4><EFBFBD><EFBFBD><E6A3AC><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Log.e(TAG, "Clock alert setting error");
showToast(R.string.error_note_empty_for_clock);
}
}
/**
* <20><>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸı<DDB8>ʱ<EFBFBD>Ļص<C4BB><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
public void onWidgetChanged() {
updateWidget();
}
/**
* <20><><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD>ɾ<EFBFBD><C9BE>ʱ<EFBFBD>Ļص<C4BB><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
public void onEditTextDelete(int index, String text) {
int childCount = mEditTextList.getChildCount();
if (childCount == 1) {
return;
}
for (int i = index + 1; i < childCount; i++) {
((NoteEditText) mEditTextList.getChildAt(i).findViewById(R.id.et_edit_text))
.setIndex(i - 1);
}
mEditTextList.removeViewAt(index);
NoteEditText edit = null;
if (index == 0) {
edit = (NoteEditText) mEditTextList.getChildAt(0).findViewById(
R.id.et_edit_text);
} else {
edit = (NoteEditText) mEditTextList.getChildAt(index - 1).findViewById(
R.id.et_edit_text);
}
int length = edit.length();
edit.append(text);
edit.requestFocus();
edit.setSelection(length);
}
/**
* <20><><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>Ļص<C4BB><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><>Ӧ<EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5>Լ<EFBFBD><D4BC>
*/
public void onEditTextEnter(int index, String text) {
if (index > mEditTextList.getChildCount()) {
Log.e(TAG, "Index out of mEditTextList boundrary, should not happen");
}
View view = getListItem(text, index);
mEditTextList.addView(view, index);
NoteEditText edit = (NoteEditText) view.findViewById(R.id.et_edit_text);
edit.requestFocus();
edit.setSelection(0);
for (int i = index + 1; i < mEditTextList.getChildCount(); i++) {
((NoteEditText) mEditTextList.getChildAt(i).findViewById(R.id.et_edit_text))
.setIndex(i);
}
}
/**
* <20><><EFBFBD>ʼDZ<CABC><C7B1><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD>б<EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>б<EFBFBD><D0B1>С<EFBFBD>
*/
private void switchToListMode(String text) {
// <20>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD>еı<C4B1>ı<EFBFBD><C4B1><EFBFBD>ͼ
mEditTextList.removeAllViews();
// <20><><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD>з<EFBFBD><D0B7>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
String[] items = text.split("\n");
// <20><>ʼ<EFBFBD><CABC><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>
int index = 0;
// <20><><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EEA3AC><EFBFBD><EFBFBD><EFBFBD>Ϊ<EEB2BB>գ<EFBFBD><D5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5>б<EFBFBD>
for (String item : items) {
if (!TextUtils.isEmpty(item)) {
mEditTextList.addView(getListItem(item, index));
index++;
}
}
// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>յı<C4B1>ı<EFBFBD><C4B1><EFBFBD>ͼ
mEditTextList.addView(getListItem("", index));
// <20>۽<EFBFBD><DBBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>б<EFBFBD><D0B1><EFBFBD>
mEditTextList.getChildAt(index).findViewById(R.id.et_edit_text).requestFocus();
// <20><><EFBFBD>ر༭<D8B1><E0BCAD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>б<EFBFBD>
mNoteEditor.setVisibility(View.GONE);
mEditTextList.setVisibility(View.VISIBLE);
}
/**
* <20><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>ѯ<EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD>ݡ<EFBFBD>
*/
private Spannable getHighlightQueryResult(String fullText, String userQuery) {
SpannableString spannable = new SpannableString(fullText == null ? "" : fullText);
if (!TextUtils.isEmpty(userQuery)) {
mPattern = Pattern.compile(userQuery);
Matcher m = mPattern.matcher(fullText);
int start = 0;
// ƥ<><C6A5><EFBFBD><EFBFBD>ѯ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>ɫ
while (m.find(start)) {
spannable.setSpan(
new BackgroundColorSpan(this.getResources().getColor(
R.color.user_query_highlight)), m.start(), m.end(),
Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
start = m.end();
}
}
return spannable;
}
/**
* <20><>ȡһ<C8A1><D2BB><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
*/
private View getListItem(String item, int index) {
View view = LayoutInflater.from(this).inflate(R.layout.note_edit_list_item, null);
final NoteEditText edit = (NoteEditText) view.findViewById(R.id.et_edit_text);
edit.setTextAppearance(this, TextAppearanceResources.getTexAppearanceResource(mFontSizeId));
CheckBox cb = ((CheckBox) view.findViewById(R.id.cb_edit_item));
// <20><><EFBFBD>ø<EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>״̬<D7B4><CCAC><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>
cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
edit.setPaintFlags(edit.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
} else {
edit.setPaintFlags(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG);
}
}
});
// <20><><EFBFBD>ñ༭<C3B1><E0BCAD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>
edit.setOnTextViewChangeListener(this);
edit.setIndex(index);
edit.setText(getHighlightQueryResult(item, mUserQuery));
return view;
}
/**
* <20><><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD>ݸı<DDB8>ʱ<EFBFBD>Ļص<C4BB><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
public void onTextChange(int index, boolean hasText) {
if (index >= mEditTextList.getChildCount()) {
Log.e(TAG, "Wrong index, should not happen");
return;
}
if (hasText) {
// <20><><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD>ʾ<EFBFBD><CABE>ѡ<EFBFBD><D1A1>
mEditTextList.getChildAt(index).findViewById(R.id.cb_edit_item).setVisibility(
View.VISIBLE);
} else {
// <20><><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD>ظ<EFBFBD>ѡ<EFBFBD><D1A1>
mEditTextList.getChildAt(index).findViewById(R.id.cb_edit_item).setVisibility(
View.GONE);
}
}
/**
* <20><><EFBFBD>б<EFBFBD>ģʽ<C4A3>ı<EFBFBD>ʱ<EFBFBD>Ļص<C4BB><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
public void onCheckListModeChanged(int oldMode, int newMode) {
if (newMode == TextNote.MODE_CHECK_LIST) {
// <20><><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD>б<EFBFBD>ģʽ<C4A3><CABD><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD>ʾ
switchToListMode(mNoteEditor.getText().toString());
} else {
// <20><><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>ͨģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB>Ե<EFBFBD><D4B5><EFBFBD><E0BCAD>
if (!getWorkingText()) {
mWorkingNote.setWorkingText(mWorkingNote.getContent().replace(TAG_UNCHECKED + " ",
""));
}
mNoteEditor.setText(getHighlightQueryResult(mWorkingNote.getContent(), mUserQuery));
// <20><><EFBFBD>ر༭<D8B1>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><E0BCAD>
mEditTextList.setVisibility(View.GONE);
mNoteEditor.setVisibility(View.VISIBLE);
}
}
/**
* <20><>ȡ<EFBFBD><C8A1><EFBFBD>ڱ༭<DAB1><E0BCAD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±ʼDZ<CABC><C7B1><EFBFBD>Ŀ<EFBFBD><C4BF> workingText <20><><EFBFBD>ԡ<EFBFBD>
*/
private boolean getWorkingText() {
boolean hasChecked = false;
if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < mEditTextList.getChildCount(); i++) {
View view = mEditTextList.getChildAt(i);
NoteEditText edit = (NoteEditText) view.findViewById(R.id.et_edit_text);
if (!TextUtils.isEmpty(edit.getText())) {
if (((CheckBox) view.findViewById(R.id.cb_edit_item)).isChecked()) {
sb.append(TAG_CHECKED).append(" ").append(edit.getText()).append("\n");
hasChecked = true;
} else {
sb.append(TAG_UNCHECKED).append(" ").append(edit.getText()).append("\n");
}
}
}
mWorkingNote.setWorkingText(sb.toString());
} else {
mWorkingNote.setWorkingText(mNoteEditor.getText().toString());
}
return hasChecked;
}
/**
* <20><><EFBFBD><EFBFBD><EFBFBD>ʼDZ<CABC><C7B1><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD>ݿ⡣
*/
private boolean saveNote() {
getWorkingText();
boolean saved = mWorkingNote.saveNote();
if (saved) {
// ʹ<><CAB9> RESULT_OK <20><><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD>DZ༭<C7B1><E0BCAD>״̬
setResult(RESULT_OK);
}
return saved;
}
/**
* <20><><EFBFBD>ʼDZ<CABC><C7B1><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD>ʽ<EFBFBD><CABD>
*/
private void sendToDesktop() {
// ȷ<><C8B7><EFBFBD><EFBFBD><EFBFBD>ڱ༭<DAB1>ıʼDZ<CABC><C7B1><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF>д<EFBFBD><D0B4>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3>򱣴<EFBFBD><F2B1A3B4><EFBFBD>
if (!mWorkingNote.existInDatabase()) {
saveNote();
}
if (mWorkingNote.getNoteId() > 0) {
Intent sender = new Intent();
Intent shortcutIntent = new Intent(this, NoteEditActivity.class);
shortcutIntent.setAction(Intent.ACTION_VIEW);
shortcutIntent.putExtra(Intent.EXTRA_UID, mWorkingNote.getNoteId());
sender.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
sender.putExtra(Intent.EXTRA_SHORTCUT_NAME,
makeShortcutIconTitle(mWorkingNote.getContent()));
sender.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
Intent.ShortcutIconResource.fromContext(this, R.drawable.icon_app));
sender.putExtra("duplicate", true);
sender.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
showToast(R.string.info_note_enter_desktop);
sendBroadcast(sender);
} else {
// <20><><EFBFBD><EFBFBD><EFBFBD>ʼDZ<CABC><C7B1><EFBFBD>Ŀδ<C4BF><CEB4><EFBFBD><EFBFBD><E6A3AC><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Log.e(TAG, "Send to desktop error");
showToast(R.string.error_note_empty_for_send_to_desktop);
}
}
/**
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD>ʽ<EFBFBD><CABD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>
*/
private String makeShortcutIconTitle(String content) {
content = content.replace(TAG_CHECKED, "");
content = content.replace(TAG_UNCHECKED, "");
return content.length() > SHORTCUT_ICON_TITLE_MAX_LEN ? content.substring(0, SHORTCUT_ICON_TITLE_MAX_LEN) : content;
}
/**
* <20><>ʾһ<CABE><D2BB> Toast <20><>Ϣ<EFBFBD><CFA2>
*/
private void showToast(int resId) {
showToast(resId, Toast.LENGTH_SHORT);
}
/**
* <20><>ʾһ<CABE><D2BB> Toast <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>ʱ<EFBFBD>
*/
private void showToast(int resId, int duration) {
Toast.makeText(this, resId, duration).show();
}