File indexing completed on 2025-02-02 14:20:12
0001 /* 0002 This file is part of the KDE libraries 0003 SPDX-FileCopyrightText: 1999 Reginald Stadlbauer <reggie@kde.org> 0004 SPDX-FileCopyrightText: 1999 Simon Hausmann <hausmann@kde.org> 0005 SPDX-FileCopyrightText: 2000 Nicolas Hadacek <haadcek@kde.org> 0006 SPDX-FileCopyrightText: 2000 Kurt Granroth <granroth@kde.org> 0007 SPDX-FileCopyrightText: 2000 Michael Koch <koch@kde.org> 0008 SPDX-FileCopyrightText: 2001 Holger Freyther <freyther@kde.org> 0009 SPDX-FileCopyrightText: 2002 Ellis Whitehead <ellis@kde.org> 0010 SPDX-FileCopyrightText: 2002 Joseph Wenninger <jowenn@kde.org> 0011 SPDX-FileCopyrightText: 2003 Andras Mantia <amantia@kde.org> 0012 SPDX-FileCopyrightText: 2005-2006 Hamish Rodda <rodda@kde.org> 0013 0014 SPDX-License-Identifier: LGPL-2.0-only 0015 */ 0016 0017 #include "ktogglefullscreenaction.h" 0018 0019 #include "ktoggleaction_p.h" 0020 0021 #include <QEvent> 0022 #include <QWidget> 0023 0024 class KToggleFullScreenActionPrivate : public KToggleActionPrivate 0025 { 0026 Q_DECLARE_PUBLIC(KToggleFullScreenAction) 0027 0028 public: 0029 KToggleFullScreenActionPrivate(KToggleFullScreenAction *qq) 0030 : KToggleActionPrivate(qq) 0031 { 0032 } 0033 0034 void updateTextsAndIcon() 0035 { 0036 Q_Q(KToggleFullScreenAction); 0037 0038 q->setText(KToggleFullScreenAction::tr("F&ull Screen Mode", "@action:inmenu")); 0039 q->setIconText(KToggleFullScreenAction::tr("Full Screen", "@action:intoolbar")); 0040 q->setToolTip(KToggleFullScreenAction::tr("Display the window in full screen", "@info:tooltip")); 0041 q->setIcon(QIcon::fromTheme(QStringLiteral("view-fullscreen"))); 0042 } 0043 0044 QWidget *window = nullptr; 0045 }; 0046 0047 KToggleFullScreenAction::KToggleFullScreenAction(QObject *parent) 0048 : KToggleAction(*new KToggleFullScreenActionPrivate(this), parent) 0049 { 0050 Q_D(KToggleFullScreenAction); 0051 0052 d->updateTextsAndIcon(); 0053 } 0054 0055 KToggleFullScreenAction::KToggleFullScreenAction(QWidget *window, QObject *parent) 0056 : KToggleAction(*new KToggleFullScreenActionPrivate(this), parent) 0057 { 0058 Q_D(KToggleFullScreenAction); 0059 0060 d->updateTextsAndIcon(); 0061 setWindow(window); 0062 } 0063 0064 KToggleFullScreenAction::~KToggleFullScreenAction() = default; 0065 0066 void KToggleFullScreenAction::setWindow(QWidget *window) 0067 { 0068 Q_D(KToggleFullScreenAction); 0069 0070 if (d->window) { 0071 d->window->removeEventFilter(this); 0072 } 0073 0074 d->window = window; 0075 0076 if (d->window) { 0077 d->window->installEventFilter(this); 0078 } 0079 } 0080 0081 void KToggleFullScreenAction::slotToggled(bool checked) 0082 { 0083 KToggleAction::slotToggled(checked); 0084 } 0085 0086 bool KToggleFullScreenAction::eventFilter(QObject *object, QEvent *event) 0087 { 0088 Q_D(KToggleFullScreenAction); 0089 0090 if (object == d->window) { 0091 if (event->type() == QEvent::WindowStateChange) { 0092 if (d->window->isFullScreen() != isChecked()) { 0093 activate(QAction::Trigger); 0094 } 0095 } 0096 } 0097 0098 return false; 0099 } 0100 0101 void KToggleFullScreenAction::setFullScreen(QWidget *window, bool set) 0102 { 0103 if (set) { 0104 window->setWindowState(window->windowState() | Qt::WindowFullScreen); 0105 } else { 0106 window->setWindowState(window->windowState() & ~Qt::WindowFullScreen); 0107 } 0108 } 0109 0110 #include "moc_ktogglefullscreenaction.cpp"