History log of /haiku/src/apps/mediaplayer/MainWin.h
Revision Date Author Comments
# 15305513 03-Nov-2023 Humdinger <humdinger@mailbox.org>

Add "Reset rating" menu item to MediaPlayer and ShowImage

Doesn't remove the rating BFS attribute from the file, just sets it to "0".

ShowImage: Move "Ratings" menu into a new "Attributes" menu, similar to
MediaPlayer.

Change-Id: I831166d88be9d18f1d302a423aa43929b7a1b255
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7092
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>


# 60ead048 27-Jul-2021 JackBurton79 <stefano.ceccherini@gmail.com>

MediaPlayer: close() cd/dvd device after eject.

We were not closing cd/dvd device after eject.
Also changed fDevice member to a local variable, since we only use it in one place.

Change-Id: I169da97501f98e30deded1f5ff53d3bc00459eab
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4247
Reviewed-by: Axel Dörfler <axeld@pinc-software.de>


# 31acddc0 08-Jan-2020 Zotyamester <szatmary.zoltan1222@gmail.com>

MediaPlayer: add eject button

Fixes #11492

Change-Id: I06631ddcef354f4cf8a10e8ccbb6eba03c1ca7dd


# 3065fd47 13-Dec-2017 Alexander von Gluck IV <kallisti5@unixzen.com>

MediaPlayer: Relicense to MIT

* The GPL license here was a relic from the past to help
control YellowTab's use of Haiku source code. The intent
at the time was to relicense MIT. Some GPL parts remained.
* This is going to get harder and harder to correct over time.
* This code makes Haiku *not* MIT. Lets correct that.
* I reached out to everyone who made changes to these files and
got personal approvals to relicense MIT.
* If I missed somebody, *and* you feel as though the MIT license
doesn't meet your needs, please contact Haiku, Inc. and we will
work to revert your changes.

Marcus Overhagen EMAIL - MIT OK 11/29/17
Stephan Aßmus EMAIL - MIT OK 11/28/17
Axel Dörfler IRC - MIT OK 11/29/17
Ryan Leavengood KEYBASE - MIT OK 11/28/17
Michael Lotz IRC - MIT OK 11/29/17
Adrien Destugues EMAIL - MIT OK 11/28/17
Joachim Seemer EMAIL - MIT OK 11/28/17
Jonas Sundström EMAIL - MIT OK 11/29/17
François Revol IRC - MIT OK 11/29/17
Jérôme Duval EMAIL - MIT OK 11/29/17
Oliver Tappe EMAIL - MIT OK 11/29/17
Dziadek EMAIL - MIT OK 11/29/17
Philippe Saint-Pierre EMAIL - MIT OK 12/6/17
Philippe Houdoin EMAIL - MIT OK 12/8/17
Dario Casalinuovo IRC - MIT OK 12/13/17


# 2937bbe3 24-Nov-2013 Michael Lotz <mmlr@mlotz.ch>

MediaPlayer: Move winding code into its own function.


# c8ccdf52 27-Sep-2010 Stephan Aßmus <superstippi@gmx.de>

* Added basic support for SRT subtitle files. It only works
if the SRT file is placed alongside the current playlist
item under the same name (sans extension). The name of the
language is taken from the file which needs to be separated
by a dot (should be improved).
* Instead of the black outline, subtitles have a nice drop
shadow now, which is easier on the eyes somehow.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38827 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 341ea11e 12-Sep-2010 Stephan Aßmus <superstippi@gmx.de>

Implemented enlarging controls in full-screen mode, it's optional
and the setting defaults to "on".


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38610 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4d6c8862 09-Sep-2010 Stephan Aßmus <superstippi@gmx.de>

* _CurrentVideoSizeInPercent() returned wrong values,
but it didn't result in wrong behavior before.
Implemented more keyboard actions from ticket #2495:
* +/- zoom the video now (by +/- 10% of current scale).
* ZXCVB (raw keys hardcoded, i.e. the keys along the bottom
of the keyboard) act as playback buttons: skip previous (Z),
play (X), pause (C), stop (V), skip next (B).
* Renamed "No interface" menu item to "Hide interface" and
changed the shortcut to Cmd-H. This item is only available
with video streams, though.
* 'M' will mute/unmute the audio.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38599 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1c1de1a5 10-Sep-2010 Stephan Aßmus <superstippi@gmx.de>

The Media:Rating attribute can now be controlled via
the new Attributes menu. Added a TODO for how this should
eventually work.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38598 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7fee522d 10-Sep-2010 Stephan Aßmus <superstippi@gmx.de>

* Moved the Settings menu items into the MediaPlayer menu.
* Removed the Settings menu in favor of a new Attributes
menu (does not offer anything yet).
* The context menu was showing two separator items by mistake
(after the About item was removed from it).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38597 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0beac2ff 09-Sep-2010 Stephan Aßmus <superstippi@gmx.de>

