1 // Copyright © 2015, Peter Atashian
2 // Licensed under the MIT License <LICENSE.md>
3 //! Url History Interfaces
4 pub const STATURL_QUERYFLAG_ISCACHED: ::DWORD = 0x00010000;
5 pub const STATURL_QUERYFLAG_NOURL: ::DWORD = 0x00020000;
6 pub const STATURL_QUERYFLAG_NOTITLE: ::DWORD = 0x00040000;
7 pub const STATURL_QUERYFLAG_TOPLEVEL: ::DWORD = 0x00080000;
8 pub const STATURLFLAG_ISCACHED: ::DWORD = 0x00000001;
9 pub const STATURLFLAG_ISTOPLEVEL: ::DWORD = 0x00000002;
10 ENUM!{enum ADDURL_FLAG {
11     ADDURL_FIRST = 0,
12     ADDURL_ADDTOHISTORYANDCACHE = 0,
13     ADDURL_ADDTOCACHE = 1,
14     ADDURL_Max = 2147483647,
15 }}
16 pub type LPENUMSTATURL = *mut IEnumSTATURL;
17 STRUCT!{struct STATURL {
18     cbSize: ::DWORD,
19     pwcsUrl: ::LPWSTR,
20     pwcsTitle: ::LPWSTR,
21     ftLastVisited: ::FILETIME,
22     ftLastUpdated: ::FILETIME,
23     ftExpires: ::FILETIME,
24     dwFlags: ::DWORD,
25 }}
26 pub type LPSTATURL = *mut STATURL;
27 RIDL!{interface IEnumSTATURL(IEnumSTATURLVtbl): IUnknown(IUnknownVtbl) {
28     fn Next(&mut self, celt: ::ULONG, rgelt: LPSTATURL, pceltFetched: *mut ::ULONG) -> ::HRESULT,
29     fn Skip(&mut self, celt: ::ULONG) -> ::HRESULT,
30     fn Reset(&mut self) -> ::HRESULT,
31     fn Clone(&mut self, ppenum: *mut *mut ::IEnumSTATURL) -> ::HRESULT,
32     fn SetFilter(&mut self, poszFilter: ::LPCOLESTR, dwFlags: ::DWORD) -> ::HRESULT
33 }}
34 pub type LPURLHISTORYSTG = *mut IUrlHistoryStg;
35 RIDL!{interface IUrlHistoryStg(IUrlHistoryStgVtbl): IUnknown(IUnknownVtbl) {
36     fn AddUrl(&mut self, pocsUrl: ::LPCOLESTR) -> ::HRESULT,
37     fn DeleteUrl(&mut self, pocsUrl: ::LPCOLESTR, dwFlags: ::DWORD) -> ::HRESULT,
38     fn QueryUrl(
39         &mut self, pocsUrl: ::LPCOLESTR, dwFlags: ::DWORD, lpSTATURL: LPSTATURL
40     ) -> ::HRESULT,
41     fn BindToObject(
42         &mut self, pocsUrl: ::LPCOLESTR, riid: ::REFIID, ppvOut: *mut *mut ::c_void
43     ) -> ::HRESULT,
44     fn EnumUrls(&mut self, ppEnum: *mut *mut ::IEnumSTATURL) -> ::HRESULT
45 }}
46 pub type LPURLHISTORYSTG2 = *mut IUrlHistoryStg2;
47 RIDL!{interface IUrlHistoryStg2(IUrlHistoryStg2Vtbl): IUrlHistoryStg(IUrlHistoryStgVtbl) {
48     fn AddUrlAndNotify(
49         &mut self, pocsUrl: ::LPCOLESTR, pocsTitle: ::LPCOLESTR, dwFlags: ::DWORD,
50         fWriteHistory: ::BOOL, poctNotify: *mut ::IOleCommandTarget, punkISFolder: *mut ::IUnknown
51     ) -> ::HRESULT,
52     fn ClearHistory(&mut self) -> ::HRESULT
53 }}
54 pub type LPURLHISTORYNOTIFY = *mut IUrlHistoryNotify;
55 RIDL!{interface IUrlHistoryNotify(IUrlHistoryNotifyVtbl):
56     IOleCommandTarget(IOleCommandTargetVtbl) {}}
57