From 5b2b60624c3578ce195e49c6c9883308f7984ebb Mon Sep 17 00:00:00 2001 From: FatttSnake Date: Mon, 21 Mar 2022 22:10:10 +0800 Subject: [PATCH] Auto init basic tools --- .idea/gradle.xml | 1 + .idea/jarRepositories.xml | 5 + .idea/misc.xml | 2 + app/build.gradle | 2 + app/src/main/AndroidManifest.xml | 1 + app/src/main/assets/fonts/BasicTools.ttf | Bin 0 -> 1812 bytes app/src/main/assets/json/BasicTools.json | 40 +++ .../fatapp/oxygentoolbox/MainActivity.java | 15 +- .../layout/AutoLinefeedLayout.java | 4 +- .../oxygentoolbox/layout/FoldLayout.java | 32 +-- .../tools/TimeScreenActivity.java | 16 ++ .../oxygentoolbox/ui/home/HomeFragment.java | 82 ++++-- .../util/BasicToolsLauncher.java | 20 ++ .../com/fatapp/oxygentoolbox/util/Config.java | 4 + .../fatapp/oxygentoolbox/util/ToolsJson.java | 233 ++++++++++++++++++ .../fatapp/oxygentoolbox/util/ToolsList.java | 106 ++++++++ app/src/main/res/drawable/tools_icon.xml | 11 - .../main/res/layout/activity_time_screen.xml | 9 + app/src/main/res/layout/fold_layout.xml | 45 +--- .../{layout_item.xml => fold_layout_body.xml} | 1 - app/src/main/res/layout/fold_layout_head.xml | 37 +++ app/src/main/res/layout/fragment_home.xml | 17 +- build.gradle | 1 + 23 files changed, 569 insertions(+), 115 deletions(-) create mode 100644 app/src/main/assets/fonts/BasicTools.ttf create mode 100644 app/src/main/assets/json/BasicTools.json create mode 100644 app/src/main/java/com/fatapp/oxygentoolbox/tools/TimeScreenActivity.java create mode 100644 app/src/main/java/com/fatapp/oxygentoolbox/util/BasicToolsLauncher.java create mode 100644 app/src/main/java/com/fatapp/oxygentoolbox/util/Config.java create mode 100644 app/src/main/java/com/fatapp/oxygentoolbox/util/ToolsJson.java create mode 100644 app/src/main/java/com/fatapp/oxygentoolbox/util/ToolsList.java delete mode 100644 app/src/main/res/drawable/tools_icon.xml create mode 100644 app/src/main/res/layout/activity_time_screen.xml rename app/src/main/res/layout/{layout_item.xml => fold_layout_body.xml} (93%) create mode 100644 app/src/main/res/layout/fold_layout_head.xml diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 4e3844e..526b4c2 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -1,5 +1,6 @@ + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 8e44fc4..94e3584 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -25,10 +25,12 @@ + + diff --git a/app/build.gradle b/app/build.gradle index 46429d1..5a0ca79 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -40,4 +40,6 @@ dependencies { testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.2' androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' + + implementation 'com.google.code.gson:gson:2.8.6' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f1bce59..dd2bcfe 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,6 +9,7 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.OxygenToolbox"> + aur({S z{qlvWuO|S#N&C-L+u9m=-2D>qk8Fi1iO9S9d&FO|y;!Y#ce)4|`zyPynp3i{Cw0Bb z&Zt{=nxYqP(LO}oY*=;so6nvlfY2>KyWezL-fp|;()B0WvtaIeyVItfs^81q{982X zBip?{Ki1xU?&9z034EVE+5A*G24m+@2zs7s7c|LIWSoYpN|$VuAJAcwBJEL3V-ec& z>eY4h)-11qlu9MA2TKK5)V3=Y=T{p2q*ag+FccdOLHvd=7e3IwBll4-ieuyjBQ=C| zvS-Nk^2!#zIyyW$^y_g;e~LEUWR9o8J#;#9QI!_g;i&`X14^tb|JTXN$nzYzWAY)4 z`#ww$I6CaG20>3f*ad{#!~b1kegQ^Q8T?wwN>L9^Lf&ma&S}(7#T6n@G-4e z&@-u-#PRAU7Z+a`9W{m$iG$^XSXWp@>!AeKqRJBWsjWHNDS zqBvcOB@^ww_-170wmTQf4fG!m4`!xT7T#az>x#%};=@Bm%1B?Y@68_%uPmq1!r=t* zR3;`69qFFBJvDhDJ`mfC_q7wrSZQ_VQctowC_+DePm(miH~K zaLE641wLWEQ1gm6$ge0IMF!Ut?m+@~<;@MrrC-K}3JVP2p~4z^@vXu-`R^4D5&xoa z7=uD6Y+yhn6^>#z&~6HVW?!+A>d p&Z6o^HF-61{7!aw;-B?*UYGY!zTQ&g`+b&ZLK8Yd9?wmh{{|Zh`KkZ_ literal 0 HcmV?d00001 diff --git a/app/src/main/assets/json/BasicTools.json b/app/src/main/assets/json/BasicTools.json new file mode 100644 index 0000000..422138b --- /dev/null +++ b/app/src/main/assets/json/BasicTools.json @@ -0,0 +1,40 @@ +[ + { + "id": "basic", + "content": { + "version": "1.0", + "versionID": 210510, + "mainVersion": 210510, + "font": "fonts/BasicTools.ttf", + "icon": "\uE6AE", + "title": { + "cn": "\u57fa\u7840\u5de5\u5177", + "tc": "\u57fa\u790e\u5de5\u5177", + "en": "Basic Tools" + }, + "desc": { + "cn": "\u4e00\u4e9b\u57fa\u7840\u7684\u5de5\u5177\uff0c\u0041\u0050\u0050\u4e3b\u4f53\u81ea\u5e26", + "tc": "\u4e00\u4e9b\u57fa\u790e\u7684\u5de5\u5177\uff0c\u0041\u0050\u0050\u4e3b\u9ad4\u81ea\u5e36", + "en": "Some basic tools, the main body of the APP comes with it" + }, + "buttons": [ + { + "text": { + "cn": "\u65f6\u95f4\u5c4f\u5e55", + "tc": "\u6642\u9593\u5c4f\u5e55", + "en": "Time Screen" + }, + "activity": 0 + }, + { + "text": { + "cn": "\u7ffb\u8bd1", + "tc": "\u7ffb\u8b6f", + "en": "Translation" + }, + "activity": 1 + } + ] + } + } +] \ No newline at end of file diff --git a/app/src/main/java/com/fatapp/oxygentoolbox/MainActivity.java b/app/src/main/java/com/fatapp/oxygentoolbox/MainActivity.java index eb90941..aec1bdc 100644 --- a/app/src/main/java/com/fatapp/oxygentoolbox/MainActivity.java +++ b/app/src/main/java/com/fatapp/oxygentoolbox/MainActivity.java @@ -5,13 +5,12 @@ import android.content.pm.ShortcutInfo; import android.content.pm.ShortcutManager; import android.graphics.drawable.Icon; import android.os.Bundle; -import android.view.MenuItem; import android.view.View; import android.view.Menu; +import android.widget.Toast; -import com.fatapp.oxygentoolbox.layout.FoldLayout; +import com.fatapp.oxygentoolbox.util.ToolsList; import com.google.android.material.floatingactionbutton.FloatingActionButton; -import com.google.android.material.snackbar.Snackbar; import com.google.android.material.navigation.NavigationView; import androidx.navigation.NavController; @@ -22,10 +21,8 @@ import androidx.drawerlayout.widget.DrawerLayout; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; -import java.util.ArrayList; -import java.util.Arrays; +import java.io.IOException; import java.util.Collections; -import java.util.List; public class MainActivity extends AppCompatActivity { @@ -62,6 +59,12 @@ public class MainActivity extends AppCompatActivity { NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration); NavigationUI.setupWithNavController(navigationView, navController); + try { + ToolsList.init(getResources().getAssets().open("json/BasicTools.json")); + } catch (IOException e) { + e.printStackTrace(); + Toast.makeText(getApplicationContext(), "初始化工具集失败", Toast.LENGTH_LONG).show(); + } shortCutCreateTest(); } diff --git a/app/src/main/java/com/fatapp/oxygentoolbox/layout/AutoLinefeedLayout.java b/app/src/main/java/com/fatapp/oxygentoolbox/layout/AutoLinefeedLayout.java index f90983e..edf5289 100644 --- a/app/src/main/java/com/fatapp/oxygentoolbox/layout/AutoLinefeedLayout.java +++ b/app/src/main/java/com/fatapp/oxygentoolbox/layout/AutoLinefeedLayout.java @@ -20,7 +20,7 @@ public class AutoLinefeedLayout extends ViewGroup { } @Override - protected void onLayout(boolean changed, int l, int t, int r, int b) { + protected void onLayout(boolean changed, int left, int top, int right, int bottom) { layoutHorizontal(); } @@ -66,7 +66,7 @@ public class AutoLinefeedLayout extends ViewGroup { for (int i = 0; i < count; i++) { measureChild(getChildAt(i), widthMeasureSpec, heightMeasureSpec); } - if (heightMode == MeasureSpec.AT_MOST||heightMode == MeasureSpec.UNSPECIFIED) { + if (heightMode == MeasureSpec.AT_MOST || heightMode == MeasureSpec.UNSPECIFIED) { final int width = MeasureSpec.getSize(widthMeasureSpec); super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(getDesiredHeight(width), MeasureSpec.EXACTLY)); } else { diff --git a/app/src/main/java/com/fatapp/oxygentoolbox/layout/FoldLayout.java b/app/src/main/java/com/fatapp/oxygentoolbox/layout/FoldLayout.java index 8922449..9b97259 100644 --- a/app/src/main/java/com/fatapp/oxygentoolbox/layout/FoldLayout.java +++ b/app/src/main/java/com/fatapp/oxygentoolbox/layout/FoldLayout.java @@ -18,7 +18,7 @@ import com.fatapp.oxygentoolbox.R; import java.util.List; -public class FoldLayout extends LinearLayout implements View.OnClickListener{ +public class FoldLayout extends LinearLayout implements View.OnClickListener { private boolean init; private final int layoutId; @@ -40,8 +40,8 @@ public class FoldLayout extends LinearLayout implements View.OnClickListener{ public FoldLayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); - @SuppressLint("Recycle") TypedArray ta = context.obtainStyledAttributes(attrs,R.styleable.FoldLayout,defStyleAttr,0); - layoutId = ta.getResourceId(R.styleable.FoldLayout_layoutId,-1); + @SuppressLint("Recycle") TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.FoldLayout, defStyleAttr, 0); + layoutId = ta.getResourceId(R.styleable.FoldLayout_layoutId, -1); init(context); } @@ -55,18 +55,18 @@ public class FoldLayout extends LinearLayout implements View.OnClickListener{ */ private void addDefaultLayout(Context context) { - defaultView = LayoutInflater.from(context).inflate(layoutId, this,true); + defaultView = LayoutInflater.from(context).inflate(layoutId, this, true); defaultView.setOnClickListener(this); content = new LinearLayout(context); LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); content.setOrientation(VERTICAL); - addView(content,layoutParams); + addView(content, layoutParams); } @Override public void onClick(View v) { - if(isShow) { + if (isShow) { hideItem(); } else { showItem(); @@ -85,7 +85,7 @@ public class FoldLayout extends LinearLayout implements View.OnClickListener{ private void initAnimation() { int contentHeight = content.getMeasuredHeight(); - if(!init) { + if (!init) { showAnimator = ValueAnimator.ofInt(0, contentHeight); showAnimator.addUpdateListener(animation -> { LayoutParams layoutParams = (LayoutParams) content.getLayoutParams(); @@ -101,7 +101,7 @@ public class FoldLayout extends LinearLayout implements View.OnClickListener{ } }); - hideAnimator = ValueAnimator.ofInt(contentHeight,0); + hideAnimator = ValueAnimator.ofInt(contentHeight, 0); hideAnimator.addUpdateListener(animation -> { LayoutParams layoutParams = (LayoutParams) content.getLayoutParams(); layoutParams.height = (int) animation.getAnimatedValue(); @@ -119,7 +119,6 @@ public class FoldLayout extends LinearLayout implements View.OnClickListener{ } }); init = true; - hide(); showItem(); } @@ -133,22 +132,13 @@ public class FoldLayout extends LinearLayout implements View.OnClickListener{ final int position = i; content.addView(views.get(i)); views.get(i).setOnClickListener(v -> { - if(null != mOnItemClickListener) { - mOnItemClickListener.onItemClick(v,position); + if (null != mOnItemClickListener) { + mOnItemClickListener.onItemClick(v, position); } }); } } - /** - * Auto hide - */ - public void hide() { - LinearLayout.LayoutParams layoutParams = (LayoutParams) content.getLayoutParams(); - layoutParams.height = 0; - content.setLayoutParams(layoutParams); - } - @SuppressLint("UseCompatLoadingForDrawables") public void showItem() { isShow = true; @@ -170,7 +160,7 @@ public class FoldLayout extends LinearLayout implements View.OnClickListener{ } interface OnItemClickListener { - void onItemClick(View view,int position); + void onItemClick(View view, int position); } public void setOnItemClickListener(OnItemClickListener onItemClickListener) { diff --git a/app/src/main/java/com/fatapp/oxygentoolbox/tools/TimeScreenActivity.java b/app/src/main/java/com/fatapp/oxygentoolbox/tools/TimeScreenActivity.java new file mode 100644 index 0000000..e458b9a --- /dev/null +++ b/app/src/main/java/com/fatapp/oxygentoolbox/tools/TimeScreenActivity.java @@ -0,0 +1,16 @@ +package com.fatapp.oxygentoolbox.tools; + +import android.os.Bundle; + +import androidx.appcompat.app.AppCompatActivity; + +import com.fatapp.oxygentoolbox.R; + +public class TimeScreenActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_time_screen); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/fatapp/oxygentoolbox/ui/home/HomeFragment.java b/app/src/main/java/com/fatapp/oxygentoolbox/ui/home/HomeFragment.java index 3bde98c..35f754b 100644 --- a/app/src/main/java/com/fatapp/oxygentoolbox/ui/home/HomeFragment.java +++ b/app/src/main/java/com/fatapp/oxygentoolbox/ui/home/HomeFragment.java @@ -1,27 +1,25 @@ package com.fatapp.oxygentoolbox.ui.home; -import android.animation.Animator; -import android.animation.AnimatorListenerAdapter; +import android.graphics.Typeface; +import android.graphics.drawable.Drawable; +import android.graphics.drawable.Icon; import android.os.Bundle; -import android.util.TypedValue; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; +import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; -import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; -import com.fatapp.oxygentoolbox.MainActivity; import com.fatapp.oxygentoolbox.R; import com.fatapp.oxygentoolbox.layout.FoldLayout; +import com.fatapp.oxygentoolbox.util.BasicToolsLauncher; +import com.fatapp.oxygentoolbox.util.ToolsList; import java.util.ArrayList; import java.util.List; @@ -32,8 +30,7 @@ public class HomeFragment extends Fragment { private HomeViewModel homeViewModel; - private FoldLayout foldLayout; - private FoldLayout foldLayout1; + private LinearLayout foldLayoutsLinearLayout; public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { homeViewModel = @@ -44,21 +41,56 @@ public class HomeFragment extends Fragment { } private void initView() { - foldLayout = root.findViewById(R.id.foldLayout); - List viewList = new ArrayList<>(); - View layout_item = getLayoutInflater().inflate(R.layout.layout_item, null); - ViewGroup layout_item_AutoLinefeedLayout = layout_item.findViewById(R.id.layout_item_AutoLinefeedLayout); - for (int i = 1; i < 1000; i++) { - View toolButton = getLayoutInflater().inflate(R.layout.tool_button, null); - ((Button) toolButton.findViewById(R.id.toolButton)).setText("Bt" + i); - layout_item_AutoLinefeedLayout.addView(toolButton); - } - viewList.add(layout_item); - foldLayout.addItemView(viewList); + for (ToolsList.Tool tool : ToolsList.getToolList()) { - foldLayout1 = root.findViewById(R.id.foldLayout1); - List viewList1 = new ArrayList<>(); - viewList1.add(getLayoutInflater().inflate(R.layout.layout_item, null)); - foldLayout1.addItemView(viewList1); + View foldLayoutBody = getLayoutInflater().inflate(R.layout.fold_layout_body, null); + ViewGroup layout_item_AutoLinefeedLayout = foldLayoutBody.findViewById(R.id.layout_item_AutoLinefeedLayout); + + for (ToolsList.Button button : tool.getButtonList()) { + View toolButton = getLayoutInflater().inflate(R.layout.tool_button, null); + ((Button) toolButton.findViewById(R.id.toolButton)).setText(button.getText()); + toolButton.findViewById(R.id.toolButton).setOnClickListener(v -> { + BasicToolsLauncher.launch(button.getActivity(), getContext()); + }); + layout_item_AutoLinefeedLayout.addView(toolButton); + } + + List viewList = new ArrayList<>(); + viewList.add(foldLayoutBody); + + View foldLayoutHead = getLayoutInflater().inflate(R.layout.fold_layout, null); + FoldLayout foldLayout = foldLayoutHead.findViewById(R.id.foldLayout); + ((TextView) foldLayout.findViewById(R.id.foldLayoutTextView)).setText(tool.getFoldLayoutTitle()); + ((TextView) foldLayout.findViewById(R.id.foldLayoutIcon)).setTypeface(Typeface.createFromAsset(getContext().getAssets(), tool.getFont())); + ((TextView) foldLayout.findViewById(R.id.foldLayoutIcon)).setText(tool.getIcon()); + + foldLayout.addItemView(viewList); + + foldLayoutsLinearLayout = root.findViewById(R.id.foldLayoutsLinearLayout); + foldLayoutsLinearLayout.addView(foldLayoutHead); + } + + /*for (int i = 0; i < 10; i++) { + View toolButton = getLayoutInflater().inflate(R.layout.tool_button, null); + ((Button) toolButton.findViewById(R.id.toolButton)).setText("Button"); + toolButton.findViewById(R.id.toolButton).setOnClickListener(v -> { + BasicToolsLauncher.launch(0, getContext()); + }); + + View foldLayoutBody = getLayoutInflater().inflate(R.layout.fold_layout_body, null); + ViewGroup layout_item_AutoLinefeedLayout = foldLayoutBody.findViewById(R.id.layout_item_AutoLinefeedLayout); + layout_item_AutoLinefeedLayout.addView(toolButton); + + List viewList = new ArrayList<>(); + viewList.add(foldLayoutBody); + + View foldLayoutHead = getLayoutInflater().inflate(R.layout.fold_layout, null); + FoldLayout foldLayout = foldLayoutHead.findViewById(R.id.foldLayout); + ((TextView) foldLayout.findViewById(R.id.foldLayoutTextView)).setText("FoldLayout_" + i); + foldLayout.addItemView(viewList); + + foldLayoutsLinearLayout = root.findViewById(R.id.foldLayoutsLinearLayout); + foldLayoutsLinearLayout.addView(foldLayoutHead); + }*/ } } \ No newline at end of file diff --git a/app/src/main/java/com/fatapp/oxygentoolbox/util/BasicToolsLauncher.java b/app/src/main/java/com/fatapp/oxygentoolbox/util/BasicToolsLauncher.java new file mode 100644 index 0000000..8fe6922 --- /dev/null +++ b/app/src/main/java/com/fatapp/oxygentoolbox/util/BasicToolsLauncher.java @@ -0,0 +1,20 @@ +package com.fatapp.oxygentoolbox.util; + +import static androidx.core.content.ContextCompat.startActivity; + +import android.content.Context; +import android.content.Intent; + +import com.fatapp.oxygentoolbox.tools.TimeScreenActivity; + +public class BasicToolsLauncher { + public static void launch(int activity, Context context) { + switch (activity) { + case 0: + startActivity(context, new Intent(context, TimeScreenActivity.class), null); + break; + case 1: + break; + } + } +} diff --git a/app/src/main/java/com/fatapp/oxygentoolbox/util/Config.java b/app/src/main/java/com/fatapp/oxygentoolbox/util/Config.java new file mode 100644 index 0000000..7a361f1 --- /dev/null +++ b/app/src/main/java/com/fatapp/oxygentoolbox/util/Config.java @@ -0,0 +1,4 @@ +package com.fatapp.oxygentoolbox.util; + +public class Config { +} diff --git a/app/src/main/java/com/fatapp/oxygentoolbox/util/ToolsJson.java b/app/src/main/java/com/fatapp/oxygentoolbox/util/ToolsJson.java new file mode 100644 index 0000000..b7a6baf --- /dev/null +++ b/app/src/main/java/com/fatapp/oxygentoolbox/util/ToolsJson.java @@ -0,0 +1,233 @@ +package com.fatapp.oxygentoolbox.util; + +import com.google.gson.annotations.SerializedName; + +import java.util.List; + +public class ToolsJson { + @SerializedName("id") + private String id; + @SerializedName("content") + private Content content; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public Content getContent() { + return content; + } + + public void setContent(Content content) { + this.content = content; + } + + public static class Content { + @SerializedName("version") + private String version; + @SerializedName("versionID") + private Integer versionID; + @SerializedName("mainVersion") + private Integer mainVersion; + @SerializedName("font") + private String font; + @SerializedName("icon") + private String icon; + @SerializedName("title") + private Title title; + @SerializedName("desc") + private Desc desc; + @SerializedName("buttons") + private List buttons; + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + public Integer getVersionID() { + return versionID; + } + + public void setVersionID(Integer versionID) { + this.versionID = versionID; + } + + public Integer getMainVersion() { + return mainVersion; + } + + public void setMainVersion(Integer mainVersion) { + this.mainVersion = mainVersion; + } + + public Title getTitle() { + return title; + } + + public void setTitle(Title title) { + this.title = title; + } + + public String getFont() { + return font; + } + + public void setFont(String font) { + this.font = font; + } + + public String getIcon() { + return icon; + } + + public void setIcon(String icon) { + this.icon = icon; + } + + public Desc getDesc() { + return desc; + } + + public void setDesc(Desc desc) { + this.desc = desc; + } + + public List getButtons() { + return buttons; + } + + public void setButtons(List buttons) { + this.buttons = buttons; + } + + public static class Title { + @SerializedName("cn") + private String cn; + @SerializedName("tc") + private String tc; + @SerializedName("en") + private String en; + + public String getCn() { + return cn; + } + + public void setCn(String cn) { + this.cn = cn; + } + + public String getTc() { + return tc; + } + + public void setTc(String tc) { + this.tc = tc; + } + + public String getEn() { + return en; + } + + public void setEn(String en) { + this.en = en; + } + } + + public static class Desc { + @SerializedName("cn") + private String cn; + @SerializedName("tc") + private String tc; + @SerializedName("en") + private String en; + + public String getCn() { + return cn; + } + + public void setCn(String cn) { + this.cn = cn; + } + + public String getTc() { + return tc; + } + + public void setTc(String tc) { + this.tc = tc; + } + + public String getEn() { + return en; + } + + public void setEn(String en) { + this.en = en; + } + } + + public static class Buttons { + @SerializedName("text") + private Text text; + @SerializedName("activity") + private Integer activity; + + public Text getText() { + return text; + } + + public void setText(Text text) { + this.text = text; + } + + public Integer getActivity() { + return activity; + } + + public void setActivity(Integer activity) { + this.activity = activity; + } + + public static class Text { + @SerializedName("cn") + private String cn; + @SerializedName("tc") + private String tc; + @SerializedName("en") + private String en; + + public String getCn() { + return cn; + } + + public void setCn(String cn) { + this.cn = cn; + } + + public String getTc() { + return tc; + } + + public void setTc(String tc) { + this.tc = tc; + } + + public String getEn() { + return en; + } + + public void setEn(String en) { + this.en = en; + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/fatapp/oxygentoolbox/util/ToolsList.java b/app/src/main/java/com/fatapp/oxygentoolbox/util/ToolsList.java new file mode 100644 index 0000000..9b6682d --- /dev/null +++ b/app/src/main/java/com/fatapp/oxygentoolbox/util/ToolsList.java @@ -0,0 +1,106 @@ +package com.fatapp.oxygentoolbox.util; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; + +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; + +public class ToolsList { + private static List toolList = new ArrayList<>(); + + public static void init(InputStream file) throws IOException { + int i; + StringBuilder jsonStringBuilder = new StringBuilder(); + + while ((i = file.read()) != -1) { + jsonStringBuilder.append((char) i); + } + file.close(); + List toolsJsonList = new Gson().fromJson(jsonStringBuilder.toString(), new TypeToken>(){}.getType()); + + for (ToolsJson toolsJson : toolsJsonList) { + Tool tool = new Tool(); + tool.setFont(toolsJson.getContent().getFont()); + tool.setIcon(toolsJson.getContent().getIcon()); + tool.setFoldLayoutTitle(toolsJson.getContent().getTitle().getCn()); + for (ToolsJson.Content.Buttons cButton : toolsJson.getContent().getButtons()) { + Button button = new Button(); + button.setText(cButton.getText().getCn()); + button.setActivity(cButton.getActivity()); + tool.buttonList.add(button); + } + toolList.add(tool); + } + } + + public static List getToolList() { + return toolList; + } + + public void setToolList(List toolList) { + ToolsList.toolList = toolList; + } + + public static class Tool { + private String font; + private String icon; + private String foldLayoutTitle; + private List