Commit Graph

275 Commits

Author SHA1 Message Date
John Preston ef64d9c188 Show round videos in Info layer. 2018-11-05 17:18:54 +04:00
John Preston 466444e17d Extract float player controller. 2018-11-05 15:16:09 +04:00
John Preston b420f5b41b Fix crash in round video playback. 2018-11-05 14:00:53 +04:00
John Preston 5192049194 Resume audio when call ends. 2018-11-04 15:51:39 +04:00
John Preston da358615e0 Generate high quality video thumbnail when loaded. 2018-11-04 15:51:38 +04:00
John Preston bf31722931 Show collage/slideshow as an album in MediaView. 2018-11-04 15:51:38 +04:00
John Preston 595134cab5 Move image-related modules to ui/image/. 2018-11-04 15:51:37 +04:00
John Preston 113f665295 Move Image and derived to ui/image. 2018-11-04 15:51:36 +04:00
John Preston 2812d2911f Remove media_volume icon, use volume slider. 2018-10-15 11:06:27 +03:00
John Preston 2e5a0e056c Move to std::optional. 2018-09-21 19:28:46 +03:00
John Preston 1ffbec0215 Finish animations disabling.
Replace some infinite animations with static layouts.
2018-09-20 21:26:10 +03:00
John Preston 0c8709ca5f Replace App::self() with Auth().user().
Always have self Auth().user() when AuthSession exists.
2018-09-19 19:22:13 +03:00
John Preston 069232ec1b Allow changing limits for cache in Settings. 2018-09-01 18:56:08 +03:00
John Preston 9147c12687 Add basic implementation of Storage::Cache DB. 2018-09-01 18:56:08 +03:00
John Preston 839885910c Pass FileOrigin in all file downloads. 2018-08-20 17:26:28 +03:00
John Preston fddc3d6ad9 Workaround MSVC 15.8 regressions. 2018-08-17 14:01:16 +03:00
John Preston 777bf7d8d9 Fix video seeking.
Regression was introduced in d0e854e9d8.

Each time you hide() a widget its mousePress state is reset and
mouseMoveEvent() / mouseReleaseEvent() handlers are never called.

So you can't toggle (hide + show) widgets that are mouse-pressed.

Fixes #4802.
2018-06-06 11:58:07 +03:00
John Preston a42fb1f7b7 Fix microphone sandbox access request.
Fixes #4783.
2018-06-04 18:39:20 +03:00
John Preston dd81f5d59f Replace base::lambda with shorter term.
base::lambda -> Fn (type alias for std::function).
base::lambda_once -> FnMut (type alias for base::unique_function).
base::lambda_guarded -> crl::guard.
base::lambda_call_type_t -> crl::deduced_call_type.
2018-06-04 18:38:27 +03:00
John Preston d0e854e9d8 Allow showing boxes in passport panel. 2018-06-03 23:16:35 +03:00
John Preston 1392e05ab1 Move all gsl::byte helpers to base/bytes module. 2018-06-03 23:16:34 +03:00
John Preston 5e7642b42a Support markdown and replaces in media captions. 2018-05-24 16:03:21 +03:00
John Preston 87d6081408 Version 1.2.16: Fix build in Xcode 9.3. 2018-04-07 12:47:08 +04:00
John Preston eb00641dfa Mark autoplayed voice/video messages as read. 2018-03-10 00:55:58 +03:00
John Preston 8bacc74d8b Request dialog list entries when needed.
Also save the original server-side int32 date in HistoryItems.
2018-02-08 12:20:54 +03:00
John Preston a47981054f Feed info profile placeholder. 2018-02-08 12:20:51 +03:00
John Preston 89941a8e83 Fix layout update notifications in Info::Media. 2018-02-08 12:20:50 +03:00
John Preston 861ab85ca1 Fix voice/video messages in chats/feed. 2018-02-08 12:20:50 +03:00
John Preston 91f369a0b3 Handle view resize/repaint requests for mainView. 2018-02-08 12:20:49 +03:00
John Preston 04c8c95634 Use notify* instead of mark* in Data::Session. 2018-02-08 12:20:49 +03:00
John Preston 8a56ede187 Move all (item/view/media) maps to Data::Session. 2018-02-08 12:20:49 +03:00
John Preston 7425e80f05 Use HistoryMedia as view, add Data::Media. 2018-02-08 12:20:48 +03:00
John Preston 97a9089ebf Move draw / getState code to HistoryView::Message.
Item dimensions broken for now.
Also remove history.h from pch.
2018-02-08 12:20:48 +03:00
John Preston bee474f6e9 Remove history_item and layout from pch.
Also move some code to separate modules.
Also create history item views by Window::Controller.
2018-02-08 12:20:47 +03:00
John Preston 794e31505b First version of feed section view. 2018-02-08 12:20:46 +03:00
John Preston 6a9556d42c Move non-settings session data to Data::Session.
Rename AuthSessionData to AuthSessionSettings, move data away.
2018-02-08 12:20:46 +03:00
John Preston ea7441ae77 Use single LEGAL file with license and copyright. 2018-01-03 13:23:14 +03:00
John Preston e89350d4b7 Reuse resample code from FFMpegLoader for video.
AbstractAudioFFMpegLoader used in FFMpegLoader and ChildFFMpegLoader.
2018-01-02 20:22:13 +03:00
John Preston 95399bef2b Improve swresample library usage.
It looks like different AVFrame-s can have different audio encoding
parameters, so now we setup/re-setup swr context using parameters
from current audio frame. Hopefully it will fix some audio crashes.
2018-01-02 19:18:53 +03:00
John Preston af552fb4c0 Replace base/task_queue with crl. 2017-12-31 00:28:38 +03:00
John Preston ea51f976f2 Alpha version 1.2.5: Workaround GCC 7.2 ICE. 2017-12-29 21:47:49 +03:00
John Preston 2a409e3734 Add files from clipboard to composed album.
Fixes #4243.
2017-12-29 20:02:23 +03:00
John Preston 0171a4e874 Handle click on group thumb item in MediaView. 2017-12-29 17:58:53 +03:00
John Preston 2bcbb5a5be Display group / userpic thumbnails in MediaView. 2017-12-29 16:44:36 +03:00
John Preston 5b4694a4eb Move text options constant to a separate module.
Also start MediaView group thumbs code.
2017-12-28 16:06:06 +03:00
John Preston 2569df9e5a Rename some Ui methods.
myEnsureResized -> Ui::SendPendingMoveResizeEvents.
myGrab -> Ui::GrabWidget.
myGrabImage -> Ui::GrabWidgetToImage.
2017-12-26 19:20:08 +03:00
John Preston 8e45b09083 Use different indentation for rpl operators.
It works better with Visual Studio IDE.
2017-12-26 19:20:07 +03:00
John Preston 3b3a705a67 First working code for sending albums. 2017-12-26 19:20:06 +03:00
John Preston e023092744 Use RectPart(s) instead of ImageRoundCorner(s). 2017-12-18 21:54:11 +04:00
John Preston 574f4a73cb Add some checks to video sound stream decoding. 2017-12-12 18:56:37 +04:00
John Preston 97c15865a5 Move some code around.
Move logs:SignalHandlers to core/crash_reports:CrashReports.
Move all pre-launch windows to core/crash_report_window module.
Move some global code to core/launcher:Launcher.
It should replace settings / platform_specific module in some way.
2017-12-12 16:47:32 +04:00
John Preston 8b69e6ab99 Rename some methods in DocumentData.
Also fix voice message mark as read when autoplaying after previous.
Also show play icon and don't show playlist for audio files that do
not have shared music files attributes but have audio file mime type.
2017-12-10 14:28:04 +04:00
John Preston 4ef3de5287 Always specify seek position in TimeMs.
This way it won't rely on the sample rate of the audio file.

