1
1
package com .codedead .advancedpassgen .ui .home ;
2
2
3
3
import android .content .SharedPreferences ;
4
- import android .content .res .Configuration ;
5
4
import android .os .Bundle ;
6
5
import android .view .LayoutInflater ;
7
6
import android .view .View ;
8
7
import android .view .ViewGroup ;
9
8
10
9
import androidx .annotation .NonNull ;
11
10
import androidx .fragment .app .Fragment ;
11
+ import androidx .fragment .app .FragmentActivity ;
12
12
import androidx .preference .PreferenceManager ;
13
13
import androidx .recyclerview .widget .LinearLayoutManager ;
14
14
import androidx .recyclerview .widget .RecyclerView ;
15
+ import androidx .swiperefreshlayout .widget .SwipeRefreshLayout ;
15
16
16
17
import com .codedead .advancedpassgen .databinding .FragmentHomeBinding ;
17
- import com .codedead .advancedpassgen .domain .LocaleHelper ;
18
18
import com .codedead .advancedpassgen .domain .PasswordAdapter ;
19
19
import com .codedead .advancedpassgen .domain .PasswordGenerator ;
20
20
import com .codedead .advancedpassgen .domain .PasswordItem ;
23
23
import java .util .List ;
24
24
import java .util .concurrent .Executors ;
25
25
26
- public class HomeFragment extends Fragment {
26
+ public class HomeFragment extends Fragment implements SwipeRefreshLayout . OnRefreshListener {
27
27
28
28
private FragmentHomeBinding binding ;
29
29
private SharedPreferences sharedPreferences ;
30
- private String lastLanguage ;
30
+ private PasswordAdapter adapter ;
31
31
private String customCharacterSet ;
32
32
private int minimumLength ;
33
33
private int maximumLength ;
@@ -45,15 +45,18 @@ public View onCreateView(@NonNull final LayoutInflater inflater,
45
45
binding = FragmentHomeBinding .inflate (inflater , container , false );
46
46
View root = binding .getRoot ();
47
47
48
+ binding .swipeRefresh .setOnRefreshListener (this );
49
+ binding .textHome .setOnRefreshListener (this );
50
+
48
51
final RecyclerView recyclerView = binding .recyclerView ;
49
- final PasswordAdapter adapter = new PasswordAdapter (requireContext ());
52
+ adapter = new PasswordAdapter (requireContext ());
50
53
51
54
recyclerView .setLayoutManager (new LinearLayoutManager (requireContext (), LinearLayoutManager .VERTICAL , false ));
52
55
recyclerView .setAdapter (adapter );
53
56
54
57
binding .fabAdd .setOnClickListener (view -> {
55
58
binding .textHome .setVisibility (View .GONE );
56
- binding .recyclerView .setVisibility (View .VISIBLE );
59
+ binding .swipeRefresh .setVisibility (View .VISIBLE );
57
60
58
61
binding .fabClear .setEnabled (false );
59
62
binding .fabRefresh .setEnabled (false );
@@ -73,36 +76,12 @@ public View onCreateView(@NonNull final LayoutInflater inflater,
73
76
adapter .clear ();
74
77
75
78
binding .textHome .setVisibility (View .VISIBLE );
76
- binding .recyclerView .setVisibility (View .GONE );
79
+ binding .swipeRefresh .setVisibility (View .GONE );
77
80
});
78
81
79
- binding .fabRefresh .setOnClickListener (view -> {
80
- binding .textHome .setVisibility (View .GONE );
81
- binding .loadingLayout .setVisibility (View .VISIBLE );
82
-
83
- binding .fabClear .setEnabled (false );
84
- binding .fabRefresh .setEnabled (false );
85
- binding .fabAdd .setEnabled (false );
86
-
87
- Executors .newSingleThreadExecutor ().execute (() -> {
88
- final List <PasswordItem > items = PasswordGenerator .generatePasswords (minimumLength , maximumLength , passwordAmount , smallLetters , capitalLetters , numbers , specialCharacters , brackets , spaces , customCharacterSet );
89
- requireActivity ().runOnUiThread (() -> {
90
- if (binding == null )
91
- return ;
92
-
93
- binding .loadingLayout .setVisibility (View .GONE );
94
- binding .recyclerView .setVisibility (View .VISIBLE );
95
- adapter .insert (items );
96
-
97
- binding .fabClear .setEnabled (true );
98
- binding .fabRefresh .setEnabled (true );
99
- binding .fabAdd .setEnabled (true );
100
- });
101
- });
102
- });
82
+ binding .fabRefresh .setOnClickListener (view -> refreshPasswords ());
103
83
104
84
sharedPreferences = PreferenceManager .getDefaultSharedPreferences (requireContext ());
105
- lastLanguage = sharedPreferences .getString ("appLanguage" , "en" );
106
85
customCharacterSet = sharedPreferences .getString ("customCharacterSet" , "" );
107
86
minimumLength = Integer .parseInt (sharedPreferences .getString ("minimumLength" , "8" ));
108
87
maximumLength = Integer .parseInt (sharedPreferences .getString ("maximumLength" , "30" ));
@@ -121,16 +100,45 @@ public View onCreateView(@NonNull final LayoutInflater inflater,
121
100
return root ;
122
101
}
123
102
124
- @ Override
125
- public void onResume () {
126
- final String selectedLanguage = sharedPreferences .getString ("appLanguage" , "en" );
103
+ /**
104
+ * Refresh the passwords
105
+ */
106
+ private void refreshPasswords () {
107
+ binding .textHome .setVisibility (View .GONE );
108
+ binding .loadingLayout .setVisibility (View .VISIBLE );
109
+ binding .swipeRefresh .setVisibility (View .GONE );
110
+
111
+ binding .fabClear .setEnabled (false );
112
+ binding .fabRefresh .setEnabled (false );
113
+ binding .fabAdd .setEnabled (false );
114
+
115
+ Executors .newSingleThreadExecutor ().execute (() -> {
116
+ final List <PasswordItem > items = PasswordGenerator .generatePasswords (minimumLength , maximumLength , passwordAmount , smallLetters , capitalLetters , numbers , specialCharacters , brackets , spaces , customCharacterSet );
127
117
128
- if (!lastLanguage .equals (selectedLanguage )) {
129
- LocaleHelper .setLocale (getContext (), selectedLanguage );
130
- // recreate();
131
- }
118
+ final FragmentActivity activity = getActivity ();
119
+ if (activity == null )
120
+ return ;
132
121
133
- lastLanguage = sharedPreferences .getString ("appLanguage" , "en" );
122
+ activity .runOnUiThread (() -> {
123
+ if (binding == null || adapter == null )
124
+ return ;
125
+
126
+ binding .loadingLayout .setVisibility (View .GONE );
127
+ binding .swipeRefresh .setVisibility (View .VISIBLE );
128
+ adapter .insert (items );
129
+
130
+ binding .fabClear .setEnabled (true );
131
+ binding .fabRefresh .setEnabled (true );
132
+ binding .fabAdd .setEnabled (true );
133
+
134
+ binding .swipeRefresh .setRefreshing (false );
135
+ binding .textHome .setRefreshing (false );
136
+ });
137
+ });
138
+ }
139
+
140
+ @ Override
141
+ public void onResume () {
134
142
customCharacterSet = sharedPreferences .getString ("customCharacterSet" , "" );
135
143
minimumLength = Integer .parseInt (sharedPreferences .getString ("minimumLength" , "8" ));
136
144
maximumLength = Integer .parseInt (sharedPreferences .getString ("maximumLength" , "30" ));
@@ -149,15 +157,14 @@ public void onResume() {
149
157
UtilController .applyFlagSecure (getActivity (), preventScreenshot );
150
158
}
151
159
152
- @ Override
153
- public void onConfigurationChanged (@ NonNull final Configuration newConfig ) {
154
- super .onConfigurationChanged (newConfig );
155
- LocaleHelper .onAttach (getContext ());
156
- }
157
-
158
160
@ Override
159
161
public void onDestroyView () {
160
162
super .onDestroyView ();
161
163
binding = null ;
162
164
}
165
+
166
+ @ Override
167
+ public void onRefresh () {
168
+ refreshPasswords ();
169
+ }
163
170
}
0 commit comments