You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

254 lines
4.6 KiB

/*
* Copyright © 2015-2017 Antergos
*
* LightDMObjects.js
*
* This file is part of Web Greeter
*
* Web Greeter 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 any later version.
*
* Web Greeter 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.
*
* The following additional terms are in effect as per Section 7 of the license:
*
* The preservation of all legal notices and author attributions in
* the material or in the Appropriate Legal Notices displayed
* by works containing it is required.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* The global window object.
*
* @name window
* @type {object}
* @global
*/
/**
* The greeter's Theme JavaScript API.
*
* @namespace LightDM
*/
/**
* Interface for object that holds info about a session. Session objects are not
* created by the theme's code, but rather by the [`LightDM.Greeter`](#dl-LightDM-Greeter) class.
*
* @memberOf LightDM
*/
class Session {
constructor( { comment, key, name } ) {
this._comment = comment;
this._key = key;
this._name = name;
}
/**
* The name for the session.
* @type {string}
* @readonly
*/
get name() {
return this._name;
}
/**
* The key for the session.
* @type {string}
* @readonly
*/
get key() {
return this._key;
}
/**
* The comment for the session.
* @type {string}
* @readonly
*/
get comment() {
return this._comment;
}
}
/**
* Interface for object that holds info about a language on the system. Language objects are not
* created by the theme's code, but rather by the [`LightDM.Greeter`](#dl-LightDM-Greeter) class.
*
* @memberOf LightDM
*/
class Language {
constructor( { code, name, territory } ) {
this._code = code;
this._name = name;
this._territory = territory;
}
/**
* The code for the language.
* @type {string}
* @readonly
*/
get code() {
return this._code;
}
/**
* The name for the layout.
* @type {string}
* @readonly
*/
get name() {
return this._name;
}
/**
* The territory for the language.
* @type {string}
* @readonly
*/
get territory() {
return this._territory;
}
}
/**
* Interface for object that holds info about a keyboard layout on the system. Language
* objects are not created by the theme's code, but rather by the [`LightDM.Greeter`](#dl-LightDM-Greeter) class.
*
* @memberOf LightDM
*/
class Layout {
constructor( { description, name, short_description } ) {
this._description = description;
this._name = name;
this._short_description = short_description;
}
/**
* The description for the layout.
* @type {string}
* @readonly
*/
get description() {
return this._description;
}
/**
* The name for the layout.
* @type {string}
* @readonly
*/
get name() {
return this._name;
}
/**
* The territory for the layout.
* @type {string}
* @readonly
*/
get short_description() {
return this._short_description;
}
}
/**
* Interface for object that holds info about a user account on the system. User
* objects are not created by the theme's code, but rather by the [`LightDM.Greeter`](#dl-LightDM-Greeter) class.
*
* @memberOf LightDM
*/
class User {
constructor( user_info ) {
Object.keys(user_info).forEach( key => {
this[`_${key}`] = user_info[key];
} );
}
/**
* The display name for the user.
* @type {string}
* @readonly
*/
get display_name() {
return this._display_name;
}
/**
* The language for the user.
* @type {string}
* @readonly
*/
get language() {
return this._language;
}
/**
* The keyboard layout for the user.
* @type {string}
* @readonly
*/
get layout() {
return this._layout;
}
/**
* The image for the user.
* @type {string}
* @readonly
*/
get image() {
return this._image;
}
/**
* The home_directory for the user.
* @type {string}
* @readonly
*/
get home_directory() {
return this._home_directory;
}
/**
* The username for the user.
* @type {string}
* @readonly
*/
get username() {
return this._username;
}
/**
* Whether or not the user is currently logged in.
* @type {boolean}
* @readonly
*/
get logged_in() {
return this._logged_in;
}
/**
* The last session that the user logged into.
* @type {string|null}
* @readonly
*/
get session() {
return this._session;
}
}