package org.wikipedia.feed.model;
import android.content.Context;
import android.support.annotation.NonNull;
import org.wikipedia.feed.announcement.AnnouncementCardView;
import org.wikipedia.feed.becauseyouread.BecauseYouReadCardView;
import org.wikipedia.feed.continuereading.ContinueReadingCardView;
import org.wikipedia.feed.featured.FeaturedArticleCardView;
import org.wikipedia.feed.image.FeaturedImageCardView;
import org.wikipedia.feed.mainpage.MainPageCardView;
import org.wikipedia.feed.mostread.MostReadCardView;
import org.wikipedia.feed.news.NewsListCardView;
import org.wikipedia.feed.offline.OfflineCardView;
import org.wikipedia.feed.progress.ProgressCardView;
import org.wikipedia.feed.random.RandomCardView;
import org.wikipedia.feed.searchbar.SearchCardView;
import org.wikipedia.feed.view.FeedCardView;
import org.wikipedia.model.EnumCode;
import org.wikipedia.model.EnumCodeMap;
public enum CardType implements EnumCode {
SEARCH_BAR(0) {
@NonNull @Override public FeedCardView<?> newView(@NonNull Context ctx) {
return new SearchCardView(ctx);
}
},
CONTINUE_READING(1) {
@NonNull @Override public FeedCardView<?> newView(@NonNull Context ctx) {
return new ContinueReadingCardView(ctx);
}
},
BECAUSE_YOU_READ_LIST(2) {
@NonNull @Override public FeedCardView<?> newView(@NonNull Context ctx) {
return new BecauseYouReadCardView(ctx);
}
},
MOST_READ_LIST(3) {
@NonNull @Override public FeedCardView<?> newView(@NonNull Context ctx) {
return new MostReadCardView(ctx);
}
},
FEATURED_ARTICLE(4) {
@NonNull @Override public FeedCardView<?> newView(@NonNull Context ctx) {
return new FeaturedArticleCardView(ctx);
}
},
RANDOM(5) {
@NonNull @Override public FeedCardView<?> newView(@NonNull Context ctx) {
return new RandomCardView(ctx);
}
},
MAIN_PAGE(6) {
@NonNull @Override public FeedCardView<?> newView(@NonNull Context ctx) {
return new MainPageCardView(ctx);
}
},
NEWS_LIST(7) {
@NonNull @Override public FeedCardView<?> newView(@NonNull Context ctx) {
return new NewsListCardView(ctx);
}
},
FEATURED_IMAGE(8) {
@NonNull @Override public FeedCardView<?> newView(@NonNull Context ctx) {
return new FeaturedImageCardView(ctx);
}
},
BECAUSE_YOU_READ_ITEM(9),
MOST_READ_ITEM(10),
NEWS_ITEM(11),
NEWS_ITEM_LINK(12),
ANNOUNCEMENT(13) {
@NonNull @Override public FeedCardView<?> newView(@NonNull Context ctx) {
return new AnnouncementCardView(ctx);
}
},
SURVEY(14) {
@NonNull @Override public FeedCardView<?> newView(@NonNull Context ctx) {
return new AnnouncementCardView(ctx);
}
},
FUNDRAISING(15) {
@NonNull @Override public FeedCardView<?> newView(@NonNull Context ctx) {
return new AnnouncementCardView(ctx);
}
},
OFFLINE(98) {
@NonNull @Override public FeedCardView<?> newView(@NonNull Context ctx) {
return new OfflineCardView(ctx);
}
},
PROGRESS(99) {
@NonNull @Override public FeedCardView<?> newView(@NonNull Context ctx) {
return new ProgressCardView(ctx);
}
};
private static final EnumCodeMap<CardType> MAP = new EnumCodeMap<>(CardType.class);
private final int code;
@NonNull public static CardType of(int code) {
return MAP.get(code);
}
@NonNull public FeedCardView<?> newView(@NonNull Context ctx) {
throw new UnsupportedOperationException();
}
@Override public int code() {
return code;
}
CardType(int code) {
this.code = code;
}
}