File indexing completed on 2024-04-28 16:44:32

0001 /*
0002  * SPDX-FileCopyrightText: 2014 Martin Gräßlin <mgraesslin@kde.org>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005  */
0006 #include "mockclient.h"
0007 #include <decoratedclient.h>
0008 
0009 #include <QPalette>
0010 
0011 MockClient::MockClient(KDecoration2::DecoratedClient *client, KDecoration2::Decoration *decoration)
0012     : QObject()
0013     , ApplicationMenuEnabledDecoratedClientPrivate(client, decoration)
0014 {
0015 }
0016 
0017 Qt::Edges MockClient::adjacentScreenEdges() const
0018 {
0019     return Qt::Edges();
0020 }
0021 
0022 QString MockClient::caption() const
0023 {
0024     return QString();
0025 }
0026 
0027 WId MockClient::decorationId() const
0028 {
0029     return 0;
0030 }
0031 
0032 int MockClient::desktop() const
0033 {
0034     return 1;
0035 }
0036 
0037 int MockClient::height() const
0038 {
0039     return m_height;
0040 }
0041 
0042 QIcon MockClient::icon() const
0043 {
0044     return QIcon();
0045 }
0046 
0047 bool MockClient::isActive() const
0048 {
0049     return false;
0050 }
0051 
0052 bool MockClient::isCloseable() const
0053 {
0054     return m_closeable;
0055 }
0056 
0057 bool MockClient::isKeepAbove() const
0058 {
0059     return m_keepAbove;
0060 }
0061 
0062 bool MockClient::isKeepBelow() const
0063 {
0064     return m_keepBelow;
0065 }
0066 
0067 bool MockClient::isMaximizeable() const
0068 {
0069     return m_maximizable;
0070 }
0071 
0072 bool MockClient::isMaximized() const
0073 {
0074     return isMaximizedHorizontally() && isMaximizedVertically();
0075 }
0076 
0077 bool MockClient::isMaximizedHorizontally() const
0078 {
0079     return m_maximizedHorizontally;
0080 }
0081 
0082 bool MockClient::isMaximizedVertically() const
0083 {
0084     return m_maximizedVertically;
0085 }
0086 
0087 bool MockClient::isMinimizeable() const
0088 {
0089     return m_minimizable;
0090 }
0091 
0092 bool MockClient::isModal() const
0093 {
0094     return false;
0095 }
0096 
0097 bool MockClient::isMoveable() const
0098 {
0099     return false;
0100 }
0101 
0102 bool MockClient::isOnAllDesktops() const
0103 {
0104     return m_onAllDesktops;
0105 }
0106 
0107 bool MockClient::isResizeable() const
0108 {
0109     return false;
0110 }
0111 
0112 bool MockClient::isShadeable() const
0113 {
0114     return m_shadeable;
0115 }
0116 
0117 bool MockClient::isShaded() const
0118 {
0119     return m_shaded;
0120 }
0121 
0122 QPalette MockClient::palette() const
0123 {
0124     return QPalette();
0125 }
0126 
0127 bool MockClient::hasApplicationMenu() const
0128 {
0129     return true;
0130 }
0131 
0132 bool MockClient::isApplicationMenuActive() const
0133 {
0134     return false;
0135 }
0136 
0137 bool MockClient::providesContextHelp() const
0138 {
0139     return m_contextHelp;
0140 }
0141 
0142 void MockClient::requestClose()
0143 {
0144     Q_EMIT closeRequested();
0145 }
0146 
0147 void MockClient::requestContextHelp()
0148 {
0149     Q_EMIT quickHelpRequested();
0150 }
0151 
0152 void MockClient::requestToggleMaximization(Qt::MouseButtons buttons)
0153 {
0154     bool maximizedHorizontally = m_maximizedHorizontally;
0155     bool maximizedVertically = m_maximizedVertically;
0156     if (buttons.testFlag(Qt::LeftButton)) {
0157         maximizedHorizontally = !m_maximizedHorizontally;
0158         maximizedVertically = !m_maximizedVertically;
0159     }
0160     if (buttons.testFlag(Qt::MiddleButton)) {
0161         maximizedHorizontally = !m_maximizedHorizontally;
0162     }
0163     if (buttons.testFlag(Qt::RightButton)) {
0164         maximizedVertically = !m_maximizedVertically;
0165     }
0166     const bool wasMaximized = isMaximized();
0167     if (m_maximizedHorizontally != maximizedHorizontally) {
0168         m_maximizedHorizontally = maximizedHorizontally;
0169         Q_EMIT client()->maximizedHorizontallyChanged(m_maximizedHorizontally);
0170     }
0171     if (m_maximizedVertically != maximizedVertically) {
0172         m_maximizedVertically = maximizedVertically;
0173         Q_EMIT client()->maximizedVerticallyChanged(m_maximizedVertically);
0174     }
0175     if (wasMaximized != isMaximized()) {
0176         Q_EMIT client()->maximizedChanged(isMaximized());
0177     }
0178 }
0179 
0180 void MockClient::requestMinimize()
0181 {
0182     Q_EMIT minimizeRequested();
0183 }
0184 
0185 void MockClient::requestShowWindowMenu(const QRect &rect)
0186 {
0187     Q_EMIT menuRequested();
0188 }
0189 
0190 void MockClient::requestShowApplicationMenu(const QRect &rect, int actionId)
0191 {
0192     Q_UNUSED(rect);
0193     Q_UNUSED(actionId);
0194     Q_EMIT applicationMenuRequested(); // FIXME TODO pass geometry
0195 }
0196 
0197 void MockClient::requestToggleKeepAbove()
0198 {
0199     m_keepAbove = !m_keepAbove;
0200     Q_EMIT client()->keepAboveChanged(m_keepAbove);
0201 }
0202 
0203 void MockClient::requestToggleKeepBelow()
0204 {
0205     m_keepBelow = !m_keepBelow;
0206     Q_EMIT client()->keepBelowChanged(m_keepBelow);
0207 }
0208 
0209 void MockClient::requestToggleOnAllDesktops()
0210 {
0211     m_onAllDesktops = !m_onAllDesktops;
0212     Q_EMIT client()->onAllDesktopsChanged(m_onAllDesktops);
0213 }
0214 
0215 void MockClient::requestToggleShade()
0216 {
0217     m_shaded = !m_shaded;
0218     Q_EMIT client()->shadedChanged(m_shaded);
0219 }
0220 
0221 void MockClient::requestShowToolTip(const QString &text)
0222 {
0223     Q_UNUSED(text);
0224 }
0225 
0226 void MockClient::requestHideToolTip()
0227 {
0228 }
0229 
0230 QSize MockClient::size() const
0231 {
0232     return QSize(m_width, m_height);
0233 }
0234 
0235 int MockClient::width() const
0236 {
0237     return m_width;
0238 }
0239 
0240 QString MockClient::windowClass() const
0241 {
0242     return QString();
0243 }
0244 
0245 WId MockClient::windowId() const
0246 {
0247     return 0;
0248 }
0249 
0250 void MockClient::setCloseable(bool set)
0251 {
0252     m_closeable = set;
0253     Q_EMIT client()->closeableChanged(set);
0254 }
0255 
0256 void MockClient::setMinimizable(bool set)
0257 {
0258     m_minimizable = set;
0259     Q_EMIT client()->minimizeableChanged(set);
0260 }
0261 
0262 void MockClient::setProvidesContextHelp(bool set)
0263 {
0264     m_contextHelp = set;
0265     Q_EMIT client()->providesContextHelpChanged(set);
0266 }
0267 
0268 void MockClient::setShadeable(bool set)
0269 {
0270     m_shadeable = set;
0271     Q_EMIT client()->shadeableChanged(set);
0272 }
0273 
0274 void MockClient::setMaximizable(bool set)
0275 {
0276     m_maximizable = set;
0277     Q_EMIT client()->maximizeableChanged(set);
0278 }
0279 
0280 void MockClient::setWidth(int w)
0281 {
0282     m_width = w;
0283     Q_EMIT client()->widthChanged(w);
0284 }
0285 
0286 void MockClient::setHeight(int h)
0287 {
0288     m_height = h;
0289     Q_EMIT client()->heightChanged(h);
0290 }
0291 
0292 void MockClient::showApplicationMenu(int actionId)
0293 {
0294     Q_UNUSED(actionId)
0295 }