summaryrefslogtreecommitdiffabout
path: root/microkde
Side-by-side diff
Diffstat (limited to 'microkde') (more/less context) (show whitespace changes)
-rw-r--r--microkde/kapplication.cpp4
-rw-r--r--microkde/kdeui/ktoolbar.cpp12
-rw-r--r--microkde/kdeui/ktoolbar.h2
3 files changed, 16 insertions, 2 deletions
diff --git a/microkde/kapplication.cpp b/microkde/kapplication.cpp
index f36c5ae..d7c12bb 100644
--- a/microkde/kapplication.cpp
+++ b/microkde/kapplication.cpp
@@ -1,249 +1,251 @@
#include <stdlib.h>
#include <stdio.h>
#include "kapplication.h"
#include "ktextedit.h"
#include <qapplication.h>
#include <qstring.h>
#include <qfile.h>
#include <qtextstream.h>
#include <qdialog.h>
#include <qlayout.h>
#include <qtextbrowser.h>
#include <qregexp.h>
int KApplication::random()
{
return rand();
}
//US
QString KApplication::randomString(int length)
{
if (length <=0 ) return QString::null;
QString str;
while (length--)
{
int r=random() % 62;
r+=48;
if (r>57) r+=7;
if (r>90) r+=6;
str += char(r);
// so what if I work backwards?
}
return str;
}
int KApplication::execDialog( QDialog* d )
{
if (QApplication::desktop()->width() <= 640 )
d->showMaximized();
else
;//d->resize( 800, 600 );
return d->exec();
}
void KApplication::showLicence()
{
KApplication::showFile( "KDE-Pim/Pi licence", "kdepim/licence.txt" );
}
void KApplication::testCoords( int* x, int* y, int* wid, int * hei )
{
int dWid = QApplication::desktop()->width() ;
int dHei = QApplication::desktop()->height();
+ if ( *x < 0 ) *x = 0;
+ if ( *y < 20 ) *y = 20 ;
if ( *x + *wid > dWid ) {
*x = 0;
if ( *wid > dWid )
*wid = dWid;
}
if ( *y + *hei > dHei ) {
- *y = 0;
+ *y = 20;
if ( *hei > dHei )
*hei = dHei;
}
}
void KApplication::showFile(QString caption, QString fn)
{
QString text;
QString fileName;
#ifndef DESKTOP_VERSION
fileName = getenv("QPEDIR");
fileName += "/pics/" + fn ;
#else
fileName = qApp->applicationDirPath () + "/" + fn;
#endif
QFile file( fileName );
if (!file.open( IO_ReadOnly ) ) {
return ;
}
QTextStream ts( &file );
text = ts.read();
file.close();
KApplication::showText( caption, text );
}
bool KApplication::convert2latin1(QString fileName)
{
QString text;
QFile file( fileName );
if (!file.open( IO_ReadOnly ) ) {
return false;
}
QTextStream ts( &file );
ts.setEncoding( QTextStream::UnicodeUTF8 );
text = ts.read();
file.close();
if (!file.open( IO_WriteOnly ) ) {
return false;
}
QTextStream tsIn( &file );
tsIn.setEncoding( QTextStream::Latin1 );
tsIn << text.latin1();
file.close();
return true;
}
void KApplication::showText(QString caption, QString text)
{
QDialog dia( 0, "name", true ); ;
dia.setCaption( caption );
QVBoxLayout* lay = new QVBoxLayout( &dia );
lay->setSpacing( 3 );
lay->setMargin( 3 );
KTextEdit tb ( &dia );
tb.setWordWrap( QMultiLineEdit::WidgetWidth );
lay->addWidget( &tb );
tb.setText( text );
#ifdef DESKTOP_VERSION
dia.resize( 640, 480);
#else
dia.showMaximized();
#endif
dia.exec();
}
#include <qlabel.h>
#include <qpushbutton.h>
#include <qlayout.h>
#include <qdir.h>
#include <qradiobutton.h>
#include <qbuttongroup.h>
#include "kglobal.h"
#include "klocale.h"
class KBackupPrefs : public QDialog
{
public:
KBackupPrefs( QString message , QWidget *parent=0, const char *name=0 ) :
QDialog( parent, name, true )
{
setCaption( i18n("Backup Failed!") );
QVBoxLayout* lay = new QVBoxLayout( this );
lay->setSpacing( 3 );
lay->setMargin( 3 );
QLabel * lab = new QLabel( message, this );
lay->addWidget( lab );
QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("Choose action"), this );
lay->addWidget( format );
format->setExclusive ( true ) ;
vcal = new QRadioButton(i18n("Try again now"), format );
tcal = new QRadioButton(i18n("Try again later"), format );
ical = new QRadioButton(i18n("Try again tomorrow"), format );
ocal = new QRadioButton(i18n("Disable backup"), format );
vcal->setChecked( true );
QPushButton * ok = new QPushButton( i18n("OK"), this );
lay->addWidget(ok );
connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
}
bool again() { return vcal->isChecked(); }
bool later() { return tcal->isChecked(); }
bool againTomorrow() { return ical->isChecked(); }
private:
QRadioButton* vcal, *ical, *ocal, *tcal;
};
int KApplication::createBackup( QString fn, QString dp, int numBup )
{
if ( numBup < 1) return 3;
int ret = 3;
//qDebug("KApplication::createBackup %s --- %s --- %d", fn.latin1(), dp.latin1(), numBup);
QDir bupDir ( dp );
bool tryAgain = true;
while ( tryAgain ) {
if ( !bupDir.exists() ) {
QString bd = dp.right(25);
if ( dp.length() > 25 )
bd = "..." + bd;
KBackupPrefs noDir( i18n("<b>Backup directory does not exist: </b>") + bd);
if ( !noDir.exec() ) return 3;
if ( noDir.againTomorrow() ) {
return 0;
} else if ( noDir.later() ) {
return 3;
} else if ( !noDir.again() ) {
return 2;
}
} else {
tryAgain = false;
}
}
// we have a valid dir!
QStringList allFileList = bupDir.entryList(QDir::Files);
QFileInfo fileInfo ( fn );
QString fName = fileInfo.fileName ();
QStringList fileList;
int i;
for ( i = 0; i < allFileList.count(); ++i ) {
QString fi = allFileList[i];
if ( fi. find( fName ) > -1 )
fileList.append( fi );
}
qDebug("KApp: %d backup files exist ", fileList.count());
int count = fileList.count();
fileList.sort();
int remCount = 0;
while ( count >= numBup ) {
QString fnr = dp + "/"+fileList[remCount];
QFile::remove( fnr );
--count;
++remCount;
}
QDateTime mRunStart = QDateTime::currentDateTime();
QString file = "%1%2%3-%4%5%6-";
file = file.arg( mRunStart.date().year(), 4).arg( mRunStart.date().month(),2 ).arg( mRunStart.date().day(), 2 ).arg( mRunStart.time().hour(),2 ).arg( mRunStart.time().minute(),2 ).arg( mRunStart.time().second(),2 );
file.replace ( QRegExp (" "), "0" );
file += fName ;
file = dp + file;
QString command;
int res = 0;
#ifdef _WIN32_
command = "copy \""+ QDir::convertSeparators( fn)+ "\" \""+QDir::convertSeparators(file)+ "\" ";
#else
command = "cp "+ fn+ " "+file;
#endif
//qDebug("command %s ",command.latin1() );
tryAgain = true;
while ( tryAgain ) {
res = system ( command.latin1() );
qDebug("KApp: Copy result %d ", res);
if ( res != 0 ) {
KBackupPrefs noDir( i18n("<b>The backup copy command failed!</b>"));
if ( !noDir.exec() ) return 3;
if ( noDir.againTomorrow() ) {
return 0;
} else if ( noDir.later() ) {
return 3;
} else if ( !noDir.again() ) {
return 2;
}
} else {
tryAgain = false;
}
}
return 1;
}
diff --git a/microkde/kdeui/ktoolbar.cpp b/microkde/kdeui/ktoolbar.cpp
index df2aad8..027e5e9 100644
--- a/microkde/kdeui/ktoolbar.cpp
+++ b/microkde/kdeui/ktoolbar.cpp
@@ -1,641 +1,643 @@
/* This file is part of the KDE libraries
Copyright
(C) 2000 Reginald Stadlbauer (reggie@kde.org)
(C) 1997, 1998 Stephan Kulow (coolo@kde.org)
(C) 1997, 1998 Mark Donohoe (donohoe@kde.org)
(C) 1997, 1998 Sven Radej (radej@kde.org)
(C) 1997, 1998 Matthias Ettrich (ettrich@kde.org)
(C) 1999 Chris Schlaeger (cs@kde.org)
(C) 1999 Kurt Granroth (granroth@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 version 2 as published by the Free Software Foundation.
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., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#ifdef KDE_USE_FINAL
#undef Always
#include <qdockwindow.h>
#endif
#include "ktoolbar.h"
#include "kmainwindow.h"
#include <string.h>
#include <qpainter.h>
#include <qtooltip.h>
#include <qdrawutil.h>
#include <qstring.h>
#include <qrect.h>
#include <qobjectlist.h>
#include <qtimer.h>
#include <qstyle.h>
#include <qapplication.h>
//US #include <config.h>
#include "klineedit.h"
#include "kseparator.h"
#include <klocale.h>
#include <kapplication.h>
#include <kaction.h>
#include <kstdaction.h>
#include <kglobal.h>
#include <kconfig.h>
#include <kiconloader.h>
#include <kcombobox.h>
//US #include <kpopupmenu.h>
//US #include <kanimwidget.h>
//US #include <kipc.h>
//US #include <kwin.h>
#include <kdebug.h>
#include <qlayout.h>
#include "ktoolbarbutton.h"
//US
#include "kconfigbase.h"
#include <qpopupmenu.h>
#include <qmainwindow.h>
enum {
CONTEXT_TOP = 0,
CONTEXT_LEFT = 1,
CONTEXT_RIGHT = 2,
CONTEXT_BOTTOM = 3,
CONTEXT_FLOAT = 4,
CONTEXT_FLAT = 5,
CONTEXT_ICONS = 6,
CONTEXT_TEXT = 7,
CONTEXT_TEXTRIGHT = 8,
CONTEXT_TEXTUNDER = 9,
CONTEXT_ICONSIZES = 50 // starting point for the icon size list, put everything else before
};
class KToolBarPrivate
{
public:
KToolBarPrivate() {
m_iconSize = 0;
m_iconText = KToolBar::IconOnly;
m_highlight = true;
m_transparent = true;
m_honorStyle = false;
m_enableContext = true;
m_xmlguiClient = 0;
m_configurePlugged = false;
//US oldPos = Qt::DockUnmanaged;
oldPos = QMainWindow::Unmanaged;
modified = m_isHorizontal = positioned = FALSE;
HiddenDefault = false;
IconSizeDefault = 0;
IconTextDefault = "IconOnly";
IndexDefault = -1;
NewLineDefault = false;
OffsetDefault = -1;
PositionDefault = "Top";
idleButtons.setAutoDelete(true);
}
int m_iconSize;
KToolBar::IconText m_iconText;
bool m_highlight : 1;
bool m_transparent : 1;
bool m_honorStyle : 1;
bool m_isHorizontal : 1;
bool m_enableContext : 1;
bool m_configurePlugged : 1;
bool modified : 1;
bool positioned : 1;
QWidget *m_parent;
QMainWindow::ToolBarDock oldPos;
KXMLGUIClient *m_xmlguiClient;
struct ToolBarInfo
{
//US ToolBarInfo() : index( 0 ), offset( -1 ), newline( FALSE ), dock( Qt::DockTop ) {}
ToolBarInfo() : index( 0 ), offset( -1 ), newline( FALSE ), dock( QMainWindow::Top ) {}
//US ToolBarInfo( Qt::Dock d, int i, bool n, int o ) : index( i ), offset( o ), newline( n ), dock( d ) {}
ToolBarInfo( QMainWindow::ToolBarDock d, int i, bool n, int o ) : index( i ), offset( o ), newline( n ), dock( d ) {}
int index, offset;
bool newline;
//US Qt::Dock dock;
QMainWindow::ToolBarDock dock;
};
ToolBarInfo toolBarInfo;
QValueList<int> iconSizes;
QTimer repaintTimer;
// Default Values.
bool HiddenDefault;
int IconSizeDefault;
QString IconTextDefault;
int IndexDefault;
bool NewLineDefault;
int OffsetDefault;
QString PositionDefault;
QPtrList<QWidget> idleButtons;
};
KToolBarSeparator::KToolBarSeparator(Orientation o , bool l, QToolBar *parent,
const char* name )
:QFrame( parent, name ), line( l )
{
connect( parent, SIGNAL(orientationChanged(Orientation)),
this, SLOT(setOrientation(Orientation)) );
setOrientation( o );
setBackgroundMode( parent->backgroundMode() );
setBackgroundOrigin( ParentOrigin );
}
void KToolBarSeparator::setOrientation( Orientation o )
{
orient = o;
if ( line ) {
if ( orientation() == Vertical )
setFrameStyle( HLine + Sunken );
else
setFrameStyle( VLine + Sunken );
} else {
setFrameStyle( NoFrame );
}
}
void KToolBarSeparator::styleChange( QStyle& )
{
setOrientation( orient );
}
QSize KToolBarSeparator::sizeHint() const
{
return orientation() == Vertical ? QSize( 0, 6 ) : QSize( 6, 0 );
}
QSizePolicy KToolBarSeparator::sizePolicy() const
{
return QSizePolicy( QSizePolicy::Minimum, QSizePolicy::Minimum );
}
KToolBar::KToolBar( QWidget *parent, const char *name, bool honorStyle, bool readConfig )
#ifdef DESKTOP_VERSION
: QToolBar( QString::fromLatin1( name ),
parent && parent->inherits( "QMainWindow" ) ? static_cast<QMainWindow*>(parent) : 0,
parent, FALSE,
name ? name : "mainToolBar")
#else
: QPEToolBar( parent && parent->inherits( "QMainWindow" ) ? static_cast<QMainWindow*>(parent) : 0,
QString::fromLatin1( name ))
#endif
{
init( readConfig, honorStyle );
}
KToolBar::KToolBar( QMainWindow *parentWindow, QMainWindow::ToolBarDock dock, bool newLine, const char *name, bool honorStyle, bool readConfig )
#ifdef DESKTOP_VERSION
: QToolBar( QString::fromLatin1( name ),
parentWindow, dock, newLine,
name ? name : "mainToolBar")
#else
: QPEToolBar( parentWindow,QString::fromLatin1( name ))
#endif
{
init( readConfig, honorStyle );
}
KToolBar::KToolBar( QMainWindow *parentWindow, QWidget *dock, bool newLine, const char *name, bool honorStyle, bool readConfig )
#ifdef DESKTOP_VERSION
: QToolBar( QString::fromLatin1( name ),
parentWindow, dock, newLine,
name ? name : "mainToolBar")
#else
: QPEToolBar( parentWindow,QString::fromLatin1( name ))
#endif
{
init( readConfig, honorStyle );
}
KToolBar::~KToolBar()
{
inshutdownprocess = true;
emit toolbarDestroyed();
delete d;
}
void KToolBar::init( bool readConfig, bool honorStyle )
{
+ sizeHintW = 240;
+ sizeHintH = 22;
inshutdownprocess = false;
d = new KToolBarPrivate;
setFullSize( TRUE );
d->m_honorStyle = honorStyle;
context = 0;
layoutTimer = new QTimer( this );
connect( layoutTimer, SIGNAL( timeout() ),
this, SLOT( rebuildLayout() ) );
connect( &(d->repaintTimer), SIGNAL( timeout() ),
this, SLOT( slotRepaint() ) );
/*US
if ( kapp ) { // may be null when started inside designer
connect(kapp, SIGNAL(toolbarAppearanceChanged(int)), this, SLOT(slotAppearanceChanged()));
// request notification of changes in icon style
kapp->addKipcEventMask(KIPC::IconChanged);
connect(kapp, SIGNAL(iconChanged(int)), this, SLOT(slotIconChanged(int)));
}
*/
// finally, read in our configurable settings
if ( readConfig )
slotReadConfig();
if ( mainWindow() )
connect( mainWindow(), SIGNAL( toolBarPositionChanged( QToolBar * ) ),
this, SLOT( toolBarPosChanged( QToolBar * ) ) );
// Hack to make sure we recalculate our size when we dock.
//US connect( this, SIGNAL(placeChanged(QDockWindow::Place)), SLOT(rebuildLayout()) );
}
int KToolBar::insertButton(const QString& icon, int id, bool enabled,
const QString& text, int index/*US, KInstance *_instance*/ )
{
KToolBarButton *button = new KToolBarButton( icon, id, this, 0, text/*US, _instance*/ );
insertWidgetInternal( button, index, id );
button->setEnabled( enabled );
doConnections( button );
return index;
}
int KToolBar::insertButton(const QString& icon, int id, const char *signal,
const QObject *receiver, const char *slot,
bool enabled, const QString& text, int index/*US, KInstance *_instance*/ )
{
KToolBarButton *button = new KToolBarButton( icon, id, this, 0, text/*US, _instance*/);
insertWidgetInternal( button, index, id );
button->setEnabled( enabled );
connect( button, signal, receiver, slot );
doConnections( button );
return index;
}
int KToolBar::insertButton(const QPixmap& pixmap, int id, bool enabled,
const QString& text, int index )
{
KToolBarButton *button = new KToolBarButton( pixmap, id, this, 0, text);
insertWidgetInternal( button, index, id );
button->setEnabled( enabled );
doConnections( button );
return index;
}
#if 0
bar->insertButton( icon, id_, SIGNAL( clicked() ), this,
SLOT( slotActivated() ),
d->isEnabled(), d->plainText(), index/*US, instance*/ );
#endif
int KToolBar::insertButton(const QPixmap& pixmap, int id, const char *signal,
const QObject *receiver, const char *slot,
bool enabled, const QString& text,
int index )
{
KToolBarButton *button = new KToolBarButton( pixmap, id, this, 0, text);
insertWidgetInternal( button, index, id );
button->setEnabled( enabled );
connect( button, signal, receiver, slot );
doConnections( button );
return index;
}
int KToolBar::insertButton(const QString& icon, int id, QPopupMenu *popup,
bool enabled, const QString &text, int index )
{
KToolBarButton *button = new KToolBarButton( icon, id, this, 0, text );
insertWidgetInternal( button, index, id );
button->setEnabled( enabled );
button->setPopup( popup );
doConnections( button );
return index;
}
int KToolBar::insertButton(const QPixmap& pixmap, int id, QPopupMenu *popup,
bool enabled, const QString &text, int index )
{
KToolBarButton *button = new KToolBarButton( pixmap, id, this, 0, text );
insertWidgetInternal( button, index, id );
button->setEnabled( enabled );
button->setPopup( popup );
doConnections( button );
return index;
}
int KToolBar::insertLined (const QString& text, int id,
const char *signal,
const QObject *receiver, const char *slot,
bool enabled ,
const QString& toolTipText,
int size, int index )
{
KLineEdit *lined = new KLineEdit ( this, 0 );
if ( !toolTipText.isEmpty() )
QToolTip::add( lined, toolTipText );
if ( size > 0 )
lined->setMinimumWidth( size );
insertWidgetInternal( lined, index, id );
connect( lined, signal, receiver, slot );
lined->setText(text);
lined->setEnabled( enabled );
return index;
}
int KToolBar::insertCombo (const QStringList &list, int id, bool writable,
const char *signal, const QObject *receiver,
const char *slot, bool enabled,
const QString& tooltiptext,
int size, int index,
QComboBox::Policy policy )
{
//US KComboBox *combo = new KComboBox ( writable, this );
KComboBox *combo = new KComboBox ( this );
combo->setEditable(writable);
insertWidgetInternal( combo, index, id );
combo->insertStringList (list);
combo->setInsertionPolicy(policy);
combo->setEnabled( enabled );
if ( !tooltiptext.isEmpty() )
QToolTip::add( combo, tooltiptext );
if ( size > 0 )
combo->setMinimumWidth( size );
if (!tooltiptext.isNull())
QToolTip::add( combo, tooltiptext );
if ( signal && receiver && slot )
connect ( combo, signal, receiver, slot );
return index;
}
int KToolBar::insertCombo (const QString& text, int id, bool writable,
const char *signal, QObject *receiver,
const char *slot, bool enabled,
const QString& tooltiptext,
int size, int index,
QComboBox::Policy policy )
{
//US KComboBox *combo = new KComboBox ( writable, this );
KComboBox *combo = new KComboBox ( this );
combo->setEditable(writable);
insertWidgetInternal( combo, index, id );
combo->insertItem (text);
combo->setInsertionPolicy(policy);
combo->setEnabled( enabled );
if ( !tooltiptext.isEmpty() )
QToolTip::add( combo, tooltiptext );
if ( size > 0 )
combo->setMinimumWidth( size );
if (!tooltiptext.isNull())
QToolTip::add( combo, tooltiptext );
connect (combo, signal, receiver, slot);
return index;
}
int KToolBar::insertSeparator(int index, int id)
{
QWidget *w = new KToolBarSeparator( orientation(), FALSE, this, "tool bar separator" );
insertWidgetInternal( w, index, id );
return index;
}
int KToolBar::insertLineSeparator(int index, int id)
{
QWidget *w = new KToolBarSeparator( orientation(), TRUE, this, "tool bar separator" );
insertWidgetInternal( w, index, id );
return index;
}
int KToolBar::insertWidget(int id, int /*width*/, QWidget *widget, int index)
{
// removeWidgetInternal( widget ); // in case we already have it ?
insertWidgetInternal( widget, index, id );
return index;
}
/*US
int KToolBar::insertAnimatedWidget(int id, QObject *receiver, const char *slot,
const QString& icons, int index )
{
KAnimWidget *anim = new KAnimWidget( icons, d->m_iconSize, this );
insertWidgetInternal( anim, index, id );
if ( receiver )
connect( anim, SIGNAL(clicked()), receiver, slot);
return index;
}
KAnimWidget *KToolBar::animatedWidget( int id )
{
Id2WidgetMap::Iterator it = id2widget.find( id );
if ( it == id2widget.end() )
return 0;
if ( (*it) && (*it)->inherits( "KAnimWidget" ) )
return (KAnimWidget*)(*it);
QObjectList *l = queryList( "KAnimWidget" );
if ( !l || !l->first() ) {
delete l;
return 0;
}
for ( QObject *o = l->first(); o; o = l->next() ) {
if ( o->inherits( "KAnimWidget" ) )
{
delete l;
return (KAnimWidget*)o;
}
}
delete l;
return 0;
}
*/
void KToolBar::addConnection (int id, const char *signal,
const QObject *receiver, const char *slot)
{
Id2WidgetMap::Iterator it = id2widget.find( id );
if ( it == id2widget.end() )
return;
if ( (*it) )
connect( (*it), signal, receiver, slot );
}
void KToolBar::setItemEnabled( int id, bool enabled )
{
Id2WidgetMap::Iterator it = id2widget.find( id );
if ( it == id2widget.end() )
return;
if ( (*it) )
(*it)->setEnabled( enabled );
}
void KToolBar::setButtonPixmap( int id, const QPixmap& _pixmap )
{
Id2WidgetMap::Iterator it = id2widget.find( id );
if ( it == id2widget.end() )
return;
//US KToolBarButton * button = dynamic_cast<KToolBarButton *>( *it );
KToolBarButton * button = (KToolBarButton *)( *it );
if ( button )
button->setPixmap( _pixmap );
}
void KToolBar::setButtonIcon( int id, const QString& _icon )
{
Id2WidgetMap::Iterator it = id2widget.find( id );
if ( it == id2widget.end() )
return;
//US KToolBarButton * button = dynamic_cast<KToolBarButton *>( *it );
KToolBarButton * button = (KToolBarButton *)( *it );
if ( button )
button->setIcon( _icon );
}
void KToolBar::setButtonIconSet( int id, const QIconSet& iconset )
{
Id2WidgetMap::Iterator it = id2widget.find( id );
if ( it == id2widget.end() )
return;
//US KToolBarButton * button = dynamic_cast<KToolBarButton *>( *it );
KToolBarButton * button = (KToolBarButton *)( *it );
if ( button )
button->setIconSet( iconset );
}
void KToolBar::setDelayedPopup (int id , QPopupMenu *_popup, bool toggle )
{
Id2WidgetMap::Iterator it = id2widget.find( id );
if ( it == id2widget.end() )
return;
//US KToolBarButton * button = dynamic_cast<KToolBarButton *>( *it );
KToolBarButton * button = (KToolBarButton *)( *it );
if ( button )
button->setDelayedPopup( _popup, toggle );
}
void KToolBar::setAutoRepeat (int id, bool flag)
{
Id2WidgetMap::Iterator it = id2widget.find( id );
if ( it == id2widget.end() )
return;
//US KToolBarButton * button = dynamic_cast<KToolBarButton *>( *it );
KToolBarButton * button = (KToolBarButton *)( *it );
if ( button )
button->setAutoRepeat( flag );
}
void KToolBar::setToggle (int id, bool flag )
{
Id2WidgetMap::Iterator it = id2widget.find( id );
if ( it == id2widget.end() )
return;
//US KToolBarButton * button = dynamic_cast<KToolBarButton *>( *it );
KToolBarButton * button = (KToolBarButton *)( *it );
if ( button )
button->setToggle( flag );
}
void KToolBar::toggleButton (int id)
{
Id2WidgetMap::Iterator it = id2widget.find( id );
if ( it == id2widget.end() )
return;
//US KToolBarButton * button = dynamic_cast<KToolBarButton *>( *it );
KToolBarButton * button = (KToolBarButton *)( *it );
if ( button )
button->toggle();
}
void KToolBar::setButton (int id, bool flag)
{
Id2WidgetMap::Iterator it = id2widget.find( id );
if ( it == id2widget.end() )
return;
//US KToolBarButton * button = dynamic_cast<KToolBarButton *>( *it );
KToolBarButton * button = (KToolBarButton *)( *it );
if ( button )
button->on( flag );
}
bool KToolBar::isButtonOn (int id) const
{
Id2WidgetMap::ConstIterator it = id2widget.find( id );
if ( it == id2widget.end() )
return false;
//US KToolBarButton * button = dynamic_cast<KToolBarButton *>( *it );
KToolBarButton * button = (KToolBarButton *)( *it );
return button ? button->isOn() : false;
}
void KToolBar::setLinedText (int id, const QString& text)
{
Id2WidgetMap::Iterator it = id2widget.find( id );
if ( it == id2widget.end() )
return;
//US QLineEdit * lineEdit = dynamic_cast<QLineEdit *>( *it );
QLineEdit * lineEdit = (QLineEdit *)( *it );
if ( lineEdit )
lineEdit->setText( text );
}
QString KToolBar::getLinedText (int id) const
{
Id2WidgetMap::ConstIterator it = id2widget.find( id );
if ( it == id2widget.end() )
return QString::null;
//US QLineEdit * lineEdit = dynamic_cast<QLineEdit *>( *it );
@@ -1059,769 +1061,777 @@ void KToolBar::setFlat (bool flag)
if ( !mainWindow() )
return;
if ( flag )
//US mainWindow()->moveDockWindow( this, DockMinimized );
mainWindow()->moveToolBar( this, QMainWindow::Minimized );
else
//US mainWindow()->moveDockWindow( this, DockTop );
mainWindow()->moveToolBar( this, QMainWindow::Top );
// And remember to save the new look later
/*US
if ( mainWindow()->inherits( "KMainWindow" ) )
static_cast<KMainWindow *>(mainWindow())->setSettingsDirty();
*/
}
int KToolBar::count() const
{
return id2widget.count();
}
void KToolBar::saveState()
{
/*US
// first, try to save to the xml file
if ( d->m_xmlguiClient && !d->m_xmlguiClient->xmlFile().isEmpty() ) {
// go down one level to get to the right tags
QDomElement elem = d->m_xmlguiClient->domDocument().documentElement().toElement();
elem = elem.firstChild().toElement();
QString barname(!::qstrcmp(name(), "unnamed") ? "mainToolBar" : name());
QDomElement current;
// now try to find our toolbar
d->modified = false;
for( ; !elem.isNull(); elem = elem.nextSibling().toElement() ) {
current = elem;
if ( current.tagName().lower() != "toolbar" )
continue;
QString curname(current.attribute( "name" ));
if ( curname == barname ) {
saveState( current );
break;
}
}
// if we didn't make changes, then just return
if ( !d->modified )
return;
// now we load in the (non-merged) local file
QString local_xml(KXMLGUIFactory::readConfigFile(d->m_xmlguiClient->xmlFile(), true, d->m_xmlguiClient->instance()));
QDomDocument local;
local.setContent(local_xml);
// make sure we don't append if this toolbar already exists locally
bool just_append = true;
elem = local.documentElement().toElement();
KXMLGUIFactory::removeDOMComments( elem );
elem = elem.firstChild().toElement();
for( ; !elem.isNull(); elem = elem.nextSibling().toElement() ) {
if ( elem.tagName().lower() != "toolbar" )
continue;
QString curname(elem.attribute( "name" ));
if ( curname == barname ) {
just_append = false;
local.documentElement().replaceChild( current, elem );
break;
}
}
if (just_append)
local.documentElement().appendChild( current );
KXMLGUIFactory::saveConfigFile(local, d->m_xmlguiClient->localXMLFile(), d->m_xmlguiClient->instance() );
return;
}
*/
// if that didn't work, we save to the config file
KConfig *config = KGlobal::config();
saveSettings(config, QString::null);
config->sync();
}
QString KToolBar::settingsGroup()
{
QString configGroup;
if (!::qstrcmp(name(), "unnamed") || !::qstrcmp(name(), "mainToolBar"))
configGroup = "Toolbar style";
else
configGroup = QString(name()) + " Toolbar style";
if ( this->mainWindow() )
{
configGroup.prepend(" ");
configGroup.prepend( this->mainWindow()->name() );
}
return configGroup;
}
void KToolBar::saveSettings(KConfig *config, const QString &_configGroup)
{
return;
QString configGroup = _configGroup;
if (configGroup.isEmpty())
configGroup = settingsGroup();
//kdDebug(220) << "KToolBar::saveSettings group=" << _configGroup << " -> " << configGroup << endl;
QString position, icontext;
int index;
getAttributes( position, icontext, index );
//kdDebug(220) << "KToolBar::saveSettings " << name() << " newLine=" << newLine << endl;
KConfigGroupSaver saver(config, configGroup);
if ( position != d->PositionDefault )
config->writeEntry("Position", position);
else
config->deleteEntry("Position");
if ( icontext != d->IconTextDefault )
config->writeEntry("IconText", icontext);
else
config->deleteEntry("IconText");
if ( iconSize() != d->IconSizeDefault )
config->writeEntry("IconSize", iconSize());
else
config->deleteEntry("IconSize");
if ( isHidden() != d->HiddenDefault )
config->writeEntry("Hidden", isHidden());
else
config->deleteEntry("Hidden");
if ( index != d->IndexDefault )
config->writeEntry( "Index", index );
else
config->deleteEntry("Index");
//US the older version of KDE (used on the Zaurus) has no Offset property
/* if ( offset() != d->OffsetDefault )
config->writeEntry( "Offset", offset() );
else
*/
config->deleteEntry("Offset");
//US the older version of KDE (used on the Zaurus) has no NewLine property
/*
if ( newLine() != d->NewLineDefault )
config->writeEntry( "NewLine", newLine() );
else
*/
config->deleteEntry("NewLine");
}
void KToolBar::setXMLGUIClient( KXMLGUIClient *client )
{
d->m_xmlguiClient = client;
}
void KToolBar::setText( const QString & txt )
{
//US setLabel( txt + " ( " + kapp->caption() + " ) " );
setLabel( txt + " ( " + KGlobal::getAppName() + " ) " );
}
QString KToolBar::text() const
{
return label();
}
void KToolBar::doConnections( KToolBarButton *button )
{
connect(button, SIGNAL(clicked(int)), this, SIGNAL( clicked( int ) ) );
connect(button, SIGNAL(doubleClicked(int)), this, SIGNAL( doubleClicked( int ) ) );
connect(button, SIGNAL(released(int)), this, SIGNAL( released( int ) ) );
connect(button, SIGNAL(pressed(int)), this, SIGNAL( pressed( int ) ) );
connect(button, SIGNAL(toggled(int)), this, SIGNAL( toggled( int ) ) );
connect(button, SIGNAL(highlighted(int, bool)), this, SIGNAL( highlighted( int, bool ) ) );
}
void KToolBar::mousePressEvent ( QMouseEvent *m )
{
if ( !mainWindow() )
return;
QMainWindow *mw = mainWindow();
if ( mw->toolBarsMovable() && d->m_enableContext ) {
if ( m->button() == RightButton ) {
int i = contextMenu()->exec( m->globalPos(), 0 );
switch ( i ) {
case -1:
return; // popup cancelled
case CONTEXT_LEFT:
//US mw->moveDockWindow( this, DockLeft );
mw->moveToolBar( this, QMainWindow::Left );
break;
case CONTEXT_RIGHT:
//US mw->moveDockWindow( this, DockRight );
mw->moveToolBar( this, QMainWindow::Right );
break;
case CONTEXT_TOP:
//US mw->moveDockWindow( this, DockTop );
mw->moveToolBar( this, QMainWindow::Top );
break;
case CONTEXT_BOTTOM:
//US mw->moveDockWindow( this, DockBottom );
mw->moveToolBar( this, QMainWindow::Bottom );
break;
case CONTEXT_FLOAT:
break;
case CONTEXT_FLAT:
//US mw->moveDockWindow( this, DockMinimized );
mw->moveToolBar( this, QMainWindow::Minimized );
break;
case CONTEXT_ICONS:
setIconText( IconOnly );
break;
case CONTEXT_TEXTRIGHT:
setIconText( IconTextRight );
break;
case CONTEXT_TEXT:
setIconText( TextOnly );
break;
case CONTEXT_TEXTUNDER:
setIconText( IconTextBottom );
break;
default:
if ( i >= CONTEXT_ICONSIZES )
setIconSize( i - CONTEXT_ICONSIZES );
else
return; // assume this was an action handled elsewhere, no need for setSettingsDirty()
}
/*US
if ( mw->inherits("KMainWindow") )
static_cast<KMainWindow *>(mw)->setSettingsDirty();
*/
}
}
}
void KToolBar::rebuildLayout()
{
for(QWidget *w=d->idleButtons.first(); w; w=d->idleButtons.next())
w->blockSignals(false);
d->idleButtons.clear();
layoutTimer->stop();
QApplication::sendPostedEvents( this, QEvent::ChildInserted );
QBoxLayout *l = boxLayout();
l->setMargin( 1 );
// clear the old layout
QLayoutIterator it = l->iterator();
while ( it.current() ) {
it.deleteCurrent();
}
for ( QWidget *w = widgets.first(); w; w = widgets.next() ) {
if ( w == rightAligned ) {
continue;
}
if ( w->inherits( "KToolBarSeparator" ) &&
!( (KToolBarSeparator*)w )->showLine() ) {
l->addSpacing( 6 );
w->hide();
continue;
}
if ( w->inherits( "QPopupMenu" ) )
continue;
l->addWidget( w );
w->show();
}
if ( rightAligned ) {
l->addStretch();
l->addWidget( rightAligned );
rightAligned->show();
}
if ( fullSize() ) {
// This code sucks. It makes the last combo in a toolbar VERY big (e.g. zoom combo in kword).
//if ( !stretchableWidget && widgets.last() &&
// !widgets.last()->inherits( "QButton" ) && !widgets.last()->inherits( "KAnimWidget" ) )
// setStretchableWidget( widgets.last() );
if ( !rightAligned )
l->addStretch();
if ( stretchableWidget )
l->setStretchFactor( stretchableWidget, 10 );
}
l->invalidate();
QApplication::postEvent( this, new QEvent( QEvent::LayoutHint ) );
//#endif //DESKTOP_VERSION
}
void KToolBar::childEvent( QChildEvent *e )
{
if ( e->child()->isWidgetType() ) {
QWidget * w = (QWidget*)e->child();
if ( e->type() == QEvent::ChildInserted ) {
if ( !e->child()->inherits( "QPopupMenu" ) &&
::qstrcmp( "qt_dockwidget_internal", e->child()->name() ) != 0 ) {
// prevent items that have been explicitly inserted by insert*() from
// being inserted again
if ( !widget2id.contains( w ) )
{
int dummy = -1;
insertWidgetInternal( w, dummy, -1 );
}
}
} else {
removeWidgetInternal( w );
}
if ( isVisibleTo( 0 ) )
{
QBoxLayout *l = boxLayout();
// QLayout *l = layout();
// clear the old layout so that we don't get unnecassery layout
// changes till we have rebuild the thing
QLayoutIterator it = l->iterator();
while ( it.current() ) {
it.deleteCurrent();
}
layoutTimer->start( 50, TRUE );
}
}
QToolBar::childEvent( e );
}
void KToolBar::insertWidgetInternal( QWidget *w, int &index, int id )
{
// we can't have it in widgets, or something is really wrong
//widgets.removeRef( w );
connect( w, SIGNAL( destroyed() ),
this, SLOT( widgetDestroyed() ) );
if ( index == -1 || index > (int)widgets.count() ) {
widgets.append( w );
index = (int)widgets.count();
}
else
widgets.insert( index, w );
if ( id == -1 )
id = id2widget.count();
id2widget.insert( id, w );
widget2id.insert( w, id );
}
void KToolBar::repaintMe()
{
setUpdatesEnabled( true );
QToolBar::repaint( true );
qDebug(" KToolBar::repaintMe() ");
}
void KToolBar::showEvent( QShowEvent *e )
{
rebuildLayout();
QToolBar::showEvent( e );
}
void KToolBar::setStretchableWidget( QWidget *w )
{
QToolBar::setStretchableWidget( w );
stretchableWidget = w;
}
QSizePolicy KToolBar::sizePolicy() const
{
if ( orientation() == Horizontal )
return QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed );
else
return QSizePolicy( QSizePolicy::Fixed, QSizePolicy::Expanding );
}
QSize KToolBar::sizeHint() const
{
- return QToolBar::sizeHint();
+ QSize sh = QToolBar::sizeHint();
+ //qDebug("%x KToolBar::sizeHint() %d %d ",this, QToolBar::sizeHint().width(),QToolBar::sizeHint().height() );
+ if ( sh.height() <= 20 || sh.width() < 60 )
+ return QSize( sizeHintW, sizeHintH );
+ KToolBar* ttt = (KToolBar*) this;
+ ttt->sizeHintW = sh.width();
+ ttt->sizeHintH = sh.height();
+ return sh;
+ //return QToolBar::sizeHint();
#if 0
QWidget::polish();
static int iii = 0;
++iii;
qDebug("++++++++ KToolBar::sizeHint() %d ", iii );
int margin = static_cast<QWidget*>(ncThis)->layout()->margin();
switch( barPos() )
{
case KToolBar::Top:
case KToolBar::Bottom:
for ( QWidget *w = widgets.first(); w; w =widgets.next() )
{
if ( w->inherits( "KToolBarSeparator" ) &&
!( static_cast<KToolBarSeparator*>(w)->showLine() ) )
{
minSize += QSize(6, 0);
}
else
{
QSize sh = w->sizeHint();
if (!sh.isValid())
sh = w->minimumSize();
minSize = minSize.expandedTo(QSize(0, sh.height()));
minSize += QSize(sh.width()+1, 0);
}
}
/*US
minSize += QSize(QApplication::style().pixelMetric( QStyle::PM_DockWindowHandleExtent ), 0);
*/
minSize += QSize(margin*2, margin*2);
break;
case KToolBar::Left:
case KToolBar::Right:
for ( QWidget *w = widgets.first(); w; w = widgets.next() )
{
if ( w->inherits( "KToolBarSeparator" ) &&
!( static_cast<KToolBarSeparator*>(w)->showLine() ) )
{
minSize += QSize(0, 6);
}
else
{
QSize sh = w->sizeHint();
if (!sh.isValid())
sh = w->minimumSize();
minSize = minSize.expandedTo(QSize(sh.width(), 0));
minSize += QSize(0, sh.height()+1);
}
}
/*US
minSize += QSize(0, QApplication::style().pixelMetric( QStyle::PM_DockWindowHandleExtent ));
*/
minSize += QSize(margin*2, margin*2);
break;
default:
minSize = QToolBar::sizeHint();
break;
}
return minSize;
#endif
}
QSize KToolBar::minimumSize() const
{
return minimumSizeHint();
}
QSize KToolBar::minimumSizeHint() const
{
return sizeHint();
}
bool KToolBar::highlight() const
{
return d->m_highlight;
}
void KToolBar::hide()
{
QToolBar::hide();
}
void KToolBar::show()
{
QToolBar::show();
}
void KToolBar::resizeEvent( QResizeEvent *e )
{
bool b = isUpdatesEnabled();
setUpdatesEnabled( FALSE );
QToolBar::resizeEvent( e );
if (b)
d->repaintTimer.start( 100, true );
}
void KToolBar::slotIconChanged(int group)
{
if ((group != KIcon::Toolbar) && (group != KIcon::MainToolbar))
return;
if ((group == KIcon::MainToolbar) != !::qstrcmp(name(), "mainToolBar"))
return;
emit modechange();
if (isVisible())
updateGeometry();
}
void KToolBar::slotReadConfig()
{
//kdDebug(220) << "KToolBar::slotReadConfig" << endl;
// Read appearance settings (hmm, we used to do both here,
// but a well behaved application will call applyMainWindowSettings
// anyway, right ?)
applyAppearanceSettings(KGlobal::config(), QString::null );
}
void KToolBar::slotAppearanceChanged()
{
// Read appearance settings from global file.
applyAppearanceSettings(KGlobal::config(), QString::null, true /* lose local settings */ );
// And remember to save the new look later
/*US
if ( mainWindow() && mainWindow()->inherits( "KMainWindow" ) )
static_cast<KMainWindow *>(mainWindow())->setSettingsDirty();
*/
}
//static
bool KToolBar::highlightSetting()
{
QString grpToolbar(QString::fromLatin1("Toolbar style"));
KConfigGroupSaver saver(KGlobal::config(), grpToolbar);
return KGlobal::config()->readBoolEntry(QString::fromLatin1("Highlighting"),true);
}
//static
bool KToolBar::transparentSetting()
{
QString grpToolbar(QString::fromLatin1("Toolbar style"));
KConfigGroupSaver saver(KGlobal::config(), grpToolbar);
return KGlobal::config()->readBoolEntry(QString::fromLatin1("TransparentMoving"),true);
}
//static
KToolBar::IconText KToolBar::iconTextSetting()
{
QString grpToolbar(QString::fromLatin1("Toolbar style"));
KConfigGroupSaver saver(KGlobal::config(), grpToolbar);
QString icontext = KGlobal::config()->readEntry(QString::fromLatin1("IconText"),QString::fromLatin1("IconOnly"));
if ( icontext == "IconTextRight" )
return IconTextRight;
else if ( icontext == "IconTextBottom" )
return IconTextBottom;
else if ( icontext == "TextOnly" )
return TextOnly;
else
return IconOnly;
}
void KToolBar::applyAppearanceSettings(KConfig *config, const QString &_configGroup, bool forceGlobal)
{
return;
QString configGroup = _configGroup.isEmpty() ? settingsGroup() : _configGroup;
//kdDebug(220) << "KToolBar::applyAppearanceSettings: configGroup=" << configGroup << endl;
// We have application-specific settings in the XML file,
// and nothing in the application's config file
// -> don't apply the global defaults, the XML ones are preferred
// See applySettings for a full explanation
/*US :we do not support xml files
if ( d->m_xmlguiClient && !d->m_xmlguiClient->xmlFile().isEmpty() &&
!config->hasGroup(configGroup) )
{
//kdDebug(220) << "skipping global defaults, using XML ones instead" << endl;
return;
}
*/
if ( !config->hasGroup(configGroup) )
{
//kdDebug(220) << "skipping global defaults, using XML ones instead" << endl;
return;
}
KConfig *gconfig = KGlobal::config();
/*US
static const QString &attrIconText = KGlobal::staticQString("IconText");
static const QString &attrHighlight = KGlobal::staticQString("Highlighting");
static const QString &attrTrans = KGlobal::staticQString("TransparentMoving");
static const QString &attrSize = KGlobal::staticQString("IconSize");
*/
// we actually do this in two steps.
// First, we read in the global styles [Toolbar style] (from the KControl module).
// Then, if the toolbar is NOT 'mainToolBar', we will also try to read in [barname Toolbar style]
bool highlight;
int transparent;
QString icontext;
int iconsize = 0;
// this is the first iteration
QString grpToolbar(QString::fromLatin1("Toolbar style"));
{ // start block for KConfigGroupSaver
KConfigGroupSaver saver(gconfig, grpToolbar);
// first, get the generic settings
//US highlight = gconfig->readBoolEntry(attrHighlight, true);
highlight = gconfig->readBoolEntry("Highlighting", true);
//US transparent = gconfig->readBoolEntry(attrTrans, true);
transparent = gconfig->readBoolEntry("TransparentMoving", true);
// we read in the IconText property *only* if we intend on actually
// honoring it
if (d->m_honorStyle)
//US d->IconTextDefault = gconfig->readEntry(attrIconText, d->IconTextDefault);
d->IconTextDefault = gconfig->readEntry("IconText", d->IconTextDefault);
else
d->IconTextDefault = "IconOnly";
// Use the default icon size for toolbar icons.
//US d->IconSizeDefault = gconfig->readNumEntry(attrSize, d->IconSizeDefault);
d->IconSizeDefault = gconfig->readNumEntry("IconSize", d->IconSizeDefault);
if ( !forceGlobal && config->hasGroup(configGroup) )
{
config->setGroup(configGroup);
// first, get the generic settings
//US highlight = config->readBoolEntry(attrHighlight, highlight);
highlight = config->readBoolEntry("Highlighting", highlight);
//US transparent = config->readBoolEntry(attrTrans, transparent);
transparent = config->readBoolEntry("TransparentMoving", transparent);
// now we always read in the IconText property
//US icontext = config->readEntry(attrIconText, d->IconTextDefault);
icontext = config->readEntry("IconText", d->IconTextDefault);
// now get the size
//US iconsize = config->readNumEntry(attrSize, d->IconSizeDefault);
iconsize = config->readNumEntry("IconSize", d->IconSizeDefault);
}
else
{
iconsize = d->IconSizeDefault;
icontext = d->IconTextDefault;
}
// revert back to the old group
} // end block for KConfigGroupSaver
bool doUpdate = false;
IconText icon_text;
if ( icontext == "IconTextRight" )
icon_text = IconTextRight;
else if ( icontext == "IconTextBottom" )
icon_text = IconTextBottom;
else if ( icontext == "TextOnly" )
icon_text = TextOnly;
else
icon_text = IconOnly;
// check if the icon/text has changed
if (icon_text != d->m_iconText) {
//kdDebug(220) << "KToolBar::applyAppearanceSettings setIconText " << icon_text << endl;
setIconText(icon_text, false);
doUpdate = true;
}
// ...and check if the icon size has changed
if (iconsize != d->m_iconSize) {
setIconSize(iconsize, false);
doUpdate = true;
}
QMainWindow *mw = mainWindow();
// ...and if we should highlight
if ( highlight != d->m_highlight ) {
d->m_highlight = highlight;
doUpdate = true;
}
// ...and if we should move transparently
if ( mw && transparent != (!mw->opaqueMoving()) ) {
mw->setOpaqueMoving( !transparent );
}
if (doUpdate)
emit modechange(); // tell buttons what happened
if (isVisible ())
updateGeometry();
}
void KToolBar::applySettings(KConfig *config, const QString &_configGroup)
{
//kdDebug(220) << "KToolBar::applySettings group=" << _configGroup << endl;
QString configGroup = _configGroup.isEmpty() ? settingsGroup() : _configGroup;
/*
Let's explain this a bit more in details.
The order in which we apply settings is :
Global config / <appnamerc> user settings if no XMLGUI is used
Global config / App-XML attributes / <appnamerc> user settings if XMLGUI is used
So in the first case, we simply read everything from KConfig as below,
but in the second case we don't do anything here if there is no app-specific config,
and the XMLGUI uses the static methods of this class to get the global defaults.
Global config doesn't include position (index, offset, newline and hidden/shown).
*/
// First the appearance stuff - the one which has a global config
applyAppearanceSettings( config, _configGroup );
// ...and now the position stuff
if ( config->hasGroup(configGroup) )
{
KConfigGroupSaver cgs(config, configGroup);
/*US
static const QString &attrPosition = KGlobal::staticQString("Position");
static const QString &attrIndex = KGlobal::staticQString("Index");
static const QString &attrOffset = KGlobal::staticQString("Offset");
static const QString &attrNewLine = KGlobal::staticQString("NewLine");
static const QString &attrHidden = KGlobal::staticQString("Hidden");
QString position = config->readEntry(attrPosition, d->PositionDefault);
int index = config->readNumEntry(attrIndex, d->IndexDefault);
int offset = config->readNumEntry(attrOffset, d->OffsetDefault);
bool newLine = config->readBoolEntry(attrNewLine, d->NewLineDefault);
bool hidden = config->readBoolEntry(attrHidden, d->HiddenDefault);
*/
QString position = config->readEntry("Position", d->PositionDefault);
int index = config->readNumEntry("Index", d->IndexDefault);
int offset = config->readNumEntry("Offset", d->OffsetDefault);
bool newLine = config->readBoolEntry("NewLine", d->NewLineDefault);
bool hidden = config->readBoolEntry("Hidden", d->HiddenDefault);
/*US Dock pos(DockTop);
if ( position == "Top" )
pos = DockTop;
else if ( position == "Bottom" )
pos = DockBottom;
else if ( position == "Left" )
pos = DockLeft;
else if ( position == "Right" )
pos = DockRight;
else if ( position == "Floating" )
pos = DockTornOff;
else if ( position == "Flat" )
pos = DockMinimized;
*/
QMainWindow::ToolBarDock pos(QMainWindow::Top);
if ( position == "Top" )
pos = QMainWindow::Top;
else if ( position == "Bottom" )
pos = QMainWindow::Bottom;
else if ( position == "Left" )
pos = QMainWindow::Left;
else if ( position == "Right" )
pos = QMainWindow::Right;
else if ( position == "Floating" )
pos = QMainWindow::TornOff;
else if ( position == "Flat" )
pos = QMainWindow::Minimized;
//kdDebug(220) << "KToolBar::applySettings hidden=" << hidden << endl;
if (hidden)
hide();
else
show();
if ( mainWindow() )
{
QMainWindow *mw = mainWindow();
//kdDebug(220) << "KToolBar::applySettings updating ToolbarInfo" << endl;
d->toolBarInfo = KToolBarPrivate::ToolBarInfo( pos, index, newLine, offset );
// moveDockWindow calls QDockArea which does a reparent() on us with
// showIt = true, so we loose our visibility status
bool doHide = isHidden();
diff --git a/microkde/kdeui/ktoolbar.h b/microkde/kdeui/ktoolbar.h
index 7a5c114..3319fa8 100644
--- a/microkde/kdeui/ktoolbar.h
+++ b/microkde/kdeui/ktoolbar.h
@@ -701,408 +701,410 @@ public:
/**
* Show item.
*/
void showItem (int id);
/**
* Returns the index of the given item.
*
* KDE4: make this const!
*/
int itemIndex (int id);
/**
* Set toolbar to full parent size (default).
*
* In full size mode the bar
* extends over the parent's full width or height. If the mode is disabled
* the toolbar tries to take as much space as it needs without wrapping, but
* it does not exceed the parent box. You can force a certain width or
* height with @ref setMaxWidth() or @ref setMaxHeight().
*
* If you want to use right-aligned items or auto-sized items you must use
* full size mode.
*/
void setFullSize(bool flag = true);
/**
* @return @p true if the full-size mode is enabled. Otherwise
* it returns @false.
*/
bool fullSize() const;
/**
* @deprecated use setMovingEnabled(bool) instead.
* Enable or disable moving of toolbar.
*/
void enableMoving(bool flag = true);
/**
* Set position of toolbar.
* @see BarPosition()
*/
void setBarPos (BarPosition bpos);
/**
* Returns position of toolbar.
*/
const BarPosition barPos();
/**
* @deprecated
* Show, hide, or toggle toolbar.
*
* This method is provided for compatibility only,
* please use show() and/or hide() instead.
* @see BarStatus
*/
bool enable(BarStatus stat);
/**
* @deprecated
* Use setMaximumHeight() instead.
*/
void setMaxHeight (int h); // Set max height for vertical toolbars
/**
* @deprecated
* Use maximumHeight() instead.
* Returns the value that was set with @ref setMaxHeight().
*/
int maxHeight();
/**
* @deprecated
* Use setMaximumWidth() instead.
* Set maximal width of horizontal (top or bottom) toolbar.
*/
void setMaxWidth (int dw);
/**
* @deprecated
* Use maximumWidth() instead.
* Returns the value that was set with @ref setMaxWidth().
*/
int maxWidth();
/**
* Set title for toolbar when it floats.
*
* Titles are however not (yet)
* visible. You can't change toolbar's title while it's floating.
*/
void setTitle (const QString& _title);
/**
* @deprecated
* Use enableMoving() instead.
*/
void enableFloating (bool arrrrrrgh);
/**
* Set the kind of painting for buttons.
*
* Choose from:
* @li IconOnly (only icons),
* @li IconTextRight (icon and text, text is left from icons),
* @li TextOnly (only text),
* @li IconTextBottom (icons and text, text is under icons).
* @see IconText
*
*/
void setIconText(IconText it);
// Note: don't merge with the next one, it breaks Qt properties
/**
* Similar to @ref setIconText(IconText it) but allows you to
* disable or enable updating. If @p update is false, then the
* buttons will not be updated. This is useful only if you know
* that you will be forcing an update later.
*/
void setIconText(IconText it, bool update);
/**
* @return The current text style for buttons.
*/
IconText iconText() const;
/**
* Set the icon size to load. Usually you should not call
* this, the icon size is taken care of by KIconLoader
* and globally configured.
* By default, the toolbar will load icons of size 32 for main
* toolbars and 22 for other toolbars
* @see KIconLoader.
*
* @param size The size to use
*/
void setIconSize(int size);
// Note: don't merge with the next one, it breaks Qt properties
/**
* Same as @ref setIconText(int size) but allows you
* to disable the toolbar update.
*
* @param size The size to use
* @param update If true, then the toolbar will be updated after
* this
*/
void setIconSize(int size, bool update);
/**
* @return The current icon size for buttons.
*/
int iconSize() const;
/**
* This allows you to enable or disable the context menu.
*
* @param enable If false, then the context menu will be disabled
*/
void setEnableContextMenu(bool enable = true);
/**
* Returns whether or not the context menu is disabled
*
* @return The context menu state
*/
bool contextMenuEnabled() const;
/**
* This will inform a toolbar button to ignore certain style
* changes. Specifically, it will ignore IconText (always IconOnly)
* and will not allow image effects to apply.
*
* @param id The button to exclude from styles
* @param no_style If true, then it is excluded (default: true).
*/
void setItemNoStyle(int id, bool no_style = true);
void setFlat (bool flag);
/**
* @return the number of items in the toolbar
*/
int count() const;
/**
* Instruct the toolbar to save it's current state to either the app
* config file or to the XML-GUI resource file (whichever has
* precedence).
*/
void saveState();
/**
* Save the toolbar settings to group @p configGroup in @p config.
*/
void saveSettings(KConfig *config, const QString &configGroup);
/**
* Read the toolbar settings from group @p configGroup in @p config
* and apply them.
*/
void applySettings(KConfig *config, const QString &configGroup);
/**
* Tell the toolbar what XML-GUI resource file it should use to save
* it's state. The state of the toolbar (position, size, etc) is
* saved in KConfig files if the application does not use XML-GUI..
* but if the app does, then it's saved the XML file. This function
* allows this to happen.
*
* @param xmlfile The XML-GUI resource file to write to
* @param xml The DOM document for the XML-GUI building
*/
// void setXML(const QString& xmlfile, const QDomDocument& xml);
/* @internal */
void setXMLGUIClient( KXMLGUIClient *client );
/**
* Assign a (translated) text to this toolbar. This is used
* for the tooltip on the handle, and when listing the toolbars.
*/
void setText( const QString & txt );
/**
* @return the toolbar's text.
*/
QString text() const;
void setStretchableWidget( QWidget *w );
QSizePolicy sizePolicy() const;
bool highlight() const;
QSize sizeHint() const;
QSize minimumSizeHint() const;
QSize minimumSize() const;
void hide();
void show();
void updateRects( bool = FALSE ) {}
//US void loadState( const QDomElement &e );
//US void saveState( QDomElement &e );
/**
* @internal
*/
void positionYourself( bool force = false);
signals:
/**
* Emitted when button @p id is clicked.
*/
void clicked(int id);
/**
* Emitted when button @p id is double-clicked.
*
* Note: you will always
* recive two @ref clicked() , @ref pressed() and @ref released() signals.
* There is no way to avoid it - at least no easy way.
* If you need to resolve this all you can do is set up timers
* which wait for @ref QApplication::doubleClickInterval() to expire.
* If in that time you don't get this signal, you may belive that
* button was only clicked and not double-clicked.
* And please note that butons with popup menus do not emit this signal,
* but those with delayed popup do.
*/
void doubleClicked (int id);
/**
* Emitted when button @p id is pressed.
*/
void pressed(int);
/**
* Emits when button @p id is released.
*/
void released(int);
/**
* Emitted when a toggle button changes state.
*
* Emitted also if you change state
* with @ref setButton() or @ref toggleButton()
* If you make a button normal again, with
* setToggle(false), this signal won't
* be emitted.
*/
void toggled(int);
/**
* This signal is emitted when item id gets highlighted/unhighlighted
* (i.e when mouse enters/exits).
*
* Note that this signal is emitted from
* all buttons (normal, disabled and toggle) even when there is no visible
* change in buttons (i.e., buttons do not raise when mouse enters).
* The parameter @p isHighlighted is @p true when mouse enters and @p false when
* mouse exits.
*/
void highlighted(int id, bool isHighlighted);
/**
* This signal is emitted when item id gets highlighted/unhighlighted
* (i.e when mouse enters/exits).
*
* Note that this signal is emitted from
* all buttons (normal, disabled and toggle) even when there is no visible
* change in buttons (i.e., buttons do not raise when mouse enters).
*/
void highlighted(int id );
/**
* Emitted when toolbar changes position, or when
* an item is removed from toolbar.
*
* If you subclass @ref KMainWindow and reimplement
* @ref KMainWindow::resizeEvent() be sure to connect to
* this signal. Note: You can connect this signal to a slot that
* doesn't take parameter.
*/
void moved( BarPosition );
/**
* @internal
* This signal is emitted when toolbar detects changing of
* following parameters:
* highlighting, button-size, button-mode. This signal is
* internal, aimed to buttons.
*/
void modechange ();
/**
* This signal is emitted when the toolbar is getting deleted,
* and before ~KToolbar finishes (so it's still time to remove
* widgets from the toolbar).
* Used by KWidgetAction.
* @since 3.2
*/
void toolbarDestroyed();
public:
/**
* @return global setting for "Highlight buttons under mouse"
*/
void repaintMe();
static bool highlightSetting();
/**
* @return global setting for "Toolbars transparent when moving"
*/
static bool transparentSetting();
/**
* @return global setting for "Icon Text"
*/
static IconText iconTextSetting();
public slots:
virtual void setIconText( const QString &txt )
{ QToolBar::setIconText( txt ); }
void slotRepaint();
protected:
void mousePressEvent( QMouseEvent * );
void childEvent( QChildEvent *e );
void showEvent( QShowEvent *e );
void resizeEvent( QResizeEvent *e );
bool event( QEvent *e );
void applyAppearanceSettings(KConfig *config, const QString &_configGroup, bool forceGlobal = false);
QString settingsGroup();
private slots:
void rebuildLayout();
void slotReadConfig ();
void slotAppearanceChanged();
void slotIconChanged(int);
void toolBarPosChanged( QToolBar *tb );
void slotContextAboutToShow();
void widgetDestroyed();
private:
+ int sizeHintW;
+ int sizeHintH;
void init( bool readConfig = true, bool honorStyle = false );
void doConnections( KToolBarButton *button );
void insertWidgetInternal( QWidget *w, int &index, int id );
void removeWidgetInternal( QWidget *w );
void getAttributes( QString &position, QString &icontext, int &index );
//US KPopupMenu *contextMenu();
QPopupMenu *contextMenu();
QMap<QWidget*, int > widget2id;
typedef QMap<int, QWidget* > Id2WidgetMap;
Id2WidgetMap id2widget;
//US KPopupMenu *context;
QPopupMenu *context;
QPtrList<QWidget> widgets;
QTimer *layoutTimer;
QGuardedPtr<QWidget> stretchableWidget, rightAligned;
protected:
virtual void virtual_hook( int id, void* data );
private:
KToolBarPrivate *d;
bool inshutdownprocess;
};
#endif