Fixes #4139.
2017-12-10 12:52:38 +04:00
John Preston 5a7d8bcffb Add audio playlist using Info::Media::ListWidget. 2017-12-09 19:13:06 +04:00
John Preston 4e2c8bbc26 Use SharedMediaMergedViewer() for audio player.
That way audio files and voice/video messages will play in context
(one after another with ability to go to next or previous in player)
almost always, no matter at what part of message history we are.
2017-12-09 14:02:51 +04:00
John Preston 9bbcbd4bb3 Remove all legacy media overview code. 2017-12-08 22:34:26 +04:00
John Preston e273695cc9 Fix planar audio playback (for example .flac).
Also add some more crash information logging.

Fixes #4120.
2017-12-08 12:57:43 +04:00
John Preston a495de7cf8 Ask OpenAL to use kDefaultFrequency (48 kHz). 2017-12-02 13:27:32 +04:00
John Preston 2161858088 Fail resampling audio with inconsistent frames. 2017-12-02 12:58:52 +04:00
John Preston 13ab055fe0 Add debug information about crash in ffmpeg. 2017-11-30 15:41:15 +04:00
John Preston f1f955b7ac Pass already-members when adding members to channel. 2017-11-19 18:41:52 +04:00
John Preston aec496d520 Remove RTL Override symbols from filenames. 2017-11-16 07:59:09 +04:00
John Preston 54cc3e6315 Shared media multiple items selection. 2017-11-16 07:59:07 +04:00
John Preston 65cc4d3fbc Support item repaint in Info media overview. 2017-11-16 07:59:06 +04:00
John Preston d1687ab963 Improve info wrapping in section / layer.
Also move layerwidget to window/layer_widget.
Also replace ui/effects/widget_fade_wrap with ui/wrap/fade_wrap.
2017-11-16 07:59:05 +04:00
John Preston ffc20e4492 Divide structs into several data/ modules. 2017-11-16 07:59:04 +04:00
John Preston c302219f9e Use rpl in some widgets and effects. 2017-11-16 07:59:02 +04:00
John Preston 1c8db1e2e9 Fix travis build for the latest ffmpeg code. 2017-11-13 13:55:11 +04:00
John Preston 48e2a5472e Return not_null<History*> in App::history(). 2017-09-03 15:45:43 +03:00
John Preston 25ffaaaa2d Replace t_assert() with Assert().
Also use this assertions for Expects(), Ensures() and Unexpected().
2017-08-30 19:15:42 +03:00
John Preston b3da99c302 Replace gsl::not_null<T*> with just not_null<T*>. 2017-08-30 19:15:41 +03:00
John Preston f2801d4775 Fix possible crash in file download after error.
Regression was introduced in 2fa2fa41c5.

