You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
165 lines
4.6 KiB
165 lines
4.6 KiB
/***************************************************************************
|
|
tabpage.cpp - description
|
|
-------------------
|
|
begin : Fri Sep 13 2002
|
|
copyright : (C) 2003 by Troy Corbin Jr.
|
|
email : tcorbin@users.sf.net
|
|
***************************************************************************/
|
|
|
|
/***************************************************************************
|
|
* *
|
|
* 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. *
|
|
* *
|
|
***************************************************************************/
|
|
|
|
#include "tabpage.moc"
|
|
#include "tabmanager.h"
|
|
#include "tabgrip.h"
|
|
#include "resource.h"
|
|
#include <kiconloader.h>
|
|
#include <kdebug.h>
|
|
#include <tdelocale.h>
|
|
#include <tqlayout.h>
|
|
#include <tqtoolbutton.h>
|
|
|
|
///////////////////////////////////////
|
|
//
|
|
// TabPage::constructor
|
|
//
|
|
///////////////////////////////////////
|
|
TabPage::TabPage( TQWidget *parent, TQWidget *child, resource *rsrc ) : TQVBox(parent)
|
|
{
|
|
myResource = rsrc;
|
|
myChild = child;
|
|
|
|
actionBar = new TQHBox( this );
|
|
actionBar->show();
|
|
|
|
grip = new TabGrip( actionBar );
|
|
connect( grip, TQT_SIGNAL( wasDragged(const TQPoint&, const TQPoint&) ), this, TQT_SLOT( tabDragged(const TQPoint&, const TQPoint&) ) );
|
|
|
|
TDEIconLoader icons( TQString( "knights" ) );
|
|
TQPixmap map = icons.loadIcon( TQString("tab_remove"), TDEIcon::Small, 0, TDEIcon::DefaultState, 0, TRUE );
|
|
if( map.isNull() )
|
|
{
|
|
/* Keep for backward compatability with KDE 3.0 */
|
|
map = icons.loadIcon( TQString("window-close"), TDEIcon::Small );
|
|
}
|
|
|
|
closeButton = new TQToolButton( actionBar, "closeButton" );
|
|
closeButton->setIconSet( TQIconSet( map ) );
|
|
closeButton->setAutoRaise( TRUE );
|
|
closeButton->setTextLabel( i18n( "Close This Tab" ), TRUE );
|
|
closeButton->setSizePolicy( TQSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed ) );
|
|
connect( closeButton, TQT_SIGNAL( clicked() ), this, TQT_SIGNAL( requestDestruction() ) );
|
|
|
|
myChild->reparent( this, TQPoint( 0, 0 ), TRUE );
|
|
myChild->show();
|
|
show();
|
|
}
|
|
///////////////////////////////////////
|
|
//
|
|
// TabPage::destructor
|
|
//
|
|
///////////////////////////////////////
|
|
TabPage::~TabPage()
|
|
{
|
|
}
|
|
///////////////////////////////////////
|
|
//
|
|
// TabPage::tabDragged
|
|
//
|
|
///////////////////////////////////////
|
|
void TabPage::tabDragged( const TQPoint &dest, const TQPoint &offset )
|
|
{
|
|
TabBox *myParent = parentTabBox();
|
|
if( myParent != NULL )
|
|
{
|
|
TQWidget *destWidget = TQApplication::widgetAt( dest, TRUE );
|
|
/* Find a TabBox */
|
|
while(1)
|
|
{
|
|
if( destWidget == NULL )
|
|
{
|
|
/* Create new TabBox */
|
|
TabBox *newBox = new TabBox( myResource );
|
|
newBox->resize( myParent->size() );
|
|
newBox->move( dest + offset );
|
|
newBox->show();
|
|
emit newParent( newBox );
|
|
myParent->removeTab( this );
|
|
newBox->addTab( this, myCaption );
|
|
break;
|
|
}
|
|
if( TQString( destWidget->className() ) == "TabBox" )
|
|
{
|
|
if( myParent != ((TabBox*)destWidget) )
|
|
{
|
|
/* We can latch on here */
|
|
myParent->removeTab( this );
|
|
((TabBox*)destWidget)->addTab( this, myCaption );
|
|
break;
|
|
}
|
|
else
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
destWidget = destWidget->parentWidget();
|
|
}
|
|
if( myParent->count() == 0 )
|
|
{
|
|
/* TabManager will be notified of the delete via TQObject::destroyed(TQObject*) */
|
|
delete myParent;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
kdError() << "TabPage::tabDragged: Can not move without a parent TabBox." << endl;
|
|
}
|
|
}
|
|
///////////////////////////////////////
|
|
//
|
|
// TabPage::setCaption
|
|
//
|
|
///////////////////////////////////////
|
|
void TabPage::setCaption( const TQString &caption )
|
|
{
|
|
myCaption = caption;
|
|
}
|
|
///////////////////////////////////////
|
|
//
|
|
// TabPage::parentTabBox
|
|
//
|
|
///////////////////////////////////////
|
|
TabBox* TabPage::parentTabBox( void )
|
|
{
|
|
TQWidget *myParent = this->parentWidget();
|
|
if( TQString( myParent->className() ) == TQWIDGETSTACK_OBJECT_NAME_STRING )
|
|
{
|
|
myParent = myParent->parentWidget();
|
|
if( TQString( myParent->className() ) == TQTABWIDGET_OBJECT_NAME_STRING )
|
|
{
|
|
myParent = myParent->parentWidget();
|
|
if( TQString( myParent->className() ) == "TabBox" )
|
|
{
|
|
return ((TabBox*)myParent);
|
|
}
|
|
}
|
|
}
|
|
return NULL;
|
|
}
|
|
///////////////////////////////////////
|
|
//
|
|
// TabPage::getChild
|
|
//
|
|
///////////////////////////////////////
|
|
TQWidget* TabPage::getChild( void )
|
|
{
|
|
return myChild;
|
|
}
|
|
|