Added Android code
[wl-app.git] / Android / app / src / main / java / com / moiseum / wolnelektury / view / main / NavigationAdapter.java
1 package com.moiseum.wolnelektury.view.main;
2
3 import android.content.Context;
4 import android.support.annotation.NonNull;
5 import android.view.View;
6 import android.view.ViewGroup;
7
8 import com.moiseum.wolnelektury.R;
9 import com.moiseum.wolnelektury.base.WLApplication;
10 import com.moiseum.wolnelektury.components.recycler.RecyclerAdapter;
11 import com.moiseum.wolnelektury.components.recycler.ViewHolder;
12 import com.moiseum.wolnelektury.utils.SharedPreferencesUtils;
13
14 /**
15  * @author golonkos
16  */
17
18 public class NavigationAdapter extends RecyclerAdapter<NavigationElement, ViewHolder<NavigationElement>> {
19
20         private static int TYPE_ITEM = 0;
21         private static int TYPE_SEPARATOR = 1;
22         private static int TYPE_SUPPORT = 2;
23         private static int TYPE_BLANK = 3;
24
25         private final SupportUsListener supportUsListener;
26
27         private final SharedPreferencesUtils preferences = WLApplication.getInstance().getPreferences();
28
29         NavigationAdapter(Context context, SupportUsListener supportUsListener) {
30                 super(context, Selection.SINGLE);
31                 this.supportUsListener = supportUsListener;
32                 setItems(NavigationElement.valuesForNavigation());
33         }
34
35         @Override
36         public int getItemViewType(int position) {
37                 NavigationElement element = getItem(position);
38                 if (element.requiresLogin() && !preferences.isUserLoggedIn()) {
39                         return TYPE_BLANK;
40                 }
41
42                 switch (element) {
43                         case SEPARATOR:
44                                 return TYPE_SEPARATOR;
45                         case SUPPORT_US:
46                                 return TYPE_SUPPORT;
47                         default:
48                                 return TYPE_ITEM;
49                 }
50         }
51
52         @NonNull
53         @Override
54         public ViewHolder<NavigationElement> onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
55                 if (viewType == TYPE_SEPARATOR) {
56                         return new SeparatorViewHolder(inflate(R.layout.navigation_separator_item, parent));
57                 }
58                 if (viewType == TYPE_SUPPORT) {
59                         return new SupportViewHolder(inflate(R.layout.navigation_support_item, parent), supportUsListener);
60                 }
61                 if (viewType == TYPE_BLANK) {
62                         return new NavigationBlankViewHolder(inflate(R.layout.navigation_blank, parent));
63                 }
64                 return new NavigationViewHolder(inflate(R.layout.navigation_item, parent));
65         }
66
67         @Override
68         protected String getItemId(NavigationElement item) {
69                 return item.name();
70         }
71
72         @Override
73         protected void onItemClicked(View view, NavigationElement item, int position) {
74                 if (item != NavigationElement.SEPARATOR && item != NavigationElement.SUPPORT_US) {
75                         super.onItemClicked(view, item, position);
76                 }
77         }
78
79         interface SupportUsListener {
80                 void onSupportUsClicked();
81         }
82 }