mirror of
https://github.com/xiaoyifang/goldendict-ng.git
synced 2024-11-27 15:24:05 +00:00
refactor: simplify MainWindow::showDictionaryHeadwords
* merge two methods into one
This commit is contained in:
parent
2f4db6c34f
commit
86f1aeceb6
|
@ -177,10 +177,15 @@ void DictionaryBar::showContextMenu( QContextMenuEvent * event, bool extended )
|
|||
return;
|
||||
}
|
||||
|
||||
if( result && result == headwordsAction )
|
||||
{
|
||||
QString id = dictAction->data().toString();
|
||||
emit showDictionaryHeadwords( id );
|
||||
if ( result && result == headwordsAction ) {
|
||||
std::string id = dictAction->data().toString().toStdString();
|
||||
// TODO: use `Dictionary::class*` instead of `QString id` at action->setData to remove all similar `for` loops
|
||||
for ( const auto & dict : allDictionaries ) {
|
||||
if ( id == dict->getId() ) {
|
||||
emit showDictionaryHeadwords( dict.get() );
|
||||
break;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@ signals:
|
|||
void showDictionaryInfo( QString const & id );
|
||||
|
||||
/// Signal for show dictionary headwords command from context menu
|
||||
void showDictionaryHeadwords( QString const & id );
|
||||
void showDictionaryHeadwords( Dictionary::Class * dict );
|
||||
|
||||
/// Signal for open dictionary folder from context menu
|
||||
void openDictionaryFolder( QString const & id );
|
||||
|
|
|
@ -62,7 +62,7 @@ signals:
|
|||
|
||||
void showDictionaryInfo( QString const & dictId );
|
||||
|
||||
void showDictionaryHeadwords( QString const & dictId );
|
||||
void showDictionaryHeadwords( Dictionary::Class * dict );
|
||||
|
||||
private:
|
||||
|
||||
|
|
|
@ -544,10 +544,7 @@ MainWindow::MainWindow( Config::Class & cfg_ ):
|
|||
|
||||
connect( &dictionaryBar, &DictionaryBar::showDictionaryInfo, this, &MainWindow::showDictionaryInfo );
|
||||
|
||||
connect( &dictionaryBar,
|
||||
SIGNAL( showDictionaryHeadwords( QString const & ) ),
|
||||
this,
|
||||
SLOT( showDictionaryHeadwords( QString const & ) ) );
|
||||
connect( &dictionaryBar,&DictionaryBar::showDictionaryHeadwords,this,&MainWindow::showDictionaryHeadwords);
|
||||
|
||||
connect( &dictionaryBar, &DictionaryBar::openDictionaryFolder, this, &MainWindow::openDictionaryFolder );
|
||||
|
||||
|
@ -2083,10 +2080,7 @@ void MainWindow::editDictionaries( unsigned editDictionaryGroup )
|
|||
|
||||
connect( &dicts, &EditDictionaries::showDictionaryInfo, this, &MainWindow::showDictionaryInfo );
|
||||
|
||||
connect( &dicts,
|
||||
SIGNAL( showDictionaryHeadwords( QString const & ) ),
|
||||
this,
|
||||
SLOT( showDictionaryHeadwords( QString const & ) ) );
|
||||
connect( &dicts, &EditDictionaries::showDictionaryHeadwords,this, &MainWindow::showDictionaryHeadwords);
|
||||
|
||||
if ( editDictionaryGroup != Instances::Group::NoGroupId )
|
||||
dicts.editGroup( editDictionaryGroup );
|
||||
|
@ -4199,7 +4193,7 @@ void MainWindow::showDictionaryInfo( const QString & id )
|
|||
}
|
||||
else if( result == DictInfo::SHOW_HEADWORDS )
|
||||
{
|
||||
showDictionaryHeadwords( owner, dictionaries[x].get() );
|
||||
showDictionaryHeadwords( dictionaries[x].get() );
|
||||
}
|
||||
|
||||
break;
|
||||
|
@ -4207,49 +4201,37 @@ void MainWindow::showDictionaryInfo( const QString & id )
|
|||
}
|
||||
}
|
||||
|
||||
void MainWindow::showDictionaryHeadwords( const QString & id )
|
||||
void MainWindow::showDictionaryHeadwords( Dictionary::Class * dict )
|
||||
{
|
||||
QWidget * owner = 0;
|
||||
|
||||
if( sender()->objectName().compare( "EditDictionaries" ) == 0 )
|
||||
owner = qobject_cast< QWidget * >( sender() );
|
||||
QWidget * owner = qobject_cast< QWidget * >( sender() );
|
||||
|
||||
if( owner == 0 )
|
||||
owner = this;
|
||||
// DictHeadwords internally check parent== mainwindow to know why it is requested.
|
||||
// If the DictHeadwords is requested by Edit->Dictionaries->ShowHeadWords, (owner = "EditDictionaries")
|
||||
// it will be a modal dialog. When click a word, that word will NOT be queried.
|
||||
// In all other cases, just set owner = mainwindow(this),
|
||||
|
||||
for( unsigned x = 0; x < dictionaries.size(); x++ )
|
||||
{
|
||||
if( dictionaries[ x ]->getId() == id.toUtf8().data() )
|
||||
{
|
||||
showDictionaryHeadwords( owner, dictionaries[ x ].get() );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::showDictionaryHeadwords( QWidget * owner, Dictionary::Class * dict )
|
||||
{
|
||||
if( owner && owner != this )
|
||||
{
|
||||
if ( owner->objectName() == "EditDictionaries" ) {
|
||||
DictHeadwords headwords( owner, cfg, dict );
|
||||
headwords.exec();
|
||||
return;
|
||||
}
|
||||
|
||||
if( headwordsDlg == 0 )
|
||||
{
|
||||
headwordsDlg = new DictHeadwords( this, cfg, dict );
|
||||
addGlobalActionsToDialog( headwordsDlg );
|
||||
addGroupComboBoxActionsToDialog( headwordsDlg, groupList );
|
||||
connect( headwordsDlg, &DictHeadwords::headwordSelected, this, &MainWindow::headwordReceived );
|
||||
connect( headwordsDlg, &DictHeadwords::closeDialog, this, &MainWindow::closeHeadwordsDialog, Qt::QueuedConnection );
|
||||
else {
|
||||
if ( headwordsDlg == nullptr ) {
|
||||
headwordsDlg = new DictHeadwords( this, cfg, dict );
|
||||
addGlobalActionsToDialog( headwordsDlg );
|
||||
addGroupComboBoxActionsToDialog( headwordsDlg, groupList );
|
||||
connect( headwordsDlg, &DictHeadwords::headwordSelected, this, &MainWindow::headwordReceived );
|
||||
connect( headwordsDlg, &DictHeadwords::closeDialog,
|
||||
this, &MainWindow::closeHeadwordsDialog, Qt::QueuedConnection );
|
||||
}
|
||||
else{
|
||||
headwordsDlg->setup( dict );
|
||||
}
|
||||
headwordsDlg->show();
|
||||
}
|
||||
else
|
||||
headwordsDlg->setup( dict );
|
||||
|
||||
headwordsDlg->show();
|
||||
}
|
||||
|
||||
|
||||
void MainWindow::closeHeadwordsDialog()
|
||||
{
|
||||
if( headwordsDlg )
|
||||
|
@ -4376,7 +4358,7 @@ void MainWindow::foundDictsContextMenuRequested( const QPoint &pos )
|
|||
{
|
||||
if ( scanPopup )
|
||||
scanPopup->blockSignals( true );
|
||||
showDictionaryHeadwords( this, pDict );
|
||||
showDictionaryHeadwords( pDict );
|
||||
if ( scanPopup )
|
||||
scanPopup->blockSignals( false );
|
||||
}
|
||||
|
|
|
@ -252,8 +252,6 @@ private:
|
|||
|
||||
void fillWordListFromHistory();
|
||||
|
||||
void showDictionaryHeadwords( QWidget * owner, Dictionary::Class * dict );
|
||||
|
||||
QString unescapeTabHeader( QString const & header );
|
||||
|
||||
void respondToTranslationRequest( Config::InputPhrase const & phrase,
|
||||
|
@ -294,7 +292,7 @@ private slots:
|
|||
|
||||
void showDictionaryInfo( QString const & id );
|
||||
|
||||
void showDictionaryHeadwords( QString const & id );
|
||||
void showDictionaryHeadwords( Dictionary::Class * dict );
|
||||
|
||||
void openDictionaryFolder( QString const & id );
|
||||
|
||||
|
|
|
@ -279,7 +279,7 @@ void OrderAndProps::contextMenuRequested( const QPoint & pos )
|
|||
|
||||
if( result && result == showHeadwordsAction )
|
||||
{
|
||||
emit showDictionaryHeadwords( QString::fromUtf8( dict->getId().c_str() ) );
|
||||
emit showDictionaryHeadwords( dict.get() );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@ private:
|
|||
void describeDictionary( DictListWidget *, QModelIndex const & );
|
||||
|
||||
signals:
|
||||
void showDictionaryHeadwords( QString const & dictId );
|
||||
void showDictionaryHeadwords( Dictionary::Class * dict );
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue