Skip to content

Commit 5ad3328

Browse files
committed
Refactor custom views
Improve recycler view binder. Update resources and strings. Preparing for the theme presets.
1 parent 8abbb02 commit 5ad3328

File tree

89 files changed

+1750
-811
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

89 files changed

+1750
-811
lines changed

dynamic-support/src/main/java/com/pranavpandey/android/dynamic/support/permission/activity/DynamicPermissionsActivity.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,16 +57,16 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
5757
setNavigationClickListener(new View.OnClickListener() {
5858
@Override
5959
public void onClick(View v) {
60-
DynamicPermissionsActivity.this.finish();
60+
finish();
6161
}
6262
});
6363

6464
setAppBarBackDrop(R.drawable.ads_ic_security);
6565

6666
addHeader(R.layout.ads_header_appbar, true);
67-
((ImageView) findViewById(R.id.ads_header_toolbar_icon))
67+
((ImageView) findViewById(R.id.ads_header_appbar_icon))
6868
.setImageDrawable(getApplicationInfo().loadIcon(getPackageManager()));
69-
((TextView) findViewById(R.id.ads_header_toolbar_title))
69+
((TextView) findViewById(R.id.ads_header_appbar_title))
7070
.setText(getApplicationInfo().loadLabel(getPackageManager()));
7171

