When Rockbox Utility is started for the first time, a new version is started or
the user selected to do so on startup a changelog window is shown.
Change-Id: Ic223e092a09d31ccbbfcd9b973355225cac27632
Use a function instead of looking for an existing entry and creating a new one
if necessary every time.
Change-Id: I7b385dad7366f27370545a7d1a9f7052510cca11
Now boot to RB if play/pause is pressed during 1 second, and to OF if
back is pressed 1 second. Otherwise power off. If hold is on, also power
off. In USB and alarm context, always boot and back determines OF vs RB.
Change-Id: Ie1d6c971901d6473255461cc7d71a5ee3177ecad
If a single player is detected it might still have ambiguous as state due to
the mountpoint not being found. Make sure to display a sensible error message
in that case.
Change-Id: I7d62e739019b26a583fe6aab502d0f870e67587e
The old detection code simply assumed only one player to be connected and threw
all information it could find together, causing wrong results in various cases.
Rewrite it to better handle this.
- Don't expect only a single player to be attached. Return a list of players
found instead. The configuration dialog can then show the user a list to
select from. This is not implemented yet, the configuration dialog will only
show the devices found and tell the user to disconnect all but one.
- Handle ambiguous cases better. A player found that is ambiguous is treated as
such, and if refining the result didn't lead to a single match for each
possible player a single entry is created that indicates it being ambiguous.
The current code needs a bit of additional cleanup (the result exposes internal
data to the caller it shouldn't) to be done later.
Change-Id: I22dc2f73cdd6a9d90c34f3a0703aa9e0a2d2087a
Use insertMulti() instead of insert() when adding found USB devices to the
list. This means the keys of the list will now be ambiguous. This is not a
problem since the value is only used to display the user a nice string.
Previously we'd loose two identical devices attached to the system since the
second one would overwrite the first.
This does not apply for Windows, since Windows will list each function of a
composite device. This results in a device running Rockbox (with HID enabled)
showing up twice, which isn't wanted.
Change-Id: I1306b71122a210c55871ff8e14d2b5a04012cc4e
In preparation of giving the user a list to choose from add displaying a list
of all devices connected. Since devices might be ambiguous (multiple devices
share the same USB ID but detecting by other means failed) the listed devices
might exceed the number of actually attached ones.
Change-Id: Ice52da15523e5f3493a6fb687392301c4d5b8a36
I was too aggressive when converting reads to standard reads, this
one is memory based and not file based
Change-Id: Ibe7162894cc44cbd79f56cafe7136bda0f76bcdc
When using variadic macros there's no need for IF_MD2/IF_MV2 to deal
with function parameters. IF_MD/IF_MV are enough.
Throw in IF_MD_DRV/ID_MV_VOL that return the parameter if MD/MV, or 0
if not.
Change-Id: I7605e6039f3be19cb47110c84dcb3c5516f2c3eb
Rewrite dualboot in C code instead of assembly. Also properly
handle subtarget and simply Makefile. This should make the
dualboot stub more readable and easier to extend. The new code
also gracefully handles power up from RTC alarm on imx233.
Change-Id: I7c225254b1463a97e76b6cb4de476aa2d2c9d2f9
Refactor code.
This tool can now either load a scrambled rockbox
firmware (in which case the model is check against the
firmware), or any ELF file. This is useful for example
for hwstub which produces a ELF file and still needs
to be loaded by producing a SB file.
Change-Id: I7aa381b3f6587788d1950793e89ce5608c53cccc
The mkimxboot was becoming messy with juge functions and
redundant code. Factor reading/writing/loading code into smaller
functions. Introduce the concept of rockbox firmware to simplify
support of other formats than scramble.
Change-Id: I3a61295ca5abca1a0eee8c9e8709c6b8dfa256a6
Change configuration to use filtered mountpoints list. Add HFS+ to the list of
supported filesystems -- while Rockbox doesn't run on HFS+ MacPods will use
that format, and not having them in the list will then make OS X users wonder
why their Ipod isn't showing up. This might need to get revised later.
Change-Id: I5eeeb05be6780cb3952a0081df0ce782eca01589
Some devices contain a bin file in the root folder of the player. This caused
confusion a couple of times, since the installer asks for a bin file. Add a
note that the required file is not present on the player and will get removed
automatically.
Change-Id: I6cd5c25b319770555c3939377a3ed86ed3181dad
OS X' gcc 4.0 (still used to be able building fat binaries) doesn't ignore that
option and instead errors out.
Change-Id: Id5927ff04dc606480af9add554eeaa75c169510f
On OS X we're passing -arch twice which dependency generation doesn't like.
Since we don't have dependencies that differ between architectures simply don't
add them during dependency generation.
Change-Id: Ie3d58bf9af31edcacb88345c7debf39eb798e302
If Rockbox Utility has no configuration file on the machine updateSettings()
will overwrite the global cache folder settings with an empty string before the
value is set properly by the user confirming the configuration dialog. QDir()
getting an empty string will result in the current working directory getting
used, and thus the temporary files ending up there.
On Windows most users are unlikely to have noticed this since running the
executable from within the distribution zip file will make Windows execute it
in the systems temporary path.
Change-Id: I7724a82af403955786798c7380198086837e128f
gcc 4.8 introduces this new warning which some Qt4 headers triggers. Since we
don't want to change Qt simply disable it. The warning doesn't show up when
compiling with Qt5, so only disable it for Qt4.
Change-Id: Ia8fcf0859e0a370def36bc9b43ed4d096a80db28
Automatically generate dependency files for all sources so changes in headers
are picked up automatically. Use one dependency file for each source file,
since that allows to create them without using external tools (except the
compiler of course).
Change-Id: I246c1ceb525692547af22a2e32c4bab0c11507e1
Windows mkdir doesn't know about the -p option and requires paths to use \ as
path separator. Try to detect when building on Windows and use the Windows
internal function instead of relying on a compatible mkdir in the path.
Change-Id: I47d47d45edeb38c672321f77d6e91268bf744dba
Create the object - source dependency internally and use a more generic rule
for compiling. Removes the need for explicit rules for source files located in
a different folder.
This adds the limitation for SOURCES and LIBSOURCES to only hold C files.
Change-Id: I56f6a4b1e7df36347cd2f54051e072251f456092
Make sure its value quotes are properly escaped. Otherwise make on Windows
causes problems. Also, expand CPPDEFINES only once.
Change-Id: I52e91f17626b2596f389811b22abc12d94f721d1
Setup AR before checking for ccache to avoid adding ccache to ar. Setup CC and
CFLAGS in the beginning as well. Quote ar and system speex options to fix
building with ccache enabled.
Change-Id: I21714f0849e990abeac72dcda52c81474e090934
We need this only for cross compiling. Trying to figure the compiler prefix
fails if the compiler isn't gcc (i.e. clang), and we only support gcc when
cross compiling.
Change-Id: I822e1b47ec7e9d7e9fdeae8ccf3b8d417a472ef9
Previously several additional rules were added by qmake to build the required
libraries. This has a couple of problems on Windows, requiring the use of a
msys shell.
Additional variables are passed as environment variables. Windows doesn't
understand this. Passing the variables via make command line argument works but
make won't be able to change those variables anymore, breaking things. Use
intermediate variables passed via make command line that are then exported by
the called Makefile. This doesn't work in the generated Makefile since the
export lines must not be part of a rule.
Also cleans up the project file a bit.
Change-Id: Iaffb059ce8bafe17a35bd1e0a74ae7acd966c138
The new autodetection will always use USB IDs to identify players (among other
means). Add missing IDs for players the current implementation relies on other
means for detection only.
Change-Id: I037c23705518210b6ed93b4d13ccb96d933aa198
Both autodetection functionality and the configuration dialog assumed detection
to only return one found device. This isn't necessarily true, especially since
some players can be detected but detecting their mountpoint might be ambiguous
(only if no previous Rockbox installation is present).
Instead of returning individual results (found "ok" player, found "error"
player etc.) return a list containing an entry for each player. Current
autodetection code will never return more than one entry since it doesn't
handle multiple devices yet, and the configuration dialog will show an error if
multiple devices are found. Thus there is no user visible change yet. Both
autodetection and configuration dialog can now get extended to handle multiple
devices.
Change-Id: I79b763dbd6e7111783194bcc22ab7cc06a4061c1
Using uname has a couple of problems, especially when cross compiling. Instead
check the defines set by the preprocessor to figure the type of binaries it
produces. This improves support for cross compiling as it allows to (1) select
the correct default target and (2) makes it possible to use separate build
folders for different targets.
Change-Id: I69a32904dab97755034f2f0d63f8402309d479d2
Current MinGW #defines interface, causing the preprocessor messing up the
function parameter. Rename it to avoid this.
Change-Id: Id49edbfc056a42456d88c9e260e54844e8b1ca07
The target all is set in libtools.make. Setting it here breaks make knowing
about the correct default target when cross compiling.
Change-Id: Icdd022094d28e4dcd442e48bb6acd1fd8f9a6ad6
Instead of trying every mountpoint during autodetection allow filtering out
filesystems that are not supported when retrieving the system mountpoints.
Change-Id: Ic23a5c804cb7c78c146dbc1af7443c67ce12464e
There are two reasons for this:
- QUrl::toEncoded() has problems with some characters like the colon and @.
Those are not percent encoded, causing the string getting parsed wrongly when
reading it back (see FS#12166).
- The password is cleartext in the configuration file.
While using base64 doesn't provide any real security either it's at
least better than plaintext.
Since this program is open source any fixed mechanism to obfuscate /
encrypt the password isn't much help either since anyone interested in
the password can look at the sources. The best way would be to
eventually use host OS functionality to store the password.
Change-Id: I6ac49d68211236e540b6ca16481e0e1c196532b7
When creating a new HttpGet object schedule any old one for deletion instead of
dropping its reference and relying on Qt to clean it up once the parent object
is removed.
Change-Id: I66f2a6f01c6b6ad3a0dce0eb4fd3eacfaf7e733d
Schedule them for deletion instead of deleting them. That way pending events
can still be handled before the main loop deletes them. Fixes crashes on the
second download during installation.
Change-Id: I7c718dbb0200a64d1aa3bbb6c2839282fb965dec
SAPI only allowed values from 1.0 to 10.0, making it impossible to turn down
the volume of the voice. Increasing the volume by a factor of 10.0 is nothing
that is likely to be useful, so change the upper limit to 2.0 and decrease the
lower limit to 0.0.
Lame allowed values from 0.0 to 1.0, making it impossible to increase the
volume of the voice. Change the upper limit to 2.0 as well.
Change-Id: I8add103f6e4b3c8f1b11ee2c0ea478727bdc99c1
Add a switch to override the product and component version of the
sb file. This can usually for target like the Zen X-Fi2 where the
upader allows to drop any file named firmware.sb and prints the
version: by using a funky version the users can check they got it
right. This should not be used on the fuze+ or zenxfi3 because the
OF prevents downgrade.
Also make rbutil always zero out the option structure passed to
mkimxboot, this has already created bugs in the past.
Change-Id: I175c5def52c40c2132e11300e2f037d60a4f040e
The previous dualboot scheme had a major flow: it needed to hold
menu to boot OF but the X-Fi2 boot in recovery mode with menu!
It was possible but very trick to enter the OF with USB plugged.
This code provides a new scheme:
- no USB plugged: boot to OF when menu is pressed
- USB plugged: boot to OF when power is pressed
Change-Id: Ia6e76d3ada1f67137b727daa050cf6c77afbbfb9
Setting the cache later can result in the system trying to create cache files
in the current working directory, since an empty cache path will be treated as
current directory. If this happens set the system temporary path.
Change-Id: I1623330013d387a966015edd0e1d278c922d9475
HttpGet used to use QHttp which has been deprecated since a while and has been
removed from Qt5. Rewrite the class based on QNetworkAccessManager which is the
recommended way these days.
Change-Id: I4902309c433a85ec18e157ef3a9f5e60fd0f4b1f
The Themes Window reuses the download object for getting preview images. Since
the object is reused it isn't necessary to set the cache path on each network
request.
Change-Id: Ibc531e09ad19ede3cab7326d9230bd5188710d98
RFC850 timeformat isn't y2k compliant. Furthermore, parsing turned out to be
broken and it doesn't seem supporting the format is necessary anyway.
Change-Id: I062e636a9e016ff1ac49d2a55f00adb1af182576
If a file is not available in the cache immediately sent a GET request. Using a
HEAD request to retrieve the file timestamp on the server is not necessary and
only creates an unnecessary network request.
Change-Id: I358507dcc0c6b837ff47e5fd710b5262d03cb7b0
Offline Mode was intended to allow performing an installation without network
access. However, to get the required files cached the same installation has to
be performed with network access, which is a rather strange prerequisite. A
better way would be a way to direct Rockbox Utility to some local "repository"
that holds the required files.
Furthermore, Offline Mode hasn't been tested since long and is likely to be
broken since the caching mechanism has been extended.
For now remove this functionality. As far as I know it's been rarely used (if
at all) anyway.
Change-Id: Ib2af4892708e0440bd0a7940c131f04182ddb39a
This function returns an internal enum value of QHttp (which is also
deprecated). It was only used for showing an error to the user / showing it in
the system trace. Since it is an enum value it doesn't have much value. Log /
show the error string instead.
Change-Id: I54b9b6026969f8108f779b02a04477f0ad9201ab
On Windows the sector buffer is allocated using VirtualAlloc, thus releasing
this buffer should be done using VirtualFree. Provide an additional function
for deallocating the buffer so users of ipodpatcher do not need to know about
this.
Change-Id: Ibb0fc575a185148a389e63935e86a392bf8d180d
The working directory will usually be different than the one libtools.make is
located in, so make sure to use the correct starting folder for the relative
path.
Change-Id: I9a84a0573c9f1f32601f31587425689dcf8fb81f
Similar as the ipod_t structure for ipodpatcher the sansa_t structure holds all
relevant information for sansapatcher. Put the global sansa_sectorbuf pointer
into it as well.
Change-Id: Iad08ef6aafc49609c3d0d556914246f230ee0179
The ipod_t structure holds all relevant information for ipodpatcher. Put the
global ipod_sectorbuf pointer into it as well. Allows the Rockbox Utility Ipod
class to be instanciated multiple times since each instance can now have its
own buffer.
Change-Id: Ie319cbadbc20c367ceadba9a46b4dc34b57a79a7
Similar as done with SAPI / MSSP make the current implementation for executable
based TTS engines a base class and create derived classes for each supported
TTS. Removes the need for the implementation to know about the individual TTS
engines.
Add support for speaking directly (i.e. without going through a temporary wave
file, currently only used by espeak).
Change-Id: I59bbbd6ee4c2c009b2a8d8e0ab4a9b39ea723d6e
While the current implementation of getTTS() will always return an object this
might change later. Check the returned object before using it to be on the safe
side.
Change-Id: Ic949cae7cfbe6f3086dee6aab741b0acafe14640
When retrieving USB IDs create a list of players matching to a USB ID instead
of assuming only one player. This prevents non-unique IDs overwriting each
other and will be used for improved autodetection later.
Currently only the first ID is used during detection, and no additional IDs
have been added yet.
Change-Id: Ieac5594108bae708e364bd2c8df88f61fcdcbdcd
MSSP is accessible via vbs by simply changing the object to be used (both
SAPI5 and MSSP use the ISpVoice COM interface). Add command line parameter to
sapi_voice.vbs to switch the COM object used, and add the necessary
implementation of the SAPI class to Rockbox Utility.
Important: you will need to install the Speech Runtime separately and install
the version matching the bitsize of Rockbox Utility. I.e. you will need to
install the x86 version even on a x64 machine (unless you build a 64bit binary
of Rockbox Utility).
Change-Id: If760cd69c556c17a2ae539965d0941d16fdc10e1
Based on the previous change add a derived class for SAPI4 support. Note that
SAPI4 support had been disabled, so it's also disabled to not show in the
selection dialog for now.
Change-Id: Iffda7daafd9327ef8821c4fe4b1b0fc581607f49
Move command line template for listing voices and generation into protected
member variables and initialize them in the constructor. This allows derived
classes to overwrite these, allowing to change the command line call. Make the
name used for storing the classes values to the configuration parametrize at
all.
Remove SAPI4 support, this will be handled in a derived class later.
Change-Id: Ib5a261c56cdf93a44fffdfa6edea409d89fd84ba
The currently used comma for separating voices for the /listvoices command is
used by Speech Platform based voices. Change the character to a semicolon
which isn't used by voices.
Change-Id: I1a7e6e4229f864f56635143e864dadf38cdd7e73
Since especially Windows puts the eject functionality behind an icon in the
systray which is usually hidden and doesn't complain if a USB drive is
unplugged without ejecting it first ejecting such a device might not be
obvious to everyone. Add a button to the main window allowing to eject the
selected player.
Currently only implemented for Windows.
Change-Id: I785ac1482cda03a1379cf6d0fd0d9a0ff8130092
While TalkFileCreator uses the current mountpoint for writing logging
information it does not use it for constructing the correct path to generate
talkfiles for.
Since there is not much point in generating talkfiles for files that are not on
the player (and the UI limits the paths that can get selected to folders on the
player) make TalkFileCreator use the mountpoint for creating correct paths.
Fixes FS#12748.
Change-Id: Id682a3738649e4167556255599553edc6e2acd48
Archos devices don't need a bootloader, but the automatic enabling of the
bootloader installation didn't handle this case, making a first time
installation impossible. Fix this by respecting the "none" bootloader case
separately.
Change-Id: I9b06348401f525c5447cf4ce061f2463083c0e61
Windows can show the version in the file properties. This requires an
additional entry in its resource. Restructure global version defines since the
former requires a different format than used previously.
Change-Id: I2bf261a02ea8e0af6dc081568960debfb779d396
- Move a GUI-only implementation class around.
- Make some strings non-translatable which don't make sense translating.
- Rename internal state in installation class. There is no current build
anymore.
Change-Id: I7384c5601de36bc48f858fe5c7b009653d439d94
When installing themes without any themes selected show a notice in the log and
continue instead of stopping.
Change-Id: Ieeb03e4656b041ce1dda25b2c44b6b6f0aa0ca80
When Rockbox Utility can't figure if the installed bootloader is a Rockbox
bootloader don't tell the user that it can't uninstall the bootloader but be
more specific stating that no Rockbox bootloader has been found.
Change-Id: I8e1eae4bdba30da87d10d2dc11fb9d48e176de2a
Bootloader handling is different on nano2g compared to the other supported Ipod
models. Since ipodpatcher handles this internally make ipodpatcher also provide
a way to check this when using from Rockbox Utility to avoid duplicating the
(already existing) checks in the latter.
Fixes wrong "bootloader already installed" message on nano2g.
Change-Id: Ibc658d775fbac7cf9a7e329d445fe97828a455d8
If neither an old selected build nor a release is available fallback to
selecting the development build.
Remove some old code that was not supposed to be be kept.
Change-Id: I883535bd8e7981e68bc3fac3bcd5f375e1237242
Check the correct image when looking for the Ipod firmware version. On nano2g
this is a different image.
Change-Id: Ic7981363399d44e03247a81277522bc1d271090a
Give the user a chance to cancel the backup if the selected file already
exists. Since the filename is automatically generated from the installation
version information this can happen when trying to create a second backup of
the installation.
Change-Id: Iee34e576c4b3b94a4ccf99836741806b52a8affd
The Quick Start tab turned out to be used a lot but not explaining what its
functionality actually does, leading to various amount of confusion. The Quick
Start tab and its functionality have been completely removed.
As replacement the reworked Installation tab now includes both the entries from
the old Installation tab (Bootloader and Rockbox) and the Extras tab (Fonts,
Themes, Game files). Each of the items can be enabled or disabled individually,
and the selection is saved in the configuration. The only exception is the
bootloader option, since installing the bootloader is only needed once. To help
with this the bootloader checkbox is automatically enabled if no Rockbox
installation is found, and disabled if one is found. While it would be nicer to
check if the bootloader is actually installed this is not possible for various
players so the implementation simply relies on a Rockbox installation.
This should also make it much easier to update an existing installation.
Current limitations:
- the selected themes are not saved.
- it is not possible to detect if the target has the plugins that require
additional game files prior to installation. Thus the "Game files" option is
available for all targets but simply skipped if the plugins are not found.
Change-Id: I1929bb7045e382fcbba431cca057d3121607d3a9
Allow using the themes installation dialog as selection dialog separately from
installing themes. For this the installation is now triggered separately and
can be told to not to do the installation on Ok button. In this case the dialog
is selection only, and the Ok button is changed to Select. The installation
itself is still done in the class but started by calling the install() method
separately.
Change-Id: I856db8204788302b2b539e6d8283f73cb354f033
After shrinking the size of the Rockbox logo shown and making the selected
device display two lines there is now enough room to also show an icon of the
player. The icon is scaled depending on the application font size, so for
setups configured with a larger font it still should show up in a reasonable
size.
Change-Id: I8f62f3292c62f820309157db73741b57fd6371ef
The original way of including the Rockbox logo wastes quite a bit of space.
Make it smaller and move it to the left, so the information about the
configured device can go next to it.
Change-Id: I790ffc423135e02e28cc963b0b565284b75bf98c
The "Installation" dialog allows backing up the current installation by
creating a zip file from the .rockbox folder since quite a while. However, this
has the drawback that you need to update your build to create a backup, but
creating a backup might be desireable in other cases as well (before updating
themes, or just for backup reasons). Since the functionality is somewhat hidden
it's also not obvious to users such a functionality exists (most users are
likely to use the "Quick Start" instead).
Implement backup functionality as dedicated dialog placed on the Uninstall tab.
Rename the Uninstall tab to accommodate this.
Change-Id: I1d2c6c8f646672d1b66bb442408fbfc2eeec700d