pull/32/head
包尔俊 4 weeks ago
parent 573add61f1
commit 4c3e4cae68

@ -15,7 +15,7 @@ android {
defaultConfig {
applicationId = "net.micode.notes"
minSdk = 24
targetSdk = 31
targetSdk = 33
versionCode = 1
versionName = "1.0"
@ -53,7 +53,15 @@ dependencies {
// RecyclerView依赖
implementation("androidx.recyclerview:recyclerview:1.3.2")
implementation("androidx.cursoradapter:cursoradapter:1.0.0")
// Preference依赖
implementation("androidx.preference:preference:1.2.1")
// Palette依赖
implementation("androidx.palette:palette:1.0.0")
testImplementation(libs.junit)
testImplementation("org.mockito:mockito-core:5.7.0")
androidTestImplementation(libs.ext.junit)
androidTestImplementation(libs.espresso.core)
}

@ -1356,4 +1356,39 @@ public class NotesRepository {
}
return title;
}
/**
*
*
* @param callback
*/
public void getTasks(Callback<List<NoteInfo>> callback) {
executor.execute(() -> {
try {
List<NoteInfo> tasks = new ArrayList<>();
Cursor cursor = contentResolver.query(
Notes.CONTENT_NOTE_URI,
null,
NoteColumns.TYPE + " = ? AND " + NoteColumns.PARENT_ID + " != ?",
new String[]{String.valueOf(Notes.TYPE_TASK), String.valueOf(Notes.ID_TRASH_FOLER)},
NoteColumns.MODIFIED_DATE + " DESC"
);
if (cursor != null) {
try {
while (cursor.moveToNext()) {
tasks.add(noteFromCursor(cursor));
}
} finally {
cursor.close();
}
}
callback.onSuccess(tasks);
Log.d(TAG, "getTasks: loaded " + tasks.size() + " tasks");
} catch (Exception e) {
Log.e(TAG, "Failed to load tasks", e);
callback.onError(e);
}
});
}
}

@ -218,8 +218,8 @@ public class AlarmAlertActivity extends Activity implements OnClickListener, OnD
case DialogInterface.BUTTON_NEGATIVE:
Intent intent;
if (mNoteType == Notes.TYPE_TASK) {
// 如果是待办任务,跳转到任务编辑活动
intent = new Intent(this, TaskEditActivity.class);
// 如果是待办任务,跳转到笔记编辑活动(任务功能已合并)
intent = new Intent(this, NoteEditActivity.class);
intent.putExtra(Intent.EXTRA_UID, mNoteId);
} else {
// 创建跳转到笔记编辑活动的Intent

@ -88,7 +88,7 @@ public class AlarmInitReceiver extends BroadcastReceiver {
sender.setData(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, c.getLong(COLUMN_ID)));
// 创建PendingIntent它封装了上述Intent可以在指定时间触发
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, sender, 0);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, sender, PendingIntent.FLAG_IMMUTABLE);
// 获取系统闹钟服务
AlarmManager alermManager = (AlarmManager) context

@ -1156,7 +1156,7 @@ public class NoteEditActivity extends AppCompatActivity implements OnClickListen
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);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_IMMUTABLE);
AlarmManager alarmManager = ((AlarmManager) getSystemService(ALARM_SERVICE));
showAlertHeader();
if(!set) {

@ -802,8 +802,8 @@ public class NotesListActivity extends AppCompatActivity
switch (itemId) {
case R.id.menu_tasks:
startActivity(new Intent(this, TaskListActivity.class));
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
// 显示待办任务列表
loadTasks();
return true;
case R.id.menu_search:
Intent searchIntent = new Intent(this, NoteSearchActivity.class);
@ -1229,6 +1229,15 @@ public class NotesListActivity extends AppCompatActivity
}
}
/**
*
*/
private void loadTasks() {
// 加载TYPE_TASK类型的笔记作为待办任务
viewModel.loadTasks();
Toast.makeText(this, "显示待办任务", Toast.LENGTH_SHORT).show();
}
@Override
protected void onDestroy() {
super.onDestroy();

@ -731,6 +731,9 @@ public class NotesListViewModel extends ViewModel {
// 这里假设是从模板列表点击进入,则应用到根目录(或默认目录)
// 更好的逻辑是applyTemplate(templateId, Notes.ID_ROOT_FOLDER)
repository.applyTemplate(templateId, Notes.ID_ROOT_FOLDER, callback);
}
/**
*
* <p>
*
@ -845,6 +848,29 @@ public class NotesListViewModel extends ViewModel {
}
}
public void loadTasks() {
isLoading.postValue(true);
errorMessage.postValue(null);
currentFolderId = -5;
repository.getTasks(new NotesRepository.Callback<List<NotesRepository.NoteInfo>>() {
@Override
public void onSuccess(List<NotesRepository.NoteInfo> tasks) {
isLoading.postValue(false);
notesLiveData.postValue(tasks);
Log.d(TAG, "Loaded " + tasks.size() + " tasks");
}
@Override
public void onError(Exception error) {
isLoading.postValue(false);
String message = "加载待办任务失败: " + error.getMessage();
errorMessage.postValue(message);
Log.e(TAG, message, error);
}
});
}
/**
* ViewModel
* <p>

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="300"
android:fromXDelta="100%"
android:toXDelta="0%" />
</set>

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="300"
android:fromXDelta="0%"
android:toXDelta="-100%" />
</set>

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="#FFFFFF"
android:pathData="M19,3L5,3c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,5c0,-1.1 -0.9,-2 -2,-2zM10,17l-5,-5 1.41,-1.41L10,14.17l7.59,-7.59L19,8l-9,9z"/>
</vector>

@ -143,7 +143,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp"
android:drawableStart="@drawable/ic_menu_notes"
android:drawableStart="@android:drawable/ic_menu_edit"
android:drawablePadding="12dp"
android:text="@string/menu_templates"
android:textSize="16sp"

@ -20,7 +20,7 @@
<item
android:id="@+id/menu_tasks"
android:title="TASKS"
android:title="@string/menu_tasks"
android:icon="@drawable/ic_menu_tasks"
app:showAsAction="always" />

@ -64,6 +64,7 @@
<string name="menu_folder_delete">Delete folder</string>
<string name="menu_folder_change_name">Change folder name</string>
<string name="folder_exist">The folder %1$s exist, please rename</string>
<string name="menu_tasks">Tasks</string>
<!-- Folder operation dialogs -->
<string name="dialog_rename_folder_title">Rename folder</string>
@ -187,7 +188,6 @@
<string name="menu_save_as_template">Save as template</string>
<string name="menu_picture">Picture</string>
<string name="menu_rich_text">Rich Text</string>
</resources>
<string name="menu_restore">Restore</string>
<string name="menu_permanent_delete">Delete Forever</string>
</resources>
</resources>

Loading…
Cancel
Save