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
22class QVBoxLayout;
23class QButtonGroup;
24class DScrollArea;
25class QPrinter;
26DWIDGET_BEGIN_NAMESPACE
27class DFrame;
28class DIconButton;
29class DLineEdit;
30class DFileChooserEdit;
31class DLabel;
32class DSpinBox;
33class DSwitchButton;
34class DCommandLinkButton;
35class DSuggestButton;
36class DDoubleSpinBox;
37class DSlider;
38class DBackgroundGroup;
39class DToolButton;
40class PreviewSettingsPluginHelper;
42{
43public:
44 enum TipsNum {
45 NullTip,
46 MaxTip,
47 CommaTip,
48 FormatTip
49 };
50 enum WaterMarkType {
51 Type_None,
52 Type_Text,
53 Type_Image
54 };
55
57 void startup();
58 void initui();
59 void initleft(QVBoxLayout *layout);
60 void initright(QVBoxLayout *layout);
61 void initbasicui();
62 void initadvanceui();
63 void initWaterMarkui();
64 void initWaterSettings();
65 void marginsLayout(bool adapted);
66 void initdata();
67 void initconnections();
68 void setfrmaeback(DFrame *frame);
69 void showadvancesetting();
70 void setupPrinter();
71 void setScaling(int index);
72 void judgeSupportedAttributes(const QString &lastPaperSize);
73 void setMininumMargins();
74 void marginsUpdate(bool isPrinterChanged);
75 void adjustMargins();
76 void themeTypeChange(DGuiApplicationHelper::ColorType themeType);
77 void setPageIsLegal(bool islegal);
78 void tipSelected(TipsNum tipNum);
79 QVector<int> checkDuplication(QVector<int> data);
80
81 void updateSubControlSettings(DPrintPreviewSettingInfo::SettingType setting);
82 void updateAllControlSettings();
83 void updateAllContentSettings_impl();
84 void updateAllControlStatus();
85
86 void setEnable(const int &value, DComboBox *combox); //控件可用
87 void setTurnPageBtnStatus();
88 void watermarkTypeChoosed(int index);
89 void customPictureWatermarkChoosed(const QString &filename);
90 void waterMarkBtnClicked(bool checked);
91 void disablePrintSettings();
92 void setPageLayoutEnable(const bool &checked);
93 void matchFitablePageSize();
94 bool isActualPrinter(const QString &name);
95 QStringList availablePrinterNames();
96 QString getColorModeConfig(const QString &printer);
97 void saveColorModeConfig(const QString &printer, const QString &colorMode);
98
99 void _q_printerChanged(int index);
100 void _q_pageRangeChanged(int index);
101 void _q_pageMarginChanged(int index);
102 void _q_ColorModeChange(int index);
103 void _q_startPrint(bool clicked);
104 void _q_orientationChanged(int index);
105 void _q_customPagesFinished();
106 void _q_marginspinChanged(double);
107 void _q_marginEditFinished();
108 void _q_currentPageSpinChanged(int value);
109 void _q_checkStateChanged(int state);
110 void _q_textWaterMarkModeChanged(int index);
111 void _q_customTextWatermarkFinished();
112 void _q_colorButtonCliked(bool cliked);
113 void _q_selectColorButton(QColor color);
114 void _q_pagePersheetComboIndexChanged(int index);
115 void _q_printOrderComboIndexChanged(int index);
116 void _q_spinboxValueEmptyChecked(const QString &);
117
118 void pageRangeError(TipsNum tipNum);
119
120 //printer
121 DPrinter *printer = nullptr;
122 int totalPages = 0;
123 bool fontSizeMore = false;
124 QString lastPageRange = "";
125 bool supportedDuplexFlag = false;
126 bool supportedColorMode = false;
127 bool isInited = false;
128 int strLengths = 0;
129 bool isOnFocus = false;
130 QString lastCusWatermarkText = "";
131 bool isChecked = false;
132 bool isEventHide = false;
133 bool isInitBtnColor = false;
134 QColor waterColor;
135 int typeChoice = 0;
136 int directChoice = 0;
137
138 //control
139 DPrintPreviewWidget *pview = nullptr;
140 DBackgroundGroup *back = nullptr;
141 DWidget *basicsettingwdg = nullptr;
142 DWidget *advancesettingwdg = nullptr;
143 DWidget *watermarksettingwdg = nullptr;
144 DWidget *textWatermarkWdg = nullptr;
145 DWidget *picWatermarkWdg = nullptr;
146 DIconButton *firstBtn = nullptr;
147 DIconButton *prevPageBtn = nullptr;
148 DSpinBox *jumpPageEdit = nullptr;
149 DLabel *totalPageLabel = nullptr;
150 DLabel *originTotalPageLabel = nullptr;
151 DIconButton *nextPageBtn = nullptr;
152 DIconButton *lastBtn = nullptr;
153 DPushButton *cancelBtn = nullptr;
154 DSuggestButton *printBtn = nullptr;
155 DPushButton *advanceBtn = nullptr;
156 DScrollArea *scrollarea = nullptr;
157 DComboBox *printDeviceCombo = nullptr;
158 DSpinBox *copycountspinbox = nullptr;
159 DComboBox *pageRangeCombo = nullptr;
160 DLineEdit *pageRangeEdit = nullptr;
161 QButtonGroup *orientationgroup = nullptr;
162 DComboBox *colorModeCombo = nullptr;
163 DComboBox *marginsCombo = nullptr;
164 DDoubleSpinBox *marginTopSpin = nullptr;
165 DDoubleSpinBox *marginBottomSpin = nullptr;
166 DDoubleSpinBox *marginLeftSpin = nullptr;
167 DDoubleSpinBox *marginRightSpin = nullptr;
168 QButtonGroup *scaleGroup = nullptr;
169 DSpinBox *scaleRateEdit = nullptr;
170 DComboBox *duplexCombo = nullptr;
171 DCheckBox *duplexCheckBox = nullptr;
172 DComboBox *paperSizeCombo = nullptr;
173 DComboBox *pagePerSheetCombo = nullptr;
174 DCheckBox *sidebysideCheckBox = nullptr;
175 QButtonGroup *directGroup = nullptr;
176 QButtonGroup *printOrderGroup = nullptr; //打印顺序
177 DComboBox *inorderCombo = nullptr;
178 DComboBox *waterTextCombo = nullptr; //添加水印类型
179 DIconButton *waterColorBtn = nullptr;
180 DLineEdit *waterTextEdit = nullptr; //文字水印内容
181 DComboBox *fontCombo = nullptr;
182 DSwitchButton *waterMarkBtn = nullptr;
183 DFileChooserEdit *picPathEdit = nullptr; //图片水印路径
184 QButtonGroup *waterTypeGroup = nullptr;
185 DComboBox *waterPosCombox = nullptr; //水印位置
186 DSpinBox *inclinatBox = nullptr; //倾度
187 DSlider *waterSizeSlider = nullptr;
188 DSpinBox *sizeBox = nullptr;
189 DSlider *wmOpaSlider = nullptr; //水印透明度
190 DSpinBox *opaBox = nullptr;
191 QVector<qreal> marginOldValue; // 记录margin自定义时的旧值 如果旧值和新值一致,就不需要刷新,top left right bottom
192 QList<qreal> minnumMargins;
193 QStringList printerNames;
194 bool printerNamesInited = false;
195 QSpacerItem *spacer = nullptr;
196 QSpacerItem *wmSpacer = nullptr;
197 DFloatingWidget *colorWidget = nullptr;
198 DRadioButton *printInOrderRadio = nullptr;
199 DWidget *inorderwdg = nullptr;
200 DPrintPickColorWidget *pickColorWidget = nullptr;
201 QHash<QWidget *, QString> spinboxTextCaches;
202 PreviewSettingsPluginHelper *settingHelper;
203 QBasicTimer settingUpdateTimer;
204 Q_DECLARE_PUBLIC(DPrintPreviewDialog)
205};
206
208{
209public:
211 DPrintPreviewSettingInfo *loadInfo(DPrintPreviewSettingInfo::SettingType type, bool manual = false);
212
213 void setSubControlVisible(DPrintPreviewSettingInterface::SettingSubControl subControlType, bool visible);
214 void setSubControlEnabled(DPrintPreviewSettingInterface::SettingSubControl subControlType, bool enabled);
215
216 void updateSettingInfo(DPrintPreviewSettingInfo *info);
217 void updateSettingStatus(DPrintPreviewSettingInterface::SettingSubControl subControlType);
218
219 static void loadPlugin();
220 static void setPluginMimeData(const QVariant &data);
221 static QVariant pluginMimeData();
222
223 static QString currentPlugin();
224 static bool setCurrentPlugin(const QString &pluginName);
225
226 static QStringList availablePlugins();
227protected:
228 void doUpdateStatus(QWidget *source, DPrintPreviewSettingInterface::SettingSubControl subControlType, bool visible, bool enabled);
229 QWidgetList subControl(DPrintPreviewSettingInterface::SettingSubControl subControlType) const;
230 static QString pluginPath();
231
232private:
234 static QVariant m_printSettingData;
235 static DPrintPreviewSettingInterface *m_currentInterface;
236 static QList<DPrintPreviewSettingInterface *> m_availablePlugins;
237};
238
239DWIDGET_END_NAMESPACE
240
241#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:42
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:208