|
|
|
|
@ -132,14 +132,10 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
|
|
|
|
|
/** 新建笔记按钮 */
|
|
|
|
|
private Button mAddNewNote;
|
|
|
|
|
|
|
|
|
|
/** 是否分发触摸事件 */
|
|
|
|
|
private boolean mDispatch;
|
|
|
|
|
|
|
|
|
|
/** 原始Y坐标 */
|
|
|
|
|
private int mOriginY;
|
|
|
|
|
|
|
|
|
|
/** 分发Y坐标 */
|
|
|
|
|
private int mDispatchY;
|
|
|
|
|
// 删除不再使用的触摸事件相关变量
|
|
|
|
|
// private boolean mDispatch;
|
|
|
|
|
// private int mOriginY;
|
|
|
|
|
// private int mDispatchY;
|
|
|
|
|
|
|
|
|
|
/** 标题栏文本视图 */
|
|
|
|
|
private TextView mTitleBar;
|
|
|
|
|
@ -152,6 +148,15 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
|
|
|
|
|
|
|
|
|
|
/** 模式回调 */
|
|
|
|
|
private ModeCallback mModeCallBack;
|
|
|
|
|
|
|
|
|
|
/** 是否分发触摸事件 */
|
|
|
|
|
private boolean mDispatch;
|
|
|
|
|
|
|
|
|
|
/** 原始Y坐标 */
|
|
|
|
|
private int mOriginY;
|
|
|
|
|
|
|
|
|
|
/** 分发Y坐标 */
|
|
|
|
|
private int mDispatchY;
|
|
|
|
|
|
|
|
|
|
/** 日志标签 */
|
|
|
|
|
private static final String TAG = "NotesListActivity";
|
|
|
|
|
@ -167,7 +172,7 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
|
|
|
|
|
|
|
|
|
|
/** 根文件夹选择条件 */
|
|
|
|
|
private static final String ROOT_FOLDER_SELECTION = "(" + NoteColumns.TYPE + "<>"
|
|
|
|
|
+ Notes.TYPE_SYSTEM + " AND " + NoteColumns.PARENT_ID + "=?)") + " OR ("
|
|
|
|
|
+ Notes.TYPE_SYSTEM + " AND " + NoteColumns.PARENT_ID + "=?)" + " OR ("
|
|
|
|
|
+ NoteColumns.ID + "=" + Notes.ID_CALL_RECORD_FOLDER + " AND "
|
|
|
|
|
+ NoteColumns.NOTES_COUNT + ">0)";
|
|
|
|
|
|
|
|
|
|
@ -196,6 +201,19 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
|
|
|
|
|
* Insert an introduction when user firstly use this application
|
|
|
|
|
*/
|
|
|
|
|
setAppInfoFromRawRes();
|
|
|
|
|
|
|
|
|
|
// 注册Android 13+的返回键回调
|
|
|
|
|
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.TIRAMISU) {
|
|
|
|
|
getOnBackInvokedDispatcher().registerOnBackInvokedCallback(
|
|
|
|
|
android.window.OnBackInvokedDispatcher.PRIORITY_DEFAULT,
|
|
|
|
|
new android.window.OnBackInvokedCallback() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onBackInvoked() {
|
|
|
|
|
handleBackPress();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
@ -356,6 +374,11 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
|
|
|
|
|
mMoveMenu.setVisible(true);
|
|
|
|
|
mMoveMenu.setOnMenuItemClickListener(this);
|
|
|
|
|
}
|
|
|
|
|
// 添加置顶菜单初始化
|
|
|
|
|
MenuItem pinMenu = menu.findItem(R.id.pin);
|
|
|
|
|
if (pinMenu != null) {
|
|
|
|
|
pinMenu.setOnMenuItemClickListener(this);
|
|
|
|
|
}
|
|
|
|
|
mActionMode = mode;
|
|
|
|
|
mNotesListAdapter.setChoiceMode(true);
|
|
|
|
|
mNotesListView.setLongClickable(false);
|
|
|
|
|
@ -515,6 +538,9 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
|
|
|
|
|
case R.id.move:
|
|
|
|
|
startQueryDestinationFolders();
|
|
|
|
|
break;
|
|
|
|
|
case R.id.pin:
|
|
|
|
|
togglePinnedStatus();
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
@ -622,7 +648,7 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
|
|
|
|
|
mBackgroundQueryHandler.startQuery(FOLDER_NOTE_LIST_QUERY_TOKEN, null,
|
|
|
|
|
Notes.CONTENT_NOTE_URI, NoteItemData.PROJECTION, selection, new String[] {
|
|
|
|
|
String.valueOf(mCurrentFolderId)
|
|
|
|
|
}, NoteColumns.TYPE + " DESC," + NoteColumns.MODIFIED_DATE + " DESC");
|
|
|
|
|
}, NoteColumns.PINNED + " DESC," + NoteColumns.TYPE + " DESC," + NoteColumns.MODIFIED_DATE + " DESC");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
@ -755,6 +781,54 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
|
|
|
|
|
}.execute();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 切换选中便签的置顶状态
|
|
|
|
|
*/
|
|
|
|
|
private void togglePinnedStatus() {
|
|
|
|
|
final HashSet<Long> selectedIds = mNotesListAdapter.getSelectedItemIds();
|
|
|
|
|
final int selectedCount = mNotesListAdapter.getSelectedCount();
|
|
|
|
|
|
|
|
|
|
new AsyncTask<Void, Void, Void>() {
|
|
|
|
|
protected Void doInBackground(Void... unused) {
|
|
|
|
|
for (Long noteId : selectedIds) {
|
|
|
|
|
// 查询当前便签的置顶状态
|
|
|
|
|
Cursor cursor = mContentResolver.query(Notes.CONTENT_NOTE_URI,
|
|
|
|
|
new String[]{NoteColumns.PINNED},
|
|
|
|
|
NoteColumns.ID + "=?",
|
|
|
|
|
new String[]{String.valueOf(noteId)},
|
|
|
|
|
null);
|
|
|
|
|
|
|
|
|
|
if (cursor != null && cursor.moveToFirst()) {
|
|
|
|
|
int currentPinned = cursor.getInt(0);
|
|
|
|
|
// 切换置顶状态
|
|
|
|
|
int newPinned = currentPinned == 1 ? 0 : 1;
|
|
|
|
|
|
|
|
|
|
ContentValues values = new ContentValues();
|
|
|
|
|
values.put(NoteColumns.PINNED, newPinned);
|
|
|
|
|
|
|
|
|
|
mContentResolver.update(Notes.CONTENT_NOTE_URI,
|
|
|
|
|
values,
|
|
|
|
|
NoteColumns.ID + "=?",
|
|
|
|
|
new String[]{String.valueOf(noteId)});
|
|
|
|
|
|
|
|
|
|
cursor.close();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
protected void onPostExecute(Void unused) {
|
|
|
|
|
Toast.makeText(NotesListActivity.this,
|
|
|
|
|
"已更新 " + selectedCount + " 个便签",
|
|
|
|
|
Toast.LENGTH_SHORT).show();
|
|
|
|
|
// 重新查询数据,更新列表
|
|
|
|
|
startAsyncNotesListQuery();
|
|
|
|
|
mModeCallBack.finishActionMode();
|
|
|
|
|
}
|
|
|
|
|
}.execute();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 删除文件夹
|
|
|
|
|
* <p>
|
|
|
|
|
@ -991,8 +1065,7 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
|
|
|
|
|
* 3. 如果在根文件夹中,调用默认的返回处理
|
|
|
|
|
* </p>
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public void onBackPressed() {
|
|
|
|
|
private void handleBackPress() {
|
|
|
|
|
switch (mState) {
|
|
|
|
|
case SUB_FOLDER:
|
|
|
|
|
mCurrentFolderId = Notes.ID_ROOT_FOLDER;
|
|
|
|
|
@ -1015,6 +1088,11 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onBackPressed() {
|
|
|
|
|
handleBackPress();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 更新部件
|
|
|
|
|
* <p>
|
|
|
|
|
|