Commit Graph

7793 Commits

Author SHA1 Message Date
Michael Lotz
d98a3e026c package kit: Fix corruption of last package chunk on update.
PackageFileHeapWriter::_UnwriteLastPartialChunk() used ReadData() to
extract the last partial chunk into the pending buffer. This indirectly
calls PackageFileHeapWriter::ReadAndDecompressChunk(), which assumes
data past the last full chunk to come from the pending data buffer.

Since the pending data buffer is not filled in at that point, the call
to ReadAndDecompressChunk() simply did nothing, leaving the object with
a correctly sized but completely nulled pending data buffer. The last
partial chunk of a package would therefore always get corrupted when
updating a package.

Fixes #11306 that provided a reduced test case that happened to corrupt
the only chunk of a package, nulling the .PackageInfo and therefore
making the error more obvious as subsequent parsing of the info failed.
2014-10-09 23:41:39 +02:00
Adrien Destugues
26b0a53d12 Add parsing support to BTimeFormat. 2014-10-09 13:35:23 +02:00
Adrien Destugues
e0f81db657 re-add the _BMCItem_ class for binary compatibility.
This was removed in hrev17147, because our implementation of BMenuItem
does not uses it anymore. However, we must keep it in order to properly
unarchive BMenuFields that were archived in BeOS.

One application that was crashing because of this is VNCViewer.
2014-10-08 17:45:20 +02:00
Adrien Destugues
961fdd8cc3 BMessageFormat: parse the pattern at construction
* Instead of parsing the pattern everytime Format() is called, parse it
only once when the object is created.
* Adjust all callers to make use of the feature and reuse the instance
as much as possible. This also allows calling B_TRANSLATE only once
instead of everytime the formatting needs to be done. We use either a
static instance (when the message pattern is constant) or a field (when
it is not known to be constant).
* Since the BMessageFormat instances are now reused, add locking to
avoid race conditions (ICU itself is thread safe, but the format pattern
is recreated when the locale is changed)
2014-10-08 15:12:48 +02:00
Adrien Destugues
824cb460ac DateTimeFormat: handle custom 24 hours clock.
The "j" format pattern selects a 12 or 24 hours clock automatically
depending on the locale, but it doesn't work when the format is forced
in the locale preflet or through the BFormattingConventions API. So we
manually pick either K or H depending on that setting.
2014-10-08 11:36:52 +02:00
Adrien Destugues
892f3b8b9a DateTimeFormat: use the proper format for timezone.
V used to mean the same as z, but was repurposed to someone else. So
actually use z which is what we want.

Fixes #11325.
2014-10-07 22:02:27 +02:00
Adrien Destugues
97d07c8af2 Add API for parsing dates. 2014-10-07 17:40:18 +02:00
Adrien Destugues
090a0d7686 Add an API to get month names. 2014-10-07 16:08:22 +02:00
Adrien Destugues
4a3a474224 Reimplement BDateTimeFormat using ICU support
* Avoid hardcoding the format to "date, time"
* Allows using DateTimePatternGenerator to create custom formats from a
set of fields.
2014-10-07 13:06:40 +02:00
Adrien Destugues
53382a8aa7 Start making use of BMessageFormat. 2014-10-07 10:05:40 +02:00
Adrien Destugues
0da7796e6c Add BMessageFormat class.
This can be used to format complex messages properly. It moves the
complexity of handling plural forms, gender, and anything else needed
into the localizable string, rather than hardcoding it in the code.

This moves the difficulty of handling these things properly to people
doing translations, rather than relying on developers to do it.

Fixes #10755, but our localization must now be updated to make use of
the feature.
2014-10-07 08:51:23 +02:00
Adrien Destugues
37456be704 Make use of the "invalid control" look flag
* Use a red border for BTextControl when the invalid flag is set.
2014-10-06 09:08:17 +02:00
Stephan Aßmus
6f9eb8d1bb HaikuDepot: Validate input before creating account
Provide error or info alert when fields are invalid, suggest
providing an email, but allow to ignore the warning.
2014-10-04 13:31:58 +02:00
Sidhant Sharma [:TigerKid001]
5db8f48cb6 Change Success/Failure colors.
* Part of #10834
* Colors were picked from http://clrs.cc, which was suggested by John Scipione.

