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.
tdelibs/tdeui/kstatusbar.cpp

157 lines
4.0 KiB

/* This file is part of the KDE libraries
Copyright (C) 1997 Mark Donohoe (donohoe@kde.org)
(C) 1997,1998, 2000 Sven Radej (radej@kde.org)
This library 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.
This library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include <kdebug.h>
#include <kstatusbar.h>
#include <kconfig.h>
#include <kglobal.h>
KStatusBarLabel::KStatusBarLabel( const TQString& text, int _id,
KStatusBar *parent, const char *name) :
TQLabel( parent, name)
{
id = _id;
setText( text );
// umm... Mosfet? Can you help here?
// Warning: TQStatusBar draws shaded rectangle around every item - which
// IMHO is stupid.
// So NoFrame|Plain is the best you get. the problem is that only in case of
// StyledPanel|Something you get TQFrame to call TQStyle::drawPanel().
setLineWidth (0);
setFrameStyle (TQFrame::NoFrame);
setAlignment( AlignHCenter | AlignVCenter | SingleLine );
connect (this, TQT_SIGNAL(itemPressed(int)), parent, TQT_SIGNAL(pressed(int)));
connect (this, TQT_SIGNAL(itemReleased(int)), parent, TQT_SIGNAL(released(int)));
}
void KStatusBarLabel::mousePressEvent (TQMouseEvent *)
{
emit itemPressed (id);
}
void KStatusBarLabel::mouseReleaseEvent (TQMouseEvent *)
{
emit itemReleased (id);
}
KStatusBar::KStatusBar( TQWidget *parent, const char *name )
: TQStatusBar( parent, name )
{
// make the size grip stuff configurable
// ...but off by default (sven)
KConfig *config = KGlobal::config();
TQString group(config->group());
config->setGroup(TQString::tqfromLatin1("StatusBar style"));
bool grip_enabled = config->readBoolEntry(TQString::tqfromLatin1("SizeGripEnabled"), false);
setSizeGripEnabled(grip_enabled);
config->setGroup(group);
}
KStatusBar::~KStatusBar ()
{
}
void KStatusBar::insertItem( const TQString& text, int id, int stretch, bool permanent)
{
if (items[id])
kdDebug() << "KStatusBar::insertItem: item id " << id << " already exists." << endl;
KStatusBarLabel *l = new KStatusBarLabel (text, id, this);
l->setFixedHeight(fontMetrics().height()+2);
items.insert(id, l);
addWidget (l, stretch, permanent);
l->show();
}
void KStatusBar::removeItem (int id)
{
KStatusBarLabel *l = items[id];
if (l)
{
removeWidget (l);
items.remove(id);
delete l;
}
else
kdDebug() << "KStatusBar::removeItem: bad item id: " << id << endl;
}
bool KStatusBar::hasItem( int id ) const
{
KStatusBarLabel *l = items[id];
if (l)
return true;
else
return false;
}
void KStatusBar::changeItem( const TQString& text, int id )
{
KStatusBarLabel *l = items[id];
if (l)
{
l->setText(text);
if(l->minimumWidth () != l->maximumWidth ())
{
reformat();
}
}
else
kdDebug() << "KStatusBar::changeItem: bad item id: " << id << endl;
}
void KStatusBar::setItemAlignment (int id, int align)
{
KStatusBarLabel *l = items[id];
if (l)
{
l->setAlignment(align);
}
else
kdDebug() << "KStatusBar::setItemAlignment: bad item id: " << id << endl;
}
void KStatusBar::setItemFixed(int id, int w)
{
KStatusBarLabel *l = items[id];
if (l)
{
if (w==-1)
w=fontMetrics().boundingRect(l->text()).width()+3;
l->setFixedWidth(w);
}
else
kdDebug() << "KStatusBar::setItemFixed: bad item id: " << id << endl;
}
#include "kstatusbar.moc"
//Eh!!!
//Eh what ? :)