1 /* ============================================================
2  *
3  * This file is a part of digiKam project
4  * https://www.digikam.org
5  *
6  * Date        : 2021-07-24
7  * Description : MJPEG Stream configuration dialog - Settings methods
8  *
9  * Copyright (C) 2021 by Gilles Caulier <caulier dot gilles at gmail dot com>
10  * Copyright (C) 2021 by Quoc Hưng Tran <quochungtran1999 at gmail dot com>
11  *
12  * This program is free software; you can redistribute it
13  * and/or modify it under the terms of the GNU General
14  * Public License as published by the Free Software Foundation;
15  * either version 2, or (at your option) any later version.
16  *
17  * This program is distributed in the hope that it will be useful,
18  * but WITHOUT ANY WARRANTY; without even the implied warranty of
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20  * GNU General Public License for more details.
21  *
22  * ============================================================ */
23 
24 #include "mjpegstreamdlg_p.h"
25 
26 namespace DigikamGenericMjpegStreamPlugin
27 {
28 
readSettings()29 void MjpegStreamDlg::readSettings()
30 {
31     KSharedConfig::Ptr config = KSharedConfig::openConfig();
32     KConfigGroup group        = config->group(d->mngr->configGroupName());
33 
34     d->startOnStartup->setChecked(group.readEntry(d->mngr->configStartServerOnStartupEntry(), false));
35     d->settings.readSettings(group);
36 
37     d->srvPort->blockSignals(true);
38     d->delay->blockSignals(true);
39     d->rate->blockSignals(true);
40     d->quality->blockSignals(true);
41     d->streamLoop->blockSignals(true);
42     d->typeVal->blockSignals(true);
43     d->effVal->blockSignals(true);
44     d->transVal->blockSignals(true);
45     d->showDate->blockSignals(true);
46     d->showApertureFocal->blockSignals(true);
47     d->showCapIfNoTitle->blockSignals(true);
48     d->showComment->blockSignals(true);
49     d->showExpoSensitivity->blockSignals(true);
50     d->showLensModel->blockSignals(true);
51     d->showMakeModel->blockSignals(true);
52     d->showName->blockSignals(true);
53     d->showTags->blockSignals(true);
54     d->showRating->blockSignals(true);
55     d->showTitle->blockSignals(true);
56     d->osdFont->blockSignals(true);
57 
58     d->srvPort->setValue(d->settings.port);
59     d->delay->setValue(d->settings.delay);
60     d->rate->setValue(d->settings.rate);
61     d->quality->setValue(d->settings.quality);
62     d->streamLoop->setChecked(d->settings.loop);
63     d->typeVal->setCurrentIndex(d->settings.outSize);
64     d->effVal->setCurrentIndex(d->settings.effect);
65     d->transVal->setCurrentIndex(d->settings.transition);
66     d->showDate->setChecked(d->settings.printDate);
67     d->showApertureFocal->setChecked(d->settings.printApertureFocal);
68     d->showCapIfNoTitle->setChecked(d->settings.printCapIfNoTitle);
69     d->showComment->setChecked(d->settings.printComment);
70     d->showExpoSensitivity->setChecked(d->settings.printExpoSensitivity);
71     d->showLensModel->setChecked(d->settings.printLensModel);
72     d->showMakeModel->setChecked(d->settings.printMakeModel);
73     d->showName->setChecked(d->settings.printName);
74     d->showTags->setChecked(d->settings.printTags);
75     d->showRating->setChecked(d->settings.printRating);
76     d->showTitle->setChecked(d->settings.printTitle);
77     d->osdFont->setFont(d->settings.osdFont);
78 
79     d->srvPort->blockSignals(false);
80     d->delay->blockSignals(false);
81     d->rate->blockSignals(false);
82     d->quality->blockSignals(false);
83     d->streamLoop->blockSignals(false);
84     d->typeVal->blockSignals(false);
85     d->effVal->blockSignals(false);
86     d->transVal->blockSignals(false);
87     d->showDate->blockSignals(false);
88     d->showApertureFocal->blockSignals(false);
89     d->showCapIfNoTitle->blockSignals(false);
90     d->showComment->blockSignals(false);
91     d->showExpoSensitivity->blockSignals(false);
92     d->showLensModel->blockSignals(false);
93     d->showMakeModel->blockSignals(false);
94     d->showName->blockSignals(false);
95     d->showTags->blockSignals(false);
96     d->showRating->blockSignals(false);
97     d->showTitle->blockSignals(false);
98     d->osdFont->blockSignals(false);
99 
100     slotSettingsChanged();
101 
102     updateServerStatus();
103 }
104 
saveSettings()105 void MjpegStreamDlg::saveSettings()
106 {
107     setMjpegServerContents();
108 
109     KSharedConfig::Ptr config = KSharedConfig::openConfig();
110     KConfigGroup group        = config->group(d->mngr->configGroupName());
111     group.writeEntry(d->mngr->configStartServerOnStartupEntry(), d->startOnStartup->isChecked());
112     d->settings.writeSettings(group);
113     config->sync();
114 }
115 
slotSettingsChanged()116 void MjpegStreamDlg::slotSettingsChanged()
117 {
118     d->settings.port                  = d->srvPort->value();
119     d->settings.delay                 = d->delay->value();
120     d->settings.rate                  = d->rate->value();
121     d->settings.quality               = d->quality->value();
122     d->settings.loop                  = d->streamLoop->isChecked();
123     d->settings.outSize               = d->typeVal->currentIndex();
124     d->settings.effect                = (EffectMngr::EffectType)d->effVal->currentIndex();
125     d->settings.transition            = (TransitionMngr::TransType)d->transVal->currentIndex();
126     d->settings.printName             = d->showName->isChecked();
127     d->settings.printDate             = d->showDate->isChecked();
128     d->settings.printApertureFocal    = d->showApertureFocal->isChecked();
129     d->settings.printExpoSensitivity  = d->showExpoSensitivity->isChecked();
130     d->settings.printMakeModel        = d->showMakeModel->isChecked();
131     d->settings.printLensModel        = d->showLensModel->isChecked();
132     d->settings.printComment          = d->showComment->isChecked();
133     d->settings.printTitle            = d->showTitle->isChecked();
134     d->settings.printCapIfNoTitle     = d->showCapIfNoTitle->isChecked();
135     d->settings.printTags             = d->showTags->isChecked();
136     d->settings.printRating           = d->showRating->isChecked();
137     d->settings.osdFont               = d->osdFont->font();
138 
139     d->effPreview->stopPreview();
140     d->effPreview->startPreview(d->settings.effect);
141     d->transPreview->stopPreview();
142     d->transPreview->startPreview(d->settings.transition);
143 }
144 
145 } // namespace DigikamGenericMjpegStreamPlugin
146