PlaybackManager:
* Make sure that the messages which trigger a performance
time update a) don't pever pile up and b) that we don't
still receive an event after reinitialization (would
not have been a problem, at one point I thought it was).
* Don't compile in support for changing the playback speed
for the moment.
* Better support for notifying the reaching of a seek frame,
In _UpdateStates(), the wrong state (most often out of bounds)
was checked to be a seek request state. Check if a seek request
was reached in all other cases where states are removed.

Controller:
* Simple but important simplification of the problem that
seeked frames are reached asynchronously and with a latency:
In TimePosition() simply report the seeked frame, if there
are still pending seek requests. This allows a consistent
view from the outside, i.e. after calling SetTimePosition(),
TimePosition() will not return something different.
* Use a more robust way to track pending seek requests. A
new request may have been issued while not having reached
the previous one yet.
* Implement a notification for reaching the seek frame, but
I didn't need it after all, may come in handy later...

MainWin:
* Change the cursor left/right keys to support winding.
Cursor up/down change the volume, Cmd-up/down skips
to the previous/next playlist item, left/right do the
winding now, as requested in ticket #2495.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38594 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c5f8afb9 07-Sep-2010 Stephan Aßmus <superstippi@gmx.de>

First implementation at the "loop by default" settings.
To make it better, there should be a looping mode per
window, and the settings should serve only as defaults.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38570 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8ae6dbd9 02-Sep-2010 Stephan Aßmus <superstippi@gmx.de>

* Rename a couple Audio:* attributes to Media:*, as discussed
some time ago on the mailing list. This change will not exactly
break existing audio tools, but once those tools write the old
attributes, the user will not see the expected changes when he
is displaying the new attributes in Tracker, and the old
attributes will of coerse appear alongside the new ones in
the Attribute menu. In the long run, it makes things cleaner,
though.
* Make MediaPlayer write the new duration attribute, and also for
video clips.
* Register opened playlist items when they are files with the
system, so not only files opened via drag and drop or Tracker
will appear in MediaPlayers "Open File" menu.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38523 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 80a9df25 01-Sep-2010 Stephan Aßmus <superstippi@gmx.de>

* Show the controls in full-screen mode when the mouse moves.
* Propagate the current audio channel count to the controls.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38490 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c5d6e9b0 25-Jan-2010 Michael Lotz <mmlr@mlotz.ch>

Add some scripting to the MediaPlayer so it can be remote controlled.
Example usage to skip one track forward: hey MediaPlayer Do Next of Window 0


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35294 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 312ca935 23-Jan-2010 Stephan Aßmus <superstippi@gmx.de>

* Refactored storing the playlist archive in the quit message.
* Added looping all windows on quit and store the current playlist if
applicable.

Fixes #5061.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35253 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e663610e 18-Nov-2009 Stephan Aßmus <superstippi@gmx.de>

* Made opening playlist items asynchronous (in the Controller thread).
* Resolved TODO: Use the existing "FileChanged" notification in the main
window to adopt the UI to the currently playing item.
* When opening a file takes some time, the window is now free to start hidden
and setup a message runner to unhide it after 150 msecs.
* When launching MediaPlayer with files, the 150 msecs delay is used to
start the window hidden and pop up right at the correct location for audio.
If opening the first audio file takes less than 150 msecs, the window will
already show as soon as possible.
* While opening a file in the Controller, the window will say so in the
disabled seek slider instead of showing the message "Drop media files here.".


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34132 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ab18a502 16-Nov-2009 Stephan Aßmus <superstippi@gmx.de>

* Moved the about alert handling into the application
* Simplified the handling of the first window and removed FirstWindow(),
we can tell by fPlayerCount.
* Both the above would fix a crash when requesting the about alert with the
first window already gone. Respectively another player instance opening
if fFirstWindow was reset to NULL after some recent revision.
* Implemented restoring the current playlist, index and position in the file.
* Devised a more robust way to solve asynchronous seeking. The Controller is
now notified that a seek request has been handled with a dedicated hook.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34079 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9a746385 16-Nov-2009 Stephan Aßmus <superstippi@gmx.de>

Window size handling is now a bit more robust (all this affects audio only
and empty windows only):
* New windows use the width from the window that was last resized by the user.
* The first window uses the stored window position and size.
* When switching from video content to audio content, the last window width
from previous audio-only content is restored.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34078 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f907fa59 16-Nov-2009 Stephan Aßmus <superstippi@gmx.de>

Work in progress for storing some window position/size related settings of
the first window, and restoring them for audio content.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34075 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1aa885ef 28-Oct-2009 Axel Dörfler <axeld@pinc-software.de>

* Added a temporary solution to add the Audio:Length attribute to audio files,
just like SoundPlay did.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33812 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f2d247d8 10-Aug-2009 Axel Dörfler <axeld@pinc-software.de>

