Added Android code
[wl-app.git] / Android / app / src / main / java / com / moiseum / wolnelektury / view / main / NavigationElement.java
diff --git a/Android/app/src/main/java/com/moiseum/wolnelektury/view/main/NavigationElement.java b/Android/app/src/main/java/com/moiseum/wolnelektury/view/main/NavigationElement.java
new file mode 100644 (file)
index 0000000..219a154
--- /dev/null
@@ -0,0 +1,315 @@
+package com.moiseum.wolnelektury.view.main;
+
+import android.support.v4.app.Fragment;
+
+import com.moiseum.wolnelektury.R;
+import com.moiseum.wolnelektury.view.AboutFragment;
+import com.moiseum.wolnelektury.view.book.list.BookListType;
+import com.moiseum.wolnelektury.view.book.list.BooksListFragment;
+import com.moiseum.wolnelektury.view.library.LibraryFragment;
+import com.moiseum.wolnelektury.view.news.NewsListFragment;
+import com.moiseum.wolnelektury.view.search.BookSearchFragment;
+import com.moiseum.wolnelektury.view.settings.SettingsFragment;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @author golonkos
+ */
+
+public enum NavigationElement {
+
+       LIBRARY {
+               @Override
+               public int getTitle() {
+                       return R.string.nav_wolne_lektury;
+               }
+
+               @Override
+               public Fragment getFragment() {
+                       return LibraryFragment.newInstance();
+               }
+
+               @Override
+               public int getIcon() {
+                       return R.drawable.ic_menu_library;
+               }
+
+               @Override
+               public boolean requiresLogin() {
+                       return false;
+               }
+       },
+
+       PREMIUM {
+               @Override
+               public int getTitle() {
+                       return R.string.nav_premium;
+               }
+
+               @Override
+               public Fragment getFragment() {
+                       // This in intentional. We have to handle this separately.
+                       return null;
+               }
+
+               @Override
+               public int getIcon() {
+                       return R.drawable.ic_menu_star;
+               }
+
+               @Override
+               public boolean requiresLogin() {
+                       return false;
+               }
+       },
+
+       NOW_READING {
+               @Override
+               public int getTitle() {
+                       return R.string.nav_reading;
+               }
+
+               @Override
+               public Fragment getFragment() {
+                       return BooksListFragment.newInstance(BookListType.READING);
+               }
+
+               @Override
+               public int getIcon() {
+                       return R.drawable.ic_book;
+               }
+
+               @Override
+               public boolean requiresLogin() {
+                       return true;
+               }
+       },
+
+       FAVOURITES {
+               @Override
+               public int getTitle() {
+                       return R.string.nav_favourites;
+               }
+
+               @Override
+               public Fragment getFragment() {
+                       return BooksListFragment.newInstance(BookListType.FAVOURITES);
+               }
+
+               @Override
+               public int getIcon() {
+                       return R.drawable.ic_menu_fav;
+               }
+
+               @Override
+               public boolean requiresLogin() {
+                       return true;
+               }
+       },
+
+       COMPLETED {
+               @Override
+               public int getTitle() {
+                       return R.string.nav_completed;
+               }
+
+               @Override
+               public Fragment getFragment() {
+                       return BooksListFragment.newInstance(BookListType.COMPLETED);
+               }
+
+               @Override
+               public int getIcon() {
+                       return R.drawable.ic_accept;
+               }
+
+               @Override
+               public boolean requiresLogin() {
+                       return true;
+               }
+       },
+
+       AUDIOBOOKS {
+               @Override
+               public int getTitle() {
+                       return R.string.nav_audiobooks;
+               }
+
+               @Override
+               public Fragment getFragment() {
+                       return BooksListFragment.newInstance(BookListType.AUDIOBOOKS);
+               }
+
+               @Override
+               public int getIcon() {
+                       return R.drawable.ic_menu_audiobook;
+               }
+
+               @Override
+               public boolean requiresLogin() {
+                       return false;
+               }
+       },
+
+       DOWNLOADED {
+               @Override
+               public int getTitle() {
+                       return R.string.nav_my_collection;
+               }
+
+               @Override
+               public Fragment getFragment() {
+                       return BooksListFragment.newInstance(BookListType.DOWNLOADED);
+               }
+
+               @Override
+               public int getIcon() {
+                       return R.drawable.ic_menu_downloaded;
+               }
+
+               @Override
+               public boolean requiresLogin() {
+                       return false;
+               }
+       },
+
+       SEARCH {
+               @Override
+               public int getTitle() {
+                       return R.string.nav_catalog;
+               }
+
+               @Override
+               public Fragment getFragment() {
+                       return BookSearchFragment.newInstance();
+               }
+
+               @Override
+               public int getIcon() {
+                       return R.drawable.ic_menu_search;
+               }
+
+               @Override
+               public boolean requiresLogin() {
+                       return false;
+               }
+       },
+
+       ABOUT {
+               @Override
+               public int getTitle() {
+                       return R.string.nav_about;
+               }
+
+               @Override
+               public Fragment getFragment() {
+                       return AboutFragment.newInstance();
+               }
+
+               @Override
+               public int getIcon() {
+                       return R.drawable.ic_about;
+               }
+
+               @Override
+               public boolean requiresLogin() {
+                       return false;
+               }
+       },
+
+       NEWS {
+               @Override
+               public int getTitle() {
+                       return R.string.nav_news;
+               }
+
+               @Override
+               public Fragment getFragment() {
+                       return NewsListFragment.newInstance();
+               }
+
+               @Override
+               public int getIcon() {
+                       return R.drawable.ic_news;
+               }
+
+               @Override
+               public boolean requiresLogin() {
+                       return false;
+               }
+       },
+
+       SETTINGS {
+               @Override
+               public int getTitle(){return R.string.settings;}
+
+               @Override
+               public Fragment getFragment() {return SettingsFragment.newInstance();}
+
+               @Override
+               public int getIcon(){return R.drawable.ic_settings;}
+
+               @Override
+               public boolean requiresLogin() {
+                       return false;
+               }
+       },
+
+       SUPPORT_US {
+               @Override
+               public int getTitle() {
+                       return -1;
+               }
+
+               @Override
+               public Fragment getFragment() {
+                       return null;
+               }
+
+               @Override
+               public int getIcon() {
+                       return -1;
+               }
+
+               @Override
+               public boolean requiresLogin() {
+                       return false;
+               }
+       },
+
+       SEPARATOR {
+               @Override
+               public int getTitle() {
+                       return -1;
+               }
+
+               @Override
+               public Fragment getFragment() {
+                       return null;
+               }
+
+               @Override
+               public int getIcon() {
+                       return -1;
+               }
+
+               @Override
+               public boolean requiresLogin() {
+                       return false;
+               }
+       };
+
+       public abstract int getTitle();
+
+       public abstract Fragment getFragment();
+
+       public abstract int getIcon();
+
+       public abstract boolean requiresLogin();
+
+       public static List<NavigationElement> valuesForNavigation() {
+               return Arrays.asList(SUPPORT_US, LIBRARY, SEPARATOR, PREMIUM, SEARCH, AUDIOBOOKS, NOW_READING, FAVOURITES, COMPLETED, SEPARATOR, DOWNLOADED, SEPARATOR, NEWS, SETTINGS, ABOUT);
+       }
+}