diff --git a/src/Notesmaster/app/src/main/AndroidManifest.xml b/src/Notesmaster/app/src/main/AndroidManifest.xml
index b4152a3..ff73964 100644
--- a/src/Notesmaster/app/src/main/AndroidManifest.xml
+++ b/src/Notesmaster/app/src/main/AndroidManifest.xml
@@ -110,6 +110,12 @@
android:exported="false" />
+
+
{
if (getContext() == null) return;
- // Query notes in CAPSULE folder
- String selection = Notes.NoteColumns.PARENT_ID + "=?";
- String[] selectionArgs = new String[]{String.valueOf(Notes.ID_CAPSULE_FOLDER)};
-
+ // Query notes in CAPSULE folder.
+ // Join with Data table to get DATA3 (source package)
Cursor cursor = getContext().getContentResolver().query(
Notes.CONTENT_NOTE_URI,
null,
- selection,
- selectionArgs,
+ Notes.NoteColumns.PARENT_ID + "=?",
+ new String[]{String.valueOf(Notes.ID_CAPSULE_FOLDER)},
Notes.NoteColumns.MODIFIED_DATE + " DESC"
);
@@ -73,14 +90,18 @@ public class CapsuleListFragment extends Fragment {
String snippet = cursor.getString(cursor.getColumnIndexOrThrow(Notes.NoteColumns.SNIPPET));
long modifiedDate = cursor.getLong(cursor.getColumnIndexOrThrow(Notes.NoteColumns.MODIFIED_DATE));
- // We need to fetch DATA3 (source) which is in DATA table.
- // For performance, we might do a join or lazy load.
- // For now, let's just use snippet and date.
- // To get Source, we really should query DATA table or use a projection if CONTENT_NOTE_URI supports joining.
- // NotesProvider usually joins. Let's check NoteColumns.
- // Notes.DataColumns.DATA3 is NOT in NoteColumns.
+ // Try to get source from projection (if joined) or query separately
+ String source = "";
+ try {
+ int sourceIdx = cursor.getColumnIndex(Notes.DataColumns.DATA3);
+ if (sourceIdx != -1) {
+ source = cursor.getString(sourceIdx);
+ }
+ } catch (Exception e) {
+ // Not joined, ignore for now or lazy load
+ }
- items.add(new CapsuleItem(id, snippet, modifiedDate, "Loading source..."));
+ items.add(new CapsuleItem(id, snippet, modifiedDate, source));
}
cursor.close();
}
@@ -95,6 +116,13 @@ public class CapsuleListFragment extends Fragment {
}).start();
}
+ private void openNoteEditor(long noteId) {
+ Intent intent = new Intent(getActivity(), NoteEditActivity.class);
+ intent.setAction(Intent.ACTION_VIEW);
+ intent.putExtra(Intent.EXTRA_UID, noteId);
+ startActivity(intent);
+ }
+
private static class CapsuleItem {
long id;
String summary;
@@ -133,15 +161,14 @@ public class CapsuleListFragment extends Fragment {
holder.tvTime.setText(sdf.format(new Date(item.time)));
if (item.source != null && !item.source.isEmpty()) {
- holder.tvSource.setText("Source: " + item.source);
+ holder.tvSource.setText(item.source);
holder.tvSource.setVisibility(View.VISIBLE);
} else {
holder.tvSource.setVisibility(View.GONE);
}
holder.itemView.setOnClickListener(v -> {
- // Open Note Edit
- // We need to implement this
+ openNoteEditor(item.id);
});
}
diff --git a/src/Notesmaster/app/src/main/java/net/micode/notes/ui/NotesListActivity.java b/src/Notesmaster/app/src/main/java/net/micode/notes/ui/NotesListActivity.java
index a58beb3..fa8b2de 100644
--- a/src/Notesmaster/app/src/main/java/net/micode/notes/ui/NotesListActivity.java
+++ b/src/Notesmaster/app/src/main/java/net/micode/notes/ui/NotesListActivity.java
@@ -368,6 +368,10 @@ public class NotesListActivity extends AppCompatActivity implements SidebarFragm
@Override public void onExportSelected() { binding.drawerLayout.closeDrawer(GravityCompat.START); Toast.makeText(this, "导出功能待实现", Toast.LENGTH_SHORT).show(); }
@Override public void onTemplateSelected() { binding.drawerLayout.closeDrawer(GravityCompat.START); viewModel.enterFolder(Notes.ID_TEMPLATE_FOLDER); }
@Override public void onSettingsSelected() { binding.drawerLayout.closeDrawer(GravityCompat.START); startActivity(new Intent(this, SettingsActivity.class)); }
+ @Override public void onCapsuleSelected() {
+ binding.drawerLayout.closeDrawer(GravityCompat.START);
+ startActivity(new Intent(this, CapsuleListActivity.class));
+ }
@Override public void onCreateFolder() { binding.drawerLayout.closeDrawer(GravityCompat.START); /* Show dialog */ }
@Override public void onCloseSidebar() { binding.drawerLayout.closeDrawer(GravityCompat.START); }
@Override public void onRenameFolder(long folderId) { /* Handle rename */ }
diff --git a/src/Notesmaster/app/src/main/java/net/micode/notes/ui/SidebarFragment.java b/src/Notesmaster/app/src/main/java/net/micode/notes/ui/SidebarFragment.java
index f589a92..f61cd7d 100644
--- a/src/Notesmaster/app/src/main/java/net/micode/notes/ui/SidebarFragment.java
+++ b/src/Notesmaster/app/src/main/java/net/micode/notes/ui/SidebarFragment.java
@@ -71,6 +71,7 @@ public class SidebarFragment extends Fragment {
private LinearLayout menuTemplates;
private LinearLayout menuExport;
private LinearLayout menuSettings;
+ private LinearLayout menuCapsule;
private LinearLayout menuLogin;
private LinearLayout menuLogout;
@@ -106,6 +107,7 @@ public class SidebarFragment extends Fragment {
void onExportSelected();
void onTemplateSelected();
void onSettingsSelected();
+ void onCapsuleSelected();
void onCreateFolder();
void onCloseSidebar();
void onRenameFolder(long folderId);
@@ -170,6 +172,7 @@ public class SidebarFragment extends Fragment {
menuTemplates = view.findViewById(R.id.menu_templates);
menuExport = view.findViewById(R.id.menu_export);
menuSettings = view.findViewById(R.id.menu_settings);
+ menuCapsule = view.findViewById(R.id.menu_capsule);
menuLogin = view.findViewById(R.id.menu_login);
menuLogout = view.findViewById(R.id.menu_logout);
@@ -237,6 +240,15 @@ public class SidebarFragment extends Fragment {
}
});
+ if (menuCapsule != null) {
+ menuCapsule.setOnClickListener(v -> {
+ if (listener != null) {
+ listener.onCapsuleSelected();
+ listener.onCloseSidebar();
+ }
+ });
+ }
+
menuLogin.setOnClickListener(v -> {
if (listener != null) {
listener.onLoginSelected();
diff --git a/src/Notesmaster/app/src/main/res/layout/activity_capsule_list.xml b/src/Notesmaster/app/src/main/res/layout/activity_capsule_list.xml
new file mode 100644
index 0000000..244af55
--- /dev/null
+++ b/src/Notesmaster/app/src/main/res/layout/activity_capsule_list.xml
@@ -0,0 +1,5 @@
+
+
diff --git a/src/Notesmaster/app/src/main/res/layout/fragment_sidebar.xml b/src/Notesmaster/app/src/main/res/layout/fragment_sidebar.xml
index 5d4d1b4..34683d4 100644
--- a/src/Notesmaster/app/src/main/res/layout/fragment_sidebar.xml
+++ b/src/Notesmaster/app/src/main/res/layout/fragment_sidebar.xml
@@ -163,6 +163,34 @@
+
+
+
+
+
+
+
+
+
-
+ android:layout_marginHorizontal="12dp"
+ android:layout_marginVertical="6dp"
+ app:cardCornerRadius="16dp"
+ app:cardElevation="2dp"
+ app:cardBackgroundColor="@android:color/white">
-
-
-
+ android:orientation="vertical"
+ android:padding="16dp"
+ android:background="?android:attr/selectableItemBackground">
-
+
+
+
+
+
+
+
+
+
+
+
-
+