configwidget.cpp

00001 /*
00002  * configwidget.cpp
00003  *
00004  * Copyright (C)  2004  Zack Rusin <zack@kde.org>
00005  *
00006  * This library is free software; you can redistribute it and/or
00007  * modify it under the terms of the GNU Lesser General Public
00008  * License as published by the Free Software Foundation; either
00009  * version 2.1 of the License, or (at your option) any later version.
00010  *
00011  * This library is distributed in the hope that it will be useful,
00012  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014  * Lesser General Public License for more details.
00015  *
00016  * You should have received a copy of the GNU Lesser General Public
00017  * License along with this library; if not, write to the Free Software
00018  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
00019  * 02110-1301  USA
00020  */
00021 #include "configwidget.h"
00022 #include "configui.h"
00023 
00024 #include "broker.h"
00025 #include "settings.h"
00026 
00027 #include <keditlistbox.h>
00028 #include <kcombobox.h>
00029 #include <klocale.h>
00030 
00031 #include <qcheckbox.h>
00032 #include <qlayout.h>
00033 
00034 using namespace KSpell2;
00035 
00036 class ConfigWidget::Private
00037 {
00038 public:
00039     Broker::Ptr broker;
00040     KSpell2ConfigUI *ui;
00041 };
00042 
00043 ConfigWidget::ConfigWidget( Broker *broker, QWidget *parent, const char *name )
00044     : QWidget( parent, name )
00045 {
00046     init( broker );
00047 }
00048 
00049 ConfigWidget::~ConfigWidget()
00050 {
00051     delete d; d = 0;
00052 }
00053 
00054 void ConfigWidget::init( Broker *broker )
00055 {
00056     d = new Private;
00057     d->broker = broker;
00058 
00059     QVBoxLayout *layout = new QVBoxLayout( this, 0, 0, "KSpell2ConfigUILayout");
00060     d->ui = new KSpell2ConfigUI( this );
00061 
00062     QStringList langs = d->broker->languages();
00063     //QStringList clients = d->broker->clients();
00064     d->ui->m_langCombo->insertStringList( langs );
00065     setCorrectLanguage( langs );
00066     //d->ui->m_clientCombo->insertStringList( clients );
00067     d->ui->m_skipUpperCB->setChecked( !d->broker->settings()->checkUppercase() );
00068     d->ui->m_skipRunTogetherCB->setChecked( d->broker->settings()->skipRunTogether() );
00069     QStringList ignoreList = d->broker->settings()->currentIgnoreList();
00070     ignoreList.sort();
00071     d->ui->m_ignoreListBox->insertStringList( ignoreList );
00072     d->ui->m_bgSpellCB->setChecked( d->broker->settings()->backgroundCheckerEnabled() );
00073     d->ui->m_bgSpellCB->hide();//hidden by default
00074     connect( d->ui->m_ignoreListBox, SIGNAL(changed()), SLOT(slotChanged()) );
00075 
00076     layout->addWidget( d->ui );
00077 }
00078 
00079 void KSpell2::ConfigWidget::save()
00080 {
00081     setFromGUI();
00082     d->broker->settings()->save();
00083 }
00084 
00085 void ConfigWidget::setFromGUI()
00086 {
00087     d->broker->settings()->setDefaultLanguage(
00088         d->ui->m_langCombo->currentText() );
00089     d->broker->settings()->setCheckUppercase(
00090         !d->ui->m_skipUpperCB->isChecked() );
00091     d->broker->settings()->setSkipRunTogether(
00092         d->ui->m_skipRunTogetherCB->isChecked() );
00093     d->broker->settings()->setBackgroundCheckerEnabled(
00094         d->ui->m_bgSpellCB->isChecked() );
00095 }
00096 
00097 void ConfigWidget::slotChanged()
00098 {
00099     d->broker->settings()->setCurrentIgnoreList(
00100         d->ui->m_ignoreListBox->items() );
00101 }
00102 
00103 void ConfigWidget::setCorrectLanguage( const QStringList& langs)
00104 {
00105     int idx = 0;
00106     for ( QStringList::const_iterator itr = langs.begin();
00107           itr != langs.end(); ++itr, ++idx ) {
00108         if ( *itr == d->broker->settings()->defaultLanguage() )
00109             d->ui->m_langCombo->setCurrentItem( idx );
00110     }
00111 }
00112 
00113 void ConfigWidget::setBackgroundCheckingButtonShown( bool b )
00114 {
00115     d->ui->m_bgSpellCB->setShown( b );
00116 }
00117 
00118 bool ConfigWidget::backgroundCheckingButtonShown() const
00119 {
00120     return d->ui->m_bgSpellCB->isShown();
00121 }
00122 
00123 void ConfigWidget::slotDefault()
00124 {
00125     d->ui->m_skipUpperCB->setChecked( false );
00126     d->ui->m_skipRunTogetherCB->setChecked( false );
00127     d->ui->m_bgSpellCB->setChecked( true );
00128     d->ui->m_ignoreListBox->clear();
00129 }
00130 
00131 #include "configwidget.moc"
KDE Home | KDE Accessibility Home | Description of Access Keys