summaryrefslogtreecommitdiffstats
path: root/kmdi/kmditaskbar.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kmdi/kmditaskbar.cpp')
-rw-r--r--kmdi/kmditaskbar.cpp394
1 files changed, 0 insertions, 394 deletions
diff --git a/kmdi/kmditaskbar.cpp b/kmdi/kmditaskbar.cpp
deleted file mode 100644
index 018e2b38e..000000000
--- a/kmdi/kmditaskbar.cpp
+++ /dev/null
@@ -1,394 +0,0 @@
-//----------------------------------------------------------------------------
-// filename : kmditaskbar.cpp
-//----------------------------------------------------------------------------
-// Project : KDE MDI extension
-//
-// begin : 07/1999 by Szymon Stefanek as part of kvirc
-// (an IRC application)
-// changes : 09/1999 by Falk Brettschneider to create an
-// - 06/2000 stand-alone Qt extension set of
-// classes and a Qt-based library
-// 2000-2003 maintained by the KDevelop project
-// patches : 02/2000 by Massimo Morin (mmorin@schedsys.com)
-//
-// copyright : (C) 1999-2003 by Szymon Stefanek (stefanek@tin.it)
-// and
-// Falk Brettschneider
-// email : falkbr@tdevelop.org (Falk Brettschneider)
-//----------------------------------------------------------------------------
-//
-//----------------------------------------------------------------------------
-//
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU Library General Public License as
-// published by the Free Software Foundation; either version 2 of the
-// License, or (at your option) any later version.
-//
-//----------------------------------------------------------------------------
-
-#ifdef None
-#undef None
-#endif
-
-#include "kmditaskbar.h"
-#include "kmditaskbar.moc"
-
-#include "kmdimainfrm.h"
-#include "kmdichildview.h"
-#include "kmdidefines.h"
-
-#include <tqtooltip.h>
-#include <tqlabel.h>
-#include <tqwidget.h>
-#include <tqstyle.h>
-
-#include <tqnamespace.h>
-
-/*
- @quickhelp: KMdiTaskBar
- @widget: Taskbar
- This window lists the currently open windows.<br>
- Each button corresponds to a single MDI (child) window.<br>
- The button is enabled (clickable) when the window is docked , and can be
- pressed to bring it to the top of the other docked windows.<br>
- The button text becomes red when new output is shown in the window and it is not the active one.<br>
-*/
-
-//####################################################################
-//
-// KMdiTaskBarButton
-//
-//####################################################################
-KMdiTaskBarButton::KMdiTaskBarButton( KMdiTaskBar *pTaskBar, KMdiChildView *win_ptr )
- : TQPushButton( pTaskBar ),
- m_actualText( "" )
-{
- setToggleButton( true );
- m_pWindow = win_ptr;
- TQToolTip::add
- ( this, win_ptr->caption() );
- setFocusPolicy( TQ_NoFocus );
-}
-
-KMdiTaskBarButton::~KMdiTaskBarButton()
-{}
-
-void KMdiTaskBarButton::mousePressEvent( TQMouseEvent* e )
-{
- switch ( e->button() )
- {
- case Qt::LeftButton:
- emit leftMouseButtonClicked( m_pWindow );
- break;
- case Qt::RightButton:
- emit rightMouseButtonClicked( m_pWindow );
- break;
- default:
- break;
- }
- emit clicked( m_pWindow );
-}
-
-/** slot version of setText */
-void KMdiTaskBarButton::setNewText( const TQString& s )
-{
- setText( s );
- emit buttonTextChanged( 0 );
-}
-
-void KMdiTaskBarButton::setText( const TQString& s )
-{
- m_actualText = s;
- TQButton::setText( s );
-}
-
-void KMdiTaskBarButton::fitText( const TQString& origStr, int newWidth )
-{
- TQButton::setText( m_actualText );
-
- int actualWidth = sizeHint().width();
- int realLetterCount = origStr.length();
- int newLetterCount = ( newWidth * realLetterCount ) / actualWidth;
- int w = newWidth + 1;
- TQString s = origStr;
- while ( ( w > newWidth ) && ( newLetterCount >= 1 ) )
- {
- if ( newLetterCount < realLetterCount )
- {
- if ( newLetterCount > 3 )
- s = origStr.left( newLetterCount / 2 ) + "..." + origStr.right( newLetterCount / 2 );
- else
- {
- if ( newLetterCount > 1 )
- s = origStr.left( newLetterCount ) + "..";
- else
- s = origStr.left( 1 );
- }
- }
- TQFontMetrics fm = fontMetrics();
- w = fm.width( s );
- newLetterCount--;
- }
-
- TQButton::setText( s );
-}
-
-TQString KMdiTaskBarButton::actualText() const
-{
- return m_actualText;
-}
-
-//####################################################################
-//
-// KMdiTaskBar
-//
-//####################################################################
-
-KMdiTaskBar::KMdiTaskBar( KMdiMainFrm *parent, TQMainWindow::ToolBarDock dock )
- : KToolBar( parent, "KMdiTaskBar", /*honor_style*/ false, /*readConfig*/ true )
- , m_pCurrentFocusedWindow( 0 )
- , m_pStretchSpace( 0 )
- , m_layoutIsPending( false )
- , m_bSwitchedOn( false )
-{
- m_pFrm = parent;
- m_pButtonList = new TQPtrList<KMdiTaskBarButton>;
- m_pButtonList->setAutoDelete( true );
- //QT30 setFontPropagation(TQWidget::SameFont);
- setMinimumWidth( 1 );
- setFocusPolicy( TQ_NoFocus );
- parent->moveToolBar( this, dock ); //XXX obsolete!
-}
-
-KMdiTaskBar::~KMdiTaskBar()
-{
- delete m_pButtonList;
-}
-
-KMdiTaskBarButton * KMdiTaskBar::addWinButton( KMdiChildView *win_ptr )
-{
- if ( m_pStretchSpace )
- {
- delete m_pStretchSpace;
- m_pStretchSpace = 0L;
- setStretchableWidget( 0L );
- }
-
- KMdiTaskBarButton *b = new KMdiTaskBarButton( this, win_ptr );
- TQObject::connect( b, TQT_SIGNAL( clicked() ), win_ptr, TQT_SLOT( setFocus() ) );
- TQObject::connect( b, TQT_SIGNAL( clicked( KMdiChildView* ) ), this, TQT_SLOT( setActiveButton( KMdiChildView* ) ) );
- TQObject::connect( b, TQT_SIGNAL( leftMouseButtonClicked( KMdiChildView* ) ), m_pFrm, TQT_SLOT( activateView( KMdiChildView* ) ) );
- TQObject::connect( b, TQT_SIGNAL( rightMouseButtonClicked( KMdiChildView* ) ), m_pFrm, TQT_SLOT( taskbarButtonRightClicked( KMdiChildView* ) ) );
- TQObject::connect( b, TQT_SIGNAL( buttonTextChanged( int ) ), this, TQT_SLOT( layoutTaskBar( int ) ) );
- m_pButtonList->append( b );
- b->setToggleButton( true );
- b->setText( win_ptr->tabCaption() );
-
- layoutTaskBar();
-
- m_pStretchSpace = new TQLabel( this, "empty" );
- m_pStretchSpace->setText( "" );
- setStretchableWidget( m_pStretchSpace );
- m_pStretchSpace->show();
-
- if ( m_bSwitchedOn )
- {
- b->show();
- show();
- }
- return b;
-}
-
-void KMdiTaskBar::removeWinButton( KMdiChildView *win_ptr, bool haveToLayoutTaskBar )
-{
- KMdiTaskBarButton * b = getButton( win_ptr );
- if ( b )
- {
- m_pButtonList->removeRef( b );
- if ( haveToLayoutTaskBar )
- layoutTaskBar();
- }
- if ( m_pButtonList->count() == 0 )
- {
- if ( m_pStretchSpace != 0L )
- {
- delete m_pStretchSpace;
- m_pStretchSpace = 0L;
- hide();
- }
- }
-}
-
-void KMdiTaskBar::switchOn( bool bOn )
-{
- m_bSwitchedOn = bOn;
- if ( !bOn )
- {
- hide();
- }
- else
- {
- if ( m_pButtonList->count() > 0 )
- {
- show();
- }
- else
- {
- hide();
- }
- }
-}
-
-KMdiTaskBarButton * KMdiTaskBar::getButton( KMdiChildView *win_ptr )
-{
- for ( KMdiTaskBarButton * b = m_pButtonList->first();b;b = m_pButtonList->next() )
- {
- if ( b->m_pWindow == win_ptr )
- return b;
- }
- return 0;
-}
-
-KMdiTaskBarButton * KMdiTaskBar::getNextWindowButton( bool bRight, KMdiChildView *win_ptr )
-{
- if ( bRight )
- {
- for ( KMdiTaskBarButton * b = m_pButtonList->first();b;b = m_pButtonList->next() )
- {
- if ( b->m_pWindow == win_ptr )
- {
- b = m_pButtonList->next();
- if ( !b )
- b = m_pButtonList->first();
- if ( win_ptr != b->m_pWindow )
- return b;
- else
- return 0;
- }
- }
- }
- else
- {
- for ( KMdiTaskBarButton * b = m_pButtonList->first();b;b = m_pButtonList->next() )
- {
- if ( b->m_pWindow == win_ptr )
- {
- b = m_pButtonList->prev();
- if ( !b )
- b = m_pButtonList->last();
- if ( win_ptr != b->m_pWindow )
- return b;
- else
- return 0;
- }
- }
- }
- return 0;
-}
-
-void KMdiTaskBar::setActiveButton( KMdiChildView *win_ptr )
-{
- KMdiTaskBarButton * newPressedButton = 0L;
- KMdiTaskBarButton* oldPressedButton = 0L;
- for ( KMdiTaskBarButton * b = m_pButtonList->first();b;b = m_pButtonList->next() )
- {
- if ( b->m_pWindow == win_ptr )
- newPressedButton = b;
- if ( b->m_pWindow == m_pCurrentFocusedWindow )
- oldPressedButton = b;
- }
-
- if ( newPressedButton != 0L && newPressedButton != oldPressedButton )
- {
- if ( oldPressedButton != 0L )
- oldPressedButton->toggle(); // switch off
- newPressedButton->toggle(); // switch on
- m_pCurrentFocusedWindow = win_ptr;
- }
-}
-
-void KMdiTaskBar::layoutTaskBar( int taskBarWidth )
-{
- if ( m_layoutIsPending )
- return ;
- m_layoutIsPending = true;
-
- if ( !taskBarWidth )
- // no width is given
- taskBarWidth = width();
-
- // calculate current width of all taskbar buttons
- int allButtonsWidth = 0;
- KMdiTaskBarButton *b = 0;
- for ( b = m_pButtonList->first();b;b = m_pButtonList->next() )
- {
- allButtonsWidth += b->width();
- }
-
- // calculate actual width of all taskbar buttons
- int allButtonsWidthHint = 0;
- for ( b = m_pButtonList->first();b;b = m_pButtonList->next() )
- {
- TQFontMetrics fm = b->fontMetrics();
- TQString s = b->actualText();
- TQSize sz = fm.size( ShowPrefix, s );
- int w = sz.width() + 6;
- int h = sz.height() + sz.height() / 8 + 10;
- w += h;
- allButtonsWidthHint += w;
- }
-
- // if there's enough space, use actual width
- int buttonCount = m_pButtonList->count();
- int tbHandlePixel;
- tbHandlePixel = style().pixelMetric( TQStyle::PM_DockWindowHandleExtent, this );
- int buttonAreaWidth = taskBarWidth - tbHandlePixel - style().pixelMetric( TQStyle::PM_DefaultFrameWidth, this ) - 5;
- if ( ( ( allButtonsWidthHint ) <= buttonAreaWidth ) || ( width() < parentWidget() ->width() ) )
- {
- for ( b = m_pButtonList->first();b;b = m_pButtonList->next() )
- {
- b->setText( b->actualText() );
- if ( b->width() != b->sizeHint().width() )
- {
- b->setFixedWidth( b->sizeHint().width() );
- b->show();
- }
- }
- }
- else
- {
- // too many buttons for actual width
- int newButtonWidth;
- if ( buttonCount != 0 )
- newButtonWidth = buttonAreaWidth / buttonCount;
- else
- newButtonWidth = 0;
- if ( orientation() == Qt::Vertical )
- newButtonWidth = 80;
- if ( newButtonWidth > 0 )
- for ( b = m_pButtonList->first();b;b = m_pButtonList->next() )
- {
- b->fitText( b->actualText(), newButtonWidth );
- if ( b->width() != newButtonWidth )
- {
- b->setFixedWidth( newButtonWidth );
- b->show();
- }
- }
- }
- m_layoutIsPending = false;
-}
-
-void KMdiTaskBar::resizeEvent( TQResizeEvent* rse )
-{
- if ( !m_layoutIsPending )
- {
- if ( m_pButtonList->count() != 0 )
- {
- layoutTaskBar( rse->size().width() );
- }
- }
- KToolBar::resizeEvent( rse );
-}
-
-// kate: space-indent off; tab-width 4; replace-tabs off; indent-mode csands;