blob: 7781cfd55bf54fa94c1ec94a723c7e855468e472 [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
Lei Zhang01a1d3c02019-05-21 04:59:108#include <ocidl.h> // NOLINT(build/include_order)
9
10#include <commdlg.h> // Must come after ocidl.h.
vitalybukaf9d0c0c2014-09-09 19:53:3311
12#include <string>
13
avi126e93c2015-12-21 21:48:1614#include "base/macros.h"
vitalybukaf9d0c0c2014-09-09 19:53:3315#include "printing/printing_context_win.h"
16#include "ui/gfx/native_widget_types.h"
17
18namespace printing {
19
thestige85e6b62016-08-25 00:00:0620class PRINTING_EXPORT PrintingContextSystemDialogWin
vitalybukaf9d0c0c2014-09-09 19:53:3321 : public PrintingContextWin {
22 public:
thestige85e6b62016-08-25 00:00:0623 explicit PrintingContextSystemDialogWin(Delegate* delegate);
24 ~PrintingContextSystemDialogWin() override;
vitalybukaf9d0c0c2014-09-09 19:53:3325
26 // PrintingContext implementation.
Vladislav Kuzkokov48ceab22018-02-14 16:29:2827 void AskUserForSettings(int max_pages,
28 bool has_selection,
29 bool is_scripted,
30 PrintSettingsCallback callback) override;
vitalybukaf9d0c0c2014-09-09 19:53:3331
32 private:
33 friend class MockPrintingContextWin;
34
35 virtual HRESULT ShowPrintDialog(PRINTDLGEX* options);
36
37 // Reads the settings from the selected device context. Updates settings_ and
38 // its margins.
mgiuca8ca59182015-07-08 02:10:2139 bool InitializeSettingsWithRanges(const DEVMODE& dev_mode,
40 const std::wstring& new_device_name,
41 const PRINTPAGERANGE* ranges,
42 int number_ranges,
43 bool selection_only);
vitalybukaf9d0c0c2014-09-09 19:53:3344
45 // Parses the result of a PRINTDLGEX result.
46 Result ParseDialogResultEx(const PRINTDLGEX& dialog_options);
vitalybukaf9d0c0c2014-09-09 19:53:3347
thestige85e6b62016-08-25 00:00:0648 DISALLOW_COPY_AND_ASSIGN(PrintingContextSystemDialogWin);
vitalybukaf9d0c0c2014-09-09 19:53:3349};
50
51} // namespace printing
52
53#endif // PRINTING_PRINTING_CONTEXT_SYSTEM_DIALOG_WIN_H_