Skip to content

Commit 6660206

Browse files
caixr2318202781743
authored andcommitted
feat: 打印预览添加默认色彩配置
打印预览添加默认色彩配置,并根据修改保存配置 Log: 打印预览添加默认色彩配置 Task: https://pms.uniontech.com/task-view-323445.html Influence: 打印预览色彩配置 Change-Id: I7dff41ffb11976aefa80280a660c54ef0253581b fix: 修改打印机彩色文案 打印机色彩设置改为彩色/黑白 Log: 修改打印机彩色文案 Bug: https://pms.uniontech.com/bug-view-246741.html Influence: 打印预览 Change-Id: I1b85e36f0af3525707099687c616948ab0d81497
1 parent ff250f4 commit 6660206

File tree

2 files changed

+36
-5
lines changed

2 files changed

+36
-5
lines changed

src/widgets/dprintpreviewdialog.cpp

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@
2828
#include <DScrollBar>
2929
#include <DPlatformWindowHandle>
3030
#include <DIconTheme>
31+
#include <DConfig>
3132
#include <QPluginLoader>
33+
#include <QJsonDocument>
3234

3335
#include <QHBoxLayout>
3436
#include <QVBoxLayout>
@@ -81,6 +83,7 @@
8183
#define WATERLAYOUT_TILED 1
8284
#define WATERFONT_SIZE 65
8385

86+
DCORE_USE_NAMESPACE
8487
DWIDGET_BEGIN_NAMESPACE
8588

8689
static QLatin1String _d_printSettingNameMap[DPrintPreviewSettingInterface::SC_ControlCount] = {
@@ -476,7 +479,7 @@ void DPrintPreviewDialogPrivate::initadvanceui()
476479
DLabel *colorlabel = new DLabel(qApp->translate("DPrintPreviewDialogPrivate", "Color mode"));
477480
colorlabel->setSizePolicy(QSizePolicy::Maximum, colorlabel->sizePolicy().verticalPolicy());
478481
colorModeCombo = new DComboBox;
479-
colorModeCombo->addItems(QStringList() << qApp->translate("DPrintPreviewDialogPrivate", "Color") << qApp->translate("DPrintPreviewDialogPrivate", "Grayscale"));
482+
colorModeCombo->addItems(QStringList() << qApp->translate("DPrintPreviewDialogPrivate", "Full Color") << qApp->translate("DPrintPreviewDialogPrivate", "Grayscale"));
480483
colorlayout->addWidget(colorlabel, 4);
481484
colorlayout->addStretch(1);
482485
colorlayout->addWidget(colorModeCombo, 9);
@@ -1006,6 +1009,7 @@ void DPrintPreviewDialogPrivate::marginsLayout(bool adapted)
10061009

10071010
void DPrintPreviewDialogPrivate::initdata()
10081011
{
1012+
Q_Q(DPrintPreviewDialog);
10091013
QStringList itemlist;
10101014
itemlist << QPrinterInfo::availablePrinterNames()
10111015
<< qApp->translate("DPrintPreviewDialogPrivate", "Print to PDF")
@@ -1616,7 +1620,7 @@ void DPrintPreviewDialogPrivate::watermarkTypeChoosed(int index)
16161620
settingHelper->setSubControlEnabled(DPrintPreviewSettingInterface::SC_Watermark_TextFont, true);
16171621
settingHelper->setSubControlEnabled(DPrintPreviewSettingInterface::SC_Watermark_ImageEdit, false);
16181622
if (colorModeCombo->count() == 2 &&
1619-
colorModeCombo->currentText() == qApp->translate("DPrintPreviewDialogPrivate", "Color"))
1623+
colorModeCombo->currentText() == qApp->translate("DPrintPreviewDialogPrivate", "Full Color"))
16201624
settingHelper->setSubControlEnabled(DPrintPreviewSettingInterface::SC_Watermark_TextColor, true);
16211625
_q_textWaterMarkModeChanged(waterTextCombo->currentIndex());
16221626
initWaterSettings();
@@ -1702,7 +1706,7 @@ void DPrintPreviewDialogPrivate::_q_printerChanged(int index)
17021706
pickColorWidget->setRgbEdit(waterColor);
17031707
}
17041708
colorModeCombo->blockSignals(true);
1705-
colorModeCombo->addItem(qApp->translate("DPrintPreviewDialogPrivate", "Color"));
1709+
colorModeCombo->addItem(qApp->translate("DPrintPreviewDialogPrivate", "Full Color"));
17061710
// Ensure that the signal CurrentIndexChanged is triggered afterwards
17071711
colorModeCombo->setCurrentIndex(-1);
17081712
colorModeCombo->blockSignals(false);
@@ -1726,7 +1730,7 @@ void DPrintPreviewDialogPrivate::_q_printerChanged(int index)
17261730
// 后面连接了信号后,切换打印机时又会触发_q_printerChanged信号重新设置colorModeCombo,
17271731
// 为了避免多次触发currentIndexChanged信号,先block信号再手动触发
17281732
colorModeCombo->blockSignals(true);
1729-
colorModeCombo->setCurrentText(qApp->translate("DPrintPreviewDialogPrivate", "Color"));
1733+
colorModeCombo->setCurrentText(qApp->translate("DPrintPreviewDialogPrivate", getColorModeConfig(currentName) == "gray" ? "Grayscale" : "Full Color"));
17301734
colorModeCombo->blockSignals(false);
17311735
_q_ColorModeChange(colorModeCombo->currentIndex());
17321736
settingHelper->setSubControlEnabled(DPrintPreviewSettingInterface::SC_Watermark_TextColor, true);
@@ -1743,7 +1747,7 @@ void DPrintPreviewDialogPrivate::_q_printerChanged(int index)
17431747
settingHelper->setSubControlEnabled(DPrintPreviewSettingInterface::SC_DuplexWidget, false);
17441748
settingHelper->setSubControlEnabled(DPrintPreviewSettingInterface::SC_Watermark_TextColor, true);
17451749
colorModeCombo->blockSignals(true);
1746-
colorModeCombo->addItem(qApp->translate("DPrintPreviewDialogPrivate", "Color"));
1750+
colorModeCombo->addItem(qApp->translate("DPrintPreviewDialogPrivate", "Full Color"));
17471751
colorModeCombo->addItem(qApp->translate("DPrintPreviewDialogPrivate", "Grayscale"));
17481752
// Ensure that the signal CurrentIndexChanged is triggered afterwards
17491753
colorModeCombo->setCurrentIndex(-1);
@@ -1901,6 +1905,7 @@ void DPrintPreviewDialogPrivate::_q_ColorModeChange(int index)
19011905
supportedColorMode = false;
19021906
waterColor = QColor("#6f6f6f");
19031907
}
1908+
saveColorModeConfig(printDeviceCombo->currentText(), index == 0 ? "color" : "gray");
19041909
_q_selectColorButton(waterColor);
19051910
pickColorWidget->convertColor(waterColor);
19061911
}
@@ -2234,6 +2239,30 @@ bool DPrintPreviewDialogPrivate::isActualPrinter(const QString &name)
22342239
return printerNames.contains(name);
22352240
}
22362241

