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.
213 lines
5.8 KiB
213 lines
5.8 KiB
/*
|
|
* kdeprintfax - a small fax utility
|
|
* Copyright (C) 2001 Michael Goffioul
|
|
*
|
|
* 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.
|
|
*
|
|
* This program 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 General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*
|
|
*/
|
|
|
|
#include "faxab.h"
|
|
|
|
#include <tqlabel.h>
|
|
#include <tqlayout.h>
|
|
#include <kpushbutton.h>
|
|
#include <klistview.h>
|
|
#include <tqheader.h>
|
|
#include <klocale.h>
|
|
#include <kabc/stdaddressbook.h>
|
|
#include <kmessagebox.h>
|
|
#include <kiconloader.h>
|
|
#include <krun.h>
|
|
#include <kstdguiitem.h>
|
|
#include <kglobal.h>
|
|
#include <kconfig.h>
|
|
|
|
FaxAB::FaxAB(TQWidget *parent, const char *name)
|
|
: KDialog(parent, name, true)
|
|
{
|
|
m_list = new KListView( this );
|
|
m_list->addColumn( i18n( "Name" ) );
|
|
m_list->addColumn( i18n( "Fax Number" ) );
|
|
m_list->header()->setStretchEnabled( true, 0 );
|
|
TQLabel *m_listlabel = new TQLabel(i18n("Entries:"), this);
|
|
m_ok = new KPushButton(KStdGuiItem::ok(), this);
|
|
TQPushButton *m_cancel = new KPushButton(KStdGuiItem::cancel(), this);
|
|
TQPushButton *m_ab = new KPushButton(KGuiItem(i18n("&Edit Addressbook"), "contents"), this);
|
|
connect(m_ok, TQT_SIGNAL(clicked()), TQT_SLOT(accept()));
|
|
connect(m_cancel, TQT_SIGNAL(clicked()), TQT_SLOT(reject()));
|
|
connect(m_ab, TQT_SIGNAL(clicked()), TQT_SLOT(slotEditAb()));
|
|
m_ok->setDefault(true);
|
|
|
|
TQVBoxLayout *l0 = new TQVBoxLayout(this, 10, 10);
|
|
l0->addWidget( m_listlabel );
|
|
l0->addWidget( m_list );
|
|
TQHBoxLayout *l2 = new TQHBoxLayout(0, 0, 10);
|
|
l0->addLayout(l2, 0);
|
|
l2->addWidget(m_ab, 0);
|
|
l2->addStretch(1);
|
|
l2->addWidget(m_ok, 0);
|
|
l2->addWidget(m_cancel, 0);
|
|
|
|
KConfig *conf = KGlobal::config();
|
|
conf->setGroup( "General" );
|
|
TQSize defsize( 400, 200 );
|
|
resize( conf->readSizeEntry( "ABSize", &defsize ) );
|
|
|
|
initialize();
|
|
connect(KABC::StdAddressBook::self(), TQT_SIGNAL(addressBookChanged(AddressBook*)), TQT_SLOT(slotAbChanged(AddressBook*)));
|
|
}
|
|
|
|
FaxAB::~FaxAB()
|
|
{
|
|
KConfig *conf = KGlobal::config();
|
|
conf->setGroup( "General" );
|
|
conf->writeEntry( "ABSize", size() );
|
|
}
|
|
|
|
void FaxAB::initialize()
|
|
{
|
|
m_entries.clear();
|
|
m_list->clear();
|
|
|
|
KABC::AddressBook *bk = KABC::StdAddressBook::self();
|
|
for (KABC::AddressBook::Iterator it=bk->begin(); it!=bk->end(); ++it)
|
|
{
|
|
KABC::PhoneNumber::List numbers = (*it).phoneNumbers();
|
|
KABC::PhoneNumber::List faxNumbers;
|
|
for (TQValueList<KABC::PhoneNumber>::Iterator nit=numbers.begin(); nit!=numbers.end(); ++nit)
|
|
{
|
|
if (((*nit).type() & KABC::PhoneNumber::Fax) && !(*nit).number().isEmpty())
|
|
faxNumbers << ( *nit );
|
|
}
|
|
if (faxNumbers.count() > 0)
|
|
{
|
|
for ( KABC::PhoneNumber::List::ConstIterator nit = faxNumbers.begin(); nit != faxNumbers.end(); ++nit )
|
|
{
|
|
FaxABEntry entry;
|
|
entry.m_number = ( *nit );
|
|
entry.m_enterprise = ( *it ).organization();
|
|
if ( !( *it ).formattedName().isEmpty() )
|
|
entry.m_name = ( *it ).formattedName();
|
|
else
|
|
{
|
|
TQString key = ( *it ).familyName();
|
|
if ( !( *it ).givenName().isEmpty() )
|
|
{
|
|
if ( !key.isEmpty() )
|
|
key.append( " " );
|
|
key.append( ( *it ).givenName() );
|
|
}
|
|
entry.m_name = key;
|
|
}
|
|
entry.m_name += ( " (" + ( *nit ).typeLabel() + ")" );
|
|
m_entries[ entry.m_name ] = entry;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (m_entries.count() > 0)
|
|
{
|
|
for (TQMap<TQString,FaxABEntry>::ConstIterator it=m_entries.begin(); it!=m_entries.end(); ++it)
|
|
{
|
|
TQCheckListItem *item = new TQCheckListItem( m_list, it.key(), TQCheckListItem::CheckBox );
|
|
item->setText( 1, ( *it ).m_number.number() );
|
|
item->setText( 2, ( *it ).m_enterprise );
|
|
}
|
|
m_list->sort();
|
|
m_ok->setEnabled(true);
|
|
}
|
|
else
|
|
m_ok->setDisabled(true);
|
|
}
|
|
|
|
void FaxAB::slotEditAb()
|
|
{
|
|
KRun::runCommand("kaddressbook");
|
|
}
|
|
|
|
void FaxAB::slotAbChanged(AddressBook*)
|
|
{
|
|
initialize();
|
|
}
|
|
|
|
bool FaxAB::getEntry(TQStringList& number, TQStringList& name, TQStringList& enterprise, TQWidget *parent)
|
|
{
|
|
FaxAB kab(parent);
|
|
if (!kab.isValid())
|
|
{
|
|
KMessageBox::error(parent, i18n("No fax number found in your address book."));
|
|
return false;
|
|
}
|
|
if (kab.exec())
|
|
{
|
|
TQListViewItemIterator it( kab.m_list, TQListViewItemIterator::Checked );
|
|
while ( it.current() )
|
|
{
|
|
number << it.current()->text( 1 );
|
|
name << it.current()->text( 0 );
|
|
enterprise << it.current()->text( 2 );
|
|
++it;
|
|
}
|
|
/*
|
|
number = kab.m_fax->currentText();
|
|
name = kab.m_name->currentText();
|
|
if (kab.m_entries.contains(name))
|
|
{
|
|
enterprise = kab.m_entries[name][0];
|
|
}
|
|
*/
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
bool FaxAB::getEntryByNumber(const TQString& number, TQString& name, TQString& enterprise)
|
|
{
|
|
KABC::AddressBook *bk = KABC::StdAddressBook::self();
|
|
for (KABC::AddressBook::Iterator it=bk->begin(); it!=bk->end(); ++it)
|
|
{
|
|
KABC::PhoneNumber::List numbers = (*it).phoneNumbers();
|
|
TQStringList filteredNumbers;
|
|
for (TQValueList<KABC::PhoneNumber>::Iterator nit=numbers.begin(); nit!=numbers.end(); ++nit)
|
|
{
|
|
if (((*nit).type() & KABC::PhoneNumber::Fax) )
|
|
{
|
|
TQString strippedNumber;
|
|
for (uint i = 0; i < (*nit).number().length(); ++i)
|
|
if ((*nit).number()[i].isDigit() || ( *nit ).number()[ i ] == '+')
|
|
strippedNumber.append((*nit).number()[i]);
|
|
|
|
if ( strippedNumber == number)
|
|
{
|
|
enterprise = (*it).organization();
|
|
name = (*it).formattedName();
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
bool FaxAB::isValid()
|
|
{
|
|
return true;
|
|
//return (m_name->count() > 0);
|
|
}
|
|
|
|
#include "faxab.moc"
|