pub struct ItemAttributes(/* private fields */);Expand description
These flags represent attributes that can be retrieved on an item (file or folder) or set of items.
They are used with the ShellFolder and ShellItem APIs,
most notably ShellFolder::get_attributes_of
and ShellItem::get_attributes.
Implementations§
Source§impl ItemAttributes
impl ItemAttributes
Sourcepub const CanLink: Self
pub const CanLink: Self
Shortcuts can be created for the specified items.
This attribute has the same value as DROPEFFECT_LINK.
If a namespace extension returns this attribute, a Create Shortcut
entry with a default handler is added to the shortcut menu that is
displayed during drag-and-drop operations. The extension can also
implement its own handler for the link verb in place of the default.
If the extension does so, it is responsible for creating the shortcut.
A Create Shortcut item is also added to the Windows Explorer File
menu and to normal shortcut menus. If the item is selected, your
application’s IContextMenu::InvokeCommand method is invoked with
the lpVerb member of the CMINVOKECOMMANDINFO structure set to
link. Your application is responsible for creating the link.
Sourcepub const Storage: Self
pub const Storage: Self
The specified items can be bound to an IStorage object through
IShellFolder::BindToObject. For more information about namespace
manipulation capabilities, see IStorage.
Sourcepub const CanRename: Self
pub const CanRename: Self
The specified items can be renamed.
Note that this value is essentially a suggestion; not all namespace clients allow items to be renamed. However, those that do must have this attribute set.
Sourcepub const HasPropSheet: Self
pub const HasPropSheet: Self
The specified items have property sheets.
Sourcepub const DropTarget: Self
pub const DropTarget: Self
The specified items are drop targets.
Sourcepub const CapabilityMask: Self
pub const CapabilityMask: Self
This flag is a mask for the capability attributes: ItemAttributes::CanCopy,
ItemAttributes::CanMove, ItemAttributes::CanLink, ItemAttributes::CanRename, ItemAttributes::CanDelete,
ItemAttributes::HasPropSheet, and ItemAttributes::DropTarget.
Callers normally do not use this value.
Sourcepub const Encrypted: Self
pub const Encrypted: Self
The specified items are encrypted and might require special presentation.
Sourcepub const IsSlow: Self
pub const IsSlow: Self
Accessing the item (through IStream or other storage interfaces) is
expected to be a slow operation.
Applications should avoid accessing items flagged with ItemAttributes::IsSlow.
Note: Opening a stream for an item is generally a slow operation at
all times. ItemAttributes::IsSlow indicates that it is expected to be
especially slow, for example in the case of slow network connections
or offline (FILE_ATTRIBUTE_OFFLINE) files. However, querying
ItemAttributes::IsSlow is itself a slow operation. Applications should query
ItemAttributes::IsSlow only on a background thread. An alternate method,
such as retrieving the PKEY_FileAttributes property and testing for
FILE_ATTRIBUTE_OFFLINE, could be used in place of a method call
that involves ItemAttributes::IsSlow.
The specified objects are shared.
Sourcepub const ReadOnly: Self
pub const ReadOnly: Self
The specified items are read-only.
In the case of folders, this means that new items cannot be created
in those folders. This should not be confused with the behavior
specified by the FILE_ATTRIBUTE_READONLY flag retrieved by
IColumnProvider::GetItemData in a SHCOLUMNDATA structure.
FILE_ATTRIBUTE_READONLY has no meaning for Win32 file system folders.
Sourcepub const Hidden: Self
pub const Hidden: Self
The item is hidden and should not be displayed unless the Show hidden files and folders option is enabled in Folder Settings.
Sourcepub const DisplayAttrMask: Self
pub const DisplayAttrMask: Self
Do not use.
Sourcepub const NonEnumerated: Self
pub const NonEnumerated: Self
The items are nonenumerated items and should be hidden.
They are not returned through an enumerator such as that created by
the IShellFolder::EnumObjects method.
Sourcepub const NewContent: Self
pub const NewContent: Self
The items contain new content, as defined by the particular application.
Sourcepub const CanMoniker: Self
pub const CanMoniker: Self
Not supported.
ItemAttributes::CanMoniker, ItemAttributes::HasStorage and ItemAttributes::Stream
have the same value.
Sourcepub const HasStorage: Self
pub const HasStorage: Self
Not supported.
ItemAttributes::CanMoniker, ItemAttributes::HasStorage and ItemAttributes::Stream
have the same value.
Sourcepub const Stream: Self
pub const Stream: Self
Indicates that the item has a stream associated with it.
That stream can be accessed through a call to
IShellFolder::BindToObject or IShellItem::BindToHandler with
IID_IStream in the riid parameter.
ItemAttributes::CanMoniker, ItemAttributes::HasStorage and ItemAttributes::Stream
have the same value.
Sourcepub const StorageAncestor: Self
pub const StorageAncestor: Self
Children of this item are accessible through IStream or IStorage.
Those children are flagged with ItemAttributes::Storage or ItemAttributes::Stream.
Sourcepub const Validate: Self
pub const Validate: Self
When specified as input, ItemAttributes::Validate instructs the folder to
validate that the items contained in a folder or Shell item array
exist.
If one or more of those items do not exist,
IShellFolder::GetAttributesOf and IShellItemArray::GetAttributes
return a failure code. This flag is never returned as an out value.
When used with the file system folder, ItemAttributes::Validate instructs the
folder to discard cached properties retrieved by clients of
IShellFolder2::GetDetailsEx that might have accumulated for the
specified items.
Sourcepub const Removable: Self
pub const Removable: Self
The specified items are on removable media or are themselves removable devices.
Sourcepub const Compressed: Self
pub const Compressed: Self
The specified items are compressed.
Sourcepub const Browsable: Self
pub const Browsable: Self
The specified items can be hosted inside a web browser or Windows Explorer frame.
Sourcepub const FileSysAncestor: Self
pub const FileSysAncestor: Self
The specified folders are either file system folders or contain at
least one descendant (child, grandchild, or later) that is a file
system (ItemAttributes::FileSystem) folder.
Sourcepub const Folder: Self
pub const Folder: Self
The specified items are folders.
Some items can be flagged with both ItemAttributes::Stream and ItemAttributes::Folder,
such as a compressed file with a .zip file name extension. Some
applications might include this flag when testing for items that are
both files and containers.
Sourcepub const FileSystem: Self
pub const FileSystem: Self
The specified folders or files are part of the file system (that is, they are files, directories, or root directories).
The parsed names of the items can be assumed to be valid Win32 file system paths. These paths can be either UNC or drive-letter based.
Sourcepub const StorageCapMask: Self
pub const StorageCapMask: Self
This flag is a mask for the storage capability attributes:
ItemAttributes::Storage, ItemAttributes::Link, ItemAttributes::ReadOnly, ItemAttributes::Stream,
ItemAttributes::StorageAncestor, ItemAttributes::FileSysAncestor, ItemAttributes::Folder,
and ItemAttributes::FileSystem.
Callers normally do not use this value.
Sourcepub const HasSubFolder: Self
pub const HasSubFolder: Self
The specified folders have subfolders.
The ItemAttributes::HasSubFolder attribute is only advisory and might be
returned by Shell folder implementations even if they do not contain
subfolders. Note, however, that the converse—failing to return
ItemAttributes::HasSubFolder—definitively states that the folder objects do
not have subfolders. Returning ItemAttributes::HasSubFolder is recommended
whenever a significant amount of time is required to determine whether
any subfolders exist. For example, the Shell always returns
ItemAttributes::HasSubFolder when a folder is located on a network drive.
§Remark
ItemAttributes::HasSubFolder may access local drives,
which can be slow.
Sourcepub const ContentMask: Self
pub const ContentMask: Self
This flag is a mask for content attributes, at present only
ItemAttributes::HasSubFolder.
Callers normally do not use this value.
Sourcepub const PkeySfgaoMask: Self
pub const PkeySfgaoMask: Self
Mask used by the PKEY_SFGAOFlags property to determine attributes
that are considered to cause slow calculations or lack context:
ItemAttributes::IsSlow, ItemAttributes::ReadOnly, ItemAttributes::HasSubFolder, and
ItemAttributes::Validate.
Callers normally do not use this value.
Source§impl ItemAttributes
impl ItemAttributes
Sourcepub const fn bits(&self) -> u32
pub const fn bits(&self) -> u32
Get the underlying bits value.
The returned value is exactly the bits set in this flags value.
Sourcepub const fn from_bits(bits: u32) -> Option<Self>
pub const fn from_bits(bits: u32) -> Option<Self>
Convert from a bits value.
This method will return None if any unknown bits are set.
Sourcepub const fn from_bits_truncate(bits: u32) -> Self
pub const fn from_bits_truncate(bits: u32) -> Self
Convert from a bits value, unsetting any unknown bits.
Sourcepub const fn from_bits_retain(bits: u32) -> Self
pub const fn from_bits_retain(bits: u32) -> Self
Convert from a bits value exactly.
Sourcepub fn from_name(name: &str) -> Option<Self>
pub fn from_name(name: &str) -> Option<Self>
Get a flags value with the bits of a flag with the given name set.
This method will return None if name is empty or doesn’t
correspond to any named flag.
Sourcepub const fn intersects(&self, other: Self) -> bool
pub const fn intersects(&self, other: Self) -> bool
Whether any set bits in a source flags value are also set in a target flags value.
Sourcepub const fn contains(&self, other: Self) -> bool
pub const fn contains(&self, other: Self) -> bool
Whether all set bits in a source flags value are also set in a target flags value.
Sourcepub fn remove(&mut self, other: Self)
pub fn remove(&mut self, other: Self)
The intersection of a source flags value with the complement of a target flags
value (&!).
This method is not equivalent to self & !other when other has unknown bits set.
remove won’t truncate other, but the ! operator will.
Sourcepub fn toggle(&mut self, other: Self)
pub fn toggle(&mut self, other: Self)
The bitwise exclusive-or (^) of the bits in two flags values.
Sourcepub fn set(&mut self, other: Self, value: bool)
pub fn set(&mut self, other: Self, value: bool)
Call insert when value is true or remove when value is false.
Sourcepub const fn intersection(self, other: Self) -> Self
pub const fn intersection(self, other: Self) -> Self
The bitwise and (&) of the bits in two flags values.
Sourcepub const fn union(self, other: Self) -> Self
pub const fn union(self, other: Self) -> Self
The bitwise or (|) of the bits in two flags values.
Sourcepub const fn difference(self, other: Self) -> Self
pub const fn difference(self, other: Self) -> Self
The intersection of a source flags value with the complement of a target flags
value (&!).
This method is not equivalent to self & !other when other has unknown bits set.
difference won’t truncate other, but the ! operator will.
Sourcepub const fn symmetric_difference(self, other: Self) -> Self
pub const fn symmetric_difference(self, other: Self) -> Self
The bitwise exclusive-or (^) of the bits in two flags values.
Sourcepub const fn complement(self) -> Self
pub const fn complement(self) -> Self
The bitwise negation (!) of the bits in a flags value, truncating the result.
Source§impl ItemAttributes
impl ItemAttributes
Sourcepub const fn iter(&self) -> Iter<ItemAttributes>
pub const fn iter(&self) -> Iter<ItemAttributes>
Yield a set of contained flags values.
Each yielded flags value will correspond to a defined named flag. Any unknown bits will be yielded together as a final flags value.
Sourcepub const fn iter_names(&self) -> IterNames<ItemAttributes>
pub const fn iter_names(&self) -> IterNames<ItemAttributes>
Yield a set of contained named flags values.
This method is like iter, except only yields bits in contained named flags.
Any unknown bits, or bits not corresponding to a contained flag will not be yielded.
Trait Implementations§
Source§impl Binary for ItemAttributes
impl Binary for ItemAttributes
Source§impl BitAnd for ItemAttributes
impl BitAnd for ItemAttributes
Source§impl BitAndAssign for ItemAttributes
impl BitAndAssign for ItemAttributes
Source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
The bitwise and (&) of the bits in two flags values.
Source§impl BitOr for ItemAttributes
impl BitOr for ItemAttributes
Source§fn bitor(self, other: ItemAttributes) -> Self
fn bitor(self, other: ItemAttributes) -> Self
The bitwise or (|) of the bits in two flags values.
Source§type Output = ItemAttributes
type Output = ItemAttributes
| operator.Source§impl BitOrAssign for ItemAttributes
impl BitOrAssign for ItemAttributes
Source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
The bitwise or (|) of the bits in two flags values.
Source§impl BitXor for ItemAttributes
impl BitXor for ItemAttributes
Source§impl BitXorAssign for ItemAttributes
impl BitXorAssign for ItemAttributes
Source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
The bitwise exclusive-or (^) of the bits in two flags values.
Source§impl Clone for ItemAttributes
impl Clone for ItemAttributes
Source§fn clone(&self) -> ItemAttributes
fn clone(&self) -> ItemAttributes
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for ItemAttributes
Source§impl Debug for ItemAttributes
impl Debug for ItemAttributes
impl Eq for ItemAttributes
Source§impl Extend<ItemAttributes> for ItemAttributes
impl Extend<ItemAttributes> for ItemAttributes
Source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
The bitwise or (|) of the bits in each flags value.
Source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one)Source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one)Source§impl Flags for ItemAttributes
impl Flags for ItemAttributes
Source§const FLAGS: &'static [Flag<ItemAttributes>]
const FLAGS: &'static [Flag<ItemAttributes>]
Source§fn from_bits_retain(bits: u32) -> ItemAttributes
fn from_bits_retain(bits: u32) -> ItemAttributes
Source§fn known_bits(&self) -> Self::Bits
fn known_bits(&self) -> Self::Bits
Source§fn unknown_bits(&self) -> Self::Bits
fn unknown_bits(&self) -> Self::Bits
Source§fn contains_unknown_bits(&self) -> bool
fn contains_unknown_bits(&self) -> bool
true if any unknown bits are set.Source§fn from_bits_truncate(bits: Self::Bits) -> Self
fn from_bits_truncate(bits: Self::Bits) -> Self
Source§fn from_name(name: &str) -> Option<Self>
fn from_name(name: &str) -> Option<Self>
Source§fn iter_names(&self) -> IterNames<Self>
fn iter_names(&self) -> IterNames<Self>
Source§fn iter_defined_names() -> IterDefinedNames<Self>
fn iter_defined_names() -> IterDefinedNames<Self>
Self::FLAGS.Source§fn intersects(&self, other: Self) -> boolwhere
Self: Sized,
fn intersects(&self, other: Self) -> boolwhere
Self: Sized,
Source§fn contains(&self, other: Self) -> boolwhere
Self: Sized,
fn contains(&self, other: Self) -> boolwhere
Self: Sized,
Source§fn insert(&mut self, other: Self)where
Self: Sized,
fn insert(&mut self, other: Self)where
Self: Sized,
|) of the bits in two flags values.Source§fn remove(&mut self, other: Self)where
Self: Sized,
fn remove(&mut self, other: Self)where
Self: Sized,
&!). Read moreSource§fn toggle(&mut self, other: Self)where
Self: Sized,
fn toggle(&mut self, other: Self)where
Self: Sized,
^) of the bits in two flags values.Source§fn intersection(self, other: Self) -> Self
fn intersection(self, other: Self) -> Self
&) of the bits in two flags values.Source§fn difference(self, other: Self) -> Self
fn difference(self, other: Self) -> Self
&!). Read moreSource§fn symmetric_difference(self, other: Self) -> Self
fn symmetric_difference(self, other: Self) -> Self
^) of the bits in two flags values.Source§fn complement(self) -> Self
fn complement(self) -> Self
!) of the bits in a flags value, truncating the result.Source§impl From<SFGAO_FLAGS> for ItemAttributes
impl From<SFGAO_FLAGS> for ItemAttributes
Source§impl FromIterator<ItemAttributes> for ItemAttributes
impl FromIterator<ItemAttributes> for ItemAttributes
Source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
The bitwise or (|) of the bits in each flags value.
Source§impl Into<SFGAO_FLAGS> for ItemAttributes
impl Into<SFGAO_FLAGS> for ItemAttributes
Source§impl IntoIterator for ItemAttributes
impl IntoIterator for ItemAttributes
Source§impl LowerHex for ItemAttributes
impl LowerHex for ItemAttributes
Source§impl Not for ItemAttributes
impl Not for ItemAttributes
Source§impl Octal for ItemAttributes
impl Octal for ItemAttributes
Source§impl PartialEq for ItemAttributes
impl PartialEq for ItemAttributes
Source§fn eq(&self, other: &ItemAttributes) -> bool
fn eq(&self, other: &ItemAttributes) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for ItemAttributes
Source§impl Sub for ItemAttributes
impl Sub for ItemAttributes
Source§fn sub(self, other: Self) -> Self
fn sub(self, other: Self) -> Self
The intersection of a source flags value with the complement of a target flags value (&!).
This method is not equivalent to self & !other when other has unknown bits set.
difference won’t truncate other, but the ! operator will.
Source§type Output = ItemAttributes
type Output = ItemAttributes
- operator.Source§impl SubAssign for ItemAttributes
impl SubAssign for ItemAttributes
Source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
The intersection of a source flags value with the complement of a target flags value (&!).
This method is not equivalent to self & !other when other has unknown bits set.
difference won’t truncate other, but the ! operator will.