Twidere-App-Android-Twitter.../twidere/src/main/java/org/mariotaku/twidere/model/presentation/LaunchPresentation.java

172 lines
4.2 KiB
Java

/*
* Twidere - Twitter client for Android
*
* Copyright (C) 2012-2017 Mariotaku Lee <mariotaku.lee@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.mariotaku.twidere.model.presentation;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import org.mariotaku.commons.logansquare.StringBasedListTypeConverter;
import org.mariotaku.twidere.model.CronExpression;
import org.mariotaku.twidere.model.util.CronExpressionConverter;
import java.util.List;
/**
* Created by mariotaku on 2017/8/16.
*/
@JsonObject
public class LaunchPresentation {
@JsonField(name = "images")
List<Image> images;
@JsonField(name = "locales", typeConverter = Locale.ListConverter.class)
List<Locale> locales;
@JsonField(name = "url")
String url;
@JsonField(name = "schedule")
Schedule schedule;
@JsonField(name = "is_promotion")
boolean isPromotion;
public List<Image> getImages() {
return images;
}
public List<Locale> getLocales() {
return locales;
}
public String getUrl() {
return url;
}
public Schedule getSchedule() {
return schedule;
}
public boolean isPromotion() {
return isPromotion;
}
@JsonObject
public static class Schedule {
@JsonField(name = "cron", typeConverter = CronExpressionConverter.class)
CronExpression cron;
@JsonField(name = "local")
boolean local;
public CronExpression getCron() {
return cron;
}
public boolean isLocal() {
return local;
}
}
public static class Locale {
@NonNull
final String language;
@Nullable
final String country;
public Locale(@NonNull String language, @Nullable String country) {
this.language = language;
this.country = country;
}
@NonNull
public String getLanguage() {
return language;
}
@Nullable
public String getCountry() {
return country;
}
@Override
public String toString() {
if (country == null) return language;
return language + "-" + country;
}
public static Locale valueOf(@NonNull String str) {
int dashIndex = str.indexOf('-');
if (dashIndex == -1) return new Locale(str, null);
return new Locale(str.substring(0, dashIndex),
str.substring(dashIndex + 1));
}
static class ListConverter extends StringBasedListTypeConverter<Locale> {
@Override
public Locale getItemFromString(String str) {
if (str == null) return null;
return Locale.valueOf(str);
}
@Override
public String convertItemToString(Locale item) {
if (item == null) return null;
return item.toString();
}
}
}
@JsonObject
public static class Image {
@JsonField(name = "url")
String url;
@JsonField(name = "density")
float density;
@JsonField(name = "width")
int width;
@JsonField(name = "height")
int height;
public String getUrl() {
return url;
}
public float getDensity() {
return density;
}
public int getWidth() {
return width;
}
public int getHeight() {
return height;
}
}
}