395 Commits

Author SHA1 Message Date
casey
4d7aa33075 Added proper support for disc number as a first-class field on Track. 2016-06-03 22:22:45 -07:00
casey
52d01ffb7b - A bit of Transport.h header cleanup
- Ensure fields are using the correct keys for queries and data access
  (we were using ALBUM_ID, ARTIST_ID, GENRE_ID incorrectly).
2016-06-03 21:05:01 -07:00
casey
b286d83c78 - Ensure NowPlayingLayout always scrolls to the playing item when shown
- Fixed some resize bugs in LibraryLayout
- Automatically convert ALT_ keys to M- (meta) keys for Win32 builds.
2016-06-03 18:32:25 -07:00
Casey Langen
ffcc110430 More cleanups to CMakeLists and also fixed a top-level layout issue 2016-06-03 08:55:56 -07:00
Casey Langen
efc81d352a Cleaned up CMakeLists.txt in core and box. 2016-06-03 08:29:05 -07:00
Casey Langen
be34186303 Fixed compile on OSX. 2016-06-03 08:21:33 -07:00
casey
c418305b30 Library and now playing switching seems to work? 2016-06-03 02:04:41 -07:00
casey
40bc4d31ad Incremental work on the now playing list. It sort of works now, but
things are a bit goofy.
2016-06-02 23:01:22 -07:00
casey
535367d705 - Renamed MainLayout -> ConsoleLayout
- Refactored TrackListView to not deal with PlaybackService directly.
  This is the job of the "Controller" which doesn't exist yet.
- Tweaked LibraryLayout to act more like a Controller, and start
  playback when the user presses enter.
- Added a hacked up NowPlaying layout.
2016-06-02 21:45:44 -07:00
casey
8b14ddb5e8 A couple small but important fixes:
- Don't adjust scroll position in TrackListView after a requery if the
  query contents haven't actually changed
- Ensure resizing doesn't lose the selected item in ListWindow
- Added the concept of query hashes and generalized TrackListQueryBase
  so different types of queries can be supplied to a TrackListView.
2016-06-02 18:45:16 -07:00
casey
a8f8425f91 Gapless playback seems to be working with waveout! Not perfect for all
MP3 files, but that's to be expected. TODO: CoreAudio changes to allow
gapless playback.
2016-06-01 21:51:39 -07:00
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