michael@0: /* vim: se cin sw=2 ts=2 et : */ michael@0: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- michael@0: * michael@0: * This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: #ifndef __mozilla_widget_TaskbarWindowPreview_h__ michael@0: #define __mozilla_widget_TaskbarWindowPreview_h__ michael@0: michael@0: #include "nsITaskbarWindowPreview.h" michael@0: #include "nsITaskbarProgress.h" michael@0: #include "nsITaskbarOverlayIconController.h" michael@0: #include "TaskbarPreview.h" michael@0: #include michael@0: michael@0: namespace mozilla { michael@0: namespace widget { michael@0: michael@0: class TaskbarPreviewButton; michael@0: class TaskbarWindowPreview : public TaskbarPreview, michael@0: public nsITaskbarWindowPreview, michael@0: public nsITaskbarProgress, michael@0: public nsITaskbarOverlayIconController, michael@0: public nsSupportsWeakReference michael@0: { michael@0: public: michael@0: TaskbarWindowPreview(ITaskbarList4 *aTaskbar, nsITaskbarPreviewController *aController, HWND aHWND, nsIDocShell *aShell); michael@0: virtual ~TaskbarWindowPreview(); michael@0: michael@0: NS_DECL_ISUPPORTS michael@0: NS_DECL_NSITASKBARWINDOWPREVIEW michael@0: NS_DECL_NSITASKBARPROGRESS michael@0: NS_DECL_NSITASKBAROVERLAYICONCONTROLLER michael@0: NS_FORWARD_NSITASKBARPREVIEW(TaskbarPreview::) michael@0: michael@0: virtual LRESULT WndProc(UINT nMsg, WPARAM wParam, LPARAM lParam); michael@0: private: michael@0: virtual nsresult ShowActive(bool active); michael@0: virtual HWND &PreviewWindow(); michael@0: michael@0: virtual nsresult UpdateTaskbarProperties(); michael@0: virtual nsresult Enable(); michael@0: virtual nsresult Disable(); michael@0: virtual void DetachFromNSWindow(); michael@0: nsresult UpdateButton(uint32_t index); michael@0: nsresult UpdateButtons(); michael@0: michael@0: // Is custom drawing enabled? michael@0: bool mCustomDrawing; michael@0: // Have we made any buttons? michael@0: bool mHaveButtons; michael@0: // Windows button format michael@0: THUMBBUTTON mThumbButtons[nsITaskbarWindowPreview::NUM_TOOLBAR_BUTTONS]; michael@0: // Pointers to our button class (cached instances) michael@0: nsWeakPtr mWeakButtons[nsITaskbarWindowPreview::NUM_TOOLBAR_BUTTONS]; michael@0: michael@0: // Called to update ITaskbarList4 dependent properties michael@0: nsresult UpdateTaskbarProgress(); michael@0: nsresult UpdateOverlayIcon(); michael@0: michael@0: // The taskbar progress michael@0: TBPFLAG mState; michael@0: ULONGLONG mCurrentValue; michael@0: ULONGLONG mMaxValue; michael@0: michael@0: // Taskbar overlay icon michael@0: HICON mOverlayIcon; michael@0: nsString mIconDescription; michael@0: michael@0: // WindowHook procedure for hooking mWnd for taskbar progress and icon stuff michael@0: static bool TaskbarWindowHook(void *aContext, michael@0: HWND hWnd, UINT nMsg, michael@0: WPARAM wParam, LPARAM lParam, michael@0: LRESULT *aResult); michael@0: michael@0: friend class TaskbarPreviewButton; michael@0: }; michael@0: michael@0: } // namespace widget michael@0: } // namespace mozilla michael@0: michael@0: #endif /* __mozilla_widget_TaskbarWindowPreview_h__ */ michael@0: