The check for conflictuous shortcut is now in KKeySequenceWidget, no need to check this manually anymore

svn path=/trunk/KDE/kdepim/; revision=719717
wilder-work
Olivier Goffart 19 years ago
parent fd15f72439
commit 73eb0cf45f
  1. 16
      configuredialog.cpp
  2. 3
      configuredialog_p.h
  3. 17
      customtemplates.cpp
  4. 2
      customtemplates.h
  5. 8
      foldershortcutdialog.cpp
  6. 1
      foldershortcutdialog.h
  7. 2
      kmail.notifyrc
  8. 15
      kmfilterdlg.cpp
  9. 2
      kmfilterdlg.h
  10. 19
      kmmainwidget.cpp
  11. 7
      kmmainwidget.h

@ -2440,9 +2440,10 @@ AppearancePageMessageTagTab::AppearancePageMessageTagTab( QWidget * parent )
QLabel *sclabel = new QLabel( i18n("Shortc&ut") , mTagSettingGroupBox ); QLabel *sclabel = new QLabel( i18n("Shortc&ut") , mTagSettingGroupBox );
sclabel->setBuddy( mKeySequenceWidget ); sclabel->setBuddy( mKeySequenceWidget );
settings->addWidget( sclabel, 6, 0 ); settings->addWidget( sclabel, 6, 0 );
mKeySequenceWidget->setCheckActionList(kmkernel->getKMMainWidget()->actionList());
connect( mKeySequenceWidget, SIGNAL( validationHook( const QKeySequence & ) ), connect( mKeySequenceWidget, SIGNAL( keySequenceChanged( const QKeySequence & ) ),
this, SLOT( slotValidationHook( const QKeySequence & ) ) ); this, SLOT( slotEmitChangeCheck() ) );
//Sixth for Toolbar checkbox //Sixth for Toolbar checkbox
mInToolbarCheck = new QCheckBox( i18n("Enable &Toolbar Button"), mInToolbarCheck = new QCheckBox( i18n("Enable &Toolbar Button"),
@ -2494,16 +2495,6 @@ void AppearancePage::MessageTagTab::slotEmitChangeCheck()
slotEmitChanged(); slotEmitChanged();
} }
void AppearancePage::MessageTagTab::slotValidationHook( const QKeySequence &newSeq )
{
//TODO also check against other unsaved tag shortcuts
if( !kmkernel->getKMMainWidget()->shortcutIsValid( newSeq, this ) )
mKeySequenceWidget->denyValidation();
else
slotEmitChangeCheck();
}
void AppearancePage::MessageTagTab::slotMoveTagUp() void AppearancePage::MessageTagTab::slotMoveTagUp()
{ {
int tmp_index = mTagListBox->currentRow(); int tmp_index = mTagListBox->currentRow();
@ -2571,6 +2562,7 @@ void AppearancePage::MessageTagTab::slotRecordTagSettings( int aIndex )
//Fourth row //Fourth row
tmp_desc->setIconName( mIconButton->icon() ); tmp_desc->setIconName( mIconButton->icon() );
//Fifth row //Fifth row
mKeySequenceWidget->applyStealShortcut();
tmp_desc->setShortcut( KShortcut(mKeySequenceWidget->keySequence()) ); tmp_desc->setShortcut( KShortcut(mKeySequenceWidget->keySequence()) );
//Sixth row //Sixth row
tmp_desc->setInToolbar( mInToolbarCheck->isChecked() ); tmp_desc->setInToolbar( mInToolbarCheck->isChecked() );

@ -622,9 +622,6 @@ private slots:
/*Transfers changes in the tag name edit box to the list box for tags. Private /*Transfers changes in the tag name edit box to the list box for tags. Private
since calling externally decouples the name in the list box from name edit box*/ since calling externally decouples the name in the list box from name edit box*/
void slotNameLineTextChanged( const QString & ); void slotNameLineTextChanged( const QString & );
/*Processes the shortcut button, OnurTodo is private needed? */
void slotValidationHook( const QKeySequence &newSeq );
private: private:
virtual void doLoadFromGlobalSettings(); virtual void doLoadFromGlobalSettings();

@ -81,8 +81,10 @@ CustomTemplates::CustomTemplates( QWidget *parent, const char *name )
connect( mType, SIGNAL( activated( int ) ), connect( mType, SIGNAL( activated( int ) ),
this, SLOT( slotTypeActivated( int ) ) ); this, SLOT( slotTypeActivated( int ) ) );
connect( mKeySequenceWidget, SIGNAL( validationHook( const QKeySequence& ) ), connect( mKeySequenceWidget, SIGNAL( keySequenceChanged( const QKeySequence& ) ),
this, SLOT( slotValidationHook( const QKeySequence& ) ) ); this, SLOT( slotShortcutChanged( const QKeySequence& ) ) );
mKeySequenceWidget->setCheckActionList(kmkernel->getKMMainWidget()->actionList());
mReplyPix = KIconLoader().loadIcon( "mail-reply-sender", KIconLoader::Small ); mReplyPix = KIconLoader().loadIcon( "mail-reply-sender", KIconLoader::Small );
mReplyAllPix = KIconLoader().loadIcon( "mail-reply-all", KIconLoader::Small ); mReplyAllPix = KIconLoader().loadIcon( "mail-reply-all", KIconLoader::Small );
@ -343,19 +345,16 @@ void CustomTemplates::slotTypeActivated( int index )
} }
} }
void CustomTemplates::slotValidationHook( const QKeySequence &newSeq ) void CustomTemplates::slotShortcutChanged( const QKeySequence &newSeq )
{ {
//TODO: check against other unsaved template shortcuts
if( !kmkernel->getKMMainWidget()->shortcutIsValid( newSeq, this ) )
mKeySequenceWidget->denyValidation();
else {
if ( mList->currentItem() ) if ( mList->currentItem() )
{
mItemList[ mList->currentItem()->text( 1 ) ]->mShortcut = mItemList[ mList->currentItem()->text( 1 ) ]->mShortcut =
KShortcut( newSeq ); KShortcut( newSeq );
mKeySequenceWidget->applyStealShortcut();
}
emit changed(); emit changed();
} }
}
#include "customtemplates.moc" #include "customtemplates.moc"

