private SafeNativeMethods.FOS CalculateNativeDialogOptionFlags() { // We start with only a few flags set by default, // then go from there based on the current state // of the managed dialog's property values. SafeNativeMethods.FOS flags = SafeNativeMethods.FOS.FOS_NOTESTFILECREATE | SafeNativeMethods.FOS.FOS_FORCEFILESYSTEM; // Call to derived (concrete) dialog to // set dialog-specific flags. flags = GetDerivedOptionFlags(flags); #if WIN7 if (!forceFileSystem) { flags &= ~SafeNativeMethods.FOS.FOS_FORCEFILESYSTEM; } #endif // Apply other optional flags. if (checkFileExists) { flags |= SafeNativeMethods.FOS.FOS_FILEMUSTEXIST; } if (checkPathExists) { flags |= SafeNativeMethods.FOS.FOS_PATHMUSTEXIST; } if (!checkValidNames) { flags |= SafeNativeMethods.FOS.FOS_NOVALIDATE; } if (!CheckReadOnly) { flags |= SafeNativeMethods.FOS.FOS_NOREADONLYRETURN; } if (restoreDirectory) { flags |= SafeNativeMethods.FOS.FOS_NOCHANGEDIR; } if (!showPlacesList) { flags |= SafeNativeMethods.FOS.FOS_HIDEPINNEDPLACES; } if (!addToMruList) { flags |= SafeNativeMethods.FOS.FOS_DONTADDTORECENT; } if (showHiddenItems) { flags |= SafeNativeMethods.FOS.FOS_FORCESHOWHIDDEN; } if (!dereferenceLinks) { flags |= SafeNativeMethods.FOS.FOS_NODEREFERENCELINKS; } return(flags); }
internal override SafeNativeMethods.FOS GetDerivedOptionFlags(SafeNativeMethods.FOS flags) { if (multiselect) { flags |= SafeNativeMethods.FOS.FOS_ALLOWMULTISELECT; } if (foldersOnly) { flags |= SafeNativeMethods.FOS.FOS_PICKFOLDERS; } return(flags); }
internal override SafeNativeMethods.FOS GetDerivedOptionFlags(SafeNativeMethods.FOS flags) { if (overwritePrompt) { flags |= SafeNativeMethods.FOS.FOS_OVERWRITEPROMPT; } if (createPrompt) { flags |= SafeNativeMethods.FOS.FOS_CREATEPROMPT; } if (!enableMiniMode) { flags |= SafeNativeMethods.FOS.FOS_DEFAULTNOMINIMODE; } if (strictExtensions) { flags |= SafeNativeMethods.FOS.FOS_STRICTFILETYPES; } return(flags); }
internal abstract SafeNativeMethods.FOS GetDerivedOptionFlags(SafeNativeMethods.FOS flags);
internal static bool IsOptionSet(IFileDialog dialog, SafeNativeMethods.FOS flag) { SafeNativeMethods.FOS currentFlags = GetCurrentOptionFlags(dialog); return((currentFlags & flag) == flag); }