A music player that connects to your cloud/distributed storage.
5
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat: add ability to add queue picks to a playlist

+57 -4
+8
src/Applications/UI/Navigation.elm
··· 7 7 import Html exposing (Html, text) 8 8 import Html.Attributes exposing (href, style, tabindex, target, title) 9 9 import Html.Events exposing (onClick) 10 + import Html.Events.Extra.Mouse as Mouse 10 11 import Material.Icons.Types exposing (Coloring(..)) 11 12 import Maybe.Extra as Maybe 12 13 import Svg exposing (Svg) ··· 21 22 = NavigateToPage Page 22 23 | OpenLinkInNewPage String 23 24 | PerformMsg msg 25 + | PerformMsgWithMouseEvent (Mouse.Event -> msg) 24 26 25 27 26 28 type Icon msg ··· 141 143 142 144 PerformMsg _ -> 143 145 Html.button 146 + 147 + PerformMsgWithMouseEvent _ -> 148 + Html.button 144 149 ) 145 150 [ case action of 146 151 NavigateToPage page -> ··· 151 156 152 157 PerformMsg msg -> 153 158 onClick msg 159 + 160 + PerformMsgWithMouseEvent msg -> 161 + Mouse.onClick msg 154 162 155 163 -- 156 164 , case labelType of
+32 -1
src/Applications/UI/Queue/ContextMenu.elm
··· 1 - module UI.Queue.ContextMenu exposing (futureMenu, historyMenu) 1 + module UI.Queue.ContextMenu exposing (futureMenu, futureNavigationMenu, historyMenu) 2 2 3 3 import ContextMenu exposing (..) 4 4 import Coordinates exposing (Coordinates) ··· 56 56 { cached = cached, cachingInProgress = cachingInProgress } 57 57 tracks 58 58 ] 59 + 60 + 61 + futureNavigationMenu : { manualEntries : List Queue.Item } -> Coordinates -> ContextMenu Msg 62 + futureNavigationMenu { manualEntries } = 63 + [ [ Item 64 + { icon = Icons.not_interested 65 + , label = "Reset ignored" 66 + , msg = QueueMsg Queue.Reset 67 + 68 + -- 69 + , active = False 70 + } 71 + ] 72 + , -- 73 + if List.isEmpty manualEntries then 74 + [] 75 + 76 + else 77 + [ Item 78 + { icon = Icons.waves 79 + , label = "Add queue picks to playlist" 80 + , msg = 81 + manualEntries 82 + |> List.map .identifiedTrack 83 + |> AssistWithAddingTracksToPlaylist 84 + , active = False 85 + } 86 + ] 87 + ] 88 + |> List.concat 89 + |> ContextMenu 59 90 60 91 61 92 historyMenu :
+13
src/Applications/UI/Queue/State.elm
··· 42 42 ShowFutureMenu a b c -> 43 43 showFutureMenu a b c 44 44 45 + ShowFutureNavigationMenu a -> 46 + showFutureNavigationMenu a 47 + 45 48 ShowHistoryMenu a b -> 46 49 showHistoryMenu a b 47 50 ··· 239 242 , itemIndex = index 240 243 } 241 244 item 245 + |> Just 246 + |> (\c -> { model | contextMenu = c }) 247 + |> Return.singleton 248 + 249 + 250 + showFutureNavigationMenu : Mouse.Event -> Manager 251 + showFutureNavigationMenu mouseEvent model = 252 + mouseEvent.clientPos 253 + |> Coordinates.fromTuple 254 + |> Queue.futureNavigationMenu { manualEntries = List.filter .manualEntry model.playingNext } 242 255 |> Just 243 256 |> (\c -> { model | contextMenu = c }) 244 257 |> Return.singleton
+1
src/Applications/UI/Queue/Types.elm
··· 16 16 | Select Item 17 17 | Shift 18 18 | ShowFutureMenu Item { index : Int } Mouse.Event 19 + | ShowFutureNavigationMenu Mouse.Event 19 20 | ShowHistoryMenu Item Mouse.Event 20 21 | ToggleRepeat 21 22 | ToggleShuffle
+3 -3
src/Applications/UI/Queue/View.elm
··· 66 66 , Label "Clear" Shown 67 67 , PerformMsg (QueueMsg Clear) 68 68 ) 69 - , ( Icon Icons.not_interested 70 - , Label "Reset ignored" Shown 71 - , PerformMsg (QueueMsg Reset) 69 + , ( Icon Icons.more_horiz 70 + , Label "Menu" Hidden 71 + , PerformMsgWithMouseEvent (QueueMsg << ShowFutureNavigationMenu) 72 72 ) 73 73 ] 74 74