@ -59,7 +59,7 @@ class CustomTemplates : public QWidget, public Ui::CustomTemplatesBase
void slotRemoveClicked(); void slotRemoveClicked();
void slotListSelectionChanged(); void slotListSelectionChanged();
void slotTypeActivated( int index ); void slotTypeActivated( int index );
void slotValidationHook( const QKeySequence &newSeq ); void slotShortcutChanged( const QKeySequence &newSeq );
signals: signals:

@ -83,20 +83,16 @@ FolderShortcutDialog::FolderShortcutDialog( KMFolder *folder,
connect( this, SIGNAL( okClicked() ), SLOT( slotOk() ) ); connect( this, SIGNAL( okClicked() ), SLOT( slotOk() ) );
mKeySeqWidget->setKeySequence( folder->shortcut().primary(), mKeySeqWidget->setKeySequence( folder->shortcut().primary(),
KKeySequenceWidget::NoValidate ); KKeySequenceWidget::NoValidate );
mKeySeqWidget->setCheckActionList(mMainWidget->actionList());
} }
FolderShortcutDialog::~FolderShortcutDialog() FolderShortcutDialog::~FolderShortcutDialog()
{ {
} }
void FolderShortcutDialog::slotValidationHook( const QKeySequence &newSeq )
{
if( !mMainWidget->shortcutIsValid( newSeq, this ) )
mKeySeqWidget->denyValidation();
}
void FolderShortcutDialog::slotOk() void FolderShortcutDialog::slotOk()
{ {
mKeySeqWidget->applyStealShortcut();
mFolder->setShortcut( KShortcut(mKeySeqWidget->keySequence(), QKeySequence()) ); mFolder->setShortcut( KShortcut(mKeySeqWidget->keySequence(), QKeySequence()) );
} }

@ -58,7 +58,6 @@ public:
protected slots: protected slots:
void slotOk(); void slotOk();
void slotValidationHook( const QKeySequence &newSeq );
private: private:
KMFolder *mFolder; KMFolder *mFolder;

@ -80,5 +80,5 @@ Comment[uz]=Янги хат келди
Comment[x-test]=xxNew mail arrivedxx Comment[x-test]=xxNew mail arrivedxx
Sound= Sound=
Action=None Action=None
# None = 0, Sound = 1, Messagebox = 2, Logfile = 4, Stderr = 8, PassivePopup = 16, Execute = 32

