-rw-r--r-- | bin/kdepim/WhatsNew.txt | 3 | ||||
-rw-r--r-- | kabc/addresseedialog.cpp | 2 | ||||
-rw-r--r-- | kaddressbook/addresseeeditorwidget.cpp | 12 | ||||
-rw-r--r-- | kaddressbook/imagewidget.cpp | 28 | ||||
-rw-r--r-- | kaddressbook/imagewidget.h | 2 |
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 | |||
@@ -5,48 +5,51 @@ Info about the changes in new versions of KDE-Pim/Pi | |||
5 | FYI: The VERSION 1.9.17 was a testing release only. | 5 | FYI: The VERSION 1.9.17 was a testing release only. |
6 | Please read the changelog of VERSION 1.9.17 as well. | 6 | Please read the changelog of VERSION 1.9.17 as well. |
7 | 7 | ||
8 | Cleaned up the syncing config dialog. | 8 | Cleaned up the syncing config dialog. |
9 | Added sync config options for date range for events. | 9 | Added sync config options for date range for events. |
10 | Added sync config options for filters on incoming data. | 10 | Added sync config options for filters on incoming data. |
11 | Added sync config options for filters on outgoing data. | 11 | Added sync config options for filters on outgoing data. |
12 | Please read the updated SyncHowTo about the new filter settings. | 12 | Please read the updated SyncHowTo about the new filter settings. |
13 | These filter settings make it now possible to sync with shared | 13 | These filter settings make it now possible to sync with shared |
14 | calendars without writing back private or confidential data | 14 | calendars without writing back private or confidential data |
15 | (via the outgoing filters). | 15 | (via the outgoing filters). |
16 | To sync only with particular parts of a shared calendar, | 16 | To sync only with particular parts of a shared calendar, |
17 | the incoming filter settings can be used. | 17 | the incoming filter settings can be used. |
18 | An example can be found in the SyncHowTo. | 18 | An example can be found in the SyncHowTo. |
19 | 19 | ||
20 | KO/Pi: | 20 | KO/Pi: |
21 | The timeedit input has a pulldown list for times. | 21 | The timeedit input has a pulldown list for times. |
22 | If opened, this pulldown list should now has the right time highlighted. | 22 | If opened, this pulldown list should now has the right time highlighted. |
23 | Added the possibility to exclude events/todos/journals in a filter. | 23 | Added the possibility to exclude events/todos/journals in a filter. |
24 | You should exclude journals, if you do not want them to sync with a public calendar. | 24 | You should exclude journals, if you do not want them to sync with a public calendar. |
25 | 25 | ||
26 | KA/Pi: | 26 | KA/Pi: |
27 | Added the possibility to in/exclude public/private/confidential contacts to a filter. | 27 | Added the possibility to in/exclude public/private/confidential contacts to a filter. |
28 | If 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 ... | 28 | If 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 ... |
29 | Added printing of card view and details view on desktop. | ||
30 | Printing of list view is not working... | ||
31 | Added button for removing pictures in contact editor. | ||
29 | 32 | ||
30 | 33 | ||
31 | ********** VERSION 1.9.17 ************ | 34 | ********** VERSION 1.9.17 ************ |
32 | 35 | ||
33 | KO/Pi: | 36 | KO/Pi: |
34 | Fixed that tooltips were not updated after moving an item in agenda view. | 37 | Fixed that tooltips were not updated after moving an item in agenda view. |
35 | Fixed a bug in sorting start date for recurring events in list view. | 38 | Fixed a bug in sorting start date for recurring events in list view. |
36 | Changed the left button in todo viewer from "Agenda" to "Set completed". | 39 | Changed the left button in todo viewer from "Agenda" to "Set completed". |
37 | This 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. | 40 | This 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. |
38 | Added more info in the todo viewer: Startdate, parent/sub todos. | 41 | Added more info in the todo viewer: Startdate, parent/sub todos. |
39 | 42 | ||
40 | 43 | ||
41 | KA/Pi: | 44 | KA/Pi: |
42 | All fields search does now actually search all the (possible) fields, | 45 | All fields search does now actually search all the (possible) fields, |
43 | not only those listed in the contact list. | 46 | not only those listed in the contact list. |
44 | Made is possible to inline a picture in a vcard on the Z. | 47 | Made is possible to inline a picture in a vcard on the Z. |
45 | This was only possible on the desktop, now is it possible on the Z as well. | 48 | This was only possible on the desktop, now is it possible on the Z as well. |
46 | Fixed of missing save settings after filter configuration. | 49 | Fixed of missing save settings after filter configuration. |
47 | Made saving of addressbook much faster. | 50 | Made saving of addressbook much faster. |
48 | Fixed extension widget layout problem. | 51 | Fixed extension widget layout problem. |
49 | Fixed saving of default formatted name settings. | 52 | Fixed saving of default formatted name settings. |
50 | Fixed formatted name handling in edit dialog. | 53 | Fixed formatted name handling in edit dialog. |
51 | Added an option for changing formatted names of many contacts | 54 | Added an option for changing formatted names of many contacts |
52 | (menu: File - Change - Set formatted name). | 55 | (menu: File - Change - Set formatted name). |
diff --git a/kabc/addresseedialog.cpp b/kabc/addresseedialog.cpp index ae67968..9ea9d04 100644 --- a/kabc/addresseedialog.cpp +++ b/kabc/addresseedialog.cpp | |||
@@ -20,49 +20,49 @@ | |||
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 | ||
36 | using namespace KABC; | 36 | using namespace KABC; |
37 | 37 | ||
38 | AddresseeItem::AddresseeItem( QListView *parent, const Addressee &addressee ) : | 38 | AddresseeItem::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 | ||
49 | QString AddresseeItem::key( int column, bool ) const | 49 | QString 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 | ||
60 | AddresseeDialog::AddresseeDialog( QWidget *parent, bool multiple ) : | 60 | AddresseeDialog::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 ); |
diff --git a/kaddressbook/addresseeeditorwidget.cpp b/kaddressbook/addresseeeditorwidget.cpp index c6993e9..bd32859 100644 --- a/kaddressbook/addresseeeditorwidget.cpp +++ b/kaddressbook/addresseeeditorwidget.cpp | |||
@@ -977,48 +977,58 @@ void AddresseeEditorWidget::load() | |||
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 | ||
@@ -1184,51 +1194,51 @@ bool AddresseeEditorWidget::dirty() | |||
1184 | } | 1194 | } |
1185 | 1195 | ||
1186 | void AddresseeEditorWidget::nameTextChanged( const QString &text ) | 1196 | void 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 | ||
1214 | void AddresseeEditorWidget::nameBoxChanged() | 1224 | void 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 | ||
diff --git a/kaddressbook/imagewidget.cpp b/kaddressbook/imagewidget.cpp index 48370e3..9ee4eac 100644 --- a/kaddressbook/imagewidget.cpp +++ b/kaddressbook/imagewidget.cpp | |||
@@ -20,110 +20,120 @@ | |||
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 | ||
48 | ImageWidget::ImageWidget( QWidget *parent, const char *name ) | 49 | ImageWidget::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 | ||
@@ -217,51 +227,59 @@ void ImageWidget::setLogo( const KABC::Picture &logo ) | |||
217 | } | 227 | } |
218 | 228 | ||
219 | KABC::Picture ImageWidget::logo() const | 229 | KABC::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 | } |
253 | void ImageWidget::removePhoto() | ||
254 | { | ||
255 | setPhoto(KABC::Picture() ); | ||
256 | } | ||
257 | |||
258 | void ImageWidget::removeLogo() | ||
259 | { | ||
260 | setLogo(KABC::Picture() ); | ||
261 | } | ||
244 | 262 | ||
245 | void ImageWidget::loadPhoto() | 263 | void ImageWidget::loadPhoto() |
246 | { | 264 | { |
247 | mPhotoLabel->setPixmap( loadPixmap( mPhotoUrl->url() ) ); | 265 | mPhotoLabel->setPixmap( loadPixmap( mPhotoUrl->url() ) ); |
248 | } | 266 | } |
249 | 267 | ||
250 | void ImageWidget::loadLogo() | 268 | void ImageWidget::loadLogo() |
251 | { | 269 | { |
252 | mLogoLabel->setPixmap( loadPixmap( mLogoUrl->url() ) ); | 270 | mLogoLabel->setPixmap( loadPixmap( mLogoUrl->url() ) ); |
253 | } | 271 | } |
254 | 272 | ||
255 | void ImageWidget::updateGUI() | 273 | void 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 | ||
266 | QPixmap ImageWidget::loadPixmap( const KURL &url ) | 284 | QPixmap ImageWidget::loadPixmap( const KURL &url ) |
267 | { | 285 | { |
diff --git a/kaddressbook/imagewidget.h b/kaddressbook/imagewidget.h index b3ca0bd..afb9aa7 100644 --- a/kaddressbook/imagewidget.h +++ b/kaddressbook/imagewidget.h | |||
@@ -48,39 +48,41 @@ class ImageWidget : public QWidget | |||
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 |