mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-28 03:17:31 +09:00
215 lines
8.8 KiB
Text
215 lines
8.8 KiB
Text
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#include "nsISupports.idl"
|
|
#include "nsIMsgFolder.idl"
|
|
#include "nsIStringEnumerator.idl"
|
|
|
|
interface nsIMsgWindow;
|
|
interface nsIImapIncomingServer;
|
|
interface nsIMsgParseMailMsgState;
|
|
interface nsIAutoSyncState;
|
|
|
|
/**
|
|
* This is a simple interface which allows the IMAP folder to update some
|
|
* values that the folder props js code will use to update the sharing and
|
|
* quota tabs in the folder properties.
|
|
*/
|
|
[scriptable, uuid(09D99F2C-3E23-4f8c-A536-5C277BAA9585)]
|
|
interface nsIMsgImapFolderProps : nsISupports {
|
|
|
|
void setFolderType(in AString folderType);
|
|
void setFolderTypeDescription(in AString folderTypeDescription);
|
|
void setFolderPermissions(in AString permissions);
|
|
void serverDoesntSupportACL();
|
|
|
|
/**
|
|
* Toggles the display of quota information in the Quota tab of the folder properties.
|
|
* If on, the quota root, usage, and percentage used are displayed.
|
|
* If off, a status message is displayed. The status message can be set with setQuotaStatus().
|
|
* @param showData If true, display the quota root, usage information and usage percentage bar.
|
|
* If false, display the status message.
|
|
*/
|
|
void showQuotaData(in boolean showData);
|
|
|
|
/**
|
|
* Sets the status string displayed in the Quota tab of the folder properties if quota
|
|
* information is not visible.
|
|
*/
|
|
void setQuotaStatus(in AString folderQuotaStatus);
|
|
|
|
/**
|
|
* Updates the quota data displayed in the Quota tab.
|
|
*/
|
|
void setQuotaData(in ACString quotaroot, in unsigned long usedKB, in unsigned long maxKB);
|
|
};
|
|
|
|
[scriptable, uuid(fea0f455-7adf-4683-bf2f-c95c3fff03df)]
|
|
interface nsIMsgImapMailFolder : nsISupports {
|
|
void removeSubFolder(in nsIMsgFolder folder);
|
|
void createClientSubfolderInfo(in ACString folderName, in char hierarchyDelimiter,
|
|
in long flags, in boolean suppressNotification);
|
|
void list();
|
|
void renameLocal(in ACString newname, in nsIMsgFolder parent);
|
|
void prepareToRename();
|
|
void performExpand(in nsIMsgWindow aMsgWindow);
|
|
void recursiveCloseActiveConnections(in nsIImapIncomingServer aImapServer);
|
|
void renameClient(in nsIMsgWindow msgWindow, in nsIMsgFolder msgFolder, in ACString oldName, in ACString newName);
|
|
|
|
// these are used for offline synchronization
|
|
void storeImapFlags(in long aFlags, in boolean aAddFlags, [array, size_is (aNumKeys)]
|
|
in nsMsgKey aKeysToFlag, in unsigned long aNumKeys, in nsIUrlListener aUrlListener);
|
|
nsIURI setImapFlags(in string uids, in long flags);
|
|
void replayOfflineMoveCopy([array, size_is (numKeys)] in nsMsgKey keys, in unsigned long numKeys, in boolean isMove, in nsIMsgFolder aDstFolder,
|
|
in nsIUrlListener aUrlListener, in nsIMsgWindow aWindow);
|
|
nsIURI playbackOfflineFolderCreate(in AString folderName, in nsIMsgWindow aWindow);
|
|
/**
|
|
* This is called by the offline sync code to tell the imap folder to
|
|
* remember info about the header with this key (messageId and key) because
|
|
* it's an offline move result header, and we need to generate an
|
|
* nsIMsgFolderListener.msgKeyChanged notification when we download the
|
|
* real header from the imap server.
|
|
*
|
|
* @param aMsgKey msg key of move result pseudo hdr.
|
|
*/
|
|
void addMoveResultPseudoKey(in nsMsgKey aMsgKey);
|
|
/**
|
|
* Select this folder on the imap server without doing a sync of flags or
|
|
* headers. This is used for offline playback, where we don't want to
|
|
* download hdrs we don't have, because they may have been offline deleted.
|
|
*
|
|
* @param aUrlListener url listener, can be null
|
|
* @param aWindow msg window url is running in, can be null
|
|
*/
|
|
void liteSelect(in nsIUrlListener aUrlListener, in nsIMsgWindow aWindow);
|
|
|
|
void fillInFolderProps(in nsIMsgImapFolderProps aFolderProps);
|
|
void resetNamespaceReferences();
|
|
void folderPrivileges(in nsIMsgWindow aWindow);
|
|
nsIMsgImapMailFolder findOnlineSubFolder(in ACString onlineName);
|
|
void addFolderRights(in ACString userName, in ACString rights);
|
|
void refreshFolderRights();
|
|
|
|
/**
|
|
* Mark/unmark the header as pending removal from the offline store. If mark,
|
|
* this also increases the expungedBytes count on the folder so we know
|
|
* there's more local disk space to be reclaimed.
|
|
*
|
|
* @param aHdr msg hdr to mark pending removal from offline store.
|
|
* @param aMark whether to set or clear the pending removal status.
|
|
*
|
|
*/
|
|
void markPendingRemoval(in nsIMsgDBHdr aHdr, in boolean aMark);
|
|
|
|
/**
|
|
* Issue an expunge of this folder to the imap server.
|
|
*
|
|
* @param aUrlListener url listener, can be null
|
|
* @param aWindow msg window url is running in, can be null
|
|
*
|
|
* @returns status of attempt to run url.
|
|
*/
|
|
void expunge(in nsIUrlListener aListener, in nsIMsgWindow aMsgWindow);
|
|
|
|
void updateStatus(in nsIUrlListener aListener, in nsIMsgWindow aMsgWindow);
|
|
void updateFolderWithListener(in nsIMsgWindow aMsgWindow, in nsIUrlListener aListener);
|
|
// this is used to issue an arbitrary imap command on the passed in msgs.
|
|
// It assumes the command needs to be run in the selected state.
|
|
nsIURI issueCommandOnMsgs(in ACString command, in string uids, in nsIMsgWindow aWindow);
|
|
nsIURI fetchCustomMsgAttribute(in ACString msgAttribute, in string uids, in nsIMsgWindow aWindow);
|
|
nsIURI storeCustomKeywords(in nsIMsgWindow aMsgWindow,
|
|
in ACString aFlagsToAdd,
|
|
in ACString aFlagsToSubtract,
|
|
[array, size_is (aNumKeys)] in nsMsgKey aKeysToStore,
|
|
in unsigned long aNumKeys);
|
|
|
|
void notifyIfNewMail();
|
|
|
|
void initiateAutoSync(in nsIUrlListener aUrlListener);
|
|
|
|
attribute boolean verifiedAsOnlineFolder;
|
|
attribute boolean explicitlyVerify;
|
|
attribute char hierarchyDelimiter;
|
|
attribute long boxFlags;
|
|
attribute ACString onlineName;
|
|
attribute boolean isNamespace;
|
|
readonly attribute boolean canOpenFolder;
|
|
attribute ACString adminUrl;
|
|
readonly attribute boolean hasAdminUrl;
|
|
attribute boolean performingBiff;
|
|
readonly attribute nsIMsgParseMailMsgState hdrParser;
|
|
readonly attribute nsIImapIncomingServer imapIncomingServer;
|
|
readonly attribute nsIAutoSyncState autoSyncStateObj;
|
|
/**
|
|
* @{
|
|
* These are used to access the response to the STATUS or SELECT command.
|
|
* The counts include deleted messages, or headers we haven't downloaded yet.
|
|
*/
|
|
readonly attribute long serverTotal;
|
|
readonly attribute long serverUnseen;
|
|
readonly attribute long serverRecent;
|
|
readonly attribute long serverNextUID;
|
|
/** @} */
|
|
|
|
/**
|
|
* Quota
|
|
* |valid| indicates whether the server has provided quota information on
|
|
* this folder. This can be false
|
|
* - if the server does not supports quotas,
|
|
* - if there are no storage quotas on this folder, or
|
|
* - if the folder has never been opened.
|
|
* If it is true and maxKB > 0, the folder has a storage quota and
|
|
* the usedKB and maxKB attributes are set to the values provided by
|
|
* the server (in kilobytes), for this quota root.
|
|
* Lotus Notes sends us maxKB = 0, usedKB > 0 for unlimited quota.
|
|
*/
|
|
void getQuota(out boolean valid, out unsigned long usedKB, out unsigned long maxKB);
|
|
|
|
/**
|
|
* List all (human) users apart from the current user who have access to
|
|
* this folder.
|
|
*
|
|
* You can find out which rights they have with getRightsForUser().
|
|
*/
|
|
nsIUTF8StringEnumerator getOtherUsersWithAccess();
|
|
|
|
/**
|
|
* Which access rights a certain user has for this folder.
|
|
*
|
|
* @return list of flags
|
|
* e.g. "lrswipcd" for write access and "lrs" for read only access.
|
|
*
|
|
* See RFC 2086 (e.g. Cyrus) and RFC 4314 (e.g. dovecot)
|
|
*
|
|
* l = locate = visible in folder list
|
|
* r = read = list mails, get/read mail contents
|
|
* s = set seen flag = mark read. Does not affect other users.
|
|
* d (or t) = delete mails
|
|
* w = write = change (other) flags of existing mails
|
|
* i = insert = add mails to this folder
|
|
* p = post = send mail directly to the submission address for folder
|
|
* c (or k) = create subfolders
|
|
* (e = expunge = compress)
|
|
* (x = delete folder)
|
|
* a = admin = change permissions
|
|
*/
|
|
ACString getPermissionsForUser(in ACString username);
|
|
|
|
/**
|
|
* Change the number of "pending" messages in a folder,
|
|
* messages we know about, but don't have the headers for yet
|
|
*
|
|
* @param aDelta amount to change total by.
|
|
*/
|
|
void changePendingTotal(in long aDelta);
|
|
|
|
/**
|
|
* Change the number of "pending" unread messages in a folder,
|
|
* unread messages we know about, but don't have the headers for yet
|
|
*
|
|
* @param aDelta amount to change the unread count by.
|
|
*/
|
|
void changePendingUnread(in long aDelta);
|
|
};
|