File indexing completed on 2024-04-28 04:57:36

0001 /***************************************************************************
0002  *   Copyright (C) 2009 Matthias Fuchs <mat69@gmx.net>                     *
0003  *                                                                         *
0004  *   This program is free software; you can redistribute it and/or modify  *
0005  *   it under the terms of the GNU General Public License as published by  *
0006  *   the Free Software Foundation; either version 2 of the License, or     *
0007  *   (at your option) any later version.                                   *
0008  *                                                                         *
0009  *   This program is distributed in the hope that it will be useful,       *
0010  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
0011  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
0012  *   GNU General Public License for more details.                          *
0013  *                                                                         *
0014  *   You should have received a copy of the GNU General Public License     *
0015  *   along with this program; if not, write to the                         *
0016  *   Free Software Foundation, Inc.,                                       *
0017  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA .        *
0018  ***************************************************************************/
0019 
0020 #include "generalwidget.h"
0021 
0022 #include <QTimeZone>
0023 
0024 #include "metalinker.h"
0025 
0026 GeneralWidget::GeneralWidget(QWidget *parent)
0027     : QWidget(parent)
0028 {
0029     ui.setupUi(this);
0030 
0031     ui.dynamic->setToolTip(ui.labelDynamic->toolTip());
0032 
0033     connect(ui.publishedGroupBox, &QGroupBox::toggled, this, &GeneralWidget::slotPublishedEnabled);
0034     connect(ui.updatedGroupBox, &QGroupBox::toggled, this, &GeneralWidget::slotUpdatedEnabled);
0035 }
0036 
0037 void GeneralWidget::load(const KGetMetalink::Metalink &metalink) const
0038 {
0039     ui.origin->setUrl(metalink.origin);
0040     ui.dynamic->setChecked(metalink.dynamic);
0041 
0042     ui.publishedGroupBox->setChecked(metalink.published.isValid());
0043     ui.use_publishedtimeoffset->setChecked(metalink.published.timeZoneOffset.isValid());
0044     if (metalink.published.isValid()) {
0045         ui.published->setDateTime(metalink.published.dateTime);
0046         ui.publishedoffset->setTime(metalink.published.timeZoneOffset);
0047         ui.publishedNegative->setChecked(metalink.published.negativeOffset);
0048     } else {
0049         ui.published->setDateTime(QDateTime::currentDateTime());
0050         QDateTime a = QDateTime::currentDateTime();
0051         a.setTimeZone(QTimeZone::systemTimeZone());
0052         int offset = a.offsetFromUtc();
0053         const bool negativeOffset = (offset < 0);
0054         offset = abs(offset);
0055         QTime time = QTime(0, 0, 0);
0056         time = time.addSecs(abs(offset));
0057         ui.publishedoffset->setTime(time);
0058 
0059         // to not enable publishedNegative block the signals
0060         ui.use_publishedtimeoffset->blockSignals(true);
0061         ui.use_publishedtimeoffset->setChecked(true);
0062         ui.use_publishedtimeoffset->blockSignals(false);
0063 
0064         ui.publishedNegative->setChecked(negativeOffset);
0065     }
0066 
0067     ui.updatedGroupBox->setChecked(metalink.updated.isValid());
0068     ui.use_updatedtimeoffset->setChecked(metalink.updated.timeZoneOffset.isValid());
0069     if (metalink.updated.isValid()) {
0070         ui.updated->setDateTime(metalink.updated.dateTime);
0071         ui.updatedoffset->setTime(metalink.updated.timeZoneOffset);
0072         ui.updatedNegative->setChecked(metalink.updated.negativeOffset);
0073     } else {
0074         ui.updated->setDateTime(QDateTime::currentDateTime());
0075         QDateTime a = QDateTime::currentDateTime();
0076         a.setTimeZone(QTimeZone::systemTimeZone());
0077         int offset = a.offsetFromUtc();
0078         const bool negativeOffset = (offset < 0);
0079         QTime time = QTime(0, 0, 0);
0080         time = time.addSecs(abs(offset));
0081         ui.updatedoffset->setTime(time);
0082 
0083         // to not enable publishedNegative block the signals
0084         ui.use_updatedtimeoffset->blockSignals(true);
0085         ui.use_updatedtimeoffset->setChecked(true);
0086         ui.use_updatedtimeoffset->blockSignals(false);
0087 
0088         ui.updatedNegative->setChecked(negativeOffset);
0089     }
0090 }
0091 
0092 void GeneralWidget::save(KGetMetalink::Metalink *metalink)
0093 {
0094     metalink->origin = QUrl(ui.origin->text());
0095     metalink->dynamic = ui.dynamic->isChecked();
0096 
0097     metalink->published.clear();
0098     if (ui.publishedGroupBox->isChecked()) {
0099         metalink->published.dateTime = ui.published->dateTime();
0100         if (ui.use_publishedtimeoffset->isChecked()) {
0101             metalink->published.timeZoneOffset = ui.publishedoffset->time();
0102         }
0103     }
0104 
0105     metalink->updated.clear();
0106     if (ui.updatedGroupBox->isChecked()) {
0107         metalink->updated.dateTime = ui.updated->dateTime();
0108         if (ui.use_updatedtimeoffset->isChecked()) {
0109             metalink->updated.timeZoneOffset = ui.updatedoffset->time();
0110         }
0111     }
0112 }
0113 
0114 void GeneralWidget::slotPublishedEnabled(bool enabled)
0115 {
0116     if (enabled) {
0117         ui.publishedNegative->setEnabled(ui.use_publishedtimeoffset->isChecked());
0118     }
0119 }
0120 
0121 void GeneralWidget::slotUpdatedEnabled(bool enabled)
0122 {
0123     if (enabled) {
0124         ui.updatedNegative->setEnabled(ui.use_updatedtimeoffset->isChecked());
0125     }
0126 }
0127 
0128 #include "moc_generalwidget.cpp"