* Ignore shortcuts if command+control are pressed at once, no longer stealing
system shortcuts. The shortcut mechanism should be reworked to use the
standard AddShortcut() way of doing, anyway for most things. This fixes bug
#4208.
* Fixed warnings.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32224 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6da40f2e 13-Jul-2009 Stephan Aßmus <superstippi@gmx.de>

Fixed more bugs with re-layouting when switching clips:
* In full screen mode, make sure to relayout the video view if size and/or
aspect change. Also adjust the window size limits (for later).
* Add optional code to _ResizeWindow() to make sure the window is fully on
screen. When it is out on one side, move it back in, when it is too large,
scale and center it so all the border is visible. This code is used when
switching clips if not in full screen mode.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31559 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f186fa40 13-Jul-2009 Stephan Aßmus <superstippi@gmx.de>

* Improvements to the aspect ratio handling. The "Keep Aspect Ratio" setting
is now superfluous.
* When switching aspect ratio and the current video size is 100%, always
resize such that one side stays at 100% (which would be the height mostly)
and the other is scaled up (mostly the width).
* In _SetupWindow(), which is triggered by a new stream for example, also
check if the aspect ratio changed and resize accordingly.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31541 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a920a6e2 09-Jul-2009 Stephan Aßmus <superstippi@gmx.de>

Use media_format pixel_width/height_aspect as it was meant to be used. This
avoids rounding issues (1440x1080 -> 1920x1080 instead of 1921x1080).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31477 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c8e27e39 29-Jun-2009 Stephan Aßmus <superstippi@gmx.de>

Unified the "no menu, border, controls" settings to a single "no interface"
setting and made them available in the context menu again. During my testing,
I couldn't find any weird behavior, only the window dragging should still be
a problem on slower computers when multiple mouse messages piled up.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31324 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1f3691df 28-Jun-2009 Stephan Aßmus <superstippi@gmx.de>

* In theory, we should support getting the video aspect from the current stream.
* Added "Force Aspect Ratio" to Video menu and context menu.
* Removed some code duplication in handling the video size messages.
* Added track selection sub-menus to the context menu, replacing the IMHO
not so important interface settings items.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31302 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c60fcc87 23-May-2009 Stephan Aßmus <superstippi@gmx.de>

* Changed the PlaylistItem interface to be hopefully more flexible. It can
probably still be improved.
* Renamed EntryRefPlaylistItem to just FilePlaylistItem.
* Moved the "move into Trash" and "restore from Trash" implementation into
FilePlaylistItem. Also added what's needed to allow Tracker to restore the
entry itself.
* Refactored everything to make Playlist use PlaylistItems instead of
entry_refs and all that entails...
* The transition to virtualize PlaylistItems is not complete yet in the
Controller, since it still uses BMediaFile there. But it's much easier to
change that now.
* Objects which keep a PlaylistItem around do correct reference counting, but
some commands could be simplified if they were using references as well. It
still should work correctly, though, if I didn't miss anything. It should also
fix theoretical situations of encountering out-of-memory while messing with
the Playlist leading to inconsistent state between Undo/Redo and then leaking
items because of that.
* Added the discussed change that MediaPlayer checks it's own supported types
before rejecting a file by super type. (untested)
* When importing playlist items, the currently playling item is better
maintained during Undo/Redo.
* Some debugging code added in MediaTrackAudioSupplier, no functional changes.
* Fixed a number of coding style issues and automatic whitespace cleanup.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30834 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 126ce071 10-Oct-2008 Stephan Aßmus <superstippi@gmx.de>

* Cleanup with regards to file panel usage. There are two global file panels
now maintained by the application. (So that the last used folder is more
consistently remembered.)
* Added a message protocol for using the file panels from other loopers.
* Implemented playlist saving and loading for the binary (BMessage-based)
format. There were some beginnings for supporting a m3u-like text-based format
as well.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27955 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4ddc254c 26-Aug-2008 Stephan Aßmus <superstippi@gmx.de>

* Implemented decreasing the volume of inactive player windows according to
the global settings. This is only done though if there are multiple players
open at the time. (It doesn't consider their "playing" state, though.)
* The SettingsWindow is now maintained by the MainApp, and there is only a
single instance, those settings are application wide. Also used the
"application floating" window look&feel.
* Small code cleanups.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27210 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9a5f768b 26-Aug-2008 Stephan Aßmus <superstippi@gmx.de>

* Implemented the "Auto start playback", "Close when done playing movie" and
"Close when done playing sound" settings.
* Removed unused member variables from Controller
* Changed Playlist::SetCurrentRef() to indicate success and prevent the
current index from getting out of range.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27208 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ef13436f 28-Apr-2008 Ryan Leavengood <leavengood@gmail.com>

Fix for #676, an oldie (from 2 years ago): if the MediaPlayer window is moved
off the screen at all, it will be moved back on when the window is activated.

I almost think this might be a reasonable default implementation for
WindowActivated in BWindow :)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25234 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1b7f76bc 01-Apr-2008 Stephan Aßmus <superstippi@gmx.de>

