Commit graph

141 commits

Author SHA1 Message Date
Thomas Martitz
35b4ba8513 root_menu: Remove previous_music_is_wps() and change previous_music via event callback.
Change-Id: I0f3b85a8fe8010a2480ef44a72a90dc7904bc777
2014-04-15 23:54:28 +02:00
Thomas Martitz
470989bd70 events: Rework event subsystem (add_event, send_event) to be more versatile.
add_event_ex is added that takes an extra user_data pointer. This pointer is
passed to the callback (add_event and add_event_ex have slightly different
callbacks types). All callbacks also get the event id passed. Events added
with add_event_ex must be removed with remove_event_ex because the user_data
pointer must match in addition to the callback pointer.

On the other add_event is simplified to omit the oneshort parameter which
was almost always false (still there with add_event_ex).

As a side effect the ata_idle_notify callbacks are changed as well, they
do not take a data parameter anymore which was always NULL anyway.

This commit also adds some documentation to events.h

Change-Id: I13e29a0f88ef908f175b376d83550f9e0231f772
2014-03-14 23:36:30 +01:00
Michael Sevakis
31b7122867 Implement time-based resume and playback start.
This complements offset-based resume and playback start funcionality.
The implementation is global on both HWCODEC and SWCODEC.

Basically, if either the specified elapsed or offset are non-zero,
it indicates a mid-track resume.

To resume by time only, set elapsed to nonzero and offset to zero.
To resume by offset only, set offset to nonzero and elapsed to zero.

Which one the codec uses and which has priority is up to the codec;
however, using an elapsed time covers more cases:

* Codecs not able to use an offset such as VGM or other atomic
formats

* Starting playback at a nonzero elapsed time from a source that
contains no offset, such as a cuesheet

The change re-versions pretty much everything from tagcache to nvram.

Change-Id: Ic7aebb24e99a03ae99585c5e236eba960d163f38
Reviewed-on: http://gerrit.rockbox.org/516
Reviewed-by: Michael Sevakis <jethead71@rockbox.org>
Tested: Michael Sevakis <jethead71@rockbox.org>
2014-03-10 04:12:30 +01:00
Thomas Martitz
706e6b7a75 Move VOL_NAMES definition to mv.h
Fits better and including dir.h is more messy for some places.

Change-Id: I3ec30dcc1ac2734ad3844c903238b6cc2f4e134c
2014-02-23 20:23:51 +01:00
Jonathan Gordon
6dbfd44b6e main_menu_config: New plugin to configur the main menu order
Plugins/Applications/main_menu_config allows you to edit the
main menu order without having to manually edit config.cfg.

Press the standard OK button to access the internal menu
which allows you to move items up/down in the order and toggle
their visibility. Exit via this menu to have the order saved.

(Suggestions welcome to improve this UI)

Change-Id: I59715ef1ca265aeb6f9666ef27026bc1093f2579
2014-02-13 22:11:23 +11:00
Amaury Pouly
193753aa1f Introduce volume_{present,removable} and fix invalid calls in apps/
The code was trying to probe for volume presence by calling drive layer
with volume index. It is a miracle it get unnoticed so far. Introduce
proper volume probing using the vol->drive map in the disk layer.

Change-Id: I463a5bcc8170f007cad049536094207d2ba3c6fc
Reviewed-on: http://gerrit.rockbox.org/669
Reviewed-by: Amaury Pouly <amaury.pouly@gmail.com>
2013-11-20 21:34:04 +01:00
Michael Sevakis
023f6b6efd Get rid of some superfluous single-purpose functions in playback.
* Remove explicit tracking of elapsed time of previous track.
* Remove function to obtain auto skip flag.
* Most playback events now carry the extra information instead and
  pass 'struct track_event *' for data.
* Tweak scrobbler to use PLAYBACK_EVENT_TRACK_FINISH, which makes
  it cleaner and removes the struct mp3entry.

Change-Id: I500d2abb4056a32646496efc3617406e36811ec5
2013-07-13 00:08:51 -04:00
Richard Quirk
212e7808d5 Use crc32 of filename to resume tracks
As well as using an index, which breaks when a file is added or
removed, use the crc32 of the filename. When the crc32 check passes the
index is used directly. When it fails, the slow path is taken checking
each file name in the playlist until the right crc is found. If that fails
the playlist is started from the beginning.

See http://www.rockbox.org/tracker/6411

Bump plugin API and nvram version numbers

