|
|
|
@ -24,6 +24,7 @@ package net.micode.notes.ui;
|
|
|
|
|
* UI 元素、数据存储、后台任务处理、系统服务调用等方面的功能。
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
import android.annotation.SuppressLint;
|
|
|
|
|
import android.app.Activity; //表示应用程序中的一个活动,例如界面展示等
|
|
|
|
|
import android.app.AlertDialog; //用于显示对话框的类
|
|
|
|
|
import android.app.Dialog; //用于创建对话框的类
|
|
|
|
@ -50,6 +51,7 @@ import android.view.Display; //表示屏幕上的显示内
|
|
|
|
|
import android.view.HapticFeedbackConstants; //用于触觉反馈的常量值。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import android.view.KeyEvent;
|
|
|
|
|
import android.view.LayoutInflater; //用于动态加载 XML 布局文件。
|
|
|
|
|
import android.view.Menu; //表示应用程序的菜单。
|
|
|
|
|
import android.view.MenuItem; //用于表示菜单项。
|
|
|
|
@ -123,6 +125,8 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
|
|
|
|
|
NOTE_LIST, SUB_FOLDER, CALL_RECORD_FOLDER
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
private int mBackgroundState = -1; //定义了一个用于标识开始界面背景的变量
|
|
|
|
|
|
|
|
|
|
private ListEditState mState; //定义了一个标识列表编辑状态的变量
|
|
|
|
|
|
|
|
|
|
private BackgroundQueryHandler mBackgroundQueryHandler; //用于在后台执行数据库查询等操作,以避免阻塞UI线程
|
|
|
|
@ -174,6 +178,7 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
|
|
|
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
|
|
|
super.onCreate(savedInstanceState);
|
|
|
|
|
setContentView(R.layout.note_list);
|
|
|
|
|
getWindow().setBackgroundDrawableResource(R.drawable.list_background);
|
|
|
|
|
initResources();
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -275,6 +280,7 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
|
|
|
|
|
mContentResolver = this.getContentResolver();
|
|
|
|
|
mBackgroundQueryHandler = new BackgroundQueryHandler(this.getContentResolver());
|
|
|
|
|
mCurrentFolderId = Notes.ID_ROOT_FOLDER;
|
|
|
|
|
//mCurrentFolderId = Notes.ID_TRASH_FOLER;
|
|
|
|
|
mNotesListView = (ListView) findViewById(R.id.notes_list);
|
|
|
|
|
mNotesListView.addFooterView(LayoutInflater.from(this).inflate(R.layout.note_list_footer, null),
|
|
|
|
|
null, false);
|
|
|
|
@ -416,12 +422,7 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
|
|
|
|
|
builder.setMessage(getString(R.string.alert_message_delete_notes,
|
|
|
|
|
mNotesListAdapter.getSelectedCount()));
|
|
|
|
|
builder.setPositiveButton(android.R.string.ok,
|
|
|
|
|
new DialogInterface.OnClickListener() {
|
|
|
|
|
public void onClick(DialogInterface dialog,
|
|
|
|
|
int which) {
|
|
|
|
|
batchDelete();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
(dialog, which) -> batchDelete());
|
|
|
|
|
builder.setNegativeButton(android.R.string.cancel, null);
|
|
|
|
|
builder.show();
|
|
|
|
|
} else if (itemId == R.id.move) {
|
|
|
|
@ -571,7 +572,7 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
|
|
|
|
|
// in sync mode, we'll move the deleted note into the trash
|
|
|
|
|
// folder
|
|
|
|
|
if (!DataUtils.batchMoveToFolder(mContentResolver, mNotesListAdapter
|
|
|
|
|
.getSelectedItemIds(), Notes.ID_TRASH_FOLER)) {
|
|
|
|
|
.getSelectedItemIds(), Notes.ID_TRASH_FOLDER)) {
|
|
|
|
|
Log.e(TAG, "Move notes to trash folder error, should not happens");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -608,7 +609,7 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
|
|
|
|
|
DataUtils.batchDeleteNotes(mContentResolver, ids);
|
|
|
|
|
} else {
|
|
|
|
|
// in sync mode, we'll move the deleted folder into the trash folder
|
|
|
|
|
DataUtils.batchMoveToFolder(mContentResolver, ids, Notes.ID_TRASH_FOLER);
|
|
|
|
|
DataUtils.batchMoveToFolder(mContentResolver, ids, Notes.ID_TRASH_FOLDER);
|
|
|
|
|
}
|
|
|
|
|
if (widgets != null) {
|
|
|
|
|
for (AppWidgetAttribute widget : widgets) {
|
|
|
|
@ -747,6 +748,33 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void checkBackground(int itemId, AlertDialog.Builder bkgBuilder) {
|
|
|
|
|
bkgBuilder.setTitle(getString(R.string.alert_title_check_background));
|
|
|
|
|
bkgBuilder.setIcon(android.R.drawable.ic_dialog_alert);
|
|
|
|
|
if (itemId == R.id.menu_MyBackground_cloud && mBackgroundState != 0) {
|
|
|
|
|
bkgBuilder.setMessage(getString(R.string.alert_message_check_cloud));
|
|
|
|
|
bkgBuilder.setPositiveButton(android.R.string.ok, (dialog, which) ->
|
|
|
|
|
getWindow().setBackgroundDrawableResource(R.drawable.mybackground_cloud)); //采用lambda方法,更新背景
|
|
|
|
|
mBackgroundState = 0;
|
|
|
|
|
bkgBuilder.setNegativeButton(android.R.string.cancel, null);
|
|
|
|
|
bkgBuilder.show();
|
|
|
|
|
} else if (itemId == R.id.menu_MyBackground_lake && mBackgroundState != 1) {
|
|
|
|
|
bkgBuilder.setMessage(getString(R.string.alert_message_check_lake));
|
|
|
|
|
bkgBuilder.setPositiveButton(android.R.string.ok, (dialog, which) ->
|
|
|
|
|
getWindow().setBackgroundDrawableResource(R.drawable.mybackground_lake));
|
|
|
|
|
bkgBuilder.setNegativeButton(android.R.string.cancel, null);
|
|
|
|
|
mBackgroundState = 1;
|
|
|
|
|
bkgBuilder.show();
|
|
|
|
|
} else if (itemId == R.id.menu_MyBackground_gril && mBackgroundState != 2) {
|
|
|
|
|
bkgBuilder.setMessage(getString(R.string.alert_message_check_girl));
|
|
|
|
|
bkgBuilder.setPositiveButton(android.R.string.ok, (dialog, which) ->
|
|
|
|
|
getWindow().setBackgroundDrawableResource(R.drawable.mybackground_girl));
|
|
|
|
|
bkgBuilder.setNegativeButton(android.R.string.cancel, null);
|
|
|
|
|
mBackgroundState = 2;
|
|
|
|
|
bkgBuilder.show();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onBackPressed() {
|
|
|
|
|
switch (mState) {
|
|
|
|
@ -864,6 +892,12 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
|
|
|
|
|
@Override
|
|
|
|
|
public boolean onOptionsItemSelected(MenuItem item) {
|
|
|
|
|
int itemId = item.getItemId();
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 用于切换背景的弹窗
|
|
|
|
|
*/
|
|
|
|
|
AlertDialog.Builder bkgBuilder = new AlertDialog.Builder(NotesListActivity.this);
|
|
|
|
|
|
|
|
|
|
if (itemId == R.id.menu_new_folder) {
|
|
|
|
|
showCreateOrModifyFolderDialog(true);
|
|
|
|
|
} else if (itemId == R.id.menu_export_text) {
|
|
|
|
@ -884,6 +918,12 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
|
|
|
|
|
createNewNote();
|
|
|
|
|
} else if (itemId == R.id.menu_search) {
|
|
|
|
|
onSearchRequested();
|
|
|
|
|
} else if (itemId == R.id.menu_MyBackground_cloud) { //给便签软件换开始界面
|
|
|
|
|
checkBackground(itemId, bkgBuilder);
|
|
|
|
|
} else if (itemId == R.id.menu_MyBackground_lake) {
|
|
|
|
|
checkBackground(itemId, bkgBuilder);
|
|
|
|
|
} else if (itemId == R.id.menu_MyBackground_gril) {
|
|
|
|
|
checkBackground(itemId, bkgBuilder);
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
@ -935,7 +975,6 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
|
|
|
|
|
|
|
|
|
|
}.execute();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private boolean isSyncMode() {
|
|
|
|
|
return NotesPreferenceActivity.getSyncAccountName(this).trim().length() > 0;
|
|
|
|
|
}
|
|
|
|
@ -999,7 +1038,7 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
|
|
|
|
|
selection,
|
|
|
|
|
new String[] {
|
|
|
|
|
String.valueOf(Notes.TYPE_FOLDER),
|
|
|
|
|
String.valueOf(Notes.ID_TRASH_FOLER),
|
|
|
|
|
String.valueOf(Notes.ID_TRASH_FOLDER),
|
|
|
|
|
String.valueOf(mCurrentFolderId)
|
|
|
|
|
},
|
|
|
|
|
NoteColumns.MODIFIED_DATE + " DESC");
|
|
|
|
|