/******************************************************************** KWin - the KDE window manager This file is part of the KDE project. Copyright (C) 2009 Martin Gräßlin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . *********************************************************************/ #include "previewhandlerimpl.h" #include #include #include #include namespace KWin { namespace TabBox { PreviewClientImpl::PreviewClientImpl(WId id) : m_id(id) { } PreviewClientImpl::~PreviewClientImpl() { } QString PreviewClientImpl::caption() const { KWindowInfo info = KWindowSystem::windowInfo(m_id, NET::WMVisibleName); return info.visibleName(); } QPixmap PreviewClientImpl::icon(const QSize& size) const { return KWindowSystem::icon(m_id, size.width(), size.height(), true); } bool PreviewClientImpl::isMinimized() const { KWindowInfo info = KWindowSystem::windowInfo(m_id, NET::WMState | NET::XAWMState); return info.isMinimized(); } int PreviewClientImpl::width() const { return 0; // only needed for the outline - not needed in preview } int PreviewClientImpl::height() const { return 0; // only needed for the outline - not needed in preview } WId PreviewClientImpl::window() const { return m_id; } int PreviewClientImpl::x() const { return 0; // only needed for the outline - not needed in preview } int PreviewClientImpl::y() const { return 0; // only needed for the outline - not needed in preview } /******************************************************* * PreviewHandlerImpl *******************************************************/ PreviewHandlerImpl::PreviewHandlerImpl() { QList< WId > windows = KWindowSystem::stackingOrder(); foreach (WId w, windows) { m_stackingOrder.append(new PreviewClientImpl(w)); kDebug(1212) << "Window " << w; } } PreviewHandlerImpl::~PreviewHandlerImpl() { qDeleteAll(m_stackingOrder.begin(), m_stackingOrder.end()); m_stackingOrder.clear(); } TabBoxClient* PreviewHandlerImpl::clientToAddToList(TabBoxClient* client, int desktop, bool allDesktops) const { Q_UNUSED(desktop) Q_UNUSED(allDesktops) // don't include desktops and panels KWindowInfo info = KWindowSystem::windowInfo(client->window(), NET::WMWindowType); NET::WindowType wType = info.windowType(NET::NormalMask | NET::DesktopMask | NET::DockMask | NET::ToolbarMask | NET::MenuMask | NET::DialogMask | NET::OverrideMask | NET::TopMenuMask | NET::UtilityMask | NET::SplashMask); if (wType != NET::Normal && wType != NET::Override && wType != NET::Unknown && wType != NET::Dialog && wType != NET::Utility) { return NULL; } return client; } TabBoxClientList PreviewHandlerImpl::stackingOrder() const { return m_stackingOrder; } int PreviewHandlerImpl::nextDesktopFocusChain(int desktop) const { int ret = desktop + 1; if (ret > numberOfDesktops()) ret = 1; return ret; } int PreviewHandlerImpl::numberOfDesktops() const { return KWindowSystem::numberOfDesktops(); } int PreviewHandlerImpl::currentDesktop() const { return KWindowSystem::currentDesktop(); } QString PreviewHandlerImpl::desktopName(int desktop) const { return KWindowSystem::desktopName(desktop); } QString PreviewHandlerImpl::desktopName(TabBoxClient* client) const { Q_UNUSED(client) return desktopName(1); } TabBoxClient* PreviewHandlerImpl::nextClientFocusChain(TabBoxClient* client) const { if (m_stackingOrder.isEmpty()) return NULL; int index = m_stackingOrder.indexOf(client); index++; if (index >= m_stackingOrder.count()) index = 0; return m_stackingOrder[ index ]; } KWin::TabBox::TabBoxClient* PreviewHandlerImpl::activeClient() const { if (m_stackingOrder.isEmpty()) return NULL; return m_stackingOrder[ 0 ]; } int PreviewHandlerImpl::activeScreen() const { return 0; } TabBoxClient* PreviewHandlerImpl::desktopClient() const { return 0; } } // namespace TabBox } // namespace KWin