Commit graph

185 commits

Author SHA1 Message Date
Igor Kushnir 9aa3c44d4e Add QMediaPlayer internal player back end (Qt5 only)
* add config and GUI support for internal player back end switching;
* make FFmpeg player disabling option consistent with other similar
  qmake options by using CONFIG;
* add a new qmake option that disables Qt Multimedia player. This is
  useful for GNU/Linux distributions where Qt WebKit and Qt Multimedia
  packages depend on different GStreamer versions and don't work
  correctly when combined in one application.

The existing FFmpeg+libao internal player back end has a relatively
low-level implementation, which is difficult to understand and improve.
There are at least 3 open internal player issues:
  1) many GNU/Linux users have to edit their libao configuration file to
     make Goldendict's internal player work (issue #412);
  2) libao's pulseaudio plugin does not support 32-bit audio, which
     means that many MediaWiki pronunciations don't work with the most
     popular GNU/Linux audio driver (issue #949);
  3) Ffmpeg::DecoderContext uses deprecated FFmpeg APIs, which causes
     compiler warnings and means that this internal player back end
     may not compile with a future FFmpeg library version (issue #978).

The Qt Multimedia back end implementation uses the highest-level
Qt audio API and is very simple.
This new back end works flawlessly on my GNU/Linux machine.
I'm not making it the default back end because I don't know how well
it will work on other platforms with different configurations.
2018-03-30 17:10:33 +03:00
Igor Kushnir 278e05cbf3 Run a single external audio player process at a time
External and internal audio players work similarly now. Fixes #950.

* inherit a new ExternalAudioPlayer class from AudioPlayerInterface;
* use an existing ExternalViewer class to implement ExternalAudioPlayer;
* take (const char *, int) instead of std::vector<char> in
  ExternalViewer constructor to fit into AudioPlayerInterface;
* extend ExternalViewer API to let ExternalAudioPlayer stop superseded
  audio player processes;
* make AudioPlayerInterface::play() return an error message string to
  allow reporting immediate failures from derived classes;
* Document AudioPlayerInterface API;
* Document AudioPlayerFactory::player();
* use the common audio interface exclusively in ArticleView.
2018-03-24 21:34:06 +02:00
Igor Kushnir e5045860ef Make adding new audio player implementations easy
* add a new interface class AudioPlayerInterface;
* inherit a new proxy class Ffmpeg::AudioPlayer from it;
* partially switch ArlticleView to using the interface;
* expose MainWindow's AudioPlayerInterface instance to all ArticleView
  instances;
* add a new AudioPlayerFactory class responsible for creating instances
  of concrete classes derived from AudioPlayerInterface depending on
  relevant Config::Preferences values;
* increase minimum supported Qt version from 4.5 to 4.6 in README
  in order to use QScopedPointer introduced in Qt 4.6.
2018-03-24 21:31:48 +02:00
Abs62 c204f75e52 Qt5: Use QRegularExpression instead of QRegExp in many cases 2018-02-22 16:55:56 +03:00
Abs62 46a4509101 Mac-specific: Update hunspell library to version 1.6.1 2017-07-05 18:19:40 +03:00
Abs62 bef2bf86c6 Update code for libhunspell 1.5+ 2017-07-05 17:58:43 +03:00
sunwxg ad8008c37b Add scan popup flag
After select a word, show a flag window, click the flag to show
popup window.
2017-06-05 21:15:38 +08:00
Abs62 1e34de2dbc Add "Favorites" feature 2017-05-12 17:41:08 +03:00
Abs62 eb78238f25 Add support for split zip files 2017-04-24 17:42:01 +03:00
Abs62 eba7f5578f Add support for GLS (Babylon source) format 2017-03-07 16:45:09 +03:00
Abs62 6386d1d70e Merge branch 'locale-fi' of https://github.com/sikmir/goldendict into Temp
# Conflicts:
#	goldendict.pro
#	goldendict.vcxproj
#	goldendict.vcxproj.filters
2016-11-24 07:52:42 +03:00
Nikolay Korotkiy bbcf5a16d2 Register Esperanto translation 2016-11-24 04:46:50 +03:00
Nikolay Korotkiy 340548544a Register Finnish translation 2016-11-24 04:39:46 +03:00
Abs62 526d9d1bf8 Mac-specific: Copy 64-bit OpenCC data into GoldenDict bundle by default (issue #694) 2016-05-02 14:11:56 +03:00
Abs62 b6622271b6 1. Bump version to 1.5.0-RC2
2. No more separate branch "qt4x5", all changes merged into "master" branch. Code may be compiled with both Qt 4.x and Qt 5.x versions.
2016-04-26 19:32:50 +03:00
Abs62 6f04427e8b Merge branch 'Original' into Qt4x5 2016-04-22 23:49:50 +03:00
Abs62 eb8428057f Mac-specific: Update project to copy OpenCC data files into GoldenDict bundle 2016-04-22 23:45:56 +03:00
Abs62 436edad84d Merge branch 'Original' into Qt4x5 2016-04-22 17:59:01 +03:00
Abs62 9a2855f39d Mac-specific: Add OpenCC library 2016-04-21 17:50:56 +03:00
Abs62 281d3b7e80 Win-specific: Fix build with Qt 5.6.0 and VS 2013 2016-04-14 19:09:21 +03:00
Abs62 5731349f06 Merge branch 'Original' into Qt4x5 2016-04-09 11:09:55 +03:00
Abs62 032f5c8337 Win-specific: Tune code for compilation with MS Visual Studio 2016-04-09 00:21:55 +03:00
Abs62 fcc2758eb3 Merge branch 'Original' into Qt4x5
Conflicts:
	goldendict.pro
2015-10-27 18:08:57 +03:00
Abs62 a67ed65a90 Add "chinese_conversion_support" key to project for Windows by default 2015-10-26 21:21:14 +03:00
Zhe Wang a1986254d2 ChineseConversion: conditional compilation and OpenCC exception handling 2015-10-26 09:38:22 +08:00
Zhe Wang 12f67a79a4 Support conversion between simplified and traditional Chinese characters 2015-10-20 00:00:35 +08:00
Abs62 e24de4d881 Merge branch 'Original' into Qt4x5
Conflicts:
	xdxf2html.cc
2015-10-14 18:23:46 +03:00
Zhe Wang a04917833c Remove dependency on libavutil 2015-10-11 23:01:24 +08:00
Abs62 1df1b3d5d5 Linux-specific: Fix compilation with Qt5 (issue #595) 2015-06-24 17:56:29 +03:00
Abs62 40de8fcdd1 Merge branch 'Original' into Qt4x5 2015-02-09 18:57:32 +03:00
Abs62 0912df7cb5 Add SLOB dictionaries support 2015-01-22 18:17:05 +03:00
Abs62 407bc7e4b0 Merge branch 'Original' into Qt4x5 2014-07-21 17:38:05 +04:00
Abs62 8e56dae5cd Mac-specific: Fix help installing for any build directory 2014-07-21 17:36:32 +04:00
Abs62 d4adf591a9 Adjust code for Qt5 2014-07-11 18:18:37 +04:00
Abs62 8cabcacf55 Merge branch 'Original' into Qt4x5
Conflicts:
	btreeidx.cc
	fulltextsearch.cc
	goldendict.pro
	main.cc
2014-07-11 18:17:43 +04:00
Abs62 d4c68d3c49 Add help system 2014-06-23 20:03:14 +04:00
Abs62 35433d9ea6 Merge branch 'Original' into Qt4x5 2014-05-27 17:59:50 +04:00
Abs62 08dd0423d9 Add Macedonian Translation by Vladimir Gerovski 2014-05-26 19:48:18 +04:00
Abs62 8b3a7a4f43 Epwing: Fix monochrome images, use unicode symbols instead of some extra symbol images 2014-05-22 22:16:10 +04:00
Abs62 d9169bd45b Add support for Epwing dictionaries 2014-05-20 17:59:56 +04:00
Abs62 273b1b5757 Merge branch 'Original' into Qt4x5
Conflicts:
	articleview.cc
	btreeidx.cc
2014-05-05 21:31:16 +04:00
Abs62 ceb04dbd6a DICT protocol support 2014-05-02 17:36:50 +04:00
Abs62 10532279b1 Merge branch 'Original' into Qt4x5
Conflicts:
	article_netmgr.cc
	mainwindow.cc
2014-04-23 18:16:06 +04:00
Abs62 9ad0d5f985 Implement full-text search 2014-04-16 20:18:28 +04:00
Abs62 4cf35cc7e3 Merge branch 'Original' into Qt4x5
Conflicts:
	hotkeywrapper.hh
	mainwindow.cc
	mainwindow.hh
2014-04-11 19:29:56 +04:00
Abs62 9623cbdd7a Add proxy authentication dialog 2014-04-03 18:21:02 +04:00
Abs62 59ebab589c Add Persian translation by Noori 2014-03-18 22:54:53 +04:00
Abs62 4bbe1aaee5 Merge branch 'Original' into Qt4x5
Conflicts:
	scanpopup.cc
2014-03-14 17:34:33 +04:00
Abs62 4a4bfade1d Show all headwords for selected dictionary 2014-02-28 16:36:28 +04:00
Abs62 0fa4087b38 Merge branch 'Original' into Qt4x5
Conflicts:
	goldendict.pro
	mainwindow.cc
	zim.cc
	zipsounds.cc
2014-02-11 23:39:31 +04:00