mirror of
https://github.com/xiaoyifang/goldendict-ng.git
synced 2024-11-27 23:34:06 +00:00
Remove item from Favorites if one already exist while click on star button in main window
This commit is contained in:
parent
f0e92940d4
commit
a2dc6d96b6
|
@ -254,6 +254,11 @@ void FavoritesPaneWidget::addHeadword( QString const & path, QString const & hea
|
||||||
m_favoritesModel->addNewHeadword( path, headword );
|
m_favoritesModel->addNewHeadword( path, headword );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool FavoritesPaneWidget::removeHeadword( QString const & path, QString const & headword )
|
||||||
|
{
|
||||||
|
return m_favoritesModel->removeHeadword( path, headword );
|
||||||
|
}
|
||||||
|
|
||||||
bool FavoritesPaneWidget::isHeadwordPresent( const QString & path, const QString & headword )
|
bool FavoritesPaneWidget::isHeadwordPresent( const QString & path, const QString & headword )
|
||||||
{
|
{
|
||||||
return m_favoritesModel->isHeadwordPresent( path, headword );
|
return m_favoritesModel->isHeadwordPresent( path, headword );
|
||||||
|
@ -978,11 +983,41 @@ bool FavoritesModel::addNewHeadword( const QString & path, const QString & headw
|
||||||
return addHeadword( headword, parentIdx );
|
return addHeadword( headword, parentIdx );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool FavoritesModel::removeHeadword( const QString & path, const QString & headword )
|
||||||
|
{
|
||||||
|
QModelIndex idx;
|
||||||
|
|
||||||
|
// Find target folder
|
||||||
|
|
||||||
|
QStringList folders = path.split( "/", QString::SkipEmptyParts );
|
||||||
|
QStringList::const_iterator it = folders.begin();
|
||||||
|
for( ; it != folders.end(); ++it )
|
||||||
|
{
|
||||||
|
idx = findItemInFolder( *it, TreeItem::Folder, idx );
|
||||||
|
if( !idx.isValid() )
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( path.isEmpty() || idx.isValid() )
|
||||||
|
{
|
||||||
|
idx = findItemInFolder( headword, TreeItem::Word, idx );
|
||||||
|
if( idx.isValid() )
|
||||||
|
{
|
||||||
|
QModelIndexList list;
|
||||||
|
list.append( idx );
|
||||||
|
removeItemsForIndexes( list );
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
bool FavoritesModel::isHeadwordPresent( const QString & path, const QString & headword )
|
bool FavoritesModel::isHeadwordPresent( const QString & path, const QString & headword )
|
||||||
{
|
{
|
||||||
QModelIndex idx;
|
QModelIndex idx;
|
||||||
|
|
||||||
// Find or create target folder
|
// Find target folder
|
||||||
|
|
||||||
QStringList folders = path.split( "/", QString::SkipEmptyParts );
|
QStringList folders = path.split( "/", QString::SkipEmptyParts );
|
||||||
QStringList::const_iterator it = folders.begin();
|
QStringList::const_iterator it = folders.begin();
|
||||||
|
|
|
@ -40,6 +40,8 @@ public:
|
||||||
|
|
||||||
void addHeadword( QString const & path, QString const & headword );
|
void addHeadword( QString const & path, QString const & headword );
|
||||||
|
|
||||||
|
bool removeHeadword( QString const & path, QString const & headword );
|
||||||
|
|
||||||
// Export/import Favorites
|
// Export/import Favorites
|
||||||
void getDataInXml( QByteArray & dataStr );
|
void getDataInXml( QByteArray & dataStr );
|
||||||
void getDataInPlainText( QString & dataStr );
|
void getDataInPlainText( QString & dataStr );
|
||||||
|
@ -195,6 +197,10 @@ public:
|
||||||
// return false if it already exists there
|
// return false if it already exists there
|
||||||
bool addNewHeadword( QString const & path, QString const & headword );
|
bool addNewHeadword( QString const & path, QString const & headword );
|
||||||
|
|
||||||
|
// Remove headword from given folder
|
||||||
|
// return false if failed
|
||||||
|
bool removeHeadword( QString const & path, QString const & headword );
|
||||||
|
|
||||||
// Return true if headwors is already presented in Favorites
|
// Return true if headwors is already presented in Favorites
|
||||||
bool isHeadwordPresent( QString const & path, QString const & headword );
|
bool isHeadwordPresent( QString const & path, QString const & headword );
|
||||||
|
|
||||||
|
|
|
@ -246,7 +246,7 @@ MainWindow::MainWindow( Config::Class & cfg_ ):
|
||||||
addToFavorites = navToolbar->addAction( starIcon, tr( "Add current tab to Favorites" ) );
|
addToFavorites = navToolbar->addAction( starIcon, tr( "Add current tab to Favorites" ) );
|
||||||
navToolbar->widgetForAction( addToFavorites )->setObjectName( "addToFavoritesButton" );
|
navToolbar->widgetForAction( addToFavorites )->setObjectName( "addToFavoritesButton" );
|
||||||
|
|
||||||
connect( addToFavorites, SIGNAL( triggered() ), this, SLOT( addCurrentTabToFavorites() ) );
|
connect( addToFavorites, SIGNAL( triggered() ), this, SLOT( handleAddToFavoritesButton() ) );
|
||||||
connect( ui.actionAddToFavorites, SIGNAL( triggered() ), this, SLOT( addCurrentTabToFavorites() ) );
|
connect( ui.actionAddToFavorites, SIGNAL( triggered() ), this, SLOT( addCurrentTabToFavorites() ) );
|
||||||
|
|
||||||
beforeOptionsSeparator = navToolbar->addSeparator();
|
beforeOptionsSeparator = navToolbar->addSeparator();
|
||||||
|
@ -1725,7 +1725,16 @@ void MainWindow::titleChanged( ArticleView * view, QString const & title )
|
||||||
ui.tabWidget->setTabText( ui.tabWidget->indexOf( view ), escaped );
|
ui.tabWidget->setTabText( ui.tabWidget->indexOf( view ), escaped );
|
||||||
|
|
||||||
// Set icon for "Add to Favorites" action
|
// Set icon for "Add to Favorites" action
|
||||||
addToFavorites->setIcon( isWordPresentedInFavorites( title, cfg.lastMainGroupId ) ? blueStarIcon : starIcon );
|
if( isWordPresentedInFavorites( title, cfg.lastMainGroupId ) )
|
||||||
|
{
|
||||||
|
addToFavorites->setIcon( blueStarIcon );
|
||||||
|
addToFavorites->setToolTip( tr( "Remove current tab from Favorites" ) );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
addToFavorites->setIcon( starIcon );
|
||||||
|
addToFavorites->setToolTip( tr( "Add current tab to Favorites" ) );
|
||||||
|
}
|
||||||
|
|
||||||
updateWindowTitle();
|
updateWindowTitle();
|
||||||
}
|
}
|
||||||
|
@ -1794,7 +1803,16 @@ void MainWindow::tabSwitched( int )
|
||||||
|
|
||||||
// Set icon for "Add to Favorites" action
|
// Set icon for "Add to Favorites" action
|
||||||
QString headword = ui.tabWidget->tabText( ui.tabWidget->currentIndex() );
|
QString headword = ui.tabWidget->tabText( ui.tabWidget->currentIndex() );
|
||||||
addToFavorites->setIcon( isWordPresentedInFavorites( unescapeTabHeader( headword ), cfg.lastMainGroupId ) ? blueStarIcon : starIcon );
|
if( isWordPresentedInFavorites( unescapeTabHeader( headword ), cfg.lastMainGroupId ) )
|
||||||
|
{
|
||||||
|
addToFavorites->setIcon( blueStarIcon );
|
||||||
|
addToFavorites->setToolTip( tr( "Remove current tab from Favorites" ) );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
addToFavorites->setIcon( starIcon );
|
||||||
|
addToFavorites->setToolTip( tr( "Add current tab to Favorites" ) );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::tabMenuRequested(QPoint pos)
|
void MainWindow::tabMenuRequested(QPoint pos)
|
||||||
|
@ -4497,6 +4515,36 @@ void MainWindow::addCurrentTabToFavorites()
|
||||||
ui.favoritesPaneWidget->addHeadword( folder, unescapeTabHeader( headword ) );
|
ui.favoritesPaneWidget->addHeadword( folder, unescapeTabHeader( headword ) );
|
||||||
|
|
||||||
addToFavorites->setIcon( blueStarIcon );
|
addToFavorites->setIcon( blueStarIcon );
|
||||||
|
addToFavorites->setToolTip( tr( "Remove current tab from Favorites" ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::handleAddToFavoritesButton()
|
||||||
|
{
|
||||||
|
QString folder;
|
||||||
|
Instances::Group const * igrp = groupInstances.findGroup( cfg.lastMainGroupId );
|
||||||
|
if( igrp )
|
||||||
|
folder = igrp->favoritesFolder;
|
||||||
|
QString headword = unescapeTabHeader( ui.tabWidget->tabText( ui.tabWidget->currentIndex() ) );
|
||||||
|
|
||||||
|
if( ui.favoritesPaneWidget->isHeadwordPresent( folder, headword ) )
|
||||||
|
{
|
||||||
|
QMessageBox mb( QMessageBox::Question, "GoldenDict", tr( "Remove headword \"%1\" from Favorites?" ).arg( headword ),
|
||||||
|
QMessageBox::Yes | QMessageBox::No, this );
|
||||||
|
if( mb.exec() == QMessageBox::Yes )
|
||||||
|
{
|
||||||
|
if( ui.favoritesPaneWidget->removeHeadword( folder, headword ) )
|
||||||
|
{
|
||||||
|
addToFavorites->setIcon( starIcon );
|
||||||
|
addToFavorites->setToolTip( tr( "Add current tab to Favorites" ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ui.favoritesPaneWidget->addHeadword( folder, headword );
|
||||||
|
addToFavorites->setIcon( blueStarIcon );
|
||||||
|
addToFavorites->setToolTip( tr( "Remove current tab from Favorites" ) );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::addWordToFavorites( QString const & word, unsigned groupId )
|
void MainWindow::addWordToFavorites( QString const & word, unsigned groupId )
|
||||||
|
@ -4522,6 +4570,7 @@ void MainWindow::addAllTabsToFavorites()
|
||||||
ui.favoritesPaneWidget->addHeadword( folder, unescapeTabHeader( headword ) );
|
ui.favoritesPaneWidget->addHeadword( folder, unescapeTabHeader( headword ) );
|
||||||
}
|
}
|
||||||
addToFavorites->setIcon( blueStarIcon );
|
addToFavorites->setIcon( blueStarIcon );
|
||||||
|
addToFavorites->setToolTip( tr( "Remove current tab from Favorites" ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MainWindow::isWordPresentedInFavorites( QString const & word, unsigned groupId )
|
bool MainWindow::isWordPresentedInFavorites( QString const & word, unsigned groupId )
|
||||||
|
|
|
@ -283,6 +283,8 @@ private slots:
|
||||||
|
|
||||||
void showFTSIndexingName( QString const & name );
|
void showFTSIndexingName( QString const & name );
|
||||||
|
|
||||||
|
void handleAddToFavoritesButton();
|
||||||
|
|
||||||
void addCurrentTabToFavorites();
|
void addCurrentTabToFavorites();
|
||||||
|
|
||||||
void addAllTabsToFavorites();
|
void addAllTabsToFavorites();
|
||||||
|
|
Loading…
Reference in a new issue