2242+
QString DPrintPreviewDialogPrivate::getColorModeConfig(const QString &printer)
2243+
{
2244+
DConfig config("org.deepin.dtk.preference");
2245+
QString colorMode = config.value("defaultColorMode", "color").toString();
2246+
QString colorConfig = config.value("colorMode").toString();
2247+
const QJsonDocument &document = QJsonDocument::fromJson(colorConfig.toUtf8());
2248+
const QJsonObject &obj = document.object();
2249+
if (obj.contains(printer)) {
2250+
colorMode = obj.value(printer).toString();
2251+
}
2252+
return colorMode;
2253+
}
2254+
2255+
void DPrintPreviewDialogPrivate::saveColorModeConfig(const QString &printer, const QString &colorMode)
2256+
{
2257+
DConfig config("org.deepin.dtk.preference");
2258+
QString colorConfig = config.value("colorMode").toString();
2259+
const QJsonDocument &document = QJsonDocument::fromJson(colorConfig.toUtf8());
2260+
QJsonObject obj = document.object();
2261+
obj.insert(printer, colorMode);
2262+
QJsonDocument doc(obj);
2263+
config.setValue("colorMode", doc.toJson(QJsonDocument::Compact));
2264+
}
2265+
22372266
/*!
22382267
\brief DPrintPreviewDialogPrivate::_q_colorButtonCliked 点击取色按钮显示取色窗口位置
22392268
*/

src/widgets/private/dprintpreviewdialog_p.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,8 @@ class DPrintPreviewDialogPrivate : public DDialogPrivate
9292
void setPageLayoutEnable(const bool &checked);
9393
void matchFitablePageSize();
9494
bool isActualPrinter(const QString &name);
95+
QString getColorModeConfig(const QString &printer);
96+
void saveColorModeConfig(const QString &printer, const QString &colorMode);
9597

9698
void _q_printerChanged(int index);
9799
void _q_pageRangeChanged(int index);

0 commit comments

Comments
 (0)