Added Android code
[wl-app.git] / Android / app / src / main / java / com / moiseum / wolnelektury / view / book / list / BookListType.java
1 package com.moiseum.wolnelektury.view.book.list;
2
3 import android.support.annotation.StringRes;
4
5 import com.moiseum.wolnelektury.R;
6 import com.moiseum.wolnelektury.base.DataProvider;
7 import com.moiseum.wolnelektury.connection.models.BookModel;
8 import com.moiseum.wolnelektury.connection.models.ReadingStateModel;
9 import com.moiseum.wolnelektury.connection.services.BooksService;
10
11 import java.util.List;
12
13 /**
14  * @author golonkos
15  */
16
17 public enum BookListType {
18
19         DOWNLOADED {
20                 @Override
21                 public DataProvider<List<BookModel>, BooksService> getDataProvider() {
22                         return new DownloadedBooksDataProvider();
23                 }
24
25                 @Override
26                 public boolean isDeletable() {
27                         return true;
28                 }
29
30                 @Override
31                 public boolean isSearchable() {
32                         return false;
33                 }
34
35                 @Override
36                 public boolean isPageable() {
37                         return false;
38                 }
39
40                 @Override
41                 public String getNameForTracker() {
42                         return "DownloadedList";
43                 }
44
45                 @Override
46                 public int getActivityTitle() {
47                         return R.string.nav_downloaded;
48                 }
49
50                 @Override
51                 public int getEmptyListText() {
52                         return R.string.downloaded_empty_list;
53                 }
54         },
55
56         AUDIOBOOKS {
57                 @Override
58                 public DataProvider<List<BookModel>, BooksService> getDataProvider() {
59                         return new AudiobooksDataProvider();
60                 }
61
62                 @Override
63                 public boolean isDeletable() {
64                         return false;
65                 }
66
67                 @Override
68                 public boolean isSearchable() {
69                         return true;
70                 }
71
72                 @Override
73                 public boolean isPageable() {
74                         return true;
75                 }
76
77                 @Override
78                 public String getNameForTracker() {
79                         return "AudiobooksList";
80                 }
81
82                 @Override
83                 public int getActivityTitle() {
84                         return R.string.nav_audiobooks;
85                 }
86
87                 @Override
88                 public int getEmptyListText() {
89                         return R.string.audiobooks_empty_list;
90                 }
91         },
92
93         NEWEST {
94                 @Override
95                 public DataProvider<List<BookModel>, BooksService> getDataProvider() {
96                         return new NewestBooksDataProvider();
97                 }
98
99                 @Override
100                 public boolean isDeletable() {
101                         return false;
102                 }
103
104                 @Override
105                 public boolean isSearchable() {
106                         return false;
107                 }
108
109                 @Override
110                 public boolean isPageable() {
111                         return false;
112                 }
113
114                 @Override
115                 public String getNameForTracker() {
116                         return "NewestList";
117                 }
118
119                 @Override
120                 public int getActivityTitle() {
121                         return R.string.book_list_newest_title;
122                 }
123
124                 @Override
125                 public int getEmptyListText() {
126                         return R.string.newest_empty_list;
127                 }
128         },
129
130         RECOMMENDED {
131                 @Override
132                 public DataProvider<List<BookModel>, BooksService> getDataProvider() {
133                         return new RecommendedBooksDataProvider();
134                 }
135
136                 @Override
137                 public boolean isDeletable() {
138                         return false;
139                 }
140
141                 @Override
142                 public boolean isSearchable() {
143                         return false;
144                 }
145
146                 @Override
147                 public boolean isPageable() {
148                         return false;
149                 }
150
151                 @Override
152                 public String getNameForTracker() {
153                         return "RecommendedList";
154                 }
155
156                 @Override
157                 public int getActivityTitle() {
158                         return R.string.book_list_recommended_title;
159                 }
160
161                 @Override
162                 public int getEmptyListText() {
163                         return R.string.recommended_empty_list;
164                 }
165         },
166
167         READING {
168                 @Override
169                 public DataProvider<List<BookModel>, BooksService> getDataProvider() {
170                         return new ReadingStateDataProvider(ReadingStateModel.ReadingState.STATE_READING);
171                 }
172
173                 @Override
174                 public boolean isDeletable() {
175                         return false;
176                 }
177
178                 @Override
179                 public boolean isSearchable() {
180                         return false;
181                 }
182
183                 @Override
184                 public boolean isPageable() {
185                         return true;
186                 }
187
188                 @Override
189                 public String getNameForTracker() {
190                         return "NowReadingList";
191                 }
192
193                 @Override
194                 public int getActivityTitle() {
195                         return R.string.nav_reading;
196                 }
197
198                 @Override
199                 public int getEmptyListText() {
200                         return R.string.reading_empty_list;
201                 }
202         },
203
204         FAVOURITES {
205                 @Override
206                 public DataProvider<List<BookModel>, BooksService> getDataProvider() {
207                         return new FavouritesDataProvider();
208                 }
209                 @Override
210                 public boolean isDeletable() {
211                         return false;
212                 }
213
214                 @Override
215                 public boolean isSearchable() {
216                         return false;
217                 }
218
219                 @Override
220                 public boolean isPageable() {
221                         return true;
222                 }
223
224                 @Override
225                 public String getNameForTracker() {
226                         return "FavouritesList";
227                 }
228
229                 @Override
230                 public int getActivityTitle() {
231                         return R.string.nav_favourites;
232                 }
233
234                 @Override
235                 public int getEmptyListText() {
236                         return R.string.faviourites_empty_list;
237                 }
238         },
239
240         COMPLETED {
241                 @Override
242                 public DataProvider<List<BookModel>, BooksService> getDataProvider() {
243                         return new ReadingStateDataProvider(ReadingStateModel.ReadingState.STATE_COMPLETED);
244                 }
245
246                 @Override
247                 public boolean isDeletable() {
248                         return false;
249                 }
250
251                 @Override
252                 public boolean isSearchable() {
253                         return false;
254                 }
255
256                 @Override
257                 public boolean isPageable() {
258                         return true;
259                 }
260
261                 @Override
262                 public String getNameForTracker() {
263                         return "CompletedList";
264                 }
265
266                 @Override
267                 public int getActivityTitle() {
268                         return R.string.nav_completed;
269                 }
270
271                 @Override
272                 public int getEmptyListText() {
273                         return R.string.completed_empty_list;
274                 }
275         };
276
277         public abstract DataProvider<List<BookModel>, BooksService> getDataProvider();
278
279         public abstract boolean isDeletable();
280
281         public abstract boolean isSearchable();
282
283         public abstract boolean isPageable();
284
285         public abstract String getNameForTracker();
286
287         @StringRes
288         public abstract int getActivityTitle();
289
290         @StringRes
291         public abstract int getEmptyListText();
292 }