/*
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 * 
 *  http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file is distributed
 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */

/*
 * Do not modify this file. This file is generated from the workspaces-web-2020-07-08.normal.json service model.
 */
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;

using Amazon.Runtime;
using Amazon.Runtime.Internal;

namespace Amazon.WorkSpacesWeb.Model
{
    /// <summary>
    /// The summary of user settings.
    /// </summary>
    public partial class UserSettingsSummary
    {
        private EnabledType _copyAllowed;
        private int? _disconnectTimeoutInMinutes;
        private EnabledType _downloadAllowed;
        private int? _idleDisconnectTimeoutInMinutes;
        private EnabledType _pasteAllowed;
        private EnabledType _printAllowed;
        private EnabledType _uploadAllowed;
        private string _userSettingsArn;

        /// <summary>
        /// Gets and sets the property CopyAllowed. 
        /// <para>
        /// Specifies whether the user can copy text from the streaming session to the local device.
        /// </para>
        /// </summary>
        public EnabledType CopyAllowed
        {
            get { return this._copyAllowed; }
            set { this._copyAllowed = value; }
        }

        // Check to see if CopyAllowed property is set
        internal bool IsSetCopyAllowed()
        {
            return this._copyAllowed != null;
        }

        /// <summary>
        /// Gets and sets the property DisconnectTimeoutInMinutes. 
        /// <para>
        /// The amount of time that a streaming session remains active after users disconnect.
        /// </para>
        /// </summary>
        [AWSProperty(Min=1, Max=600)]
        public int DisconnectTimeoutInMinutes
        {
            get { return this._disconnectTimeoutInMinutes.GetValueOrDefault(); }
            set { this._disconnectTimeoutInMinutes = value; }
        }

        // Check to see if DisconnectTimeoutInMinutes property is set
        internal bool IsSetDisconnectTimeoutInMinutes()
        {
            return this._disconnectTimeoutInMinutes.HasValue; 
        }

        /// <summary>
        /// Gets and sets the property DownloadAllowed. 
        /// <para>
        /// Specifies whether the user can download files from the streaming session to the local
        /// device.
        /// </para>
        /// </summary>
        public EnabledType DownloadAllowed
        {
            get { return this._downloadAllowed; }
            set { this._downloadAllowed = value; }
        }

        // Check to see if DownloadAllowed property is set
        internal bool IsSetDownloadAllowed()
        {
            return this._downloadAllowed != null;
        }

        /// <summary>
        /// Gets and sets the property IdleDisconnectTimeoutInMinutes. 
        /// <para>
        /// The amount of time that users can be idle (inactive) before they are disconnected
        /// from their streaming session and the disconnect timeout interval begins.
        /// </para>
        /// </summary>
        [AWSProperty(Min=0, Max=60)]
        public int IdleDisconnectTimeoutInMinutes
        {
            get { return this._idleDisconnectTimeoutInMinutes.GetValueOrDefault(); }
            set { this._idleDisconnectTimeoutInMinutes = value; }
        }

        // Check to see if IdleDisconnectTimeoutInMinutes property is set
        internal bool IsSetIdleDisconnectTimeoutInMinutes()
        {
            return this._idleDisconnectTimeoutInMinutes.HasValue; 
        }

        /// <summary>
        /// Gets and sets the property PasteAllowed. 
        /// <para>
        /// Specifies whether the user can paste text from the local device to the streaming session.
        /// </para>
        /// </summary>
        public EnabledType PasteAllowed
        {
            get { return this._pasteAllowed; }
            set { this._pasteAllowed = value; }
        }

        // Check to see if PasteAllowed property is set
        internal bool IsSetPasteAllowed()
        {
            return this._pasteAllowed != null;
        }

        /// <summary>
        /// Gets and sets the property PrintAllowed. 
        /// <para>
        /// Specifies whether the user can print to the local device.
        /// </para>
        /// </summary>
        public EnabledType PrintAllowed
        {
            get { return this._printAllowed; }
            set { this._printAllowed = value; }
        }

        // Check to see if PrintAllowed property is set
        internal bool IsSetPrintAllowed()
        {
            return this._printAllowed != null;
        }

        /// <summary>
        /// Gets and sets the property UploadAllowed. 
        /// <para>
        /// Specifies whether the user can upload files from the local device to the streaming
        /// session.
        /// </para>
        /// </summary>
        public EnabledType UploadAllowed
        {
            get { return this._uploadAllowed; }
            set { this._uploadAllowed = value; }
        }

        // Check to see if UploadAllowed property is set
        internal bool IsSetUploadAllowed()
        {
            return this._uploadAllowed != null;
        }

        /// <summary>
        /// Gets and sets the property UserSettingsArn. 
        /// <para>
        /// The ARN of the user settings.
        /// </para>
        /// </summary>
        [AWSProperty(Min=20, Max=2048)]
        public string UserSettingsArn
        {
            get { return this._userSettingsArn; }
            set { this._userSettingsArn = value; }
        }

        // Check to see if UserSettingsArn property is set
        internal bool IsSetUserSettingsArn()
        {
            return this._userSettingsArn != null;
        }

    }
}