84 Commits

Author SHA1 Message Date
Casey Langen
5bf48ff243 Added new file to CMakeLists.txt 2016-06-01 01:02:05 -07:00
casey
916823000c Don't wait indefinitely for WaveOut to close, and also fixed a stop-related bug. 2016-06-01 00:30:46 -07:00
casey
4fe8f1fe10 - Don't raise the "Stopped" event in transport unless we're actually stopped (more bug fixes)
- Fixed PlaybackService to actually listen to PlaybackEvent
2016-06-01 00:14:14 -07:00
casey
9c7fdbdb87 - Fixed a bug in Transport where a "PlaybackStopped" event could be triggered erroneously
- Simplified TransportWindow to use PlaybackService.TrackChanged instead of manually querying the DB
2016-06-01 00:03:41 -07:00
casey
9f2a04bf78 A couple small color tweaks to make the currently playing track more obvious. 2016-05-31 22:36:09 -07:00
casey
adbe9bf859 - Fixed another potential deadlock in Transport.cpp
- Fixed TrackListViewQuery to set the correct track id on queried tracks
- Fixed PlaylistService to use MessageQueue to deliver results and avoid race conditions
- Tweaked TrackListView to highlight the currently playing track in yellow
2016-05-31 22:25:32 -07:00
casey
c9630312ef Added album separators in TrackListView, and cleaned up IScrollAdapter::IEntry interface in the process. 2016-05-31 21:27:49 -07:00
Casey Langen
c812739d28 Removed 3rdparty CMakeLists.txt. Just include this as part of libmusikcore. 2016-05-30 11:49:24 -07:00
Casey Langen
3da84981e1 Only conditionally include clang 3.7 enable_shared_from_this<> hack. 2016-05-30 11:37:54 -07:00
Casey Langen
6ba643a2cc - Added stderr redirect to file (or /dev/null) based on platform and build config
- Added Window::Invalidate() that can be called to force a full refresh
2016-05-29 22:00:43 -07:00
Casey Langen
e4eb083aca Use werase() instead of wclear(). This seems to fix up the funky redraw issues when using Terminal.app and using musikbox over ssh. 2016-05-29 18:32:57 -07:00
Casey Langen
7b4885995b A couple small fixes that should allow things to (almost) compile in Linux. 2016-05-29 18:20:48 -07:00
casey
4f8294169d Added missing flacdecoder file, and also debounced KEY_RESIZE event
handling.
2016-05-29 10:29:39 -07:00
Casey Langen
273b67076f - Localize wrefresh() call to the input window that has focus when drawing cursor
- Moved Blur/Focus update functionality from ListWindow into ScrollableWindow
2016-05-28 12:08:15 -07:00
Casey Langen
ceb629accd Improved (?) input handling -- cursor position works on Mac now. This may break Windows. 2016-05-28 11:21:10 -07:00
Casey Langen
05c36ef76b Fixed redraw issue on non-Windows platforms when ListWindow is blurred. 2016-05-28 10:42:52 -07:00
casey
7220617db0 Default to console layout until we can build a path editor thing 2016-05-28 02:58:12 -07:00
casey
bfbb01fa57 aesthetic and hotkey changes. 2016-05-28 02:49:18 -07:00
casey
9e5a4dc63e One more small set of fixes to properly support resizing on Windows. 2016-05-27 23:18:40 -07:00
Casey Langen
d993743cb9 A couple small optimizations to the still-glitchy resize code. 2016-05-27 23:01:58 -07:00
casey
dd9b0818f1 - Fixed a bug that could let partial results get displayed in
CategoryListView
- Allow queries to be marked as cancelable so they won't be processed.
2016-05-27 22:59:19 -07:00
Casey Langen
306103c0e8 Added rudimentary support for resizing. 2016-05-27 21:54:46 -07:00
casey
a64ccf16a6 Fixed clangen/cmakeosx to compile and run against Windows. 2016-05-27 18:10:41 -07:00
Casey Langen
8d3d24c5e6 Fixed category switching on keyboards with meta, not alt. 2016-05-27 17:55:25 -07:00
Casey Langen
0c47cdc483 Small refator to make UTF8 key handling easier. 2016-05-27 17:50:56 -07:00
Casey Langen
1ac9b18af9 Fixed UTF8 input in Main.cpp parse loop. More substantial key handling refactors coming soon. 2016-05-27 17:50:08 -07:00
Casey Langen
5514b0f726 - Fixed a bug in CoreAudioOut where volume was not getting reset properly for new streams
- Added improved key handling to work properly with +ESC escape sequences. More work to be done.
- Fixed a couple hotkeys to use +ESC escape sequences.
2016-05-27 17:50:08 -07:00
Casey Langen
f9c95a5963 musikbox runs on OSX!
- It's not pretty
- More updates to CMakeLists and mp3decoder and taglib_plugin
- Fixed bugs in PluginFactory so the DLLs load properly
- Fixed a bug in Window where RemoveWindow was removing from the wrong parent
- Added a couple hacks in Common.cpp, these need to be fixed
2016-05-27 17:48:53 -07:00
Casey Langen
d12eae819d cursespp and musikbox are compiling! not running though. 2016-05-27 17:48:53 -07:00
casey
3968e39f7f - Fixed waveout plugin to ensure all buffers are cleared before new ones
are accepted.
- Started working on CTRL+UP, CTRL+DOWN library focusing.
2016-05-26 01:14:17 -07:00
casey
dcb3d6bfb3 Added a 'cursespp' namespace, and removed all 'using' statements from
header files in the app source.
2016-05-24 22:20:29 -07:00
casey
c6c12cbab6 Added musik::box namespace for app. 2016-05-24 21:44:46 -07:00
casey
05aca20bbd - Fixed a memory leak in Mp3Decoder
- Fixed WaveOut::Stop() to only reset the output device, not close it,
  to prevent cracking while seeking and also get us a step closer to
  gapless playback.
