DtkWidget
DTK Widget module
载入中...
搜索中...
未找到
dprintpreviewdialog_p.h
1// SPDX-FileCopyrightText: 2019 - 2022 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 QString getColorModeConfig(const QString &printer);
96 void saveColorModeConfig(const QString &printer, const QString &colorMode);
97
98 void _q_printerChanged(int index);
99 void _q_pageRangeChanged(int index);
100 void _q_pageMarginChanged(int index);
101 void _q_ColorModeChange(int index);
102 void _q_startPrint(bool clicked);
103 void _q_orientationChanged(int index);
104 void _q_customPagesFinished();
105 void _q_marginspinChanged(double);
106 void _q_marginEditFinished();
107 void _q_currentPageSpinChanged(int value);
108 void _q_checkStateChanged(int state);
109 void _q_textWaterMarkModeChanged(int index);
110 void _q_customTextWatermarkFinished();
111 void _q_colorButtonCliked(bool cliked);
112 void _q_selectColorButton(QColor color);
113 void _q_pagePersheetComboIndexChanged(int index);
114 void _q_printOrderComboIndexChanged(int index);
115 void _q_spinboxValueEmptyChecked(const QString &);
116
117 void pageRangeError(TipsNum tipNum);
118
119 //printer
120 DPrinter *printer = nullptr;
121 int totalPages = 0;
122 bool fontSizeMore = false;
123 QString lastPageRange = "";
124 bool supportedDuplexFlag = false;
125 bool supportedColorMode = false;
126 bool isInited = false;
127 int strLengths = 0;
128 bool isOnFocus = false;
129 QString lastCusWatermarkText = "";
130 bool isChecked = false;
131 bool isEventHide = false;
132 bool isInitBtnColor = false;
133 QColor waterColor;
134 int typeChoice = 0;
135 int directChoice = 0;
136
137 //control
138 DPrintPreviewWidget *pview = nullptr;
139 DBackgroundGroup *back = nullptr;
140 DWidget *basicsettingwdg = nullptr;
141 DWidget *advancesettingwdg = nullptr;
142 DWidget *watermarksettingwdg = nullptr;
143 DWidget *textWatermarkWdg = nullptr;
144 DWidget *picWatermarkWdg = nullptr;
145 DIconButton *firstBtn = nullptr;
146 DIconButton *prevPageBtn = nullptr;
147 DSpinBox *jumpPageEdit = nullptr;
148 DLabel *totalPageLabel = nullptr;
149 DLabel *originTotalPageLabel = nullptr;
150 DIconButton *nextPageBtn = nullptr;
151 DIconButton *lastBtn = nullptr;
152 DPushButton *cancelBtn = nullptr;
153 DSuggestButton *printBtn = nullptr;
154 DPushButton *advanceBtn = nullptr;
155 DScrollArea *scrollarea = nullptr;
156 DComboBox *printDeviceCombo = nullptr;
157 DSpinBox *copycountspinbox = nullptr;
158 DComboBox *pageRangeCombo = nullptr;
159 DLineEdit *pageRangeEdit = nullptr;
160 QButtonGroup *orientationgroup = nullptr;
161 DComboBox *colorModeCombo = nullptr;
162 DComboBox *marginsCombo = nullptr;
163 DDoubleSpinBox *marginTopSpin = nullptr;
164 DDoubleSpinBox *marginBottomSpin = nullptr;
165 DDoubleSpinBox *marginLeftSpin = nullptr;
166 DDoubleSpinBox *marginRightSpin = nullptr;
167 QButtonGroup *scaleGroup = nullptr;
168 DSpinBox *scaleRateEdit = nullptr;
169 DComboBox *duplexCombo = nullptr;
170 DCheckBox *duplexCheckBox = nullptr;
171 DComboBox *paperSizeCombo = nullptr;
172 DComboBox *pagePerSheetCombo = nullptr;
173 DCheckBox *sidebysideCheckBox = nullptr;
174 QButtonGroup *directGroup = nullptr;
175 QButtonGroup *printOrderGroup = nullptr; //打印顺序
176 DComboBox *inorderCombo = nullptr;
177 DComboBox *waterTextCombo = nullptr; //添加水印类型
178 DIconButton *waterColorBtn = nullptr;
179 DLineEdit *waterTextEdit = nullptr; //文字水印内容
180 DComboBox *fontCombo = nullptr;
181 DSwitchButton *waterMarkBtn = nullptr;
182 DFileChooserEdit *picPathEdit = nullptr; //图片水印路径
183 QButtonGroup *waterTypeGroup = nullptr;
184 DComboBox *waterPosCombox = nullptr; //水印位置
185 DSpinBox *inclinatBox = nullptr; //倾度
186 DSlider *waterSizeSlider = nullptr;
187 DSpinBox *sizeBox = nullptr;
188 DSlider *wmOpaSlider = nullptr; //水印透明度
189 DSpinBox *opaBox = nullptr;
190 QVector<qreal> marginOldValue; // 记录margin自定义时的旧值 如果旧值和新值一致,就不需要刷新,top left right bottom
191 QList<qreal> minnumMargins;
192 QSpacerItem *spacer = nullptr;
193 QSpacerItem *wmSpacer = nullptr;
194 DFloatingWidget *colorWidget = nullptr;
195 DRadioButton *printInOrderRadio = nullptr;
196 DWidget *inorderwdg = nullptr;
197 DPrintPickColorWidget *pickColorWidget = nullptr;
198 QHash<QWidget *, QString> spinboxTextCaches;
199 PreviewSettingsPluginHelper *settingHelper;
200 QBasicTimer settingUpdateTimer;
201 Q_DECLARE_PUBLIC(DPrintPreviewDialog)
202};
203
205{
206public:
208 DPrintPreviewSettingInfo *loadInfo(DPrintPreviewSettingInfo::SettingType type, bool manual = false);
209
210 void setSubControlVisible(DPrintPreviewSettingInterface::SettingSubControl subControlType, bool visible);
211 void setSubControlEnabled(DPrintPreviewSettingInterface::SettingSubControl subControlType, bool enabled);
212
213 void updateSettingInfo(DPrintPreviewSettingInfo *info);
214 void updateSettingStatus(DPrintPreviewSettingInterface::SettingSubControl subControlType);
215
216 static void loadPlugin();
217 static void setPluginMimeData(const QVariant &data);
218 static QVariant pluginMimeData();
219
220 static QString currentPlugin();
221 static bool setCurrentPlugin(const QString &pluginName);
222
223 static QStringList availablePlugins();
224protected:
225 void doUpdateStatus(QWidget *source, DPrintPreviewSettingInterface::SettingSubControl subControlType, bool visible, bool enabled);
226 QWidgetList subControl(DPrintPreviewSettingInterface::SettingSubControl subControlType) const;
227 static QString pluginPath();
228
229private:
231 static QVariant m_printSettingData;
232 static DPrintPreviewSettingInterface *m_currentInterface;
233 static QList<DPrintPreviewSettingInterface *> m_availablePlugins;
234};
235
236DWIDGET_END_NAMESPACE
237
238#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:205