@ -247,6 +247,7 @@ KMFilterDlg::KMFilterDlg(QWidget* parent, bool popFilter, bool createDummyFilter
mKeySeqWidget->setObjectName( "FilterShortcutSelector" ); mKeySeqWidget->setObjectName( "FilterShortcutSelector" );
gl->addWidget( mKeySeqWidget, 7, 3, 1, 1); gl->addWidget( mKeySeqWidget, 7, 3, 1, 1);
mKeySeqWidget->setEnabled( false ); mKeySeqWidget->setEnabled( false );
mKeySeqWidget->setCheckActionList(kmkernel->getKMMainWidget()->actionList());
mConfigureToolbar = new QCheckBox( i18n("Additionally add this filter to the toolbar"), mAdvOptsGroup ); mConfigureToolbar = new QCheckBox( i18n("Additionally add this filter to the toolbar"), mAdvOptsGroup );
gl->addWidget( mConfigureToolbar, 8, 0, 1, 4 ); gl->addWidget( mConfigureToolbar, 8, 0, 1, 4 );
mConfigureToolbar->setEnabled( false ); mConfigureToolbar->setEnabled( false );
@ -312,8 +313,8 @@ KMFilterDlg::KMFilterDlg(QWidget* parent, bool popFilter, bool createDummyFilter
connect( mConfigureShortcut, SIGNAL(toggled(bool)), connect( mConfigureShortcut, SIGNAL(toggled(bool)),
this, SLOT(slotConfigureShortcutButtonToggled(bool)) ); this, SLOT(slotConfigureShortcutButtonToggled(bool)) );
connect( mKeySeqWidget, SIGNAL( validationHook( const QKeySequence& ) ), connect( mKeySeqWidget, SIGNAL( keySequenceChanged( const QKeySequence& ) ),
this, SLOT( slotValidationHook( const QKeySequence& ) ) ); this, SLOT( slotShortcutChanged( const QKeySequence& ) ) );
connect( mConfigureToolbar, SIGNAL(toggled(bool)), connect( mConfigureToolbar, SIGNAL(toggled(bool)),
this, SLOT(slotConfigureToolbarButtonToggled(bool)) ); this, SLOT(slotConfigureToolbarButtonToggled(bool)) );
@ -527,16 +528,14 @@ void KMFilterDlg::slotConfigureShortcutButtonToggled( bool aChecked )
} }
} }
void KMFilterDlg::slotValidationHook( const QKeySequence &newSeq ) void KMFilterDlg::slotShortcutChanged( const QKeySequence &newSeq )
{ {
//TODO also check against other unsaved filter shortcuts
if( !kmkernel->getKMMainWidget()->shortcutIsValid( newSeq, this ) )
mKeySeqWidget->denyValidation();
else
if ( mFilter ) if ( mFilter )
{
mKeySeqWidget->applyStealShortcut();
mFilter->setShortcut( KShortcut( newSeq ) ); mFilter->setShortcut( KShortcut( newSeq ) );
} }
}
void KMFilterDlg::slotConfigureToolbarButtonToggled( bool aChecked ) void KMFilterDlg::slotConfigureToolbarButtonToggled( bool aChecked )
{ {

@ -364,7 +364,7 @@ protected slots:
void slotApplicableAccountsChanged(); void slotApplicableAccountsChanged();
void slotStopProcessingButtonToggled( bool aChecked ); void slotStopProcessingButtonToggled( bool aChecked );
void slotConfigureShortcutButtonToggled( bool aChecked ); void slotConfigureShortcutButtonToggled( bool aChecked );
void slotValidationHook( const QKeySequence &newSeq ); void slotShortcutChanged( const QKeySequence &newSeq );
void slotConfigureToolbarButtonToggled( bool aChecked ); void slotConfigureToolbarButtonToggled( bool aChecked );
void slotFilterActionIconChanged( const QString &icon ); void slotFilterActionIconChanged( const QString &icon );
void slotReset(); void slotReset();

@ -4175,24 +4175,9 @@ void KMMainWidget::initializeIMAPActions( bool setState /* false the first time,
factory->addClient( mGUIClient ); factory->addClient( mGUIClient );
} }
bool KMMainWidget::shortcutIsValid( const QKeySequence &sc, QWidget *parent ) const QList<QAction*> KMMainWidget::actionList()
{ {
//TODO: also check against global shortcuts return actionCollection()->actions();
QList<QAction*> actions = actionCollection()->actions();
foreach ( QAction *a, actions ) {
foreach ( QKeySequence otherSc, a->shortcuts() ) {
if ( sc == otherSc ) {
QString title( i18n( "Shortcut conflict" ) );
QString msg( i18n( "<qt>The selected shortcut is already used by the <b>%1</b> action.<br>"
"Please select a different one.</qt>",
a->text().remove('&') ) );
KMessageBox::sorry( parent, msg );
return false;
}
}
}
return true;
} }
void KMMainWidget::slotShortcutChanged( KMFolder *folder ) void KMMainWidget::slotShortcutChanged( KMFolder *folder )

@ -169,12 +169,9 @@ class KMAIL_EXPORT KMMainWidget : public QWidget
KMSystemTray *systray() const; KMSystemTray *systray() const;
/** /**
Checks a shortcut against the actioncollection and returns whether it Return the list of all action, in order to check shortcuts conflicts against them.
is already used and therefor not valid or not.
If the shortcut is not valid, a message box is displayed informing the user
that the shortcut is already in use.
*/ */
bool shortcutIsValid( const QKeySequence&, QWidget* ) const; QList<QAction*> actionList();
void modifyFolder( KMFolderTreeItem *folderItem ); void modifyFolder( KMFolderTreeItem *folderItem );

Loading…
Cancel
Save