DtkWidget
DTK Widget module
载入中...
搜索中...
未找到
dprintpreviewdialog_p.h
1// SPDX-FileCopyrightText: 2019 - 2026 UnionTech Software Technology Co., Ltd.
2//
3// SPDX-License-Identifier: LGPL-3.0-or-later
4
5#ifndef DPRINTPREVIEWDIALOG_P_H
6#define DPRINTPREVIEWDIALOG_P_H
7
8#include "dprintpreviewsettinginterface.h"
9
10#include <DPrintPreviewDialog>
11#include "ddialog_p.h"
12#include <dprintpickcolorwidget.h>
13#include <DLabel>
14
15#include <DWidget>
16#include <DPushButton>
17#include <DCheckBox>
18#include <DComboBox>
19#include <DRadioButton>
20#include <QBasicTimer>
21#include <QFutureWatcher>
22#include <QPointer>
23#include <QSharedPointer>
24
25class QVBoxLayout;
26class QButtonGroup;
27class DScrollArea;
28class QPrinter;
29DWIDGET_BEGIN_NAMESPACE
30class DFrame;
31class DIconButton;
32class DLineEdit;
33class DFileChooserEdit;
34class DLabel;
35class DSpinBox;
36class DSwitchButton;
37class DCommandLinkButton;
38class DSuggestButton;
39class DDoubleSpinBox;
40class DSlider;
41class DBackgroundGroup;
42class DToolButton;
43class PreviewSettingsPluginHelper;
45{
46public:
47 enum TipsNum {
48 NullTip,
49 MaxTip,
50 CommaTip,
51 FormatTip
52 };
53 enum WaterMarkType {
54 Type_None,
55 Type_Text,
56 Type_Image
57 };
58
60 void startup();
61 void initui();
62 void initleft(QVBoxLayout *layout);
63 void initright(QVBoxLayout *layout);
64 void initbasicui();
65 void initadvanceui();
66 void initWaterMarkui();
67 void initWaterSettings();
68 void marginsLayout(bool adapted);
69 void initdata();
70 void initconnections();
71 void setfrmaeback(DFrame *frame);
72 void showadvancesetting();
73 void setupPrinter();
74 void setScaling(int index);
75 void judgeSupportedAttributes(const QString &lastPaperSize);
76 void setMininumMargins();
77 void marginsUpdate(bool isPrinterChanged);
78 void adjustMargins();
79 void themeTypeChange(DGuiApplicationHelper::ColorType themeType);
80 void setPageIsLegal(bool islegal);
81 void tipSelected(TipsNum tipNum);
82 QVector<int> checkDuplication(QVector<int> data);
83
84 void updateSubControlSettings(DPrintPreviewSettingInfo::SettingType setting);
85 void updateAllControlSettings();
86 void updateAllContentSettings_impl();
87 void updateAllControlStatus();
88
89 void setEnable(const int &value, DComboBox *combox); //控件可用
90 void setTurnPageBtnStatus();
91 void watermarkTypeChoosed(int index);
92 void customPictureWatermarkChoosed(const QString &filename);
93 void waterMarkBtnClicked(bool checked);
94 void disablePrintSettings();
95 void setPageLayoutEnable(const bool &checked);
96 void matchFitablePageSize();
97 bool isActualPrinter(const QString &name);
98 QStringList availablePrinterNames();
99 void fetchPrinterInfo();
100 void discardPrinterInfoRequest();
101 void applyPrinterInfo();
102 QString getColorModeConfig(const QString &printer);
103 void saveColorModeConfig(const QString &printer, const QString &colorMode);
104
105 void _q_printerChanged(int index);
106 void _q_pageRangeChanged(int index);
107 void _q_pageMarginChanged(int index);
108 void _q_ColorModeChange(int index);
109 void _q_startPrint(bool clicked);
110 void _q_orientationChanged(int index);
111 void _q_customPagesFinished();
112 void _q_marginspinChanged(double);
113 void _q_marginEditFinished();
114 void _q_currentPageSpinChanged(int value);
115 void _q_checkStateChanged(int state);
116 void _q_textWaterMarkModeChanged(int index);
117 void _q_customTextWatermarkFinished();
118 void _q_colorButtonCliked(bool cliked);
119 void _q_selectColorButton(QColor color);
120 void _q_pagePersheetComboIndexChanged(int index);
121 void _q_printOrderComboIndexChanged(int index);
122 void _q_spinboxValueEmptyChecked(const QString &);
123
124 void pageRangeError(TipsNum tipNum);
125
126 //printer
127 DPrinter *printer = nullptr;
128 QSharedPointer<DPrinter> printerOwner;
129 QString pendingDocName;
130 QList<QSharedPointer<DPrintPreviewSettingInfo>> pendingSettings;
131 int totalPages = 0;
132 bool fontSizeMore = false;
133 QString lastPageRange = "";
134 bool supportedDuplexFlag = false;
135 bool supportedColorMode = false;
136 bool isInited = false;
137 int strLengths = 0;
138 bool isOnFocus = false;
139 QString lastCusWatermarkText = "";
140 bool isChecked = false;
141 bool isEventHide = false;
142 bool isInitBtnColor = false;
143 QColor waterColor;
144 int typeChoice = 0;
145 int directChoice = 0;
146
147 //control
148 DPrintPreviewWidget *pview = nullptr;
149 DBackgroundGroup *back = nullptr;
150 DWidget *basicsettingwdg = nullptr;
151 DWidget *advancesettingwdg = nullptr;
152 DWidget *watermarksettingwdg = nullptr;
153 DWidget *textWatermarkWdg = nullptr;
154 DWidget *picWatermarkWdg = nullptr;
155 DIconButton *firstBtn = nullptr;
156 DIconButton *prevPageBtn = nullptr;
157 DSpinBox *jumpPageEdit = nullptr;
158 DLabel *totalPageLabel = nullptr;
159 DLabel *originTotalPageLabel = nullptr;
160 DIconButton *nextPageBtn = nullptr;
161 DIconButton *lastBtn = nullptr;
162 DPushButton *cancelBtn = nullptr;
163 DSuggestButton *printBtn = nullptr;
164 DPushButton *advanceBtn = nullptr;
165 DScrollArea *scrollarea = nullptr;
166 DComboBox *printDeviceCombo = nullptr;
167 DSpinBox *copycountspinbox = nullptr;
168 DComboBox *pageRangeCombo = nullptr;
169 DLineEdit *pageRangeEdit = nullptr;
170 QButtonGroup *orientationgroup = nullptr;
171 DComboBox *colorModeCombo = nullptr;
172 DComboBox *marginsCombo = nullptr;
173 DDoubleSpinBox *marginTopSpin = nullptr;
174 DDoubleSpinBox *marginBottomSpin = nullptr;
175 DDoubleSpinBox *marginLeftSpin = nullptr;
176 DDoubleSpinBox *marginRightSpin = nullptr;
177 QButtonGroup *scaleGroup = nullptr;
178 DSpinBox *scaleRateEdit = nullptr;
179 DComboBox *duplexCombo = nullptr;
180 DCheckBox *duplexCheckBox = nullptr;
181 DComboBox *paperSizeCombo = nullptr;
182 DComboBox *pagePerSheetCombo = nullptr;
183 DCheckBox *sidebysideCheckBox = nullptr;
184 QButtonGroup *directGroup = nullptr;
185 QButtonGroup *printOrderGroup = nullptr; //打印顺序
186 DComboBox *inorderCombo = nullptr;
187 DComboBox *waterTextCombo = nullptr; //添加水印类型
188 DIconButton *waterColorBtn = nullptr;
189 DLineEdit *waterTextEdit = nullptr; //文字水印内容
190 DComboBox *fontCombo = nullptr;
191 DSwitchButton *waterMarkBtn = nullptr;
192 DFileChooserEdit *picPathEdit = nullptr; //图片水印路径
193 QButtonGroup *waterTypeGroup = nullptr;
194 DComboBox *waterPosCombox = nullptr; //水印位置
195 DSpinBox *inclinatBox = nullptr; //倾度
196 DSlider *waterSizeSlider = nullptr;
197 DSpinBox *sizeBox = nullptr;
198 DSlider *wmOpaSlider = nullptr; //水印透明度
199 DSpinBox *opaBox = nullptr;
200 QVector<qreal> marginOldValue; // 记录margin自定义时的旧值 如果旧值和新值一致,就不需要刷新,top left right bottom
201 QList<qreal> minnumMargins;
202 QStringList printerNames;
203 bool printerInfoReady = false;
204 bool pageIsLegal = true;
205 QPointer<QFutureWatcher<QStringList>> printerNamesWatcher;
207 QString name;
208 QSharedPointer<DPrinter> printer;
209 };
210 QPointer<QFutureWatcher<DefaultPrinterInfo>> defaultPrinterWatcher;
211 QSpacerItem *spacer = nullptr;
212 QSpacerItem *wmSpacer = nullptr;
213 DFloatingWidget *colorWidget = nullptr;
214 DRadioButton *printInOrderRadio = nullptr;
215 DWidget *inorderwdg = nullptr;
216 DPrintPickColorWidget *pickColorWidget = nullptr;
217 QHash<QWidget *, QString> spinboxTextCaches;
218 PreviewSettingsPluginHelper *settingHelper;
219 QBasicTimer settingUpdateTimer;
220 Q_DECLARE_PUBLIC(DPrintPreviewDialog)
221};
222
224{
225public:
227 DPrintPreviewSettingInfo *loadInfo(DPrintPreviewSettingInfo::SettingType type, bool manual = false);
228
229 void setSubControlVisible(DPrintPreviewSettingInterface::SettingSubControl subControlType, bool visible);
230 void setSubControlEnabled(DPrintPreviewSettingInterface::SettingSubControl subControlType, bool enabled);
231
232 void updateSettingInfo(DPrintPreviewSettingInfo *info);
233 void updateSettingStatus(DPrintPreviewSettingInterface::SettingSubControl subControlType);
234
235 static void loadPlugin();
236 static void setPluginMimeData(const QVariant &data);
237 static QVariant pluginMimeData();
238
239 static QString currentPlugin();
240 static bool setCurrentPlugin(const QString &pluginName);
241
242 static QStringList availablePlugins();
243protected:
244 void doUpdateStatus(QWidget *source, DPrintPreviewSettingInterface::SettingSubControl subControlType, bool visible, bool enabled);
245 QWidgetList subControl(DPrintPreviewSettingInterface::SettingSubControl subControlType) const;
246 static QString pluginPath();
247
248private:
250 static QVariant m_printSettingData;
251 static DPrintPreviewSettingInterface *m_currentInterface;
252 static QList<DPrintPreviewSettingInterface *> m_availablePlugins;
253};
254
255DWIDGET_END_NAMESPACE
256
257#endif // DPRINTPREVIEWDIALOG_P_H
DBackgroundGroup提供了将布局控件改成圆角边框(将布局看成一个整体)
Definition dbackgroundgroup.h:17
DComboBox 重写QComboBox, 提供一个下拉列表供用户选择
Definition dcombobox.h:16
Definition ddialog_p.h:26
类似 DDoubleSpinBox
Definition dspinbox.h:57
带有选择文件按钮的文本编辑框
Definition dfilechooseredit.h:15
Definition dfloatingwidget.h:19
继承自QFrame类, 支持设置边框圆角,背景画刷功能
Definition dframe.h:18
按钮的图标
Definition diconbutton.h:24
DLabel一个重新实现的 QLabel。
Definition dlabel.h:18
DLineEdit一个聚合 QLineEdit 的输入框.
Definition dlineedit.h:20
Definition dprintpickcolorwidget.h:94
Definition dprintpreviewdialog_p.h:45
Dtk 风格的打印预览页面.
Definition dprintpreviewdialog.h:18
Definition dprintpreviewsettinginfo.h:15
Definition dprintpreviewsettinginterface.h:16
Definition dprintpreviewwidget.h:45
Definition dprintpreviewwidget.h:30
DSlider一个聚合 QSlider 的滑块,DSlider提供了在滑块两侧设置图标函数,且设置的滑块更加美观
Definition dslider.h:20
deepin风格的QSpinBox.
Definition dspinbox.h:17
这个控件提供了DTK中默认的建议按钮样式.点击按钮后会显示相应的建议信息
Definition dsuggestbutton.h:16
DSwitchButton 实现一个开关按钮
Definition dswitchbutton.h:19
Definition dprintpreviewdialog_p.h:224