package com.instructure.canvasapi.model;
import android.content.Context;
import android.os.Parcel;
import android.os.Parcelable;
import com.google.gson.annotations.SerializedName;
import com.instructure.canvasapi.utilities.APIHelpers;
import java.util.Date;
/**
* Copyright (c) 2015 Instructure. All rights reserved.
*/
public class Tab extends CanvasModel<Tab> implements Parcelable {
public static final String TYPE_INTERNAL = "internal";
public static final String TYPE_EXTERNAL = "external";
// id constants (these should never change in the API)
public static final String SYLLABUS_ID = "syllabus";
public static final String AGENDA_ID = "agenda";
public static final String ASSIGNMENTS_ID = "assignments";
public static final String DISCUSSIONS_ID = "discussions";
public static final String PAGES_ID = "pages";
public static final String PEOPLE_ID = "people";
public static final String QUIZZES_ID = "quizzes";
public static final String FILES_ID = "files";
public static final String ANNOUNCEMENTS_ID = "announcements";
public static final String MODULES_ID = "modules";
public static final String GRADES_ID = "grades";
public static final String COLLABORATIONS_ID = "collaborations";
public static final String CONFERENCES_ID = "conferences";
public static final String OUTCOMES_ID = "outcomes";
public static final String NOTIFICATIONS_ID = "notifications";
public static final String HOME_ID = "home";
public static final String CHAT_ID = "chat";
public static final String SETTINGS_ID = "settings";
// API Variables
private String id;
private String label;
private String type;
private String html_url; // internal url
private String full_url; // external url
private String visibility = "none"; // possible values are: public, members, admins, and none
private boolean hidden; // only included when true
private int position = 0;
@SerializedName("url")
private String LTI_url;
///////////////////////////////////////////////////////////////////////////
// Getters & Setters
///////////////////////////////////////////////////////////////////////////
@Override
public long getId() {
return 0;
}
@Override
public String getComparisonString() {
return null;
}
@Override
public Date getComparisonDate() {
return null;
}
public String getTabId() {
return id;
}
public String getLabel() {
return label;
}
public String getType() {
return type;
}
public boolean isExternal() {
return type.equals(TYPE_EXTERNAL);
}
public String getUrl(Context context) {
String temp_html_url = html_url;
//Domain strips off trailing slashes.
if(!temp_html_url.startsWith("/")){
temp_html_url = "/" + temp_html_url;
}
return APIHelpers.getDomain(context) + temp_html_url;
}
public String getExternalUrl() {
return full_url;
}
public String getLTIUrl() {
return LTI_url;
}
public String getVisibility() {
return visibility;
}
public boolean isPublic() {
return "public".equals(visibility);
}
public boolean isMembers() {
return "members".equals(visibility);
}
public boolean isAdmin() {
return "admin".equals(visibility);
}
public boolean isNone() {
return "none".equals(visibility);
}
public int getPosition() {
return position;
}
public boolean isHidden() {
return hidden;
}
///////////////////////////////////////////////////////////////////////////
// Constructors
///////////////////////////////////////////////////////////////////////////
private Tab () {}
public static Tab newInstance(String id, String label) {
Tab result = new Tab();
result.id = id;
result.label = label;
result.type = TYPE_INTERNAL;
return result;
}
///////////////////////////////////////////////////////////////////////////
// Overrides
///////////////////////////////////////////////////////////////////////////
@Override
public String toString(){
if(this.getTabId() == null || this.getLabel() == null){
return "";
}
return this.getTabId()+":"+this.getLabel();
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Tab tab = (Tab) o;
if (!id.equals(tab.id)) return false;
if (!label.equals(tab.label)) return false;
return true;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.id);
dest.writeString(this.label);
dest.writeString(this.type);
dest.writeString(this.html_url);
dest.writeString(this.full_url);
dest.writeString(this.visibility);
dest.writeByte(hidden ? (byte) 1 : (byte) 0);
dest.writeInt(this.position);
dest.writeString(this.LTI_url);
}
private Tab(Parcel in) {
this.id = in.readString();
this.label = in.readString();
this.type = in.readString();
this.html_url = in.readString();
this.full_url = in.readString();
this.visibility = in.readString();
this.hidden = in.readByte() != 0;
this.position = in.readInt();
this.LTI_url = in.readString();
}
public static final Creator<Tab> CREATOR = new Creator<Tab>() {
public Tab createFromParcel(Parcel source) {
return new Tab(source);
}
public Tab[] newArray(int size) {
return new Tab[size];
}
};
}