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.
216 lines
7.2 KiB
216 lines
7.2 KiB
/***************************************************************************
|
|
autoreplacepreferences.cpp - description
|
|
-------------------
|
|
begin : 20030426
|
|
copyright : (C) 2003 by Roberto Pariset
|
|
email : victorheremita@fastwebnet.it
|
|
***************************************************************************/
|
|
|
|
/***************************************************************************
|
|
* *
|
|
* 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. *
|
|
* *
|
|
***************************************************************************/
|
|
|
|
#include <tqcheckbox.h>
|
|
#include <tqlayout.h>
|
|
#include <tqpushbutton.h>
|
|
#include <tqgroupbox.h>
|
|
#include <tqheader.h>
|
|
#include <tqlistview.h>
|
|
|
|
#include <klocale.h>
|
|
#include <klineedit.h>
|
|
#include <kglobal.h>
|
|
#include <kgenericfactory.h>
|
|
#include <kautoconfig.h>
|
|
|
|
#include "autoreplaceprefs.h"
|
|
#include "autoreplacepreferences.h"
|
|
#include "autoreplaceconfig.h"
|
|
|
|
typedef KGenericFactory<AutoReplacePreferences> AutoReplacePreferencesFactory;
|
|
|
|
K_EXPORT_COMPONENT_FACTORY( kcm_kopete_autoreplace, AutoReplacePreferencesFactory( "kcm_kopete_autoreplace" ) )
|
|
|
|
AutoReplacePreferences::AutoReplacePreferences( TQWidget *parent, const char * /* name */, const TQStringList &args )
|
|
: KCAutoConfigModule( AutoReplacePreferencesFactory::instance(), parent, args )
|
|
{
|
|
( new TQVBoxLayout( this ) )->setAutoAdd( true );
|
|
preferencesDialog = new AutoReplacePrefsUI( this );
|
|
|
|
// creates table columns (avoids new columns every time)
|
|
preferencesDialog->m_list->addColumn( i18n("Text" ) );
|
|
preferencesDialog->m_list->addColumn( i18n("Replacement" ) );
|
|
preferencesDialog->m_list->header()->setStretchEnabled( true , 1 );
|
|
|
|
// connect SIGNALS/SLOTS
|
|
connect( preferencesDialog->m_add, TQT_SIGNAL(pressed()),
|
|
TQT_SLOT( slotAddCouple()) );
|
|
connect( preferencesDialog->m_edit, TQT_SIGNAL(pressed()),
|
|
TQT_SLOT( slotEditCouple()) );
|
|
connect( preferencesDialog->m_remove, TQT_SIGNAL(pressed()),
|
|
TQT_SLOT(slotRemoveCouple()) );
|
|
connect( preferencesDialog->m_list, TQT_SIGNAL(selectionChanged()),
|
|
TQT_SLOT(slotSelectionChanged()) );
|
|
connect( preferencesDialog->m_key, TQT_SIGNAL(textChanged ( const TQString & )),
|
|
TQT_SLOT( slotEnableAddEdit( const TQString & )) );
|
|
|
|
m_wordListChanged = false;
|
|
|
|
// Sentence options and which messages to apply autoreplace to
|
|
// are managed by KCMAutoConfigModule. The list of replacements
|
|
// itself is manually read/written as KCMAutoConfigModule doesn't support it.
|
|
autoConfig()->ignoreSubWidget( preferencesDialog->replacementsGroup );
|
|
setMainWidget( preferencesDialog, "AutoReplace Plugin" );
|
|
|
|
m_config = new AutoReplaceConfig;
|
|
load();
|
|
}
|
|
|
|
AutoReplacePreferences::~AutoReplacePreferences()
|
|
{
|
|
delete m_config;
|
|
}
|
|
|
|
// reload configuration reading it from kopeterc
|
|
void AutoReplacePreferences::load()
|
|
{
|
|
m_config->load();
|
|
|
|
// Removes and deletes all the items in this list view and triggers an update
|
|
preferencesDialog->m_list->clear();
|
|
|
|
// show keys/values on gui
|
|
AutoReplaceConfig::WordsToReplace::Iterator it;
|
|
AutoReplaceConfig::WordsToReplace map = m_config->map();
|
|
for ( it = map.begin(); it != map.end(); ++it )
|
|
{
|
|
// notice: insertItem is called automatically by the constructor
|
|
new TQListViewItem( preferencesDialog->m_list, it.key(), it.data() );
|
|
}
|
|
|
|
m_wordListChanged = false;
|
|
KCAutoConfigModule::load();
|
|
}
|
|
|
|
// save list to kopeterc and creates map out of it
|
|
void AutoReplacePreferences::save()
|
|
{
|
|
// make a list reading all values from gui
|
|
AutoReplaceConfig::WordsToReplace newWords;
|
|
for ( TQListViewItem * i = preferencesDialog->m_list->firstChild(); i != 0; i = i->nextSibling() )
|
|
newWords[ i->text( 0 ) ] = i->text( 1 );
|
|
|
|
// save the words list
|
|
m_config->setMap( newWords );
|
|
m_config->save();
|
|
|
|
m_wordListChanged = false;
|
|
KCAutoConfigModule::save();
|
|
}
|
|
|
|
// read m_key m_value, create a TQListViewItem
|
|
void AutoReplacePreferences::slotAddCouple()
|
|
{
|
|
TQString k = preferencesDialog->m_key->text();
|
|
TQString v = preferencesDialog->m_value->text();
|
|
if ( !k.isEmpty() && !k.isNull() && !v.isEmpty() && !v.isNull() )
|
|
{
|
|
TQListViewItem * lvi;
|
|
TQListViewItem * oldLvi = 0;
|
|
// see if we are replacing an existing entry
|
|
if ( ( oldLvi = preferencesDialog->m_list->findItem( k, 0 ) ) )
|
|
delete oldLvi;
|
|
lvi = new TQListViewItem( preferencesDialog->m_list, k, v );
|
|
// Triggers a size, tqgeometry and content update
|
|
// during the next iteration of the event loop
|
|
preferencesDialog->m_list->triggerUpdate();
|
|
// select last added
|
|
preferencesDialog->m_list->setSelected( lvi, true );
|
|
}
|
|
|
|
m_wordListChanged = true;
|
|
slotWidgetModified();
|
|
}
|
|
|
|
// edit the selected item
|
|
void AutoReplacePreferences::slotEditCouple()
|
|
{
|
|
TQString k = preferencesDialog->m_key->text();
|
|
TQString v = preferencesDialog->m_value->text();
|
|
TQListViewItem * lvi;
|
|
if ( ( lvi = preferencesDialog->m_list->selectedItem() ) && !k.isEmpty() && !k.isNull() && !v.isEmpty() && !v.isNull() )
|
|
{
|
|
lvi->setText( 0, k );
|
|
lvi->setText( 1, v );
|
|
preferencesDialog->m_list->triggerUpdate();
|
|
m_wordListChanged = true;
|
|
slotWidgetModified();
|
|
}
|
|
}
|
|
|
|
// Returns a pointer to the selected item if the list view is in
|
|
// Single selection mode and an item is selected
|
|
void AutoReplacePreferences::slotRemoveCouple()
|
|
{
|
|
delete preferencesDialog->m_list->selectedItem();
|
|
|
|
m_wordListChanged = true;
|
|
slotWidgetModified();
|
|
}
|
|
|
|
void AutoReplacePreferences::slotEnableAddEdit( const TQString & keyText )
|
|
{
|
|
preferencesDialog->m_add->setEnabled( !keyText.isEmpty() );
|
|
preferencesDialog->m_edit->setEnabled( !keyText.isEmpty() && preferencesDialog->m_list->selectedItem() );
|
|
}
|
|
|
|
void AutoReplacePreferences::slotSelectionChanged()
|
|
{
|
|
TQListViewItem *selection = 0;
|
|
if ( ( selection = preferencesDialog->m_list->selectedItem() ) )
|
|
{
|
|
// enable the remove button
|
|
preferencesDialog->m_remove->setEnabled( true );
|
|
// put the selection contents into the text entry widgets so they can be edited
|
|
preferencesDialog->m_key->setText( selection->text( 0 ) );
|
|
preferencesDialog->m_value->setText( selection->text( 1 ) );
|
|
}
|
|
else
|
|
{
|
|
preferencesDialog->m_remove->setEnabled( false );
|
|
preferencesDialog->m_key->clear();
|
|
preferencesDialog->m_value->clear();
|
|
}
|
|
}
|
|
|
|
void AutoReplacePreferences::slotWidgetModified()
|
|
{
|
|
emit KCModule::changed( m_wordListChanged || autoConfig()->hasChanged() );
|
|
}
|
|
|
|
void AutoReplacePreferences::defaults()
|
|
{
|
|
KCAutoConfigModule::defaults();
|
|
preferencesDialog->m_list->clear();
|
|
m_config->loadDefaultAutoReplaceList();
|
|
AutoReplaceConfig::WordsToReplace::Iterator it;
|
|
AutoReplaceConfig::WordsToReplace map = m_config->map();
|
|
for ( it = map.begin(); it != map.end(); ++it )
|
|
{
|
|
// notice: insertItem is called automatically by the constructor
|
|
new TQListViewItem( preferencesDialog->m_list, it.key(), it.data() );
|
|
}
|
|
m_wordListChanged = true;
|
|
slotWidgetModified();
|
|
}
|
|
|
|
#include "autoreplacepreferences.moc"
|
|
|
|
// vim: set noet ts=4 sts=4 sw=4:
|
|
|