File indexing completed on 2024-04-28 05:52:07
0001 /* 0002 SPDX-FileCopyrightText: 1998-1999 Matthias Hölzer-Klüpfel <matthias@hoelzer-kluepfel.de> 0003 SPDX-FileCopyrightText: 2002-2003 Martin Willers <willers@xm-arts.de> 0004 SPDX-FileCopyrightText: 2003 Daniel Teske <teske@bigfoot.com> 0005 SPDX-FileCopyrightText: 2007-2009 Stefan Böhmann <kde@hilefoks.org> 0006 0007 SPDX-License-Identifier: GPL-2.0-or-later 0008 */ 0009 #include "timeedit.h" 0010 #include "toplevel.h" 0011 #include "tea.h" 0012 0013 #include <QScreen> 0014 #include <QGuiApplication> 0015 #include <QDialogButtonBox> 0016 #include <QPushButton> 0017 0018 #include <KConfigGroup> 0019 #include <KSharedConfig> 0020 0021 0022 class TimeEditUI : public QWidget, public Ui::TimeEditWidget 0023 { 0024 public: 0025 explicit TimeEditUI(QWidget *parent = nullptr) 0026 : QWidget( parent ) 0027 { 0028 setupUi( this ); 0029 } 0030 }; 0031 0032 0033 TimeEditDialog::TimeEditDialog(TopLevel *toplevel) 0034 : QDialog() 0035 , mUi(new TimeEditUI( this )) 0036 , mToplevel( toplevel ) 0037 { 0038 setWindowTitle( i18n( "Custom Tea" ) ); 0039 0040 mButtonBox = new QDialogButtonBox(QDialogButtonBox::Ok|QDialogButtonBox::Cancel); 0041 mButtonBox->button(QDialogButtonBox::Ok)->setWhatsThis(i18n( "Start a new custom tea with the time configured in this dialog." )); 0042 mButtonBox->button(QDialogButtonBox::Ok)->setDefault(true); 0043 mButtonBox->button(QDialogButtonBox::Ok)->setShortcut(Qt::CTRL | Qt::Key_Return); 0044 mButtonBox->button(QDialogButtonBox::Cancel)->setWhatsThis(i18n( "Close this dialog without starting a new tea." )); 0045 0046 QVBoxLayout *mainLayout = new QVBoxLayout; 0047 setLayout(mainLayout); 0048 mainLayout->addWidget(mUi); 0049 mainLayout->addWidget(mButtonBox); 0050 0051 KSharedConfigPtr config = KSharedConfig::openConfig(); 0052 KConfigGroup group( config, QStringLiteral("AnonymousTeaDialog") ); 0053 0054 int time=group.readEntry( "AnonymousTeaTime", 180 ); 0055 0056 mUi->minutes->setSuffix( ki18np( " minute", " minutes") ); 0057 mUi->seconds->setSuffix( ki18np( " second", " seconds") ); 0058 0059 mUi->minutes->setValue( time / 60 ); 0060 mUi->seconds->setValue( time % 60 ); 0061 0062 mUi->minutes->setFocus( Qt::ShortcutFocusReason ); 0063 0064 restoreGeometry(group.readEntry<QByteArray>("Geometry", QByteArray())); 0065 0066 const QSize desktopSize = qApp->primaryScreen()->size(); 0067 int x = group.readEntry( "AnonymousTeaDialogXPos", desktopSize.width()/2 - width()/2 ); 0068 int y = group.readEntry( "AnonymousTeaDialogYPos", desktopSize.height()/2 - height()/2 ); 0069 0070 x = qMin( qMax( 0, x ), desktopSize.width() - width() ); 0071 x = qMin( qMax( 0, y ), desktopSize.height() - height() ); 0072 move( QPoint( x, y ) ); 0073 0074 connect(mUi->minutes, &KPluralHandlingSpinBox::valueChanged, this, &TimeEditDialog::checkOkButtonState); 0075 connect(mUi->seconds, &KPluralHandlingSpinBox::valueChanged, this, &TimeEditDialog::checkOkButtonState); 0076 0077 connect(mButtonBox, &QDialogButtonBox::accepted, this, &TimeEditDialog::accept); 0078 connect(mButtonBox, &QDialogButtonBox::rejected, this, &TimeEditDialog::reject); 0079 } 0080 0081 0082 TimeEditDialog::~TimeEditDialog() 0083 { 0084 delete mUi; 0085 } 0086 0087 0088 void TimeEditDialog::checkOkButtonState() 0089 { 0090 mButtonBox->button(QDialogButtonBox::Ok)->setEnabled( mUi->minutes->value() || mUi->seconds->value() ); 0091 } 0092 0093 0094 void TimeEditDialog::accept() 0095 { 0096 hide(); 0097 0098 int time = mUi->seconds->value(); 0099 time += mUi->minutes->value() * 60; 0100 0101 KSharedConfigPtr config = KSharedConfig::openConfig(); 0102 KConfigGroup group( config, QStringLiteral("AnonymousTeaDialog") ); 0103 group.writeEntry( "AnonymousTeaTime", time ); 0104 group.writeEntry("Geometry", saveGeometry()); 0105 0106 group.writeEntry( "AnonymousTeaDialogXPos", x() ); 0107 group.writeEntry( "AnonymousTeaDialogYPos", y() ); 0108 0109 mToplevel->runTea( Tea( i18n( "Custom Tea" ), time ) ); 0110 } 0111 0112 0113 // kate: word-wrap off; encoding utf-8; indent-width 4; tab-width 4; line-numbers on; mixed-indent off; remove-trailing-space-save on; replace-tabs-save on; replace-tabs on; space-indent on; 0114 // vim:set spell et sw=4 ts=4 nowrap cino=l1,cs,U1: