with GNATCOM.IInterface;

with GNATCOM.Errors;

package body IE.IShellUIHelper8_Interface is

   procedure Initialize (This : in out IShellUIHelper8_Type) is
   begin
      Set_IID (This, IID_IShellUIHelper8);
   end Initialize;

   function Pointer (This : IShellUIHelper8_Type)
     return Pointer_To_IShellUIHelper8
   is
   begin
      return To_Pointer_To_IShellUIHelper8 (Address (This));
   end Pointer;

   procedure Attach (This    : in out IShellUIHelper8_Type;
                     Pointer : in     Pointer_To_IShellUIHelper8)
   is
   begin
      Attach (This, GNATCOM.IInterface.To_Pointer_To_IUnknown
              (Pointer.all'Address));
   end Attach;

   procedure ResetFirstBootMode
     (This : IShellUIHelper8_Type)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.ResetFirstBootMode
         (Pointer (This)));

   end ResetFirstBootMode;

   procedure ResetSafeMode
     (This : IShellUIHelper8_Type)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.ResetSafeMode
         (Pointer (This)));

   end ResetSafeMode;

   procedure RefreshOfflineDesktop
     (This : IShellUIHelper8_Type)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.RefreshOfflineDesktop
         (Pointer (This)));

   end RefreshOfflineDesktop;

   procedure AddFavorite
     (This  : IShellUIHelper8_Type;
      URL   : GNATCOM.Types.BSTR;
      Title : access GNATCOM.Types.VARIANT :=
        GNATCOM.Types.PVARIANT_MISSING;
      Free  : Boolean := True)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.AddFavorite
         (Pointer (This),
          URL,
          Title));

      if Free then
               GNATCOM.IInterface.Free (URL);
      
      end if;

   end AddFavorite;

   procedure AddChannel
     (This : IShellUIHelper8_Type;
      URL  : GNATCOM.Types.BSTR;
      Free : Boolean := True)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.AddChannel
         (Pointer (This),
          URL));

      if Free then
               GNATCOM.IInterface.Free (URL);
      
      end if;

   end AddChannel;

   procedure AddDesktopComponent
     (This   : IShellUIHelper8_Type;
      URL    : GNATCOM.Types.BSTR;
      uType  : GNATCOM.Types.BSTR;
      Left   : access GNATCOM.Types.VARIANT :=
        GNATCOM.Types.PVARIANT_MISSING;
      Top    : access GNATCOM.Types.VARIANT :=
        GNATCOM.Types.PVARIANT_MISSING;
      Width  : access GNATCOM.Types.VARIANT :=
        GNATCOM.Types.PVARIANT_MISSING;
      Height : access GNATCOM.Types.VARIANT :=
        GNATCOM.Types.PVARIANT_MISSING;
      Free   : Boolean := True)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.AddDesktopComponent
         (Pointer (This),
          URL,
          uType,
          Left,
          Top,
          Width,
          Height));

      if Free then
               GNATCOM.IInterface.Free (URL);
               GNATCOM.IInterface.Free (uType);
      
      end if;

   end AddDesktopComponent;

   function IsSubscribed
     (This  : IShellUIHelper8_Type;
      URL   : GNATCOM.Types.BSTR;
      Free  : Boolean := True)
     return GNATCOM.Types.VARIANT_BOOL
   is
       RetVal : aliased GNATCOM.Types.VARIANT_BOOL;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.IsSubscribed
         (Pointer (This),
          URL,
          RetVal'Unchecked_Access));

      if Free then
               GNATCOM.IInterface.Free (URL);
      
      end if;

      return RetVal;
   end IsSubscribed;

   procedure NavigateAndFind
     (This           : IShellUIHelper8_Type;
      URL            : GNATCOM.Types.BSTR;
      strQuery       : GNATCOM.Types.BSTR;
      varTargetFrame : access GNATCOM.Types.VARIANT :=
        GNATCOM.Types.PVARIANT_MISSING;
      Free           : Boolean := True)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.NavigateAndFind
         (Pointer (This),
          URL,
          strQuery,
          varTargetFrame));

      if Free then
               GNATCOM.IInterface.Free (URL);
               GNATCOM.IInterface.Free (strQuery);
      
      end if;

   end NavigateAndFind;

   procedure ImportExportFavorites
     (This          : IShellUIHelper8_Type;
      fImport       : GNATCOM.Types.VARIANT_BOOL;
      strImpExpPath : GNATCOM.Types.BSTR;
      Free          : Boolean := True)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.ImportExportFavorites
         (Pointer (This),
          fImport,
          strImpExpPath));

      if Free then
               GNATCOM.IInterface.Free (strImpExpPath);
      
      end if;

   end ImportExportFavorites;

   procedure AutoCompleteSaveForm
     (This : IShellUIHelper8_Type;
      Form : access GNATCOM.Types.VARIANT :=
        GNATCOM.Types.PVARIANT_MISSING)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.AutoCompleteSaveForm
         (Pointer (This),
          Form));

   end AutoCompleteSaveForm;

   procedure AutoScan
     (This            : IShellUIHelper8_Type;
      strSearch       : GNATCOM.Types.BSTR;
      strFailureUrl   : GNATCOM.Types.BSTR;
      pvarTargetFrame : access GNATCOM.Types.VARIANT :=
        GNATCOM.Types.PVARIANT_MISSING;
      Free            : Boolean := True)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.AutoScan
         (Pointer (This),
          strSearch,
          strFailureUrl,
          pvarTargetFrame));

      if Free then
               GNATCOM.IInterface.Free (strSearch);
               GNATCOM.IInterface.Free (strFailureUrl);
      
      end if;

   end AutoScan;

   procedure AutoCompleteAttach
     (This     : IShellUIHelper8_Type;
      Reserved : access GNATCOM.Types.VARIANT :=
        GNATCOM.Types.PVARIANT_MISSING)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.AutoCompleteAttach
         (Pointer (This),
          Reserved));

   end AutoCompleteAttach;

   function ShowBrowserUI
     (This     : IShellUIHelper8_Type;
      bstrName : GNATCOM.Types.BSTR;
      pvarIn   : access GNATCOM.Types.VARIANT :=
        GNATCOM.Types.PVARIANT_MISSING;
      Free     : Boolean := True)
     return GNATCOM.Types.VARIANT
   is
       RetVal : aliased GNATCOM.Types.VARIANT;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.ShowBrowserUI
         (Pointer (This),
          bstrName,
          pvarIn,
          RetVal'Unchecked_Access));

      if Free then
               GNATCOM.IInterface.Free (bstrName);
      
      end if;

      return RetVal;
   end ShowBrowserUI;

   procedure AddSearchProvider
     (This : IShellUIHelper8_Type;
      URL  : GNATCOM.Types.BSTR;
      Free : Boolean := True)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.AddSearchProvider
         (Pointer (This),
          URL));

      if Free then
               GNATCOM.IInterface.Free (URL);
      
      end if;

   end AddSearchProvider;

   procedure RunOnceShown
     (This : IShellUIHelper8_Type)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.RunOnceShown
         (Pointer (This)));

   end RunOnceShown;

   procedure SkipRunOnce
     (This : IShellUIHelper8_Type)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.SkipRunOnce
         (Pointer (This)));

   end SkipRunOnce;

   procedure CustomizeSettings
     (This       : IShellUIHelper8_Type;
      fSQM       : GNATCOM.Types.VARIANT_BOOL;
      fPhishing  : GNATCOM.Types.VARIANT_BOOL;
      bstrLocale : GNATCOM.Types.BSTR;
      Free       : Boolean := True)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.CustomizeSettings
         (Pointer (This),
          fSQM,
          fPhishing,
          bstrLocale));

      if Free then
               GNATCOM.IInterface.Free (bstrLocale);
      
      end if;

   end CustomizeSettings;

   function SqmEnabled
     (This      : IShellUIHelper8_Type)
     return GNATCOM.Types.VARIANT_BOOL
   is
       RetVal : aliased GNATCOM.Types.VARIANT_BOOL;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.SqmEnabled
         (Pointer (This),
          RetVal'Unchecked_Access));

      return RetVal;
   end SqmEnabled;

   function PhishingEnabled
     (This      : IShellUIHelper8_Type)
     return GNATCOM.Types.VARIANT_BOOL
   is
       RetVal : aliased GNATCOM.Types.VARIANT_BOOL;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.PhishingEnabled
         (Pointer (This),
          RetVal'Unchecked_Access));

      return RetVal;
   end PhishingEnabled;

   function BrandImageUri
     (This     : IShellUIHelper8_Type)
     return GNATCOM.Types.BSTR
   is
       RetVal : aliased GNATCOM.Types.BSTR;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.BrandImageUri
         (Pointer (This),
          RetVal'Unchecked_Access));

      return RetVal;
   end BrandImageUri;

   procedure SkipTabsWelcome
     (This : IShellUIHelper8_Type)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.SkipTabsWelcome
         (Pointer (This)));

   end SkipTabsWelcome;

   procedure DiagnoseConnection
     (This : IShellUIHelper8_Type)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.DiagnoseConnection
         (Pointer (This)));

   end DiagnoseConnection;

   procedure CustomizeClearType
     (This : IShellUIHelper8_Type;
      fSet : GNATCOM.Types.VARIANT_BOOL)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.CustomizeClearType
         (Pointer (This),
          fSet));

   end CustomizeClearType;

   function IsSearchProviderInstalled
     (This      : IShellUIHelper8_Type;
      URL       : GNATCOM.Types.BSTR;
      Free      : Boolean := True)
     return Interfaces.C.unsigned_long
   is
       RetVal : aliased Interfaces.C.unsigned_long;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.IsSearchProviderInstalled
         (Pointer (This),
          URL,
          RetVal'Unchecked_Access));

      if Free then
               GNATCOM.IInterface.Free (URL);
      
      end if;

      return RetVal;
   end IsSearchProviderInstalled;

   function IsSearchMigrated
     (This       : IShellUIHelper8_Type)
     return GNATCOM.Types.VARIANT_BOOL
   is
       RetVal : aliased GNATCOM.Types.VARIANT_BOOL;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.IsSearchMigrated
         (Pointer (This),
          RetVal'Unchecked_Access));

      return RetVal;
   end IsSearchMigrated;

   function DefaultSearchProvider
     (This      : IShellUIHelper8_Type)
     return GNATCOM.Types.BSTR
   is
       RetVal : aliased GNATCOM.Types.BSTR;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.DefaultSearchProvider
         (Pointer (This),
          RetVal'Unchecked_Access));

      return RetVal;
   end DefaultSearchProvider;

   procedure RunOnceRequiredSettingsComplete
     (This      : IShellUIHelper8_Type;
      fComplete : GNATCOM.Types.VARIANT_BOOL)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.RunOnceRequiredSettingsComplete
         (Pointer (This),
          fComplete));

   end RunOnceRequiredSettingsComplete;

   function RunOnceHasShown
     (This    : IShellUIHelper8_Type)
     return GNATCOM.Types.VARIANT_BOOL
   is
       RetVal : aliased GNATCOM.Types.VARIANT_BOOL;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.RunOnceHasShown
         (Pointer (This),
          RetVal'Unchecked_Access));

      return RetVal;
   end RunOnceHasShown;

   function SearchGuideUrl
     (This     : IShellUIHelper8_Type)
     return GNATCOM.Types.BSTR
   is
       RetVal : aliased GNATCOM.Types.BSTR;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.SearchGuideUrl
         (Pointer (This),
          RetVal'Unchecked_Access));

      return RetVal;
   end SearchGuideUrl;

   procedure AddService
     (This : IShellUIHelper8_Type;
      URL  : GNATCOM.Types.BSTR;
      Free : Boolean := True)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.AddService
         (Pointer (This),
          URL));

      if Free then
               GNATCOM.IInterface.Free (URL);
      
      end if;

   end AddService;

   function IsServiceInstalled
     (This      : IShellUIHelper8_Type;
      URL       : GNATCOM.Types.BSTR;
      Verb      : GNATCOM.Types.BSTR;
      Free      : Boolean := True)
     return Interfaces.C.unsigned_long
   is
       RetVal : aliased Interfaces.C.unsigned_long;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.IsServiceInstalled
         (Pointer (This),
          URL,
          Verb,
          RetVal'Unchecked_Access));

      if Free then
               GNATCOM.IInterface.Free (URL);
               GNATCOM.IInterface.Free (Verb);
      
      end if;

      return RetVal;
   end IsServiceInstalled;

   function InPrivateFilteringEnabled
     (This      : IShellUIHelper8_Type)
     return GNATCOM.Types.VARIANT_BOOL
   is
       RetVal : aliased GNATCOM.Types.VARIANT_BOOL;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.InPrivateFilteringEnabled
         (Pointer (This),
          RetVal'Unchecked_Access));

      return RetVal;
   end InPrivateFilteringEnabled;

   procedure AddToFavoritesBar
     (This  : IShellUIHelper8_Type;
      URL   : GNATCOM.Types.BSTR;
      Title : GNATCOM.Types.BSTR;
      uType : access GNATCOM.Types.VARIANT :=
        GNATCOM.Types.PVARIANT_MISSING;
      Free  : Boolean := True)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.AddToFavoritesBar
         (Pointer (This),
          URL,
          Title,
          uType));

      if Free then
               GNATCOM.IInterface.Free (URL);
               GNATCOM.IInterface.Free (Title);
      
      end if;

   end AddToFavoritesBar;

   procedure BuildNewTabPage
     (This : IShellUIHelper8_Type)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.BuildNewTabPage
         (Pointer (This)));

   end BuildNewTabPage;

   procedure SetRecentlyClosedVisible
     (This     : IShellUIHelper8_Type;
      fVisible : GNATCOM.Types.VARIANT_BOOL)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.SetRecentlyClosedVisible
         (Pointer (This),
          fVisible));

   end SetRecentlyClosedVisible;

   procedure SetActivitiesVisible
     (This     : IShellUIHelper8_Type;
      fVisible : GNATCOM.Types.VARIANT_BOOL)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.SetActivitiesVisible
         (Pointer (This),
          fVisible));

   end SetActivitiesVisible;

   procedure ContentDiscoveryReset
     (This : IShellUIHelper8_Type)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.ContentDiscoveryReset
         (Pointer (This)));

   end ContentDiscoveryReset;

   function IsSuggestedSitesEnabled
     (This      : IShellUIHelper8_Type)
     return GNATCOM.Types.VARIANT_BOOL
   is
       RetVal : aliased GNATCOM.Types.VARIANT_BOOL;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.IsSuggestedSitesEnabled
         (Pointer (This),
          RetVal'Unchecked_Access));

      return RetVal;
   end IsSuggestedSitesEnabled;

   procedure EnableSuggestedSites
     (This    : IShellUIHelper8_Type;
      fEnable : GNATCOM.Types.VARIANT_BOOL)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.EnableSuggestedSites
         (Pointer (This),
          fEnable));

   end EnableSuggestedSites;

   procedure NavigateToSuggestedSites
     (This            : IShellUIHelper8_Type;
      bstrRelativeUrl : GNATCOM.Types.BSTR;
      Free            : Boolean := True)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.NavigateToSuggestedSites
         (Pointer (This),
          bstrRelativeUrl));

      if Free then
               GNATCOM.IInterface.Free (bstrRelativeUrl);
      
      end if;

   end NavigateToSuggestedSites;

   procedure ShowTabsHelp
     (This : IShellUIHelper8_Type)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.ShowTabsHelp
         (Pointer (This)));

   end ShowTabsHelp;

   procedure ShowInPrivateHelp
     (This : IShellUIHelper8_Type)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.ShowInPrivateHelp
         (Pointer (This)));

   end ShowInPrivateHelp;

   function msIsSiteMode
     (This       : IShellUIHelper8_Type)
     return GNATCOM.Types.VARIANT_BOOL
   is
       RetVal : aliased GNATCOM.Types.VARIANT_BOOL;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msIsSiteMode
         (Pointer (This),
          RetVal'Unchecked_Access));

      return RetVal;
   end msIsSiteMode;

   procedure msSiteModeShowThumbBar
     (This : IShellUIHelper8_Type)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msSiteModeShowThumbBar
         (Pointer (This)));

   end msSiteModeShowThumbBar;

   function msSiteModeAddThumbBarButton
     (This         : IShellUIHelper8_Type;
      bstrIconURL  : GNATCOM.Types.BSTR;
      bstrTooltip  : GNATCOM.Types.BSTR;
      Free         : Boolean := True)
     return GNATCOM.Types.VARIANT
   is
       RetVal : aliased GNATCOM.Types.VARIANT;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msSiteModeAddThumbBarButton
         (Pointer (This),
          bstrIconURL,
          bstrTooltip,
          RetVal'Unchecked_Access));

      if Free then
               GNATCOM.IInterface.Free (bstrIconURL);
               GNATCOM.IInterface.Free (bstrTooltip);
      
      end if;

      return RetVal;
   end msSiteModeAddThumbBarButton;

   procedure msSiteModeUpdateThumbBarButton
     (This     : IShellUIHelper8_Type;
      ButtonID : GNATCOM.Types.VARIANT;
      fEnabled : GNATCOM.Types.VARIANT_BOOL;
      fVisible : GNATCOM.Types.VARIANT_BOOL;
      Free     : Boolean := True)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msSiteModeUpdateThumbBarButton
         (Pointer (This),
          ButtonID,
          fEnabled,
          fVisible));

      if Free then
               GNATCOM.IInterface.Free (ButtonID);
      
      end if;

   end msSiteModeUpdateThumbBarButton;

   procedure msSiteModeSetIconOverlay
     (This            : IShellUIHelper8_Type;
      IconUrl         : GNATCOM.Types.BSTR;
      pvarDescription : access GNATCOM.Types.VARIANT :=
        GNATCOM.Types.PVARIANT_MISSING;
      Free            : Boolean := True)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msSiteModeSetIconOverlay
         (Pointer (This),
          IconUrl,
          pvarDescription));

      if Free then
               GNATCOM.IInterface.Free (IconUrl);
      
      end if;

   end msSiteModeSetIconOverlay;

   procedure msSiteModeClearIconOverlay
     (This : IShellUIHelper8_Type)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msSiteModeClearIconOverlay
         (Pointer (This)));

   end msSiteModeClearIconOverlay;

   procedure msAddSiteMode
     (This : IShellUIHelper8_Type)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msAddSiteMode
         (Pointer (This)));

   end msAddSiteMode;

   procedure msSiteModeCreateJumpList
     (This       : IShellUIHelper8_Type;
      bstrHeader : GNATCOM.Types.BSTR;
      Free       : Boolean := True)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msSiteModeCreateJumpList
         (Pointer (This),
          bstrHeader));

      if Free then
               GNATCOM.IInterface.Free (bstrHeader);
      
      end if;

   end msSiteModeCreateJumpList;

   procedure msSiteModeAddJumpListItem
     (This           : IShellUIHelper8_Type;
      bstrName       : GNATCOM.Types.BSTR;
      bstrActionUri  : GNATCOM.Types.BSTR;
      bstrIconUri    : GNATCOM.Types.BSTR;
      pvarWindowType : access GNATCOM.Types.VARIANT :=
        GNATCOM.Types.PVARIANT_MISSING;
      Free           : Boolean := True)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msSiteModeAddJumpListItem
         (Pointer (This),
          bstrName,
          bstrActionUri,
          bstrIconUri,
          pvarWindowType));

      if Free then
               GNATCOM.IInterface.Free (bstrName);
               GNATCOM.IInterface.Free (bstrActionUri);
               GNATCOM.IInterface.Free (bstrIconUri);
      
      end if;

   end msSiteModeAddJumpListItem;

   procedure msSiteModeClearJumpList
     (This : IShellUIHelper8_Type)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msSiteModeClearJumpList
         (Pointer (This)));

   end msSiteModeClearJumpList;

   procedure msSiteModeShowJumpList
     (This : IShellUIHelper8_Type)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msSiteModeShowJumpList
         (Pointer (This)));

   end msSiteModeShowJumpList;

   function msSiteModeAddButtonStyle
     (This        : IShellUIHelper8_Type;
      uiButtonID  : GNATCOM.Types.VARIANT;
      bstrIconURL : GNATCOM.Types.BSTR;
      bstrTooltip : GNATCOM.Types.BSTR;
      Free        : Boolean := True)
     return GNATCOM.Types.VARIANT
   is
       RetVal : aliased GNATCOM.Types.VARIANT;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msSiteModeAddButtonStyle
         (Pointer (This),
          uiButtonID,
          bstrIconURL,
          bstrTooltip,
          RetVal'Unchecked_Access));

      if Free then
               GNATCOM.IInterface.Free (uiButtonID);
               GNATCOM.IInterface.Free (bstrIconURL);
               GNATCOM.IInterface.Free (bstrTooltip);
      
      end if;

      return RetVal;
   end msSiteModeAddButtonStyle;

   procedure msSiteModeShowButtonStyle
     (This       : IShellUIHelper8_Type;
      uiButtonID : GNATCOM.Types.VARIANT;
      uiStyleID  : GNATCOM.Types.VARIANT;
      Free       : Boolean := True)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msSiteModeShowButtonStyle
         (Pointer (This),
          uiButtonID,
          uiStyleID));

      if Free then
               GNATCOM.IInterface.Free (uiButtonID);
               GNATCOM.IInterface.Free (uiStyleID);
      
      end if;

   end msSiteModeShowButtonStyle;

   procedure msSiteModeActivate
     (This : IShellUIHelper8_Type)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msSiteModeActivate
         (Pointer (This)));

   end msSiteModeActivate;

   function msIsSiteModeFirstRun
     (This           : IShellUIHelper8_Type;
      fPreserveState : GNATCOM.Types.VARIANT_BOOL)
     return GNATCOM.Types.VARIANT
   is
       RetVal : aliased GNATCOM.Types.VARIANT;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msIsSiteModeFirstRun
         (Pointer (This),
          fPreserveState,
          RetVal'Unchecked_Access));

      return RetVal;
   end msIsSiteModeFirstRun;

   procedure msAddTrackingProtectionList
     (This           : IShellUIHelper8_Type;
      URL            : GNATCOM.Types.BSTR;
      bstrFilterName : GNATCOM.Types.BSTR;
      Free           : Boolean := True)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msAddTrackingProtectionList
         (Pointer (This),
          URL,
          bstrFilterName));

      if Free then
               GNATCOM.IInterface.Free (URL);
               GNATCOM.IInterface.Free (bstrFilterName);
      
      end if;

   end msAddTrackingProtectionList;

   function msTrackingProtectionEnabled
     (This      : IShellUIHelper8_Type)
     return GNATCOM.Types.VARIANT_BOOL
   is
       RetVal : aliased GNATCOM.Types.VARIANT_BOOL;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msTrackingProtectionEnabled
         (Pointer (This),
          RetVal'Unchecked_Access));

      return RetVal;
   end msTrackingProtectionEnabled;

   function msActiveXFilteringEnabled
     (This      : IShellUIHelper8_Type)
     return GNATCOM.Types.VARIANT_BOOL
   is
       RetVal : aliased GNATCOM.Types.VARIANT_BOOL;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msActiveXFilteringEnabled
         (Pointer (This),
          RetVal'Unchecked_Access));

      return RetVal;
   end msActiveXFilteringEnabled;

   function msProvisionNetworks
     (This                : IShellUIHelper8_Type;
      bstrProvisioningXml : GNATCOM.Types.BSTR;
      Free                : Boolean := True)
     return GNATCOM.Types.VARIANT
   is
       RetVal : aliased GNATCOM.Types.VARIANT;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msProvisionNetworks
         (Pointer (This),
          bstrProvisioningXml,
          RetVal'Unchecked_Access));

      if Free then
               GNATCOM.IInterface.Free (bstrProvisioningXml);
      
      end if;

      return RetVal;
   end msProvisionNetworks;

   procedure msReportSafeUrl
     (This : IShellUIHelper8_Type)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msReportSafeUrl
         (Pointer (This)));

   end msReportSafeUrl;

   procedure msSiteModeRefreshBadge
     (This : IShellUIHelper8_Type)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msSiteModeRefreshBadge
         (Pointer (This)));

   end msSiteModeRefreshBadge;

   procedure msSiteModeClearBadge
     (This : IShellUIHelper8_Type)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msSiteModeClearBadge
         (Pointer (This)));

   end msSiteModeClearBadge;

   procedure msDiagnoseConnectionUILess
     (This : IShellUIHelper8_Type)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msDiagnoseConnectionUILess
         (Pointer (This)));

   end msDiagnoseConnectionUILess;

   procedure msLaunchNetworkClientHelp
     (This : IShellUIHelper8_Type)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msLaunchNetworkClientHelp
         (Pointer (This)));

   end msLaunchNetworkClientHelp;

   procedure msChangeDefaultBrowser
     (This    : IShellUIHelper8_Type;
      fChange : GNATCOM.Types.VARIANT_BOOL)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msChangeDefaultBrowser
         (Pointer (This),
          fChange));

   end msChangeDefaultBrowser;

   procedure msStopPeriodicTileUpdate
     (This : IShellUIHelper8_Type)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msStopPeriodicTileUpdate
         (Pointer (This)));

   end msStopPeriodicTileUpdate;

   procedure msStartPeriodicTileUpdate
     (This               : IShellUIHelper8_Type;
      pollingUris        : GNATCOM.Types.VARIANT;
      startTime          : GNATCOM.Types.VARIANT  := GNATCOM.Types.VARIANT_MISSING;
      uiUpdateRecurrence : GNATCOM.Types.VARIANT  := GNATCOM.Types.VARIANT_MISSING;
      Free               : Boolean := True)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msStartPeriodicTileUpdate
         (Pointer (This),
          pollingUris,
          startTime,
          uiUpdateRecurrence));

      if Free then
               GNATCOM.IInterface.Free (pollingUris);
               GNATCOM.IInterface.Free (startTime);
               GNATCOM.IInterface.Free (uiUpdateRecurrence);
      
      end if;

   end msStartPeriodicTileUpdate;

   procedure msStartPeriodicTileUpdateBatch
     (This               : IShellUIHelper8_Type;
      pollingUris        : GNATCOM.Types.VARIANT;
      startTime          : GNATCOM.Types.VARIANT  := GNATCOM.Types.VARIANT_MISSING;
      uiUpdateRecurrence : GNATCOM.Types.VARIANT  := GNATCOM.Types.VARIANT_MISSING;
      Free               : Boolean := True)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msStartPeriodicTileUpdateBatch
         (Pointer (This),
          pollingUris,
          startTime,
          uiUpdateRecurrence));

      if Free then
               GNATCOM.IInterface.Free (pollingUris);
               GNATCOM.IInterface.Free (startTime);
               GNATCOM.IInterface.Free (uiUpdateRecurrence);
      
      end if;

   end msStartPeriodicTileUpdateBatch;

   procedure msClearTile
     (This : IShellUIHelper8_Type)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msClearTile
         (Pointer (This)));

   end msClearTile;

   procedure msEnableTileNotificationQueue
     (This    : IShellUIHelper8_Type;
      fChange : GNATCOM.Types.VARIANT_BOOL)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msEnableTileNotificationQueue
         (Pointer (This),
          fChange));

   end msEnableTileNotificationQueue;

   function msPinnedSiteState
     (This          : IShellUIHelper8_Type)
     return GNATCOM.Types.VARIANT
   is
       RetVal : aliased GNATCOM.Types.VARIANT;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msPinnedSiteState
         (Pointer (This),
          RetVal'Unchecked_Access));

      return RetVal;
   end msPinnedSiteState;

   procedure msEnableTileNotificationQueueForSquare150x150
     (This    : IShellUIHelper8_Type;
      fChange : GNATCOM.Types.VARIANT_BOOL)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msEnableTileNotificationQueueForSquare150x150
         (Pointer (This),
          fChange));

   end msEnableTileNotificationQueueForSquare150x150;

   procedure msEnableTileNotificationQueueForWide310x150
     (This    : IShellUIHelper8_Type;
      fChange : GNATCOM.Types.VARIANT_BOOL)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msEnableTileNotificationQueueForWide310x150
         (Pointer (This),
          fChange));

   end msEnableTileNotificationQueueForWide310x150;

   procedure msEnableTileNotificationQueueForSquare310x310
     (This    : IShellUIHelper8_Type;
      fChange : GNATCOM.Types.VARIANT_BOOL)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msEnableTileNotificationQueueForSquare310x310
         (Pointer (This),
          fChange));

   end msEnableTileNotificationQueueForSquare310x310;

   procedure msScheduledTileNotification
     (This                : IShellUIHelper8_Type;
      bstrNotificationXml : GNATCOM.Types.BSTR;
      bstrNotificationId  : GNATCOM.Types.BSTR;
      bstrNotificationTag : GNATCOM.Types.BSTR;
      startTime           : GNATCOM.Types.VARIANT  := GNATCOM.Types.VARIANT_MISSING;
      expirationTime      : GNATCOM.Types.VARIANT  := GNATCOM.Types.VARIANT_MISSING;
      Free                : Boolean := True)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msScheduledTileNotification
         (Pointer (This),
          bstrNotificationXml,
          bstrNotificationId,
          bstrNotificationTag,
          startTime,
          expirationTime));

      if Free then
               GNATCOM.IInterface.Free (bstrNotificationXml);
               GNATCOM.IInterface.Free (bstrNotificationId);
               GNATCOM.IInterface.Free (bstrNotificationTag);
               GNATCOM.IInterface.Free (startTime);
               GNATCOM.IInterface.Free (expirationTime);
      
      end if;

   end msScheduledTileNotification;

   procedure msRemoveScheduledTileNotification
     (This               : IShellUIHelper8_Type;
      bstrNotificationId : GNATCOM.Types.BSTR;
      Free               : Boolean := True)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msRemoveScheduledTileNotification
         (Pointer (This),
          bstrNotificationId));

      if Free then
               GNATCOM.IInterface.Free (bstrNotificationId);
      
      end if;

   end msRemoveScheduledTileNotification;

   procedure msStartPeriodicBadgeUpdate
     (This               : IShellUIHelper8_Type;
      pollingUri         : GNATCOM.Types.BSTR;
      startTime          : GNATCOM.Types.VARIANT  := GNATCOM.Types.VARIANT_MISSING;
      uiUpdateRecurrence : GNATCOM.Types.VARIANT  := GNATCOM.Types.VARIANT_MISSING;
      Free               : Boolean := True)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msStartPeriodicBadgeUpdate
         (Pointer (This),
          pollingUri,
          startTime,
          uiUpdateRecurrence));

      if Free then
               GNATCOM.IInterface.Free (pollingUri);
               GNATCOM.IInterface.Free (startTime);
               GNATCOM.IInterface.Free (uiUpdateRecurrence);
      
      end if;

   end msStartPeriodicBadgeUpdate;

   procedure msStopPeriodicBadgeUpdate
     (This : IShellUIHelper8_Type)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msStopPeriodicBadgeUpdate
         (Pointer (This)));

   end msStopPeriodicBadgeUpdate;

   procedure msLaunchInternetOptions
     (This : IShellUIHelper8_Type)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.msLaunchInternetOptions
         (Pointer (This)));

   end msLaunchInternetOptions;

   procedure SetExperimentalFlag
     (This           : IShellUIHelper8_Type;
      bstrFlagString : GNATCOM.Types.BSTR;
      vfFlag         : GNATCOM.Types.VARIANT_BOOL;
      Free           : Boolean := True)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.SetExperimentalFlag
         (Pointer (This),
          bstrFlagString,
          vfFlag));

      if Free then
               GNATCOM.IInterface.Free (bstrFlagString);
      
      end if;

   end SetExperimentalFlag;

   function GetExperimentalFlag
     (This           : IShellUIHelper8_Type;
      bstrFlagString : GNATCOM.Types.BSTR;
      Free           : Boolean := True)
     return GNATCOM.Types.VARIANT_BOOL
   is
       RetVal : aliased GNATCOM.Types.VARIANT_BOOL;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.GetExperimentalFlag
         (Pointer (This),
          bstrFlagString,
          RetVal'Unchecked_Access));

      if Free then
               GNATCOM.IInterface.Free (bstrFlagString);
      
      end if;

      return RetVal;
   end GetExperimentalFlag;

   procedure SetExperimentalValue
     (This            : IShellUIHelper8_Type;
      bstrValueString : GNATCOM.Types.BSTR;
      dwValue         : Interfaces.C.unsigned_long;
      Free            : Boolean := True)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.SetExperimentalValue
         (Pointer (This),
          bstrValueString,
          dwValue));

      if Free then
               GNATCOM.IInterface.Free (bstrValueString);
      
      end if;

   end SetExperimentalValue;

   function GetExperimentalValue
     (This            : IShellUIHelper8_Type;
      bstrValueString : GNATCOM.Types.BSTR;
      Free            : Boolean := True)
     return Interfaces.C.unsigned_long
   is
       RetVal : aliased Interfaces.C.unsigned_long;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.GetExperimentalValue
         (Pointer (This),
          bstrValueString,
          RetVal'Unchecked_Access));

      if Free then
               GNATCOM.IInterface.Free (bstrValueString);
      
      end if;

      return RetVal;
   end GetExperimentalValue;

   procedure ResetAllExperimentalFlagsAndValues
     (This : IShellUIHelper8_Type)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.ResetAllExperimentalFlagsAndValues
         (Pointer (This)));

   end ResetAllExperimentalFlagsAndValues;

   function GetNeedIEAutoLaunchFlag
     (This    : IShellUIHelper8_Type;
      bstrUrl : GNATCOM.Types.BSTR;
      Free    : Boolean := True)
     return GNATCOM.Types.VARIANT_BOOL
   is
       RetVal : aliased GNATCOM.Types.VARIANT_BOOL;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.GetNeedIEAutoLaunchFlag
         (Pointer (This),
          bstrUrl,
          RetVal'Unchecked_Access));

      if Free then
               GNATCOM.IInterface.Free (bstrUrl);
      
      end if;

      return RetVal;
   end GetNeedIEAutoLaunchFlag;

   procedure SetNeedIEAutoLaunchFlag
     (This    : IShellUIHelper8_Type;
      bstrUrl : GNATCOM.Types.BSTR;
      flag    : GNATCOM.Types.VARIANT_BOOL;
      Free    : Boolean := True)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.SetNeedIEAutoLaunchFlag
         (Pointer (This),
          bstrUrl,
          flag));

      if Free then
               GNATCOM.IInterface.Free (bstrUrl);
      
      end if;

   end SetNeedIEAutoLaunchFlag;

   function HasNeedIEAutoLaunchFlag
     (This    : IShellUIHelper8_Type;
      bstrUrl : GNATCOM.Types.BSTR;
      Free    : Boolean := True)
     return GNATCOM.Types.VARIANT_BOOL
   is
       RetVal : aliased GNATCOM.Types.VARIANT_BOOL;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.HasNeedIEAutoLaunchFlag
         (Pointer (This),
          bstrUrl,
          RetVal'Unchecked_Access));

      if Free then
               GNATCOM.IInterface.Free (bstrUrl);
      
      end if;

      return RetVal;
   end HasNeedIEAutoLaunchFlag;

   procedure LaunchIE
     (This      : IShellUIHelper8_Type;
      bstrUrl   : GNATCOM.Types.BSTR;
      automated : GNATCOM.Types.VARIANT_BOOL;
      Free      : Boolean := True)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.LaunchIE
         (Pointer (This),
          bstrUrl,
          automated));

      if Free then
               GNATCOM.IInterface.Free (bstrUrl);
      
      end if;

   end LaunchIE;

   function GetCVListData
     (This        : IShellUIHelper8_Type)
     return GNATCOM.Types.BSTR
   is
       RetVal : aliased GNATCOM.Types.BSTR;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.GetCVListData
         (Pointer (This),
          RetVal'Unchecked_Access));

      return RetVal;
   end GetCVListData;

   function GetCVListLocalData
     (This        : IShellUIHelper8_Type)
     return GNATCOM.Types.BSTR
   is
       RetVal : aliased GNATCOM.Types.BSTR;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.GetCVListLocalData
         (Pointer (This),
          RetVal'Unchecked_Access));

      return RetVal;
   end GetCVListLocalData;

   function GetEMIEListData
     (This        : IShellUIHelper8_Type)
     return GNATCOM.Types.BSTR
   is
       RetVal : aliased GNATCOM.Types.BSTR;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.GetEMIEListData
         (Pointer (This),
          RetVal'Unchecked_Access));

      return RetVal;
   end GetEMIEListData;

   function GetEMIEListLocalData
     (This        : IShellUIHelper8_Type)
     return GNATCOM.Types.BSTR
   is
       RetVal : aliased GNATCOM.Types.BSTR;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.GetEMIEListLocalData
         (Pointer (This),
          RetVal'Unchecked_Access));

      return RetVal;
   end GetEMIEListLocalData;

   procedure OpenFavoritesPane
     (This : IShellUIHelper8_Type)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.OpenFavoritesPane
         (Pointer (This)));

   end OpenFavoritesPane;

   procedure OpenFavoritesSettings
     (This : IShellUIHelper8_Type)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.OpenFavoritesSettings
         (Pointer (This)));

   end OpenFavoritesSettings;

end IE.IShellUIHelper8_Interface;

