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.
tdenetwork/ksirc/KSPrefs/page_colors.cpp

296 lines
9.7 KiB

/***************************************************************************
* *
* 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 "page_colors.h"
#include <tqcheckbox.h>
#include <tqlineedit.h>
#include <tqradiobutton.h>
#include <tqlabel.h>
#include <tdeconfig.h>
#include <tdeapplication.h>
#include <kcolorbutton.h>
#include <kdebug.h>
PageColors::PageColors( TQWidget *parent, const char *name ) : PageColorsBase( parent, name)
{
changing = 0;
m_dcol.setAutoDelete(true);
}
PageColors::~PageColors()
{
}
void PageColors::saveConfig()
{
ksopts->backgroundColor = backCBtn->color();
ksopts->selBackgroundColor = selBackCBtn->color();
ksopts->selForegroundColor = selForeCBtn->color();
ksopts->errorColor = errorCBtn->color();
ksopts->infoColor = infoCBtn->color();
ksopts->textColor = genericTextCBtn->color();
ksopts->channelColor = chanMsgCBtn->color();
ksopts->linkColor = linkCBtn->color();
ksopts->ownNickColor = ownNickCBtn->color();
ksopts->ownNickBold = ownNickBoldCB->isChecked();
ksopts->ownNickRev = ownNickRevCB->isChecked();
ksopts->ownNickUl = ownNickUlCB->isChecked();
if(fixedOtherColRB->isChecked()){
ksopts->nickColourization = false;
ksopts->nickForeground = nickFGCBtn->color();
ksopts->nickBackground = nickBGCBtn->color();
}
else if(autoOtherColRB->isChecked()){
ksopts->nickColourization = true;
ksopts->nickForeground = TQColor();
ksopts->nickBackground = TQColor();
}
else {
ksopts->nickColourization = false;
ksopts->nickForeground = TQColor();
ksopts->nickBackground = TQColor();
}
ksopts->msgContainNick = ownContainNickCBtn->color();
if(msg1LE->text().length() > 0){
ksopts->msg1Contain = msg1CBtn->color();
ksopts->msg1String = msg1LE->text();
ksopts->msg1Regex = msg1Regex->isChecked();
}
else {
ksopts->msg1Contain = TQColor();
ksopts->msg1String = msg1LE->text();
ksopts->msg1Regex = false;
}
if(msg2LE->text().length() > 0){
ksopts->msg2Contain = msg2CBtn->color();
ksopts->msg2String = msg2LE->text();
ksopts->msg2Regex = msg2Regex->isChecked();
}
else {
ksopts->msg2Contain = TQColor();
ksopts->msg2String = msg2LE->text();
ksopts->msg2Regex = false;
}
ksopts->ksircColors = allowKSircColorsCB->isChecked();
ksopts->mircColors = allowMIRCColorsCB->isChecked();
ksopts->colourTheme = themeLB->currentText();
TDEConfig *conf = kapp->config();
TQDictIterator<KSOColors> it(m_dcol);
TQStringList names;
for(; it.current(); ++it){
names << it.currentKey();
conf->setGroup("ColourSchemes-"+ it.currentKey());
conf->writeEntry("Background", it.current()->backgroundColor);
conf->writeEntry("SelBackground", it.current()->selBackgroundColor);
conf->writeEntry("SelForeground", it.current()->selForegroundColor);
conf->writeEntry("Error", it.current()->errorColor);
conf->writeEntry("Info", it.current()->infoColor);
conf->writeEntry("Text", it.current()->textColor);
conf->writeEntry("Channel", it.current()->channelColor);
conf->writeEntry("Link", it.current()->linkColor);
conf->writeEntry("OwnNick", it.current()->ownNickColor);
conf->writeEntry("NickForeground", it.current()->nickForeground);
conf->writeEntry("NickBackground", it.current()->nickBackground);
}
conf->setGroup("ColourSchemes");
conf->writeEntry("Names", names);
}
void PageColors::readConfig( const KSOColors *opts )
{
backCBtn->setColor( opts->backgroundColor );
selBackCBtn->setColor( opts->selBackgroundColor );
selForeCBtn->setColor( opts->selForegroundColor );
errorCBtn->setColor( opts->errorColor );
infoCBtn->setColor( opts->infoColor );
genericTextCBtn->setColor( opts->textColor );
chanMsgCBtn->setColor( opts->channelColor );
linkCBtn->setColor( opts->linkColor );
ownNickCBtn->setColor( opts->ownNickColor );
ownNickBoldCB->setChecked( opts->ownNickBold );
ownNickRevCB->setChecked( opts->ownNickRev );
ownNickUlCB->setChecked( opts->ownNickUl );
if( opts->nickColourization ){
autoOtherColRB->setChecked( true );
nickFGCBtn->setColor( TQColor() );
nickBGCBtn->setColor( TQColor() );
}
else if( opts->nickForeground.isValid() ||
opts->nickBackground.isValid() ){
fixedOtherColRB->setChecked( true );
nickFGCBtn->setColor( opts->nickForeground );
nickBGCBtn->setColor( opts->nickBackground );
}
else {
noOtherColRB->setChecked( true );
nickFGCBtn->setColor( TQColor() );
nickBGCBtn->setColor( TQColor() );
}
ownContainNickCBtn->setColor( opts->msgContainNick );
msg1CBtn->setColor( opts->msg1Contain );
msg1LE->setText( opts->msg1String );
msg1Regex->setChecked( opts->msg1Regex );
msg2CBtn->setColor( opts->msg2Contain );
msg2LE->setText( opts->msg2String );
msg2Regex->setChecked( opts->msg2Regex );
coloursSetEnable();
allowKSircColorsCB->setChecked( opts->ksircColors );
allowMIRCColorsCB->setChecked( opts->mircColors );
TDEConfig *conf = kapp->config();
conf->setGroup("ColourSchemes");
themeLB->clear();
TQStringList names = conf->readListEntry("Names");
if(names.contains("Custom")){
names.remove(names.find("Custom"));
}
names.prepend("Custom");
themeLB->insertStringList(names);
if(themeLB->findItem(ksopts->colourTheme, TQt::ExactMatch))
themeLB->setCurrentItem(themeLB->findItem(ksopts->colourTheme, TQt::ExactMatch));
else
themeLB->setCurrentItem(0);
themeLE->setText(themeLB->currentText());
m_dcol.clear();
TQStringList::Iterator it = names.begin();
for( ; it != names.end(); ++it){
conf->setGroup("ColourSchemes-"+ *it);
m_dcol.insert(*it, new KSOColors);
m_dcol[*it]->backgroundColor = conf->readColorEntry( "Background");
m_dcol[*it]->selBackgroundColor = conf->readColorEntry( "SelBackground");
m_dcol[*it]->selForegroundColor = conf->readColorEntry( "SelForeground");
m_dcol[*it]->errorColor = conf->readColorEntry( "Error");
m_dcol[*it]->infoColor = conf->readColorEntry( "Info");
m_dcol[*it]->textColor = conf->readColorEntry( "Text");
m_dcol[*it]->channelColor = conf->readColorEntry( "Channel");
m_dcol[*it]->ownNickColor = conf->readColorEntry( "OwnNick");
m_dcol[*it]->nickForeground = conf->readColorEntry( "NickForeground");
m_dcol[*it]->nickBackground = conf->readColorEntry( "NickBackground");
m_dcol[*it]->linkColor = conf->readColorEntry("Link");
}
}
void PageColors::defaultConfig()
{
KSOColors opts;
readConfig( &opts );
}
void PageColors::changed()
{
if(changing == 0)
themeLB->setSelected(0, TRUE);
coloursSetEnable();
emit modified();
}
void PageColors::theme_clicked(TQListBoxItem *li)
{
if(li == 0x0)
return;
TQString name = li->text();
changing = 1;
backCBtn->setColor( m_dcol[name]->backgroundColor );
selBackCBtn->setColor( m_dcol[name]->selBackgroundColor );
selForeCBtn->setColor( m_dcol[name]->selForegroundColor );
errorCBtn->setColor( m_dcol[name]->errorColor );
infoCBtn->setColor( m_dcol[name]->infoColor );
genericTextCBtn->setColor( m_dcol[name]->textColor );
chanMsgCBtn->setColor( m_dcol[name]->channelColor );
linkCBtn->setColor( m_dcol[name]->linkColor );
ownNickCBtn->setColor( m_dcol[name]->ownNickColor );
nickFGCBtn->setColor( m_dcol[name]->nickForeground );
nickBGCBtn->setColor( m_dcol[name]->nickBackground );
changing = 0;
themeLE->setText(li->text());
}
void PageColors::themeNewPB_clicked()
{
themeLE->clear();
}
void PageColors::themeAddPB_clicked()
{
TQString name = themeLE->text();
kdDebug(5008) << "Got add: " << themeLB->currentText() << endl;
m_dcol.replace(name, new KSOColors());
m_dcol[name]->backgroundColor = backCBtn->color();
m_dcol[name]->selBackgroundColor = selBackCBtn->color();
m_dcol[name]->selForegroundColor = selForeCBtn->color();
m_dcol[name]->errorColor = errorCBtn->color();
m_dcol[name]->infoColor = infoCBtn->color();
m_dcol[name]->textColor = genericTextCBtn->color();
m_dcol[name]->channelColor = chanMsgCBtn->color();
m_dcol[name]->linkColor = linkCBtn->color();
m_dcol[name]->ownNickColor = ownNickCBtn->color();
m_dcol[name]->nickForeground = nickFGCBtn->color();
m_dcol[name]->nickBackground = nickBGCBtn->color();
if(themeLB->findItem(name, TQt::ExactMatch) == 0){
themeLB->insertItem(name);
}
themeLB->setCurrentItem(themeLB->findItem(name, TQt::ExactMatch));
}
void PageColors::themeDelPB_clicked()
{
m_dcol.remove(themeLB->currentText());
themeLB->removeItem(themeLB->currentItem());
}
void PageColors::theme_sel()
{
themeLE->setText(themeLB->currentText());
}
void PageColors::coloursSetEnable()
{
nickFGCBtn->setEnabled( fixedOtherColRB->isChecked() );
nickBGCBtn->setEnabled( fixedOtherColRB->isChecked() );
nickFGColorLabel->setEnabled( fixedOtherColRB->isChecked() );
nickBGColorLabel->setEnabled( fixedOtherColRB->isChecked() );
bool msgEn = msg1LE->text().length() > 0;
msg1CBtn->setEnabled(msgEn);
msg1Regex->setEnabled(msgEn);
msgEn = msg2LE->text().length() > 0;
msg2CBtn->setEnabled(msgEn);
msg2Regex->setEnabled(msgEn);
}
#include "page_colors.moc"