Change-Id: I156f61a9f1ac428b4a682bc680379cb6b60b1b10
Reviewed-on: http://gerrit.rockbox.org/372
Tested-by: Jonathan Gordon <rockbox@jdgordon.info>
Reviewed-by: Jonathan Gordon <rockbox@jdgordon.info>
2013-01-02 08:29:38 +01:00
Jonathan Gordon
3ac7af95a9 root menu setting: make the setting handles whitespace
Change-Id: Id981bb518017e272dd7a230ae7d799ef0f55847c
2012-12-16 14:26:03 +11:00
Alexander Levin
7676dae3e0 More meaningful name and type for 'root menu' setting
The patch changes 'int root_menu' to 'bool root_menu_customized'
which better expresses what the value means.

Change-Id: Ic272ac161fc05f5d3298e1e46578977dd590ebaf
2012-03-16 22:26:13 +01:00
Jonathan Gordon
9f48f5f207 root menu: Use - to reset the root menu order from a config
use root_menu_order: - to reset the order

Change-Id: I10c38926d79b10c88e5f1e0acdd85ca1a1489edf
2012-02-27 09:34:37 +11:00
Jonathan Gordon
13412f67ca main menu: Add the ability to hide and reorder the main menu items.
To change the shown menu items add the line "root_menu_order:<items>" into your config.cfg
<items> can be any of:
bookmarks, files, database, wps, settings, recording, radio, playlists, plugins, system_menu, shortcuts

Manual entry by Alexander Levin

Change-Id: Ie7f4bfb0f795184de094d05fc341a6cedd1c0cde
Reviewed-on: http://gerrit.rockbox.org/104
Reviewed-by: Jonathan Gordon <rockbox@jdgordon.info>
2012-02-25 12:40:44 +01:00
Nick Peskett
3074b64025 Moved initial checking of sleeptimer_on_startup from root_menu.c to settings.c
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31439 a1c6a512-1295-4272-9138-f99709370657
2011-12-26 09:57:55 +00:00
Bertrik Sikken
cb972abc48 Another round of making local functions static
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31384 a1c6a512-1295-4272-9138-f99709370657
2011-12-20 20:35:28 +00:00
Jonathan Gordon
101693fd30 FS#12251 - User shortcuts in the main menu.
Custom shortcuts which give the user fast access to regularly used files/folders/settings/whatever.
Thanks to Alexander Levin for the manual part of the patch

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30990 a1c6a512-1295-4272-9138-f99709370657
2011-11-15 13:22:02 +00:00
Thomas Martitz
e347146b62 Sleep timer options: persistent duration and start on boot.
This makes the sleep timer persistent, so that the duration is remembered
across reboots. Additionally, it adds a setting to automatically apply
it at boot.

Flyspray: FS#10849
Author: Nick Peskett

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30777 a1c6a512-1295-4272-9138-f99709370657
2011-10-17 18:57:38 +00:00
Björn Stenberg
0942e2a0f7 Changed the FOR_NB_SCREENS macro to always be a for loop that declares its own loop variable. This removes the need to declare this variable in the outer scope.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30756 a1c6a512-1295-4272-9138-f99709370657
2011-10-15 19:35:02 +00:00
Jonathan Gordon
835683b442 %cs (current screen) changes:
* Every top level menu item now has a different screen number
* Playlist viewer and Playlist Catalogue browsers no longer share the same number

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30261 a1c6a512-1295-4272-9138-f99709370657
2011-08-07 08:39:56 +00:00
Jonathan Gordon
97a4c1efa4 FS#11808 - Major playlist handling changes (on disk playlists)
* Playlists are treated similar to directories in the browser, they now open in the viewer when selected instead of automatically starting the playlist.
* Make the "Playlists" main menu item useful, it now displays the playlist catalog (and has been renamed accordingly)
* Default to storing playlists in the catalog
* Add a UI to move the catalog directory

