summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt3
-rw-r--r--kabc/addresseedialog.cpp2
-rw-r--r--kaddressbook/addresseeeditorwidget.cpp12
-rw-r--r--kaddressbook/imagewidget.cpp28
-rw-r--r--kaddressbook/imagewidget.h2
5 files changed, 40 insertions, 7 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index d8f8323..e53127c 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,76 +1,79 @@
1Info about the changes in new versions of KDE-Pim/Pi 1Info about the changes in new versions of KDE-Pim/Pi
2 2
3********** VERSION 1.9.18 ************ 3********** VERSION 1.9.18 ************
4 4
5FYI: The VERSION 1.9.17 was a testing release only. 5FYI: The VERSION 1.9.17 was a testing release only.
6Please read the changelog of VERSION 1.9.17 as well. 6Please read the changelog of VERSION 1.9.17 as well.
7 7
8Cleaned up the syncing config dialog. 8Cleaned up the syncing config dialog.
9Added sync config options for date range for events. 9Added sync config options for date range for events.
10Added sync config options for filters on incoming data. 10Added sync config options for filters on incoming data.
11Added sync config options for filters on outgoing data. 11Added sync config options for filters on outgoing data.
12Please read the updated SyncHowTo about the new filter settings. 12Please read the updated SyncHowTo about the new filter settings.
13These filter settings make it now possible to sync with shared 13These filter settings make it now possible to sync with shared
14calendars without writing back private or confidential data 14calendars without writing back private or confidential data
15(via the outgoing filters). 15(via the outgoing filters).
16To sync only with particular parts of a shared calendar, 16To sync only with particular parts of a shared calendar,
17the incoming filter settings can be used. 17the incoming filter settings can be used.
18An example can be found in the SyncHowTo. 18An example can be found in the SyncHowTo.
19 19
20KO/Pi: 20KO/Pi:
21The timeedit input has a pulldown list for times. 21The timeedit input has a pulldown list for times.
22If opened, this pulldown list should now has the right time highlighted. 22If opened, this pulldown list should now has the right time highlighted.
23Added the possibility to exclude events/todos/journals in a filter. 23Added the possibility to exclude events/todos/journals in a filter.
24You should exclude journals, if you do not want them to sync with a public calendar. 24You should exclude journals, if you do not want them to sync with a public calendar.
25 25
26KA/Pi: 26KA/Pi:
27Added the possibility to in/exclude public/private/confidential contacts to a filter. 27Added the possibility to in/exclude public/private/confidential contacts to a filter.
28If you have already defined filterrules in KA/Pi you have to adjust them all by setting the "include public/private/confidential" property manually. Sorry for that ... 28If you have already defined filterrules in KA/Pi you have to adjust them all by setting the "include public/private/confidential" property manually. Sorry for that ...
29Added printing of card view and details view on desktop.
30Printing of list view is not working...
31Added button for removing pictures in contact editor.
29 32
30 33
31********** VERSION 1.9.17 ************ 34********** VERSION 1.9.17 ************
32 35
33KO/Pi: 36KO/Pi:
34Fixed that tooltips were not updated after moving an item in agenda view. 37Fixed that tooltips were not updated after moving an item in agenda view.
35Fixed a bug in sorting start date for recurring events in list view. 38Fixed a bug in sorting start date for recurring events in list view.
36Changed the left button in todo viewer from "Agenda" to "Set completed". 39Changed the left button in todo viewer from "Agenda" to "Set completed".
37This makes it possible to change a todo in the What's Next View quickly to the completed state without leaving the What's Next View. 40This makes it possible to change a todo in the What's Next View quickly to the completed state without leaving the What's Next View.
38Added more info in the todo viewer: Startdate, parent/sub todos. 41Added more info in the todo viewer: Startdate, parent/sub todos.
39 42
40 43
41KA/Pi: 44KA/Pi:
42All fields search does now actually search all the (possible) fields, 45All fields search does now actually search all the (possible) fields,
43not only those listed in the contact list. 46not only those listed in the contact list.
44Made is possible to inline a picture in a vcard on the Z. 47Made is possible to inline a picture in a vcard on the Z.
45This was only possible on the desktop, now is it possible on the Z as well. 48This was only possible on the desktop, now is it possible on the Z as well.
46Fixed of missing save settings after filter configuration. 49Fixed of missing save settings after filter configuration.
47Made saving of addressbook much faster. 50Made saving of addressbook much faster.
48Fixed extension widget layout problem. 51Fixed extension widget layout problem.
49Fixed saving of default formatted name settings. 52Fixed saving of default formatted name settings.
50Fixed formatted name handling in edit dialog. 53Fixed formatted name handling in edit dialog.
51Added an option for changing formatted names of many contacts 54Added an option for changing formatted names of many contacts
52(menu: File - Change - Set formatted name). 55(menu: File - Change - Set formatted name).
53 56
54QWhatsThis was not working on the Z ( only black rectangle was shown). 57QWhatsThis was not working on the Z ( only black rectangle was shown).
55This is Fixed. 58This is Fixed.
56 59
57KDE-Sync: 60KDE-Sync:
58Now readonly KDE resources are synced as well. 61Now readonly KDE resources are synced as well.
59(They are not changed in KDE itself, of course). 62(They are not changed in KDE itself, of course).
60 63
61 64
62 65
63********** VERSION 1.9.16 ************ 66********** VERSION 1.9.16 ************
64 67
65KO/Pi: 68KO/Pi:
66Fixed search dialog size on Z 6000 (480x640 display). 69Fixed search dialog size on Z 6000 (480x640 display).
67Added setting to hide/show time in agenda items. 70Added setting to hide/show time in agenda items.
68Added setting to hide not running todos in todo view. 71Added setting to hide not running todos in todo view.
69Added columns for start date/time in todo view. 72Added columns for start date/time in todo view.
70Replaced the solid half-hour lines in agenda view by dot lines. 73Replaced the solid half-hour lines in agenda view by dot lines.
71Added possibility of printing the What's Next View on the desktop 74Added possibility of printing the What's Next View on the desktop
72(i.e. Windows and Linux). 75(i.e. Windows and Linux).
73Fixed a crash in KO/Pi when starting KO/Pi with What's Next view. 76Fixed a crash in KO/Pi when starting KO/Pi with What's Next view.
74Added tooltips in month view.(Tooltips only available on desktop) 77Added tooltips in month view.(Tooltips only available on desktop)
75 78
76Fixed a strange problem in KO/Pi alarm applet. 79Fixed a strange problem in KO/Pi alarm applet.
diff --git a/kabc/addresseedialog.cpp b/kabc/addresseedialog.cpp
index ae67968..9ea9d04 100644
--- a/kabc/addresseedialog.cpp
+++ b/kabc/addresseedialog.cpp
@@ -1,92 +1,92 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21#include <qlayout.h> 21#include <qlayout.h>
22#include <qpushbutton.h> 22#include <qpushbutton.h>
23#include <qgroupbox.h> 23#include <qgroupbox.h>
24#include <qapplication.h> 24#include <qapplication.h>
25#include <qregexp.h> 25#include <qregexp.h>
26 26
27#include <klocale.h> 27#include <klocale.h>
28#include <kdebug.h> 28#include <kdebug.h>
29#include <kglobalsettings.h> 29#include <kglobalsettings.h>
30 30
31#include "stdaddressbook.h" 31#include "stdaddressbook.h"
32 32
33#include "addresseedialog.h" 33#include "addresseedialog.h"
34//#include "addresseedialog.moc" 34//#include "addresseedialog.moc"
35 35
36using namespace KABC; 36using namespace KABC;
37 37
38AddresseeItem::AddresseeItem( QListView *parent, const Addressee &addressee ) : 38AddresseeItem::AddresseeItem( QListView *parent, const Addressee &addressee ) :
39 QListViewItem( parent ), 39 QListViewItem( parent ),
40 mAddressee( addressee ) 40 mAddressee( addressee )
41{ 41{
42 QString name = addressee.familyName()+", "+ addressee.givenName(); 42 QString name = addressee.familyName()+", "+ addressee.givenName();
43 if ( name.length() == 2 ) 43 if ( name.length() == 2 )
44 name = addressee.realName(); 44 name = addressee.organization();
45 setText( Name,name); 45 setText( Name,name);
46 setText( Email, addressee.preferredEmail() ); 46 setText( Email, addressee.preferredEmail() );
47} 47}
48 48
49QString AddresseeItem::key( int column, bool ) const 49QString AddresseeItem::key( int column, bool ) const
50{ 50{
51 51
52 if (column == Email) { 52 if (column == Email) {
53 QString value = text(Email); 53 QString value = text(Email);
54 int val = value.findRev("@"); 54 int val = value.findRev("@");
55 return value.mid( val) + value.left( val ); 55 return value.mid( val) + value.left( val );
56 } 56 }
57 return text(column).lower(); 57 return text(column).lower();
58} 58}
59 59
60AddresseeDialog::AddresseeDialog( QWidget *parent, bool multiple ) : 60AddresseeDialog::AddresseeDialog( QWidget *parent, bool multiple ) :
61 KDialogBase( KDialogBase::Plain, i18n("Select Addressee"), 61 KDialogBase( KDialogBase::Plain, i18n("Select Addressee"),
62 Ok|Cancel, Ok, parent ), mMultiple( multiple ) 62 Ok|Cancel, Ok, parent ), mMultiple( multiple )
63{ 63{
64 QWidget *topWidget = plainPage(); 64 QWidget *topWidget = plainPage();
65 65
66 QBoxLayout *topLayout = new QHBoxLayout( topWidget ); 66 QBoxLayout *topLayout = new QHBoxLayout( topWidget );
67 QBoxLayout *listLayout = new QVBoxLayout; 67 QBoxLayout *listLayout = new QVBoxLayout;
68 topLayout->addLayout( listLayout ); 68 topLayout->addLayout( listLayout );
69 69
70 mAddresseeList = new KListView( topWidget ); 70 mAddresseeList = new KListView( topWidget );
71 mAddresseeList->addColumn( i18n("Name") ); 71 mAddresseeList->addColumn( i18n("Name") );
72 mAddresseeList->addColumn( i18n("Email") ); 72 mAddresseeList->addColumn( i18n("Email") );
73 mAddresseeList->setAllColumnsShowFocus( true ); 73 mAddresseeList->setAllColumnsShowFocus( true );
74 mAddresseeList->setFullWidth( true ); 74 mAddresseeList->setFullWidth( true );
75 listLayout->addWidget( mAddresseeList ); 75 listLayout->addWidget( mAddresseeList );
76 connect( mAddresseeList, SIGNAL( doubleClicked( QListViewItem * ) ), 76 connect( mAddresseeList, SIGNAL( doubleClicked( QListViewItem * ) ),
77 SLOT( slotOk() ) ); 77 SLOT( slotOk() ) );
78 78
79 mAddresseeEdit = new QLineEdit( topWidget ); 79 mAddresseeEdit = new QLineEdit( topWidget );
80 connect( mAddresseeEdit, SIGNAL( returnPressed() ), 80 connect( mAddresseeEdit, SIGNAL( returnPressed() ),
81 SLOT( loadAddressBook() ) ); 81 SLOT( loadAddressBook() ) );
82 mAddresseeEdit->setFocus(); 82 mAddresseeEdit->setFocus();
83 83
84 listLayout->addWidget( mAddresseeEdit ); 84 listLayout->addWidget( mAddresseeEdit );
85 85
86 if ( mMultiple ) { 86 if ( mMultiple ) {
87 QBoxLayout *selectedLayout = new QVBoxLayout; 87 QBoxLayout *selectedLayout = new QVBoxLayout;
88 topLayout->addLayout( selectedLayout ); 88 topLayout->addLayout( selectedLayout );
89 topLayout->setSpacing( spacingHint() ); 89 topLayout->setSpacing( spacingHint() );
90 90
91 QGroupBox *selectedGroup = new QGroupBox( 1, Horizontal, i18n("Selected"), 91 QGroupBox *selectedGroup = new QGroupBox( 1, Horizontal, i18n("Selected"),
92 topWidget ); 92 topWidget );
diff --git a/kaddressbook/addresseeeditorwidget.cpp b/kaddressbook/addresseeeditorwidget.cpp
index c6993e9..bd32859 100644
--- a/kaddressbook/addresseeeditorwidget.cpp
+++ b/kaddressbook/addresseeeditorwidget.cpp
@@ -953,96 +953,106 @@ void AddresseeEditorWidget::setupTab3_1()
953 ////////////////////////////////////// 953 //////////////////////////////////////
954 // Images 954 // Images
955 mImageWidget = new ImageWidget( tab3 ); 955 mImageWidget = new ImageWidget( tab3 );
956 mImageWidget->setMinimumSize( mImageWidget->sizeHint() ); 956 mImageWidget->setMinimumSize( mImageWidget->sizeHint() );
957 connect( mImageWidget, SIGNAL( changed() ), SLOT( emitModified() ) ); 957 connect( mImageWidget, SIGNAL( changed() ), SLOT( emitModified() ) );
958 layout->addWidget( mImageWidget, 0, 0, Qt::AlignTop ); 958 layout->addWidget( mImageWidget, 0, 0, Qt::AlignTop );
959/*US 959/*US
960 ////////////////////////////////////// 960 //////////////////////////////////////
961 // Keys 961 // Keys
962 mKeyWidget = new KeyWidget( tab3 ); 962 mKeyWidget = new KeyWidget( tab3 );
963 mKeyWidget->setMinimumSize( mKeyWidget->sizeHint() ); 963 mKeyWidget->setMinimumSize( mKeyWidget->sizeHint() );
964 connect( mKeyWidget, SIGNAL( changed() ), SLOT( emitModified() ) ); 964 connect( mKeyWidget, SIGNAL( changed() ), SLOT( emitModified() ) );
965 layout->addWidget( mKeyWidget, 1, 1, Qt::AlignTop ); 965 layout->addWidget( mKeyWidget, 1, 1, Qt::AlignTop );
966*/ 966*/
967 mTabWidget->addTab( tab3, i18n( "&Images" ) ); 967 mTabWidget->addTab( tab3, i18n( "&Images" ) );
968} 968}
969 969
970 970
971void AddresseeEditorWidget::load() 971void AddresseeEditorWidget::load()
972{ 972{
973 973
974 // Block signals in case anything tries to emit modified 974 // Block signals in case anything tries to emit modified
975 // CS: This doesn't seem to work. 975 // CS: This doesn't seem to work.
976 bool block = signalsBlocked(); 976 bool block = signalsBlocked();
977 blockSignals( true ); 977 blockSignals( true );
978 mBlockSignals = true; // used for internal signal blocking 978 mBlockSignals = true; // used for internal signal blocking
979 979
980 mNameEdit->setText( mAddressee.assembledName() ); 980 mNameEdit->setText( mAddressee.assembledName() );
981 981
982 if ( mAddressee.formattedName().isEmpty() ) { 982 if ( mAddressee.formattedName().isEmpty() ) {
983//US KConfig config( "kaddressbookrc" ); 983//US KConfig config( "kaddressbookrc" );
984 KConfig config( locateLocal("config", "kabcrc") ); 984 KConfig config( locateLocal("config", "kabcrc") );
985 config.setGroup( "General" ); 985 config.setGroup( "General" );
986 mFormattedNameType = config.readNumEntry( "FormattedNameType", 1 ); 986 mFormattedNameType = config.readNumEntry( "FormattedNameType", 1 );
987 mAddressee.setFormattedName( NameEditDialog::formattedName( mAddressee, mFormattedNameType ) ); 987 mAddressee.setFormattedName( NameEditDialog::formattedName( mAddressee, mFormattedNameType ) );
988 } else {; 988 } else {;
989 if ( mAddressee.formattedName() == NameEditDialog::formattedName( mAddressee, NameEditDialog::SimpleName ) ) 989 if ( mAddressee.formattedName() == NameEditDialog::formattedName( mAddressee, NameEditDialog::SimpleName ) )
990 mFormattedNameType = NameEditDialog::SimpleName; 990 mFormattedNameType = NameEditDialog::SimpleName;
991 else if ( mAddressee.formattedName() == NameEditDialog::formattedName( mAddressee, NameEditDialog::FullName ) ) 991 else if ( mAddressee.formattedName() == NameEditDialog::formattedName( mAddressee, NameEditDialog::FullName ) )
992 mFormattedNameType = NameEditDialog::FullName; 992 mFormattedNameType = NameEditDialog::FullName;
993 else if ( mAddressee.formattedName() == NameEditDialog::formattedName( mAddressee, NameEditDialog::ReverseName ) ) 993 else if ( mAddressee.formattedName() == NameEditDialog::formattedName( mAddressee, NameEditDialog::ReverseName ) )
994 mFormattedNameType = NameEditDialog::ReverseName; 994 mFormattedNameType = NameEditDialog::ReverseName;
995 else 995 else
996 mFormattedNameType = NameEditDialog::CustomName; 996 mFormattedNameType = NameEditDialog::CustomName;
997 } 997 }
998 998
999 mFormattedNameLabel->setText( mAddressee.formattedName() ); 999 mFormattedNameLabel->setText( mAddressee.formattedName() );
1000 1000
1001 mAConfig->setUid( mAddressee.uid() );
1002 if ( mAConfig->automaticNameParsing() ) {
1003 mNameLabel->hide();
1004 mNameEdit->show();
1005 } else {
1006 mNameEdit->hide();
1007 mNameLabel->setText( mNameEdit->text() );
1008 mNameLabel->show();
1009 }
1010
1001 mRoleEdit->setText( mAddressee.role() ); 1011 mRoleEdit->setText( mAddressee.role() );
1002 mOrgEdit->setText( mAddressee.organization() ); 1012 mOrgEdit->setText( mAddressee.organization() );
1003 1013
1004//US mURLEdit->setURL( mAddressee.url().url() ); 1014//US mURLEdit->setURL( mAddressee.url().url() );
1005 mURLEdit->setText( mAddressee.url().prettyURL() ); 1015 mURLEdit->setText( mAddressee.url().prettyURL() );
1006//US?? mURLEdit->home( false ); 1016//US?? mURLEdit->home( false );
1007 1017
1008 // mNoteEdit->setText( mAddressee.note() ); 1018 // mNoteEdit->setText( mAddressee.note() );
1009 mNoteEdit->setText( mAddressee.note() ); 1019 mNoteEdit->setText( mAddressee.note() );
1010 mEmailWidget->setEmails( mAddressee.emails() ); 1020 mEmailWidget->setEmails( mAddressee.emails() );
1011 mPhoneEditWidget->setPhoneNumbers( mAddressee.phoneNumbers() ); 1021 mPhoneEditWidget->setPhoneNumbers( mAddressee.phoneNumbers() );
1012 mAddressEditWidget->setAddresses( mAddressee, mAddressee.addresses() ); 1022 mAddressEditWidget->setAddresses( mAddressee, mAddressee.addresses() );
1013 mBirthdayPicker->setDate( mAddressee.birthday().date() ); 1023 mBirthdayPicker->setDate( mAddressee.birthday().date() );
1014 1024
1015//US mAnniversaryPicker->setDate( QDate::fromString( mAddressee.custom( 1025//US mAnniversaryPicker->setDate( QDate::fromString( mAddressee.custom(
1016//US "KADDRESSBOOK", "X-Anniversary" ), Qt::ISODate) ); 1026//US "KADDRESSBOOK", "X-Anniversary" ), Qt::ISODate) );
1017 QDate dt = KGlobal::locale()->readDate( mAddressee.custom("KADDRESSBOOK", "X-Anniversary" ), 1027 QDate dt = KGlobal::locale()->readDate( mAddressee.custom("KADDRESSBOOK", "X-Anniversary" ),
1018 "%Y-%m-%d"); // = Qt::ISODate 1028 "%Y-%m-%d"); // = Qt::ISODate
1019 mAnniversaryPicker->setDate( dt ); 1029 mAnniversaryPicker->setDate( dt );
1020 1030
1021 1031
1022 mNicknameEdit->setText( mAddressee.nickName() ); 1032 mNicknameEdit->setText( mAddressee.nickName() );
1023 mCategoryEdit->setText( mAddressee.categories().join( "," ) ); 1033 mCategoryEdit->setText( mAddressee.categories().join( "," ) );
1024 1034
1025 mGeoWidget->setGeo( mAddressee.geo() ); 1035 mGeoWidget->setGeo( mAddressee.geo() );
1026 mImageWidget->setPhoto( mAddressee.photo() ); 1036 mImageWidget->setPhoto( mAddressee.photo() );
1027 mImageWidget->setLogo( mAddressee.logo() ); 1037 mImageWidget->setLogo( mAddressee.logo() );
1028 mKeyWidget->setKeys( mAddressee.keys() ); 1038 mKeyWidget->setKeys( mAddressee.keys() );
1029 mSecrecyWidget->setSecrecy( mAddressee.secrecy() ); 1039 mSecrecyWidget->setSecrecy( mAddressee.secrecy() );
1030#ifndef KAB_EMBEDDED 1040#ifndef KAB_EMBEDDED
1031 mSoundWidget->setSound( mAddressee.sound() ); 1041 mSoundWidget->setSound( mAddressee.sound() );
1032#else //KAB_EMBEDDED 1042#else //KAB_EMBEDDED
1033//US qDebug("AddresseeEditorWidget::load has to be changed 2"); 1043//US qDebug("AddresseeEditorWidget::load has to be changed 2");
1034#endif //KAB_EMBEDDED 1044#endif //KAB_EMBEDDED
1035 1045
1036 // Load customs 1046 // Load customs
1037 mIMAddressEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-IMAddress" ) ); 1047 mIMAddressEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-IMAddress" ) );
1038 mSpouseEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-SpousesName" ) ); 1048 mSpouseEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-SpousesName" ) );
1039 mChildEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-Children" ) ); 1049 mChildEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-Children" ) );
1040 mManagerEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-ManagersName" ) ); 1050 mManagerEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-ManagersName" ) );
1041 mAssistantEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-AssistantsName" ) ); 1051 mAssistantEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-AssistantsName" ) );
1042 mDepartmentEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-Department" ) ); 1052 mDepartmentEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-Department" ) );
1043 mOfficeEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-Office" ) ); 1053 mOfficeEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-Office" ) );
1044 mProfessionEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-Profession" ) ); 1054 mProfessionEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-Profession" ) );
1045 QString gen = mAddressee.custom( "KADDRESSBOOK", "X-Gender" ); 1055 QString gen = mAddressee.custom( "KADDRESSBOOK", "X-Gender" );
1046 if ( gen == "female" ) 1056 if ( gen == "female" )
1047 mGenderBox->setCurrentItem ( 1 ); 1057 mGenderBox->setCurrentItem ( 1 );
1048 else if ( gen == "male" ) 1058 else if ( gen == "male" )
@@ -1160,99 +1170,99 @@ void AddresseeEditorWidget::save()
1160 1170
1161bool AddresseeEditorWidget::dirty() 1171bool AddresseeEditorWidget::dirty()
1162{ 1172{
1163 1173
1164 if ( ! mDirty ) { 1174 if ( ! mDirty ) {
1165 if ( mBirthdayPicker->inputIsValid() ) { 1175 if ( mBirthdayPicker->inputIsValid() ) {
1166 QDate da = mBirthdayPicker->date(); 1176 QDate da = mBirthdayPicker->date();
1167 if ( !(da == mAddressee.birthday().date())) 1177 if ( !(da == mAddressee.birthday().date()))
1168 mDirty = true; 1178 mDirty = true;
1169 } 1179 }
1170 else { 1180 else {
1171 mBirthdayPicker->clear(); 1181 mBirthdayPicker->clear();
1172 } 1182 }
1173 if ( mAnniversaryPicker->inputIsValid() ) { 1183 if ( mAnniversaryPicker->inputIsValid() ) {
1174 QDate da = mAnniversaryPicker->date(); 1184 QDate da = mAnniversaryPicker->date();
1175 if ( da != KGlobal::locale()->readDate( mAddressee.custom("KADDRESSBOOK", "X-Anniversary" ), 1185 if ( da != KGlobal::locale()->readDate( mAddressee.custom("KADDRESSBOOK", "X-Anniversary" ),
1176 "%Y-%m-%d")) 1186 "%Y-%m-%d"))
1177 mDirty = true; 1187 mDirty = true;
1178 } 1188 }
1179 else { 1189 else {
1180 mAnniversaryPicker->clear(); 1190 mAnniversaryPicker->clear();
1181 } 1191 }
1182 } 1192 }
1183 return mDirty; 1193 return mDirty;
1184} 1194}
1185 1195
1186void AddresseeEditorWidget::nameTextChanged( const QString &text ) 1196void AddresseeEditorWidget::nameTextChanged( const QString &text )
1187{ 1197{
1188 if ( mBlockSignals ) 1198 if ( mBlockSignals )
1189 return; 1199 return;
1190 // use the addressee class to parse the name for us 1200 // use the addressee class to parse the name for us
1191 mAConfig->setUid( mAddressee.uid() ); 1201 mAConfig->setUid( mAddressee.uid() );
1192 if ( mAConfig->automaticNameParsing() ) { 1202 if ( mAConfig->automaticNameParsing() ) {
1193 if ( !mAddressee.formattedName().isEmpty() ) { 1203 if ( !mAddressee.formattedName().isEmpty() ) {
1194 QString fn = mAddressee.formattedName(); 1204 QString fn = mAddressee.formattedName();
1195 mAddressee.setNameFromString( text ); 1205 mAddressee.setNameFromString( text );
1196 mAddressee.setFormattedName( fn ); 1206 mAddressee.setFormattedName( fn );
1197 } else { 1207 } else {
1198 // use extra addressee to avoid a formatted name assignment 1208 // use extra addressee to avoid a formatted name assignment
1199 Addressee addr; 1209 Addressee addr;
1200 addr.setNameFromString( text ); 1210 addr.setNameFromString( text );
1201 mAddressee.setPrefix( addr.prefix() ); 1211 mAddressee.setPrefix( addr.prefix() );
1202 mAddressee.setGivenName( addr.givenName() ); 1212 mAddressee.setGivenName( addr.givenName() );
1203 mAddressee.setAdditionalName( addr.additionalName() ); 1213 mAddressee.setAdditionalName( addr.additionalName() );
1204 mAddressee.setFamilyName( addr.familyName() ); 1214 mAddressee.setFamilyName( addr.familyName() );
1205 mAddressee.setSuffix( addr.suffix() ); 1215 mAddressee.setSuffix( addr.suffix() );
1206 } 1216 }
1207 } 1217 }
1208
1209 nameBoxChanged(); 1218 nameBoxChanged();
1210 1219
1220
1211 emitModified(); 1221 emitModified();
1212} 1222}
1213 1223
1214void AddresseeEditorWidget::nameBoxChanged() 1224void AddresseeEditorWidget::nameBoxChanged()
1215{ 1225{
1216 KABC::Addressee addr; 1226 KABC::Addressee addr;
1217 mAConfig->setUid( mAddressee.uid() ); 1227 mAConfig->setUid( mAddressee.uid() );
1218 if ( mAConfig->automaticNameParsing() ) { 1228 if ( mAConfig->automaticNameParsing() ) {
1219 addr.setNameFromString( mNameEdit->text() ); 1229 addr.setNameFromString( mNameEdit->text() );
1220 mNameLabel->hide(); 1230 mNameLabel->hide();
1221 mNameEdit->show(); 1231 mNameEdit->show();
1222 } else { 1232 } else {
1223 addr = mAddressee; 1233 addr = mAddressee;
1224 mNameEdit->hide(); 1234 mNameEdit->hide();
1225 mNameLabel->setText( mNameEdit->text() ); 1235 mNameLabel->setText( mNameEdit->text() );
1226 mNameLabel->show(); 1236 mNameLabel->show();
1227 } 1237 }
1228 1238
1229 if ( mFormattedNameType != NameEditDialog::CustomName ) { 1239 if ( mFormattedNameType != NameEditDialog::CustomName ) {
1230 mFormattedNameLabel->setText( NameEditDialog::formattedName( mAddressee, mFormattedNameType ) ); 1240 mFormattedNameLabel->setText( NameEditDialog::formattedName( mAddressee, mFormattedNameType ) );
1231 mAddressee.setFormattedName( NameEditDialog::formattedName( mAddressee, mFormattedNameType ) ); 1241 mAddressee.setFormattedName( NameEditDialog::formattedName( mAddressee, mFormattedNameType ) );
1232 } 1242 }
1233} 1243}
1234 1244
1235void AddresseeEditorWidget::nameButtonClicked() 1245void AddresseeEditorWidget::nameButtonClicked()
1236{ 1246{
1237 // show the name dialog. 1247 // show the name dialog.
1238 NameEditDialog dialog( mAddressee, mFormattedNameType, this ); 1248 NameEditDialog dialog( mAddressee, mFormattedNameType, this );
1239 1249
1240 if ( KApplication::execDialog( &dialog) ) { 1250 if ( KApplication::execDialog( &dialog) ) {
1241 if ( dialog.changed() ) { 1251 if ( dialog.changed() ) {
1242 mAddressee.setFamilyName( dialog.familyName() ); 1252 mAddressee.setFamilyName( dialog.familyName() );
1243 mAddressee.setGivenName( dialog.givenName() ); 1253 mAddressee.setGivenName( dialog.givenName() );
1244 mAddressee.setPrefix( dialog.prefix() ); 1254 mAddressee.setPrefix( dialog.prefix() );
1245 mAddressee.setSuffix( dialog.suffix() ); 1255 mAddressee.setSuffix( dialog.suffix() );
1246 mAddressee.setAdditionalName( dialog.additionalName() ); 1256 mAddressee.setAdditionalName( dialog.additionalName() );
1247 mFormattedNameType = dialog.formattedNameType(); 1257 mFormattedNameType = dialog.formattedNameType();
1248 if ( mFormattedNameType == NameEditDialog::CustomName ) { 1258 if ( mFormattedNameType == NameEditDialog::CustomName ) {
1249 mFormattedNameLabel->setText( dialog.customFormattedName() ); 1259 mFormattedNameLabel->setText( dialog.customFormattedName() );
1250 mAddressee.setFormattedName( dialog.customFormattedName() ); 1260 mAddressee.setFormattedName( dialog.customFormattedName() );
1251 } 1261 }
1252 // Update the name edit. 1262 // Update the name edit.
1253 bool block = mNameEdit->signalsBlocked(); 1263 bool block = mNameEdit->signalsBlocked();
1254 mNameEdit->blockSignals( true ); 1264 mNameEdit->blockSignals( true );
1255 mNameEdit->setText( mAddressee.assembledName() ); 1265 mNameEdit->setText( mAddressee.assembledName() );
1256 mNameEdit->blockSignals( block ); 1266 mNameEdit->blockSignals( block );
1257 1267
1258 // Update the combo box. 1268 // Update the combo box.
diff --git a/kaddressbook/imagewidget.cpp b/kaddressbook/imagewidget.cpp
index 48370e3..9ee4eac 100644
--- a/kaddressbook/imagewidget.cpp
+++ b/kaddressbook/imagewidget.cpp
@@ -1,153 +1,163 @@
1/* 1/*
2 This file is part of KAddressBook. 2 This file is part of KAddressBook.
3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#include <kabc/picture.h> 24#include <kabc/picture.h>
25 25
26#ifndef KAB_EMBEDDED 26#ifndef KAB_EMBEDDED
27#include <kaccelmanager.h> 27#include <kaccelmanager.h>
28#include <kio/netaccess.h> 28#include <kio/netaccess.h>
29#include <kimageio.h> 29#include <kimageio.h>
30#endif //KAB_EMBEDDED 30#endif //KAB_EMBEDDED
31 31
32#include <kdebug.h> 32#include <kdebug.h>
33#include <kdialog.h> 33#include <kdialog.h>
34#include <kiconloader.h> 34#include <kiconloader.h>
35#include <klocale.h> 35#include <klocale.h>
36#include <kurlrequester.h> 36#include <kurlrequester.h>
37#include <kurl.h> 37#include <kurl.h>
38 38
39#include <qcheckbox.h> 39#include <qcheckbox.h>
40#include <qgroupbox.h> 40#include <qgroupbox.h>
41#include <qlabel.h> 41#include <qlabel.h>
42#include <qlayout.h> 42#include <qlayout.h>
43#include <qpixmap.h> 43#include <qpixmap.h>
44#include <qpushbutton.h>
44#include <qapplication.h> 45#include <qapplication.h>
45 46
46#include "imagewidget.h" 47#include "imagewidget.h"
47 48
48ImageWidget::ImageWidget( QWidget *parent, const char *name ) 49ImageWidget::ImageWidget( QWidget *parent, const char *name )
49 : QWidget( parent, name ) 50 : QWidget( parent, name )
50{ 51{
51 QGridLayout *topLayout = new QGridLayout( this, 2, 1, KDialog::marginHint(), 52 QGridLayout *topLayout = new QGridLayout( this, 2, 1, KDialog::marginHint(),
52 KDialog::spacingHint() ); 53 KDialog::spacingHint() );
53 54
54 QGroupBox *photoBox = new QGroupBox( 0, Qt::Vertical, i18n( "Photo" ), this ); 55 QGroupBox *photoBox = new QGroupBox( 0, Qt::Vertical, i18n( "Photo" ), this );
55 QGridLayout *boxLayout = new QGridLayout( photoBox->layout(), 3, 2, 56 QGridLayout *boxLayout = new QGridLayout( photoBox->layout(), 4, 2,
56 KDialog::spacingHint() ); 57 KDialog::spacingHint() );
57 boxLayout->setRowStretch( 2, 1 ); 58 boxLayout->setRowStretch( 2, 1 );
58 59
59 mPhotoLabel = new QLabel( photoBox ); 60 mPhotoLabel = new QLabel( photoBox );
60 int fac = 9; 61 int fac = 9;
61 if ( QApplication::desktop()->width() > 320 ) 62 if ( QApplication::desktop()->width() > 320 )
62 fac = 6; 63 fac = 6;
63 mPhotoLabel->setFixedSize( 50*9/fac, 70*9/fac ); 64 mPhotoLabel->setFixedSize( 50*9/fac, 70*9/fac );
64 mPhotoLabel->setScaledContents( true ); 65 mPhotoLabel->setScaledContents( true );
65 mPhotoLabel->setFrameStyle( QFrame::Panel | QFrame::Sunken ); 66 mPhotoLabel->setFrameStyle( QFrame::Panel | QFrame::Sunken );
66 boxLayout->addMultiCellWidget( mPhotoLabel, 0, 2, 0, 0 ); 67 boxLayout->addMultiCellWidget( mPhotoLabel, 0, 3, 0, 0 );
67 68
68 mPhotoUrl = new KURLRequester( photoBox ); 69 mPhotoUrl = new KURLRequester( photoBox );
69#ifndef KAB_EMBEDDED 70#ifndef KAB_EMBEDDED
70 mPhotoUrl->setFilter( KImageIO::pattern() ); 71 mPhotoUrl->setFilter( KImageIO::pattern() );
71#else //KAB_EMBEDDED 72#else //KAB_EMBEDDED
72//US qDebug("ImageWidget::ImageWidget KImageIO not defined. Does this harm ???"); 73//US qDebug("ImageWidget::ImageWidget KImageIO not defined. Does this harm ???");
73#endif //KAB_EMBEDDED 74#endif //KAB_EMBEDDED
74 75
75 76
76 boxLayout->addWidget( mPhotoUrl, 0, 1 ); 77 boxLayout->addWidget( mPhotoUrl, 0, 1 );
77 78
78 mUsePhotoUrl = new QCheckBox( i18n( "Store as URL" ), photoBox ); 79 mUsePhotoUrl = new QCheckBox( i18n( "Store as URL" ), photoBox );
79 mUsePhotoUrl->setEnabled( false ); 80 mUsePhotoUrl->setEnabled( false );
80 boxLayout->addWidget( mUsePhotoUrl, 1, 1 ); 81 boxLayout->addWidget( mUsePhotoUrl, 1, 1 );
81 82
83 QPushButton * pb = new QPushButton( i18n( "Remove" ), photoBox );
84 connect( pb, SIGNAL( clicked() ),this, SLOT( removePhoto() ) );
85 boxLayout->addWidget( pb, 2, 1 );
86 boxLayout->addWidget( new QLabel( photoBox ), 3, 1 );
87
82 topLayout->addWidget( photoBox, 0, 0 ); 88 topLayout->addWidget( photoBox, 0, 0 );
83 89
84 QGroupBox *logoBox = new QGroupBox( 0, Qt::Vertical, i18n( "Logo" ), this ); 90 QGroupBox *logoBox = new QGroupBox( 0, Qt::Vertical, i18n( "Logo" ), this );
85 boxLayout = new QGridLayout( logoBox->layout(), 3, 2, KDialog::spacingHint() ); 91 boxLayout = new QGridLayout( logoBox->layout(), 4, 2, KDialog::spacingHint() );
86 boxLayout->setRowStretch( 2, 1 ); 92 boxLayout->setRowStretch( 2, 1 );
87 93
88 mLogoLabel = new QLabel( logoBox ); 94 mLogoLabel = new QLabel( logoBox );
89 mLogoLabel->setFixedSize( 50*9/fac, 70*9/fac ); 95 mLogoLabel->setFixedSize( 50*9/fac, 70*9/fac );
90 mLogoLabel->setScaledContents( true ); 96 mLogoLabel->setScaledContents( true );
91 mLogoLabel->setFrameStyle( QFrame::Panel | QFrame::Sunken ); 97 mLogoLabel->setFrameStyle( QFrame::Panel | QFrame::Sunken );
92 boxLayout->addMultiCellWidget( mLogoLabel, 0, 2, 0, 0 ); 98 boxLayout->addMultiCellWidget( mLogoLabel, 0, 3, 0, 0 );
93 99
94 mLogoUrl = new KURLRequester( logoBox ); 100 mLogoUrl = new KURLRequester( logoBox );
95#ifndef KAB_EMBEDDED 101#ifndef KAB_EMBEDDED
96 mLogoUrl->setFilter( KImageIO::pattern() ); 102 mLogoUrl->setFilter( KImageIO::pattern() );
97#else //KAB_EMBEDDED 103#else //KAB_EMBEDDED
98//US qDebug("ImageWidget::ImageWidget KImageIO not defined 2"); 104//US qDebug("ImageWidget::ImageWidget KImageIO not defined 2");
99#endif //KAB_EMBEDDED 105#endif //KAB_EMBEDDED
100 boxLayout->addWidget( mLogoUrl, 0, 1 ); 106 boxLayout->addWidget( mLogoUrl, 0, 1 );
101 107
102 mUseLogoUrl = new QCheckBox( i18n( "Store as URL" ), logoBox ); 108 mUseLogoUrl = new QCheckBox( i18n( "Store as URL" ), logoBox );
103 mUseLogoUrl->setEnabled( false ); 109 mUseLogoUrl->setEnabled( false );
104 boxLayout->addWidget( mUseLogoUrl, 1, 1 ); 110 boxLayout->addWidget( mUseLogoUrl, 1, 1 );
105 111
112 pb = new QPushButton( i18n( "Remove" ), logoBox );
113 connect( pb, SIGNAL( clicked() ),this, SLOT( removeLogo() ) );
114 boxLayout->addWidget( pb, 2, 1 );
115 boxLayout->addWidget( new QLabel( logoBox ), 3, 1 );
106 topLayout->addWidget( logoBox, 1, 0 ); 116 topLayout->addWidget( logoBox, 1, 0 );
107 117
108 connect( mPhotoUrl, SIGNAL( textChanged( const QString& ) ), 118 connect( mPhotoUrl, SIGNAL( textChanged( const QString& ) ),
109 SIGNAL( changed() ) ); 119 SIGNAL( changed() ) );
110 connect( mPhotoUrl, SIGNAL( urlSelected( const QString& ) ), 120 connect( mPhotoUrl, SIGNAL( urlSelected( const QString& ) ),
111 SLOT( loadPhoto() ) ); 121 SLOT( loadPhoto() ) );
112 connect( mPhotoUrl, SIGNAL( urlSelected( const QString& ) ), 122 connect( mPhotoUrl, SIGNAL( urlSelected( const QString& ) ),
113 SIGNAL( changed() ) ); 123 SIGNAL( changed() ) );
114 connect( mPhotoUrl, SIGNAL( urlSelected( const QString& ) ), 124 connect( mPhotoUrl, SIGNAL( urlSelected( const QString& ) ),
115 SLOT( updateGUI() ) ); 125 SLOT( updateGUI() ) );
116 connect( mUsePhotoUrl, SIGNAL( toggled( bool ) ), 126 connect( mUsePhotoUrl, SIGNAL( toggled( bool ) ),
117 SIGNAL( changed() ) ); 127 SIGNAL( changed() ) );
118 128
119 connect( mLogoUrl, SIGNAL( textChanged( const QString& ) ), 129 connect( mLogoUrl, SIGNAL( textChanged( const QString& ) ),
120 SIGNAL( changed() ) ); 130 SIGNAL( changed() ) );
121 connect( mLogoUrl, SIGNAL( urlSelected( const QString& ) ), 131 connect( mLogoUrl, SIGNAL( urlSelected( const QString& ) ),
122 SLOT( loadLogo() ) ); 132 SLOT( loadLogo() ) );
123 connect( mLogoUrl, SIGNAL( urlSelected( const QString& ) ), 133 connect( mLogoUrl, SIGNAL( urlSelected( const QString& ) ),
124 SIGNAL( changed() ) ); 134 SIGNAL( changed() ) );
125 connect( mLogoUrl, SIGNAL( urlSelected( const QString& ) ), 135 connect( mLogoUrl, SIGNAL( urlSelected( const QString& ) ),
126 SLOT( updateGUI() ) ); 136 SLOT( updateGUI() ) );
127 connect( mUseLogoUrl, SIGNAL( toggled( bool ) ), 137 connect( mUseLogoUrl, SIGNAL( toggled( bool ) ),
128 SIGNAL( changed() ) ); 138 SIGNAL( changed() ) );
129 139
130#ifndef KAB_EMBEDDED 140#ifndef KAB_EMBEDDED
131 KAcceleratorManager::manage( this ); 141 KAcceleratorManager::manage( this );
132#endif //KAB_EMBEDDED 142#endif //KAB_EMBEDDED
133 143
134} 144}
135 145
136ImageWidget::~ImageWidget() 146ImageWidget::~ImageWidget()
137{ 147{
138} 148}
139 149
140void ImageWidget::setPhoto( const KABC::Picture &photo ) 150void ImageWidget::setPhoto( const KABC::Picture &photo )
141{ 151{
142 bool blocked = signalsBlocked(); 152 bool blocked = signalsBlocked();
143 blockSignals( true ); 153 blockSignals( true );
144 154
145 if ( photo.isIntern() ) { 155 if ( photo.isIntern() ) {
146//US 156//US
147//US mPhotoLabel->setPixmap( photo.data() ); 157//US mPhotoLabel->setPixmap( photo.data() );
148 if (photo.data().isNull() != true) 158 if (photo.data().isNull() != true)
149 { 159 {
150 QPixmap pm; 160 QPixmap pm;
151 pm.convertFromImage(photo.data()); 161 pm.convertFromImage(photo.data());
152 162
153 mPhotoLabel->setPixmap( pm ); 163 mPhotoLabel->setPixmap( pm );
@@ -193,99 +203,107 @@ KABC::Picture ImageWidget::photo() const
193 203
194void ImageWidget::setLogo( const KABC::Picture &logo ) 204void ImageWidget::setLogo( const KABC::Picture &logo )
195{ 205{
196 bool blocked = signalsBlocked(); 206 bool blocked = signalsBlocked();
197 blockSignals( true ); 207 blockSignals( true );
198 208
199 if ( logo.isIntern() ) { 209 if ( logo.isIntern() ) {
200//US 210//US
201//US mLogoLabel->setPixmap( logo.data() ); 211//US mLogoLabel->setPixmap( logo.data() );
202 if (logo.data().isNull() != true) 212 if (logo.data().isNull() != true)
203 { 213 {
204 QPixmap pm; 214 QPixmap pm;
205 pm.convertFromImage(logo.data()); 215 pm.convertFromImage(logo.data());
206 mLogoLabel->setPixmap( pm ); 216 mLogoLabel->setPixmap( pm );
207 } 217 }
208 mUseLogoUrl->setChecked( false ); 218 mUseLogoUrl->setChecked( false );
209 } else { 219 } else {
210 mLogoUrl->setURL( logo.url() ); 220 mLogoUrl->setURL( logo.url() );
211 if ( !logo.url().isEmpty() ) 221 if ( !logo.url().isEmpty() )
212 mUseLogoUrl->setChecked( true ); 222 mUseLogoUrl->setChecked( true );
213 loadLogo(); 223 loadLogo();
214 } 224 }
215 225
216 blockSignals( blocked ); 226 blockSignals( blocked );
217} 227}
218 228
219KABC::Picture ImageWidget::logo() const 229KABC::Picture ImageWidget::logo() const
220{ 230{
221 KABC::Picture logo; 231 KABC::Picture logo;
222 232
223 if ( mUseLogoUrl->isChecked() ) 233 if ( mUseLogoUrl->isChecked() )
224 logo.setUrl( mLogoUrl->url() ); 234 logo.setUrl( mLogoUrl->url() );
225 else { 235 else {
226 QPixmap *px = mLogoLabel->pixmap(); 236 QPixmap *px = mLogoLabel->pixmap();
227 if ( px ) { 237 if ( px ) {
228#ifndef KAB_EMBEDDED 238#ifndef KAB_EMBEDDED
229 if ( px->height() > px->width() ) 239 if ( px->height() > px->width() )
230 logo.setData( px->convertToImage().scaleHeight( 140 ) ); 240 logo.setData( px->convertToImage().scaleHeight( 140 ) );
231 else 241 else
232 logo.setData( px->convertToImage().scaleWidth( 100 ) ); 242 logo.setData( px->convertToImage().scaleWidth( 100 ) );
233#else //KAB_EMBEDDED 243#else //KAB_EMBEDDED
234 logo.setData( px->convertToImage() ); 244 logo.setData( px->convertToImage() );
235#endif //KAB_EMBEDDED 245#endif //KAB_EMBEDDED
236 246
237 logo.setType( "PNG" ); 247 logo.setType( "PNG" );
238 248
239 } 249 }
240 } 250 }
241
242 return logo; 251 return logo;
243} 252}
253void ImageWidget::removePhoto()
254{
255 setPhoto(KABC::Picture() );
256}
257
258void ImageWidget::removeLogo()
259{
260 setLogo(KABC::Picture() );
261}
244 262
245void ImageWidget::loadPhoto() 263void ImageWidget::loadPhoto()
246{ 264{
247 mPhotoLabel->setPixmap( loadPixmap( mPhotoUrl->url() ) ); 265 mPhotoLabel->setPixmap( loadPixmap( mPhotoUrl->url() ) );
248} 266}
249 267
250void ImageWidget::loadLogo() 268void ImageWidget::loadLogo()
251{ 269{
252 mLogoLabel->setPixmap( loadPixmap( mLogoUrl->url() ) ); 270 mLogoLabel->setPixmap( loadPixmap( mLogoUrl->url() ) );
253} 271}
254 272
255void ImageWidget::updateGUI() 273void ImageWidget::updateGUI()
256{ 274{
257 KURLRequester *ptr = (KURLRequester*)sender(); 275 KURLRequester *ptr = (KURLRequester*)sender();
258 276
259 277
260 if ( ptr == mPhotoUrl ) 278 if ( ptr == mPhotoUrl )
261 mUsePhotoUrl->setEnabled( true ); 279 mUsePhotoUrl->setEnabled( true );
262 else if ( ptr == mLogoUrl ) 280 else if ( ptr == mLogoUrl )
263 mUseLogoUrl->setEnabled( true ); 281 mUseLogoUrl->setEnabled( true );
264} 282}
265 283
266QPixmap ImageWidget::loadPixmap( const KURL &url ) 284QPixmap ImageWidget::loadPixmap( const KURL &url )
267{ 285{
268 QString tempFile; 286 QString tempFile;
269 QPixmap pixmap; 287 QPixmap pixmap;
270 288
271 if ( url.isEmpty() ) 289 if ( url.isEmpty() )
272 return pixmap; 290 return pixmap;
273 291
274 if ( url.isLocalFile() ) 292 if ( url.isLocalFile() )
275 pixmap = QPixmap( url.path() ); 293 pixmap = QPixmap( url.path() );
276 else 294 else
277 { 295 {
278#ifndef KAB_EMBEDDED 296#ifndef KAB_EMBEDDED
279 if ( KIO::NetAccess::download( url, tempFile ) ) { 297 if ( KIO::NetAccess::download( url, tempFile ) ) {
280 pixmap = QPixmap( tempFile ); 298 pixmap = QPixmap( tempFile );
281 KIO::NetAccess::removeTempFile( tempFile ); 299 KIO::NetAccess::removeTempFile( tempFile );
282 } 300 }
283#else //KAB_EMBEDDED 301#else //KAB_EMBEDDED
284 qDebug("ImageWidget::loadPixmap : only local pixmaps are allowed"); 302 qDebug("ImageWidget::loadPixmap : only local pixmaps are allowed");
285#endif //KAB_EMBEDDED 303#endif //KAB_EMBEDDED
286 304
287 } 305 }
288 306
289 return pixmap; 307 return pixmap;
290} 308}
291 309
diff --git a/kaddressbook/imagewidget.h b/kaddressbook/imagewidget.h
index b3ca0bd..afb9aa7 100644
--- a/kaddressbook/imagewidget.h
+++ b/kaddressbook/imagewidget.h
@@ -24,63 +24,65 @@
24#ifndef IMAGEWIDGET_H 24#ifndef IMAGEWIDGET_H
25#define IMAGEWIDGET_H 25#define IMAGEWIDGET_H
26 26
27#include <qwidget.h> 27#include <qwidget.h>
28 28
29#include <kabc/picture.h> 29#include <kabc/picture.h>
30#include <kdialogbase.h> 30#include <kdialogbase.h>
31 31
32class KURL; 32class KURL;
33class KURLRequester; 33class KURLRequester;
34 34
35class QCheckBox; 35class QCheckBox;
36class QLabel; 36class QLabel;
37 37
38class ImageWidget : public QWidget 38class ImageWidget : public QWidget
39{ 39{
40 Q_OBJECT 40 Q_OBJECT
41 41
42 public: 42 public:
43 ImageWidget( QWidget *parent, const char *name = 0 ); 43 ImageWidget( QWidget *parent, const char *name = 0 );
44 ~ImageWidget(); 44 ~ImageWidget();
45 45
46 /** 46 /**
47 Sets the photo object. 47 Sets the photo object.
48 */ 48 */
49 void setPhoto( const KABC::Picture &photo ); 49 void setPhoto( const KABC::Picture &photo );
50 50
51 /** 51 /**
52 Returns a photo object. 52 Returns a photo object.
53 */ 53 */
54 KABC::Picture photo() const; 54 KABC::Picture photo() const;
55 55
56 /** 56 /**
57 Sets the logo object. 57 Sets the logo object.
58 */ 58 */
59 void setLogo( const KABC::Picture &photo ); 59 void setLogo( const KABC::Picture &photo );
60 60
61 /** 61 /**
62 Returns a logo object. 62 Returns a logo object.
63 */ 63 */
64 KABC::Picture logo() const; 64 KABC::Picture logo() const;
65 65
66 signals: 66 signals:
67 void changed(); 67 void changed();
68 68
69 private slots: 69 private slots:
70 void loadPhoto(); 70 void loadPhoto();
71 void loadLogo(); 71 void loadLogo();
72 void removePhoto();
73 void removeLogo();
72 void updateGUI(); 74 void updateGUI();
73 75
74 private: 76 private:
75 QPixmap loadPixmap( const KURL &url ); 77 QPixmap loadPixmap( const KURL &url );
76 78
77 KURLRequester *mPhotoUrl; 79 KURLRequester *mPhotoUrl;
78 KURLRequester *mLogoUrl; 80 KURLRequester *mLogoUrl;
79 81
80 QCheckBox *mUsePhotoUrl; 82 QCheckBox *mUsePhotoUrl;
81 QCheckBox *mUseLogoUrl; 83 QCheckBox *mUseLogoUrl;
82 QLabel *mPhotoLabel; 84 QLabel *mPhotoLabel;
83 QLabel *mLogoLabel; 85 QLabel *mLogoLabel;
84}; 86};
85 87
86#endif 88#endif