Applied Patch by Frederik Modeen with some changes by myself:
* Created Settings window similar to R5 MediaPlayer.
* Prepared loading and saving of settings.
* Settings menu entry is hidden for the time being, since these new settings
do not actually have any effect yet.
* Prepared loading and saving of Playlists.
* ZETA Playlists can be dropped on the Player and should load fine.
Myself:
* Cleanup in MainWindow.cpp for line width limit.

To Frederik: I removed the buttons again from the Playlist window, since they
don't do anything yet, and the features are available from the menu as well.
An icon bar would be better, IMHO.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24715 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 540fe7ae 17-Oct-2007 Stephan Aßmus <superstippi@gmx.de>

patch by Fredrik Modéen with changes by myself
* toggle the "marked" state of the settings menu items correctly
* implement muting/unmuting the volume
* implement volume up/down triggered by keyboard events
* forward the skip next/previous events to the controller
(various kinds of keyboard navigation or mouse wheel)
* establish the notification link for volume and muted changes


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22594 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 09464bc9 03-Jun-2007 Stephan Aßmus <superstippi@gmx.de>

* extraced PlaylistListView into it's own files
* lots of changes, besically these make the Playlist window usable
- drag sorting works (hold shift to copy instead of move items)
- removing items with the delete key works
- dragging files/folders from Tracker works (hold shift to insert
them in the existing playlist, othewise the new files replace
the playlist)
* some refactoring and bug fixes in previously unused functionality
* Playlist can now be locked (needed to be), and is in ControllerView,
MainWin and PlaylistListView


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21305 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d329f1d6 02-Jun-2007 Stephan Aßmus <superstippi@gmx.de>

* cleanup in MainWin, better grouping of functions in .h and
moved functions in .cpp accordingly, prepended private methods with _
* disabled InfoWin, because it accessed members of MainWin directly,
will be reimplemented with notification mechanism
* fixed the bug with the multiple error alerts for an unsupported file,
the window should use the current file index from the notification
itself


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21300 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5fa5e5fe 29-May-2007 Stephan Aßmus <superstippi@gmx.de>

* added notification support to Playlist and Controller
* added AbstractLOAdapter by Ingo Weinhold which makes
notifications asynchronous
* removed "Player" interface/concept, replaced it by
the notification mechanism (window loads new file
when "current" ref index changes in Playlist)
* removed some cross classes dependencies
* the wind buttons are not displayed anymore for now
* lots of changes to the Controller
- the decoder/player threads are kept running for the
entire lifetime of the Controller object (in essence, makes
it possible to playback seamless)
- abstracted BMediaTrack usage into "Video-" and "AudioSupplier"
objects (the BMediaTrack pointers are only still there, because
I have not gotten around to fix the messy/hacky InfoWindow)
- reaching the end of the stream will trigger a notification,
so that the next file from the playlist is played
- fSoundOutput is managed by the Controller
- tried to make seeking seem more controlled (slider doesn't
jump back to previous position)
- playback position is correctly updated in GUI
- volume is maintained independend of SoundOutput so
that it can be transfered from one to the next output
- performance time is maintained correctly (?) even if
no audio stream is present
* work in progress Playlist window (drag sorting does not work yet!)
* rearranged menus a bit
* rearranged overlay code in the VideoView, but it cannot work
like it is currently designed, since the buffers need to be
switched all at once, which the video decoding thread
is not doing yet
* dragging files into the main window with shift held down
appends to the existing playlist
* dropping folders adds files recursively
* pressing space toggles playback (instead of changing some
settings of the GUI)
* fixed some more minor issues or unimplemented stuff in the UI


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21276 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c91fb637 01-Mar-2007 François Revol <revol@free.fr>

Add a File Info Window to MediaPlayer.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20293 a95241bf-73f2-0310-859d-f6bbb57e9c96


# aadc5f57 24-Apr-2006 Marcus Overhagen <marcusoverhagen@gmail.com>

added playlist support


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17225 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 91b9ff3f 23-Apr-2006 Marcus Overhagen <marcusoverhagen@gmail.com>

cleanup, moved track selection into settings


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17219 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 067423e6 23-Apr-2006 Marcus Overhagen <marcusoverhagen@gmail.com>

implemented even more resizing


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17218 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 399b0e8a 23-Apr-2006 Marcus Overhagen <marcusoverhagen@gmail.com>

cleaned up resizing


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17215 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 99cd5eeb 23-Apr-2006 Marcus Overhagen <marcusoverhagen@gmail.com>

