-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/xiaomi-src/.idea/modules/xiaomi-src.iml b/xiaomi-src/.idea/modules/xiaomi-src.iml
deleted file mode 100644
index 53bcb81..0000000
--- a/xiaomi-src/.idea/modules/xiaomi-src.iml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/xiaomi-src/.idea/saveactions_settings.xml b/xiaomi-src/.idea/saveactions_settings.xml
deleted file mode 100644
index 7e0c980..0000000
--- a/xiaomi-src/.idea/saveactions_settings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/xiaomi-src/.idea/sonarlint/issuestore/f/0/f07866736216be0ee2aba49e392191aeae700a35 b/xiaomi-src/.idea/sonarlint/issuestore/f/0/f07866736216be0ee2aba49e392191aeae700a35
deleted file mode 100644
index e69de29..0000000
diff --git a/xiaomi-src/.idea/sonarlint/issuestore/f/4/f4a01d6a4fcb971362ec00a83903fd3902f52164 b/xiaomi-src/.idea/sonarlint/issuestore/f/4/f4a01d6a4fcb971362ec00a83903fd3902f52164
deleted file mode 100644
index e69de29..0000000
diff --git a/xiaomi-src/.idea/sonarlint/issuestore/index.pb b/xiaomi-src/.idea/sonarlint/issuestore/index.pb
deleted file mode 100644
index ae90c34..0000000
--- a/xiaomi-src/.idea/sonarlint/issuestore/index.pb
+++ /dev/null
@@ -1,5 +0,0 @@
-
-@
-app/build.gradle,f\4\f4a01d6a4fcb971362ec00a83903fd3902f52164
-<
-build.gradle,f\0\f07866736216be0ee2aba49e392191aeae700a35
\ No newline at end of file
diff --git a/xiaomi-src/.idea/sonarlint/securityhotspotstore/f/0/f07866736216be0ee2aba49e392191aeae700a35 b/xiaomi-src/.idea/sonarlint/securityhotspotstore/f/0/f07866736216be0ee2aba49e392191aeae700a35
deleted file mode 100644
index e69de29..0000000
diff --git a/xiaomi-src/.idea/sonarlint/securityhotspotstore/f/4/f4a01d6a4fcb971362ec00a83903fd3902f52164 b/xiaomi-src/.idea/sonarlint/securityhotspotstore/f/4/f4a01d6a4fcb971362ec00a83903fd3902f52164
deleted file mode 100644
index e69de29..0000000
diff --git a/xiaomi-src/.idea/sonarlint/securityhotspotstore/index.pb b/xiaomi-src/.idea/sonarlint/securityhotspotstore/index.pb
deleted file mode 100644
index ae90c34..0000000
--- a/xiaomi-src/.idea/sonarlint/securityhotspotstore/index.pb
+++ /dev/null
@@ -1,5 +0,0 @@
-
-@
-app/build.gradle,f\4\f4a01d6a4fcb971362ec00a83903fd3902f52164
-<
-build.gradle,f\0\f07866736216be0ee2aba49e392191aeae700a35
\ No newline at end of file
diff --git a/xiaomi-src/.idea/vcs.xml b/xiaomi-src/.idea/vcs.xml
deleted file mode 100644
index 6c0b863..0000000
--- a/xiaomi-src/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/xiaomi-src/Notes.iml b/xiaomi-src/Notes.iml
deleted file mode 100644
index d52d99f..0000000
--- a/xiaomi-src/Notes.iml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/xiaomi-src/README.md b/xiaomi-src/README.md
deleted file mode 100644
index 17e0f0d..0000000
--- a/xiaomi-src/README.md
+++ /dev/null
@@ -1 +0,0 @@
-# Notes
diff --git a/xiaomi-src/app/build.gradle b/xiaomi-src/app/build.gradle
deleted file mode 100644
index 9a1f163..0000000
--- a/xiaomi-src/app/build.gradle
+++ /dev/null
@@ -1,38 +0,0 @@
-plugins {
- id 'com.android.application'
-}
-android {
- namespace 'net.micode.notes'
- compileSdk 32
- defaultConfig {
- applicationId "net.micode.notes"
- minSdk 21
- targetSdk 32
- versionCode 1
- versionName "1.0"
-
- testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
- }
-
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
- }
- }
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- }
-
-}
-
-dependencies {
-
-// implementation 'androidx.appcompat:appcompat:1.4.1'
-// implementation 'com.google.android.material:material:1.5.0'
-// implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
-// testImplementation 'junit:junit:4.13.2'
-// androidTestImplementation 'androidx.test.ext:junit:1.1.3'
-// androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
-}
\ No newline at end of file
diff --git a/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/AccountDialogTitleBinding.java b/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/AccountDialogTitleBinding.java
deleted file mode 100644
index 872d89e..0000000
--- a/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/AccountDialogTitleBinding.java
+++ /dev/null
@@ -1,80 +0,0 @@
-// Generated by view binder compiler. Do not edit!
-package net.micode.notes.databinding;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.viewbinding.ViewBinding;
-import android.viewbinding.ViewBindings;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-import java.lang.NullPointerException;
-import java.lang.Override;
-import java.lang.String;
-import net.micode.notes.R;
-
-public final class AccountDialogTitleBinding implements ViewBinding {
- @NonNull
- private final LinearLayout rootView;
-
- @NonNull
- public final TextView accountDialogSubtitle;
-
- @NonNull
- public final TextView accountDialogTitle;
-
- private AccountDialogTitleBinding(@NonNull LinearLayout rootView,
- @NonNull TextView accountDialogSubtitle, @NonNull TextView accountDialogTitle) {
- this.rootView = rootView;
- this.accountDialogSubtitle = accountDialogSubtitle;
- this.accountDialogTitle = accountDialogTitle;
- }
-
- @Override
- @NonNull
- public LinearLayout getRoot() {
- return rootView;
- }
-
- @NonNull
- public static AccountDialogTitleBinding inflate(@NonNull LayoutInflater inflater) {
- return inflate(inflater, null, false);
- }
-
- @NonNull
- public static AccountDialogTitleBinding inflate(@NonNull LayoutInflater inflater,
- @Nullable ViewGroup parent, boolean attachToParent) {
- View root = inflater.inflate(R.layout.account_dialog_title, parent, false);
- if (attachToParent) {
- parent.addView(root);
- }
- return bind(root);
- }
-
- @NonNull
- public static AccountDialogTitleBinding bind(@NonNull View rootView) {
- // The body of this method is generated in a way you would not otherwise write.
- // This is done to optimize the compiled bytecode for size and performance.
- int id;
- missingId: {
- id = R.id.account_dialog_subtitle;
- TextView accountDialogSubtitle = ViewBindings.findChildViewById(rootView, id);
- if (accountDialogSubtitle == null) {
- break missingId;
- }
-
- id = R.id.account_dialog_title;
- TextView accountDialogTitle = ViewBindings.findChildViewById(rootView, id);
- if (accountDialogTitle == null) {
- break missingId;
- }
-
- return new AccountDialogTitleBinding((LinearLayout) rootView, accountDialogSubtitle,
- accountDialogTitle);
- }
- String missingId = rootView.getResources().getResourceName(id);
- throw new NullPointerException("Missing required view with ID: ".concat(missingId));
- }
-}
diff --git a/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/ActivitySplashBinding.java b/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/ActivitySplashBinding.java
deleted file mode 100644
index 2ed56e1..0000000
--- a/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/ActivitySplashBinding.java
+++ /dev/null
@@ -1,92 +0,0 @@
-// Generated by view binder compiler. Do not edit!
-package net.micode.notes.databinding;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.viewbinding.ViewBinding;
-import android.viewbinding.ViewBindings;
-import android.widget.Button;
-import android.widget.FrameLayout;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-import java.lang.NullPointerException;
-import java.lang.Override;
-import java.lang.String;
-import net.micode.notes.R;
-
-public final class ActivitySplashBinding implements ViewBinding {
- @NonNull
- private final FrameLayout rootView;
-
- @NonNull
- public final Button dummyButton;
-
- @NonNull
- public final TextView fullscreenContent;
-
- @NonNull
- public final LinearLayout fullscreenContentControls;
-
- private ActivitySplashBinding(@NonNull FrameLayout rootView, @NonNull Button dummyButton,
- @NonNull TextView fullscreenContent, @NonNull LinearLayout fullscreenContentControls) {
- this.rootView = rootView;
- this.dummyButton = dummyButton;
- this.fullscreenContent = fullscreenContent;
- this.fullscreenContentControls = fullscreenContentControls;
- }
-
- @Override
- @NonNull
- public FrameLayout getRoot() {
- return rootView;
- }
-
- @NonNull
- public static ActivitySplashBinding inflate(@NonNull LayoutInflater inflater) {
- return inflate(inflater, null, false);
- }
-
- @NonNull
- public static ActivitySplashBinding inflate(@NonNull LayoutInflater inflater,
- @Nullable ViewGroup parent, boolean attachToParent) {
- View root = inflater.inflate(R.layout.activity_splash, parent, false);
- if (attachToParent) {
- parent.addView(root);
- }
- return bind(root);
- }
-
- @NonNull
- public static ActivitySplashBinding bind(@NonNull View rootView) {
- // The body of this method is generated in a way you would not otherwise write.
- // This is done to optimize the compiled bytecode for size and performance.
- int id;
- missingId: {
- id = R.id.dummy_button;
- Button dummyButton = ViewBindings.findChildViewById(rootView, id);
- if (dummyButton == null) {
- break missingId;
- }
-
- id = R.id.fullscreen_content;
- TextView fullscreenContent = ViewBindings.findChildViewById(rootView, id);
- if (fullscreenContent == null) {
- break missingId;
- }
-
- id = R.id.fullscreen_content_controls;
- LinearLayout fullscreenContentControls = ViewBindings.findChildViewById(rootView, id);
- if (fullscreenContentControls == null) {
- break missingId;
- }
-
- return new ActivitySplashBinding((FrameLayout) rootView, dummyButton, fullscreenContent,
- fullscreenContentControls);
- }
- String missingId = rootView.getResources().getResourceName(id);
- throw new NullPointerException("Missing required view with ID: ".concat(missingId));
- }
-}
diff --git a/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/AddAccountTextBinding.java b/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/AddAccountTextBinding.java
deleted file mode 100644
index 8d15ea4..0000000
--- a/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/AddAccountTextBinding.java
+++ /dev/null
@@ -1,52 +0,0 @@
-// Generated by view binder compiler. Do not edit!
-package net.micode.notes.databinding;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.viewbinding.ViewBinding;
-import android.widget.LinearLayout;
-import java.lang.NullPointerException;
-import java.lang.Override;
-import net.micode.notes.R;
-
-public final class AddAccountTextBinding implements ViewBinding {
- @NonNull
- private final LinearLayout rootView;
-
- private AddAccountTextBinding(@NonNull LinearLayout rootView) {
- this.rootView = rootView;
- }
-
- @Override
- @NonNull
- public LinearLayout getRoot() {
- return rootView;
- }
-
- @NonNull
- public static AddAccountTextBinding inflate(@NonNull LayoutInflater inflater) {
- return inflate(inflater, null, false);
- }
-
- @NonNull
- public static AddAccountTextBinding inflate(@NonNull LayoutInflater inflater,
- @Nullable ViewGroup parent, boolean attachToParent) {
- View root = inflater.inflate(R.layout.add_account_text, parent, false);
- if (attachToParent) {
- parent.addView(root);
- }
- return bind(root);
- }
-
- @NonNull
- public static AddAccountTextBinding bind(@NonNull View rootView) {
- if (rootView == null) {
- throw new NullPointerException("rootView");
- }
-
- return new AddAccountTextBinding((LinearLayout) rootView);
- }
-}
diff --git a/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/DatetimePickerBinding.java b/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/DatetimePickerBinding.java
deleted file mode 100644
index fd721a0..0000000
--- a/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/DatetimePickerBinding.java
+++ /dev/null
@@ -1,99 +0,0 @@
-// Generated by view binder compiler. Do not edit!
-package net.micode.notes.databinding;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.viewbinding.ViewBinding;
-import android.viewbinding.ViewBindings;
-import android.widget.LinearLayout;
-import android.widget.NumberPicker;
-import java.lang.NullPointerException;
-import java.lang.Override;
-import java.lang.String;
-import net.micode.notes.R;
-
-public final class DatetimePickerBinding implements ViewBinding {
- @NonNull
- private final LinearLayout rootView;
-
- @NonNull
- public final NumberPicker amPm;
-
- @NonNull
- public final NumberPicker date;
-
- @NonNull
- public final NumberPicker hour;
-
- @NonNull
- public final NumberPicker minute;
-
- private DatetimePickerBinding(@NonNull LinearLayout rootView, @NonNull NumberPicker amPm,
- @NonNull NumberPicker date, @NonNull NumberPicker hour, @NonNull NumberPicker minute) {
- this.rootView = rootView;
- this.amPm = amPm;
- this.date = date;
- this.hour = hour;
- this.minute = minute;
- }
-
- @Override
- @NonNull
- public LinearLayout getRoot() {
- return rootView;
- }
-
- @NonNull
- public static DatetimePickerBinding inflate(@NonNull LayoutInflater inflater) {
- return inflate(inflater, null, false);
- }
-
- @NonNull
- public static DatetimePickerBinding inflate(@NonNull LayoutInflater inflater,
- @Nullable ViewGroup parent, boolean attachToParent) {
- View root = inflater.inflate(R.layout.datetime_picker, parent, false);
- if (attachToParent) {
- parent.addView(root);
- }
- return bind(root);
- }
-
- @NonNull
- public static DatetimePickerBinding bind(@NonNull View rootView) {
- // The body of this method is generated in a way you would not otherwise write.
- // This is done to optimize the compiled bytecode for size and performance.
- int id;
- missingId: {
- id = R.id.amPm;
- NumberPicker amPm = ViewBindings.findChildViewById(rootView, id);
- if (amPm == null) {
- break missingId;
- }
-
- id = R.id.date;
- NumberPicker date = ViewBindings.findChildViewById(rootView, id);
- if (date == null) {
- break missingId;
- }
-
- id = R.id.hour;
- NumberPicker hour = ViewBindings.findChildViewById(rootView, id);
- if (hour == null) {
- break missingId;
- }
-
- id = R.id.minute;
- NumberPicker minute = ViewBindings.findChildViewById(rootView, id);
- if (minute == null) {
- break missingId;
- }
-
- return new DatetimePickerBinding((LinearLayout) rootView, amPm, date, hour, minute);
- }
- String missingId = rootView.getResources().getResourceName(id);
- throw new NullPointerException("Missing required view with ID: ".concat(missingId));
- }
-}
diff --git a/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/DialogEditTextBinding.java b/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/DialogEditTextBinding.java
deleted file mode 100644
index e634c68..0000000
--- a/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/DialogEditTextBinding.java
+++ /dev/null
@@ -1,58 +0,0 @@
-// Generated by view binder compiler. Do not edit!
-package net.micode.notes.databinding;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.viewbinding.ViewBinding;
-import android.widget.EditText;
-import java.lang.NullPointerException;
-import java.lang.Override;
-import net.micode.notes.R;
-
-public final class DialogEditTextBinding implements ViewBinding {
- @NonNull
- private final EditText rootView;
-
- @NonNull
- public final EditText etFolerName;
-
- private DialogEditTextBinding(@NonNull EditText rootView, @NonNull EditText etFolerName) {
- this.rootView = rootView;
- this.etFolerName = etFolerName;
- }
-
- @Override
- @NonNull
- public EditText getRoot() {
- return rootView;
- }
-
- @NonNull
- public static DialogEditTextBinding inflate(@NonNull LayoutInflater inflater) {
- return inflate(inflater, null, false);
- }
-
- @NonNull
- public static DialogEditTextBinding inflate(@NonNull LayoutInflater inflater,
- @Nullable ViewGroup parent, boolean attachToParent) {
- View root = inflater.inflate(R.layout.dialog_edit_text, parent, false);
- if (attachToParent) {
- parent.addView(root);
- }
- return bind(root);
- }
-
- @NonNull
- public static DialogEditTextBinding bind(@NonNull View rootView) {
- if (rootView == null) {
- throw new NullPointerException("rootView");
- }
-
- EditText etFolerName = (EditText) rootView;
-
- return new DialogEditTextBinding((EditText) rootView, etFolerName);
- }
-}
diff --git a/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/FolderListItemBinding.java b/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/FolderListItemBinding.java
deleted file mode 100644
index 5f4ed70..0000000
--- a/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/FolderListItemBinding.java
+++ /dev/null
@@ -1,68 +0,0 @@
-// Generated by view binder compiler. Do not edit!
-package net.micode.notes.databinding;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.viewbinding.ViewBinding;
-import android.viewbinding.ViewBindings;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-import java.lang.NullPointerException;
-import java.lang.Override;
-import java.lang.String;
-import net.micode.notes.R;
-
-public final class FolderListItemBinding implements ViewBinding {
- @NonNull
- private final LinearLayout rootView;
-
- @NonNull
- public final TextView tvFolderName;
-
- private FolderListItemBinding(@NonNull LinearLayout rootView, @NonNull TextView tvFolderName) {
- this.rootView = rootView;
- this.tvFolderName = tvFolderName;
- }
-
- @Override
- @NonNull
- public LinearLayout getRoot() {
- return rootView;
- }
-
- @NonNull
- public static FolderListItemBinding inflate(@NonNull LayoutInflater inflater) {
- return inflate(inflater, null, false);
- }
-
- @NonNull
- public static FolderListItemBinding inflate(@NonNull LayoutInflater inflater,
- @Nullable ViewGroup parent, boolean attachToParent) {
- View root = inflater.inflate(R.layout.folder_list_item, parent, false);
- if (attachToParent) {
- parent.addView(root);
- }
- return bind(root);
- }
-
- @NonNull
- public static FolderListItemBinding bind(@NonNull View rootView) {
- // The body of this method is generated in a way you would not otherwise write.
- // This is done to optimize the compiled bytecode for size and performance.
- int id;
- missingId: {
- id = R.id.tv_folder_name;
- TextView tvFolderName = ViewBindings.findChildViewById(rootView, id);
- if (tvFolderName == null) {
- break missingId;
- }
-
- return new FolderListItemBinding((LinearLayout) rootView, tvFolderName);
- }
- String missingId = rootView.getResources().getResourceName(id);
- throw new NullPointerException("Missing required view with ID: ".concat(missingId));
- }
-}
diff --git a/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/NoteEditBinding.java b/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/NoteEditBinding.java
deleted file mode 100644
index 1969730..0000000
--- a/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/NoteEditBinding.java
+++ /dev/null
@@ -1,359 +0,0 @@
-// Generated by view binder compiler. Do not edit!
-package net.micode.notes.databinding;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.viewbinding.ViewBinding;
-import android.viewbinding.ViewBindings;
-import android.widget.FrameLayout;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-import java.lang.NullPointerException;
-import java.lang.Override;
-import java.lang.String;
-import net.micode.notes.R;
-import net.micode.notes.ui.NoteEditText;
-
-public final class NoteEditBinding implements ViewBinding {
- @NonNull
- private final FrameLayout rootView;
-
- @NonNull
- public final ImageView btnSetBgColor;
-
- @NonNull
- public final LinearLayout fontSizeSelector;
-
- @NonNull
- public final ImageView ivAlertIcon;
-
- @NonNull
- public final ImageView ivBgBlue;
-
- @NonNull
- public final ImageView ivBgBlueSelect;
-
- @NonNull
- public final ImageView ivBgGreen;
-
- @NonNull
- public final ImageView ivBgGreenSelect;
-
- @NonNull
- public final ImageView ivBgRed;
-
- @NonNull
- public final ImageView ivBgRedSelect;
-
- @NonNull
- public final ImageView ivBgWhite;
-
- @NonNull
- public final ImageView ivBgWhiteSelect;
-
- @NonNull
- public final ImageView ivBgYellow;
-
- @NonNull
- public final ImageView ivBgYellowSelect;
-
- @NonNull
- public final ImageView ivLargeSelect;
-
- @NonNull
- public final ImageView ivMediumSelect;
-
- @NonNull
- public final ImageView ivSmallSelect;
-
- @NonNull
- public final ImageView ivSuperSelect;
-
- @NonNull
- public final FrameLayout llFontLarge;
-
- @NonNull
- public final FrameLayout llFontNormal;
-
- @NonNull
- public final FrameLayout llFontSmall;
-
- @NonNull
- public final FrameLayout llFontSuper;
-
- @NonNull
- public final LinearLayout noteBgColorSelector;
-
- @NonNull
- public final LinearLayout noteEditList;
-
- @NonNull
- public final NoteEditText noteEditView;
-
- @NonNull
- public final LinearLayout noteTitle;
-
- @NonNull
- public final LinearLayout svNoteEdit;
-
- @NonNull
- public final TextView tvAlertDate;
-
- @NonNull
- public final TextView tvModifiedDate;
-
- private NoteEditBinding(@NonNull FrameLayout rootView, @NonNull ImageView btnSetBgColor,
- @NonNull LinearLayout fontSizeSelector, @NonNull ImageView ivAlertIcon,
- @NonNull ImageView ivBgBlue, @NonNull ImageView ivBgBlueSelect, @NonNull ImageView ivBgGreen,
- @NonNull ImageView ivBgGreenSelect, @NonNull ImageView ivBgRed,
- @NonNull ImageView ivBgRedSelect, @NonNull ImageView ivBgWhite,
- @NonNull ImageView ivBgWhiteSelect, @NonNull ImageView ivBgYellow,
- @NonNull ImageView ivBgYellowSelect, @NonNull ImageView ivLargeSelect,
- @NonNull ImageView ivMediumSelect, @NonNull ImageView ivSmallSelect,
- @NonNull ImageView ivSuperSelect, @NonNull FrameLayout llFontLarge,
- @NonNull FrameLayout llFontNormal, @NonNull FrameLayout llFontSmall,
- @NonNull FrameLayout llFontSuper, @NonNull LinearLayout noteBgColorSelector,
- @NonNull LinearLayout noteEditList, @NonNull NoteEditText noteEditView,
- @NonNull LinearLayout noteTitle, @NonNull LinearLayout svNoteEdit,
- @NonNull TextView tvAlertDate, @NonNull TextView tvModifiedDate) {
- this.rootView = rootView;
- this.btnSetBgColor = btnSetBgColor;
- this.fontSizeSelector = fontSizeSelector;
- this.ivAlertIcon = ivAlertIcon;
- this.ivBgBlue = ivBgBlue;
- this.ivBgBlueSelect = ivBgBlueSelect;
- this.ivBgGreen = ivBgGreen;
- this.ivBgGreenSelect = ivBgGreenSelect;
- this.ivBgRed = ivBgRed;
- this.ivBgRedSelect = ivBgRedSelect;
- this.ivBgWhite = ivBgWhite;
- this.ivBgWhiteSelect = ivBgWhiteSelect;
- this.ivBgYellow = ivBgYellow;
- this.ivBgYellowSelect = ivBgYellowSelect;
- this.ivLargeSelect = ivLargeSelect;
- this.ivMediumSelect = ivMediumSelect;
- this.ivSmallSelect = ivSmallSelect;
- this.ivSuperSelect = ivSuperSelect;
- this.llFontLarge = llFontLarge;
- this.llFontNormal = llFontNormal;
- this.llFontSmall = llFontSmall;
- this.llFontSuper = llFontSuper;
- this.noteBgColorSelector = noteBgColorSelector;
- this.noteEditList = noteEditList;
- this.noteEditView = noteEditView;
- this.noteTitle = noteTitle;
- this.svNoteEdit = svNoteEdit;
- this.tvAlertDate = tvAlertDate;
- this.tvModifiedDate = tvModifiedDate;
- }
-
- @Override
- @NonNull
- public FrameLayout getRoot() {
- return rootView;
- }
-
- @NonNull
- public static NoteEditBinding inflate(@NonNull LayoutInflater inflater) {
- return inflate(inflater, null, false);
- }
-
- @NonNull
- public static NoteEditBinding inflate(@NonNull LayoutInflater inflater,
- @Nullable ViewGroup parent, boolean attachToParent) {
- View root = inflater.inflate(R.layout.note_edit, parent, false);
- if (attachToParent) {
- parent.addView(root);
- }
- return bind(root);
- }
-
- @NonNull
- public static NoteEditBinding bind(@NonNull View rootView) {
- // The body of this method is generated in a way you would not otherwise write.
- // This is done to optimize the compiled bytecode for size and performance.
- int id;
- missingId: {
- id = R.id.btn_set_bg_color;
- ImageView btnSetBgColor = ViewBindings.findChildViewById(rootView, id);
- if (btnSetBgColor == null) {
- break missingId;
- }
-
- id = R.id.font_size_selector;
- LinearLayout fontSizeSelector = ViewBindings.findChildViewById(rootView, id);
- if (fontSizeSelector == null) {
- break missingId;
- }
-
- id = R.id.iv_alert_icon;
- ImageView ivAlertIcon = ViewBindings.findChildViewById(rootView, id);
- if (ivAlertIcon == null) {
- break missingId;
- }
-
- id = R.id.iv_bg_blue;
- ImageView ivBgBlue = ViewBindings.findChildViewById(rootView, id);
- if (ivBgBlue == null) {
- break missingId;
- }
-
- id = R.id.iv_bg_blue_select;
- ImageView ivBgBlueSelect = ViewBindings.findChildViewById(rootView, id);
- if (ivBgBlueSelect == null) {
- break missingId;
- }
-
- id = R.id.iv_bg_green;
- ImageView ivBgGreen = ViewBindings.findChildViewById(rootView, id);
- if (ivBgGreen == null) {
- break missingId;
- }
-
- id = R.id.iv_bg_green_select;
- ImageView ivBgGreenSelect = ViewBindings.findChildViewById(rootView, id);
- if (ivBgGreenSelect == null) {
- break missingId;
- }
-
- id = R.id.iv_bg_red;
- ImageView ivBgRed = ViewBindings.findChildViewById(rootView, id);
- if (ivBgRed == null) {
- break missingId;
- }
-
- id = R.id.iv_bg_red_select;
- ImageView ivBgRedSelect = ViewBindings.findChildViewById(rootView, id);
- if (ivBgRedSelect == null) {
- break missingId;
- }
-
- id = R.id.iv_bg_white;
- ImageView ivBgWhite = ViewBindings.findChildViewById(rootView, id);
- if (ivBgWhite == null) {
- break missingId;
- }
-
- id = R.id.iv_bg_white_select;
- ImageView ivBgWhiteSelect = ViewBindings.findChildViewById(rootView, id);
- if (ivBgWhiteSelect == null) {
- break missingId;
- }
-
- id = R.id.iv_bg_yellow;
- ImageView ivBgYellow = ViewBindings.findChildViewById(rootView, id);
- if (ivBgYellow == null) {
- break missingId;
- }
-
- id = R.id.iv_bg_yellow_select;
- ImageView ivBgYellowSelect = ViewBindings.findChildViewById(rootView, id);
- if (ivBgYellowSelect == null) {
- break missingId;
- }
-
- id = R.id.iv_large_select;
- ImageView ivLargeSelect = ViewBindings.findChildViewById(rootView, id);
- if (ivLargeSelect == null) {
- break missingId;
- }
-
- id = R.id.iv_medium_select;
- ImageView ivMediumSelect = ViewBindings.findChildViewById(rootView, id);
- if (ivMediumSelect == null) {
- break missingId;
- }
-
- id = R.id.iv_small_select;
- ImageView ivSmallSelect = ViewBindings.findChildViewById(rootView, id);
- if (ivSmallSelect == null) {
- break missingId;
- }
-
- id = R.id.iv_super_select;
- ImageView ivSuperSelect = ViewBindings.findChildViewById(rootView, id);
- if (ivSuperSelect == null) {
- break missingId;
- }
-
- id = R.id.ll_font_large;
- FrameLayout llFontLarge = ViewBindings.findChildViewById(rootView, id);
- if (llFontLarge == null) {
- break missingId;
- }
-
- id = R.id.ll_font_normal;
- FrameLayout llFontNormal = ViewBindings.findChildViewById(rootView, id);
- if (llFontNormal == null) {
- break missingId;
- }
-
- id = R.id.ll_font_small;
- FrameLayout llFontSmall = ViewBindings.findChildViewById(rootView, id);
- if (llFontSmall == null) {
- break missingId;
- }
-
- id = R.id.ll_font_super;
- FrameLayout llFontSuper = ViewBindings.findChildViewById(rootView, id);
- if (llFontSuper == null) {
- break missingId;
- }
-
- id = R.id.note_bg_color_selector;
- LinearLayout noteBgColorSelector = ViewBindings.findChildViewById(rootView, id);
- if (noteBgColorSelector == null) {
- break missingId;
- }
-
- id = R.id.note_edit_list;
- LinearLayout noteEditList = ViewBindings.findChildViewById(rootView, id);
- if (noteEditList == null) {
- break missingId;
- }
-
- id = R.id.note_edit_view;
- NoteEditText noteEditView = ViewBindings.findChildViewById(rootView, id);
- if (noteEditView == null) {
- break missingId;
- }
-
- id = R.id.note_title;
- LinearLayout noteTitle = ViewBindings.findChildViewById(rootView, id);
- if (noteTitle == null) {
- break missingId;
- }
-
- id = R.id.sv_note_edit;
- LinearLayout svNoteEdit = ViewBindings.findChildViewById(rootView, id);
- if (svNoteEdit == null) {
- break missingId;
- }
-
- id = R.id.tv_alert_date;
- TextView tvAlertDate = ViewBindings.findChildViewById(rootView, id);
- if (tvAlertDate == null) {
- break missingId;
- }
-
- id = R.id.tv_modified_date;
- TextView tvModifiedDate = ViewBindings.findChildViewById(rootView, id);
- if (tvModifiedDate == null) {
- break missingId;
- }
-
- return new NoteEditBinding((FrameLayout) rootView, btnSetBgColor, fontSizeSelector,
- ivAlertIcon, ivBgBlue, ivBgBlueSelect, ivBgGreen, ivBgGreenSelect, ivBgRed, ivBgRedSelect,
- ivBgWhite, ivBgWhiteSelect, ivBgYellow, ivBgYellowSelect, ivLargeSelect, ivMediumSelect,
- ivSmallSelect, ivSuperSelect, llFontLarge, llFontNormal, llFontSmall, llFontSuper,
- noteBgColorSelector, noteEditList, noteEditView, noteTitle, svNoteEdit, tvAlertDate,
- tvModifiedDate);
- }
- String missingId = rootView.getResources().getResourceName(id);
- throw new NullPointerException("Missing required view with ID: ".concat(missingId));
- }
-}
diff --git a/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/NoteEditListItemBinding.java b/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/NoteEditListItemBinding.java
deleted file mode 100644
index a938595..0000000
--- a/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/NoteEditListItemBinding.java
+++ /dev/null
@@ -1,80 +0,0 @@
-// Generated by view binder compiler. Do not edit!
-package net.micode.notes.databinding;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.viewbinding.ViewBinding;
-import android.viewbinding.ViewBindings;
-import android.widget.CheckBox;
-import android.widget.LinearLayout;
-import java.lang.NullPointerException;
-import java.lang.Override;
-import java.lang.String;
-import net.micode.notes.R;
-import net.micode.notes.ui.NoteEditText;
-
-public final class NoteEditListItemBinding implements ViewBinding {
- @NonNull
- private final LinearLayout rootView;
-
- @NonNull
- public final CheckBox cbEditItem;
-
- @NonNull
- public final NoteEditText etEditText;
-
- private NoteEditListItemBinding(@NonNull LinearLayout rootView, @NonNull CheckBox cbEditItem,
- @NonNull NoteEditText etEditText) {
- this.rootView = rootView;
- this.cbEditItem = cbEditItem;
- this.etEditText = etEditText;
- }
-
- @Override
- @NonNull
- public LinearLayout getRoot() {
- return rootView;
- }
-
- @NonNull
- public static NoteEditListItemBinding inflate(@NonNull LayoutInflater inflater) {
- return inflate(inflater, null, false);
- }
-
- @NonNull
- public static NoteEditListItemBinding inflate(@NonNull LayoutInflater inflater,
- @Nullable ViewGroup parent, boolean attachToParent) {
- View root = inflater.inflate(R.layout.note_edit_list_item, parent, false);
- if (attachToParent) {
- parent.addView(root);
- }
- return bind(root);
- }
-
- @NonNull
- public static NoteEditListItemBinding bind(@NonNull View rootView) {
- // The body of this method is generated in a way you would not otherwise write.
- // This is done to optimize the compiled bytecode for size and performance.
- int id;
- missingId: {
- id = R.id.cb_edit_item;
- CheckBox cbEditItem = ViewBindings.findChildViewById(rootView, id);
- if (cbEditItem == null) {
- break missingId;
- }
-
- id = R.id.et_edit_text;
- NoteEditText etEditText = ViewBindings.findChildViewById(rootView, id);
- if (etEditText == null) {
- break missingId;
- }
-
- return new NoteEditListItemBinding((LinearLayout) rootView, cbEditItem, etEditText);
- }
- String missingId = rootView.getResources().getResourceName(id);
- throw new NullPointerException("Missing required view with ID: ".concat(missingId));
- }
-}
diff --git a/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/NoteItemBinding.java b/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/NoteItemBinding.java
deleted file mode 100644
index 592f605..0000000
--- a/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/NoteItemBinding.java
+++ /dev/null
@@ -1,119 +0,0 @@
-// Generated by view binder compiler. Do not edit!
-package net.micode.notes.databinding;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.viewbinding.ViewBinding;
-import android.viewbinding.ViewBindings;
-import android.widget.CheckBox;
-import android.widget.FrameLayout;
-import android.widget.ImageView;
-import android.widget.TextView;
-import java.lang.NullPointerException;
-import java.lang.Override;
-import java.lang.String;
-import net.micode.notes.R;
-
-public final class NoteItemBinding implements ViewBinding {
- @NonNull
- private final FrameLayout rootView;
-
- @NonNull
- public final CheckBox checkbox;
-
- @NonNull
- public final ImageView ivAlertIcon;
-
- @NonNull
- public final FrameLayout noteItem;
-
- @NonNull
- public final TextView tvName;
-
- @NonNull
- public final TextView tvTime;
-
- @NonNull
- public final TextView tvTitle;
-
- private NoteItemBinding(@NonNull FrameLayout rootView, @NonNull CheckBox checkbox,
- @NonNull ImageView ivAlertIcon, @NonNull FrameLayout noteItem, @NonNull TextView tvName,
- @NonNull TextView tvTime, @NonNull TextView tvTitle) {
- this.rootView = rootView;
- this.checkbox = checkbox;
- this.ivAlertIcon = ivAlertIcon;
- this.noteItem = noteItem;
- this.tvName = tvName;
- this.tvTime = tvTime;
- this.tvTitle = tvTitle;
- }
-
- @Override
- @NonNull
- public FrameLayout getRoot() {
- return rootView;
- }
-
- @NonNull
- public static NoteItemBinding inflate(@NonNull LayoutInflater inflater) {
- return inflate(inflater, null, false);
- }
-
- @NonNull
- public static NoteItemBinding inflate(@NonNull LayoutInflater inflater,
- @Nullable ViewGroup parent, boolean attachToParent) {
- View root = inflater.inflate(R.layout.note_item, parent, false);
- if (attachToParent) {
- parent.addView(root);
- }
- return bind(root);
- }
-
- @NonNull
- public static NoteItemBinding bind(@NonNull View rootView) {
- // The body of this method is generated in a way you would not otherwise write.
- // This is done to optimize the compiled bytecode for size and performance.
- int id;
- missingId: {
- id = android.R.id.checkbox;
- CheckBox checkbox = ViewBindings.findChildViewById(rootView, id);
- if (checkbox == null) {
- break missingId;
- }
-
- id = R.id.iv_alert_icon;
- ImageView ivAlertIcon = ViewBindings.findChildViewById(rootView, id);
- if (ivAlertIcon == null) {
- break missingId;
- }
-
- FrameLayout noteItem = (FrameLayout) rootView;
-
- id = R.id.tv_name;
- TextView tvName = ViewBindings.findChildViewById(rootView, id);
- if (tvName == null) {
- break missingId;
- }
-
- id = R.id.tv_time;
- TextView tvTime = ViewBindings.findChildViewById(rootView, id);
- if (tvTime == null) {
- break missingId;
- }
-
- id = R.id.tv_title;
- TextView tvTitle = ViewBindings.findChildViewById(rootView, id);
- if (tvTitle == null) {
- break missingId;
- }
-
- return new NoteItemBinding((FrameLayout) rootView, checkbox, ivAlertIcon, noteItem, tvName,
- tvTime, tvTitle);
- }
- String missingId = rootView.getResources().getResourceName(id);
- throw new NullPointerException("Missing required view with ID: ".concat(missingId));
- }
-}
diff --git a/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/NoteListBinding.java b/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/NoteListBinding.java
deleted file mode 100644
index 3fbe410..0000000
--- a/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/NoteListBinding.java
+++ /dev/null
@@ -1,91 +0,0 @@
-// Generated by view binder compiler. Do not edit!
-package net.micode.notes.databinding;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.viewbinding.ViewBinding;
-import android.viewbinding.ViewBindings;
-import android.widget.Button;
-import android.widget.FrameLayout;
-import android.widget.ListView;
-import android.widget.TextView;
-import java.lang.NullPointerException;
-import java.lang.Override;
-import java.lang.String;
-import net.micode.notes.R;
-
-public final class NoteListBinding implements ViewBinding {
- @NonNull
- private final FrameLayout rootView;
-
- @NonNull
- public final Button btnNewNote;
-
- @NonNull
- public final ListView notesList;
-
- @NonNull
- public final TextView tvTitleBar;
-
- private NoteListBinding(@NonNull FrameLayout rootView, @NonNull Button btnNewNote,
- @NonNull ListView notesList, @NonNull TextView tvTitleBar) {
- this.rootView = rootView;
- this.btnNewNote = btnNewNote;
- this.notesList = notesList;
- this.tvTitleBar = tvTitleBar;
- }
-
- @Override
- @NonNull
- public FrameLayout getRoot() {
- return rootView;
- }
-
- @NonNull
- public static NoteListBinding inflate(@NonNull LayoutInflater inflater) {
- return inflate(inflater, null, false);
- }
-
- @NonNull
- public static NoteListBinding inflate(@NonNull LayoutInflater inflater,
- @Nullable ViewGroup parent, boolean attachToParent) {
- View root = inflater.inflate(R.layout.note_list, parent, false);
- if (attachToParent) {
- parent.addView(root);
- }
- return bind(root);
- }
-
- @NonNull
- public static NoteListBinding bind(@NonNull View rootView) {
- // The body of this method is generated in a way you would not otherwise write.
- // This is done to optimize the compiled bytecode for size and performance.
- int id;
- missingId: {
- id = R.id.btn_new_note;
- Button btnNewNote = ViewBindings.findChildViewById(rootView, id);
- if (btnNewNote == null) {
- break missingId;
- }
-
- id = R.id.notes_list;
- ListView notesList = ViewBindings.findChildViewById(rootView, id);
- if (notesList == null) {
- break missingId;
- }
-
- id = R.id.tv_title_bar;
- TextView tvTitleBar = ViewBindings.findChildViewById(rootView, id);
- if (tvTitleBar == null) {
- break missingId;
- }
-
- return new NoteListBinding((FrameLayout) rootView, btnNewNote, notesList, tvTitleBar);
- }
- String missingId = rootView.getResources().getResourceName(id);
- throw new NullPointerException("Missing required view with ID: ".concat(missingId));
- }
-}
diff --git a/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/NoteListDropdownMenuBinding.java b/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/NoteListDropdownMenuBinding.java
deleted file mode 100644
index c20da81..0000000
--- a/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/NoteListDropdownMenuBinding.java
+++ /dev/null
@@ -1,75 +0,0 @@
-// Generated by view binder compiler. Do not edit!
-package net.micode.notes.databinding;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.viewbinding.ViewBinding;
-import android.viewbinding.ViewBindings;
-import android.widget.Button;
-import android.widget.LinearLayout;
-import java.lang.NullPointerException;
-import java.lang.Override;
-import java.lang.String;
-import net.micode.notes.R;
-
-public final class NoteListDropdownMenuBinding implements ViewBinding {
- @NonNull
- private final LinearLayout rootView;
-
- @NonNull
- public final LinearLayout navigationBar;
-
- @NonNull
- public final Button selectionMenu;
-
- private NoteListDropdownMenuBinding(@NonNull LinearLayout rootView,
- @NonNull LinearLayout navigationBar, @NonNull Button selectionMenu) {
- this.rootView = rootView;
- this.navigationBar = navigationBar;
- this.selectionMenu = selectionMenu;
- }
-
- @Override
- @NonNull
- public LinearLayout getRoot() {
- return rootView;
- }
-
- @NonNull
- public static NoteListDropdownMenuBinding inflate(@NonNull LayoutInflater inflater) {
- return inflate(inflater, null, false);
- }
-
- @NonNull
- public static NoteListDropdownMenuBinding inflate(@NonNull LayoutInflater inflater,
- @Nullable ViewGroup parent, boolean attachToParent) {
- View root = inflater.inflate(R.layout.note_list_dropdown_menu, parent, false);
- if (attachToParent) {
- parent.addView(root);
- }
- return bind(root);
- }
-
- @NonNull
- public static NoteListDropdownMenuBinding bind(@NonNull View rootView) {
- // The body of this method is generated in a way you would not otherwise write.
- // This is done to optimize the compiled bytecode for size and performance.
- int id;
- missingId: {
- LinearLayout navigationBar = (LinearLayout) rootView;
-
- id = R.id.selection_menu;
- Button selectionMenu = ViewBindings.findChildViewById(rootView, id);
- if (selectionMenu == null) {
- break missingId;
- }
-
- return new NoteListDropdownMenuBinding((LinearLayout) rootView, navigationBar, selectionMenu);
- }
- String missingId = rootView.getResources().getResourceName(id);
- throw new NullPointerException("Missing required view with ID: ".concat(missingId));
- }
-}
diff --git a/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/NoteListFooterBinding.java b/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/NoteListFooterBinding.java
deleted file mode 100644
index 848cf81..0000000
--- a/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/NoteListFooterBinding.java
+++ /dev/null
@@ -1,51 +0,0 @@
-// Generated by view binder compiler. Do not edit!
-package net.micode.notes.databinding;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.viewbinding.ViewBinding;
-import java.lang.NullPointerException;
-import java.lang.Override;
-import net.micode.notes.R;
-
-public final class NoteListFooterBinding implements ViewBinding {
- @NonNull
- private final View rootView;
-
- private NoteListFooterBinding(@NonNull View rootView) {
- this.rootView = rootView;
- }
-
- @Override
- @NonNull
- public View getRoot() {
- return rootView;
- }
-
- @NonNull
- public static NoteListFooterBinding inflate(@NonNull LayoutInflater inflater) {
- return inflate(inflater, null, false);
- }
-
- @NonNull
- public static NoteListFooterBinding inflate(@NonNull LayoutInflater inflater,
- @Nullable ViewGroup parent, boolean attachToParent) {
- View root = inflater.inflate(R.layout.note_list_footer, parent, false);
- if (attachToParent) {
- parent.addView(root);
- }
- return bind(root);
- }
-
- @NonNull
- public static NoteListFooterBinding bind(@NonNull View rootView) {
- if (rootView == null) {
- throw new NullPointerException("rootView");
- }
-
- return new NoteListFooterBinding(rootView);
- }
-}
diff --git a/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/SettingsHeaderBinding.java b/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/SettingsHeaderBinding.java
deleted file mode 100644
index 2da731b..0000000
--- a/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/SettingsHeaderBinding.java
+++ /dev/null
@@ -1,81 +0,0 @@
-// Generated by view binder compiler. Do not edit!
-package net.micode.notes.databinding;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.viewbinding.ViewBinding;
-import android.viewbinding.ViewBindings;
-import android.widget.Button;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-import java.lang.NullPointerException;
-import java.lang.Override;
-import java.lang.String;
-import net.micode.notes.R;
-
-public final class SettingsHeaderBinding implements ViewBinding {
- @NonNull
- private final LinearLayout rootView;
-
- @NonNull
- public final TextView prefenereceSyncStatusTextview;
-
- @NonNull
- public final Button preferenceSyncButton;
-
- private SettingsHeaderBinding(@NonNull LinearLayout rootView,
- @NonNull TextView prefenereceSyncStatusTextview, @NonNull Button preferenceSyncButton) {
- this.rootView = rootView;
- this.prefenereceSyncStatusTextview = prefenereceSyncStatusTextview;
- this.preferenceSyncButton = preferenceSyncButton;
- }
-
- @Override
- @NonNull
- public LinearLayout getRoot() {
- return rootView;
- }
-
- @NonNull
- public static SettingsHeaderBinding inflate(@NonNull LayoutInflater inflater) {
- return inflate(inflater, null, false);
- }
-
- @NonNull
- public static SettingsHeaderBinding inflate(@NonNull LayoutInflater inflater,
- @Nullable ViewGroup parent, boolean attachToParent) {
- View root = inflater.inflate(R.layout.settings_header, parent, false);
- if (attachToParent) {
- parent.addView(root);
- }
- return bind(root);
- }
-
- @NonNull
- public static SettingsHeaderBinding bind(@NonNull View rootView) {
- // The body of this method is generated in a way you would not otherwise write.
- // This is done to optimize the compiled bytecode for size and performance.
- int id;
- missingId: {
- id = R.id.prefenerece_sync_status_textview;
- TextView prefenereceSyncStatusTextview = ViewBindings.findChildViewById(rootView, id);
- if (prefenereceSyncStatusTextview == null) {
- break missingId;
- }
-
- id = R.id.preference_sync_button;
- Button preferenceSyncButton = ViewBindings.findChildViewById(rootView, id);
- if (preferenceSyncButton == null) {
- break missingId;
- }
-
- return new SettingsHeaderBinding((LinearLayout) rootView, prefenereceSyncStatusTextview,
- preferenceSyncButton);
- }
- String missingId = rootView.getResources().getResourceName(id);
- throw new NullPointerException("Missing required view with ID: ".concat(missingId));
- }
-}
diff --git a/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/Widget2xBinding.java b/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/Widget2xBinding.java
deleted file mode 100644
index 85e7d09..0000000
--- a/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/Widget2xBinding.java
+++ /dev/null
@@ -1,80 +0,0 @@
-// Generated by view binder compiler. Do not edit!
-package net.micode.notes.databinding;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.viewbinding.ViewBinding;
-import android.viewbinding.ViewBindings;
-import android.widget.FrameLayout;
-import android.widget.ImageView;
-import android.widget.TextView;
-import java.lang.NullPointerException;
-import java.lang.Override;
-import java.lang.String;
-import net.micode.notes.R;
-
-public final class Widget2xBinding implements ViewBinding {
- @NonNull
- private final FrameLayout rootView;
-
- @NonNull
- public final ImageView widgetBgImage;
-
- @NonNull
- public final TextView widgetText;
-
- private Widget2xBinding(@NonNull FrameLayout rootView, @NonNull ImageView widgetBgImage,
- @NonNull TextView widgetText) {
- this.rootView = rootView;
- this.widgetBgImage = widgetBgImage;
- this.widgetText = widgetText;
- }
-
- @Override
- @NonNull
- public FrameLayout getRoot() {
- return rootView;
- }
-
- @NonNull
- public static Widget2xBinding inflate(@NonNull LayoutInflater inflater) {
- return inflate(inflater, null, false);
- }
-
- @NonNull
- public static Widget2xBinding inflate(@NonNull LayoutInflater inflater,
- @Nullable ViewGroup parent, boolean attachToParent) {
- View root = inflater.inflate(R.layout.widget_2x, parent, false);
- if (attachToParent) {
- parent.addView(root);
- }
- return bind(root);
- }
-
- @NonNull
- public static Widget2xBinding bind(@NonNull View rootView) {
- // The body of this method is generated in a way you would not otherwise write.
- // This is done to optimize the compiled bytecode for size and performance.
- int id;
- missingId: {
- id = R.id.widget_bg_image;
- ImageView widgetBgImage = ViewBindings.findChildViewById(rootView, id);
- if (widgetBgImage == null) {
- break missingId;
- }
-
- id = R.id.widget_text;
- TextView widgetText = ViewBindings.findChildViewById(rootView, id);
- if (widgetText == null) {
- break missingId;
- }
-
- return new Widget2xBinding((FrameLayout) rootView, widgetBgImage, widgetText);
- }
- String missingId = rootView.getResources().getResourceName(id);
- throw new NullPointerException("Missing required view with ID: ".concat(missingId));
- }
-}
diff --git a/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/Widget4xBinding.java b/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/Widget4xBinding.java
deleted file mode 100644
index 10208e0..0000000
--- a/xiaomi-src/app/build/generated/data_binding_base_class_source_out/debug/out/net/micode/notes/databinding/Widget4xBinding.java
+++ /dev/null
@@ -1,80 +0,0 @@
-// Generated by view binder compiler. Do not edit!
-package net.micode.notes.databinding;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.viewbinding.ViewBinding;
-import android.viewbinding.ViewBindings;
-import android.widget.FrameLayout;
-import android.widget.ImageView;
-import android.widget.TextView;
-import java.lang.NullPointerException;
-import java.lang.Override;
-import java.lang.String;
-import net.micode.notes.R;
-
-public final class Widget4xBinding implements ViewBinding {
- @NonNull
- private final FrameLayout rootView;
-
- @NonNull
- public final ImageView widgetBgImage;
-
- @NonNull
- public final TextView widgetText;
-
- private Widget4xBinding(@NonNull FrameLayout rootView, @NonNull ImageView widgetBgImage,
- @NonNull TextView widgetText) {
- this.rootView = rootView;
- this.widgetBgImage = widgetBgImage;
- this.widgetText = widgetText;
- }
-
- @Override
- @NonNull
- public FrameLayout getRoot() {
- return rootView;
- }
-
- @NonNull
- public static Widget4xBinding inflate(@NonNull LayoutInflater inflater) {
- return inflate(inflater, null, false);
- }
-
- @NonNull
- public static Widget4xBinding inflate(@NonNull LayoutInflater inflater,
- @Nullable ViewGroup parent, boolean attachToParent) {
- View root = inflater.inflate(R.layout.widget_4x, parent, false);
- if (attachToParent) {
- parent.addView(root);
- }
- return bind(root);
- }
-
- @NonNull
- public static Widget4xBinding bind(@NonNull View rootView) {
- // The body of this method is generated in a way you would not otherwise write.
- // This is done to optimize the compiled bytecode for size and performance.
- int id;
- missingId: {
- id = R.id.widget_bg_image;
- ImageView widgetBgImage = ViewBindings.findChildViewById(rootView, id);
- if (widgetBgImage == null) {
- break missingId;
- }
-
- id = R.id.widget_text;
- TextView widgetText = ViewBindings.findChildViewById(rootView, id);
- if (widgetText == null) {
- break missingId;
- }
-
- return new Widget4xBinding((FrameLayout) rootView, widgetBgImage, widgetText);
- }
- String missingId = rootView.getResources().getResourceName(id);
- throw new NullPointerException("Missing required view with ID: ".concat(missingId));
- }
-}
diff --git a/xiaomi-src/app/build/generated/source/buildConfig/debug/net/micode/notes/BuildConfig.java b/xiaomi-src/app/build/generated/source/buildConfig/debug/net/micode/notes/BuildConfig.java
deleted file mode 100644
index 287d38f..0000000
--- a/xiaomi-src/app/build/generated/source/buildConfig/debug/net/micode/notes/BuildConfig.java
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * Automatically generated file. DO NOT MODIFY
- */
-package net.micode.notes;
-
-public final class BuildConfig {
- public static final boolean DEBUG = Boolean.parseBoolean("true");
- public static final String APPLICATION_ID = "net.micode.notes";
- public static final String BUILD_TYPE = "debug";
- public static final int VERSION_CODE = 1;
- public static final String VERSION_NAME = "1.0";
-}
diff --git a/xiaomi-src/app/build/intermediates/annotation_processor_list/debug/annotationProcessors.json b/xiaomi-src/app/build/intermediates/annotation_processor_list/debug/annotationProcessors.json
deleted file mode 100644
index 9e26dfe..0000000
--- a/xiaomi-src/app/build/intermediates/annotation_processor_list/debug/annotationProcessors.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
\ No newline at end of file
diff --git a/xiaomi-src/app/build/intermediates/apk/debug/app-debug.apk b/xiaomi-src/app/build/intermediates/apk/debug/app-debug.apk
deleted file mode 100644
index 2750485..0000000
Binary files a/xiaomi-src/app/build/intermediates/apk/debug/app-debug.apk and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/apk/debug/output-metadata.json b/xiaomi-src/app/build/intermediates/apk/debug/output-metadata.json
deleted file mode 100644
index d6b0043..0000000
--- a/xiaomi-src/app/build/intermediates/apk/debug/output-metadata.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "version": 3,
- "artifactType": {
- "type": "APK",
- "kind": "Directory"
- },
- "applicationId": "net.micode.notes",
- "variantName": "debug",
- "elements": [
- {
- "type": "SINGLE",
- "filters": [],
- "attributes": [],
- "versionCode": 1,
- "versionName": "1.0",
- "outputFile": "app-debug.apk"
- }
- ],
- "elementType": "File"
-}
\ No newline at end of file
diff --git a/xiaomi-src/app/build/intermediates/apk_ide_redirect_file/debug/redirect.txt b/xiaomi-src/app/build/intermediates/apk_ide_redirect_file/debug/redirect.txt
deleted file mode 100644
index 46dacc6..0000000
--- a/xiaomi-src/app/build/intermediates/apk_ide_redirect_file/debug/redirect.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-#- File Locator -
-listingFile=../../apk/debug/output-metadata.json
diff --git a/xiaomi-src/app/build/intermediates/app_metadata/debug/app-metadata.properties b/xiaomi-src/app/build/intermediates/app_metadata/debug/app-metadata.properties
deleted file mode 100644
index 6dd68ca..0000000
--- a/xiaomi-src/app/build/intermediates/app_metadata/debug/app-metadata.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-appMetadataVersion=1.1
-androidGradlePluginVersion=7.3.0
diff --git a/xiaomi-src/app/build/intermediates/compatible_screen_manifest/debug/output-metadata.json b/xiaomi-src/app/build/intermediates/compatible_screen_manifest/debug/output-metadata.json
deleted file mode 100644
index 714f651..0000000
--- a/xiaomi-src/app/build/intermediates/compatible_screen_manifest/debug/output-metadata.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "version": 3,
- "artifactType": {
- "type": "COMPATIBLE_SCREEN_MANIFEST",
- "kind": "Directory"
- },
- "applicationId": "net.micode.notes",
- "variantName": "debug",
- "elements": []
-}
\ No newline at end of file
diff --git a/xiaomi-src/app/build/intermediates/data_binding_base_class_log_artifact/debug/out/net.micode.notes-binding_classes.json b/xiaomi-src/app/build/intermediates/data_binding_base_class_log_artifact/debug/out/net.micode.notes-binding_classes.json
deleted file mode 100644
index eee12b0..0000000
Binary files a/xiaomi-src/app/build/intermediates/data_binding_base_class_log_artifact/debug/out/net.micode.notes-binding_classes.json and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_0/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_0/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_0/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_1/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_1/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_1/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_10/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_10/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_10/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_11/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_11/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_11/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_12/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_12/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_12/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_13/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_13/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_13/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_14/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_14/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_14/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_15/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_15/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_15/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_2/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_2/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_2/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_3/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_3/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_3/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_4/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_4/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_4/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_5/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_5/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_5/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_6/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_6/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_6/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_7/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_7/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_7/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_8/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_8/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_8/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_9/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_9/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_9/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_0/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_0/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_0/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_1/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_1/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_1/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_10/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_10/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_10/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_11/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_11/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_11/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_12/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_12/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_12/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_13/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_13/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_13/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_14/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_14/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_14/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_15/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_15/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_15/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_2/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_2/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_2/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_3/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_3/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_3/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_4/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_4/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_4/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_5/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_5/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_5/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_6/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_6/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_6/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_7/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_7/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_7/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_8/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_8/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_8/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_9/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_9/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_826d287b5414cfcaaf7f279e64315a947a00834d4419f4068c53e85ca83f2360_bucket_9/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_0/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_0/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_0/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_1/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_1/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_1/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_10/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_10/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_10/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_11/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_11/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_11/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_12/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_12/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_12/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_13/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_13/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_13/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_14/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_14/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_14/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_15/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_15/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_15/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_2/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_2/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_2/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_3/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_3/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_3/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_4/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_4/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_4/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_5/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_5/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_5/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_6/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_6/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_6/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_7/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_7/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_7/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_8/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_8/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_8/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_9/graph.bin b/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_9/graph.bin
deleted file mode 100644
index 601f245..0000000
Binary files a/xiaomi-src/app/build/intermediates/desugar_graph/debug/out/currentProject/jar_f4af4347b71baee83b565b6f60f4a7eabdd132f0f9abd80ec36b9fd96e766e5e_bucket_9/graph.bin and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/dex/debug/mergeProjectDexDebug/0/classes.dex b/xiaomi-src/app/build/intermediates/dex/debug/mergeProjectDexDebug/0/classes.dex
deleted file mode 100644
index 2a45ffe..0000000
Binary files a/xiaomi-src/app/build/intermediates/dex/debug/mergeProjectDexDebug/0/classes.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/dex/debug/mergeProjectDexDebug/11/classes.dex b/xiaomi-src/app/build/intermediates/dex/debug/mergeProjectDexDebug/11/classes.dex
deleted file mode 100644
index 0e271ad..0000000
Binary files a/xiaomi-src/app/build/intermediates/dex/debug/mergeProjectDexDebug/11/classes.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/dex/debug/mergeProjectDexDebug/12/classes.dex b/xiaomi-src/app/build/intermediates/dex/debug/mergeProjectDexDebug/12/classes.dex
deleted file mode 100644
index 85e976a..0000000
Binary files a/xiaomi-src/app/build/intermediates/dex/debug/mergeProjectDexDebug/12/classes.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/dex/debug/mergeProjectDexDebug/15/classes.dex b/xiaomi-src/app/build/intermediates/dex/debug/mergeProjectDexDebug/15/classes.dex
deleted file mode 100644
index 60ee3c1..0000000
Binary files a/xiaomi-src/app/build/intermediates/dex/debug/mergeProjectDexDebug/15/classes.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/dex/debug/mergeProjectDexDebug/4/classes.dex b/xiaomi-src/app/build/intermediates/dex/debug/mergeProjectDexDebug/4/classes.dex
deleted file mode 100644
index 4db03c6..0000000
Binary files a/xiaomi-src/app/build/intermediates/dex/debug/mergeProjectDexDebug/4/classes.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/dex/debug/mergeProjectDexDebug/5/classes.dex b/xiaomi-src/app/build/intermediates/dex/debug/mergeProjectDexDebug/5/classes.dex
deleted file mode 100644
index 1813852..0000000
Binary files a/xiaomi-src/app/build/intermediates/dex/debug/mergeProjectDexDebug/5/classes.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/dex_archive_input_jar_hashes/debug/out b/xiaomi-src/app/build/intermediates/dex_archive_input_jar_hashes/debug/out
deleted file mode 100644
index b730309..0000000
Binary files a/xiaomi-src/app/build/intermediates/dex_archive_input_jar_hashes/debug/out and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/dex_number_of_buckets_file/debug/out b/xiaomi-src/app/build/intermediates/dex_number_of_buckets_file/debug/out
deleted file mode 100644
index 19c7bdb..0000000
--- a/xiaomi-src/app/build/intermediates/dex_number_of_buckets_file/debug/out
+++ /dev/null
@@ -1 +0,0 @@
-16
\ No newline at end of file
diff --git a/xiaomi-src/app/build/intermediates/incremental/dataBindingGenBaseClassesDebug/base_builder_log.json b/xiaomi-src/app/build/intermediates/incremental/dataBindingGenBaseClassesDebug/base_builder_log.json
deleted file mode 100644
index d897786..0000000
Binary files a/xiaomi-src/app/build/intermediates/incremental/dataBindingGenBaseClassesDebug/base_builder_log.json and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/incremental/debug-mergeJavaRes/merge-state b/xiaomi-src/app/build/intermediates/incremental/debug-mergeJavaRes/merge-state
deleted file mode 100644
index 1c983fc..0000000
Binary files a/xiaomi-src/app/build/intermediates/incremental/debug-mergeJavaRes/merge-state and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/incremental/debug/mergeDebugResources/compile-file-map.properties b/xiaomi-src/app/build/intermediates/incremental/debug/mergeDebugResources/compile-file-map.properties
deleted file mode 100644
index e32b84c..0000000
--- a/xiaomi-src/app/build/intermediates/incremental/debug/mergeDebugResources/compile-file-map.properties
+++ /dev/null
@@ -1,98 +0,0 @@
-#Wed Dec 11 10:00:58 CST 2024
-net.micode.notes.app-main-7\:/color/primary_text_dark.xml=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\color_primary_text_dark.xml.flat
-net.micode.notes.app-main-7\:/color/secondary_text_dark.xml=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\color_secondary_text_dark.xml.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/bg_btn_set_color.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_bg_btn_set_color.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/bg_color_btn_mask.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_bg_color_btn_mask.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/call_record.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_call_record.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/clock.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_clock.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/delete.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_delete.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/dropdown_icon.9.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_dropdown_icon.9.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/edit_blue.9.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_blue.9.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/edit_green.9.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_green.9.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/edit_red.9.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_red.9.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/edit_title_blue.9.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_title_blue.9.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/edit_title_green.9.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_title_green.9.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/edit_title_red.9.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_title_red.9.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/edit_title_white.9.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_title_white.9.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/edit_title_yellow.9.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_title_yellow.9.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/edit_white.9.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_white.9.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/edit_yellow.9.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_edit_yellow.9.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/font_large.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_font_large.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/font_normal.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_font_normal.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/font_size_selector_bg.9.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_font_size_selector_bg.9.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/font_small.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_font_small.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/font_super.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_font_super.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/icon_app.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_icon_app.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/list_background.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_background.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/list_blue_down.9.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_blue_down.9.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/list_blue_middle.9.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_blue_middle.9.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/list_blue_single.9.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_blue_single.9.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/list_blue_up.9.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_blue_up.9.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/list_folder.9.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_folder.9.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/list_footer_bg.9.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_footer_bg.9.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/list_green_down.9.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_green_down.9.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/list_green_middle.9.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_green_middle.9.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/list_green_single.9.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_green_single.9.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/list_green_up.9.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_green_up.9.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/list_red_down.9.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_red_down.9.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/list_red_middle.9.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_red_middle.9.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/list_red_single.9.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_red_single.9.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/list_red_up.9.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_red_up.9.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/list_white_down.9.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_white_down.9.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/list_white_middle.9.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_white_middle.9.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/list_white_single.9.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_white_single.9.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/list_white_up.9.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_white_up.9.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/list_yellow_down.9.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_yellow_down.9.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/list_yellow_middle.9.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_yellow_middle.9.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/list_yellow_single.9.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_yellow_single.9.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/list_yellow_up.9.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_list_yellow_up.9.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/menu_delete.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_menu_delete.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/menu_move.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_menu_move.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/new_note_normal.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_new_note_normal.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/new_note_pressed.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_new_note_pressed.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/note_edit_color_selector_panel.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_note_edit_color_selector_panel.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/notification.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_notification.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/search_result.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_search_result.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/selected.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_selected.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/splash.jpg=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_splash.jpg.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/title_alert.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_title_alert.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/title_bar_bg.9.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_title_bar_bg.9.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/widget_2x_blue.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_2x_blue.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/widget_2x_green.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_2x_green.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/widget_2x_red.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_2x_red.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/widget_2x_white.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_2x_white.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/widget_2x_yellow.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_2x_yellow.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/widget_4x_blue.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_4x_blue.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/widget_4x_green.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_4x_green.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/widget_4x_red.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_4x_red.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/widget_4x_white.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_4x_white.png.flat
-net.micode.notes.app-main-7\:/drawable-hdpi/widget_4x_yellow.png=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable-hdpi_widget_4x_yellow.png.flat
-net.micode.notes.app-main-7\:/drawable/new_note.xml=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\drawable_new_note.xml.flat
-net.micode.notes.app-main-7\:/layout/account_dialog_title.xml=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\layout_account_dialog_title.xml.flat
-net.micode.notes.app-main-7\:/layout/activity_splash.xml=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\layout_activity_splash.xml.flat
-net.micode.notes.app-main-7\:/layout/add_account_text.xml=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\layout_add_account_text.xml.flat
-net.micode.notes.app-main-7\:/layout/datetime_picker.xml=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\layout_datetime_picker.xml.flat
-net.micode.notes.app-main-7\:/layout/dialog_edit_text.xml=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\layout_dialog_edit_text.xml.flat
-net.micode.notes.app-main-7\:/layout/folder_list_item.xml=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\layout_folder_list_item.xml.flat
-net.micode.notes.app-main-7\:/layout/note_edit.xml=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\layout_note_edit.xml.flat
-net.micode.notes.app-main-7\:/layout/note_edit_list_item.xml=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\layout_note_edit_list_item.xml.flat
-net.micode.notes.app-main-7\:/layout/note_item.xml=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\layout_note_item.xml.flat
-net.micode.notes.app-main-7\:/layout/note_list.xml=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\layout_note_list.xml.flat
-net.micode.notes.app-main-7\:/layout/note_list_dropdown_menu.xml=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\layout_note_list_dropdown_menu.xml.flat
-net.micode.notes.app-main-7\:/layout/note_list_footer.xml=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\layout_note_list_footer.xml.flat
-net.micode.notes.app-main-7\:/layout/settings_header.xml=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\layout_settings_header.xml.flat
-net.micode.notes.app-main-7\:/layout/widget_2x.xml=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\layout_widget_2x.xml.flat
-net.micode.notes.app-main-7\:/layout/widget_4x.xml=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\layout_widget_4x.xml.flat
-net.micode.notes.app-main-7\:/menu/call_note_edit.xml=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\menu_call_note_edit.xml.flat
-net.micode.notes.app-main-7\:/menu/call_record_folder.xml=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\menu_call_record_folder.xml.flat
-net.micode.notes.app-main-7\:/menu/note_edit.xml=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\menu_note_edit.xml.flat
-net.micode.notes.app-main-7\:/menu/note_list.xml=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\menu_note_list.xml.flat
-net.micode.notes.app-main-7\:/menu/note_list_dropdown.xml=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\menu_note_list_dropdown.xml.flat
-net.micode.notes.app-main-7\:/menu/note_list_options.xml=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\menu_note_list_options.xml.flat
-net.micode.notes.app-main-7\:/menu/sub_folder.xml=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\menu_sub_folder.xml.flat
-net.micode.notes.app-main-7\:/raw-zh-rCN/introduction=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\raw-zh-rCN_introduction.flat
-net.micode.notes.app-main-7\:/raw/introduction=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\raw_introduction.flat
-net.micode.notes.app-main-7\:/xml/preferences.xml=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\xml_preferences.xml.flat
-net.micode.notes.app-main-7\:/xml/searchable.xml=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\xml_searchable.xml.flat
-net.micode.notes.app-main-7\:/xml/widget_2x_info.xml=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\xml_widget_2x_info.xml.flat
-net.micode.notes.app-main-7\:/xml/widget_4x_info.xml=C\:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\build\\intermediates\\merged_res\\debug\\xml_widget_4x_info.xml.flat
diff --git a/xiaomi-src/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values-night-v8/values-night-v8.xml b/xiaomi-src/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values-night-v8/values-night-v8.xml
deleted file mode 100644
index ee3cf4c..0000000
--- a/xiaomi-src/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values-night-v8/values-night-v8.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/xiaomi-src/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values-zh-rCN/values-zh-rCN.xml b/xiaomi-src/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values-zh-rCN/values-zh-rCN.xml
deleted file mode 100644
index d65e0cc..0000000
--- a/xiaomi-src/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values-zh-rCN/values-zh-rCN.xml
+++ /dev/null
@@ -1,108 +0,0 @@
-
-
-
- 短信
- 邮件
-
-
- %1$s 条符合“%2$s”的搜索结果
-
- 确认删除文件夹及所包含的便签吗?
- 确认要删除该条便签吗?
- 确认要删除所选的 %d 条便签吗?
- 删除
- 便签
- 便签2x2
- 便签4x4
- 删除
- 通话便签
- 取消
- 设置
- 成功删除提醒
- 不能为空便签设置闹钟提醒
- 不能将空便签发送到桌面
- 要查看的便签不存在
- 导出文本时发生错误,请检查SD卡
- SD卡被占用,不能操作
- 同步已取消
- 同步失败,发生内部错误
- 同步失败,请检查网络和帐号设置
- 导出失败
- 文件夹 %1$s 已存在,请重新命名
- yyyyMMdd
- MM月dd日 kk:mm
- 已将文本文件(%1$s)输出至SD卡(%2$s)目录
- 已将所选 %1$d 条便签移到 %2$s 文件夹
- 请输入名称
- 已添加到桌面
- 提醒我
- 新建文件夹
- 删除
- 取消全选
- 导出文本
- 修改文件夹名称
- 刪除文件夹
- 查看文件夹
- 大
- 正常
- 文字大小
- 小
- 超大
- 进入清单模式
- 移动到文件夹
- 上一级文件夹
- 退出清单模式
- 删除提醒
- 搜索
- 全选
- 没有选中项,操作无效
- 选中了 %d 项
- 发送到桌面
- 设置
- 分享
- 同步
- 取消同步
- 选择文件夹
- 已过期
- 发送邮件
- 打开地图
- 呼叫电话
- 浏览网页
- 查看
- 知道了
- 新建便签
- ...
- 与google task同步便签记录
- 同步账号
- 添加账号
- 新建便签背景颜色随机
- 取消同步
- 立即同步
- 当前帐号 %1$s
- 如更换同步帐号,过去的帐号同步信息将被清空,再次切换的同时可能会造成数据重复
- 请选择google帐号,便签将与该帐号的google task内容同步。
- 同步便签
- 上次同步于 %1$s
- 取消
- 更换账号
- 删除账号
- 设置
- 正在同步中,不能修改同步帐号
- 同步帐号已设置为%1$s
- 便签
- 搜索便签
- 正在搜索便签
- 便签中的文字
- 创建提醒
- 导出成功
- 与%1$s同步成功
- 正在获取服务器便签列表...
- 登录%1$s...
- 正在同步本地便签...
- 同步已取消
- 同步失败
- 同步成功
- 同步便签...
- 没有关联内容,点击新建便签。
- 访客模式下,便签内容不可见
-
\ No newline at end of file
diff --git a/xiaomi-src/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values-zh-rTW/values-zh-rTW.xml b/xiaomi-src/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values-zh-rTW/values-zh-rTW.xml
deleted file mode 100644
index 226b5bc..0000000
--- a/xiaomi-src/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values-zh-rTW/values-zh-rTW.xml
+++ /dev/null
@@ -1,108 +0,0 @@
-
-
-
- 短信
- 郵件
-
-
- %1$s 條符合”%2$s“的搜尋結果
-
- 確認刪除檔夾及所包含的便簽嗎?
- 确认要删除該條便籤嗎?
- 确认要刪除所選的 %d 條便籤嗎?
- 刪除
- 便簽
- 便簽2x2
- 便簽4x4
- 刪除
- 通話便籤
- 取消
- 設置
- 成功刪除提醒
- 不能爲空便籤設置鬧鐘提醒
- 不能將空便籤發送到桌面
- 要查看的便籤不存在
- 導出TXT時發生錯誤,請檢查SD卡
- SD卡被佔用,不能操作
- 同步已取消
- 同步失敗,發生內部錯誤
- 同步失敗,請檢查網絡和帳號設置
- 導出失敗
- 文件夾 %1$s 已存在,請重新命名
- yyyyMMdd
- MM月dd日 kk:mm
- 已將文本文件(%1$s)導出至SD(%2$s)目錄
- 已將所選 %1$d 便籤移到 %2$s 文件夾
- 請輸入名稱
- 已添加到桌面
- 提醒我
- 新建文件夾
- 刪除
- 取消全選
- 導出文本
- 修改文件夾名稱
- 刪除文件夾
- 查看文件夾
- 大
- 正常
- 文字大小
- 小
- 超大
- 進入清單模式
- 移動到文件夾
- 上一級文件夾
- 退出清單模式
- 刪除提醒
- 搜尋
- 全選
- 沒有選中項,操作無效
- 選中了 %d 項
- 發送到桌面
- 設置
- 分享
- 同步
- 取消同步
- 選擇文件夾
- 已過期
- 發送郵件
- 打開地圖
- 呼叫電話
- 浏覽網頁
- 查看
- 知道了
- 新建便簽
- ...
- 与google task同步便簽記錄
- 同步賬號
- 添加賬號
- 新建便籤背景顏色隨機
- 取消同步
- 立即同步
- 當前帳號 %1$s
- 如更換同步帳號,過去的帳號同步信息將被清空,再次切換的同時可能會造成數據重復
- 請選擇google帳號,便簽將與該帳號的google task內容同步。
- 同步便簽
- 上次同步于 %1$s
- 取消
- 更換賬號
- 刪除賬號
- 設置
- 正在同步中,不能修改同步帳號
- 同步帳號已設置為%1$s
- 便籤
- 搜索便籤
- 正在搜索便籤
- 便籤中的文字
- 創建提醒
- 導出成功
- 與%1$s同步成功
- 正在獲取服務器便籤列表...
- 登陸%1$s...
- 正在同步本地便籤...
- 同步已取消
- 同步失敗
- 同步成功
- 同步便簽...
- 沒有關聯內容,點擊新建便簽。
- 訪客模式下,便籤內容不可見
-
\ No newline at end of file
diff --git a/xiaomi-src/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values/values.xml b/xiaomi-src/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values/values.xml
deleted file mode 100644
index 6ef30e5..0000000
--- a/xiaomi-src/app/build/intermediates/incremental/debug/mergeDebugResources/merged.dir/values/values.xml
+++ /dev/null
@@ -1,184 +0,0 @@
-
-
-
- -%s
- --%s
- --%s
- --%s
-
-
- Messaging
- Email
-
- #335b5b5b
- 26sp
- 20sp
- 17sp
- 14sp
- 33sp
-
- %1$s result for \"%2$s\"
-
- %1$s results for \"%2$s\"
-
- Confirm to delete folder and its notes?
- Confirm to delete this note?
- Confirm to delete the selected %d notes?
- Delete selected notes
- Notes
- Notes 2x2
- Notes 4x4
- Delete
- Call notes
- cancel
- set
- Delete reminder successfully
- Sorry, can not set clock on empty note
- Sorry, can not send and empty note to home
- The note is not exist
- Export failed, please check SD card
- SD card busy, not available now
- Sync is canceled
- Sync failed, internal error occurs
- Sync failed, please check network and account settings
- Export fail
- notes_%s.txt
- /MIUI/notes/
- The folder %1$s exist, please rename
- yyyyMMdd
- MMMd kk:mm
- Export text file (%1$s) to SD (%2$s) directory
- (%d)
- Have moved selected %1$d notes to %2$s folder
- Input name
- Note added to home
- Remind me
- New Folder
- Delete
- Deselect all
- Export text
- Change folder name
- Delete folder
- View folder
- Large
- Medium
- Font size
- Small
- Super
- Enter check list
- Move to folder
- Parent folder
- Leave check list
- Delete reminder
- Search
- Select all
- Nothing selected, the operation is invalid
- %d selected
- Send to home
- Settings
- Share
- Sync
- Cancel syncing
- Select folder
- Expired
- Send email
- Open map
- Call
- Browse web
- Take a look
- Got it
- Add note
- ...
- Sync notes with google task
- Sync account
- Add account
- New note background color random
- Cancel syncing
- Sync immediately
- Current account %1$s
- All sync related information will be deleted, which may result in duplicated items sometime
- Please select a google account. Local notes will be synced with google task.
- Sync notes
- Last sync time %1$s
- yyyy-MM-dd hh:mm:ss
- Cancel
- Change sync account
- Remove sync account
- Settings
- Cannot change the account because sync is in progress
- %1$s has been set as the sync account
- Notes
- Search notes
- Searching Notes
- Text in your notes
- Set reminder
- Export successful
- Sync is successful with account %1$s
- Getting remote note list...
- Logging into %1$s...
- Synchronize local notes with Google Task...
- Sync is canceled
- Sync is failed
- Sync is successful
- Syncing notes...
- No associated note found, click to create associated note.
- Privacy mode,can not see note content
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/xiaomi-src/app/build/intermediates/incremental/debug/mergeDebugResources/merger.xml b/xiaomi-src/app/build/intermediates/incremental/debug/mergeDebugResources/merger.xml
deleted file mode 100644
index f3349fc..0000000
--- a/xiaomi-src/app/build/intermediates/incremental/debug/mergeDebugResources/merger.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-
-
- -%s
- --%s
- --%s
- --%s
-
- Messaging
- Email
-
-
-
- #335b5b5b33sp26sp20sp17sp14spNotesNotes 2x2Notes 4x4No associated note found, click to create associated note.Privacy mode,can not see note content...Add noteDelete reminder successfullySet reminderExpiredyyyyMMddMMMd kk:mmGot itTake a lookCallSend emailBrowse webOpen map/MIUI/notes/notes_%s.txt(%d)New FolderExport textSyncCancel syncingSettingsSearchDeleteMove to folder%d selectedNothing selected, the operation is invalidSelect allDeselect allFont sizeSmallMediumLargeSuperEnter check listLeave check listView folderDelete folderChange folder nameThe folder %1$s exist, please renameShareSend to homeRemind meDelete reminderSelect folderParent folderNote added to homeConfirm to delete folder and its notes?Delete selected notesConfirm to delete the selected %d notes?Confirm to delete this note?Have moved selected %1$d notes to %2$s folderSD card busy, not available nowExport failed, please check SD cardThe note is not existSorry, can not set clock on empty noteSorry, can not send and empty note to homeExport successfulExport failExport text file (%1$s) to SD (%2$s) directorySyncing notes...Sync is successfulSync is failedSync is canceledSync is successful with account %1$sSync failed, please check network and account settingsSync failed, internal error occursSync is canceledLogging into %1$s...Getting remote note list...Synchronize local notes with Google Task...SettingsSync accountSync notes with google taskLast sync time %1$syyyy-MM-dd hh:mm:ssAdd accountChange sync accountRemove sync accountCancelSync immediatelyCancel syncingCurrent account %1$sAll sync related information will be deleted, which may result in duplicated items sometimeSync notesPlease select a google account. Local notes will be synced with google task.Cannot change the account because sync is in progress%1$s has been set as the sync accountNew note background color randomDeleteCall notesInput nameSearching NotesSearch notesText in your notesNotessetcancel
- %1$s result for \"%2$s\"
-
- %1$s results for \"%2$s\"
-
- 短信
- 邮件
- 便签便签2x2便签4x4没有关联内容,点击新建便签。访客模式下,便签内容不可见...新建便签成功删除提醒创建提醒已过期yyyyMMddMM月dd日 kk:mm知道了查看呼叫电话发送邮件浏览网页打开地图新建文件夹导出文本同步取消同步设置搜索删除移动到文件夹选中了 %d 项没有选中项,操作无效全选取消全选文字大小小正常大超大进入清单模式退出清单模式查看文件夹刪除文件夹修改文件夹名称文件夹 %1$s 已存在,请重新命名分享发送到桌面提醒我删除提醒选择文件夹上一级文件夹已添加到桌面删除确认要删除所选的 %d 条便签吗?确认要删除该条便签吗?确认删除文件夹及所包含的便签吗?已将所选 %1$d 条便签移到 %2$s 文件夹SD卡被占用,不能操作导出文本时发生错误,请检查SD卡要查看的便签不存在不能为空便签设置闹钟提醒不能将空便签发送到桌面导出成功导出失败已将文本文件(%1$s)输出至SD卡(%2$s)目录同步便签...同步成功同步失败同步已取消与%1$s同步成功同步失败,请检查网络和帐号设置同步失败,发生内部错误同步已取消登录%1$s...正在获取服务器便签列表...正在同步本地便签...设置同步账号与google task同步便签记录上次同步于 %1$s添加账号更换账号删除账号取消立即同步取消同步当前帐号 %1$s如更换同步帐号,过去的帐号同步信息将被清空,再次切换的同时可能会造成数据重复同步便签请选择google帐号,便签将与该帐号的google task内容同步。正在同步中,不能修改同步帐号同步帐号已设置为%1$s新建便签背景颜色随机删除通话便签请输入名称正在搜索便签搜索便签便签中的文字便签设置取消
- %1$s 条符合“%2$s”的搜索结果
-
- 短信
- 郵件
- 便簽便簽2x2便簽4x4沒有關聯內容,點擊新建便簽。訪客模式下,便籤內容不可見...新建便簽成功刪除提醒創建提醒已過期yyyyMMddMM月dd日 kk:mm知道了查看呼叫電話發送郵件浏覽網頁打開地圖已將所選 %1$d 便籤移到 %2$s 文件夾新建文件夾導出文本同步取消同步設置搜尋刪除移動到文件夾選中了 %d 項沒有選中項,操作無效全選取消全選文字大小小正常大超大進入清單模式退出清單模式查看文件夾刪除文件夾修改文件夾名稱文件夾 %1$s 已存在,請重新命名分享發送到桌面提醒我刪除提醒選擇文件夾上一級文件夾已添加到桌面刪除确认要刪除所選的 %d 條便籤嗎?确认要删除該條便籤嗎?確認刪除檔夾及所包含的便簽嗎?SD卡被佔用,不能操作導出TXT時發生錯誤,請檢查SD卡要查看的便籤不存在不能爲空便籤設置鬧鐘提醒不能將空便籤發送到桌面導出成功導出失敗已將文本文件(%1$s)導出至SD(%2$s)目錄同步便簽...同步成功同步失敗同步已取消與%1$s同步成功同步失敗,請檢查網絡和帳號設置同步失敗,發生內部錯誤同步已取消登陸%1$s...正在獲取服務器便籤列表...正在同步本地便籤...設置同步賬號与google task同步便簽記錄上次同步于 %1$s添加賬號更換賬號刪除賬號取消立即同步取消同步當前帳號 %1$s如更換同步帳號,過去的帳號同步信息將被清空,再次切換的同時可能會造成數據重復同步便簽請選擇google帳號,便簽將與該帳號的google task內容同步。正在同步中,不能修改同步帳號同步帳號已設置為%1$s新建便籤背景顏色隨機刪除通話便籤請輸入名稱正在搜索便籤搜索便籤便籤中的文字便籤設置取消
- %1$s 條符合”%2$s“的搜尋結果
-
-
-
-
\ No newline at end of file
diff --git a/xiaomi-src/app/build/intermediates/incremental/mergeDebugAssets/merger.xml b/xiaomi-src/app/build/intermediates/incremental/mergeDebugAssets/merger.xml
deleted file mode 100644
index f15b952..0000000
--- a/xiaomi-src/app/build/intermediates/incremental/mergeDebugAssets/merger.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
\ No newline at end of file
diff --git a/xiaomi-src/app/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml b/xiaomi-src/app/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml
deleted file mode 100644
index ff6107e..0000000
--- a/xiaomi-src/app/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
\ No newline at end of file
diff --git a/xiaomi-src/app/build/intermediates/incremental/mergeDebugShaders/merger.xml b/xiaomi-src/app/build/intermediates/incremental/mergeDebugShaders/merger.xml
deleted file mode 100644
index 545f2d9..0000000
--- a/xiaomi-src/app/build/intermediates/incremental/mergeDebugShaders/merger.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
\ No newline at end of file
diff --git a/xiaomi-src/app/build/intermediates/incremental/packageDebug/tmp/debug/dex-renamer-state.txt b/xiaomi-src/app/build/intermediates/incremental/packageDebug/tmp/debug/dex-renamer-state.txt
deleted file mode 100644
index d028dc5..0000000
--- a/xiaomi-src/app/build/intermediates/incremental/packageDebug/tmp/debug/dex-renamer-state.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-#Wed Dec 11 09:55:56 CST 2024
-base.0=C\:\\Users\\Administrator\\Desktop\\xiaomi-beifen\\app\\build\\intermediates\\dex\\debug\\mergeProjectDexDebug\\0\\classes.dex
-base.1=C\:\\Users\\Administrator\\Desktop\\xiaomi-beifen\\app\\build\\intermediates\\dex\\debug\\mergeProjectDexDebug\\11\\classes.dex
-base.2=C\:\\Users\\Administrator\\Desktop\\xiaomi-beifen\\app\\build\\intermediates\\dex\\debug\\mergeProjectDexDebug\\12\\classes.dex
-base.3=C\:\\Users\\Administrator\\Desktop\\xiaomi-beifen\\app\\build\\intermediates\\dex\\debug\\mergeProjectDexDebug\\15\\classes.dex
-base.4=C\:\\Users\\Administrator\\Desktop\\xiaomi-beifen\\app\\build\\intermediates\\dex\\debug\\mergeProjectDexDebug\\4\\classes.dex
-base.5=C\:\\Users\\Administrator\\Desktop\\xiaomi-beifen\\app\\build\\intermediates\\dex\\debug\\mergeProjectDexDebug\\5\\classes.dex
-path.0=0/classes.dex
-path.1=11/classes.dex
-path.2=12/classes.dex
-path.3=15/classes.dex
-path.4=4/classes.dex
-path.5=5/classes.dex
-renamed.0=classes.dex
-renamed.1=classes2.dex
-renamed.2=classes3.dex
-renamed.3=classes4.dex
-renamed.4=classes5.dex
-renamed.5=classes6.dex
diff --git a/xiaomi-src/app/build/intermediates/incremental/packageDebug/tmp/debug/zip-cache/androidResources b/xiaomi-src/app/build/intermediates/incremental/packageDebug/tmp/debug/zip-cache/androidResources
deleted file mode 100644
index 9ccf01f..0000000
Binary files a/xiaomi-src/app/build/intermediates/incremental/packageDebug/tmp/debug/zip-cache/androidResources and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/incremental/packageDebug/tmp/debug/zip-cache/javaResources0 b/xiaomi-src/app/build/intermediates/incremental/packageDebug/tmp/debug/zip-cache/javaResources0
deleted file mode 100644
index 945a7c5..0000000
Binary files a/xiaomi-src/app/build/intermediates/incremental/packageDebug/tmp/debug/zip-cache/javaResources0 and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/incremental/processDebugResources/resources-list-for-resources-debug.ap_.txt b/xiaomi-src/app/build/intermediates/incremental/processDebugResources/resources-list-for-resources-debug.ap_.txt
deleted file mode 100644
index 0bf861c..0000000
--- a/xiaomi-src/app/build/intermediates/incremental/processDebugResources/resources-list-for-resources-debug.ap_.txt
+++ /dev/null
@@ -1 +0,0 @@
-C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\color_primary_text_dark.xml.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\color_secondary_text_dark.xml.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_bg_btn_set_color.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_bg_color_btn_mask.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_call_record.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_clock.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_delete.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_dropdown_icon.9.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_edit_blue.9.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_edit_green.9.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_edit_red.9.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_edit_title_blue.9.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_edit_title_green.9.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_edit_title_red.9.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_edit_title_white.9.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_edit_title_yellow.9.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_edit_white.9.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_edit_yellow.9.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_font_large.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_font_normal.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_font_size_selector_bg.9.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_font_small.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_font_super.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_icon_app.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_list_background.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_list_blue_down.9.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_list_blue_middle.9.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_list_blue_single.9.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_list_blue_up.9.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_list_folder.9.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_list_footer_bg.9.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_list_green_down.9.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_list_green_middle.9.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_list_green_single.9.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_list_green_up.9.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_list_red_down.9.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_list_red_middle.9.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_list_red_single.9.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_list_red_up.9.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_list_white_down.9.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_list_white_middle.9.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_list_white_single.9.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_list_white_up.9.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_list_yellow_down.9.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_list_yellow_middle.9.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_list_yellow_single.9.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_list_yellow_up.9.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_menu_delete.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_menu_move.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_new_note_normal.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_new_note_pressed.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_note_edit_color_selector_panel.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_notification.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_search_result.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_selected.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_splash.jpg.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_title_alert.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_title_bar_bg.9.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_widget_2x_blue.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_widget_2x_green.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_widget_2x_red.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_widget_2x_white.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_widget_2x_yellow.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_widget_4x_blue.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_widget_4x_green.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_widget_4x_red.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_widget_4x_white.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable-hdpi_widget_4x_yellow.png.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\drawable_new_note.xml.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\layout_account_dialog_title.xml.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\layout_activity_splash.xml.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\layout_add_account_text.xml.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\layout_datetime_picker.xml.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\layout_dialog_edit_text.xml.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\layout_folder_list_item.xml.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\layout_note_edit.xml.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\layout_note_edit_list_item.xml.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\layout_note_item.xml.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\layout_note_list.xml.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\layout_note_list_dropdown_menu.xml.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\layout_note_list_footer.xml.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\layout_settings_header.xml.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\layout_widget_2x.xml.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\layout_widget_4x.xml.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\menu_call_note_edit.xml.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\menu_call_record_folder.xml.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\menu_note_edit.xml.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\menu_note_list.xml.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\menu_note_list_dropdown.xml.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\menu_note_list_options.xml.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\menu_sub_folder.xml.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\raw-zh-rCN_introduction.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\raw_introduction.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\values-night-v8_values-night-v8.arsc.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\values-zh-rCN_values-zh-rCN.arsc.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\values-zh-rTW_values-zh-rTW.arsc.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\values_values.arsc.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\xml_preferences.xml.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\xml_searchable.xml.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\xml_widget_2x_info.xml.flat C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug\xml_widget_4x_info.xml.flat
\ No newline at end of file
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/BuildConfig.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/BuildConfig.class
deleted file mode 100644
index b700839..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/BuildConfig.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Contact.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Contact.class
deleted file mode 100644
index 70158fb..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Contact.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$CallNote.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$CallNote.class
deleted file mode 100644
index c40a8f9..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$CallNote.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$DataColumns.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$DataColumns.class
deleted file mode 100644
index 569dbdc..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$DataColumns.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$DataConstants.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$DataConstants.class
deleted file mode 100644
index 6bb9e91..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$DataConstants.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$NoteColumns.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$NoteColumns.class
deleted file mode 100644
index 36c8d49..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$NoteColumns.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$TextNote.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$TextNote.class
deleted file mode 100644
index 8488382..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes$TextNote.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes.class
deleted file mode 100644
index e916136..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/Notes.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesDatabaseHelper$TABLE.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesDatabaseHelper$TABLE.class
deleted file mode 100644
index 64fe9eb..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesDatabaseHelper$TABLE.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesDatabaseHelper.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesDatabaseHelper.class
deleted file mode 100644
index a327029..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesDatabaseHelper.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesProvider.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesProvider.class
deleted file mode 100644
index 8c8ad53..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/data/NotesProvider.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/AccountDialogTitleBinding.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/AccountDialogTitleBinding.class
deleted file mode 100644
index 18d0e87..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/AccountDialogTitleBinding.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/ActivitySplashBinding.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/ActivitySplashBinding.class
deleted file mode 100644
index 712fabf..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/ActivitySplashBinding.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/AddAccountTextBinding.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/AddAccountTextBinding.class
deleted file mode 100644
index fc33062..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/AddAccountTextBinding.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/DatetimePickerBinding.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/DatetimePickerBinding.class
deleted file mode 100644
index 0527b82..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/DatetimePickerBinding.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/DialogEditTextBinding.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/DialogEditTextBinding.class
deleted file mode 100644
index a746720..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/DialogEditTextBinding.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/FolderListItemBinding.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/FolderListItemBinding.class
deleted file mode 100644
index 6f6f4ff..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/FolderListItemBinding.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/NoteEditBinding.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/NoteEditBinding.class
deleted file mode 100644
index ff2039f..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/NoteEditBinding.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/NoteEditListItemBinding.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/NoteEditListItemBinding.class
deleted file mode 100644
index 089da38..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/NoteEditListItemBinding.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/NoteItemBinding.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/NoteItemBinding.class
deleted file mode 100644
index 4c7a72f..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/NoteItemBinding.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/NoteListBinding.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/NoteListBinding.class
deleted file mode 100644
index 36d5d39..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/NoteListBinding.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/NoteListDropdownMenuBinding.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/NoteListDropdownMenuBinding.class
deleted file mode 100644
index 01987ab..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/NoteListDropdownMenuBinding.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/NoteListFooterBinding.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/NoteListFooterBinding.class
deleted file mode 100644
index 2f8608e..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/NoteListFooterBinding.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/SettingsHeaderBinding.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/SettingsHeaderBinding.class
deleted file mode 100644
index f605989..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/SettingsHeaderBinding.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/Widget2xBinding.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/Widget2xBinding.class
deleted file mode 100644
index 6b65876..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/Widget2xBinding.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/Widget4xBinding.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/Widget4xBinding.class
deleted file mode 100644
index 5438a18..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/databinding/Widget4xBinding.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/MetaData.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/MetaData.class
deleted file mode 100644
index 6ef004f..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/MetaData.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/Node.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/Node.class
deleted file mode 100644
index e68c5fa..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/Node.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/SqlData.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/SqlData.class
deleted file mode 100644
index 61126e7..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/SqlData.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/SqlNote.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/SqlNote.class
deleted file mode 100644
index 8336b28..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/SqlNote.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/Task.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/Task.class
deleted file mode 100644
index b8e4f50..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/Task.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/TaskList.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/TaskList.class
deleted file mode 100644
index 7d648c4..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/data/TaskList.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/exception/ActionFailureException.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/exception/ActionFailureException.class
deleted file mode 100644
index b64ce4c..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/exception/ActionFailureException.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/exception/NetworkFailureException.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/exception/NetworkFailureException.class
deleted file mode 100644
index 076f573..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/gtask/exception/NetworkFailureException.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/Note$NoteData.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/Note$NoteData.class
deleted file mode 100644
index c4c0e52..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/Note$NoteData.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/Note.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/Note.class
deleted file mode 100644
index 3bdb89b..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/Note.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/WorkingNote$NoteSettingChangedListener.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/WorkingNote$NoteSettingChangedListener.class
deleted file mode 100644
index 15f1f77..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/WorkingNote$NoteSettingChangedListener.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/WorkingNote.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/WorkingNote.class
deleted file mode 100644
index 5c2ba7d..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/model/WorkingNote.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/BackupUtils$TextExport.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/BackupUtils$TextExport.class
deleted file mode 100644
index 80c1b84..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/BackupUtils$TextExport.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/BackupUtils.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/BackupUtils.class
deleted file mode 100644
index 40f3b1c..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/BackupUtils.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/DataUtils.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/DataUtils.class
deleted file mode 100644
index 0c6ab0c..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/DataUtils.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/GTaskStringUtils.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/GTaskStringUtils.class
deleted file mode 100644
index 1d6cecc..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/GTaskStringUtils.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$NoteBgResources.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$NoteBgResources.class
deleted file mode 100644
index b52c174..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$NoteBgResources.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$NoteItemBgResources.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$NoteItemBgResources.class
deleted file mode 100644
index 3d5c2ed..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$NoteItemBgResources.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$TextAppearanceResources.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$TextAppearanceResources.class
deleted file mode 100644
index 3cae2c3..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$TextAppearanceResources.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$WidgetBgResources.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$WidgetBgResources.class
deleted file mode 100644
index 31adf23..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser$WidgetBgResources.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser.class
deleted file mode 100644
index c3ed6b2..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/tool/ResourceParser.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmAlertActivity.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmAlertActivity.class
deleted file mode 100644
index ce35255..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmAlertActivity.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmInitReceiver.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmInitReceiver.class
deleted file mode 100644
index 2430768..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmInitReceiver.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmReceiver.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmReceiver.class
deleted file mode 100644
index b0c3080..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/AlarmReceiver.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$1.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$1.class
deleted file mode 100644
index d5f41b6..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$1.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$2.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$2.class
deleted file mode 100644
index 9dffd59..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$2.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$3.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$3.class
deleted file mode 100644
index 3d1e0bc..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$3.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$4.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$4.class
deleted file mode 100644
index 7946f08..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$4.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$OnDateTimeChangedListener.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$OnDateTimeChangedListener.class
deleted file mode 100644
index 255a4e6..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker$OnDateTimeChangedListener.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker.class
deleted file mode 100644
index 64b4f35..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePicker.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePickerDialog$1.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePickerDialog$1.class
deleted file mode 100644
index 85e54d4..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePickerDialog$1.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePickerDialog$OnDateTimeSetListener.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePickerDialog$OnDateTimeSetListener.class
deleted file mode 100644
index 70481dd..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePickerDialog$OnDateTimeSetListener.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePickerDialog.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePickerDialog.class
deleted file mode 100644
index 3c4b72f..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DateTimePickerDialog.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DropdownMenu$1.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DropdownMenu$1.class
deleted file mode 100644
index 791dd5e..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DropdownMenu$1.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DropdownMenu.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DropdownMenu.class
deleted file mode 100644
index 274db52..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/DropdownMenu.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/FoldersListAdapter$FolderListItem.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/FoldersListAdapter$FolderListItem.class
deleted file mode 100644
index 1871ddd..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/FoldersListAdapter$FolderListItem.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/FoldersListAdapter.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/FoldersListAdapter.class
deleted file mode 100644
index 928ce77..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/FoldersListAdapter.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$1.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$1.class
deleted file mode 100644
index 26ebe5c..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$1.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$2.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$2.class
deleted file mode 100644
index e65f4dd..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$2.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$3.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$3.class
deleted file mode 100644
index dd5e8c2..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$3.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.class
deleted file mode 100644
index ece883c..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity.class
deleted file mode 100644
index 06f3508..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditActivity.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditText$1.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditText$1.class
deleted file mode 100644
index 7a5c53e..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditText$1.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditText$OnTextViewChangeListener.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditText$OnTextViewChangeListener.class
deleted file mode 100644
index 9874f47..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditText$OnTextViewChangeListener.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditText.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditText.class
deleted file mode 100644
index 4c358b1..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteEditText.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteItemData.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteItemData.class
deleted file mode 100644
index 486feb9..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NoteItemData.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$1.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$1.class
deleted file mode 100644
index f238810..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$1.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$2.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$2.class
deleted file mode 100644
index 64c0e0f..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$2.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$3.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$3.class
deleted file mode 100644
index c602dad..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$3.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$4.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$4.class
deleted file mode 100644
index cab507c..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$4.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$5.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$5.class
deleted file mode 100644
index eb4a040..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$5.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$6.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$6.class
deleted file mode 100644
index 8406f20..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$6.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$7.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$7.class
deleted file mode 100644
index 2e9e40f..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$7.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$8.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$8.class
deleted file mode 100644
index 816f0d5..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$8.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$9.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$9.class
deleted file mode 100644
index d03a80e..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$9.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.class
deleted file mode 100644
index 255ae71..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ListEditState.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ListEditState.class
deleted file mode 100644
index 84d6522..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ListEditState.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$1.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$1.class
deleted file mode 100644
index adf5cef..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$1.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$2.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$2.class
deleted file mode 100644
index f07b7f8..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback$2.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback.class
deleted file mode 100644
index 8579338..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$ModeCallback.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.class
deleted file mode 100644
index 9f8fc6f..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.class
deleted file mode 100644
index 3b8c87e..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity.class
deleted file mode 100644
index df60ff5..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListActivity.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListAdapter$AppWidgetAttribute.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListAdapter$AppWidgetAttribute.class
deleted file mode 100644
index 2b4bd1f..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListAdapter$AppWidgetAttribute.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListAdapter.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListAdapter.class
deleted file mode 100644
index 32110b3..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListAdapter.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListItem.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListItem.class
deleted file mode 100644
index 59b7eb7..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesListItem.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$1.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$1.class
deleted file mode 100644
index b5ecf96..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$1.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$2.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$2.class
deleted file mode 100644
index 7022c73..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$2.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$3.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$3.class
deleted file mode 100644
index 552d325..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$3.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$4.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$4.class
deleted file mode 100644
index cc50cd6..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$4.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$5.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$5.class
deleted file mode 100644
index 0b0913d..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$5.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$6.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$6.class
deleted file mode 100644
index 1590476..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$6.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$GTaskReceiver.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$GTaskReceiver.class
deleted file mode 100644
index e9446e9..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity$GTaskReceiver.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity.class
deleted file mode 100644
index 8a59db7..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/NotesPreferenceActivity.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/SplashActivity$1.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/SplashActivity$1.class
deleted file mode 100644
index 36c78a2..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/SplashActivity$1.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/SplashActivity.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/SplashActivity.class
deleted file mode 100644
index a8f1b04..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/ui/SplashActivity.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/widget/NoteWidgetProvider.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/widget/NoteWidgetProvider.class
deleted file mode 100644
index f7be182..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/widget/NoteWidgetProvider.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/widget/NoteWidgetProvider_2x.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/widget/NoteWidgetProvider_2x.class
deleted file mode 100644
index 2313ce1..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/widget/NoteWidgetProvider_2x.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/widget/NoteWidgetProvider_4x.class b/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/widget/NoteWidgetProvider_4x.class
deleted file mode 100644
index e7ff5a9..0000000
Binary files a/xiaomi-src/app/build/intermediates/javac/debug/classes/net/micode/notes/widget/NoteWidgetProvider_4x.class and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt b/xiaomi-src/app/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt
deleted file mode 100644
index 2def0fa..0000000
--- a/xiaomi-src/app/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt
+++ /dev/null
@@ -1,278 +0,0 @@
-1
-2
-3
-4
-8
-9 C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml
-11 android:targetSdkVersion="32" />
-11-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml
-12
-13
-14
-14-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:8:5-81
-14-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:8:22-78
-15
-15-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:9:5-88
-15-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:9:22-85
-16
-16-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:10:5-67
-16-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:10:22-64
-17
-17-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:11:5-72
-17-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:11:22-69
-18
-18-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:12:5-74
-18-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:12:22-71
-19
-19-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:13:5-80
-19-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:13:22-77
-20
-20-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:14:5-71
-20-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:14:22-68
-21
-21-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:15:5-74
-21-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:15:22-71
-22
-22-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:16:5-81
-22-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:16:22-78
-23
-24 C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:19:5-141:19
-25 android:debuggable="true"
-26 android:icon="@drawable/icon_app"
-26-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:20:9-42
-27 android:label="@string/app_name"
-27-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:21:9-41
-28 android:testOnly="true" >
-29
-30
-31 C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:23:9-36:20
-32 android:name="net.micode.notes.ui.NotesListActivity"
-32-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:24:13-49
-33 android:configChanges="keyboardHidden|orientation|screenSize"
-33-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:25:13-74
-34 android:exported="true"
-34-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:31:13-36
-35 android:label="@string/app_name"
-35-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:26:13-45
-36 android:launchMode="singleTop"
-36-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:27:13-43
-37 android:theme="@style/NoteTheme"
-37-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:28:13-45
-38 android:windowSoftInputMode="adjustPan" >
-38-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:30:13-52
-39
-39-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:32:13-35:29
-40
-40-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:33:17-69
-40-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:33:25-66
-41
-42
-42-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:34:17-77
-42-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:34:27-74
-43
-44
-45
-46
-47 C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:39:9-72:20
-48 android:name="net.micode.notes.ui.NoteEditActivity"
-48-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:40:13-48
-49 android:configChanges="keyboardHidden|orientation|screenSize"
-49-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:41:13-74
-50 android:exported="true"
-50-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:44:13-36
-51 android:launchMode="singleTop"
-51-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:42:13-43
-52 android:theme="@style/NoteTheme" >
-52-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:43:13-45
-53
-54
-55
-55-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:46:13-54:29
-55-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:47:17-38
-56
-56-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:49:17-69
-56-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:49:25-66
-57
-58
-58-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:50:17-76
-58-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:50:27-73
-59
-60
-60-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:52:17-78
-60-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:52:23-75
-61
-61-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:52:17-78
-61-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:52:23-75
-62
-63
-64
-64-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:56:13-62:29
-65
-65-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:57:17-79
-65-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:57:25-76
-66
-67
-67-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:50:17-76
-67-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:50:27-73
-68
-69
-69-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:52:17-78
-69-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:52:23-75
-70
-70-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:52:17-78
-70-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:52:23-75
-71
-72
-73
-73-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:64:13-67:29
-74
-74-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:65:17-71
-74-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:65:25-68
-75
-76
-76-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:50:17-76
-76-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:50:27-73
-77
-78
-79 C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:69:13-71:54
-80 android:name="android.app.searchable"
-80-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:70:17-54
-81 android:resource="@xml/searchable" />
-81-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:71:17-51
-82
-83
-84
-85 C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:75:9-78:43
-86 android:name="net.micode.notes.data.NotesProvider"
-86-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:76:13-63
-87 android:authorities="micode_notes"
-87-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:77:13-47
-88 android:multiprocess="true" />
-88-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:78:13-40
-89
-90
-91 C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:81:9-93:20
-92 android:name="net.micode.notes.widget.NoteWidgetProvider_2x"
-92-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:82:13-57
-93 android:exported="true"
-93-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:84:13-36
-94 android:label="@string/app_widget2x2" >
-94-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:83:13-50
-95
-95-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:85:13-89:29
-96
-96-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:86:17-84
-96-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:86:25-81
-97
-97-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:87:17-85
-97-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:87:25-82
-98
-98-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:88:17-85
-98-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:88:25-82
-99
-100
-101 C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:90:13-92:58
-102 android:name="android.appwidget.provider"
-102-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:91:17-58
-103 android:resource="@xml/widget_2x_info" />
-103-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:92:17-55
-104
-105
-106 C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:95:9-107:20
-107 android:name="net.micode.notes.widget.NoteWidgetProvider_4x"
-107-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:96:13-57
-108 android:exported="true"
-108-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:98:13-36
-109 android:label="@string/app_widget4x4" >
-109-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:97:13-50
-110
-110-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:85:13-89:29
-111
-111-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:86:17-84
-111-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:86:25-81
-112
-112-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:87:17-85
-112-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:87:25-82
-113
-113-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:88:17-85
-113-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:88:25-82
-114
-115
-116 C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:90:13-92:58
-117 android:name="android.appwidget.provider"
-117-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:91:17-58
-118 android:resource="@xml/widget_4x_info" />
-118-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:92:17-55
-119
-120
-121
-122 C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:110:9-116:20
-123 android:name="net.micode.notes.ui.AlarmInitReceiver"
-123-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:111:13-49
-124 android:exported="true" >
-124-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:112:13-36
-125
-125-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:113:13-115:29
-126
-126-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:114:17-79
-126-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:114:25-76
-127
-128
-129
-130
-131 C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:119:9-121:50
-132 android:name="net.micode.notes.ui.AlarmReceiver"
-132-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:120:13-61
-133 android:process=":remote" />
-133-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:121:13-38
-134
-135
-136 C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:124:9-128:87
-137 android:name="net.micode.notes.ui.AlarmAlertActivity"
-137-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:125:13-50
-138 android:label="@string/app_name"
-138-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:126:13-45
-139 android:launchMode="singleInstance"
-139-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:127:13-48
-140 android:theme="@android:style/Theme.Holo.Wallpaper.NoTitleBar" />
-140-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:128:13-75
-141
-142
-143 C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:131:9-135:72
-144 android:name="net.micode.notes.ui.NotesPreferenceActivity"
-144-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:132:13-71
-145 android:label="@string/preferences_title"
-145-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:133:13-54
-146 android:launchMode="singleTop"
-146-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:134:13-43
-147 android:theme="@android:style/Theme.Holo.Light" />
-147-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:135:13-60
-148
-149
-150 C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:138:9-140:52
-151 android:name="android.app.default_searchable"
-151-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:139:13-58
-152 android:value=".ui.NoteEditActivity" />
-152-->C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:140:13-49
-153
-154
-155
diff --git a/xiaomi-src/app/build/intermediates/merged_java_res/debug/base.jar b/xiaomi-src/app/build/intermediates/merged_java_res/debug/base.jar
deleted file mode 100644
index 15cb0ec..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_java_res/debug/base.jar and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_manifest/debug/AndroidManifest.xml b/xiaomi-src/app/build/intermediates/merged_manifest/debug/AndroidManifest.xml
deleted file mode 100644
index 5b73466..0000000
--- a/xiaomi-src/app/build/intermediates/merged_manifest/debug/AndroidManifest.xml
+++ /dev/null
@@ -1,155 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/xiaomi-src/app/build/intermediates/merged_manifests/debug/AndroidManifest.xml b/xiaomi-src/app/build/intermediates/merged_manifests/debug/AndroidManifest.xml
deleted file mode 100644
index 5b73466..0000000
--- a/xiaomi-src/app/build/intermediates/merged_manifests/debug/AndroidManifest.xml
+++ /dev/null
@@ -1,155 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/xiaomi-src/app/build/intermediates/merged_manifests/debug/output-metadata.json b/xiaomi-src/app/build/intermediates/merged_manifests/debug/output-metadata.json
deleted file mode 100644
index d00465c..0000000
--- a/xiaomi-src/app/build/intermediates/merged_manifests/debug/output-metadata.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "version": 3,
- "artifactType": {
- "type": "MERGED_MANIFESTS",
- "kind": "Directory"
- },
- "applicationId": "net.micode.notes",
- "variantName": "debug",
- "elements": [
- {
- "type": "SINGLE",
- "filters": [],
- "attributes": [],
- "versionCode": 1,
- "versionName": "1.0",
- "outputFile": "AndroidManifest.xml"
- }
- ],
- "elementType": "File"
-}
\ No newline at end of file
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/color_primary_text_dark.xml.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/color_primary_text_dark.xml.flat
deleted file mode 100644
index a859750..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/color_primary_text_dark.xml.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/color_secondary_text_dark.xml.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/color_secondary_text_dark.xml.flat
deleted file mode 100644
index b1d6319..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/color_secondary_text_dark.xml.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_bg_btn_set_color.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_bg_btn_set_color.png.flat
deleted file mode 100644
index a783113..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_bg_btn_set_color.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_bg_color_btn_mask.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_bg_color_btn_mask.png.flat
deleted file mode 100644
index a9576bb..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_bg_color_btn_mask.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_call_record.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_call_record.png.flat
deleted file mode 100644
index 0692876..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_call_record.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_clock.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_clock.png.flat
deleted file mode 100644
index a5cd8ef..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_clock.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_dropdown_icon.9.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_dropdown_icon.9.png.flat
deleted file mode 100644
index 74c78c0..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_dropdown_icon.9.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_blue.9.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_blue.9.png.flat
deleted file mode 100644
index 5436926..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_blue.9.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_green.9.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_green.9.png.flat
deleted file mode 100644
index 4d95a89..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_green.9.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_red.9.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_red.9.png.flat
deleted file mode 100644
index ce52bc1..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_red.9.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_title_blue.9.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_title_blue.9.png.flat
deleted file mode 100644
index b376e80..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_title_blue.9.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_title_green.9.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_title_green.9.png.flat
deleted file mode 100644
index b8cc9ab..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_title_green.9.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_title_red.9.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_title_red.9.png.flat
deleted file mode 100644
index 2af509b..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_title_red.9.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_title_white.9.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_title_white.9.png.flat
deleted file mode 100644
index f3a6c60..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_title_white.9.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_title_yellow.9.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_title_yellow.9.png.flat
deleted file mode 100644
index 8828ae3..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_title_yellow.9.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_white.9.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_white.9.png.flat
deleted file mode 100644
index 8a98c38..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_white.9.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_yellow.9.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_yellow.9.png.flat
deleted file mode 100644
index 4c9bdf9..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_edit_yellow.9.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_font_large.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_font_large.png.flat
deleted file mode 100644
index 1422573..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_font_large.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_font_normal.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_font_normal.png.flat
deleted file mode 100644
index 704993a..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_font_normal.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_font_size_selector_bg.9.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_font_size_selector_bg.9.png.flat
deleted file mode 100644
index 9a4b989..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_font_size_selector_bg.9.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_font_small.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_font_small.png.flat
deleted file mode 100644
index 11857a4..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_font_small.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_font_super.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_font_super.png.flat
deleted file mode 100644
index 2227ab8..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_font_super.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_icon_app.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_icon_app.png.flat
deleted file mode 100644
index 27a8412..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_icon_app.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_background.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_background.png.flat
deleted file mode 100644
index 0bda0bc..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_background.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_blue_down.9.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_blue_down.9.png.flat
deleted file mode 100644
index 75f3cd0..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_blue_down.9.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_blue_middle.9.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_blue_middle.9.png.flat
deleted file mode 100644
index f82dd6d..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_blue_middle.9.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_blue_single.9.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_blue_single.9.png.flat
deleted file mode 100644
index d57fe3a..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_blue_single.9.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_blue_up.9.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_blue_up.9.png.flat
deleted file mode 100644
index 683b6f1..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_blue_up.9.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_folder.9.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_folder.9.png.flat
deleted file mode 100644
index e75e056..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_folder.9.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_footer_bg.9.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_footer_bg.9.png.flat
deleted file mode 100644
index 3f89243..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_footer_bg.9.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_green_down.9.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_green_down.9.png.flat
deleted file mode 100644
index 6b24efc..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_green_down.9.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_green_middle.9.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_green_middle.9.png.flat
deleted file mode 100644
index 4f7fa61..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_green_middle.9.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_green_single.9.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_green_single.9.png.flat
deleted file mode 100644
index 725a39f..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_green_single.9.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_green_up.9.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_green_up.9.png.flat
deleted file mode 100644
index f7b11e8..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_green_up.9.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_red_down.9.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_red_down.9.png.flat
deleted file mode 100644
index 82de739..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_red_down.9.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_red_middle.9.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_red_middle.9.png.flat
deleted file mode 100644
index 224f699..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_red_middle.9.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_red_single.9.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_red_single.9.png.flat
deleted file mode 100644
index 6c1bc35..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_red_single.9.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_red_up.9.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_red_up.9.png.flat
deleted file mode 100644
index d29584e..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_red_up.9.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_white_down.9.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_white_down.9.png.flat
deleted file mode 100644
index 394cf64..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_white_down.9.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_white_middle.9.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_white_middle.9.png.flat
deleted file mode 100644
index 6a55c1f..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_white_middle.9.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_white_single.9.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_white_single.9.png.flat
deleted file mode 100644
index d3094aa..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_white_single.9.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_white_up.9.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_white_up.9.png.flat
deleted file mode 100644
index a3558dd..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_white_up.9.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_yellow_down.9.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_yellow_down.9.png.flat
deleted file mode 100644
index e9e827a..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_yellow_down.9.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_yellow_middle.9.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_yellow_middle.9.png.flat
deleted file mode 100644
index 812fbce..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_yellow_middle.9.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_yellow_single.9.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_yellow_single.9.png.flat
deleted file mode 100644
index c4a34ba..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_yellow_single.9.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_yellow_up.9.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_yellow_up.9.png.flat
deleted file mode 100644
index a0b2963..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_list_yellow_up.9.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_menu_delete.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_menu_delete.png.flat
deleted file mode 100644
index 0d0a7c7..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_menu_delete.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_menu_move.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_menu_move.png.flat
deleted file mode 100644
index 7b7b9c9..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_menu_move.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_new_note_normal.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_new_note_normal.png.flat
deleted file mode 100644
index ac802ba..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_new_note_normal.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_new_note_pressed.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_new_note_pressed.png.flat
deleted file mode 100644
index ee82d6c..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_new_note_pressed.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_note_edit_color_selector_panel.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_note_edit_color_selector_panel.png.flat
deleted file mode 100644
index 8d48e8e..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_note_edit_color_selector_panel.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_notification.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_notification.png.flat
deleted file mode 100644
index dbeee0b..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_notification.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_search_result.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_search_result.png.flat
deleted file mode 100644
index e55822d..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_search_result.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_selected.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_selected.png.flat
deleted file mode 100644
index be2aedd..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_selected.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_splash.jpg.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_splash.jpg.flat
deleted file mode 100644
index 4ffc074..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_splash.jpg.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_title_alert.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_title_alert.png.flat
deleted file mode 100644
index 8f6daec..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_title_alert.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_title_bar_bg.9.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_title_bar_bg.9.png.flat
deleted file mode 100644
index 87aeb20..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_title_bar_bg.9.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_2x_blue.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_2x_blue.png.flat
deleted file mode 100644
index 825e93d..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_2x_blue.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_2x_green.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_2x_green.png.flat
deleted file mode 100644
index e039b02..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_2x_green.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_2x_red.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_2x_red.png.flat
deleted file mode 100644
index a2eb42b..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_2x_red.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_2x_white.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_2x_white.png.flat
deleted file mode 100644
index c7eff78..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_2x_white.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_2x_yellow.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_2x_yellow.png.flat
deleted file mode 100644
index decfaad..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_2x_yellow.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_4x_blue.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_4x_blue.png.flat
deleted file mode 100644
index 7c3cf3a..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_4x_blue.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_4x_green.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_4x_green.png.flat
deleted file mode 100644
index 1c75d02..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_4x_green.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_4x_red.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_4x_red.png.flat
deleted file mode 100644
index e82e879..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_4x_red.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_4x_white.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_4x_white.png.flat
deleted file mode 100644
index 366fd2c..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_4x_white.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_4x_yellow.png.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_4x_yellow.png.flat
deleted file mode 100644
index ac23b11..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_widget_4x_yellow.png.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable_new_note.xml.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/drawable_new_note.xml.flat
deleted file mode 100644
index eea51ac..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable_new_note.xml.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/layout_account_dialog_title.xml.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/layout_account_dialog_title.xml.flat
deleted file mode 100644
index 6475480..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/layout_account_dialog_title.xml.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/layout_activity_splash.xml.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/layout_activity_splash.xml.flat
deleted file mode 100644
index 3a2c6a4..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/layout_activity_splash.xml.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/layout_add_account_text.xml.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/layout_add_account_text.xml.flat
deleted file mode 100644
index 5e218e7..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/layout_add_account_text.xml.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/layout_datetime_picker.xml.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/layout_datetime_picker.xml.flat
deleted file mode 100644
index cce8a1a..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/layout_datetime_picker.xml.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/layout_dialog_edit_text.xml.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/layout_dialog_edit_text.xml.flat
deleted file mode 100644
index 12f044b..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/layout_dialog_edit_text.xml.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/layout_folder_list_item.xml.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/layout_folder_list_item.xml.flat
deleted file mode 100644
index 2513904..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/layout_folder_list_item.xml.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/layout_note_edit.xml.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/layout_note_edit.xml.flat
deleted file mode 100644
index f394d7b..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/layout_note_edit.xml.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/layout_note_edit_list_item.xml.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/layout_note_edit_list_item.xml.flat
deleted file mode 100644
index 3827879..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/layout_note_edit_list_item.xml.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/layout_note_item.xml.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/layout_note_item.xml.flat
deleted file mode 100644
index d50b357..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/layout_note_item.xml.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/layout_note_list.xml.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/layout_note_list.xml.flat
deleted file mode 100644
index a3e8ee9..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/layout_note_list.xml.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/layout_note_list_dropdown_menu.xml.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/layout_note_list_dropdown_menu.xml.flat
deleted file mode 100644
index 2d26bd4..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/layout_note_list_dropdown_menu.xml.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/layout_note_list_footer.xml.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/layout_note_list_footer.xml.flat
deleted file mode 100644
index 8acf3c9..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/layout_note_list_footer.xml.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/layout_settings_header.xml.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/layout_settings_header.xml.flat
deleted file mode 100644
index a8cd9d3..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/layout_settings_header.xml.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/layout_widget_2x.xml.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/layout_widget_2x.xml.flat
deleted file mode 100644
index 6881df4..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/layout_widget_2x.xml.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/layout_widget_4x.xml.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/layout_widget_4x.xml.flat
deleted file mode 100644
index a620b0b..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/layout_widget_4x.xml.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/menu_call_note_edit.xml.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/menu_call_note_edit.xml.flat
deleted file mode 100644
index 9e2a562..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/menu_call_note_edit.xml.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/menu_call_record_folder.xml.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/menu_call_record_folder.xml.flat
deleted file mode 100644
index 25c44d3..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/menu_call_record_folder.xml.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/menu_note_edit.xml.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/menu_note_edit.xml.flat
deleted file mode 100644
index 2c98619..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/menu_note_edit.xml.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/menu_note_list.xml.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/menu_note_list.xml.flat
deleted file mode 100644
index 94a438d..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/menu_note_list.xml.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/menu_note_list_dropdown.xml.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/menu_note_list_dropdown.xml.flat
deleted file mode 100644
index 7ae9685..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/menu_note_list_dropdown.xml.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/menu_note_list_options.xml.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/menu_note_list_options.xml.flat
deleted file mode 100644
index 4103a36..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/menu_note_list_options.xml.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/menu_sub_folder.xml.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/menu_sub_folder.xml.flat
deleted file mode 100644
index 6fa6191..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/menu_sub_folder.xml.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/raw-zh-rCN_introduction.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/raw-zh-rCN_introduction.flat
deleted file mode 100644
index 17cb018..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/raw-zh-rCN_introduction.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/raw_introduction.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/raw_introduction.flat
deleted file mode 100644
index 608c6fd..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/raw_introduction.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/values-night-v8_values-night-v8.arsc.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/values-night-v8_values-night-v8.arsc.flat
deleted file mode 100644
index 4c7a5d3..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/values-night-v8_values-night-v8.arsc.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/values-zh-rCN_values-zh-rCN.arsc.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/values-zh-rCN_values-zh-rCN.arsc.flat
deleted file mode 100644
index 035ddcd..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/values-zh-rCN_values-zh-rCN.arsc.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/values-zh-rTW_values-zh-rTW.arsc.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/values-zh-rTW_values-zh-rTW.arsc.flat
deleted file mode 100644
index 1043ced..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/values-zh-rTW_values-zh-rTW.arsc.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/values_values.arsc.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/values_values.arsc.flat
deleted file mode 100644
index 47c89ee..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/values_values.arsc.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/xml_preferences.xml.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/xml_preferences.xml.flat
deleted file mode 100644
index 8feb153..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/xml_preferences.xml.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/xml_searchable.xml.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/xml_searchable.xml.flat
deleted file mode 100644
index 58f29f7..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/xml_searchable.xml.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/xml_widget_2x_info.xml.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/xml_widget_2x_info.xml.flat
deleted file mode 100644
index e697451..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/xml_widget_2x_info.xml.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/xml_widget_4x_info.xml.flat b/xiaomi-src/app/build/intermediates/merged_res/debug/xml_widget_4x_info.xml.flat
deleted file mode 100644
index c31dc2d..0000000
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/xml_widget_4x_info.xml.flat and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/debug.json b/xiaomi-src/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/debug.json
deleted file mode 100644
index 676d71f..0000000
--- a/xiaomi-src/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/debug.json
+++ /dev/null
@@ -1,248 +0,0 @@
-{
- "logs": [
- {
- "outputFile": "net.micode.notes.app-merged_res-5:/values-zh-rCN_values-zh-rCN.arsc.flat",
- "map": [
- {
- "source": "C:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\src\\main\\res\\values-zh-rCN\\strings.xml",
- "from": {
- "startLines": "120,70,69,68,67,18,19,20,111,112,119,118,25,76,77,75,74,73,89,88,87,79,59,28,29,80,71,113,66,62,37,43,48,38,58,57,56,52,51,49,50,53,54,44,65,55,63,42,47,46,45,61,41,60,39,40,64,27,33,35,32,34,31,30,24,23,96,95,98,110,103,102,104,105,107,106,97,101,99,100,94,108,109,117,115,114,116,26,78,86,91,90,92,85,84,83,82,21,22",
- "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4",
- "startOffsets": "6469,3432,3366,3293,3243,764,804,852,6020,6065,6415,6365,1136,3798,3866,3739,3674,3611,4529,4469,4406,3998,2814,1306,1359,4052,3505,6122,3184,2971,1735,2016,2262,1788,2754,2701,2650,2455,2407,2313,2361,2501,2548,2059,3125,2598,3014,1973,2215,2159,2104,2916,1929,2874,1838,1879,3066,1255,1560,1656,1513,1609,1466,1421,1085,1032,4904,4845,5045,5946,5356,5287,5420,5498,5681,5608,4979,5232,5102,5167,4796,5785,5868,6327,6220,6172,6265,1198,3943,4347,4642,4584,4709,4299,4254,4206,4155,900,966",
- "endLines": "122,70,69,68,67,18,19,20,111,112,119,118,25,76,77,75,74,73,89,88,87,79,59,28,29,80,71,113,66,62,37,43,48,38,58,57,56,52,51,49,50,53,54,44,65,55,63,42,47,46,45,61,41,60,39,40,64,27,33,35,32,34,31,30,24,23,96,95,98,110,103,102,104,105,107,106,97,101,99,100,94,108,109,117,115,114,116,26,78,86,91,90,92,85,84,83,82,21,22",
- "endColumns": "14,72,65,72,49,39,47,47,44,56,53,49,61,67,76,58,64,62,54,59,62,53,59,52,61,84,80,49,58,42,52,42,50,49,59,52,50,45,47,47,45,46,49,44,58,51,51,42,46,55,54,54,43,41,40,49,58,50,48,48,46,46,46,44,50,52,74,58,56,73,63,68,77,109,103,72,65,54,64,64,48,82,77,37,44,47,61,56,54,58,66,57,61,47,44,47,50,65,65",
- "endOffsets": "6641,3500,3427,3361,3288,799,847,895,6060,6117,6464,6410,1193,3861,3938,3793,3734,3669,4579,4524,4464,4047,2869,1354,1416,4132,3581,6167,3238,3009,1783,2054,2308,1833,2809,2749,2696,2496,2450,2356,2402,2543,2593,2099,3179,2645,3061,2011,2257,2210,2154,2966,1968,2911,1874,1924,3120,1301,1604,1700,1555,1651,1508,1461,1131,1080,4974,4899,5097,6015,5415,5351,5493,5603,5780,5676,5040,5282,5162,5227,4840,5863,5941,6360,6260,6215,6322,1250,3993,4401,4704,4637,4766,4342,4294,4249,4201,961,1027"
- },
- "to": {
- "startLines": "6,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106",
- "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4",
- "startOffsets": "215,384,457,523,596,646,686,734,782,827,884,938,988,1050,1118,1195,1254,1319,1382,1437,1497,1560,1614,1674,1727,1789,1874,1955,2005,2064,2107,2160,2203,2254,2304,2364,2417,2468,2514,2562,2610,2656,2703,2753,2798,2857,2909,2961,3004,3051,3107,3162,3217,3261,3303,3344,3394,3453,3504,3553,3602,3649,3696,3743,3788,3839,3892,3967,4026,4083,4157,4221,4290,4368,4478,4582,4655,4721,4776,4841,4906,4955,5038,5116,5154,5199,5247,5309,5366,5421,5480,5547,5605,5667,5715,5760,5808,5859,5925",
- "endLines": "8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106",
- "endColumns": "14,72,65,72,49,39,47,47,44,56,53,49,61,67,76,58,64,62,54,59,62,53,59,52,61,84,80,49,58,42,52,42,50,49,59,52,50,45,47,47,45,46,49,44,58,51,51,42,46,55,54,54,43,41,40,49,58,50,48,48,46,46,46,44,50,52,74,58,56,73,63,68,77,109,103,72,65,54,64,64,48,82,77,37,44,47,61,56,54,58,66,57,61,47,44,47,50,65,65",
- "endOffsets": "379,452,518,591,641,681,729,777,822,879,933,983,1045,1113,1190,1249,1314,1377,1432,1492,1555,1609,1669,1722,1784,1869,1950,2000,2059,2102,2155,2198,2249,2299,2359,2412,2463,2509,2557,2605,2651,2698,2748,2793,2852,2904,2956,2999,3046,3102,3157,3212,3256,3298,3339,3389,3448,3499,3548,3597,3644,3691,3738,3783,3834,3887,3962,4021,4078,4152,4216,4285,4363,4473,4577,4650,4716,4771,4836,4901,4950,5033,5111,5149,5194,5242,5304,5361,5416,5475,5542,5600,5662,5710,5755,5803,5854,5920,5986"
- }
- },
- {
- "source": "C:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\src\\main\\res\\values-zh-rCN\\arrays.xml",
- "from": {
- "startLines": "16",
- "startColumns": "4",
- "startOffsets": "336",
- "endLines": "19",
- "endColumns": "19",
- "endOffsets": "441"
- },
- "to": {
- "startLines": "2",
- "startColumns": "4",
- "startOffsets": "105",
- "endLines": "5",
- "endColumns": "19",
- "endOffsets": "210"
- }
- }
- ]
- },
- {
- "outputFile": "net.micode.notes.app-merged_res-5:/values_values.arsc.flat",
- "map": [
- {
- "source": "C:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\src\\main\\res\\values\\dimens.xml",
- "from": {
- "startLines": "15,17,19,21,13",
- "startColumns": "4,4,4,4,4",
- "startOffsets": "335,409,484,558,262",
- "endColumns": "51,52,52,51,51",
- "endOffsets": "382,457,532,605,309"
- },
- "to": {
- "startLines": "13,14,15,16,17",
- "startColumns": "4,4,4,4,4",
- "startOffsets": "477,529,582,635,687",
- "endColumns": "51,52,52,51,51",
- "endOffsets": "524,577,630,682,734"
- }
- },
- {
- "source": "C:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\src\\main\\res\\values\\attrs.xml",
- "from": {
- "startLines": "1",
- "startColumns": "4",
- "startOffsets": "17",
- "endLines": "4",
- "endColumns": "24",
- "endOffsets": "211"
- },
- "to": {
- "startLines": "179",
- "startColumns": "4",
- "startOffsets": "10875",
- "endLines": "182",
- "endColumns": "24",
- "endOffsets": "11064"
- }
- },
- {
- "source": "C:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\src\\main\\res\\values\\styles.xml",
- "from": {
- "startLines": "49,55,66,61,15,20,25,31,37,10,43",
- "startColumns": "4,4,4,4,4,4,4,4,4,4,4",
- "startOffsets": "1798,2043,2507,2299,421,628,837,1066,1314,215,1560",
- "endLines": "52,58,69,63,18,23,28,34,40,13,46",
- "endColumns": "12,12,12,12,12,12,12,12,12,12,12",
- "endOffsets": "2001,2249,2713,2454,599,808,1017,1264,1515,393,1756"
- },
- "to": {
- "startLines": "125,129,133,137,140,144,148,152,156,160,164",
- "startColumns": "4,4,4,4,4,4,4,4,4,4,4",
- "startOffsets": "8123,8331,8542,8752,8912,9095,9280,9465,9668,9874,10057",
- "endLines": "128,132,136,139,143,147,151,155,159,163,167",
- "endColumns": "12,12,12,12,12,12,12,12,12,12,12",
- "endOffsets": "8326,8537,8747,8907,9090,9275,9460,9663,9869,10052,10253"
- }
- },
- {
- "source": "C:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\src\\main\\res\\values\\arrays.xml",
- "from": {
- "startLines": "10,18",
- "startColumns": "4,4",
- "startOffsets": "237,524",
- "endLines": "15,21",
- "endColumns": "19,19",
- "endOffsets": "492,639"
- },
- "to": {
- "startLines": "2,8",
- "startColumns": "4,4",
- "startOffsets": "105,300",
- "endLines": "7,11",
- "endColumns": "19,19",
- "endOffsets": "295,415"
- }
- },
- {
- "source": "C:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\src\\main\\res\\values\\colors.xml",
- "from": {
- "startLines": "16",
- "startColumns": "4",
- "startOffsets": "331",
- "endColumns": "56",
- "endOffsets": "383"
- },
- "to": {
- "startLines": "12",
- "startColumns": "4",
- "startOffsets": "420",
- "endColumns": "56",
- "endOffsets": "472"
- }
- },
- {
- "source": "C:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\src\\main\\res\\values\\strings.xml",
- "from": {
- "startLines": "127,71,74,73,72,18,19,20,117,118,126,125,25,80,81,79,78,77,93,92,91,83,38,37,63,28,29,84,40,75,119,70,66,41,47,52,42,62,61,60,56,55,53,54,57,58,48,69,59,67,46,51,50,49,65,45,64,43,44,68,27,33,35,32,34,31,30,24,23,100,99,103,115,108,107,109,110,112,111,101,102,106,104,105,98,113,114,124,122,121,123,26,82,90,95,94,96,89,88,87,86,21,22",
- "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4",
- "startOffsets": "7945,3835,4096,4000,3931,764,807,859,7443,7492,7887,7836,1219,4550,4644,4479,4395,4312,5511,5428,5326,4820,1941,1890,3334,1423,1476,4881,2034,4179,7555,3764,3519,2093,2408,2709,2151,3263,3202,3145,2923,2871,2768,2821,2973,3023,2455,3698,3083,3568,2361,2654,2566,2508,3457,2311,3412,2208,2251,3631,1368,1687,1795,1640,1742,1584,1536,1164,1111,5967,5900,6208,7346,6572,6491,6646,6735,6977,6898,6051,6126,6432,6272,6352,5845,7121,7243,7795,7668,7611,7721,1303,4752,5240,5646,5577,5726,5181,5126,5064,5004,911,1021",
- "endLines": "131,71,74,73,72,18,19,20,117,118,126,125,25,80,81,79,78,77,93,92,91,83,38,37,63,28,29,84,40,75,119,70,66,41,47,52,42,62,61,60,56,55,53,54,57,58,48,69,59,67,46,51,50,49,65,45,64,43,44,68,27,33,35,32,34,31,30,24,23,100,99,103,115,108,107,109,110,112,111,101,102,106,104,105,98,113,114,124,122,121,123,26,82,90,95,94,96,89,88,87,86,21,22",
- "endColumns": "14,95,82,95,68,42,51,51,48,62,57,50,83,93,107,70,83,82,65,82,101,60,61,50,77,52,59,104,58,101,54,70,48,57,46,58,56,70,60,56,49,51,52,49,49,59,52,65,61,62,46,54,87,57,61,49,44,42,59,66,54,54,52,46,52,55,47,54,52,83,66,63,95,73,80,88,162,143,78,74,81,58,79,79,54,121,102,40,52,56,73,64,67,85,79,68,93,58,54,61,59,109,89",
- "endOffsets": "8348,3926,4174,4091,3995,802,854,906,7487,7550,7940,7882,1298,4639,4747,4545,4474,4390,5572,5506,5423,4876,1998,1936,3407,1471,1531,4981,2088,4276,7605,3830,3563,2146,2450,2763,2203,3329,3258,3197,2968,2918,2816,2866,3018,3078,2503,3759,3140,3626,2403,2704,2649,2561,3514,2356,3452,2246,2306,3693,1418,1737,1843,1682,1790,1635,1579,1214,1159,6046,5962,6267,7437,6641,6567,6730,6893,7116,6972,6121,6203,6486,6347,6427,5895,7238,7341,7831,7716,7663,7790,1363,4815,5321,5721,5641,5815,5235,5176,5121,5059,1016,1106"
- },
- "to": {
- "startLines": "18,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124",
- "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4",
- "startOffsets": "739,1091,1187,1270,1366,1435,1478,1530,1582,1631,1694,1752,1803,1887,1981,2089,2160,2244,2327,2393,2476,2578,2639,2701,2752,2830,2883,2943,3048,3107,3209,3264,3335,3384,3442,3489,3548,3605,3676,3737,3794,3844,3896,3949,3999,4049,4109,4162,4228,4290,4353,4400,4455,4543,4601,4663,4713,4758,4801,4861,4928,4983,5038,5091,5138,5191,5247,5295,5350,5403,5487,5554,5618,5714,5788,5869,5958,6121,6265,6344,6419,6501,6560,6640,6720,6775,6897,7000,7041,7094,7151,7225,7290,7358,7444,7524,7593,7687,7746,7801,7863,7923,8033",
- "endLines": "22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124",
- "endColumns": "14,95,82,95,68,42,51,51,48,62,57,50,83,93,107,70,83,82,65,82,101,60,61,50,77,52,59,104,58,101,54,70,48,57,46,58,56,70,60,56,49,51,52,49,49,59,52,65,61,62,46,54,87,57,61,49,44,42,59,66,54,54,52,46,52,55,47,54,52,83,66,63,95,73,80,88,162,143,78,74,81,58,79,79,54,121,102,40,52,56,73,64,67,85,79,68,93,58,54,61,59,109,89",
- "endOffsets": "1086,1182,1265,1361,1430,1473,1525,1577,1626,1689,1747,1798,1882,1976,2084,2155,2239,2322,2388,2471,2573,2634,2696,2747,2825,2878,2938,3043,3102,3204,3259,3330,3379,3437,3484,3543,3600,3671,3732,3789,3839,3891,3944,3994,4044,4104,4157,4223,4285,4348,4395,4450,4538,4596,4658,4708,4753,4796,4856,4923,4978,5033,5086,5133,5186,5242,5290,5345,5398,5482,5549,5613,5709,5783,5864,5953,6116,6260,6339,6414,6496,6555,6635,6715,6770,6892,6995,7036,7089,7146,7220,7285,7353,7439,7519,7588,7682,7741,7796,7858,7918,8028,8118"
- }
- },
- {
- "source": "C:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\src\\main\\res\\values\\themes.xml",
- "from": {
- "startLines": "2,4,11",
- "startColumns": "4,4,4",
- "startOffsets": "19,90,416",
- "endLines": "2,9,14",
- "endColumns": "67,12,12",
- "endOffsets": "82,408,646"
- },
- "to": {
- "startLines": "168,169,175",
- "startColumns": "4,4,4",
- "startOffsets": "10258,10325,10643",
- "endLines": "168,174,178",
- "endColumns": "66,12,12",
- "endOffsets": "10320,10638,10870"
- }
- }
- ]
- },
- {
- "outputFile": "net.micode.notes.app-merged_res-5:/values-night-v8_values-night-v8.arsc.flat",
- "map": [
- {
- "source": "C:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\src\\main\\res\\values-night\\themes.xml",
- "from": {
- "startLines": "2",
- "startColumns": "4",
- "startOffsets": "19",
- "endLines": "5",
- "endColumns": "12",
- "endOffsets": "249"
- },
- "to": {
- "startLines": "2",
- "startColumns": "4",
- "startOffsets": "55",
- "endLines": "5",
- "endColumns": "12",
- "endOffsets": "282"
- }
- }
- ]
- },
- {
- "outputFile": "net.micode.notes.app-merged_res-5:/values-zh-rTW_values-zh-rTW.arsc.flat",
- "map": [
- {
- "source": "C:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\src\\main\\res\\values-zh-rTW\\arrays.xml",
- "from": {
- "startLines": "16",
- "startColumns": "4",
- "startOffsets": "333",
- "endLines": "19",
- "endColumns": "19",
- "endOffsets": "438"
- },
- "to": {
- "startLines": "2",
- "startColumns": "4",
- "startOffsets": "105",
- "endLines": "5",
- "endColumns": "19",
- "endOffsets": "210"
- }
- },
- {
- "source": "C:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\src\\main\\res\\values-zh-rTW\\strings.xml",
- "from": {
- "startLines": "121,71,70,69,68,18,19,20,111,112,120,119,25,75,76,74,73,72,88,87,86,78,60,28,29,79,36,113,67,63,38,44,49,39,59,58,57,53,52,50,51,54,55,45,66,56,64,43,48,47,46,62,42,61,40,41,65,27,33,35,32,34,31,30,24,23,95,94,97,109,102,101,103,104,106,105,96,100,98,99,93,107,108,118,116,115,117,26,77,85,90,89,91,84,83,82,81,21,22",
- "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4",
- "startOffsets": "6444,3512,3446,3373,3323,764,804,852,5994,6039,6390,6340,1136,3772,3840,3713,3647,3584,4502,4442,4379,3972,2894,1306,1359,4026,1705,6096,3264,3051,1815,2096,2342,1868,2834,2781,2730,2535,2487,2393,2441,2581,2628,2139,3205,2678,3094,2053,2295,2239,2184,2996,2009,2954,1918,1959,3146,1255,1560,1656,1513,1609,1466,1421,1085,1032,4877,4818,5018,5919,5329,5260,5393,5471,5654,5581,4952,5205,5075,5140,4769,5758,5841,6302,6195,6147,6240,1198,3917,4320,4615,4557,4682,4272,4227,4179,4128,900,966",
- "endLines": "123,71,70,69,68,18,19,20,111,112,120,119,25,75,76,74,73,72,88,87,86,78,60,28,29,79,36,113,67,63,38,44,49,39,59,58,57,53,52,50,51,54,55,45,66,56,64,43,48,47,46,62,42,61,40,41,65,27,33,35,32,34,31,30,24,23,95,94,97,109,102,101,103,104,106,105,96,100,98,99,93,107,108,118,116,115,117,26,77,85,90,89,91,84,83,82,81,21,22",
- "endColumns": "14,71,65,72,49,39,47,47,44,56,53,49,61,67,76,58,65,62,54,59,62,53,59,52,61,83,79,49,58,42,52,42,50,49,59,52,50,45,47,47,45,46,49,44,58,51,51,42,46,55,54,54,43,41,40,49,58,50,48,48,46,46,46,44,50,52,74,58,56,73,63,68,77,109,103,72,65,54,64,64,48,82,77,37,44,47,61,56,54,58,66,57,61,47,44,47,50,65,65",
- "endOffsets": "6616,3579,3507,3441,3368,799,847,895,6034,6091,6439,6385,1193,3835,3912,3767,3708,3642,4552,4497,4437,4021,2949,1354,1416,4105,1780,6141,3318,3089,1863,2134,2388,1913,2889,2829,2776,2576,2530,2436,2482,2623,2673,2179,3259,2725,3141,2091,2337,2290,2234,3046,2048,2991,1954,2004,3200,1301,1604,1700,1555,1651,1508,1461,1131,1080,4947,4872,5070,5988,5388,5324,5466,5576,5753,5649,5013,5255,5135,5200,4813,5836,5914,6335,6235,6190,6297,1250,3967,4374,4677,4610,4739,4315,4267,4222,4174,961,1027"
- },
- "to": {
- "startLines": "6,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106",
- "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4",
- "startOffsets": "215,384,456,522,595,645,685,733,781,826,883,937,987,1049,1117,1194,1253,1319,1382,1437,1497,1560,1614,1674,1727,1789,1873,1953,2003,2062,2105,2158,2201,2252,2302,2362,2415,2466,2512,2560,2608,2654,2701,2751,2796,2855,2907,2959,3002,3049,3105,3160,3215,3259,3301,3342,3392,3451,3502,3551,3600,3647,3694,3741,3786,3837,3890,3965,4024,4081,4155,4219,4288,4366,4476,4580,4653,4719,4774,4839,4904,4953,5036,5114,5152,5197,5245,5307,5364,5419,5478,5545,5603,5665,5713,5758,5806,5857,5923",
- "endLines": "8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106",
- "endColumns": "14,71,65,72,49,39,47,47,44,56,53,49,61,67,76,58,65,62,54,59,62,53,59,52,61,83,79,49,58,42,52,42,50,49,59,52,50,45,47,47,45,46,49,44,58,51,51,42,46,55,54,54,43,41,40,49,58,50,48,48,46,46,46,44,50,52,74,58,56,73,63,68,77,109,103,72,65,54,64,64,48,82,77,37,44,47,61,56,54,58,66,57,61,47,44,47,50,65,65",
- "endOffsets": "379,451,517,590,640,680,728,776,821,878,932,982,1044,1112,1189,1248,1314,1377,1432,1492,1555,1609,1669,1722,1784,1868,1948,1998,2057,2100,2153,2196,2247,2297,2357,2410,2461,2507,2555,2603,2649,2696,2746,2791,2850,2902,2954,2997,3044,3100,3155,3210,3254,3296,3337,3387,3446,3497,3546,3595,3642,3689,3736,3781,3832,3885,3960,4019,4076,4150,4214,4283,4361,4471,4575,4648,4714,4769,4834,4899,4948,5031,5109,5147,5192,5240,5302,5359,5414,5473,5540,5598,5660,5708,5753,5801,5852,5918,5984"
- }
- }
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/xiaomi-src/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values-night-v8.json b/xiaomi-src/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values-night-v8.json
deleted file mode 100644
index 6c0de98..0000000
--- a/xiaomi-src/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values-night-v8.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "logs": [
- {
- "outputFile": "net.micode.notes.app-mergeDebugResources-3:/values-night-v8/values-night-v8.xml",
- "map": [
- {
- "source": "C:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\src\\main\\res\\values-night\\themes.xml",
- "from": {
- "startLines": "2",
- "startColumns": "4",
- "startOffsets": "19",
- "endLines": "5",
- "endColumns": "12",
- "endOffsets": "249"
- },
- "to": {
- "startLines": "2",
- "startColumns": "4",
- "startOffsets": "55",
- "endLines": "5",
- "endColumns": "12",
- "endOffsets": "282"
- }
- }
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/xiaomi-src/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values-zh-rCN.json b/xiaomi-src/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values-zh-rCN.json
deleted file mode 100644
index ae546db..0000000
--- a/xiaomi-src/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values-zh-rCN.json
+++ /dev/null
@@ -1,47 +0,0 @@
-{
- "logs": [
- {
- "outputFile": "net.micode.notes.app-mergeDebugResources-3:/values-zh-rCN/values-zh-rCN.xml",
- "map": [
- {
- "source": "C:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\src\\main\\res\\values-zh-rCN\\strings.xml",
- "from": {
- "startLines": "120,70,69,68,67,18,19,20,111,112,119,118,25,76,77,75,74,73,89,88,87,79,59,28,29,80,71,113,66,62,37,43,48,38,58,57,56,52,51,49,50,53,54,44,65,55,63,42,47,46,45,61,41,60,39,40,64,27,33,35,32,34,31,30,24,23,96,95,98,110,103,102,104,105,107,106,97,101,99,100,94,108,109,117,115,114,116,26,78,86,91,90,92,85,84,83,82,21,22",
- "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4",
- "startOffsets": "6469,3432,3366,3293,3243,764,804,852,6020,6065,6415,6365,1136,3798,3866,3739,3674,3611,4529,4469,4406,3998,2814,1306,1359,4052,3505,6122,3184,2971,1735,2016,2262,1788,2754,2701,2650,2455,2407,2313,2361,2501,2548,2059,3125,2598,3014,1973,2215,2159,2104,2916,1929,2874,1838,1879,3066,1255,1560,1656,1513,1609,1466,1421,1085,1032,4904,4845,5045,5946,5356,5287,5420,5498,5681,5608,4979,5232,5102,5167,4796,5785,5868,6327,6220,6172,6265,1198,3943,4347,4642,4584,4709,4299,4254,4206,4155,900,966",
- "endLines": "122,70,69,68,67,18,19,20,111,112,119,118,25,76,77,75,74,73,89,88,87,79,59,28,29,80,71,113,66,62,37,43,48,38,58,57,56,52,51,49,50,53,54,44,65,55,63,42,47,46,45,61,41,60,39,40,64,27,33,35,32,34,31,30,24,23,96,95,98,110,103,102,104,105,107,106,97,101,99,100,94,108,109,117,115,114,116,26,78,86,91,90,92,85,84,83,82,21,22",
- "endColumns": "14,72,65,72,49,39,47,47,44,56,53,49,61,67,76,58,64,62,54,59,62,53,59,52,61,84,80,49,58,42,52,42,50,49,59,52,50,45,47,47,45,46,49,44,58,51,51,42,46,55,54,54,43,41,40,49,58,50,48,48,46,46,46,44,50,52,74,58,56,73,63,68,77,109,103,72,65,54,64,64,48,82,77,37,44,47,61,56,54,58,66,57,61,47,44,47,50,65,65",
- "endOffsets": "6641,3500,3427,3361,3288,799,847,895,6060,6117,6464,6410,1193,3861,3938,3793,3734,3669,4579,4524,4464,4047,2869,1354,1416,4132,3581,6167,3238,3009,1783,2054,2308,1833,2809,2749,2696,2496,2450,2356,2402,2543,2593,2099,3179,2645,3061,2011,2257,2210,2154,2966,1968,2911,1874,1924,3120,1301,1604,1700,1555,1651,1508,1461,1131,1080,4974,4899,5097,6015,5415,5351,5493,5603,5780,5676,5040,5282,5162,5227,4840,5863,5941,6360,6260,6215,6322,1250,3993,4401,4704,4637,4766,4342,4294,4249,4201,961,1027"
- },
- "to": {
- "startLines": "6,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106",
- "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4",
- "startOffsets": "215,384,457,523,596,646,686,734,782,827,884,938,988,1050,1118,1195,1254,1319,1382,1437,1497,1560,1614,1674,1727,1789,1874,1955,2005,2064,2107,2160,2203,2254,2304,2364,2417,2468,2514,2562,2610,2656,2703,2753,2798,2857,2909,2961,3004,3051,3107,3162,3217,3261,3303,3344,3394,3453,3504,3553,3602,3649,3696,3743,3788,3839,3892,3967,4026,4083,4157,4221,4290,4368,4478,4582,4655,4721,4776,4841,4906,4955,5038,5116,5154,5199,5247,5309,5366,5421,5480,5547,5605,5667,5715,5760,5808,5859,5925",
- "endLines": "8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106",
- "endColumns": "14,72,65,72,49,39,47,47,44,56,53,49,61,67,76,58,64,62,54,59,62,53,59,52,61,84,80,49,58,42,52,42,50,49,59,52,50,45,47,47,45,46,49,44,58,51,51,42,46,55,54,54,43,41,40,49,58,50,48,48,46,46,46,44,50,52,74,58,56,73,63,68,77,109,103,72,65,54,64,64,48,82,77,37,44,47,61,56,54,58,66,57,61,47,44,47,50,65,65",
- "endOffsets": "379,452,518,591,641,681,729,777,822,879,933,983,1045,1113,1190,1249,1314,1377,1432,1492,1555,1609,1669,1722,1784,1869,1950,2000,2059,2102,2155,2198,2249,2299,2359,2412,2463,2509,2557,2605,2651,2698,2748,2793,2852,2904,2956,2999,3046,3102,3157,3212,3256,3298,3339,3389,3448,3499,3548,3597,3644,3691,3738,3783,3834,3887,3962,4021,4078,4152,4216,4285,4363,4473,4577,4650,4716,4771,4836,4901,4950,5033,5111,5149,5194,5242,5304,5361,5416,5475,5542,5600,5662,5710,5755,5803,5854,5920,5986"
- }
- },
- {
- "source": "C:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\src\\main\\res\\values-zh-rCN\\arrays.xml",
- "from": {
- "startLines": "16",
- "startColumns": "4",
- "startOffsets": "336",
- "endLines": "19",
- "endColumns": "19",
- "endOffsets": "441"
- },
- "to": {
- "startLines": "2",
- "startColumns": "4",
- "startOffsets": "105",
- "endLines": "5",
- "endColumns": "19",
- "endOffsets": "210"
- }
- }
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/xiaomi-src/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values-zh-rTW.json b/xiaomi-src/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values-zh-rTW.json
deleted file mode 100644
index c2d9a6e..0000000
--- a/xiaomi-src/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values-zh-rTW.json
+++ /dev/null
@@ -1,47 +0,0 @@
-{
- "logs": [
- {
- "outputFile": "net.micode.notes.app-mergeDebugResources-3:/values-zh-rTW/values-zh-rTW.xml",
- "map": [
- {
- "source": "C:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\src\\main\\res\\values-zh-rTW\\arrays.xml",
- "from": {
- "startLines": "16",
- "startColumns": "4",
- "startOffsets": "333",
- "endLines": "19",
- "endColumns": "19",
- "endOffsets": "438"
- },
- "to": {
- "startLines": "2",
- "startColumns": "4",
- "startOffsets": "105",
- "endLines": "5",
- "endColumns": "19",
- "endOffsets": "210"
- }
- },
- {
- "source": "C:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\src\\main\\res\\values-zh-rTW\\strings.xml",
- "from": {
- "startLines": "121,71,70,69,68,18,19,20,111,112,120,119,25,75,76,74,73,72,88,87,86,78,60,28,29,79,36,113,67,63,38,44,49,39,59,58,57,53,52,50,51,54,55,45,66,56,64,43,48,47,46,62,42,61,40,41,65,27,33,35,32,34,31,30,24,23,95,94,97,109,102,101,103,104,106,105,96,100,98,99,93,107,108,118,116,115,117,26,77,85,90,89,91,84,83,82,81,21,22",
- "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4",
- "startOffsets": "6444,3512,3446,3373,3323,764,804,852,5994,6039,6390,6340,1136,3772,3840,3713,3647,3584,4502,4442,4379,3972,2894,1306,1359,4026,1705,6096,3264,3051,1815,2096,2342,1868,2834,2781,2730,2535,2487,2393,2441,2581,2628,2139,3205,2678,3094,2053,2295,2239,2184,2996,2009,2954,1918,1959,3146,1255,1560,1656,1513,1609,1466,1421,1085,1032,4877,4818,5018,5919,5329,5260,5393,5471,5654,5581,4952,5205,5075,5140,4769,5758,5841,6302,6195,6147,6240,1198,3917,4320,4615,4557,4682,4272,4227,4179,4128,900,966",
- "endLines": "123,71,70,69,68,18,19,20,111,112,120,119,25,75,76,74,73,72,88,87,86,78,60,28,29,79,36,113,67,63,38,44,49,39,59,58,57,53,52,50,51,54,55,45,66,56,64,43,48,47,46,62,42,61,40,41,65,27,33,35,32,34,31,30,24,23,95,94,97,109,102,101,103,104,106,105,96,100,98,99,93,107,108,118,116,115,117,26,77,85,90,89,91,84,83,82,81,21,22",
- "endColumns": "14,71,65,72,49,39,47,47,44,56,53,49,61,67,76,58,65,62,54,59,62,53,59,52,61,83,79,49,58,42,52,42,50,49,59,52,50,45,47,47,45,46,49,44,58,51,51,42,46,55,54,54,43,41,40,49,58,50,48,48,46,46,46,44,50,52,74,58,56,73,63,68,77,109,103,72,65,54,64,64,48,82,77,37,44,47,61,56,54,58,66,57,61,47,44,47,50,65,65",
- "endOffsets": "6616,3579,3507,3441,3368,799,847,895,6034,6091,6439,6385,1193,3835,3912,3767,3708,3642,4552,4497,4437,4021,2949,1354,1416,4105,1780,6141,3318,3089,1863,2134,2388,1913,2889,2829,2776,2576,2530,2436,2482,2623,2673,2179,3259,2725,3141,2091,2337,2290,2234,3046,2048,2991,1954,2004,3200,1301,1604,1700,1555,1651,1508,1461,1131,1080,4947,4872,5070,5988,5388,5324,5466,5576,5753,5649,5013,5255,5135,5200,4813,5836,5914,6335,6235,6190,6297,1250,3967,4374,4677,4610,4739,4315,4267,4222,4174,961,1027"
- },
- "to": {
- "startLines": "6,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106",
- "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4",
- "startOffsets": "215,384,456,522,595,645,685,733,781,826,883,937,987,1049,1117,1194,1253,1319,1382,1437,1497,1560,1614,1674,1727,1789,1873,1953,2003,2062,2105,2158,2201,2252,2302,2362,2415,2466,2512,2560,2608,2654,2701,2751,2796,2855,2907,2959,3002,3049,3105,3160,3215,3259,3301,3342,3392,3451,3502,3551,3600,3647,3694,3741,3786,3837,3890,3965,4024,4081,4155,4219,4288,4366,4476,4580,4653,4719,4774,4839,4904,4953,5036,5114,5152,5197,5245,5307,5364,5419,5478,5545,5603,5665,5713,5758,5806,5857,5923",
- "endLines": "8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106",
- "endColumns": "14,71,65,72,49,39,47,47,44,56,53,49,61,67,76,58,65,62,54,59,62,53,59,52,61,83,79,49,58,42,52,42,50,49,59,52,50,45,47,47,45,46,49,44,58,51,51,42,46,55,54,54,43,41,40,49,58,50,48,48,46,46,46,44,50,52,74,58,56,73,63,68,77,109,103,72,65,54,64,64,48,82,77,37,44,47,61,56,54,58,66,57,61,47,44,47,50,65,65",
- "endOffsets": "379,451,517,590,640,680,728,776,821,878,932,982,1044,1112,1189,1248,1314,1377,1432,1492,1555,1609,1669,1722,1784,1868,1948,1998,2057,2100,2153,2196,2247,2297,2357,2410,2461,2507,2555,2603,2649,2696,2746,2791,2850,2902,2954,2997,3044,3100,3155,3210,3254,3296,3337,3387,3446,3497,3546,3595,3642,3689,3736,3781,3832,3885,3960,4019,4076,4150,4214,4283,4361,4471,4575,4648,4714,4769,4834,4899,4948,5031,5109,5147,5192,5240,5302,5359,5414,5473,5540,5598,5660,5708,5753,5801,5852,5918,5984"
- }
- }
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/xiaomi-src/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values.json b/xiaomi-src/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values.json
deleted file mode 100644
index e2316c3..0000000
--- a/xiaomi-src/app/build/intermediates/merged_res_blame_folder/debug/out/multi-v2/values.json
+++ /dev/null
@@ -1,138 +0,0 @@
-{
- "logs": [
- {
- "outputFile": "net.micode.notes.app-mergeDebugResources-3:/values/values.xml",
- "map": [
- {
- "source": "C:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\src\\main\\res\\values\\dimens.xml",
- "from": {
- "startLines": "15,17,19,21,13",
- "startColumns": "4,4,4,4,4",
- "startOffsets": "335,409,484,558,262",
- "endColumns": "51,52,52,51,51",
- "endOffsets": "382,457,532,605,309"
- },
- "to": {
- "startLines": "13,14,15,16,17",
- "startColumns": "4,4,4,4,4",
- "startOffsets": "477,529,582,635,687",
- "endColumns": "51,52,52,51,51",
- "endOffsets": "524,577,630,682,734"
- }
- },
- {
- "source": "C:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\src\\main\\res\\values\\attrs.xml",
- "from": {
- "startLines": "1",
- "startColumns": "4",
- "startOffsets": "17",
- "endLines": "4",
- "endColumns": "24",
- "endOffsets": "211"
- },
- "to": {
- "startLines": "179",
- "startColumns": "4",
- "startOffsets": "10875",
- "endLines": "182",
- "endColumns": "24",
- "endOffsets": "11064"
- }
- },
- {
- "source": "C:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\src\\main\\res\\values\\styles.xml",
- "from": {
- "startLines": "49,55,66,61,15,20,25,31,37,10,43",
- "startColumns": "4,4,4,4,4,4,4,4,4,4,4",
- "startOffsets": "1798,2043,2507,2299,421,628,837,1066,1314,215,1560",
- "endLines": "52,58,69,63,18,23,28,34,40,13,46",
- "endColumns": "12,12,12,12,12,12,12,12,12,12,12",
- "endOffsets": "2001,2249,2713,2454,599,808,1017,1264,1515,393,1756"
- },
- "to": {
- "startLines": "125,129,133,137,140,144,148,152,156,160,164",
- "startColumns": "4,4,4,4,4,4,4,4,4,4,4",
- "startOffsets": "8123,8331,8542,8752,8912,9095,9280,9465,9668,9874,10057",
- "endLines": "128,132,136,139,143,147,151,155,159,163,167",
- "endColumns": "12,12,12,12,12,12,12,12,12,12,12",
- "endOffsets": "8326,8537,8747,8907,9090,9275,9460,9663,9869,10052,10253"
- }
- },
- {
- "source": "C:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\src\\main\\res\\values\\arrays.xml",
- "from": {
- "startLines": "10,18",
- "startColumns": "4,4",
- "startOffsets": "237,524",
- "endLines": "15,21",
- "endColumns": "19,19",
- "endOffsets": "492,639"
- },
- "to": {
- "startLines": "2,8",
- "startColumns": "4,4",
- "startOffsets": "105,300",
- "endLines": "7,11",
- "endColumns": "19,19",
- "endOffsets": "295,415"
- }
- },
- {
- "source": "C:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\src\\main\\res\\values\\colors.xml",
- "from": {
- "startLines": "16",
- "startColumns": "4",
- "startOffsets": "331",
- "endColumns": "56",
- "endOffsets": "383"
- },
- "to": {
- "startLines": "12",
- "startColumns": "4",
- "startOffsets": "420",
- "endColumns": "56",
- "endOffsets": "472"
- }
- },
- {
- "source": "C:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\src\\main\\res\\values\\strings.xml",
- "from": {
- "startLines": "127,71,74,73,72,18,19,20,117,118,126,125,25,80,81,79,78,77,93,92,91,83,38,37,63,28,29,84,40,75,119,70,66,41,47,52,42,62,61,60,56,55,53,54,57,58,48,69,59,67,46,51,50,49,65,45,64,43,44,68,27,33,35,32,34,31,30,24,23,100,99,103,115,108,107,109,110,112,111,101,102,106,104,105,98,113,114,124,122,121,123,26,82,90,95,94,96,89,88,87,86,21,22",
- "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4",
- "startOffsets": "7945,3835,4096,4000,3931,764,807,859,7443,7492,7887,7836,1219,4550,4644,4479,4395,4312,5511,5428,5326,4820,1941,1890,3334,1423,1476,4881,2034,4179,7555,3764,3519,2093,2408,2709,2151,3263,3202,3145,2923,2871,2768,2821,2973,3023,2455,3698,3083,3568,2361,2654,2566,2508,3457,2311,3412,2208,2251,3631,1368,1687,1795,1640,1742,1584,1536,1164,1111,5967,5900,6208,7346,6572,6491,6646,6735,6977,6898,6051,6126,6432,6272,6352,5845,7121,7243,7795,7668,7611,7721,1303,4752,5240,5646,5577,5726,5181,5126,5064,5004,911,1021",
- "endLines": "131,71,74,73,72,18,19,20,117,118,126,125,25,80,81,79,78,77,93,92,91,83,38,37,63,28,29,84,40,75,119,70,66,41,47,52,42,62,61,60,56,55,53,54,57,58,48,69,59,67,46,51,50,49,65,45,64,43,44,68,27,33,35,32,34,31,30,24,23,100,99,103,115,108,107,109,110,112,111,101,102,106,104,105,98,113,114,124,122,121,123,26,82,90,95,94,96,89,88,87,86,21,22",
- "endColumns": "14,95,82,95,68,42,51,51,48,62,57,50,83,93,107,70,83,82,65,82,101,60,61,50,77,52,59,104,58,101,54,70,48,57,46,58,56,70,60,56,49,51,52,49,49,59,52,65,61,62,46,54,87,57,61,49,44,42,59,66,54,54,52,46,52,55,47,54,52,83,66,63,95,73,80,88,162,143,78,74,81,58,79,79,54,121,102,40,52,56,73,64,67,85,79,68,93,58,54,61,59,109,89",
- "endOffsets": "8348,3926,4174,4091,3995,802,854,906,7487,7550,7940,7882,1298,4639,4747,4545,4474,4390,5572,5506,5423,4876,1998,1936,3407,1471,1531,4981,2088,4276,7605,3830,3563,2146,2450,2763,2203,3329,3258,3197,2968,2918,2816,2866,3018,3078,2503,3759,3140,3626,2403,2704,2649,2561,3514,2356,3452,2246,2306,3693,1418,1737,1843,1682,1790,1635,1579,1214,1159,6046,5962,6267,7437,6641,6567,6730,6893,7116,6972,6121,6203,6486,6347,6427,5895,7238,7341,7831,7716,7663,7790,1363,4815,5321,5721,5641,5815,5235,5176,5121,5059,1016,1106"
- },
- "to": {
- "startLines": "18,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124",
- "startColumns": "4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4",
- "startOffsets": "739,1091,1187,1270,1366,1435,1478,1530,1582,1631,1694,1752,1803,1887,1981,2089,2160,2244,2327,2393,2476,2578,2639,2701,2752,2830,2883,2943,3048,3107,3209,3264,3335,3384,3442,3489,3548,3605,3676,3737,3794,3844,3896,3949,3999,4049,4109,4162,4228,4290,4353,4400,4455,4543,4601,4663,4713,4758,4801,4861,4928,4983,5038,5091,5138,5191,5247,5295,5350,5403,5487,5554,5618,5714,5788,5869,5958,6121,6265,6344,6419,6501,6560,6640,6720,6775,6897,7000,7041,7094,7151,7225,7290,7358,7444,7524,7593,7687,7746,7801,7863,7923,8033",
- "endLines": "22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124",
- "endColumns": "14,95,82,95,68,42,51,51,48,62,57,50,83,93,107,70,83,82,65,82,101,60,61,50,77,52,59,104,58,101,54,70,48,57,46,58,56,70,60,56,49,51,52,49,49,59,52,65,61,62,46,54,87,57,61,49,44,42,59,66,54,54,52,46,52,55,47,54,52,83,66,63,95,73,80,88,162,143,78,74,81,58,79,79,54,121,102,40,52,56,73,64,67,85,79,68,93,58,54,61,59,109,89",
- "endOffsets": "1086,1182,1265,1361,1430,1473,1525,1577,1626,1689,1747,1798,1882,1976,2084,2155,2239,2322,2388,2471,2573,2634,2696,2747,2825,2878,2938,3043,3102,3204,3259,3330,3379,3437,3484,3543,3600,3671,3732,3789,3839,3891,3944,3994,4044,4104,4157,4223,4285,4348,4395,4450,4538,4596,4658,4708,4753,4796,4856,4923,4978,5033,5086,5133,5186,5242,5290,5345,5398,5482,5549,5613,5709,5783,5864,5953,6116,6260,6339,6414,6496,6555,6635,6715,6770,6892,6995,7036,7089,7146,7220,7285,7353,7439,7519,7588,7682,7741,7796,7858,7918,8028,8118"
- }
- },
- {
- "source": "C:\\Users\\Administrator\\Desktop\\third-year first semester\\xiaomi\\xiaomi-src\\app\\src\\main\\res\\values\\themes.xml",
- "from": {
- "startLines": "2,4,11",
- "startColumns": "4,4,4",
- "startOffsets": "19,90,416",
- "endLines": "2,9,14",
- "endColumns": "67,12,12",
- "endOffsets": "82,408,646"
- },
- "to": {
- "startLines": "168,169,175",
- "startColumns": "4,4,4",
- "startOffsets": "10258,10325,10643",
- "endLines": "168,174,178",
- "endColumns": "66,12,12",
- "endOffsets": "10320,10638,10870"
- }
- }
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/xiaomi-src/app/build/intermediates/merged_res_blame_folder/debug/out/single/debug.json b/xiaomi-src/app/build/intermediates/merged_res_blame_folder/debug/out/single/debug.json
deleted file mode 100644
index bf03447..0000000
--- a/xiaomi-src/app/build/intermediates/merged_res_blame_folder/debug/out/single/debug.json
+++ /dev/null
@@ -1,390 +0,0 @@
-[
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_red_middle.9.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_red_middle.9.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_title_bar_bg.9.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/title_bar_bg.9.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/layout_note_list_dropdown_menu.xml.flat",
- "source": "net.micode.notes.app-main-7:/layout/note_list_dropdown_menu.xml"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/layout_folder_list_item.xml.flat",
- "source": "net.micode.notes.app-main-7:/layout/folder_list_item.xml"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_selected.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/selected.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_edit_title_yellow.9.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/edit_title_yellow.9.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/menu_sub_folder.xml.flat",
- "source": "net.micode.notes.app-main-7:/menu/sub_folder.xml"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_footer_bg.9.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_footer_bg.9.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_clock.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/clock.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/raw_introduction.flat",
- "source": "net.micode.notes.app-main-7:/raw/introduction"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_widget_4x_yellow.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/widget_4x_yellow.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_white_up.9.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_white_up.9.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_widget_4x_blue.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/widget_4x_blue.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_widget_2x_green.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/widget_2x_green.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable_new_note.xml.flat",
- "source": "net.micode.notes.app-main-7:/drawable/new_note.xml"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/layout_widget_2x.xml.flat",
- "source": "net.micode.notes.app-main-7:/layout/widget_2x.xml"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/xml_widget_2x_info.xml.flat",
- "source": "net.micode.notes.app-main-7:/xml/widget_2x_info.xml"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/menu_call_record_folder.xml.flat",
- "source": "net.micode.notes.app-main-7:/menu/call_record_folder.xml"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/xml_preferences.xml.flat",
- "source": "net.micode.notes.app-main-7:/xml/preferences.xml"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/layout_dialog_edit_text.xml.flat",
- "source": "net.micode.notes.app-main-7:/layout/dialog_edit_text.xml"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_edit_title_blue.9.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/edit_title_blue.9.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_yellow_single.9.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_yellow_single.9.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/color_secondary_text_dark.xml.flat",
- "source": "net.micode.notes.app-main-7:/color/secondary_text_dark.xml"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/xml_widget_4x_info.xml.flat",
- "source": "net.micode.notes.app-main-7:/xml/widget_4x_info.xml"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_blue_up.9.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_blue_up.9.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_white_middle.9.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_white_middle.9.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_white_single.9.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_white_single.9.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_edit_yellow.9.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/edit_yellow.9.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/layout_note_edit.xml.flat",
- "source": "net.micode.notes.app-main-7:/layout/note_edit.xml"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/layout_widget_4x.xml.flat",
- "source": "net.micode.notes.app-main-7:/layout/widget_4x.xml"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_edit_title_green.9.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/edit_title_green.9.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_menu_delete.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/menu_delete.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/layout_note_list.xml.flat",
- "source": "net.micode.notes.app-main-7:/layout/note_list.xml"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_green_down.9.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_green_down.9.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_icon_app.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/icon_app.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_dropdown_icon.9.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/dropdown_icon.9.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_bg_btn_set_color.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/bg_btn_set_color.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/menu_note_list.xml.flat",
- "source": "net.micode.notes.app-main-7:/menu/note_list.xml"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/layout_note_list_footer.xml.flat",
- "source": "net.micode.notes.app-main-7:/layout/note_list_footer.xml"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_menu_move.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/menu_move.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_bg_color_btn_mask.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/bg_color_btn_mask.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/layout_add_account_text.xml.flat",
- "source": "net.micode.notes.app-main-7:/layout/add_account_text.xml"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/layout_datetime_picker.xml.flat",
- "source": "net.micode.notes.app-main-7:/layout/datetime_picker.xml"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_font_super.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/font_super.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_blue_single.9.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_blue_single.9.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_widget_2x_yellow.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/widget_2x_yellow.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_delete.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/delete.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_edit_green.9.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/edit_green.9.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/menu_note_edit.xml.flat",
- "source": "net.micode.notes.app-main-7:/menu/note_edit.xml"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/layout_account_dialog_title.xml.flat",
- "source": "net.micode.notes.app-main-7:/layout/account_dialog_title.xml"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_call_record.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/call_record.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_green_up.9.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_green_up.9.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_folder.9.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_folder.9.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_red_single.9.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_red_single.9.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_notification.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/notification.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_red_down.9.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_red_down.9.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_new_note_pressed.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/new_note_pressed.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_edit_white.9.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/edit_white.9.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/layout_note_item.xml.flat",
- "source": "net.micode.notes.app-main-7:/layout/note_item.xml"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/layout_settings_header.xml.flat",
- "source": "net.micode.notes.app-main-7:/layout/settings_header.xml"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_note_edit_color_selector_panel.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/note_edit_color_selector_panel.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_title_alert.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/title_alert.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_widget_4x_red.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/widget_4x_red.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_font_large.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/font_large.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_blue_middle.9.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_blue_middle.9.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_widget_2x_blue.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/widget_2x_blue.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_red_up.9.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_red_up.9.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_widget_4x_white.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/widget_4x_white.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_yellow_up.9.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_yellow_up.9.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_widget_2x_white.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/widget_2x_white.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_edit_title_white.9.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/edit_title_white.9.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_yellow_down.9.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_yellow_down.9.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/raw-zh-rCN_introduction.flat",
- "source": "net.micode.notes.app-main-7:/raw-zh-rCN/introduction"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_background.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_background.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_search_result.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/search_result.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_widget_4x_green.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/widget_4x_green.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_edit_red.9.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/edit_red.9.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/xml_searchable.xml.flat",
- "source": "net.micode.notes.app-main-7:/xml/searchable.xml"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_green_middle.9.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_green_middle.9.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_font_normal.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/font_normal.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_yellow_middle.9.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_yellow_middle.9.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/menu_note_list_dropdown.xml.flat",
- "source": "net.micode.notes.app-main-7:/menu/note_list_dropdown.xml"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_new_note_normal.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/new_note_normal.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/layout_note_edit_list_item.xml.flat",
- "source": "net.micode.notes.app-main-7:/layout/note_edit_list_item.xml"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_blue_down.9.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_blue_down.9.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_font_size_selector_bg.9.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/font_size_selector_bg.9.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_edit_title_red.9.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/edit_title_red.9.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_edit_blue.9.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/edit_blue.9.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/menu_note_list_options.xml.flat",
- "source": "net.micode.notes.app-main-7:/menu/note_list_options.xml"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/layout_activity_splash.xml.flat",
- "source": "net.micode.notes.app-main-7:/layout/activity_splash.xml"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/menu_call_note_edit.xml.flat",
- "source": "net.micode.notes.app-main-7:/menu/call_note_edit.xml"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_green_single.9.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_green_single.9.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_widget_2x_red.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/widget_2x_red.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/color_primary_text_dark.xml.flat",
- "source": "net.micode.notes.app-main-7:/color/primary_text_dark.xml"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_splash.jpg.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/splash.jpg"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_list_white_down.9.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/list_white_down.9.png"
- },
- {
- "merged": "net.micode.notes.app-merged_res-5:/drawable-hdpi_font_small.png.flat",
- "source": "net.micode.notes.app-main-7:/drawable-hdpi/font_small.png"
- }
-]
\ No newline at end of file
diff --git a/xiaomi-src/app/build/intermediates/navigation_json/debug/navigation.json b/xiaomi-src/app/build/intermediates/navigation_json/debug/navigation.json
deleted file mode 100644
index 0637a08..0000000
--- a/xiaomi-src/app/build/intermediates/navigation_json/debug/navigation.json
+++ /dev/null
@@ -1 +0,0 @@
-[]
\ No newline at end of file
diff --git a/xiaomi-src/app/build/intermediates/packaged_manifests/debug/AndroidManifest.xml b/xiaomi-src/app/build/intermediates/packaged_manifests/debug/AndroidManifest.xml
deleted file mode 100644
index 5b73466..0000000
--- a/xiaomi-src/app/build/intermediates/packaged_manifests/debug/AndroidManifest.xml
+++ /dev/null
@@ -1,155 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/xiaomi-src/app/build/intermediates/packaged_manifests/debug/output-metadata.json b/xiaomi-src/app/build/intermediates/packaged_manifests/debug/output-metadata.json
deleted file mode 100644
index aa7abaa..0000000
--- a/xiaomi-src/app/build/intermediates/packaged_manifests/debug/output-metadata.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "version": 3,
- "artifactType": {
- "type": "PACKAGED_MANIFESTS",
- "kind": "Directory"
- },
- "applicationId": "net.micode.notes",
- "variantName": "debug",
- "elements": [
- {
- "type": "SINGLE",
- "filters": [],
- "attributes": [],
- "versionCode": 1,
- "versionName": "1.0",
- "outputFile": "AndroidManifest.xml"
- }
- ],
- "elementType": "File"
-}
\ No newline at end of file
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/3b39a0f8c9a74077ddf9126288e67b5aee0b290a2f74293e2d6f45ae0690b824_13.jar b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/3b39a0f8c9a74077ddf9126288e67b5aee0b290a2f74293e2d6f45ae0690b824_13.jar
deleted file mode 100644
index bb4e200..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/3b39a0f8c9a74077ddf9126288e67b5aee0b290a2f74293e2d6f45ae0690b824_13.jar and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_0.jar b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_0.jar
deleted file mode 100644
index 1974ebe..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_0.jar and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_1.jar b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_1.jar
deleted file mode 100644
index ffdb88e..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_1.jar and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_10.jar b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_10.jar
deleted file mode 100644
index 97a126c..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_10.jar and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_11.jar b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_11.jar
deleted file mode 100644
index 7454e8c..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_11.jar and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_12.jar b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_12.jar
deleted file mode 100644
index 02cba84..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_12.jar and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_13.jar b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_13.jar
deleted file mode 100644
index 24a5469..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_13.jar and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_14.jar b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_14.jar
deleted file mode 100644
index 51e982e..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_14.jar and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_2.jar b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_2.jar
deleted file mode 100644
index de14e87..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_2.jar and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_3.jar b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_3.jar
deleted file mode 100644
index ced168f..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_3.jar and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_5.jar b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_5.jar
deleted file mode 100644
index 9606801..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_5.jar and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_6.jar b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_6.jar
deleted file mode 100644
index 109935f..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_6.jar and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_7.jar b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_7.jar
deleted file mode 100644
index c355da5..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_7.jar and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_8.jar b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_8.jar
deleted file mode 100644
index 70df4b8..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_8.jar and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_9.jar b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_9.jar
deleted file mode 100644
index 9c7cff3..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/75a1007c8e32510a7d608dd6e8861e789dcc9ce33b6fe80ef056fa17943be295_9.jar and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/BuildConfig.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/BuildConfig.dex
deleted file mode 100644
index e531ab3..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/BuildConfig.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Contact.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Contact.dex
deleted file mode 100644
index 03d3195..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Contact.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Notes$CallNote.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Notes$CallNote.dex
deleted file mode 100644
index 8df2301..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Notes$CallNote.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Notes$DataColumns.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Notes$DataColumns.dex
deleted file mode 100644
index 1c0dee7..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Notes$DataColumns.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Notes$DataConstants.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Notes$DataConstants.dex
deleted file mode 100644
index 3ba5a35..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Notes$DataConstants.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Notes$NoteColumns.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Notes$NoteColumns.dex
deleted file mode 100644
index 3e6ef4e..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Notes$NoteColumns.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Notes$TextNote.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Notes$TextNote.dex
deleted file mode 100644
index f05cfb5..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Notes$TextNote.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Notes.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Notes.dex
deleted file mode 100644
index 93eacf2..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/Notes.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/NotesDatabaseHelper$TABLE.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/NotesDatabaseHelper$TABLE.dex
deleted file mode 100644
index 00400e4..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/NotesDatabaseHelper$TABLE.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/NotesDatabaseHelper.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/NotesDatabaseHelper.dex
deleted file mode 100644
index 23becff..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/NotesDatabaseHelper.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/NotesProvider.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/NotesProvider.dex
deleted file mode 100644
index 998b96b..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/data/NotesProvider.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/AccountDialogTitleBinding.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/AccountDialogTitleBinding.dex
deleted file mode 100644
index 88b48ae..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/AccountDialogTitleBinding.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/ActivitySplashBinding.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/ActivitySplashBinding.dex
deleted file mode 100644
index c2c10a5..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/ActivitySplashBinding.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/AddAccountTextBinding.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/AddAccountTextBinding.dex
deleted file mode 100644
index 29e365c..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/AddAccountTextBinding.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/DatetimePickerBinding.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/DatetimePickerBinding.dex
deleted file mode 100644
index 0eb9ab1..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/DatetimePickerBinding.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/DialogEditTextBinding.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/DialogEditTextBinding.dex
deleted file mode 100644
index 6c5aabe..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/DialogEditTextBinding.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/FolderListItemBinding.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/FolderListItemBinding.dex
deleted file mode 100644
index b209278..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/FolderListItemBinding.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/NoteEditBinding.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/NoteEditBinding.dex
deleted file mode 100644
index cf24b54..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/NoteEditBinding.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/NoteEditListItemBinding.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/NoteEditListItemBinding.dex
deleted file mode 100644
index c45811a..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/NoteEditListItemBinding.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/NoteItemBinding.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/NoteItemBinding.dex
deleted file mode 100644
index 7e46e54..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/NoteItemBinding.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/NoteListBinding.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/NoteListBinding.dex
deleted file mode 100644
index 3e9adbe..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/NoteListBinding.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/NoteListDropdownMenuBinding.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/NoteListDropdownMenuBinding.dex
deleted file mode 100644
index cebfdf0..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/NoteListDropdownMenuBinding.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/NoteListFooterBinding.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/NoteListFooterBinding.dex
deleted file mode 100644
index 360e652..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/NoteListFooterBinding.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/SettingsHeaderBinding.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/SettingsHeaderBinding.dex
deleted file mode 100644
index dcff8e3..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/SettingsHeaderBinding.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/Widget2xBinding.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/Widget2xBinding.dex
deleted file mode 100644
index 0fd9497..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/Widget2xBinding.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/Widget4xBinding.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/Widget4xBinding.dex
deleted file mode 100644
index 409ac92..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/databinding/Widget4xBinding.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/MetaData.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/MetaData.dex
deleted file mode 100644
index f09bd2e..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/MetaData.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/Node.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/Node.dex
deleted file mode 100644
index 91ab17d..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/Node.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/SqlData.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/SqlData.dex
deleted file mode 100644
index 6dc603a..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/SqlData.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/SqlNote.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/SqlNote.dex
deleted file mode 100644
index 88dd67e..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/SqlNote.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/Task.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/Task.dex
deleted file mode 100644
index 02a7396..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/Task.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/TaskList.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/TaskList.dex
deleted file mode 100644
index 40591cf..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/data/TaskList.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/exception/ActionFailureException.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/exception/ActionFailureException.dex
deleted file mode 100644
index 7da8d3d..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/exception/ActionFailureException.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/exception/NetworkFailureException.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/exception/NetworkFailureException.dex
deleted file mode 100644
index 5e97dc5..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/gtask/exception/NetworkFailureException.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/Note$NoteData.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/Note$NoteData.dex
deleted file mode 100644
index 2f70947..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/Note$NoteData.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/Note.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/Note.dex
deleted file mode 100644
index 305a6c4..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/Note.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/WorkingNote$NoteSettingChangedListener.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/WorkingNote$NoteSettingChangedListener.dex
deleted file mode 100644
index 4cc87c9..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/WorkingNote$NoteSettingChangedListener.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/WorkingNote.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/WorkingNote.dex
deleted file mode 100644
index de57524..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/model/WorkingNote.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/BackupUtils$TextExport.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/BackupUtils$TextExport.dex
deleted file mode 100644
index d40c547..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/BackupUtils$TextExport.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/BackupUtils.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/BackupUtils.dex
deleted file mode 100644
index 5d78e30..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/BackupUtils.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/DataUtils.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/DataUtils.dex
deleted file mode 100644
index eb19a4b..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/DataUtils.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/GTaskStringUtils.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/GTaskStringUtils.dex
deleted file mode 100644
index a2b6fc8..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/GTaskStringUtils.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$NoteBgResources.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$NoteBgResources.dex
deleted file mode 100644
index 6981798..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$NoteBgResources.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$NoteItemBgResources.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$NoteItemBgResources.dex
deleted file mode 100644
index 887e252..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$NoteItemBgResources.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$TextAppearanceResources.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$TextAppearanceResources.dex
deleted file mode 100644
index 46b05cb..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$TextAppearanceResources.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$WidgetBgResources.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$WidgetBgResources.dex
deleted file mode 100644
index d2e6a3c..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser$WidgetBgResources.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser.dex
deleted file mode 100644
index 9f95008..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/tool/ResourceParser.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/AlarmAlertActivity.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/AlarmAlertActivity.dex
deleted file mode 100644
index 6e263c5..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/AlarmAlertActivity.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/AlarmInitReceiver.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/AlarmInitReceiver.dex
deleted file mode 100644
index 190961d..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/AlarmInitReceiver.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/AlarmReceiver.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/AlarmReceiver.dex
deleted file mode 100644
index 48d481c..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/AlarmReceiver.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker$1.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker$1.dex
deleted file mode 100644
index 7dbba8f..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker$1.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker$2.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker$2.dex
deleted file mode 100644
index b2e3efa..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker$2.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker$3.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker$3.dex
deleted file mode 100644
index 917c82a..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker$3.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker$4.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker$4.dex
deleted file mode 100644
index e511812..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker$4.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker$OnDateTimeChangedListener.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker$OnDateTimeChangedListener.dex
deleted file mode 100644
index 0df2655..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker$OnDateTimeChangedListener.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker.dex
deleted file mode 100644
index 79b66f4..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePicker.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePickerDialog$1.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePickerDialog$1.dex
deleted file mode 100644
index f8f9dc9..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePickerDialog$1.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePickerDialog$OnDateTimeSetListener.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePickerDialog$OnDateTimeSetListener.dex
deleted file mode 100644
index d9419a5..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePickerDialog$OnDateTimeSetListener.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePickerDialog.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePickerDialog.dex
deleted file mode 100644
index d62bcb8..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DateTimePickerDialog.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DropdownMenu$1.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DropdownMenu$1.dex
deleted file mode 100644
index cd10866..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DropdownMenu$1.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DropdownMenu.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DropdownMenu.dex
deleted file mode 100644
index 44fa7e6..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/DropdownMenu.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/FoldersListAdapter$FolderListItem.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/FoldersListAdapter$FolderListItem.dex
deleted file mode 100644
index 8b507ea..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/FoldersListAdapter$FolderListItem.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/FoldersListAdapter.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/FoldersListAdapter.dex
deleted file mode 100644
index 4a13d6c..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/FoldersListAdapter.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$1.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$1.dex
deleted file mode 100644
index 8b9a610..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$1.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$2.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$2.dex
deleted file mode 100644
index a14b091..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$2.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$3.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$3.dex
deleted file mode 100644
index f747b9d..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$3.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.dex
deleted file mode 100644
index 94f094f..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity$HeadViewHolder.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity.dex
deleted file mode 100644
index d5e1695..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditActivity.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditText$1.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditText$1.dex
deleted file mode 100644
index c8bc061..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditText$1.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditText$OnTextViewChangeListener.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditText$OnTextViewChangeListener.dex
deleted file mode 100644
index 1323e64..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditText$OnTextViewChangeListener.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditText.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditText.dex
deleted file mode 100644
index a5eb3f6..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteEditText.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteItemData.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteItemData.dex
deleted file mode 100644
index 306819d..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NoteItemData.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$1.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$1.dex
deleted file mode 100644
index a46a98c..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$1.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$2.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$2.dex
deleted file mode 100644
index aedbbd2..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$2.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$3.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$3.dex
deleted file mode 100644
index 58c5bdd..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$3.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$4.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$4.dex
deleted file mode 100644
index d4125c4..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$4.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$5.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$5.dex
deleted file mode 100644
index cbd5d24..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$5.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$6.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$6.dex
deleted file mode 100644
index 6abc23e..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$6.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$7.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$7.dex
deleted file mode 100644
index f367948..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$7.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$8.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$8.dex
deleted file mode 100644
index 9b881d5..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$8.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$9.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$9.dex
deleted file mode 100644
index a98d803..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$9.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.dex
deleted file mode 100644
index 9461087..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$BackgroundQueryHandler.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ListEditState.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ListEditState.dex
deleted file mode 100644
index 977b4f9..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ListEditState.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ModeCallback$1.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ModeCallback$1.dex
deleted file mode 100644
index 8ed9ad0..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ModeCallback$1.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ModeCallback$2.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ModeCallback$2.dex
deleted file mode 100644
index d8a1227..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ModeCallback$2.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ModeCallback.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ModeCallback.dex
deleted file mode 100644
index 0ed5ce7..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$ModeCallback.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.dex
deleted file mode 100644
index 4263ff6..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$NewNoteOnTouchListener.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.dex
deleted file mode 100644
index 404b5a8..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity$OnListItemClickListener.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity.dex
deleted file mode 100644
index 05a92a4..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListActivity.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListAdapter$AppWidgetAttribute.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListAdapter$AppWidgetAttribute.dex
deleted file mode 100644
index 9028168..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListAdapter$AppWidgetAttribute.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListAdapter.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListAdapter.dex
deleted file mode 100644
index f4f8ba6..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListAdapter.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListItem.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListItem.dex
deleted file mode 100644
index 8bc3490..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesListItem.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$1.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$1.dex
deleted file mode 100644
index f8432f8..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$1.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$2.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$2.dex
deleted file mode 100644
index a5553f0..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$2.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$3.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$3.dex
deleted file mode 100644
index 271a51d..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$3.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$4.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$4.dex
deleted file mode 100644
index 9008771..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$4.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$5.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$5.dex
deleted file mode 100644
index 2b4fdc7..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$5.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$6.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$6.dex
deleted file mode 100644
index 7af915e..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$6.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$GTaskReceiver.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$GTaskReceiver.dex
deleted file mode 100644
index 0e90833..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity$GTaskReceiver.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity.dex
deleted file mode 100644
index 47ade51..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/NotesPreferenceActivity.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/SplashActivity$1.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/SplashActivity$1.dex
deleted file mode 100644
index e473096..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/SplashActivity$1.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/SplashActivity.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/SplashActivity.dex
deleted file mode 100644
index 3b57a79..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/ui/SplashActivity.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/widget/NoteWidgetProvider.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/widget/NoteWidgetProvider.dex
deleted file mode 100644
index be9891c..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/widget/NoteWidgetProvider.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/widget/NoteWidgetProvider_2x.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/widget/NoteWidgetProvider_2x.dex
deleted file mode 100644
index b474c57..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/widget/NoteWidgetProvider_2x.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/widget/NoteWidgetProvider_4x.dex b/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/widget/NoteWidgetProvider_4x.dex
deleted file mode 100644
index 6f24cf3..0000000
Binary files a/xiaomi-src/app/build/intermediates/project_dex_archive/debug/out/net/micode/notes/widget/NoteWidgetProvider_4x.dex and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/signing_config_versions/debug/signing-config-versions.json b/xiaomi-src/app/build/intermediates/signing_config_versions/debug/signing-config-versions.json
deleted file mode 100644
index 51f6368..0000000
--- a/xiaomi-src/app/build/intermediates/signing_config_versions/debug/signing-config-versions.json
+++ /dev/null
@@ -1 +0,0 @@
-{"enableV1Signing":false,"enableV2Signing":true,"enableV3Signing":false,"enableV4Signing":false}
\ No newline at end of file
diff --git a/xiaomi-src/app/build/intermediates/source_set_path_map/debug/file-map.txt b/xiaomi-src/app/build/intermediates/source_set_path_map/debug/file-map.txt
deleted file mode 100644
index 9d404db..0000000
--- a/xiaomi-src/app/build/intermediates/source_set_path_map/debug/file-map.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-net.micode.notes.app-pngs-0 C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\generated\res\pngs\debug
-net.micode.notes.app-resValues-1 C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\generated\res\resValues\debug
-net.micode.notes.app-rs-2 C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\generated\res\rs\debug
-net.micode.notes.app-mergeDebugResources-3 C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\incremental\debug\mergeDebugResources\merged.dir
-net.micode.notes.app-mergeDebugResources-4 C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\incremental\debug\mergeDebugResources\stripped.dir
-net.micode.notes.app-merged_res-5 C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\build\intermediates\merged_res\debug
-net.micode.notes.app-debug-6 C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\debug\res
-net.micode.notes.app-main-7 C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\res
diff --git a/xiaomi-src/app/build/intermediates/stable_resource_ids_file/debug/stableIds.txt b/xiaomi-src/app/build/intermediates/stable_resource_ids_file/debug/stableIds.txt
deleted file mode 100644
index f3a4946..0000000
--- a/xiaomi-src/app/build/intermediates/stable_resource_ids_file/debug/stableIds.txt
+++ /dev/null
@@ -1,294 +0,0 @@
-net.micode.notes:xml/widget_4x_info = 0x7f0e0003
-net.micode.notes:xml/preferences = 0x7f0e0000
-net.micode.notes:styleable/FullscreenAttrs = 0x7f0d0000
-net.micode.notes:style/ThemeOverlay.Xiaomisrc.FullscreenContainer = 0x7f0c000d
-net.micode.notes:style/TextAppearanceSecondaryItem = 0x7f0c0008
-net.micode.notes:style/TextAppearanceNormal = 0x7f0c0006
-net.micode.notes:style/TextAppearanceLarge = 0x7f0c0004
-net.micode.notes:style/HighlightTextAppearancePrimary = 0x7f0c0000
-net.micode.notes:string/widget_havenot_content = 0x7f0b0064
-net.micode.notes:string/ticker_syncing = 0x7f0b0063
-net.micode.notes:string/ticker_success = 0x7f0b0062
-net.micode.notes:style/HighlightTextAppearanceSecondary = 0x7f0c0001
-net.micode.notes:string/ticker_cancel = 0x7f0b0060
-net.micode.notes:string/sync_progress_syncing = 0x7f0b005f
-net.micode.notes:string/sync_progress_init_list = 0x7f0b005d
-net.micode.notes:string/search_label = 0x7f0b0058
-net.micode.notes:string/preferences_toast_success_set_accout = 0x7f0b0055
-net.micode.notes:string/preferences_toast_cannot_change_account = 0x7f0b0054
-net.micode.notes:string/preferences_title = 0x7f0b0053
-net.micode.notes:string/preferences_menu_remove_account = 0x7f0b0052
-net.micode.notes:style/NoteActionBarStyle = 0x7f0c0002
-net.micode.notes:string/preferences_menu_change_account = 0x7f0b0051
-net.micode.notes:string/preferences_menu_cancel = 0x7f0b0050
-net.micode.notes:string/preferences_last_sync_time = 0x7f0b004e
-net.micode.notes:string/preferences_dialog_select_account_title = 0x7f0b004d
-net.micode.notes:string/preferences_dialog_change_account_warn_msg = 0x7f0b004b
-net.micode.notes:string/preferences_button_sync_immediately = 0x7f0b0049
-net.micode.notes:string/preferences_button_sync_cancel = 0x7f0b0048
-net.micode.notes:string/preferences_account_summary = 0x7f0b0044
-net.micode.notes:string/success_sdcard_export = 0x7f0b005b
-net.micode.notes:string/notelist_string_info = 0x7f0b0043
-net.micode.notes:string/notelist_menu_new = 0x7f0b0042
-net.micode.notes:string/notealert_ok = 0x7f0b0041
-net.micode.notes:string/notealert_enter = 0x7f0b0040
-net.micode.notes:string/note_link_web = 0x7f0b003f
-net.micode.notes:string/note_link_tel = 0x7f0b003e
-net.micode.notes:string/note_link_other = 0x7f0b003d
-net.micode.notes:string/note_link_email = 0x7f0b003c
-net.micode.notes:string/note_alert_expired = 0x7f0b003b
-net.micode.notes:string/menu_sync_cancel = 0x7f0b0039
-net.micode.notes:string/menu_sync = 0x7f0b0038
-net.micode.notes:string/menu_share = 0x7f0b0037
-net.micode.notes:string/menu_select_title = 0x7f0b0034
-net.micode.notes:style/TextAppearanceMedium = 0x7f0c0005
-net.micode.notes:string/menu_select_none = 0x7f0b0033
-net.micode.notes:string/menu_title_select_folder = 0x7f0b003a
-net.micode.notes:string/menu_select_all = 0x7f0b0032
-net.micode.notes:string/menu_search = 0x7f0b0031
-net.micode.notes:string/menu_remove_remind = 0x7f0b0030
-net.micode.notes:string/menu_normal_mode = 0x7f0b002f
-net.micode.notes:style/Theme.Xiaomisrc = 0x7f0c000b
-net.micode.notes:string/menu_move_parent_folder = 0x7f0b002e
-net.micode.notes:string/menu_move = 0x7f0b002d
-net.micode.notes:string/menu_list_mode = 0x7f0b002c
-net.micode.notes:string/menu_font_super = 0x7f0b002b
-net.micode.notes:string/menu_font_small = 0x7f0b002a
-net.micode.notes:string/menu_folder_change_name = 0x7f0b0024
-net.micode.notes:string/menu_export_text = 0x7f0b0023
-net.micode.notes:string/menu_deselect_all = 0x7f0b0022
-net.micode.notes:string/menu_create_folder = 0x7f0b0020
-net.micode.notes:string/info_note_enter_desktop = 0x7f0b001e
-net.micode.notes:string/format_move_notes_to_folder = 0x7f0b001c
-net.micode.notes:string/format_folder_files_count = 0x7f0b001b
-net.micode.notes:string/format_datetime_mdhm = 0x7f0b0019
-net.micode.notes:string/format_date_ymd = 0x7f0b0018
-net.micode.notes:style/TextAppearancePrimaryItem = 0x7f0c0007
-net.micode.notes:string/hint_foler_name = 0x7f0b001d
-net.micode.notes:string/folder_exist = 0x7f0b0017
-net.micode.notes:string/file_path = 0x7f0b0016
-net.micode.notes:string/set_remind_time_message = 0x7f0b005a
-net.micode.notes:string/error_sync_network = 0x7f0b0013
-net.micode.notes:string/error_sdcard_unmounted = 0x7f0b0010
-net.micode.notes:string/datetime_dialog_ok = 0x7f0b000a
-net.micode.notes:style/Theme.Xiaomisrc.Fullscreen = 0x7f0c000c
-net.micode.notes:string/datetime_dialog_cancel = 0x7f0b0009
-net.micode.notes:drawable/list_green_up = 0x7f050020
-net.micode.notes:string/call_record_folder_name = 0x7f0b0008
-net.micode.notes:drawable/new_note_normal = 0x7f050030
-net.micode.notes:string/button_delete = 0x7f0b0007
-net.micode.notes:string/app_widget2x2 = 0x7f0b0005
-net.micode.notes:string/menu_font_normal = 0x7f0b0028
-net.micode.notes:string/format_exported_file_location = 0x7f0b001a
-net.micode.notes:raw/introduction = 0x7f0a0000
-net.micode.notes:string/delete_remind_time_message = 0x7f0b000b
-net.micode.notes:dimen/text_font_size_super = 0x7f040004
-net.micode.notes:drawable/selected = 0x7f050035
-net.micode.notes:plurals/search_results_title = 0x7f090000
-net.micode.notes:menu/sub_folder = 0x7f080006
-net.micode.notes:menu/note_edit = 0x7f080002
-net.micode.notes:layout/note_list = 0x7f070009
-net.micode.notes:drawable/list_white_single = 0x7f050027
-net.micode.notes:layout/note_item = 0x7f070008
-net.micode.notes:xml/widget_2x_info = 0x7f0e0002
-net.micode.notes:string/alert_message_delete_folder = 0x7f0b0000
-net.micode.notes:layout/datetime_picker = 0x7f070003
-net.micode.notes:id/btn_new_note = 0x7f060004
-net.micode.notes:layout/note_list_footer = 0x7f07000b
-net.micode.notes:id/fullscreen_content_controls = 0x7f06000e
-net.micode.notes:id/widget_text = 0x7f060045
-net.micode.notes:id/tv_title_bar = 0x7f060043
-net.micode.notes:drawable/widget_2x_blue = 0x7f050039
-net.micode.notes:id/tv_time = 0x7f060041
-net.micode.notes:id/tv_name = 0x7f060040
-net.micode.notes:drawable/new_note = 0x7f05002f
-net.micode.notes:id/sv_note_edit = 0x7f06003c
-net.micode.notes:id/selection_menu = 0x7f06003b
-net.micode.notes:attr/fullscreenBackgroundColor = 0x7f020000
-net.micode.notes:string/error_sdcard_export = 0x7f0b000f
-net.micode.notes:id/preference_sync_button = 0x7f06003a
-net.micode.notes:layout/note_edit = 0x7f070006
-net.micode.notes:drawable/splash = 0x7f050036
-net.micode.notes:id/notes_list = 0x7f060038
-net.micode.notes:string/alert_message_delete_notes = 0x7f0b0002
-net.micode.notes:drawable/title_alert = 0x7f050037
-net.micode.notes:id/note_title = 0x7f060037
-net.micode.notes:string/preferences_last_sync_time_format = 0x7f0b004f
-net.micode.notes:id/note_edit_view = 0x7f060035
-net.micode.notes:string/app_widget4x4 = 0x7f0b0006
-net.micode.notes:drawable/font_normal = 0x7f050011
-net.micode.notes:id/minute = 0x7f060030
-net.micode.notes:drawable/font_super = 0x7f050014
-net.micode.notes:id/menu_sync = 0x7f06002f
-net.micode.notes:id/fullscreen_content = 0x7f06000d
-net.micode.notes:id/menu_share = 0x7f06002e
-net.micode.notes:id/menu_setting = 0x7f06002d
-net.micode.notes:string/widget_under_visit_mode = 0x7f0b0065
-net.micode.notes:id/menu_send_to_desktop = 0x7f06002c
-net.micode.notes:id/menu_search = 0x7f06002b
-net.micode.notes:drawable/list_green_down = 0x7f05001d
-net.micode.notes:id/menu_new_note = 0x7f06002a
-net.micode.notes:id/menu_list_mode = 0x7f060028
-net.micode.notes:id/iv_medium_select = 0x7f06001c
-net.micode.notes:id/menu_export_text = 0x7f060026
-net.micode.notes:string/menu_folder_view = 0x7f0b0026
-net.micode.notes:id/menu_delete = 0x7f060024
-net.micode.notes:string/ticker_fail = 0x7f0b0061
-net.micode.notes:string/file_name_txt_format = 0x7f0b0015
-net.micode.notes:drawable/edit_blue = 0x7f050006
-net.micode.notes:id/prefenerece_sync_status_textview = 0x7f060039
-net.micode.notes:string/menu_font_size = 0x7f0b0029
-net.micode.notes:string/menu_alert = 0x7f0b001f
-net.micode.notes:drawable/edit_title_yellow = 0x7f05000d
-net.micode.notes:id/menu_alert = 0x7f060023
-net.micode.notes:string/success_sync_account = 0x7f0b005c
-net.micode.notes:id/ll_font_super = 0x7f060022
-net.micode.notes:id/ll_font_small = 0x7f060021
-net.micode.notes:menu/call_record_folder = 0x7f080001
-net.micode.notes:id/ll_font_normal = 0x7f060020
-net.micode.notes:id/ll_font_large = 0x7f06001f
-net.micode.notes:id/note_bg_color_selector = 0x7f060033
-net.micode.notes:drawable/search_result = 0x7f050034
-net.micode.notes:id/iv_super_select = 0x7f06001e
-net.micode.notes:style/TextAppearanceSuper = 0x7f0c0009
-net.micode.notes:color/secondary_text_dark = 0x7f030001
-net.micode.notes:id/move = 0x7f060031
-net.micode.notes:menu/call_note_edit = 0x7f080000
-net.micode.notes:id/iv_bg_yellow_select = 0x7f06001a
-net.micode.notes:id/iv_bg_yellow = 0x7f060019
-net.micode.notes:string/error_sync_cancelled = 0x7f0b0011
-net.micode.notes:id/iv_bg_white_select = 0x7f060018
-net.micode.notes:id/iv_bg_white = 0x7f060017
-net.micode.notes:string/menu_font_large = 0x7f0b0027
-net.micode.notes:drawable/widget_4x_blue = 0x7f05003e
-net.micode.notes:id/iv_large_select = 0x7f06001b
-net.micode.notes:id/widget_bg_image = 0x7f060044
-net.micode.notes:id/iv_bg_green_select = 0x7f060014
-net.micode.notes:id/amPm = 0x7f060003
-net.micode.notes:id/iv_bg_green = 0x7f060013
-net.micode.notes:drawable/new_note_pressed = 0x7f050031
-net.micode.notes:id/iv_bg_blue = 0x7f060011
-net.micode.notes:layout/settings_header = 0x7f07000c
-net.micode.notes:string/preferences_dialog_select_account_tips = 0x7f0b004c
-net.micode.notes:id/font_size_selector = 0x7f06000c
-net.micode.notes:id/et_edit_text = 0x7f06000a
-net.micode.notes:id/dummy_button = 0x7f060009
-net.micode.notes:id/et_foler_name = 0x7f06000b
-net.micode.notes:drawable/edit_green = 0x7f050007
-net.micode.notes:layout/widget_4x = 0x7f07000e
-net.micode.notes:string/search = 0x7f0b0056
-net.micode.notes:id/cb_edit_item = 0x7f060006
-net.micode.notes:id/btn_set_bg_color = 0x7f060005
-net.micode.notes:id/account_dialog_subtitle = 0x7f060000
-net.micode.notes:string/error_note_empty_for_clock = 0x7f0b000c
-net.micode.notes:id/iv_bg_blue_select = 0x7f060012
-net.micode.notes:string/preferences_dialog_change_account_title = 0x7f0b004a
-net.micode.notes:drawable/menu_move = 0x7f05002e
-net.micode.notes:drawable/widget_4x_white = 0x7f050041
-net.micode.notes:menu/note_list = 0x7f080003
-net.micode.notes:id/account_dialog_title = 0x7f060001
-net.micode.notes:drawable/widget_4x_green = 0x7f05003f
-net.micode.notes:style/NoteTheme = 0x7f0c0003
-net.micode.notes:id/hour = 0x7f06000f
-net.micode.notes:drawable/note_edit_color_selector_panel = 0x7f050032
-net.micode.notes:drawable/widget_2x_yellow = 0x7f05003d
-net.micode.notes:dimen/text_font_size_large = 0x7f040000
-net.micode.notes:id/tv_alert_date = 0x7f06003d
-net.micode.notes:drawable/widget_2x_red = 0x7f05003b
-net.micode.notes:style/TextAppearanceUnderMenuIcon = 0x7f0c000a
-net.micode.notes:id/delete = 0x7f060008
-net.micode.notes:drawable/widget_2x_green = 0x7f05003a
-net.micode.notes:drawable/title_bar_bg = 0x7f050038
-net.micode.notes:id/navigation_bar = 0x7f060032
-net.micode.notes:id/iv_bg_red = 0x7f060015
-net.micode.notes:drawable/notification = 0x7f050033
-net.micode.notes:drawable/menu_delete = 0x7f05002d
-net.micode.notes:string/error_sync_internal = 0x7f0b0012
-net.micode.notes:drawable/list_green_single = 0x7f05001f
-net.micode.notes:string/alert_message_delete_note = 0x7f0b0001
-net.micode.notes:id/tv_modified_date = 0x7f06003f
-net.micode.notes:drawable/list_blue_middle = 0x7f050018
-net.micode.notes:id/iv_small_select = 0x7f06001d
-net.micode.notes:menu/note_list_options = 0x7f080005
-net.micode.notes:layout/activity_splash = 0x7f070001
-net.micode.notes:xml/searchable = 0x7f0e0001
-net.micode.notes:string/menu_folder_delete = 0x7f0b0025
-net.micode.notes:drawable/dropdown_icon = 0x7f050005
-net.micode.notes:id/date = 0x7f060007
-net.micode.notes:drawable/list_yellow_single = 0x7f05002b
-net.micode.notes:drawable/list_red_up = 0x7f050024
-net.micode.notes:drawable/widget_4x_yellow = 0x7f050042
-net.micode.notes:drawable/list_yellow_middle = 0x7f05002a
-net.micode.notes:id/tv_folder_name = 0x7f06003e
-net.micode.notes:drawable/list_yellow_down = 0x7f050029
-net.micode.notes:drawable/clock = 0x7f050003
-net.micode.notes:drawable/list_white_up = 0x7f050028
-net.micode.notes:drawable/edit_title_blue = 0x7f050009
-net.micode.notes:drawable/edit_red = 0x7f050008
-net.micode.notes:id/iv_alert_icon = 0x7f060010
-net.micode.notes:layout/dialog_edit_text = 0x7f070004
-net.micode.notes:string/preferences_account_title = 0x7f0b0045
-net.micode.notes:drawable/edit_white = 0x7f05000e
-net.micode.notes:drawable/list_white_middle = 0x7f050026
-net.micode.notes:color/user_query_highlight = 0x7f030002
-net.micode.notes:drawable/list_white_down = 0x7f050025
-net.micode.notes:id/menu_delete_remind = 0x7f060025
-net.micode.notes:drawable/list_red_down = 0x7f050021
-net.micode.notes:drawable/list_red_middle = 0x7f050022
-net.micode.notes:string/error_note_empty_for_send_to_desktop = 0x7f0b000d
-net.micode.notes:layout/note_list_dropdown_menu = 0x7f07000a
-net.micode.notes:drawable/list_blue_down = 0x7f050017
-net.micode.notes:attr/fullscreenTextColor = 0x7f020001
-net.micode.notes:id/action_select_all = 0x7f060002
-net.micode.notes:string/menu_send_to_desktop = 0x7f0b0035
-net.micode.notes:drawable/list_red_single = 0x7f050023
-net.micode.notes:string/preferences_add_account = 0x7f0b0046
-net.micode.notes:drawable/bg_btn_set_color = 0x7f050000
-net.micode.notes:string/preferences_bg_random_appear_title = 0x7f0b0047
-net.micode.notes:layout/widget_2x = 0x7f07000d
-net.micode.notes:drawable/list_footer_bg = 0x7f05001c
-net.micode.notes:string/alert_title_delete = 0x7f0b0003
-net.micode.notes:drawable/edit_title_green = 0x7f05000a
-net.micode.notes:drawable/icon_app = 0x7f050015
-net.micode.notes:drawable/font_small = 0x7f050013
-net.micode.notes:string/sync_progress_login = 0x7f0b005e
-net.micode.notes:array/menu_share_ways = 0x7f010001
-net.micode.notes:drawable/widget_2x_white = 0x7f05003c
-net.micode.notes:layout/folder_list_item = 0x7f070005
-net.micode.notes:layout/add_account_text = 0x7f070002
-net.micode.notes:id/tv_title = 0x7f060042
-net.micode.notes:color/primary_text_dark = 0x7f030000
-net.micode.notes:drawable/font_size_selector_bg = 0x7f050012
-net.micode.notes:drawable/list_blue_up = 0x7f05001a
-net.micode.notes:string/failed_sdcard_export = 0x7f0b0014
-net.micode.notes:drawable/widget_4x_red = 0x7f050040
-net.micode.notes:string/search_setting_description = 0x7f0b0059
-net.micode.notes:drawable/list_blue_single = 0x7f050019
-net.micode.notes:drawable/font_large = 0x7f050010
-net.micode.notes:drawable/delete = 0x7f050004
-net.micode.notes:drawable/edit_yellow = 0x7f05000f
-net.micode.notes:id/note_item = 0x7f060036
-net.micode.notes:drawable/edit_title_white = 0x7f05000c
-net.micode.notes:id/note_edit_list = 0x7f060034
-net.micode.notes:drawable/edit_title_red = 0x7f05000b
-net.micode.notes:string/menu_delete = 0x7f0b0021
-net.micode.notes:drawable/list_folder = 0x7f05001b
-net.micode.notes:string/search_hint = 0x7f0b0057
-net.micode.notes:id/menu_font_size = 0x7f060027
-net.micode.notes:drawable/bg_color_btn_mask = 0x7f050001
-net.micode.notes:drawable/call_record = 0x7f050002
-net.micode.notes:drawable/list_yellow_up = 0x7f05002c
-net.micode.notes:dimen/text_font_size_small = 0x7f040003
-net.micode.notes:dimen/text_font_size_normal = 0x7f040002
-net.micode.notes:drawable/list_background = 0x7f050016
-net.micode.notes:string/app_name = 0x7f0b0004
-net.micode.notes:menu/note_list_dropdown = 0x7f080004
-net.micode.notes:string/menu_setting = 0x7f0b0036
-net.micode.notes:dimen/text_font_size_medium = 0x7f040001
-net.micode.notes:id/iv_bg_red_select = 0x7f060016
-net.micode.notes:drawable/list_green_middle = 0x7f05001e
-net.micode.notes:string/error_note_not_exist = 0x7f0b000e
-net.micode.notes:id/menu_new_folder = 0x7f060029
-net.micode.notes:layout/note_edit_list_item = 0x7f070007
-net.micode.notes:layout/account_dialog_title = 0x7f070000
-net.micode.notes:array/format_for_exported_note = 0x7f010000
diff --git a/xiaomi-src/app/build/intermediates/variant_model/debug/out b/xiaomi-src/app/build/intermediates/variant_model/debug/out
deleted file mode 100644
index fbfb74a..0000000
Binary files a/xiaomi-src/app/build/intermediates/variant_model/debug/out and /dev/null differ
diff --git a/xiaomi-src/app/build/intermediates/variant_model/debug/variant_model.json b/xiaomi-src/app/build/intermediates/variant_model/debug/variant_model.json
deleted file mode 100644
index fbfb74a..0000000
Binary files a/xiaomi-src/app/build/intermediates/variant_model/debug/variant_model.json and /dev/null differ
diff --git a/xiaomi-src/app/build/outputs/apk/debug/app-debug.apk b/xiaomi-src/app/build/outputs/apk/debug/app-debug.apk
deleted file mode 100644
index 28e6cf5..0000000
Binary files a/xiaomi-src/app/build/outputs/apk/debug/app-debug.apk and /dev/null differ
diff --git a/xiaomi-src/app/build/outputs/apk/debug/output-metadata.json b/xiaomi-src/app/build/outputs/apk/debug/output-metadata.json
deleted file mode 100644
index d6b0043..0000000
--- a/xiaomi-src/app/build/outputs/apk/debug/output-metadata.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "version": 3,
- "artifactType": {
- "type": "APK",
- "kind": "Directory"
- },
- "applicationId": "net.micode.notes",
- "variantName": "debug",
- "elements": [
- {
- "type": "SINGLE",
- "filters": [],
- "attributes": [],
- "versionCode": 1,
- "versionName": "1.0",
- "outputFile": "app-debug.apk"
- }
- ],
- "elementType": "File"
-}
\ No newline at end of file
diff --git a/xiaomi-src/app/build/outputs/logs/manifest-merger-debug-report.txt b/xiaomi-src/app/build/outputs/logs/manifest-merger-debug-report.txt
deleted file mode 100644
index 0017d38..0000000
--- a/xiaomi-src/app/build/outputs/logs/manifest-merger-debug-report.txt
+++ /dev/null
@@ -1,243 +0,0 @@
--- Merging decision tree log ---
-manifest
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:4:1-142:12
-INJECTED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:4:1-142:12
-INJECTED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:4:1-142:12
-INJECTED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:4:1-142:12
-INJECTED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:4:1-142:12
-INJECTED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:4:1-142:12
-INJECTED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:4:1-142:12
- package
- INJECTED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:4:1-142:12
- INJECTED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml
- android:versionName
- INJECTED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:4:1-142:12
- INJECTED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml
- xmlns:tools
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:5:5-51
- android:versionCode
- INJECTED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:4:1-142:12
- INJECTED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml
- xmlns:android
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:4:11-69
-uses-permission#android.permission.WRITE_EXTERNAL_STORAGE
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:8:5-81
- android:name
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:8:22-78
-uses-permission#com.android.launcher.permission.INSTALL_SHORTCUT
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:9:5-88
- android:name
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:9:22-85
-uses-permission#android.permission.INTERNET
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:10:5-67
- android:name
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:10:22-64
-uses-permission#android.permission.READ_CONTACTS
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:11:5-72
- android:name
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:11:22-69
-uses-permission#android.permission.MANAGE_ACCOUNTS
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:12:5-74
- android:name
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:12:22-71
-uses-permission#android.permission.AUTHENTICATE_ACCOUNTS
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:13:5-80
- android:name
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:13:22-77
-uses-permission#android.permission.GET_ACCOUNTS
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:14:5-71
- android:name
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:14:22-68
-uses-permission#android.permission.USE_CREDENTIALS
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:15:5-74
- android:name
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:15:22-71
-uses-permission#android.permission.RECEIVE_BOOT_COMPLETED
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:16:5-81
- android:name
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:16:22-78
-application
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:19:5-141:19
- android:label
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:21:9-41
- android:icon
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:20:9-42
-activity#net.micode.notes.ui.NotesListActivity
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:23:9-36:20
- android:label
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:26:13-45
- android:launchMode
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:27:13-43
- android:windowSoftInputMode
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:30:13-52
- android:exported
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:31:13-36
- android:configChanges
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:25:13-74
- android:theme
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:28:13-45
- android:name
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:24:13-49
-intent-filter#action:name:android.intent.action.MAIN+category:name:android.intent.category.LAUNCHER
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:32:13-35:29
-action#android.intent.action.MAIN
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:33:17-69
- android:name
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:33:25-66
-category#android.intent.category.LAUNCHER
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:34:17-77
- android:name
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:34:27-74
-activity#net.micode.notes.ui.NoteEditActivity
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:39:9-72:20
- android:launchMode
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:42:13-43
- android:exported
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:44:13-36
- android:configChanges
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:41:13-74
- android:theme
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:43:13-45
- android:name
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:40:13-48
-intent-filter#action:name:android.intent.action.VIEW+category:name:android.intent.category.DEFAULT+data:mimeType:vnd.android.cursor.item/call_note+data:mimeType:vnd.android.cursor.item/text_note
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:46:13-54:29
- android:scheme
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:47:17-38
- tools:ignore
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:48:17-47
-action#android.intent.action.VIEW
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:49:17-69
- android:name
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:49:25-66
-category#android.intent.category.DEFAULT
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:50:17-76
- android:name
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:50:27-73
-data
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:52:17-78
- android:mimeType
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:52:23-75
-intent-filter#action:name:android.intent.action.INSERT_OR_EDIT+category:name:android.intent.category.DEFAULT+data:mimeType:vnd.android.cursor.item/call_note+data:mimeType:vnd.android.cursor.item/text_note
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:56:13-62:29
-action#android.intent.action.INSERT_OR_EDIT
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:57:17-79
- android:name
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:57:25-76
-intent-filter#action:name:android.intent.action.SEARCH+category:name:android.intent.category.DEFAULT
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:64:13-67:29
-action#android.intent.action.SEARCH
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:65:17-71
- android:name
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:65:25-68
-meta-data#android.app.searchable
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:69:13-71:54
- android:resource
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:71:17-51
- android:name
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:70:17-54
-provider#net.micode.notes.data.NotesProvider
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:75:9-78:43
- android:authorities
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:77:13-47
- android:multiprocess
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:78:13-40
- android:name
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:76:13-63
-receiver#net.micode.notes.widget.NoteWidgetProvider_2x
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:81:9-93:20
- android:label
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:83:13-50
- android:exported
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:84:13-36
- android:name
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:82:13-57
-intent-filter#action:name:android.appwidget.action.APPWIDGET_DELETED+action:name:android.appwidget.action.APPWIDGET_UPDATE+action:name:android.intent.action.PRIVACY_MODE_CHANGED
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:85:13-89:29
-action#android.appwidget.action.APPWIDGET_UPDATE
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:86:17-84
- android:name
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:86:25-81
-action#android.appwidget.action.APPWIDGET_DELETED
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:87:17-85
- android:name
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:87:25-82
-action#android.intent.action.PRIVACY_MODE_CHANGED
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:88:17-85
- android:name
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:88:25-82
-meta-data#android.appwidget.provider
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:90:13-92:58
- android:resource
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:92:17-55
- android:name
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:91:17-58
-receiver#net.micode.notes.widget.NoteWidgetProvider_4x
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:95:9-107:20
- android:label
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:97:13-50
- android:exported
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:98:13-36
- android:name
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:96:13-57
-receiver#net.micode.notes.ui.AlarmInitReceiver
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:110:9-116:20
- android:exported
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:112:13-36
- android:name
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:111:13-49
-intent-filter#action:name:android.intent.action.BOOT_COMPLETED
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:113:13-115:29
-action#android.intent.action.BOOT_COMPLETED
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:114:17-79
- android:name
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:114:25-76
-receiver#net.micode.notes.ui.AlarmReceiver
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:119:9-121:50
- android:process
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:121:13-38
- android:name
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:120:13-61
-activity#net.micode.notes.ui.AlarmAlertActivity
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:124:9-128:87
- android:label
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:126:13-45
- android:launchMode
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:127:13-48
- android:theme
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:128:13-75
- android:name
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:125:13-50
-activity#net.micode.notes.ui.NotesPreferenceActivity
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:131:9-135:72
- android:label
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:133:13-54
- android:launchMode
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:134:13-43
- android:theme
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:135:13-60
- android:name
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:132:13-71
-meta-data#android.app.default_searchable
-ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:138:9-140:52
- android:value
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:140:13-49
- android:name
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml:139:13-58
-uses-sdk
-INJECTED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml reason: use-sdk injection requested
-INJECTED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml
-INJECTED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml
-INJECTED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml
-INJECTED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml
- android:targetSdkVersion
- INJECTED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml
- INJECTED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml
- android:minSdkVersion
- INJECTED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml
- ADDED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml
- INJECTED from C:\Users\Administrator\Desktop\third-year first semester\xiaomi\xiaomi-src\app\src\main\AndroidManifest.xml
diff --git a/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/DropdownMenu$1.class.uniqueId4 b/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/DropdownMenu$1.class.uniqueId4
deleted file mode 100644
index 2563ae0..0000000
Binary files a/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/DropdownMenu$1.class.uniqueId4 and /dev/null differ
diff --git a/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/DropdownMenu.class.uniqueId11 b/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/DropdownMenu.class.uniqueId11
deleted file mode 100644
index 940c106..0000000
Binary files a/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/DropdownMenu.class.uniqueId11 and /dev/null differ
diff --git a/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity$1.class.uniqueId0 b/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity$1.class.uniqueId0
deleted file mode 100644
index 826c921..0000000
Binary files a/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity$1.class.uniqueId0 and /dev/null differ
diff --git a/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity$2.class.uniqueId1 b/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity$2.class.uniqueId1
deleted file mode 100644
index 56b91c8..0000000
Binary files a/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity$2.class.uniqueId1 and /dev/null differ
diff --git a/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity$3.class.uniqueId12 b/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity$3.class.uniqueId12
deleted file mode 100644
index 0eadc2c..0000000
Binary files a/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity$3.class.uniqueId12 and /dev/null differ
diff --git a/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity$HeadViewHolder.class.uniqueId2 b/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity$HeadViewHolder.class.uniqueId2
deleted file mode 100644
index 407cd91..0000000
Binary files a/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity$HeadViewHolder.class.uniqueId2 and /dev/null differ
diff --git a/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity.class.uniqueId8 b/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity.class.uniqueId8
deleted file mode 100644
index 1a8e047..0000000
Binary files a/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NoteEditActivity.class.uniqueId8 and /dev/null differ
diff --git a/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListItem.class.uniqueId10 b/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListItem.class.uniqueId10
deleted file mode 100644
index 107231b..0000000
Binary files a/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesListItem.class.uniqueId10 and /dev/null differ
diff --git a/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesProvider.class.uniqueId5 b/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesProvider.class.uniqueId5
deleted file mode 100644
index eb9b19d..0000000
Binary files a/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/NotesProvider.class.uniqueId5 and /dev/null differ
diff --git a/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/ResourceParser$NoteBgResources.class.uniqueId9 b/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/ResourceParser$NoteBgResources.class.uniqueId9
deleted file mode 100644
index 4d95e6b..0000000
Binary files a/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/ResourceParser$NoteBgResources.class.uniqueId9 and /dev/null differ
diff --git a/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/ResourceParser$NoteItemBgResources.class.uniqueId3 b/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/ResourceParser$NoteItemBgResources.class.uniqueId3
deleted file mode 100644
index c7931c4..0000000
Binary files a/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/ResourceParser$NoteItemBgResources.class.uniqueId3 and /dev/null differ
diff --git a/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/ResourceParser$TextAppearanceResources.class.uniqueId6 b/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/ResourceParser$TextAppearanceResources.class.uniqueId6
deleted file mode 100644
index 00021d2..0000000
Binary files a/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/ResourceParser$TextAppearanceResources.class.uniqueId6 and /dev/null differ
diff --git a/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/ResourceParser$WidgetBgResources.class.uniqueId7 b/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/ResourceParser$WidgetBgResources.class.uniqueId7
deleted file mode 100644
index 6b473c6..0000000
Binary files a/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/ResourceParser$WidgetBgResources.class.uniqueId7 and /dev/null differ
diff --git a/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/ResourceParser.class.uniqueId13 b/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/ResourceParser.class.uniqueId13
deleted file mode 100644
index 689d032..0000000
Binary files a/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/ResourceParser.class.uniqueId13 and /dev/null differ
diff --git a/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin b/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin
deleted file mode 100644
index 9a11090..0000000
Binary files a/xiaomi-src/app/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin and /dev/null differ
diff --git a/xiaomi-src/app/src/main/java/net/micode/notes/data/Notes.java b/xiaomi-src/app/src/main/java/net/micode/notes/data/Notes.java
deleted file mode 100644
index 226763b..0000000
--- a/xiaomi-src/app/src/main/java/net/micode/notes/data/Notes.java
+++ /dev/null
@@ -1,273 +0,0 @@
-/*
- * 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.data;
-
-import android.net.Uri;
-
-// Notes类定义了与笔记和文件夹相关的常量和数据列接口
-public class Notes {
- public static final String AUTHORITY = "micode_notes"; // 用于标识内容提供者的授权名称
- public static final String TAG = "Notes"; // 日志标签
- public static final int TYPE_NOTE = 0; // 笔记类型
- public static final int TYPE_FOLDER = 1; // 文件夹类型
- public static final int TYPE_SYSTEM = 2; // 系统类型
-
- /**
- * 下面的ID是系统文件夹的标识符
- * {@link Notes#ID_ROOT_FOLDER} 是默认文件夹
- * {@link Notes#ID_TEMPARAY_FOLDER} 是属于没有文件夹的笔记
- * {@link Notes#ID_CALL_RECORD_FOLDER} 是用于存储通话记录的
- */
- public static final int ID_ROOT_FOLDER = 0; // 根文件夹ID
- public static final int ID_TEMPARAY_FOLDER = -1; // 临时文件夹ID,用于存放不属于任何文件夹的笔记
- public static final int ID_CALL_RECORD_FOLDER = -2; // 通话记录文件夹ID
- public static final int ID_TRASH_FOLER = -3; // 垃圾箱文件夹ID
-
- public static final String INTENT_EXTRA_ALERT_DATE = "net.micode.notes.alert_date"; // 用于Intent的提醒日期额外数据
- public static final String INTENT_EXTRA_BACKGROUND_ID = "net.micode.notes.background_color_id"; // 笔记背景色ID
- public static final String INTENT_EXTRA_WIDGET_ID = "net.micode.notes.widget_id"; // 小部件ID
- public static final String INTENT_EXTRA_WIDGET_TYPE = "net.micode.notes.widget_type"; // 小部件类型
- public static final String INTENT_EXTRA_FOLDER_ID = "net.micode.notes.folder_id"; // 文件夹ID
- public static final String INTENT_EXTRA_CALL_DATE = "net.micode.notes.call_date"; // 通话日期
-
- public static final int TYPE_WIDGET_INVALIDE = -1; // 无效的小部件类型
- public static final int TYPE_WIDGET_2X = 0; // 2x小部件类型
- public static final int TYPE_WIDGET_4X = 1; // 4x小部件类型
-
- public static class DataConstants {
- public static final String NOTE = TextNote.CONTENT_ITEM_TYPE; // 笔记的内容项类型
- public static final String CALL_NOTE = CallNote.CONTENT_ITEM_TYPE; // 通话记录的内容项类型
- }
-
- /**
- * 查询所有笔记和文件夹的Uri
- */
- public static final Uri CONTENT_NOTE_URI = Uri.parse("content://" + AUTHORITY + "/note");
-
- /**
- * 查询数据的Uri
- */
- public static final Uri CONTENT_DATA_URI = Uri.parse("content://" + AUTHORITY + "/data");
-
- // 笔记和文件夹的公共列接口
- public interface NoteColumns {
- /**
- * 行的唯一ID
- *
类型: INTEGER (long)
- */
- public static final String ID = "_id";
-
- /**
- * 笔记或文件夹的父ID
- *
类型: INTEGER (long)
- */
- public static final String PARENT_ID = "parent_id";
-
- /**
- * 创建日期
- *
类型: INTEGER (long)
- */
- public static final String CREATED_DATE = "created_date";
-
- /**
- * 最后修改日期
- *
类型: INTEGER (long)
- */
- public static final String MODIFIED_DATE = "modified_date";
-
- /**
- * 提醒日期
- *
类型: INTEGER (long)
- */
- public static final String ALERTED_DATE = "alert_date";
-
- /**
- * 笔记或文件夹的摘要信息
- *
类型: TEXT
- */
- public static final String SNIPPET = "snippet";
-
- /**
- * 笔记的小部件ID
- *
类型: INTEGER (long)
- */
- public static final String WIDGET_ID = "widget_id";
-
- /**
- * 笔记的小部件类型
- *
类型: INTEGER (long)
- */
- public static final String WIDGET_TYPE = "widget_type";
-
- /**
- * 笔记的背景色ID
- *
类型: INTEGER (long)
- */
- public static final String BG_COLOR_ID = "bg_color_id";
-
- /**
- * 笔记是否有附件
- *
类型: INTEGER
- */
- public static final String HAS_ATTACHMENT = "has_attachment";
-
- /**
- * 笔记数量
- *
类型: INTEGER (long)
- */
- public static final String NOTES_COUNT = "notes_count";
-
- /**
- * 文件夹类型:0-笔记,1-文件夹
- *
类型: INTEGER
- */
- public static final String TYPE = "type";
-
- /**
- * 最后同步ID
- *
类型: INTEGER (long)
- */
- public static final String SYNC_ID = "sync_id";
-
- /**
- * 标记本地是否已修改
- *
类型: INTEGER
- */
- public static final String LOCAL_MODIFIED = "local_modified";
-
- /**
- * 移入临时文件夹前的原始父ID
- *
类型: INTEGER
- */
- public static final String ORIGIN_PARENT_ID = "origin_parent_id";
-
- /**
- * Google任务ID
- *
类型: TEXT
- */
- public static final String GTASK_ID = "gtask_id";
-
- /**
- * 版本号
- *
类型: INTEGER (long)
- */
- public static final String VERSION = "version";
- }
-
- // 数据列接口
- public interface DataColumns {
- /**
- * 行的唯一ID
- *
类型: INTEGER (long)
- */
- public static final String ID = "_id";
-
- /**
- * 该项的MIME类型。
- *
类型: TEXT
- */
- public static final String MIME_TYPE = "mime_type";
-
- /**
- * 属于的笔记的引用ID
- *
类型: INTEGER (long)
- */
- public static final String NOTE_ID = "note_id";
-
- /**
- * 创建日期
- *
类型: INTEGER (long)
- */
- public static final String CREATED_DATE = "created_date";
-
- /**
- * 最后修改日期
- *
类型: INTEGER (long)
- */
- public static final String MODIFIED_DATE = "modified_date";
-
- /**
- * 数据内容
- *
类型: TEXT
- */
- public static final String CONTENT = "content";
-
- /**
- * 通用数据列,具体含义由{@link #MIME_TYPE}决定,用于存储整型数据
- *
类型: INTEGER
- */
- public static final String DATA1 = "data1";
-
- /**
- * 通用数据列,具体含义由{@link #MIME_TYPE}决定,用于存储整型数据
- *
类型: INTEGER
- */
- public static final String DATA2 = "data2";
-
- /**
- * 通用数据列,具体含义由{@link #MIME_TYPE}决定,用于存储文本数据
- *
类型: TEXT
- */
- public static final String DATA3 = "data3";
-
- /**
- * 通用数据列,具体含义由{@link #MIME_TYPE}决定,用于存储文本数据
- *
类型: TEXT
- */
- public static final String DATA4 = "data4";
-
- /**
- * 通用数据列,具体含义由{@link #MIME_TYPE}决定,用于存储文本数据
- *
类型: TEXT
- */
- public static final String DATA5 = "data5";
- }
-
- // 文本笔记类,实现了DataColumns接口
- public static final class TextNote implements DataColumns {
- /**
- * 模式,指示文本是否在检查列表模式中
- *
类型: INTEGER 1:检查列表模式 0: 正常模式
- */
- public static final String MODE = DATA1;
-
- public static final int MODE_CHECK_LIST = 1;
-
- public static final String CONTENT_TYPE = "vnd.android.cursor.dir/text_note"; // MIME类型定义
- public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/text_note"; // 单项MIME类型定义
- public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/text_note"); // 内容URI定义
- }
-
- // 通话记录笔记类,实现了DataColumns接口
- public static final class CallNote implements DataColumns {
- /**
- * 通话日期
- *
类型: INTEGER (long)
- */
- public static final String CALL_DATE = DATA1;
-
- /**
- * 电话号码
- *
类型: TEXT
- */
- public static final String PHONE_NUMBER = DATA3;
-
- public static final String CONTENT_TYPE = "vnd.android.cursor.dir/call_note"; // MIME类型定义
- public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/call_note"; // 单项MIME类型定义
- public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/call_note"); // 内容URI定义
- }
-}
diff --git a/xiaomi-src/app/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java b/xiaomi-src/app/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java
deleted file mode 100644
index 67ad506..0000000
--- a/xiaomi-src/app/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java
+++ /dev/null
@@ -1,388 +0,0 @@
-/*
- * 该类为Notes数据库的辅助类,负责管理数据库的创建和版本管理。
- */
-package net.micode.notes.data;
-
-import android.content.ContentValues;
-import android.content.Context;
-import android.database.sqlite.SQLiteDatabase;
-import android.database.sqlite.SQLiteOpenHelper;
-import android.util.Log;
-
-import net.micode.notes.data.Notes.DataColumns;
-import net.micode.notes.data.Notes.DataConstants;
-import net.micode.notes.data.Notes.NoteColumns;
-
-
-public class NotesDatabaseHelper extends SQLiteOpenHelper {
- // 数据库名称
- private static final String DB_NAME = "note.db";
-
- // 数据库版本号
- private static final int DB_VERSION = 4;
-
- // 表接口,定义了数据库中的两个表名
- public interface TABLE {
- public static final String NOTE = "note";
-
- public static final String DATA = "data";
- }
-
- // 日志标签
- private static final String TAG = "NotesDatabaseHelper";
-
- // 单例模式,确保数据库辅助类的唯一实例
- private static NotesDatabaseHelper mInstance;
-
- // 创建NOTE表的SQL语句
- private static final String CREATE_NOTE_TABLE_SQL =
- "CREATE TABLE " + TABLE.NOTE + "(" +
- NoteColumns.ID + " INTEGER PRIMARY KEY," +
- NoteColumns.PARENT_ID + " INTEGER NOT NULL DEFAULT 0," +
- NoteColumns.ALERTED_DATE + " INTEGER NOT NULL DEFAULT 0," +
- NoteColumns.BG_COLOR_ID + " INTEGER NOT NULL DEFAULT 0," +
- NoteColumns.CREATED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," +
- NoteColumns.HAS_ATTACHMENT + " INTEGER NOT NULL DEFAULT 0," +
- NoteColumns.MODIFIED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," +
- NoteColumns.NOTES_COUNT + " INTEGER NOT NULL DEFAULT 0," +
- NoteColumns.SNIPPET + " TEXT NOT NULL DEFAULT ''," +
- NoteColumns.TYPE + " INTEGER NOT NULL DEFAULT 0," +
- NoteColumns.WIDGET_ID + " INTEGER NOT NULL DEFAULT 0," +
- NoteColumns.WIDGET_TYPE + " INTEGER NOT NULL DEFAULT -1," +
- NoteColumns.SYNC_ID + " INTEGER NOT NULL DEFAULT 0," +
- NoteColumns.LOCAL_MODIFIED + " INTEGER NOT NULL DEFAULT 0," +
- NoteColumns.ORIGIN_PARENT_ID + " INTEGER NOT NULL DEFAULT 0," +
- NoteColumns.GTASK_ID + " TEXT NOT NULL DEFAULT ''," +
- NoteColumns.VERSION + " INTEGER NOT NULL DEFAULT 0" +
- ")";
-
- // 创建DATA表的SQL语句
- private static final String CREATE_DATA_TABLE_SQL =
- "CREATE TABLE " + TABLE.DATA + "(" +
- DataColumns.ID + " INTEGER PRIMARY KEY," +
- DataColumns.MIME_TYPE + " TEXT NOT NULL," +
- DataColumns.NOTE_ID + " INTEGER NOT NULL DEFAULT 0," +
- NoteColumns.CREATED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," +
- NoteColumns.MODIFIED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," +
- DataColumns.CONTENT + " TEXT NOT NULL DEFAULT ''," +
- DataColumns.DATA1 + " INTEGER," +
- DataColumns.DATA2 + " INTEGER," +
- DataColumns.DATA3 + " TEXT NOT NULL DEFAULT ''," +
- DataColumns.DATA4 + " TEXT NOT NULL DEFAULT ''," +
- DataColumns.DATA5 + " TEXT NOT NULL DEFAULT ''" +
- ")";
-
- // 创建DATA表的NOTE_ID索引的SQL语句
- private static final String CREATE_DATA_NOTE_ID_INDEX_SQL =
- "CREATE INDEX IF NOT EXISTS note_id_index ON " +
- TABLE.DATA + "(" + DataColumns.NOTE_ID + ");";
-
- // 当更新NOTE表中的PARENT_ID字段时,增加目标文件夹的NOTE_COUNT
- private static final String NOTE_INCREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER =
- "CREATE TRIGGER increase_folder_count_on_update " +
- " AFTER UPDATE OF " + NoteColumns.PARENT_ID + " ON " + TABLE.NOTE +
- " BEGIN " +
- " UPDATE " + TABLE.NOTE +
- " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + " + 1" +
- " WHERE " + NoteColumns.ID + "=new." + NoteColumns.PARENT_ID + ";" +
- " END";
-
- // 当从文件夹移动NOTE时,减少源文件夹的NOTE_COUNT
- private static final String NOTE_DECREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER =
- "CREATE TRIGGER decrease_folder_count_on_update " +
- " AFTER UPDATE OF " + NoteColumns.PARENT_ID + " ON " + TABLE.NOTE +
- " BEGIN " +
- " UPDATE " + TABLE.NOTE +
- " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + "-1" +
- " WHERE " + NoteColumns.ID + "=old." + NoteColumns.PARENT_ID +
- " AND " + NoteColumns.NOTES_COUNT + ">0" + ";" +
- " END";
-
- // 当插入新NOTE时,增加目标文件夹的NOTE_COUNT
- private static final String NOTE_INCREASE_FOLDER_COUNT_ON_INSERT_TRIGGER =
- "CREATE TRIGGER increase_folder_count_on_insert " +
- " AFTER INSERT ON " + TABLE.NOTE +
- " BEGIN " +
- " UPDATE " + TABLE.NOTE +
- " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + " + 1" +
- " WHERE " + NoteColumns.ID + "=new." + NoteColumns.PARENT_ID + ";" +
- " END";
-
- // 当删除NOTE时,减少文件夹的NOTE_COUNT
- private static final String NOTE_DECREASE_FOLDER_COUNT_ON_DELETE_TRIGGER =
- "CREATE TRIGGER decrease_folder_count_on_delete " +
- " AFTER DELETE ON " + TABLE.NOTE +
- " BEGIN " +
- " UPDATE " + TABLE.NOTE +
- " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + "-1" +
- " WHERE " + NoteColumns.ID + "=old." + NoteColumns.PARENT_ID +
- " AND " + NoteColumns.NOTES_COUNT + ">0;" +
- " END";
-
- // 当插入DATA时,如果类型为NOTE,则更新关联NOTE的内容
- private static final String DATA_UPDATE_NOTE_CONTENT_ON_INSERT_TRIGGER =
- "CREATE TRIGGER update_note_content_on_insert " +
- " AFTER INSERT ON " + TABLE.DATA +
- " WHEN new." + DataColumns.MIME_TYPE + "='" + DataConstants.NOTE + "'" +
- " BEGIN" +
- " UPDATE " + TABLE.NOTE +
- " SET " + NoteColumns.SNIPPET + "=new." + DataColumns.CONTENT +
- " WHERE " + NoteColumns.ID + "=new." + DataColumns.NOTE_ID + ";" +
- " END";
-
- // 当更新DATA时,如果类型为NOTE,则更新关联NOTE的内容
- private static final String DATA_UPDATE_NOTE_CONTENT_ON_UPDATE_TRIGGER =
- "CREATE TRIGGER update_note_content_on_update " +
- " AFTER UPDATE ON " + TABLE.DATA +
- " WHEN old." + DataColumns.MIME_TYPE + "='" + DataConstants.NOTE + "'" +
- " BEGIN" +
- " UPDATE " + TABLE.NOTE +
- " SET " + NoteColumns.SNIPPET + "=new." + DataColumns.CONTENT +
- " WHERE " + NoteColumns.ID + "=new." + DataColumns.NOTE_ID + ";" +
- " END";
-
- // 当删除DATA时,如果类型为NOTE,则更新关联NOTE的内容为空
- private static final String DATA_UPDATE_NOTE_CONTENT_ON_DELETE_TRIGGER =
- "CREATE TRIGGER update_note_content_on_delete " +
- " AFTER delete ON " + TABLE.DATA +
- " WHEN old." + DataColumns.MIME_TYPE + "='" + DataConstants.NOTE + "'" +
- " BEGIN" +
- " UPDATE " + TABLE.NOTE +
- " SET " + NoteColumns.SNIPPET + "=''" +
- " WHERE " + NoteColumns.ID + "=old." + DataColumns.NOTE_ID + ";" +
- " END";
-
- // 当删除NOTE时,删除关联的DATA
- private static final String NOTE_DELETE_DATA_ON_DELETE_TRIGGER =
- "CREATE TRIGGER delete_data_on_delete " +
- " AFTER DELETE ON " + TABLE.NOTE +
- " BEGIN" +
- " DELETE FROM " + TABLE.DATA +
- " WHERE " + DataColumns.NOTE_ID + "=old." + NoteColumns.ID + ";" +
- " END";
-
- // 当删除NOTE时,删除属于该NOTE的子NOTE
- private static final String FOLDER_DELETE_NOTES_ON_DELETE_TRIGGER =
- "CREATE TRIGGER folder_delete_notes_on_delete " +
- " AFTER DELETE ON " + TABLE.NOTE +
- " BEGIN" +
- " DELETE FROM " + TABLE.NOTE +
- " WHERE " + NoteColumns.PARENT_ID + "=old." + NoteColumns.ID + ";" +
- " END";
-
- // 当NOTE移动到回收站文件夹时,将所有子NOTE也移动到回收站
- private static final String FOLDER_MOVE_NOTES_ON_TRASH_TRIGGER =
- "CREATE TRIGGER folder_move_notes_on_trash " +
- " AFTER UPDATE ON " + TABLE.NOTE +
- " WHEN new." + NoteColumns.PARENT_ID + "=" + Notes.ID_TRASH_FOLER +
- " BEGIN" +
- " UPDATE " + TABLE.NOTE +
- " SET " + NoteColumns.PARENT_ID + "=" + Notes.ID_TRASH_FOLER +
- " WHERE " + NoteColumns.PARENT_ID + "=old." + NoteColumns.ID + ";" +
- " END";
-
- /**
- * 构造函数,私有化以防止外部实例化
- *
- * @param context 上下文对象,用于访问应用的资源和其他组件
- */
- public NotesDatabaseHelper(Context context) {
- super(context, DB_NAME, null, DB_VERSION);
- }
-
- /**
- * 创建NOTE表,并重新创建NOTE表的触发器,然后创建系统文件夹
- *
- * @param db SQLiteDatabase对象,用于执行SQL创建语句
- */
- public void createNoteTable(SQLiteDatabase db) {
- db.execSQL(CREATE_NOTE_TABLE_SQL);
- reCreateNoteTableTriggers(db);
- createSystemFolder(db);
- Log.d(TAG, "note table has been created");
- }
-
- /**
- * 重新创建笔记表的触发器
- *
- * @param db SQLiteDatabase 类型,数据库对象
- */
- private void reCreateNoteTableTriggers(SQLiteDatabase db) {
- // 删除旧的触发器
- db.execSQL("DROP TRIGGER IF EXISTS increase_folder_count_on_update");
- db.execSQL("DROP TRIGGER IF EXISTS decrease_folder_count_on_update");
- db.execSQL("DROP TRIGGER IF EXISTS decrease_folder_count_on_delete");
- db.execSQL("DROP TRIGGER IF EXISTS delete_data_on_delete");
- db.execSQL("DROP TRIGGER IF EXISTS increase_folder_count_on_insert");
- db.execSQL("DROP TRIGGER IF EXISTS folder_delete_notes_on_delete");
- db.execSQL("DROP TRIGGER IF EXISTS folder_move_notes_on_trash");
- // 创建新的触发器
- db.execSQL(NOTE_INCREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER);
- db.execSQL(NOTE_DECREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER);
- db.execSQL(NOTE_DECREASE_FOLDER_COUNT_ON_DELETE_TRIGGER);
- db.execSQL(NOTE_DELETE_DATA_ON_DELETE_TRIGGER);
- db.execSQL(NOTE_INCREASE_FOLDER_COUNT_ON_INSERT_TRIGGER);
- db.execSQL(FOLDER_DELETE_NOTES_ON_DELETE_TRIGGER);
- db.execSQL(FOLDER_MOVE_NOTES_ON_TRASH_TRIGGER);
- }
-
- /**
- * 创建系统文件夹
- *
- * @param db SQLiteDatabase 类型,数据库对象
- */
- private void createSystemFolder(SQLiteDatabase db) {
- ContentValues values = new ContentValues();
- // 创建通话记录文件夹
- values.put(NoteColumns.ID, Notes.ID_CALL_RECORD_FOLDER);
- values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM);
- db.insert(TABLE.NOTE, null, values);
- // 创建根文件夹(默认文件夹)
- values.clear();
- values.put(NoteColumns.ID, Notes.ID_ROOT_FOLDER);
- values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM);
- db.insert(TABLE.NOTE, null, values);
- // 创建临时文件夹,用于移动笔记
- values.clear();
- values.put(NoteColumns.ID, Notes.ID_TEMPARAY_FOLDER);
- values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM);
- db.insert(TABLE.NOTE, null, values);
- // 创建回收站文件夹
- values.clear();
- values.put(NoteColumns.ID, Notes.ID_TRASH_FOLER);
- values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM);
- db.insert(TABLE.NOTE, null, values);
- }
-
- /**
- * 创建数据表
- *
- * @param db SQLiteDatabase 类型,数据库对象
- */
- public void createDataTable(SQLiteDatabase db) {
- db.execSQL(CREATE_DATA_TABLE_SQL);
- reCreateDataTableTriggers(db);
- db.execSQL(CREATE_DATA_NOTE_ID_INDEX_SQL);
- Log.d(TAG, "data table has been created");
- }
-
- /**
- * 重新创建数据表的触发器
- *
- * @param db SQLiteDatabase 类型,数据库对象
- */
- private void reCreateDataTableTriggers(SQLiteDatabase db) {
- // 删除旧的触发器
- db.execSQL("DROP TRIGGER IF EXISTS update_note_content_on_insert");
- db.execSQL("DROP TRIGGER IF EXISTS update_note_content_on_update");
- db.execSQL("DROP TRIGGER IF EXISTS update_note_content_on_delete");
- // 创建新的触发器
- db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_INSERT_TRIGGER);
- db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_UPDATE_TRIGGER);
- db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_DELETE_TRIGGER);
- }
-
- /**
- * 获取 NotesDatabaseHelper 的单例对象
- *
- * @param context Context 类型,应用上下文
- * @return NotesDatabaseHelper 类型,单例对象
- */
- static synchronized NotesDatabaseHelper getInstance(Context context) {
- if (mInstance == null) {
- mInstance = new NotesDatabaseHelper(context);
- }
- return mInstance;
- }
-
- /**
- * 创建数据库表
- *
- * @param db SQLiteDatabase 类型,数据库对象
- */
- @Override
- public void onCreate(SQLiteDatabase db) {
- createNoteTable(db);
- createDataTable(db);
- }
-
- /**
- * 升级数据库
- *
- * @param db SQLiteDatabase 类型,数据库对象
- * @param oldVersion int 类型,旧版本号
- * @param newVersion int 类型,新版本号
- */
- @Override
- public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
- boolean reCreateTriggers = false;
- boolean skipV2 = false;
- // 根据旧版本号逐步升级
- if (oldVersion == 1) {
- upgradeToV2(db);
- skipV2 = true; // 这次升级包括从 v2 到 v3 的升级
- oldVersion++;
- }
- if (oldVersion == 2 && !skipV2) {
- upgradeToV3(db);
- reCreateTriggers = true;
- oldVersion++;
- }
- if (oldVersion == 3) {
- upgradeToV4(db);
- oldVersion++;
- }
- if (reCreateTriggers) {
- reCreateNoteTableTriggers(db);
- reCreateDataTableTriggers(db);
- }
- if (oldVersion != newVersion) {
- throw new IllegalStateException("Upgrade notes database to version " + newVersion
- + "fails");
- }
- }
-
- /**
- * 从版本1升级到版本2
- *
- * @param db SQLiteDatabase 类型,数据库对象
- */
- private void upgradeToV2(SQLiteDatabase db) {
- // 删除旧表,创建新表
- db.execSQL("DROP TABLE IF EXISTS " + TABLE.NOTE);
- db.execSQL("DROP TABLE IF EXISTS " + TABLE.DATA);
- createNoteTable(db);
- createDataTable(db);
- }
-
- /**
- * 从版本2升级到版本3
- *
- * @param db SQLiteDatabase 类型,数据库对象
- */
- private void upgradeToV3(SQLiteDatabase db) {
- // 删除未使用的触发器
- db.execSQL("DROP TRIGGER IF EXISTS update_note_modified_date_on_insert");
- db.execSQL("DROP TRIGGER IF EXISTS update_note_modified_date_on_delete");
- db.execSQL("DROP TRIGGER IF EXISTS update_note_modified_date_on_update");
- // 添加一个用于 gtask id 的列
- db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.GTASK_ID
- + " TEXT NOT NULL DEFAULT ''");
- // 添加一个回收站系统文件夹
- ContentValues values = new ContentValues();
- values.put(NoteColumns.ID, Notes.ID_TRASH_FOLER);
- values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM);
- db.insert(TABLE.NOTE, null, values);
- }
-
- /**
- * 从版本3升级到版本4
- *
- * @param db SQLiteDatabase 类型,数据库对象
- */
- private void upgradeToV4(SQLiteDatabase db) {
- // 添加版本号列
- db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.VERSION
- + " INTEGER NOT NULL DEFAULT 0");
- }
-}
\ No newline at end of file
diff --git a/xiaomi-src/app/src/main/java/net/micode/notes/gtask/data/Node.java b/xiaomi-src/app/src/main/java/net/micode/notes/gtask/data/Node.java
deleted file mode 100644
index 171da32..0000000
--- a/xiaomi-src/app/src/main/java/net/micode/notes/gtask/data/Node.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Node类定义了一个节点的基本属性和操作,用于数据同步时的表现和转换。
- * 它是用于表示通用数据节点的抽象类,具体的数据操作和格式转换由其子类实现。
- */
-
-package net.micode.notes.gtask.data;
-
-import android.database.Cursor;
-
-import org.json.JSONObject;
-
-// 定义节点同步动作的常量
-public abstract class Node {
- public static final int SYNC_ACTION_NONE = 0; // 无动作
- public static final int SYNC_ACTION_ADD_REMOTE = 1; // 添加远程节点
- public static final int SYNC_ACTION_ADD_LOCAL = 2; // 添加本地节点
- public static final int SYNC_ACTION_DEL_REMOTE = 3; // 删除远程节点
- public static final int SYNC_ACTION_DEL_LOCAL = 4; // 删除本地节点
- public static final int SYNC_ACTION_UPDATE_REMOTE = 5; // 更新远程节点
- public static final int SYNC_ACTION_UPDATE_LOCAL = 6; // 更新本地节点
- public static final int SYNC_ACTION_UPDATE_CONFLICT = 7; // 更新冲突
- public static final int SYNC_ACTION_ERROR = 8; // 同步错误
-
- private String mGid; // 全局唯一标识符
- private String mName; // 节点名称
- private long mLastModified; // 最后修改时间
- private boolean mDeleted; // 节点是否被删除的标志
-
- // 构造函数,初始化节点属性
- public Node() {
- mGid = null;
- mName = "";
- mLastModified = 0;
- mDeleted = false;
- }
-
- // 生成创建节点的JSON动作
- public abstract JSONObject getCreateAction(int actionId);
-
- // 生成更新节点的JSON动作
- public abstract JSONObject getUpdateAction(int actionId);
-
- // 根据远程JSON内容设置节点内容
- public abstract void setContentByRemoteJSON(JSONObject js);
-
- // 根据本地JSON内容设置节点内容
- public abstract void setContentByLocalJSON(JSONObject js);
-
- // 从内容生成本地JSON表示
- public abstract JSONObject getLocalJSONFromContent();
-
- // 根据Cursor获取同步动作
- public abstract int getSyncAction(Cursor c);
-
- // 设置节点的全局唯一标识符
- public void setGid(String gid) {
- this.mGid = gid;
- }
-
- // 设置节点名称
- public void setName(String name) {
- this.mName = name;
- }
-
- // 设置节点最后修改时间
- public void setLastModified(long lastModified) {
- this.mLastModified = lastModified;
- }
-
- // 设置节点是否被删除
- public void setDeleted(boolean deleted) {
- this.mDeleted = deleted;
- }
-
- // 获取节点的全局唯一标识符
- public String getGid() {
- return this.mGid;
- }
-
- // 获取节点名称
- public String getName() {
- return this.mName;
- }
-
- // 获取节点最后修改时间
- public long getLastModified() {
- return this.mLastModified;
- }
-
- // 获取节点是否被删除的标志
- public boolean getDeleted() {
- return this.mDeleted;
- }
-
-}
diff --git a/xiaomi-src/app/src/main/java/net/micode/notes/gtask/exception/ActionFailureException.java b/xiaomi-src/app/src/main/java/net/micode/notes/gtask/exception/ActionFailureException.java
deleted file mode 100644
index deb6d55..0000000
--- a/xiaomi-src/app/src/main/java/net/micode/notes/gtask/exception/ActionFailureException.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * ActionFailureException 类的注释
- *
- * 该异常类是运行时异常的子类,用于表示操作失败的异常情况。它可以包含一个错误消息和导致异常的 Throwable 对象。
- * 这个类主要是为了处理任务或动作执行失败的情况,提供了一个通用的方式来报告和处理这类错误。
- *
- * 许可证信息: 见类文件头部的版权声明
- */
-
-package net.micode.notes.gtask.exception;
-
-// 引入 Java 运行时异常类
-
-/**
- * ActionFailureException 类定义了一个操作失败时抛出的异常。
- */
-public class ActionFailureException extends RuntimeException {
- private static final long serialVersionUID = 4425249765923293627L; // 序列化 ID
-
- /**
- * 无参构造函数,创建一个不带详细消息的动作失败异常实例。
- */
- public ActionFailureException() {
- super();
- }
-
- /**
- * 带有详细信息的构造函数,创建一个带有详细错误消息的动作失败异常实例。
- *
- * @param paramString 错误信息字符串,用于描述异常的详细情况。
- */
- public ActionFailureException(String paramString) {
- super(paramString);
- }
-
- /**
- * 带有详细信息和导致异常的原因的构造函数,创建一个带有详细错误消息和导致异常的 Throwable 对象的动作失败异常实例。
- *
- * @param paramString 错误信息字符串,用于描述异常的详细情况。
- * @param paramThrowable 导致异常的 Throwable 对象。
- */
- public ActionFailureException(String paramString, Throwable paramThrowable) {
- super(paramString, paramThrowable);
- }
-}
diff --git a/xiaomi-src/app/src/main/java/net/micode/notes/gtask/exception/NetworkFailureException.java b/xiaomi-src/app/src/main/java/net/micode/notes/gtask/exception/NetworkFailureException.java
deleted file mode 100644
index fc6d53f..0000000
--- a/xiaomi-src/app/src/main/java/net/micode/notes/gtask/exception/NetworkFailureException.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * NetworkFailureException 类的注释
- *
- * 该异常类用于表示网络操作失败的异常。它是 Exception 的子类,可用来捕获和处理应用程序中发生的网络错误。
- * 可以通过不同的构造函数来创建包含详细信息或不包含详细信息的 NetworkFailureException 实例。
- */
-
-package net.micode.notes.gtask.exception;
-
-public class NetworkFailureException extends Exception {
- private static final long serialVersionUID = 2107610287180234136L;
-
- // 无参构造函数,用于创建一个不带详细信息的 NetworkFailureException 实例。
- public NetworkFailureException() {
- super();
- }
-
- // 带有详细信息的构造函数,用于创建一个包含错误信息的 NetworkFailureException 实例。
- public NetworkFailureException(String paramString) {
- super(paramString);
- }
-
- // 带有详细信息和导致异常的 Throwable 对象的构造函数,用于创建包含错误信息和原因的 NetworkFailureException 实例。
- public NetworkFailureException(String paramString, Throwable paramThrowable) {
- super(paramString, paramThrowable);
- }
-}
diff --git a/xiaomi-src/app/src/main/java/net/micode/notes/tool/GTaskStringUtils.java b/xiaomi-src/app/src/main/java/net/micode/notes/tool/GTaskStringUtils.java
deleted file mode 100644
index ea29672..0000000
--- a/xiaomi-src/app/src/main/java/net/micode/notes/tool/GTaskStringUtils.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * GTaskStringUtils 类定义
- * 该类提供了一系列与GTask相关的字符串常量,用于在操作GTask数据时标识各种JSON属性。
- */
-
-package net.micode.notes.tool;
-
-public class GTaskStringUtils {
-
- // GTask JSON对象中各种属性的键名
- public final static String GTASK_JSON_ACTION_ID = "action_id"; // 动作ID
- public final static String GTASK_JSON_ACTION_LIST = "action_list"; // 动作列表
- public final static String GTASK_JSON_ACTION_TYPE = "action_type"; // 动作类型
- public final static String GTASK_JSON_ACTION_TYPE_CREATE = "create"; // 创建动作类型
- public final static String GTASK_JSON_ACTION_TYPE_GETALL = "get_all"; // 获取所有动作类型
- public final static String GTASK_JSON_ACTION_TYPE_MOVE = "move"; // 移动动作类型
- public final static String GTASK_JSON_ACTION_TYPE_UPDATE = "update"; // 更新动作类型
- public final static String GTASK_JSON_CREATOR_ID = "creator_id"; // 创建者ID
- public final static String GTASK_JSON_CHILD_ENTITY = "child_entity"; // 子实体
- public final static String GTASK_JSON_CLIENT_VERSION = "client_version"; // 客户端版本
- public final static String GTASK_JSON_COMPLETED = "completed"; // 完成状态
- public final static String GTASK_JSON_CURRENT_LIST_ID = "current_list_id"; // 当前列表ID
- public final static String GTASK_JSON_DEFAULT_LIST_ID = "default_list_id"; // 默认列表ID
- public final static String GTASK_JSON_DELETED = "deleted"; // 删除状态
- public final static String GTASK_JSON_DEST_LIST = "dest_list"; // 目标列表
- public final static String GTASK_JSON_DEST_PARENT = "dest_parent"; // 目标父实体
- public final static String GTASK_JSON_DEST_PARENT_TYPE = "dest_parent_type"; // 目标父实体类型
- public final static String GTASK_JSON_ENTITY_DELTA = "entity_delta"; // 实体增量
- public final static String GTASK_JSON_ENTITY_TYPE = "entity_type"; // 实体类型
- public final static String GTASK_JSON_GET_DELETED = "get_deleted"; // 获取已删除项
- public final static String GTASK_JSON_ID = "id"; // ID
- public final static String GTASK_JSON_INDEX = "index"; // 索引
- public final static String GTASK_JSON_LAST_MODIFIED = "last_modified"; // 最后修改时间
- public final static String GTASK_JSON_LATEST_SYNC_POINT = "latest_sync_point"; // 最新同步点
- public final static String GTASK_JSON_LIST_ID = "list_id"; // 列表ID
- public final static String GTASK_JSON_LISTS = "lists"; // 列表集合
- public final static String GTASK_JSON_NAME = "name"; // 名称
- public final static String GTASK_JSON_NEW_ID = "new_id"; // 新ID
- public final static String GTASK_JSON_NOTES = "notes"; // 备注
- public final static String GTASK_JSON_PARENT_ID = "parent_id"; // 父ID
- public final static String GTASK_JSON_PRIOR_SIBLING_ID = "prior_sibling_id"; // 前一个兄弟ID
- public final static String GTASK_JSON_RESULTS = "results"; // 结果
- public final static String GTASK_JSON_SOURCE_LIST = "source_list"; // 源列表
- public final static String GTASK_JSON_TASKS = "tasks"; // 任务集合
- public final static String GTASK_JSON_TYPE = "type"; // 类型
- public final static String GTASK_JSON_TYPE_GROUP = "GROUP"; // 类型:组
- public final static String GTASK_JSON_TYPE_TASK = "TASK"; // 类型:任务
- public final static String GTASK_JSON_USER = "user"; // 用户
- // MIUI笔记相关的文件夹前缀和元数据键名
- public final static String MIUI_FOLDER_PREFFIX = "[MIUI_Notes]"; // MIUI笔记文件夹前缀
- public final static String FOLDER_DEFAULT = "Default"; // 默认文件夹名
- public final static String FOLDER_CALL_NOTE = "Call_Note"; // 通话笔记文件夹名
- public final static String FOLDER_META = "METADATA"; // 元数据文件夹名
- // 元数据头部键名
- public final static String META_HEAD_GTASK_ID = "meta_gid"; // GTask ID
- public final static String META_HEAD_NOTE = "meta_note"; // 笔记内容
- public final static String META_HEAD_DATA = "meta_data"; // 元数据
- // 元数据笔记名称,不可更新和删除
- public final static String META_NOTE_NAME = "[META INFO] DON'T UPDATE AND DELETE";
-}
diff --git a/xiaomi-src/app/src/main/java/net/micode/notes/tool/ResourceParser.java b/xiaomi-src/app/src/main/java/net/micode/notes/tool/ResourceParser.java
deleted file mode 100644
index 432187c..0000000
--- a/xiaomi-src/app/src/main/java/net/micode/notes/tool/ResourceParser.java
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- * ResourceParser 类用于管理与应用资源相关的各种静态方法和常量。
- */
-
-package net.micode.notes.tool;
-
-import android.content.Context;
-import android.preference.PreferenceManager;
-
-import net.micode.notes.R;
-import net.micode.notes.ui.NotesPreferenceActivity;
-
-public class ResourceParser {
-
- // 定义笔记背景颜色的常量
- public static final int YELLOW = 0;
- public static final int BLUE = 1;
- public static final int WHITE = 2;
- public static final int GREEN = 3;
- public static final int RED = 4;
-
- // 默认背景颜色
- public static final int BG_DEFAULT_COLOR = YELLOW;
-
- // 定义文本大小的常量
- public static final int TEXT_SMALL = 0;
- public static final int TEXT_MEDIUM = 1;
- public static final int TEXT_LARGE = 2;
- public static final int TEXT_SUPER = 3;
-
- // 默认字体大小
- public static final int BG_DEFAULT_FONT_SIZE = TEXT_MEDIUM;
-
- /**
- * 笔记背景资源类,提供获取不同背景资源的方法。
- */
- public static class NoteBgResources {
- // 编辑状态下的背景资源数组
- private final static int[] BG_EDIT_RESOURCES = new int[]{
- R.drawable.edit_yellow,
- R.drawable.edit_blue,
- R.drawable.edit_white,
- R.drawable.edit_green,
- R.drawable.edit_red
- };
-
- // 编辑状态下的标题背景资源数组
- private final static int[] BG_EDIT_TITLE_RESOURCES = new int[]{
- R.drawable.edit_title_yellow,
- R.drawable.edit_title_blue,
- R.drawable.edit_title_white,
- R.drawable.edit_title_green,
- R.drawable.edit_title_red
- };
-
- // 根据id获取编辑状态下的背景资源
- public static int getNoteBgResource(int id) {
- return BG_EDIT_RESOURCES[id];
- }
-
- // 根据id获取编辑状态下的标题背景资源
- public static int getNoteTitleBgResource(int id) {
- return BG_EDIT_TITLE_RESOURCES[id];
- }
- }
-
- /**
- * 获取默认笔记背景id。
- *
- * @param context 上下文对象,用于访问SharedPreferences。
- * @return 如果用户设置了背景颜色,则返回一个随机背景颜色id;否则返回默认背景颜色id。
- */
- public static int getDefaultBgId(Context context) {
- if (PreferenceManager.getDefaultSharedPreferences(context).getBoolean(
- NotesPreferenceActivity.PREFERENCE_SET_BG_COLOR_KEY, false)) {
- return (int) (Math.random() * NoteBgResources.BG_EDIT_RESOURCES.length);
- } else {
- return BG_DEFAULT_COLOR;
- }
- }
-
- /**
- * 笔记列表项背景资源类,提供获取不同背景资源的方法。
- */
- public static class NoteItemBgResources {
- // 第一个列表项的背景资源数组
- private final static int[] BG_FIRST_RESOURCES = new int[]{
- R.drawable.list_yellow_up,
- R.drawable.list_blue_up,
- R.drawable.list_white_up,
- R.drawable.list_green_up,
- R.drawable.list_red_up
- };
-
- // 普通列表项的背景资源数组
- private final static int[] BG_NORMAL_RESOURCES = new int[]{
- R.drawable.list_yellow_middle,
- R.drawable.list_blue_middle,
- R.drawable.list_white_middle,
- R.drawable.list_green_middle,
- R.drawable.list_red_middle
- };
-
- // 最后一个列表项的背景资源数组
- private final static int[] BG_LAST_RESOURCES = new int[]{
- R.drawable.list_yellow_down,
- R.drawable.list_blue_down,
- R.drawable.list_white_down,
- R.drawable.list_green_down,
- R.drawable.list_red_down,
- };
-
- // 单个列表项的背景资源数组
- private final static int[] BG_SINGLE_RESOURCES = new int[]{
- R.drawable.list_yellow_single,
- R.drawable.list_blue_single,
- R.drawable.list_white_single,
- R.drawable.list_green_single,
- R.drawable.list_red_single
- };
-
- // 获取第一个列表项的背景资源
- public static int getNoteBgFirstRes(int id) {
- return BG_FIRST_RESOURCES[id];
- }
-
- // 获取最后一个列表项的背景资源
- public static int getNoteBgLastRes(int id) {
- return BG_LAST_RESOURCES[id];
- }
-
- // 获取单个列表项的背景资源
- public static int getNoteBgSingleRes(int id) {
- return BG_SINGLE_RESOURCES[id];
- }
-
- // 获取普通列表项的背景资源
- public static int getNoteBgNormalRes(int id) {
- return BG_NORMAL_RESOURCES[id];
- }
-
- // 获取文件夹背景资源
- public static int getFolderBgRes() {
- return R.drawable.list_folder;
- }
- }
-
- /**
- * 小部件背景资源类,提供获取小部件背景资源的方法。
- */
- public static class WidgetBgResources {
- // 2x 小部件背景资源数组
- private final static int[] BG_2X_RESOURCES = new int[]{
- R.drawable.widget_2x_yellow,
- R.drawable.widget_2x_blue,
- R.drawable.widget_2x_white,
- R.drawable.widget_2x_green,
- R.drawable.widget_2x_red,
- };
-
- // 根据id获取2x小部件的背景资源
- public static int getWidget2xBgResource(int id) {
- return BG_2X_RESOURCES[id];
- }
-
- // 4x 小部件背景资源数组
- private final static int[] BG_4X_RESOURCES = new int[]{
- R.drawable.widget_4x_yellow,
- R.drawable.widget_4x_blue,
- R.drawable.widget_4x_white,
- R.drawable.widget_4x_green,
- R.drawable.widget_4x_red
- };
-
- // 根据id获取4x小部件的背景资源
- public static int getWidget4xBgResource(int id) {
- return BG_4X_RESOURCES[id];
- }
- }
-
- /**
- * 文本外观资源类,提供获取不同文本外观资源的方法。
- */
- public static class TextAppearanceResources {
- // 文本外观资源数组
- private final static int[] TEXTAPPEARANCE_RESOURCES = new int[]{
- R.style.TextAppearanceNormal,
- R.style.TextAppearanceMedium,
- R.style.TextAppearanceLarge,
- R.style.TextAppearanceSuper
- };
-
- // 根据id获取文本外观资源
- public static int getTexAppearanceResource(int id) {
- // 如果id超出资源数组范围,返回默认字体大小
- if (id >= TEXTAPPEARANCE_RESOURCES.length) {
- return BG_DEFAULT_FONT_SIZE;
- }
- return TEXTAPPEARANCE_RESOURCES[id];
- }
-
- // 获取文本外观资源的数量
- public static int getResourcesSize() {
- return TEXTAPPEARANCE_RESOURCES.length;
- }
- }
-}
-
diff --git a/xiaomi-src/app/src/main/java/net/micode/notes/ui/AlarmReceiver.java b/xiaomi-src/app/src/main/java/net/micode/notes/ui/AlarmReceiver.java
deleted file mode 100644
index 42d7313..0000000
--- a/xiaomi-src/app/src/main/java/net/micode/notes/ui/AlarmReceiver.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * AlarmReceiver类 - 用于处理闹钟广播接收
- * 当接收到闹钟相关的广播时,该类会启动一个指定的Activity
- *
- * extends BroadcastReceiver: 继承自Android的BroadcastReceiver类
- */
-package net.micode.notes.ui;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-
-public class AlarmReceiver extends BroadcastReceiver {
- /*
- * onReceive方法 - 系统调用的接收广播的方法
- * 当接收到广播时,该方法会被调用,然后启动AlarmAlertActivity
- *
- * @param context 上下文对象,提供了调用环境的信息
- * @param intent 包含广播的内容
- */
- @Override
- public void onReceive(Context context, Intent intent) {
- // 设置Intent的类,以便启动AlarmAlertActivity
- intent.setClass(context, AlarmAlertActivity.class);
- // 添加标志,表示在一个新的任务中启动Activity
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- // 根据设置的Intent启动Activity
- context.startActivity(intent);
- }
-}
diff --git a/xiaomi-src/app/src/main/java/net/micode/notes/ui/DropdownMenu.java b/xiaomi-src/app/src/main/java/net/micode/notes/ui/DropdownMenu.java
deleted file mode 100644
index 8330499..0000000
--- a/xiaomi-src/app/src/main/java/net/micode/notes/ui/DropdownMenu.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * DropdownMenu类用于创建和管理一个下拉菜单。
- * 该类封装了一个Button和一个PopupMenu,通过点击Button来显示下拉菜单。
- */
-package net.micode.notes.ui;
-
-import android.content.Context;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.widget.Button;
-import android.widget.PopupMenu;
-import android.widget.PopupMenu.OnMenuItemClickListener;
-
-import net.micode.notes.R;
-
-public class DropdownMenu {
- private Button mButton; // 弹出下拉菜单的按钮
- private PopupMenu mPopupMenu; // 弹出的下拉菜单
- private Menu mMenu; // 下拉菜单的项目集合
-
- /**
- * DropdownMenu的构造函数。
- *
- * @param context 上下文对象,通常是指Activity。
- * @param button 用于触发下拉菜单显示的按钮。
- * @param menuId 菜单资源ID,用于加载下拉菜单的项目。
- */
- public DropdownMenu(Context context, Button button, int menuId) {
- mButton = button;
- mButton.setBackgroundResource(R.drawable.dropdown_icon); // 设置按钮背景为下拉图标
- mPopupMenu = new PopupMenu(context, mButton); // 创建PopupMenu实例
- mMenu = mPopupMenu.getMenu(); // 获取菜单项的集合
- mPopupMenu.getMenuInflater().inflate(menuId, mMenu); // 加载菜单项
- // 设置按钮点击事件,点击后显示下拉菜单
- mButton.setOnClickListener(new OnClickListener() {
- public void onClick(View v) {
- mPopupMenu.show();
- }
- });
- }
-
- /**
- * 设置下拉菜单项的点击事件监听器。
- *
- * @param listener PopupMenu的OnMenuItemClickListener,用于监听菜单项的点击事件。
- */
- public void setOnDropdownMenuItemClickListener(OnMenuItemClickListener listener) {
- if (mPopupMenu != null) {
- mPopupMenu.setOnMenuItemClickListener(listener);
- }
- }
-
- /**
- * 根据ID查找菜单项。
- *
- * @param id 菜单项的ID。
- * @return 返回找到的MenuItem对象,如果未找到则返回null。
- */
- public MenuItem findItem(int id) {
- return mMenu.findItem(id);
- }
-
- /**
- * 设置按钮的标题。
- *
- * @param title 按钮要显示的标题。
- */
- public void setTitle(CharSequence title) {
- mButton.setText(title);
- }
-}
diff --git a/xiaomi-src/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java b/xiaomi-src/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java
deleted file mode 100644
index 76c4c22..0000000
--- a/xiaomi-src/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java
+++ /dev/null
@@ -1,1141 +0,0 @@
-/*
- * 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;
-
-
-public class NoteEditActivity extends Activity implements OnClickListener,
- NoteSettingChangedListener, OnTextViewChangeListener {
- /**
- * 头部视图的ViewHolder类,用于存储头部视图中的UI组件引用。
- */
- private class HeadViewHolder {
- public TextView tvModified; // 显示修改日期的文本视图
- public ImageView ivAlertIcon; // 提示图标图像视图
- public TextView tvAlertDate; // 显示提醒日期的文本视图
- public ImageView ibSetBgColor; // 设置背景颜色的图像视图
- }
-
- /**
- * 背景选择按钮与其对应选中状态图标的映射。
- */
- private static final Map sBgSelectorBtnsMap = new HashMap();
-
- static {
- // 初始化背景选择按钮映射
- 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);
- }
-
- /**
- * 背景选择按钮选中状态与其对应图标的映射。
- */
- private static final Map sBgSelectorSelectionMap = new HashMap();
-
- static {
- // 初始化背景选择按钮选中状态映射
- 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);
- }
-
- /**
- * 字号选择按钮与其对应字体大小的映射。
- */
- private static final Map sFontSizeBtnsMap = new HashMap();
-
- static {
- // 初始化字号选择按钮映射
- 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);
- }
-
- /**
- * 字号选择按钮选中状态与其对应图标的映射。
- */
- private static final Map sFontSelectorSelectionMap = new HashMap();
-
- static {
- // 初始化字号选择按钮选中状态映射
- 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);
- }
-
- private static final String TAG = "NoteEditActivity"; // 日志标签
-
- private HeadViewHolder mNoteHeaderHolder; // 头部视图的ViewHolder
-
- private View mHeadViewPanel; // 头部视图面板
-
- private View mNoteBgColorSelector; // 笔记背景颜色选择器
-
- private View mFontSizeSelector; // 字号选择器
-
- private EditText mNoteEditor; // 笔记编辑器
-
- private View mNoteEditorPanel; // 笔记编辑器面板
-
- private WorkingNote mWorkingNote; // 当前正在编辑的笔记
-
- private SharedPreferences mSharedPrefs; // 共享偏好设置
- private int mFontSizeId; // 当前选中的字体大小资源ID
-
- private static final String PREFERENCE_FONT_SIZE = "pref_font_size"; // 字体大小偏好设置键
-
- private static final int SHORTCUT_ICON_TITLE_MAX_LEN = 10; // 快捷图标标题的最大长度
-
- public static final String TAG_CHECKED = String.valueOf('\u221A'); // 标记为已检查的字符串
- public static final String TAG_UNCHECKED = String.valueOf('\u25A1'); // 标记为未检查的字符串
-
- private LinearLayout mEditTextList; // 编辑文本列表
-
- private String mUserQuery; // 用户查询字符串
- private Pattern mPattern; // 正则表达式模式
-
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- this.setContentView(R.layout.note_edit); // 设置活动的视图布局
-
- // 检查实例状态是否被保存,如果未保存且初始化活动状态失败,则结束该活动
- if (savedInstanceState == null && !initActivityState(getIntent())) {
- finish();
- return;
- }
- initResources(); // 初始化资源
- }
-
- /**
- * 当活动被系统销毁后,为了恢复之前的状态,此方法会被调用。
- * 主要用于处理活动重新创建时的数据恢复。
- *
- * @param savedInstanceState 包含之前保存状态的Bundle,如果活动之前保存了状态,这里会传入非空的Bundle。
- */
- @Override
- protected void onRestoreInstanceState(Bundle savedInstanceState) {
- super.onRestoreInstanceState(savedInstanceState);
- // 检查是否有保存的状态并且包含必要的UID信息,用于恢复活动状态
- if (savedInstanceState != null && savedInstanceState.containsKey(Intent.EXTRA_UID)) {
- Intent intent = new Intent(Intent.ACTION_VIEW);
- intent.putExtra(Intent.EXTRA_UID, savedInstanceState.getLong(Intent.EXTRA_UID));
- // 使用intent尝试恢复活动状态,如果失败则结束该活动
- if (!initActivityState(intent)) {
- finish();
- return;
- }
- Log.d(TAG, "Restoring from killed activity"); // 日志记录,表示活动状态正在从被杀死的状态恢复
- }
- }
-
-
- /**
- * 初始化活动状态,根据传入的Intent确定是查看笔记、新建笔记还是编辑笔记。
- *
- * @param intent 传入的Intent,包含了动作类型和相关数据。
- * @return boolean 返回true表示成功初始化活动状态,false表示初始化失败。
- */
- private boolean initActivityState(Intent intent) {
- // 如果用户指定的是查看笔记的动作但未提供笔记ID,则跳转到笔记列表活动
- mWorkingNote = null;
- if (TextUtils.equals(Intent.ACTION_VIEW, intent.getAction())) {
- long noteId = intent.getLongExtra(Intent.EXTRA_UID, 0);
- mUserQuery = "";
-
- // 从搜索结果开始
- if (intent.hasExtra(SearchManager.EXTRA_DATA_KEY)) {
- noteId = Long.parseLong(intent.getStringExtra(SearchManager.EXTRA_DATA_KEY));
- mUserQuery = intent.getStringExtra(SearchManager.USER_QUERY);
- }
-
- // 检查指定的笔记在数据库中是否可见
- if (!DataUtils.visibleInNoteDatabase(getContentResolver(), noteId, Notes.TYPE_NOTE)) {
- Intent jump = new Intent(this, NotesListActivity.class);
- startActivity(jump);
- showToast(R.string.error_note_not_exist);
- finish();
- return false;
- } else {
- // 加载指定ID的笔记
- mWorkingNote = WorkingNote.load(this, noteId);
- if (mWorkingNote == null) {
- Log.e(TAG, "load note failed with note id" + noteId);
- finish();
- return false;
- }
- }
- // 隐藏软键盘
- 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())) {
- // 处理新建或编辑笔记的情况
- 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));
-
- // 解析通话记录笔记
- String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
- long callDate = intent.getLongExtra(Notes.INTENT_EXTRA_CALL_DATE, 0);
- if (callDate != 0 && phoneNumber != null) {
- // 根据电话号码和通话日期尝试获取已有笔记ID
- if (TextUtils.isEmpty(phoneNumber)) {
- Log.w(TAG, "The call record number is null");
- }
- long noteId = 0;
- if ((noteId = DataUtils.getNoteIdByPhoneNumberAndCallDate(getContentResolver(),
- phoneNumber, callDate)) > 0) {
- // 加载该笔记
- mWorkingNote = WorkingNote.load(this, noteId);
- if (mWorkingNote == null) {
- Log.e(TAG, "load call note failed with note id" + noteId);
- finish();
- return false;
- }
- } else {
- // 创建新的通话记录笔记
- mWorkingNote = WorkingNote.createEmptyNote(this, folderId, widgetId,
- widgetType, bgResId);
- mWorkingNote.convertToCallNote(phoneNumber, callDate);
- }
- } else {
- // 创建普通空笔记
- mWorkingNote = WorkingNote.createEmptyNote(this, folderId, widgetId, widgetType,
- bgResId);
- }
-
- // 显示软键盘
- getWindow().setSoftInputMode(
- WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE
- | WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
- } else {
- // 不支持的Intent动作
- Log.e(TAG, "Intent not specified action, should not support");
- finish();
- return false;
- }
- // 设置笔记状态改变的监听器
- mWorkingNote.setOnSettingStatusChangedListener(this);
- return true;
- }
-
-
- /**
- * 当Activity恢复到前台时调用。
- * 主要负责初始化笔记界面。
- */
- @Override
- protected void onResume() {
- super.onResume();
- initNoteScreen();
- }
-
- /**
- * 初始化笔记界面的函数。
- * 该函数设置笔记编辑器的外观,根据笔记类型切换到相应的模式,设置背景和头部信息,
- * 以及处理提醒头部的显示。
- */
- private void initNoteScreen() {
- // 设置编辑器的文本外观
- mNoteEditor.setTextAppearance(this, TextAppearanceResources
- .getTexAppearanceResource(mFontSizeId));
- // 根据当前笔记的类型,切换到列表模式或高亮查询结果模式
- if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) {
- switchToListMode(mWorkingNote.getContent());
- } else {
- mNoteEditor.setText(getHighlightQueryResult(mWorkingNote.getContent(), mUserQuery));
- mNoteEditor.setSelection(mNoteEditor.getText().length());
- }
- // 隐藏所有背景选择器
- for (Integer id : sBgSelectorSelectionMap.keySet()) {
- findViewById(sBgSelectorSelectionMap.get(id)).setVisibility(View.GONE);
- }
- // 设置标题和编辑区域的背景
- mHeadViewPanel.setBackgroundResource(mWorkingNote.getTitleBgResId());
- mNoteEditorPanel.setBackgroundResource(mWorkingNote.getBgColorResId());
-
- // 设置修改时间
- mNoteHeaderHolder.tvModified.setText(DateUtils.formatDateTime(this,
- mWorkingNote.getModifiedDate(), DateUtils.FORMAT_SHOW_DATE
- | DateUtils.FORMAT_NUMERIC_DATE | DateUtils.FORMAT_SHOW_TIME
- | DateUtils.FORMAT_SHOW_YEAR));
-
- // 显示提醒头部信息(当前禁用,因DateTimePicker未准备好)
- showAlertHeader();
- }
-
- /**
- * 显示提醒头部信息的方法。
- * 如果当前笔记设置了提醒,该方法将根据提醒时间显示相对的时间或者过期信息。
- */
- private void showAlertHeader() {
- // 处理提醒显示
- if (mWorkingNote.hasClockAlert()) {
- long time = System.currentTimeMillis();
- // 如果提醒时间已过,显示提醒已过期的信息
- if (time > mWorkingNote.getAlertDate()) {
- mNoteHeaderHolder.tvAlertDate.setText(R.string.note_alert_expired);
- } else {
- // 否则,显示相对时间
- mNoteHeaderHolder.tvAlertDate.setText(DateUtils.getRelativeTimeSpanString(
- mWorkingNote.getAlertDate(), time, DateUtils.MINUTE_IN_MILLIS));
- }
- // 设置提醒视图可见
- mNoteHeaderHolder.tvAlertDate.setVisibility(View.VISIBLE);
- mNoteHeaderHolder.ivAlertIcon.setVisibility(View.VISIBLE);
- } else {
- // 如果没有设置提醒,隐藏提醒视图
- mNoteHeaderHolder.tvAlertDate.setVisibility(View.GONE);
- mNoteHeaderHolder.ivAlertIcon.setVisibility(View.GONE);
- }
- }
-
- /**
- * 当Activity接收到新的Intent时调用。
- * 用于根据新的Intent重新初始化Activity状态。
- *
- * @param intent 新的Intent
- */
- @Override
- protected void onNewIntent(Intent intent) {
- super.onNewIntent(intent);
- initActivityState(intent);
- }
-
- /**
- * 保存Activity状态时调用。
- * 用于保存当前编辑的笔记,如果该笔记还未保存到数据库,则首先保存它。
- * 并且保存当前笔记的ID到Bundle中。
- *
- * @param outState 用于保存Activity状态的Bundle
- */
- @Override
- protected void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- // 如果当前编辑的笔记不存在于数据库中,即还未保存,先保存它
- if (!mWorkingNote.existInDatabase()) {
- saveNote();
- }
- // 保存笔记ID
- outState.putLong(Intent.EXTRA_UID, mWorkingNote.getNoteId());
- Log.d(TAG, "Save working note id: " + mWorkingNote.getNoteId() + " onSaveInstanceState");
- }
-
-
- /**
- * 分发触摸事件。如果触摸事件不在指定视图范围内,则隐藏该视图。
- *
- * @param ev 触摸事件
- * @return 如果事件被消费则返回true,否则返回false
- */
- @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);
- }
-
- /**
- * 判断触摸点是否在指定视图范围内。
- *
- * @param view 视图
- * @param ev 触摸事件
- * @return 如果触摸点在视图范围内则返回true,否则返回false
- */
- private boolean inRangeOfView(View view, MotionEvent ev) {
- int[] location = new int[2];
- view.getLocationOnScreen(location);
- int x = location[0];
- int y = location[1];
- // 判断触摸点是否在视图外
- if (ev.getX() < x
- || ev.getX() > (x + view.getWidth())
- || ev.getY() < y
- || ev.getY() > (y + view.getHeight())) {
- return false;
- }
- return true;
- }
-
- /**
- * 初始化资源,包括视图和偏好设置。
- */
- private void initResources() {
- // 初始化头部视图和相关组件
- 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);
- // 设置背景选择器按钮点击监听器
- for (int id : sBgSelectorBtnsMap.keySet()) {
- ImageView iv = (ImageView) findViewById(id);
- iv.setOnClickListener(this);
- }
-
- mFontSizeSelector = findViewById(R.id.font_size_selector);
- // 设置字体大小选择器按钮点击监听器
- 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);
- // 修复存储在偏好设置中的字体大小资源ID的错误
- if (mFontSizeId >= TextAppearanceResources.getResourcesSize()) {
- mFontSizeId = ResourceParser.BG_DEFAULT_FONT_SIZE;
- }
- // 初始化编辑列表
- mEditTextList = (LinearLayout) findViewById(R.id.note_edit_list);
- }
-
- /**
- * 暂停时保存笔记数据并清除设置状态。
- */
- @Override
- protected void onPause() {
- super.onPause();
- // 保存笔记数据
- if (saveNote()) {
- Log.d(TAG, "Note data was saved with length:" + mWorkingNote.getContent().length());
- }
- // 清除设置状态
- clearSettingState();
- }
-
- /**
- * 更新小部件显示。
- */
- 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, "Unspported widget type");
- return;
- }
-
- // 设置小部件ID
- intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[]{
- mWorkingNote.getWidgetId()
- });
-
- // 发送广播更新小部件
- sendBroadcast(intent);
- // 设置结果为OK
- setResult(RESULT_OK, intent);
- }
-
-
- /**
- * 点击事件的处理函数。
- *
- * @param v 被点击的视图对象。
- */
- public void onClick(View v) {
- int id = v.getId();
- // 如果点击的是设置背景颜色的按钮
- if (id == R.id.btn_set_bg_color) {
- mNoteBgColorSelector.setVisibility(View.VISIBLE);
- // 根据当前笔记的背景颜色,设置对应的色板按钮可见
- findViewById(sBgSelectorSelectionMap.get(mWorkingNote.getBgColorId())).setVisibility(
- View.VISIBLE);
- } else if (sBgSelectorBtnsMap.containsKey(id)) {
- // 如果点击的是背景色板上的颜色
- findViewById(sBgSelectorSelectionMap.get(mWorkingNote.getBgColorId())).setVisibility(
- View.GONE); // 隐藏当前选择的背景颜色
- mWorkingNote.setBgColorId(sBgSelectorBtnsMap.get(id)); // 更新笔记的背景颜色
- mNoteBgColorSelector.setVisibility(View.GONE); // 隐藏背景颜色选择器
- } else if (sFontSizeBtnsMap.containsKey(id)) {
- // 如果点击的是字体大小按钮
- findViewById(sFontSelectorSelectionMap.get(mFontSizeId)).setVisibility(View.GONE); // 隐藏当前选择的字体大小
- mFontSizeId = sFontSizeBtnsMap.get(id); // 更新选择的字体大小
- mSharedPrefs.edit().putInt(PREFERENCE_FONT_SIZE, mFontSizeId).commit(); // 保存选择的字体大小到SharedPreferences
- findViewById(sFontSelectorSelectionMap.get(mFontSizeId)).setVisibility(View.VISIBLE); // 设置新选择的字体大小按钮为可见
- // 根据当前笔记是否为清单模式,进行相应的文本更新
- if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) {
- getWorkingText();
- switchToListMode(mWorkingNote.getContent());
- } else {
- mNoteEditor.setTextAppearance(this,
- TextAppearanceResources.getTexAppearanceResource(mFontSizeId));
- }
- mFontSizeSelector.setVisibility(View.GONE); // 隐藏字体大小选择器
- }
- }
-
- /**
- * 按下返回键时的处理函数。
- */
- @Override
- public void onBackPressed() {
- // 尝试清除设置状态,如果成功,则不执行保存笔记操作
- if (clearSettingState()) {
- return;
- }
- // 保存笔记并执行父类的onBackPressed()方法(结束当前Activity)
- saveNote();
- super.onBackPressed();
- }
-
- /**
- * 尝试清除设置状态(背景颜色选择或字体大小选择)。
- *
- * @return 如果成功清除设置状态,返回true;否则返回false。
- */
- private boolean clearSettingState() {
- // 如果背景颜色选择器可见,则隐藏它并返回true
- if (mNoteBgColorSelector.getVisibility() == View.VISIBLE) {
- mNoteBgColorSelector.setVisibility(View.GONE);
- return true;
- } else if (mFontSizeSelector.getVisibility() == View.VISIBLE) { // 如果字体大小选择器可见,则隐藏它并返回true
- mFontSizeSelector.setVisibility(View.GONE);
- return true;
- }
- return false; // 没有可见的设置状态需要清除,返回false
- }
-
- /**
- * 当背景颜色发生变化时的处理函数。
- */
- public void onBackgroundColorChanged() {
- // 根据当前笔记的背景颜色,设置对应的色板按钮可见,并更新编辑器及标题栏的背景颜色
- findViewById(sBgSelectorSelectionMap.get(mWorkingNote.getBgColorId())).setVisibility(
- View.VISIBLE);
- mNoteEditorPanel.setBackgroundResource(mWorkingNote.getBgColorResId());
- mHeadViewPanel.setBackgroundResource(mWorkingNote.getTitleBgResId());
- }
-
- /**
- * 准备选项菜单的函数。
- *
- * @param menu 选项菜单对象。
- * @return 总是返回true。
- */
- @Override
- public boolean onPrepareOptionsMenu(Menu menu) {
- // 如果Activity正在结束,则不进行任何操作
- if (isFinishing()) {
- return true;
- }
- // 尝试清除设置状态
- clearSettingState();
- menu.clear(); // 清除菜单项
- // 根据笔记所属的文件夹,加载不同的菜单资源
- if (mWorkingNote.getFolderId() == Notes.ID_CALL_RECORD_FOLDER) {
- getMenuInflater().inflate(R.menu.call_note_edit, menu);
- } else {
- getMenuInflater().inflate(R.menu.note_edit, menu);
- }
- // 根据当前笔记的清单模式,更新“清单模式”菜单项的标题
- 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);
- }
- // 根据笔记是否有提醒,更新“删除提醒”菜单项的可见性
- if (mWorkingNote.hasClockAlert()) {
- menu.findItem(R.id.menu_alert).setVisible(false);
- } else {
- menu.findItem(R.id.menu_delete_remind).setVisible(false);
- }
- return true;
- }
-
-
- /**
- * 处理选项菜单项的选择事件。
- *
- * @param item 选中的菜单项
- * @return 总是返回true,表示事件已处理。
- */
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case R.id.menu_new_note:
- // 创建新笔记
- createNewNote();
- break;
- case R.id.menu_delete:
- // 显示删除笔记的确认对话框
- AlertDialog.Builder builder = new AlertDialog.Builder(this);
- builder.setTitle(getString(R.string.alert_title_delete));
- builder.setIcon(android.R.drawable.ic_dialog_alert);
- builder.setMessage(getString(R.string.alert_message_delete_note));
- builder.setPositiveButton(android.R.string.ok,
- new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- // 确认删除当前笔记并结束当前活动
- deleteCurrentNote();
- finish();
- }
- });
- builder.setNegativeButton(android.R.string.cancel, null);
- builder.show();
- break;
- case R.id.menu_font_size:
- // 显示字体大小选择器
- mFontSizeSelector.setVisibility(View.VISIBLE);
- findViewById(sFontSelectorSelectionMap.get(mFontSizeId)).setVisibility(View.VISIBLE);
- break;
- case R.id.menu_list_mode:
- // 切换笔记的列表模式
- mWorkingNote.setCheckListMode(mWorkingNote.getCheckListMode() == 0 ?
- TextNote.MODE_CHECK_LIST : 0);
- break;
- case R.id.menu_share:
- // 获取当前编辑的笔记内容并分享
- getWorkingText();
- sendTo(this, mWorkingNote.getContent());
- break;
- case R.id.menu_send_to_desktop:
- // 将笔记发送到桌面
- sendToDesktop();
- break;
- case R.id.menu_alert:
- // 设置提醒
- setReminder();
- break;
- case R.id.menu_delete_remind:
- // 删除提醒设置
- mWorkingNote.setAlertDate(0, false);
- break;
- default:
- break;
- }
- return true;
- }
-
- /**
- * 弹出日期时间选择器,用于设置提醒时间。
- */
- 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();
- }
-
- /**
- * 分享笔记到支持 {@link Intent#ACTION_SEND} 操作和 {@text/plain} 类型的应用。
- *
- * @param context 上下文
- * @param info 要分享的信息
- */
- 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);
- }
-
- /**
- * 首先保存当前正在编辑的笔记,然后启动一个新的NoteEditActivity用于创建新笔记。
- */
- private void createNewNote() {
- // 首先保存当前笔记
- saveNote();
-
- // 安全地开始一个新的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);
- }
-
-
- /**
- * 删除当前正在编辑的笔记。
- * 如果笔记存在于数据库中,并且当前不是同步模式,将直接删除该笔记;
- * 如果处于同步模式,则将笔记移动到回收站文件夹。
- */
- private void deleteCurrentNote() {
- if (mWorkingNote.existInDatabase()) {
- HashSet ids = new HashSet();
- 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);
- }
-
- /**
- * 判断当前是否为同步模式。
- * 同步模式是指在设置中配置了同步账户名。
- *
- * @return 如果配置了同步账户名返回true,否则返回false。
- */
- private boolean isSyncMode() {
- return NotesPreferenceActivity.getSyncAccountName(this).trim().length() > 0;
- }
-
- /**
- * 处理时钟提醒变更事件。
- * 首先检查当前笔记是否已保存,未保存则先保存。
- * 如果笔记存在,根据set参数设置或取消提醒。
- * 如果笔记不存在(即无有效ID),记录错误并提示用户输入内容。
- *
- * @param date 提醒的日期时间戳
- * @param set 是否设置提醒
- */
- 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 {
- Log.e(TAG, "Clock alert setting error");
- showToast(R.string.error_note_empty_for_clock);
- }
- }
-
- /**
- * 更新小部件显示。
- */
- public void onWidgetChanged() {
- updateWidget();
- }
-
- /**
- * 当删除某个编辑框中的文本时的处理逻辑。
- * 重新设置后续编辑框的索引,并将删除的文本添加到前一个或当前编辑框中。
- *
- * @param index 被删除文本的编辑框索引
- * @param text 被删除的文本内容
- */
- 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);
- }
-
- /**
- * 当在编辑框中按下“Enter”键时的处理逻辑。
- * 在列表中添加一个新的编辑框,并重新设置后续编辑框的索引。
- *
- * @param index 当前编辑框的索引
- * @param text 当前编辑框中的文本内容
- */
- 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);
- }
- }
-
-
- /**
- * 切换到列表模式。
- * 将文本分割成多行,并为每行创建一个列表项,展示在编辑文本列表中。
- *
- * @param text 要转换成列表模式的文本,每行代表一个列表项。
- */
- private void switchToListMode(String text) {
- // 清空当前的视图
- mEditTextList.removeAllViews();
- // 使用换行符分割文本,创建列表项
- String[] items = text.split("\n");
- int index = 0;
- for (String item : items) {
- // 忽略空行
- if (!TextUtils.isEmpty(item)) {
- mEditTextList.addView(getListItem(item, index));
- index++;
- }
- }
- // 添加一个空的列表项作为占位符
- mEditTextList.addView(getListItem("", index));
- // 请求焦点以便于编辑
- mEditTextList.getChildAt(index).findViewById(R.id.et_edit_text).requestFocus();
-
- // 隐藏编辑器,显示列表
- mNoteEditor.setVisibility(View.GONE);
- mEditTextList.setVisibility(View.VISIBLE);
- }
-
- /**
- * 高亮显示查询结果。
- * 在给定的文本中,根据用户查询字符串高亮显示匹配的部分。
- *
- * @param fullText 完整的文本。
- * @param userQuery 用户的查询字符串。
- * @return 包含高亮显示的文本的Spannable对象。
- */
- 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;
- 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;
- }
-
- /**
- * 创建列表项视图。
- * 为列表模式创建并配置一个包含文本编辑框和复选框的视图。
- *
- * @param item 列表项的文本内容。
- * @param index 列表项的索引。
- * @return 配置好的列表项视图。
- */
- 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));
- // 复选框的监听器,用于切换文本的划线状态
- 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);
- }
- }
- });
-
- // 根据文本前缀设置复选框状态和文本内容
- if (item.startsWith(TAG_CHECKED)) {
- cb.setChecked(true);
- edit.setPaintFlags(edit.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
- item = item.substring(TAG_CHECKED.length(), item.length()).trim();
- } else if (item.startsWith(TAG_UNCHECKED)) {
- cb.setChecked(false);
- edit.setPaintFlags(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG);
- item = item.substring(TAG_UNCHECKED.length(), item.length()).trim();
- }
-
- // 设置文本变化监听和索引
- edit.setOnTextViewChangeListener(this);
- edit.setIndex(index);
- // 设置带有查询结果高亮的文本
- edit.setText(getHighlightQueryResult(item, mUserQuery));
- return view;
- }
-
- /**
- * 根据文本内容是否为空,切换复选框的可见性。
- *
- * @param index 列表项索引。
- * @param hasText 列表项是否包含文本。
- */
- public void onTextChange(int index, boolean hasText) {
- if (index >= mEditTextList.getChildCount()) {
- Log.e(TAG, "Wrong index, should not happen");
- return;
- }
- // 根据文本内容决定复选框的可见性
- if (hasText) {
- mEditTextList.getChildAt(index).findViewById(R.id.cb_edit_item).setVisibility(View.VISIBLE);
- } else {
- mEditTextList.getChildAt(index).findViewById(R.id.cb_edit_item).setVisibility(View.GONE);
- }
- }
-
- /**
- * 在切换编辑模式和列表模式时更新UI。
- *
- * @param oldMode 旧的编辑模式。
- * @param newMode 新的编辑模式。
- */
- public void onCheckListModeChanged(int oldMode, int newMode) {
- // 切换到列表模式
- if (newMode == TextNote.MODE_CHECK_LIST) {
- switchToListMode(mNoteEditor.getText().toString());
- } else {
- // 切换回编辑模式
- if (!getWorkingText()) {
- mWorkingNote.setWorkingText(mWorkingNote.getContent().replace(TAG_UNCHECKED + " ",
- ""));
- }
- mNoteEditor.setText(getHighlightQueryResult(mWorkingNote.getContent(), mUserQuery));
- mEditTextList.setVisibility(View.GONE);
- mNoteEditor.setVisibility(View.VISIBLE);
- }
- }
-
- /**
- * 根据当前列表项的选中状态,构建并返回工作文本。
- *
- * @return 是否有已选中的列表项。
- */
- 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;
- }
-
- /**
- * 保存笔记。
- * 更新笔记内容并保存。
- *
- * @return 是否成功保存笔记。
- */
- private boolean saveNote() {
- getWorkingText();
- boolean saved = mWorkingNote.saveNote();
- if (saved) {
- // 设置结果为成功,以便外部调用者知道保存操作的状态
- setResult(RESULT_OK);
- }
- return saved;
- }
-
-
- /**
- * 将当前编辑的笔记发送到桌面。首先会检查当前编辑的笔记是否已存在于数据库中,
- * 如果不存在,则先保存。如果存在,会创建一个快捷方式放在桌面。
- */
- private void sendToDesktop() {
- // 检查当前编辑的笔记是否存在于数据库,若不存在则先保存
- if (!mWorkingNote.existInDatabase()) {
- saveNote();
- }
-
- // 如果笔记存在于数据库(有noteId),则创建快捷方式
- 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 {
- // 如果用户未输入任何内容,无法创建快捷方式,提醒用户输入内容
- Log.e(TAG, "Send to desktop error");
- showToast(R.string.error_note_empty_for_send_to_desktop);
- }
- }
-
- /**
- * 根据笔记内容生成快捷方式的标题。移除内容中的已选和未选标签,并确保标题长度不超过上限。
- *
- * @param content 符合快捷方式图标标题要求的笔记内容
- * @return 标题字符串
- */
- 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;
- }
-
- /**
- * 显示一个Toast消息。
- *
- * @param resId 资源ID,指向要显示的字符串
- */
- private void showToast(int resId) {
- showToast(resId, Toast.LENGTH_SHORT);
- }
-
- /**
- * 显示一个指定时长的Toast消息。
- *
- * @param resId 资源ID,指向要显示的字符串
- * @param duration 显示时长,可以是Toast.LENGTH_SHORT或Toast.LENGTH_LONG
- */
- private void showToast(int resId, int duration) {
- Toast.makeText(this, resId, duration).show();
- }
-
-}
diff --git a/xiaomi-src/app/src/main/java/net/micode/notes/widget/NoteWidgetProvider_2x.java b/xiaomi-src/app/src/main/java/net/micode/notes/widget/NoteWidgetProvider_2x.java
deleted file mode 100644
index fde2df2..0000000
--- a/xiaomi-src/app/src/main/java/net/micode/notes/widget/NoteWidgetProvider_2x.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * 版权声明:MiCode开源社区(www.micode.net)
- *
- * 本代码遵循Apache 2.0开源协议
- * 如需获取完整的授权条款,请访问:http://www.apache.org/licenses/LICENSE-2.0.html
- *
- * 代码开始
- */
-
-package net.micode.notes.widget;
-
-import android.appwidget.AppWidgetManager;
-import android.content.Context;
-
-import net.micode.notes.R;
-import net.micode.notes.data.Notes;
-import net.micode.notes.tool.ResourceParser;
-
-/**
- * 2x版本的NoteWidgetProvider,负责处理2x大小的小部件更新和其他操作。
- */
-public class NoteWidgetProvider_2x extends NoteWidgetProvider {
- /**
- * 当小部件需要更新时调用此方法。
- *
- * @param context 上下文环境,用于访问应用全局功能。
- * @param appWidgetManager 管理当前应用中所有小部件的AppWidgetManager实例。
- * @param appWidgetIds 当前需要更新的小部件ID数组。
- */
- @Override
- public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
- super.update(context, appWidgetManager, appWidgetIds);
- }
-
- /**
- * 获取小部件布局的ID。
- *
- * @return 布局资源ID。
- */
- @Override
- protected int getLayoutId() {
- return R.layout.widget_2x;
- }
-
- /**
- * 根据背景ID获取对应的背景资源ID。
- *
- * @param bgId 背景资源的索引ID。
- * @return 背景资源的ID。
- */
- @Override
- protected int getBgResourceId(int bgId) {
- return ResourceParser.WidgetBgResources.getWidget2xBgResource(bgId);
- }
-
- /**
- * 获取小部件的类型。
- *
- * @return 小部件类型的常量。
- */
- @Override
- protected int getWidgetType() {
- return Notes.TYPE_WIDGET_2X;
- }
-}
-
diff --git a/xiaomi-src/app/src/main/java/net/micode/notes/widget/NoteWidgetProvider_4x.java b/xiaomi-src/app/src/main/java/net/micode/notes/widget/NoteWidgetProvider_4x.java
deleted file mode 100644
index 15c896e..0000000
--- a/xiaomi-src/app/src/main/java/net/micode/notes/widget/NoteWidgetProvider_4x.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 版权声明:MiCode开源社区(www.micode.net)
- *
- * 本代码遵循Apache 2.0开源协议
- * 详细授权信息请访问:http://www.apache.org/licenses/LICENSE-2.0
- */
-
-package net.micode.notes.widget;
-
-import android.appwidget.AppWidgetManager;
-import android.content.Context;
-
-import net.micode.notes.R;
-import net.micode.notes.data.Notes;
-import net.micode.notes.tool.ResourceParser;
-
-/**
- * 4x大小的便签小部件提供者类,继承自NoteWidgetProvider。
- * 负责处理小部件在界面更新时的逻辑。
- */
-public class NoteWidgetProvider_4x extends NoteWidgetProvider {
- /**
- * 当小部件需要更新时调用此方法。
- *
- * @param context 上下文环境,通常为应用程序环境。
- * @param appWidgetManager 小部件管理器,用于管理已安装的小部件。
- * @param appWidgetIds 当前需要更新的小部件ID数组。
- */
- @Override
- public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
- super.update(context, appWidgetManager, appWidgetIds);
- }
-
- /**
- * 获取小部件布局的ID。
- *
- * @return 布局资源ID。
- */
- protected int getLayoutId() {
- return R.layout.widget_4x;
- }
-
- /**
- * 获取小部件背景资源的ID。
- *
- * @param bgId 背景资源的索引ID。
- * @return 背景资源的ID。
- */
- @Override
- protected int getBgResourceId(int bgId) {
- return ResourceParser.WidgetBgResources.getWidget4xBgResource(bgId);
- }
-
- /**
- * 获取当前小部件的类型。
- *
- * @return 小部件类型的整型标识。
- */
- @Override
- protected int getWidgetType() {
- return Notes.TYPE_WIDGET_4X;
- }
-}
-
diff --git a/xiaomi-src/app/src/main/res/color/primary_text_dark.xml b/xiaomi-src/app/src/main/res/color/primary_text_dark.xml
deleted file mode 100644
index d72274f..0000000
--- a/xiaomi-src/app/src/main/res/color/primary_text_dark.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/xiaomi-src/app/src/main/res/color/secondary_text_dark.xml b/xiaomi-src/app/src/main/res/color/secondary_text_dark.xml
deleted file mode 100644
index 2364c35..0000000
--- a/xiaomi-src/app/src/main/res/color/secondary_text_dark.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/splash.jpg b/xiaomi-src/app/src/main/res/drawable-hdpi/splash.jpg
deleted file mode 100644
index 77571eb..0000000
Binary files a/xiaomi-src/app/src/main/res/drawable-hdpi/splash.jpg and /dev/null differ
diff --git a/xiaomi-src/app/src/main/res/drawable/new_note.xml b/xiaomi-src/app/src/main/res/drawable/new_note.xml
deleted file mode 100644
index 355c533..0000000
--- a/xiaomi-src/app/src/main/res/drawable/new_note.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/xiaomi-src/app/src/main/res/layout/account_dialog_title.xml b/xiaomi-src/app/src/main/res/layout/account_dialog_title.xml
deleted file mode 100644
index be5a242..0000000
--- a/xiaomi-src/app/src/main/res/layout/account_dialog_title.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/xiaomi-src/app/src/main/res/layout/add_account_text.xml b/xiaomi-src/app/src/main/res/layout/add_account_text.xml
deleted file mode 100644
index 6f004c3..0000000
--- a/xiaomi-src/app/src/main/res/layout/add_account_text.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/xiaomi-src/app/src/main/res/layout/dialog_edit_text.xml b/xiaomi-src/app/src/main/res/layout/dialog_edit_text.xml
deleted file mode 100644
index bd21923..0000000
--- a/xiaomi-src/app/src/main/res/layout/dialog_edit_text.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/xiaomi-src/app/src/main/res/layout/folder_list_item.xml b/xiaomi-src/app/src/main/res/layout/folder_list_item.xml
deleted file mode 100644
index b13d3d6..0000000
--- a/xiaomi-src/app/src/main/res/layout/folder_list_item.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/xiaomi-src/app/src/main/res/layout/note_list_dropdown_menu.xml b/xiaomi-src/app/src/main/res/layout/note_list_dropdown_menu.xml
deleted file mode 100644
index 5526d05..0000000
--- a/xiaomi-src/app/src/main/res/layout/note_list_dropdown_menu.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/xiaomi-src/app/src/main/res/layout/note_list_footer.xml b/xiaomi-src/app/src/main/res/layout/note_list_footer.xml
deleted file mode 100644
index 2b117d6..0000000
--- a/xiaomi-src/app/src/main/res/layout/note_list_footer.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
diff --git a/xiaomi-src/app/src/main/res/layout/settings_header.xml b/xiaomi-src/app/src/main/res/layout/settings_header.xml
deleted file mode 100644
index a154354..0000000
--- a/xiaomi-src/app/src/main/res/layout/settings_header.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/xiaomi-src/app/src/main/res/layout/widget_2x.xml b/xiaomi-src/app/src/main/res/layout/widget_2x.xml
deleted file mode 100644
index 3b83b70..0000000
--- a/xiaomi-src/app/src/main/res/layout/widget_2x.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/xiaomi-src/app/src/main/res/layout/widget_4x.xml b/xiaomi-src/app/src/main/res/layout/widget_4x.xml
deleted file mode 100644
index 1d00ef0..0000000
--- a/xiaomi-src/app/src/main/res/layout/widget_4x.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/xiaomi-src/app/src/main/res/menu/call_note_edit.xml b/xiaomi-src/app/src/main/res/menu/call_note_edit.xml
deleted file mode 100644
index 6207163..0000000
--- a/xiaomi-src/app/src/main/res/menu/call_note_edit.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
-
-
diff --git a/xiaomi-src/app/src/main/res/menu/call_record_folder.xml b/xiaomi-src/app/src/main/res/menu/call_record_folder.xml
deleted file mode 100644
index 3a241d2..0000000
--- a/xiaomi-src/app/src/main/res/menu/call_record_folder.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
diff --git a/xiaomi-src/app/src/main/res/menu/note_edit.xml b/xiaomi-src/app/src/main/res/menu/note_edit.xml
deleted file mode 100644
index 2516273..0000000
--- a/xiaomi-src/app/src/main/res/menu/note_edit.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
-
-
-
diff --git a/xiaomi-src/app/src/main/res/menu/note_list.xml b/xiaomi-src/app/src/main/res/menu/note_list.xml
deleted file mode 100644
index 5b9ff0d..0000000
--- a/xiaomi-src/app/src/main/res/menu/note_list.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
-
-
-
diff --git a/xiaomi-src/app/src/main/res/menu/note_list_dropdown.xml b/xiaomi-src/app/src/main/res/menu/note_list_dropdown.xml
deleted file mode 100644
index 832bd92..0000000
--- a/xiaomi-src/app/src/main/res/menu/note_list_dropdown.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
diff --git a/xiaomi-src/app/src/main/res/menu/note_list_options.xml b/xiaomi-src/app/src/main/res/menu/note_list_options.xml
deleted file mode 100644
index 04a4e9e..0000000
--- a/xiaomi-src/app/src/main/res/menu/note_list_options.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
diff --git a/xiaomi-src/app/src/main/res/menu/sub_folder.xml b/xiaomi-src/app/src/main/res/menu/sub_folder.xml
deleted file mode 100644
index faf4844..0000000
--- a/xiaomi-src/app/src/main/res/menu/sub_folder.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
diff --git a/xiaomi-src/app/src/main/res/values-night/themes.xml b/xiaomi-src/app/src/main/res/values-night/themes.xml
deleted file mode 100644
index cfeee0c..0000000
--- a/xiaomi-src/app/src/main/res/values-night/themes.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/xiaomi-src/app/src/main/res/values-zh-rCN/arrays.xml b/xiaomi-src/app/src/main/res/values-zh-rCN/arrays.xml
deleted file mode 100644
index ae4bea3..0000000
--- a/xiaomi-src/app/src/main/res/values-zh-rCN/arrays.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
- 短信
- 邮件
-
-
diff --git a/xiaomi-src/app/src/main/res/values-zh-rTW/arrays.xml b/xiaomi-src/app/src/main/res/values-zh-rTW/arrays.xml
deleted file mode 100644
index c4fc38e..0000000
--- a/xiaomi-src/app/src/main/res/values-zh-rTW/arrays.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
- 短信
- 郵件
-
-
diff --git a/xiaomi-src/app/src/main/res/values/arrays.xml b/xiaomi-src/app/src/main/res/values/arrays.xml
deleted file mode 100644
index db666c3..0000000
--- a/xiaomi-src/app/src/main/res/values/arrays.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
- -%s
- --%s
- --%s
- --%s
-
-
-
-
- Messaging
- Email
-
-
diff --git a/xiaomi-src/app/src/main/res/values/attrs.xml b/xiaomi-src/app/src/main/res/values/attrs.xml
deleted file mode 100644
index e52391d..0000000
--- a/xiaomi-src/app/src/main/res/values/attrs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/xiaomi-src/app/src/main/res/values/colors.xml b/xiaomi-src/app/src/main/res/values/colors.xml
deleted file mode 100644
index 3318dd4..0000000
--- a/xiaomi-src/app/src/main/res/values/colors.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
- #335b5b5b
-
-
diff --git a/xiaomi-src/app/src/main/res/values/dimens.xml b/xiaomi-src/app/src/main/res/values/dimens.xml
deleted file mode 100644
index 0f336ec..0000000
--- a/xiaomi-src/app/src/main/res/values/dimens.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
- 33sp
-
- 26sp
-
- 20sp
-
- 17sp
-
- 14sp
-
diff --git a/xiaomi-src/app/src/main/res/values/themes.xml b/xiaomi-src/app/src/main/res/values/themes.xml
deleted file mode 100644
index d6af099..0000000
--- a/xiaomi-src/app/src/main/res/values/themes.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/xiaomi-src/app/src/main/res/xml/preferences.xml b/xiaomi-src/app/src/main/res/xml/preferences.xml
deleted file mode 100644
index 56eaadd..0000000
--- a/xiaomi-src/app/src/main/res/xml/preferences.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/xiaomi-src/app/src/main/res/xml/searchable.xml b/xiaomi-src/app/src/main/res/xml/searchable.xml
deleted file mode 100644
index 14bf810..0000000
--- a/xiaomi-src/app/src/main/res/xml/searchable.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
diff --git a/xiaomi-src/app/src/main/res/xml/widget_2x_info.xml b/xiaomi-src/app/src/main/res/xml/widget_2x_info.xml
deleted file mode 100644
index e292527..0000000
--- a/xiaomi-src/app/src/main/res/xml/widget_2x_info.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
diff --git a/xiaomi-src/app/src/main/res/xml/widget_4x_info.xml b/xiaomi-src/app/src/main/res/xml/widget_4x_info.xml
deleted file mode 100644
index 6fb746e..0000000
--- a/xiaomi-src/app/src/main/res/xml/widget_4x_info.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
diff --git a/xiaomi-src/build.gradle b/xiaomi-src/build.gradle
deleted file mode 100644
index 90f9008..0000000
--- a/xiaomi-src/build.gradle
+++ /dev/null
@@ -1,5 +0,0 @@
-// Top-level build file where you can add configuration options common to all sub-projects/modules.
-plugins {
- id 'com.android.application' version '7.3.0' apply false
- id 'com.android.library' version '7.3.0' apply false
-}
\ No newline at end of file
diff --git a/xiaomi-src/gradle.properties b/xiaomi-src/gradle.properties
deleted file mode 100644
index f82049a..0000000
--- a/xiaomi-src/gradle.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-android.defaults.buildfeatures.buildconfig=true
-android.nonFinalResIds=false
-android.nonTransitiveRClass=false
\ No newline at end of file
diff --git a/xiaomi-src/gradle/wrapper/gradle-wrapper.jar b/xiaomi-src/gradle/wrapper/gradle-wrapper.jar
deleted file mode 100644
index e708b1c..0000000
Binary files a/xiaomi-src/gradle/wrapper/gradle-wrapper.jar and /dev/null differ
diff --git a/xiaomi-src/gradle/wrapper/gradle-wrapper.properties b/xiaomi-src/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index 32211bf..0000000
--- a/xiaomi-src/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-#Mon Apr 22 08:08:00 CST 2024
-distributionBase=GRADLE_USER_HOME
-distributionUrl=https\://mirrors.huaweicloud.com/gradle/gradle-7.4-bin.zip
-distributionPath=wrapper/dists
-zipStorePath=wrapper/dists
-zipStoreBase=GRADLE_USER_HOME
diff --git a/xiaomi-src/gradlew b/xiaomi-src/gradlew
deleted file mode 100644
index 4f906e0..0000000
--- a/xiaomi-src/gradlew
+++ /dev/null
@@ -1,185 +0,0 @@
-#!/usr/bin/env sh
-
-#
-# Copyright 2015 the original author or authors.
-#
-# 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
-#
-# https://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.
-#
-
-##############################################################################
-##
-## Gradle start up script for UN*X
-##
-##############################################################################
-
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG=`dirname "$PRG"`"/$link"
- fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >/dev/null
-APP_HOME="`pwd -P`"
-cd "$SAVED" >/dev/null
-
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
-
-warn () {
- echo "$*"
-}
-
-die () {
- echo
- echo "$*"
- echo
- exit 1
-}
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-nonstop=false
-case "`uname`" in
- CYGWIN* )
- cygwin=true
- ;;
- Darwin* )
- darwin=true
- ;;
- MINGW* )
- msys=true
- ;;
- NONSTOP* )
- nonstop=true
- ;;
-esac
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
- if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
- # IBM's JDK on AIX uses strange locations for the executables
- JAVACMD="$JAVA_HOME/jre/sh/java"
- else
- JAVACMD="$JAVA_HOME/bin/java"
- fi
- if [ ! -x "$JAVACMD" ] ; then
- die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
- fi
-else
- JAVACMD="java"
- which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-fi
-
-# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
- MAX_FD_LIMIT=`ulimit -H -n`
- if [ $? -eq 0 ] ; then
- if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
- MAX_FD="$MAX_FD_LIMIT"
- fi
- ulimit -n $MAX_FD
- if [ $? -ne 0 ] ; then
- warn "Could not set maximum file descriptor limit: $MAX_FD"
- fi
- else
- warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
- fi
-fi
-
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
- GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
-
-# For Cygwin or MSYS, switch paths to Windows format before running java
-if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
- APP_HOME=`cygpath --path --mixed "$APP_HOME"`
- CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
-
- JAVACMD=`cygpath --unix "$JAVACMD"`
-
- # We build the pattern for arguments to be converted via cygpath
- ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
- SEP=""
- for dir in $ROOTDIRSRAW ; do
- ROOTDIRS="$ROOTDIRS$SEP$dir"
- SEP="|"
- done
- OURCYGPATTERN="(^($ROOTDIRS))"
- # Add a user-defined pattern to the cygpath arguments
- if [ "$GRADLE_CYGPATTERN" != "" ] ; then
- OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
- fi
- # Now convert the arguments - kludge to limit ourselves to /bin/sh
- i=0
- for arg in "$@" ; do
- CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
- CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
-
- if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
- eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
- else
- eval `echo args$i`="\"$arg\""
- fi
- i=`expr $i + 1`
- done
- case $i in
- 0) set -- ;;
- 1) set -- "$args0" ;;
- 2) set -- "$args0" "$args1" ;;
- 3) set -- "$args0" "$args1" "$args2" ;;
- 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
- 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
- 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
- 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
- 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
- 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
- esac
-fi
-
-# Escape application args
-save () {
- for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
- echo " "
-}
-APP_ARGS=`save "$@"`
-
-# Collect all arguments for the java command, following the shell quoting and substitution rules
-eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
-
-exec "$JAVACMD" "$@"
diff --git a/xiaomi-src/gradlew.bat b/xiaomi-src/gradlew.bat
deleted file mode 100644
index 107acd3..0000000
--- a/xiaomi-src/gradlew.bat
+++ /dev/null
@@ -1,89 +0,0 @@
-@rem
-@rem Copyright 2015 the original author or authors.
-@rem
-@rem Licensed under the Apache License, Version 2.0 (the "License");
-@rem you may not use this file except in compliance with the License.
-@rem You may obtain a copy of the License at
-@rem
-@rem https://www.apache.org/licenses/LICENSE-2.0
-@rem
-@rem Unless required by applicable law or agreed to in writing, software
-@rem distributed under the License is distributed on an "AS IS" BASIS,
-@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-@rem See the License for the specific language governing permissions and
-@rem limitations under the License.
-@rem
-
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Resolve any "." and ".." in APP_HOME to make it shorter.
-for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto execute
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto execute
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
diff --git a/xiaomi-src/local.properties b/xiaomi-src/local.properties
deleted file mode 100644
index 8a14f43..0000000
--- a/xiaomi-src/local.properties
+++ /dev/null
@@ -1,8 +0,0 @@
-## This file must *NOT* be checked into Version Control Systems,
-# as it contains information specific to your local configuration.
-#
-# Location of the SDK. This is only used by Gradle.
-# For customization when using a Version Control System, please read the
-# header note.
-#Fri Dec 06 22:53:35 CST 2024
-sdk.dir=C\:\\Users\\Administrator\\AppData\\Local\\Android\\Sdk
diff --git a/xiaomi-src/.gradle/7.4/dependencies-accessors/gc.properties b/xiaomi-src/main/.scannerwork/.sonar_lock
similarity index 100%
rename from xiaomi-src/.gradle/7.4/dependencies-accessors/gc.properties
rename to xiaomi-src/main/.scannerwork/.sonar_lock
diff --git a/xiaomi-src/main/.scannerwork/report-task.txt b/xiaomi-src/main/.scannerwork/report-task.txt
new file mode 100644
index 0000000..fc77250
--- /dev/null
+++ b/xiaomi-src/main/.scannerwork/report-task.txt
@@ -0,0 +1,6 @@
+projectKey=myNotes
+serverUrl=http://127.0.0.1:9000
+serverVersion=9.5.0.56709
+dashboardUrl=http://127.0.0.1:9000/dashboard?id=myNotes
+ceTaskId=AYRIh5EzuqDImpFV-sUP
+ceTaskUrl=http://127.0.0.1:9000/api/ce/task?id=AYRIh5EzuqDImpFV-sUP
diff --git a/xiaomi-src/app/src/main/AndroidManifest.xml b/xiaomi-src/main/AndroidManifest.xml
similarity index 53%
rename from xiaomi-src/app/src/main/AndroidManifest.xml
rename to xiaomi-src/main/AndroidManifest.xml
index bf5e3a2..ec543b6 100644
--- a/xiaomi-src/app/src/main/AndroidManifest.xml
+++ b/xiaomi-src/main/AndroidManifest.xml
@@ -1,140 +1,203 @@
-
-
+
+
+
+ package="net.micode.notes"
+ android:versionCode="1"
+ android:versionName="0.1" >
-
-
+
+
+
+
+
+
-
-
+ android:label="@string/app_name" >
+
+
+
+
+
+
+
+
+
+
+
- android:windowSoftInputMode="adjustPan"
- android:exported="true">
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+ android:theme="@style/Theme.AppCompat.Light.DarkActionBar" >
+
+
-
-
+
-
-
+
-
+
-
-
+ android:label="@string/app_widget2x2" >
+
-
+ android:label="@string/app_widget4x4" >
+
+
-
-
+
-
+ android:process=":remote" >
+
-
+ android:theme="@android:style/Theme.Holo.Wallpaper.NoTitleBar" >
+
-
+ android:theme="@android:style/Theme.Holo.Light" >
+
+
+
+
-
diff --git a/xiaomi-src/main/assets/font/FZYTK.TTF b/xiaomi-src/main/assets/font/FZYTK.TTF
new file mode 100644
index 0000000..45c8c19
Binary files /dev/null and b/xiaomi-src/main/assets/font/FZYTK.TTF differ
diff --git a/xiaomi-src/main/assets/font/STLITI.TTF b/xiaomi-src/main/assets/font/STLITI.TTF
new file mode 100644
index 0000000..8ede20e
Binary files /dev/null and b/xiaomi-src/main/assets/font/STLITI.TTF differ
diff --git a/xiaomi-src/main/assets/font/STXINGKA.TTF b/xiaomi-src/main/assets/font/STXINGKA.TTF
new file mode 100644
index 0000000..53439a2
Binary files /dev/null and b/xiaomi-src/main/assets/font/STXINGKA.TTF differ
diff --git a/xiaomi-src/main/assets/font/STXINWEI.TTF b/xiaomi-src/main/assets/font/STXINWEI.TTF
new file mode 100644
index 0000000..afe13f4
Binary files /dev/null and b/xiaomi-src/main/assets/font/STXINWEI.TTF differ
diff --git a/xiaomi-src/main/assets/font/STZHONGS.TTF b/xiaomi-src/main/assets/font/STZHONGS.TTF
new file mode 100644
index 0000000..412dfcd
Binary files /dev/null and b/xiaomi-src/main/assets/font/STZHONGS.TTF differ
diff --git a/xiaomi-src/main/assets/font/simfang.ttf b/xiaomi-src/main/assets/font/simfang.ttf
new file mode 100644
index 0000000..68334e2
Binary files /dev/null and b/xiaomi-src/main/assets/font/simfang.ttf differ
diff --git a/xiaomi-src/main/assets/font/simhei.ttf b/xiaomi-src/main/assets/font/simhei.ttf
new file mode 100644
index 0000000..5bd4687
Binary files /dev/null and b/xiaomi-src/main/assets/font/simhei.ttf differ
diff --git a/xiaomi-src/main/assets/font/simkai.ttf b/xiaomi-src/main/assets/font/simkai.ttf
new file mode 100644
index 0000000..d7c3b90
Binary files /dev/null and b/xiaomi-src/main/assets/font/simkai.ttf differ
diff --git a/xiaomi-src/app/src/main/java/net/micode/notes/data/Contact.java b/xiaomi-src/main/java/net/micode/notes/data/Contact.java
similarity index 50%
rename from xiaomi-src/app/src/main/java/net/micode/notes/data/Contact.java
rename to xiaomi-src/main/java/net/micode/notes/data/Contact.java
index 45ad20d..4c1d6e2 100644
--- a/xiaomi-src/app/src/main/java/net/micode/notes/data/Contact.java
+++ b/xiaomi-src/main/java/net/micode/notes/data/Contact.java
@@ -1,6 +1,17 @@
/*
- * Contact 类用于通过电话号码查询联系人信息。
- * 该类实现了从联系人数据库中获取与特定电话号码相关联的显示名称。
+ * 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.data;
@@ -15,64 +26,48 @@ import android.util.Log;
import java.util.HashMap;
public class Contact {
- // 缓存已查询过的电话号码和对应的联系人名称,以减少数据库查询次数。
private static HashMap sContactCache;
- private static final String TAG = "Contact"; // 日志标签
+ private static final String TAG = "Contact";
- // 用于查询具有完整国际号码格式的电话号码的selection字符串。
private static final String CALLER_ID_SELECTION = "PHONE_NUMBERS_EQUAL(" + Phone.NUMBER
- + ",?) AND " + Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE + "'"
- + " AND " + Data.RAW_CONTACT_ID + " IN "
+ + ",?) AND " + Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE + "'"
+ + " AND " + Data.RAW_CONTACT_ID + " IN "
+ "(SELECT raw_contact_id "
+ " FROM phone_lookup"
+ " WHERE min_match = '+')";
- /**
- * 根据电话号码获取联系人名称。
- *
- * @param context 上下文对象,用于访问内容解析器。
- * @param phoneNumber 需要查询的电话号码。
- * @return 与电话号码相关联的联系人名称,如果找不到则返回null。
- */
+ private Contact(){}
+
public static String getContact(Context context, String phoneNumber) {
- // 初始化或获取联系人缓存
- if (sContactCache == null) {
- sContactCache = new HashMap();
+ if(sContactCache == null) {
+ sContactCache = new HashMap<>();
}
- // 从缓存中直接获取联系人名称,如果存在。
- if (sContactCache.containsKey(phoneNumber)) {
+ if(sContactCache.containsKey(phoneNumber)) {
return sContactCache.get(phoneNumber);
}
- // 使用PhoneNumberUtils将电话号码格式化为适合查询的形式
String selection = CALLER_ID_SELECTION.replace("+",
PhoneNumberUtils.toCallerIDMinMatch(phoneNumber));
-
- // 执行查询以获取与电话号码相关联的联系人名称
Cursor cursor = context.getContentResolver().query(
Data.CONTENT_URI,
- new String[]{Phone.DISPLAY_NAME},
+ new String [] { Phone.DISPLAY_NAME },
selection,
- new String[]{phoneNumber},
+ new String[] { phoneNumber },
null);
if (cursor != null && cursor.moveToFirst()) {
try {
- // 从查询结果中获取联系人名称并加入缓存
String name = cursor.getString(0);
sContactCache.put(phoneNumber, name);
return name;
} catch (IndexOutOfBoundsException e) {
- // 处理查询结果异常
Log.e(TAG, " Cursor get string error " + e.toString());
return null;
} finally {
- // 关闭游标
cursor.close();
}
} else {
- // 如果查询无结果,记录日志
Log.d(TAG, "No contact matched with number:" + phoneNumber);
return null;
}
diff --git a/xiaomi-src/main/java/net/micode/notes/data/Notes.java b/xiaomi-src/main/java/net/micode/notes/data/Notes.java
new file mode 100644
index 0000000..17347a6
--- /dev/null
+++ b/xiaomi-src/main/java/net/micode/notes/data/Notes.java
@@ -0,0 +1,290 @@
+/*
+ * 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.data;
+
+import android.net.Uri;
+public class Notes {
+ public static final String AUTHORITY = "micode_notes";
+ public static final String TAG = "Notes";
+ public static final String CONTENT_ = "content://";
+ public static final int TYPE_NOTE = 0;
+ public static final int TYPE_FOLDER = 1;
+ public static final int TYPE_SYSTEM = 2;
+
+ /**
+ * Following IDs are system folders' identifiers
+ * {@link Notes#ID_ROOT_FOLDER } is default folder
+ * {@link Notes#ID_TEMPARAY_FOLDER } is for notes belonging no folder
+ * {@link Notes#ID_CALL_RECORD_FOLDER} is to store call records
+ */
+ public static final int ID_ROOT_FOLDER = 0;
+ public static final int ID_TEMPARAY_FOLDER = -1;
+ public static final int ID_CALL_RECORD_FOLDER = -2;
+ public static final int ID_TRASH_FOLER = -3;
+
+ public static final String INTENT_EXTRA_ALERT_DATE = "net.micode.notes.alert_date";
+ public static final String INTENT_EXTRA_BACKGROUND_ID = "net.micode.notes.background_color_id";
+ public static final String INTENT_EXTRA_WIDGET_ID = "net.micode.notes.widget_id";
+ public static final String INTENT_EXTRA_WIDGET_TYPE = "net.micode.notes.widget_type";
+ public static final String INTENT_EXTRA_FOLDER_ID = "net.micode.notes.folder_id";
+ public static final String INTENT_EXTRA_CALL_DATE = "net.micode.notes.call_date";
+
+ public static final int TYPE_WIDGET_INVALIDE = -1;
+ public static final int TYPE_WIDGET_2X = 0;
+ public static final int TYPE_WIDGET_4X = 1;
+
+ public static class DataConstants {
+ private DataConstants(){}
+ public static final String NOTE = TextNote.CONTENT_ITEM_TYPE;
+ public static final String CALL_NOTE = CallNote.CONTENT_ITEM_TYPE;
+ }
+
+ /**
+ * Uri to query all notes and folders
+ */
+ public static final Uri CONTENT_NOTE_URI = Uri.parse(CONTENT_ + AUTHORITY + "/note");
+
+ /**
+ * Uri to query data
+ */
+ public static final Uri CONTENT_DATA_URI = Uri.parse(CONTENT_ + AUTHORITY + "/data");
+
+ public interface NoteColumns {
+ /**
+ * The unique ID for a row
+ *
Type: INTEGER (long)
+ */
+ public static final String ID = "_id";
+
+ /**
+ * The parent's id for note or folder
+ *
Type: INTEGER (long)
+ */
+ public static final String PARENT_ID = "parent_id";
+
+ /**
+ * Created data for note or folder
+ *
Type: INTEGER (long)
+ */
+ public static final String CREATED_DATE = "created_date";
+
+ /**
+ * Latest modified date
+ *
Type: INTEGER (long)
+ */
+ public static final String MODIFIED_DATE = "modified_date";
+
+
+ /**
+ * Alert date
+ *
Type: INTEGER (long)
+ */
+ public static final String ALERTED_DATE = "alert_date";
+
+ /**
+ * Folder's name or text content of note
+ *
Type: TEXT
+ */
+ public static final String SNIPPET = "snippet";
+
+ /**
+ * Note's widget id
+ *
Type: INTEGER (long)
+ */
+ public static final String WIDGET_ID = "widget_id";
+
+ /**
+ * Note's widget type
+ *
Type: INTEGER (long)
+ */
+ public static final String WIDGET_TYPE = "widget_type";
+
+ /**
+ * Note's background color's id
+ *
Type: INTEGER (long)
+ */
+ public static final String BG_COLOR_ID = "bg_color_id";
+
+ /**
+ * For text note, it doesn't has attachment, for multi-media
+ * note, it has at least one attachment
+ *
Type: INTEGER
+ */
+ public static final String HAS_ATTACHMENT = "has_attachment";
+
+ /**
+ * Folder's count of notes
+ *
Type: INTEGER (long)
+ */
+ public static final String NOTES_COUNT = "notes_count";
+
+ /**
+ * The file type: folder or note
+ *
Type: INTEGER
+ */
+ public static final String TYPE = "type";
+
+ /**
+ * The last sync id
+ *
Type: INTEGER (long)
+ */
+ public static final String SYNC_ID = "sync_id";
+
+ /**
+ * Sign to indicate local modified or not
+ *
Type: INTEGER
+ */
+ public static final String LOCAL_MODIFIED = "local_modified";
+
+ /**
+ * Original parent id before moving into temporary folder
+ *
Type : INTEGER
+ */
+ public static final String ORIGIN_PARENT_ID = "origin_parent_id";
+
+ /**
+ * The gtask id
+ *
Type : TEXT
+ */
+ public static final String GTASK_ID = "gtask_id";
+
+ /**
+ * The version code
+ *
Type : INTEGER (long)
+ */
+ public static final String VERSION = "version";
+
+ public static final String TOP = "top";
+ }
+
+ public interface DataColumns {
+ /**
+ * The unique ID for a row
+ *
Type: INTEGER (long)
+ */
+ public static final String ID = "_id";
+
+ /**
+ * The MIME type of the item represented by this row.
+ *
Type: Text
+ */
+ public static final String MIME_TYPE = "mime_type";
+
+ /**
+ * The reference id to note that this data belongs to
+ *
Type: INTEGER (long)
+ */
+ public static final String NOTE_ID = "note_id";
+
+ /**
+ * Created data for note or folder
+ *
Type: INTEGER (long)
+ */
+ public static final String CREATED_DATE = "created_date";
+
+ /**
+ * Latest modified date
+ *
Type: INTEGER (long)
+ */
+ public static final String MODIFIED_DATE = "modified_date";
+
+ /**
+ * Data's content
+ *
Type: TEXT
+ */
+ public static final String CONTENT = "content";
+
+ public static final String LOCATION = "location";
+
+
+ /**
+ * Generic data column, the meaning is {@link #MIMETYPE} specific, used for
+ * integer data type
+ *
Type: INTEGER
+ */
+ public static final String DATA1 = "data1";
+
+ /**
+ * Generic data column, the meaning is {@link #MIMETYPE} specific, used for
+ * integer data type
+ *
Type: INTEGER
+ */
+ public static final String DATA2 = "data2";
+
+ /**
+ * Generic data column, the meaning is {@link #MIMETYPE} specific, used for
+ * TEXT data type
+ *
Type: TEXT
+ */
+ public static final String DATA3 = "data3";
+
+ /**
+ * Generic data column, the meaning is {@link #MIMETYPE} specific, used for
+ * TEXT data type
+ *
Type: TEXT
+ */
+ public static final String DATA4 = "data4";
+
+ /**
+ * Generic data column, the meaning is {@link #MIMETYPE} specific, used for
+ * TEXT data type
+ *
Type: TEXT
+ */
+ public static final String DATA5 = "data5";
+ }
+
+ public static final class TextNote implements DataColumns {
+ /**
+ * Mode to indicate the text in check list mode or not
+ *
Type: Integer 1:check list mode 0: normal mode
+ */
+ private TextNote(){}
+
+ public static final String MODE = DATA1;
+
+ public static final int MODE_CHECK_LIST = 1;
+
+ public static final String CONTENT_TYPE = "vnd.android.cursor.dir/text_note";
+
+ public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/text_note";
+
+ public static final Uri CONTENT_URI = Uri.parse(CONTENT_ + AUTHORITY + "/text_note");
+ }
+
+ public static final class CallNote implements DataColumns {
+ /**
+ * Call date for this record
+ *
Type: INTEGER (long)
+ */
+
+ private CallNote(){}
+
+ public static final String CALL_DATE = DATA1;
+
+ /**
+ * Phone number for this record
+ *
Type: TEXT
+ */
+ public static final String PHONE_NUMBER = DATA3;
+
+ public static final String CONTENT_TYPE = "vnd.android.cursor.dir/call_note";
+
+ public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/call_note";
+
+ public static final Uri CONTENT_URI = Uri.parse(CONTENT_ + AUTHORITY + "/call_note");
+ }
+}
diff --git a/xiaomi-src/main/java/net/micode/notes/data/NotesDatabaseHelper.java b/xiaomi-src/main/java/net/micode/notes/data/NotesDatabaseHelper.java
new file mode 100644
index 0000000..5a3ae32
--- /dev/null
+++ b/xiaomi-src/main/java/net/micode/notes/data/NotesDatabaseHelper.java
@@ -0,0 +1,384 @@
+/*
+ * 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.data;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteOpenHelper;
+import android.util.Log;
+
+import net.micode.notes.data.Notes.DataColumns;
+import net.micode.notes.data.Notes.DataConstants;
+import net.micode.notes.data.Notes.NoteColumns;
+
+
+public class NotesDatabaseHelper extends SQLiteOpenHelper {
+ private static final String DB_NAME = "note.db";
+
+ private static final int DB_VERSION = 4;
+
+ public interface TABLE {
+ public static final String NOTE = "note";
+
+ public static final String DATA = "data";
+ }
+
+ private static final String TAG = "NotesDatabaseHelper";
+
+ private static NotesDatabaseHelper mInstance;
+
+ private static final String CREATE_NOTE_TABLE_SQL =
+ "CREATE TABLE " + TABLE.NOTE + "(" +
+ NoteColumns.ID + " INTEGER PRIMARY KEY," +
+ NoteColumns.PARENT_ID + " INTEGER NOT NULL DEFAULT 0," +
+ NoteColumns.ALERTED_DATE + " INTEGER NOT NULL DEFAULT 0," +
+ NoteColumns.BG_COLOR_ID + " INTEGER NOT NULL DEFAULT 0," +
+ NoteColumns.CREATED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," +
+ NoteColumns.HAS_ATTACHMENT + " INTEGER NOT NULL DEFAULT 0," +
+ NoteColumns.MODIFIED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," +
+ NoteColumns.NOTES_COUNT + " INTEGER NOT NULL DEFAULT 0," +
+ NoteColumns.SNIPPET + " TEXT NOT NULL DEFAULT ''," +
+ NoteColumns.TYPE + " INTEGER NOT NULL DEFAULT 0," +
+ NoteColumns.WIDGET_ID + " INTEGER NOT NULL DEFAULT 0," +
+ NoteColumns.WIDGET_TYPE + " INTEGER NOT NULL DEFAULT -1," +
+ NoteColumns.SYNC_ID + " INTEGER NOT NULL DEFAULT 0," +
+ NoteColumns.LOCAL_MODIFIED + " INTEGER NOT NULL DEFAULT 0," +
+ NoteColumns.ORIGIN_PARENT_ID + " INTEGER NOT NULL DEFAULT 0," +
+ NoteColumns.GTASK_ID + " TEXT NOT NULL DEFAULT 1," +
+ NoteColumns.VERSION + " INTEGER NOT NULL DEFAULT 0," +
+ NoteColumns.TOP + " INTEGER NOT NULL DEFAULT 0" +
+ ")";
+
+ private static final String CREATE_DATA_TABLE_SQL =
+ "CREATE TABLE " + TABLE.DATA + "(" +
+ DataColumns.ID + " INTEGER PRIMARY KEY," +
+ DataColumns.MIME_TYPE + " TEXT NOT NULL," +
+ DataColumns.NOTE_ID + " INTEGER NOT NULL DEFAULT 0," +
+ NoteColumns.CREATED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," +
+ NoteColumns.MODIFIED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," +
+ DataColumns.CONTENT + " TEXT NOT NULL DEFAULT ''," +
+ DataColumns.DATA1 + " INTEGER," +
+ DataColumns.DATA2 + " INTEGER," +
+ DataColumns.DATA3 + " TEXT NOT NULL DEFAULT ''," +
+ DataColumns.DATA4 + " TEXT NOT NULL DEFAULT ''," +
+ DataColumns.DATA5 + " TEXT NOT NULL DEFAULT ''," +
+ DataColumns.LOCATION + " TEXT NOT NULL DEFAULT ''" +
+ ")";
+
+ private static final String CREATE_DATA_NOTE_ID_INDEX_SQL =
+ "CREATE INDEX IF NOT EXISTS note_id_index ON " +
+ TABLE.DATA + "(" + DataColumns.NOTE_ID + ");";
+
+ /**
+ * Increase folder's note count when move note to the folder
+ */
+ private static final String NOTE_INCREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER =
+ "CREATE TRIGGER increase_folder_count_on_update "+
+ " AFTER UPDATE OF " + NoteColumns.PARENT_ID + " ON " + TABLE.NOTE +
+ " BEGIN " +
+ " UPDATE " + TABLE.NOTE +
+ " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + " + 1" +
+ " WHERE " + NoteColumns.ID + "=new." + NoteColumns.PARENT_ID + ";" +
+ " END";
+
+ /**
+ * Decrease folder's note count when move note from folder
+ */
+ private static final String NOTE_DECREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER =
+ "CREATE TRIGGER decrease_folder_count_on_update " +
+ " AFTER UPDATE OF " + NoteColumns.PARENT_ID + " ON " + TABLE.NOTE +
+ " BEGIN " +
+ " UPDATE " + TABLE.NOTE +
+ " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + "-1" +
+ " WHERE " + NoteColumns.ID + "=old." + NoteColumns.PARENT_ID +
+ " AND " + NoteColumns.NOTES_COUNT + ">0" + ";" +
+ " END";
+
+ /**
+ * Increase folder's note count when insert new note to the folder
+ */
+ private static final String NOTE_INCREASE_FOLDER_COUNT_ON_INSERT_TRIGGER =
+ "CREATE TRIGGER increase_folder_count_on_insert " +
+ " AFTER INSERT ON " + TABLE.NOTE +
+ " BEGIN " +
+ " UPDATE " + TABLE.NOTE +
+ " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + " + 1" +
+ " WHERE " + NoteColumns.ID + "=new." + NoteColumns.PARENT_ID + ";" +
+ " END";
+
+ /**
+ * Decrease folder's note count when delete note from the folder
+ */
+ private static final String NOTE_DECREASE_FOLDER_COUNT_ON_DELETE_TRIGGER =
+ "CREATE TRIGGER decrease_folder_count_on_delete " +
+ " AFTER DELETE ON " + TABLE.NOTE +
+ " BEGIN " +
+ " UPDATE " + TABLE.NOTE +
+ " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + "-1" +
+ " WHERE " + NoteColumns.ID + "=old." + NoteColumns.PARENT_ID +
+ " AND " + NoteColumns.NOTES_COUNT + ">0;" +
+ " END";
+
+ /**
+ * Update note's content when insert data with type {@link DataConstants#NOTE}
+ */
+ private static final String DATA_UPDATE_NOTE_CONTENT_ON_INSERT_TRIGGER =
+ "CREATE TRIGGER update_note_content_on_insert " +
+ " AFTER INSERT ON " + TABLE.DATA +
+ " WHEN new." + DataColumns.MIME_TYPE + "='" + DataConstants.NOTE + "'" +
+ " BEGIN" +
+ " UPDATE " + TABLE.NOTE +
+ " SET " + NoteColumns.SNIPPET + "=new." + DataColumns.CONTENT +
+ " WHERE " + NoteColumns.ID + "=new." + DataColumns.NOTE_ID + ";" +
+ " END";
+
+ /**
+ * Update note's content when data with {@link DataConstants#NOTE} type has changed
+ */
+ private static final String DATA_UPDATE_NOTE_CONTENT_ON_UPDATE_TRIGGER =
+ "CREATE TRIGGER update_note_content_on_update " +
+ " AFTER UPDATE ON " + TABLE.DATA +
+ " WHEN old." + DataColumns.MIME_TYPE + "='" + DataConstants.NOTE + "'" +
+ " BEGIN" +
+ " UPDATE " + TABLE.NOTE +
+ " SET " + NoteColumns.SNIPPET + "=new." + DataColumns.CONTENT +
+ " WHERE " + NoteColumns.ID + "=new." + DataColumns.NOTE_ID + ";" +
+ " END";
+
+ /**
+ * Update note's content when data with {@link DataConstants#NOTE} type has deleted
+ */
+ private static final String DATA_UPDATE_NOTE_CONTENT_ON_DELETE_TRIGGER =
+ "CREATE TRIGGER update_note_content_on_delete " +
+ " AFTER delete ON " + TABLE.DATA +
+ " WHEN old." + DataColumns.MIME_TYPE + "='" + DataConstants.NOTE + "'" +
+ " BEGIN" +
+ " UPDATE " + TABLE.NOTE +
+ " SET " + NoteColumns.SNIPPET + "=''" +
+ " WHERE " + NoteColumns.ID + "=old." + DataColumns.NOTE_ID + ";" +
+ " END";
+
+ /**
+ * Delete datas belong to note which has been deleted
+ */
+ private static final String NOTE_DELETE_DATA_ON_DELETE_TRIGGER =
+ "CREATE TRIGGER delete_data_on_delete " +
+ " AFTER DELETE ON " + TABLE.NOTE +
+ " BEGIN" +
+ " DELETE FROM " + TABLE.DATA +
+ " WHERE " + DataColumns.NOTE_ID + "=old." + NoteColumns.ID + ";" +
+ " END";
+
+ /**
+ * Delete notes belong to folder which has been deleted
+ */
+ private static final String FOLDER_DELETE_NOTES_ON_DELETE_TRIGGER =
+ "CREATE TRIGGER folder_delete_notes_on_delete " +
+ " AFTER DELETE ON " + TABLE.NOTE +
+ " BEGIN" +
+ " DELETE FROM " + TABLE.NOTE +
+ " WHERE " + NoteColumns.PARENT_ID + "=old." + NoteColumns.ID + ";" +
+ " END";
+
+ /**
+ * Move notes belong to folder which has been moved to trash folder
+ */
+ private static final String FOLDER_MOVE_NOTES_ON_TRASH_TRIGGER =
+ "CREATE TRIGGER folder_move_notes_on_trash " +
+ " AFTER UPDATE ON " + TABLE.NOTE +
+ " WHEN new." + NoteColumns.PARENT_ID + "=" + Notes.ID_TRASH_FOLER +
+ " BEGIN" +
+ " UPDATE " + TABLE.NOTE +
+ " SET " + NoteColumns.PARENT_ID + "=" + Notes.ID_TRASH_FOLER +
+ " WHERE " + NoteColumns.PARENT_ID + "=old." + NoteColumns.ID + ";" +
+ " END";
+
+ public NotesDatabaseHelper(Context context) {
+ super(context, DB_NAME, null, DB_VERSION);
+ }
+
+ public void createNoteTable(SQLiteDatabase db) {
+ db.execSQL(CREATE_NOTE_TABLE_SQL);
+ reCreateNoteTableTriggers(db);
+ createSystemFolder(db);
+ Log.d(TAG, "note table has been created");
+ }
+
+ private void reCreateNoteTableTriggers(SQLiteDatabase db) {
+ db.execSQL("DROP TRIGGER IF EXISTS increase_folder_count_on_update");
+ db.execSQL("DROP TRIGGER IF EXISTS decrease_folder_count_on_update");
+ db.execSQL("DROP TRIGGER IF EXISTS decrease_folder_count_on_delete");
+ db.execSQL("DROP TRIGGER IF EXISTS delete_data_on_delete");
+ db.execSQL("DROP TRIGGER IF EXISTS increase_folder_count_on_insert");
+ db.execSQL("DROP TRIGGER IF EXISTS folder_delete_notes_on_delete");
+ db.execSQL("DROP TRIGGER IF EXISTS folder_move_notes_on_trash");
+
+ db.execSQL(NOTE_INCREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER);
+ db.execSQL(NOTE_DECREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER);
+ db.execSQL(NOTE_DECREASE_FOLDER_COUNT_ON_DELETE_TRIGGER);
+ db.execSQL(NOTE_DELETE_DATA_ON_DELETE_TRIGGER);
+ db.execSQL(NOTE_INCREASE_FOLDER_COUNT_ON_INSERT_TRIGGER);
+ db.execSQL(FOLDER_DELETE_NOTES_ON_DELETE_TRIGGER);
+ db.execSQL(FOLDER_MOVE_NOTES_ON_TRASH_TRIGGER);
+ }
+
+ private void createSystemFolder(SQLiteDatabase db) {
+ ContentValues values = new ContentValues();
+
+ /**
+ * call record foler for call notes
+ */
+ values.put(NoteColumns.ID, Notes.ID_CALL_RECORD_FOLDER);
+ values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM);
+ db.insert(TABLE.NOTE, null, values);
+
+ /**
+ * root folder which is default folder
+ */
+ values.clear();
+ values.put(NoteColumns.ID, Notes.ID_ROOT_FOLDER);
+ values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM);
+ db.insert(TABLE.NOTE, null, values);
+
+ /**
+ * temporary folder which is used for moving note
+ */
+ values.clear();
+ values.put(NoteColumns.ID, Notes.ID_TEMPARAY_FOLDER);
+ values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM);
+ db.insert(TABLE.NOTE, null, values);
+
+ /**
+ * create trash folder
+ */
+ values.clear();
+ values.put(NoteColumns.ID, Notes.ID_TRASH_FOLER);
+ values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM);
+ db.insert(TABLE.NOTE, null, values);
+ }
+
+ public void createDataTable(SQLiteDatabase db) {
+ db.execSQL(CREATE_DATA_TABLE_SQL);
+ reCreateDataTableTriggers(db);
+ db.execSQL(CREATE_DATA_NOTE_ID_INDEX_SQL);
+ Log.d(TAG, "data table has been created");
+ }
+
+ private void reCreateDataTableTriggers(SQLiteDatabase db) {
+ db.execSQL("DROP TRIGGER IF EXISTS update_note_content_on_insert");
+ db.execSQL("DROP TRIGGER IF EXISTS update_note_content_on_update");
+ db.execSQL("DROP TRIGGER IF EXISTS update_note_content_on_delete");
+
+ db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_INSERT_TRIGGER);
+ db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_UPDATE_TRIGGER);
+ db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_DELETE_TRIGGER);
+ }
+
+ static synchronized NotesDatabaseHelper getInstance(Context context) {
+ if (mInstance == null) {
+ mInstance = new NotesDatabaseHelper(context);
+ }
+ return mInstance;
+ }
+
+ @Override
+ public void onCreate(SQLiteDatabase db) {
+ createNoteTable(db);
+ createDataTable(db);
+ }
+
+ @Override
+ public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
+ boolean reCreateTriggers = false;
+ boolean skipV2 = false;
+
+ if (oldVersion == 1) {
+ upgradeToV2(db);
+ skipV2 = true; // this upgrade including the upgrade from v2 to v3
+ oldVersion++;
+ }
+
+ if (oldVersion == 2 && !skipV2) {
+ upgradeToV3(db);
+ reCreateTriggers = true;
+ oldVersion++;
+ }
+
+ if (oldVersion == 3) {
+ upgradeToV4(db);
+ oldVersion++;
+ }
+
+ if (oldVersion == 4) {
+ upgradeToV5(db);
+ oldVersion++;
+ }
+
+ if (oldVersion == 5) {
+ upgradeToV6(db);
+ oldVersion++;
+ }
+
+ if (reCreateTriggers) {
+ reCreateNoteTableTriggers(db);
+ reCreateDataTableTriggers(db);
+ }
+
+ if (oldVersion != newVersion) {
+ throw new IllegalStateException("Upgrade notes database to version " + newVersion
+ + "fails");
+ }
+ }
+
+ private void upgradeToV2(SQLiteDatabase db) {
+ db.execSQL("DROP TABLE IF EXISTS " + TABLE.NOTE);
+ db.execSQL("DROP TABLE IF EXISTS " + TABLE.DATA);
+ createNoteTable(db);
+ createDataTable(db);
+ }
+
+ private void upgradeToV3(SQLiteDatabase db) {
+ // drop unused triggers
+ db.execSQL("DROP TRIGGER IF EXISTS update_note_modified_date_on_insert");
+ db.execSQL("DROP TRIGGER IF EXISTS update_note_modified_date_on_delete");
+ db.execSQL("DROP TRIGGER IF EXISTS update_note_modified_date_on_update");
+ // add a column for gtask id
+ db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.GTASK_ID
+ + " TEXT NOT NULL DEFAULT ''");
+ // add a trash system folder
+ ContentValues values = new ContentValues();
+ values.put(NoteColumns.ID, Notes.ID_TRASH_FOLER);
+ values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM);
+ db.insert(TABLE.NOTE, null, values);
+ }
+
+ private void upgradeToV4(SQLiteDatabase db) {
+ db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.VERSION
+ + " INTEGER NOT NULL DEFAULT 0");
+ }
+
+ private void upgradeToV5(SQLiteDatabase db) {
+ db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.TOP
+ + " INTEGER NOT NULL DEFAULT 0");
+ }
+
+ private void upgradeToV6(SQLiteDatabase db) {
+ db.execSQL("ALTER TABLE " + TABLE.DATA + " ADD COLUMN " + DataColumns.LOCATION
+ + "TEXT NOT NULL DEFAULT ''");
+ }
+}
diff --git a/xiaomi-src/app/src/main/java/net/micode/notes/data/NotesProvider.java b/xiaomi-src/main/java/net/micode/notes/data/NotesProvider.java
similarity index 52%
rename from xiaomi-src/app/src/main/java/net/micode/notes/data/NotesProvider.java
rename to xiaomi-src/main/java/net/micode/notes/data/NotesProvider.java
index c38d7b3..1cc63c6 100644
--- a/xiaomi-src/app/src/main/java/net/micode/notes/data/NotesProvider.java
+++ b/xiaomi-src/main/java/net/micode/notes/data/NotesProvider.java
@@ -1,9 +1,22 @@
/*
- * 该类是Notes应用的内容提供者,负责管理Notes的数据,包括查询、插入、更新和删除操作。
- * 它与数据库交互,将操作转换为对数据库的相应操作。
+ * 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.data;
+
import android.app.SearchManager;
import android.content.ContentProvider;
import android.content.ContentUris;
@@ -20,24 +33,29 @@ import net.micode.notes.R;
import net.micode.notes.data.Notes.DataColumns;
import net.micode.notes.data.Notes.NoteColumns;
import net.micode.notes.data.NotesDatabaseHelper.TABLE;
+import net.micode.notes.gtask.data.SqlNote;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.Iterator;
public class NotesProvider extends ContentProvider {
private static final UriMatcher mMatcher;
- private NotesDatabaseHelper mHelper;
+ private static NotesDatabaseHelper mHelper;
private static final String TAG = "NotesProvider";
- private static final int URI_NOTE = 1;
- private static final int URI_NOTE_ITEM = 2;
- private static final int URI_DATA = 3;
- private static final int URI_DATA_ITEM = 4;
+ private static final int URI_NOTE = 1;
+ private static final int URI_NOTE_ITEM = 2;
+ private static final int URI_DATA = 3;
+ private static final int URI_DATA_ITEM = 4;
- private static final int URI_SEARCH = 5;
- private static final int URI_SEARCH_SUGGEST = 6;
+ private static final int URI_SEARCH = 5;
+ private static final int URI_SEARCH_SUGGEST = 6;
- // 初始化UriMatcher,用于匹配不同的URI请求
static {
mMatcher = new UriMatcher(UriMatcher.NO_MATCH);
mMatcher.addURI(Notes.AUTHORITY, "note", URI_NOTE);
@@ -50,51 +68,35 @@ public class NotesProvider extends ContentProvider {
}
/**
- * 在搜索结果中,为了显示更多信息,我们会去除标题和内容中的'\n'和空白字符。
+ * x'0A' represents the '\n' character in sqlite. For title and content in the search result,
+ * we will trim '\n' and white space in order to show more information.
*/
private static final String NOTES_SEARCH_PROJECTION = NoteColumns.ID + ","
- + NoteColumns.ID + " AS " + SearchManager.SUGGEST_COLUMN_INTENT_EXTRA_DATA + ","
- + "TRIM(REPLACE(" + NoteColumns.SNIPPET + ", x'0A','')) AS " + SearchManager.SUGGEST_COLUMN_TEXT_1 + ","
- + "TRIM(REPLACE(" + NoteColumns.SNIPPET + ", x'0A','')) AS " + SearchManager.SUGGEST_COLUMN_TEXT_2 + ","
- + R.drawable.search_result + " AS " + SearchManager.SUGGEST_COLUMN_ICON_1 + ","
- + "'" + Intent.ACTION_VIEW + "' AS " + SearchManager.SUGGEST_COLUMN_INTENT_ACTION + ","
- + "'" + Notes.TextNote.CONTENT_TYPE + "' AS " + SearchManager.SUGGEST_COLUMN_INTENT_DATA;
-
- // 用于搜索查询的SQL语句
+ + NoteColumns.ID + " AS " + SearchManager.SUGGEST_COLUMN_INTENT_EXTRA_DATA + ","
+ + "TRIM(REPLACE(" + NoteColumns.SNIPPET + ", x'0A','')) AS " + SearchManager.SUGGEST_COLUMN_TEXT_1 + ","
+ + "TRIM(REPLACE(" + NoteColumns.SNIPPET + ", x'0A','')) AS " + SearchManager.SUGGEST_COLUMN_TEXT_2 + ","
+ + R.drawable.search_result + " AS " + SearchManager.SUGGEST_COLUMN_ICON_1 + ","
+ + "'" + Intent.ACTION_VIEW + "' AS " + SearchManager.SUGGEST_COLUMN_INTENT_ACTION + ","
+ + "'" + Notes.TextNote.CONTENT_TYPE + "' AS " + SearchManager.SUGGEST_COLUMN_INTENT_DATA;
+
private static String NOTES_SNIPPET_SEARCH_QUERY = "SELECT " + NOTES_SEARCH_PROJECTION
- + " FROM " + TABLE.NOTE
- + " WHERE " + NoteColumns.SNIPPET + " LIKE ?"
- + " AND " + NoteColumns.PARENT_ID + "<>" + Notes.ID_TRASH_FOLER
- + " AND " + NoteColumns.TYPE + "=" + Notes.TYPE_NOTE;
+ + " FROM " + TABLE.NOTE
+ + " WHERE " + NoteColumns.SNIPPET + " LIKE ?"
+ + " AND " + NoteColumns.PARENT_ID + "<>" + Notes.ID_TRASH_FOLER
+ + " AND " + NoteColumns.TYPE + "=" + Notes.TYPE_NOTE;
- /**
- * 当ContentProvider被创建时调用,用于初始化数据库帮助类。
- *
- * @return 总是返回true。
- */
@Override
public boolean onCreate() {
mHelper = NotesDatabaseHelper.getInstance(getContext());
return true;
}
- /**
- * 根据URI查询数据。
- *
- * @param uri 要查询的数据的URI。
- * @param projection 要返回的列。
- * @param selection 查询条件。
- * @param selectionArgs 用于查询条件的参数。
- * @param sortOrder 排序顺序。
- * @return 返回匹配的Cursor对象。
- */
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
- String sortOrder) {
+ String sortOrder) {
Cursor c = null;
SQLiteDatabase db = mHelper.getReadableDatabase();
String id = null;
- // 根据URI匹配查询类型
switch (mMatcher.match(uri)) {
case URI_NOTE:
c = db.query(TABLE.NOTE, projection, selection, selectionArgs, null, null,
@@ -116,7 +118,6 @@ public class NotesProvider extends ContentProvider {
break;
case URI_SEARCH:
case URI_SEARCH_SUGGEST:
- // 处理搜索建议的特殊逻辑
if (sortOrder != null || projection != null) {
throw new IllegalArgumentException(
"do not specify sortOrder, selection, selectionArgs, or projection" + "with this query");
@@ -138,7 +139,7 @@ public class NotesProvider extends ContentProvider {
try {
searchString = String.format("%%%s%%", searchString);
c = db.rawQuery(NOTES_SNIPPET_SEARCH_QUERY,
- new String[]{searchString});
+ new String[] { searchString });
} catch (IllegalStateException ex) {
Log.e(TAG, "got exception: " + ex.toString());
}
@@ -146,20 +147,12 @@ public class NotesProvider extends ContentProvider {
default:
throw new IllegalArgumentException("Unknown URI " + uri);
}
- // 设置通知URI,以便数据改变时可以通知
if (c != null) {
c.setNotificationUri(getContext().getContentResolver(), uri);
}
return c;
}
- /**
- * 在数据库中插入新数据。
- *
- * @param uri 插入数据的URI。
- * @param values 要插入的数据。
- * @return 返回插入数据的URI。
- */
@Override
public Uri insert(Uri uri, ContentValues values) {
SQLiteDatabase db = mHelper.getWritableDatabase();
@@ -179,12 +172,13 @@ public class NotesProvider extends ContentProvider {
default:
throw new IllegalArgumentException("Unknown URI " + uri);
}
- // 通知URI改变
+ // Notify the note uri
if (noteId > 0) {
getContext().getContentResolver().notifyChange(
ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId), null);
}
+ // Notify the data uri
if (dataId > 0) {
getContext().getContentResolver().notifyChange(
ContentUris.withAppendedId(Notes.CONTENT_DATA_URI, dataId), null);
@@ -193,14 +187,6 @@ public class NotesProvider extends ContentProvider {
return ContentUris.withAppendedId(uri, insertedId);
}
- /**
- * 根据URI删除数据。
- *
- * @param uri 要删除数据的URI。
- * @param selection 删除条件。
- * @param selectionArgs 用于删除条件的参数。
- * @return 返回被删除的行数。
- */
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
int count = 0;
@@ -215,7 +201,8 @@ public class NotesProvider extends ContentProvider {
case URI_NOTE_ITEM:
id = uri.getPathSegments().get(1);
/**
- * ID小于等于0的笔记是系统文件夹,不允许删除
+ * ID that smaller than 0 is system folder which is not allowed to
+ * trash
*/
long noteId = Long.valueOf(id);
if (noteId <= 0) {
@@ -237,7 +224,6 @@ public class NotesProvider extends ContentProvider {
default:
throw new IllegalArgumentException("Unknown URI " + uri);
}
- // 通知URI改变
if (count > 0) {
if (deleteData) {
getContext().getContentResolver().notifyChange(Notes.CONTENT_NOTE_URI, null);
@@ -247,15 +233,6 @@ public class NotesProvider extends ContentProvider {
return count;
}
- /**
- * 更新数据库中的数据。
- *
- * @param uri 要更新数据的URI。
- * @param values 要更新到的数据。
- * @param selection 更新条件。
- * @param selectionArgs 用于更新条件的参数。
- * @return 返回被更新的行数。
- */
@Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
int count = 0;
@@ -287,7 +264,6 @@ public class NotesProvider extends ContentProvider {
throw new IllegalArgumentException("Unknown URI " + uri);
}
- // 通知URI改变
if (count > 0) {
if (updateData) {
getContext().getContentResolver().notifyChange(Notes.CONTENT_NOTE_URI, null);
@@ -297,24 +273,10 @@ public class NotesProvider extends ContentProvider {
return count;
}
-
- /**
- * 解析选择条件,如果存在选择条件,则在条件前后添加" AND (" 和 ')'。
- *
- * @param selection 用户提供的选择条件。
- * @return 如果有选择条件,则返回添加了定界符的选择条件字符串;否则返回空字符串。
- */
private String parseSelection(String selection) {
return (!TextUtils.isEmpty(selection) ? " AND (" + selection + ')' : "");
}
- /**
- * 增加指定笔记的版本号。
- *
- * @param id 笔记的ID,如果为正数,则根据ID更新版本号;如果为0或负数,则根据selection参数更新版本号。
- * @param selection 用于选择需要更新的笔记的条件字符串,可以为空。
- * @param selectionArgs 与selection参数配合使用的参数数组,用于替换selection中的"?"。
- */
private void increaseNoteVersion(long id, String selection, String[] selectionArgs) {
StringBuilder sql = new StringBuilder(120);
sql.append("UPDATE ");
@@ -323,7 +285,6 @@ public class NotesProvider extends ContentProvider {
sql.append(NoteColumns.VERSION);
sql.append("=" + NoteColumns.VERSION + "+1 ");
- // 根据ID或选择条件构建SQL的WHERE子句
if (id > 0 || !TextUtils.isEmpty(selection)) {
sql.append(" WHERE ");
}
@@ -332,7 +293,6 @@ public class NotesProvider extends ContentProvider {
}
if (!TextUtils.isEmpty(selection)) {
String selectString = id > 0 ? parseSelection(selection) : selection;
- // 替换selection中的"?"为selectionArgs中的对应参数
for (String args : selectionArgs) {
selectString = selectString.replaceFirst("\\?", args);
}
@@ -342,17 +302,153 @@ public class NotesProvider extends ContentProvider {
mHelper.getWritableDatabase().execSQL(sql.toString());
}
- /**
- * 根据URI获取对应的MIME类型。
- * 本方法是个待实现的方法,当前仅返回null。
- *
- * @param uri 请求的URI。
- * @return 返回null,表示该方法尚未实现。
- */
@Override
public String getType(Uri uri) {
// TODO Auto-generated method stub
return null;
}
+
+
+
+ public static JSONObject uploadnote()throws JSONException {
+ JSONObject js = new JSONObject();
+ SQLiteDatabase db;
+ db = mHelper.getReadableDatabase();
+ Cursor cursor = null;
+ cursor = db.query(NotesDatabaseHelper.TABLE.NOTE,
+ null, null, null, null, null, null);
+ //判断游标是否为空
+ if (cursor.moveToFirst()) {
+ for (int index = 1; index <= cursor.getCount(); index++) {
+ JSONObject note = new JSONObject();
+ note.put(NoteColumns.PARENT_ID,cursor.getString(1));
+ note.put(NoteColumns.ALERTED_DATE,cursor.getString(2));
+ note.put(NoteColumns.BG_COLOR_ID,cursor.getString(3));
+ note.put(NoteColumns.CREATED_DATE,cursor.getString(4));
+ note.put(NoteColumns.HAS_ATTACHMENT,cursor.getString(5));
+ note.put(NoteColumns.MODIFIED_DATE,cursor.getString(6));
+ note.put(NoteColumns.NOTES_COUNT,cursor.getString(7));
+ note.put(NoteColumns.SNIPPET,cursor.getString(8));
+ note.put(NoteColumns.TYPE,cursor.getString(9));
+ note.put(NoteColumns.WIDGET_ID,cursor.getString(10));
+ note.put(NoteColumns.WIDGET_TYPE,cursor.getString(11));
+ note.put(NoteColumns.SYNC_ID,cursor.getString(12));
+ note.put(NoteColumns.LOCAL_MODIFIED,cursor.getString(13));
+ note.put(NoteColumns.ORIGIN_PARENT_ID,cursor.getString(14));
+ note.put(NoteColumns.GTASK_ID,cursor.getString(15));
+ note.put(NoteColumns.VERSION,cursor.getString(16));
+ note.put(NoteColumns.TOP,cursor.getString(17));
+ js.put(cursor.getString(0),note);
+ if(!cursor.isLast()){
+ cursor.moveToNext();
+ }
+ }
+ }
+ System.out.println(js);
+ return js;
+ }
+ public static JSONObject uploaddata()throws JSONException {
+ JSONObject js = new JSONObject();
+ SQLiteDatabase db;
+ db = mHelper.getReadableDatabase();
+ Cursor cursor = null;
+ cursor = db.query(NotesDatabaseHelper.TABLE.DATA,
+ null, null, null, null, null, null);
+ //判断游标是否为空
+ if (cursor.moveToFirst()) {
+ for (int index = 1; index <= cursor.getCount(); index++) {
+
+ JSONObject data = new JSONObject();
+ data.put(DataColumns.MIME_TYPE,cursor.getString(1));
+ data.put(DataColumns.NOTE_ID,cursor.getString(2));
+ data.put(DataColumns.CREATED_DATE,cursor.getString(3));
+ data.put(DataColumns.MODIFIED_DATE,cursor.getString(4));
+ data.put(DataColumns.CONTENT,cursor.getString(5));
+ data.put(DataColumns.DATA1,cursor.getString(6));
+ data.put(DataColumns.DATA2,cursor.getString(7));
+ data.put(DataColumns.DATA3,cursor.getString(8));
+ data.put(DataColumns.DATA4,cursor.getString(9));
+ data.put(DataColumns.DATA5,cursor.getString(10));
+ js.put(cursor.getString(0),data);
+ if(!cursor.isLast()){
+ cursor.moveToNext();
+ }
+ }
+ }
+ System.out.println(js);
+ return js;
+ }
+
+ public static void syncTABLE(JSONObject JSONInfo) throws JSONException {
+ SQLiteDatabase db;
+ db = mHelper.getReadableDatabase();
+ String sql;
+ JSONObject NOTE = null;
+ JSONObject DATA = null;
+ try {
+ NOTE = (JSONObject) JSONInfo.get("NOTE");
+ DATA = (JSONObject) JSONInfo.get("DATA");
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ sql = "DELETE FROM" + " " + TABLE.NOTE;
+ db.execSQL(sql);
+
+ assert NOTE != null;
+ Iterator NOTEKeys = NOTE.keys();
+ while (NOTEKeys.hasNext()){
+ String NOTEKey = NOTEKeys.next();
+ JSONObject NOTEInfo = (JSONObject) NOTE.get(NOTEKey);
+ sql = "INSERT INTO note(_id,parent_id,alert_date,bg_color_id,created_date,has_attachment,modified_date," +
+ "notes_count,snippet,type,widget_id,widget_type,sync_id,local_modified,origin_parent_id,gtask_id," +
+ "version,top,star,passcode) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
+ Object bindArgs[] = new Object[] {
+ NOTEKey,
+ NOTEInfo.getString("parent_id"),
+ NOTEInfo.getString("alert_date"),
+ NOTEInfo.getString("bg_color_id"),
+ NOTEInfo.getString("created_date"),
+ NOTEInfo.getString("has_attachment"),
+ NOTEInfo.getString("modified_date"),
+ "0",//NOTEInfo.getString("notes_count")
+ "0",
+ NOTEInfo.getString("snippet"),
+ NOTEInfo.getString("type"),
+ NOTEInfo.getString("widget_id"),
+ NOTEInfo.getString("widget_type"),
+ NOTEInfo.getString("sync_id"),
+ NOTEInfo.getString("local_modified"),
+ NOTEInfo.getString("origin_parent_id"),
+ NOTEInfo.getString("gtask_id"),
+ NOTEInfo.getString("version"),
+ NOTEInfo.getString("top"),
+ NOTEInfo.getString("star"),
+ NOTEInfo.getString("passcode")
+ };
+ db.execSQL(sql,bindArgs);
+ }
+
+ assert DATA != null;
+ Iterator DATAKeys = DATA.keys();
+ while (DATAKeys.hasNext()){
+ String DATAKey = DATAKeys.next();
+ JSONObject DATAInfo = (JSONObject) DATA.get(DATAKey);
+ sql = "INSERT INTO data(_id,mime_type,note_id,created_date,modified_date,content,data3,data4,data5)" +
+ "values (?,?,?,?,?,?,?,?,?)";
+ Object bindArgs[] = new Object[] {
+ DATAKey,
+ DATAInfo.getString("mime_type"),
+ DATAInfo.getString("note_id"),
+ DATAInfo.getString("created_date"),
+ DATAInfo.getString("modified_date"),
+ DATAInfo.getString("content"),
+ DATAInfo.getString("data3"),
+ DATAInfo.getString("data4"),
+ DATAInfo.getString("data5")
+ };
+ db.execSQL(sql,bindArgs);
+ }
+ }
}
diff --git a/xiaomi-src/app/src/main/java/net/micode/notes/gtask/data/MetaData.java b/xiaomi-src/main/java/net/micode/notes/gtask/data/MetaData.java
similarity index 53%
rename from xiaomi-src/app/src/main/java/net/micode/notes/gtask/data/MetaData.java
rename to xiaomi-src/main/java/net/micode/notes/gtask/data/MetaData.java
index 3726f56..3a2050b 100644
--- a/xiaomi-src/app/src/main/java/net/micode/notes/gtask/data/MetaData.java
+++ b/xiaomi-src/main/java/net/micode/notes/gtask/data/MetaData.java
@@ -1,3 +1,19 @@
+/*
+ * 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.gtask.data;
import android.database.Cursor;
@@ -8,92 +24,56 @@ import net.micode.notes.tool.GTaskStringUtils;
import org.json.JSONException;
import org.json.JSONObject;
+
public class MetaData extends Task {
- private final static String TAG = MetaData.class.getSimpleName(); // 日志标签
+ private final static String TAG = MetaData.class.getSimpleName();
- private String mRelatedGid = null; // 与任务相关的全局ID
+ private String mRelatedGid = null;
- /**
- * 设置元数据。
- *
- * @param gid 任务的全局ID。
- * @param metaInfo 元信息的JSON对象。
- */
public void setMeta(String gid, JSONObject metaInfo) {
try {
- metaInfo.put(GTaskStringUtils.META_HEAD_GTASK_ID, gid); // 将任务的全局ID添加到元信息中
+ metaInfo.put(GTaskStringUtils.META_HEAD_GTASK_ID, gid);
} catch (JSONException e) {
Log.e(TAG, "failed to put related gid");
}
- setNotes(metaInfo.toString()); // 将元信息设置为任务的笔记
- setName(GTaskStringUtils.META_NOTE_NAME); // 设置任务的名称为特定的元数据标志名称
+ setNotes(metaInfo.toString());
+ setName(GTaskStringUtils.META_NOTE_NAME);
}
- /**
- * 获取与任务相关的全局ID。
- *
- * @return 相关的全局ID字符串。
- */
public String getRelatedGid() {
return mRelatedGid;
}
- /**
- * 判断任务是否值得保存。
- *
- * @return 如果任务的笔记字段不为空,则返回true,表示值得保存。
- */
@Override
public boolean isWorthSaving() {
return getNotes() != null;
}
- /**
- * 通过远程JSON对象设置内容。
- *
- * @param js JSON对象,包含远程任务的内容。
- */
@Override
public void setContentByRemoteJSON(JSONObject js) {
super.setContentByRemoteJSON(js);
if (getNotes() != null) {
try {
JSONObject metaInfo = new JSONObject(getNotes().trim());
- mRelatedGid = metaInfo.getString(GTaskStringUtils.META_HEAD_GTASK_ID); // 从笔记中提取相关的全局ID
+ mRelatedGid = metaInfo.getString(GTaskStringUtils.META_HEAD_GTASK_ID);
} catch (JSONException e) {
Log.w(TAG, "failed to get related gid");
- mRelatedGid = null; // 提取失败时,设置相关ID为null
+ mRelatedGid = null;
}
}
}
- /**
- * 通过本地JSON对象设置内容。此方法不应被调用。
- *
- * @param js 本地JSON对象。
- */
@Override
public void setContentByLocalJSON(JSONObject js) {
// this function should not be called
throw new IllegalAccessError("MetaData:setContentByLocalJSON should not be called");
}
- /**
- * 从内容生成本地JSON对象。此方法不应被调用。
- *
- * @return 生成的JSON对象。
- */
@Override
public JSONObject getLocalJSONFromContent() {
throw new IllegalAccessError("MetaData:getLocalJSONFromContent should not be called");
}
- /**
- * 获取同步操作类型。此方法不应被调用。
- *
- * @param c 数据库游标,指向当前任务。
- * @return 同步操作的类型。
- */
@Override
public int getSyncAction(Cursor c) {
throw new IllegalAccessError("MetaData:getSyncAction should not be called");
diff --git a/xiaomi-src/main/java/net/micode/notes/gtask/data/Node.java b/xiaomi-src/main/java/net/micode/notes/gtask/data/Node.java
new file mode 100644
index 0000000..63950e0
--- /dev/null
+++ b/xiaomi-src/main/java/net/micode/notes/gtask/data/Node.java
@@ -0,0 +1,101 @@
+/*
+ * 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.gtask.data;
+
+import android.database.Cursor;
+
+import org.json.JSONObject;
+
+public abstract class Node {
+ public static final int SYNC_ACTION_NONE = 0;
+
+ public static final int SYNC_ACTION_ADD_REMOTE = 1;
+
+ public static final int SYNC_ACTION_ADD_LOCAL = 2;
+
+ public static final int SYNC_ACTION_DEL_REMOTE = 3;
+
+ public static final int SYNC_ACTION_DEL_LOCAL = 4;
+
+ public static final int SYNC_ACTION_UPDATE_REMOTE = 5;
+
+ public static final int SYNC_ACTION_UPDATE_LOCAL = 6;
+
+ public static final int SYNC_ACTION_UPDATE_CONFLICT = 7;
+
+ public static final int SYNC_ACTION_ERROR = 8;
+
+ private String mGid;
+
+ private String mName;
+
+ private long mLastModified;
+
+ private boolean mDeleted;
+
+ public Node() {
+ mGid = null;
+ mName = "";
+ mLastModified = 0;
+ mDeleted = false;
+ }
+
+ public abstract JSONObject getCreateAction(int actionId);
+
+ public abstract JSONObject getUpdateAction(int actionId);
+
+ public abstract void setContentByRemoteJSON(JSONObject js);
+
+ public abstract void setContentByLocalJSON(JSONObject js);
+
+ public abstract JSONObject getLocalJSONFromContent();
+
+ public abstract int getSyncAction(Cursor c);
+
+ public void setGid(String gid) {
+ this.mGid = gid;
+ }
+
+ public void setName(String name) {
+ this.mName = name;
+ }
+
+ public void setLastModified(long lastModified) {
+ this.mLastModified = lastModified;
+ }
+
+ public void setDeleted(boolean deleted) {
+ this.mDeleted = deleted;
+ }
+
+ public String getGid() {
+ return this.mGid;
+ }
+
+ public String getName() {
+ return this.mName;
+ }
+
+ public long getLastModified() {
+ return this.mLastModified;
+ }
+
+ public boolean getDeleted() {
+ return this.mDeleted;
+ }
+
+}
diff --git a/xiaomi-src/app/src/main/java/net/micode/notes/gtask/data/SqlData.java b/xiaomi-src/main/java/net/micode/notes/gtask/data/SqlData.java
similarity index 73%
rename from xiaomi-src/app/src/main/java/net/micode/notes/gtask/data/SqlData.java
rename to xiaomi-src/main/java/net/micode/notes/gtask/data/SqlData.java
index 7381072..d3ec3be 100644
--- a/xiaomi-src/app/src/main/java/net/micode/notes/gtask/data/SqlData.java
+++ b/xiaomi-src/main/java/net/micode/notes/gtask/data/SqlData.java
@@ -1,7 +1,19 @@
/*
- * SqlData 类用于操作和管理数据库中的数据项。
- * 提供了从 JSON 对象设置内容,从数据库 Cursor 加载数据,以及提交数据更新到数据库的功能。
+ * 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.gtask.data;
import android.content.ContentResolver;
@@ -24,53 +36,41 @@ import org.json.JSONObject;
public class SqlData {
- // 日志标签
private static final String TAG = SqlData.class.getSimpleName();
- // 无效ID常量
private static final int INVALID_ID = -99999;
- // 查询时使用的字段投影
- public static final String[] PROJECTION_DATA = new String[]{
+ public static final String[] PROJECTION_DATA = new String[] {
DataColumns.ID, DataColumns.MIME_TYPE, DataColumns.CONTENT, DataColumns.DATA1,
DataColumns.DATA3
};
- // 字段在Cursor中的索引
public static final int DATA_ID_COLUMN = 0;
+
public static final int DATA_MIME_TYPE_COLUMN = 1;
+
public static final int DATA_CONTENT_COLUMN = 2;
+
public static final int DATA_CONTENT_DATA_1_COLUMN = 3;
+
public static final int DATA_CONTENT_DATA_3_COLUMN = 4;
- // ContentResolver用于操作内容提供者
private ContentResolver mContentResolver;
- // 标记当前对象是创建状态还是更新状态
private boolean mIsCreate;
- // 数据项ID
private long mDataId;
- // 数据项的MIME类型
private String mDataMimeType;
- // 数据项的内容
private String mDataContent;
- // 数据项的附加数据1
private long mDataContentData1;
- // 数据项的附加数据3
private String mDataContentData3;
- // 存储与数据库不同步的数据变化
private ContentValues mDiffDataValues;
- /*
- * SqlData 构造函数,用于创建新的数据项。
- * @param context 上下文对象,用于获取ContentResolver。
- */
public SqlData(Context context) {
mContentResolver = context.getContentResolver();
mIsCreate = true;
@@ -82,11 +82,6 @@ public class SqlData {
mDiffDataValues = new ContentValues();
}
- /*
- * SqlData 构造函数,用于加载现有数据项。
- * @param context 上下文对象,用于获取ContentResolver。
- * @param c 数据项的Cursor对象,用于加载数据。
- */
public SqlData(Context context, Cursor c) {
mContentResolver = context.getContentResolver();
mIsCreate = false;
@@ -94,10 +89,6 @@ public class SqlData {
mDiffDataValues = new ContentValues();
}
- /*
- * 从Cursor中加载数据。
- * @param c 数据项的Cursor对象。
- */
private void loadFromCursor(Cursor c) {
mDataId = c.getLong(DATA_ID_COLUMN);
mDataMimeType = c.getString(DATA_MIME_TYPE_COLUMN);
@@ -106,11 +97,6 @@ public class SqlData {
mDataContentData3 = c.getString(DATA_CONTENT_DATA_3_COLUMN);
}
- /*
- * 根据JSON对象设置数据项内容。
- * @param js JSON对象,包含数据项的内容。
- * @throws JSONException 如果解析JSON时出错。
- */
public void setContent(JSONObject js) throws JSONException {
long dataId = js.has(DataColumns.ID) ? js.getLong(DataColumns.ID) : INVALID_ID;
if (mIsCreate || mDataId != dataId) {
@@ -144,11 +130,6 @@ public class SqlData {
mDataContentData3 = dataContentData3;
}
- /*
- * 获取数据项的内容,转换为JSON对象。
- * @return JSON对象,包含数据项的内容。
- * @throws JSONException 如果构建JSON对象时出错。
- */
public JSONObject getContent() throws JSONException {
if (mIsCreate) {
Log.e(TAG, "it seems that we haven't created this in database yet");
@@ -163,16 +144,9 @@ public class SqlData {
return js;
}
- /*
- * 将数据项提交到数据库,如果是新数据项则插入,否则更新。
- * @param noteId 符合此数据项的笔记ID。
- * @param validateVersion 是否验证版本号。
- * @param version 数据项的版本号。
- */
public void commit(long noteId, boolean validateVersion, long version) {
if (mIsCreate) {
- // 处理新数据项的插入
if (mDataId == INVALID_ID && mDiffDataValues.containsKey(DataColumns.ID)) {
mDiffDataValues.remove(DataColumns.ID);
}
@@ -186,19 +160,16 @@ public class SqlData {
throw new ActionFailureException("create note failed");
}
} else {
- // 处理现有数据项的更新
if (mDiffDataValues.size() > 0) {
int result = 0;
if (!validateVersion) {
- // 不验证版本号时直接更新
result = mContentResolver.update(ContentUris.withAppendedId(
Notes.CONTENT_DATA_URI, mDataId), mDiffDataValues, null, null);
} else {
- // 验证版本号时条件更新
result = mContentResolver.update(ContentUris.withAppendedId(
- Notes.CONTENT_DATA_URI, mDataId), mDiffDataValues,
+ Notes.CONTENT_DATA_URI, mDataId), mDiffDataValues,
" ? in (SELECT " + NoteColumns.ID + " FROM " + TABLE.NOTE
- + " WHERE " + NoteColumns.VERSION + "=?)", new String[]{
+ + " WHERE " + NoteColumns.VERSION + "=?)", new String[] {
String.valueOf(noteId), String.valueOf(version)
});
}
@@ -208,17 +179,11 @@ public class SqlData {
}
}
- // 清理并重置状态
mDiffDataValues.clear();
mIsCreate = false;
}
- /*
- * 获取数据项的ID。
- * @return 数据项的ID。
- */
public long getId() {
return mDataId;
}
}
-
diff --git a/xiaomi-src/app/src/main/java/net/micode/notes/gtask/data/SqlNote.java b/xiaomi-src/main/java/net/micode/notes/gtask/data/SqlNote.java
similarity index 65%
rename from xiaomi-src/app/src/main/java/net/micode/notes/gtask/data/SqlNote.java
rename to xiaomi-src/main/java/net/micode/notes/gtask/data/SqlNote.java
index 25b2796..1dd6ad8 100644
--- a/xiaomi-src/app/src/main/java/net/micode/notes/gtask/data/SqlNote.java
+++ b/xiaomi-src/main/java/net/micode/notes/gtask/data/SqlNote.java
@@ -38,84 +38,98 @@ import org.json.JSONObject;
import java.util.ArrayList;
-/**
- * SqlNote 类用于管理和操作数据库中的笔记数据。
- * 它提供了创建、加载和更新笔记内容的接口。
- */
public class SqlNote {
- // 日志标签
private static final String TAG = SqlNote.class.getSimpleName();
- // 无效的ID值
private static final int INVALID_ID = -99999;
- // 查询笔记时要选择的列
- public static final String[] PROJECTION_NOTE = new String[]{
+ public static final String[] PROJECTION_NOTE = new String[] {
NoteColumns.ID, NoteColumns.ALERTED_DATE, NoteColumns.BG_COLOR_ID,
NoteColumns.CREATED_DATE, NoteColumns.HAS_ATTACHMENT, NoteColumns.MODIFIED_DATE,
NoteColumns.NOTES_COUNT, NoteColumns.PARENT_ID, NoteColumns.SNIPPET, NoteColumns.TYPE,
NoteColumns.WIDGET_ID, NoteColumns.WIDGET_TYPE, NoteColumns.SYNC_ID,
NoteColumns.LOCAL_MODIFIED, NoteColumns.ORIGIN_PARENT_ID, NoteColumns.GTASK_ID,
- NoteColumns.VERSION
+ NoteColumns.VERSION,NoteColumns.TOP,
};
- // 各查询列的索引
public static final int ID_COLUMN = 0;
+
public static final int ALERTED_DATE_COLUMN = 1;
+
public static final int BG_COLOR_ID_COLUMN = 2;
+
public static final int CREATED_DATE_COLUMN = 3;
+
public static final int HAS_ATTACHMENT_COLUMN = 4;
+
public static final int MODIFIED_DATE_COLUMN = 5;
+
public static final int NOTES_COUNT_COLUMN = 6;
+
public static final int PARENT_ID_COLUMN = 7;
+
public static final int SNIPPET_COLUMN = 8;
+
public static final int TYPE_COLUMN = 9;
+
public static final int WIDGET_ID_COLUMN = 10;
+
public static final int WIDGET_TYPE_COLUMN = 11;
+
public static final int SYNC_ID_COLUMN = 12;
+
public static final int LOCAL_MODIFIED_COLUMN = 13;
+
public static final int ORIGIN_PARENT_ID_COLUMN = 14;
+
public static final int GTASK_ID_COLUMN = 15;
+
public static final int VERSION_COLUMN = 16;
- // 上下文和内容解析器,用于访问数据库
+ public static final int Top_COLUMN = 17;
+
private Context mContext;
+
private ContentResolver mContentResolver;
- // 标记是否创建新笔记
private boolean mIsCreate;
- // 笔记的各种属性
private long mId;
+
private long mAlertDate;
+
private int mBgColorId;
+
private long mCreatedDate;
+
private int mHasAttachment;
+
private long mModifiedDate;
+
private long mParentId;
+
private String mSnippet;
+
private int mType;
+
private int mWidgetId;
+
private int mWidgetType;
+
private long mOriginParent;
+
private long mVersion;
- // 用于存储两次更新之间差异的数据值
+ private String mTop;
+
private ContentValues mDiffNoteValues;
- // 存储与笔记相关数据的列表
private ArrayList mDataList;
- /**
- * 构造函数,初始化一个新的SqlNote实例。
- *
- * @param context 上下文,通常是指Activity或Application对象。
- */
public SqlNote(Context context) {
mContext = context;
mContentResolver = context.getContentResolver();
mIsCreate = true;
- // 初始化笔记属性为默认值
mId = INVALID_ID;
mAlertDate = 0;
mBgColorId = ResourceParser.getDefaultBgId(context);
@@ -129,16 +143,11 @@ public class SqlNote {
mWidgetType = Notes.TYPE_WIDGET_INVALIDE;
mOriginParent = 0;
mVersion = 0;
+ mTop = getmTop();
mDiffNoteValues = new ContentValues();
mDataList = new ArrayList();
}
- /**
- * 构造函数,从数据库中加载指定ID的笔记。
- *
- * @param context 上下文,通常是指Activity或Application对象。
- * @param c 数据库查询结果的Cursor对象。
- */
public SqlNote(Context context, Cursor c) {
mContext = context;
mContentResolver = context.getContentResolver();
@@ -148,14 +157,9 @@ public class SqlNote {
if (mType == Notes.TYPE_NOTE)
loadDataContent();
mDiffNoteValues = new ContentValues();
+ mTop = getmTop();
}
- /**
- * 构造函数,从数据库中加载指定ID的笔记。
- *
- * @param context 上下文,通常是指Activity或Application对象。
- * @param id 要加载的笔记的ID。
- */
public SqlNote(Context context, long id) {
mContext = context;
mContentResolver = context.getContentResolver();
@@ -165,22 +169,26 @@ public class SqlNote {
if (mType == Notes.TYPE_NOTE)
loadDataContent();
mDiffNoteValues = new ContentValues();
+ mTop = getmTop();
+
+ }
+
+ public String getmTop(){
+ return mTop;
}
- // 从数据库中加载笔记数据
private void loadFromCursor(long id) {
Cursor c = null;
try {
c = mContentResolver.query(Notes.CONTENT_NOTE_URI, PROJECTION_NOTE, "(_id=?)",
- new String[]{
- String.valueOf(id)
+ new String[] {
+ String.valueOf(id)
}, null);
if (c != null) {
- if (c.moveToNext()) {
- loadFromCursor(c);
- } else {
- Log.w(TAG, "loadFromCursor: cursor = null");
- }
+ c.moveToNext();
+ loadFromCursor(c);
+ } else {
+ Log.w(TAG, "loadFromCursor: cursor = null");
}
} finally {
if (c != null)
@@ -188,7 +196,6 @@ public class SqlNote {
}
}
- // 从Cursor中加载笔记数据到实例属性
private void loadFromCursor(Cursor c) {
mId = c.getLong(ID_COLUMN);
mAlertDate = c.getLong(ALERTED_DATE_COLUMN);
@@ -202,59 +209,42 @@ public class SqlNote {
mWidgetId = c.getInt(WIDGET_ID_COLUMN);
mWidgetType = c.getInt(WIDGET_TYPE_COLUMN);
mVersion = c.getLong(VERSION_COLUMN);
+ mTop = c.getString(Top_COLUMN);
}
- /**
- * 加载数据内容。
- * 从数据库中查询特定note_id的数据,并将其加载到mDataList中。
- */
private void loadDataContent() {
Cursor c = null;
mDataList.clear();
try {
- // 查询指定note_id的数据
c = mContentResolver.query(Notes.CONTENT_DATA_URI, SqlData.PROJECTION_DATA,
- "(note_id=?)", new String[]{
- String.valueOf(mId)
+ "(note_id=?)", new String[] {
+ String.valueOf(mId)
}, null);
if (c != null) {
- // 如果查询结果为空,打印警告信息并返回
if (c.getCount() == 0) {
Log.w(TAG, "it seems that the note has not data");
return;
}
- // 遍历查询结果,并加载到mDataList中
while (c.moveToNext()) {
SqlData data = new SqlData(mContext, c);
mDataList.add(data);
}
} else {
- // 如果查询结果为null,打印警告信息
Log.w(TAG, "loadDataContent: cursor = null");
}
} finally {
- // 释放资源
if (c != null)
c.close();
}
}
- /**
- * 设置内容。
- * 根据传入的JSONObject,更新或创建笔记的相关内容。
- *
- * @param js 包含笔记信息的JSONObject。
- * @return 成功返回true,失败返回false。
- */
public boolean setContent(JSONObject js) {
try {
- // 从js中获取note信息
JSONObject note = js.getJSONObject(GTaskStringUtils.META_HEAD_NOTE);
- // 系统笔记不可修改
if (note.getInt(NoteColumns.TYPE) == Notes.TYPE_SYSTEM) {
Log.w(TAG, "cannot set system folder");
} else if (note.getInt(NoteColumns.TYPE) == Notes.TYPE_FOLDER) {
- // 文件夹类型笔记,仅更新snippet和类型
+ // for folder we can only update the snnipet and type
String snippet = note.has(NoteColumns.SNIPPET) ? note
.getString(NoteColumns.SNIPPET) : "";
if (mIsCreate || !mSnippet.equals(snippet)) {
@@ -269,7 +259,6 @@ public class SqlNote {
}
mType = type;
} else if (note.getInt(NoteColumns.TYPE) == Notes.TYPE_NOTE) {
- // 笔记类型,更新或设置多种信息
JSONArray dataArray = js.getJSONArray(GTaskStringUtils.META_HEAD_DATA);
long id = note.has(NoteColumns.ID) ? note.getLong(NoteColumns.ID) : INVALID_ID;
if (mIsCreate || mId != id) {
@@ -277,10 +266,83 @@ public class SqlNote {
}
mId = id;
- // 更新或设置提醒日期、背景色id、创建日期、附件标志、修改日期、父id、snippet、类型、小部件id和类型等信息
- // 该部分通过条件判断,确定是否需要更新数据库字段
+ long alertDate = note.has(NoteColumns.ALERTED_DATE) ? note
+ .getLong(NoteColumns.ALERTED_DATE) : 0;
+ if (mIsCreate || mAlertDate != alertDate) {
+ mDiffNoteValues.put(NoteColumns.ALERTED_DATE, alertDate);
+ }
+ mAlertDate = alertDate;
+
+ int bgColorId = note.has(NoteColumns.BG_COLOR_ID) ? note
+ .getInt(NoteColumns.BG_COLOR_ID) : ResourceParser.getDefaultBgId(mContext);
+ if (mIsCreate || mBgColorId != bgColorId) {
+ mDiffNoteValues.put(NoteColumns.BG_COLOR_ID, bgColorId);
+ }
+ mBgColorId = bgColorId;
+
+ long createDate = note.has(NoteColumns.CREATED_DATE) ? note
+ .getLong(NoteColumns.CREATED_DATE) : System.currentTimeMillis();
+ if (mIsCreate || mCreatedDate != createDate) {
+ mDiffNoteValues.put(NoteColumns.CREATED_DATE, createDate);
+ }
+ mCreatedDate = createDate;
+
+ int hasAttachment = note.has(NoteColumns.HAS_ATTACHMENT) ? note
+ .getInt(NoteColumns.HAS_ATTACHMENT) : 0;
+ if (mIsCreate || mHasAttachment != hasAttachment) {
+ mDiffNoteValues.put(NoteColumns.HAS_ATTACHMENT, hasAttachment);
+ }
+ mHasAttachment = hasAttachment;
+
+ long modifiedDate = note.has(NoteColumns.MODIFIED_DATE) ? note
+ .getLong(NoteColumns.MODIFIED_DATE) : System.currentTimeMillis();
+ if (mIsCreate || mModifiedDate != modifiedDate) {
+ mDiffNoteValues.put(NoteColumns.MODIFIED_DATE, modifiedDate);
+ }
+ mModifiedDate = modifiedDate;
+
+ long parentId = note.has(NoteColumns.PARENT_ID) ? note
+ .getLong(NoteColumns.PARENT_ID) : 0;
+ if (mIsCreate || mParentId != parentId) {
+ mDiffNoteValues.put(NoteColumns.PARENT_ID, parentId);
+ }
+ mParentId = parentId;
+
+ String snippet = note.has(NoteColumns.SNIPPET) ? note
+ .getString(NoteColumns.SNIPPET) : "";
+ if (mIsCreate || !mSnippet.equals(snippet)) {
+ mDiffNoteValues.put(NoteColumns.SNIPPET, snippet);
+ }
+ mSnippet = snippet;
+
+ int type = note.has(NoteColumns.TYPE) ? note.getInt(NoteColumns.TYPE)
+ : Notes.TYPE_NOTE;
+ if (mIsCreate || mType != type) {
+ mDiffNoteValues.put(NoteColumns.TYPE, type);
+ }
+ mType = type;
+
+ int widgetId = note.has(NoteColumns.WIDGET_ID) ? note.getInt(NoteColumns.WIDGET_ID)
+ : AppWidgetManager.INVALID_APPWIDGET_ID;
+ if (mIsCreate || mWidgetId != widgetId) {
+ mDiffNoteValues.put(NoteColumns.WIDGET_ID, widgetId);
+ }
+ mWidgetId = widgetId;
+
+ int widgetType = note.has(NoteColumns.WIDGET_TYPE) ? note
+ .getInt(NoteColumns.WIDGET_TYPE) : Notes.TYPE_WIDGET_INVALIDE;
+ if (mIsCreate || mWidgetType != widgetType) {
+ mDiffNoteValues.put(NoteColumns.WIDGET_TYPE, widgetType);
+ }
+ mWidgetType = widgetType;
+
+ long originParent = note.has(NoteColumns.ORIGIN_PARENT_ID) ? note
+ .getLong(NoteColumns.ORIGIN_PARENT_ID) : 0;
+ if (mIsCreate || mOriginParent != originParent) {
+ mDiffNoteValues.put(NoteColumns.ORIGIN_PARENT_ID, originParent);
+ }
+ mOriginParent = originParent;
- // 处理数据项数组,每个数据项会被更新或创建
for (int i = 0; i < dataArray.length(); i++) {
JSONObject data = dataArray.getJSONObject(i);
SqlData sqlData = null;
@@ -302,7 +364,6 @@ public class SqlNote {
}
}
} catch (JSONException e) {
- // 处理JSON解析异常
Log.e(TAG, e.toString());
e.printStackTrace();
return false;
@@ -310,175 +371,134 @@ public class SqlNote {
return true;
}
- /**
- * 获取内容。
- * 将当前笔记的内容转换为JSONObject格式。
- *
- * @return 笔记内容的JSONObject,如果无法转换成功则返回null。
- */
public JSONObject getContent() {
try {
JSONObject js = new JSONObject();
if (mIsCreate) {
- // 如果笔记尚未在数据库中创建,返回null
Log.e(TAG, "it seems that we haven't created this in database yet");
return null;
}
JSONObject note = new JSONObject();
- // 根据笔记类型,填充不同的信息到note JSONObject中
- // 该部分通过条件判断,根据mType选择需要填充的信息
-
- // 将note和data信息添加到js中
- js.put(GTaskStringUtils.META_HEAD_NOTE, note);
- // 处理数据项数组,将其添加到js中
+ if (mType == Notes.TYPE_NOTE) {
+ note.put(NoteColumns.ID, mId);
+ note.put(NoteColumns.ALERTED_DATE, mAlertDate);
+ note.put(NoteColumns.BG_COLOR_ID, mBgColorId);
+ note.put(NoteColumns.CREATED_DATE, mCreatedDate);
+ note.put(NoteColumns.HAS_ATTACHMENT, mHasAttachment);
+ note.put(NoteColumns.MODIFIED_DATE, mModifiedDate);
+ note.put(NoteColumns.PARENT_ID, mParentId);
+ note.put(NoteColumns.SNIPPET, mSnippet);
+ note.put(NoteColumns.TYPE, mType);
+ note.put(NoteColumns.WIDGET_ID, mWidgetId);
+ note.put(NoteColumns.WIDGET_TYPE, mWidgetType);
+ note.put(NoteColumns.ORIGIN_PARENT_ID, mOriginParent);
+ js.put(GTaskStringUtils.META_HEAD_NOTE, note);
+
+ JSONArray dataArray = new JSONArray();
+ for (SqlData sqlData : mDataList) {
+ JSONObject data = sqlData.getContent();
+ if (data != null) {
+ dataArray.put(data);
+ }
+ }
+ js.put(GTaskStringUtils.META_HEAD_DATA, dataArray);
+ } else if (mType == Notes.TYPE_FOLDER || mType == Notes.TYPE_SYSTEM) {
+ note.put(NoteColumns.ID, mId);
+ note.put(NoteColumns.TYPE, mType);
+ note.put(NoteColumns.SNIPPET, mSnippet);
+ js.put(GTaskStringUtils.META_HEAD_NOTE, note);
+ }
return js;
} catch (JSONException e) {
- // 处理JSON构建异常
Log.e(TAG, e.toString());
e.printStackTrace();
}
return null;
}
- /**
- * 设置父id。
- *
- * @param id 父笔记的id。
- */
public void setParentId(long id) {
mParentId = id;
mDiffNoteValues.put(NoteColumns.PARENT_ID, id);
}
- /**
- * 设置Gtask id。
- *
- * @param gid Gtask的id。
- */
public void setGtaskId(String gid) {
mDiffNoteValues.put(NoteColumns.GTASK_ID, gid);
}
- /**
- * 设置同步id。
- *
- * @param syncId 同步的id。
- */
public void setSyncId(long syncId) {
mDiffNoteValues.put(NoteColumns.SYNC_ID, syncId);
}
- /**
- * 重置本地修改标志。
- */
public void resetLocalModified() {
mDiffNoteValues.put(NoteColumns.LOCAL_MODIFIED, 0);
}
- /**
- * 获取笔记id。
- *
- * @return 笔记的id。
- */
public long getId() {
return mId;
}
- /**
- * 获取父id。
- *
- * @return 父笔记的id。
- */
public long getParentId() {
return mParentId;
}
- /**
- * 获取snippet。
- *
- * @return 笔记的snippet。
- */
public String getSnippet() {
return mSnippet;
}
- /**
- * 判断是否为笔记类型。
- *
- * @return 是笔记类型返回true,否则返回false。
- */
public boolean isNoteType() {
return mType == Notes.TYPE_NOTE;
}
- /**
- * 提交对笔记的更改或创建新的笔记。
- *
- * @param validateVersion 是否验证版本号。如果为 true,则在更新笔记时会检查版本号以避免并发更新的问题。
- * 如果为 false,则不进行版本号检查。
- * 这个参数主要用于处理客户端在同步过程中可能同时更新同一笔记的情况。
- */
public void commit(boolean validateVersion) {
- if (mIsCreate) { // 处理创建新笔记的逻辑
- // 在创建新笔记时,如果ID是无效的(即未指定),且包含了ID字段,则移除该字段
+ if (mIsCreate) {
if (mId == INVALID_ID && mDiffNoteValues.containsKey(NoteColumns.ID)) {
mDiffNoteValues.remove(NoteColumns.ID);
}
- // 使用ContentResolver插入新的笔记数据
Uri uri = mContentResolver.insert(Notes.CONTENT_NOTE_URI, mDiffNoteValues);
try {
- // 从插入返回的URI中解析出新笔记的ID
mId = Long.valueOf(uri.getPathSegments().get(1));
} catch (NumberFormatException e) {
Log.e(TAG, "Get note id error :" + e.toString());
- // 如果无法解析出ID,抛出异常
throw new ActionFailureException("create note failed");
}
- // 检查解析出的ID是否有效
if (mId == 0) {
throw new IllegalStateException("Create thread id failed");
}
- // 如果是创建笔记类型,提交关联数据
if (mType == Notes.TYPE_NOTE) {
for (SqlData sqlData : mDataList) {
sqlData.commit(mId, false, -1);
}
}
- } else { // 处理更新现有笔记的逻辑
- // 如果指定的笔记ID无效或不存在,抛出异常
+ } else {
if (mId <= 0 && mId != Notes.ID_ROOT_FOLDER && mId != Notes.ID_CALL_RECORD_FOLDER) {
Log.e(TAG, "No such note");
throw new IllegalStateException("Try to update note with invalid id");
}
- // 如果有差异的数据需要更新,则进行更新
if (mDiffNoteValues.size() > 0) {
- mVersion++; // 更新版本号
+ mVersion ++;
int result = 0;
- // 根据是否验证版本号,执行不同的更新逻辑
if (!validateVersion) {
result = mContentResolver.update(Notes.CONTENT_NOTE_URI, mDiffNoteValues, "("
- + NoteColumns.ID + "=?)", new String[]{
- String.valueOf(mId)
+ + NoteColumns.ID + "=?)", new String[] {
+ String.valueOf(mId)
});
} else {
result = mContentResolver.update(Notes.CONTENT_NOTE_URI, mDiffNoteValues, "("
- + NoteColumns.ID + "=?) AND (" + NoteColumns.VERSION + "<=?)",
- new String[]{
+ + NoteColumns.ID + "=?) AND (" + NoteColumns.VERSION + "<=?)",
+ new String[] {
String.valueOf(mId), String.valueOf(mVersion)
});
}
- // 如果更新结果为0,说明没有进行任何更新,可能是由于同步时用户同时更新了笔记
if (result == 0) {
Log.w(TAG, "there is no update. maybe user updates note when syncing");
}
}
- // 如果是笔记类型,提交关联数据
if (mType == Notes.TYPE_NOTE) {
for (SqlData sqlData : mDataList) {
sqlData.commit(mId, validateVersion, mVersion);
@@ -486,12 +506,11 @@ public class SqlNote {
}
}
- // 刷新本地信息,加载最新数据
+ // refresh local info
loadFromCursor(mId);
if (mType == Notes.TYPE_NOTE)
loadDataContent();
- // 清空差异数据,重置创建状态
mDiffNoteValues.clear();
mIsCreate = false;
}
diff --git a/xiaomi-src/app/src/main/java/net/micode/notes/gtask/data/Task.java b/xiaomi-src/main/java/net/micode/notes/gtask/data/Task.java
similarity index 79%
rename from xiaomi-src/app/src/main/java/net/micode/notes/gtask/data/Task.java
rename to xiaomi-src/main/java/net/micode/notes/gtask/data/Task.java
index 414bed0..6a19454 100644
--- a/xiaomi-src/app/src/main/java/net/micode/notes/gtask/data/Task.java
+++ b/xiaomi-src/main/java/net/micode/notes/gtask/data/Task.java
@@ -32,32 +32,19 @@ import org.json.JSONException;
import org.json.JSONObject;
-/**
- * 任务类,表示一个待办事项。
- * 用于管理和同步任务数据。
- */
public class Task extends Node {
- // 日志标签
private static final String TAG = Task.class.getSimpleName();
- // 任务完成状态
private boolean mCompleted;
- // 任务备注
private String mNotes;
- // 任务元信息,包含额外的JSON格式信息
private JSONObject mMetaInfo;
- // 前一个兄弟任务
private Task mPriorSibling;
- // 任务所属的任务列表
private TaskList mParent;
- /**
- * 构造函数,初始化任务状态。
- */
public Task() {
super();
mCompleted = false;
@@ -67,28 +54,21 @@ public class Task extends Node {
mMetaInfo = null;
}
- /**
- * 生成创建任务的JSON动作对象。
- *
- * @param actionId 动作ID
- * @return 包含创建任务动作的JSON对象
- * @throws ActionFailureException 如果生成JSON对象失败
- */
public JSONObject getCreateAction(int actionId) {
JSONObject js = new JSONObject();
try {
- // 设置动作类型为创建
+ // action_type
js.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE,
GTaskStringUtils.GTASK_JSON_ACTION_TYPE_CREATE);
- // 设置动作ID
+ // action_id
js.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, actionId);
- // 设置任务在父列表中的索引
+ // index
js.put(GTaskStringUtils.GTASK_JSON_INDEX, mParent.getChildTaskIndex(this));
- // 设置任务实体信息
+ // entity_delta
JSONObject entity = new JSONObject();
entity.put(GTaskStringUtils.GTASK_JSON_NAME, getName());
entity.put(GTaskStringUtils.GTASK_JSON_CREATOR_ID, "null");
@@ -99,17 +79,17 @@ public class Task extends Node {
}
js.put(GTaskStringUtils.GTASK_JSON_ENTITY_DELTA, entity);
- // 设置父任务ID
+ // parent_id
js.put(GTaskStringUtils.GTASK_JSON_PARENT_ID, mParent.getGid());
- // 设置目标父类型为任务列表
+ // dest_parent_type
js.put(GTaskStringUtils.GTASK_JSON_DEST_PARENT_TYPE,
GTaskStringUtils.GTASK_JSON_TYPE_GROUP);
- // 设置任务列表ID
+ // list_id
js.put(GTaskStringUtils.GTASK_JSON_LIST_ID, mParent.getGid());
- // 如果存在前一个兄弟任务,设置其ID
+ // prior_sibling_id
if (mPriorSibling != null) {
js.put(GTaskStringUtils.GTASK_JSON_PRIOR_SIBLING_ID, mPriorSibling.getGid());
}
@@ -123,28 +103,21 @@ public class Task extends Node {
return js;
}
- /**
- * 生成更新任务的JSON动作对象。
- *
- * @param actionId 动作ID
- * @return 包含更新任务动作的JSON对象
- * @throws ActionFailureException 如果生成JSON对象失败
- */
public JSONObject getUpdateAction(int actionId) {
JSONObject js = new JSONObject();
try {
- // 设置动作类型为更新
+ // action_type
js.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE,
GTaskStringUtils.GTASK_JSON_ACTION_TYPE_UPDATE);
- // 设置动作ID
+ // action_id
js.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, actionId);
- // 设置任务ID
+ // id
js.put(GTaskStringUtils.GTASK_JSON_ID, getGid());
- // 设置任务实体信息
+ // entity_delta
JSONObject entity = new JSONObject();
entity.put(GTaskStringUtils.GTASK_JSON_NAME, getName());
if (getNotes() != null) {
@@ -162,36 +135,35 @@ public class Task extends Node {
return js;
}
- /**
- * 根据远程JSON对象设置任务内容。
- *
- * @param js 远程获取的JSON对象
- * @throws ActionFailureException 如果从JSON对象中获取内容失败
- */
public void setContentByRemoteJSON(JSONObject js) {
if (js != null) {
try {
- // 从JSON中解析任务信息
+ // id
if (js.has(GTaskStringUtils.GTASK_JSON_ID)) {
setGid(js.getString(GTaskStringUtils.GTASK_JSON_ID));
}
+ // last_modified
if (js.has(GTaskStringUtils.GTASK_JSON_LAST_MODIFIED)) {
setLastModified(js.getLong(GTaskStringUtils.GTASK_JSON_LAST_MODIFIED));
}
+ // name
if (js.has(GTaskStringUtils.GTASK_JSON_NAME)) {
setName(js.getString(GTaskStringUtils.GTASK_JSON_NAME));
}
+ // notes
if (js.has(GTaskStringUtils.GTASK_JSON_NOTES)) {
setNotes(js.getString(GTaskStringUtils.GTASK_JSON_NOTES));
}
+ // deleted
if (js.has(GTaskStringUtils.GTASK_JSON_DELETED)) {
setDeleted(js.getBoolean(GTaskStringUtils.GTASK_JSON_DELETED));
}
+ // completed
if (js.has(GTaskStringUtils.GTASK_JSON_COMPLETED)) {
setCompleted(js.getBoolean(GTaskStringUtils.GTASK_JSON_COMPLETED));
}
@@ -203,17 +175,10 @@ public class Task extends Node {
}
}
- /**
- * 根据本地JSON对象设置任务内容。
- *
- * @param js 本地获取的JSON对象
- * @throws ActionFailureException 如果从JSON对象中获取内容失败
- */
public void setContentByLocalJSON(JSONObject js) {
if (js == null || !js.has(GTaskStringUtils.META_HEAD_NOTE)
|| !js.has(GTaskStringUtils.META_HEAD_DATA)) {
- Log.w(TAG, "setContentByLocalJSON: nothing is available");
- return;
+ Log.w(TAG, "setContentByLocalJSON: nothing is avaiable");
}
try {
@@ -239,16 +204,11 @@ public class Task extends Node {
}
}
- /**
- * 根据任务内容生成本地JSON对象。
- *
- * @return 本地JSON对象,用于数据同步
- */
public JSONObject getLocalJSONFromContent() {
String name = getName();
try {
if (mMetaInfo == null) {
- // 新创建的任务
+ // new task created from web
if (name == null) {
Log.w(TAG, "the note seems to be an empty one");
return null;
@@ -265,7 +225,7 @@ public class Task extends Node {
js.put(GTaskStringUtils.META_HEAD_NOTE, note);
return js;
} else {
- // 已同步的任务
+ // synced task
JSONObject note = mMetaInfo.getJSONObject(GTaskStringUtils.META_HEAD_NOTE);
JSONArray dataArray = mMetaInfo.getJSONArray(GTaskStringUtils.META_HEAD_DATA);
@@ -287,11 +247,6 @@ public class Task extends Node {
}
}
- /**
- * 设置任务的元信息。
- *
- * @param metaData 元数据对象,包含任务的额外信息
- */
public void setMetaInfo(MetaData metaData) {
if (metaData != null && metaData.getNotes() != null) {
try {
@@ -303,12 +258,6 @@ public class Task extends Node {
}
}
- /**
- * 根据数据库游标获取同步动作类型。
- *
- * @param c 数据库游标,指向当前任务的数据行
- * @return 同步动作类型,定义了任务数据的同步方向
- */
public int getSyncAction(Cursor c) {
try {
JSONObject noteInfo = null;
@@ -326,29 +275,29 @@ public class Task extends Node {
return SYNC_ACTION_UPDATE_LOCAL;
}
- // 验证本地和远程任务ID是否匹配
+ // validate the note id now
if (c.getLong(SqlNote.ID_COLUMN) != noteInfo.getLong(NoteColumns.ID)) {
Log.w(TAG, "note id doesn't match");
return SYNC_ACTION_UPDATE_LOCAL;
}
if (c.getInt(SqlNote.LOCAL_MODIFIED_COLUMN) == 0) {
- // 本地未修改
+ // there is no local update
if (c.getLong(SqlNote.SYNC_ID_COLUMN) == getLastModified()) {
- // 本地和远程都未修改
+ // no update both side
return SYNC_ACTION_NONE;
} else {
- // 应用远程修改到本地
+ // apply remote to local
return SYNC_ACTION_UPDATE_LOCAL;
}
} else {
- // 本地已修改
+ // validate gtask id
if (!c.getString(SqlNote.GTASK_ID_COLUMN).equals(getGid())) {
Log.e(TAG, "gtask id doesn't match");
return SYNC_ACTION_ERROR;
}
if (c.getLong(SqlNote.SYNC_ID_COLUMN) == getLastModified()) {
- // 仅本地修改
+ // local modification only
return SYNC_ACTION_UPDATE_REMOTE;
} else {
return SYNC_ACTION_UPDATE_CONFLICT;
@@ -362,18 +311,11 @@ public class Task extends Node {
return SYNC_ACTION_ERROR;
}
- /**
- * 判断任务是否值得保存。
- *
- * @return 如果任务有名称或备注,或者有元信息则返回true,否则返回false。
- */
public boolean isWorthSaving() {
return mMetaInfo != null || (getName() != null && getName().trim().length() > 0)
|| (getNotes() != null && getNotes().trim().length() > 0);
}
- // 以下为任务状态的设置和获取方法
-
public void setCompleted(boolean completed) {
this.mCompleted = completed;
}
diff --git a/xiaomi-src/app/src/main/java/net/micode/notes/gtask/data/TaskList.java b/xiaomi-src/main/java/net/micode/notes/gtask/data/TaskList.java
similarity index 65%
rename from xiaomi-src/app/src/main/java/net/micode/notes/gtask/data/TaskList.java
rename to xiaomi-src/main/java/net/micode/notes/gtask/data/TaskList.java
index b0dfa13..4ea21c5 100644
--- a/xiaomi-src/app/src/main/java/net/micode/notes/gtask/data/TaskList.java
+++ b/xiaomi-src/main/java/net/micode/notes/gtask/data/TaskList.java
@@ -30,50 +30,34 @@ import org.json.JSONObject;
import java.util.ArrayList;
-/**
- * 任务列表类,继承自Node类。用于管理一组任务(Task)对象。
- */
public class TaskList extends Node {
- // 日志标签
private static final String TAG = TaskList.class.getSimpleName();
- // 列表中任务的索引
private int mIndex;
- // 存储子任务的列表
private ArrayList mChildren;
- /**
- * 构造函数,初始化任务列表。
- */
public TaskList() {
super();
mChildren = new ArrayList();
mIndex = 1;
}
- /**
- * 生成创建任务列表的动作JSON对象。
- *
- * @param actionId 动作标识符
- * @return 包含创建任务列表动作的JSON对象
- * @throws ActionFailureException 如果生成JSON对象失败,则抛出异常
- */
- public JSONObject getCreateAction(int actionId) throws ActionFailureException {
+ public JSONObject getCreateAction(int actionId) {
JSONObject js = new JSONObject();
try {
- // 设置动作类型为创建
+ // action_type
js.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE,
GTaskStringUtils.GTASK_JSON_ACTION_TYPE_CREATE);
- // 设置动作标识符
+ // action_id
js.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, actionId);
- // 设置索引
+ // index
js.put(GTaskStringUtils.GTASK_JSON_INDEX, mIndex);
- // 设置实体变化信息
+ // entity_delta
JSONObject entity = new JSONObject();
entity.put(GTaskStringUtils.GTASK_JSON_NAME, getName());
entity.put(GTaskStringUtils.GTASK_JSON_CREATOR_ID, "null");
@@ -90,28 +74,21 @@ public class TaskList extends Node {
return js;
}
- /**
- * 生成更新任务列表的动作JSON对象。
- *
- * @param actionId 动作标识符
- * @return 包含更新任务列表动作的JSON对象
- * @throws ActionFailureException 如果生成JSON对象失败,则抛出异常
- */
- public JSONObject getUpdateAction(int actionId) throws ActionFailureException {
+ public JSONObject getUpdateAction(int actionId) {
JSONObject js = new JSONObject();
try {
- // 设置动作类型为更新
+ // action_type
js.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE,
GTaskStringUtils.GTASK_JSON_ACTION_TYPE_UPDATE);
- // 设置动作标识符
+ // action_id
js.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, actionId);
- // 设置任务列表ID
+ // id
js.put(GTaskStringUtils.GTASK_JSON_ID, getGid());
- // 设置实体变化信息
+ // entity_delta
JSONObject entity = new JSONObject();
entity.put(GTaskStringUtils.GTASK_JSON_NAME, getName());
entity.put(GTaskStringUtils.GTASK_JSON_DELETED, getDeleted());
@@ -126,26 +103,20 @@ public class TaskList extends Node {
return js;
}
- /**
- * 根据远程JSON对象设置任务列表的内容。
- *
- * @param js 远程获取的JSON对象
- * @throws ActionFailureException 如果从JSON对象中获取内容失败,则抛出异常
- */
- public void setContentByRemoteJSON(JSONObject js) throws ActionFailureException {
+ public void setContentByRemoteJSON(JSONObject js) {
if (js != null) {
try {
- // 设置ID
+ // id
if (js.has(GTaskStringUtils.GTASK_JSON_ID)) {
setGid(js.getString(GTaskStringUtils.GTASK_JSON_ID));
}
- // 设置最后修改时间
+ // last_modified
if (js.has(GTaskStringUtils.GTASK_JSON_LAST_MODIFIED)) {
setLastModified(js.getLong(GTaskStringUtils.GTASK_JSON_LAST_MODIFIED));
}
- // 设置名称
+ // name
if (js.has(GTaskStringUtils.GTASK_JSON_NAME)) {
setName(js.getString(GTaskStringUtils.GTASK_JSON_NAME));
}
@@ -158,22 +129,14 @@ public class TaskList extends Node {
}
}
- /**
- * 根据本地JSON对象设置任务列表的内容。
- *
- * @param js 本地获取的JSON对象
- * @throws ActionFailureException 如果从JSON对象中获取内容失败,则抛出异常
- */
- public void setContentByLocalJSON(JSONObject js) throws ActionFailureException {
+ public void setContentByLocalJSON(JSONObject js) {
if (js == null || !js.has(GTaskStringUtils.META_HEAD_NOTE)) {
Log.w(TAG, "setContentByLocalJSON: nothing is avaiable");
- return;
}
try {
JSONObject folder = js.getJSONObject(GTaskStringUtils.META_HEAD_NOTE);
- // 根据类型设置任务列表名称
if (folder.getInt(NoteColumns.TYPE) == Notes.TYPE_FOLDER) {
String name = folder.getString(NoteColumns.SNIPPET);
setName(GTaskStringUtils.MIUI_FOLDER_PREFFIX + name);
@@ -191,27 +154,19 @@ public class TaskList extends Node {
} catch (JSONException e) {
Log.e(TAG, e.toString());
e.printStackTrace();
- throw new ActionFailureException("fail to set tasklist content from local json object");
}
}
- /**
- * 从任务列表内容生成本地JSON对象。
- *
- * @return 本地JSON对象代表的任务列表内容
- */
public JSONObject getLocalJSONFromContent() {
try {
JSONObject js = new JSONObject();
JSONObject folder = new JSONObject();
- // 设置任务列表名称
String folderName = getName();
if (getName().startsWith(GTaskStringUtils.MIUI_FOLDER_PREFFIX))
folderName = folderName.substring(GTaskStringUtils.MIUI_FOLDER_PREFFIX.length(),
folderName.length());
folder.put(NoteColumns.SNIPPET, folderName);
- // 根据名称判断类型
if (folderName.equals(GTaskStringUtils.FOLDER_DEFAULT)
|| folderName.equals(GTaskStringUtils.FOLDER_CALL_NOTE))
folder.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM);
@@ -228,34 +183,28 @@ public class TaskList extends Node {
}
}
- /**
- * 根据本地数据库游标确定同步动作。
- *
- * @param c 数据库游标,指向当前任务列表的行
- * @return 同步动作的类型
- */
public int getSyncAction(Cursor c) {
try {
if (c.getInt(SqlNote.LOCAL_MODIFIED_COLUMN) == 0) {
- // 无本地更新
+ // there is no local update
if (c.getLong(SqlNote.SYNC_ID_COLUMN) == getLastModified()) {
- // 双方均无更新
+ // no update both side
return SYNC_ACTION_NONE;
} else {
- // 应用远程更新到本地
+ // apply remote to local
return SYNC_ACTION_UPDATE_LOCAL;
}
} else {
- // 验证GTask ID是否匹配
+ // validate gtask id
if (!c.getString(SqlNote.GTASK_ID_COLUMN).equals(getGid())) {
Log.e(TAG, "gtask id doesn't match");
return SYNC_ACTION_ERROR;
}
if (c.getLong(SqlNote.SYNC_ID_COLUMN) == getLastModified()) {
- // 仅本地有修改
+ // local modification only
return SYNC_ACTION_UPDATE_REMOTE;
} else {
- // 对于文件夹冲突,仅应用本地修改
+ // for folder conflicts, just apply local modification
return SYNC_ACTION_UPDATE_REMOTE;
}
}
@@ -267,27 +216,16 @@ public class TaskList extends Node {
return SYNC_ACTION_ERROR;
}
- /**
- * 获取子任务数量。
- *
- * @return 子任务数量
- */
public int getChildTaskCount() {
return mChildren.size();
}
- /**
- * 添加一个子任务到列表中。
- *
- * @param task 要添加的子任务
- * @return 如果添加成功返回true,否则返回false
- */
public boolean addChildTask(Task task) {
boolean ret = false;
if (task != null && !mChildren.contains(task)) {
ret = mChildren.add(task);
if (ret) {
- // 设置前置兄弟节点和父节点
+ // need to set prior sibling and parent
task.setPriorSibling(mChildren.isEmpty() ? null : mChildren
.get(mChildren.size() - 1));
task.setParent(this);
@@ -296,13 +234,6 @@ public class TaskList extends Node {
return ret;
}
- /**
- * 在指定索引位置添加一个子任务。
- *
- * @param task 要添加的子任务
- * @param index 子任务要插入的索引位置
- * @return 如果添加成功返回true,否则返回false
- */
public boolean addChildTask(Task task, int index) {
if (index < 0 || index > mChildren.size()) {
Log.e(TAG, "add child task: invalid index");
@@ -313,7 +244,7 @@ public class TaskList extends Node {
if (task != null && pos == -1) {
mChildren.add(index, task);
- // 更新任务列表
+ // update the task list
Task preTask = null;
Task afterTask = null;
if (index != 0)
@@ -329,12 +260,6 @@ public class TaskList extends Node {
return true;
}
- /**
- * 从列表中移除一个子任务。
- *
- * @param task 要移除的子任务
- * @return 如果移除成功返回true,否则返回false
- */
public boolean removeChildTask(Task task) {
boolean ret = false;
int index = mChildren.indexOf(task);
@@ -342,11 +267,11 @@ public class TaskList extends Node {
ret = mChildren.remove(task);
if (ret) {
- // 重置前置兄弟节点和父节点
+ // reset prior sibling and parent
task.setPriorSibling(null);
task.setParent(null);
- // 更新任务列表
+ // update the task list
if (index != mChildren.size()) {
mChildren.get(index).setPriorSibling(
index == 0 ? null : mChildren.get(index - 1));
@@ -356,14 +281,8 @@ public class TaskList extends Node {
return ret;
}
- /**
- * 移动子任务到指定索引位置。
- *
- * @param task 要移动的子任务
- * @param index 子任务要移动到的索引位置
- * @return 如果移动成功返回true,否则返回false
- */
public boolean moveChildTask(Task task, int index) {
+
if (index < 0 || index >= mChildren.size()) {
Log.e(TAG, "move child task: invalid index");
return false;
@@ -380,14 +299,7 @@ public class TaskList extends Node {
return (removeChildTask(task) && addChildTask(task, index));
}
- /**
- * 根据全局标识符(gid)查找子任务。
- *
- * @param gid 要查找的子任务的全局标识符
- * @return 如果找到匹配的子任务,则返回该任务对象;否则返回null。
- */
public Task findChildTaskByGid(String gid) {
- // 遍历子任务列表,查找gid匹配的子任务
for (int i = 0; i < mChildren.size(); i++) {
Task t = mChildren.get(i);
if (t.getGid().equals(gid)) {
@@ -397,25 +309,11 @@ public class TaskList extends Node {
return null;
}
- /**
- * 获取指定子任务在列表中的索引位置。
- *
- * @param task 要查找索引的子任务对象
- * @return 子任务在列表中的索引位置;如果未找到该任务,则返回-1。
- */
public int getChildTaskIndex(Task task) {
- // 返回任务在子任务列表中的索引
return mChildren.indexOf(task);
}
- /**
- * 根据索引获取子任务。
- *
- * @param index 子任务的索引位置
- * @return 如果索引有效,则返回对应位置的子任务对象;否则返回null。
- */
public Task getChildTaskByIndex(int index) {
- // 检查索引是否有效,然后返回对应位置的子任务
if (index < 0 || index >= mChildren.size()) {
Log.e(TAG, "getTaskByIndex: invalid index");
return null;
@@ -423,14 +321,7 @@ public class TaskList extends Node {
return mChildren.get(index);
}
- /**
- * 通过遍历子任务列表,查找并返回匹配指定gid的子任务。
- *
- * @param gid 要查找的子任务的全局标识符
- * @return 如果找到匹配的子任务,则返回该任务对象;否则返回null。
- */
public Task getChilTaskByGid(String gid) {
- // 遍历子任务列表,查找gid匹配的子任务
for (Task task : mChildren) {
if (task.getGid().equals(gid))
return task;
@@ -438,32 +329,15 @@ public class TaskList extends Node {
return null;
}
- /**
- * 获取所有子任务的列表。
- *
- * @return 子任务列表,作为一个ArrayList返回。
- */
public ArrayList getChildTaskList() {
- // 返回存储子任务的列表
return this.mChildren;
}
- /**
- * 设置当前任务的索引。
- *
- * @param index 要设置的索引值。
- */
public void setIndex(int index) {
this.mIndex = index;
}
- /**
- * 获取当前任务的索引。
- *
- * @return 当前任务的索引值。
- */
public int getIndex() {
return this.mIndex;
}
}
-
diff --git a/xiaomi-src/main/java/net/micode/notes/gtask/exception/ActionFailureException.java b/xiaomi-src/main/java/net/micode/notes/gtask/exception/ActionFailureException.java
new file mode 100644
index 0000000..15504be
--- /dev/null
+++ b/xiaomi-src/main/java/net/micode/notes/gtask/exception/ActionFailureException.java
@@ -0,0 +1,33 @@
+/*
+ * 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.gtask.exception;
+
+public class ActionFailureException extends RuntimeException {
+ private static final long serialVersionUID = 4425249765923293627L;
+
+ public ActionFailureException() {
+ super();
+ }
+
+ public ActionFailureException(String paramString) {
+ super(paramString);
+ }
+
+ public ActionFailureException(String paramString, Throwable paramThrowable) {
+ super(paramString, paramThrowable);
+ }
+}
diff --git a/xiaomi-src/main/java/net/micode/notes/gtask/exception/NetworkFailureException.java b/xiaomi-src/main/java/net/micode/notes/gtask/exception/NetworkFailureException.java
new file mode 100644
index 0000000..b08cfb1
--- /dev/null
+++ b/xiaomi-src/main/java/net/micode/notes/gtask/exception/NetworkFailureException.java
@@ -0,0 +1,33 @@
+/*
+ * 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.gtask.exception;
+
+public class NetworkFailureException extends Exception {
+ private static final long serialVersionUID = 2107610287180234136L;
+
+ public NetworkFailureException() {
+ super();
+ }
+
+ public NetworkFailureException(String paramString) {
+ super(paramString);
+ }
+
+ public NetworkFailureException(String paramString, Throwable paramThrowable) {
+ super(paramString, paramThrowable);
+ }
+}
diff --git a/xiaomi-src/main/java/net/micode/notes/gtask/remote/GTaskASyncTask.java b/xiaomi-src/main/java/net/micode/notes/gtask/remote/GTaskASyncTask.java
new file mode 100644
index 0000000..3f3c358
--- /dev/null
+++ b/xiaomi-src/main/java/net/micode/notes/gtask/remote/GTaskASyncTask.java
@@ -0,0 +1,122 @@
+
+/*
+ * 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.gtask.remote;
+
+import android.app.Notification;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.os.AsyncTask;
+
+import net.micode.notes.R;
+import net.micode.notes.ui.NotesListActivity;
+import net.micode.notes.ui.NotesPreferenceActivity;
+
+
+public class GTaskASyncTask extends AsyncTask {
+
+ private static int GTASK_SYNC_NOTIFICATION_ID = 5234235;
+
+ public interface OnCompleteListener {
+ void onComplete();
+ }
+
+ private Context mContext;
+
+ private NotificationManager mNotifiManager;
+
+ private GTaskManager mTaskManager;
+
+ private OnCompleteListener mOnCompleteListener;
+
+ public GTaskASyncTask(Context context, OnCompleteListener listener) {
+ mContext = context;
+ mOnCompleteListener = listener;
+ mNotifiManager = (NotificationManager) mContext
+ .getSystemService(Context.NOTIFICATION_SERVICE);
+ mTaskManager = GTaskManager.getInstance();
+ }
+
+ public void cancelSync() {
+ mTaskManager.cancelSync();
+ }
+
+ public void publishProgess(String message) {
+ publishProgress(new String[] {
+ message
+ });
+ }
+
+ private void showNotification(int tickerId, String content) {
+ Notification notification = new Notification(R.drawable.notification, mContext
+ .getString(tickerId), System.currentTimeMillis());
+ notification.defaults = Notification.DEFAULT_LIGHTS;
+ notification.flags = Notification.FLAG_AUTO_CANCEL;
+ PendingIntent pendingIntent;
+ if (tickerId != R.string.ticker_success) {
+ pendingIntent = PendingIntent.getActivity(mContext, 0, new Intent(mContext,
+ NotesPreferenceActivity.class), 0);
+
+ } else {
+ pendingIntent = PendingIntent.getActivity(mContext, 0, new Intent(mContext,
+ NotesListActivity.class), 0);
+ }
+
+ mNotifiManager.notify(GTASK_SYNC_NOTIFICATION_ID, notification);
+ }
+
+ @Override
+ protected Integer doInBackground(Void... unused) {
+ publishProgess(mContext.getString(R.string.sync_progress_login, NotesPreferenceActivity
+ .getSyncAccountName(mContext)));
+ return mTaskManager.sync(mContext, this);
+ }
+
+ @Override
+ protected void onProgressUpdate(String... progress) {
+ showNotification(R.string.ticker_syncing, progress[0]);
+ if (mContext instanceof GTaskSyncService) {
+ ((GTaskSyncService) mContext).sendBroadcast(progress[0]);
+ }
+ }
+
+ @Override
+ protected void onPostExecute(Integer result) {
+ if (result == GTaskManager.STATE_SUCCESS) {
+ showNotification(R.string.ticker_success, mContext.getString(
+ R.string.success_sync_account, mTaskManager.getSyncAccount()));
+ NotesPreferenceActivity.setLastSyncTime(mContext, System.currentTimeMillis());
+ } else if (result == GTaskManager.STATE_NETWORK_ERROR) {
+ showNotification(R.string.ticker_fail, mContext.getString(R.string.error_sync_network));
+ } else if (result == GTaskManager.STATE_INTERNAL_ERROR) {
+ showNotification(R.string.ticker_fail, mContext.getString(R.string.error_sync_internal));
+ } else if (result == GTaskManager.STATE_SYNC_CANCELLED) {
+ showNotification(R.string.ticker_cancel, mContext
+ .getString(R.string.error_sync_cancelled));
+ }
+ if (mOnCompleteListener != null) {
+ new Thread(new Runnable() {
+
+ public void run() {
+ mOnCompleteListener.onComplete();
+ }
+ }).start();
+ }
+ }
+}
diff --git a/xiaomi-src/main/java/net/micode/notes/gtask/remote/GTaskClient.java b/xiaomi-src/main/java/net/micode/notes/gtask/remote/GTaskClient.java
new file mode 100644
index 0000000..c67dfdf
--- /dev/null
+++ b/xiaomi-src/main/java/net/micode/notes/gtask/remote/GTaskClient.java
@@ -0,0 +1,585 @@
+/*
+ * 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.gtask.remote;
+
+import android.accounts.Account;
+import android.accounts.AccountManager;
+import android.accounts.AccountManagerFuture;
+import android.app.Activity;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.util.Log;
+
+import net.micode.notes.gtask.data.Node;
+import net.micode.notes.gtask.data.Task;
+import net.micode.notes.gtask.data.TaskList;
+import net.micode.notes.gtask.exception.ActionFailureException;
+import net.micode.notes.gtask.exception.NetworkFailureException;
+import net.micode.notes.tool.GTaskStringUtils;
+import net.micode.notes.ui.NotesPreferenceActivity;
+
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.ClientProtocolException;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.cookie.Cookie;
+import org.apache.http.impl.client.BasicCookieStore;
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.message.BasicNameValuePair;
+import org.apache.http.params.BasicHttpParams;
+import org.apache.http.params.HttpConnectionParams;
+import org.apache.http.params.HttpParams;
+import org.apache.http.params.HttpProtocolParams;
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.zip.GZIPInputStream;
+import java.util.zip.Inflater;
+import java.util.zip.InflaterInputStream;
+
+
+public class GTaskClient {
+ private static final String TAG = GTaskClient.class.getSimpleName();
+
+ private static final String GTASK_URL = "https://mail.google.com/tasks/";
+
+ private static final String GTASK_GET_URL = "https://mail.google.com/tasks/ig";
+
+ private static final String GTASK_POST_URL = "https://mail.google.com/tasks/r/ig";
+
+ private static GTaskClient mInstance = null;
+
+ private DefaultHttpClient mHttpClient;
+
+ private String mGetUrl;
+
+ private String mPostUrl;
+
+ private long mClientVersion;
+
+ private boolean mLoggedin;
+
+ private long mLastLoginTime;
+
+ private int mActionId;
+
+ private Account mAccount;
+
+ private JSONArray mUpdateArray;
+
+ private GTaskClient() {
+ mHttpClient = null;
+ mGetUrl = GTASK_GET_URL;
+ mPostUrl = GTASK_POST_URL;
+ mClientVersion = -1;
+ mLoggedin = false;
+ mLastLoginTime = 0;
+ mActionId = 1;
+ mAccount = null;
+ mUpdateArray = null;
+ }
+
+ public static synchronized GTaskClient getInstance() {
+ if (mInstance == null) {
+ mInstance = new GTaskClient();
+ }
+ return mInstance;
+ }
+
+ public boolean login(Activity activity) {
+ // we suppose that the cookie would expire after 5 minutes
+ // then we need to re-login
+ final long interval = 1000 * 60 * 5;
+ if (mLastLoginTime + interval < System.currentTimeMillis()) {
+ mLoggedin = false;
+ }
+
+ // need to re-login after account switch
+ if (mLoggedin
+ && !TextUtils.equals(getSyncAccount().name, NotesPreferenceActivity
+ .getSyncAccountName(activity))) {
+ mLoggedin = false;
+ }
+
+ if (mLoggedin) {
+ Log.d(TAG, "already logged in");
+ return true;
+ }
+
+ mLastLoginTime = System.currentTimeMillis();
+ String authToken = loginGoogleAccount(activity, false);
+ if (authToken == null) {
+ Log.e(TAG, "login google account failed");
+ return false;
+ }
+
+ // login with custom domain if necessary
+ if (!(mAccount.name.toLowerCase().endsWith("gmail.com") || mAccount.name.toLowerCase()
+ .endsWith("googlemail.com"))) {
+ StringBuilder url = new StringBuilder(GTASK_URL).append("a/");
+ int index = mAccount.name.indexOf('@') + 1;
+ String suffix = mAccount.name.substring(index);
+ url.append(suffix + "/");
+ mGetUrl = url.toString() + "ig";
+ mPostUrl = url.toString() + "r/ig";
+
+ if (tryToLoginGtask(activity, authToken)) {
+ mLoggedin = true;
+ }
+ }
+
+ // try to login with google official url
+ if (!mLoggedin) {
+ mGetUrl = GTASK_GET_URL;
+ mPostUrl = GTASK_POST_URL;
+ if (!tryToLoginGtask(activity, authToken)) {
+ return false;
+ }
+ }
+
+ mLoggedin = true;
+ return true;
+ }
+
+ private String loginGoogleAccount(Activity activity, boolean invalidateToken) {
+ String authToken;
+ AccountManager accountManager = AccountManager.get(activity);
+ Account[] accounts = accountManager.getAccountsByType("com.google");
+
+ if (accounts.length == 0) {
+ Log.e(TAG, "there is no available google account");
+ return null;
+ }
+
+ String accountName = NotesPreferenceActivity.getSyncAccountName(activity);
+ Account account = null;
+ for (Account a : accounts) {
+ if (a.name.equals(accountName)) {
+ account = a;
+ break;
+ }
+ }
+ if (account != null) {
+ mAccount = account;
+ } else {
+ Log.e(TAG, "unable to get an account with the same name in the settings");
+ return null;
+ }
+
+ // get the token now
+ AccountManagerFuture accountManagerFuture = accountManager.getAuthToken(account,
+ "goanna_mobile", null, activity, null, null);
+ try {
+ Bundle authTokenBundle = accountManagerFuture.getResult();
+ authToken = authTokenBundle.getString(AccountManager.KEY_AUTHTOKEN);
+ if (invalidateToken) {
+ accountManager.invalidateAuthToken("com.google", authToken);
+ loginGoogleAccount(activity, false);
+ }
+ } catch (Exception e) {
+ Log.e(TAG, "get auth token failed");
+ authToken = null;
+ }
+
+ return authToken;
+ }
+
+ private boolean tryToLoginGtask(Activity activity, String authToken) {
+ if (!loginGtask(authToken)) {
+ // maybe the auth token is out of date, now let's invalidate the
+ // token and try again
+ authToken = loginGoogleAccount(activity, true);
+ if (authToken == null) {
+ Log.e(TAG, "login google account failed");
+ return false;
+ }
+
+ if (!loginGtask(authToken)) {
+ Log.e(TAG, "login gtask failed");
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private boolean loginGtask(String authToken) {
+ int timeoutConnection = 10000;
+ int timeoutSocket = 15000;
+ HttpParams httpParameters = new BasicHttpParams();
+ HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
+ HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
+ mHttpClient = new DefaultHttpClient(httpParameters);
+ BasicCookieStore localBasicCookieStore = new BasicCookieStore();
+ mHttpClient.setCookieStore(localBasicCookieStore);
+ HttpProtocolParams.setUseExpectContinue(mHttpClient.getParams(), false);
+
+ // login gtask
+ try {
+ String loginUrl = mGetUrl + "?auth=" + authToken;
+ HttpGet httpGet = new HttpGet(loginUrl);
+ HttpResponse response = null;
+ response = mHttpClient.execute(httpGet);
+
+ // get the cookie now
+ List cookies = mHttpClient.getCookieStore().getCookies();
+ boolean hasAuthCookie = false;
+ for (Cookie cookie : cookies) {
+ if (cookie.getName().contains("GTL")) {
+ hasAuthCookie = true;
+ }
+ }
+ if (!hasAuthCookie) {
+ Log.w(TAG, "it seems that there is no auth cookie");
+ }
+
+ // get the client version
+ String resString = getResponseContent(response.getEntity());
+ String jsBegin = "_setup(";
+ String jsEnd = ")}";
+ int begin = resString.indexOf(jsBegin);
+ int end = resString.lastIndexOf(jsEnd);
+ String jsString = null;
+ if (begin != -1 && end != -1 && begin < end) {
+ jsString = resString.substring(begin + jsBegin.length(), end);
+ }
+ JSONObject js = new JSONObject(jsString);
+ mClientVersion = js.getLong("v");
+ } catch (JSONException e) {
+ Log.e(TAG, e.toString());
+ e.printStackTrace();
+ return false;
+ } catch (Exception e) {
+ // simply catch all exceptions
+ Log.e(TAG, "httpget gtask_url failed");
+ return false;
+ }
+
+ return true;
+ }
+
+ private int getActionId() {
+ return mActionId++;
+ }
+
+ private HttpPost createHttpPost() {
+ HttpPost httpPost = new HttpPost(mPostUrl);
+ httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
+ httpPost.setHeader("AT", "1");
+ return httpPost;
+ }
+
+ private String getResponseContent(HttpEntity entity) throws IOException {
+ String contentEncoding = null;
+ if (entity.getContentEncoding() != null) {
+ contentEncoding = entity.getContentEncoding().getValue();
+ Log.d(TAG, "encoding: " + contentEncoding);
+ }
+
+ InputStream input = entity.getContent();
+ if (contentEncoding != null && contentEncoding.equalsIgnoreCase("gzip")) {
+ input = new GZIPInputStream(entity.getContent());
+ } else if (contentEncoding != null && contentEncoding.equalsIgnoreCase("deflate")) {
+ Inflater inflater = new Inflater(true);
+ input = new InflaterInputStream(entity.getContent(), inflater);
+ }
+
+ try {
+ InputStreamReader isr = new InputStreamReader(input);
+ BufferedReader br = new BufferedReader(isr);
+ StringBuilder sb = new StringBuilder();
+
+ while (true) {
+ String buff = br.readLine();
+ if (buff == null) {
+ return sb.toString();
+ }
+ sb = sb.append(buff);
+ }
+ } finally {
+ input.close();
+ }
+ }
+
+ private JSONObject postRequest(JSONObject js) throws NetworkFailureException {
+ if (!mLoggedin) {
+ Log.e(TAG, "please login first");
+ throw new ActionFailureException("not logged in");
+ }
+
+ HttpPost httpPost = createHttpPost();
+ try {
+ LinkedList list = new LinkedList();
+ list.add(new BasicNameValuePair("r", js.toString()));
+ UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list, "UTF-8");
+ httpPost.setEntity(entity);
+
+ // execute the post
+ HttpResponse response = mHttpClient.execute(httpPost);
+ String jsString = getResponseContent(response.getEntity());
+ return new JSONObject(jsString);
+
+ } catch (ClientProtocolException e) {
+ Log.e(TAG, e.toString());
+ e.printStackTrace();
+ throw new NetworkFailureException("postRequest failed");
+ } catch (IOException e) {
+ Log.e(TAG, e.toString());
+ e.printStackTrace();
+ throw new NetworkFailureException("postRequest failed");
+ } catch (JSONException e) {
+ Log.e(TAG, e.toString());
+ e.printStackTrace();
+ throw new ActionFailureException("unable to convert response content to jsonobject");
+ } catch (Exception e) {
+ Log.e(TAG, e.toString());
+ e.printStackTrace();
+ throw new ActionFailureException("error occurs when posting request");
+ }
+ }
+
+ public void createTask(Task task) throws NetworkFailureException {
+ commitUpdate();
+ try {
+ JSONObject jsPost = new JSONObject();
+ JSONArray actionList = new JSONArray();
+
+ // action_list
+ actionList.put(task.getCreateAction(getActionId()));
+ jsPost.put(GTaskStringUtils.GTASK_JSON_ACTION_LIST, actionList);
+
+ // client_version
+ jsPost.put(GTaskStringUtils.GTASK_JSON_CLIENT_VERSION, mClientVersion);
+
+ // post
+ JSONObject jsResponse = postRequest(jsPost);
+ JSONObject jsResult = (JSONObject) jsResponse.getJSONArray(
+ GTaskStringUtils.GTASK_JSON_RESULTS).get(0);
+ task.setGid(jsResult.getString(GTaskStringUtils.GTASK_JSON_NEW_ID));
+
+ } catch (JSONException e) {
+ Log.e(TAG, e.toString());
+ e.printStackTrace();
+ throw new ActionFailureException("create task: handing jsonobject failed");
+ }
+ }
+
+ public void createTaskList(TaskList tasklist) throws NetworkFailureException {
+ commitUpdate();
+ try {
+ JSONObject jsPost = new JSONObject();
+ JSONArray actionList = new JSONArray();
+
+ // action_list
+ actionList.put(tasklist.getCreateAction(getActionId()));
+ jsPost.put(GTaskStringUtils.GTASK_JSON_ACTION_LIST, actionList);
+
+ // client version
+ jsPost.put(GTaskStringUtils.GTASK_JSON_CLIENT_VERSION, mClientVersion);
+
+ // post
+ JSONObject jsResponse = postRequest(jsPost);
+ JSONObject jsResult = (JSONObject) jsResponse.getJSONArray(
+ GTaskStringUtils.GTASK_JSON_RESULTS).get(0);
+ tasklist.setGid(jsResult.getString(GTaskStringUtils.GTASK_JSON_NEW_ID));
+
+ } catch (JSONException e) {
+ Log.e(TAG, e.toString());
+ e.printStackTrace();
+ throw new ActionFailureException("create tasklist: handing jsonobject failed");
+ }
+ }
+
+ public void commitUpdate() throws NetworkFailureException {
+ if (mUpdateArray != null) {
+ try {
+ JSONObject jsPost = new JSONObject();
+
+ // action_list
+ jsPost.put(GTaskStringUtils.GTASK_JSON_ACTION_LIST, mUpdateArray);
+
+ // client_version
+ jsPost.put(GTaskStringUtils.GTASK_JSON_CLIENT_VERSION, mClientVersion);
+
+ postRequest(jsPost);
+ mUpdateArray = null;
+ } catch (JSONException e) {
+ Log.e(TAG, e.toString());
+ e.printStackTrace();
+ throw new ActionFailureException("commit update: handing jsonobject failed");
+ }
+ }
+ }
+
+ public void addUpdateNode(Node node) throws NetworkFailureException {
+ if (node != null) {
+ // too many update items may result in an error
+ // set max to 10 items
+ if (mUpdateArray != null && mUpdateArray.length() > 10) {
+ commitUpdate();
+ }
+
+ if (mUpdateArray == null)
+ mUpdateArray = new JSONArray();
+ mUpdateArray.put(node.getUpdateAction(getActionId()));
+ }
+ }
+
+ public void moveTask(Task task, TaskList preParent, TaskList curParent)
+ throws NetworkFailureException {
+ commitUpdate();
+ try {
+ JSONObject jsPost = new JSONObject();
+ JSONArray actionList = new JSONArray();
+ JSONObject action = new JSONObject();
+
+ // action_list
+ action.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE,
+ GTaskStringUtils.GTASK_JSON_ACTION_TYPE_MOVE);
+ action.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, getActionId());
+ action.put(GTaskStringUtils.GTASK_JSON_ID, task.getGid());
+ if (preParent == curParent && task.getPriorSibling() != null) {
+ // put prioring_sibing_id only if moving within the tasklist and
+ // it is not the first one
+ action.put(GTaskStringUtils.GTASK_JSON_PRIOR_SIBLING_ID, task.getPriorSibling());
+ }
+ action.put(GTaskStringUtils.GTASK_JSON_SOURCE_LIST, preParent.getGid());
+ action.put(GTaskStringUtils.GTASK_JSON_DEST_PARENT, curParent.getGid());
+ if (preParent != curParent) {
+ // put the dest_list only if moving between tasklists
+ action.put(GTaskStringUtils.GTASK_JSON_DEST_LIST, curParent.getGid());
+ }
+ actionList.put(action);
+ jsPost.put(GTaskStringUtils.GTASK_JSON_ACTION_LIST, actionList);
+
+ // client_version
+ jsPost.put(GTaskStringUtils.GTASK_JSON_CLIENT_VERSION, mClientVersion);
+
+ postRequest(jsPost);
+
+ } catch (JSONException e) {
+ Log.e(TAG, e.toString());
+ e.printStackTrace();
+ throw new ActionFailureException("move task: handing jsonobject failed");
+ }
+ }
+
+ public void deleteNode(Node node) throws NetworkFailureException {
+ commitUpdate();
+ try {
+ JSONObject jsPost = new JSONObject();
+ JSONArray actionList = new JSONArray();
+
+ // action_list
+ node.setDeleted(true);
+ actionList.put(node.getUpdateAction(getActionId()));
+ jsPost.put(GTaskStringUtils.GTASK_JSON_ACTION_LIST, actionList);
+
+ // client_version
+ jsPost.put(GTaskStringUtils.GTASK_JSON_CLIENT_VERSION, mClientVersion);
+
+ postRequest(jsPost);
+ mUpdateArray = null;
+ } catch (JSONException e) {
+ Log.e(TAG, e.toString());
+ e.printStackTrace();
+ throw new ActionFailureException("delete node: handing jsonobject failed");
+ }
+ }
+
+ public JSONArray getTaskLists() throws NetworkFailureException {
+ if (!mLoggedin) {
+ Log.e(TAG, "please login first");
+ throw new ActionFailureException("not logged in");
+ }
+
+ try {
+ HttpGet httpGet = new HttpGet(mGetUrl);
+ HttpResponse response = null;
+ response = mHttpClient.execute(httpGet);
+
+ // get the task list
+ String resString = getResponseContent(response.getEntity());
+ String jsBegin = "_setup(";
+ String jsEnd = ")}";
+ int begin = resString.indexOf(jsBegin);
+ int end = resString.lastIndexOf(jsEnd);
+ String jsString = null;
+ if (begin != -1 && end != -1 && begin < end) {
+ jsString = resString.substring(begin + jsBegin.length(), end);
+ }
+ JSONObject js = new JSONObject(jsString);
+ return js.getJSONObject("t").getJSONArray(GTaskStringUtils.GTASK_JSON_LISTS);
+ } catch (ClientProtocolException e) {
+ Log.e(TAG, e.toString());
+ e.printStackTrace();
+ throw new NetworkFailureException("gettasklists: httpget failed");
+ } catch (IOException e) {
+ Log.e(TAG, e.toString());
+ e.printStackTrace();
+ throw new NetworkFailureException("gettasklists: httpget failed");
+ } catch (JSONException e) {
+ Log.e(TAG, e.toString());
+ e.printStackTrace();
+ throw new ActionFailureException("get task lists: handing jasonobject failed");
+ }
+ }
+
+ public JSONArray getTaskList(String listGid) throws NetworkFailureException {
+ commitUpdate();
+ try {
+ JSONObject jsPost = new JSONObject();
+ JSONArray actionList = new JSONArray();
+ JSONObject action = new JSONObject();
+
+ // action_list
+ action.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE,
+ GTaskStringUtils.GTASK_JSON_ACTION_TYPE_GETALL);
+ action.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, getActionId());
+ action.put(GTaskStringUtils.GTASK_JSON_LIST_ID, listGid);
+ action.put(GTaskStringUtils.GTASK_JSON_GET_DELETED, false);
+ actionList.put(action);
+ jsPost.put(GTaskStringUtils.GTASK_JSON_ACTION_LIST, actionList);
+
+ // client_version
+ jsPost.put(GTaskStringUtils.GTASK_JSON_CLIENT_VERSION, mClientVersion);
+
+ JSONObject jsResponse = postRequest(jsPost);
+ return jsResponse.getJSONArray(GTaskStringUtils.GTASK_JSON_TASKS);
+ } catch (JSONException e) {
+ Log.e(TAG, e.toString());
+ e.printStackTrace();
+ throw new ActionFailureException("get task list: handing jsonobject failed");
+ }
+ }
+
+ public Account getSyncAccount() {
+ return mAccount;
+ }
+
+ public void resetUpdateArray() {
+ mUpdateArray = null;
+ }
+}
diff --git a/xiaomi-src/main/java/net/micode/notes/gtask/remote/GTaskManager.java b/xiaomi-src/main/java/net/micode/notes/gtask/remote/GTaskManager.java
new file mode 100644
index 0000000..d2b4082
--- /dev/null
+++ b/xiaomi-src/main/java/net/micode/notes/gtask/remote/GTaskManager.java
@@ -0,0 +1,800 @@
+/*
+ * 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.gtask.remote;
+
+import android.app.Activity;
+import android.content.ContentResolver;
+import android.content.ContentUris;
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.Cursor;
+import android.util.Log;
+
+import net.micode.notes.R;
+import net.micode.notes.data.Notes;
+import net.micode.notes.data.Notes.DataColumns;
+import net.micode.notes.data.Notes.NoteColumns;
+import net.micode.notes.gtask.data.MetaData;
+import net.micode.notes.gtask.data.Node;
+import net.micode.notes.gtask.data.SqlNote;
+import net.micode.notes.gtask.data.Task;
+import net.micode.notes.gtask.data.TaskList;
+import net.micode.notes.gtask.exception.ActionFailureException;
+import net.micode.notes.gtask.exception.NetworkFailureException;
+import net.micode.notes.tool.DataUtils;
+import net.micode.notes.tool.GTaskStringUtils;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+
+
+public class GTaskManager {
+ private static final String TAG = GTaskManager.class.getSimpleName();
+
+ public static final int STATE_SUCCESS = 0;
+
+ public static final int STATE_NETWORK_ERROR = 1;
+
+ public static final int STATE_INTERNAL_ERROR = 2;
+
+ public static final int STATE_SYNC_IN_PROGRESS = 3;
+
+ public static final int STATE_SYNC_CANCELLED = 4;
+
+ private static GTaskManager mInstance = null;
+
+ private Activity mActivity;
+
+ private Context mContext;
+
+ private ContentResolver mContentResolver;
+
+ private boolean mSyncing;
+
+ private boolean mCancelled;
+
+ private HashMap mGTaskListHashMap;
+
+ private HashMap mGTaskHashMap;
+
+ private HashMap mMetaHashMap;
+
+ private TaskList mMetaList;
+
+ private HashSet mLocalDeleteIdMap;
+
+ private HashMap mGidToNid;
+
+ private HashMap mNidToGid;
+
+ private GTaskManager() {
+ mSyncing = false;
+ mCancelled = false;
+ mGTaskListHashMap = new HashMap();
+ mGTaskHashMap = new HashMap();
+ mMetaHashMap = new HashMap();
+ mMetaList = null;
+ mLocalDeleteIdMap = new HashSet();
+ mGidToNid = new HashMap();
+ mNidToGid = new HashMap();
+ }
+
+ public static synchronized GTaskManager getInstance() {
+ if (mInstance == null) {
+ mInstance = new GTaskManager();
+ }
+ return mInstance;
+ }
+
+ public synchronized void setActivityContext(Activity activity) {
+ // used for getting authtoken
+ mActivity = activity;
+ }
+
+ public int sync(Context context, GTaskASyncTask asyncTask) {
+ if (mSyncing) {
+ Log.d(TAG, "Sync is in progress");
+ return STATE_SYNC_IN_PROGRESS;
+ }
+ mContext = context;
+ mContentResolver = mContext.getContentResolver();
+ mSyncing = true;
+ mCancelled = false;
+ mGTaskListHashMap.clear();
+ mGTaskHashMap.clear();
+ mMetaHashMap.clear();
+ mLocalDeleteIdMap.clear();
+ mGidToNid.clear();
+ mNidToGid.clear();
+
+ try {
+ GTaskClient client = GTaskClient.getInstance();
+ client.resetUpdateArray();
+
+ // login google task
+ if (!mCancelled) {
+ if (!client.login(mActivity)) {
+ throw new NetworkFailureException("login google task failed");
+ }
+ }
+
+ // get the task list from google
+ asyncTask.publishProgess(mContext.getString(R.string.sync_progress_init_list));
+ initGTaskList();
+
+ // do content sync work
+ asyncTask.publishProgess(mContext.getString(R.string.sync_progress_syncing));
+ syncContent();
+ } catch (NetworkFailureException e) {
+ Log.e(TAG, e.toString());
+ return STATE_NETWORK_ERROR;
+ } catch (ActionFailureException e) {
+ Log.e(TAG, e.toString());
+ return STATE_INTERNAL_ERROR;
+ } catch (Exception e) {
+ Log.e(TAG, e.toString());
+ e.printStackTrace();
+ return STATE_INTERNAL_ERROR;
+ } finally {
+ mGTaskListHashMap.clear();
+ mGTaskHashMap.clear();
+ mMetaHashMap.clear();
+ mLocalDeleteIdMap.clear();
+ mGidToNid.clear();
+ mNidToGid.clear();
+ mSyncing = false;
+ }
+
+ return mCancelled ? STATE_SYNC_CANCELLED : STATE_SUCCESS;
+ }
+
+ private void initGTaskList() throws NetworkFailureException {
+ if (mCancelled)
+ return;
+ GTaskClient client = GTaskClient.getInstance();
+ try {
+ JSONArray jsTaskLists = client.getTaskLists();
+
+ // init meta list first
+ mMetaList = null;
+ for (int i = 0; i < jsTaskLists.length(); i++) {
+ JSONObject object = jsTaskLists.getJSONObject(i);
+ String gid = object.getString(GTaskStringUtils.GTASK_JSON_ID);
+ String name = object.getString(GTaskStringUtils.GTASK_JSON_NAME);
+
+ if (name
+ .equals(GTaskStringUtils.MIUI_FOLDER_PREFFIX + GTaskStringUtils.FOLDER_META)) {
+ mMetaList = new TaskList();
+ mMetaList.setContentByRemoteJSON(object);
+
+ // load meta data
+ JSONArray jsMetas = client.getTaskList(gid);
+ for (int j = 0; j < jsMetas.length(); j++) {
+ object = (JSONObject) jsMetas.getJSONObject(j);
+ MetaData metaData = new MetaData();
+ metaData.setContentByRemoteJSON(object);
+ if (metaData.isWorthSaving()) {
+ mMetaList.addChildTask(metaData);
+ if (metaData.getGid() != null) {
+ mMetaHashMap.put(metaData.getRelatedGid(), metaData);
+ }
+ }
+ }
+ }
+ }
+
+ // create meta list if not existed
+ if (mMetaList == null) {
+ mMetaList = new TaskList();
+ mMetaList.setName(GTaskStringUtils.MIUI_FOLDER_PREFFIX
+ + GTaskStringUtils.FOLDER_META);
+ GTaskClient.getInstance().createTaskList(mMetaList);
+ }
+
+ // init task list
+ for (int i = 0; i < jsTaskLists.length(); i++) {
+ JSONObject object = jsTaskLists.getJSONObject(i);
+ String gid = object.getString(GTaskStringUtils.GTASK_JSON_ID);
+ String name = object.getString(GTaskStringUtils.GTASK_JSON_NAME);
+
+ if (name.startsWith(GTaskStringUtils.MIUI_FOLDER_PREFFIX)
+ && !name.equals(GTaskStringUtils.MIUI_FOLDER_PREFFIX
+ + GTaskStringUtils.FOLDER_META)) {
+ TaskList tasklist = new TaskList();
+ tasklist.setContentByRemoteJSON(object);
+ mGTaskListHashMap.put(gid, tasklist);
+ mGTaskHashMap.put(gid, tasklist);
+
+ // load tasks
+ JSONArray jsTasks = client.getTaskList(gid);
+ for (int j = 0; j < jsTasks.length(); j++) {
+ object = (JSONObject) jsTasks.getJSONObject(j);
+ gid = object.getString(GTaskStringUtils.GTASK_JSON_ID);
+ Task task = new Task();
+ task.setContentByRemoteJSON(object);
+ if (task.isWorthSaving()) {
+ task.setMetaInfo(mMetaHashMap.get(gid));
+ tasklist.addChildTask(task);
+ mGTaskHashMap.put(gid, task);
+ }
+ }
+ }
+ }
+ } catch (JSONException e) {
+ Log.e(TAG, e.toString());
+ e.printStackTrace();
+ throw new ActionFailureException("initGTaskList: handing JSONObject failed");
+ }
+ }
+
+ private void syncContent() throws NetworkFailureException {
+ int syncType;
+ Cursor c = null;
+ String gid;
+ Node node;
+
+ mLocalDeleteIdMap.clear();
+
+ if (mCancelled) {
+ return;
+ }
+
+ // for local deleted note
+ try {
+ c = mContentResolver.query(Notes.CONTENT_NOTE_URI, SqlNote.PROJECTION_NOTE,
+ "(type<>? AND parent_id=?)", new String[] {
+ String.valueOf(Notes.TYPE_SYSTEM), String.valueOf(Notes.ID_TRASH_FOLER)
+ }, null);
+ if (c != null) {
+ while (c.moveToNext()) {
+ gid = c.getString(SqlNote.GTASK_ID_COLUMN);
+ node = mGTaskHashMap.get(gid);
+ if (node != null) {
+ mGTaskHashMap.remove(gid);
+ doContentSync(Node.SYNC_ACTION_DEL_REMOTE, node, c);
+ }
+
+ mLocalDeleteIdMap.add(c.getLong(SqlNote.ID_COLUMN));
+ }
+ } else {
+ Log.w(TAG, "failed to query trash folder");
+ }
+ } finally {
+ if (c != null) {
+ c.close();
+ c = null;
+ }
+ }
+
+ // sync folder first
+ syncFolder();
+
+ // for note existing in database
+ try {
+ c = mContentResolver.query(Notes.CONTENT_NOTE_URI, SqlNote.PROJECTION_NOTE,
+ "(type=? AND parent_id<>?)", new String[] {
+ String.valueOf(Notes.TYPE_NOTE), String.valueOf(Notes.ID_TRASH_FOLER)
+ }, NoteColumns.TYPE + " DESC");
+ if (c != null) {
+ while (c.moveToNext()) {
+ gid = c.getString(SqlNote.GTASK_ID_COLUMN);
+ node = mGTaskHashMap.get(gid);
+ if (node != null) {
+ mGTaskHashMap.remove(gid);
+ mGidToNid.put(gid, c.getLong(SqlNote.ID_COLUMN));
+ mNidToGid.put(c.getLong(SqlNote.ID_COLUMN), gid);
+ syncType = node.getSyncAction(c);
+ } else {
+ if (c.getString(SqlNote.GTASK_ID_COLUMN).trim().length() == 0) {
+ // local add
+ syncType = Node.SYNC_ACTION_ADD_REMOTE;
+ } else {
+ // remote delete
+ syncType = Node.SYNC_ACTION_DEL_LOCAL;
+ }
+ }
+ doContentSync(syncType, node, c);
+ }
+ } else {
+ Log.w(TAG, "failed to query existing note in database");
+ }
+
+ } finally {
+ if (c != null) {
+ c.close();
+ c = null;
+ }
+ }
+
+ // go through remaining items
+ Iterator> iter = mGTaskHashMap.entrySet().iterator();
+ while (iter.hasNext()) {
+ Map.Entry entry = iter.next();
+ node = entry.getValue();
+ doContentSync(Node.SYNC_ACTION_ADD_LOCAL, node, null);
+ }
+
+ // mCancelled can be set by another thread, so we neet to check one by
+ // one
+ // clear local delete table
+ if (!mCancelled) {
+ if (!DataUtils.batchDeleteNotes(mContentResolver, mLocalDeleteIdMap)) {
+ throw new ActionFailureException("failed to batch-delete local deleted notes");
+ }
+ }
+
+ // refresh local sync id
+ if (!mCancelled) {
+ GTaskClient.getInstance().commitUpdate();
+ refreshLocalSyncId();
+ }
+
+ }
+
+ private void syncFolder() throws NetworkFailureException {
+ Cursor c = null;
+ String gid;
+ Node node;
+ int syncType;
+
+ if (mCancelled) {
+ return;
+ }
+
+ // for root folder
+ try {
+ c = mContentResolver.query(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI,
+ Notes.ID_ROOT_FOLDER), SqlNote.PROJECTION_NOTE, null, null, null);
+ if (c != null) {
+ c.moveToNext();
+ gid = c.getString(SqlNote.GTASK_ID_COLUMN);
+ node = mGTaskHashMap.get(gid);
+ if (node != null) {
+ mGTaskHashMap.remove(gid);
+ mGidToNid.put(gid, (long) Notes.ID_ROOT_FOLDER);
+ mNidToGid.put((long) Notes.ID_ROOT_FOLDER, gid);
+ // for system folder, only update remote name if necessary
+ if (!node.getName().equals(
+ GTaskStringUtils.MIUI_FOLDER_PREFFIX + GTaskStringUtils.FOLDER_DEFAULT))
+ doContentSync(Node.SYNC_ACTION_UPDATE_REMOTE, node, c);
+ } else {
+ doContentSync(Node.SYNC_ACTION_ADD_REMOTE, node, c);
+ }
+ } else {
+ Log.w(TAG, "failed to query root folder");
+ }
+ } finally {
+ if (c != null) {
+ c.close();
+ c = null;
+ }
+ }
+
+ // for call-note folder
+ try {
+ c = mContentResolver.query(Notes.CONTENT_NOTE_URI, SqlNote.PROJECTION_NOTE, "(_id=?)",
+ new String[] {
+ String.valueOf(Notes.ID_CALL_RECORD_FOLDER)
+ }, null);
+ if (c != null) {
+ if (c.moveToNext()) {
+ gid = c.getString(SqlNote.GTASK_ID_COLUMN);
+ node = mGTaskHashMap.get(gid);
+ if (node != null) {
+ mGTaskHashMap.remove(gid);
+ mGidToNid.put(gid, (long) Notes.ID_CALL_RECORD_FOLDER);
+ mNidToGid.put((long) Notes.ID_CALL_RECORD_FOLDER, gid);
+ // for system folder, only update remote name if
+ // necessary
+ if (!node.getName().equals(
+ GTaskStringUtils.MIUI_FOLDER_PREFFIX
+ + GTaskStringUtils.FOLDER_CALL_NOTE))
+ doContentSync(Node.SYNC_ACTION_UPDATE_REMOTE, node, c);
+ } else {
+ doContentSync(Node.SYNC_ACTION_ADD_REMOTE, node, c);
+ }
+ }
+ } else {
+ Log.w(TAG, "failed to query call note folder");
+ }
+ } finally {
+ if (c != null) {
+ c.close();
+ c = null;
+ }
+ }
+
+ // for local existing folders
+ try {
+ c = mContentResolver.query(Notes.CONTENT_NOTE_URI, SqlNote.PROJECTION_NOTE,
+ "(type=? AND parent_id<>?)", new String[] {
+ String.valueOf(Notes.TYPE_FOLDER), String.valueOf(Notes.ID_TRASH_FOLER)
+ }, NoteColumns.TYPE + " DESC");
+ if (c != null) {
+ while (c.moveToNext()) {
+ gid = c.getString(SqlNote.GTASK_ID_COLUMN);
+ node = mGTaskHashMap.get(gid);
+ if (node != null) {
+ mGTaskHashMap.remove(gid);
+ mGidToNid.put(gid, c.getLong(SqlNote.ID_COLUMN));
+ mNidToGid.put(c.getLong(SqlNote.ID_COLUMN), gid);
+ syncType = node.getSyncAction(c);
+ } else {
+ if (c.getString(SqlNote.GTASK_ID_COLUMN).trim().length() == 0) {
+ // local add
+ syncType = Node.SYNC_ACTION_ADD_REMOTE;
+ } else {
+ // remote delete
+ syncType = Node.SYNC_ACTION_DEL_LOCAL;
+ }
+ }
+ doContentSync(syncType, node, c);
+ }
+ } else {
+ Log.w(TAG, "failed to query existing folder");
+ }
+ } finally {
+ if (c != null) {
+ c.close();
+ c = null;
+ }
+ }
+
+ // for remote add folders
+ Iterator> iter = mGTaskListHashMap.entrySet().iterator();
+ while (iter.hasNext()) {
+ Map.Entry entry = iter.next();
+ gid = entry.getKey();
+ node = entry.getValue();
+ if (mGTaskHashMap.containsKey(gid)) {
+ mGTaskHashMap.remove(gid);
+ doContentSync(Node.SYNC_ACTION_ADD_LOCAL, node, null);
+ }
+ }
+
+ if (!mCancelled)
+ GTaskClient.getInstance().commitUpdate();
+ }
+
+ private void doContentSync(int syncType, Node node, Cursor c) throws NetworkFailureException {
+ if (mCancelled) {
+ return;
+ }
+
+ MetaData meta;
+ switch (syncType) {
+ case Node.SYNC_ACTION_ADD_LOCAL:
+ addLocalNode(node);
+ break;
+ case Node.SYNC_ACTION_ADD_REMOTE:
+ addRemoteNode(node, c);
+ break;
+ case Node.SYNC_ACTION_DEL_LOCAL:
+ meta = mMetaHashMap.get(c.getString(SqlNote.GTASK_ID_COLUMN));
+ if (meta != null) {
+ GTaskClient.getInstance().deleteNode(meta);
+ }
+ mLocalDeleteIdMap.add(c.getLong(SqlNote.ID_COLUMN));
+ break;
+ case Node.SYNC_ACTION_DEL_REMOTE:
+ meta = mMetaHashMap.get(node.getGid());
+ if (meta != null) {
+ GTaskClient.getInstance().deleteNode(meta);
+ }
+ GTaskClient.getInstance().deleteNode(node);
+ break;
+ case Node.SYNC_ACTION_UPDATE_LOCAL:
+ updateLocalNode(node, c);
+ break;
+ case Node.SYNC_ACTION_UPDATE_REMOTE:
+ updateRemoteNode(node, c);
+ break;
+ case Node.SYNC_ACTION_UPDATE_CONFLICT:
+ // merging both modifications maybe a good idea
+ // right now just use local update simply
+ updateRemoteNode(node, c);
+ break;
+ case Node.SYNC_ACTION_NONE:
+ break;
+ case Node.SYNC_ACTION_ERROR:
+ default:
+ throw new ActionFailureException("unkown sync action type");
+ }
+ }
+
+ private void addLocalNode(Node node) throws NetworkFailureException {
+ if (mCancelled) {
+ return;
+ }
+
+ SqlNote sqlNote;
+ if (node instanceof TaskList) {
+ if (node.getName().equals(
+ GTaskStringUtils.MIUI_FOLDER_PREFFIX + GTaskStringUtils.FOLDER_DEFAULT)) {
+ sqlNote = new SqlNote(mContext, Notes.ID_ROOT_FOLDER);
+ } else if (node.getName().equals(
+ GTaskStringUtils.MIUI_FOLDER_PREFFIX + GTaskStringUtils.FOLDER_CALL_NOTE)) {
+ sqlNote = new SqlNote(mContext, Notes.ID_CALL_RECORD_FOLDER);
+ } else {
+ sqlNote = new SqlNote(mContext);
+ sqlNote.setContent(node.getLocalJSONFromContent());
+ sqlNote.setParentId(Notes.ID_ROOT_FOLDER);
+ }
+ } else {
+ sqlNote = new SqlNote(mContext);
+ JSONObject js = node.getLocalJSONFromContent();
+ try {
+ if (js.has(GTaskStringUtils.META_HEAD_NOTE)) {
+ JSONObject note = js.getJSONObject(GTaskStringUtils.META_HEAD_NOTE);
+ if (note.has(NoteColumns.ID)) {
+ long id = note.getLong(NoteColumns.ID);
+ if (DataUtils.existInNoteDatabase(mContentResolver, id)) {
+ // the id is not available, have to create a new one
+ note.remove(NoteColumns.ID);
+ }
+ }
+ }
+
+ if (js.has(GTaskStringUtils.META_HEAD_DATA)) {
+ JSONArray dataArray = js.getJSONArray(GTaskStringUtils.META_HEAD_DATA);
+ for (int i = 0; i < dataArray.length(); i++) {
+ JSONObject data = dataArray.getJSONObject(i);
+ if (data.has(DataColumns.ID)) {
+ long dataId = data.getLong(DataColumns.ID);
+ if (DataUtils.existInDataDatabase(mContentResolver, dataId)) {
+ // the data id is not available, have to create
+ // a new one
+ data.remove(DataColumns.ID);
+ }
+ }
+ }
+
+ }
+ } catch (JSONException e) {
+ Log.w(TAG, e.toString());
+ e.printStackTrace();
+ }
+ sqlNote.setContent(js);
+
+ Long parentId = mGidToNid.get(((Task) node).getParent().getGid());
+ if (parentId == null) {
+ Log.e(TAG, "cannot find task's parent id locally");
+ throw new ActionFailureException("cannot add local node");
+ }
+ sqlNote.setParentId(parentId.longValue());
+ }
+
+ // create the local node
+ sqlNote.setGtaskId(node.getGid());
+ sqlNote.commit(false);
+
+ // update gid-nid mapping
+ mGidToNid.put(node.getGid(), sqlNote.getId());
+ mNidToGid.put(sqlNote.getId(), node.getGid());
+
+ // update meta
+ updateRemoteMeta(node.getGid(), sqlNote);
+ }
+
+ private void updateLocalNode(Node node, Cursor c) throws NetworkFailureException {
+ if (mCancelled) {
+ return;
+ }
+
+ SqlNote sqlNote;
+ // update the note locally
+ sqlNote = new SqlNote(mContext, c);
+ sqlNote.setContent(node.getLocalJSONFromContent());
+
+ Long parentId = (node instanceof Task) ? mGidToNid.get(((Task) node).getParent().getGid())
+ : new Long(Notes.ID_ROOT_FOLDER);
+ if (parentId == null) {
+ Log.e(TAG, "cannot find task's parent id locally");
+ throw new ActionFailureException("cannot update local node");
+ }
+ sqlNote.setParentId(parentId.longValue());
+ sqlNote.commit(true);
+
+ // update meta info
+ updateRemoteMeta(node.getGid(), sqlNote);
+ }
+
+ private void addRemoteNode(Node node, Cursor c) throws NetworkFailureException {
+ if (mCancelled) {
+ return;
+ }
+
+ SqlNote sqlNote = new SqlNote(mContext, c);
+ Node n;
+
+ // update remotely
+ if (sqlNote.isNoteType()) {
+ Task task = new Task();
+ task.setContentByLocalJSON(sqlNote.getContent());
+
+ String parentGid = mNidToGid.get(sqlNote.getParentId());
+ if (parentGid == null) {
+ Log.e(TAG, "cannot find task's parent tasklist");
+ throw new ActionFailureException("cannot add remote task");
+ }
+ mGTaskListHashMap.get(parentGid).addChildTask(task);
+
+ GTaskClient.getInstance().createTask(task);
+ n = (Node) task;
+
+ // add meta
+ updateRemoteMeta(task.getGid(), sqlNote);
+ } else {
+ TaskList tasklist = null;
+
+ // we need to skip folder if it has already existed
+ String folderName = GTaskStringUtils.MIUI_FOLDER_PREFFIX;
+ if (sqlNote.getId() == Notes.ID_ROOT_FOLDER)
+ folderName += GTaskStringUtils.FOLDER_DEFAULT;
+ else if (sqlNote.getId() == Notes.ID_CALL_RECORD_FOLDER)
+ folderName += GTaskStringUtils.FOLDER_CALL_NOTE;
+ else
+ folderName += sqlNote.getSnippet();
+
+ Iterator> iter = mGTaskListHashMap.entrySet().iterator();
+ while (iter.hasNext()) {
+ Map.Entry entry = iter.next();
+ String gid = entry.getKey();
+ TaskList list = entry.getValue();
+
+ if (list.getName().equals(folderName)) {
+ tasklist = list;
+ if (mGTaskHashMap.containsKey(gid)) {
+ mGTaskHashMap.remove(gid);
+ }
+ break;
+ }
+ }
+
+ // no match we can add now
+ if (tasklist == null) {
+ tasklist = new TaskList();
+ tasklist.setContentByLocalJSON(sqlNote.getContent());
+ GTaskClient.getInstance().createTaskList(tasklist);
+ mGTaskListHashMap.put(tasklist.getGid(), tasklist);
+ }
+ n = (Node) tasklist;
+ }
+
+ // update local note
+ sqlNote.setGtaskId(n.getGid());
+ sqlNote.commit(false);
+ sqlNote.resetLocalModified();
+ sqlNote.commit(true);
+
+ // gid-id mapping
+ mGidToNid.put(n.getGid(), sqlNote.getId());
+ mNidToGid.put(sqlNote.getId(), n.getGid());
+ }
+
+ private void updateRemoteNode(Node node, Cursor c) throws NetworkFailureException {
+ if (mCancelled) {
+ return;
+ }
+
+ SqlNote sqlNote = new SqlNote(mContext, c);
+
+ // update remotely
+ node.setContentByLocalJSON(sqlNote.getContent());
+ GTaskClient.getInstance().addUpdateNode(node);
+
+ // update meta
+ updateRemoteMeta(node.getGid(), sqlNote);
+
+ // move task if necessary
+ if (sqlNote.isNoteType()) {
+ Task task = (Task) node;
+ TaskList preParentList = task.getParent();
+
+ String curParentGid = mNidToGid.get(sqlNote.getParentId());
+ if (curParentGid == null) {
+ Log.e(TAG, "cannot find task's parent tasklist");
+ throw new ActionFailureException("cannot update remote task");
+ }
+ TaskList curParentList = mGTaskListHashMap.get(curParentGid);
+
+ if (preParentList != curParentList) {
+ preParentList.removeChildTask(task);
+ curParentList.addChildTask(task);
+ GTaskClient.getInstance().moveTask(task, preParentList, curParentList);
+ }
+ }
+
+ // clear local modified flag
+ sqlNote.resetLocalModified();
+ sqlNote.commit(true);
+ }
+
+ private void updateRemoteMeta(String gid, SqlNote sqlNote) throws NetworkFailureException {
+ if (sqlNote != null && sqlNote.isNoteType()) {
+ MetaData metaData = mMetaHashMap.get(gid);
+ if (metaData != null) {
+ metaData.setMeta(gid, sqlNote.getContent());
+ GTaskClient.getInstance().addUpdateNode(metaData);
+ } else {
+ metaData = new MetaData();
+ metaData.setMeta(gid, sqlNote.getContent());
+ mMetaList.addChildTask(metaData);
+ mMetaHashMap.put(gid, metaData);
+ GTaskClient.getInstance().createTask(metaData);
+ }
+ }
+ }
+
+ private void refreshLocalSyncId() throws NetworkFailureException {
+ if (mCancelled) {
+ return;
+ }
+
+ // get the latest gtask list
+ mGTaskHashMap.clear();
+ mGTaskListHashMap.clear();
+ mMetaHashMap.clear();
+ initGTaskList();
+
+ Cursor c = null;
+ try {
+ c = mContentResolver.query(Notes.CONTENT_NOTE_URI, SqlNote.PROJECTION_NOTE,
+ "(type<>? AND parent_id<>?)", new String[] {
+ String.valueOf(Notes.TYPE_SYSTEM), String.valueOf(Notes.ID_TRASH_FOLER)
+ }, NoteColumns.TYPE + " DESC");
+ if (c != null) {
+ while (c.moveToNext()) {
+ String gid = c.getString(SqlNote.GTASK_ID_COLUMN);
+ Node node = mGTaskHashMap.get(gid);
+ if (node != null) {
+ mGTaskHashMap.remove(gid);
+ ContentValues values = new ContentValues();
+ values.put(NoteColumns.SYNC_ID, node.getLastModified());
+ mContentResolver.update(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI,
+ c.getLong(SqlNote.ID_COLUMN)), values, null, null);
+ } else {
+ Log.e(TAG, "something is missed");
+ throw new ActionFailureException(
+ "some local items don't have gid after sync");
+ }
+ }
+ } else {
+ Log.w(TAG, "failed to query local note to refresh sync id");
+ }
+ } finally {
+ if (c != null) {
+ c.close();
+ c = null;
+ }
+ }
+ }
+
+ public String getSyncAccount() {
+ return GTaskClient.getInstance().getSyncAccount().name;
+ }
+
+ public void cancelSync() {
+ mCancelled = true;
+ }
+}
diff --git a/xiaomi-src/main/java/net/micode/notes/gtask/remote/GTaskSyncService.java b/xiaomi-src/main/java/net/micode/notes/gtask/remote/GTaskSyncService.java
new file mode 100644
index 0000000..cca36f7
--- /dev/null
+++ b/xiaomi-src/main/java/net/micode/notes/gtask/remote/GTaskSyncService.java
@@ -0,0 +1,128 @@
+/*
+ * 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.gtask.remote;
+
+import android.app.Activity;
+import android.app.Service;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.IBinder;
+
+public class GTaskSyncService extends Service {
+ public final static String ACTION_STRING_NAME = "sync_action_type";
+
+ public final static int ACTION_START_SYNC = 0;
+
+ public final static int ACTION_CANCEL_SYNC = 1;
+
+ public final static int ACTION_INVALID = 2;
+
+ public final static String GTASK_SERVICE_BROADCAST_NAME = "net.micode.notes.gtask.remote.gtask_sync_service";
+
+ public final static String GTASK_SERVICE_BROADCAST_IS_SYNCING = "isSyncing";
+
+ public final static String GTASK_SERVICE_BROADCAST_PROGRESS_MSG = "progressMsg";
+
+ private static GTaskASyncTask mSyncTask = null;
+
+ private static String mSyncProgress = "";
+
+ private void startSync() {
+ if (mSyncTask == null) {
+ mSyncTask = new GTaskASyncTask(this, new GTaskASyncTask.OnCompleteListener() {
+ public void onComplete() {
+ mSyncTask = null;
+ sendBroadcast("");
+ stopSelf();
+ }
+ });
+ sendBroadcast("");
+ mSyncTask.execute();
+ }
+ }
+
+ private void cancelSync() {
+ if (mSyncTask != null) {
+ mSyncTask.cancelSync();
+ }
+ }
+
+ @Override
+ public void onCreate() {
+ mSyncTask = null;
+ }
+
+ @Override
+ public int onStartCommand(Intent intent, int flags, int startId) {
+ Bundle bundle = intent.getExtras();
+ if (bundle != null && bundle.containsKey(ACTION_STRING_NAME)) {
+ switch (bundle.getInt(ACTION_STRING_NAME, ACTION_INVALID)) {
+ case ACTION_START_SYNC:
+ startSync();
+ break;
+ case ACTION_CANCEL_SYNC:
+ cancelSync();
+ break;
+ default:
+ break;
+ }
+ return START_STICKY;
+ }
+ return super.onStartCommand(intent, flags, startId);
+ }
+
+ @Override
+ public void onLowMemory() {
+ if (mSyncTask != null) {
+ mSyncTask.cancelSync();
+ }
+ }
+
+ public IBinder onBind(Intent intent) {
+ return null;
+ }
+
+ public void sendBroadcast(String msg) {
+ mSyncProgress = msg;
+ Intent intent = new Intent(GTASK_SERVICE_BROADCAST_NAME);
+ intent.putExtra(GTASK_SERVICE_BROADCAST_IS_SYNCING, mSyncTask != null);
+ intent.putExtra(GTASK_SERVICE_BROADCAST_PROGRESS_MSG, msg);
+ sendBroadcast(intent);
+ }
+
+ public static void startSync(Activity activity) {
+ GTaskManager.getInstance().setActivityContext(activity);
+ Intent intent = new Intent(activity, GTaskSyncService.class);
+ intent.putExtra(GTaskSyncService.ACTION_STRING_NAME, GTaskSyncService.ACTION_START_SYNC);
+ activity.startService(intent);
+ }
+
+ public static void cancelSync(Context context) {
+ Intent intent = new Intent(context, GTaskSyncService.class);
+ intent.putExtra(GTaskSyncService.ACTION_STRING_NAME, GTaskSyncService.ACTION_CANCEL_SYNC);
+ context.startService(intent);
+ }
+
+ public static boolean isSyncing() {
+ return mSyncTask != null;
+ }
+
+ public static String getProgressString() {
+ return mSyncProgress;
+ }
+}
diff --git a/xiaomi-src/app/src/main/java/net/micode/notes/model/Note.java b/xiaomi-src/main/java/net/micode/notes/model/Note.java
similarity index 70%
rename from xiaomi-src/app/src/main/java/net/micode/notes/model/Note.java
rename to xiaomi-src/main/java/net/micode/notes/model/Note.java
index 9734a4c..0ccf19f 100644
--- a/xiaomi-src/app/src/main/java/net/micode/notes/model/Note.java
+++ b/xiaomi-src/main/java/net/micode/notes/model/Note.java
@@ -15,7 +15,6 @@
*/
package net.micode.notes.model;
-
import android.content.ContentProviderOperation;
import android.content.ContentProviderResult;
import android.content.ContentUris;
@@ -39,20 +38,16 @@ public class Note {
private ContentValues mNoteDiffValues;
private NoteData mNoteData;
private static final String TAG = "Note";
-
/**
- * 为数据库中添加新笔记生成一个新的笔记ID
- *
- * @param context 上下文对象,用于访问应用程序的资源和其他内容提供者
- * @param folderId 文件夹ID,表示新笔记将被添加到的文件夹
- * @return 新创建的笔记的ID
+ * Create a new note id for adding a new note to databases
*/
public static synchronized long getNewNoteId(Context context, long folderId) {
- // 在数据库中创建一个新的笔记
+ // Create a new note in the database
ContentValues values = new ContentValues();
long createdTime = System.currentTimeMillis();
values.put(NoteColumns.CREATED_DATE, createdTime);
values.put(NoteColumns.MODIFIED_DATE, createdTime);
+ //values.put(NoteColumns.TOP,"1");
values.put(NoteColumns.TYPE, Notes.TYPE_NOTE);
values.put(NoteColumns.LOCAL_MODIFIED, 1);
values.put(NoteColumns.PARENT_ID, folderId);
@@ -62,11 +57,11 @@ public class Note {
try {
noteId = Long.valueOf(uri.getPathSegments().get(1));
} catch (NumberFormatException e) {
- Log.e(TAG, "获取笔记ID错误 :" + e.toString());
+ Log.e(TAG, "Get note id error :" + e.toString());
noteId = 0;
}
if (noteId == -1) {
- throw new IllegalStateException("错误的笔记ID:" + noteId);
+ throw new IllegalStateException("Wrong note id:" + noteId);
}
return noteId;
}
@@ -76,96 +71,59 @@ public class Note {
mNoteData = new NoteData();
}
- /**
- * 设置笔记的值
- *
- * @param key 设置的字段名
- * @param value 设置的字段值
- */
public void setNoteValue(String key, String value) {
mNoteDiffValues.put(key, value);
mNoteDiffValues.put(NoteColumns.LOCAL_MODIFIED, 1);
mNoteDiffValues.put(NoteColumns.MODIFIED_DATE, System.currentTimeMillis());
}
- /**
- * 设置文本数据
- *
- * @param key 设置的字段名
- * @param value 设置的字段值
- */
+ public void setTopValue(String key, String value) {
+ mNoteDiffValues.put(key, value);
+ }
+
public void setTextData(String key, String value) {
mNoteData.setTextData(key, value);
}
- /**
- * 设置文本数据ID
- *
- * @param id 文本数据的ID
- */
public void setTextDataId(long id) {
mNoteData.setTextDataId(id);
}
- /**
- * 获取文本数据ID
- *
- * @return 文本数据的ID
- */
public long getTextDataId() {
return mNoteData.mTextDataId;
}
- /**
- * 设置通话数据ID
- *
- * @param id 通话数据的ID
- */
public void setCallDataId(long id) {
mNoteData.setCallDataId(id);
}
- /**
- * 设置通话数据
- *
- * @param key 设置的字段名
- * @param value 设置的字段值
- */
public void setCallData(String key, String value) {
mNoteData.setCallData(key, value);
}
- /**
- * 检查笔记是否被本地修改
- *
- * @return 如果笔记被本地修改则返回true,否则返回false
- */
public boolean isLocalModified() {
return mNoteDiffValues.size() > 0 || mNoteData.isLocalModified();
}
- /**
- * 同步笔记到数据库
- *
- * @param context 上下文对象,用于访问应用程序的资源和其他内容提供者
- * @param noteId 需要同步的笔记ID
- * @return 如果同步成功则返回true,否则返回false
- */
public boolean syncNote(Context context, long noteId) {
if (noteId <= 0) {
- throw new IllegalArgumentException("错误的笔记ID:" + noteId);
+ throw new IllegalArgumentException("Wrong note id:" + noteId);
}
if (!isLocalModified()) {
return true;
}
- // 理论上,一旦数据改变,笔记应该在本地修改标记和修改日期上更新。为了数据安全,即使更新笔记失败,我们也更新笔记的数据信息
+ /**
+ * In theory, once data changed, the note should be updated on {@link NoteColumns#LOCAL_MODIFIED} and
+ * {@link NoteColumns#MODIFIED_DATE}. For data safety, though update note fails, we also update the
+ * note data info
+ */
if (context.getContentResolver().update(
ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId), mNoteDiffValues, null,
null) == 0) {
- Log.e(TAG, "更新笔记错误,不应该发生");
- // 不返回,继续执行
+ Log.e(TAG, "Update note error, should not happen");
+ // Do not return, fall through
}
mNoteDiffValues.clear();
@@ -177,14 +135,13 @@ public class Note {
return true;
}
- /**
- * 内部类NoteData,用于管理笔记的文本数据和通话数据
- */
private class NoteData {
private long mTextDataId;
private ContentValues mTextDataValues;
+ private ContentValues mTopValues;
+
private long mCallDataId;
private ContentValues mCallDataValues;
@@ -194,86 +151,53 @@ public class Note {
public NoteData() {
mTextDataValues = new ContentValues();
mCallDataValues = new ContentValues();
+ mTopValues = new ContentValues();
mTextDataId = 0;
mCallDataId = 0;
}
- /**
- * 检查数据是否被本地修改
- *
- * @return 如果数据被本地修改则返回true,否则返回false
- */
boolean isLocalModified() {
return mTextDataValues.size() > 0 || mCallDataValues.size() > 0;
}
- /**
- * 设置文本数据ID
- *
- * @param id 文本数据的ID
- */
void setTextDataId(long id) {
- if (id <= 0) {
- throw new IllegalArgumentException("文本数据ID应该大于0");
+ if(id <= 0) {
+ throw new IllegalArgumentException("Text data id should larger than 0");
}
mTextDataId = id;
}
- /**
- * 设置通话数据ID
- *
- * @param id 通话数据的ID
- */
void setCallDataId(long id) {
if (id <= 0) {
- throw new IllegalArgumentException("通话数据ID应该大于0");
+ throw new IllegalArgumentException("Call data id should larger than 0");
}
mCallDataId = id;
}
- /**
- * 设置通话数据
- *
- * @param key 设置的字段名
- * @param value 设置的字段值
- */
void setCallData(String key, String value) {
mCallDataValues.put(key, value);
mNoteDiffValues.put(NoteColumns.LOCAL_MODIFIED, 1);
mNoteDiffValues.put(NoteColumns.MODIFIED_DATE, System.currentTimeMillis());
}
- /**
- * 设置文本数据
- *
- * @param key 设置的字段名
- * @param value 设置的字段值
- */
void setTextData(String key, String value) {
mTextDataValues.put(key, value);
mNoteDiffValues.put(NoteColumns.LOCAL_MODIFIED, 1);
mNoteDiffValues.put(NoteColumns.MODIFIED_DATE, System.currentTimeMillis());
}
- /**
- * 将数据推送到内容解析器
- *
- * @param context 上下文对象,用于访问应用程序的资源和其他内容提供者
- * @param noteId 笔记的ID
- * @return 如果推送成功则返回Uri,否则返回null
- */
Uri pushIntoContentResolver(Context context, long noteId) {
/**
- * 安全性检查
+ * Check for safety
*/
if (noteId <= 0) {
- throw new IllegalArgumentException("错误的笔记ID:" + noteId);
+ throw new IllegalArgumentException("Wrong note id:" + noteId);
}
ArrayList operationList = new ArrayList();
ContentProviderOperation.Builder builder = null;
- if (mTextDataValues.size() > 0) {
+ if(mTextDataValues.size() > 0) {
mTextDataValues.put(DataColumns.NOTE_ID, noteId);
if (mTextDataId == 0) {
mTextDataValues.put(DataColumns.MIME_TYPE, TextNote.CONTENT_ITEM_TYPE);
@@ -282,7 +206,7 @@ public class Note {
try {
setTextDataId(Long.valueOf(uri.getPathSegments().get(1)));
} catch (NumberFormatException e) {
- Log.e(TAG, "插入新的文本数据失败,笔记ID" + noteId);
+ Log.e(TAG, "Insert new text data fail with noteId" + noteId);
mTextDataValues.clear();
return null;
}
@@ -295,7 +219,7 @@ public class Note {
mTextDataValues.clear();
}
- if (mCallDataValues.size() > 0) {
+ if(mCallDataValues.size() > 0) {
mCallDataValues.put(DataColumns.NOTE_ID, noteId);
if (mCallDataId == 0) {
mCallDataValues.put(DataColumns.MIME_TYPE, CallNote.CONTENT_ITEM_TYPE);
@@ -304,7 +228,7 @@ public class Note {
try {
setCallDataId(Long.valueOf(uri.getPathSegments().get(1)));
} catch (NumberFormatException e) {
- Log.e(TAG, "插入新的通话数据失败,笔记ID" + noteId);
+ Log.e(TAG, "Insert new call data fail with noteId" + noteId);
mCallDataValues.clear();
return null;
}
@@ -335,4 +259,3 @@ public class Note {
}
}
}
-
diff --git a/xiaomi-src/app/src/main/java/net/micode/notes/model/WorkingNote.java b/xiaomi-src/main/java/net/micode/notes/model/WorkingNote.java
similarity index 54%
rename from xiaomi-src/app/src/main/java/net/micode/notes/model/WorkingNote.java
rename to xiaomi-src/main/java/net/micode/notes/model/WorkingNote.java
index 4a2b5ff..cb16126 100644
--- a/xiaomi-src/app/src/main/java/net/micode/notes/model/WorkingNote.java
+++ b/xiaomi-src/main/java/net/micode/notes/model/WorkingNote.java
@@ -1,3 +1,19 @@
+/*
+ * 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.model;
import android.appwidget.AppWidgetManager;
@@ -13,45 +29,49 @@ import net.micode.notes.data.Notes.DataColumns;
import net.micode.notes.data.Notes.DataConstants;
import net.micode.notes.data.Notes.NoteColumns;
import net.micode.notes.data.Notes.TextNote;
+import net.micode.notes.data.NotesProvider;
import net.micode.notes.tool.ResourceParser.NoteBgResources;
-// WorkingNote类用于管理笔记的相关信息
+
public class WorkingNote {
- // 笔记对象,包含笔记的详细信息
+ // Note for the working note
private Note mNote;
- // 笔记的唯一标识符
+ // Note Id
private long mNoteId;
- // 笔记的内容
+ // Note content
private String mContent;
- // 笔记的模式,例如普通、草稿等
+ // Note mode
private int mMode;
- // 设置提醒日期的时间戳
private long mAlertDate;
- // 笔记最后修改日期的时间戳
+
private long mModifiedDate;
- // 笔记背景颜色的资源ID
+
private int mBgColorId;
- // 小部件的ID
+
private int mWidgetId;
- // 小部件的类型
+
private int mWidgetType;
- // 笔记所属文件夹的ID
+
private long mFolderId;
- // 上下文对象,用于访问应用的环境信息
+
private Context mContext;
- // 日志标签,用于Log输出
private static final String TAG = "WorkingNote";
- // 标记笔记是否被删除
private boolean mIsDeleted;
- // 笔记设置变化监听器
+
+ /**记录已置顶便签*/
+ private String mTop = "0";
+
+ /**记录便签所属类别*/
+ private int mClass;
+
+
private NoteSettingChangedListener mNoteSettingStatusListener;
- // 定义一个静态数组,用于在查询时投影数据列
- public static final String[] DATA_PROJECTION = new String[]{
+ public static final String[] DATA_PROJECTION = new String[] {
DataColumns.ID,
DataColumns.CONTENT,
DataColumns.MIME_TYPE,
@@ -61,53 +81,39 @@ public class WorkingNote {
DataColumns.DATA4,
};
-
- // 定义查询Note表时需要投影的列
- public static final String[] NOTE_PROJECTION = new String[]{
+ public static final String[] NOTE_PROJECTION = new String[] {
NoteColumns.PARENT_ID,
NoteColumns.ALERTED_DATE,
NoteColumns.BG_COLOR_ID,
NoteColumns.WIDGET_ID,
NoteColumns.WIDGET_TYPE,
- NoteColumns.MODIFIED_DATE
+ NoteColumns.MODIFIED_DATE,
+ NoteColumns.TOP,
};
- // 数据ID列的索引
private static final int DATA_ID_COLUMN = 0;
- // 数据内容列的索引
private static final int DATA_CONTENT_COLUMN = 1;
- // 数据MIME类型列的索引
private static final int DATA_MIME_TYPE_COLUMN = 2;
- // 数据模式列的索引
private static final int DATA_MODE_COLUMN = 3;
- // Note表中父ID列的索引
private static final int NOTE_PARENT_ID_COLUMN = 0;
- // Note表中提醒日期列的索引
private static final int NOTE_ALERTED_DATE_COLUMN = 1;
- // Note表中背景颜色ID列的索引
private static final int NOTE_BG_COLOR_ID_COLUMN = 2;
- // Note表中Widget ID列的索引
private static final int NOTE_WIDGET_ID_COLUMN = 3;
- // Note表中Widget类型列的索引
private static final int NOTE_WIDGET_TYPE_COLUMN = 4;
- // Note表中修改日期列的索引
private static final int NOTE_MODIFIED_DATE_COLUMN = 5;
- /**
- * 新建笔记的构造函数
- *
- * @param context 上下文对象,用于访问应用全局功能
- * @param folderId 文件夹ID,表示该笔记所属的文件夹
- */
+ private static final int NOTE_TOP_COLUMN = 6;
+
+ // New note construct
private WorkingNote(Context context, long folderId) {
mContext = context;
mAlertDate = 0;
@@ -118,15 +124,10 @@ public class WorkingNote {
mIsDeleted = false;
mMode = 0;
mWidgetType = Notes.TYPE_WIDGET_INVALIDE;
+ mTop = String.valueOf(getTopId());
}
- /**
- * 已存在笔记的构造函数
- *
- * @param context 上下文对象,用于访问应用全局功能
- * @param noteId 笔记ID,表示该笔记的唯一标识
- * @param folderId 文件夹ID,表示该笔记所属的文件夹
- */
+ // Existing note construct
private WorkingNote(Context context, long noteId, long folderId) {
mContext = context;
mNoteId = noteId;
@@ -136,93 +137,59 @@ public class WorkingNote {
loadNote();
}
-
- /**
- * 加载指定笔记的信息。
- * 从数据库中查询指定ID的笔记的详细信息,并更新当前实例的状态。
- * 注意:此方法不处理查询失败或笔记不存在的情况。
- */
private void loadNote() {
- // 查询指定ID的笔记信息
Cursor cursor = mContext.getContentResolver().query(
ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, mNoteId), NOTE_PROJECTION, null,
null, null);
if (cursor != null) {
- // 如果查询结果不为空,尝试读取数据
if (cursor.moveToFirst()) {
- // 从查询结果中获取笔记的各个属性
mFolderId = cursor.getLong(NOTE_PARENT_ID_COLUMN);
mBgColorId = cursor.getInt(NOTE_BG_COLOR_ID_COLUMN);
mWidgetId = cursor.getInt(NOTE_WIDGET_ID_COLUMN);
mWidgetType = cursor.getInt(NOTE_WIDGET_TYPE_COLUMN);
mAlertDate = cursor.getLong(NOTE_ALERTED_DATE_COLUMN);
mModifiedDate = cursor.getLong(NOTE_MODIFIED_DATE_COLUMN);
+ mTop = cursor.getString(NOTE_TOP_COLUMN);
}
- // 关闭查询结果集
cursor.close();
} else {
- // 如果查询结果为空,记录错误并抛出异常
Log.e(TAG, "No note with id:" + mNoteId);
throw new IllegalArgumentException("Unable to find note with id " + mNoteId);
}
- // 加载笔记的附加数据,如内容、设置等
loadNoteData();
}
- /**
- * 加载笔记的附加数据。
- * 从数据库中查询指定ID笔记的附加信息(例如内容、设置等),并更新当前实例的状态。
- * 注意:此方法不处理查询失败或笔记数据不存在的情况。
- */
private void loadNoteData() {
- // 查询指定笔记ID的附加数据
Cursor cursor = mContext.getContentResolver().query(Notes.CONTENT_DATA_URI, DATA_PROJECTION,
- DataColumns.NOTE_ID + "=?", new String[]{
- String.valueOf(mNoteId)
+ DataColumns.NOTE_ID + "=?", new String[] {
+ String.valueOf(mNoteId)
}, null);
if (cursor != null) {
- // 如果查询结果不为空,尝试读取数据
if (cursor.moveToFirst()) {
do {
- // 根据数据类型处理不同的笔记内容
String type = cursor.getString(DATA_MIME_TYPE_COLUMN);
if (DataConstants.NOTE.equals(type)) {
- // 处理普通笔记内容
mContent = cursor.getString(DATA_CONTENT_COLUMN);
mMode = cursor.getInt(DATA_MODE_COLUMN);
mNote.setTextDataId(cursor.getLong(DATA_ID_COLUMN));
} else if (DataConstants.CALL_NOTE.equals(type)) {
- // 处理通话笔记内容
mNote.setCallDataId(cursor.getLong(DATA_ID_COLUMN));
} else {
- // 记录错误的笔记类型
Log.d(TAG, "Wrong note type with type:" + type);
}
} while (cursor.moveToNext());
}
- // 关闭查询结果集
cursor.close();
} else {
- // 如果查询结果为空,记录错误并抛出异常
Log.e(TAG, "No data with id:" + mNoteId);
throw new IllegalArgumentException("Unable to find note's data with id " + mNoteId);
}
}
- /**
- * 创建一个新的空笔记。
- *
- * @param context 上下文对象,用于访问应用资源和内容提供者。
- * @param folderId 笔记所属文件夹的ID。
- * @param widgetId 与笔记关联的小部件ID。
- * @param widgetType 与笔记关联的小部件类型。
- * @param defaultBgColorId 笔记的默认背景颜色ID。
- * @return 返回一个初始化好的空笔记对象。
- */
public static WorkingNote createEmptyNote(Context context, long folderId, int widgetId,
- int widgetType, int defaultBgColorId) {
+ int widgetType, int defaultBgColorId) {
WorkingNote note = new WorkingNote(context, folderId);
note.setBgColorId(defaultBgColorId);
note.setWidgetId(widgetId);
@@ -230,40 +197,24 @@ public class WorkingNote {
return note;
}
- /**
- * 根据笔记ID加载笔记。
- *
- * @param context 上下文对象,用于访问应用资源和内容提供者。
- * @param id 要加载的笔记的ID。
- * @return 返回一个根据指定ID加载的笔记对象。
- */
public static WorkingNote load(Context context, long id) {
return new WorkingNote(context, id, 0);
}
-
- /**
- * 保存笔记到数据库。
- * 如果笔记值得保存(即内容非空且未被标记为删除),且笔记不存在于数据库中或已存在于数据库但本地有修改,则进行保存操作。
- * 如果笔记存在对应的小部件,会更新小部件内容。
- *
- * @return 如果保存成功返回true,否则返回false。
- */
public synchronized boolean saveNote() {
- // 判断是否值得保存该笔记
if (isWorthSaving()) {
- // 检查数据库中是否已存在该笔记
if (!existInDatabase()) {
- // 为笔记生成新的ID
if ((mNoteId = Note.getNewNoteId(mContext, mFolderId)) == 0) {
Log.e(TAG, "Create new note fail with id:" + mNoteId);
return false;
}
}
- mNote.syncNote(mContext, mNoteId); // 同步笔记到数据库
+ mNote.syncNote(mContext, mNoteId);
- // 如果存在对应的小部件,更新小部件内容
+ /**
+ * Update widget content if there exist any widget of this note
+ */
if (mWidgetId != AppWidgetManager.INVALID_APPWIDGET_ID
&& mWidgetType != Notes.TYPE_WIDGET_INVALIDE
&& mNoteSettingStatusListener != null) {
@@ -275,23 +226,11 @@ public class WorkingNote {
}
}
- /**
- * 检查笔记是否已存在于数据库中。
- *
- * @return 如果笔记ID大于0,表示已存在于数据库,返回true;否则返回false。
- */
public boolean existInDatabase() {
return mNoteId > 0;
}
- /**
- * 判断笔记是否值得被保存。
- * 笔记不值得保存的情况包括:已被标记为删除、不存在于数据库中且内容为空、存在于数据库但未本地修改。
- *
- * @return 如果笔记值得保存返回true,否则返回false。
- */
private boolean isWorthSaving() {
- // 判断笔记是否值得保存
if (mIsDeleted || (!existInDatabase() && TextUtils.isEmpty(mContent))
|| (existInDatabase() && !mNote.isLocalModified())) {
return false;
@@ -300,23 +239,21 @@ public class WorkingNote {
}
}
- /**
- * 设置笔记设置状态监听器。
- *
- * @param l 笔记设置状态监听器对象。
- */
public void setOnSettingStatusChangedListener(NoteSettingChangedListener l) {
mNoteSettingStatusListener = l;
}
- /**
- * 设置提醒日期,并根据需要触发状态监听器。
- *
- * @param date 设置的提醒日期。
- * @param set 是否设置提醒。
- */
+ public void setTop(String Top){
+ if (!mTop.equals(Top)) {
+ mTop = Top;
+ mNote.setTopValue(NoteColumns.TOP,mTop);
+ }
+ if (mNoteSettingStatusListener != null) {
+ mNoteSettingStatusListener.onTopChanged(Top);
+ }
+ }
+
public void setAlertDate(long date, boolean set) {
- // 更新提醒日期并触发监听器
if (date != mAlertDate) {
mAlertDate = date;
mNote.setNoteValue(NoteColumns.ALERTED_DATE, String.valueOf(mAlertDate));
@@ -326,27 +263,15 @@ public class WorkingNote {
}
}
- /**
- * 标记笔记为已删除,并根据需要触发小部件变更监听器。
- *
- * @param mark 是否标记为已删除。
- */
public void markDeleted(boolean mark) {
mIsDeleted = mark;
- // 如果存在对应的小部件,触发小部件变更监听器
if (mWidgetId != AppWidgetManager.INVALID_APPWIDGET_ID
&& mWidgetType != Notes.TYPE_WIDGET_INVALIDE && mNoteSettingStatusListener != null) {
- mNoteSettingStatusListener.onWidgetChanged();
+ mNoteSettingStatusListener.onWidgetChanged();
}
}
- /**
- * 设置笔记背景颜色ID,并根据需要触发监听器。
- *
- * @param id 背景颜色的资源ID。
- */
public void setBgColorId(int id) {
- // 更新背景颜色ID并触发监听器
if (id != mBgColorId) {
mBgColorId = id;
if (mNoteSettingStatusListener != null) {
@@ -356,213 +281,130 @@ public class WorkingNote {
}
}
-
- /**
- * 设置勾选列表模式
- *
- * @param mode 模式值
- */
public void setCheckListMode(int mode) {
if (mMode != mode) {
- // 当前模式与新模式不同时,通知监听器模式发生变化
if (mNoteSettingStatusListener != null) {
mNoteSettingStatusListener.onCheckListModeChanged(mMode, mode);
}
mMode = mode;
- // 更新笔记中的模式值
mNote.setTextData(TextNote.MODE, String.valueOf(mMode));
}
}
- /**
- * 设置小部件类型
- *
- * @param type 小部件类型值
- */
public void setWidgetType(int type) {
if (type != mWidgetType) {
mWidgetType = type;
- // 更新笔记中小部件类型的值
mNote.setNoteValue(NoteColumns.WIDGET_TYPE, String.valueOf(mWidgetType));
}
}
- /**
- * 设置小部件ID
- *
- * @param id 小部件ID
- */
public void setWidgetId(int id) {
if (id != mWidgetId) {
mWidgetId = id;
- // 更新笔记中小部件ID的值
mNote.setNoteValue(NoteColumns.WIDGET_ID, String.valueOf(mWidgetId));
}
}
- /**
- * 设置工作文本
- *
- * @param text 工作文本内容
- */
public void setWorkingText(String text) {
if (!TextUtils.equals(mContent, text)) {
mContent = text;
- // 更新笔记中的文本内容
mNote.setTextData(DataColumns.CONTENT, mContent);
}
}
- /**
- * 转换为通话笔记
- *
- * @param phoneNumber 电话号码
- * @param callDate 通话日期
- */
+ public void setmContent(String text){
+ mContent = text;
+ }
+
public void convertToCallNote(String phoneNumber, long callDate) {
- // 设置通话日期和电话号码,并关联至通话记录文件夹
mNote.setCallData(CallNote.CALL_DATE, String.valueOf(callDate));
mNote.setCallData(CallNote.PHONE_NUMBER, phoneNumber);
mNote.setNoteValue(NoteColumns.PARENT_ID, String.valueOf(Notes.ID_CALL_RECORD_FOLDER));
}
- /**
- * 检查是否有定时提醒
- *
- * @return true表示设置了定时提醒,false表示未设置
- */
public boolean hasClockAlert() {
return (mAlertDate > 0 ? true : false);
}
- /**
- * 获取内容文本
- *
- * @return 笔记内容
- */
+ public int getTopId() {
+ if (mTop.equals("1")) {
+ return 1;
+ } else {
+ return 0;
+ }
+ }
+
public String getContent() {
return mContent;
}
- /**
- * 获取提醒日期
- *
- * @return 提醒日期时间戳
- */
public long getAlertDate() {
return mAlertDate;
}
- /**
- * 获取最后修改日期
- *
- * @return 最后修改日期时间戳
- */
public long getModifiedDate() {
return mModifiedDate;
}
- /**
- * 获取背景颜色资源ID
- *
- * @return 背景颜色资源ID
- */
public int getBgColorResId() {
return NoteBgResources.getNoteBgResource(mBgColorId);
}
- /**
- * 获取背景颜色ID
- *
- * @return 背景颜色ID
- */
public int getBgColorId() {
return mBgColorId;
}
- /**
- * 获取标题背景资源ID
- *
- * @return 标题背景资源ID
- */
public int getTitleBgResId() {
return NoteBgResources.getNoteTitleBgResource(mBgColorId);
}
- /**
- * 获取当前勾选列表模式
- *
- * @return 勾选列表模式值
- */
public int getCheckListMode() {
return mMode;
}
- /**
- * 获取笔记ID
- *
- * @return 笔记ID
- */
public long getNoteId() {
return mNoteId;
}
- /**
- * 获取文件夹ID
- *
- * @return 文件夹ID
- */
public long getFolderId() {
return mFolderId;
}
- /**
- * 获取小部件ID
- *
- * @return 小部件ID
- */
public int getWidgetId() {
return mWidgetId;
}
- /**
- * 获取小部件类型
- *
- * @return 小部件类型
- */
public int getWidgetType() {
return mWidgetType;
}
- /**
- * 笔记设置变化监听器接口
- */
public interface NoteSettingChangedListener {
/**
- * 当前笔记的背景颜色发生变化时调用
+ * Called when the background color of current note has just changed
*/
void onBackgroundColorChanged();
/**
- * 用户设置定时提醒时调用
- *
- * @param date 提醒日期
- * @param set 是否设置提醒
+ * Called when user set top
+ */
+ void onTopChanged(String Top);
+
+
+ /**
+ * Called when user set clock
*/
void onClockAlertChanged(long date, boolean set);
/**
- * 用户从小部件创建笔记时调用
+ * Call when user create note from widget
*/
void onWidgetChanged();
/**
- * 切换勾选列表模式和普通模式时调用
- *
- * @param oldMode 切换前的模式
- * @param newMode 切换后的模式
+ * Call when switch between check list mode and normal mode
+ * @param oldMode is previous mode before change
+ * @param newMode is new mode
*/
void onCheckListModeChanged(int oldMode, int newMode);
}
-
}
diff --git a/xiaomi-src/app/src/main/java/net/micode/notes/tool/BackupUtils.java b/xiaomi-src/main/java/net/micode/notes/tool/BackupUtils.java
similarity index 65%
rename from xiaomi-src/app/src/main/java/net/micode/notes/tool/BackupUtils.java
rename to xiaomi-src/main/java/net/micode/notes/tool/BackupUtils.java
index 8fc1c3f..39f6ec4 100644
--- a/xiaomi-src/app/src/main/java/net/micode/notes/tool/BackupUtils.java
+++ b/xiaomi-src/main/java/net/micode/notes/tool/BackupUtils.java
@@ -38,15 +38,9 @@ import java.io.PrintStream;
public class BackupUtils {
private static final String TAG = "BackupUtils";
- // 单例模式相关变量
+ // Singleton stuff
private static BackupUtils sInstance;
- /**
- * 获取BackupUtils的单例实例。
- *
- * @param context 上下文对象,用于访问应用全局功能。
- * @return 返回BackupUtils的单例实例。
- */
public static synchronized BackupUtils getInstance(Context context) {
if (sInstance == null) {
sInstance = new BackupUtils(context);
@@ -55,71 +49,43 @@ public class BackupUtils {
}
/**
- * 定义备份或恢复状态的标志。
+ * Following states are signs to represents backup or restore
+ * status
*/
- // 当前,SD卡未挂载
- public static final int STATE_SD_CARD_UNMOUONTED = 0;
- // 备份文件不存在
- public static final int STATE_BACKUP_FILE_NOT_EXIST = 1;
- // 数据格式不正确,可能被其他程序更改
- public static final int STATE_DATA_DESTROIED = 2;
- // 运行时异常导致恢复或备份失败
- public static final int STATE_SYSTEM_ERROR = 3;
- // 备份或恢复成功
- public static final int STATE_SUCCESS = 4;
+ // Currently, the sdcard is not mounted
+ public static final int STATE_SD_CARD_UNMOUONTED = 0;
+ // The backup file not exist
+ public static final int STATE_BACKUP_FILE_NOT_EXIST = 1;
+ // The data is not well formated, may be changed by other programs
+ public static final int STATE_DATA_DESTROIED = 2;
+ // Some run-time exception which causes restore or backup fails
+ public static final int STATE_SYSTEM_ERROR = 3;
+ // Backup or restore success
+ public static final int STATE_SUCCESS = 4;
private TextExport mTextExport;
- /**
- * BackupUtils的私有构造函数。
- *
- * @param context 上下文对象,用于初始化文本导出功能。
- */
private BackupUtils(Context context) {
mTextExport = new TextExport(context);
}
- /**
- * 检查外部存储是否可用。
- *
- * @return 如果外部存储可用返回true,否则返回false。
- */
private static boolean externalStorageAvailable() {
return Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState());
}
- /**
- * 导出数据到文本文件。
- *
- * @return 返回导出操作的状态码,详见STATE_*常量。
- */
public int exportToText() {
return mTextExport.exportToText();
}
- /**
- * 获取导出的文本文件名。
- *
- * @return 返回导出文本文件的名称。
- */
public String getExportedTextFileName() {
return mTextExport.mFileName;
}
- /**
- * 获取导出的文本文件目录。
- *
- * @return 返回导出文本文件所在的目录。
- */
public String getExportedTextFileDir() {
return mTextExport.mFileDirectory;
}
- /**
- * 内部类TextExport,用于执行文本导出操作。
- */
private static class TextExport {
- // 查询笔记时需要的列
private static final String[] NOTE_PROJECTION = {
NoteColumns.ID,
NoteColumns.MODIFIED_DATE,
@@ -127,12 +93,12 @@ public class BackupUtils {
NoteColumns.TYPE
};
- // 笔记列的索引
private static final int NOTE_COLUMN_ID = 0;
+
private static final int NOTE_COLUMN_MODIFIED_DATE = 1;
+
private static final int NOTE_COLUMN_SNIPPET = 2;
- // 查询数据时需要的列
private static final String[] DATA_PROJECTION = {
DataColumns.CONTENT,
DataColumns.MIME_TYPE,
@@ -142,79 +108,52 @@ public class BackupUtils {
DataColumns.DATA4,
};
-
- // 定义数据列的内容索引
private static final int DATA_COLUMN_CONTENT = 0;
- // 定义数据列的MIME类型索引
private static final int DATA_COLUMN_MIME_TYPE = 1;
- // 定义数据列的呼叫日期索引
private static final int DATA_COLUMN_CALL_DATE = 2;
- // 定义数据列的电话号码索引
private static final int DATA_COLUMN_PHONE_NUMBER = 4;
- // 用于导出笔记的文本格式数组
- private final String[] TEXT_FORMAT;
- // 定义文本格式的索引:文件夹名称
- private static final int FORMAT_FOLDER_NAME = 0;
- // 定义文本格式的索引:笔记日期
- private static final int FORMAT_NOTE_DATE = 1;
- // 定义文本格式的索引:笔记内容
- private static final int FORMAT_NOTE_CONTENT = 2;
+ private final String [] TEXT_FORMAT;
+ private static final int FORMAT_FOLDER_NAME = 0;
+ private static final int FORMAT_NOTE_DATE = 1;
+ private static final int FORMAT_NOTE_CONTENT = 2;
- // 上下文对象,用于访问资源和内容解析器
private Context mContext;
- // 文件名
private String mFileName;
- // 文件目录
private String mFileDirectory;
- /**
- * 构造函数
- *
- * @param context 上下文对象,通常是一个Activity或者Application对象
- */
public TextExport(Context context) {
- // 初始化文本格式数组
TEXT_FORMAT = context.getResources().getStringArray(R.array.format_for_exported_note);
mContext = context;
mFileName = "";
mFileDirectory = "";
}
- /**
- * 根据索引获取文本格式
- *
- * @param id 索引ID
- * @return 返回对应索引的文本格式
- */
private String getFormat(int id) {
return TEXT_FORMAT[id];
}
/**
- * 将指定文件夹的笔记导出为文本
- *
- * @param folderId 文件夹ID
- * @param ps 打印流,用于写入导出的文本内容
+ * Export the folder identified by folder id to text
*/
private void exportFolderToText(String folderId, PrintStream ps) {
- // 查询属于该文件夹的笔记
+ // Query notes belong to this folder
Cursor notesCursor = mContext.getContentResolver().query(Notes.CONTENT_NOTE_URI,
- NOTE_PROJECTION, NoteColumns.PARENT_ID + "=?", new String[]{
- folderId
+ NOTE_PROJECTION, NoteColumns.PARENT_ID + "=?", new String[] {
+ folderId
}, null);
if (notesCursor != null) {
if (notesCursor.moveToFirst()) {
do {
- // 打印笔记的最后修改日期
+ // Print note's last modified date
ps.println(String.format(getFormat(FORMAT_NOTE_DATE), DateFormat.format(
mContext.getString(R.string.format_datetime_mdhm),
notesCursor.getLong(NOTE_COLUMN_MODIFIED_DATE))));
- // 导出该笔记的内容到文本
+ // Query data belong to this note
String noteId = notesCursor.getString(NOTE_COLUMN_ID);
exportNoteToText(noteId, ps);
} while (notesCursor.moveToNext());
@@ -223,18 +162,13 @@ public class BackupUtils {
}
}
-
/**
- * 将指定id的笔记导出到打印流中
- *
- * @param noteId 笔记的id
- * @param ps 打印流,用于输出笔记内容
+ * Export note identified by id to a print stream
*/
private void exportNoteToText(String noteId, PrintStream ps) {
- // 查询指定id的笔记数据
Cursor dataCursor = mContext.getContentResolver().query(Notes.CONTENT_DATA_URI,
- DATA_PROJECTION, DataColumns.NOTE_ID + "=?", new String[]{
- noteId
+ DATA_PROJECTION, DataColumns.NOTE_ID + "=?", new String[] {
+ noteId
}, null);
if (dataCursor != null) {
@@ -242,25 +176,25 @@ public class BackupUtils {
do {
String mimeType = dataCursor.getString(DATA_COLUMN_MIME_TYPE);
if (DataConstants.CALL_NOTE.equals(mimeType)) {
- // 处理通话记录类型的笔记
+ // Print phone number
String phoneNumber = dataCursor.getString(DATA_COLUMN_PHONE_NUMBER);
long callDate = dataCursor.getLong(DATA_COLUMN_CALL_DATE);
String location = dataCursor.getString(DATA_COLUMN_CONTENT);
- // 打印电话号码、通话时间、附件位置
if (!TextUtils.isEmpty(phoneNumber)) {
ps.println(String.format(getFormat(FORMAT_NOTE_CONTENT),
phoneNumber));
}
+ // Print call date
ps.println(String.format(getFormat(FORMAT_NOTE_CONTENT), DateFormat
.format(mContext.getString(R.string.format_datetime_mdhm),
callDate)));
+ // Print call attachment location
if (!TextUtils.isEmpty(location)) {
ps.println(String.format(getFormat(FORMAT_NOTE_CONTENT),
location));
}
} else if (DataConstants.NOTE.equals(mimeType)) {
- // 处理普通笔记类型
String content = dataCursor.getString(DATA_COLUMN_CONTENT);
if (!TextUtils.isEmpty(content)) {
ps.println(String.format(getFormat(FORMAT_NOTE_CONTENT),
@@ -271,9 +205,9 @@ public class BackupUtils {
}
dataCursor.close();
}
- // 在每个笔记内容之间打印一行分隔符
+ // print a line separator between note
try {
- ps.write(new byte[]{
+ ps.write(new byte[] {
Character.LINE_SEPARATOR, Character.LETTER_NUMBER
});
} catch (IOException e) {
@@ -282,25 +216,20 @@ public class BackupUtils {
}
/**
- * 将所有笔记以文本格式导出
- *
- * @return 导出操作的状态码,成功返回STATE_SUCCESS,否则返回其他错误状态码
+ * Note will be exported as text which is user readable
*/
public int exportToText() {
- // 检查外部存储器是否可用
if (!externalStorageAvailable()) {
Log.d(TAG, "Media was not mounted");
return STATE_SD_CARD_UNMOUONTED;
}
- // 获取用于导出的打印流
PrintStream ps = getExportToTextPrintStream();
if (ps == null) {
Log.e(TAG, "get print stream error");
return STATE_SYSTEM_ERROR;
}
-
- // 首先导出文件夹及其包含的笔记
+ // First export folder and its notes
Cursor folderCursor = mContext.getContentResolver().query(
Notes.CONTENT_NOTE_URI,
NOTE_PROJECTION,
@@ -311,9 +240,9 @@ public class BackupUtils {
if (folderCursor != null) {
if (folderCursor.moveToFirst()) {
do {
- // 打印文件夹名称
+ // Print folder's name
String folderName = "";
- if (folderCursor.getLong(NOTE_COLUMN_ID) == Notes.ID_CALL_RECORD_FOLDER) {
+ if(folderCursor.getLong(NOTE_COLUMN_ID) == Notes.ID_CALL_RECORD_FOLDER) {
folderName = mContext.getString(R.string.call_record_folder_name);
} else {
folderName = folderCursor.getString(NOTE_COLUMN_SNIPPET);
@@ -322,14 +251,13 @@ public class BackupUtils {
ps.println(String.format(getFormat(FORMAT_FOLDER_NAME), folderName));
}
String folderId = folderCursor.getString(NOTE_COLUMN_ID);
- // 导出文件夹中的笔记
exportFolderToText(folderId, ps);
} while (folderCursor.moveToNext());
}
folderCursor.close();
}
- // 导出根文件夹中的笔记
+ // Export notes in root's folder
Cursor noteCursor = mContext.getContentResolver().query(
Notes.CONTENT_NOTE_URI,
NOTE_PROJECTION,
@@ -339,11 +267,10 @@ public class BackupUtils {
if (noteCursor != null) {
if (noteCursor.moveToFirst()) {
do {
- // 打印笔记的修改时间
ps.println(String.format(getFormat(FORMAT_NOTE_DATE), DateFormat.format(
mContext.getString(R.string.format_datetime_mdhm),
noteCursor.getLong(NOTE_COLUMN_MODIFIED_DATE))));
- // 导出笔记内容
+ // Query data belong to this note
String noteId = noteCursor.getString(NOTE_COLUMN_ID);
exportNoteToText(noteId, ps);
} while (noteCursor.moveToNext());
@@ -355,72 +282,51 @@ public class BackupUtils {
return STATE_SUCCESS;
}
-
/**
- * 获取指向文件{@generateExportedTextFile}的打印流
- * 该方法尝试在SD卡上生成一个指定格式的文本文件,并返回指向该文件的PrintStream对象。
- * 如果文件生成失败,则返回null。
- *
- * @return PrintStream 指向生成的文本文件的打印流,如果失败则返回null。
+ * Get a print stream pointed to the file {@generateExportedTextFile}
*/
private PrintStream getExportToTextPrintStream() {
- // 生成文件
File file = generateFileMountedOnSDcard(mContext, R.string.file_path,
R.string.file_name_txt_format);
if (file == null) {
- Log.e(TAG, "create file to exported failed"); // 文件创建失败
+ Log.e(TAG, "create file to exported failed");
return null;
}
- // 更新文件名和文件目录信息
mFileName = file.getName();
mFileDirectory = mContext.getString(R.string.file_path);
-
PrintStream ps = null;
try {
- FileOutputStream fos = new FileOutputStream(file); // 创建文件输出流
- ps = new PrintStream(fos); // 将文件输出流包装成PrintStream
+ FileOutputStream fos = new FileOutputStream(file);
+ ps = new PrintStream(fos);
} catch (FileNotFoundException e) {
e.printStackTrace();
- return null; // 文件未找到异常,返回null
+ return null;
} catch (NullPointerException e) {
e.printStackTrace();
- return null; // 空指针异常,返回null
+ return null;
}
- return ps; // 返回PrintStream对象
+ return ps;
}
-
}
/**
- * 在SD卡上生成用于存储导入数据的文本文件
- *
- * @param context 上下文对象,用于访问应用的资源和内容提供者
- * @param filePathResId 路径字符串资源ID,指定文件存储的路径
- * @param fileNameFormatResId 文件名格式字符串资源ID,用于生成带有日期的文件名
- * @return 返回创建的文件对象,如果创建失败则返回null
+ * Generate the text file to store imported data
*/
private static File generateFileMountedOnSDcard(Context context, int filePathResId, int fileNameFormatResId) {
StringBuilder sb = new StringBuilder();
- // 拼接SD卡的根目录
sb.append(Environment.getExternalStorageDirectory());
- // 拼接从资源id获取的路径字符串
sb.append(context.getString(filePathResId));
- // 创建文件目录对象
File filedir = new File(sb.toString());
- // 拼接文件名,文件名包含日期信息
sb.append(context.getString(
fileNameFormatResId,
DateFormat.format(context.getString(R.string.format_date_ymd),
System.currentTimeMillis())));
- // 根据拼接的路径创建文件对象
File file = new File(sb.toString());
try {
- // 如果文件目录不存在,则创建文件目录
if (!filedir.exists()) {
filedir.mkdir();
}
- // 如果文件不存在,则创建新文件
if (!file.exists()) {
file.createNewFile();
}
@@ -431,10 +337,8 @@ public class BackupUtils {
e.printStackTrace();
}
- // 如果遇到异常,返回null
return null;
}
-
}
diff --git a/xiaomi-src/app/src/main/java/net/micode/notes/tool/DataUtils.java b/xiaomi-src/main/java/net/micode/notes/tool/DataUtils.java
similarity index 65%
rename from xiaomi-src/app/src/main/java/net/micode/notes/tool/DataUtils.java
rename to xiaomi-src/main/java/net/micode/notes/tool/DataUtils.java
index 4149710..0487afa 100644
--- a/xiaomi-src/app/src/main/java/net/micode/notes/tool/DataUtils.java
+++ b/xiaomi-src/main/java/net/micode/notes/tool/DataUtils.java
@@ -16,6 +16,7 @@
package net.micode.notes.tool;
+import android.app.Activity;
import android.content.ContentProviderOperation;
import android.content.ContentProviderResult;
import android.content.ContentResolver;
@@ -25,26 +26,27 @@ import android.content.OperationApplicationException;
import android.database.Cursor;
import android.os.RemoteException;
import android.util.Log;
+import android.database.sqlite.SQLiteDatabase;
+import android.widget.Toast;
+import net.micode.notes.R;
import net.micode.notes.data.Notes;
import net.micode.notes.data.Notes.CallNote;
import net.micode.notes.data.Notes.NoteColumns;
+import net.micode.notes.data.NotesDatabaseHelper;
+import net.micode.notes.data.NotesProvider;
+import net.micode.notes.gtask.data.SqlNote;
+import net.micode.notes.model.Note;
+import net.micode.notes.ui.NoteEditActivity;
import net.micode.notes.ui.NotesListAdapter.AppWidgetAttribute;
import java.util.ArrayList;
import java.util.HashSet;
+import java.util.TreeSet;
public class DataUtils {
public static final String TAG = "DataUtils";
-
- /**
- * 批量删除笔记
- *
- * @param resolver 内容解析器
- * @param ids 要删除的笔记ID集合
- * @return 如果删除成功或集合为空或为null,则返回true,否则返回false
- */
public static boolean batchDeleteNotes(ContentResolver resolver, HashSet ids) {
if (ids == null) {
Log.d(TAG, "the ids is null");
@@ -55,10 +57,9 @@ public class DataUtils {
return true;
}
- // 构建删除操作的列表
ArrayList operationList = new ArrayList();
for (long id : ids) {
- if (id == Notes.ID_ROOT_FOLDER) {
+ if(id == Notes.ID_ROOT_FOLDER) {
Log.e(TAG, "Don't delete system folder root");
continue;
}
@@ -68,7 +69,6 @@ public class DataUtils {
}
try {
ContentProviderResult[] results = resolver.applyBatch(Notes.AUTHORITY, operationList);
- // 检查删除结果
if (results == null || results.length == 0 || results[0] == null) {
Log.d(TAG, "delete notes failed, ids:" + ids.toString());
return false;
@@ -82,14 +82,6 @@ public class DataUtils {
return false;
}
- /**
- * 将笔记移动到指定文件夹
- *
- * @param resolver 内容解析器
- * @param id 笔记ID
- * @param srcFolderId 原始文件夹ID
- * @param desFolderId 目标文件夹ID
- */
public static void moveNoteToFoler(ContentResolver resolver, long id, long srcFolderId, long desFolderId) {
ContentValues values = new ContentValues();
values.put(NoteColumns.PARENT_ID, desFolderId);
@@ -98,22 +90,13 @@ public class DataUtils {
resolver.update(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, id), values, null, null);
}
- /**
- * 批量将笔记移动到指定文件夹
- *
- * @param resolver 内容解析器
- * @param ids 要移动的笔记ID集合
- * @param folderId 目标文件夹ID
- * @return 如果移动成功或集合为空或为null,则返回true,否则返回false
- */
public static boolean batchMoveToFolder(ContentResolver resolver, HashSet ids,
- long folderId) {
+ long folderId) {
if (ids == null) {
Log.d(TAG, "the ids is null");
return true;
}
- // 构建更新操作的列表
ArrayList operationList = new ArrayList();
for (long id : ids) {
ContentProviderOperation.Builder builder = ContentProviderOperation
@@ -125,9 +108,8 @@ public class DataUtils {
try {
ContentProviderResult[] results = resolver.applyBatch(Notes.AUTHORITY, operationList);
- // 检查移动结果
if (results == null || results.length == 0 || results[0] == null) {
- Log.d(TAG, "move notes failed, ids:" + ids.toString());
+ Log.d(TAG, "delete notes failed, ids:" + ids.toString());
return false;
}
return true;
@@ -140,21 +122,18 @@ public class DataUtils {
}
/**
- * 获取除系统文件夹外的所有用户文件夹数量
- *
- * @param resolver 内容解析器
- * @return 用户文件夹数量
+ * Get the all folder count except system folders {@link Notes#TYPE_SYSTEM}}
*/
public static int getUserFolderCount(ContentResolver resolver) {
- Cursor cursor = resolver.query(Notes.CONTENT_NOTE_URI,
- new String[]{"COUNT(*)"},
+ Cursor cursor =resolver.query(Notes.CONTENT_NOTE_URI,
+ new String[] { "COUNT(*)" },
NoteColumns.TYPE + "=? AND " + NoteColumns.PARENT_ID + "<>?",
- new String[]{String.valueOf(Notes.TYPE_FOLDER), String.valueOf(Notes.ID_TRASH_FOLER)},
+ new String[] { String.valueOf(Notes.TYPE_FOLDER), String.valueOf(Notes.ID_TRASH_FOLER)},
null);
int count = 0;
- if (cursor != null) {
- if (cursor.moveToFirst()) {
+ if(cursor != null) {
+ if(cursor.moveToFirst()) {
try {
count = cursor.getInt(0);
} catch (IndexOutOfBoundsException e) {
@@ -167,19 +146,11 @@ public class DataUtils {
return count;
}
- /**
- * 检查指定类型的笔记在数据库中是否可见
- *
- * @param resolver 内容解析器
- * @param noteId 笔记ID
- * @param type 笔记类型
- * @return 如果可见,则返回true,否则返回false
- */
public static boolean visibleInNoteDatabase(ContentResolver resolver, long noteId, int type) {
Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId),
null,
NoteColumns.TYPE + "=? AND " + NoteColumns.PARENT_ID + "<>" + Notes.ID_TRASH_FOLER,
- new String[]{String.valueOf(type)},
+ new String [] {String.valueOf(type)},
null);
boolean exist = false;
@@ -192,13 +163,6 @@ public class DataUtils {
return exist;
}
- /**
- * 检查指定的笔记ID在数据库中是否存在
- *
- * @param resolver 内容解析器
- * @param noteId 笔记ID
- * @return 如果存在,则返回true,否则返回false
- */
public static boolean existInNoteDatabase(ContentResolver resolver, long noteId) {
Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId),
null, null, null, null);
@@ -213,13 +177,6 @@ public class DataUtils {
return exist;
}
- /**
- * 检查指定的数据ID在数据库中是否存在
- *
- * @param resolver 内容解析器
- * @param dataId 数据ID
- * @return 如果存在,则返回true,否则返回false
- */
public static boolean existInDataDatabase(ContentResolver resolver, long dataId) {
Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_DATA_URI, dataId),
null, null, null, null);
@@ -234,22 +191,15 @@ public class DataUtils {
return exist;
}
- /**
- * 检查文件夹名称是否在数据库中已存在(不包括系统文件夹)
- *
- * @param resolver 内容解析器
- * @param name 文件夹名称
- * @return 如果已存在,则返回true,否则返回false
- */
public static boolean checkVisibleFolderName(ContentResolver resolver, String name) {
Cursor cursor = resolver.query(Notes.CONTENT_NOTE_URI, null,
NoteColumns.TYPE + "=" + Notes.TYPE_FOLDER +
- " AND " + NoteColumns.PARENT_ID + "<>" + Notes.ID_TRASH_FOLER +
- " AND " + NoteColumns.SNIPPET + "=?",
- new String[]{name}, null);
+ " AND " + NoteColumns.PARENT_ID + "<>" + Notes.ID_TRASH_FOLER +
+ " AND " + NoteColumns.SNIPPET + "=?",
+ new String[] { name }, null);
boolean exist = false;
- if (cursor != null) {
- if (cursor.getCount() > 0) {
+ if(cursor != null) {
+ if(cursor.getCount() > 0) {
exist = true;
}
cursor.close();
@@ -257,18 +207,11 @@ public class DataUtils {
return exist;
}
- /**
- * 获取指定文件夹中的笔记小部件信息集合
- *
- * @param resolver 内容解析器
- * @param folderId 文件夹ID
- * @return 笔记小部件信息集合
- */
public static HashSet getFolderNoteWidget(ContentResolver resolver, long folderId) {
Cursor c = resolver.query(Notes.CONTENT_NOTE_URI,
- new String[]{NoteColumns.WIDGET_ID, NoteColumns.WIDGET_TYPE},
+ new String[] { NoteColumns.WIDGET_ID, NoteColumns.WIDGET_TYPE },
NoteColumns.PARENT_ID + "=?",
- new String[]{String.valueOf(folderId)},
+ new String[] { String.valueOf(folderId) },
null);
HashSet set = null;
@@ -291,18 +234,11 @@ public class DataUtils {
return set;
}
- /**
- * 通过笔记ID获取关联的通话号码
- *
- * @param resolver 内容解析器
- * @param noteId 笔记ID
- * @return 通话号码,如果未找到则返回空字符串
- */
public static String getCallNumberByNoteId(ContentResolver resolver, long noteId) {
Cursor cursor = resolver.query(Notes.CONTENT_DATA_URI,
- new String[]{CallNote.PHONE_NUMBER},
+ new String [] { CallNote.PHONE_NUMBER },
CallNote.NOTE_ID + "=? AND " + CallNote.MIME_TYPE + "=?",
- new String[]{String.valueOf(noteId), CallNote.CONTENT_ITEM_TYPE},
+ new String [] { String.valueOf(noteId), CallNote.CONTENT_ITEM_TYPE },
null);
if (cursor != null && cursor.moveToFirst()) {
@@ -317,20 +253,12 @@ public class DataUtils {
return "";
}
- /**
- * 根据电话号码和通话日期获取对应的笔记ID
- *
- * @param resolver 内容解析器
- * @param phoneNumber 电话号码
- * @param callDate 通话日期
- * @return 笔记ID,未找到则返回0
- */
public static long getNoteIdByPhoneNumberAndCallDate(ContentResolver resolver, String phoneNumber, long callDate) {
Cursor cursor = resolver.query(Notes.CONTENT_DATA_URI,
- new String[]{CallNote.NOTE_ID},
+ new String [] { CallNote.NOTE_ID },
CallNote.CALL_DATE + "=? AND " + CallNote.MIME_TYPE + "=? AND PHONE_NUMBERS_EQUAL("
- + CallNote.PHONE_NUMBER + ",?)",
- new String[]{String.valueOf(callDate), CallNote.CONTENT_ITEM_TYPE, phoneNumber},
+ + CallNote.PHONE_NUMBER + ",?)",
+ new String [] { String.valueOf(callDate), CallNote.CONTENT_ITEM_TYPE, phoneNumber },
null);
if (cursor != null) {
@@ -346,49 +274,30 @@ public class DataUtils {
return 0;
}
- /**
- * 根据笔记ID从数据库中获取笔记的摘要。
- *
- * @param resolver 内容解析器,用于查询数据库。
- * @param noteId 笔记的ID,用于定位特定的笔记。
- * @return 笔记的摘要字符串。如果找不到对应的笔记,将抛出IllegalArgumentException。
- */
public static String getSnippetById(ContentResolver resolver, long noteId) {
- // 使用内容解析器查询特定ID的笔记的摘要
Cursor cursor = resolver.query(Notes.CONTENT_NOTE_URI,
- new String[]{NoteColumns.SNIPPET},
+ new String [] { NoteColumns.SNIPPET },
NoteColumns.ID + "=?",
- new String[]{String.valueOf(noteId)},
+ new String [] { String.valueOf(noteId)},
null);
if (cursor != null) {
String snippet = "";
- // 如果查询结果不为空,尝试获取摘要
if (cursor.moveToFirst()) {
snippet = cursor.getString(0);
}
- // 关闭游标
cursor.close();
return snippet;
}
- // 如果找不到指定ID的笔记,抛出异常
throw new IllegalArgumentException("Note is not found with id: " + noteId);
}
- /**
- * 格式化摘要字符串。
- * 主要用于去除字符串两端的空白字符,以及截取至第一个换行符之前的内容。
- *
- * @param snippet 需要格式化的摘要字符串。
- * @return 格式化后的摘要字符串。
- */
public static String getFormattedSnippet(String snippet) {
- // 如果摘要字符串不为空,进行格式化处理
if (snippet != null) {
- snippet = snippet.trim(); // 去除两端的空白字符
- int index = snippet.indexOf('\n'); // 查找第一个换行符的位置
+ snippet = snippet.trim();
+ int index = snippet.indexOf('\n');
if (index != -1) {
- snippet = snippet.substring(0, index); // 截取至第一个换行符之前
+ snippet = snippet.substring(0, index);
}
}
return snippet;
diff --git a/xiaomi-src/main/java/net/micode/notes/tool/GTaskStringUtils.java b/xiaomi-src/main/java/net/micode/notes/tool/GTaskStringUtils.java
new file mode 100644
index 0000000..666b729
--- /dev/null
+++ b/xiaomi-src/main/java/net/micode/notes/tool/GTaskStringUtils.java
@@ -0,0 +1,113 @@
+/*
+ * 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.tool;
+
+public class GTaskStringUtils {
+
+ public final static String GTASK_JSON_ACTION_ID = "action_id";
+
+ public final static String GTASK_JSON_ACTION_LIST = "action_list";
+
+ public final static String GTASK_JSON_ACTION_TYPE = "action_type";
+
+ public final static String GTASK_JSON_ACTION_TYPE_CREATE = "create";
+
+ public final static String GTASK_JSON_ACTION_TYPE_GETALL = "get_all";
+
+ public final static String GTASK_JSON_ACTION_TYPE_MOVE = "move";
+
+ public final static String GTASK_JSON_ACTION_TYPE_UPDATE = "update";
+
+ public final static String GTASK_JSON_CREATOR_ID = "creator_id";
+
+ public final static String GTASK_JSON_CHILD_ENTITY = "child_entity";
+
+ public final static String GTASK_JSON_CLIENT_VERSION = "client_version";
+
+ public final static String GTASK_JSON_COMPLETED = "completed";
+
+ public final static String GTASK_JSON_CURRENT_LIST_ID = "current_list_id";
+
+ public final static String GTASK_JSON_DEFAULT_LIST_ID = "default_list_id";
+
+ public final static String GTASK_JSON_DELETED = "deleted";
+
+ public final static String GTASK_JSON_DEST_LIST = "dest_list";
+
+ public final static String GTASK_JSON_DEST_PARENT = "dest_parent";
+
+ public final static String GTASK_JSON_DEST_PARENT_TYPE = "dest_parent_type";
+
+ public final static String GTASK_JSON_ENTITY_DELTA = "entity_delta";
+
+ public final static String GTASK_JSON_ENTITY_TYPE = "entity_type";
+
+ public final static String GTASK_JSON_GET_DELETED = "get_deleted";
+
+ public final static String GTASK_JSON_ID = "id";
+
+ public final static String GTASK_JSON_INDEX = "index";
+
+ public final static String GTASK_JSON_LAST_MODIFIED = "last_modified";
+
+ public final static String GTASK_JSON_LATEST_SYNC_POINT = "latest_sync_point";
+
+ public final static String GTASK_JSON_LIST_ID = "list_id";
+
+ public final static String GTASK_JSON_LISTS = "lists";
+
+ public final static String GTASK_JSON_NAME = "name";
+
+ public final static String GTASK_JSON_NEW_ID = "new_id";
+
+ public final static String GTASK_JSON_NOTES = "notes";
+
+ public final static String GTASK_JSON_PARENT_ID = "parent_id";
+
+ public final static String GTASK_JSON_PRIOR_SIBLING_ID = "prior_sibling_id";
+
+ public final static String GTASK_JSON_RESULTS = "results";
+
+ public final static String GTASK_JSON_SOURCE_LIST = "source_list";
+
+ public final static String GTASK_JSON_TASKS = "tasks";
+
+ public final static String GTASK_JSON_TYPE = "type";
+
+ public final static String GTASK_JSON_TYPE_GROUP = "GROUP";
+
+ public final static String GTASK_JSON_TYPE_TASK = "TASK";
+
+ public final static String GTASK_JSON_USER = "user";
+
+ public final static String MIUI_FOLDER_PREFFIX = "[MIUI_Notes]";
+
+ public final static String FOLDER_DEFAULT = "Default";
+
+ public final static String FOLDER_CALL_NOTE = "Call_Note";
+
+ public final static String FOLDER_META = "METADATA";
+
+ public final static String META_HEAD_GTASK_ID = "meta_gid";
+
+ public final static String META_HEAD_NOTE = "meta_note";
+
+ public final static String META_HEAD_DATA = "meta_data";
+
+ public final static String META_NOTE_NAME = "[META INFO] DON'T UPDATE AND DELETE";
+
+}
diff --git a/xiaomi-src/main/java/net/micode/notes/tool/ResourceParser.java b/xiaomi-src/main/java/net/micode/notes/tool/ResourceParser.java
new file mode 100644
index 0000000..1ad3ad6
--- /dev/null
+++ b/xiaomi-src/main/java/net/micode/notes/tool/ResourceParser.java
@@ -0,0 +1,181 @@
+/*
+ * 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.tool;
+
+import android.content.Context;
+import android.preference.PreferenceManager;
+
+import net.micode.notes.R;
+import net.micode.notes.ui.NotesPreferenceActivity;
+
+public class ResourceParser {
+
+ public static final int YELLOW = 0;
+ public static final int BLUE = 1;
+ public static final int WHITE = 2;
+ public static final int GREEN = 3;
+ public static final int RED = 4;
+
+ public static final int BG_DEFAULT_COLOR = YELLOW;
+
+ public static final int TEXT_SMALL = 0;
+ public static final int TEXT_MEDIUM = 1;
+ public static final int TEXT_LARGE = 2;
+ public static final int TEXT_SUPER = 3;
+
+ public static final int BG_DEFAULT_FONT_SIZE = TEXT_MEDIUM;
+
+ public static class NoteBgResources {
+ private final static int [] BG_EDIT_RESOURCES = new int [] {
+ R.drawable.edit_yellow,
+ R.drawable.edit_blue,
+ R.drawable.edit_white,
+ R.drawable.edit_green,
+ R.drawable.edit_red
+ };
+
+ private final static int [] BG_EDIT_TITLE_RESOURCES = new int [] {
+ R.drawable.edit_title_yellow,
+ R.drawable.edit_title_blue,
+ R.drawable.edit_title_white,
+ R.drawable.edit_title_green,
+ R.drawable.edit_title_red
+ };
+
+ public static int getNoteBgResource(int id) {
+ return BG_EDIT_RESOURCES[id];
+ }
+
+ public static int getNoteTitleBgResource(int id) {
+ return BG_EDIT_TITLE_RESOURCES[id];
+ }
+ }
+
+ public static int getDefaultBgId(Context context) {
+ if (PreferenceManager.getDefaultSharedPreferences(context).getBoolean(
+ NotesPreferenceActivity.PREFERENCE_SET_BG_COLOR_KEY, false)) {
+ return (int) (Math.random() * NoteBgResources.BG_EDIT_RESOURCES.length);
+ } else {
+ return BG_DEFAULT_COLOR;
+ }
+ }
+
+ public static class NoteItemBgResources {
+ private final static int [] BG_FIRST_RESOURCES = new int [] {
+ R.drawable.list_yellow_up,
+ R.drawable.list_blue_up,
+ R.drawable.list_white_up,
+ R.drawable.list_green_up,
+ R.drawable.list_red_up
+ };
+
+ private final static int [] BG_NORMAL_RESOURCES = new int [] {
+ R.drawable.list_yellow_middle,
+ R.drawable.list_blue_middle,
+ R.drawable.list_white_middle,
+ R.drawable.list_green_middle,
+ R.drawable.list_red_middle
+ };
+
+ private final static int [] BG_LAST_RESOURCES = new int [] {
+ R.drawable.list_yellow_down,
+ R.drawable.list_blue_down,
+ R.drawable.list_white_down,
+ R.drawable.list_green_down,
+ R.drawable.list_red_down,
+ };
+
+ private final static int [] BG_SINGLE_RESOURCES = new int [] {
+ R.drawable.list_yellow_single,
+ R.drawable.list_blue_single,
+ R.drawable.list_white_single,
+ R.drawable.list_green_single,
+ R.drawable.list_red_single
+ };
+
+ public static int getNoteBgFirstRes(int id) {
+ return BG_FIRST_RESOURCES[id];
+ }
+
+ public static int getNoteBgLastRes(int id) {
+ return BG_LAST_RESOURCES[id];
+ }
+
+ public static int getNoteBgSingleRes(int id) {
+ return BG_SINGLE_RESOURCES[id];
+ }
+
+ public static int getNoteBgNormalRes(int id) {
+ return BG_NORMAL_RESOURCES[id];
+ }
+
+ public static int getFolderBgRes() {
+ return R.drawable.list_folder;
+ }
+ }
+
+ public static class WidgetBgResources {
+ private final static int [] BG_2X_RESOURCES = new int [] {
+ R.drawable.widget_2x_yellow,
+ R.drawable.widget_2x_blue,
+ R.drawable.widget_2x_white,
+ R.drawable.widget_2x_green,
+ R.drawable.widget_2x_red,
+ };
+
+ public static int getWidget2xBgResource(int id) {
+ return BG_2X_RESOURCES[id];
+ }
+
+ private final static int [] BG_4X_RESOURCES = new int [] {
+ R.drawable.widget_4x_yellow,
+ R.drawable.widget_4x_blue,
+ R.drawable.widget_4x_white,
+ R.drawable.widget_4x_green,
+ R.drawable.widget_4x_red
+ };
+
+ public static int getWidget4xBgResource(int id) {
+ return BG_4X_RESOURCES[id];
+ }
+ }
+
+ public static class TextAppearanceResources {
+ private final static int [] TEXTAPPEARANCE_RESOURCES = new int [] {
+ R.style.TextAppearanceNormal,
+ R.style.TextAppearanceMedium,
+ R.style.TextAppearanceLarge,
+ R.style.TextAppearanceSuper
+ };
+
+ public static int getTexAppearanceResource(int id) {
+ /**
+ * HACKME: Fix bug of store the resource id in shared preference.
+ * The id may larger than the length of resources, in this case,
+ * return the {@link ResourceParser#BG_DEFAULT_FONT_SIZE}
+ */
+ if (id >= TEXTAPPEARANCE_RESOURCES.length) {
+ return BG_DEFAULT_FONT_SIZE;
+ }
+ return TEXTAPPEARANCE_RESOURCES[id];
+ }
+
+ public static int getResourcesSize() {
+ return TEXTAPPEARANCE_RESOURCES.length;
+ }
+ }
+}
diff --git a/xiaomi-src/app/src/main/java/net/micode/notes/ui/AlarmAlertActivity.java b/xiaomi-src/main/java/net/micode/notes/ui/AlarmAlertActivity.java
similarity index 74%
rename from xiaomi-src/app/src/main/java/net/micode/notes/ui/AlarmAlertActivity.java
rename to xiaomi-src/main/java/net/micode/notes/ui/AlarmAlertActivity.java
index 3c77e81..3e6173b 100644
--- a/xiaomi-src/app/src/main/java/net/micode/notes/ui/AlarmAlertActivity.java
+++ b/xiaomi-src/main/java/net/micode/notes/ui/AlarmAlertActivity.java
@@ -1,3 +1,4 @@
+
/*
* Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
*
@@ -40,33 +41,20 @@ import net.micode.notes.tool.DataUtils;
import java.io.IOException;
-/*
- * AlarmAlertActivity 类用于处理提醒通知的界面和声音播放。
- * 当一个笔记的提醒时间到达时,这个活动会被启动,显示提醒信息并播放提醒声音。
- */
public class AlarmAlertActivity extends Activity implements OnClickListener, OnDismissListener {
- // 笔记的ID
private long mNoteId;
- // 笔记内容的简短预览
private String mSnippet;
- // 预览文本的最大长度
private static final int SNIPPET_PREW_MAX_LEN = 60;
- // 用于播放提醒声音的MediaPlayer对象
MediaPlayer mPlayer;
- /*
- * onCreate 方法初始化活动,设置窗口特性,根据传入的Intent获取笔记ID和简短内容,
- * 并根据情况显示对话框和播放声音。
- */
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- // 请求无标题的窗口
requestWindowFeature(Window.FEATURE_NO_TITLE);
- // 设置窗口在锁屏时也显示,并根据屏幕状态决定是否保持唤醒
final Window win = getWindow();
win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
+
if (!isScreenOn()) {
win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
@@ -74,8 +62,8 @@ public class AlarmAlertActivity extends Activity implements OnClickListener, OnD
| WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR);
}
- // 从Intent中获取笔记ID和简短内容
Intent intent = getIntent();
+
try {
mNoteId = Long.valueOf(intent.getData().getPathSegments().get(1));
mSnippet = DataUtils.getSnippetById(this.getContentResolver(), mNoteId);
@@ -87,7 +75,6 @@ public class AlarmAlertActivity extends Activity implements OnClickListener, OnD
return;
}
- // 如果笔记在数据库中可见,则显示动作对话框并播放声音,否则结束活动
mPlayer = new MediaPlayer();
if (DataUtils.visibleInNoteDatabase(getContentResolver(), mNoteId, Notes.TYPE_NOTE)) {
showActionDialog();
@@ -97,24 +84,14 @@ public class AlarmAlertActivity extends Activity implements OnClickListener, OnD
}
}
- /*
- * 检查屏幕是否处于打开状态。
- *
- * @return 如果屏幕已打开则返回true,否则返回false。
- */
private boolean isScreenOn() {
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
return pm.isScreenOn();
}
- /*
- * 播放提醒声音。
- * 根据系统设置选择合适的音频流类型,并尝试播放选定的报警声音。
- */
private void playAlarmSound() {
Uri url = RingtoneManager.getActualDefaultRingtoneUri(this, RingtoneManager.TYPE_ALARM);
- // 检查是否在静音模式下影响报警声音
int silentModeStreams = Settings.System.getInt(getContentResolver(),
Settings.System.MODE_RINGER_STREAMS_AFFECTED, 0);
@@ -129,20 +106,20 @@ public class AlarmAlertActivity extends Activity implements OnClickListener, OnD
mPlayer.setLooping(true);
mPlayer.start();
} catch (IllegalArgumentException e) {
+ // TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
+ // TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
+ // TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
+ // TODO Auto-generated catch block
e.printStackTrace();
}
}
- /*
- * 显示动作对话框。
- * 根据屏幕是否打开,设置对话框的按钮,并显示应用名称和笔记的简短内容。
- */
private void showActionDialog() {
AlertDialog.Builder dialog = new AlertDialog.Builder(this);
dialog.setTitle(R.string.app_name);
@@ -154,38 +131,24 @@ public class AlarmAlertActivity extends Activity implements OnClickListener, OnD
dialog.show().setOnDismissListener(this);
}
- /*
- * 点击对话框按钮的响应处理。
- * 根据点击的按钮启动编辑笔记的活动或结束当前活动。
- */
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case DialogInterface.BUTTON_NEGATIVE:
- // 如果点击的是“进入”按钮,则启动笔记编辑活动
Intent intent = new Intent(this, NoteEditActivity.class);
intent.setAction(Intent.ACTION_VIEW);
intent.putExtra(Intent.EXTRA_UID, mNoteId);
startActivity(intent);
break;
default:
- // 关闭活动
break;
}
}
- /*
- * 对话框关闭时的处理。
- * 停止播放提醒声音,结束当前活动。
- */
public void onDismiss(DialogInterface dialog) {
stopAlarmSound();
finish();
}
- /*
- * 停止播放提醒声音。
- * 如果MediaPlayer对象不为空,则停止播放并释放资源。
- */
private void stopAlarmSound() {
if (mPlayer != null) {
mPlayer.stop();
diff --git a/xiaomi-src/app/src/main/java/net/micode/notes/ui/AlarmInitReceiver.java b/xiaomi-src/main/java/net/micode/notes/ui/AlarmInitReceiver.java
similarity index 53%
rename from xiaomi-src/app/src/main/java/net/micode/notes/ui/AlarmInitReceiver.java
rename to xiaomi-src/main/java/net/micode/notes/ui/AlarmInitReceiver.java
index 8da4ef8..f221202 100644
--- a/xiaomi-src/app/src/main/java/net/micode/notes/ui/AlarmInitReceiver.java
+++ b/xiaomi-src/main/java/net/micode/notes/ui/AlarmInitReceiver.java
@@ -1,7 +1,19 @@
/*
- * 该类是广播接收器,用于在应用启动时初始化提醒设置。
- * 当系统启动时,它会检查数据库中所有设置了提醒的笔记,并为每个笔记设置相应的提醒。
+ * 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.AlarmManager;
@@ -18,54 +30,36 @@ import net.micode.notes.data.Notes.NoteColumns;
public class AlarmInitReceiver extends BroadcastReceiver {
- // 查询笔记时需要的列
- private static final String[] PROJECTION = new String[]{
- NoteColumns.ID,
- NoteColumns.ALERTED_DATE
+ private static final String [] PROJECTION = new String [] {
+ NoteColumns.ID,
+ NoteColumns.ALERTED_DATE
};
- // 列的索引
- private static final int COLUMN_ID = 0;
- private static final int COLUMN_ALERTED_DATE = 1;
+ private static final int COLUMN_ID = 0;
+ private static final int COLUMN_ALERTED_DATE = 1;
- /**
- * 当接收到广播时执行的操作。主要用于设置所有已记录的提醒时间。
- *
- * @param context 上下文,提供访问应用全局功能的入口。
- * @param intent 携带了触发该接收器的广播信息。
- */
@Override
public void onReceive(Context context, Intent intent) {
- // 获取当前日期和时间
long currentDate = System.currentTimeMillis();
- // 查询数据库中所有需要提醒的笔记
Cursor c = context.getContentResolver().query(Notes.CONTENT_NOTE_URI,
PROJECTION,
NoteColumns.ALERTED_DATE + ">? AND " + NoteColumns.TYPE + "=" + Notes.TYPE_NOTE,
- new String[]{String.valueOf(currentDate)},
+ new String[] { String.valueOf(currentDate) },
null);
if (c != null) {
- // 遍历查询结果,为每个需要提醒的笔记设置提醒
if (c.moveToFirst()) {
do {
- // 获取提醒日期
long alertDate = c.getLong(COLUMN_ALERTED_DATE);
- // 创建Intent,用于在提醒时间触发AlarmReceiver
Intent sender = new Intent(context, AlarmReceiver.class);
sender.setData(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, c.getLong(COLUMN_ID)));
- // 创建PendingIntent,它是一个延迟的意图,可以在特定时间由系统触发
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, sender, 0);
- // 获取AlarmManager服务,用于设置提醒
AlarmManager alermManager = (AlarmManager) context
.getSystemService(Context.ALARM_SERVICE);
- // 设置提醒
alermManager.set(AlarmManager.RTC_WAKEUP, alertDate, pendingIntent);
} while (c.moveToNext());
}
- // 关闭Cursor,释放资源
c.close();
}
}
}
-
diff --git a/xiaomi-src/main/java/net/micode/notes/ui/AlarmReceiver.java b/xiaomi-src/main/java/net/micode/notes/ui/AlarmReceiver.java
new file mode 100644
index 0000000..54e503b
--- /dev/null
+++ b/xiaomi-src/main/java/net/micode/notes/ui/AlarmReceiver.java
@@ -0,0 +1,30 @@
+/*
+ * 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.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+
+public class AlarmReceiver extends BroadcastReceiver {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ intent.setClass(context, AlarmAlertActivity.class);
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ context.startActivity(intent);
+ }
+}
diff --git a/xiaomi-src/main/java/net/micode/notes/ui/ChangingPassword.java b/xiaomi-src/main/java/net/micode/notes/ui/ChangingPassword.java
new file mode 100644
index 0000000..d32712e
--- /dev/null
+++ b/xiaomi-src/main/java/net/micode/notes/ui/ChangingPassword.java
@@ -0,0 +1,69 @@
+package net.micode.notes.ui;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.os.Bundle;
+import android.view.View;
+import android.view.WindowManager;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.Toast;
+
+import net.micode.notes.R;
+
+public class ChangingPassword extends Activity {
+ EditText OldPassword;
+ EditText NewPassword;
+ EditText AckPassword;
+ Button Acknowledged;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_change_password);
+ getWindow().setSoftInputMode(
+ WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE
+ | WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
+ OldPassword=(EditText) findViewById(R.id.old_password);
+ NewPassword=(EditText) findViewById(R.id.new_password);
+ AckPassword=(EditText) findViewById(R.id.ack_password);
+ Acknowledged=(Button)findViewById(R.id.Acknowledged);
+ Acknowledged.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ String old_password = OldPassword.getText().toString();
+ String new_password = NewPassword.getText().toString();
+ String ack_password = AckPassword.getText().toString();
+ SharedPreferences pref=getSharedPreferences("user management",MODE_PRIVATE);
+ String login_password=pref.getString("password","");
+ if(old_password.equals("")==true || new_password.equals("")==true || ack_password.equals("")==true) {
+ Toast.makeText(ChangingPassword.this, "密码不能为空", Toast.LENGTH_SHORT).show();
+ }else if (new_password.equals(ack_password) == false) {
+ Toast.makeText(ChangingPassword.this, "新建密码与重复密码不匹配,请重新输入密码", Toast.LENGTH_SHORT).show();
+ AckPassword.setText("");
+ }else if(old_password.equals(login_password) == false){
+ Toast.makeText(ChangingPassword.this, "原有密码错误,请重新输入密码", Toast.LENGTH_SHORT).show();
+ OldPassword.setText("");
+ }
+ else if (new_password.equals(ack_password) == true && old_password.equals(login_password) == true){
+ SharedPreferences.Editor editor=getSharedPreferences("user management", MODE_PRIVATE).edit();
+ editor.putString("password",new_password);
+ editor.apply();
+ Toast.makeText(ChangingPassword.this, "修改密码成功", Toast.LENGTH_SHORT).show();
+ Intent intent=new Intent(ChangingPassword.this,NotesListActivity.class);
+ startActivity(intent);
+ finish();
+ }
+ }
+ });
+ }
+
+ @Override
+ public void onBackPressed() {
+ Intent intent=new Intent(ChangingPassword.this,NotesListActivity.class);
+ startActivity(intent);
+ finish();
+ }
+}
+
diff --git a/xiaomi-src/app/src/main/java/net/micode/notes/ui/DateTimePicker.java b/xiaomi-src/main/java/net/micode/notes/ui/DateTimePicker.java
similarity index 69%
rename from xiaomi-src/app/src/main/java/net/micode/notes/ui/DateTimePicker.java
rename to xiaomi-src/main/java/net/micode/notes/ui/DateTimePicker.java
index fb7a0eb..496b0cd 100644
--- a/xiaomi-src/app/src/main/java/net/micode/notes/ui/DateTimePicker.java
+++ b/xiaomi-src/main/java/net/micode/notes/ui/DateTimePicker.java
@@ -16,98 +16,69 @@
package net.micode.notes.ui;
+import java.text.DateFormatSymbols;
+import java.util.Calendar;
+
+import net.micode.notes.R;
+
+
import android.content.Context;
import android.text.format.DateFormat;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.NumberPicker;
-import net.micode.notes.R;
-
-import java.text.DateFormatSymbols;
-import java.util.Calendar;
-
public class DateTimePicker extends FrameLayout {
- // 默认启用状态
private static final boolean DEFAULT_ENABLE_STATE = true;
- // 半天的小时数
private static final int HOURS_IN_HALF_DAY = 12;
- // 一整天的小时数
private static final int HOURS_IN_ALL_DAY = 24;
- // 一周的天数
private static final int DAYS_IN_ALL_WEEK = 7;
- // 日期选择器的最小值
private static final int DATE_SPINNER_MIN_VAL = 0;
- // 日期选择器的最大值
private static final int DATE_SPINNER_MAX_VAL = DAYS_IN_ALL_WEEK - 1;
- // 24小时制小时选择器的最小值
private static final int HOUR_SPINNER_MIN_VAL_24_HOUR_VIEW = 0;
- // 24小时制小时选择器的最大值
private static final int HOUR_SPINNER_MAX_VAL_24_HOUR_VIEW = 23;
- // 12小时制小时选择器的最小值
private static final int HOUR_SPINNER_MIN_VAL_12_HOUR_VIEW = 1;
- // 12小时制小时选择器的最大值
private static final int HOUR_SPINNER_MAX_VAL_12_HOUR_VIEW = 12;
- // 分钟选择器的最小值
private static final int MINUT_SPINNER_MIN_VAL = 0;
- // 分钟选择器的最大值
private static final int MINUT_SPINNER_MAX_VAL = 59;
- // 上下午选择器的最小值
private static final int AMPM_SPINNER_MIN_VAL = 0;
- // 上下午选择器的最大值
private static final int AMPM_SPINNER_MAX_VAL = 1;
- // 日期选择器
private final NumberPicker mDateSpinner;
- // 小时选择器
private final NumberPicker mHourSpinner;
- // 分钟选择器
private final NumberPicker mMinuteSpinner;
- // 上下午选择器
private final NumberPicker mAmPmSpinner;
- // 当前日期
private Calendar mDate;
- // 用于显示日期的字符串数组
private String[] mDateDisplayValues = new String[DAYS_IN_ALL_WEEK];
- // 当前是否为上午
private boolean mIsAm;
- // 当前是否为24小时制视图
private boolean mIs24HourView;
- // 控件是否启用
private boolean mIsEnabled = DEFAULT_ENABLE_STATE;
- // 是否正在初始化
private boolean mInitialising;
- // 日期时间改变监听器
private OnDateTimeChangedListener mOnDateTimeChangedListener;
- // 日期选择器的值改变监听器
private NumberPicker.OnValueChangeListener mOnDateChangedListener = new NumberPicker.OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
- // 根据新旧值的差异更新日期
mDate.add(Calendar.DAY_OF_YEAR, newVal - oldVal);
updateDateControl();
onDateTimeChanged();
}
};
- // 小时选择器的值改变监听器
private NumberPicker.OnValueChangeListener mOnHourChangedListener = new NumberPicker.OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
- // 根据小时的变化更新日期和上下午状态
boolean isDateChanged = false;
Calendar cal = Calendar.getInstance();
if (!mIs24HourView) {
- // 处理12小时制下的日期变化和上下午切换
if (!mIsAm && oldVal == HOURS_IN_HALF_DAY - 1 && newVal == HOURS_IN_HALF_DAY) {
cal.setTimeInMillis(mDate.getTimeInMillis());
cal.add(Calendar.DAY_OF_YEAR, 1);
@@ -123,7 +94,6 @@ public class DateTimePicker extends FrameLayout {
updateAmPmControl();
}
} else {
- // 处理24小时制下的日期变化
if (oldVal == HOURS_IN_ALL_DAY - 1 && newVal == 0) {
cal.setTimeInMillis(mDate.getTimeInMillis());
cal.add(Calendar.DAY_OF_YEAR, 1);
@@ -134,11 +104,9 @@ public class DateTimePicker extends FrameLayout {
isDateChanged = true;
}
}
- // 更新小时并触发日期时间改变事件
int newHour = mHourSpinner.getValue() % HOURS_IN_HALF_DAY + (mIsAm ? 0 : HOURS_IN_HALF_DAY);
mDate.set(Calendar.HOUR_OF_DAY, newHour);
onDateTimeChanged();
- // 如果日期有变化,则更新年月日
if (isDateChanged) {
setCurrentYear(cal.get(Calendar.YEAR));
setCurrentMonth(cal.get(Calendar.MONTH));
@@ -147,12 +115,9 @@ public class DateTimePicker extends FrameLayout {
}
};
-
- // 分别为分钟和AM/PM选择器监听器设置匿名内部类,实现数值变化时的处理逻辑。
private NumberPicker.OnValueChangeListener mOnMinuteChangedListener = new NumberPicker.OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
- // 计算小时的偏移量,当从最大值变为最小值或从最小值变为最大值时调整
int minValue = mMinuteSpinner.getMinValue();
int maxValue = mMinuteSpinner.getMaxValue();
int offset = 0;
@@ -161,7 +126,6 @@ public class DateTimePicker extends FrameLayout {
} else if (oldVal == minValue && newVal == maxValue) {
offset -= 1;
}
- // 根据偏移量更新日期和小时选择器,并检查是否需要切换AM/PM
if (offset != 0) {
mDate.add(Calendar.HOUR_OF_DAY, offset);
mHourSpinner.setValue(getCurrentHour());
@@ -175,7 +139,6 @@ public class DateTimePicker extends FrameLayout {
updateAmPmControl();
}
}
- // 更新分钟值并触发日期变化的回调
mDate.set(Calendar.MINUTE, newVal);
onDateTimeChanged();
}
@@ -184,7 +147,6 @@ public class DateTimePicker extends FrameLayout {
private NumberPicker.OnValueChangeListener mOnAmPmChangedListener = new NumberPicker.OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
- // 切换AM/PM状态,并更新日期和AM/PM选择器
mIsAm = !mIsAm;
if (mIsAm) {
mDate.add(Calendar.HOUR_OF_DAY, -HOURS_IN_HALF_DAY);
@@ -196,23 +158,19 @@ public class DateTimePicker extends FrameLayout {
}
};
- // 定义日期时间变化的回调接口
public interface OnDateTimeChangedListener {
void onDateTimeChanged(DateTimePicker view, int year, int month,
- int dayOfMonth, int hourOfDay, int minute);
+ int dayOfMonth, int hourOfDay, int minute);
}
- // 构造函数:初始化日期时间选择器
public DateTimePicker(Context context) {
this(context, System.currentTimeMillis());
}
- // 构造函数:指定初始日期时间
public DateTimePicker(Context context, long date) {
this(context, date, DateFormat.is24HourFormat(context));
}
- // 构造函数:指定是否使用24小时制视图
public DateTimePicker(Context context, long date, boolean is24HourView) {
super(context);
mDate = Calendar.getInstance();
@@ -220,7 +178,6 @@ public class DateTimePicker extends FrameLayout {
mIsAm = getCurrentHourOfDay() >= HOURS_IN_HALF_DAY;
inflate(context, R.layout.datetime_picker, this);
- // 初始化日期、小时、分钟和AM/PM选择器,并设置相应的监听器
mDateSpinner = (NumberPicker) findViewById(R.id.date);
mDateSpinner.setMinValue(DATE_SPINNER_MIN_VAL);
mDateSpinner.setMaxValue(DATE_SPINNER_MAX_VAL);
@@ -228,7 +185,7 @@ public class DateTimePicker extends FrameLayout {
mHourSpinner = (NumberPicker) findViewById(R.id.hour);
mHourSpinner.setOnValueChangedListener(mOnHourChangedListener);
- mMinuteSpinner = (NumberPicker) findViewById(R.id.minute);
+ mMinuteSpinner = (NumberPicker) findViewById(R.id.minute);
mMinuteSpinner.setMinValue(MINUT_SPINNER_MIN_VAL);
mMinuteSpinner.setMaxValue(MINUT_SPINNER_MAX_VAL);
mMinuteSpinner.setOnLongPressUpdateInterval(100);
@@ -241,37 +198,28 @@ public class DateTimePicker extends FrameLayout {
mAmPmSpinner.setDisplayedValues(stringsForAmPm);
mAmPmSpinner.setOnValueChangedListener(mOnAmPmChangedListener);
- // 更新控件至初始状态
+ // update controls to initial state
updateDateControl();
updateHourControl();
updateAmPmControl();
set24HourView(is24HourView);
- // 设置为当前时间
+ // set to current time
setCurrentDate(date);
setEnabled(isEnabled());
- // 设置内容描述
+ // set the content descriptions
mInitialising = false;
}
-
- /**
- * 设置控件的启用状态。
- * 如果当前状态与传入状态相同,则不进行任何操作。
- * 启用或禁用日期和时间选择器,并更新内部启用状态。
- *
- * @param enabled 控件是否启用
- */
@Override
public void setEnabled(boolean enabled) {
if (mIsEnabled == enabled) {
return;
}
super.setEnabled(enabled);
- // 同时启用或禁用日期和时间选择器
mDateSpinner.setEnabled(enabled);
mMinuteSpinner.setEnabled(enabled);
mHourSpinner.setEnabled(enabled);
@@ -279,52 +227,43 @@ public class DateTimePicker extends FrameLayout {
mIsEnabled = enabled;
}
- /**
- * 获取控件的启用状态。
- *
- * @return 控件是否启用
- */
@Override
public boolean isEnabled() {
return mIsEnabled;
}
/**
- * 获取当前日期的时间戳(毫秒)。
+ * Get the current date in millis
*
- * @return 当前日期的毫秒时间戳
+ * @return the current date in millis
*/
public long getCurrentDateInTimeMillis() {
return mDate.getTimeInMillis();
}
/**
- * 设置当前日期。
- * 根据传入的毫秒时间戳更新日期选择器的值。
+ * Set the current date
*
* @param date The current date in millis
*/
public void setCurrentDate(long date) {
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(date);
- // 通过日历实例的详细字段设置当前日期和时间
setCurrentDate(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH),
cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE));
}
/**
- * 设置当前日期和时间。
- * 分别设置年、月、日、时和分。
+ * Set the current date
*
- * @param year 当前年份
- * @param month 当前月份
- * @param dayOfMonth 当前日
- * @param hourOfDay 当前小时
- * @param minute 当前分钟
+ * @param year The current year
+ * @param month The current month
+ * @param dayOfMonth The current dayOfMonth
+ * @param hourOfDay The current hourOfDay
+ * @param minute The current minute
*/
public void setCurrentDate(int year, int month,
- int dayOfMonth, int hourOfDay, int minute) {
- // 分别设置年、月、日、时和分
+ int dayOfMonth, int hourOfDay, int minute) {
setCurrentYear(year);
setCurrentMonth(month);
setCurrentDay(dayOfMonth);
@@ -332,101 +271,88 @@ public class DateTimePicker extends FrameLayout {
setCurrentMinute(minute);
}
-
/**
- * 获取当前年份
+ * Get current year
*
- * @return 当前的年份
+ * @return The current year
*/
public int getCurrentYear() {
return mDate.get(Calendar.YEAR);
}
/**
- * 设置当前年份
+ * Set current year
*
- * @param year 当前的年份
+ * @param year The current year
*/
public void setCurrentYear(int year) {
- // 如果不是初始化状态并且设置的年份与当前年份相同,则直接返回
if (!mInitialising && year == getCurrentYear()) {
return;
}
mDate.set(Calendar.YEAR, year);
- updateDateControl(); // 更新日期控件
- onDateTimeChanged(); // 触发日期时间改变事件
+ updateDateControl();
+ onDateTimeChanged();
}
/**
- * 获取当前月份
+ * Get current month in the year
*
- * @return 当前的月份(从0开始)
+ * @return The current month in the year
*/
public int getCurrentMonth() {
return mDate.get(Calendar.MONTH);
}
/**
- * 设置当前月份
+ * Set current month in the year
*
- * @param month 当前的月份(从0开始)
+ * @param month The month in the year
*/
public void setCurrentMonth(int month) {
- // 如果不是初始化状态并且设置的月份与当前月份相同,则直接返回
if (!mInitialising && month == getCurrentMonth()) {
return;
}
mDate.set(Calendar.MONTH, month);
- updateDateControl(); // 更新日期控件
- onDateTimeChanged(); // 触发日期时间改变事件
+ updateDateControl();
+ onDateTimeChanged();
}
/**
- * 获取当前日期(月中的天数)
+ * Get current day of the month
*
- * @return 当前的日期(月中的天数)
+ * @return The day of the month
*/
public int getCurrentDay() {
return mDate.get(Calendar.DAY_OF_MONTH);
}
/**
- * 设置当前日期(月中的天数)
+ * Set current day of the month
*
- * @param dayOfMonth 当前的日期(月中的天数)
+ * @param dayOfMonth The day of the month
*/
public void setCurrentDay(int dayOfMonth) {
- // 如果不是初始化状态并且设置的日期与当前日期相同,则直接返回
if (!mInitialising && dayOfMonth == getCurrentDay()) {
return;
}
mDate.set(Calendar.DAY_OF_MONTH, dayOfMonth);
- updateDateControl(); // 更新日期控件
- onDateTimeChanged(); // 触发日期时间改变事件
+ updateDateControl();
+ onDateTimeChanged();
}
/**
- * 获取当前小时(24小时制),范围为(0~23)
- *
- * @return 当前的小时(24小时制)
+ * Get current hour in 24 hour mode, in the range (0~23)
+ * @return The current hour in 24 hour mode
*/
public int getCurrentHourOfDay() {
return mDate.get(Calendar.HOUR_OF_DAY);
}
- /**
- * 获取当前小时,根据是否为24小时制返回不同的值。
- * 如果是24小时制,与{@link #getCurrentHourOfDay()}返回相同结果;
- * 否则,将小时转换为12小时制,并考虑上午/下午。
- *
- * @return 当前的小时(根据视图模式可能是12小时制)
- */
private int getCurrentHour() {
- if (mIs24HourView) {
+ if (mIs24HourView){
return getCurrentHourOfDay();
} else {
int hour = getCurrentHourOfDay();
- // 转换为12小时制
if (hour > HOURS_IN_HALF_DAY) {
return hour - HOURS_IN_HALF_DAY;
} else {
@@ -435,19 +361,16 @@ public class DateTimePicker extends FrameLayout {
}
}
-
/**
- * 设置当前小时(24小时制),范围为(0~23)
+ * Set current hour in 24 hour mode, in the range (0~23)
*
- * @param hourOfDay 当前小时数
+ * @param hourOfDay
*/
public void setCurrentHour(int hourOfDay) {
- // 如果在初始化中或者小时未改变,则直接返回
if (!mInitialising && hourOfDay == getCurrentHourOfDay()) {
return;
}
mDate.set(Calendar.HOUR_OF_DAY, hourOfDay);
- // 如果不是24小时视图,则调整小时数并更新AM/PM控制
if (!mIs24HourView) {
if (hourOfDay >= HOURS_IN_HALF_DAY) {
mIsAm = false;
@@ -467,21 +390,18 @@ public class DateTimePicker extends FrameLayout {
}
/**
- * 获取当前分钟数
+ * Get currentMinute
*
- * @return 当前分钟数
+ * @return The Current Minute
*/
public int getCurrentMinute() {
return mDate.get(Calendar.MINUTE);
}
/**
- * 设置当前分钟数
- *
- * @param minute 当前分钟数值
+ * Set current minute
*/
public void setCurrentMinute(int minute) {
- // 如果在初始化中或者分钟数未改变,则直接返回
if (!mInitialising && minute == getCurrentMinute()) {
return;
}
@@ -491,21 +411,18 @@ public class DateTimePicker extends FrameLayout {
}
/**
- * 获取当前是否为24小时视图
- *
- * @return 如果是24小时视图返回true,否则返回false
+ * @return true if this is in 24 hour view else false.
*/
- public boolean is24HourView() {
+ public boolean is24HourView () {
return mIs24HourView;
}
/**
- * 设置当前视图为24小时制还是AM/PM制
+ * Set whether in 24 hour or AM/PM mode.
*
- * @param is24HourView 如果为true表示24小时制,false表示AM/PM制
+ * @param is24HourView True for 24 hour mode. False for AM/PM mode.
*/
public void set24HourView(boolean is24HourView) {
- // 如果视图模式未改变,则直接返回
if (mIs24HourView == is24HourView) {
return;
}
@@ -517,15 +434,11 @@ public class DateTimePicker extends FrameLayout {
updateAmPmControl();
}
- /**
- * 更新日期控制组件,显示正确的日期选项
- */
private void updateDateControl() {
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(mDate.getTimeInMillis());
cal.add(Calendar.DAY_OF_YEAR, -DAYS_IN_ALL_WEEK / 2 - 1);
mDateSpinner.setDisplayedValues(null);
- // 循环设置一周内每一天的显示文本
for (int i = 0; i < DAYS_IN_ALL_WEEK; ++i) {
cal.add(Calendar.DAY_OF_YEAR, 1);
mDateDisplayValues[i] = (String) DateFormat.format("MM.dd EEEE", cal);
@@ -535,9 +448,6 @@ public class DateTimePicker extends FrameLayout {
mDateSpinner.invalidate();
}
- /**
- * 根据当前是否为24小时视图来更新AM/PM控制组件的显示和值
- */
private void updateAmPmControl() {
if (mIs24HourView) {
mAmPmSpinner.setVisibility(View.GONE);
@@ -548,9 +458,6 @@ public class DateTimePicker extends FrameLayout {
}
}
- /**
- * 根据当前是否为24小时视图来更新小时控制组件的最小值和最大值
- */
private void updateHourControl() {
if (mIs24HourView) {
mHourSpinner.setMinValue(HOUR_SPINNER_MIN_VAL_24_HOUR_VIEW);
@@ -562,17 +469,13 @@ public class DateTimePicker extends FrameLayout {
}
/**
- * 设置点击“设置”按钮时的回调接口
- *
- * @param callback 回调接口实例,如果为null则不执行任何操作
+ * Set the callback that indicates the 'Set' button has been pressed.
+ * @param callback the callback, if null will do nothing
*/
public void setOnDateTimeChangedListener(OnDateTimeChangedListener callback) {
mOnDateTimeChangedListener = callback;
}
- /**
- * 当日期时间被改变时调用此方法,如果设置了日期时间改变监听器,则触发监听器的回调方法
- */
private void onDateTimeChanged() {
if (mOnDateTimeChangedListener != null) {
mOnDateTimeChangedListener.onDateTimeChanged(this, getCurrentYear(),
diff --git a/xiaomi-src/app/src/main/java/net/micode/notes/ui/DateTimePickerDialog.java b/xiaomi-src/main/java/net/micode/notes/ui/DateTimePickerDialog.java
similarity index 54%
rename from xiaomi-src/app/src/main/java/net/micode/notes/ui/DateTimePickerDialog.java
rename to xiaomi-src/main/java/net/micode/notes/ui/DateTimePickerDialog.java
index b3a5193..2c47ba4 100644
--- a/xiaomi-src/app/src/main/java/net/micode/notes/ui/DateTimePickerDialog.java
+++ b/xiaomi-src/main/java/net/micode/notes/ui/DateTimePickerDialog.java
@@ -1,9 +1,27 @@
/*
- * DateTimePickerDialog类提供了一个日期和时间选择器对话框。
- * 用户可以选择一个日期和时间,然后通过监听器回调返回选择的值。
+ * 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 java.util.Calendar;
+
+import net.micode.notes.R;
+import net.micode.notes.ui.DateTimePicker;
+import net.micode.notes.ui.DateTimePicker.OnDateTimeChangedListener;
+
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
@@ -11,110 +29,62 @@ import android.content.DialogInterface.OnClickListener;
import android.text.format.DateFormat;
import android.text.format.DateUtils;
-import net.micode.notes.R;
-import net.micode.notes.ui.DateTimePicker.OnDateTimeChangedListener;
-
-import java.util.Calendar;
-
public class DateTimePickerDialog extends AlertDialog implements OnClickListener {
- // 当前选择的日期和时间
private Calendar mDate = Calendar.getInstance();
- // 用于指示日期时间选择器是否使用24小时制
private boolean mIs24HourView;
- // 日期时间设置监听器,用于处理日期时间选择后的回调
private OnDateTimeSetListener mOnDateTimeSetListener;
- // 日期时间选择器视图
private DateTimePicker mDateTimePicker;
- /**
- * 日期时间设置监听器接口。
- * 实现此接口的类需要提供OnDateTimeSet方法来处理日期时间被设置的事件。
- */
public interface OnDateTimeSetListener {
void OnDateTimeSet(AlertDialog dialog, long date);
}
- /**
- * 构造函数初始化日期时间选择器对话框。
- *
- * @param context 上下文对象,通常是指Activity。
- * @param date 初始显示的日期时间值。
- */
public DateTimePickerDialog(Context context, long date) {
super(context);
mDateTimePicker = new DateTimePicker(context);
setView(mDateTimePicker);
- // 设置日期时间改变的监听器
mDateTimePicker.setOnDateTimeChangedListener(new OnDateTimeChangedListener() {
public void onDateTimeChanged(DateTimePicker view, int year, int month,
- int dayOfMonth, int hourOfDay, int minute) {
- // 更新内部日期时间值
+ int dayOfMonth, int hourOfDay, int minute) {
mDate.set(Calendar.YEAR, year);
mDate.set(Calendar.MONTH, month);
mDate.set(Calendar.DAY_OF_MONTH, dayOfMonth);
mDate.set(Calendar.HOUR_OF_DAY, hourOfDay);
mDate.set(Calendar.MINUTE, minute);
- // 更新对话框的标题显示
updateTitle(mDate.getTimeInMillis());
}
});
mDate.setTimeInMillis(date);
mDate.set(Calendar.SECOND, 0);
mDateTimePicker.setCurrentDate(mDate.getTimeInMillis());
- // 设置对话框的确认和取消按钮
setButton(context.getString(R.string.datetime_dialog_ok), this);
- setButton2(context.getString(R.string.datetime_dialog_cancel), (OnClickListener) null);
- // 根据系统设置决定是否使用24小时制
+ setButton2(context.getString(R.string.datetime_dialog_cancel), (OnClickListener)null);
set24HourView(DateFormat.is24HourFormat(this.getContext()));
- // 更新标题以显示当前选择的日期和时间
updateTitle(mDate.getTimeInMillis());
}
- /**
- * 设置日期时间选择器是否使用24小时制。
- *
- * @param is24HourView 是否使用24小时制。
- */
public void set24HourView(boolean is24HourView) {
mIs24HourView = is24HourView;
}
- /**
- * 设置日期时间被设置时的监听器。
- *
- * @param callBack 日期时间设置监听器对象。
- */
public void setOnDateTimeSetListener(OnDateTimeSetListener callBack) {
mOnDateTimeSetListener = callBack;
}
- /**
- * 更新对话框标题以显示当前选择的日期和时间。
- *
- * @param date 当前选择的日期时间值。
- */
private void updateTitle(long date) {
- // 根据是否使用24小时制来格式化日期时间显示
int flag =
- DateUtils.FORMAT_SHOW_YEAR |
- DateUtils.FORMAT_SHOW_DATE |
- DateUtils.FORMAT_SHOW_TIME;
+ DateUtils.FORMAT_SHOW_YEAR |
+ DateUtils.FORMAT_SHOW_DATE |
+ DateUtils.FORMAT_SHOW_TIME;
flag |= mIs24HourView ? DateUtils.FORMAT_24HOUR : DateUtils.FORMAT_24HOUR;
setTitle(DateUtils.formatDateTime(this.getContext(), date, flag));
}
- /**
- * 点击按钮时的处理逻辑。
- * 如果设置了日期时间设置监听器,则调用其OnDateTimeSet方法,传入当前选择的日期时间值。
- *
- * @param arg0 对话框对象。
- * @param arg1 按钮标识。
- */
public void onClick(DialogInterface arg0, int arg1) {
if (mOnDateTimeSetListener != null) {
mOnDateTimeSetListener.OnDateTimeSet(this, mDate.getTimeInMillis());
}
}
-}
+}
\ No newline at end of file
diff --git a/xiaomi-src/main/java/net/micode/notes/ui/DeletingPassword.java b/xiaomi-src/main/java/net/micode/notes/ui/DeletingPassword.java
new file mode 100644
index 0000000..0e4dfe2
--- /dev/null
+++ b/xiaomi-src/main/java/net/micode/notes/ui/DeletingPassword.java
@@ -0,0 +1,63 @@
+package net.micode.notes.ui;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.os.Bundle;
+import android.view.View;
+import android.view.WindowManager;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.Toast;
+
+import net.micode.notes.R;
+
+public class DeletingPassword extends Activity {
+ EditText Dt_password;
+ Button Acknowledged;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_delete_password);
+ getWindow().setSoftInputMode(
+ WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE
+ | WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
+ Dt_password=(EditText) findViewById(R.id.thepassword);
+ Acknowledged=(Button)findViewById(R.id.Dt_Acknowledged);
+ Acknowledged.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ String text02 = Dt_password.getText().toString();
+ if(text02.equals("")==true)
+ Toast.makeText(DeletingPassword.this, "密码不能为空", Toast.LENGTH_SHORT).show();
+ SharedPreferences pref=getSharedPreferences("user management",MODE_PRIVATE);
+ String password = pref.getString("password","");
+ if(password.equals("")==false&&password.equals(text02)==true){
+ SharedPreferences.Editor editor=getSharedPreferences("user management",
+ MODE_PRIVATE).edit();
+ editor.putBoolean("user",false);//false表示已经设置登录密码
+ editor.putString("password","");
+ editor.apply();
+
+ Toast.makeText(DeletingPassword.this, "已经删除登录密码", Toast.LENGTH_SHORT).show();
+ Intent intent=new Intent(DeletingPassword.this,NotesListActivity.class);
+ startActivity(intent);
+ finish();
+ }
+ else{
+ Toast.makeText(DeletingPassword.this, "密码错误", Toast.LENGTH_SHORT).show();
+ Dt_password.setText("");//把密码框内输入过的错误密码清空
+ }
+ }
+ });
+ }
+
+ @Override
+ public void onBackPressed() {
+ Intent intent=new Intent(DeletingPassword.this,NotesListActivity.class);
+ startActivity(intent);
+ finish();
+ }
+}
+
diff --git a/xiaomi-src/main/java/net/micode/notes/ui/DropdownMenu.java b/xiaomi-src/main/java/net/micode/notes/ui/DropdownMenu.java
new file mode 100644
index 0000000..613dc74
--- /dev/null
+++ b/xiaomi-src/main/java/net/micode/notes/ui/DropdownMenu.java
@@ -0,0 +1,61 @@
+/*
+ * 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.content.Context;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.PopupMenu;
+import android.widget.PopupMenu.OnMenuItemClickListener;
+
+import net.micode.notes.R;
+
+public class DropdownMenu {
+ private Button mButton;
+ private PopupMenu mPopupMenu;
+ private Menu mMenu;
+
+ public DropdownMenu(Context context, Button button, int menuId) {
+ mButton = button;
+ mButton.setBackgroundResource(R.drawable.dropdown_icon);
+ mPopupMenu = new PopupMenu(context, mButton);
+ mMenu = mPopupMenu.getMenu();
+ mPopupMenu.getMenuInflater().inflate(menuId, mMenu);
+ mButton.setOnClickListener(new OnClickListener() {
+ public void onClick(View v) {
+ mPopupMenu.show();
+ }
+ });
+ }
+
+ public void setOnDropdownMenuItemClickListener(OnMenuItemClickListener listener) {
+ if (mPopupMenu != null) {
+ mPopupMenu.setOnMenuItemClickListener(listener);
+ }
+ }
+
+ public MenuItem findItem(int id) {
+ return mMenu.findItem(id);
+ }
+
+ public void setTitle(CharSequence title) {
+ mButton.setText(title);
+ }
+}
diff --git a/xiaomi-src/app/src/main/java/net/micode/notes/ui/FoldersListAdapter.java b/xiaomi-src/main/java/net/micode/notes/ui/FoldersListAdapter.java
similarity index 50%
rename from xiaomi-src/app/src/main/java/net/micode/notes/ui/FoldersListAdapter.java
rename to xiaomi-src/main/java/net/micode/notes/ui/FoldersListAdapter.java
index 2f461ca..96b77da 100644
--- a/xiaomi-src/app/src/main/java/net/micode/notes/ui/FoldersListAdapter.java
+++ b/xiaomi-src/main/java/net/micode/notes/ui/FoldersListAdapter.java
@@ -1,12 +1,21 @@
/*
- * FoldersListAdapter 类
- * 用于管理和适配文件夹列表的适配器,继承自 CursorAdapter。
+ * 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.content.Context;
import android.database.Cursor;
import android.view.View;
@@ -21,87 +30,48 @@ import net.micode.notes.data.Notes.NoteColumns;
public class FoldersListAdapter extends CursorAdapter {
- // 查询时使用的列名数组
- public static final String[] PROJECTION = {
- NoteColumns.ID,
- NoteColumns.SNIPPET
+ public static final String [] PROJECTION = {
+ NoteColumns.ID,
+ NoteColumns.SNIPPET
};
- // 列名数组中的索引常量
- public static final int ID_COLUMN = 0;
+ public static final int ID_COLUMN = 0;
public static final int NAME_COLUMN = 1;
- /*
- * 构造函数
- * @param context 上下文对象,通常指Activity或Application对象。
- * @param c 数据源游标Cursor。
- */
public FoldersListAdapter(Context context, Cursor c) {
super(context, c);
+ // TODO Auto-generated constructor stub
}
- /*
- * 创建新的列表项View
- * @param context 上下文对象。
- * @param cursor 当前数据项的游标。
- * @param parent 视图的父容器。
- * @return 返回新创建的列表项View。
- */
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
return new FolderListItem(context);
}
- /*
- * 绑定数据到已有的View上
- * @param view 要绑定数据的视图。
- * @param context 上下文对象。
- * @param cursor 当前数据项的游标。
- */
@Override
public void bindView(View view, Context context, Cursor cursor) {
if (view instanceof FolderListItem) {
- // 根据文件夹ID判断是根文件夹还是普通文件夹,并设置文件夹名称
String folderName = (cursor.getLong(ID_COLUMN) == Notes.ID_ROOT_FOLDER) ? context
.getString(R.string.menu_move_parent_folder) : cursor.getString(NAME_COLUMN);
((FolderListItem) view).bind(folderName);
}
}
- /*
- * 根据位置获取文件夹名称
- * @param context 上下文对象。
- * @param position 列表中的位置。
- * @return 返回该位置上文件夹的名称。
- */
public String getFolderName(Context context, int position) {
Cursor cursor = (Cursor) getItem(position);
return (cursor.getLong(ID_COLUMN) == Notes.ID_ROOT_FOLDER) ? context
.getString(R.string.menu_move_parent_folder) : cursor.getString(NAME_COLUMN);
}
- /*
- * FolderListItem 内部类
- * 用于表示文件夹列表中的一个项的视图类。
- */
private class FolderListItem extends LinearLayout {
- private TextView mName; // 文件夹名称的文本视图
+ private TextView mName;
- /*
- * 构造函数
- * @param context 上下文对象。
- */
public FolderListItem(Context context) {
super(context);
- // 加载布局文件,并将自己作为根视图
inflate(context, R.layout.folder_list_item, this);
- mName = (TextView) findViewById(R.id.tv_folder_name); // 获取文件夹名称的视图
+ mName = (TextView) findViewById(R.id.tv_folder_name);
}
- /*
- * 绑定数据到视图上
- * @param name 要显示的文件夹名称。
- */
public void bind(String name) {
mName.setText(name);
}
diff --git a/xiaomi-src/main/java/net/micode/notes/ui/GetLocation.java b/xiaomi-src/main/java/net/micode/notes/ui/GetLocation.java
new file mode 100644
index 0000000..02b1d00
--- /dev/null
+++ b/xiaomi-src/main/java/net/micode/notes/ui/GetLocation.java
@@ -0,0 +1,43 @@
+package net.micode.notes.ui;
+
+import android.os.Bundle;
+import android.speech.tts.TextToSpeech;
+import android.support.v7.app.AppCompatActivity;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.Button;
+import android.widget.Toast;
+
+import net.micode.notes.R;
+
+
+public class GetLocation extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ this.setContentView(R.layout.local);
+ Toast.makeText(GetLocation.this,"init",Toast.LENGTH_SHORT).show();
+ Button local_1 = new Button(this);
+ Button local_2 = new Button(this);
+ local_1.setOnClickListener(new View.OnClickListener() {
+ private static final String TAG = "GetLocation";
+
+ @Override
+ public void onClick(View v) {
+ Log.i(TAG, "onClick: button1");
+ Toast.makeText(GetLocation.this,"button1",Toast.LENGTH_SHORT).show();
+ }
+ });
+ local_2.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Toast.makeText(GetLocation.this, "button2", Toast.LENGTH_SHORT).show();
+ }
+ });
+ }
+
+
+
+}
diff --git a/xiaomi-src/main/java/net/micode/notes/ui/LoginActivity.java b/xiaomi-src/main/java/net/micode/notes/ui/LoginActivity.java
new file mode 100644
index 0000000..99bcb19
--- /dev/null
+++ b/xiaomi-src/main/java/net/micode/notes/ui/LoginActivity.java
@@ -0,0 +1,57 @@
+package net.micode.notes.ui;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.os.Bundle;
+import android.view.View;
+import android.view.WindowManager;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.Toast;
+
+import net.micode.notes.R;
+
+public class LoginActivity extends Activity {
+
+ EditText lg_password;
+ Button lg_login;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ SharedPreferences pref=getSharedPreferences("user management",MODE_PRIVATE);
+ boolean User_boolean = pref.getBoolean("user",false);//获取用户是否设置了密码
+ if(!User_boolean) //User_boolean = false时,(没有设置密码),直接跳转到便签主界面
+ {
+ Intent intent=new Intent(LoginActivity.this,NotesListActivity.class);
+ startActivity(intent);
+ finish();
+ }
+
+ setContentView(R.layout.activity_login);
+ getWindow().setSoftInputMode(
+ WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE
+ | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
+ lg_password=(EditText) findViewById(R.id.lg_password);
+ lg_login=(Button)findViewById(R.id.login);
+ lg_login.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ SharedPreferences pref=getSharedPreferences("user management",MODE_PRIVATE);
+ String password=pref.getString("password","");
+ if(password.equals("")==false&&password.equals(lg_password.getText().toString())==true){
+ Intent intent=new Intent(LoginActivity.this,NotesListActivity.class);
+ startActivity(intent);
+ finish();
+ }
+ else{
+ Toast.makeText(LoginActivity.this, "密码错误", Toast.LENGTH_SHORT).show();
+ lg_password.setText("");//把密码框内输入过的错误密码清空
+ }
+ }
+ }
+ );
+
+ }
+}
\ No newline at end of file
diff --git a/xiaomi-src/main/java/net/micode/notes/ui/NoteEditActivity.java b/xiaomi-src/main/java/net/micode/notes/ui/NoteEditActivity.java
new file mode 100644
index 0000000..3b8a233
--- /dev/null
+++ b/xiaomi-src/main/java/net/micode/notes/ui/NoteEditActivity.java
@@ -0,0 +1,1689 @@
+/*
+ * 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.Manifest;
+import android.app.Activity;
+import android.content.ContentResolver;
+import android.content.ContentValues;
+import android.content.pm.PackageManager;
+import android.database.Cursor;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.Typeface;
+import android.location.Address;
+import android.location.Geocoder;
+import android.location.Location;
+import android.location.LocationListener;
+import android.location.LocationManager;
+import android.net.Uri;
+import android.os.Build;
+import android.provider.DocumentsContract;
+import android.provider.MediaStore;
+import android.speech.tts.TextToSpeech;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.support.annotation.RequiresApi;
+import android.support.v4.app.ActivityCompat;
+import android.support.v4.content.ContextCompat;
+import android.support.v7.app.AppCompatActivity;
+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.telecom.Call;
+import android.text.Editable;
+import android.text.Spannable;
+import android.text.SpannableString;
+import android.text.TextUtils;
+import android.text.TextWatcher;
+import android.text.format.DateUtils;
+import android.text.style.BackgroundColorSpan;
+import android.text.style.ImageSpan;
+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.Button;
+import android.widget.CheckBox;
+import android.widget.CompoundButton;
+import android.widget.CompoundButton.OnCheckedChangeListener;
+import android.widget.EditText;
+import android.widget.ImageButton;
+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.ui.translate_demo.RespondBean;
+import net.micode.notes.widget.NoteWidgetProvider_2x;
+import net.micode.notes.widget.NoteWidgetProvider_4x;
+
+import java.io.FileNotFoundException;
+import java.net.URI;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Vector;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import net.micode.notes.ui.translate_demo.MD5Utils;
+import net.micode.notes.ui.translate_demo.BaiduTranslateService;
+
+import retrofit2.Callback;
+import retrofit2.Response;
+import retrofit2.Retrofit;
+
+import retrofit2.converter.gson.GsonConverterFactory;
+
+
+
+
+
+public class NoteEditActivity<关闭> extends AppCompatActivity implements OnClickListener,
+ NoteSettingChangedListener, OnTextViewChangeListener {
+
+ private class HeadViewHolder {
+ public TextView tvModified;
+
+ public ImageView ivAlertIcon;
+
+ public TextView tvToptext;
+
+ public TextView tvAlertDate;
+
+ public ImageView ibSetBgColor;
+ }
+
+ private static final Map sBgSelectorBtnsMap = new HashMap();
+
+ static {
+ 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);
+ }
+
+ private static final Map sBgSelectorSelectionMap = new HashMap();
+
+ static {
+ 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);
+ }
+
+ private static final Map sFontSizeBtnsMap = new HashMap();
+
+ static {
+ 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);
+ }
+
+ private static final Map sFontSelectorSelectionMap = new HashMap();
+
+ static {
+ 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);
+ }
+
+ private static final String TAG = "NoteEditActivity";
+
+ private HeadViewHolder mNoteHeaderHolder;
+
+ private View mHeadViewPanel;
+
+ private View mNoteBgColorSelector;
+
+ private View mFontSizeSelector;
+
+ private EditText mNoteEditor;
+
+ private View mNoteEditorPanel;
+
+ private WorkingNote mWorkingNote;
+
+ private SharedPreferences mSharedPrefs;
+ private int mFontSizeId;
+
+
+ private static final String PREFERENCE_FONT_SIZE = "pref_font_size";
+
+ private static final int SHORTCUT_ICON_TITLE_MAX_LEN = 10;
+
+ public static final String TAG_CHECKED = String.valueOf('\u221A');
+ public static final String TAG_UNCHECKED = String.valueOf('\u25A1');
+
+ public static final int TAKE_PHOTO = 1;
+ public static final int CHOOSE_PHOTO = 2;
+ private final int PHOTO_SUCCESS = 3;
+ private final int CAMERA_SUCCESS = 4;
+ // TextToSpeech tts;
+ TextView num_word;
+ TextView location;
+ public static final int LOCATION_CODE = 301;
+ private LocationManager locationManager;
+ private String locationProvider = null;
+ private final int PHOTO_REQUEST = 1;
+ private AlertDialog alertDialog2;
+ private CharSequence restore_translate = null;
+
+ private boolean mIsRvoke = false;
+
+
+ private LinearLayout mEditTextList;
+
+ private String mUserQuery;
+ private Pattern mPattern;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ this.setContentView(R.layout.note_edit);
+
+ if (savedInstanceState == null && !initActivityState(getIntent())) {
+ finish();
+ return;
+ }
+ initResources();
+
+
+ final ImageButton add_img_btn = (ImageButton) findViewById(R.id.add_img_btn);
+ add_img_btn.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Log.d(TAG, "onClick: click add image button");
+ Intent loadImage = new Intent(Intent.ACTION_GET_CONTENT);
+ loadImage.addCategory(Intent.CATEGORY_OPENABLE);
+ loadImage.setType("image/*");
+ startActivityForResult(loadImage, PHOTO_REQUEST);
+ }
+ });
+
+ }
+
+
+ /**
+ * Current activity may be killed when the memory is low. Once it is killed, for another time
+ * user load this activity, we should restore the former state
+ */
+ @Override
+ protected void onRestoreInstanceState(Bundle savedInstanceState) {
+ super.onRestoreInstanceState(savedInstanceState);
+ if (savedInstanceState != null && savedInstanceState.containsKey(Intent.EXTRA_UID)) {
+ Intent intent = new Intent(Intent.ACTION_VIEW);
+ intent.putExtra(Intent.EXTRA_UID, savedInstanceState.getLong(Intent.EXTRA_UID));
+ if (!initActivityState(intent)) {
+ finish();
+ return;
+ }
+ Log.d(TAG, "Restoring from killed activity");
+ }
+ }
+
+ private boolean initActivityState(Intent intent) {
+ /**
+ * If the user specified the {@link Intent#ACTION_VIEW} but not provided with id,
+ * then jump to the NotesListActivity
+ */
+ mWorkingNote = null;
+ if (TextUtils.equals(Intent.ACTION_VIEW, intent.getAction())) {
+ long noteId = intent.getLongExtra(Intent.EXTRA_UID, 0);
+ mUserQuery = "";
+
+ /**
+ * Starting from the searched result
+ */
+ if (intent.hasExtra(SearchManager.EXTRA_DATA_KEY)) {
+ noteId = Long.parseLong(intent.getStringExtra(SearchManager.EXTRA_DATA_KEY));
+ mUserQuery = intent.getStringExtra(SearchManager.USER_QUERY);
+ }
+
+ if (!DataUtils.visibleInNoteDatabase(getContentResolver(), noteId, Notes.TYPE_NOTE)) {
+ Intent jump = new Intent(this, NotesListActivity.class);
+ startActivity(jump);
+ showToast(R.string.error_note_not_exist);
+ finish();
+ return false;
+ } else {
+ mWorkingNote = WorkingNote.load(this, noteId);
+ if (mWorkingNote == null) {
+ Log.e(TAG, "load note failed with note id" + noteId);
+ finish();
+ return false;
+ }
+ }
+ 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())) {
+ // New note
+ 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));
+
+ // Parse call-record note
+ 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)) {
+ Log.w(TAG, "The call record number is null");
+ }
+ long noteId = 0;
+ if ((noteId = DataUtils.getNoteIdByPhoneNumberAndCallDate(getContentResolver(),
+ phoneNumber, callDate)) > 0) {
+ mWorkingNote = WorkingNote.load(this, noteId);
+ if (mWorkingNote == null) {
+ Log.e(TAG, "load call note failed with note id" + noteId);
+ finish();
+ return false;
+ }
+ } else {
+ mWorkingNote = WorkingNote.createEmptyNote(this, folderId, widgetId,
+ widgetType, bgResId);
+ mWorkingNote.convertToCallNote(phoneNumber, callDate);
+ }
+ } else {
+ mWorkingNote = WorkingNote.createEmptyNote(this, folderId, widgetId, widgetType,
+ bgResId);
+ }
+
+ getWindow().setSoftInputMode(
+ WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE
+ | WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
+ } else {
+ Log.e(TAG, "Intent not specified action, should not support");
+ finish();
+ return false;
+ }
+ mWorkingNote.setOnSettingStatusChangedListener(this);
+ return true;
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ initNoteScreen();
+ }
+
+ private void initNoteScreen() {
+ mNoteEditor.setTextAppearance(this, TextAppearanceResources
+ .getTexAppearanceResource(mFontSizeId));
+ if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) {
+ switchToListMode(mWorkingNote.getContent());
+ } else {
+ mNoteEditor.setText(getHighlightQueryResult(mWorkingNote.getContent(), mUserQuery));
+ mNoteEditor.setSelection(mNoteEditor.getText().length());
+ }
+ for (Integer id : sBgSelectorSelectionMap.keySet()) {
+ findViewById(sBgSelectorSelectionMap.get(id)).setVisibility(View.GONE);
+ }
+ mHeadViewPanel.setBackgroundResource(mWorkingNote.getTitleBgResId());
+ mNoteEditorPanel.setBackgroundResource(mWorkingNote.getBgColorResId());
+
+ 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: Add the menu for setting alert. Currently disable it because the DateTimePicker
+ * is not ready
+ */
+ showAlertHeader();
+ convertToImage();
+ showTopHeader();
+ }
+
+ private void showAlertHeader() {
+ if (mWorkingNote.hasClockAlert()) {
+ long time = System.currentTimeMillis();
+ if (time > mWorkingNote.getAlertDate()) {
+ mNoteHeaderHolder.tvAlertDate.setText(R.string.note_alert_expired);
+ } else {
+ mNoteHeaderHolder.tvAlertDate.setText(DateUtils.getRelativeTimeSpanString(
+ mWorkingNote.getAlertDate(), time, DateUtils.MINUTE_IN_MILLIS));
+ }
+ mNoteHeaderHolder.tvAlertDate.setVisibility(View.VISIBLE);
+ mNoteHeaderHolder.ivAlertIcon.setVisibility(View.VISIBLE);
+ } else {
+ mNoteHeaderHolder.tvAlertDate.setVisibility(View.GONE);
+ mNoteHeaderHolder.ivAlertIcon.setVisibility(View.GONE);
+ }
+ }
+
+ private void showTopHeader() {
+ mNoteHeaderHolder.tvToptext.setText(R.string.menu_set_top);
+ if (mWorkingNote.getTopId() == 1) {
+ mNoteHeaderHolder.tvToptext.setVisibility(View.VISIBLE);
+ } else {
+ mNoteHeaderHolder.tvToptext.setVisibility(View.GONE);
+ }
+ }
+
+ @Override
+ protected void onNewIntent(Intent intent) {
+ super.onNewIntent(intent);
+ initActivityState(intent);
+ }
+
+ @Override
+ protected void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ /**
+ * For new note without note id, we should firstly save it to
+ * generate a id. If the editing note is not worth saving, there
+ * is no id which is equivalent to create new note
+ */
+ if (!mWorkingNote.existInDatabase()) {
+ saveNote();
+ }
+ outState.putLong(Intent.EXTRA_UID, mWorkingNote.getNoteId());
+ Log.d(TAG, "Save working note id: " + mWorkingNote.getNoteId() + " onSaveInstanceState");
+ }
+
+ @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);
+ }
+
+ private boolean inRangeOfView(View view, MotionEvent ev) {
+ int[] location = new int[2];
+ view.getLocationOnScreen(location);
+ int x = location[0];
+ int y = location[1];
+ if (ev.getX() < x
+ || ev.getX() > (x + view.getWidth())
+ || ev.getY() < y
+ || ev.getY() > (y + view.getHeight())) {
+ return false;
+ }
+ return true;
+ }
+
+ private void initResources() {
+ 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.tvToptext = (TextView) findViewById(R.id.tv_set_top);
+ mNoteHeaderHolder.ibSetBgColor = (ImageView) findViewById(R.id.btn_set_bg_color);
+
+ mNoteHeaderHolder.ibSetBgColor.setOnClickListener(this);
+ mNoteEditor = (EditText) findViewById(R.id.note_edit_view);
+ mNoteEditor.addTextChangedListener(new TextWatcher() {
+ @Override
+ public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+ }
+
+ @Override
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
+
+ }
+
+ @Override
+ public void afterTextChanged(Editable s) {//文本更改后
+ if (!mIsRvoke) {
+ saveMyChanged();
+ } else {
+ mIsRvoke = false;
+ }
+ }
+ });
+ mNoteEditorPanel = findViewById(R.id.sv_note_edit);
+ mNoteBgColorSelector = findViewById(R.id.note_bg_color_selector);
+ for (int id : sBgSelectorBtnsMap.keySet()) {
+ ImageView iv = (ImageView) findViewById(id);
+ iv.setOnClickListener(this);
+ }
+
+ mFontSizeSelector = findViewById(R.id.font_size_selector);
+ 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: Fix bug of store the resource id in shared preference.
+ * * The id may larger than the length of resources, in this case,
+ * * return the {@link ResourceParser#BG_DEFAULT_FONT_SIZE}
+ */
+ if (mFontSizeId >= TextAppearanceResources.getResourcesSize()) {
+ mFontSizeId = ResourceParser.BG_DEFAULT_FONT_SIZE;
+ }
+ mEditTextList = (LinearLayout) findViewById(R.id.note_edit_list);
+
+
+ speech_sum();
+ local_sel();
+ translate();
+
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ if (saveNote()) {
+ Log.d(TAG, "Note data was saved with length:" + mWorkingNote.getContent().length());
+ }
+ clearSettingState();
+
+ }
+
+
+ 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, "Unspported widget type");
+ return;
+ }
+
+ intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[]{
+ mWorkingNote.getWidgetId()
+ });
+
+ sendBroadcast(intent);
+ setResult(RESULT_OK, intent);
+ }
+
+ public void onClick(View v) {
+ int id = v.getId();
+ if (id == R.id.btn_set_bg_color) {
+ mNoteBgColorSelector.setVisibility(View.VISIBLE);
+ findViewById(sBgSelectorSelectionMap.get(mWorkingNote.getBgColorId())).setVisibility(
+ View.VISIBLE);
+ } else if (sBgSelectorBtnsMap.containsKey(id)) {
+ findViewById(sBgSelectorSelectionMap.get(mWorkingNote.getBgColorId())).setVisibility(
+ View.GONE);
+ mWorkingNote.setBgColorId(sBgSelectorBtnsMap.get(id));
+ mNoteBgColorSelector.setVisibility(View.GONE);
+ } else if (sFontSizeBtnsMap.containsKey(id)) {
+ findViewById(sFontSelectorSelectionMap.get(mFontSizeId)).setVisibility(View.GONE);
+ mFontSizeId = sFontSizeBtnsMap.get(id);
+ mSharedPrefs.edit().putInt(PREFERENCE_FONT_SIZE, mFontSizeId).commit();
+ findViewById(sFontSelectorSelectionMap.get(mFontSizeId)).setVisibility(View.VISIBLE);
+ if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) {
+ getWorkingText();
+ switchToListMode(mWorkingNote.getContent());
+ } else {
+ mNoteEditor.setTextAppearance(this,
+ TextAppearanceResources.getTexAppearanceResource(mFontSizeId));
+ }
+ mFontSizeSelector.setVisibility(View.GONE);
+ }
+ }
+
+ @Override
+ public void onBackPressed() {
+ if (clearSettingState()) {
+ return;
+ }
+
+ saveNote();
+ super.onBackPressed();
+ }
+
+ 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;
+ }
+
+ public void onBackgroundColorChanged() {
+ findViewById(sBgSelectorSelectionMap.get(mWorkingNote.getBgColorId())).setVisibility(
+ View.VISIBLE);
+ mNoteEditorPanel.setBackgroundResource(mWorkingNote.getBgColorResId());
+ mHeadViewPanel.setBackgroundResource(mWorkingNote.getTitleBgResId());
+ }
+
+ @Override
+ public boolean onPrepareOptionsMenu(Menu menu) {
+ if (isFinishing()) {
+ return true;
+ }
+ clearSettingState();
+ menu.clear();
+ if (mWorkingNote.getFolderId() == Notes.ID_CALL_RECORD_FOLDER) {
+ getMenuInflater().inflate(R.menu.call_note_edit, menu);
+ } else {
+ getMenuInflater().inflate(R.menu.note_edit, menu);
+ }
+ if (mWorkingNote.getTopId() == 1) {
+ menu.findItem(R.id.menu_set_top).setVisible(false);
+ } else if (mWorkingNote.getTopId() == 0) {
+ menu.findItem(R.id.menu_cancel_top).setVisible(false);
+ }
+ 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);
+ }
+ if (mWorkingNote.hasClockAlert()) {
+ menu.findItem(R.id.menu_alert).setVisible(false);
+ } else {
+ menu.findItem(R.id.menu_delete_remind).setVisible(false);
+ }
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case R.id.menu_new_note:
+ createNewNote();
+ break;
+ case R.id.menu_revoke:
+ doRevoke();
+ break;
+ case R.id.menu_set_top:
+ mWorkingNote.setTop((mWorkingNote.getTopId()) == 1 ? "0" : "1");
+ break;
+ case R.id.menu_cancel_top:
+ mWorkingNote.setTop((mWorkingNote.getTopId()) == 0 ? "1" : "0");
+ break;
+ case R.id.menu_delete:
+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ builder.setTitle(getString(R.string.alert_title_delete));
+ builder.setIcon(android.R.drawable.ic_dialog_alert);
+ builder.setMessage(getString(R.string.alert_message_delete_note));
+ builder.setPositiveButton(android.R.string.ok,
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ deleteCurrentNote();
+ finish();
+ }
+ });
+ builder.setNegativeButton(android.R.string.cancel, null);
+ builder.show();
+ break;
+ case R.id.menu_font_size:
+ mFontSizeSelector.setVisibility(View.VISIBLE);
+ findViewById(sFontSelectorSelectionMap.get(mFontSizeId)).setVisibility(View.VISIBLE);
+ break;
+ case R.id.menu_list_mode:
+ mWorkingNote.setCheckListMode(mWorkingNote.getCheckListMode() == 0 ?
+ TextNote.MODE_CHECK_LIST : 0);
+ break;
+ case R.id.menu_share:
+ getWorkingText();
+ sendTo(this, mWorkingNote.getContent());
+ break;
+ case R.id.menu_send_to_desktop:
+ sendToDesktop();
+ break;
+ case R.id.menu_alert:
+ setReminder();
+ break;
+ case R.id.menu_delete_remind:
+ mWorkingNote.setAlertDate(0, false);
+ break;
+ case R.id.menu_font_select:
+ showSingleAlertDiglog();
+ break;
+ case R.id.menu_count_word://数字统计
+ AlertDialog.Builder builder1 = new AlertDialog.Builder(this);//对话框对象
+ builder1.setIcon(android.R.drawable.ic_dialog_alert);//对话框图标
+ TextView content = (TextView) findViewById(R.id.note_edit_view);
+ int c = content.length();
+ builder1.setMessage("带符号字数总和统计为:" + c);
+ builder1.setPositiveButton(android.R.string.ok,
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ finish();
+ }
+ });//确定按钮
+ builder1.setNegativeButton(android.R.string.cancel, null);//取消按钮
+ builder1.show();//对话框启动
+ break;
+ default:
+ break;
+ }
+ return true;
+ }
+
+ 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();
+ }
+
+ /**
+ * Share note to apps that support {@link Intent#ACTION_SEND} action
+ * and {@text/plain} type
+ */
+ 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);
+ }
+
+ private void createNewNote() {
+ // Firstly, save current editing notes
+ saveNote();
+
+ // For safety, start a new 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);
+ }
+
+ private void deleteCurrentNote() {
+ if (mWorkingNote.existInDatabase()) {
+ HashSet ids = new HashSet();
+ 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);
+ }
+
+ private boolean isSyncMode() {
+ return NotesPreferenceActivity.getSyncAccountName(this).trim().length() > 0;
+ }
+
+ public void onTopChanged(String Top) {
+ /**
+ * User could set clock to an unsaved note, so before setting the
+ * alert clock, we should save the note first
+ */
+ saveNote();
+ if (mWorkingNote.getNoteId() > 0) {
+ showTopHeader();
+ } else {
+ /**
+ * There is the condition that user has input nothing (the note is
+ * not worthy saving), we have no note id, remind the user that he
+ * should input something
+ */
+ Log.e(TAG, "Top setting error");
+ showToast(R.string.error_note_empty_for_top);
+ }
+ }
+
+
+ public void onClockAlertChanged(long date, boolean set) {
+ /**
+ * User could set clock to an unsaved note, so before setting the
+ * alert clock, we should save the note first
+ */
+ 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 {
+ /**
+ * There is the condition that user has input nothing (the note is
+ * not worthy saving), we have no note id, remind the user that he
+ * should input something
+ */
+ Log.e(TAG, "Clock alert setting error");
+ showToast(R.string.error_note_empty_for_clock);
+ }
+ }
+
+ public void onWidgetChanged() {
+ updateWidget();
+ }
+
+ 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);
+ }
+
+ public void onEditTextEnter(int index, String text) {
+ /**
+ * Should not happen, check for debug
+ */
+ 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);
+ }
+ }
+
+ private void switchToListMode(String text) {
+ mEditTextList.removeAllViews();
+ String[] items = text.split("\n");
+ int index = 0;
+ for (String item : items) {
+ if (!TextUtils.isEmpty(item)) {
+ mEditTextList.addView(getListItem(item, index));
+ index++;
+ }
+ }
+ mEditTextList.addView(getListItem("", index));
+ mEditTextList.getChildAt(index).findViewById(R.id.et_edit_text).requestFocus();
+
+ mNoteEditor.setVisibility(View.GONE);
+ mEditTextList.setVisibility(View.VISIBLE);
+ }
+
+ 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;
+ 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;
+ }
+
+ 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));
+ 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);
+ }
+ }
+ });
+
+ if (item.startsWith(TAG_CHECKED)) {
+ cb.setChecked(true);
+ edit.setPaintFlags(edit.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
+ item = item.substring(TAG_CHECKED.length(), item.length()).trim();
+ } else if (item.startsWith(TAG_UNCHECKED)) {
+ cb.setChecked(false);
+ edit.setPaintFlags(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG);
+ item = item.substring(TAG_UNCHECKED.length(), item.length()).trim();
+ }
+
+ edit.setOnTextViewChangeListener(this);
+ edit.setIndex(index);
+ edit.setText(getHighlightQueryResult(item, mUserQuery));
+ return view;
+ }
+
+ public void onTextChange(int index, boolean hasText) {
+ if (index >= mEditTextList.getChildCount()) {
+ Log.e(TAG, "Wrong index, should not happen");
+ return;
+ }
+ if (hasText) {
+ mEditTextList.getChildAt(index).findViewById(R.id.cb_edit_item).setVisibility(View.VISIBLE);
+ } else {
+ mEditTextList.getChildAt(index).findViewById(R.id.cb_edit_item).setVisibility(View.GONE);
+ }
+ }
+
+ public void onCheckListModeChanged(int oldMode, int newMode) {
+ if (newMode == TextNote.MODE_CHECK_LIST) {
+ switchToListMode(mNoteEditor.getText().toString());
+ } else {
+ if (!getWorkingText()) {
+ mWorkingNote.setWorkingText(mWorkingNote.getContent().replace(TAG_UNCHECKED + " ",
+ ""));
+ }
+ mNoteEditor.setText(getHighlightQueryResult(mWorkingNote.getContent(), mUserQuery));
+ mEditTextList.setVisibility(View.GONE);
+ mNoteEditor.setVisibility(View.VISIBLE);
+ }
+ }
+
+ 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;
+ }
+
+ private boolean saveNote() {
+ getWorkingText();
+ boolean saved = mWorkingNote.saveNote();
+ if (saved) {
+ /**
+ * There are two modes from List view to edit view, open one note,
+ * create/edit a node. Opening node requires to the original
+ * position in the list when back from edit view, while creating a
+ * new node requires to the top of the list. This code
+ * {@link #RESULT_OK} is used to identify the create/edit state
+ */
+ setResult(RESULT_OK);
+ }
+ return saved;
+ }
+
+ private void sendToDesktop() {
+ /**
+ * Before send message to home, we should make sure that current
+ * editing note is exists in databases. So, for new note, firstly
+ * save it
+ */
+ 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 {
+ /**
+ * There is the condition that user has input nothing (the note is
+ * not worthy saving), we have no note id, remind the user that he
+ * should input something
+ */
+ Log.e(TAG, "Send to desktop error");
+ showToast(R.string.error_note_empty_for_send_to_desktop);
+ }
+ }
+
+ 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;
+ }
+
+ private void showToast(int resId) {
+ showToast(resId, Toast.LENGTH_SHORT);
+ }
+
+ private void showToast(int resId, int duration) {
+ Toast.makeText(this, resId, duration).show();
+ }
+
+
+ private String getLocation() {
+ //1.获取位置管理器
+ String city = null;
+ locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
+
+
+ //2.获取位置提供器,GPS或是NetWork
+ List providers = locationManager.getProviders(true);
+
+ if (providers.contains(LocationManager.GPS_PROVIDER)) {
+ //如果是GPS
+ locationProvider = LocationManager.GPS_PROVIDER;
+ Log.v("TAG", "定位方式GPS");
+ } else if (providers.contains(LocationManager.NETWORK_PROVIDER)) {
+ //如果是Network
+ locationProvider = LocationManager.NETWORK_PROVIDER;
+ Log.v("TAG", "定位方式Network");
+ } else {
+ Toast.makeText(this, "没有可用的位置提供器", Toast.LENGTH_SHORT).show();
+ return null;
+ }
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ //获取权限(如果没有开启权限,会弹出对话框,询问是否开启权限)
+ if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
+ != PackageManager.PERMISSION_GRANTED ||
+ ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
+ != PackageManager.PERMISSION_GRANTED) {
+ //请求权限
+ ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION,
+ Manifest.permission.ACCESS_COARSE_LOCATION}, LOCATION_CODE);
+ } else {
+ //3.获取上次的位置,一般第一次运行,此值为null
+ Location location = locationManager.getLastKnownLocation(locationProvider);
+ if (location != null) {
+ Toast.makeText(this, location.getLongitude() + " " +
+ location.getLatitude() + "", Toast.LENGTH_SHORT).show();
+ Log.v("TAG", "获取上次的位置-经纬度:" + location.getLongitude() + " " + location.getLatitude());
+ city = getAddress(location);
+
+ } else {
+ //监视地理位置变化,第二个和第三个参数分别为更新的最短时间minTime和最短距离minDistace
+ locationManager.requestLocationUpdates(locationProvider, 3000, 1, locationListener);
+ }
+ }
+ } else {
+ Location location = locationManager.getLastKnownLocation(locationProvider);
+ if (location != null) {
+ Toast.makeText(this, location.getLongitude() + " " +
+ location.getLatitude() + "", Toast.LENGTH_SHORT).show();
+ Log.v("TAG", "获取上次的位置-经纬度:" + location.getLongitude() + " " + location.getLatitude());
+ city = getAddress(location);
+
+ } else {
+ //监视地理位置变化,第二个和第三个参数分别为更新的最短时间minTime和最短距离minDistace
+ locationManager.requestLocationUpdates(locationProvider, 3000, 1, locationListener);
+ }
+ }
+ return city;
+ }
+
+ public LocationListener locationListener = new LocationListener() {
+ // Provider的状态在可用、暂时不可用和无服务三个状态直接切换时触发此函数
+ @Override
+ public void onStatusChanged(String provider, int status, Bundle extras) {
+ }
+
+ // Provider被enable时触发此函数,比如GPS被打开
+ @Override
+ public void onProviderEnabled(String provider) {
+ }
+
+ // Provider被disable时触发此函数,比如GPS被关闭
+ @Override
+ public void onProviderDisabled(String provider) {
+ }
+
+ //当坐标改变时触发此函数,如果Provider传进相同的坐标,它就不会被触发
+ @Override
+ public void onLocationChanged(Location location) {
+ if (location != null) {
+ //如果位置发生变化,重新显示地理位置经纬度
+ Toast.makeText(NoteEditActivity.this, location.getLongitude() + " " +
+ location.getLatitude() + "", Toast.LENGTH_SHORT).show();
+ Log.v("TAG", "监视地理位置变化-经纬度:" + location.getLongitude() + " " + location.getLatitude());
+ }
+ }
+ };
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
+ switch (requestCode) {
+ case LOCATION_CODE:
+ if (grantResults.length > 0 && grantResults[0] == getPackageManager().PERMISSION_GRANTED
+ && grantResults[1] == PackageManager.PERMISSION_GRANTED) {
+ Toast.makeText(this, "申请权限", Toast.LENGTH_LONG).show();
+ try {
+ List providers = locationManager.getProviders(true);
+ if (providers.contains(LocationManager.NETWORK_PROVIDER)) {
+ //如果是Network
+ locationProvider = LocationManager.NETWORK_PROVIDER;
+
+ } else if (providers.contains(LocationManager.GPS_PROVIDER)) {
+ //如果是GPS
+ locationProvider = LocationManager.GPS_PROVIDER;
+ }
+ Location location = locationManager.getLastKnownLocation(locationProvider);
+ if (location != null) {
+ Toast.makeText(this, location.getLongitude() + " " +
+ location.getLatitude() + "", Toast.LENGTH_SHORT).show();
+ Log.v("TAG", "获取上次的位置-经纬度:" + location.getLongitude() + " " + location.getLatitude());
+ } else {
+ // 监视地理位置变化,第二个和第三个参数分别为更新的最短时间minTime和最短距离minDistace
+ locationManager.requestLocationUpdates(locationProvider, 0, 0, locationListener);
+ }
+
+ } catch (SecurityException e) {
+ e.printStackTrace();
+ }
+ } else {
+ Toast.makeText(this, "缺少权限", Toast.LENGTH_LONG).show();
+ finish();
+ }
+ break;
+ }
+ }
+
+ //获取地址信息:城市、街道等信息
+ private String getAddress(Location location) {
+ List result = null;
+ String city = null;
+ try {
+ if (location != null) {
+ Geocoder gc = new Geocoder(this, Locale.getDefault());
+ result = gc.getFromLocation(location.getLatitude(),
+ location.getLongitude(), 1);
+ city = result.get(0).getAddressLine(0).toString();
+ Toast.makeText(this, "获取地址信息:" + city, Toast.LENGTH_LONG).show();
+ Log.v("TAG", "获取地址信息:" + city);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ Log.e(TAG, city);
+ return city;
+ }
+
+
+ private void local_sel() {
+ final Button get_local = findViewById(R.id.location);
+ get_local.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(final View v) {
+ Button local1 = new Button(NoteEditActivity.this);
+ final Button local2 = new Button(NoteEditActivity.this);
+ local1.setText("获取地理信息");
+ local2.setText("清除地理信息");
+ LinearLayout linear = new LinearLayout(NoteEditActivity.this);
+ linear.setOrientation(LinearLayout.VERTICAL);
+ linear.addView(local1);
+ linear.addView(local2);
+ AlertDialog.Builder builder = new AlertDialog.Builder(NoteEditActivity.this);
+ builder.setView(linear);
+ builder.setTitle("请选择功能");
+ AlertDialog choose_local = builder.create();
+ choose_local.show();
+ local1.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Toast.makeText(NoteEditActivity.this, "获取地理信息", Toast.LENGTH_SHORT).show();
+ String city = null;
+ city = getLocation();
+
+ if (city == null) {
+ get_local.setText("点击获得地理信息");
+ } else {
+ get_local.setText(city);
+ }
+ }
+ });
+ local2.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Toast.makeText(NoteEditActivity.this, "清除地理信息", Toast.LENGTH_SHORT).show();
+ get_local.setText("点击获得地理信息");
+ }
+ });
+
+ }
+
+// builder.setTitle("choose");
+// AlertDialog choose_local = builder.create();
+// choose_local.show();
+
+ });
+ }
+
+ public void speech_sum() {
+ EditText editable = findViewById(R.id.note_edit_view);
+ //Toast.makeText(NoteEditActivity.this, editable.getText().toString(), Toast.LENGTH_SHORT).show();
+ final Button speak = findViewById(R.id.iatBtn);
+ final int[] tmp = new int[1];
+ final TextToSpeech[] tts = new TextToSpeech[1];
+ tts[0] = new TextToSpeech(NoteEditActivity.this, new TextToSpeech.OnInitListener() {
+ @Override
+ public void onInit(int status) {
+ tts[0].setLanguage(Locale.US);
+ }
+ });
+ editable.addTextChangedListener(new TextWatcher() {
+ @Override
+ public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+ }
+
+ @Override
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
+ tmp[0] = cutOfimage(operateText(s.toString())).length();
+ TextView number_word = findViewById(R.id.num_word);
+ number_word.setText("字符数:" + tmp[0]);
+ final String temp = cutOfimage(s.toString());
+ speak.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ tts[0].speak(temp.toString(), TextToSpeech.QUEUE_FLUSH, null);
+ }
+ });
+ }
+
+ @Override
+ public void afterTextChanged(Editable s) {
+ }
+ });
+ }
+
+ public String operateText(String str) {
+ String dest = "";
+ Pattern p = Pattern.compile("\\s*|t|r|n");
+ Matcher m = p.matcher(str);
+ dest = m.replaceAll("");
+ return dest;
+ }
+
+ public String cutOfimage(String str) {
+ String dest = str;
+ int index1 = dest.indexOf("[local]");
+ int index2 = dest.indexOf("[/local]");
+ while (index1 != -1 && index2 != -1) {
+ dest = dest.substring(0, index1) + dest.substring(index2 + 8);
+ index1 = dest.indexOf("[local]");
+ index2 = dest.indexOf("[/local]");
+ }
+ return dest;
+ }
+
+
+ private void convertToImage() {
+ NoteEditText noteEditText = (NoteEditText) findViewById(R.id.note_edit_view);
+ Editable editable = noteEditText.getText();
+ String noteText = editable.toString();
+ int length = editable.length();
+ for (int i = 0; i < length; i++) {
+ for (int j = i; j < length; j++) {
+ String img_fragment = noteText.substring(i, j + 1);
+ if (img_fragment.length() > 15 && img_fragment.endsWith("[/local]") && img_fragment.startsWith("[local]")) {
+ int limit = 7;
+ int len = img_fragment.length() - 15;
+ String path = img_fragment.substring(limit, limit + len);
+ Bitmap bitmap = null;
+ Log.d(TAG, "图片的路径是:" + path);
+ try {
+ bitmap = BitmapFactory.decodeFile(path);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ if (bitmap != null) {
+ Log.d(TAG, "图片不为null");
+ ImageSpan imageSpan = new ImageSpan(NoteEditActivity.this, bitmap);
+ String ss = "[local]" + path + "[/local]";
+ SpannableString spannableString = new SpannableString(ss);
+ spannableString.setSpan(imageSpan, 0, ss.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+ Log.d(TAG, "Create spannable string success!");
+ Editable edit_text = noteEditText.getEditableText();
+ edit_text.delete(i, i + len + 15);
+ edit_text.insert(i, spannableString);
+ }
+ }
+ }
+ }
+ }
+
+
+ @RequiresApi(api = Build.VERSION_CODES.KITKAT)
+ protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
+ super.onActivityResult(requestCode, resultCode, intent);
+ ContentResolver resolver = getContentResolver();
+ switch (requestCode) {
+ case PHOTO_REQUEST:
+ Uri originalUri = intent.getData();
+ Bitmap bitmap = null;
+ try {
+ bitmap = BitmapFactory.decodeStream(resolver.openInputStream(originalUri));//2.解码图片
+ } catch (FileNotFoundException e) {
+ Log.d(TAG, "onActivityResult: get file_exception");
+ e.printStackTrace();
+ }
+
+ if (bitmap != null) {
+ Log.d(TAG, "onActivityResult: bitmap is not null");
+ ImageSpan imageSpan = new ImageSpan(NoteEditActivity.this, bitmap);
+ String path = getPath(this, originalUri);
+ String img_fragment = "[local]" + path + "[/local]";
+ SpannableString spannableString = new SpannableString(img_fragment);
+ spannableString.setSpan(imageSpan, 0, img_fragment.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+ NoteEditText e = (NoteEditText) findViewById(R.id.note_edit_view);
+ int index = e.getSelectionStart();
+ Log.d(TAG, "Index是: " + index);
+ Editable edit_text = e.getEditableText();
+ edit_text.insert(index, spannableString);
+ mWorkingNote.setmContent(e.getText().toString());
+ ContentResolver contentResolver = getContentResolver();
+ ContentValues contentValues = new ContentValues();
+ final long id = mWorkingNote.getNoteId();
+ contentValues.put("snippet", mWorkingNote.getContent());
+ contentResolver.update(Uri.parse("content://micode_notes/note"), contentValues, "_id=?", new String[]{"" + id});
+ ContentValues contentValues1 = new ContentValues();
+ contentValues1.put("content", mWorkingNote.getContent());
+ contentResolver.update(Uri.parse("content://micode_notes/data"), contentValues1, "mime_type=? and note_id=?", new String[]{"vnd.android.cursor.item/text_note", "" + id});
+
+ } else {
+ Toast.makeText(NoteEditActivity.this, "获取图片失败", Toast.LENGTH_SHORT).show();
+ }
+ break;
+ default:
+ break;
+ }
+ }
+
+
+ @RequiresApi(api = Build.VERSION_CODES.KITKAT)
+ public String getPath(final Context context, final Uri uri) {
+
+ final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
+ if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) {
+ if (isMediaDocument(uri)) {
+ final String docId = DocumentsContract.getDocumentId(uri);
+ final String[] split = docId.split(":");
+ final String type = split[0];
+
+ Uri contentUri = null;
+ if ("image".equals(type)) {
+ contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
+ }
+
+ final String selection = "_id=?";
+ final String[] selectionArgs = new String[]{split[1]};
+
+ return getDataColumn(context, contentUri, selection, selectionArgs);
+ }
+ }
+ // Media
+ else if ("content".equalsIgnoreCase(uri.getScheme())) {
+ return getDataColumn(context, uri, null, null);
+ }
+ // File
+ else if ("file".equalsIgnoreCase(uri.getScheme())) {
+ return uri.getPath();
+ }
+ return null;
+ }
+
+ public String getDataColumn(Context context, Uri uri, String selection, String[] selectionArgs) {
+
+ Cursor cursor = null;
+ final String column = "_data";
+ final String[] projection = {column};
+
+ try {
+ cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs, null);
+ if (cursor != null && cursor.moveToFirst()) {
+ final int column_index = cursor.getColumnIndexOrThrow(column);
+ return cursor.getString(column_index);
+ }
+ } finally {
+ if (cursor != null)
+ cursor.close();
+ }
+ return null;
+ }
+
+ public boolean isMediaDocument(Uri uri) {
+ return "com.android.providers.media.documents".equals(uri.getAuthority());
+ }
+
+
+ public void showSingleAlertDiglog() {
+ final String[] items = {"默认-普通", "默认-非衬线", "默认-衬线", "默认-等宽", "仿宋", "黑体", "楷体", "姚体", "隶书", "行楷", "新魏", "中宋"};
+ AlertDialog.Builder alertBuilder = new AlertDialog.Builder(this);
+ alertBuilder.setTitle("选择字体");
+ alertBuilder.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialogInterface, int i) {
+ switch (i) {
+ case 0:
+ mNoteEditor.setTypeface(Typeface.DEFAULT);
+ break;
+ case 1:
+ mNoteEditor.setTypeface(Typeface.SANS_SERIF);
+ break;
+ case 2:
+ mNoteEditor.setTypeface(Typeface.SERIF);
+ break;
+ case 3:
+ mNoteEditor.setTypeface(Typeface.MONOSPACE);
+ break;
+ case 4:
+ Typeface typeface0 = Typeface.createFromAsset(getAssets(), "font/simfang.ttf");
+ mNoteEditor.setTypeface(typeface0);
+ break;
+ case 5:
+ Typeface typeface1 = Typeface.createFromAsset(getAssets(), "font/simhei.ttf");
+ mNoteEditor.setTypeface(typeface1);
+ break;
+ case 6:
+ Typeface typeface2 = Typeface.createFromAsset(getAssets(), "font/simkai.ttf");
+ mNoteEditor.setTypeface(typeface2);
+ break;
+ case 7:
+ Typeface typeface3 = Typeface.createFromAsset(getAssets(), "font/FZYTK.TTF");
+ mNoteEditor.setTypeface(typeface3);
+ break;
+ case 8:
+ Typeface typeface4 = Typeface.createFromAsset(getAssets(), "font/STLITI.TTF");
+ mNoteEditor.setTypeface(typeface4);
+ break;
+ case 9:
+ Typeface typeface5 = Typeface.createFromAsset(getAssets(), "font/STXINGKA.TTF");
+ mNoteEditor.setTypeface(typeface5);
+ break;
+ case 10:
+ Typeface typeface6 = Typeface.createFromAsset(getAssets(), "font/STXINWEI.TTF");
+ mNoteEditor.setTypeface(typeface6);
+ break;
+ case 11:
+ Typeface typeface7 = Typeface.createFromAsset(getAssets(), "font/STZHONGS.TTF");
+ mNoteEditor.setTypeface(typeface7);
+ break;
+ }
+ Toast.makeText(NoteEditActivity.this, items[i], Toast.LENGTH_SHORT).show();
+ }
+ });
+ alertBuilder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialogInterface, int i) {
+ alertDialog2.dismiss();
+
+ }
+
+ });
+ alertBuilder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialogInterface, int i) {
+ alertDialog2.dismiss();
+ }
+
+ });
+ alertDialog2 = alertBuilder.create();
+ alertDialog2.show();
+ }
+
+ public void translate() {
+ final EditText editable = findViewById(R.id.note_edit_view);
+ final Button get_local = findViewById(R.id.translate);
+ get_local.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(final View v) {
+ Button trans1 = new Button(NoteEditActivity.this);
+ Button trans2 = new Button(NoteEditActivity.this);
+ Button trans3 = new Button(NoteEditActivity.this);
+ trans1.setText("中文翻译为英文");
+ trans2.setText("英文翻译为中文");
+ trans3.setText("还原");
+ LinearLayout linear = new LinearLayout(NoteEditActivity.this);
+ linear.setOrientation(LinearLayout.VERTICAL);
+ linear.addView(trans1);
+ linear.addView(trans2);
+ linear.addView(trans3);
+ AlertDialog.Builder builder = new AlertDialog.Builder(NoteEditActivity.this);
+ builder.setView(linear);
+ builder.setTitle("请选择翻译模式");
+ AlertDialog choose_trans = builder.create();
+ choose_trans.show();
+ trans1.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ restore_translate = editable.getText();
+ translate_z2u();
+ Toast.makeText(NoteEditActivity.this, "中文翻译为英文", Toast.LENGTH_SHORT).show();
+ }
+ });
+ trans2.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ restore_translate = editable.getText();
+ translate_u2z();
+ Toast.makeText(NoteEditActivity.this, "英文翻译为中文", Toast.LENGTH_SHORT).show();
+ }
+ });
+ trans3.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (restore_translate == null || restore_translate.toString().equals(editable.getText().toString())) {
+ Toast.makeText(NoteEditActivity.this, "无可还原内容", Toast.LENGTH_SHORT).show();
+ } else {
+ editable.setText(restore_translate);
+ Toast.makeText(NoteEditActivity.this, "已还原", Toast.LENGTH_SHORT).show();
+ }
+ }
+ });
+ }
+ });
+ }
+
+
+ public void translate_z2u() {
+ final EditText editable = findViewById(R.id.note_edit_view);
+ String word = editable.getText().toString();
+ word = word.replaceAll("\\n", "//");
+ String from = "auto";
+ String to = "en";
+ String appid = "20221021001406789";
+ String salt = (int) (Math.random() * 100 + 1) + "";
+ String key = "eWky8SSKgL99Dh4rHMog";
+ String secretKey = appid + word + salt + key;
+ String sign = MD5Utils.getMD5Code(secretKey);
+ Log.d(TAG, "secretKey:" + secretKey);
+ Log.d(TAG, "sign: " + sign);
+ Retrofit retrofitBaidu = new Retrofit.Builder()
+ .baseUrl("https://fanyi-api.baidu.com/api/trans/vip/")
+ .addConverterFactory(GsonConverterFactory.create())
+ .build();
+ BaiduTranslateService baiduTranslateService = retrofitBaidu.create(BaiduTranslateService.class);
+ retrofit2.Call call = baiduTranslateService.translate(word, from, to, appid, salt, sign);
+ call.enqueue(new Callback() {
+ @Override
+ public void onResponse(retrofit2.Call call, Response response) {
+ Log.d(TAG, "onResponse: 请求成功");
+ RespondBean respondBean = response.body();
+ String result = respondBean.getTrans_result().get(0).getDst();
+ editable.setText(result);
+ Log.d(TAG, "中译英结果" + result);
+ }
+
+ @Override
+ public void onFailure(retrofit2.Call call, Throwable t) {
+ Log.d(TAG, "onResponse: 请求失败 " + t);
+ }
+ });
+ }
+
+ public void translate_u2z() {
+ final EditText editable = findViewById(R.id.note_edit_view);
+ String word = editable.getText().toString();
+ word = word.replaceAll("\\n", "//");
+ Log.d(TAG, word);
+ String from = "auto";
+ String to = "zh";
+ String appid = "20221021001406789";
+ String salt = (int) (Math.random() * 100 + 1) + "";
+ String key = "eWky8SSKgL99Dh4rHMog";
+ String secretKey = appid + word + salt + key;
+ String sign = MD5Utils.getMD5Code(secretKey);
+ Log.d(TAG, "secretKey:" + secretKey);
+ Log.d(TAG, "sign: " + sign);
+ Retrofit retrofitBaidu = new Retrofit.Builder()
+ .baseUrl("https://fanyi-api.baidu.com/api/trans/vip/")
+ .addConverterFactory(GsonConverterFactory.create())
+ .build();
+ BaiduTranslateService baiduTranslateService = retrofitBaidu.create(BaiduTranslateService.class);
+ retrofit2.Call call = baiduTranslateService.translate(word, from, to, appid, salt, sign);
+ call.enqueue(new Callback() {
+ @Override
+ public void onResponse(retrofit2.Call call, Response response) {
+ Log.d(TAG, "onResponse: 请求成功");
+ RespondBean respondBean = response.body();
+ String result = respondBean.getTrans_result().get(0).getDst();
+ editable.setText(result);
+ Log.d(TAG, "中译英结果" + result);
+ }
+
+ @Override
+ public void onFailure(retrofit2.Call call, Throwable t) {
+ Log.d(TAG, "onResponse: 请求失败 " + t);
+ }
+ });
+ }
+
+ private static final int MAX_TIME_OF_RVOKE_TIME = 100;
+ private int MAX_OF_RVOKE_TIME = 100;
+ private Vector mChanged = new Vector(MAX_OF_RVOKE_TIME);
+
+ private void saveMyChanged() {
+ SpannableString text = new SpannableString(mNoteEditor.getText());//用getText方法获取每次编辑的内容
+ if (mChanged.size() >= MAX_TIME_OF_RVOKE_TIME) {//如果栈中的数据大于最大撤销次数,就把第一次修改的内容删除
+ mChanged.removeElementAt(0);
+ }
+ mChanged.add(text);//然后把本次修改的内容加入栈中
+ }
+
+ private void doRevoke() {
+ int size = mChanged.size();//获取当前栈大小
+ AlertDialog.Builder dialog = new AlertDialog.Builder(this);//创建一个alertdialog窗口
+ dialog.setTitle(R.string.tips_of_revoke);//设置title信息
+ dialog.setCancelable(true);//设置为可取消
+ dialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {//只需要设置一个OK键即可
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ }
+ });
+ mIsRvoke = true;//把是否已执行撤销的标记设置为true
+ if (size <= 1) {//如果栈中元素过少,打印提示信息
+ dialog.setMessage(R.string.have_not_input_anything);//提示用户您还没有输入任何信息
+ dialog.show();//显示当前alertdialog
+ return;
+ } else {
+ mNoteEditor.setText((CharSequence) mChanged.elementAt(size - 2));//在textview中设置撤销的内容
+ mNoteEditor.setSelection(mNoteEditor.length());
+ mChanged.removeElementAt(size - 1);//删除元素
+ if (size == 2) {
+ dialog.setMessage(R.string.can_not_revoke);//如果只有一次操作,那么提示用户不能再撤销了
+ dialog.show();//显示当前alertdialog
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/xiaomi-src/app/src/main/java/net/micode/notes/ui/NoteEditText.java b/xiaomi-src/main/java/net/micode/notes/ui/NoteEditText.java
similarity index 74%
rename from xiaomi-src/app/src/main/java/net/micode/notes/ui/NoteEditText.java
rename to xiaomi-src/main/java/net/micode/notes/ui/NoteEditText.java
index 8e3e59f..24278b5 100644
--- a/xiaomi-src/app/src/main/java/net/micode/notes/ui/NoteEditText.java
+++ b/xiaomi-src/main/java/net/micode/notes/ui/NoteEditText.java
@@ -37,21 +37,16 @@ import net.micode.notes.R;
import java.util.HashMap;
import java.util.Map;
-/**
- * 自定义的可编辑文本视图,支持文本变化监听、删除和新增文本事件。
- */
-public class NoteEditText extends EditText {
+public class NoteEditText extends android.support.v7.widget.AppCompatEditText {
private static final String TAG = "NoteEditText";
- private int mIndex; // 当前文本视图的索引
- private int mSelectionStartBeforeDelete; // 删除操作前的选择起始位置
+ private int mIndex;
+ private int mSelectionStartBeforeDelete;
- private static final String SCHEME_TEL = "tel:";
- private static final String SCHEME_HTTP = "http:";
- private static final String SCHEME_EMAIL = "mailto:";
+ private static final String SCHEME_TEL = "tel:" ;
+ private static final String SCHEME_HTTP = "http:" ;
+ private static final String SCHEME_EMAIL = "mailto:" ;
- // URL方案与对应操作资源ID的映射
private static final Map sSchemaActionResMap = new HashMap();
-
static {
sSchemaActionResMap.put(SCHEME_TEL, R.string.note_link_tel);
sSchemaActionResMap.put(SCHEME_HTTP, R.string.note_link_web);
@@ -59,84 +54,56 @@ public class NoteEditText extends EditText {
}
/**
- * 文本视图变化监听接口。
+ * Call by the {@link NoteEditActivity} to delete or add edit text
*/
public interface OnTextViewChangeListener {
/**
- * 当按下删除键且文本为空时,删除当前文本视图。
+ * Delete current edit text when {@link KeyEvent#KEYCODE_DEL} happens
+ * and the text is null
*/
void onEditTextDelete(int index, String text);
/**
- * 当按下回车键时,新增一个文本视图。
+ * Add edit text after current edit text when {@link KeyEvent#KEYCODE_ENTER}
+ * happen
*/
void onEditTextEnter(int index, String text);
/**
- * 当文本变化时,隐藏或显示项目选项。
+ * Hide or show item option when text change
*/
void onTextChange(int index, boolean hasText);
}
private OnTextViewChangeListener mOnTextViewChangeListener;
- /**
- * 构造函数,初始化编辑文本视图。
- *
- * @param context 上下文对象
- */
public NoteEditText(Context context) {
super(context, null);
mIndex = 0;
}
- /**
- * 设置当前文本视图的索引。
- *
- * @param index 当前文本视图的索引
- */
public void setIndex(int index) {
mIndex = index;
}
- /**
- * 设置文本视图变化监听器。
- *
- * @param listener 文本视图变化监听器
- */
public void setOnTextViewChangeListener(OnTextViewChangeListener listener) {
mOnTextViewChangeListener = listener;
}
- /**
- * 构造函数,初始化编辑文本视图。
- *
- * @param context 上下文对象
- * @param attrs 属性集
- */
public NoteEditText(Context context, AttributeSet attrs) {
super(context, attrs, android.R.attr.editTextStyle);
}
- /**
- * 构造函数,初始化编辑文本视图。
- *
- * @param context 上下文对象
- * @param attrs 属性集
- * @param defStyle 样式
- */
public NoteEditText(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
+ // TODO Auto-generated constructor stub
}
- /**
- * 处理触摸事件,调整光标位置。
- */
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
- // 计算触摸位置相对于文本的偏移量,并调整光标位置
+
int x = (int) event.getX();
int y = (int) event.getY();
x -= getTotalPaddingLeft();
@@ -154,20 +121,15 @@ public class NoteEditText extends EditText {
return super.onTouchEvent(event);
}
- /**
- * 处理键盘按下事件。
- */
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_ENTER:
- // 处理回车键事件,准备新增文本视图
if (mOnTextViewChangeListener != null) {
return false;
}
break;
case KeyEvent.KEYCODE_DEL:
- // 记录删除操作前的选择位置
mSelectionStartBeforeDelete = getSelectionStart();
break;
default:
@@ -176,14 +138,10 @@ public class NoteEditText extends EditText {
return super.onKeyDown(keyCode, event);
}
- /**
- * 处理键盘弹起事件。
- */
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
- switch (keyCode) {
+ switch(keyCode) {
case KeyEvent.KEYCODE_DEL:
- // 处理删除键事件,若为首个文本且非空,则删除当前文本
if (mOnTextViewChangeListener != null) {
if (0 == mSelectionStartBeforeDelete && mIndex != 0) {
mOnTextViewChangeListener.onEditTextDelete(mIndex, getText().toString());
@@ -194,7 +152,6 @@ public class NoteEditText extends EditText {
}
break;
case KeyEvent.KEYCODE_ENTER:
- // 处理回车键事件,新增文本视图
if (mOnTextViewChangeListener != null) {
int selectionStart = getSelectionStart();
String text = getText().subSequence(selectionStart, length()).toString();
@@ -210,9 +167,6 @@ public class NoteEditText extends EditText {
return super.onKeyUp(keyCode, event);
}
- /**
- * 当焦点变化时,通知文本变化情况。
- */
@Override
protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
if (mOnTextViewChangeListener != null) {
@@ -225,9 +179,6 @@ public class NoteEditText extends EditText {
super.onFocusChanged(focused, direction, previouslyFocusedRect);
}
- /**
- * 创建上下文菜单,支持点击URL跳转。
- */
@Override
protected void onCreateContextMenu(ContextMenu menu) {
if (getText() instanceof Spanned) {
@@ -240,8 +191,8 @@ public class NoteEditText extends EditText {
final URLSpan[] urls = ((Spanned) getText()).getSpans(min, max, URLSpan.class);
if (urls.length == 1) {
int defaultResId = 0;
- for (String schema : sSchemaActionResMap.keySet()) {
- if (urls[0].getURL().indexOf(schema) >= 0) {
+ for(String schema: sSchemaActionResMap.keySet()) {
+ if(urls[0].getURL().indexOf(schema) >= 0) {
defaultResId = sSchemaActionResMap.get(schema);
break;
}
@@ -254,7 +205,7 @@ public class NoteEditText extends EditText {
menu.add(0, 0, 0, defaultResId).setOnMenuItemClickListener(
new OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
- // 跳转到URL指向的页面
+ // goto a new intent
urls[0].onClick(NoteEditText.this);
return true;
}
@@ -264,4 +215,3 @@ public class NoteEditText extends EditText {
super.onCreateContextMenu(menu);
}
}
-
diff --git a/xiaomi-src/app/src/main/java/net/micode/notes/ui/NoteItemData.java b/xiaomi-src/main/java/net/micode/notes/ui/NoteItemData.java
similarity index 68%
rename from xiaomi-src/app/src/main/java/net/micode/notes/ui/NoteItemData.java
rename to xiaomi-src/main/java/net/micode/notes/ui/NoteItemData.java
index e0c70c5..1966e95 100644
--- a/xiaomi-src/app/src/main/java/net/micode/notes/ui/NoteItemData.java
+++ b/xiaomi-src/main/java/net/micode/notes/ui/NoteItemData.java
@@ -26,41 +26,37 @@ import net.micode.notes.data.Notes.NoteColumns;
import net.micode.notes.tool.DataUtils;
-/**
- * 代表一个笔记项的数据类,用于存储和管理笔记的各种信息。
- */
public class NoteItemData {
- // 定义查询时要投影的列
- static final String[] PROJECTION = new String[]{
- NoteColumns.ID,
- NoteColumns.ALERTED_DATE,
- NoteColumns.BG_COLOR_ID,
- NoteColumns.CREATED_DATE,
- NoteColumns.HAS_ATTACHMENT,
- NoteColumns.MODIFIED_DATE,
- NoteColumns.NOTES_COUNT,
- NoteColumns.PARENT_ID,
- NoteColumns.SNIPPET,
- NoteColumns.TYPE,
- NoteColumns.WIDGET_ID,
- NoteColumns.WIDGET_TYPE,
+ static final String [] PROJECTION = new String [] {
+ NoteColumns.ID,
+ NoteColumns.ALERTED_DATE,
+ NoteColumns.BG_COLOR_ID,
+ NoteColumns.CREATED_DATE,
+ NoteColumns.HAS_ATTACHMENT,
+ NoteColumns.MODIFIED_DATE,
+ NoteColumns.NOTES_COUNT,
+ NoteColumns.PARENT_ID,
+ NoteColumns.SNIPPET,
+ NoteColumns.TYPE,
+ NoteColumns.WIDGET_ID,
+ NoteColumns.WIDGET_TYPE,
+ NoteColumns.TOP,
};
- // 各列数据的索引
- private static final int ID_COLUMN = 0;
- private static final int ALERTED_DATE_COLUMN = 1;
- private static final int BG_COLOR_ID_COLUMN = 2;
- private static final int CREATED_DATE_COLUMN = 3;
- private static final int HAS_ATTACHMENT_COLUMN = 4;
- private static final int MODIFIED_DATE_COLUMN = 5;
- private static final int NOTES_COUNT_COLUMN = 6;
- private static final int PARENT_ID_COLUMN = 7;
- private static final int SNIPPET_COLUMN = 8;
- private static final int TYPE_COLUMN = 9;
- private static final int WIDGET_ID_COLUMN = 10;
- private static final int WIDGET_TYPE_COLUMN = 11;
-
- // 笔记的各项数据
+ private static final int ID_COLUMN = 0;
+ private static final int ALERTED_DATE_COLUMN = 1;
+ private static final int BG_COLOR_ID_COLUMN = 2;
+ private static final int CREATED_DATE_COLUMN = 3;
+ private static final int HAS_ATTACHMENT_COLUMN = 4;
+ private static final int MODIFIED_DATE_COLUMN = 5;
+ private static final int NOTES_COUNT_COLUMN = 6;
+ private static final int PARENT_ID_COLUMN = 7;
+ private static final int SNIPPET_COLUMN = 8;
+ private static final int TYPE_COLUMN = 9;
+ private static final int WIDGET_ID_COLUMN = 10;
+ private static final int WIDGET_TYPE_COLUMN = 11;
+ private static final int TOP_ID_COLUMN = 12;
+
private long mId;
private long mAlertDate;
private int mBgColorId;
@@ -75,22 +71,15 @@ public class NoteItemData {
private int mWidgetType;
private String mName;
private String mPhoneNumber;
+ private String mTop;
- // 用于标识笔记在列表中的位置状态
private boolean mIsLastItem;
private boolean mIsFirstItem;
private boolean mIsOnlyOneItem;
private boolean mIsOneNoteFollowingFolder;
private boolean mIsMultiNotesFollowingFolder;
- /**
- * 根据Cursor数据构造一个NoteItemData对象。
- *
- * @param context 上下文对象,用于访问应用全局功能。
- * @param cursor 包含笔记数据的Cursor对象。
- */
public NoteItemData(Context context, Cursor cursor) {
- // 从Cursor中提取各项数据并赋值
mId = cursor.getLong(ID_COLUMN);
mAlertDate = cursor.getLong(ALERTED_DATE_COLUMN);
mBgColorId = cursor.getInt(BG_COLOR_ID_COLUMN);
@@ -105,8 +94,8 @@ public class NoteItemData {
mType = cursor.getInt(TYPE_COLUMN);
mWidgetId = cursor.getInt(WIDGET_ID_COLUMN);
mWidgetType = cursor.getInt(WIDGET_TYPE_COLUMN);
+ mTop = cursor.getString(TOP_ID_COLUMN);
- // 如果是通话记录笔记,尝试获取通话号码和联系人名称
mPhoneNumber = "";
if (mParentId == Notes.ID_CALL_RECORD_FOLDER) {
mPhoneNumber = DataUtils.getCallNumberByNoteId(context.getContentResolver(), mId);
@@ -118,27 +107,19 @@ public class NoteItemData {
}
}
- // 如果没有获取到联系人名称,则默认为空字符串
if (mName == null) {
mName = "";
}
checkPostion(cursor);
}
- /**
- * 根据当前Cursor位置,更新NoteItemData的状态信息(如是否为列表中的最后一个项目等)。
- *
- * @param cursor 包含笔记数据的Cursor对象。
- */
private void checkPostion(Cursor cursor) {
- // 更新位置状态信息
- mIsLastItem = cursor.isLast();
- mIsFirstItem = cursor.isFirst();
+ mIsLastItem = cursor.isLast() ? true : false;
+ mIsFirstItem = cursor.isFirst() ? true : false;
mIsOnlyOneItem = (cursor.getCount() == 1);
mIsMultiNotesFollowingFolder = false;
mIsOneNoteFollowingFolder = false;
- // 检查当前笔记是否跟随文件夹,并更新相应状态
if (mType == Notes.TYPE_NOTE && !mIsFirstItem) {
int position = cursor.getPosition();
if (cursor.moveToPrevious()) {
@@ -150,7 +131,6 @@ public class NoteItemData {
mIsOneNoteFollowingFolder = true;
}
}
- // 确保Cursor能够回到原来的位置
if (!cursor.moveToNext()) {
throw new IllegalStateException("cursor move to previous but can't move back");
}
@@ -158,7 +138,13 @@ public class NoteItemData {
}
}
- // 以下为获取NoteItemData各项属性的方法
+ public boolean isTOP() {
+ if(mTop.equals("1")) {
+ return true;
+ }else {
+ return false;
+ }
+ }
public boolean isOneFollowingFolder() {
return mIsOneNoteFollowingFolder;
@@ -216,7 +202,7 @@ public class NoteItemData {
return mNotesCount;
}
- public long getFolderId() {
+ public long getFolderId () {
return mParentId;
}
@@ -244,14 +230,7 @@ public class NoteItemData {
return (mParentId == Notes.ID_CALL_RECORD_FOLDER && !TextUtils.isEmpty(mPhoneNumber));
}
- /**
- * 从Cursor中获取笔记的类型。
- *
- * @param cursor 包含笔记数据的Cursor对象。
- * @return 笔记的类型。
- */
public static int getNoteType(Cursor cursor) {
return cursor.getInt(TYPE_COLUMN);
}
}
-
diff --git a/xiaomi-src/app/src/main/java/net/micode/notes/ui/NotesListActivity.java b/xiaomi-src/main/java/net/micode/notes/ui/NotesListActivity.java
similarity index 61%
rename from xiaomi-src/app/src/main/java/net/micode/notes/ui/NotesListActivity.java
rename to xiaomi-src/main/java/net/micode/notes/ui/NotesListActivity.java
index b7b1014..61a997f 100644
--- a/xiaomi-src/app/src/main/java/net/micode/notes/ui/NotesListActivity.java
+++ b/xiaomi-src/main/java/net/micode/notes/ui/NotesListActivity.java
@@ -16,7 +16,9 @@
package net.micode.notes.ui;
+import android.annotation.SuppressLint;
import android.app.Activity;
+import android.support.v7.app.AppCompatActivity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.appwidget.AppWidgetManager;
@@ -63,6 +65,7 @@ import android.widget.Toast;
import net.micode.notes.R;
import net.micode.notes.data.Notes;
import net.micode.notes.data.Notes.NoteColumns;
+import net.micode.notes.gtask.remote.GTaskSyncService;
import net.micode.notes.model.WorkingNote;
import net.micode.notes.tool.BackupUtils;
import net.micode.notes.tool.DataUtils;
@@ -77,116 +80,83 @@ import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.HashSet;
-public class NotesListActivity extends Activity implements OnClickListener, OnItemLongClickListener {
- // 定义文件夹中笔记列表查询的标记
+public class NotesListActivity extends AppCompatActivity implements OnClickListener, OnItemLongClickListener {
+ public static int secret_mode = 0;
+
private static final int FOLDER_NOTE_LIST_QUERY_TOKEN = 0;
- // 定义文件夹列表查询的标记
- private static final int FOLDER_LIST_QUERY_TOKEN = 1;
+ private static final int FOLDER_LIST_QUERY_TOKEN = 1;
- // 菜单中删除文件夹的选项
private static final int MENU_FOLDER_DELETE = 0;
- // 菜单中查看文件夹的选项
private static final int MENU_FOLDER_VIEW = 1;
- // 菜单中更改文件夹名称的选项
private static final int MENU_FOLDER_CHANGE_NAME = 2;
- // 首次使用应用时,添加介绍信息的偏好设置键
private static final String PREFERENCE_ADD_INTRODUCTION = "net.micode.notes.introduction";
- // 列表编辑状态的枚举,包括笔记列表、子文件夹和通话记录文件夹
private enum ListEditState {
NOTE_LIST, SUB_FOLDER, CALL_RECORD_FOLDER
- }
-
- ;
+ };
- // 当前编辑状态
private ListEditState mState;
- // 后台查询处理器
private BackgroundQueryHandler mBackgroundQueryHandler;
- // 笔记列表的适配器
private NotesListAdapter mNotesListAdapter;
- // 笔记列表视图
private ListView mNotesListView;
- // 添加新笔记的按钮
private Button mAddNewNote;
- // 是否分发事件的标志
private boolean mDispatch;
- // 触摸点的原始Y坐标
private int mOriginY;
- // 分发事件时的Y坐标
private int mDispatchY;
- // 标题栏文本视图
private TextView mTitleBar;
- // 当前文件夹的ID
private long mCurrentFolderId;
- // 内容解析器
private ContentResolver mContentResolver;
- // 模式回调接口
private ModeCallback mModeCallBack;
- // 日志标签
private static final String TAG = "NotesListActivity";
- // 笔记列表视图滚动速率
public static final int NOTES_LISTVIEW_SCROLL_RATE = 30;
- // 聚焦的笔记数据项
private NoteItemData mFocusNoteDataItem;
- // 普通文件夹选择条件
private static final String NORMAL_SELECTION = NoteColumns.PARENT_ID + "=?";
- // 根文件夹选择条件
private static final String ROOT_FOLDER_SELECTION = "(" + NoteColumns.TYPE + "<>"
+ Notes.TYPE_SYSTEM + " AND " + NoteColumns.PARENT_ID + "=?)" + " OR ("
+ NoteColumns.ID + "=" + Notes.ID_CALL_RECORD_FOLDER + " AND "
+ NoteColumns.NOTES_COUNT + ">0)";
- // 打开节点请求代码
private final static int REQUEST_CODE_OPEN_NODE = 102;
- // 新建节点请求代码
- private final static int REQUEST_CODE_NEW_NODE = 103;
-
- /**
- * 在活动创建时调用,用于初始化资源和设置应用信息。
- *
- * @param savedInstanceState 如果活动之前被销毁,这参数包含之前的状态。如果活动没被销毁之前,这参数是null。
- */
+ private final static int REQUEST_CODE_NEW_NODE = 103;
+
+ static Activity NoteListActivity;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.note_list);
+ NoteListActivity = this;
+
initResources();
- // 用户首次使用时插入介绍信息
+ /**
+ * Insert an introduction when user firstly use this application
+ */
setAppInfoFromRawRes();
}
- /**
- * 处理从其他活动返回的结果。
- *
- * @param requestCode 启动其他活动时传入的请求代码。
- * @param resultCode 其他活动返回的结果代码。
- * @param data 其他活动返回的数据。
- */
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- // 如果返回结果为OK且请求代码为打开节点或新建节点,则刷新列表
if (resultCode == RESULT_OK
&& (requestCode == REQUEST_CODE_OPEN_NODE || requestCode == REQUEST_CODE_NEW_NODE)) {
mNotesListAdapter.changeCursor(null);
@@ -195,32 +165,22 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
}
}
-
- /**
- * 从原始资源中设置应用信息。此方法会读取R.raw.introduction中的内容,
- * 并且只有当之前未添加介绍信息时,才将读取到的内容保存为一个工作笔记。
- */
private void setAppInfoFromRawRes() {
- // 获取SharedPreferences实例
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
- // 检查是否已经添加了介绍信息
if (!sp.getBoolean(PREFERENCE_ADD_INTRODUCTION, false)) {
StringBuilder sb = new StringBuilder();
InputStream in = null;
try {
- // 从资源中打开introduction文件
- in = getResources().openRawResource(R.raw.introduction);
+ in = getResources().openRawResource(R.raw.introduction);
if (in != null) {
- // 读取文件内容到StringBuilder
InputStreamReader isr = new InputStreamReader(in);
BufferedReader br = new BufferedReader(isr);
- char[] buf = new char[1024];
+ char [] buf = new char[1024];
int len = 0;
while ((len = br.read(buf)) > 0) {
sb.append(buf, 0, len);
}
} else {
- // 打印错误日志,如果无法打开文件
Log.e(TAG, "Read introduction file error");
return;
}
@@ -228,96 +188,66 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
e.printStackTrace();
return;
} finally {
- // 确保InputStream被关闭
- if (in != null) {
+ if(in != null) {
try {
in.close();
} catch (IOException e) {
+ // TODO Auto-generated catch block
e.printStackTrace();
}
}
}
- // 创建一个新的工作笔记并设置其内容
WorkingNote note = WorkingNote.createEmptyNote(this, Notes.ID_ROOT_FOLDER,
AppWidgetManager.INVALID_APPWIDGET_ID, Notes.TYPE_WIDGET_INVALIDE,
ResourceParser.RED);
note.setWorkingText(sb.toString());
- // 保存工作笔记并标记已添加介绍信息
if (note.saveNote()) {
sp.edit().putBoolean(PREFERENCE_ADD_INTRODUCTION, true).commit();
} else {
- // 打印错误日志,如果保存工作笔记失败
Log.e(TAG, "Save introduction note error");
return;
}
}
}
- /**
- * Activity启动时调用,开始异步查询笔记列表。
- */
@Override
protected void onStart() {
super.onStart();
startAsyncNotesListQuery();
}
- /**
- * 初始化资源,包括ListView、适配器和其他UI组件。
- */
private void initResources() {
- // 获取ContentResolver实例
mContentResolver = this.getContentResolver();
- // 创建后台查询处理器
mBackgroundQueryHandler = new BackgroundQueryHandler(this.getContentResolver());
mCurrentFolderId = Notes.ID_ROOT_FOLDER;
- // 初始化ListView和相关监听器
mNotesListView = (ListView) findViewById(R.id.notes_list);
mNotesListView.addFooterView(LayoutInflater.from(this).inflate(R.layout.note_list_footer, null),
null, false);
mNotesListView.setOnItemClickListener(new OnListItemClickListener());
mNotesListView.setOnItemLongClickListener(this);
- // 初始化并设置笔记列表适配器
mNotesListAdapter = new NotesListAdapter(this);
mNotesListView.setAdapter(mNotesListAdapter);
- // 初始化新建笔记按钮并设置点击监听器
mAddNewNote = (Button) findViewById(R.id.btn_new_note);
mAddNewNote.setOnClickListener(this);
mAddNewNote.setOnTouchListener(new NewNoteOnTouchListener());
- // 初始化状态变量和触摸相关的变量
mDispatch = false;
mDispatchY = 0;
mOriginY = 0;
- // 初始化标题栏和其他状态变量
mTitleBar = (TextView) findViewById(R.id.tv_title_bar);
mState = ListEditState.NOTE_LIST;
mModeCallBack = new ModeCallback();
}
-
- /**
- * 用于处理列表的多选择模式和菜单点击事件的回调类。
- */
private class ModeCallback implements ListView.MultiChoiceModeListener, OnMenuItemClickListener {
- private DropdownMenu mDropDownMenu; // 下拉菜单
- private ActionMode mActionMode; // 动作模式
- private MenuItem mMoveMenu; // 移动菜单项
+ private DropdownMenu mDropDownMenu;
+ private ActionMode mActionMode;
+ private MenuItem mMoveMenu;
- /**
- * 创建动作模式时的回调方法。
- *
- * @param mode 动作模式实例。
- * @param menu 菜单实例。
- * @return 如果成功创建动作模式,返回true;否则返回false。
- */
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
- // 加载菜单项
getMenuInflater().inflate(R.menu.note_list_options, menu);
- // 设置删除项的点击监听器
menu.findItem(R.id.delete).setOnMenuItemClickListener(this);
mMoveMenu = menu.findItem(R.id.move);
- // 根据条件决定是否显示移动菜单项
if (mFocusNoteDataItem.getParentId() == Notes.ID_CALL_RECORD_FOLDER
|| DataUtils.getUserFolderCount(mContentResolver) == 0) {
mMoveMenu.setVisible(false);
@@ -325,21 +255,18 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
mMoveMenu.setVisible(true);
mMoveMenu.setOnMenuItemClickListener(this);
}
- // 初始化动作模式和列表选择模式
mActionMode = mode;
mNotesListAdapter.setChoiceMode(true);
mNotesListView.setLongClickable(false);
mAddNewNote.setVisibility(View.GONE);
- // 设置自定义视图并初始化下拉菜单
View customView = LayoutInflater.from(NotesListActivity.this).inflate(
R.layout.note_list_dropdown_menu, null);
mode.setCustomView(customView);
mDropDownMenu = new DropdownMenu(NotesListActivity.this,
(Button) customView.findViewById(R.id.selection_menu),
R.menu.note_list_dropdown);
- // 设置下拉菜单项点击监听器
- mDropDownMenu.setOnDropdownMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
+ mDropDownMenu.setOnDropdownMenuItemClickListener(new PopupMenu.OnMenuItemClickListener(){
public boolean onMenuItemClick(MenuItem item) {
mNotesListAdapter.selectAll(!mNotesListAdapter.isAllSelected());
updateMenu();
@@ -350,15 +277,11 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
return true;
}
- /**
- * 更新动作模式下的菜单项。
- */
private void updateMenu() {
int selectedCount = mNotesListAdapter.getSelectedCount();
- // 更新下拉菜单标题
+ // Update dropdown menu
String format = getResources().getString(R.string.menu_select_title, selectedCount);
mDropDownMenu.setTitle(format);
- // 更新“选择全部”菜单项的状态
MenuItem item = mDropDownMenu.findItem(R.id.action_select_all);
if (item != null) {
if (mNotesListAdapter.isAllSelected()) {
@@ -371,37 +294,17 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
}
}
- /**
- * 准备动作模式时的回调方法。
- *
- * @param mode 动作模式实例。
- * @param menu 菜单实例。
- * @return 返回false,表示未进行任何操作。
- */
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
// TODO Auto-generated method stub
return false;
}
- /**
- * 点击动作模式中的菜单项时的回调方法。
- *
- * @param mode 动作模式实例。
- * @param item 被点击的菜单项。
- * @return 返回false,表示未进行任何操作。
- */
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
// TODO Auto-generated method stub
return false;
}
- /**
- * 销毁动作模式时的回调方法。
- *
- * @param mode 动作模式实例。
- */
public void onDestroyActionMode(ActionMode mode) {
- // 还原列表选择模式和设置
mNotesListAdapter.setChoiceMode(false);
mNotesListView.setLongClickable(true);
mAddNewNote.setVisibility(View.VISIBLE);
@@ -411,56 +314,37 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
mActionMode.finish();
}
- /**
- * 处理列表项选择状态变化的回调方法。
- *
- * @param mode 动作模式实例。
- * @param position 列表中被改变选择状态的项的位置。
- * @param id 项的ID。
- * @param checked 项的新选择状态。
- */
public void onItemCheckedStateChanged(ActionMode mode, int position, long id,
- boolean checked) {
- // 更新列表项的选择状态并更新菜单
+ boolean checked) {
mNotesListAdapter.setCheckedItem(position, checked);
updateMenu();
}
- /**
- * 处理菜单项点击事件的回调方法。
- *
- * @param item 被点击的菜单项。
- * @return 如果已处理点击事件,返回true;否则返回false。
- */
public boolean onMenuItemClick(MenuItem item) {
- // 若未选择任何项,则显示提示
if (mNotesListAdapter.getSelectedCount() == 0) {
Toast.makeText(NotesListActivity.this, getString(R.string.menu_select_none),
Toast.LENGTH_SHORT).show();
return true;
}
- // 根据菜单项ID执行相应操作
switch (item.getItemId()) {
case R.id.delete:
- // 显示删除确认对话框
AlertDialog.Builder builder = new AlertDialog.Builder(NotesListActivity.this);
builder.setTitle(getString(R.string.alert_title_delete));
builder.setIcon(android.R.drawable.ic_dialog_alert);
builder.setMessage(getString(R.string.alert_message_delete_notes,
- mNotesListAdapter.getSelectedCount()));
+ mNotesListAdapter.getSelectedCount()));
builder.setPositiveButton(android.R.string.ok,
- new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog,
- int which) {
- batchDelete();
- }
- });
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog,
+ int which) {
+ batchDelete();
+ }
+ });
builder.setNegativeButton(android.R.string.cancel, null);
builder.show();
break;
case R.id.move:
- // 启动查询目标文件夹的操作
startQueryDestinationFolders();
break;
default:
@@ -470,36 +354,32 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
}
}
-
- /**
- * 为“新建笔记”按钮添加触摸监听器的内部类,实现点击和拖动事件的处理。
- */
private class NewNoteOnTouchListener implements OnTouchListener {
- /**
- * 处理触摸事件。
- *
- * @param v 触摸的视图。
- * @param event 触摸事件。
- * @return 如果事件被处理则返回true,否则返回false。
- */
public boolean onTouch(View v, MotionEvent event) {
- // 根据触摸事件的动作进行不同的处理
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
- // 获取屏幕高度和“新建笔记”视图的高度
Display display = getWindowManager().getDefaultDisplay();
int screenHeight = display.getHeight();
int newNoteViewHeight = mAddNewNote.getHeight();
int start = screenHeight - newNoteViewHeight;
int eventY = start + (int) event.getY();
- // 如果当前状态为子文件夹编辑状态,需减去标题栏的高度
+ /**
+ * Minus TitleBar's height
+ */
if (mState == ListEditState.SUB_FOLDER) {
eventY -= mTitleBar.getHeight();
start -= mTitleBar.getHeight();
}
- // 当点击到“新建笔记”按钮透明部分时,将事件分发给背后的列表视图
- // 这里使用了一种硬编码的方式处理透明部分的点击,依赖于当前的背景公式
+ /**
+ * HACKME:When click the transparent part of "New Note" button, dispatch
+ * the event to the list view behind this button. The transparent part of
+ * "New Note" button could be expressed by formula y=-0.12x+94(Unit:pixel)
+ * and the line top of the button. The coordinate based on left of the "New
+ * Note" button. The 94 represents maximum height of the transparent part.
+ * Notice that, if the background of the button changes, the formula should
+ * also change. This is very bad, just for the UI designer's strong requirement.
+ */
if (event.getY() < (event.getX() * (-0.12) + 94)) {
View view = mNotesListView.getChildAt(mNotesListView.getChildCount() - 1
- mNotesListView.getFooterViewsCount());
@@ -515,7 +395,6 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
break;
}
case MotionEvent.ACTION_MOVE: {
- // 如果正在分发触摸事件,则更新事件的位置并继续分发
if (mDispatch) {
mDispatchY += (int) event.getY() - mOriginY;
event.setLocation(event.getX(), mDispatchY);
@@ -524,7 +403,6 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
break;
}
default: {
- // 当触摸动作结束或取消时,停止分发事件
if (mDispatch) {
event.setLocation(event.getX(), mDispatchY);
mDispatch = false;
@@ -533,56 +411,56 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
break;
}
}
- // 如果事件未被分发,则返回false
return false;
}
- }
-
- ;
-
+ };
- /**
- * 异步查询笔记列表。
- * 根据当前文件夹ID选择不同的查询条件,启动一个后台查询处理该查询。
- */
private void startAsyncNotesListQuery() {
- // 根据当前文件夹ID选择查询条件
String selection = (mCurrentFolderId == Notes.ID_ROOT_FOLDER) ? ROOT_FOLDER_SELECTION
: NORMAL_SELECTION;
- // 启动查询,排序方式为类型降序,修改日期降序
- 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");
+ String str1 = "0123456789";
+ String[] PROJECTION = new String[]{ //定义一个新的PROJECTION数组,只换掉SNIPPET
+ NoteColumns.ID,
+ NoteColumns.ALERTED_DATE,
+ NoteColumns.BG_COLOR_ID,
+ NoteColumns.CREATED_DATE,
+ NoteColumns.HAS_ATTACHMENT,
+ NoteColumns.MODIFIED_DATE,
+ NoteColumns.NOTES_COUNT,
+ NoteColumns.PARENT_ID,
+// NoteColumns.SNIPPET,
+ str1,
+ NoteColumns.TYPE,
+ NoteColumns.WIDGET_ID,
+ NoteColumns.WIDGET_TYPE,
+ NoteColumns.TOP,
+ };
+ if (secret_mode == 0) {
+ mBackgroundQueryHandler.startQuery(FOLDER_NOTE_LIST_QUERY_TOKEN, null,
+ Notes.CONTENT_NOTE_URI, NoteItemData.PROJECTION, selection, new String[]{
+ String.valueOf(mCurrentFolderId)
+ }, NoteColumns.TOP + " DESC," + NoteColumns.TYPE + " DESC," + NoteColumns.MODIFIED_DATE + " DESC");
+ } else {
+ mBackgroundQueryHandler.startQuery(FOLDER_NOTE_LIST_QUERY_TOKEN, null,
+ Notes.CONTENT_NOTE_URI, PROJECTION, selection, new String[]{
+ String.valueOf(mCurrentFolderId)
+ }, NoteColumns.TOP + " DESC," + NoteColumns.TYPE + " DESC," + NoteColumns.MODIFIED_DATE + " DESC");
+ }
}
- /**
- * 处理后台查询的类。
- * 继承自AsyncQueryHandler,用于处理异步查询完成后的操作。
- */
private final class BackgroundQueryHandler extends AsyncQueryHandler {
public BackgroundQueryHandler(ContentResolver contentResolver) {
super(contentResolver);
}
- /**
- * 查询完成时的处理逻辑。
- * 根据查询标记的不同,执行不同的操作,如更新笔记列表或显示文件夹列表。
- *
- * @param token 查询标记,用于区分不同的查询。
- * @param cookie 查询时传入的附加对象。
- * @param cursor 查询结果的游标。
- */
@Override
protected void onQueryComplete(int token, Object cookie, Cursor cursor) {
switch (token) {
case FOLDER_NOTE_LIST_QUERY_TOKEN:
- // 更新笔记列表适配器的数据源
mNotesListAdapter.changeCursor(cursor);
break;
case FOLDER_LIST_QUERY_TOKEN:
- // 根据查询结果展示或记录错误
if (cursor != null && cursor.getCount() > 0) {
showFolderListMenu(cursor);
} else {
@@ -590,123 +468,78 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
}
break;
default:
- // 对未知标记不做处理
return;
}
}
}
- /**
- * 显示文件夹列表的菜单。
- * 使用查询结果构建一个对话框,让用户选择一个文件夹。
- *
- * @param cursor 查询结果的游标,包含文件夹信息。
- */
private void showFolderListMenu(Cursor cursor) {
- // 构建文件夹列表选择的对话框
AlertDialog.Builder builder = new AlertDialog.Builder(NotesListActivity.this);
builder.setTitle(R.string.menu_title_select_folder);
final FoldersListAdapter adapter = new FoldersListAdapter(this, cursor);
builder.setAdapter(adapter, new DialogInterface.OnClickListener() {
- /**
- * 用户选择文件夹时的处理逻辑。
- * 将选中的笔记移动到用户选择的文件夹中,并给出反馈。
- *
- * @param dialog 对话框实例。
- * @param which 用户选择的项的索引。
- */
+ @SuppressLint("StringFormatInvalid")
public void onClick(DialogInterface dialog, int which) {
- // 批量移动选中的笔记到目标文件夹
DataUtils.batchMoveToFolder(mContentResolver,
mNotesListAdapter.getSelectedItemIds(), adapter.getItemId(which));
- // 显示移动操作的反馈信息
Toast.makeText(
NotesListActivity.this,
getString(R.string.format_move_notes_to_folder,
mNotesListAdapter.getSelectedCount(),
adapter.getFolderName(NotesListActivity.this, which)),
Toast.LENGTH_SHORT).show();
- // 结束当前的操作模式
mModeCallBack.finishActionMode();
}
});
builder.show();
}
- /**
- * 创建新的笔记。
- * 启动一个活动用于编辑新笔记或编辑现有笔记。
- */
private void createNewNote() {
- // 构建意图并指定动作为插入或编辑,以及初始文件夹ID
Intent intent = new Intent(this, NoteEditActivity.class);
intent.setAction(Intent.ACTION_INSERT_OR_EDIT);
intent.putExtra(Notes.INTENT_EXTRA_FOLDER_ID, mCurrentFolderId);
- // 启动该意图并期待返回结果
this.startActivityForResult(intent, REQUEST_CODE_NEW_NODE);
}
-
- /**
- * 批量删除笔记的函数。根据当前是否处于同步模式,采取不同的删除策略:如果不处于同步模式,则直接删除笔记;如果处于同步模式,则将笔记移动到回收站文件夹。
- * 执行删除操作后,会更新相应的widgets。
- */
private void batchDelete() {
new AsyncTask>() {
- // 在后台执行任务,获取选中的widgets并执行删除操作
protected HashSet doInBackground(Void... unused) {
- // 获取当前选中的widgets
HashSet widgets = mNotesListAdapter.getSelectedWidget();
if (!isSyncMode()) {
- // 如果当前不处于同步模式,直接删除笔记
+ // if not synced, delete notes directly
if (DataUtils.batchDeleteNotes(mContentResolver, mNotesListAdapter
.getSelectedItemIds())) {
- // 删除成功无需额外操作
} else {
- // 删除失败,记录错误
Log.e(TAG, "Delete notes error, should not happens");
}
} else {
- // 如果处于同步模式,将笔记移动到回收站文件夹
+ // in sync mode, we'll move the deleted note into the trash
+ // folder
if (!DataUtils.batchMoveToFolder(mContentResolver, mNotesListAdapter
.getSelectedItemIds(), Notes.ID_TRASH_FOLER)) {
- // 移动失败,记录错误
Log.e(TAG, "Move notes to trash folder error, should not happens");
}
}
return widgets;
}
- // 删除操作完成后,在UI线程执行后续操作
@Override
protected void onPostExecute(HashSet widgets) {
- // 遍历所有受影响的widgets,对有效的widgets进行更新
if (widgets != null) {
for (AppWidgetAttribute widget : widgets) {
if (widget.widgetId != AppWidgetManager.INVALID_APPWIDGET_ID
&& widget.widgetType != Notes.TYPE_WIDGET_INVALIDE) {
- // 更新有效的widget
updateWidget(widget.widgetId, widget.widgetType);
}
}
}
- // 结束动作模式
mModeCallBack.finishActionMode();
}
}.execute();
}
-
- /**
- * 删除指定的文件夹。
- * 如果是在同步模式下,文件夹会被移动到回收站,否则直接删除。
- * 同时,也会更新与该文件夹相关的所有小部件。
- *
- * @param folderId 要删除的文件夹ID。
- */
private void deleteFolder(long folderId) {
- // 根据ID判断是否为根文件夹,根文件夹不能被删除
if (folderId == Notes.ID_ROOT_FOLDER) {
Log.e(TAG, "Wrong folder id, should not happen " + folderId);
return;
@@ -714,22 +547,17 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
HashSet ids = new HashSet();
ids.add(folderId);
-
- // 获取与文件夹相关联的小部件信息
HashSet widgets = DataUtils.getFolderNoteWidget(mContentResolver,
folderId);
if (!isSyncMode()) {
- // 非同步模式下直接删除文件夹
+ // if not synced, delete folder directly
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);
}
-
- // 更新相关小部件
if (widgets != null) {
for (AppWidgetAttribute widget : widgets) {
- // 有效的小部件才进行更新
if (widget.widgetId != AppWidgetManager.INVALID_APPWIDGET_ID
&& widget.widgetType != Notes.TYPE_WIDGET_INVALIDE) {
updateWidget(widget.widgetId, widget.widgetType);
@@ -738,39 +566,22 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
}
}
- /**
- * 打开指定的笔记节点进行编辑。
- *
- * @param data 包含要打开的笔记节点信息的对象。
- */
private void openNode(NoteItemData data) {
- // 构造Intent并设置动作和额外数据,然后启动Activity
Intent intent = new Intent(this, NoteEditActivity.class);
intent.setAction(Intent.ACTION_VIEW);
intent.putExtra(Intent.EXTRA_UID, data.getId());
this.startActivityForResult(intent, REQUEST_CODE_OPEN_NODE);
}
- /**
- * 打开指定的文件夹,并加载其笔记列表。
- * 根据文件夹ID的不同,更新UI状态,包括标题和新增笔记按钮的可见性。
- *
- * @param data 包含要打开的文件夹信息的对象。
- */
private void openFolder(NoteItemData data) {
- // 设置当前文件夹ID并启动异步查询
mCurrentFolderId = data.getId();
startAsyncNotesListQuery();
-
- // 根据文件夹ID更新UI状态
if (data.getId() == Notes.ID_CALL_RECORD_FOLDER) {
mState = ListEditState.CALL_RECORD_FOLDER;
mAddNewNote.setVisibility(View.GONE);
} else {
mState = ListEditState.SUB_FOLDER;
}
-
- // 更新标题栏显示
if (data.getId() == Notes.ID_CALL_RECORD_FOLDER) {
mTitleBar.setText(R.string.call_record_folder_name);
} else {
@@ -779,14 +590,7 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
mTitleBar.setVisibility(View.VISIBLE);
}
- /**
- * 点击事件的处理方法。
- * 目前仅处理新建笔记按钮的点击事件。
- *
- * @param v 被点击的视图对象。
- */
public void onClick(View v) {
- // 根据视图ID执行相应的操作
switch (v.getId()) {
case R.id.btn_new_note:
createNewNote();
@@ -796,10 +600,6 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
}
}
-
- /**
- * 显示软键盘。
- */
private void showSoftInput() {
InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if (inputMethodManager != null) {
@@ -807,128 +607,107 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
}
}
- /**
- * 隐藏软键盘。
- *
- * @param view 触发隐藏软键盘的视图。
- */
private void hideSoftInput(View view) {
InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
- /**
- * 显示创建或修改文件夹的对话框。
- *
- * @param create 如果为true,则为创建文件夹;如果为false,则为修改文件夹。
- */
private void showCreateOrModifyFolderDialog(final boolean create) {
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
View view = LayoutInflater.from(this).inflate(R.layout.dialog_edit_text, null);
final EditText etName = (EditText) view.findViewById(R.id.et_foler_name);
- showSoftInput(); // 显示软键盘
-
+ showSoftInput();
if (!create) {
- // 如果是修改文件夹
if (mFocusNoteDataItem != null) {
- etName.setText(mFocusNoteDataItem.getSnippet()); // 设置当前文件夹名称
- builder.setTitle(getString(R.string.menu_folder_change_name)); // 设置对话框标题
+ etName.setText(mFocusNoteDataItem.getSnippet());
+ builder.setTitle(getString(R.string.menu_folder_change_name));
} else {
- Log.e(TAG, "The long click data item is null"); // 日志记录,长按的数据项为null
+ Log.e(TAG, "The long click data item is null");
return;
}
} else {
- // 如果是创建文件夹
- etName.setText(""); // 清空输入框内容
- builder.setTitle(this.getString(R.string.menu_create_folder)); // 设置对话框标题
+ etName.setText("");
+ builder.setTitle(this.getString(R.string.menu_create_folder));
}
- // 设置对话框的确定和取消按钮
builder.setPositiveButton(android.R.string.ok, null);
builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
- hideSoftInput(etName); // 点击取消时隐藏软键盘
+ hideSoftInput(etName);
}
});
- final Dialog dialog = builder.setView(view).show(); // 显示对话框
- final Button positive = (Button) dialog.findViewById(android.R.id.button1); // 获取确定按钮
+ final Dialog dialog = builder.setView(view).show();
+ final Button positive = (Button)dialog.findViewById(android.R.id.button1);
positive.setOnClickListener(new OnClickListener() {
+ @SuppressLint("StringFormatInvalid")
public void onClick(View v) {
- hideSoftInput(etName); // 隐藏软键盘
- String name = etName.getText().toString(); // 获取输入的文件夹名称
- if (DataUtils.checkVisibleFolderName(mContentResolver, name)) { // 检查文件夹名称是否已存在
+ hideSoftInput(etName);
+ String name = etName.getText().toString();
+ if (DataUtils.checkVisibleFolderName(mContentResolver, name)) {
Toast.makeText(NotesListActivity.this, getString(R.string.folder_exist, name),
- Toast.LENGTH_LONG).show(); // 显示文件夹已存在的提示
- etName.setSelection(0, etName.length()); // 选中输入框中的所有文本
+ Toast.LENGTH_LONG).show();
+ etName.setSelection(0, etName.length());
return;
}
if (!create) {
- // 如果是修改文件夹
- if (!TextUtils.isEmpty(name)) { // 验证输入的文件夹名称不为空
+ if (!TextUtils.isEmpty(name)) {
ContentValues values = new ContentValues();
- values.put(NoteColumns.SNIPPET, name); // 设置新的文件夹名称
- values.put(NoteColumns.TYPE, Notes.TYPE_FOLDER); // 设置类型为文件夹
- values.put(NoteColumns.LOCAL_MODIFIED, 1); // 标记为已修改
+ values.put(NoteColumns.SNIPPET, name);
+ values.put(NoteColumns.TYPE, Notes.TYPE_FOLDER);
+ values.put(NoteColumns.LOCAL_MODIFIED, 1);
mContentResolver.update(Notes.CONTENT_NOTE_URI, values, NoteColumns.ID
- + "=?", new String[]{
- String.valueOf(mFocusNoteDataItem.getId())
- }); // 更新数据库中的文件夹信息
+ + "=?", new String[] {
+ String.valueOf(mFocusNoteDataItem.getId())
+ });
}
- } else if (!TextUtils.isEmpty(name)) { // 如果是创建文件夹
+ } else if (!TextUtils.isEmpty(name)) {
ContentValues values = new ContentValues();
- values.put(NoteColumns.SNIPPET, name); // 设置文件夹名称
- values.put(NoteColumns.TYPE, Notes.TYPE_FOLDER); // 设置类型为文件夹
- mContentResolver.insert(Notes.CONTENT_NOTE_URI, values); // 在数据库中插入新的文件夹信息
+ values.put(NoteColumns.SNIPPET, name);
+ values.put(NoteColumns.TYPE, Notes.TYPE_FOLDER);
+ mContentResolver.insert(Notes.CONTENT_NOTE_URI, values);
}
- dialog.dismiss(); // 关闭对话框
+ dialog.dismiss();
}
});
- // 初始状态下,如果输入框为空,则禁用确定按钮
if (TextUtils.isEmpty(etName.getText())) {
positive.setEnabled(false);
}
-
- // 监听输入框文本变化,以动态启用或禁用确定按钮
+ /**
+ * When the name edit text is null, disable the positive button
+ */
etName.addTextChangedListener(new TextWatcher() {
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
- // 空实现
+ // TODO Auto-generated method stub
+
}
public void onTextChanged(CharSequence s, int start, int before, int count) {
- if (TextUtils.isEmpty(etName.getText())) { // 当输入框为空时,禁用确定按钮
+ if (TextUtils.isEmpty(etName.getText())) {
positive.setEnabled(false);
- } else { // 当输入框不为空时,启用确定按钮
+ } else {
positive.setEnabled(true);
}
}
public void afterTextChanged(Editable s) {
- // 空实现
+ // TODO Auto-generated method stub
+
}
});
}
-
- /**
- * 当用户按下返回键时调用的方法,根据当前状态执行不同的操作。
- * 在子文件夹状态下,返回根文件夹并显示笔记列表;
- * 在通话记录文件夹状态下,也返回根文件夹但显示添加新笔记按钮;
- * 在笔记列表状态下,执行父类的onBackPressed方法,通常是退出或返回上一级。
- */
@Override
public void onBackPressed() {
switch (mState) {
case SUB_FOLDER:
- // 从子文件夹状态返回到根文件夹的笔记列表状态
mCurrentFolderId = Notes.ID_ROOT_FOLDER;
mState = ListEditState.NOTE_LIST;
startAsyncNotesListQuery();
mTitleBar.setVisibility(View.GONE);
break;
case CALL_RECORD_FOLDER:
- // 从通话记录文件夹状态返回到根文件夹的笔记列表状态,并显示添加新笔记按钮
mCurrentFolderId = Notes.ID_ROOT_FOLDER;
mState = ListEditState.NOTE_LIST;
mAddNewNote.setVisibility(View.VISIBLE);
@@ -936,25 +715,15 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
startAsyncNotesListQuery();
break;
case NOTE_LIST:
- // 在笔记列表状态下,执行父类的返回操作
super.onBackPressed();
break;
default:
- // 对于其他状态,不执行任何操作
break;
}
}
- /**
- * 更新小部件显示。
- * 根据传入的小部件类型,设置对应的Provider并发送更新广播。
- *
- * @param appWidgetId 小部件ID
- * @param appWidgetType 小部件类型
- */
private void updateWidget(int appWidgetId, int appWidgetType) {
Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
- // 根据小部件类型设置Provider
if (appWidgetType == Notes.TYPE_WIDGET_2X) {
intent.setClass(this, NoteWidgetProvider_2x.class);
} else if (appWidgetType == Notes.TYPE_WIDGET_4X) {
@@ -964,18 +733,14 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
return;
}
- intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[]{
- appWidgetId
+ intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[] {
+ appWidgetId
});
sendBroadcast(intent);
setResult(RESULT_OK, intent);
}
- /**
- * 文件夹列表的上下文菜单创建监听器。
- * 在焦点笔记项不为空时,添加查看、删除和重命名菜单项。
- */
private final OnCreateContextMenuListener mFolderOnCreateContextMenuListener = new OnCreateContextMenuListener() {
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
if (mFocusNoteDataItem != null) {
@@ -987,12 +752,6 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
}
};
- /**
- * 上下文菜单关闭时的回调方法。
- * 在列表视图中取消上下文菜单的监听器。
- *
- * @param menu 被关闭的菜单对象
- */
@Override
public void onContextMenuClosed(Menu menu) {
if (mNotesListView != null) {
@@ -1001,13 +760,6 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
super.onContextMenuClosed(menu);
}
-
- /**
- * 当上下文菜单中的项目被选择时调用。
- *
- * @param item 被选择的菜单项。
- * @return 如果事件已成功处理,则返回true;否则如果事件未处理,则返回false。
- */
@Override
public boolean onContextItemSelected(MenuItem item) {
if (mFocusNoteDataItem == null) {
@@ -1016,10 +768,9 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
}
switch (item.getItemId()) {
case MENU_FOLDER_VIEW:
- openFolder(mFocusNoteDataItem); // 打开指定的文件夹
+ openFolder(mFocusNoteDataItem);
break;
case MENU_FOLDER_DELETE:
- // 显示删除文件夹的确认对话框
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(getString(R.string.alert_title_delete));
builder.setIcon(android.R.drawable.ic_dialog_alert);
@@ -1027,14 +778,14 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
builder.setPositiveButton(android.R.string.ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
- deleteFolder(mFocusNoteDataItem.getId()); // 确认后删除文件夹
+ deleteFolder(mFocusNoteDataItem.getId());
}
});
builder.setNegativeButton(android.R.string.cancel, null);
builder.show();
break;
case MENU_FOLDER_CHANGE_NAME:
- showCreateOrModifyFolderDialog(false); // 显示修改文件夹名称的对话框
+ showCreateOrModifyFolderDialog(false);
break;
default:
break;
@@ -1043,20 +794,14 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
return true;
}
- /**
- * 准备选项菜单。
- *
- * @param menu 菜单对象。
- * @return 总是返回true。
- */
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
- menu.clear(); // 清除之前的菜单项
- // 根据当前状态加载不同的菜单布局
+ menu.clear();
if (mState == ListEditState.NOTE_LIST) {
getMenuInflater().inflate(R.menu.note_list, menu);
- // 设置同步或取消同步菜单项的标题
-
+ // set sync or sync_cancel
+ menu.findItem(R.id.menu_sync).setTitle(
+ GTaskSyncService.isSyncing() ? R.string.menu_sync_cancel : R.string.menu_sync);
} else if (mState == ListEditState.SUB_FOLDER) {
getMenuInflater().inflate(R.menu.sub_folder, menu);
} else if (mState == ListEditState.CALL_RECORD_FOLDER) {
@@ -1067,123 +812,165 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
return true;
}
- /**
- * 处理选项菜单项的选择。
- *
- * @param item 被选择的菜单项。
- * @return 如果事件已成功处理,则返回true;否则如果事件未处理,则返回false。
- */
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_new_folder: {
- showCreateOrModifyFolderDialog(true); // 显示创建新文件夹的对话框
+ showCreateOrModifyFolderDialog(true);
break;
}
case R.id.menu_export_text: {
- exportNoteToText(); // 导出笔记为文本
+ exportNoteToText();
break;
}
case R.id.menu_sync: {
- // 处理同步菜单项的点击事件
if (isSyncMode()) {
-
+ if (TextUtils.equals(item.getTitle(), getString(R.string.menu_sync))) {
+ GTaskSyncService.startSync(this);
+ } else {
+ GTaskSyncService.cancelSync(this);
+ }
} else {
startPreferenceActivity();
}
break;
}
case R.id.menu_setting: {
- startPreferenceActivity(); // 打开设置界面
+ startPreferenceActivity();
break;
}
case R.id.menu_new_note: {
- createNewNote(); // 创建新笔记
+ createNewNote();
break;
}
case R.id.menu_search:
- onSearchRequested(); // 触发搜索请求
+ onSearchRequested();
+ break;
+ case R.id.LoginSetting: { //设置登录密码功能
+ SharedPreferences pref=getSharedPreferences("user management",MODE_PRIVATE);
+ String password=pref.getString("password","");
+ if(password.equals(""))//没有设置密码
+ set_the_password();
+ else if(!password.equals(""))//已经设置密码
+ change_the_password();
break;
+ }
+ case R.id.delete_password:{
+ delete_the_password();
+ break;
+ }
+ case R.id.menu_secret: { //进入私密模式
+ secret_mode = 1;
+ AlertDialog.Builder dialog = new AlertDialog.Builder(NotesListActivity.this);
+ dialog.setTitle("重要提醒");
+ dialog.setMessage("您确认进入私密模式吗?");
+ dialog.setCancelable(false);
+ dialog.setPositiveButton("确认", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ startAsyncNotesListQuery();
+ Toast.makeText(NotesListActivity.this,"您已进入私密模式",Toast.LENGTH_SHORT).show();
+ }
+ });
+ dialog.setNegativeButton("取消", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which){}
+ });
+ dialog.show();
+ startAsyncNotesListQuery();
+ Toast.makeText(this,"您已进入私密模式",Toast.LENGTH_SHORT).show();
+ break;
+ }
+ case R.id.menu_quit_secret:{ //退出私密模式
+ secret_mode = 0;
+ AlertDialog.Builder dialog = new AlertDialog.Builder(NotesListActivity.this);
+ dialog.setTitle("重要提醒");
+ dialog.setMessage("您确认退出私密模式吗?");
+ dialog.setCancelable(false);
+ dialog.setPositiveButton("确认", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ startAsyncNotesListQuery();
+ Toast.makeText(NotesListActivity.this,"您已退出私密模式",Toast.LENGTH_SHORT).show();
+ }
+ });
+ dialog.setNegativeButton("取消", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which){}
+ });
+ dialog.show();
+ break;
+ }
default:
break;
}
return true;
}
- /**
- * 处理搜索请求。
- *
- * @return 总是返回true。
- */
@Override
public boolean onSearchRequested() {
startSearch(null, false, null /* appData */, false);
return true;
}
-
- /**
- * 将笔记导出为文本文件。
- * 在后台任务中执行导出操作,并根据操作结果展示不同的对话框。
- */
private void exportNoteToText() {
final BackupUtils backup = BackupUtils.getInstance(NotesListActivity.this);
new AsyncTask() {
@Override
protected Integer doInBackground(Void... unused) {
- // 执行导出操作
return backup.exportToText();
}
@Override
protected void onPostExecute(Integer result) {
- // 根据导出结果展示不同的对话框
if (result == BackupUtils.STATE_SD_CARD_UNMOUONTED) {
- showExportFailedDialog(NotesListActivity.this.getString(R.string.failed_sdcard_export),
- NotesListActivity.this.getString(R.string.error_sdcard_unmounted));
+ AlertDialog.Builder builder = new AlertDialog.Builder(NotesListActivity.this);
+ builder.setTitle(NotesListActivity.this
+ .getString(R.string.failed_sdcard_export));
+ builder.setMessage(NotesListActivity.this
+ .getString(R.string.error_sdcard_unmounted));
+ builder.setPositiveButton(android.R.string.ok, null);
+ builder.show();
} else if (result == BackupUtils.STATE_SUCCESS) {
- showExportSuccessDialog(NotesListActivity.this.getString(R.string.success_sdcard_export),
- backup.getExportedTextFileName(), backup.getExportedTextFileDir());
+ AlertDialog.Builder builder = new AlertDialog.Builder(NotesListActivity.this);
+ builder.setTitle(NotesListActivity.this
+ .getString(R.string.success_sdcard_export));
+ builder.setMessage(NotesListActivity.this.getString(
+ R.string.format_exported_file_location, backup
+ .getExportedTextFileName(), backup.getExportedTextFileDir()));
+ builder.setPositiveButton(android.R.string.ok, null);
+ builder.show();
} else if (result == BackupUtils.STATE_SYSTEM_ERROR) {
- showExportFailedDialog(NotesListActivity.this.getString(R.string.failed_sdcard_export),
- NotesListActivity.this.getString(R.string.error_sdcard_export));
+ AlertDialog.Builder builder = new AlertDialog.Builder(NotesListActivity.this);
+ builder.setTitle(NotesListActivity.this
+ .getString(R.string.failed_sdcard_export));
+ builder.setMessage(NotesListActivity.this
+ .getString(R.string.error_sdcard_export));
+ builder.setPositiveButton(android.R.string.ok, null);
+ builder.show();
}
}
}.execute();
}
- /**
- * 检查当前是否为同步模式。
- *
- * @return 如果已配置同步账户名则返回true,否则返回false。
- */
private boolean isSyncMode() {
return NotesPreferenceActivity.getSyncAccountName(this).trim().length() > 0;
}
- /**
- * 启动设置活动。
- * 用于打开设置界面。
- */
private void startPreferenceActivity() {
Activity from = getParent() != null ? getParent() : this;
Intent intent = new Intent(from, NotesPreferenceActivity.class);
from.startActivityIfNeeded(intent, -1);
}
- /**
- * 列表项点击监听器。
- * 处理列表项的点击事件,根据不同的状态和项类型执行相应的操作。
- */
private class OnListItemClickListener implements OnItemClickListener {
public void onItemClick(AdapterView> parent, View view, int position, long id) {
if (view instanceof NotesListItem) {
NoteItemData item = ((NotesListItem) view).getItemData();
if (mNotesListAdapter.isInChoiceMode()) {
- // 在选择模式下处理项的点击事件
if (item.getType() == Notes.TYPE_NOTE) {
position = position - mNotesListView.getHeaderViewsCount();
mModeCallBack.onItemCheckedStateChanged(null, position, id,
@@ -1192,7 +979,6 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
return;
}
- // 根据当前状态处理项的点击事件
switch (mState) {
case NOTE_LIST:
if (item.getType() == Notes.TYPE_FOLDER
@@ -1220,21 +1006,17 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
}
- /**
- * 启动查询目标文件夹。
- * 根据当前状态查询并显示文件夹列表。
- */
private void startQueryDestinationFolders() {
String selection = NoteColumns.TYPE + "=? AND " + NoteColumns.PARENT_ID + "<>? AND " + NoteColumns.ID + "<>?";
- selection = (mState == ListEditState.NOTE_LIST) ? selection :
- "(" + selection + ") OR (" + NoteColumns.ID + "=" + Notes.ID_ROOT_FOLDER + ")";
+ selection = (mState == ListEditState.NOTE_LIST) ? selection:
+ "(" + selection + ") OR (" + NoteColumns.ID + "=" + Notes.ID_ROOT_FOLDER + ")";
mBackgroundQueryHandler.startQuery(FOLDER_LIST_QUERY_TOKEN,
null,
Notes.CONTENT_NOTE_URI,
FoldersListAdapter.PROJECTION,
selection,
- new String[]{
+ new String[] {
String.valueOf(Notes.TYPE_FOLDER),
String.valueOf(Notes.ID_TRASH_FOLER),
String.valueOf(mCurrentFolderId)
@@ -1242,17 +1024,10 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
NoteColumns.MODIFIED_DATE + " DESC");
}
- /**
- * 长按列表项时的处理。
- * 根据不同的项类型启动选择模式或显示上下文菜单。
- *
- * @return 总是返回false。
- */
public boolean onItemLongClick(AdapterView> parent, View view, int position, long id) {
if (view instanceof NotesListItem) {
mFocusNoteDataItem = ((NotesListItem) view).getItemData();
if (mFocusNoteDataItem.getType() == Notes.TYPE_NOTE && !mNotesListAdapter.isInChoiceMode()) {
- // 长按笔记项时启动选择模式
if (mNotesListView.startActionMode(mModeCallBack) != null) {
mModeCallBack.onItemCheckedStateChanged(null, position, id, true);
mNotesListView.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS);
@@ -1260,40 +1035,25 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
Log.e(TAG, "startActionMode fails");
}
} else if (mFocusNoteDataItem.getType() == Notes.TYPE_FOLDER) {
- // 长按文件夹项时设置上下文菜单监听器
mNotesListView.setOnCreateContextMenuListener(mFolderOnCreateContextMenuListener);
}
}
return false;
}
- /**
- * 显示导出失败的对话框。
- *
- * @param title 对话框标题
- * @param message 对话框消息内容
- */
- private void showExportFailedDialog(String title, String message) {
- AlertDialog.Builder builder = new AlertDialog.Builder(NotesListActivity.this);
- builder.setTitle(title);
- builder.setMessage(message);
- builder.setPositiveButton(android.R.string.ok, null);
- builder.show();
+ private void set_the_password() {
+ Intent intent=new Intent(NotesListActivity.this,SettingPassword.class);
+ startActivity(intent);
+ finish();
}
-
- /**
- * 显示导出成功的对话框。
- *
- * @param title 对话框标题
- * @param fileName 导出文件的名称
- * @param fileDir 导出文件的目录
- */
- private void showExportSuccessDialog(String title, String fileName, String fileDir) {
- AlertDialog.Builder builder = new AlertDialog.Builder(NotesListActivity.this);
- builder.setTitle(title);
- builder.setMessage(NotesListActivity.this.getString(R.string.format_exported_file_location, fileName, fileDir));
- builder.setPositiveButton(android.R.string.ok, null);
- builder.show();
+ private void change_the_password() {
+ Intent intent=new Intent(NotesListActivity.this,ChangingPassword.class);
+ startActivity(intent);
+ finish();
+ }
+ private void delete_the_password() {
+ Intent intent=new Intent(NotesListActivity.this,DeletingPassword.class);
+ startActivity(intent);
+ finish();
}
-
}
diff --git a/xiaomi-src/app/src/main/java/net/micode/notes/ui/NotesListAdapter.java b/xiaomi-src/main/java/net/micode/notes/ui/NotesListAdapter.java
similarity index 71%
rename from xiaomi-src/app/src/main/java/net/micode/notes/ui/NotesListAdapter.java
rename to xiaomi-src/main/java/net/micode/notes/ui/NotesListAdapter.java
index 057de6a..51c9cb9 100644
--- a/xiaomi-src/app/src/main/java/net/micode/notes/ui/NotesListAdapter.java
+++ b/xiaomi-src/main/java/net/micode/notes/ui/NotesListAdapter.java
@@ -31,32 +31,18 @@ import java.util.HashSet;
import java.util.Iterator;
-/**
- * 用于管理笔记列表的适配器,继承自CursorAdapter。
- */
public class NotesListAdapter extends CursorAdapter {
private static final String TAG = "NotesListAdapter";
private Context mContext;
- // 用于存储选中项的索引和状态
private HashMap mSelectedIndex;
- private int mNotesCount; // 笔记总数
- private boolean mChoiceMode; // 选择模式标志
+ private int mNotesCount;
+ private boolean mChoiceMode;
- /**
- * AppWidget属性容器,用于存储与小部件相关的数据。
- */
public static class AppWidgetAttribute {
- public int widgetId; // 小部件ID
- public int widgetType; // 小部件类型
- }
+ public int widgetId;
+ public int widgetType;
+ };
- ;
-
- /**
- * 构造函数。
- *
- * @param context 上下文对象
- */
public NotesListAdapter(Context context) {
super(context, null);
mSelectedIndex = new HashMap();
@@ -64,26 +50,11 @@ public class NotesListAdapter extends CursorAdapter {
mNotesCount = 0;
}
- /**
- * 创建新的列表项视图。
- *
- * @param context 上下文对象
- * @param cursor 数据游标
- * @param parent 父视图
- * @return 新的列表项视图
- */
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
return new NotesListItem(context);
}
- /**
- * 绑定数据到视图。
- *
- * @param view 列表项视图
- * @param context 上下文对象
- * @param cursor 数据游标
- */
@Override
public void bindView(View view, Context context, Cursor cursor) {
if (view instanceof NotesListItem) {
@@ -93,41 +64,20 @@ public class NotesListAdapter extends CursorAdapter {
}
}
- /**
- * 设置指定位置的项为选中或未选中状态。
- *
- * @param position 项的位置
- * @param checked 选中状态
- */
public void setCheckedItem(final int position, final boolean checked) {
mSelectedIndex.put(position, checked);
notifyDataSetChanged();
}
- /**
- * 获取当前是否处于选择模式。
- *
- * @return 选择模式状态
- */
public boolean isInChoiceMode() {
return mChoiceMode;
}
- /**
- * 设置选择模式。
- *
- * @param mode 选择模式状态
- */
public void setChoiceMode(boolean mode) {
mSelectedIndex.clear();
mChoiceMode = mode;
}
- /**
- * 全选或全不选。
- *
- * @param checked 选中状态
- */
public void selectAll(boolean checked) {
Cursor cursor = getCursor();
for (int i = 0; i < getCount(); i++) {
@@ -139,11 +89,6 @@ public class NotesListAdapter extends CursorAdapter {
}
}
- /**
- * 获取所有选中项的ID集合。
- *
- * @return 选中项ID的HashSet
- */
public HashSet getSelectedItemIds() {
HashSet itemSet = new HashSet();
for (Integer position : mSelectedIndex.keySet()) {
@@ -160,11 +105,6 @@ public class NotesListAdapter extends CursorAdapter {
return itemSet;
}
- /**
- * 获取所有选中小部件的属性集合。
- *
- * @return 选中小部件属性的HashSet
- */
public HashSet getSelectedWidget() {
HashSet itemSet = new HashSet();
for (Integer position : mSelectedIndex.keySet()) {
@@ -176,6 +116,9 @@ public class NotesListAdapter extends CursorAdapter {
widget.widgetId = item.getWidgetId();
widget.widgetType = item.getWidgetType();
itemSet.add(widget);
+ /**
+ * Don't close cursor here, only the adapter could close it
+ */
} else {
Log.e(TAG, "Invalid cursor");
return null;
@@ -185,11 +128,6 @@ public class NotesListAdapter extends CursorAdapter {
return itemSet;
}
- /**
- * 获取选中项的数量。
- *
- * @return 选中项数量
- */
public int getSelectedCount() {
Collection values = mSelectedIndex.values();
if (null == values) {
@@ -205,22 +143,11 @@ public class NotesListAdapter extends CursorAdapter {
return count;
}
- /**
- * 判断是否全部选中。
- *
- * @return 全部选中的状态
- */
public boolean isAllSelected() {
int checkedCount = getSelectedCount();
return (checkedCount != 0 && checkedCount == mNotesCount);
}
- /**
- * 检查指定位置的项是否被选中。
- *
- * @param position 项的位置
- * @return 选中状态
- */
public boolean isSelectedItem(final int position) {
if (null == mSelectedIndex.get(position)) {
return false;
@@ -228,29 +155,18 @@ public class NotesListAdapter extends CursorAdapter {
return mSelectedIndex.get(position);
}
- /**
- * 当内容改变时调用,更新笔记数量。
- */
@Override
protected void onContentChanged() {
super.onContentChanged();
calcNotesCount();
}
- /**
- * 当游标改变时调用,更新笔记数量。
- *
- * @param cursor 新的游标
- */
@Override
public void changeCursor(Cursor cursor) {
super.changeCursor(cursor);
calcNotesCount();
}
- /**
- * 计算并更新笔记总数。
- */
private void calcNotesCount() {
mNotesCount = 0;
for (int i = 0; i < getCount(); i++) {
@@ -266,4 +182,3 @@ public class NotesListAdapter extends CursorAdapter {
}
}
}
-
diff --git a/xiaomi-src/app/src/main/java/net/micode/notes/ui/NotesListItem.java b/xiaomi-src/main/java/net/micode/notes/ui/NotesListItem.java
similarity index 73%
rename from xiaomi-src/app/src/main/java/net/micode/notes/ui/NotesListItem.java
rename to xiaomi-src/main/java/net/micode/notes/ui/NotesListItem.java
index 1e53b26..2746619 100644
--- a/xiaomi-src/app/src/main/java/net/micode/notes/ui/NotesListItem.java
+++ b/xiaomi-src/main/java/net/micode/notes/ui/NotesListItem.java
@@ -30,43 +30,27 @@ import net.micode.notes.tool.DataUtils;
import net.micode.notes.tool.ResourceParser.NoteItemBgResources;
-/*
- * 该类表示一个笔记列表项,继承自LinearLayout,并包含了显示笔记各种信息的组件。
- * 它用于在UI中展示一个笔记或文件夹的条目。
- */
-
public class NotesListItem extends LinearLayout {
- private ImageView mAlert; // 用于显示提醒图标
- private TextView mTitle; // 显示笔记标题
- private TextView mTime; // 显示修改时间
- private TextView mCallName; // 在通话记录笔记中显示通话名称
- private NoteItemData mItemData; // 绑定的笔记数据
- private CheckBox mCheckBox; // 选择框,用于多选模式
+ private ImageView mAlert;
+ private TextView mTitle;
+ private TextView mTime;
+ private TextView mCallName;
+ private NoteItemData mItemData;
+ private CheckBox mCheckBox;
+ private ImageView mTop;
- /*
- * 构造函数,初始化视图组件。
- */
public NotesListItem(Context context) {
super(context);
inflate(context, R.layout.note_item, this);
- // 初始化视图组件
mAlert = (ImageView) findViewById(R.id.iv_alert_icon);
mTitle = (TextView) findViewById(R.id.tv_title);
mTime = (TextView) findViewById(R.id.tv_time);
mCallName = (TextView) findViewById(R.id.tv_name);
mCheckBox = (CheckBox) findViewById(android.R.id.checkbox);
+ mTop = (ImageView) findViewById(R.id.iv_top_icon);
}
- /*
- * 绑定数据到视图,根据数据设置视图状态。
- *
- * @param context 上下文
- * @param data 要绑定的笔记数据
- * @param choiceMode 是否为选择模式
- * @param checked 是否选中
- */
public void bind(Context context, NoteItemData data, boolean choiceMode, boolean checked) {
- // 根据是否为选择模式和笔记类型,控制复选框的可见性和选中状态
if (choiceMode && data.getType() == Notes.TYPE_NOTE) {
mCheckBox.setVisibility(View.VISIBLE);
mCheckBox.setChecked(checked);
@@ -75,9 +59,7 @@ public class NotesListItem extends LinearLayout {
}
mItemData = data;
- // 根据笔记类型和状态,设置标题、提醒图标和背景
if (data.getId() == Notes.ID_CALL_RECORD_FOLDER) {
- // 通话记录文件夹
mCallName.setVisibility(View.GONE);
mAlert.setVisibility(View.VISIBLE);
mTitle.setTextAppearance(context, R.style.TextAppearancePrimaryItem);
@@ -85,10 +67,9 @@ public class NotesListItem extends LinearLayout {
+ context.getString(R.string.format_folder_files_count, data.getNotesCount()));
mAlert.setImageResource(R.drawable.call_record);
} else if (data.getParentId() == Notes.ID_CALL_RECORD_FOLDER) {
- // 通话记录笔记
mCallName.setVisibility(View.VISIBLE);
mCallName.setText(data.getCallName());
- mTitle.setTextAppearance(context, R.style.TextAppearanceSecondaryItem);
+ mTitle.setTextAppearance(context,R.style.TextAppearanceSecondaryItem);
mTitle.setText(DataUtils.getFormattedSnippet(data.getSnippet()));
if (data.hasAlert()) {
mAlert.setImageResource(R.drawable.clock);
@@ -97,14 +78,13 @@ public class NotesListItem extends LinearLayout {
mAlert.setVisibility(View.GONE);
}
} else {
- // 其他类型的笔记或文件夹
mCallName.setVisibility(View.GONE);
mTitle.setTextAppearance(context, R.style.TextAppearancePrimaryItem);
if (data.getType() == Notes.TYPE_FOLDER) {
mTitle.setText(data.getSnippet()
+ context.getString(R.string.format_folder_files_count,
- data.getNotesCount()));
+ data.getNotesCount()));
mAlert.setVisibility(View.GONE);
} else {
mTitle.setText(DataUtils.getFormattedSnippet(data.getSnippet()));
@@ -115,21 +95,23 @@ public class NotesListItem extends LinearLayout {
mAlert.setVisibility(View.GONE);
}
}
+ if(data.isTOP()){
+ mTop.setImageResource(R.drawable.menu_top);
+ mTop.setVisibility(View.VISIBLE);
+ } else{
+ mTop.setVisibility((View.GONE));
+ }
}
- // 设置时间显示
mTime.setText(DateUtils.getRelativeTimeSpanString(data.getModifiedDate()));
- // 设置背景资源
setBackground(data);
}
- /*
- * 根据笔记数据设置列表项的背景资源。
- */
+
+
private void setBackground(NoteItemData data) {
int id = data.getBgColorId();
if (data.getType() == Notes.TYPE_NOTE) {
- // 根据笔记的状态设置不同的背景资源
if (data.isSingle() || data.isOneFollowingFolder()) {
setBackgroundResource(NoteItemBgResources.getNoteBgSingleRes(id));
} else if (data.isLast()) {
@@ -140,18 +122,11 @@ public class NotesListItem extends LinearLayout {
setBackgroundResource(NoteItemBgResources.getNoteBgNormalRes(id));
}
} else {
- // 文件夹背景资源
setBackgroundResource(NoteItemBgResources.getFolderBgRes());
}
}
- /*
- * 获取绑定的笔记数据。
- *
- * @return 绑定的NoteItemData对象
- */
public NoteItemData getItemData() {
return mItemData;
}
}
-
diff --git a/xiaomi-src/app/src/main/java/net/micode/notes/ui/NotesPreferenceActivity.java b/xiaomi-src/main/java/net/micode/notes/ui/NotesPreferenceActivity.java
similarity index 65%
rename from xiaomi-src/app/src/main/java/net/micode/notes/ui/NotesPreferenceActivity.java
rename to xiaomi-src/main/java/net/micode/notes/ui/NotesPreferenceActivity.java
index b2854d7..07c5f7e 100644
--- a/xiaomi-src/app/src/main/java/net/micode/notes/ui/NotesPreferenceActivity.java
+++ b/xiaomi-src/main/java/net/micode/notes/ui/NotesPreferenceActivity.java
@@ -18,12 +18,14 @@ package net.micode.notes.ui;
import android.accounts.Account;
import android.accounts.AccountManager;
+import android.app.ActionBar;
import android.app.AlertDialog;
import android.content.BroadcastReceiver;
import android.content.ContentValues;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
+import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.Preference;
@@ -31,7 +33,9 @@ import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceActivity;
import android.preference.PreferenceCategory;
import android.text.TextUtils;
+import android.text.format.DateFormat;
import android.view.LayoutInflater;
+import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
@@ -41,57 +45,55 @@ import android.widget.Toast;
import net.micode.notes.R;
import net.micode.notes.data.Notes;
import net.micode.notes.data.Notes.NoteColumns;
+import net.micode.notes.gtask.remote.GTaskSyncService;
public class NotesPreferenceActivity extends PreferenceActivity {
- // 常量定义部分:主要用于设置和同步相关的偏好设置键
- public static final String PREFERENCE_NAME = "notes_preferences"; // 偏好设置的名称
- public static final String PREFERENCE_SYNC_ACCOUNT_NAME = "pref_key_account_name"; // 同步账户名称的键
- public static final String PREFERENCE_LAST_SYNC_TIME = "pref_last_sync_time"; // 上次同步时间的键
- public static final String PREFERENCE_SET_BG_COLOR_KEY = "pref_key_bg_random_appear"; // 设置背景颜色的键
- private static final String PREFERENCE_SYNC_ACCOUNT_KEY = "pref_sync_account_key"; // 同步账户的键
- private static final String AUTHORITIES_FILTER_KEY = "authorities"; // 权限过滤键
-
- // 类成员变量定义部分:主要用于账户同步和UI更新
- private PreferenceCategory mAccountCategory; // 账户分类偏好项
- private GTaskReceiver mReceiver; // 接收同步任务的广播接收器
- private Account[] mOriAccounts; // 原始账户数组
- private boolean mHasAddedAccount; // 标记是否已添加新账户
-
- /**
- * 当设置Activity创建时调用。
- * 主要进行界面初始化和设置账户同步。
- *
- * @param icicle 保存Activity状态的Bundle,用于恢复状态。
- */
+ public static final String PREFERENCE_NAME = "notes_preferences";
+
+ public static final String PREFERENCE_SYNC_ACCOUNT_NAME = "pref_key_account_name";
+
+ public static final String PREFERENCE_LAST_SYNC_TIME = "pref_last_sync_time";
+
+ public static final String PREFERENCE_SET_BG_COLOR_KEY = "pref_key_bg_random_appear";
+
+ private static final String PREFERENCE_SYNC_ACCOUNT_KEY = "pref_sync_account_key";
+
+ private static final String AUTHORITIES_FILTER_KEY = "authorities";
+
+ private PreferenceCategory mAccountCategory;
+
+ private GTaskReceiver mReceiver;
+
+ private Account[] mOriAccounts;
+
+ private boolean mHasAddedAccount;
+
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
- // 设置返回按钮
+ /* using the app icon for navigation */
getActionBar().setDisplayHomeAsUpEnabled(true);
- // 从XML加载偏好设置
addPreferencesFromResource(R.xml.preferences);
mAccountCategory = (PreferenceCategory) findPreference(PREFERENCE_SYNC_ACCOUNT_KEY);
mReceiver = new GTaskReceiver();
-
+ IntentFilter filter = new IntentFilter();
+ filter.addAction(GTaskSyncService.GTASK_SERVICE_BROADCAST_NAME);
+ registerReceiver(mReceiver, filter);
mOriAccounts = null;
- // 添加设置头部视图
View header = LayoutInflater.from(this).inflate(R.layout.settings_header, null);
getListView().addHeaderView(header, null, true);
}
- /**
- * 当设置Activity恢复到前台时调用。
- * 主要用于检查并自动设置新添加的账户进行同步。
- */
@Override
protected void onResume() {
super.onResume();
- // 自动设置新添加的账户进行同步
+ // need to set sync account automatically if user has added a new
+ // account
if (mHasAddedAccount) {
Account[] accounts = getGoogleAccounts();
if (mOriAccounts != null && accounts.length > mOriAccounts.length) {
@@ -104,77 +106,99 @@ public class NotesPreferenceActivity extends PreferenceActivity {
}
}
if (!found) {
- setSyncAccount(accountNew.name); // 设置新账户进行同步
+ setSyncAccount(accountNew.name);
break;
}
}
}
}
- // 刷新UI
refreshUI();
}
-
- /**
- * 当Activity即将被销毁时调用,用于注销广播接收器。
- */
@Override
protected void onDestroy() {
if (mReceiver != null) {
- unregisterReceiver(mReceiver); // 注销广播接收器,避免内存泄漏
+ unregisterReceiver(mReceiver);
}
super.onDestroy();
}
- /**
- * 加载账户偏好设置,展示当前同步账户信息及操作。
- */
private void loadAccountPreference() {
- mAccountCategory.removeAll(); // 清空账户分类下的所有条目
+ mAccountCategory.removeAll();
- // 创建并配置账户偏好项
Preference accountPref = new Preference(this);
- final String defaultAccount = getSyncAccountName(this); // 获取默认同步账户名称
- accountPref.setTitle(getString(R.string.preferences_account_title)); // 设置标题
- accountPref.setSummary(getString(R.string.preferences_account_summary)); // 设置摘要
+ final String defaultAccount = getSyncAccountName(this);
+ accountPref.setTitle(getString(R.string.preferences_account_title));
+ accountPref.setSummary(getString(R.string.preferences_account_summary));
accountPref.setOnPreferenceClickListener(new OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
-
+ if (!GTaskSyncService.isSyncing()) {
+ if (TextUtils.isEmpty(defaultAccount)) {
+ // the first time to set account
+ showSelectAccountAlertDialog();
+ } else {
+ // if the account has already been set, we need to promp
+ // user about the risk
+ showChangeAccountConfirmAlertDialog();
+ }
+ } else {
+ Toast.makeText(NotesPreferenceActivity.this,
+ R.string.preferences_toast_cannot_change_account, Toast.LENGTH_SHORT)
+ .show();
+ }
return true;
}
});
- mAccountCategory.addPreference(accountPref); // 将账户偏好项添加到账户分类下
+ mAccountCategory.addPreference(accountPref);
}
- /**
- * 加载同步按钮,并根据同步状态设置其文本和点击事件。
- */
private void loadSyncButton() {
- Button syncButton = (Button) findViewById(R.id.preference_sync_button); // 获取同步按钮
- TextView lastSyncTimeView = (TextView) findViewById(R.id.prefenerece_sync_status_textview); // 获取上次同步时间视图
-
- syncButton.setEnabled(!TextUtils.isEmpty(getSyncAccountName(this))); // 只有在设置了同步账户时才使能同步按钮
-
-
+ Button syncButton = (Button) findViewById(R.id.preference_sync_button);
+ TextView lastSyncTimeView = (TextView) findViewById(R.id.prefenerece_sync_status_textview);
+
+ // set button state
+ if (GTaskSyncService.isSyncing()) {
+ syncButton.setText(getString(R.string.preferences_button_sync_cancel));
+ syncButton.setOnClickListener(new View.OnClickListener() {
+ public void onClick(View v) {
+ GTaskSyncService.cancelSync(NotesPreferenceActivity.this);
+ }
+ });
+ } else {
+ syncButton.setText(getString(R.string.preferences_button_sync_immediately));
+ syncButton.setOnClickListener(new View.OnClickListener() {
+ public void onClick(View v) {
+ GTaskSyncService.startSync(NotesPreferenceActivity.this);
+ }
+ });
+ }
+ syncButton.setEnabled(!TextUtils.isEmpty(getSyncAccountName(this)));
+
+ // set last sync time
+ if (GTaskSyncService.isSyncing()) {
+ lastSyncTimeView.setText(GTaskSyncService.getProgressString());
+ lastSyncTimeView.setVisibility(View.VISIBLE);
+ } else {
+ long lastSyncTime = getLastSyncTime(this);
+ if (lastSyncTime != 0) {
+ lastSyncTimeView.setText(getString(R.string.preferences_last_sync_time,
+ DateFormat.format(getString(R.string.preferences_last_sync_time_format),
+ lastSyncTime)));
+ lastSyncTimeView.setVisibility(View.VISIBLE);
+ } else {
+ lastSyncTimeView.setVisibility(View.GONE);
+ }
+ }
}
- /**
- * 刷新用户界面,加载账户偏好设置和同步按钮。
- */
private void refreshUI() {
- loadAccountPreference(); // 加载账户偏好设置
- loadSyncButton(); // 加载同步按钮
+ loadAccountPreference();
+ loadSyncButton();
}
- /**
- * 显示选择账户的对话框。
- * 该对话框列出了已连接的Google账户,并允许用户选择一个账户用于同步。
- * 如果没有账户,对话框将提供添加账户的选项。
- */
private void showSelectAccountAlertDialog() {
- // 创建对话框构建器并设置自定义标题
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
View titleView = LayoutInflater.from(this).inflate(R.layout.account_dialog_title, null);
@@ -184,20 +208,18 @@ public class NotesPreferenceActivity extends PreferenceActivity {
subtitleTextView.setText(getString(R.string.preferences_dialog_select_account_tips));
dialogBuilder.setCustomTitle(titleView);
- dialogBuilder.setPositiveButton(null, null); // 移除默认的确定按钮
+ dialogBuilder.setPositiveButton(null, null);
- // 获取当前设备上的Google账户
Account[] accounts = getGoogleAccounts();
- String defAccount = getSyncAccountName(this); // 获取当前同步的账户名称
+ String defAccount = getSyncAccountName(this);
- mOriAccounts = accounts; // 保存原始账户列表
- mHasAddedAccount = false; // 标记是否已添加新账户
+ mOriAccounts = accounts;
+ mHasAddedAccount = false;
if (accounts.length > 0) {
- // 创建账户选项并设置选中项
CharSequence[] items = new CharSequence[accounts.length];
final CharSequence[] itemMapping = items;
- int checkedItem = -1; // 记录默认选中的账户
+ int checkedItem = -1;
int index = 0;
for (Account account : accounts) {
if (TextUtils.equals(account.name, defAccount)) {
@@ -205,7 +227,6 @@ public class NotesPreferenceActivity extends PreferenceActivity {
}
items[index++] = account.name;
}
- // 设置单选列表,并为选中的账户执行同步操作
dialogBuilder.setSingleChoiceItems(items, checkedItem,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
@@ -216,18 +237,16 @@ public class NotesPreferenceActivity extends PreferenceActivity {
});
}
- // 添加“添加账户”选项
View addAccountView = LayoutInflater.from(this).inflate(R.layout.add_account_text, null);
dialogBuilder.setView(addAccountView);
final AlertDialog dialog = dialogBuilder.show();
- // 点击“添加账户”执行添加账户操作
addAccountView.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mHasAddedAccount = true;
Intent intent = new Intent("android.settings.ADD_ACCOUNT_SETTINGS");
- intent.putExtra(AUTHORITIES_FILTER_KEY, new String[]{
- "gmail-ls"
+ intent.putExtra(AUTHORITIES_FILTER_KEY, new String[] {
+ "gmail-ls"
});
startActivityForResult(intent, -1);
dialog.dismiss();
@@ -235,14 +254,9 @@ public class NotesPreferenceActivity extends PreferenceActivity {
});
}
- /**
- * 显示更改账户确认对话框。
- * 提供用户更改当前同步账户或取消更改的选择。
- */
private void showChangeAccountConfirmAlertDialog() {
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
- // 设置自定义标题,包含当前同步账户名称
View titleView = LayoutInflater.from(this).inflate(R.layout.account_dialog_title, null);
TextView titleTextView = (TextView) titleView.findViewById(R.id.account_dialog_title);
titleTextView.setText(getString(R.string.preferences_dialog_change_account_title,
@@ -251,8 +265,7 @@ public class NotesPreferenceActivity extends PreferenceActivity {
subtitleTextView.setText(getString(R.string.preferences_dialog_change_account_warn_msg));
dialogBuilder.setCustomTitle(titleView);
- // 创建菜单项并设置点击事件
- CharSequence[] menuItemArray = new CharSequence[]{
+ CharSequence[] menuItemArray = new CharSequence[] {
getString(R.string.preferences_menu_change_account),
getString(R.string.preferences_menu_remove_account),
getString(R.string.preferences_menu_cancel)
@@ -260,10 +273,8 @@ public class NotesPreferenceActivity extends PreferenceActivity {
dialogBuilder.setItems(menuItemArray, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
if (which == 0) {
- // 选择更改账户,显示账户选择对话框
showSelectAccountAlertDialog();
} else if (which == 1) {
- // 选择移除账户,执行移除操作并刷新UI
removeSyncAccount();
refreshUI();
}
@@ -272,29 +283,15 @@ public class NotesPreferenceActivity extends PreferenceActivity {
dialogBuilder.show();
}
- /**
- * 获取设备上的Google账户列表。
- *
- * @return Account[] 返回设备上所有类型为“com.google”的账户数组。
- */
private Account[] getGoogleAccounts() {
AccountManager accountManager = AccountManager.get(this);
return accountManager.getAccountsByType("com.google");
}
-
- /**
- * 设置同步账户信息。
- * 如果当前账户与传入账户不一致,则更新SharedPreferences中的账户信息,并清理本地相关的gtask信息。
- *
- * @param account 需要设置的账户名
- */
private void setSyncAccount(String account) {
- // 检查当前账户是否与传入账户名一致,不一致则更新账户信息
if (!getSyncAccountName(this).equals(account)) {
SharedPreferences settings = getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
- // 如果账户名非空,则保存账户名,否则清除账户名
if (account != null) {
editor.putString(PREFERENCE_SYNC_ACCOUNT_NAME, account);
} else {
@@ -302,10 +299,10 @@ public class NotesPreferenceActivity extends PreferenceActivity {
}
editor.commit();
- // 清理上次同步时间
+ // clean up last sync time
setLastSyncTime(this, 0);
- // 清理本地相关的gtask信息
+ // clean up local gtask related info
new Thread(new Runnable() {
public void run() {
ContentValues values = new ContentValues();
@@ -315,31 +312,24 @@ public class NotesPreferenceActivity extends PreferenceActivity {
}
}).start();
- // 显示设置成功的提示信息
Toast.makeText(NotesPreferenceActivity.this,
getString(R.string.preferences_toast_success_set_accout, account),
Toast.LENGTH_SHORT).show();
}
}
- /**
- * 移除同步账户信息。
- * 清除SharedPreferences中的账户信息和上次同步时间,并清理本地相关的gtask信息。
- */
private void removeSyncAccount() {
SharedPreferences settings = getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
- // 如果存在账户信息,则移除
if (settings.contains(PREFERENCE_SYNC_ACCOUNT_NAME)) {
editor.remove(PREFERENCE_SYNC_ACCOUNT_NAME);
}
- // 如果存在上次同步时间信息,则移除
if (settings.contains(PREFERENCE_LAST_SYNC_TIME)) {
editor.remove(PREFERENCE_LAST_SYNC_TIME);
}
editor.commit();
- // 清理本地相关的gtask信息
+ // clean up local gtask related info
new Thread(new Runnable() {
public void run() {
ContentValues values = new ContentValues();
@@ -350,26 +340,12 @@ public class NotesPreferenceActivity extends PreferenceActivity {
}).start();
}
- /**
- * 获取当前同步账户名。
- * 从SharedPreferences中获取存储的账户名,默认为空字符串。
- *
- * @param context 上下文
- * @return 同步账户名
- */
public static String getSyncAccountName(Context context) {
SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME,
Context.MODE_PRIVATE);
return settings.getString(PREFERENCE_SYNC_ACCOUNT_NAME, "");
}
- /**
- * 设置上次同步的时间。
- * 将指定的时间保存到SharedPreferences中。
- *
- * @param context 上下文
- * @param time 上次同步的时间戳
- */
public static void setLastSyncTime(Context context, long time) {
SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME,
Context.MODE_PRIVATE);
@@ -378,42 +354,29 @@ public class NotesPreferenceActivity extends PreferenceActivity {
editor.commit();
}
- /**
- * 获取上次同步的时间。
- * 从SharedPreferences中获取上次同步的时间戳,默认为0。
- *
- * @param context 上下文
- * @return 上次同步的时间戳
- */
public static long getLastSyncTime(Context context) {
SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME,
Context.MODE_PRIVATE);
return settings.getLong(PREFERENCE_LAST_SYNC_TIME, 0);
}
- /**
- * 广播接收器类,用于接收gtask同步相关的广播消息,并据此刷新UI。
- */
private class GTaskReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
refreshUI();
-
+ if (intent.getBooleanExtra(GTaskSyncService.GTASK_SERVICE_BROADCAST_IS_SYNCING, false)) {
+ TextView syncStatus = (TextView) findViewById(R.id.prefenerece_sync_status_textview);
+ syncStatus.setText(intent
+ .getStringExtra(GTaskSyncService.GTASK_SERVICE_BROADCAST_PROGRESS_MSG));
+ }
}
}
- /**
- * 处理选项菜单项的选择事件。
- *
- * @param item 选中的菜单项
- * @return 如果事件已处理,则返回true;否则返回false。
- */
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
- // 当选择返回按钮时,启动NotesListActivity并清除当前活动栈顶以上的所有活动
Intent intent = new Intent(this, NotesListActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
diff --git a/xiaomi-src/main/java/net/micode/notes/ui/SettingPassword.java b/xiaomi-src/main/java/net/micode/notes/ui/SettingPassword.java
new file mode 100644
index 0000000..60f934d
--- /dev/null
+++ b/xiaomi-src/main/java/net/micode/notes/ui/SettingPassword.java
@@ -0,0 +1,67 @@
+package net.micode.notes.ui;
+
+import static android.content.Context.MODE_PRIVATE;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.view.WindowManager;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.Toast;
+
+import net.micode.notes.R;
+
+public class SettingPassword extends Activity {
+ EditText password;
+ EditText password_ack;
+ Button acknowledge;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_set_loginpassword);
+ getWindow().setSoftInputMode(
+ WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE
+ | WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
+ password=(EditText) findViewById(R.id.password);
+ password_ack=(EditText) findViewById(R.id.password_ack);
+ acknowledge=(Button)findViewById(R.id.acknowledge);
+ acknowledge.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ String text02 = password.getText().toString();
+ String text03 = password_ack.getText().toString();
+ if(text02.equals("")==true) {
+ Toast.makeText(SettingPassword.this, "密码不能为空", Toast.LENGTH_SHORT).show();
+ }else if (text02.equals(text03) == false) {
+ Toast.makeText(SettingPassword.this, "密码不匹配,请重新输入密码", Toast.LENGTH_SHORT).show();
+ password_ack.setText("");
+ }else if (text02.equals(text03) == true){
+ SharedPreferences.Editor editor=getSharedPreferences("user management",
+ MODE_PRIVATE).edit();
+ editor.putBoolean("user",true);//true表示已经设置登录密码
+ editor.putString("password",text02);
+ editor.apply();
+ Log.d("RegisterLoginPassword","password is "+text02);
+ Toast.makeText(SettingPassword.this, "设置密码成功", Toast.LENGTH_SHORT).show();
+ Intent intent=new Intent(SettingPassword.this,NotesListActivity.class);
+ startActivity(intent);
+ finish();
+ }
+
+ }
+ });
+ }
+
+ @Override
+ public void onBackPressed() {
+ Intent intent=new Intent(SettingPassword.this,NotesListActivity.class);
+ startActivity(intent);
+ finish();
+ }
+
+}
diff --git a/xiaomi-src/app/src/main/java/net/micode/notes/ui/SplashActivity.java b/xiaomi-src/main/java/net/micode/notes/ui/SplashActivity.java
similarity index 82%
rename from xiaomi-src/app/src/main/java/net/micode/notes/ui/SplashActivity.java
rename to xiaomi-src/main/java/net/micode/notes/ui/SplashActivity.java
index e7db203..5d9defb 100644
--- a/xiaomi-src/app/src/main/java/net/micode/notes/ui/SplashActivity.java
+++ b/xiaomi-src/main/java/net/micode/notes/ui/SplashActivity.java
@@ -16,17 +16,16 @@ public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); //加载启动界面
- setContentView(R.layout.activity_splash); //加载启动图片
-
- // 当计时结束时,跳转至NotesListActivity
+ setContentView(R.layout.activity_splash); //加载启动
+// 当计时结束时,跳转至NotesListActivity
mHandler.postDelayed(new Runnable() {
+
@Override
public void run() {
Intent intent=new Intent();
- intent.setClass(SplashActivity.this, NotesListActivity.class);
+ intent.setClass(SplashActivity.this, LoginActivity.class);
startActivity(intent);
finish(); //销毁欢迎页面
- }
- }, 2000); // 2 秒后跳转
+ }}, 2000); // 2 秒后跳转}
}
}
\ No newline at end of file
diff --git a/xiaomi-src/main/java/net/micode/notes/ui/translate_demo/BaiduTranslateService.java b/xiaomi-src/main/java/net/micode/notes/ui/translate_demo/BaiduTranslateService.java
new file mode 100644
index 0000000..f96f037
--- /dev/null
+++ b/xiaomi-src/main/java/net/micode/notes/ui/translate_demo/BaiduTranslateService.java
@@ -0,0 +1,13 @@
+package net.micode.notes.ui.translate_demo;
+
+import retrofit2.Call;
+import retrofit2.http.Field;
+import retrofit2.http.FormUrlEncoded;
+import retrofit2.http.POST;
+
+public interface BaiduTranslateService {
+ @POST("translate")
+ @FormUrlEncoded
+ Call translate(@Field("q") String q, @Field("from") String from, @Field("to") String to, @Field("appid") String appid, @Field("salt") String salt,
+ @Field("sign") String sign);
+}
\ No newline at end of file
diff --git a/xiaomi-src/main/java/net/micode/notes/ui/translate_demo/MD5Utils.java b/xiaomi-src/main/java/net/micode/notes/ui/translate_demo/MD5Utils.java
new file mode 100644
index 0000000..e0e8288
--- /dev/null
+++ b/xiaomi-src/main/java/net/micode/notes/ui/translate_demo/MD5Utils.java
@@ -0,0 +1,35 @@
+package net.micode.notes.ui.translate_demo;
+
+import java.security.MessageDigest;
+
+/**
+ * 加密解密工具类(对字符串加密) MD5加密
+ */
+public class MD5Utils {
+
+ /**
+ * MD5加密算法使用 对字符串加密
+ *
+ * @param info 参数为需要加密的String
+ * @return 返回加密后的String
+ */
+ public static String getMD5Code(String info) {
+ try {
+ MessageDigest md5 = MessageDigest.getInstance("MD5");
+ md5.update(info.getBytes("utf-8"));//设置编码格式
+ byte[] encryption = md5.digest();
+ StringBuffer stringBuffer = new StringBuffer();
+ for (int i = 0; i < encryption.length; i++) {
+ if (Integer.toHexString(0xff & encryption[i]).length() == 1) {
+ stringBuffer.append("0").append(Integer.toHexString(0xff & encryption[i]));
+ } else {
+ stringBuffer.append(Integer.toHexString(0xff & encryption[i]));
+ }
+ }
+ return stringBuffer.toString();
+ } catch (Exception e) {
+ return "MD5加密异常";
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/xiaomi-src/main/java/net/micode/notes/ui/translate_demo/RespondBean.java b/xiaomi-src/main/java/net/micode/notes/ui/translate_demo/RespondBean.java
new file mode 100644
index 0000000..3895737
--- /dev/null
+++ b/xiaomi-src/main/java/net/micode/notes/ui/translate_demo/RespondBean.java
@@ -0,0 +1,66 @@
+package net.micode.notes.ui.translate_demo;
+
+import java.util.List;
+
+ public class RespondBean {
+
+ /**
+ * from : zh
+ * to : en
+ * trans_result : [{"src":"你好","dst":"Hello"}]
+ */
+
+ private String from;
+ private String to;
+ private List trans_result;
+
+ public String getFrom() {
+ return from;
+ }
+
+ public void setFrom(String from) {
+ this.from = from;
+ }
+
+ public String getTo() {
+ return to;
+ }
+
+ public void setTo(String to) {
+ this.to = to;
+ }
+
+ public List getTrans_result() {
+ return trans_result;
+ }
+
+ public void setTrans_result(List trans_result) {
+ this.trans_result = trans_result;
+ }
+
+ public static class TransResultBean {
+ /**
+ * src : 你好
+ * dst : Hello
+ */
+
+ private String src;
+ private String dst;
+
+ public String getSrc() {
+ return src;
+ }
+
+ public void setSrc(String src) {
+ this.src = src;
+ }
+
+ public String getDst() {
+ return dst;
+ }
+
+ public void setDst(String dst) {
+ this.dst = dst;
+ }
+ }
+}
\ No newline at end of file
diff --git a/xiaomi-src/app/src/main/java/net/micode/notes/widget/NoteWidgetProvider.java b/xiaomi-src/main/java/net/micode/notes/widget/NoteWidgetProvider.java
similarity index 67%
rename from xiaomi-src/app/src/main/java/net/micode/notes/widget/NoteWidgetProvider.java
rename to xiaomi-src/main/java/net/micode/notes/widget/NoteWidgetProvider.java
index 898de0a..ec6f819 100644
--- a/xiaomi-src/app/src/main/java/net/micode/notes/widget/NoteWidgetProvider.java
+++ b/xiaomi-src/main/java/net/micode/notes/widget/NoteWidgetProvider.java
@@ -1,10 +1,20 @@
/*
- * 注意:此代码段的版权归 MiCode 开源社区所有(www.micode.net)
- * 本代码遵循 Apache 2.0 许可证,您可以在 http://www.apache.org/licenses/LICENSE-2.0 查看许可证内容。
+ * 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.widget;
-
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
@@ -22,28 +32,19 @@ import net.micode.notes.tool.ResourceParser;
import net.micode.notes.ui.NoteEditActivity;
import net.micode.notes.ui.NotesListActivity;
-/**
- * 笔记小部件提供者抽象类,扩展自AppWidgetProvider,用于管理和更新笔记小部件的内容。
- */
public abstract class NoteWidgetProvider extends AppWidgetProvider {
- // 查询笔记时用到的列名数组
- public static final String[] PROJECTION = new String[]{
- NoteColumns.ID,
- NoteColumns.BG_COLOR_ID,
- NoteColumns.SNIPPET
+ public static final String [] PROJECTION = new String [] {
+ NoteColumns.ID,
+ NoteColumns.BG_COLOR_ID,
+ NoteColumns.SNIPPET
};
- // 列的索引常量
- public static final int COLUMN_ID = 0;
- public static final int COLUMN_BG_COLOR_ID = 1;
- public static final int COLUMN_SNIPPET = 2;
+ public static final int COLUMN_ID = 0;
+ public static final int COLUMN_BG_COLOR_ID = 1;
+ public static final int COLUMN_SNIPPET = 2;
- // 日志标签
private static final String TAG = "NoteWidgetProvider";
- /**
- * 当小部件被删除时调用,更新数据库中对应小部件的ID为无效ID。
- */
@Override
public void onDeleted(Context context, int[] appWidgetIds) {
ContentValues values = new ContentValues();
@@ -52,46 +53,24 @@ public abstract class NoteWidgetProvider extends AppWidgetProvider {
context.getContentResolver().update(Notes.CONTENT_NOTE_URI,
values,
NoteColumns.WIDGET_ID + "=?",
- new String[]{String.valueOf(appWidgetIds[i])});
+ new String[] { String.valueOf(appWidgetIds[i])});
}
}
- /**
- * 根据小部件ID查询对应的笔记信息。
- *
- * @param context 上下文
- * @param widgetId 小部件ID
- * @return 返回查询到的Cursor对象,包含笔记的摘要、背景ID等信息。
- */
private Cursor getNoteWidgetInfo(Context context, int widgetId) {
return context.getContentResolver().query(Notes.CONTENT_NOTE_URI,
PROJECTION,
NoteColumns.WIDGET_ID + "=? AND " + NoteColumns.PARENT_ID + "<>?",
- new String[]{String.valueOf(widgetId), String.valueOf(Notes.ID_TRASH_FOLER)},
+ new String[] { String.valueOf(widgetId), String.valueOf(Notes.ID_TRASH_FOLER) },
null);
}
- /**
- * 更新小部件显示内容的通用方法。
- *
- * @param context 上下文
- * @param appWidgetManager AppWidget管理器
- * @param appWidgetIds 小部件ID数组
- */
protected void update(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
update(context, appWidgetManager, appWidgetIds, false);
}
- /**
- * 根据是否隐私模式更新小部件显示内容。
- *
- * @param context 上下文
- * @param appWidgetManager AppWidget管理器
- * @param appWidgetIds 小部件ID数组
- * @param privacyMode 是否为隐私模式
- */
private void update(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds,
- boolean privacyMode) {
+ boolean privacyMode) {
for (int i = 0; i < appWidgetIds.length; i++) {
if (appWidgetIds[i] != AppWidgetManager.INVALID_APPWIDGET_ID) {
int bgId = ResourceParser.getDefaultBgId(context);
@@ -124,8 +103,9 @@ public abstract class NoteWidgetProvider extends AppWidgetProvider {
RemoteViews rv = new RemoteViews(context.getPackageName(), getLayoutId());
rv.setImageViewResource(R.id.widget_bg_image, getBgResourceId(bgId));
intent.putExtra(Notes.INTENT_EXTRA_BACKGROUND_ID, bgId);
-
- // 为小部件的点击事件设置PendingIntent
+ /**
+ * Generate the pending intent to start host for the widget
+ */
PendingIntent pendingIntent = null;
if (privacyMode) {
rv.setTextViewText(R.id.widget_text,
@@ -144,26 +124,9 @@ public abstract class NoteWidgetProvider extends AppWidgetProvider {
}
}
- /**
- * 获取背景资源的ID。
- *
- * @param bgId 背景ID
- * @return 返回对应的资源ID
- */
protected abstract int getBgResourceId(int bgId);
- /**
- * 获取小部件布局的ID。
- *
- * @return 返回布局的资源ID
- */
protected abstract int getLayoutId();
- /**
- * 获取小部件的类型。
- *
- * @return 返回小部件的类型
- */
protected abstract int getWidgetType();
}
-
diff --git a/xiaomi-src/main/java/net/micode/notes/widget/NoteWidgetProvider_2x.java b/xiaomi-src/main/java/net/micode/notes/widget/NoteWidgetProvider_2x.java
new file mode 100644
index 0000000..adcb2f7
--- /dev/null
+++ b/xiaomi-src/main/java/net/micode/notes/widget/NoteWidgetProvider_2x.java
@@ -0,0 +1,47 @@
+/*
+ * 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.widget;
+
+import android.appwidget.AppWidgetManager;
+import android.content.Context;
+
+import net.micode.notes.R;
+import net.micode.notes.data.Notes;
+import net.micode.notes.tool.ResourceParser;
+
+
+public class NoteWidgetProvider_2x extends NoteWidgetProvider {
+ @Override
+ public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
+ super.update(context, appWidgetManager, appWidgetIds);
+ }
+
+ @Override
+ protected int getLayoutId() {
+ return R.layout.widget_2x;
+ }
+
+ @Override
+ protected int getBgResourceId(int bgId) {
+ return ResourceParser.WidgetBgResources.getWidget2xBgResource(bgId);
+ }
+
+ @Override
+ protected int getWidgetType() {
+ return Notes.TYPE_WIDGET_2X;
+ }
+}
diff --git a/xiaomi-src/main/java/net/micode/notes/widget/NoteWidgetProvider_4x.java b/xiaomi-src/main/java/net/micode/notes/widget/NoteWidgetProvider_4x.java
new file mode 100644
index 0000000..c12a02e
--- /dev/null
+++ b/xiaomi-src/main/java/net/micode/notes/widget/NoteWidgetProvider_4x.java
@@ -0,0 +1,46 @@
+/*
+ * 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.widget;
+
+import android.appwidget.AppWidgetManager;
+import android.content.Context;
+
+import net.micode.notes.R;
+import net.micode.notes.data.Notes;
+import net.micode.notes.tool.ResourceParser;
+
+
+public class NoteWidgetProvider_4x extends NoteWidgetProvider {
+ @Override
+ public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
+ super.update(context, appWidgetManager, appWidgetIds);
+ }
+
+ protected int getLayoutId() {
+ return R.layout.widget_4x;
+ }
+
+ @Override
+ protected int getBgResourceId(int bgId) {
+ return ResourceParser.WidgetBgResources.getWidget4xBgResource(bgId);
+ }
+
+ @Override
+ protected int getWidgetType() {
+ return Notes.TYPE_WIDGET_4X;
+ }
+}
diff --git a/xiaomi-src/main/res/color/primary_text_dark.xml b/xiaomi-src/main/res/color/primary_text_dark.xml
new file mode 100644
index 0000000..ceef389
--- /dev/null
+++ b/xiaomi-src/main/res/color/primary_text_dark.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
diff --git a/xiaomi-src/main/res/color/secondary_text_dark.xml b/xiaomi-src/main/res/color/secondary_text_dark.xml
new file mode 100644
index 0000000..f0de0f5
--- /dev/null
+++ b/xiaomi-src/main/res/color/secondary_text_dark.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/bg_btn_set_color.png b/xiaomi-src/main/res/drawable-hdpi/bg_btn_set_color.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/bg_btn_set_color.png
rename to xiaomi-src/main/res/drawable-hdpi/bg_btn_set_color.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/bg_color_btn_mask.png b/xiaomi-src/main/res/drawable-hdpi/bg_color_btn_mask.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/bg_color_btn_mask.png
rename to xiaomi-src/main/res/drawable-hdpi/bg_color_btn_mask.png
diff --git a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_delete.png.flat b/xiaomi-src/main/res/drawable-hdpi/bitmap_pressed.png
similarity index 71%
rename from xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_delete.png.flat
rename to xiaomi-src/main/res/drawable-hdpi/bitmap_pressed.png
index b5e283d..f5773c0 100644
Binary files a/xiaomi-src/app/build/intermediates/merged_res/debug/drawable-hdpi_delete.png.flat and b/xiaomi-src/main/res/drawable-hdpi/bitmap_pressed.png differ
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/call_record.png b/xiaomi-src/main/res/drawable-hdpi/call_record.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/call_record.png
rename to xiaomi-src/main/res/drawable-hdpi/call_record.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/clock.png b/xiaomi-src/main/res/drawable-hdpi/clock.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/clock.png
rename to xiaomi-src/main/res/drawable-hdpi/clock.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/delete.png b/xiaomi-src/main/res/drawable-hdpi/delete.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/delete.png
rename to xiaomi-src/main/res/drawable-hdpi/delete.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/dropdown_icon.9.png b/xiaomi-src/main/res/drawable-hdpi/dropdown_icon.9.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/dropdown_icon.9.png
rename to xiaomi-src/main/res/drawable-hdpi/dropdown_icon.9.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/edit_blue.9.png b/xiaomi-src/main/res/drawable-hdpi/edit_blue.9.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/edit_blue.9.png
rename to xiaomi-src/main/res/drawable-hdpi/edit_blue.9.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/edit_green.9.png b/xiaomi-src/main/res/drawable-hdpi/edit_green.9.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/edit_green.9.png
rename to xiaomi-src/main/res/drawable-hdpi/edit_green.9.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/edit_red.9.png b/xiaomi-src/main/res/drawable-hdpi/edit_red.9.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/edit_red.9.png
rename to xiaomi-src/main/res/drawable-hdpi/edit_red.9.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/edit_title_blue.9.png b/xiaomi-src/main/res/drawable-hdpi/edit_title_blue.9.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/edit_title_blue.9.png
rename to xiaomi-src/main/res/drawable-hdpi/edit_title_blue.9.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/edit_title_green.9.png b/xiaomi-src/main/res/drawable-hdpi/edit_title_green.9.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/edit_title_green.9.png
rename to xiaomi-src/main/res/drawable-hdpi/edit_title_green.9.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/edit_title_red.9.png b/xiaomi-src/main/res/drawable-hdpi/edit_title_red.9.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/edit_title_red.9.png
rename to xiaomi-src/main/res/drawable-hdpi/edit_title_red.9.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/edit_title_white.9.png b/xiaomi-src/main/res/drawable-hdpi/edit_title_white.9.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/edit_title_white.9.png
rename to xiaomi-src/main/res/drawable-hdpi/edit_title_white.9.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/edit_title_yellow.9.png b/xiaomi-src/main/res/drawable-hdpi/edit_title_yellow.9.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/edit_title_yellow.9.png
rename to xiaomi-src/main/res/drawable-hdpi/edit_title_yellow.9.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/edit_white.9.png b/xiaomi-src/main/res/drawable-hdpi/edit_white.9.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/edit_white.9.png
rename to xiaomi-src/main/res/drawable-hdpi/edit_white.9.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/edit_yellow.9.png b/xiaomi-src/main/res/drawable-hdpi/edit_yellow.9.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/edit_yellow.9.png
rename to xiaomi-src/main/res/drawable-hdpi/edit_yellow.9.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/font_large.png b/xiaomi-src/main/res/drawable-hdpi/font_large.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/font_large.png
rename to xiaomi-src/main/res/drawable-hdpi/font_large.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/font_normal.png b/xiaomi-src/main/res/drawable-hdpi/font_normal.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/font_normal.png
rename to xiaomi-src/main/res/drawable-hdpi/font_normal.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/font_size_selector_bg.9.png b/xiaomi-src/main/res/drawable-hdpi/font_size_selector_bg.9.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/font_size_selector_bg.9.png
rename to xiaomi-src/main/res/drawable-hdpi/font_size_selector_bg.9.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/font_small.png b/xiaomi-src/main/res/drawable-hdpi/font_small.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/font_small.png
rename to xiaomi-src/main/res/drawable-hdpi/font_small.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/font_super.png b/xiaomi-src/main/res/drawable-hdpi/font_super.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/font_super.png
rename to xiaomi-src/main/res/drawable-hdpi/font_super.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/icon_app.png b/xiaomi-src/main/res/drawable-hdpi/icon_app.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/icon_app.png
rename to xiaomi-src/main/res/drawable-hdpi/icon_app.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/list_background.png b/xiaomi-src/main/res/drawable-hdpi/list_background.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/list_background.png
rename to xiaomi-src/main/res/drawable-hdpi/list_background.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/list_blue_down.9.png b/xiaomi-src/main/res/drawable-hdpi/list_blue_down.9.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/list_blue_down.9.png
rename to xiaomi-src/main/res/drawable-hdpi/list_blue_down.9.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/list_blue_middle.9.png b/xiaomi-src/main/res/drawable-hdpi/list_blue_middle.9.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/list_blue_middle.9.png
rename to xiaomi-src/main/res/drawable-hdpi/list_blue_middle.9.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/list_blue_single.9.png b/xiaomi-src/main/res/drawable-hdpi/list_blue_single.9.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/list_blue_single.9.png
rename to xiaomi-src/main/res/drawable-hdpi/list_blue_single.9.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/list_blue_up.9.png b/xiaomi-src/main/res/drawable-hdpi/list_blue_up.9.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/list_blue_up.9.png
rename to xiaomi-src/main/res/drawable-hdpi/list_blue_up.9.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/list_folder.9.png b/xiaomi-src/main/res/drawable-hdpi/list_folder.9.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/list_folder.9.png
rename to xiaomi-src/main/res/drawable-hdpi/list_folder.9.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/list_footer_bg.9.png b/xiaomi-src/main/res/drawable-hdpi/list_footer_bg.9.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/list_footer_bg.9.png
rename to xiaomi-src/main/res/drawable-hdpi/list_footer_bg.9.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/list_green_down.9.png b/xiaomi-src/main/res/drawable-hdpi/list_green_down.9.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/list_green_down.9.png
rename to xiaomi-src/main/res/drawable-hdpi/list_green_down.9.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/list_green_middle.9.png b/xiaomi-src/main/res/drawable-hdpi/list_green_middle.9.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/list_green_middle.9.png
rename to xiaomi-src/main/res/drawable-hdpi/list_green_middle.9.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/list_green_single.9.png b/xiaomi-src/main/res/drawable-hdpi/list_green_single.9.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/list_green_single.9.png
rename to xiaomi-src/main/res/drawable-hdpi/list_green_single.9.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/list_green_up.9.png b/xiaomi-src/main/res/drawable-hdpi/list_green_up.9.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/list_green_up.9.png
rename to xiaomi-src/main/res/drawable-hdpi/list_green_up.9.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/list_red_down.9.png b/xiaomi-src/main/res/drawable-hdpi/list_red_down.9.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/list_red_down.9.png
rename to xiaomi-src/main/res/drawable-hdpi/list_red_down.9.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/list_red_middle.9.png b/xiaomi-src/main/res/drawable-hdpi/list_red_middle.9.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/list_red_middle.9.png
rename to xiaomi-src/main/res/drawable-hdpi/list_red_middle.9.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/list_red_single.9.png b/xiaomi-src/main/res/drawable-hdpi/list_red_single.9.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/list_red_single.9.png
rename to xiaomi-src/main/res/drawable-hdpi/list_red_single.9.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/list_red_up.9.png b/xiaomi-src/main/res/drawable-hdpi/list_red_up.9.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/list_red_up.9.png
rename to xiaomi-src/main/res/drawable-hdpi/list_red_up.9.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/list_white_down.9.png b/xiaomi-src/main/res/drawable-hdpi/list_white_down.9.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/list_white_down.9.png
rename to xiaomi-src/main/res/drawable-hdpi/list_white_down.9.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/list_white_middle.9.png b/xiaomi-src/main/res/drawable-hdpi/list_white_middle.9.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/list_white_middle.9.png
rename to xiaomi-src/main/res/drawable-hdpi/list_white_middle.9.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/list_white_single.9.png b/xiaomi-src/main/res/drawable-hdpi/list_white_single.9.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/list_white_single.9.png
rename to xiaomi-src/main/res/drawable-hdpi/list_white_single.9.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/list_white_up.9.png b/xiaomi-src/main/res/drawable-hdpi/list_white_up.9.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/list_white_up.9.png
rename to xiaomi-src/main/res/drawable-hdpi/list_white_up.9.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/list_yellow_down.9.png b/xiaomi-src/main/res/drawable-hdpi/list_yellow_down.9.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/list_yellow_down.9.png
rename to xiaomi-src/main/res/drawable-hdpi/list_yellow_down.9.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/list_yellow_middle.9.png b/xiaomi-src/main/res/drawable-hdpi/list_yellow_middle.9.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/list_yellow_middle.9.png
rename to xiaomi-src/main/res/drawable-hdpi/list_yellow_middle.9.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/list_yellow_single.9.png b/xiaomi-src/main/res/drawable-hdpi/list_yellow_single.9.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/list_yellow_single.9.png
rename to xiaomi-src/main/res/drawable-hdpi/list_yellow_single.9.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/list_yellow_up.9.png b/xiaomi-src/main/res/drawable-hdpi/list_yellow_up.9.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/list_yellow_up.9.png
rename to xiaomi-src/main/res/drawable-hdpi/list_yellow_up.9.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/menu_delete.png b/xiaomi-src/main/res/drawable-hdpi/menu_delete.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/menu_delete.png
rename to xiaomi-src/main/res/drawable-hdpi/menu_delete.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/menu_move.png b/xiaomi-src/main/res/drawable-hdpi/menu_move.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/menu_move.png
rename to xiaomi-src/main/res/drawable-hdpi/menu_move.png
diff --git a/xiaomi-src/main/res/drawable-hdpi/menu_top.png b/xiaomi-src/main/res/drawable-hdpi/menu_top.png
new file mode 100644
index 0000000..6568ddf
Binary files /dev/null and b/xiaomi-src/main/res/drawable-hdpi/menu_top.png differ
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/new_note_normal.png b/xiaomi-src/main/res/drawable-hdpi/new_note_normal.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/new_note_normal.png
rename to xiaomi-src/main/res/drawable-hdpi/new_note_normal.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/new_note_pressed.png b/xiaomi-src/main/res/drawable-hdpi/new_note_pressed.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/new_note_pressed.png
rename to xiaomi-src/main/res/drawable-hdpi/new_note_pressed.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/note_edit_color_selector_panel.png b/xiaomi-src/main/res/drawable-hdpi/note_edit_color_selector_panel.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/note_edit_color_selector_panel.png
rename to xiaomi-src/main/res/drawable-hdpi/note_edit_color_selector_panel.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/notification.png b/xiaomi-src/main/res/drawable-hdpi/notification.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/notification.png
rename to xiaomi-src/main/res/drawable-hdpi/notification.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/search_result.png b/xiaomi-src/main/res/drawable-hdpi/search_result.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/search_result.png
rename to xiaomi-src/main/res/drawable-hdpi/search_result.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/selected.png b/xiaomi-src/main/res/drawable-hdpi/selected.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/selected.png
rename to xiaomi-src/main/res/drawable-hdpi/selected.png
diff --git a/xiaomi-src/main/res/drawable-hdpi/splash.jpg b/xiaomi-src/main/res/drawable-hdpi/splash.jpg
new file mode 100644
index 0000000..37b004d
Binary files /dev/null and b/xiaomi-src/main/res/drawable-hdpi/splash.jpg differ
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/title_alert.png b/xiaomi-src/main/res/drawable-hdpi/title_alert.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/title_alert.png
rename to xiaomi-src/main/res/drawable-hdpi/title_alert.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/title_bar_bg.9.png b/xiaomi-src/main/res/drawable-hdpi/title_bar_bg.9.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/title_bar_bg.9.png
rename to xiaomi-src/main/res/drawable-hdpi/title_bar_bg.9.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/widget_2x_blue.png b/xiaomi-src/main/res/drawable-hdpi/widget_2x_blue.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/widget_2x_blue.png
rename to xiaomi-src/main/res/drawable-hdpi/widget_2x_blue.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/widget_2x_green.png b/xiaomi-src/main/res/drawable-hdpi/widget_2x_green.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/widget_2x_green.png
rename to xiaomi-src/main/res/drawable-hdpi/widget_2x_green.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/widget_2x_red.png b/xiaomi-src/main/res/drawable-hdpi/widget_2x_red.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/widget_2x_red.png
rename to xiaomi-src/main/res/drawable-hdpi/widget_2x_red.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/widget_2x_white.png b/xiaomi-src/main/res/drawable-hdpi/widget_2x_white.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/widget_2x_white.png
rename to xiaomi-src/main/res/drawable-hdpi/widget_2x_white.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/widget_2x_yellow.png b/xiaomi-src/main/res/drawable-hdpi/widget_2x_yellow.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/widget_2x_yellow.png
rename to xiaomi-src/main/res/drawable-hdpi/widget_2x_yellow.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/widget_4x_blue.png b/xiaomi-src/main/res/drawable-hdpi/widget_4x_blue.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/widget_4x_blue.png
rename to xiaomi-src/main/res/drawable-hdpi/widget_4x_blue.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/widget_4x_green.png b/xiaomi-src/main/res/drawable-hdpi/widget_4x_green.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/widget_4x_green.png
rename to xiaomi-src/main/res/drawable-hdpi/widget_4x_green.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/widget_4x_red.png b/xiaomi-src/main/res/drawable-hdpi/widget_4x_red.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/widget_4x_red.png
rename to xiaomi-src/main/res/drawable-hdpi/widget_4x_red.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/widget_4x_white.png b/xiaomi-src/main/res/drawable-hdpi/widget_4x_white.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/widget_4x_white.png
rename to xiaomi-src/main/res/drawable-hdpi/widget_4x_white.png
diff --git a/xiaomi-src/app/src/main/res/drawable-hdpi/widget_4x_yellow.png b/xiaomi-src/main/res/drawable-hdpi/widget_4x_yellow.png
similarity index 100%
rename from xiaomi-src/app/src/main/res/drawable-hdpi/widget_4x_yellow.png
rename to xiaomi-src/main/res/drawable-hdpi/widget_4x_yellow.png
diff --git a/xiaomi-src/main/res/drawable/new_note.xml b/xiaomi-src/main/res/drawable/new_note.xml
new file mode 100644
index 0000000..2154ebc
--- /dev/null
+++ b/xiaomi-src/main/res/drawable/new_note.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
diff --git a/xiaomi-src/main/res/layout/account_dialog_title.xml b/xiaomi-src/main/res/layout/account_dialog_title.xml
new file mode 100644
index 0000000..5f2ebce
--- /dev/null
+++ b/xiaomi-src/main/res/layout/account_dialog_title.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/xiaomi-src/main/res/layout/activity_change_password.xml b/xiaomi-src/main/res/layout/activity_change_password.xml
new file mode 100644
index 0000000..05eda7e
--- /dev/null
+++ b/xiaomi-src/main/res/layout/activity_change_password.xml
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/xiaomi-src/main/res/layout/activity_delete_password.xml b/xiaomi-src/main/res/layout/activity_delete_password.xml
new file mode 100644
index 0000000..3406642
--- /dev/null
+++ b/xiaomi-src/main/res/layout/activity_delete_password.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/xiaomi-src/main/res/layout/activity_login.xml b/xiaomi-src/main/res/layout/activity_login.xml
new file mode 100644
index 0000000..10f7f22
--- /dev/null
+++ b/xiaomi-src/main/res/layout/activity_login.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/xiaomi-src/main/res/layout/activity_set_loginpassword.xml b/xiaomi-src/main/res/layout/activity_set_loginpassword.xml
new file mode 100644
index 0000000..6620f04
--- /dev/null
+++ b/xiaomi-src/main/res/layout/activity_set_loginpassword.xml
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/xiaomi-src/app/src/main/res/layout/activity_splash.xml b/xiaomi-src/main/res/layout/activity_splash.xml
similarity index 73%
rename from xiaomi-src/app/src/main/res/layout/activity_splash.xml
rename to xiaomi-src/main/res/layout/activity_splash.xml
index 830f007..122207a 100644
--- a/xiaomi-src/app/src/main/res/layout/activity_splash.xml
+++ b/xiaomi-src/main/res/layout/activity_splash.xml
@@ -3,8 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="?attr/fullscreenBackgroundColor"
- android:theme="@style/ThemeOverlay.Xiaomisrc.FullscreenContainer"
+ android:background="#0099cc"
tools:context=".ui.SplashActivity">
+
+
+
+
+
\ No newline at end of file
diff --git a/xiaomi-src/app/src/main/res/layout/datetime_picker.xml b/xiaomi-src/main/res/layout/datetime_picker.xml
similarity index 54%
rename from xiaomi-src/app/src/main/res/layout/datetime_picker.xml
rename to xiaomi-src/main/res/layout/datetime_picker.xml
index 5fe5c93..f10d592 100644
--- a/xiaomi-src/app/src/main/res/layout/datetime_picker.xml
+++ b/xiaomi-src/main/res/layout/datetime_picker.xml
@@ -1,10 +1,18 @@
+
+ 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.
+-->
+ android:focusableInTouchMode="true"
+ />
+ android:focusableInTouchMode="true"
+ />
+ android:focusableInTouchMode="true"
+ />
+ android:focusableInTouchMode="true"
+ />
\ No newline at end of file
diff --git a/xiaomi-src/main/res/layout/dialog_edit_text.xml b/xiaomi-src/main/res/layout/dialog_edit_text.xml
new file mode 100644
index 0000000..361b39a
--- /dev/null
+++ b/xiaomi-src/main/res/layout/dialog_edit_text.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/xiaomi-src/main/res/layout/folder_list_item.xml b/xiaomi-src/main/res/layout/folder_list_item.xml
new file mode 100644
index 0000000..77e8148
--- /dev/null
+++ b/xiaomi-src/main/res/layout/folder_list_item.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/xiaomi-src/main/res/layout/local.xml b/xiaomi-src/main/res/layout/local.xml
new file mode 100644
index 0000000..25ad1d9
--- /dev/null
+++ b/xiaomi-src/main/res/layout/local.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/xiaomi-src/app/src/main/res/layout/note_edit.xml b/xiaomi-src/main/res/layout/note_edit.xml
similarity index 87%
rename from xiaomi-src/app/src/main/res/layout/note_edit.xml
rename to xiaomi-src/main/res/layout/note_edit.xml
index 09507f7..76d8aae 100644
--- a/xiaomi-src/app/src/main/res/layout/note_edit.xml
+++ b/xiaomi-src/main/res/layout/note_edit.xml
@@ -15,7 +15,8 @@
limitations under the License.
-->
-
@@ -24,12 +25,45 @@
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
-
+ android:layout_height="fill_parent"
+ android:orientation="horizontal">
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:layout_gravity="top|right"/>
+
+
+
diff --git a/xiaomi-src/app/src/main/res/layout/note_list.xml b/xiaomi-src/main/res/layout/note_list.xml
similarity index 55%
rename from xiaomi-src/app/src/main/res/layout/note_list.xml
rename to xiaomi-src/main/res/layout/note_list.xml
index 700d068..321381a 100644
--- a/xiaomi-src/app/src/main/res/layout/note_list.xml
+++ b/xiaomi-src/main/res/layout/note_list.xml
@@ -1,23 +1,31 @@
-
-
-
-
-
+ android:fadingEdge="@null"
+ android:listSelector="@android:color/transparent" />
-
+ android:layout_gravity="bottom"
+ android:background="@drawable/new_note"
+ android:focusable="false" />
diff --git a/xiaomi-src/main/res/layout/note_list_dropdown_menu.xml b/xiaomi-src/main/res/layout/note_list_dropdown_menu.xml
new file mode 100644
index 0000000..3fa271d
--- /dev/null
+++ b/xiaomi-src/main/res/layout/note_list_dropdown_menu.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/xiaomi-src/main/res/layout/note_list_footer.xml b/xiaomi-src/main/res/layout/note_list_footer.xml
new file mode 100644
index 0000000..5ca7b22
--- /dev/null
+++ b/xiaomi-src/main/res/layout/note_list_footer.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/xiaomi-src/main/res/layout/settings_header.xml b/xiaomi-src/main/res/layout/settings_header.xml
new file mode 100644
index 0000000..5eb8c50
--- /dev/null
+++ b/xiaomi-src/main/res/layout/settings_header.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/xiaomi-src/main/res/layout/widget_2x.xml b/xiaomi-src/main/res/layout/widget_2x.xml
new file mode 100644
index 0000000..55970ce
--- /dev/null
+++ b/xiaomi-src/main/res/layout/widget_2x.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
diff --git a/xiaomi-src/main/res/layout/widget_4x.xml b/xiaomi-src/main/res/layout/widget_4x.xml
new file mode 100644
index 0000000..dc9bb51
--- /dev/null
+++ b/xiaomi-src/main/res/layout/widget_4x.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/xiaomi-src/main/res/menu/call_note_edit.xml b/xiaomi-src/main/res/menu/call_note_edit.xml
new file mode 100644
index 0000000..e314fbd
--- /dev/null
+++ b/xiaomi-src/main/res/menu/call_note_edit.xml
@@ -0,0 +1,52 @@
+
+
+
+
+
diff --git a/xiaomi-src/main/res/menu/call_record_folder.xml b/xiaomi-src/main/res/menu/call_record_folder.xml
new file mode 100644
index 0000000..c664346
--- /dev/null
+++ b/xiaomi-src/main/res/menu/call_record_folder.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
diff --git a/xiaomi-src/main/res/menu/note_edit.xml b/xiaomi-src/main/res/menu/note_edit.xml
new file mode 100644
index 0000000..e920a72
--- /dev/null
+++ b/xiaomi-src/main/res/menu/note_edit.xml
@@ -0,0 +1,72 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/xiaomi-src/main/res/menu/note_list.xml b/xiaomi-src/main/res/menu/note_list.xml
new file mode 100644
index 0000000..9a449cf
--- /dev/null
+++ b/xiaomi-src/main/res/menu/note_list.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
diff --git a/xiaomi-src/main/res/menu/note_list_dropdown.xml b/xiaomi-src/main/res/menu/note_list_dropdown.xml
new file mode 100644
index 0000000..7cbaadc
--- /dev/null
+++ b/xiaomi-src/main/res/menu/note_list_dropdown.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/xiaomi-src/main/res/menu/note_list_options.xml b/xiaomi-src/main/res/menu/note_list_options.xml
new file mode 100644
index 0000000..25788f8
--- /dev/null
+++ b/xiaomi-src/main/res/menu/note_list_options.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/xiaomi-src/main/res/menu/sub_folder.xml b/xiaomi-src/main/res/menu/sub_folder.xml
new file mode 100644
index 0000000..4191cc7
--- /dev/null
+++ b/xiaomi-src/main/res/menu/sub_folder.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/xiaomi-src/app/src/main/res/raw-zh-rCN/introduction b/xiaomi-src/main/res/raw-zh-rCN/introduction
similarity index 100%
rename from xiaomi-src/app/src/main/res/raw-zh-rCN/introduction
rename to xiaomi-src/main/res/raw-zh-rCN/introduction
diff --git a/xiaomi-src/app/src/main/res/raw/introduction b/xiaomi-src/main/res/raw/introduction
similarity index 100%
rename from xiaomi-src/app/src/main/res/raw/introduction
rename to xiaomi-src/main/res/raw/introduction
diff --git a/xiaomi-src/main/res/values-ko-rKR/arrays.xml b/xiaomi-src/main/res/values-ko-rKR/arrays.xml
new file mode 100644
index 0000000..a092386
--- /dev/null
+++ b/xiaomi-src/main/res/values-ko-rKR/arrays.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+ 短信
+ 邮件
+
+
\ No newline at end of file
diff --git a/xiaomi-src/main/res/values-ko-rKR/strings.xml b/xiaomi-src/main/res/values-ko-rKR/strings.xml
new file mode 100644
index 0000000..4f95a76
--- /dev/null
+++ b/xiaomi-src/main/res/values-ko-rKR/strings.xml
@@ -0,0 +1,140 @@
+
+
+
+
+
+ 메일
+ 단어 수를 계산합니다
+ 암호를 설정하세요
+ 비밀번호 삭제
+ 개인 정보 보호 모드
+ 비공개 모드를 종료합니다
+ 메일 2x2
+ 메일 4x4
+ 연합되는 주를 창조하기 위하여 찾아내는 연합되는 주 없음, 누르기.
+ 기밀 형태는, 주 내용을 볼 수 없다
+ ...
+ 새 메모
+ 미리 알림 성공적으로 삭제
+ 알람 생성
+ 기간이 만료됨
+ yyyyMMdd
+ MMMd kk:mm
+ 알겠어요
+ 보기
+ 호출 전화
+ 전자 우편 보내기
+ 웹 페이지 찾아보기
+ 지도 열기
+
+ /MIUI/notes/
+ notes_%s.txt
+
+ (%d)
+ 새 폴더 만들기
+ 텍스트 내보내기
+ 동기화
+ 동기화 해제
+ 설정
+ 검색
+ 삭제
+ 편지함으로 이동
+ %d 항목 선택됨
+ 선택된 항목이 없습니다. 작업이 올바르지 않습니다
+ 모두 선택
+ 모두 선택 해제
+ 텍스트 크기
+ 작은
+ 가운데
+ 큰
+ 초대
+ 상세한 명부 본에 들어간다
+ 목록 모드 끝내기
+ 폴더 보기
+ 폴더 삭제
+ 폴더 이름 바꾸기
+ 폴더%1 s이 (가) 이미 존재합니다. 이름을 바꾸십시오.
+ 나누기
+ 데스크톱으로 보내기
+ 깨우쳐 주다
+ 알람 삭제
+ 편지함 선택
+ 상위 디렉토리r
+ 데스크톱에 추가됨
+ 폴더 및 그 아래에 있는 메모를 삭제하시겠습니까?
+ 삭제
+ 선택한%d 노트를 삭제하시겠습니까?
+ 이 메모 지우시겠습니까?
+ 선택한%1달러 d 노트북은%2달러 s 폴더에 옮겨졌습니다
+
+ SD 카드가 사용되어 운영되지 않고 있습니다
+ 텍스트를 내보낼 때 오류가 발생했습니다. SD 카드를 확인하십시오.
+ 확인할 노트가 없습니다
+ 빈 노트북에 알람을 설정할 수 없습니다
+ 데스크톱에 빈 메모 보낼 수 없음
+ 내보내기 성공
+ 내보내기 실패
+ 텍스트 파일 (%1$s)을 SD 카드에서 출력했습니다 (%2$s) 디렉터리로
+
+ 동기화 메모 …
+ 동기화 성공
+ 동기화 실패
+ 동기화 해제
+ %1$s 동기화 성공
+ 동기화에 실패했습니다. 네트워크와 계정 설정을 확인하십시오.
+ 동기화 실패, 내부 오류 발생
+ 동기화 해제
+ 로그인%1$s …
+ 서버 메모 목록 가져오는 중 …
+ 로컬 메모 동기화 중 …
+
+ 설정
+ 동기화 계정
+ google task와 나란히 메모
+ 지난 번에%1$s 동기화
+ yyyy-MM-dd hh:mm:ss
+ 계좌 번호 추가
+ 계좌 번호를 바꾸다
+ 계정 삭제
+ 취소
+ 지금 동기화
+ 동기화 해제
+ 커런트 계정%1$s
+ 동기식 계정 변경시 과거 계정 동기식 정보가 지워지므로 재전환시 데이터가 중복될 수 있습니다.
+ 동기화 메모
+ 이 계정의 구글 작업 내용과 동기화하기 위해 구글 계정을 선택하십시오
+ 동기화하는 중 계정 정보를 수정할 수 없습니다.
+ 계정이%1$s로 설정되었습니다.
+ 새 메모 배경 색상 임의적으로
+
+ 삭제
+ 통화 메모
+ 이름을 입력하십시오.
+
+ 메모 찾는 중
+ 메모 찾기
+ 메모의 글
+ 메모
+ 설정
+ 취소
+
+ %1$s result for \"%2$s\"
+
+ %1$s 가닥입니다“%2$s” 검색 결과에 부합하는
+
+
+
\ No newline at end of file
diff --git a/xiaomi-src/main/res/values-zh-rCN/arrays.xml b/xiaomi-src/main/res/values-zh-rCN/arrays.xml
new file mode 100644
index 0000000..a092386
--- /dev/null
+++ b/xiaomi-src/main/res/values-zh-rCN/arrays.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+ 短信
+ 邮件
+
+
\ No newline at end of file
diff --git a/xiaomi-src/app/src/main/res/values-zh-rCN/strings.xml b/xiaomi-src/main/res/values-zh-rCN/strings.xml
similarity index 87%
rename from xiaomi-src/app/src/main/res/values-zh-rCN/strings.xml
rename to xiaomi-src/main/res/values-zh-rCN/strings.xml
index 92a8a69..c11e805 100644
--- a/xiaomi-src/app/src/main/res/values-zh-rCN/strings.xml
+++ b/xiaomi-src/main/res/values-zh-rCN/strings.xml
@@ -15,7 +15,8 @@
limitations under the License.
-->
-
+便签便签2x2便签4x4
@@ -23,6 +24,9 @@
访客模式下,便签内容不可见...新建便签
+ 撤销
+ 置顶签
+ 取消置顶成功删除提醒创建提醒已过期
@@ -41,6 +45,9 @@
取消同步设置搜索
+ 设置登陆密码
+ 删除登陆密码
+
删除移动到文件夹选中了 %d 项
@@ -62,10 +69,15 @@
发送到桌面提醒我删除提醒
+ 设置字体
+ 统计字数
+ 删设置密码选择文件夹上一级文件夹已添加到桌面删除
+ 私密模式
+ 退出私密模式确认要删除所选的 %d 条便签吗?确认要删除该条便签吗?确认删除文件夹及所包含的便签吗?
@@ -74,6 +86,7 @@
SD卡被占用,不能操作导出文本时发生错误,请检查SD卡要查看的便签不存在
+ 不能置顶空便签不能为空便签设置闹钟提醒不能将空便签发送到桌面导出成功
@@ -118,6 +131,12 @@
便签设置取消
+ 关键
+ 记录生活
+ DUMMY_BUTTON
+ 提示
+ 您不能再执行撤销了
+ 您还没有输入任何内容%1$s 条符合“%2$s”的搜索结果
diff --git a/xiaomi-src/main/res/values-zh-rTW/arrays.xml b/xiaomi-src/main/res/values-zh-rTW/arrays.xml
new file mode 100644
index 0000000..5297209
--- /dev/null
+++ b/xiaomi-src/main/res/values-zh-rTW/arrays.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+ 短信
+ 郵件
+
+
\ No newline at end of file
diff --git a/xiaomi-src/app/src/main/res/values-zh-rTW/strings.xml b/xiaomi-src/main/res/values-zh-rTW/strings.xml
similarity index 87%
rename from xiaomi-src/app/src/main/res/values-zh-rTW/strings.xml
rename to xiaomi-src/main/res/values-zh-rTW/strings.xml
index d282c6a..6d0848c 100644
--- a/xiaomi-src/app/src/main/res/values-zh-rTW/strings.xml
+++ b/xiaomi-src/main/res/values-zh-rTW/strings.xml
@@ -15,7 +15,8 @@
limitations under the License.
-->
-
+便簽便簽2x2便簽4x4
@@ -23,6 +24,9 @@
訪客模式下,便籤內容不可見...新建便簽
+ 撤销
+ 置顶
+ 取消置顶成功刪除提醒創建提醒已過期
@@ -42,6 +46,8 @@
取消同步設置搜尋
+ 设置登陆密码
+ 删除登陆密码刪除移動到文件夾選中了 %d 項
@@ -63,16 +69,22 @@
發送到桌面提醒我刪除提醒
+ 设置字体
+ 统计字数
+ 设置密码選擇文件夾上一級文件夾已添加到桌面刪除
+ 私密模式
+ 退出私密模式确认要刪除所選的 %d 條便籤嗎?确认要删除該條便籤嗎?確認刪除檔夾及所包含的便簽嗎?SD卡被佔用,不能操作導出TXT時發生錯誤,請檢查SD卡要查看的便籤不存在
+ 不能置顶空便籤不能爲空便籤設置鬧鐘提醒不能將空便籤發送到桌面導出成功
@@ -119,6 +131,12 @@
便籤設置取消
+ 关键
+ 记录生活
+ DUMMY_BUTTON
+ 提示
+ 您不能再执行撤销了
+ 您还没有输入任何内容%1$s 條符合”%2$s“的搜尋結果
diff --git a/xiaomi-src/main/res/values/arrays.xml b/xiaomi-src/main/res/values/arrays.xml
new file mode 100644
index 0000000..e00210b
--- /dev/null
+++ b/xiaomi-src/main/res/values/arrays.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+ -%s
+ --%s
+ --%s
+ --%s
+
+
+
+ Messaging
+ Email
+
+
\ No newline at end of file
diff --git a/xiaomi-src/main/res/values/attrs.xml b/xiaomi-src/main/res/values/attrs.xml
new file mode 100644
index 0000000..d557bfc
--- /dev/null
+++ b/xiaomi-src/main/res/values/attrs.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/xiaomi-src/main/res/values/colors.xml b/xiaomi-src/main/res/values/colors.xml
new file mode 100644
index 0000000..4ebf652
--- /dev/null
+++ b/xiaomi-src/main/res/values/colors.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+ #335b5b5b
+
+ #66000000
+
diff --git a/xiaomi-src/main/res/values/dimens.xml b/xiaomi-src/main/res/values/dimens.xml
new file mode 100644
index 0000000..194e84f
--- /dev/null
+++ b/xiaomi-src/main/res/values/dimens.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+ 33sp
+ 26sp
+ 20sp
+ 17sp
+ 14sp
+
\ No newline at end of file
diff --git a/xiaomi-src/app/src/main/res/values/strings.xml b/xiaomi-src/main/res/values/strings.xml
similarity index 86%
rename from xiaomi-src/app/src/main/res/values/strings.xml
rename to xiaomi-src/main/res/values/strings.xml
index e5e68c4..c7250d4 100644
--- a/xiaomi-src/app/src/main/res/values/strings.xml
+++ b/xiaomi-src/main/res/values/strings.xml
@@ -15,7 +15,8 @@
limitations under the License.
-->
-
+NotesNotes 2x2Notes 4x4
@@ -23,6 +24,9 @@
Privacy mode,can not see note content...Add note
+ Revoke
+ Set top
+ Cancel topDelete reminder successfullySet reminderExpired
@@ -45,6 +49,8 @@
Cancel syncingSettingsSearch
+ LoginSetting
+ delete passwordDeleteMove to folder%d selected
@@ -66,6 +72,11 @@
Send to homeRemind meDelete reminder
+ Set font
+ Count word
+ Set password
+ secret model
+ quit secret modelSelect folderParent folderNote added to home
@@ -78,6 +89,7 @@
SD card busy, not available nowExport failed, please check SD cardThe note is not exist
+ Sorry, can not set top on empty noteSorry, can not set clock on empty noteSorry, can not send and empty note to homeExport successful
@@ -125,8 +137,14 @@
Notessetcancel
+ key
+ LoveYourself
+ DUMMY_BUTTON
+ Tips
+ You can not revoke any more
+ You haven not input anything
- %1$s result for \"%2$s\"
+ %1$s result for \"%2$s\"%1$s results for \"%2$s\"
diff --git a/xiaomi-src/app/src/main/res/values/styles.xml b/xiaomi-src/main/res/values/styles.xml
similarity index 58%
rename from xiaomi-src/app/src/main/res/values/styles.xml
rename to xiaomi-src/main/res/values/styles.xml
index acd8e01..532b8f7 100644
--- a/xiaomi-src/app/src/main/res/values/styles.xml
+++ b/xiaomi-src/main/res/values/styles.xml
@@ -1,71 +1,84 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
\ No newline at end of file
diff --git a/xiaomi-src/main/res/xml/preferences.xml b/xiaomi-src/main/res/xml/preferences.xml
new file mode 100644
index 0000000..fe58f8f
--- /dev/null
+++ b/xiaomi-src/main/res/xml/preferences.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/xiaomi-src/main/res/xml/searchable.xml b/xiaomi-src/main/res/xml/searchable.xml
new file mode 100644
index 0000000..bf74f14
--- /dev/null
+++ b/xiaomi-src/main/res/xml/searchable.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
diff --git a/xiaomi-src/main/res/xml/widget_2x_info.xml b/xiaomi-src/main/res/xml/widget_2x_info.xml
new file mode 100644
index 0000000..ac8b225
--- /dev/null
+++ b/xiaomi-src/main/res/xml/widget_2x_info.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
diff --git a/xiaomi-src/main/res/xml/widget_4x_info.xml b/xiaomi-src/main/res/xml/widget_4x_info.xml
new file mode 100644
index 0000000..cf79f9c
--- /dev/null
+++ b/xiaomi-src/main/res/xml/widget_4x_info.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
diff --git a/xiaomi-src/main/sonar-project.properties b/xiaomi-src/main/sonar-project.properties
new file mode 100644
index 0000000..a77de31
--- /dev/null
+++ b/xiaomi-src/main/sonar-project.properties
@@ -0,0 +1,17 @@
+# 配置代码扫描的项目信息,每个项目有唯一的key,可以自己定
+# must be unique in a given SonarQube instance
+sonar.projectKey=myNotes
+
+# this is the name displayed in the SonarQube UI
+# 名称自己定
+sonar.projectName=myNotes
+sonar.projectVersion=1.0
+
+# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
+# If not set, SonarQube starts looking for source code from the directory containing
+# 配置扫描的代码目录,目录一般就是项目的src文件夹
+sonar.sources=java
+
+# classes文件目录,不加会报错。在代码根目录添加target文件夹
+# 如果还是报错在target中添加classes文件夹,之后下列等号右边改为target/classes
+sonar.java.binaries=target
\ No newline at end of file
diff --git a/xiaomi-src/settings.gradle b/xiaomi-src/settings.gradle
deleted file mode 100644
index 41f62e2..0000000
--- a/xiaomi-src/settings.gradle
+++ /dev/null
@@ -1,29 +0,0 @@
-pluginManagement {
- repositories {
- maven { url 'https://maven.aliyun.com/repository/jcenter' }
- maven { url 'https://maven.aliyun.com/repository/public' }
- maven { url 'https://maven.aliyun.com/repository/google' }
- maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
- maven { url 'https://jitpack.io' }
-
- gradlePluginPortal()
- google()
- mavenCentral()
- }
-}
-dependencyResolutionManagement {
- repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
- repositories {
- maven { url 'https://maven.aliyun.com/repository/jcenter' }
- maven { url 'https://maven.aliyun.com/repository/public' }
- maven { url 'https://maven.aliyun.com/repository/google' }
- maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
- maven { url 'https://jitpack.io' }
-
- gradlePluginPortal()
- google()
- mavenCentral()
- }
-}
-
-include ':app'