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 }