added some resizing support


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17214 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e1d8d7d6 23-Apr-2006 Marcus Overhagen <marcusoverhagen@gmail.com>

implemented some file handling related functionality


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17211 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 04a91b97 05-Apr-2006 Marcus Overhagen <marcusoverhagen@gmail.com>

Imported source code from DVB TV application


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17021 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2937bbe3bca5da7b7fbdbab6262b72babb861083 24-Nov-2013 Michael Lotz <mmlr@mlotz.ch>

MediaPlayer: Move winding code into its own function.


# c8ccdf52032feea5e7853631dee57cf7f6302c5d 27-Sep-2010 Stephan Aßmus <superstippi@gmx.de>

* Added basic support for SRT subtitle files. It only works
if the SRT file is placed alongside the current playlist
item under the same name (sans extension). The name of the
language is taken from the file which needs to be separated
by a dot (should be improved).
* Instead of the black outline, subtitles have a nice drop
shadow now, which is easier on the eyes somehow.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38827 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 341ea11eb304738c351755be9d15ab232e4a037a 12-Sep-2010 Stephan Aßmus <superstippi@gmx.de>

Implemented enlarging controls in full-screen mode, it's optional
and the setting defaults to "on".


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38610 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4d6c88624e8102ebfad835e2419893c6222df2fa 09-Sep-2010 Stephan Aßmus <superstippi@gmx.de>

* _CurrentVideoSizeInPercent() returned wrong values,
but it didn't result in wrong behavior before.
Implemented more keyboard actions from ticket #2495:
* +/- zoom the video now (by +/- 10% of current scale).
* ZXCVB (raw keys hardcoded, i.e. the keys along the bottom
of the keyboard) act as playback buttons: skip previous (Z),
play (X), pause (C), stop (V), skip next (B).
* Renamed "No interface" menu item to "Hide interface" and
changed the shortcut to Cmd-H. This item is only available
with video streams, though.
* 'M' will mute/unmute the audio.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38599 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1c1de1a5cdb7ff94bdccb2686f406f5e8b7d9d30 10-Sep-2010 Stephan Aßmus <superstippi@gmx.de>

The Media:Rating attribute can now be controlled via
the new Attributes menu. Added a TODO for how this should
eventually work.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38598 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7fee522dd087fca367f2a68df66a15b19d8c198f 10-Sep-2010 Stephan Aßmus <superstippi@gmx.de>

* Moved the Settings menu items into the MediaPlayer menu.
* Removed the Settings menu in favor of a new Attributes
menu (does not offer anything yet).
* The context menu was showing two separator items by mistake
(after the About item was removed from it).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38597 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0beac2ff048390fecd8a08a99e7dd2cd8a9724b4 09-Sep-2010 Stephan Aßmus <superstippi@gmx.de>

PlaybackManager:
* Make sure that the messages which trigger a performance
time update a) don't pever pile up and b) that we don't
still receive an event after reinitialization (would
not have been a problem, at one point I thought it was).
* Don't compile in support for changing the playback speed
for the moment.
* Better support for notifying the reaching of a seek frame,
In _UpdateStates(), the wrong state (most often out of bounds)
was checked to be a seek request state. Check if a seek request
was reached in all other cases where states are removed.

Controller:
* Simple but important simplification of the problem that
seeked frames are reached asynchronously and with a latency:
In TimePosition() simply report the seeked frame, if there
are still pending seek requests. This allows a consistent
view from the outside, i.e. after calling SetTimePosition(),
TimePosition() will not return something different.
* Use a more robust way to track pending seek requests. A
new request may have been issued while not having reached
the previous one yet.
* Implement a notification for reaching the seek frame, but
I didn't need it after all, may come in handy later...

MainWin:
* Change the cursor left/right keys to support winding.
Cursor up/down change the volume, Cmd-up/down skips
to the previous/next playlist item, left/right do the
winding now, as requested in ticket #2495.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38594 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c5f8afb9447be154c7b58283f910dc356a121070 07-Sep-2010 Stephan Aßmus <superstippi@gmx.de>

First implementation at the "loop by default" settings.
To make it better, there should be a looping mode per
window, and the settings should serve only as defaults.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38570 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8ae6dbd9dee7847e2139b1e0b1338a21294ee789 02-Sep-2010 Stephan Aßmus <superstippi@gmx.de>

* Rename a couple Audio:* attributes to Media:*, as discussed
some time ago on the mailing list. This change will not exactly
break existing audio tools, but once those tools write the old
attributes, the user will not see the expected changes when he
is displaying the new attributes in Tracker, and the old
attributes will of coerse appear alongside the new ones in
the Attribute menu. In the long run, it makes things cleaner,
though.
* Make MediaPlayer write the new duration attribute, and also for
video clips.
* Register opened playlist items when they are files with the
system, so not only files opened via drag and drop or Tracker
will appear in MediaPlayers "Open File" menu.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38523 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 80a9df25028391f54d026007bf633fe99e7529e1 01-Sep-2010 Stephan Aßmus <superstippi@gmx.de>