7272
setupFragment(getIntent(), false);
@@ -104,7 +104,7 @@ private void setupFragment(@Nullable Intent intent, boolean newIntent) {
104104
* @param count The no. of permissions shown by this activity.
105105
*/
106106
public void updateSubtitle(int count) {
107-
((TextView) findViewById(R.id.ads_header_toolbar_subtitle))
107+
((TextView) findViewById(R.id.ads_header_appbar_subtitle))
108108
.setText(count == 1
109109
? R.string.ads_permissions_subtitle_single
110110
: R.string.ads_permissions_subtitle);

dynamic-support/src/main/java/com/pranavpandey/android/dynamic/support/permission/adapter/DynamicPermissionsAdapter.java

Lines changed: 67 additions & 150 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@
1919
import android.view.LayoutInflater;
2020
import android.view.View;
2121
import android.view.ViewGroup;
22-
import android.widget.ImageView;
23-
import android.widget.TextView;
2422

2523
import androidx.annotation.NonNull;
2624
import androidx.annotation.Nullable;
@@ -30,11 +28,14 @@
3028
import com.pranavpandey.android.dynamic.support.model.DynamicPermission;
3129
import com.pranavpandey.android.dynamic.support.permission.DynamicPermissions;
3230
import com.pranavpandey.android.dynamic.support.permission.view.DynamicPermissionsView;
31+
import com.pranavpandey.android.dynamic.support.utils.DynamicResourceUtils;
32+
import com.pranavpandey.android.dynamic.support.view.DynamicInfoView;
33+
import com.pranavpandey.android.dynamic.support.widget.DynamicImageView;
34+
import com.pranavpandey.android.dynamic.theme.Theme;
35+
import com.pranavpandey.android.dynamic.utils.DynamicSdkUtils;
3336

3437
import java.util.ArrayList;
3538

36-
import static android.view.View.GONE;
37-
3839
/**
3940
* A {@link RecyclerView.Adapter} to show the {@link DynamicPermissions}.
4041
*/
@@ -51,6 +52,12 @@ public class DynamicPermissionsAdapter extends
5152
*/
5253
private DynamicPermissionsView.PermissionListener mPermissionListener;
5354

55+
/**
56+
* Constructor to initialize an object of this class.
57+
*
58+
* @param dataSet The data set for this adapter.
59+
* @param permissionListener The listener to receiver the permission events.
60+
*/
5461
public DynamicPermissionsAdapter(@NonNull ArrayList<DynamicPermission> dataSet,
5562
@Nullable DynamicPermissionsView.PermissionListener permissionListener) {
5663
mPermissions = dataSet;
@@ -62,68 +69,62 @@ public DynamicPermissionsAdapter(@NonNull ArrayList<DynamicPermission> dataSet,
6269
@Override
6370
public @NonNull ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
6471
return new ViewHolder(LayoutInflater.from(viewGroup.getContext())
65-
.inflate(R.layout.ads_layout_info, viewGroup, false));
72+
.inflate(R.layout.ads_layout_info_view_card, viewGroup, false));
6673
}
6774

6875
@Override
6976
public void onBindViewHolder(@NonNull final ViewHolder viewHolder, final int position) {
7077
if (mPermissionListener != null) {
71-
viewHolder.getLayout().setOnClickListener(new View.OnClickListener() {
78+
viewHolder.getRoot().setOnClickListener(new View.OnClickListener() {
7279
@Override
7380
public void onClick(View v) {
7481
mPermissionListener.onPermissionSelected(v, position, getItem(position));
7582
}
7683
});
7784
} else {
78-
viewHolder.getLayout().setClickable(false);
85+
viewHolder.getRoot().setClickable(false);
7986
}
8087

8188
DynamicPermission dynamicPermission = getItem(position);
8289

83-
if (dynamicPermission.getIcon() != null) {
84-
viewHolder.getIcon().setImageDrawable(dynamicPermission.getIcon());
85-
viewHolder.getIcon().setVisibility(View.VISIBLE);
86-
} else {
87-
viewHolder.getIcon().setVisibility(GONE);
88-
}
89-
90-
if (dynamicPermission.getTitle() != null) {
91-
viewHolder.getTitle().setText(dynamicPermission.getTitle());
92-
viewHolder.getTitle().setVisibility(View.VISIBLE);
93-
} else {
94-
viewHolder.getTitle().setVisibility(GONE);
95-
}
96-
97-
if (dynamicPermission.getSubtitle() != null) {
98-
viewHolder.getSubtitle().setText(dynamicPermission.getSubtitle());
99-
viewHolder.getSubtitle().setVisibility(View.VISIBLE);
100-
} else {
101-
viewHolder.getSubtitle().setVisibility(GONE);
102-
}
103-
104-
if (dynamicPermission.getDescription() != null) {
105-
viewHolder.getDescription().setText(dynamicPermission.getDescription());
106-
viewHolder.getDescription().setVisibility(View.VISIBLE);
107-
} else {
108-
viewHolder.getDescription().setVisibility(GONE);
109-
}
90+
viewHolder.getInfoView().setIconBig(dynamicPermission.getIcon());
91+
viewHolder.getInfoView().setTitle(dynamicPermission.getTitle());
92+
viewHolder.getInfoView().setSubtitle(dynamicPermission.getSubtitle());
93+
viewHolder.getInfoView().setDescription(dynamicPermission.getDescription());
11094

11195
if (dynamicPermission.isAllowed()) {
112-
viewHolder.getStatusIcon().setImageResource(R.drawable.ads_ic_check);
113-
viewHolder.getInfo().setText(R.string.ads_perm_granted_desc);
114-
viewHolder.getStatus().setText(R.string.ads_perm_granted);
115-
viewHolder.getLayout().setClickable(false);
96+
viewHolder.getInfoView().setIcon(DynamicResourceUtils.getDrawable(
97+
viewHolder.getInfoView().getContext(), R.drawable.ads_ic_check));
98+
viewHolder.getInfoView().setDescription(viewHolder.getInfoView()
99+
.getContext().getString(R.string.ads_perm_granted_desc));
100+
viewHolder.getInfoView().setStatus(viewHolder.getInfoView()
101+
.getContext().getString(R.string.ads_perm_granted));
102+
viewHolder.getRoot().setClickable(false);
116103
} else {
117-
viewHolder.getStatusIcon().setImageResource(R.drawable.ads_ic_close);
118-
viewHolder.getInfo().setText(R.string.ads_perm_request_desc);
119-
viewHolder.getStatus().setText(R.string.ads_perm_request);
104+
viewHolder.getInfoView().setIcon(DynamicResourceUtils.getDrawable(
105+
viewHolder.getInfoView().getContext(), R.drawable.ads_ic_close));
106+
viewHolder.getInfoView().setDescription(viewHolder.getInfoView()
107+
.getContext().getString(R.string.ads_perm_request_desc));
108+
viewHolder.getInfoView().setStatus(viewHolder.getInfoView()
109+
.getContext().getString(R.string.ads_perm_request));
120110

121111
if (!dynamicPermission.isAskAgain()) {
122-
viewHolder.getStatusIcon().setImageResource(R.drawable.ads_ic_error);
123-
viewHolder.getInfo().setText(R.string.ads_perm_denied_desc);
124-
viewHolder.getStatus().setText(R.string.ads_perm_denied);
112+
viewHolder.getInfoView().setIcon(DynamicResourceUtils.getDrawable(
113+
viewHolder.getInfoView().getContext(), R.drawable.ads_ic_error));
114+
115+
if (DynamicSdkUtils.is23()) {
116+
viewHolder.getInfoView().setDescription(viewHolder.getInfoView()
117+
.getContext().getString(R.string.ads_perm_denied_desc));
118+
viewHolder.getInfoView().setStatus(viewHolder.getInfoView()
119+
.getContext().getString(R.string.ads_perm_denied));
120+
} else {
121+
viewHolder.getInfoView().setDescription(viewHolder.getInfoView()
122+
.getContext().getString(R.string.ads_perm_reinstall_desc));
123+
viewHolder.getInfoView().setStatus(viewHolder.getInfoView()
124+
.getContext().getString(R.string.ads_perm_reinstall));
125+
}
125126
}
126-
viewHolder.getLayout().setClickable(true);
127+
viewHolder.getRoot().setClickable(true);
127128
}
128129
}
129130

@@ -149,138 +150,54 @@ public DynamicPermission getItem(int position) {
149150
}
150151

151152
/**
152-
* View holder to hold the permission layout.
153+
* View holder to hold the permission root.
153154
*/
154155
static class ViewHolder extends RecyclerView.ViewHolder {
155156

156157
/**
157-
* Layout used by this view holder.
158-
*/
159-
private final ViewGroup layout;
160-
161-
/**
162-
* Image view to show the permission status icon.
163-
*/
164-
private final ImageView statusIcon;
165-
166-
/**
167-
* Image view to show the permission icon.
168-
*/
169-
private final ImageView icon;
170-
171-
/**
172-
* Text view to show the permission title.
173-
*/
174-
private final TextView title;
175-
176-
/**
177-
* Text view to show the permission subtitle.
178-
*/
179-
private final TextView subtitle;
180-
181-
/**
182-
* Text view to show the permission info.
183-
*/
184-
private final TextView info;
185-
186-
/**
187-
* Text view to show the permission description.
158+
* Root view used by this view holder.
188159
*/
189-
private final TextView description;
160+
private final ViewGroup root;
190161

191162
/**
192-
* Text view to show the permission status.
163+
* Dynamic info view used by this view holder.
193164
*/
194-
private final TextView status;
165+
private final DynamicInfoView dynamicInfo;
195166

196167
/**
197-
* Constructor to initialize views from the supplied layout.
168+
* Constructor to initialize views from the supplied root.
198169
*
199170
* @param view The view for this view holder.
200171
*/
201172
ViewHolder(@NonNull View view) {
202173
super(view);
203174

204-
layout = view.findViewById(R.id.ads_info_layout);
205-
icon = view.findViewById(R.id.ads_info_icon_big);
206-
statusIcon = view.findViewById(R.id.ads_info_icon);
207-
title = view.findViewById(R.id.ads_info_title);
208-
subtitle = view.findViewById(R.id.ads_info_subtitle);
209-
info = view.findViewById(R.id.ads_info_status_description);
210-
description = view.findViewById(R.id.ads_info_description);
211-
status = view.findViewById(R.id.ads_info_status);
212-
}
213-
214-
/**
215-
* Get the layout used by this view holder.
216-
*
217-
* @return The layout used by this view holder.
218-
*/
219-
ViewGroup getLayout() {
220-
return layout;
221-
}
222-
223-
/**
224-
* Get the image view to show the permission status icon.
225-
*
226-
* @return The image view to show the permission status icon.
227-
*/
228-
ImageView getStatusIcon() {
229-
return statusIcon;
230-
}
231-
232-
/**
233-
* Get the image view to show the permission icon.
234-
*
235-
* @return The image view to show the permission icon.
236-
*/
237-
ImageView getIcon() {
238-
return icon;
239-
}
240-
241-
/**
242-
* Get the text view to show the permission title.
243-
*
244-
* @return The text view to show the permission title.
245-
*/
246-
TextView getTitle() {
247-
return title;
248-
}
249-
250-
/**
251-
* Get the text view to show the permission subtitle.
252-
*
253-
* @return The text view to show the permission subtitle.
254-
*/
255-
TextView getSubtitle() {
256-
return subtitle;
257-
}
175+
root = view.findViewById(R.id.ads_info_view_card);
176+
dynamicInfo = view.findViewById(R.id.ads_dynamic_info_view);
258177

259-
/**
260-
* Get the text view to show the permission info.
261-
*
262-
* @return The text view to show the permission info.
263-
*/
264-
TextView getInfo() {
265-
return info;
178+
dynamicInfo.getSubtitleView().setAllCaps(true);
179+
if (dynamicInfo.getIconView() instanceof DynamicImageView) {
180+
((DynamicImageView) dynamicInfo.getIconView())
181+
.setColorType(Theme.ColorType.PRIMARY);
182+
}
266183
}
267184

268185
/**
269-
* Get the text view to show the permission description.
186+
* Get the root view used by this view holder.
270187
*
271-
* @return The text view to show the permission description.
188+
* @return The root view used by this view holder.
272189
*/
273-
TextView getDescription() {
274-
return description;
190+
ViewGroup getRoot() {
191+
return root;
275192
}
276193

277194
/**
278-
* Get the text view to show the permission status.
195+
* Get the dynamic info view used by this view holder.
279196
*
280-
* @return The text view to show the permission status.
197+
* @return The dynamic info view used by this view holder.
281198
*/
282-
TextView getStatus() {
283-
return status;
199+
DynamicInfoView getInfoView() {
200+
return dynamicInfo;
284201
}
285202
}
286203
}

dynamic-support/src/main/java/com/pranavpandey/android/dynamic/support/permission/fragment/DynamicPermissionsFragment.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,6 @@ public void onCreate(@Nullable Bundle savedInstanceState) {
125125
super.onCreate(savedInstanceState);
126126

127127
setResult(Activity.RESULT_CANCELED, null, false);
128-
129-
setHasOptionsMenu(true);
130128
}
131129

132130
@Override
@@ -176,6 +174,8 @@ public boolean onOptionsItemSelected(@NonNull MenuItem item) {
176174
public void onResume() {
177175
super.onResume();
178176

177+
setHasOptionsMenu(true);
178+
179179
initPermissions();
180180

181181
if (!mRequestingDangerousPermissions) {
@@ -269,7 +269,8 @@ public void initPermissions() {
269269
permissions = DynamicPermissions.getInstance()
270270
.getPermissionItemArrayList(permissionsArray);
271271

272-
mDynamicPermissionsView.setPermissions(permissions, new DynamicPermissionsView.PermissionListener() {
272+
mDynamicPermissionsView.setPermissions(permissions,
273+
new DynamicPermissionsView.PermissionListener() {
273274
@Override
274275
public void onPermissionSelected(@NonNull View view, int position,
275276
@NonNull DynamicPermission dynamicPermission) {

dynamic-support/src/main/java/com/pranavpandey/android/dynamic/support/recyclerview/DynamicRecyclerViewFrame.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,13 +119,13 @@ public DynamicRecyclerViewFrame(@NonNull Context context,
119119
/**
120120
* Initialize this view with default settings.
121121
*/
122-
private void initialize() {
122+
protected void initialize() {
123123
inflate(getContext(), getLayoutRes(), this);
124124
mShortAnimationDuration = getResources().getInteger(
125125
android.R.integer.config_shortAnimTime);
126126

127127
mSwipeRefreshLayout = findViewById(R.id.ads_swipe_refresh_layout);
128-
mRecyclerView = findViewById(R.id.ads_dynamic_recycler_view);
128+
mRecyclerView = findViewById(R.id.ads_recycler_view);
129129
mProgressBar = findViewById(R.id.ads_progress);
130130

131131
setRecyclerViewLayoutManager(getRecyclerViewLayoutManager());
@@ -227,6 +227,15 @@ public RecyclerView getRecyclerView() {
227227
return mRecyclerView;
228228
}
229229

230+
/**
231+
* Get the layout manager used by recycler view.
232+
*
233+
* @return The layout manager used by recycler view.
234+
*/
235+
public @Nullable RecyclerView.LayoutManager getLayoutManager() {
236+
return mRecyclerView == null ? null : mRecyclerView.getLayoutManager();
237+
}
238+
230239
/**
231240
* Get the swipe refresh layout used by this view.
232241
*

0 commit comments

Comments
 (0)