From kmail-devel Fri Aug 30 23:54:15 2002 From: Mariusz =?iso-8859-2?q?Czu=B3ada?= Date: Fri, 30 Aug 2002 23:54:15 +0000 To: kmail-devel Subject: Re: Location patch (cont'd) X-MARC-Message: https://marc.info/?l=kmail-devel&m=103075189220514 MIME-Version: 1 Content-Type: multipart/mixed; boundary="--------------Boundary-00=_F2LOW2FRNUCIWSRZVBN9" --------------Boundary-00=_F2LOW2FRNUCIWSRZVBN9 Content-Type: text/plain; charset="iso-8859-2" Content-Transfer-Encoding: quoted-printable Well, patch the patch... I noticed one error I made i kmsearchpattern.cpp, so... --------------Boundary-00=_F2LOW2FRNUCIWSRZVBN9 Content-Type: text/x-diff; charset="iso-8859-2"; name="my-location-patch.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="my-location-patch.diff" Index: configuredialog.cpp =================================================================== RCS file: /home/kde/kdenetwork/kmail/configuredialog.cpp,v retrieving revision 1.300 diff -u -3 -p -r1.300 configuredialog.cpp --- configuredialog.cpp 30 Aug 2002 15:59:36 -0000 1.300 +++ configuredialog.cpp 30 Aug 2002 23:44:00 -0000 @@ -190,6 +190,14 @@ ConfigureDialog::ConfigureDialog( CryptP vlay->addWidget( mFolderPage ); mFolderPage->setPageIndex( pageIndex( page ) ); + // Location Page: + page = addPage( LocationPage::iconLabel(), LocationPage::title(), + loadIcon( LocationPage::iconName() ) ); + vlay = new QVBoxLayout( page, 0, spacingHint() ); + mLocationPage = new LocationPage( page ); + vlay->addWidget( mLocationPage ); + mLocationPage->setPageIndex( pageIndex( page ) ); + // Plugin Page: page = addPage( PluginPage::iconLabel(), PluginPage::title(), @@ -222,6 +230,7 @@ void ConfigureDialog::slotCancelOrClose( mComposerPage->dismiss(); mSecurityPage->dismiss(); mFolderPage->dismiss(); + mLocationPage->dismiss(); mPluginPage->dismiss(); } @@ -266,6 +275,7 @@ void ConfigureDialog::setup() mComposerPage->setup(); mSecurityPage->setup(); mFolderPage->setup(); + mLocationPage->setup(); mPluginPage->setup(); } @@ -300,6 +310,9 @@ void ConfigureDialog::apply( bool everyt if ( everything || activePage == mFolderPage->pageIndex() ) mFolderPage->apply(); + if ( everything || activePage == mLocationPage->pageIndex() ) + mLocationPage->apply(); + if ( everything || activePage == mPluginPage->pageIndex() ) mPluginPage->apply(); @@ -3490,6 +3503,121 @@ void FolderPage::apply() { general.writeEntry( "when-to-expire", expireManual ); } + + +// ************************************************************* +// * * +// * LocationPage * +// * * +// ************************************************************* + + +QString LocationPage::iconLabel() { + return i18n("Location"); +} + +const char * LocationPage::iconName() { + return "location"; +} + +QString LocationPage::title() { + return i18n("Settings for Locations"); +} + +QString LocationPage::helpAnchor() { + return QString::fromLatin1("configure-misc-locations"); +} + +LocationPage::LocationPage( QWidget * parent, const char * name ) + : ConfigurationPage( parent, name ) +{ + if ( !name ) + setName( "LocationPage" ); + resize( 354, 286 ); + setCaption( i18n( "Locations" ) ); + LocationPageLayout = new QGridLayout( this, 1, 1, 11, 6, "LocationPageLayout"); + + itemList = new QListBox( this, "itemList" ); + itemList->insertItem( i18n( "New Item" ) ); + itemList->setMinimumSize( QSize( 0, 200 ) ); + itemList->setColumnMode( QListBox::FixedNumber ); + + LocationPageLayout->addMultiCellWidget( itemList, 1, 3, 0, 0 ); + + itemEdit = new QLineEdit( this, "itemEdit" ); + + LocationPageLayout->addWidget( itemEdit, 0, 0 ); + + newItem = new QPushButton( this, "newItem" ); + newItem->setText( i18n( "A&dd" ) ); + + LocationPageLayout->addWidget( newItem, 0, 1 ); + QSpacerItem* spacer = new QSpacerItem( 0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding ); + LocationPageLayout->addItem( spacer, 4, 0 ); + + updateItem = new QPushButton( this, "updateItem" ); + updateItem->setText( i18n( "&Modify" ) ); + + LocationPageLayout->addWidget( updateItem, 1, 1 ); + + deleteItem = new QPushButton( this, "deleteItem" ); + deleteItem->setText( i18n( "&Remove" ) ); + + LocationPageLayout->addWidget( deleteItem, 2, 1 ); + QSpacerItem* spacer_2 = new QSpacerItem( 0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding ); + LocationPageLayout->addItem( spacer_2, 3, 1 ); + + // signals and slots connections + connect( newItem, SIGNAL( clicked() ), this, SLOT( insertNewItem() ) ); + connect( updateItem, SIGNAL( clicked() ), this, SLOT( updateCurrentItem() ) ); + connect( deleteItem, SIGNAL( clicked() ), this, SLOT( deleteCurrentItem() ) ); + connect( itemList, SIGNAL( selected(const QString&) ), itemEdit, SLOT( setText(const QString&) ) ); +}; + +void LocationPage::setup() { + KConfigGroup general( kapp->config(), "General" ); + + itemList->clear(); + itemList->insertStringList(general.readListEntry ( "all-locations" ) ); + if ( itemList->count() == 0 ) + itemList->insertItem ( "" ); +}; + +void LocationPage::apply() { + KConfigGroup general( kapp->config(), "General" ); + QStringList items; + + for(uint i=0; i < itemList->count(); i++) + items.append(itemList->text(i)); + + general.writeEntry( "all-locations", items ); +}; + +void LocationPage::deleteCurrentItem() +{ + if ( itemList->count() > 1 ) + { + // OK, more than 1 item + itemList->removeItem ( itemList->currentItem ( ) ); + } + else + { + // WRONG: at leat 1 item required + KMessageBox ms; + ms.sorry ( this, i18n ( "You cannot remove this item. At least one is required." ), + i18n ( "Locations" ) ); + } +}; + +void LocationPage::insertNewItem() +{ + itemList->insertItem ( i18n ( "" ) ); +}; + +void LocationPage::updateCurrentItem() +{ + itemList->changeItem ( itemEdit->text ( ), itemList->currentItem ( ) ); +}; // ************************************************************* Index: configuredialog.h =================================================================== RCS file: /home/kde/kdenetwork/kmail/configuredialog.h,v retrieving revision 1.72 diff -u -3 -p -r1.72 configuredialog.h --- configuredialog.h 22 Aug 2002 22:38:22 -0000 1.72 +++ configuredialog.h 30 Aug 2002 23:44:00 -0000 @@ -33,6 +33,7 @@ class AppearancePage; class ComposerPage; class SecurityPage; class FolderPage; +class LocationPage; class PluginPage; class CryptPlugWrapperList; class SignatureConfigurationDialogImpl; @@ -77,6 +78,7 @@ class ConfigureDialog : public KDialogBa ComposerPage *mComposerPage; SecurityPage *mSecurityPage; FolderPage *mFolderPage; + LocationPage *mLocationPage; PluginPage *mPluginPage; CryptPlugWrapperList* mCryptPlugList; }; Index: configuredialog_p.h =================================================================== RCS file: /home/kde/kdenetwork/kmail/configuredialog_p.h,v retrieving revision 1.39 diff -u -3 -p -r1.39 configuredialog_p.h --- configuredialog_p.h 22 Aug 2002 22:38:22 -0000 1.39 +++ configuredialog_p.h 30 Aug 2002 23:44:00 -0000 @@ -12,6 +12,7 @@ #include #include #include +#include #include #include @@ -786,6 +787,41 @@ protected: KIntSpinBox *mDelayedMarkTime; QCheckBox *mShowPopupAfterDnD; }; + +// +// +// LocationPage +// +// + +class LocationPage : public ConfigurationPage { + Q_OBJECT +public: + LocationPage( QWidget * parent=0, const char * name=0 ); + + static QString iconLabel(); + static const char * iconName(); + static QString title(); + static QString helpAnchor(); + + void setup(); + void apply(); + +public slots: + virtual void deleteCurrentItem(); + virtual void insertNewItem(); + virtual void updateCurrentItem(); + +protected: + QListBox* itemList; + QLineEdit* itemEdit; + QPushButton* newItem; + QPushButton* updateItem; + QPushButton* deleteItem; + + QGridLayout* LocationPageLayout; +}; + // // Index: kmmainwin.cpp =================================================================== RCS file: /home/kde/kdenetwork/kmail/kmmainwin.cpp,v retrieving revision 1.514 diff -u -3 -p -r1.514 kmmainwin.cpp --- kmmainwin.cpp 28 Aug 2002 11:58:14 -0000 1.514 +++ kmmainwin.cpp 30 Aug 2002 23:44:00 -0000 @@ -602,6 +602,13 @@ void KMMainWin::createWidgets(void) SLOT( startUpdateMessageActionsTimer() ) ); connect( kernel->outboxFolder(), SIGNAL( msgAdded(int) ), SLOT( startUpdateMessageActionsTimer() ) ); + + { + locationAction = new KSelectAction ( i18n ( "Set current location" ), 0, this, + SLOT( slotSelectLocation() ), actionCollection(), "location" ); + + slotLoadLocation ( ); + } } @@ -3695,3 +3702,36 @@ void KMMainWin::slotChangeCaption(QListV setCaption( names.join("/") ); } +//------------------------------------------------------------------------------ +void KMMainWin::slotSelectLocation() +{ + KConfigGroup general( kapp->config(), "General" ); + QString currentLocation; + + currentLocation = locationAction->currentText(); + general.writeEntry ("current-location", currentLocation ); + +} + +//------------------------------------------------------------------------------ +void KMMainWin::slotLoadLocation() +{ + KConfigGroup general( kapp->config(), "General" ); + QStringList allLocations; + QString defaultLocation; + int dloc; + + allLocations.clear(); + allLocations = general.readListEntry ("all-locations" ); + if ( allLocations.isEmpty() ) + allLocations.append ( i18n ( "" ) ); + + defaultLocation = general.readEntry ("current-location", i18n("") ); + dloc = allLocations.findIndex ( defaultLocation ); + if ( dloc < 0 ) + dloc = 0; + + locationAction->setItems ( allLocations ); + locationAction->setCurrentItem(dloc); + locationAction->setComboWidth(200); +} Index: kmmainwin.h =================================================================== RCS file: /home/kde/kdenetwork/kmail/kmmainwin.h,v retrieving revision 1.134 diff -u -3 -p -r1.134 kmmainwin.h --- kmmainwin.h 21 Aug 2002 21:48:39 -0000 1.134 +++ kmmainwin.h 30 Aug 2002 23:44:00 -0000 @@ -105,6 +105,9 @@ public: KToggleAction* unreadColumnToggle; KToggleAction* totalColumnToggle; + /** Combo for selecting current location/ */ + KSelectAction *locationAction; + void folderSelected(KMFolder*, bool jumpToUnread); /** Jump to any message in any folder. The message serial number of the @@ -145,6 +148,9 @@ public slots: /** Update message actions */ void updateMessageActions(); + /** (re)load locations from config file */ + void slotLoadLocation ( ); + protected: void setupMenuBar(); void setupStatusBar(); @@ -354,6 +360,9 @@ protected slots: /** changes the caption and displays the foldername */ void slotChangeCaption(QListViewItem*); + + /** makes selected location as current in config */ + void slotSelectLocation ( ); protected: KRadioAction * actionForHeaderStyle(int); Index: kmmainwin.rc =================================================================== RCS file: /home/kde/kdenetwork/kmail/kmmainwin.rc,v retrieving revision 1.41 diff -u -3 -p -r1.41 kmmainwin.rc --- kmmainwin.rc 30 Aug 2002 17:43:08 -0000 1.41 +++ kmmainwin.rc 30 Aug 2002 23:44:00 -0000 @@ -124,5 +124,7 @@ + + Index: kmsearchpattern.cpp =================================================================== RCS file: /home/kde/kdenetwork/kmail/kmsearchpattern.cpp,v retrieving revision 1.20 diff -u -3 -p -r1.20 kmsearchpattern.cpp --- kmsearchpattern.cpp 3 Jun 2002 13:15:55 -0000 1.20 +++ kmsearchpattern.cpp 30 Aug 2002 23:44:00 -0000 @@ -10,6 +10,7 @@ #include #include #include +#include #include @@ -91,7 +92,10 @@ bool KMSearchRule::matches(const KMMessa assert(msg != NULL); // This assert seems to be important - if( mField == "" ) { + if( mField == "" ) { + KConfigGroup general( kapp->config(), "General" ); + msgContents = general.readEntry ("current-location" ); + } else if( mField == "" ) { // there's msg->asString(), but this way we can keep msg const (dnaber, 1999-05-27) msgContents = msg->headerAsString(); msgContents += msg->bodyDecoded(); Index: kmsearchpatternedit.cpp =================================================================== RCS file: /home/kde/kdenetwork/kmail/kmsearchpatternedit.cpp,v retrieving revision 1.35 diff -u -3 -p -r1.35 kmsearchpatternedit.cpp --- kmsearchpatternedit.cpp 1 Aug 2002 17:54:35 -0000 1.35 +++ kmsearchpatternedit.cpp 30 Aug 2002 23:44:00 -0000 @@ -149,6 +149,7 @@ QString KMSearchRuleWidget::ruleFieldToE if (i18nVal == i18n("")) return QString::fromLatin1(""); if (i18nVal == i18n("")) return QString::fromLatin1(""); if (i18nVal == i18n("")) return QString::fromLatin1(""); + if (i18nVal == i18n("")) return QString::fromLatin1(""); return i18nVal; } @@ -197,6 +198,7 @@ void KMSearchRuleWidget::initLists(bool sFilterFieldList.append(i18n("")); sFilterFieldList.append(i18n("")); sFilterFieldList.append(i18n("")); + sFilterFieldList.append(i18n("")); // these others only represent message headers and you can add to // them as you like sFilterFieldList.append("Subject"); --------------Boundary-00=_F2LOW2FRNUCIWSRZVBN9-- _______________________________________________ KMail Developers mailing list kmail@mail.kde.org http://mail.kde.org/mailman/listinfo/kmail