* Show the controls in full-screen mode when the mouse moves.
* Propagate the current audio channel count to the controls.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38490 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c5d6e9b06e808c440e867b529ac1e08391d9a3f7 25-Jan-2010 Michael Lotz <mmlr@mlotz.ch>

Add some scripting to the MediaPlayer so it can be remote controlled.
Example usage to skip one track forward: hey MediaPlayer Do Next of Window 0


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35294 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 312ca935ab5d8265301afefca0f3b78d64a92369 23-Jan-2010 Stephan Aßmus <superstippi@gmx.de>

* Refactored storing the playlist archive in the quit message.
* Added looping all windows on quit and store the current playlist if
applicable.

Fixes #5061.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35253 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e663610e84ed96e246aa7bb6d416bd51c1166447 18-Nov-2009 Stephan Aßmus <superstippi@gmx.de>

* Made opening playlist items asynchronous (in the Controller thread).
* Resolved TODO: Use the existing "FileChanged" notification in the main
window to adopt the UI to the currently playing item.
* When opening a file takes some time, the window is now free to start hidden
and setup a message runner to unhide it after 150 msecs.
* When launching MediaPlayer with files, the 150 msecs delay is used to
start the window hidden and pop up right at the correct location for audio.
If opening the first audio file takes less than 150 msecs, the window will
already show as soon as possible.
* While opening a file in the Controller, the window will say so in the
disabled seek slider instead of showing the message "Drop media files here.".


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34132 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ab18a502299fa5a8d32768b07814836ef365380b 16-Nov-2009 Stephan Aßmus <superstippi@gmx.de>

* Moved the about alert handling into the application
* Simplified the handling of the first window and removed FirstWindow(),
we can tell by fPlayerCount.
* Both the above would fix a crash when requesting the about alert with the
first window already gone. Respectively another player instance opening
if fFirstWindow was reset to NULL after some recent revision.
* Implemented restoring the current playlist, index and position in the file.
* Devised a more robust way to solve asynchronous seeking. The Controller is
now notified that a seek request has been handled with a dedicated hook.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34079 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9a7463857a3784f0435f133ae01e08fd0d670d98 16-Nov-2009 Stephan Aßmus <superstippi@gmx.de>

Window size handling is now a bit more robust (all this affects audio only
and empty windows only):
* New windows use the width from the window that was last resized by the user.
* The first window uses the stored window position and size.
* When switching from video content to audio content, the last window width
from previous audio-only content is restored.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34078 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f907fa59c315a272572712723574066be3a77513 16-Nov-2009 Stephan Aßmus <superstippi@gmx.de>

Work in progress for storing some window position/size related settings of
the first window, and restoring them for audio content.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34075 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1aa885efee4a53ef1fcf3db028d70b009fab78fd 28-Oct-2009 Axel Dörfler <axeld@pinc-software.de>

* Added a temporary solution to add the Audio:Length attribute to audio files,
just like SoundPlay did.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33812 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f2d247d81b9a5f1b828c0d4ed319f5df6c8d22eb 10-Aug-2009 Axel Dörfler <axeld@pinc-software.de>

* Ignore shortcuts if command+control are pressed at once, no longer stealing
system shortcuts. The shortcut mechanism should be reworked to use the
standard AddShortcut() way of doing, anyway for most things. This fixes bug
#4208.
* Fixed warnings.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32224 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6da40f2e247227ce72833cc1b5d3b5c7708e9e49 13-Jul-2009 Stephan Aßmus <superstippi@gmx.de>

Fixed more bugs with re-layouting when switching clips:
* In full screen mode, make sure to relayout the video view if size and/or
aspect change. Also adjust the window size limits (for later).
* Add optional code to _ResizeWindow() to make sure the window is fully on
screen. When it is out on one side, move it back in, when it is too large,
scale and center it so all the border is visible. This code is used when
switching clips if not in full screen mode.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31559 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f186fa405cf7dc3a3f702612ac5d4074c26e2571 13-Jul-2009 Stephan Aßmus <superstippi@gmx.de>

* Improvements to the aspect ratio handling. The "Keep Aspect Ratio" setting
is now superfluous.
* When switching aspect ratio and the current video size is 100%, always
resize such that one side stays at 100% (which would be the height mostly)
and the other is scaled up (mostly the width).
* In _SetupWindow(), which is triggered by a new stream for example, also
check if the aspect ratio changed and resize accordingly.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31541 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a920a6e2a0be1fa0d4f199c03188bb37956e28b2 09-Jul-2009 Stephan Aßmus <superstippi@gmx.de>

