1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
/****************************************************************************
Copyright (C) 2005 - 2011 Filipe AZEVEDO & The Monkey Studio Team
http://monkeystudio.org licensing under the GNU GPL.
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, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
****************************************************************************/
#include "pTabbedWorkspaceCorner.h"
#include "pTabbedWorkspaceCornerButton.h"
#include "pTabbedWorkspace.h"
#include <QPaintEvent>
#include <QPainter>
#include <QStyle>
#include <QDebug>
pTabbedWorkspaceCorner::pTabbedWorkspaceCorner( pTabbedWorkspace* w )
: QWidget( w ), mWorkspace( w ), mLayout( new QBoxLayout( QBoxLayout::LeftToRight, this ) )
{
/*
QBoxLayout::LeftToRight
QBoxLayout::RightToLeft
QBoxLayout::TopToBottom
QBoxLayout::BottomToTop
*/
mLayout->setSpacing( 3 );
mLayout->setMargin( 0 );
}
pTabbedWorkspaceCorner::~pTabbedWorkspaceCorner()
{
clearActions();
}
QBoxLayout::Direction pTabbedWorkspaceCorner::direction() const
{
return mLayout->direction();
}
void pTabbedWorkspaceCorner::clearActions()
{
qDeleteAll( findChildren<pTabbedWorkspaceCornerButton*>() );
}
void pTabbedWorkspaceCorner::setDirection( QBoxLayout::Direction d )
{
// change buttons direction
foreach ( pTabbedWorkspaceCornerButton* tb, findChildren<pTabbedWorkspaceCornerButton*>() )
tb->setDirection( d );
// change layout direction
mLayout->setDirection( d );
}
void pTabbedWorkspaceCorner::addAction( QAction* a )
{
// create button
pTabbedWorkspaceCornerButton* tb = new pTabbedWorkspaceCornerButton( this );
tb->setDefaultAction( a );
tb->setDirection( direction() );
// add to layout
mLayout->addWidget( tb );
}
void pTabbedWorkspaceCorner::setActions( QList<QAction*> l )
{
// hide to avoid flickering
hide();
// delete all buttons
clearActions();
// create button associated with actions
foreach ( QAction* a, l )
addAction( a );
// show corner
show();
}
|