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