Changeset View
Changeset View
Standalone View
Standalone View
kcm/src/controlpanel.cpp
Show First 20 Lines • Show All 47 Lines • ▼ Show 20 Line(s) | 45 | { | |||
---|---|---|---|---|---|
48 | delete mUnifiedOutputCfg; | 48 | delete mUnifiedOutputCfg; | ||
49 | mUnifiedOutputCfg = nullptr; | 49 | mUnifiedOutputCfg = nullptr; | ||
50 | 50 | | |||
51 | if (mConfig) { | 51 | if (mConfig) { | ||
52 | mConfig->disconnect(this); | 52 | mConfig->disconnect(this); | ||
53 | } | 53 | } | ||
54 | 54 | | |||
55 | mConfig = config; | 55 | mConfig = config; | ||
56 | mControlConfig = std::unique_ptr<ControlConfig>(new ControlConfig(config)); | ||||
56 | connect(mConfig.data(), &KScreen::Config::outputAdded, | 57 | connect(mConfig.data(), &KScreen::Config::outputAdded, | ||
57 | this, &ControlPanel::addOutput); | 58 | this, &ControlPanel::addOutput); | ||
58 | connect(mConfig.data(), &KScreen::Config::outputRemoved, | 59 | connect(mConfig.data(), &KScreen::Config::outputRemoved, | ||
59 | this, &ControlPanel::removeOutput); | 60 | this, &ControlPanel::removeOutput); | ||
60 | 61 | | |||
61 | for (const KScreen::OutputPtr &output : mConfig->outputs()) { | 62 | for (const KScreen::OutputPtr &output : mConfig->outputs()) { | ||
62 | addOutput(output); | 63 | addOutput(output); | ||
63 | } | 64 | } | ||
64 | } | 65 | } | ||
65 | 66 | | |||
66 | void ControlPanel::addOutput(const KScreen::OutputPtr &output) | 67 | void ControlPanel::addOutput(const KScreen::OutputPtr &output) | ||
67 | { | 68 | { | ||
68 | OutputConfig *outputCfg = new OutputConfig(this); | 69 | OutputConfig *outputCfg = new OutputConfig(this); | ||
69 | outputCfg->setVisible(false); | 70 | outputCfg->setVisible(false); | ||
70 | outputCfg->setShowScaleOption(mConfig->supportedFeatures().testFlag(KScreen::Config::Feature::PerOutputScaling)); | 71 | outputCfg->setShowScaleOption(mConfig->supportedFeatures().testFlag(KScreen::Config::Feature::PerOutputScaling)); | ||
71 | outputCfg->setOutput(output); | 72 | outputCfg->setOutput(output, mControlConfig->getOutputRetention(output)); | ||
72 | connect(outputCfg, &OutputConfig::changed, | 73 | connect(outputCfg, &OutputConfig::changed, | ||
73 | this, &ControlPanel::changed); | 74 | this, &ControlPanel::changed); | ||
74 | | ||||
75 | mLayout->addWidget(outputCfg); | 75 | mLayout->addWidget(outputCfg); | ||
76 | mOutputConfigs << outputCfg; | 76 | mOutputConfigs << outputCfg; | ||
77 | } | 77 | } | ||
78 | 78 | | |||
79 | void ControlPanel::removeOutput(int outputId) | 79 | void ControlPanel::removeOutput(int outputId) | ||
80 | { | 80 | { | ||
81 | for (OutputConfig *outputCfg : mOutputConfigs) { | 81 | for (OutputConfig *outputCfg : mOutputConfigs) { | ||
82 | if (outputCfg->output()->id() == outputId) { | 82 | if (outputCfg->output()->id() == outputId) { | ||
Show All 35 Lines | 117 | } else { | |||
118 | mUnifiedOutputCfg = new UnifiedOutputConfig(mConfig, this); | 118 | mUnifiedOutputCfg = new UnifiedOutputConfig(mConfig, this); | ||
119 | mUnifiedOutputCfg->setOutput(output); | 119 | mUnifiedOutputCfg->setOutput(output); | ||
120 | mUnifiedOutputCfg->setVisible(true); | 120 | mUnifiedOutputCfg->setVisible(true); | ||
121 | mLayout->insertWidget(mLayout->count() - 2, mUnifiedOutputCfg); | 121 | mLayout->insertWidget(mLayout->count() - 2, mUnifiedOutputCfg); | ||
122 | connect(mUnifiedOutputCfg, &UnifiedOutputConfig::changed, | 122 | connect(mUnifiedOutputCfg, &UnifiedOutputConfig::changed, | ||
123 | this, &ControlPanel::changed); | 123 | this, &ControlPanel::changed); | ||
124 | } | 124 | } | ||
125 | } | 125 | } | ||
126 | | ||||
127 | void ControlPanel::save() | ||||
128 | { | ||||
129 | if (!mControlConfig) { | ||||
130 | return; | ||||
131 | } | ||||
132 | for (const auto outputConfig : mOutputConfigs) { | ||||
133 | if (!outputConfig->hasChange()) { | ||||
134 | continue; | ||||
135 | } | ||||
136 | mControlConfig->setOutputRetention(outputConfig->output(), outputConfig->applyRetention()); | ||||
137 | } | ||||
138 | | ||||
139 | if (!mControlConfig->writeFile()) { | ||||
140 | // TODO: error handling | ||||
141 | } | ||||
142 | // TODO: write output controls in the future | ||||
143 | } |