diff options
| author | Darrell Anderson <humanreadable@yahoo.com> | 2014-01-06 02:25:18 +0100 | 
|---|---|---|
| committer | Slávek Banko <slavek.banko@axis.cz> | 2014-01-06 02:25:18 +0100 | 
| commit | f99c7f6c54aaf96eec1f58c2eaacb46edc6de8cd (patch) | |
| tree | b3de0b458b84e88c6426cebed026d284cb03c652 /tdedebugdialog/tdelistdebugdialog.cpp | |
| parent | a4a54d1ee3c220a7e698c96a11500a4eba22800a (diff) | |
| download | tdebase-f99c7f6c54aaf96eec1f58c2eaacb46edc6de8cd.tar.gz tdebase-f99c7f6c54aaf96eec1f58c2eaacb46edc6de8cd.zip | |
Rename kdebugdialog -> tdedebugdialog
Diffstat (limited to 'tdedebugdialog/tdelistdebugdialog.cpp')
| -rw-r--r-- | tdedebugdialog/tdelistdebugdialog.cpp | 193 | 
1 files changed, 193 insertions, 0 deletions
| diff --git a/tdedebugdialog/tdelistdebugdialog.cpp b/tdedebugdialog/tdelistdebugdialog.cpp new file mode 100644 index 000000000..d447b3747 --- /dev/null +++ b/tdedebugdialog/tdelistdebugdialog.cpp @@ -0,0 +1,193 @@ +/* This file is part of the KDE libraries +   Copyright (C) 2000 David Faure <faure@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 "tdelistdebugdialog.h" +#include <tdeconfig.h> +#include <tdeapplication.h> +#include <kdebug.h> +#include <tqlayout.h> +#include <tqscrollview.h> +#include <tqvbox.h> +#include <tdelocale.h> +#include <tqpushbutton.h> +#include <klineedit.h> +#include <dcopclient.h> + +TDEListDebugDialog::TDEListDebugDialog( TQStringList areaList, TQWidget *parent, const char *name, bool modal ) +  : KAbstractDebugDialog( parent, name, modal ), +  m_areaList( areaList ) +{ +  setCaption(i18n("Debug Settings")); + +  TQVBoxLayout *lay = new TQVBoxLayout( this, KDialog::marginHint(), KDialog::spacingHint() ); + +  m_incrSearch = new KLineEdit( this ); +  lay->addWidget( m_incrSearch ); +  connect( m_incrSearch, TQT_SIGNAL( textChanged( const TQString& ) ), +           TQT_SLOT( generateCheckBoxes( const TQString& ) ) ); + +  TQScrollView * scrollView = new TQScrollView( this ); +  scrollView->setResizePolicy( TQScrollView::AutoOneFit ); +  lay->addWidget( scrollView ); + +  m_box = new TQVBox( scrollView->viewport() ); +  scrollView->addChild( m_box ); + +  generateCheckBoxes( TQString::null ); + +  TQHBoxLayout* selectButs = new TQHBoxLayout( lay ); +  TQPushButton* all = new TQPushButton( i18n("&Select All"), this ); +  TQPushButton* none = new TQPushButton( i18n("&Deselect All"), this ); +  selectButs->addWidget( all ); +  selectButs->addWidget( none ); + +  connect( all, TQT_SIGNAL( clicked() ), this, TQT_SLOT( selectAll() ) ); +  connect( none, TQT_SIGNAL( clicked() ), this, TQT_SLOT( deSelectAll() ) ); + +  buildButtons( lay ); +  resize( 350, 400 ); +} + +void TDEListDebugDialog::generateCheckBoxes( const TQString& filter ) +{ +  TQPtrListIterator<TQCheckBox> cb_it ( boxes ); +  for( ; cb_it.current() ; ++cb_it ) +  { +    if( (*cb_it)->state() != TQButton::NoChange ) +      m_changes.insert( (*cb_it)->name(), (*cb_it)->isChecked() ? 2 : 4 ); +  } + +  boxes.setAutoDelete( true ); +  boxes.clear(); +  boxes.setAutoDelete( false ); + +  TQWidget* taborder = m_incrSearch; +  TQStringList::Iterator it = m_areaList.begin(); +  for ( ; it != m_areaList.end() ; ++it ) +  { +    TQString data = (*it).simplifyWhiteSpace(); +    if ( filter.isEmpty() || data.lower().contains( filter.lower() ) ) +    { +      int space = data.find(" "); +      if (space == -1) +        kdError() << "No space:" << data << endl; + +      TQString areaNumber = data.left(space); +      //kdDebug() << areaNumber << endl; +      TQCheckBox * cb = new TQCheckBox( data, m_box, areaNumber.latin1() ); +      cb->show(); +      boxes.append( cb ); +      setTabOrder( taborder, cb ); +      taborder = cb; +    } +  } + +  load(); +} + +void TDEListDebugDialog::selectAll() +{ +  TQPtrListIterator<TQCheckBox> it ( boxes ); +  for ( ; it.current() ; ++it ) { +    (*it)->setChecked( true ); +    m_changes.insert( (*it)->name(), 2 ); +  } +} + +void TDEListDebugDialog::deSelectAll() +{ +  TQPtrListIterator<TQCheckBox> it ( boxes ); +  for ( ; it.current() ; ++it ) { +    (*it)->setChecked( false ); +    m_changes.insert( (*it)->name(), 4 ); +  } +} + +void TDEListDebugDialog::load() +{ +  TQPtrListIterator<TQCheckBox> it ( boxes ); +  for ( ; it.current() ; ++it ) +  { +      pConfig->setGroup( (*it)->name() ); // Group name = debug area code = cb's name + +      int setting = pConfig->readNumEntry( "InfoOutput", 2 ); +      // override setting if in m_changes +      if( m_changes.find( (*it)->name() ) != m_changes.end() ) { +        setting = m_changes[ (*it)->name() ]; +      } + +      switch (setting) { +        case 4: // off +          (*it)->setChecked(false); +          break; +        case 2: //shell +          (*it)->setChecked(true); +          break; +        case 3: //syslog +        case 1: //msgbox +        case 0: //file +        default: +          (*it)->setNoChange(); +          /////// Uses the triState capability of checkboxes +          ////// Note: it seems some styles don't draw that correctly (BUG) +          break; +      } +  } +} + +void TDEListDebugDialog::save() +{ +  TQPtrListIterator<TQCheckBox> it ( boxes ); +  for ( ; it.current() ; ++it ) +  { +      pConfig->setGroup( (*it)->name() ); // Group name = debug area code = cb's name +      if ( (*it)->state() != TQButton::NoChange ) +      { +          int setting = (*it)->isChecked() ? 2 : 4; +          pConfig->writeEntry( "InfoOutput", setting ); +      } +  } +  //sync done by main.cpp + +  // send DCOP message to all clients +  TQByteArray data; +  if (!kapp->dcopClient()->send("*", "KDebug", "notifyKDebugConfigChanged()", data)) +  { +    kdError() << "Unable to send DCOP message" << endl; +  } + +  m_changes.clear(); +} + +void TDEListDebugDialog::activateArea( TQCString area, bool activate ) +{ +  TQPtrListIterator<TQCheckBox> it ( boxes ); +  for ( ; it.current() ; ++it ) +  { +      if ( area == (*it)->name()  // debug area code = cb's name +          || (*it)->text().find( TQString::fromLatin1(area) ) != -1 ) // area name included in cb text +      { +          (*it)->setChecked( activate ); +          return; +      } +  } +} + +#include "tdelistdebugdialog.moc" | 
