[PATCH] Replacing email selection dialog in kmail
Tobias Koenig
tokoe at kde.org
Wed Dec 3 18:01:55 GMT 2003
On Mon, Dec 01, 2003 at 11:15:59AM +0100, Tobias König wrote:
> On Mon, Dec 01, 2003 at 01:48:02AM +0100, Ingo Klöcker wrote:
Hi,
here is the new patch...
> > > whee! yes, putting them in a group is good. the only thing i'd change
> > > there is hiding that item when there are no distribution lists. a
> > > quick check for (distLists.begin() == distLists.end()) should work
> > > ...
> Yepp, possible
Implemented
> > Also the members of the distribution lists should still be listed below
> > the distribution list names to make it easy for the user to check who's
> > in the list.
> Hmm, but shall they be selectable as well?
Are selectable now, so you can select the whole dist list or the single
entries now.
Furthermore I added icons, so you can see at one glance which item is a
contact and which a distlist.
Ok for commit?
/*
Please no new flamewar, I know this dialog may sucks in some terms of
'usability', but it works, and that's quite important for the release
IMHO.
*/
Ciao,
Tobias
--
Can a government that shoots at reporters be democratic?
Separate politics from religion and economy!
-------------- next part --------------
Index: addressesdialog.cpp
===================================================================
RCS file: /home/kde/kdepim/libkdepim/addressesdialog.cpp,v
retrieving revision 1.19
diff -p -u -b -r1.19 addressesdialog.cpp
--- addressesdialog.cpp 17 Nov 2003 19:24:18 -0000 1.19
+++ addressesdialog.cpp 3 Dec 2003 17:55:56 -0000
@@ -22,20 +22,23 @@
*/
#include <kabc/stdaddressbook.h>
#include <kabc/distributionlist.h>
-
+#include <kapplication.h>
+#include <kdebug.h>
+#include <kglobal.h>
+#include <kiconloader.h>
+#include <kinputdialog.h>
+#include <klineedit.h>
+#include <klocale.h>
#include <kmessagebox.h>
+#include <kprocess.h>
#include <kpushbutton.h>
-#include <klineedit.h>
#include <krun.h>
#include <kstandarddirs.h>
-#include <kprocess.h>
-#include <klocale.h>
-#include <kdebug.h>
-#include <kinputdialog.h>
+
+#include <qdict.h>
#include <qlayout.h>
#include <qvbox.h>
#include <qwidget.h>
-#include <qdict.h>
#include "addressesdialog.h"
#include "addresspicker.h"
@@ -75,6 +78,8 @@ AddresseeViewItem::AddresseeViewItem( Ad
if ( text(0).stripWhiteSpace().isEmpty() )
setText( 0, addr.preferredEmail() );
+
+ setPixmap( 0, KGlobal::iconLoader()->loadIcon( "personal", KIcon::Small ) );
}
AddresseeViewItem::AddresseeViewItem( KListView *lv, const QString& name, Category cat )
@@ -93,6 +98,15 @@ AddresseeViewItem::AddresseeViewItem( A
d->addresses = lst;
}
+AddresseeViewItem::AddresseeViewItem( AddresseeViewItem *parent, const QString& name )
+ : QObject(0), KListViewItem( parent, name, i18n("<group>") )
+{
+ d = new AddresseeViewItemPrivate;
+ d->category = DistList;
+
+ setPixmap( 0, KGlobal::iconLoader()->loadIcon( "kdmconfig", KIcon::Small ) );
+}
+
AddresseeViewItem::~AddresseeViewItem()
{
delete d;
@@ -140,6 +154,7 @@ void AddresseeViewItem::setSelected(bool
{
return;
}
+
emit addressSelected( this, selected );
QListViewItem::setSelected(selected);
}
@@ -180,6 +195,8 @@ AddressesDialog::AddressesDialog( QWidge
AddressesDialog::~AddressesDialog()
{
+ delete d;
+ d = 0;
}
AddresseeViewItem* AddressesDialog::selectedToItem()
@@ -292,22 +309,32 @@ AddressesDialog::setShowBCC( bool b )
QStringList
AddressesDialog::to() const
{
+ QStringList emails = allDistributionLists( d->toItem );
KABC::Addressee::List l = toAddresses();
- return entryToString( l );
+ emails += entryToString( l );
+
+ return emails;
}
QStringList
AddressesDialog::cc() const
{
+ QStringList emails = allDistributionLists( d->ccItem );
KABC::Addressee::List l = ccAddresses();
- return entryToString( l );
+ emails += entryToString( l );
+
+ return emails;
}
QStringList
AddressesDialog::bcc() const
{
+ QStringList emails = allDistributionLists( d->bccItem );
+
KABC::Addressee::List l = bccAddresses();
- return entryToString( l );
+ emails += entryToString( l );
+
+ return emails;
}
KABC::Addressee::List
@@ -383,8 +410,6 @@ void
AddressesDialog::availableSelectionChanged()
{
bool selection = !selectedAvailableAddresses.isEmpty();
- d->ui->mEditButton->setEnabled(selection);
- d->ui->mDeleteButton->setEnabled(selection);
d->ui->mToButton->setEnabled(selection);
d->ui->mCCButton->setEnabled(selection);
d->ui->mBCCButton->setEnabled(selection);
@@ -426,38 +451,36 @@ AddressesDialog::selectedAddressSelected
void
AddressesDialog::initConnections()
{
- QObject::connect( d->ui->mDeleteButton, SIGNAL(clicked()),
- SLOT(deleteEntry()) );
- QObject::connect( d->ui->mNewButton, SIGNAL(clicked()),
- SLOT(newEntry()) );
- QObject::connect( d->ui->mEditButton, SIGNAL(clicked()),
- SLOT(editEntry()) );
- QObject::connect( d->ui->mFilterEdit, SIGNAL(textChanged(const QString &)),
+ connect( d->ui->mFilterEdit, SIGNAL(textChanged(const QString &)),
SLOT(filterChanged(const QString &)) );
- QObject::connect( d->ui->mToButton, SIGNAL(clicked()),
+ connect( d->ui->mToButton, SIGNAL(clicked()),
SLOT(addSelectedTo()) );
- QObject::connect( d->ui->mCCButton, SIGNAL(clicked()),
+ connect( d->ui->mCCButton, SIGNAL(clicked()),
SLOT(addSelectedCC()) );
- QObject::connect( d->ui->mBCCButton, SIGNAL(clicked()),
+ connect( d->ui->mBCCButton, SIGNAL(clicked()),
SLOT(addSelectedBCC()) );
- QObject::connect( d->ui->mSaveAs, SIGNAL(clicked()),
+ connect( d->ui->mSaveAs, SIGNAL(clicked()),
SLOT(saveAs()) );
- QObject::connect( d->ui->mRemoveButton, SIGNAL(clicked()),
+ connect( d->ui->mAddressBook, SIGNAL(clicked()),
+ SLOT(launchAddressBook()) );
+ connect( d->ui->mRemoveButton, SIGNAL(clicked()),
SLOT(removeEntry()) );
- QObject::connect( d->ui->mAvailableView, SIGNAL(selectionChanged()),
+ connect( d->ui->mAvailableView, SIGNAL(selectionChanged()),
SLOT(availableSelectionChanged()) );
- QObject::connect( d->ui->mAvailableView, SIGNAL(doubleClicked(QListViewItem*)),
+ connect( d->ui->mAvailableView, SIGNAL(doubleClicked(QListViewItem*)),
SLOT(addSelectedTo()) );
- QObject::connect( d->ui->mSelectedView, SIGNAL(selectionChanged()),
+ connect( d->ui->mSelectedView, SIGNAL(selectionChanged()),
SLOT(selectedSelectionChanged()) );
- QObject::connect( d->ui->mSelectedView, SIGNAL(doubleClicked(QListViewItem*)),
+ connect( d->ui->mSelectedView, SIGNAL(doubleClicked(QListViewItem*)),
SLOT(removeEntry()) );
-
+/* FIXME: I'm not sure what's going on here, but this code suddenly crashes :/
+ Did somebody changed the KDirWatcher stuff during the last weeks?
connect( KABC::DistributionListWatcher::self(), SIGNAL( changed() ),
this, SLOT( updateAvailableAddressees() ) );
connect( KABC::StdAddressBook::self(), SIGNAL( addressBookChanged(AddressBook*) ),
this, SLOT( updateAvailableAddressees() ) );
+*/
}
void
@@ -503,6 +526,7 @@ AddressesDialog::addAddresseeToSelected(
this, SLOT(selectedAddressSelected(AddresseeViewItem*, bool)));
defaultParent->setOpen( true );
}
+
d->ui->mSaveAs->setEnabled(true);
}
@@ -533,6 +557,10 @@ AddressesDialog::addAddresseesToSelected
{
newItem = new AddresseeViewItem( parent, address->addressee() );
}
+ else if (address->category() == AddresseeViewItem::DistList)
+ {
+ newItem = new AddresseeViewItem( parent, address->name() );
+ }
else
{
newItem = new AddresseeViewItem( parent, address->name(), allAddressee( address ) );
@@ -739,39 +767,9 @@ AddressesDialog::saveAs()
}
void
-AddressesDialog::editEntry()
-{
- AddresseeViewItem *item = static_cast<AddresseeViewItem*>( d->ui->mAvailableView->currentItem() );
-
-#if defined( Q_CC_GNU )
-#warning "This is rather crappy"
-#endif
- if ( item ) {
- if ( ! KStandardDirs::findExe( "kaddressbook" ).isEmpty() ) {
- KRun::runCommand( "kaddressbook -a " + KProcess::quote( item->addressee().fullEmail() ) );
- } else {
- KMessageBox::information( 0,
- i18n("No external address book application found. You might want to "
- "install KAddressBook from the kdepim module.") );
- }
- } else {
- KMessageBox::information( 0,
- i18n("Please select the entry which you want to edit.") );
- }
-}
-
-void
-AddressesDialog::newEntry()
-{
-#if defined( Q_CC_GNU )
-#warning "FIXME: do not call kaddressbook"
-#endif
- KRun::runCommand( "kaddressbook --editor-only --new-contact" );
-}
-
-void
-AddressesDialog::deleteEntry()
+AddressesDialog::launchAddressBook()
{
+ kapp->startServiceByDesktopName( "kaddressbook", QString() );
}
void
@@ -822,6 +820,7 @@ AddressesDialog::allAddressee( KListView
}
++it;
}
+
return lst;
}
@@ -850,6 +849,26 @@ AddressesDialog::allAddressee( Addressee
return lst;
}
+QStringList
+AddressesDialog::allDistributionLists( AddresseeViewItem* parent ) const
+{
+ QStringList lists;
+
+ if ( !parent )
+ return QStringList();
+
+ QListViewItemIterator it( parent );
+ while ( it.current() ) {
+ AddresseeViewItem *item = static_cast<AddresseeViewItem*>( it.current() );
+ if ( item && item->category() == AddresseeViewItem::DistList && !item->name().isEmpty() )
+ lists.append( item->name() );
+
+ ++it;
+ }
+
+ return lists;
+}
+
void
AddressesDialog::addDistributionLists()
{
@@ -858,21 +877,27 @@ AddressesDialog::addDistributionLists()
manager->load();
QStringList distLists = manager->listNames();
+ if ( distLists.begin() == distLists.end() )
+ return;
- for( QStringList::iterator itr = distLists.begin(); itr != distLists.end(); ++itr ) {
- KABC::DistributionList* dlist = manager->list( *itr );
- KABC::DistributionList::Entry::List elist = dlist->entries();
- AddresseeViewItem *parent = new AddresseeViewItem( d->ui->mAvailableView, dlist->name() );
- connect(parent, SIGNAL(addressSelected(AddresseeViewItem*, bool)),
- this, SLOT(selectedAddressSelected(AddresseeViewItem*, bool)));
+ AddresseeViewItem *topItem = new AddresseeViewItem( d->ui->mAvailableView,
+ i18n( "Distribution Lists" ) );
- for( KABC::DistributionList::Entry::List::iterator itr = elist.begin();
- itr != elist.end(); ++itr ) {
- addAddresseeToAvailable( (*itr).addressee, parent );
- }
+ QStringList::Iterator listIt;
+ for ( listIt = distLists.begin(); listIt != distLists.end(); ++listIt ) {
+ KABC::DistributionList* dlist = manager->list( *listIt );
+ KABC::DistributionList::Entry::List entries = dlist->entries();
+
+ AddresseeViewItem *item = new AddresseeViewItem( topItem, dlist->name() );
+ connect( item, SIGNAL( addressSelected( AddresseeViewItem*, bool ) ),
+ this, SLOT( availableAddressSelected( AddresseeViewItem*, bool ) ) );
+
+ KABC::DistributionList::Entry::List::Iterator itemIt;
+ for ( itemIt = entries.begin(); itemIt != entries.end(); ++itemIt )
+ addAddresseeToAvailable( (*itemIt).addressee, item );
}
}
-}//end namespace KPIM
+}
#include "addressesdialog.moc"
Index: addressesdialog.h
===================================================================
RCS file: /home/kde/kdepim/libkdepim/addressesdialog.h,v
retrieving revision 1.8
diff -p -u -b -r1.8 addressesdialog.h
--- addressesdialog.h 11 Aug 2003 11:52:30 -0000 1.8
+++ addressesdialog.h 3 Dec 2003 17:55:57 -0000
@@ -44,13 +44,13 @@ namespace KPIM {
BCC =2,
Group =3,
Entry =4,
- FilledGroup =5
+ FilledGroup =5,
+ DistList =6
};
AddresseeViewItem( AddresseeViewItem *parent, const KABC::Addressee& addr );
AddresseeViewItem( KListView *lv, const QString& name, Category cat=Group );
AddresseeViewItem( AddresseeViewItem *parent, const QString& name, const KABC::Addressee::List &lst );
- //AddresseeViewItem( AddresseeViewItem *parent, const QString& name,
- // const QString& email = QString::null );
+ AddresseeViewItem( AddresseeViewItem *parent, const QString& name );
~AddresseeViewItem();
KABC::Addressee addressee() const;
@@ -142,10 +142,7 @@ namespace KPIM {
void removeEntry();
void saveAs();
-
- void editEntry();
- void newEntry();
- void deleteEntry();
+ void launchAddressBook();
void filterChanged( const QString & );
@@ -171,6 +168,7 @@ namespace KPIM {
QStringList entryToString( const KABC::Addressee::List& l ) const;
KABC::Addressee::List allAddressee( AddresseeViewItem* parent ) const;
KABC::Addressee::List allAddressee( KListView* view, bool onlySelected = true ) const;
+ QStringList allDistributionLists( AddresseeViewItem* parent ) const;
private:
// if there's only one group in the available list, open it
Index: addresspicker.ui
===================================================================
RCS file: /home/kde/kdepim/libkdepim/addresspicker.ui,v
retrieving revision 1.6
diff -p -u -b -r1.6 addresspicker.ui
--- addresspicker.ui 6 Oct 2003 13:26:44 -0000 1.6
+++ addresspicker.ui 3 Dec 2003 17:55:58 -0000
@@ -8,91 +8,18 @@
<rect>
<x>0</x>
<y>0</y>
- <width>676</width>
- <height>328</height>
+ <width>591</width>
+ <height>348</height>
</rect>
</property>
<property name="caption">
<string>Address Selection</string>
</property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <widget class="QSplitter">
- <property name="name">
- <cstring>splitter3</cstring>
- </property>
- <property name="orientation">
- <enum>Horizontal</enum>
- </property>
- <widget class="QGroupBox">
- <property name="name">
- <cstring>GroupBox3</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>5</hsizetype>
- <vsizetype>5</vsizetype>
- <horstretch>1</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="frameShape">
- <enum>NoFrame</enum>
- </property>
- <property name="title">
- <string></string>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <widget class="QLayoutWidget">
- <property name="name">
- <cstring>layout7</cstring>
- </property>
<grid>
<property name="name">
<cstring>unnamed</cstring>
</property>
- <property name="margin">
- <number>0</number>
- </property>
- <widget class="QLabel" row="0" column="0" rowspan="1" colspan="3">
- <property name="name">
- <cstring>textLabel1</cstring>
- </property>
- <property name="font">
- <font>
- <bold>1</bold>
- </font>
- </property>
- <property name="text">
- <string>&Address Book</string>
- </property>
- <property name="alignment">
- <set>WordBreak|AlignCenter</set>
- </property>
- <property name="buddy" stdset="0">
- <cstring>mAvailableView</cstring>
- </property>
- </widget>
- <widget class="KPushButton" row="3" column="2">
- <property name="name">
- <cstring>mDeleteButton</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="text">
- <string>De&lete</string>
- </property>
- </widget>
- <widget class="KListView" row="1" column="0" rowspan="1" colspan="3">
+ <widget class="KListView" row="1" column="0">
<column>
<property name="text">
<string>Name</string>
@@ -137,86 +64,9 @@
<bool>true</bool>
</property>
</widget>
- <widget class="KPushButton" row="3" column="0">
- <property name="name">
- <cstring>mNewButton</cstring>
- </property>
- <property name="text">
- <string>&New...</string>
- </property>
- </widget>
- <widget class="QLayoutWidget" row="2" column="0" rowspan="1" colspan="3">
- <property name="name">
- <cstring>layout1</cstring>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <widget class="QLabel">
- <property name="name">
- <cstring>TextLabel2</cstring>
- </property>
- <property name="text">
- <string>&Filter on:</string>
- </property>
- <property name="buddy" stdset="0">
- <cstring>mFilterEdit</cstring>
- </property>
- </widget>
- <widget class="QLineEdit">
- <property name="name">
- <cstring>mFilterEdit</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>7</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>1</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string></string>
- </property>
- </widget>
- </hbox>
- </widget>
- <widget class="KPushButton" row="3" column="1">
- <property name="name">
- <cstring>mEditButton</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="text">
- <string>&Edit...</string>
- </property>
- </widget>
- </grid>
- </widget>
- <spacer>
- <property name="name">
- <cstring>spacer4</cstring>
- </property>
- <property name="orientation">
- <enum>Horizontal</enum>
- </property>
- <property name="sizeType">
- <enum>Fixed</enum>
- </property>
- <property name="sizeHint">
- <size>
- <width>6</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </hbox>
- </widget>
- <widget class="QLayoutWidget">
+ <widget class="QLayoutWidget" row="1" column="1">
<property name="name">
- <cstring>layout3</cstring>
+ <cstring>layout10</cstring>
</property>
<vbox>
<property name="name">
@@ -235,7 +85,7 @@
<property name="sizeHint">
<size>
<width>20</width>
- <height>25</height>
+ <height>16</height>
</size>
</property>
</spacer>
@@ -249,6 +99,9 @@
<property name="text">
<string>&To >></string>
</property>
+ <property name="accel">
+ <string></string>
+ </property>
</widget>
<widget class="KPushButton">
<property name="name">
@@ -258,7 +111,10 @@
<bool>false</bool>
</property>
<property name="text">
- <string>CC &>></string>
+ <string>&CC >></string>
+ </property>
+ <property name="accel">
+ <string>Alt+C</string>
</property>
</widget>
<widget class="KPushButton">
@@ -271,6 +127,9 @@
<property name="text">
<string>&BCC >></string>
</property>
+ <property name="accel">
+ <string>Alt+B</string>
+ </property>
</widget>
<spacer>
<property name="name">
@@ -285,7 +144,7 @@
<property name="sizeHint">
<size>
<width>20</width>
- <height>18</height>
+ <height>16</height>
</size>
</property>
</spacer>
@@ -299,6 +158,9 @@
<property name="text">
<string><< &Remove</string>
</property>
+ <property name="accel">
+ <string>Alt+R</string>
+ </property>
</widget>
<spacer>
<property name="name">
@@ -313,65 +175,48 @@
<property name="sizeHint">
<size>
<width>20</width>
- <height>105</height>
+ <height>20</height>
</size>
</property>
</spacer>
</vbox>
</widget>
- <widget class="QGroupBox">
+ <widget class="QPushButton" row="2" column="2">
<property name="name">
- <cstring>GroupBox2</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>5</hsizetype>
- <vsizetype>5</vsizetype>
- <horstretch>1</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="frameShape">
- <enum>NoFrame</enum>
+ <cstring>mSaveAs</cstring>
</property>
- <property name="title">
- <string></string>
+ <property name="enabled">
+ <bool>false</bool>
</property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
+ <property name="text">
+ <string>Save as &Distribution List...</string>
</property>
- <property name="margin">
- <number>0</number>
+ <property name="accel">
+ <string>Alt+D</string>
</property>
- <spacer>
+ </widget>
+ <widget class="QLabel" row="0" column="2">
<property name="name">
- <cstring>spacer5</cstring>
- </property>
- <property name="orientation">
- <enum>Horizontal</enum>
+ <cstring>textLabel2</cstring>
</property>
- <property name="sizeType">
- <enum>Fixed</enum>
+ <property name="font">
+ <font>
+ <bold>1</bold>
+ </font>
</property>
- <property name="sizeHint">
- <size>
- <width>6</width>
- <height>20</height>
- </size>
+ <property name="text">
+ <string>&Selected Addresses</string>
</property>
- </spacer>
- <widget class="QLayoutWidget">
- <property name="name">
- <cstring>layout5</cstring>
+ <property name="alignment">
+ <set>WordBreak|AlignCenter</set>
</property>
- <vbox>
- <property name="name">
- <cstring>unnamed</cstring>
+ <property name="buddy" stdset="0">
+ <cstring>mSelectedView</cstring>
</property>
- <widget class="QLabel">
+ </widget>
+ <widget class="QLabel" row="0" column="0">
<property name="name">
- <cstring>textLabel2</cstring>
+ <cstring>textLabel1</cstring>
</property>
<property name="font">
<font>
@@ -379,16 +224,53 @@
</font>
</property>
<property name="text">
- <string>&Selected Addresses</string>
+ <string>&Address Book</string>
</property>
<property name="alignment">
<set>WordBreak|AlignCenter</set>
</property>
<property name="buddy" stdset="0">
- <cstring>mSelectedView</cstring>
+ <cstring>mAvailableView</cstring>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget" row="2" column="0">
+ <property name="name">
+ <cstring>layout1</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>TextLabel2</cstring>
+ </property>
+ <property name="text">
+ <string>&Filter on:</string>
+ </property>
+ <property name="buddy" stdset="0">
+ <cstring>mFilterEdit</cstring>
+ </property>
+ </widget>
+ <widget class="QLineEdit">
+ <property name="name">
+ <cstring>mFilterEdit</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>7</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>1</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
</property>
+ <property name="text">
+ <string></string>
+ </property>
+ </widget>
+ </hbox>
</widget>
- <widget class="KListView">
+ <widget class="KListView" row="1" column="2">
<column>
<property name="text">
<string>Name</string>
@@ -436,36 +318,26 @@
<bool>true</bool>
</property>
</widget>
- <widget class="KPushButton">
+ <widget class="QPushButton" row="2" column="1">
<property name="name">
- <cstring>mSaveAs</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
+ <cstring>mAddressBook</cstring>
</property>
<property name="text">
- <string>Save as &Distribution List...</string>
+ <string>Address B&ook...</string>
+ </property>
+ <property name="accel">
+ <string>Alt+O</string>
</property>
</widget>
- </vbox>
- </widget>
- </hbox>
- </widget>
- </widget>
- </hbox>
+ </grid>
</widget>
-<tabstops>
- <tabstop>mAvailableView</tabstop>
- <tabstop>mFilterEdit</tabstop>
- <tabstop>mNewButton</tabstop>
- <tabstop>mEditButton</tabstop>
- <tabstop>mDeleteButton</tabstop>
- <tabstop>mToButton</tabstop>
- <tabstop>mCCButton</tabstop>
- <tabstop>mBCCButton</tabstop>
- <tabstop>mRemoveButton</tabstop>
- <tabstop>mSelectedView</tabstop>
- <tabstop>mSaveAs</tabstop>
-</tabstops>
<layoutdefaults spacing="6" margin="11"/>
+<includehints>
+ <includehint>klistview.h</includehint>
+ <includehint>kpushbutton.h</includehint>
+ <includehint>kpushbutton.h</includehint>
+ <includehint>kpushbutton.h</includehint>
+ <includehint>kpushbutton.h</includehint>
+ <includehint>klistview.h</includehint>
+</includehints>
</UI>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20031203/3c53a21e/attachment.sig>
More information about the kde-core-devel
mailing list