Use media_format pixel_width/height_aspect as it was meant to be used. This
avoids rounding issues (1440x1080 -> 1920x1080 instead of 1921x1080).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31477 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c8e27e390cc06dc656e6fab033c4cb3f93b9ad62 29-Jun-2009 Stephan Aßmus <superstippi@gmx.de>

Unified the "no menu, border, controls" settings to a single "no interface"
setting and made them available in the context menu again. During my testing,
I couldn't find any weird behavior, only the window dragging should still be
a problem on slower computers when multiple mouse messages piled up.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31324 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1f3691df0fa0861206a72c7b3b9967cea8097692 28-Jun-2009 Stephan Aßmus <superstippi@gmx.de>

* In theory, we should support getting the video aspect from the current stream.
* Added "Force Aspect Ratio" to Video menu and context menu.
* Removed some code duplication in handling the video size messages.
* Added track selection sub-menus to the context menu, replacing the IMHO
not so important interface settings items.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31302 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c60fcc87e04b0af21ed9f01581b23d1f714a366f 23-May-2009 Stephan Aßmus <superstippi@gmx.de>

* Changed the PlaylistItem interface to be hopefully more flexible. It can
probably still be improved.
* Renamed EntryRefPlaylistItem to just FilePlaylistItem.
* Moved the "move into Trash" and "restore from Trash" implementation into
FilePlaylistItem. Also added what's needed to allow Tracker to restore the
entry itself.
* Refactored everything to make Playlist use PlaylistItems instead of
entry_refs and all that entails...
* The transition to virtualize PlaylistItems is not complete yet in the
Controller, since it still uses BMediaFile there. But it's much easier to
change that now.
* Objects which keep a PlaylistItem around do correct reference counting, but
some commands could be simplified if they were using references as well. It
still should work correctly, though, if I didn't miss anything. It should also
fix theoretical situations of encountering out-of-memory while messing with
the Playlist leading to inconsistent state between Undo/Redo and then leaking
items because of that.
* Added the discussed change that MediaPlayer checks it's own supported types
before rejecting a file by super type. (untested)
* When importing playlist items, the currently playling item is better
maintained during Undo/Redo.
* Some debugging code added in MediaTrackAudioSupplier, no functional changes.
* Fixed a number of coding style issues and automatic whitespace cleanup.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30834 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 126ce071385e2ddc8ba0c0247768433f2f810522 10-Oct-2008 Stephan Aßmus <superstippi@gmx.de>

* Cleanup with regards to file panel usage. There are two global file panels
now maintained by the application. (So that the last used folder is more
consistently remembered.)
* Added a message protocol for using the file panels from other loopers.
* Implemented playlist saving and loading for the binary (BMessage-based)
format. There were some beginnings for supporting a m3u-like text-based format
as well.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27955 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4ddc254c08b7f88229ba3741946b0925f3c8f805 26-Aug-2008 Stephan Aßmus <superstippi@gmx.de>

* Implemented decreasing the volume of inactive player windows according to
the global settings. This is only done though if there are multiple players
open at the time. (It doesn't consider their "playing" state, though.)
* The SettingsWindow is now maintained by the MainApp, and there is only a
single instance, those settings are application wide. Also used the
"application floating" window look&feel.
* Small code cleanups.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27210 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9a5f768b197711cd146280af23da99172053c2dc 26-Aug-2008 Stephan Aßmus <superstippi@gmx.de>

* Implemented the "Auto start playback", "Close when done playing movie" and
"Close when done playing sound" settings.
* Removed unused member variables from Controller
* Changed Playlist::SetCurrentRef() to indicate success and prevent the
current index from getting out of range.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27208 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ef13436f1fa16fbf8d0a71726db581376054435d 28-Apr-2008 Ryan Leavengood <leavengood@gmail.com>

Fix for #676, an oldie (from 2 years ago): if the MediaPlayer window is moved
off the screen at all, it will be moved back on when the window is activated.

I almost think this might be a reasonable default implementation for
WindowActivated in BWindow :)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25234 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1b7f76bcfc37774f88e57a363f2f51263593f091 01-Apr-2008 Stephan Aßmus <superstippi@gmx.de>

Applied Patch by Frederik Modeen with some changes by myself:
* Created Settings window similar to R5 MediaPlayer.
* Prepared loading and saving of settings.
* Settings menu entry is hidden for the time being, since these new settings
do not actually have any effect yet.
* Prepared loading and saving of Playlists.
* ZETA Playlists can be dropped on the Player and should load fine.
Myself:
* Cleanup in MainWindow.cpp for line width limit.

To Frederik: I removed the buttons again from the Playlist window, since they
don't do anything yet, and the features are available from the menu as well.
An icon bar would be better, IMHO.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24715 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 540fe7aef9f5fea126dbfb0be82b534744eea29c 17-Oct-2007 Stephan Aßmus <superstippi@gmx.de>

