11package com .sparkleseditor .fragments ;
22
33import android .annotation .SuppressLint ;
4+ import android .graphics .Color ;
45import android .os .Bundle ;
56import android .view .LayoutInflater ;
67import android .view .View ;
78import android .view .ViewGroup ;
89
910import androidx .annotation .NonNull ;
11+ import androidx .appcompat .app .ActionBarDrawerToggle ;
1012import androidx .core .view .GravityCompat ;
13+ import androidx .core .view .ViewCompat ;
14+ import androidx .drawerlayout .widget .DrawerLayout ;
1115import androidx .fragment .app .Fragment ;
1216
1317import com .sparkleseditor .R ;
1418import com .sparkleseditor .components .ExpandableLayout ;
1519import com .sparkleseditor .databinding .FragmentMainBinding ;
1620import com .sparkleseditor .navigation .Navigator ;
1721
22+ import io .github .rosemoe .sora .widget .SymbolInputView ;
23+
1824public class MainFragment extends BaseFragment {
1925
2026 private FragmentMainBinding binding ;
2127
28+ public static final String [] SYMBOLS = {
29+ "TAB" ,"↵" , "{" , "}" , "(" , ")" ,
30+ "," , "." , ";" , "\" " , "?" ,
31+ "+" , "-" , "*" , "/" , "<" ,
32+ ">" , "[" , "]" , ":"
33+ };
34+
35+ public static final String [] SYMBOL_INSERT_TEXT = {
36+ "\t " ,"\n " , "{}" , "}" , "(" , ")" ,
37+ "," , "." , ";" , "\" " , "?" ,
38+ "+" , "-" , "*" , "/" , "<" ,
39+ ">" , "[" , "]" , ":"
40+ };
41+
2242 @ Override
2343 public View onCreateView (
2444 @ NonNull LayoutInflater inflater , ViewGroup container ,
@@ -34,34 +54,122 @@ public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
3454 super .onViewCreated (view , savedInstanceState );
3555 setupToolbar ();
3656 setupToolbox ();
57+ setupInputView ();
58+ setupTabLayoutTemp ();
59+ slideXDrawer ();
60+ binding .fab .setTranslationY (-12 );
61+
62+
63+ }
64+
65+ private void slideXDrawer () {
66+ /*int statusBarHeight =
67+ getResources()
68+ .getDimensionPixelSize(
69+ getResources().getIdentifier("status_bar_height", "dimen", "android"));*/
70+ int navigationBarHeight =
71+ getResources ()
72+ .getDimensionPixelSize (
73+ getResources ().getIdentifier ("navigation_bar_height" , "dimen" , "android" ));
74+ ViewGroup .LayoutParams layoutParams = binding .leftDrawerMenu .getLayoutParams ();
75+ if (layoutParams instanceof ViewGroup .MarginLayoutParams ) {
76+ ViewGroup .MarginLayoutParams marginLayoutParams = (ViewGroup .MarginLayoutParams ) layoutParams ;
77+ binding .leftDrawerMenu .setLayoutParams (marginLayoutParams );
78+ }
79+
80+ binding .drawer .setScrimColor (Color .TRANSPARENT );
81+ binding .drawer .setDrawerElevation (0f );
82+ binding .drawer .addDrawerListener (new DrawerLayout .SimpleDrawerListener () {
83+
84+ float slideX ;
85+ @ Override
86+ public void onDrawerSlide (@ NonNull View drawerView , float slideOffset ) {
87+ int gravity = ((DrawerLayout .LayoutParams ) drawerView .getLayoutParams ()).gravity ;
88+ if (gravity == GravityCompat .START ) {
89+ binding .coordinator .setTranslationX (slideOffset * drawerView .getWidth ());
90+ binding .drawer .bringChildToFront (drawerView );
91+ binding .drawer .requestLayout ();
92+ } else if (gravity == GravityCompat .END ) {
93+ binding .coordinator .setTranslationX (-slideOffset * drawerView .getWidth ());
94+ binding .drawer .bringChildToFront (drawerView );
95+ binding .drawer .requestLayout ();
96+ }
97+ }
98+
99+ @ Override
100+ public void onDrawerClosed (@ NonNull View drawerView ) {
101+ binding .coordinator .setTranslationX (0f );
102+ }
103+
104+ @ Override
105+ public void onDrawerStateChanged (int newState ) {
106+ if (newState == DrawerLayout .STATE_IDLE ) {
107+ if (!binding .drawer .isDrawerOpen (GravityCompat .START ) &&
108+ !binding .drawer .isDrawerOpen (GravityCompat .END )) {
109+ binding .coordinator .setTranslationX (0f );
110+ }
111+ }
112+
113+ }
114+
115+
116+ });
117+
118+ binding .toolbar .setNavigationOnClickListener (v ->{
119+ binding .drawer .openDrawer (GravityCompat .START );
120+ });
121+ }
122+
123+ private void setupTabLayoutTemp () {
124+ binding .tabLayout .addTab (binding .tabLayout .newTab ().setText ("My Tab Title" ));
125+
126+ }
127+
128+
129+ private void setupInputView () {
130+
131+ SymbolInputView inputView = binding .inputer ;
132+ inputView .bindEditor (binding .editor );
133+ inputView .addSymbols (SYMBOLS , SYMBOL_INSERT_TEXT );
134+ inputView .setBackgroundColor (Color .TRANSPARENT );
37135
38136 }
39137
40138 private void setupToolbox () {
41139 binding .options .setExpansion (false );
42140 binding .options .setDuration (200 );
43141 binding .options .setOrientatin (ExpandableLayout .VERTICAL );
142+ binding .settings .setOnClickListener (v ->{
143+ Fragment frgSettings = new SettingsFragment ();
144+ Navigator .pushTo (
145+ getParentFragmentManager (),
146+ R .id .nav_host ,
147+ frgSettings
148+ );
149+ });
44150 }
45151
46152 @ SuppressLint ("NonConstantResourceId" )
47153 private void setupToolbar () {
48154 binding .toolbar .setOnMenuItemClickListener (
49155 item ->{
50156 int id = item .getItemId ();
51- if (id == R .id .undo ) return true ;
52- if (id == R .id .redo ) return true ;
157+ if (id == R .id .undo ){
158+ if (binding .editor .canUndo ()){
159+ binding .editor .undo ();
160+ }
161+ return true ;
162+ }
163+ if (id == R .id .redo ) {
164+ if (binding .editor .canRedo ()) {
165+ binding .editor .redo ();
166+ }
167+ }
53168 if (id == R .id .right_drawer ) {
54169 binding .drawer .openDrawer (GravityCompat .END );
55170 return true ;
56171 }
57- if (id == R .id .action_settings ){
58- Fragment frgSettings = new SettingsFragment ();
59- Navigator .pushTo (
60- getParentFragmentManager (),
61- R .id .nav_host ,
62- frgSettings
63- );
64- }
172+
65173 if (id == R .id .toolbar ){
66174 if (!binding .options .isExpanded ()) {
67175 binding .options .expand ();
0 commit comments