(other minor stuff too)

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30177 a1c6a512-1295-4272-9138-f99709370657
2011-07-20 14:11:15 +00:00
Jonathan Gordon
038fc8a66e Fix the %cs tag for the pitchscreen and playlist viewer
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29997 a1c6a512-1295-4272-9138-f99709370657
2011-06-13 07:33:20 +00:00
Jonathan Gordon
b58d3656d7 FS#11925 - Add a proper system to keep track of the current screen/activity to make %cs far more useful
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29944 a1c6a512-1295-4272-9138-f99709370657
2011-06-01 14:41:49 +00:00
Dave Chapman
0269b27eb8 Missed #if change from r29462 - thanks to Thomas Martitz for spotting.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29465 a1c6a512-1295-4272-9138-f99709370657
2011-02-28 18:21:00 +00:00
Thomas Martitz
cbb68d41fe Fix returning to wps from a plugin.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29463 a1c6a512-1295-4272-9138-f99709370657
2011-02-28 14:38:18 +00:00
Dave Chapman
224c8262ee Change the condition for including the shutdown menu item to something more appropriate.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29462 a1c6a512-1295-4272-9138-f99709370657
2011-02-28 12:14:34 +00:00
Thomas Martitz
2bb81f70f5 Move fm radio related menus out of radio.c into apps/menus/.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29162 a1c6a512-1295-4272-9138-f99709370657
2011-01-29 15:01:28 +00:00
Thomas Martitz
f7da333d12 Re-factor code for the plugins main menu item, enabling better icons in that menu.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29160 a1c6a512-1295-4272-9138-f99709370657
2011-01-29 11:50:38 +00:00
Thomas Martitz
42a8cc3835 Give the playlists main menu item a context menu (playlist settings).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29158 a1c6a512-1295-4272-9138-f99709370657
2011-01-29 01:01:44 +00:00
Thomas Martitz
89a4cf2693 Change the way how playlists and system menu items in the main menu are internally invoked so that the mechanism to
pass the back button press to the android system (to let it go to the home screen) works for them.
This fixes that the back button goes still to the home screen after entering these items.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29157 a1c6a512-1295-4272-9138-f99709370657
2011-01-29 01:01:12 +00:00
Teruaki Kawashima
08af5d8404 FS#11777: enhancement for rockbox_browse()
* Add struct browse_context to be passed to rockbox_browse.
* Show proper title when selecting e.g. .wps file or .sbs file from the settings menu.
* Add select only mode to rockbox_browse(). when a file is selected, it's path is stored to buffer and the browser exits without 'playing' the file.
this will allow to use the browser in more places to select file including plugins.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28831 a1c6a512-1295-4272-9138-f99709370657
2010-12-14 13:37:58 +00:00
Jonathan Gordon
a41041aeb4 Remote android button handling (again). do the press/unpress more like other targets (i.e correctly). The DPAD is special in that the press/unpress happens too quickly, so always post it with the BUTTON_REL. This means all keymaps using the dpad need to remember it will always have a BUTTON_REL (which also means they cant do repeats, which are impossible anyway).
Also make the back button go back to the OS home from the rockbox main menu

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28475 a1c6a512-1295-4272-9138-f99709370657
2010-11-03 14:34:57 +00:00
Teruaki Kawashima
36cd720e8e do not reset last selected item after leaving the file browser when in root.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28360 a1c6a512-1295-4272-9138-f99709370657
2010-10-25 13:55:34 +00:00
Jonathan Gordon
efbcece07b New setting to control the file browser start location.
Set using the menu item in folder context menus, clear in the filebrowser settings.
    
    Can be abused to start selecting a *file* (or have a folder selected) instead of a starting inside a folder by removing the trailing / in the .cfg
    
    This only affects the file browser when it would open in / before (on boot, or when entereing after backing out of the browser before (*not* when exited with the menu action)



git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28206 a1c6a512-1295-4272-9138-f99709370657
2010-10-04 10:34:38 +00:00
Rafaël Carré
21c7b9debb load_plugin_screen(): handle all plugin_load() return values
Fixes crashes when pictureflow returns PLUGIN_GOTO_WPS

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27965 a1c6a512-1295-4272-9138-f99709370657
2010-09-01 14:12:14 +00:00
Thomas Martitz
79798ff5f3 Make getcwd match the posix variant, make get_current_file() behave similar to it and add a few sanity checks.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27903 a1c6a512-1295-4272-9138-f99709370657
2010-08-27 10:33:09 +00:00
Thomas Martitz
9c0b2479f7 Rockbox as an application: add get_user_file_path().
For RaaA it evaluates user paths at runtime. For everything but codecs/plugins it will give the path under $HOME/.config/rockbox.org if write access is needed or if the file/folder in question exists there (otherwise it gives /usr/local/share/rockbox).
This allows for installing themes under $HOME as well as having config.cfg and other important files there while installing the application (and default themes) under /usr/local.

On the DAPs it's a no-op, returing /.rockbox directly.

Not converted to use get_user_file_path() are plugins themselves, because RaaA doesn't build plugins yet.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27656 a1c6a512-1295-4272-9138-f99709370657
2010-08-01 16:15:27 +00:00
Jonathan Gordon
c92b2cc16a fix a fun infinite loop when follow playlist is on and you started playback from PF and stopped it inside the WPS
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26718 a1c6a512-1295-4272-9138-f99709370657
2010-06-09 09:41:16 +00:00
Jonathan Gordon
10e24d22c4 rename HAVE_PICTUREFLOW to HAVE_PICTUREFLOW_INTEGRATION to make it more clear what it is needed for
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26716 a1c6a512-1295-4272-9138-f99709370657
2010-06-09 08:51:29 +00:00
Jonathan Gordon
881a5b9759 reclaim most of the delta from the pictureflow commit
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26715 a1c6a512-1295-4272-9138-f99709370657
2010-06-09 08:14:41 +00:00
Jonathan Gordon
d871ff8cce FS#11270 by Chris Savery - WPS integration for pictureflow
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26710 a1c6a512-1295-4272-9138-f99709370657
2010-06-09 04:25:41 +00:00
Frank Gevaerts
a0557b23f0 remane hotswap.* to sdmmc.*. The contents have nothing at all to do with hotswapping things
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26598 a1c6a512-1295-4272-9138-f99709370657
2010-06-05 21:12:16 +00:00
Thomas Martitz
50a6ca39ad Move c/h files implementing/defining standard library stuff into a new libc directory, also standard'ify some parts of the code base (almost entirely #include fixes).
This is to a) to cleanup firmware/common and firmware/include a bit, but also b) for Rockbox as an application which should use the host system's c library and headers, separating makes it easy to exclude our files from the build.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25850 a1c6a512-1295-4272-9138-f99709370657
2010-05-06 21:04:40 +00:00
Thomas Martitz
c19e53654b Playlist Viewer Changes to bring consistency:
- combine its two context menus to one and
- make the ACTION_STD_MENU go to the main menu as it does in all other screens
- call playlist_viewer() via root_menu to reduce call depth and to be consistent with other screens (and for the above changes to be more flexible w.r.t to the following screen)

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24791 a1c6a512-1295-4272-9138-f99709370657
2010-02-20 19:06:39 +00:00
Jonathan Gordon
b2eb44ce0e FS#10824 - viewport/statusbar API rework.
Hopefully the only user visible changes are:
- fm and recording screens go by the statusbar setting (sbs or inbuilt)
- plugins go back to using the theme as they should for menus and lists
- splash screens might get cut a bit... entirely theme and splash dependant.. if there is a problematic one we can look at it later.
- hopefully nothing more than very minor screen flickerings... let me know exactly where they are so they can be fixed

