diff --git a/kanjibrowser/kanjibrowserui.rc b/kanjibrowser/kanjibrowserui.rc --- a/kanjibrowser/kanjibrowserui.rc +++ b/kanjibrowser/kanjibrowserui.rc @@ -15,6 +15,7 @@ Main Toolbar + diff --git a/kanjibrowser/kanjibrowserview.h b/kanjibrowser/kanjibrowserview.h --- a/kanjibrowser/kanjibrowserview.h +++ b/kanjibrowser/kanjibrowserview.h @@ -116,6 +116,11 @@ */ void showKanjiInformation( const EntryKanjidic *kanji ); + /** + * Copies last selected kanji to clipboard + */ + void toClipboard(); + /** * Enumerations of our possible states in QStackedWidget. */ @@ -145,6 +150,10 @@ * We need to update this action's text from different functions. */ QAction *_goToKanjiInfo; + /** + * We need to update this action's text from different functions. + */ + QAction *_copyToClipboard; /** * Keep track of the current kanji being displayed in the Kanji Information page. */ diff --git a/kanjibrowser/kanjibrowserview.cpp b/kanjibrowser/kanjibrowserview.cpp --- a/kanjibrowser/kanjibrowserview.cpp +++ b/kanjibrowser/kanjibrowserview.cpp @@ -28,6 +28,7 @@ #include "kanjibrowserconfig.h" #include +#include #include #include #include @@ -214,6 +215,8 @@ } _goToKanjiInfo->setText( i18n( "About %1", item->text() ) ); + _copyToClipboard->setText( i18n( "Copy %1 to clipboard", item->text() ) ); + _copyToClipboard->setVisible( true ); Entry *result = _parent->_dictFileKanjidic->doSearch( DictQuery( item->text() ) )->first(); EntryKanjidic *kanji = static_cast( result ); @@ -246,6 +249,9 @@ _goToKanjiInfo = _parent->actionCollection()->addAction( QStringLiteral("kanji_info") ); _goToKanjiInfo->setText( i18n( "Kanji &Information" ) ); + _copyToClipboard = _parent->actionCollection()->addAction( QStringLiteral("copy_kanji_to_clipboard") ); + _copyToClipboard->setVisible(false); + _grades->addItem( i18n( "All Jouyou Kanji grades" ) ); foreach( const int &grade, kanjiGrades ) { @@ -273,6 +279,7 @@ connect(_kanjiList, &QListWidget::itemClicked, _goToKanjiInfo, &QAction::triggered); connect(goToKanjiList, &QAction::triggered, this, &KanjiBrowserView::changeToListPage); connect(_goToKanjiInfo, &QAction::triggered, this, &KanjiBrowserView::changeToInfoPage); + connect(_copyToClipboard, &QAction::triggered, this, &KanjiBrowserView::toClipboard); // Set the current grade (Grade 1). _grades->setCurrentIndex( 1 ); @@ -369,4 +376,10 @@ _kanjiInformation->setHtml( text ); } +void KanjiBrowserView::toClipboard() +{ + QClipboard *cb = QApplication::clipboard(); + cb->setText( _currentKanji->getWord(), QClipboard::Clipboard ); + cb->setText( _currentKanji->getWord(), QClipboard::Selection ); +}