Added Android code
[wl-app.git] / Android / app / src / main / java / com / moiseum / wolnelektury / view / main / NavigationElement.java
1 package com.moiseum.wolnelektury.view.main;
2
3 import android.support.v4.app.Fragment;
4
5 import com.moiseum.wolnelektury.R;
6 import com.moiseum.wolnelektury.view.AboutFragment;
7 import com.moiseum.wolnelektury.view.book.list.BookListType;
8 import com.moiseum.wolnelektury.view.book.list.BooksListFragment;
9 import com.moiseum.wolnelektury.view.library.LibraryFragment;
10 import com.moiseum.wolnelektury.view.news.NewsListFragment;
11 import com.moiseum.wolnelektury.view.search.BookSearchFragment;
12 import com.moiseum.wolnelektury.view.settings.SettingsFragment;
13
14 import java.util.Arrays;
15 import java.util.List;
16
17 /**
18  * @author golonkos
19  */
20
21 public enum NavigationElement {
22
23         LIBRARY {
24                 @Override
25                 public int getTitle() {
26                         return R.string.nav_wolne_lektury;
27                 }
28
29                 @Override
30                 public Fragment getFragment() {
31                         return LibraryFragment.newInstance();
32                 }
33
34                 @Override
35                 public int getIcon() {
36                         return R.drawable.ic_menu_library;
37                 }
38
39                 @Override
40                 public boolean requiresLogin() {
41                         return false;
42                 }
43         },
44
45         PREMIUM {
46                 @Override
47                 public int getTitle() {
48                         return R.string.nav_premium;
49                 }
50
51                 @Override
52                 public Fragment getFragment() {
53                         // This in intentional. We have to handle this separately.
54                         return null;
55                 }
56
57                 @Override
58                 public int getIcon() {
59                         return R.drawable.ic_menu_star;
60                 }
61
62                 @Override
63                 public boolean requiresLogin() {
64                         return false;
65                 }
66         },
67
68         NOW_READING {
69                 @Override
70                 public int getTitle() {
71                         return R.string.nav_reading;
72                 }
73
74                 @Override
75                 public Fragment getFragment() {
76                         return BooksListFragment.newInstance(BookListType.READING);
77                 }
78
79                 @Override
80                 public int getIcon() {
81                         return R.drawable.ic_book;
82                 }
83
84                 @Override
85                 public boolean requiresLogin() {
86                         return true;
87                 }
88         },
89
90         FAVOURITES {
91                 @Override
92                 public int getTitle() {
93                         return R.string.nav_favourites;
94                 }
95
96                 @Override
97                 public Fragment getFragment() {
98                         return BooksListFragment.newInstance(BookListType.FAVOURITES);
99                 }
100
101                 @Override
102                 public int getIcon() {
103                         return R.drawable.ic_menu_fav;
104                 }
105
106                 @Override
107                 public boolean requiresLogin() {
108                         return true;
109                 }
110         },
111
112         COMPLETED {
113                 @Override
114                 public int getTitle() {
115                         return R.string.nav_completed;
116                 }
117
118                 @Override
119                 public Fragment getFragment() {
120                         return BooksListFragment.newInstance(BookListType.COMPLETED);
121                 }
122
123                 @Override
124                 public int getIcon() {
125                         return R.drawable.ic_accept;
126                 }
127
128                 @Override
129                 public boolean requiresLogin() {
130                         return true;
131                 }
132         },
133
134         AUDIOBOOKS {
135                 @Override
136                 public int getTitle() {
137                         return R.string.nav_audiobooks;
138                 }
139
140                 @Override
141                 public Fragment getFragment() {
142                         return BooksListFragment.newInstance(BookListType.AUDIOBOOKS);
143                 }
144
145                 @Override
146                 public int getIcon() {
147                         return R.drawable.ic_menu_audiobook;
148                 }
149
150                 @Override
151                 public boolean requiresLogin() {
152                         return false;
153                 }
154         },
155
156         DOWNLOADED {
157                 @Override
158                 public int getTitle() {
159                         return R.string.nav_my_collection;
160                 }
161
162                 @Override
163                 public Fragment getFragment() {
164                         return BooksListFragment.newInstance(BookListType.DOWNLOADED);
165                 }
166
167                 @Override
168                 public int getIcon() {
169                         return R.drawable.ic_menu_downloaded;
170                 }
171
172                 @Override
173                 public boolean requiresLogin() {
174                         return false;
175                 }
176         },
177
178         SEARCH {
179                 @Override
180                 public int getTitle() {
181                         return R.string.nav_catalog;
182                 }
183
184                 @Override
185                 public Fragment getFragment() {
186                         return BookSearchFragment.newInstance();
187                 }
188
189                 @Override
190                 public int getIcon() {
191                         return R.drawable.ic_menu_search;
192                 }
193
194                 @Override
195                 public boolean requiresLogin() {
196                         return false;
197                 }
198         },
199
200         ABOUT {
201                 @Override
202                 public int getTitle() {
203                         return R.string.nav_about;
204                 }
205
206                 @Override
207                 public Fragment getFragment() {
208                         return AboutFragment.newInstance();
209                 }
210
211                 @Override
212                 public int getIcon() {
213                         return R.drawable.ic_about;
214                 }
215
216                 @Override
217                 public boolean requiresLogin() {
218                         return false;
219                 }
220         },
221
222         NEWS {
223                 @Override
224                 public int getTitle() {
225                         return R.string.nav_news;
226                 }
227
228                 @Override
229                 public Fragment getFragment() {
230                         return NewsListFragment.newInstance();
231                 }
232
233                 @Override
234                 public int getIcon() {
235                         return R.drawable.ic_news;
236                 }
237
238                 @Override
239                 public boolean requiresLogin() {
240                         return false;
241                 }
242         },
243
244         SETTINGS {
245                 @Override
246                 public int getTitle(){return R.string.settings;}
247
248                 @Override
249                 public Fragment getFragment() {return SettingsFragment.newInstance();}
250
251                 @Override
252                 public int getIcon(){return R.drawable.ic_settings;}
253
254                 @Override
255                 public boolean requiresLogin() {
256                         return false;
257                 }
258         },
259
260         SUPPORT_US {
261                 @Override
262                 public int getTitle() {
263                         return -1;
264                 }
265
266                 @Override
267                 public Fragment getFragment() {
268                         return null;
269                 }
270
271                 @Override
272                 public int getIcon() {
273                         return -1;
274                 }
275
276                 @Override
277                 public boolean requiresLogin() {
278                         return false;
279                 }
280         },
281
282         SEPARATOR {
283                 @Override
284                 public int getTitle() {
285                         return -1;
286                 }
287
288                 @Override
289                 public Fragment getFragment() {
290                         return null;
291                 }
292
293                 @Override
294                 public int getIcon() {
295                         return -1;
296                 }
297
298                 @Override
299                 public boolean requiresLogin() {
300                         return false;
301                 }
302         };
303
304         public abstract int getTitle();
305
306         public abstract Fragment getFragment();
307
308         public abstract int getIcon();
309
310         public abstract boolean requiresLogin();
311
312         public static List<NavigationElement> valuesForNavigation() {
313                 return Arrays.asList(SUPPORT_US, LIBRARY, SEPARATOR, PREMIUM, SEARCH, AUDIOBOOKS, NOW_READING, FAVOURITES, COMPLETED, SEPARATOR, DOWNLOADED, SEPARATOR, NEWS, SETTINGS, ABOUT);
314         }
315 }