/** * @constructor */ function MessageStatesModel() { AbstractModel.call(this, 'MessageStatesModel'); this.flags = {}; this.states = {}; this.flags.unseen = ko.observable(false); this.flags.deleted = ko.observable(false); this.flags.flagged = ko.observable(false); this.flags.answered = ko.observable(false); this.flags.forwarded = ko.observable(false); this.states.checked = ko.observable(false); this.states.deleted = ko.observable(false); this.states.selected = ko.observable(false); this.states.focused = ko.observable(false); this.states.showReadReceipt = ko.observable(false); this.states.showExternalImages = ko.observable(false); this.states.hasUnseenSubMessages = ko.observable(false); this.states.hasFlaggedSubMessages = ko.observable(false); this.threads = ko.observableArray([]); }
/** * @constructor * @param {string} sId * @param {string} sFileName * @param {?number=} nSize * @param {boolean=} bInline * @param {boolean=} bLinked * @param {string=} sCID * @param {string=} sContentLocation */ function ComposeAttachmentModel(sId, sFileName, nSize, bInline, bLinked, sCID, sContentLocation) { AbstractModel.call(this, 'ComposeAttachmentModel'); this.id = sId; this.isInline = Utils.isUnd(bInline) ? false : !!bInline; this.isLinked = Utils.isUnd(bLinked) ? false : !!bLinked; this.CID = Utils.isUnd(sCID) ? '' : sCID; this.contentLocation = Utils.isUnd(sContentLocation) ? '' : sContentLocation; this.fromMessage = false; this.fileName = ko.observable(sFileName); this.size = ko.observable(Utils.isUnd(nSize) ? null : nSize); this.tempName = ko.observable(''); this.progress = ko.observable(''); this.error = ko.observable(''); this.waiting = ko.observable(true); this.uploading = ko.observable(false); this.enabled = ko.observable(true); this.friendlySize = ko.computed(function () { var mSize = this.size(); return null === mSize ? '' : Utils.friendlySize(this.size()); }, this); this.regDisposables([this.friendlySize]); }
/** * @constructor */ function FolderModel() { AbstractModel.call(this, 'FolderModel'); this.name = ko.observable(''); this.fullName = ''; this.fullNameRaw = ''; this.fullNameHash = ''; this.delimiter = ''; this.namespace = ''; this.deep = 0; this.interval = 0; this.selectable = false; this.existen = true; this.type = ko.observable(Enums.FolderType.User); this.focused = ko.observable(false); this.selected = ko.observable(false); this.edited = ko.observable(false); this.collapsed = ko.observable(true); this.subScribed = ko.observable(true); this.checkable = ko.observable(false); this.subFolders = ko.observableArray([]); this.deleteAccess = ko.observable(false); this.actionBlink = ko.observable(false).extend({'falseTimeout': 1000}); this.nameForEdit = ko.observable(''); this.privateMessageCountAll = ko.observable(0); this.privateMessageCountUnread = ko.observable(0); this.collapsedPrivate = ko.observable(true); }
/** * @param {string=} sSuperName * @constructor */ function MessageSimpleModel(sSuperName) { AbstractModel.call(this, sSuperName || 'MessageSimpleModel'); this.flagged = ko.observable(false); this.selected = ko.observable(false); }
/** * @constructor * * @param {string} sEmail * @param {boolean=} bCanBeDelete = true */ function AccountModel(sEmail, bCanBeDelete) { AbstractModel.call(this, 'AccountModel'); this.email = sEmail; this.deleteAccess = ko.observable(false); this.canBeDalete = ko.observable(Utils.isUnd(bCanBeDelete) ? true : !!bCanBeDelete); }
/** * @constructor * @param {string} sID * @param {string} sName * @param {string} sBody */ function TemplateModel(sID, sName, sBody) { AbstractModel.call(this, 'TemplateModel'); this.id = sID; this.name = sName; this.body = sBody; this.populated = true; this.deleteAccess = ko.observable(false); }
/** * @constructor * * @param {string} sEmail * @param {boolean=} bCanBeDelete = true * @param {number=} iCount = 0 */ function AccountModel(sEmail, bCanBeDelete, iCount) { AbstractModel.call(this, 'AccountModel'); this.email = sEmail; this.count = ko.observable(iCount || 0); this.deleteAccess = ko.observable(false); this.canBeDeleted = ko.observable(Utils.isUnd(bCanBeDelete) ? true : !!bCanBeDelete); this.canBeEdit = this.canBeDeleted; }
/** * @param {string} iIndex * @param {string} sGuID * @param {string} sID * @param {string} sUserID * @param {string} sEmail * @param {boolean} bIsPrivate * @param {string} sArmor * @constructor */ function OpenPgpKeyModel(iIndex, sGuID, sID, sUserID, sEmail, bIsPrivate, sArmor) { AbstractModel.call(this, 'OpenPgpKeyModel'); this.index = iIndex; this.id = sID; this.guid = sGuID; this.user = sUserID; this.email = sEmail; this.armor = sArmor; this.isPrivate = !!bIsPrivate; this.deleteAccess = ko.observable(false); }
/** * @param {string} iIndex * @param {string} sGuID * @param {string} sID * @param {array} aUserIDs * @param {array} aEmails * @param {boolean} bIsPrivate * @param {string} sArmor * @param {string} sUserID * @constructor */ function OpenPgpKeyModel(iIndex, sGuID, sID, aUserIDs, aEmails, bIsPrivate, sArmor, sUserID) { AbstractModel.call(this, 'OpenPgpKeyModel'); this.index = iIndex; this.id = sID; this.guid = sGuID; this.users = aUserIDs; this.emails = aEmails; this.armor = sArmor; this.isPrivate = !!bIsPrivate; this.selectUser(sUserID); this.deleteAccess = ko.observable(false); }
/** * @param {string} sId * @param {string} sEmail * @constructor */ function IdentityModel(sId, sEmail) { AbstractModel.call(this, 'IdentityModel'); this.id = ko.observable(sId); this.email = ko.observable(sEmail); this.name = ko.observable(''); this.replyTo = ko.observable(''); this.bcc = ko.observable(''); this.signature = ko.observable(''); this.signatureInsertBefore = ko.observable(false); this.deleteAccess = ko.observable(false); this.canBeDeleted = ko.computed(function () { return '' !== this.id(); }, this); }
/** * @param {*} oKoList * @constructor */ function FilterConditionModel(oKoList) { AbstractModel.call(this, 'FilterConditionModel'); this.parentList = oKoList; this.field = ko.observable(Enums.FilterConditionField.From); this.fieldOptions = [ // TODO i18n {'id': Enums.FilterConditionField.From, 'name': 'From'}, {'id': Enums.FilterConditionField.Recipient, 'name': 'Recipient (To or CC)'}, {'id': Enums.FilterConditionField.To, 'name': 'To'}, {'id': Enums.FilterConditionField.Subject, 'name': 'Subject'} ]; this.type = ko.observable(Enums.FilterConditionType.EqualTo); this.typeOptions = [ // TODO i18n {'id': Enums.FilterConditionType.EqualTo, 'name': 'Equal To'}, {'id': Enums.FilterConditionType.NotEqualTo, 'name': 'Not Equal To'}, {'id': Enums.FilterConditionType.Contains, 'name': 'Contains'}, {'id': Enums.FilterConditionType.NotContains, 'name': 'Not Contains'} ]; this.value = ko.observable(''); this.template = ko.computed(function () { var sTemplate = ''; switch (this.type()) { default: sTemplate = 'SettingsFiltersConditionDefault'; break; } return sTemplate; }, this); this.regDisposables([this.template]); }
/** * @constructor * @param {number=} iType = Enums.ContactPropertyType.Unknown * @param {string=} sTypeStr = '' * @param {string=} sValue = '' * @param {boolean=} bFocused = false * @param {string=} sPlaceholder = '' */ function ContactPropertyModel(iType, sTypeStr, sValue, bFocused, sPlaceholder) { AbstractModel.call(this, 'ContactPropertyModel'); this.type = ko.observable(Utils.isUnd(iType) ? Enums.ContactPropertyType.Unknown : iType); this.typeStr = ko.observable(Utils.isUnd(sTypeStr) ? '' : sTypeStr); this.focused = ko.observable(Utils.isUnd(bFocused) ? false : !!bFocused); this.value = ko.observable(Utils.pString(sValue)); this.placeholder = ko.observable(sPlaceholder || ''); this.placeholderValue = ko.computed(function () { var sPlaceholder = this.placeholder(); return sPlaceholder ? Utils.i18n(sPlaceholder) : ''; }, this); this.largeValue = ko.computed(function () { return Enums.ContactPropertyType.Note === this.type(); }, this); this.regDisposables([this.placeholderValue, this.largeValue]); }
/** * @constructor */ function FilterConditionModel() { AbstractModel.call(this, 'FilterConditionModel'); this.field = ko.observable(Enums.FilterConditionField.From); this.type = ko.observable(Enums.FilterConditionType.Contains); this.value = ko.observable(''); this.value.error = ko.observable(false); this.valueSecond = ko.observable(''); this.valueSecond.error = ko.observable(false); this.template = ko.computed(function() { var sTemplate = ''; switch (this.field()) { case Enums.FilterConditionField.Size: sTemplate = 'SettingsFiltersConditionSize'; break; case Enums.FilterConditionField.Header: sTemplate = 'SettingsFiltersConditionMore'; break; default: sTemplate = 'SettingsFiltersConditionDefault'; break; } return sTemplate; }, this); this.field.subscribe(function() { this.value(''); this.valueSecond(''); }, this); this.regDisposables([this.template]); }
/** * @constructor */ function AttachmentModel() { AbstractModel.call(this, 'AttachmentModel'); this.checked = ko.observable(false); this.mimeType = ''; this.fileName = ''; this.fileNameExt = ''; this.fileType = Enums.FileType.Unknown; this.estimatedSize = 0; this.friendlySize = ''; this.isInline = false; this.isLinked = false; this.isThumbnail = false; this.cid = ''; this.cidWithOutTags = ''; this.contentLocation = ''; this.download = ''; this.folder = ''; this.uid = ''; this.mimeIndex = ''; this.framed = false; }
/** * @constructor */ function MessageModel() { AbstractModel.call(this, 'MessageModel'); this.folderFullNameRaw = ''; this.uid = ''; this.hash = ''; this.requestHash = ''; this.subject = ko.observable(''); this.subjectPrefix = ko.observable(''); this.subjectSuffix = ko.observable(''); this.size = ko.observable(0); this.dateTimeStampInUTC = ko.observable(0); this.priority = ko.observable(Enums.MessagePriority.Normal); this.proxy = false; this.fromEmailString = ko.observable(''); this.fromClearEmailString = ko.observable(''); this.toEmailsString = ko.observable(''); this.toClearEmailsString = ko.observable(''); this.senderEmailsString = ko.observable(''); this.senderClearEmailsString = ko.observable(''); this.emails = []; this.from = []; this.to = []; this.cc = []; this.bcc = []; this.replyTo = []; this.deliveredTo = []; this.newForAnimation = ko.observable(false); this.deleted = ko.observable(false); this.deletedMark = ko.observable(false); this.unseen = ko.observable(false); this.flagged = ko.observable(false); this.answered = ko.observable(false); this.forwarded = ko.observable(false); this.isReadReceipt = ko.observable(false); this.focused = ko.observable(false); this.selected = ko.observable(false); this.checked = ko.observable(false); this.hasAttachments = ko.observable(false); this.attachmentsSpecData = ko.observableArray([]); this.attachmentIconClass = ko.computed(function () { return AttachmentModel.staticCombinedIconClass( this.hasAttachments() ? this.attachmentsSpecData() : []); }, this); this.body = null; this.isHtml = ko.observable(false); this.hasImages = ko.observable(false); this.attachments = ko.observableArray([]); this.isPgpSigned = ko.observable(false); this.isPgpEncrypted = ko.observable(false); this.pgpSignedVerifyStatus = ko.observable(Enums.SignedVerifyStatus.None); this.pgpSignedVerifyUser = ko.observable(''); this.priority = ko.observable(Enums.MessagePriority.Normal); this.readReceipt = ko.observable(''); this.aDraftInfo = []; this.sMessageId = ''; this.sInReplyTo = ''; this.sReferences = ''; this.hasUnseenSubMessage = ko.observable(false); this.hasFlaggedSubMessage = ko.observable(false); this.threads = ko.observableArray([]); this.threadsLen = ko.computed(function () { return this.threads().length; }, this); this.isImportant = ko.computed(function () { return Enums.MessagePriority.High === this.priority(); }, this); this.regDisposables([this.attachmentIconClass, this.threadsLen, this.isImportant]); }
/** * @constructor */ function MessageModel() { AbstractModel.call(this, 'MessageModel'); this.folderFullNameRaw = ''; this.uid = ''; this.hash = ''; this.requestHash = ''; this.subject = ko.observable(''); this.subjectPrefix = ko.observable(''); this.subjectSuffix = ko.observable(''); this.size = ko.observable(0); this.dateTimeStampInUTC = ko.observable(0); this.priority = ko.observable(Enums.MessagePriority.Normal); this.proxy = false; this.fromEmailString = ko.observable(''); this.fromClearEmailString = ko.observable(''); this.toEmailsString = ko.observable(''); this.toClearEmailsString = ko.observable(''); this.senderEmailsString = ko.observable(''); this.senderClearEmailsString = ko.observable(''); this.emails = []; this.from = []; this.to = []; this.cc = []; this.bcc = []; this.replyTo = []; this.deliveredTo = []; this.newForAnimation = ko.observable(false); this.deleted = ko.observable(false); this.unseen = ko.observable(false); this.flagged = ko.observable(false); this.answered = ko.observable(false); this.forwarded = ko.observable(false); this.isReadReceipt = ko.observable(false); this.focused = ko.observable(false); this.selected = ko.observable(false); this.checked = ko.observable(false); this.hasAttachments = ko.observable(false); this.attachmentsMainType = ko.observable(''); this.moment = ko.observable(moment(moment.unix(0))); this.attachmentIconClass = ko.computed(function () { var sClass = ''; if (this.hasAttachments()) { sClass = 'icon-attachment'; switch (this.attachmentsMainType()) { case 'image': sClass = 'icon-image'; break; case 'archive': sClass = 'icon-file-zip'; break; case 'doc': sClass = 'icon-file-text'; break; // case 'pdf': // sClass = 'icon-file-pdf'; // break; } } return sClass; }, this); this.fullFormatDateValue = ko.computed(function () { return MessageModel.calculateFullFromatDateValue(this.dateTimeStampInUTC()); }, this); this.momentDate = Utils.createMomentDate(this); this.momentShortDate = Utils.createMomentShortDate(this); this.regDisposables(this.dateTimeStampInUTC.subscribe(function (iValue) { var iNow = moment().unix(); this.moment(moment.unix(iNow < iValue ? iNow : iValue)); }, this)); this.body = null; this.plainRaw = ''; this.isHtml = ko.observable(false); this.hasImages = ko.observable(false); this.attachments = ko.observableArray([]); this.isPgpSigned = ko.observable(false); this.isPgpEncrypted = ko.observable(false); this.pgpSignedVerifyStatus = ko.observable(Enums.SignedVerifyStatus.None); this.pgpSignedVerifyUser = ko.observable(''); this.priority = ko.observable(Enums.MessagePriority.Normal); this.readReceipt = ko.observable(''); this.aDraftInfo = []; this.sMessageId = ''; this.sInReplyTo = ''; this.sReferences = ''; this.parentUid = ko.observable(0); this.threads = ko.observableArray([]); this.threadsLen = ko.observable(0); this.hasUnseenSubMessage = ko.observable(false); this.hasFlaggedSubMessage = ko.observable(false); this.lastInCollapsedThread = ko.observable(false); this.lastInCollapsedThreadLoading = ko.observable(false); this.threadsLenResult = ko.computed(function () { var iCount = this.threadsLen(); return 0 === this.parentUid() && 0 < iCount ? iCount + 1 : ''; }, this); this.regDisposables([this.attachmentIconClass, this.fullFormatDateValue, this.threadsLenResult]); }