patch by Fredrik Modéen with changes by myself
* toggle the "marked" state of the settings menu items correctly
* implement muting/unmuting the volume
* implement volume up/down triggered by keyboard events
* forward the skip next/previous events to the controller
(various kinds of keyboard navigation or mouse wheel)
* establish the notification link for volume and muted changes


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22594 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 09464bc90b61f0c038cd92e3894921c64caedf9a 03-Jun-2007 Stephan Aßmus <superstippi@gmx.de>

* extraced PlaylistListView into it's own files
* lots of changes, besically these make the Playlist window usable
- drag sorting works (hold shift to copy instead of move items)
- removing items with the delete key works
- dragging files/folders from Tracker works (hold shift to insert
them in the existing playlist, othewise the new files replace
the playlist)
* some refactoring and bug fixes in previously unused functionality
* Playlist can now be locked (needed to be), and is in ControllerView,
MainWin and PlaylistListView


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21305 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d329f1d6c1ab87225f92373f227626b9702607bc 02-Jun-2007 Stephan Aßmus <superstippi@gmx.de>

* cleanup in MainWin, better grouping of functions in .h and
moved functions in .cpp accordingly, prepended private methods with _
* disabled InfoWin, because it accessed members of MainWin directly,
will be reimplemented with notification mechanism
* fixed the bug with the multiple error alerts for an unsupported file,
the window should use the current file index from the notification
itself


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21300 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5fa5e5fea7e2752ce0f9eb514b82f7c34ea308e6 29-May-2007 Stephan Aßmus <superstippi@gmx.de>

* added notification support to Playlist and Controller
* added AbstractLOAdapter by Ingo Weinhold which makes
notifications asynchronous
* removed "Player" interface/concept, replaced it by
the notification mechanism (window loads new file
when "current" ref index changes in Playlist)
* removed some cross classes dependencies
* the wind buttons are not displayed anymore for now
* lots of changes to the Controller
- the decoder/player threads are kept running for the
entire lifetime of the Controller object (in essence, makes
it possible to playback seamless)
- abstracted BMediaTrack usage into "Video-" and "AudioSupplier"
objects (the BMediaTrack pointers are only still there, because
I have not gotten around to fix the messy/hacky InfoWindow)
- reaching the end of the stream will trigger a notification,
so that the next file from the playlist is played
- fSoundOutput is managed by the Controller
- tried to make seeking seem more controlled (slider doesn't
jump back to previous position)
- playback position is correctly updated in GUI
- volume is maintained independend of SoundOutput so
that it can be transfered from one to the next output
- performance time is maintained correctly (?) even if
no audio stream is present
* work in progress Playlist window (drag sorting does not work yet!)
* rearranged menus a bit
* rearranged overlay code in the VideoView, but it cannot work
like it is currently designed, since the buffers need to be
switched all at once, which the video decoding thread
is not doing yet
* dragging files into the main window with shift held down
appends to the existing playlist
* dropping folders adds files recursively
* pressing space toggles playback (instead of changing some
settings of the GUI)
* fixed some more minor issues or unimplemented stuff in the UI


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21276 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c91fb637b62a85991908ff7349ca817dc35ab2f6 01-Mar-2007 François Revol <revol@free.fr>

Add a File Info Window to MediaPlayer.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20293 a95241bf-73f2-0310-859d-f6bbb57e9c96


# aadc5f572d7fa4e6d96e090ccb8087ddba45c27a 24-Apr-2006 Marcus Overhagen <marcusoverhagen@gmail.com>

added playlist support


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17225 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 91b9ff3f99ab334db0b4cabc08625245d47f3025 23-Apr-2006 Marcus Overhagen <marcusoverhagen@gmail.com>

cleanup, moved track selection into settings


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17219 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 067423e61588b96ee18108968ca38e7b1536a880 23-Apr-2006 Marcus Overhagen <marcusoverhagen@gmail.com>

implemented even more resizing


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17218 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 399b0e8ab84555e2eeee8bb8aa40b450c868a02b 23-Apr-2006 Marcus Overhagen <marcusoverhagen@gmail.com>

cleaned up resizing


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17215 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 99cd5eeb92bdd42756e075535201dd44318aa8f6 23-Apr-2006 Marcus Overhagen <marcusoverhagen@gmail.com>

added some resizing support


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17214 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e1d8d7d6b48c655bab349c1fde5200fed917289e 23-Apr-2006 Marcus Overhagen <marcusoverhagen@gmail.com>

implemented some file handling related functionality


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17211 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 04a91b97bde1b41f4100b923a1699ddeac36635b 05-Apr-2006 Marcus Overhagen <marcusoverhagen@gmail.com>

Imported source code from DVB TV application


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17021 a95241bf-73f2-0310-859d-f6bbb57e9c96