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>
8183#define WATERLAYOUT_TILED 1
8284#define WATERFONT_SIZE 65
8385
86+ DCORE_USE_NAMESPACE
8487DWIDGET_BEGIN_NAMESPACE
8588
8689static 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
10071010void 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 */
0 commit comments