From 3f27fa356e5445666f8e5a811a29449c66e1dbc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=98acehuang310=E2=80=99?= <‘1623330381@qq.com’> Date: Wed, 3 Jan 2024 11:31:04 +0800 Subject: [PATCH 1/5] add tag --- .idea/.gitignore | 3 + .idea/compiler.xml | 2 +- .idea/deploymentTargetDropDown.xml | 17 + .idea/gradle.xml | 2 +- .idea/jarRepositories.xml | 25 +- .idea/misc.xml | 47 +-- .idea/vcs.xml | 2 +- .../ActivityDiaryApplication.java | 3 +- .../activitydiary/model/DiaryActivity.java | 17 +- .../model/conditions/SPUtils.java | 346 ++++++++++++++++++ .../ui/generic/EditActivity.java | 14 +- .../ui/main/SelectRecyclerViewAdapter.java | 3 + .../ui/main/SelectViewHolders.java | 3 +- .../main/res/layout/activity_edit_content.xml | 8 +- .../main/res/layout/select_recycler_item.xml | 13 +- app/src/main/res/values/strings.xml | 2 + 16 files changed, 432 insertions(+), 75 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/deploymentTargetDropDown.xml create mode 100644 app/src/main/java/de/rampro/activitydiary/model/conditions/SPUtils.java diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 000000000..26d33521a --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml index fb7f4a8a4..b589d56e9 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml new file mode 100644 index 000000000..28c203618 --- /dev/null +++ b/.idea/deploymentTargetDropDown.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml index a2d7c2133..6d8905056 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -1,12 +1,12 @@ - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 70ed5232b..0ad17cbd3 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,50 +1,7 @@ - - - - - + + diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 94a25f7f4..6c0b86358 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/app/src/main/java/de/rampro/activitydiary/ActivityDiaryApplication.java b/app/src/main/java/de/rampro/activitydiary/ActivityDiaryApplication.java index 2de7ac12a..8c9666832 100644 --- a/app/src/main/java/de/rampro/activitydiary/ActivityDiaryApplication.java +++ b/app/src/main/java/de/rampro/activitydiary/ActivityDiaryApplication.java @@ -29,6 +29,7 @@ import org.acra.data.StringFormat; import de.rampro.activitydiary.helpers.GraphicsHelper; +import de.rampro.activitydiary.model.conditions.SPUtils; public class ActivityDiaryApplication extends Application { @@ -37,7 +38,7 @@ public class ActivityDiaryApplication extends Application { public void onCreate() { super.onCreate(); ActivityDiaryApplication.context = getApplicationContext(); - + SPUtils.init(this); /* now do some init stuff */ String colors[] = context.getResources().getStringArray(R.array.activityColorPalette); diff --git a/app/src/main/java/de/rampro/activitydiary/model/DiaryActivity.java b/app/src/main/java/de/rampro/activitydiary/model/DiaryActivity.java index 057127fbc..4c3d9986e 100644 --- a/app/src/main/java/de/rampro/activitydiary/model/DiaryActivity.java +++ b/app/src/main/java/de/rampro/activitydiary/model/DiaryActivity.java @@ -23,11 +23,18 @@ public class DiaryActivity{ private String mName; private int mId; private int mColor; - + private String mTag; public DiaryActivity(int id, String name, int color){ mId = id; mName = name; mColor = color; + + } + public DiaryActivity(int id, String name, int color,String tag){ + mId = id; + mName = name; + mColor = color; + mTag=tag; } public String getName(){ @@ -56,4 +63,12 @@ public String toString(){ public int hashCode(){ return mId; } + + public String getmTag() { + return mTag; + } + + public void setmTag(String mTag) { + this.mTag = mTag; + } } diff --git a/app/src/main/java/de/rampro/activitydiary/model/conditions/SPUtils.java b/app/src/main/java/de/rampro/activitydiary/model/conditions/SPUtils.java new file mode 100644 index 000000000..b42f2878f --- /dev/null +++ b/app/src/main/java/de/rampro/activitydiary/model/conditions/SPUtils.java @@ -0,0 +1,346 @@ +package de.rampro.activitydiary.model.conditions; + +import android.annotation.TargetApi; +import android.content.Context; +import android.content.SharedPreferences; +import android.os.Build; + + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Set; + +/** + * must call init at your application level or equiv, before you use any other methods + */ +public class SPUtils { + + private static SharedPreferences sharedPreferences; + private static SPUtils prefsInstance; + + private static final String preferencesName = "preferences"; + private static final String LENGTH = "_length"; + + private static final String DEFAULT_STRING_VALUE = ""; + private static final int DEFAULT_INT_VALUE = -1; + private static final double DEFAULT_DOUBLE_VALUE = -1d; + private static final float DEFAULT_FLOAT_VALUE = -1f; + private static final long DEFAULT_LONG_VALUE = -1L; + private static final boolean DEFAULT_BOOLEAN_VALUE = false; + + private SPUtils(Context context) { + if (sharedPreferences == null) { + sharedPreferences = context.getApplicationContext().getSharedPreferences( + preferencesName, + Context.MODE_PRIVATE + ); + } + } + + /** + * @param context + * @return Returns a 'Prefs' instance + */ + public static SPUtils init(Context context) { + if (prefsInstance == null) { + prefsInstance = new SPUtils(context); + } + return prefsInstance; + } + + // String related methods + + /** + * @param what + * @return Returns the stored value of 'what' + */ + public static String getString(String what) { + return sharedPreferences.getString(what, DEFAULT_STRING_VALUE); + } + + /** + * @param what + * @param defaultString + * @return Returns the stored value of 'what' + */ + public static String getString(String what, String defaultString) { + return sharedPreferences.getString(what, defaultString); + } + + /** + * @param where + * @param what + */ + public static void putString(String where, String what) { + sharedPreferences.edit().putString(where, what).apply(); + } + + // int related methods + + /** + * @param what + * @return Returns the stored value of 'what' + */ + public static int getInt(String what) { + int result=sharedPreferences.getInt(what, DEFAULT_INT_VALUE); + if (result==-1){ + return 0; + }else + return result; + } + + /** + * @param what + * @param defaultInt + * @return Returns the stored value of 'what' + */ + public static int getInt(String what, int defaultInt) { + return sharedPreferences.getInt(what, defaultInt); + } + + /** + * @param where + * @param what + */ + public static void putInt(String where, int what) { + sharedPreferences.edit().putInt(where, what).apply(); + } + + // double related methods + + /** + * @param what + * @return Returns the stored value of 'what' + */ + public static double getDouble(String what) { + if (!contains(what)) + return DEFAULT_DOUBLE_VALUE; + return Double.longBitsToDouble(getLong(what)); + } + + /** + * @param what + * @param defaultDouble + * @return Returns the stored value of 'what' + */ + public double getDouble(String what, double defaultDouble) { + if (!contains(what)) + return defaultDouble; + return Double.longBitsToDouble(getLong(what)); + } + + /** + * @param where + * @param what + */ + public void putDouble(String where, double what) { + putLong(where, Double.doubleToRawLongBits(what)); + } + + // float related methods + + /** + * @param what + * @return Returns the stored value of 'what' + */ + public float getFloat(String what) { + return sharedPreferences.getFloat(what, DEFAULT_FLOAT_VALUE); + } + + /** + * @param what + * @param defaultFloat + * @return Returns the stored value of 'what' + */ + public static float getFloat(String what, float defaultFloat) { + return sharedPreferences.getFloat(what, defaultFloat); + } + + /** + * @param where + * @param what + */ + public static void putFloat(String where, float what) { + sharedPreferences.edit().putFloat(where, what).apply(); + } + + // long related methods + + /** + * @param what + * @return Returns the stored value of 'what' + */ + public static long getLong(String what) { + return sharedPreferences.getLong(what, DEFAULT_LONG_VALUE); + } + + /** + * @param what + * @param defaultLong + * @return Returns the stored value of 'what' + */ + public static long getLong(String what, long defaultLong) { + return sharedPreferences.getLong(what, defaultLong); + } + + /** + * @param where + * @param what + */ + public static void putLong(String where, long what) { + sharedPreferences.edit().putLong(where, what).apply(); + } + + public static float getFloat(String what, long defaultLong) { + return sharedPreferences.getFloat(what, defaultLong); + } + + /** + * @param where + * @param what + */ + public static void putFloat(String where, long what) { + sharedPreferences.edit().putFloat(where, what).apply(); + } + + // boolean related methods + + /** + * @param what + * @return Returns the stored value of 'what' + */ + public static boolean getBoolean(String what) { + return sharedPreferences.getBoolean(what, DEFAULT_BOOLEAN_VALUE); + } + + /** + * @param what + * @param defaultBoolean + * @return Returns the stored value of 'what' + */ + public static boolean getBoolean(String what, boolean defaultBoolean) { + return sharedPreferences.getBoolean(what, defaultBoolean); + } + + /** + * @param where + * @param what + */ + public static void putBoolean(String where, boolean what) { + sharedPreferences.edit().putBoolean(where, what).apply(); + } + + // String set methods + + /** + * @param key + * @param value + */ + @TargetApi(Build.VERSION_CODES.HONEYCOMB) + public static void putStringSet(final String key, final Set value) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { + sharedPreferences.edit().putStringSet(key, value).apply(); + } else { + // Workaround for pre-HC's lack of StringSets + putOrderedStringSet(key, value); + } + } + + public static Set getStringSet(final String key) { + return sharedPreferences.getStringSet(key,new HashSet()); + } + + /** + * @param key + * @param value + */ + public static void putOrderedStringSet(String key, Set value) { + int stringSetLength = 0; + if (sharedPreferences.contains(key + LENGTH)) { + // First getString what the value was + stringSetLength = getInt(key + LENGTH); + } + putInt(key + LENGTH, value.size()); + int i = 0; + for (String aValue : value) { + putString(key + "[" + i + "]", aValue); + i++; + } + for (; i < stringSetLength; i++) { + // Remove any remaining values + remove(key + "[" + i + "]"); + } + } + + /** + * @param key + * @param defValue + * @return Returns the String Set with HoneyComb compatibility + */ + @TargetApi(Build.VERSION_CODES.HONEYCOMB) + public Set getStringSet(final String key, final Set defValue) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { + return sharedPreferences.getStringSet(key, defValue); + } else { + // Workaround for pre-HC's missing getStringSet + return getOrderedStringSet(key, defValue); + } + } + + /** + * @param key + * @param defValue + * @return Returns the ordered String Set + */ + public Set getOrderedStringSet(String key, final Set defValue) { + if (contains(key + LENGTH)) { + LinkedHashSet set = new LinkedHashSet(); + int stringSetLength = getInt(key + LENGTH); + if (stringSetLength >= 0) { + for (int i = 0; i < stringSetLength; i++) { + set.add(getString(key + "[" + i + "]")); + } + } + return set; + } + return defValue; + } + + // end related methods + + /** + * @param key + */ + public static void remove(final String key) { + if (contains(key + LENGTH)) { + // Workaround for pre-HC's lack of StringSets + int stringSetLength = getInt(key + LENGTH); + if (stringSetLength >= 0) { + sharedPreferences.edit().remove(key + LENGTH).apply(); + for (int i = 0; i < stringSetLength; i++) { + sharedPreferences.edit().remove(key + "[" + i + "]").apply(); + } + } + } + sharedPreferences.edit().remove(key); + } + + /** + * @param key + * @return Returns if that key exists + */ + public static boolean contains(final String key) { + return sharedPreferences.contains(key); + } + + /** + * Clear all the preferences + */ + public static void clear() { + sharedPreferences.edit().clear().apply(); + } + + +} \ No newline at end of file diff --git a/app/src/main/java/de/rampro/activitydiary/ui/generic/EditActivity.java b/app/src/main/java/de/rampro/activitydiary/ui/generic/EditActivity.java index 53ea4499a..c827c6740 100644 --- a/app/src/main/java/de/rampro/activitydiary/ui/generic/EditActivity.java +++ b/app/src/main/java/de/rampro/activitydiary/ui/generic/EditActivity.java @@ -55,6 +55,7 @@ import de.rampro.activitydiary.helpers.JaroWinkler; import de.rampro.activitydiary.helpers.GraphicsHelper; import de.rampro.activitydiary.model.DiaryActivity; +import de.rampro.activitydiary.model.conditions.SPUtils; /* * EditActivity to add and modify activities @@ -73,8 +74,9 @@ public class EditActivity extends BaseActivity implements ActivityHelper.DataCha private final String COLOR_KEY = "COLOR"; private final String NAME_KEY = "NAME"; + private final String TAG_KEY = "TAG"; - private EditText mActivityName; + private EditText mActivityName,mActivityTag; private TextInputLayout mActivityNameTIL; private ImageView mActivityColorImg; private int mActivityColor; @@ -281,6 +283,8 @@ private void setBtnTooltip(View view, @Nullable CharSequence tooltipText) { private void refreshElements() { if (currentActivity != null) { mActivityName.setText(currentActivity.getName()); + mActivityTag.setText(currentActivity.getmTag()); + getSupportActionBar().setTitle(currentActivity.getName()); mActivityColor = currentActivity.getColor(); } else { @@ -317,6 +321,7 @@ protected void onCreate(Bundle savedInstanceState) { setContent(contentView); mActivityName = (EditText) contentView.findViewById(R.id.edit_activity_name); + mActivityTag = (EditText) contentView.findViewById(R.id.edit_activity_tag); mActivityName.addTextChangedListener(new TextWatcher(){ @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { @@ -387,6 +392,7 @@ public void onPause() { public void onSaveInstanceState(Bundle outState) { outState.putString(NAME_KEY, mActivityName.getText().toString()); outState.putInt(COLOR_KEY, mActivityColor); + outState.putString(TAG_KEY, mActivityTag.getText().toString()); // call superclass to save any view hierarchy super.onSaveInstanceState(outState); } @@ -417,9 +423,13 @@ public boolean onOptionsItemSelected(MenuItem item) { ).show(); } else { if (currentActivity == null) { - ActivityHelper.helper.insertActivity(new DiaryActivity(-1, mActivityName.getText().toString(), mActivityColor)); + ActivityHelper.helper.insertActivity(new DiaryActivity(-1, mActivityName.getText().toString(), mActivityColor,mActivityTag.getText().toString())); + SPUtils.putString(mActivityName.getText().toString()+mActivityColor,mActivityTag.getText().toString()); } else { currentActivity.setName(mActivityName.getText().toString()); + currentActivity.setmTag(mActivityTag.getText().toString()); + SPUtils.putString(mActivityName.getText().toString()+mActivityColor,mActivityTag.getText().toString()); + currentActivity.setColor(mActivityColor); ActivityHelper.helper.updateActivity(currentActivity); } diff --git a/app/src/main/java/de/rampro/activitydiary/ui/main/SelectRecyclerViewAdapter.java b/app/src/main/java/de/rampro/activitydiary/ui/main/SelectRecyclerViewAdapter.java index 60dae75b9..27dfb9a66 100644 --- a/app/src/main/java/de/rampro/activitydiary/ui/main/SelectRecyclerViewAdapter.java +++ b/app/src/main/java/de/rampro/activitydiary/ui/main/SelectRecyclerViewAdapter.java @@ -31,6 +31,7 @@ import de.rampro.activitydiary.R; import de.rampro.activitydiary.helpers.GraphicsHelper; import de.rampro.activitydiary.model.DiaryActivity; +import de.rampro.activitydiary.model.conditions.SPUtils; public class SelectRecyclerViewAdapter extends RecyclerView.Adapter{ private List mActivityList; @@ -55,11 +56,13 @@ public SelectViewHolders onCreateViewHolder(ViewGroup parent, int viewType) { public void onBindViewHolder(SelectViewHolders holder, int position) { DiaryActivity act = mActivityList.get(position); NumberFormat formatter = new DecimalFormat("#0.00"); + holder.mTag.setText("Tag:"+ SPUtils.getString(act.getName()+act.getColor())); holder.mName.setText(act.getName()); // show likelyhood in activity name // holder.mName.setText(act.getName() + " (" + formatter.format(ActivityHelper.helper.likelihoodFor(act)) + ")"); // TODO #33: holder.mSymbol.setImageResource(act.getPhoto()); holder.mBackground.setBackgroundColor(act.getColor()); + holder.mName.setTextColor(GraphicsHelper.textColorOnBackground(act.getColor())); // TODO #31: set the width based on the likelyhood diff --git a/app/src/main/java/de/rampro/activitydiary/ui/main/SelectViewHolders.java b/app/src/main/java/de/rampro/activitydiary/ui/main/SelectViewHolders.java index b95aa5272..4c864aca4 100644 --- a/app/src/main/java/de/rampro/activitydiary/ui/main/SelectViewHolders.java +++ b/app/src/main/java/de/rampro/activitydiary/ui/main/SelectViewHolders.java @@ -28,7 +28,7 @@ class SelectViewHolders extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener { - public TextView mName; + public TextView mName,mTag; public ImageView mSymbol; public View mBackground; private SelectRecyclerViewAdapter.SelectListener mListener; @@ -37,6 +37,7 @@ public SelectViewHolders(SelectRecyclerViewAdapter.SelectListener listener, View super(itemView); itemView.setOnClickListener(this); itemView.setOnLongClickListener(this); + mTag= (TextView) itemView.findViewById(R.id.tv_tag); mName = (TextView) itemView.findViewById(R.id.activity_name); mSymbol = (ImageView) itemView.findViewById(R.id.activity_image); mBackground = (View) itemView.findViewById(R.id.activity_background); diff --git a/app/src/main/res/layout/activity_edit_content.xml b/app/src/main/res/layout/activity_edit_content.xml index 88e09cff8..0ce189b0f 100644 --- a/app/src/main/res/layout/activity_edit_content.xml +++ b/app/src/main/res/layout/activity_edit_content.xml @@ -24,7 +24,13 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:padding="8dp"> - + - + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 39608e922..68facca1f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -74,6 +74,8 @@ Activity color Activity title + Activity tag + Choose current activity… @string/dialog_title_note From ea7ec9e180b3fbcabd45330652a7e009bc3de562 Mon Sep 17 00:00:00 2001 From: Cheng Tan Date: Wed, 3 Jan 2024 12:41:43 +0800 Subject: [PATCH 2/5] Dependency introduced. --- .idea/deploymentTargetDropDown.xml | 17 +++++------------ .idea/gradle.xml | 6 +++--- .idea/migrations.xml | 10 ++++++++++ .idea/misc.xml | 1 - .idea/modules.xml | 12 ------------ .idea/vcs.xml | 2 +- app/build.gradle | 1 + build.gradle | 2 ++ 8 files changed, 22 insertions(+), 29 deletions(-) create mode 100644 .idea/migrations.xml delete mode 100644 .idea/modules.xml diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml index 28c203618..0c0c33838 100644 --- a/.idea/deploymentTargetDropDown.xml +++ b/.idea/deploymentTargetDropDown.xml @@ -1,17 +1,10 @@ - - - - - - - - - - - - + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 6d8905056..0897082f7 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -1,18 +1,18 @@ + diff --git a/.idea/migrations.xml b/.idea/migrations.xml new file mode 100644 index 000000000..f8051a6f9 --- /dev/null +++ b/.idea/migrations.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 0ad17cbd3..8978d23db 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 927cc2ecc..000000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 6c0b86358..94a25f7f4 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 23cabf362..d8a0c6df8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -125,6 +125,7 @@ dependencies { implementation 'androidx.legacy:legacy-preference-v14:1.0.0' implementation 'androidx.exifinterface:exifinterface:1.3.3' implementation 'com.pes.materialcolorpicker:library:1.2.2' + implementation 'com.github.widemouth-dz:wmrichtexteditor:2.0.4' implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' implementation "androidx.lifecycle:lifecycle-viewmodel:2.5.1" diff --git a/build.gradle b/build.gradle index d91b869d2..9185facce 100644 --- a/build.gradle +++ b/build.gradle @@ -23,6 +23,7 @@ buildscript { repositories { google() mavenCentral() + maven { url 'https://jitpack.io' } if (project.file('ActivityDiarySigning.properties').exists()) { mavenCentral() } @@ -46,6 +47,7 @@ allprojects { repositories { google() mavenCentral() + maven { url 'https://jitpack.io' } jcenter() maven { url "https://jitpack.io" } } From 828170d17eae2d72cbef6e8aa4820210d7e39b9f Mon Sep 17 00:00:00 2001 From: Cheng Tan Date: Wed, 3 Jan 2024 14:42:40 +0800 Subject: [PATCH 3/5] Rich Text Editor Intro. --- .../activitydiary/ui/main/NoteEditDialog.java | 95 +++++++++++++++++-- .../main/res/layout/dialog_note_editor.xml | 46 ++++----- 2 files changed, 102 insertions(+), 39 deletions(-) diff --git a/app/src/main/java/de/rampro/activitydiary/ui/main/NoteEditDialog.java b/app/src/main/java/de/rampro/activitydiary/ui/main/NoteEditDialog.java index 5a9964964..87fa6a248 100644 --- a/app/src/main/java/de/rampro/activitydiary/ui/main/NoteEditDialog.java +++ b/app/src/main/java/de/rampro/activitydiary/ui/main/NoteEditDialog.java @@ -32,7 +32,41 @@ import de.rampro.activitydiary.R; +import com.widemouth.library.toolitem.WMToolAlignment; +import com.widemouth.library.toolitem.WMToolBackgroundColor; +import com.widemouth.library.toolitem.WMToolBold; +import com.widemouth.library.toolitem.WMToolImage; +import com.widemouth.library.toolitem.WMToolItalic; +import com.widemouth.library.toolitem.WMToolItem; +import com.widemouth.library.toolitem.WMToolListBullet; +import com.widemouth.library.toolitem.WMToolListClickToSwitch; +import com.widemouth.library.toolitem.WMToolListNumber; +import com.widemouth.library.toolitem.WMToolQuote; +import com.widemouth.library.toolitem.WMToolSplitLine; +import com.widemouth.library.toolitem.WMToolStrikethrough; +import com.widemouth.library.toolitem.WMToolTextColor; +import com.widemouth.library.toolitem.WMToolTextSize; +import com.widemouth.library.toolitem.WMToolUnderline; +import com.widemouth.library.wmview.WMEditText; +import com.widemouth.library.wmview.WMToolContainer; + public class NoteEditDialog extends DialogFragment { + private WMEditText editText; + private WMToolContainer toolContainer; + private WMToolItem toolBold = new WMToolBold(); + private WMToolItem toolItalic = new WMToolItalic(); + private WMToolItem toolUnderline = new WMToolUnderline(); + private WMToolItem toolStrikethrough = new WMToolStrikethrough(); + private WMToolItem toolImage = new WMToolImage(); + private WMToolItem toolTextColor = new WMToolTextColor(); + private WMToolItem toolBackgroundColor = new WMToolBackgroundColor(); + private WMToolItem toolTextSize = new WMToolTextSize(); + private WMToolItem toolListNumber = new WMToolListNumber(); + private WMToolItem toolListBullet = new WMToolListBullet(); + private WMToolItem toolAlignment = new WMToolAlignment(); + private WMToolItem toolQuote = new WMToolQuote(); + private WMToolItem toolListClickToSwitch = new WMToolListClickToSwitch(); + private WMToolItem toolSplitLine = new WMToolSplitLine(); private String note; private EditText input; private NoteEditDialogListener mListener; @@ -45,27 +79,32 @@ public interface NoteEditDialogListener { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { super.onSaveInstanceState(savedInstanceState); + Dialog result; AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); - LayoutInflater inflater = getActivity().getLayoutInflater(); - builder.setTitle(R.string.dialog_title_note); View dlgView = inflater.inflate(R.layout.dialog_note_editor, null); - input = (EditText) dlgView.findViewById(R.id.noteText); - if(savedInstanceState != null){ - input.setText(savedInstanceState.getString("Note")); - }else{ - input.setText(note); - } - input.setSelection(input.getText().length()); + editText = (WMEditText) dlgView.findViewById(R.id.WMEditText); + toolContainer = (WMToolContainer) dlgView.findViewById(R.id.WMToolContainer); + + // input = (EditText) dlgView.findViewById(R.id.noteText); + // if(savedInstanceState != null){ + // input.setText(savedInstanceState.getString("Note")); + // }else{ + // input.setText(note); + // } + + // input.setSelection(input.getText().length()); + builder.setView(dlgView) // Add action buttons + .setPositiveButton(R.string.dlg_ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { - mListener.onNoteEditPositiveClock(input.getText().toString(), NoteEditDialog.this); + mListener.onNoteEditPositiveClock("succ", NoteEditDialog.this); } }) .setNegativeButton(R.string.dlg_cancel, new DialogInterface.OnClickListener() { @@ -112,4 +151,40 @@ public void onSaveInstanceState(Bundle savedInstanceState) { super.onSaveInstanceState(savedInstanceState); savedInstanceState.putString("Note", input.getText().toString()); } + + @Override + public void onStart() { + super.onStart(); + + toolBold = new WMToolBold(); + toolItalic = new WMToolItalic(); + toolUnderline = new WMToolUnderline(); + toolStrikethrough = new WMToolStrikethrough(); + toolImage = new WMToolImage(); + toolTextColor = new WMToolTextColor(); + toolBackgroundColor = new WMToolBackgroundColor(); + toolTextSize = new WMToolTextSize(); + toolListNumber = new WMToolListNumber(); + toolListBullet = new WMToolListBullet(); + toolAlignment = new WMToolAlignment(); + toolQuote = new WMToolQuote(); + toolListClickToSwitch = new WMToolListClickToSwitch(); + toolSplitLine = new WMToolSplitLine(); + + toolContainer.addToolItem(toolImage); + toolContainer.addToolItem(toolTextColor); + toolContainer.addToolItem(toolBackgroundColor); + toolContainer.addToolItem(toolTextSize); + toolContainer.addToolItem(toolBold); + toolContainer.addToolItem(toolItalic); + toolContainer.addToolItem(toolUnderline); + toolContainer.addToolItem(toolStrikethrough); + toolContainer.addToolItem(toolListNumber); + toolContainer.addToolItem(toolListBullet); + toolContainer.addToolItem(toolAlignment); + toolContainer.addToolItem(toolQuote); + toolContainer.addToolItem(toolListClickToSwitch); + toolContainer.addToolItem(toolSplitLine); + editText.setupWithToolContainer(toolContainer); + } } diff --git a/app/src/main/res/layout/dialog_note_editor.xml b/app/src/main/res/layout/dialog_note_editor.xml index 85607578e..0173a4e66 100644 --- a/app/src/main/res/layout/dialog_note_editor.xml +++ b/app/src/main/res/layout/dialog_note_editor.xml @@ -1,34 +1,22 @@ - - - + android:layout_height="match_parent" + android:orientation="vertical"> + + - + android:layout_height="0dp" + android:layout_weight="1"> + + - \ No newline at end of file + \ No newline at end of file From 545e624654962bc55bd0db1ce5dfd522f503a956 Mon Sep 17 00:00:00 2001 From: Cheng Tan Date: Wed, 3 Jan 2024 15:44:52 +0800 Subject: [PATCH 4/5] Bug fixed. --- .../activitydiary/ui/main/MainActivity.java | 2 ++ .../activitydiary/ui/main/NoteEditDialog.java | 22 ++++++++----------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/de/rampro/activitydiary/ui/main/MainActivity.java b/app/src/main/java/de/rampro/activitydiary/ui/main/MainActivity.java index 3e6d5469d..6fea54407 100644 --- a/app/src/main/java/de/rampro/activitydiary/ui/main/MainActivity.java +++ b/app/src/main/java/de/rampro/activitydiary/ui/main/MainActivity.java @@ -50,6 +50,8 @@ import androidx.recyclerview.widget.RecyclerView; import androidx.appcompat.widget.SearchView; import androidx.recyclerview.widget.StaggeredGridLayoutManager; + +import android.text.Html; import android.text.Spannable; import android.text.SpannableStringBuilder; import android.text.format.DateFormat; diff --git a/app/src/main/java/de/rampro/activitydiary/ui/main/NoteEditDialog.java b/app/src/main/java/de/rampro/activitydiary/ui/main/NoteEditDialog.java index 87fa6a248..e3fd2de5c 100644 --- a/app/src/main/java/de/rampro/activitydiary/ui/main/NoteEditDialog.java +++ b/app/src/main/java/de/rampro/activitydiary/ui/main/NoteEditDialog.java @@ -25,6 +25,8 @@ import android.os.Bundle; import androidx.fragment.app.DialogFragment; import androidx.appcompat.app.AlertDialog; + +import android.text.Html; import android.view.LayoutInflater; import android.view.View; import android.view.WindowManager; @@ -89,22 +91,15 @@ public Dialog onCreateDialog(Bundle savedInstanceState) { editText = (WMEditText) dlgView.findViewById(R.id.WMEditText); toolContainer = (WMToolContainer) dlgView.findViewById(R.id.WMToolContainer); - // input = (EditText) dlgView.findViewById(R.id.noteText); - // if(savedInstanceState != null){ - // input.setText(savedInstanceState.getString("Note")); - // }else{ - // input.setText(note); - // } - - // input.setSelection(input.getText().length()); - builder.setView(dlgView) // Add action buttons .setPositiveButton(R.string.dlg_ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { - mListener.onNoteEditPositiveClock("succ", NoteEditDialog.this); + note = editText.getHtml(); + System.out.println(note); + mListener.onNoteEditPositiveClock(note, NoteEditDialog.this); } }) .setNegativeButton(R.string.dlg_cancel, new DialogInterface.OnClickListener() { @@ -131,9 +126,10 @@ public void onAttach(Context context) { } } - public void setText(String text){ - if(input != null){ - input.setText(text); + public void setText(String text) { + System.out.println("setText, text: " + text); + if(input != null) { + input.setText(Html.fromHtml(text)); } note = text; } From df239faea5e8c02bae97022529fd06439833b50a Mon Sep 17 00:00:00 2001 From: jiangxiansheng <1874813131@qq.com> Date: Wed, 3 Jan 2024 22:06:00 +0800 Subject: [PATCH 5/5] part3 --- .idea/gradle.xml | 3 +- app/src/main/AndroidManifest.xml | 2 + .../activitydiary/ui/main/MainActivity.java | 29 ++- .../ui/main/RedPacketActivity.java | 215 ++++++++++++++++++ app/src/main/res/color/btn_color_selector.xml | 24 ++ app/src/main/res/drawable/btn_selector.xml | 26 +++ .../main/res/drawable/close_red_packet.xml | 5 + .../main/res/drawable/close_text_on_video.xml | 5 + .../main/res/drawable/red_packet_image.png | Bin 0 -> 477220 bytes .../main/res/layout/activity_main_content.xml | 65 ++++-- app/src/main/res/layout/red_packet_video.xml | 136 +++++++++++ 11 files changed, 490 insertions(+), 20 deletions(-) create mode 100644 app/src/main/java/de/rampro/activitydiary/ui/main/RedPacketActivity.java create mode 100644 app/src/main/res/color/btn_color_selector.xml create mode 100644 app/src/main/res/drawable/btn_selector.xml create mode 100644 app/src/main/res/drawable/close_red_packet.xml create mode 100644 app/src/main/res/drawable/close_text_on_video.xml create mode 100644 app/src/main/res/drawable/red_packet_image.png create mode 100644 app/src/main/res/layout/red_packet_video.xml diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 0897082f7..9f47dfb43 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -4,8 +4,9 @@