File indexing completed on 2025-04-27 03:58:22
0001 /* ============================================================ 0002 * 0003 * This file is a part of digiKam project 0004 * https://www.digikam.org 0005 * 0006 * Date : 2015-05-29 0007 * Description : a combobox with time zones. 0008 * 0009 * SPDX-FileCopyrightText: 2015 by Maik Qualmann <metzpinguin at gmail dot com> 0010 * SPDX-FileCopyrightText: 2006-2024 by Gilles Caulier <caulier dot gilles at gmail dot com> 0011 * 0012 * SPDX-License-Identifier: GPL-2.0-or-later 0013 * 0014 * ============================================================ */ 0015 0016 #include "timezonecombobox.h" 0017 0018 namespace Digikam 0019 { 0020 0021 TimeZoneComboBox::TimeZoneComboBox(QWidget* const parent) 0022 : QComboBox(parent) 0023 { 0024 QStringList timeZones; 0025 timeZones << QLatin1String("") << QLatin1String("-12:00") 0026 << QLatin1String("-11:00") << QLatin1String("-10:00") 0027 << QLatin1String("-09:30") << QLatin1String("-09:00") 0028 << QLatin1String("-08:00") << QLatin1String("-07:00") 0029 << QLatin1String("-06:00") << QLatin1String("-05:00") 0030 << QLatin1String("-04:30") << QLatin1String("-04:00") 0031 << QLatin1String("-03:30") << QLatin1String("-03:00") 0032 << QLatin1String("-02:00") << QLatin1String("-01:00") 0033 << QLatin1String("+00:00") << QLatin1String("+01:00") 0034 << QLatin1String("+02:00") << QLatin1String("+03:00") 0035 << QLatin1String("+03:30") << QLatin1String("+04:00") 0036 << QLatin1String("+04:30") << QLatin1String("+05:00") 0037 << QLatin1String("+05:30") << QLatin1String("+05:45") 0038 << QLatin1String("+06:00") << QLatin1String("+06:30") 0039 << QLatin1String("+07:00") << QLatin1String("+08:00") 0040 << QLatin1String("+09:00") << QLatin1String("+09:30") 0041 << QLatin1String("+10:00") << QLatin1String("+10:30") 0042 << QLatin1String("+11:00") << QLatin1String("+11:30") 0043 << QLatin1String("+12:00") << QLatin1String("+12:45") 0044 << QLatin1String("+13:00") << QLatin1String("+13:45") 0045 << QLatin1String("+14:00"); 0046 0047 addItems(timeZones); 0048 } 0049 0050 TimeZoneComboBox::~TimeZoneComboBox() 0051 { 0052 } 0053 0054 void TimeZoneComboBox::setToUTC() 0055 { 0056 setCurrentIndex(findText(QLatin1String("+00:00"))); 0057 } 0058 0059 void TimeZoneComboBox::setTimeZone(const QString& timeStr) 0060 { 0061 if (timeStr.length() < 6) 0062 { 0063 setCurrentIndex(0); 0064 return; 0065 } 0066 0067 QString timeZone = timeStr.right(6); 0068 0069 if (timeZone.endsWith(QLatin1Char('Z'))) 0070 { 0071 setToUTC(); 0072 } 0073 else if ((timeZone.startsWith(QLatin1Char('+')) || 0074 timeZone.startsWith(QLatin1Char('-'))) && 0075 (timeZone.mid(3, 1) == QLatin1String(":"))) 0076 { 0077 setCurrentIndex(findText(timeZone)); 0078 } 0079 else 0080 { 0081 setCurrentIndex(0); 0082 } 0083 } 0084 0085 QString TimeZoneComboBox::getTimeZone() const 0086 { 0087 return currentText(); 0088 } 0089 0090 int TimeZoneComboBox::timeZoneOffset() const 0091 { 0092 QString tz = currentText(); 0093 0094 if (tz.isEmpty()) 0095 { 0096 return 0; 0097 } 0098 0099 int hh = QString(QString(tz[1]) + QString(tz[2])).toInt(); 0100 int mm = QString(QString(tz[4]) + QString(tz[5])).toInt(); 0101 0102 int offset = hh*3600 + mm*60; 0103 0104 if (tz[0] == QLatin1Char('-')) 0105 { 0106 offset = (-1) * offset; 0107 } 0108 0109 return offset; 0110 } 0111 0112 } // namespace Digikam 0113 0114 #include "moc_timezonecombobox.cpp"