Signed-off-by: Adrien Destugues <pulkomandy@pulkomandy.tk>
2014-10-02 10:58:00 +02:00
Adrien Destugues
df4a02e0fa Fix initialization of BTimeUnitFormat
* The default constructor must configure it for the default locale
* Fix uptime not showing in AboutSystem
* Add a testcase for this
2014-10-02 10:23:31 +02:00
Adrien Destugues
e3857211d3 Move DateTimeFormat and NumberFormat out of BLocale
* ... and adjust all callers
* Remove NumberFormatImpl: we rely on ICU to provide this and it can be
fully wrapped into the C++ file. The class was a stub anyway.
* "Monetary" format is included in NumberFormat for now. There may be a
more generic solution to handle monetary and BTimeUnitFormat (and other
arbitrary units)
2014-10-02 09:19:54 +02:00
Oliver Tappe
d0fe638dbd Look for private key of default geolocation service.
* Let the jamfile set HAVE_DEFAULT_GEOLOCATION_SERVICE_KEY if the
  header that is supposed to contain it is found in src/kits/shared
  (which isn't the case for normal builds).
* In case HAVE_DEFAULT_GEOLOCATION_SERVICE_KEY is set, include the
  corresponding header and activate Mozilla's geolocation service with
  the key defined in that header.
  
This procedure should enable buildbot to create nightly images without
exposing the private service key.
2014-10-02 00:32:48 +02:00
Oliver Tappe
3006031ac2 Move Geolocation to kits/shared and make it private. 2014-10-02 00:32:48 +02:00
Adrien Destugues
03b2550ef1 Move time formatting to BTimeformat.
* Harmonize API for all B*Format to take an output BString by reference
as the first parameter,
* Move the FormatTime methods from BLocale to BTimeFormat
* Adjust all callers for BTimeFormat, BTimeUnitFormat and
BDurationFormat.
2014-10-01 18:13:35 +02:00
Adrien Destugues
0a925409bc Adjust all BDateFormat callers again. 2014-10-01 16:35:34 +02:00
Adrien Destugues
44f11d0982 Make BDateFormat inherit from BFormat again
* Move relevant parts up into BFormat so other format classes can use
those
* Adjust BDurationFormat and BTimeUnitFormat for the changes
* Remove the "default" date format, it is better to keep only a default
locale and let applications create B*Formats from it as needed.
* Creating a B*Format without arguments to the constructor now
configures it for the default locale, which allows for easy use in
standard cases (formatting something with the current language and
format)
* Creating a B*Format is potentially an expansive operation, it is
advised to keep the instance around and reuse it whenever possible.
However it must be "refreshed" when the locale changes, for apps which
supports that, since it keeps a copy of the language and formatting
convention, rather than a pointer to the locale as it did before.
2014-10-01 16:29:12 +02:00
Adrien Destugues
13d147b12b Introduce "invalid" text controls.
* MarkAsInvalid is used to enable or disable the mark
* The B_INVALID BControlLook flag is used
* invalid BTextControls are drawn with a red border.
* You ar encouraged to let the user know more precisely what's wrong, by
showing an helpful error message next to the control or in a tooltip.
2014-10-01 12:12:16 +02:00
Jessica Hamilton
58844015bf BNotification: correct SetIcon documentation 2014-10-01 19:01:15 +13:00
Adrien Destugues
afd5ec11d2 Add setters to BDate and BCalendarView
* BDate setters don't perform any validation, use with caution.
* BCalendarView setters do perform validation checks, and will adjust
the day so it fits the requested month or year.
* Add tests for the BCalendarView setters.
2014-09-30 15:38:24 +02:00
Adrien Destugues
526d483999 Make BDateFormat mutable
* Add setters for the language and formatting conventions
* Add shortcut getter and setter for the date format
* Use those in the locale roster to make the BDateFormat actually use
the system preferred language and format.
* Applications can also use this to extract specific information from
the system format (eg. set date format to "LLLL" to extract month
names), or define specific formats more easily (eg. for parsing and
generating e-mail headers or HTTP cookies).
2014-09-30 11:49:47 +02:00
Adrien Destugues
f188c1defa BDateFormat: improve API
* Use a reference rather than a pointer for the output string, removing
the need for NULL checks (which were missing, anyway)
* Adjust callers to that change
* Add new Format variant taking a BDate argument
2014-09-30 09:47:02 +02:00
Stefano Ceccherini
611ef1414f BSoftSynth: Select the soundfont from the settings file 2014-09-28 18:23:57 +02:00
Adrien Destugues
03598119a7 libcolumnlistview: hybrid arch build, add to image
* This is a very useful control, and 3rd-party apps should be able to
use it.
* But, there are planned improvements (making a better model/view
interface) which prevents making it part of the stable API yet.
2014-09-28 11:51:03 +02:00
Adrien Destugues
1d38b7a86a Geolocation: avoid static init of BUrl
* Fixes #11290.
2014-09-27 19:20:39 +02:00
Adrien Destugues
2a5e33a980 Move date formatting from BLocale to BDateFormat
* There is a little code duplication. This will be moved to BFormat once
the time and datetime formatting is also moved out of BLocale
* The way to create a BDateFormat from a BLocale is still open for
discussion. I'm undecided between making BDateFormat a member of
BLocale, or adding a BDateFormat(const BLocale&) constructor.
* Adjust all users of the API.
2014-09-26 18:31:11 +02:00
Adrien Destugues
be37c44a19 style fix. 2014-09-26 16:16:52 +02:00
Adrien Destugues
2f36873105 UrlRequest: add empty SetTimeout for ease of use.
* Requests that support this can implement it, NetworkRequest does
* Build fix: no need to return status_t.
2014-09-26 15:51:36 +02:00
Adrien Destugues
654ae69aa6 NetworkRequest: add a SetTimeout method. 2014-09-26 15:21:54 +02:00
Adrien Destugues
8a39d53d23 Geolocation: remove leftover print. 2014-09-24 19:01:58 +02:00
Adrien Destugues
80e7d92949 BGeolocation: make it work with the actual API.
* It seems openbmap is using a variation of the API that's not
compatible with what other providers use.
* Fix a ";" instead of "," in the JSON request. We should get a
BJsonBuilder to avoid such silly errors
* Improve indenting of the request to ease readability.
* Parse the latitude and longitude as doubles, not strings.

This was tested against Mozilla Location Services and I get accurate
results (withing a few hundred meters). However I'm not sure how to
share the MLS API key safely so it is used only in Haiku, I will discuss
this with the MLS team.
2014-09-24 18:32:03 +02:00
Adrien Destugues
13f0458896 Add BGeolocation experimental API.
A BGeolocation object can query an online service to get geolocation
and geotagging data:
 * LocateSelf() tries to locate the machine it is running on, by using an
online database of wifi access points
 * Locate() (not yet implemented) searches a BString and converts it to
lat/lon coordinates (reverse geotagging)
 * Name() (not yet implemented) finds a suitable name for the given
coordinates (address, building name, or anything fitting).

The default service used is openbmap.org, which is freely available but
not very accurate. A request has been sent to Mozilla to use MLS
(Mozilla Location Services), which is a bit more accurate but needs an
API key. MLS is used for geolocation on FirefoxOS, for mobile phones
which don't have a GPS, and the data can be contributed by Firefox for
Android or the dedicated MozStumbler app.

Alternatively, Google Maps also provide the service, but wants
people to pay for it. Google Maps data is more accurate as all Android
devices contribute data to it.

All 3 services use the same JSON-based API: we send a list of reachable
Wifi APs (mac address and signal strength), and we get lattitude and
longitude information, and possibly extra data which will currently be
unused.

This can be used to implement HTML5 geolocation with reasonably accurate
results, but it can also be used in other places. For example
FirstBootPrompt could try to guess a list of most likely languages and
keyboard layouts from it (if wifi is working at install time, that is).
2014-09-23 16:37:59 +02:00
Stefano Ceccherini
d3c865ecd8 BSoftSynth: Also look for softsynth in B_SYSTEM_SETTINGS_DIRECTORY and B_SYNTH_DIRECTORY.
Note that this will probably we changed again as we introduce a setting file
to locate the softsynth.
2014-09-23 06:31:57 +02:00
Stefano Ceccherini
1d5966ca12 BSoftSynth: Revert to Pete's original code
When you change code that you don't understand correctly... just DON'T.
Fixes a crash.
2014-09-22 07:24:16 +02:00
Stefano Ceccherini
d553b90c86 BSynth/BSoftSynth: implemented GetAudio().
Patch by Pete Goodeve (modified by me, hopefully for the better and
without introducing bugs) which implements BSynth::GetAudio().
2014-09-21 19:46:04 +02:00
Stefano Ceccherini
b2e8d9627a Style fixes 2014-09-21 19:21:34 +02:00
Stefano Ceccherini
94bfc1f561 BSoftSynth: pointer style, 80 column limit 2014-09-21 17:40:10 +02:00
Stefano Ceccherini
f511367b33 BSoftSynth::SetInstrumentsFile(): Check if file exists. 2014-09-20 19:57:03 +02:00
Stefano Ceccherini
c0622eb3d3 Fix spacing 2014-09-20 19:21:23 +02:00
Stefano Ceccherini
bd68cd0517 Midi Kit: SoftSynth: Implement reverb (patch by Pete Goodeve)
Applied patch by Pete Goodeve which implements reverb in the soft synthesizer.
2014-09-20 19:19:12 +02:00
Stefano Ceccherini
6cd948da2a Midi Kit: Actually look in /home/config/settings/synth/synth.sf2 2014-09-20 19:08:34 +02:00
Stefano Ceccherini
bee3de4dbb Midi Kit: Made it possible for the user to use a soundfont different
from the one supplied by default.
Since the PM move, it was not possible anymore to use a different soundfont,
since the /boot/system/data folder became read only.
Now the user has to put the soundfont (or, better,  a symbolic link to it)
into /home/config/settings/synth.sf2
In the future we'll supply a preflet to select the soundfont.
2014-09-20 19:01:41 +02:00
Humdinger
76a607d2fe BAboutWindow: use the standard "OK" instead of "Ok" 2014-09-19 17:26:30 +02:00
Stefano Ceccherini
0bbed9620a TextGapBuffer: Style changes
Change long to int32
Removed useless parenthesis
2014-09-19 09:28:14 +02:00
Stefano Ceccherini
0eb9b74e00 BTextView: Fixed GetText().
Patch by Pete Goodeve which fixes a problem in TextGapBuffer::GetString()
used by BTextView::GetText(). Thanks! Fixes #8447.
2014-09-19 09:17:17 +02:00
Adrien Destugues
7603710e9a Style fixes. 2014-09-16 21:39:53 +02:00