package sgc.portal.mobile.model;

import java.util.List;

import com.fasterxml.jackson.annotation.JsonIgnore;

import lombok.Getter;
import lombok.Setter;

/**
 * Manifest Json
 * 
 * @author 5364
 * @since 2022-09-19
 *
 */
@Getter
@Setter
public class ManifestVo {

    /**
     * The name member is a string that represents the name of the web application
     * as it is usually displayed to the user (e.g., amongst a list of other
     * applications, or as a label for an icon)
     */
    private String name;

    /**
     * The short_name member is a string that represents the name of the web
     * application displayed to the user if there is not enough space to display
     * name
     */
    private String short_name;

    /**
     * The theme_color member is a string that defines the default theme color for
     * the application.
     */
    private String theme_color;

    /**
     * One to four dot-separated integers identifying the version of this extension.
     * A couple of rules apply to the integers
     */
    private String version;

    /**
     * The icons member specifies an array of objects representing image files that
     * can serve as application icons for different contexts
     */
    private List<ManifestIconVo> icons;

    /**
     * The start_url member is a string that represents the start URL of the web
     * application.
     */
    private String start_url;

    /**
     * The display member is a string that determines the developers' preferred
     * display mode for the website.
     * 
     * fullscreen - All of the available display area is used and no user agent
     * chrome is shown.
     * 
     * standalone - The application will look and feel like a standalone
     * application. This can include the application having a different window, its
     * own icon in the application launcher, etc. In this mode, the user agent will
     * exclude UI elements for controlling navigation, but can include other UI
     * elements such as a status bar.
     * 
     * minimal-ui - The application will look and feel like a standalone
     * application, but will have a minimal set of UI elements for controlling
     * navigation. The elements will vary by browser.
     * 
     * browser - The application opens in a conventional browser tab or new window,
     * depending on the browser and platform. This is the default.
     * do not use. This will error in samsung internet mobile
     */
    private String display;

    /**
     * The background_color member defines a placeholder background color for the
     * application page to display before its stylesheet is loaded
     */
    private String background_color;

    /**
     * The shortcuts member defines an array of shortcuts or links to key tasks or
     * pages within a web app
     */
    private List<ManifestShortcutVo> shortcuts;

    /**
     * The orientation member defines the default orientation for all the website's
     * top-level browsing contexts. any natural landscape landscape-primary
     * landscape-secondary portrait portrait-primary portrait-secondary
     */
    private String orientation;

    /**
     * The protocol_handlers member specifies an array of objects that are protocols
     * which this web app can register and handle. Protocol handlers register the
     * application in an OS's application preferences; the registration associates a
     * specific application with the given protocol scheme. For example, when using
     * the protocol handler mailto:// on a web page, registered email applications
     * open.
     */
    private List<ManifestProtocolHandlerVo> protocol_handlers;

}
