blob: f402e1bc494dd0d7bc96f0f93a75634ad8df0126 [file] [log] [blame]
vitalybukaf9d0c0c2014-09-09 19:53:331// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef PRINTING_PRINTING_CONTEXT_SYSTEM_DIALOG_WIN_H_
6#define PRINTING_PRINTING_CONTEXT_SYSTEM_DIALOG_WIN_H_
7
8#include <ocidl.h>
9#include <commdlg.h>
10
11#include <string>
12
avi126e93c2015-12-21 21:48:1613#include "base/macros.h"
vitalybukaf9d0c0c2014-09-09 19:53:3314#include "printing/printing_context_win.h"
15#include "ui/gfx/native_widget_types.h"
16
17namespace printing {
18
thestige85e6b62016-08-25 00:00:0619class PRINTING_EXPORT PrintingContextSystemDialogWin
vitalybukaf9d0c0c2014-09-09 19:53:3320 : public PrintingContextWin {
21 public:
thestige85e6b62016-08-25 00:00:0622 explicit PrintingContextSystemDialogWin(Delegate* delegate);
23 ~PrintingContextSystemDialogWin() override;
vitalybukaf9d0c0c2014-09-09 19:53:3324
25 // PrintingContext implementation.
Vladislav Kuzkokov48ceab22018-02-14 16:29:2826 void AskUserForSettings(int max_pages,
27 bool has_selection,
28 bool is_scripted,
29 PrintSettingsCallback callback) override;
vitalybukaf9d0c0c2014-09-09 19:53:3330
31 private:
32 friend class MockPrintingContextWin;
33
34 virtual HRESULT ShowPrintDialog(PRINTDLGEX* options);
35
36 // Reads the settings from the selected device context. Updates settings_ and
37 // its margins.
mgiuca8ca59182015-07-08 02:10:2138 bool InitializeSettingsWithRanges(const DEVMODE& dev_mode,
39 const std::wstring& new_device_name,
40 const PRINTPAGERANGE* ranges,
41 int number_ranges,
42 bool selection_only);
vitalybukaf9d0c0c2014-09-09 19:53:3343
44 // Parses the result of a PRINTDLGEX result.
45 Result ParseDialogResultEx(const PRINTDLGEX& dialog_options);
vitalybukaf9d0c0c2014-09-09 19:53:3346
thestige85e6b62016-08-25 00:00:0647 DISALLOW_COPY_AND_ASSIGN(PrintingContextSystemDialogWin);
vitalybukaf9d0c0c2014-09-09 19:53:3348};
49
50} // namespace printing
51
52#endif // PRINTING_PRINTING_CONTEXT_SYSTEM_DIALOG_WIN_H_