summaryrefslogtreecommitdiffstats
path: root/kwin-styles/riscos/Manager.cpp
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2011-11-07 21:50:31 -0600
committerTimothy Pearson <kb9vqf@pearsoncomputing.net>2011-11-07 21:50:31 -0600
commite35f3fe53cd8df85d4fd04e49dfffbaeac971cdf (patch)
tree95836fc22de909b3b20dbf3fc3dea230e5e58e3b /kwin-styles/riscos/Manager.cpp
parenta5355f151396be579eba5838c7d8d93a43362cd7 (diff)
downloadtdeartwork-e35f3fe53cd8df85d4fd04e49dfffbaeac971cdf.tar.gz
tdeartwork-e35f3fe53cd8df85d4fd04e49dfffbaeac971cdf.zip
Rename kwin to twin (Part 2 of 2)
Diffstat (limited to 'kwin-styles/riscos/Manager.cpp')
-rw-r--r--kwin-styles/riscos/Manager.cpp767
1 files changed, 0 insertions, 767 deletions
diff --git a/kwin-styles/riscos/Manager.cpp b/kwin-styles/riscos/Manager.cpp
deleted file mode 100644
index 837bec9c..00000000
--- a/kwin-styles/riscos/Manager.cpp
+++ /dev/null
@@ -1,767 +0,0 @@
-/*
- RISC OS KWin client
-
- Copyright 2000
- Rik Hemsley <rik@kde.org>
-
- 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; see the file COPYING. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA.
-*/
-
-#include <unistd.h> // for usleep
-#include <config.h> // for usleep on non-linux platforms
-#include <math.h> // for sin and cos
-
-#include <tqapplication.h>
-#include <tqimage.h>
-#include <tqlabel.h>
-#include <tqlayout.h>
-#include <tqpainter.h>
-
-#include <netwm.h>
-
-#include "Manager.h"
-#include "Static.h"
-#include "AboveButton.h"
-#include "CloseButton.h"
-#include "HelpButton.h"
-#include "IconifyButton.h"
-#include "LowerButton.h"
-#include "MaximiseButton.h"
-#include "StickyButton.h"
-
-extern "C"
-{
- KDE_EXPORT KDecorationFactory* create_factory()
- {
- return new RiscOS::Factory();
- }
-}
-
-
-namespace RiscOS
-{
-
-Manager::Manager(KDecorationBridge *bridge,
- KDecorationFactory *factory)
- : KDecoration(bridge, factory),
- topLayout_ (NULL),
- titleLayout_ (NULL),
- titleSpacer_ (NULL)
-{
-}
-
-Manager::~Manager()
-{
-}
-
-void Manager::init()
-{
- createMainWidget(WNoAutoErase);
-
- widget()->installEventFilter(this);
- widget()->setBackgroundMode(NoBackground);
-
- leftButtonList_.setAutoDelete(true);
- rightButtonList_.setAutoDelete(true);
-
- resetLayout();
-}
-
-bool Manager::eventFilter(TQObject *o, TQEvent *e)
-{
- if (TQT_BASE_OBJECT(o) != TQT_BASE_OBJECT(widget())) return false;
- switch (e->type())
- {
- case TQEvent::Resize:
- resizeEvent(TQT_TQRESIZEEVENT(e));
- return true;
- case TQEvent::Paint:
- paintEvent(TQT_TQPAINTEVENT(e));
- return true;
- case TQEvent::MouseButtonDblClick:
- mouseDoubleClickEvent(TQT_TQMOUSEEVENT(e));
- return true;
- case TQEvent::MouseButtonPress:
- processMousePressEvent(TQT_TQMOUSEEVENT(e));
- return true;
- case TQEvent::Wheel:
- wheelEvent( TQT_TQWHEELEVENT( e ));
- return true;
- case TQEvent::MouseButtonRelease:
- return false;
- case TQEvent::Show:
- return false;
- case TQEvent::MouseMove:
- return false;
- case TQEvent::Enter:
- return false;
- case TQEvent::Leave:
- return false;
- case TQEvent::Move:
- return false;
- default:
- return false;
- }
-}
-
-void Manager::reset(unsigned long /*changed*/)
-{
- resetLayout();
-}
-
-void Manager::borders(int &left, int &right, int &top, int &bottom) const
-{
- left = right = 1;
- top = Static::instance()->titleHeight();
- bottom = isResizable() ? Static::instance()->resizeHeight() : 1;
-}
-
-void Manager::resize(const TQSize &s)
-{
- widget()->resize(s);
-}
-
-TQSize Manager::tqminimumSize() const
-{
- return widget()->tqminimumSize();
-}
-
-void Manager::activeChange()
-{
- updateTitleBuffer();
- widget()->tqrepaint();
- emit(activeChanged(isActive()));
-}
-
-void Manager::captionChange()
-{
- updateTitleBuffer();
- widget()->tqrepaint();
-}
-
-void Manager::iconChange()
-{
-}
-
-void Manager::maximizeChange()
-{
- emit(maximizeChanged(maximizeMode() == MaximizeFull));
-}
-
-void Manager::desktopChange()
-{
-}
-
-void Manager::shadeChange()
-{
-}
-
-void Manager::paintEvent(TQPaintEvent *e)
-{
- TQPainter p(widget());
-
- TQRect r(e->rect());
-
- bool intersectsLeft = r.intersects(TQRect(0, 0, 1, height()));
-
- bool intersectsRight =
- r.intersects(TQRect(width() - 1, 0, width(), height()));
-
- if (intersectsLeft || intersectsRight)
- {
- p.setPen(TQt::black);
-
- if (intersectsLeft)
- p.drawLine(0, r.top(), 0, r.bottom());
-
- if (intersectsRight)
- p.drawLine(width() - 1, r.top(), width() - 1, r.bottom());
- }
-
- Static * s = Static::instance();
-
- bool active = isActive();
-
- // Title bar.
-
- TQRect tr = titleSpacer_->tqgeometry();
- bitBlt(widget(), tr.topLeft(), &titleBuf_);
-
- // Resize bar.
-
- if (isResizable())
- {
- int rbt = height() - Static::instance()->resizeHeight(); // Resize bar top
-
- bitBlt(widget(), 0, rbt, &(s->resize(active)));
- bitBlt(widget(), 30, rbt, &(s->resizeMidLeft(active)));
-
- p.drawTiledPixmap(32, rbt, width() - 34,
- Static::instance()->resizeHeight(),
- s->resizeMidMid(active));
-
- bitBlt(widget(), width() - 32, rbt, &(s->resizeMidRight(active)));
- bitBlt(widget(), width() - 30, rbt, &(s->resize(active)));
- }
- else
- p.drawLine(1, height() - 1, width() - 2, height() - 1);
-}
-
-void Manager::resizeEvent(TQResizeEvent*)
-{
- updateButtonVisibility();
- updateTitleBuffer();
- widget()->tqrepaint();
-}
-
-void Manager::updateButtonVisibility()
-{
-#if 0
- enum SizeProblem = { None, Small, Medium, Big };
- SizeProblem sizeProblem = None;
-
- if (width() < 80) sizeProblem = Big;
- else if (width() < 100) sizeProblem = Medium;
- else if (width() < 180) sizeProblem = Small;
-
- switch (sizeProblem) {
-
- case Small:
- above_ ->hide();
- lower_ ->hide();
- sticky_ ->hide();
- help_ ->hide();
- iconify_ ->show();
- maximise_ ->hide();
- close_ ->show();
- break;
-
- case Medium:
- above_ ->hide();
- lower_ ->hide();
- sticky_ ->hide();
- help_ ->hide();
- iconify_ ->hide();
- maximise_ ->hide();
- close_ ->show();
- break;
-
- case Big:
- above_ ->hide();
- lower_ ->hide();
- sticky_ ->hide();
- help_ ->hide();
- iconify_ ->hide();
- maximise_ ->hide();
- close_ ->hide();
- break;
-
- case None:
- default:
- above_ ->show();
- lower_ ->show();
- sticky_ ->show();
- if (providesContextHelp())
- help_->show();
- iconify_ ->show();
- maximise_ ->show();
- close_ ->show();
- break;
- }
-
- tqlayout()->activate();
-#endif
-}
-
-void Manager::updateTitleBuffer()
-{
- bool active = isActive();
-
- Static * s = Static::instance();
-
- TQRect tr = titleSpacer_->tqgeometry();
-
- if (tr.width() == 0 || tr.height() == 0)
- titleBuf_.resize(8, 8);
- else
- titleBuf_.resize(tr.size());
-
- TQPainter p(&titleBuf_);
-
- p.drawPixmap(0, 0, s->titleTextLeft(active));
-
- p.drawTiledPixmap(3, 0, tr.width() - 6, Static::instance()->titleHeight(),
- s->titleTextMid(active));
-
- p.setPen(options()->color(KDecorationOptions::ColorFont, active));
-
- p.setFont(options()->font(active));
-
- p.drawText(4, 2, tr.width() - 8, Static::instance()->titleHeight() - 4,
- AlignCenter, caption());
-
- p.drawPixmap(tr.width() - 3, 0, s->titleTextRight(active));
-}
-
-KDecoration::Position Manager::mousePosition(const TQPoint& p) const
-{
- Position m = PositionCenter;
-
- // Look out for off-by-one errors here.
-
- if (isResizable())
- {
- if (p.y() > (height() - (Static::instance()->resizeHeight() + 1)))
- {
- // Keep order !
-
- if (p.x() >= (width() - 30))
- m = PositionBottomRight;
- else if (p.x() <= 30)
- m = PositionBottomLeft;
- else
- m = PositionBottom;
- }
- else
- {
- m = PositionCenter;
- // Client::mousePosition(p);
- }
- }
- else
- {
- m = PositionCenter;
- // Client::mousePosition(p);
- }
-
- return m;
-}
-
-void Manager::mouseDoubleClickEvent(TQMouseEvent *e)
-{
- if (e->button() == Qt::LeftButton && titleSpacer_->tqgeometry().contains(e->pos()))
- titlebarDblClickOperation();
-}
-
-void Manager::wheelEvent(TQWheelEvent *e)
-{
- if (isSetShade() || titleLayout_->tqgeometry().contains(e->pos()) )
- titlebarMouseWheelOperation( e->delta());
-}
-
-void Manager::paletteChange(const TQPalette &)
-{
- resetLayout();
-}
-
-void Manager::stickyChange(bool b)
-{
- emit(stickyChanged(b));
-}
-
-void Manager::slotToggleSticky()
-{
- toggleOnAllDesktops();
- emit(stickyChanged(isOnAllDesktops()));
-}
-
-void Manager::slotAbove()
-{
- setKeepAbove(!keepAbove());
-}
-
-void Manager::slotLower()
-{
- setKeepBelow(!keepBelow());
-}
-
-void Manager::slotMaximizeClicked(ButtonState state)
-{
-#if KDE_IS_VERSION(3, 3, 0)
- maximize(state);
-#else
- switch (state)
- {
- case RightButton:
- maximize(maximizeMode() ^ MaximizeHorizontal);
- break;
-
- case MidButton:
- maximize(maximizeMode() ^ MaximizeVertical);
- break;
-
- case LeftButton:
- default:
- maximize(maximizeMode() == MaximizeFull ? MaximizeRestore
- : MaximizeFull);
- break;
- }
-#endif
- emit(maximizeChanged(maximizeMode() == MaximizeFull));
-}
-
-bool Manager::animateMinimize(bool iconify)
-{
- int style = Static::instance()->animationStyle();
-
- switch (style)
- {
- case 1:
- {
- // Double twisting double back, with pike ;)
-
- if (!iconify) // No animation for restore.
- return true;
-
- // Go away quick.
- helperShowHide(false);
- tqApp->syncX();
-
- TQRect r = iconGeometry();
-
- if (!r.isValid())
- return true;
-
- // Algorithm taken from Window Maker (http://www.windowmaker.org)
-
- int sx = geometry().x();
- int sy = geometry().y();
- int sw = width();
- int sh = height();
- int dx = r.x();
- int dy = r.y();
- int dw = r.width();
- int dh = r.height();
-
- double steps = 12;
-
- double xstep = double((dx-sx)/steps);
- double ystep = double((dy-sy)/steps);
- double wstep = double((dw-sw)/steps);
- double hstep = double((dh-sh)/steps);
-
- double cx = sx;
- double cy = sy;
- double cw = sw;
- double ch = sh;
-
- double finalAngle = 3.14159265358979323846;
-
- double delta = finalAngle / steps;
-
- TQPainter p(workspaceWidget());
- p.setRasterOp(TQt::NotROP);
-
- for (double angle = 0; ; angle += delta)
- {
- if (angle > finalAngle)
- angle = finalAngle;
-
- double dx = (cw / 10) - ((cw / 5) * sin(angle));
- double dch = (ch / 2) * cos(angle);
- double midy = cy + (ch / 2);
-
- TQPoint p1(int(cx + dx), int(midy - dch));
- TQPoint p2(int(cx + cw - dx), p1.y());
- TQPoint p3(int(cx + dw + dx), int(midy + dch));
- TQPoint p4(int(cx - dx), p3.y());
-
- grabXServer();
-
- p.drawLine(p1, p2);
- p.drawLine(p2, p3);
- p.drawLine(p3, p4);
- p.drawLine(p4, p1);
-
- p.flush();
-
- usleep(500);
-
- p.drawLine(p1, p2);
- p.drawLine(p2, p3);
- p.drawLine(p3, p4);
- p.drawLine(p4, p1);
-
- ungrabXServer();
-
- cx += xstep;
- cy += ystep;
- cw += wstep;
- ch += hstep;
-
- if (angle >= finalAngle)
- break;
- }
- }
- break;
-
- case 2:
- {
- // KVirc style ? Maybe. For qwertz.
-
- if (!iconify) // No animation for restore.
- return true;
-
- // Go away quick.
- helperShowHide(false);
- tqApp->syncX();
-
- int stepCount = 12;
-
- TQRect r(geometry());
-
- int dx = r.width() / (stepCount * 2);
- int dy = r.height() / (stepCount * 2);
-
- TQPainter p(workspaceWidget());
- p.setRasterOp(TQt::NotROP);
-
- for (int step = 0; step < stepCount; step++)
- {
- r.moveBy(dx, dy);
- r.setWidth(r.width() - 2 * dx);
- r.setHeight(r.height() - 2 * dy);
-
- grabXServer();
-
- p.drawRect(r);
- p.flush();
- usleep(200);
- p.drawRect(r);
-
- ungrabXServer();
- }
- }
- break;
-
-
- default:
- {
- TQRect icongeom = iconGeometry();
-
- if (!icongeom.isValid())
- return true;
-
- TQRect wingeom = geometry();
-
- TQPainter p(workspaceWidget());
-
- p.setRasterOp(TQt::NotROP);
-#if 0
- if (iconify)
- p.setClipRegion(TQRegion(workspaceWidget()->rect()) - wingeom);
-#endif
- grabXServer();
-
- p.drawLine(wingeom.bottomRight(), icongeom.bottomRight());
- p.drawLine(wingeom.bottomLeft(), icongeom.bottomLeft());
- p.drawLine(wingeom.topLeft(), icongeom.topLeft());
- p.drawLine(wingeom.topRight(), icongeom.topRight());
-
- p.flush();
-
- tqApp->syncX();
-
- usleep(30000);
-
- p.drawLine(wingeom.bottomRight(), icongeom.bottomRight());
- p.drawLine(wingeom.bottomLeft(), icongeom.bottomLeft());
- p.drawLine(wingeom.topLeft(), icongeom.topLeft());
- p.drawLine(wingeom.topRight(), icongeom.topRight());
-
- ungrabXServer();
- }
- break;
- }
- return true;
-}
-
-void Manager::createTitle()
-{
- leftButtonList_.clear();
- rightButtonList_.clear();
-
- TQString buttons;
-
- if (options()->customButtonPositions())
- buttons = options()->titleButtonsLeft() + "|" +
- options()->titleButtonsRight();
- else
- buttons = "XSH|IA";
-
- TQPtrList<Button> *buttonList = &leftButtonList_;
-
- for (unsigned int i = 0; i < buttons.length(); ++i)
- {
- Button * tb = NULL;
-
- switch (buttons[i].latin1())
- {
- case 'S': // Sticky
- tb = new StickyButton(widget());
- connect(this, TQT_SIGNAL(stickyChanged(bool)),
- tb, TQT_SLOT(setOn(bool)));
- connect(tb, TQT_SIGNAL(toggleSticky()), this, TQT_SLOT(slotToggleSticky()));
- emit(stickyChanged(isOnAllDesktops()));
- break;
-
- case 'H': // Help
- if (providesContextHelp())
- {
- tb = new HelpButton(widget());
- connect(tb, TQT_SIGNAL(help()), this, TQT_SLOT(showContextHelp()));
- }
- break;
-
- case 'I': // Minimize
- if (isMinimizable())
- {
- tb = new IconifyButton(widget());
- connect(tb, TQT_SIGNAL(iconify()), this, TQT_SLOT(minimize()));
- }
- break;
-
- case 'A': // Maximize
- if (isMaximizable())
- {
- tb = new MaximiseButton(widget());
- connect(tb, TQT_SIGNAL(maximizeClicked(ButtonState)),
- this, TQT_SLOT(slotMaximizeClicked(ButtonState)));
- connect(this, TQT_SIGNAL(maximizeChanged(bool)),
- tb, TQT_SLOT(setOn(bool)));
- emit(maximizeChanged(maximizeMode() == MaximizeFull));
- }
- break;
-
- case 'F': // Above
- tb = new AboveButton(widget());
- connect(tb, TQT_SIGNAL(above()), this, TQT_SLOT(slotAbove()));
- break;
-
- case 'B': // Lower
- tb = new LowerButton(widget());
- connect(tb, TQT_SIGNAL(lower()), this, TQT_SLOT(slotLower()));
- break;
-
- case 'X': // Close
- if (isCloseable())
- {
- tb = new CloseButton(widget());
- connect(tb, TQT_SIGNAL(closeWindow()), this, TQT_SLOT(closeWindow()));
- }
- break;
-
- case '|':
- buttonList = &rightButtonList_;
- break;
- }
-
- if (tb != NULL)
- {
- connect(this, TQT_SIGNAL(activeChanged(bool)), tb, TQT_SLOT(setActive(bool)));
- buttonList->append(tb);
- }
- }
-
- for (TQPtrListIterator<Button> it(leftButtonList_); it.current(); ++it)
- {
- it.current()->tqsetAlignment(Button::Left);
- titleLayout_->addWidget(it.current());
- }
-
- titleSpacer_ = new TQSpacerItem(0, Static::instance()->titleHeight(),
- TQSizePolicy::Expanding, TQSizePolicy::Fixed);
-
- titleLayout_->addItem(titleSpacer_);
-
- for (TQPtrListIterator<Button> it(rightButtonList_); it.current(); ++it)
- {
- it.current()->tqsetAlignment(Button::Right);
- titleLayout_->addWidget(it.current());
- }
-}
-
-void Manager::resetLayout()
-{
- delete topLayout_;
- topLayout_ = new TQVBoxLayout(widget(), 0, 0);
- topLayout_->setResizeMode(TQLayout::FreeResize);
-
- titleLayout_ = new TQBoxLayout(topLayout_, TQBoxLayout::LeftToRight, 0, 0);
- titleLayout_->setResizeMode(TQLayout::FreeResize);
-
- createTitle();
-
- TQBoxLayout *midLayout = new TQBoxLayout(topLayout_, TQBoxLayout::LeftToRight,
- 0, 0);
- midLayout->setResizeMode(TQLayout::FreeResize);
- midLayout->addSpacing(1);
- if (isPreview())
- midLayout->addWidget(
- new TQLabel(i18n("<center><b>RiscOS preview</b></center>"), widget()));
- midLayout->addSpacing(1);
-
- if (isResizable())
- topLayout_->addSpacing(Static::instance()->resizeHeight());
- else
- topLayout_->addSpacing(1);
-}
-
-// --------------------
-
-Factory::Factory()
-{
- (void) RiscOS::Static::instance();
-}
-
-Factory::~Factory()
-{
- delete RiscOS::Static::instance();
-}
-
-bool Factory::reset(unsigned long /*changed*/)
-{
- RiscOS::Static::instance()->reset();
- return true;
-}
-
-bool Factory::supports( Ability ability )
-{
- switch( ability )
- {
- case AbilityAnnounceButtons:
- case AbilityButtonOnAllDesktops:
- case AbilityButtonHelp:
- case AbilityButtonMinimize:
- case AbilityButtonMaximize:
- case AbilityButtonClose:
- case AbilityButtonAboveOthers:
- case AbilityButtonBelowOthers:
- return true;
- default:
- return false;
- };
-}
-
-KDecoration* Factory::createDecoration(KDecorationBridge *bridge)
-{
- return new Manager(bridge, this);
-}
-
-} // End namespace
-
-// vim:ts=2:sw=2:tw=78
-#include "Manager.moc"