- Fixed GlobalHotkey handling so key presses aren't propagated to the
  focused control after they're handled
- Removed old, unused state from SimpleScrollAdapter
- Fixed crash on exit when using the "X" button by registering a custom
  close handler with PDCurses.
2016-05-24 20:31:43 -07:00
casey
14aa38518a Added global hotkeys for scrubbing 2016-05-24 00:10:36 -07:00
casey
54192079ed Fixed a couple bugs that prevented auto-advancing from working properly. 2016-05-24 00:00:26 -07:00
casey
6326162ee0 Added support for Play/Prev/Next/Stop in Playback service and respective
global hotkeys. It functions as a normal music player, finally!
2016-05-23 23:51:49 -07:00
casey
b544ea6f1f Important work towards eventual support of gapless playback:
- Transport: cleaned up memory management model -- shared_ptr<Player>
  was causing lots of unnecessary complication. The players are
  encapsulated, so switched to just Player*

- Player's destructor wasn't virtual! Caused some strange problems.

- Integrated next track loading in PlayerService!
2016-05-23 22:33:40 -07:00
casey
65a4d33823 Track::URL -> Track::URI 2016-05-22 11:09:18 -07:00
casey
26311255b5 Generalization of message queue stuff so it can be used in non-UI
contexts:

- IWindowMessage -> IMessage
- New IMessageTarget implemented by IWindow
- WindowMessageQueue -> MessageQueue
2016-05-22 10:14:01 -07:00
casey
4f7a6ea7e2 More core cleanup:
- Removed TrackFactory, InMemoryTrack
- Tightened up threading model in LibraryTrack
- Removed a bunch of comments that were not really useful
- Added stubbed PlaybackService
2016-05-22 09:55:17 -07:00
casey
34e2ff1751 Fixed some character encoding issues in file loading and track list
column rendering.
2016-05-22 01:01:47 -07:00
casey
bb1bc9c822 * Improvements to the transport look and feel, including blinking time
while paused, and space to pause/resume
* Better keynames for Track album/artist/genre (don't reuse ID keys)
* No flashing when switching between metadata category types
2016-05-22 00:05:41 -07:00
casey
174d00b4d5 A couple small hotkey shortcuts for refreshing the view, and
re-indexing.
2016-05-21 00:06:48 -07:00
casey
af60dedb4b Added first-class support for album artist. 2016-05-21 00:00:58 -07:00
casey
6d025cdad1 - Added ILayoutStack, IOrderable, LayoutStack, and WindowLayout. These
new types make it possible for layouts to be stacked on top of each
  other with correct focus behavior.

- Tweaks to the volume and time slider to make them more accurate.

- Fixed a bug in the main event loop to re-check focus to make sure it
  hasn't changed under the hood since the last pass through.
2016-05-19 22:32:26 -07:00
casey
094cb358fe - Renamed Window::Post -> Window::PostMessage
- Added Window::RemoveMessage
- Fixed TransportWindow to have a time slider that actually works.
2016-05-18 22:36:20 -07:00
casey
0ece15710e - Added duration to TrackListView, and also tweaked some formatting
- Updated transport volume control style
- Cleaned up and rearranged some input handling so we can better support
  nested layouts in the future
- Tweaked Window to use panels so draw ordering can be vaguely
  controlled, at least as well as vanilla ncurses
- Started working on overlay functionality, so layouts can do things
  like display dialogs.
2016-05-18 21:33:17 -07:00
casey
1d2541e100 Much improved console UI with global hotkeys and some column formatting 2016-05-18 02:29:11 -07:00
casey
e8b9c873db Added new NO_SELECTION constant to ListWindow, and use it to help set and reset default state. 2016-05-17 22:57:18 -07:00
casey
2d65ab480a - Cleaned up and generalized Transport event handling
- Added some virtual destructors to interfaces
2016-05-17 22:45:32 -07:00