In file download failed handler we suggest to try to load the file
once again to the same location. After some changes we started to
forget filename before failed handler. That resulted in large files
loading to memory instead of hard drive.

Add a precondition in FileLoader to prevent such bugs in the future.
2017-08-30 19:15:34 +03:00
John Preston 012d59ab42 Use nullptr instead of std::unique_ptr<Type>(). 2017-08-30 19:15:25 +03:00
John Preston e209737b1a Display and follow unread mentions in history. 2017-08-30 19:15:13 +03:00
John Preston ab35829358 Remove App::app(), App::uploader(), App::api().
Also use Auth() instead of AuthSession::Current*().
2017-08-25 14:39:18 +03:00
John Preston 96a2af842f Remove glitch with video messages floating player. 2017-08-01 21:14:44 +03:00
John Preston 0402b4f5f4 Add X / V vector icon to checkbox Toggle view.
Also use them in the admin rights / restrictions boxes.
2017-07-09 18:06:27 +03:00
John Preston da0d78135d Some refactoring in working with text entities.
Also move this code to TextUtilities namespace.
2017-07-06 14:37:42 +03:00
John Preston 3b864d63b9 Fix crash in audio player destructor. 2017-06-30 09:21:44 +03:00
John Preston cedf8a65e7 Better channel log entry layout inside messages.
Also move HistoryService class to a separate module.
2017-06-30 09:21:42 +03:00
John Preston e39b95175b Handle channel event log mouse events. 2017-06-30 09:21:42 +03:00
John Preston 110e7c8074 Finalize rename / move. 2017-06-29 11:39:38 +03:00
John Preston 66662e02a6 Fix crash in video player seeking.
Regression was introduced in 87ff770020.

Seek handler may destroy controller so first the playback is updated.
2017-05-31 11:58:43 +03:00
John Preston 6148b78745 Read after AVERROR_INVALIDDATA in video sound.
Partially reverse c1c3e4af5b that stopped on error in such cases.
2017-05-26 17:18:58 +03:00
John Preston 10e34aa996 Fix a crash in round videos with a message text. 2017-05-26 15:20:11 +03:00
John Preston e0978f86d1 Alpha 1.1.3: Fix some render in macOS. 2017-05-24 17:36:58 +03:00
John Preston 25587d7e8e Replace different side enums with RectPart.
Including Ui::Shadow::Side, App::RectPart and ImportantTooltip::Side.
2017-05-24 16:25:20 +03:00
John Preston c91e29d15d Improve floating player show / hide animations.
Also replace Window::Corner with a generic RectPart enumeration.
2017-05-24 16:25:20 +03:00
John Preston ee6d80673a Snap floating player to column and corner. 2017-05-24 16:25:17 +03:00
John Preston 8f290451b6 Handle mouse clicks in floating player widget. 2017-05-24 16:25:16 +03:00
John Preston c58a48276f Hide floating player if video message is visible. 2017-05-24 16:25:15 +03:00
John Preston b7550f63c9 Add a floating player for round video messages. 2017-05-24 16:25:15 +03:00
John Preston 0bfff65306 Add an animated scroll to current media message. 2017-05-24 16:25:14 +03:00
John Preston 9332032839 Click on media player goes to voice/video message. 2017-05-24 16:25:12 +03:00
John Preston 7873cb4373 Using media player for voice / video messages.
Media::Player::Widget displays the current voice / video message
if it is played and the current song otherwise.

It is created when a voice / video message starts and is destroyed
when all the voice / video messages in the playlist are finished.
2017-05-24 16:25:12 +03:00
John Preston 611a3e2f8a Handle voice playlist in Media::Player::Instance.
This allows video and voice messages to autoplay one after another.
2017-05-24 16:25:09 +03:00
John Preston b9119e5ef6 Play video messages as Type::Voice.
Use AudioMsgId instead of videoPlayId.
Any audio track now can be a child loader track of some video clip.
Use Type::Voice instead of Type::Video for round video messages.
Video messages play / pause / resume the same way as voice messages.
2017-05-24 16:25:09 +03:00
John Preston 5915f3f928 Display radial playback progress in round videos. 2017-05-24 16:25:07 +03:00
John Preston 87ff770020 Make Media::Clip::Playback independent of slider.
Now animation of the playback progress is processed inside the
Media::Clip::Playback and the sliders just hold plain float64 value.
2017-05-24 16:25:06 +03:00
John Preston 565b56fb5f Pause all media if a call is created.
Pause video, voice messages, songs and stop video messages.
2017-05-12 20:44:18 +03:00