New GUI screen rules:
* Screens assume that the theme (sbs+ui viewport+ maybe background image) are always enabled. They may be disabled on a per display basis, but MUST be re-enabled on exit
* Screens must not be coded in a way that requires a statusbar of any type.. the inbuilt bar will be removed shortly.
ALWAYS RESPECT THE USERS SETTINGS unless the screen requires the full display to fit.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23904 a1c6a512-1295-4272-9138-f99709370657
2009-12-09 07:25:46 +00:00
Thomas Martitz
1ecb753668 Redo a hack that precluded entering a folder on an ejected hotswap drive. Use storage api and proper defines for the drive folder instead.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23755 a1c6a512-1295-4272-9138-f99709370657
2009-11-26 00:37:27 +00:00
Rafaël Carré
bb9808b8af root_menu() can't return, tell gcc about it
Since it can't return, app_main() can't either, tell gcc about it.

Remove dead archos code (present if root_menu() would return
erroneously), and rename app_main() to main() on target

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23494 a1c6a512-1295-4272-9138-f99709370657
2009-11-03 12:20:54 +00:00
Thomas Martitz
a3f0a45c0f Make next_screen static and add a comment.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23210 a1c6a512-1295-4272-9138-f99709370657
2009-10-16 19:14:46 +00:00
Thomas Martitz
9072a4558c Add %cs tag.
It can be used conditionally and indicates the current screen (wps, rec, radio screens or lists).

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23207 a1c6a512-1295-4272-9138-f99709370657
2009-10-16 19:14:33 +00:00
Tomer Shalev
d7cdd08664 RTL: Add support for DB init message
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23020 a1c6a512-1295-4272-9138-f99709370657
2009-10-08 22:40:38 +00:00
Thomas Martitz
4c48b59be8 User definable UI viewport, to be able to restrict the UI into a viewport for all bitmap displays.
Flyspray: FS#8799

This will allow for pretty themes, for example those with nice glass effects on their backdrops (some might argue they're wasting screen space but it's upto them),
as well as allowing for future background WPS updates in the main UI.

Plugins are not converted yet, they simply use the full screen. Ideally, any plugin that does *not* want the UI viewport, should take care of that itself (i.e. plugins should normally use the UI viewport).

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22365 a1c6a512-1295-4272-9138-f99709370657
2009-08-16 22:20:11 +00:00
Bertrik Sikken
0307cd16a0 Remove some unused #includes
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22183 a1c6a512-1295-4272-9138-f99709370657
2009-08-06 08:20:06 +00:00