History log of /haiku/src/apps/haikudepot/model/Model.cpp
Revision Date Author Comments
# 43e19c47 13-Mar-2024 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot: Fixes for Language Handling

Change-Id: Ic6d5a59396f778f684985fad0e39985197c380b3
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7524
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# bf866d5e 17-Feb-2024 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot : Improve Language Code Handling

HDS is soon going to be enhanced to deal with more than
just the two-character ISO language codes that it
currently supports. The logic in HD is currently expecting
that HDS will only supply these two character codes. This
change is about making adjustments to be able to cater to
any ICU language IDs from HDS.

The naming in HDS is still going to continue to use the
terminology that it currently does; it will call the
identifier for a language a "natural language code". The
HD source will instead reflect the nomenclature of ICU
and call the same thing a language ID.

Change-Id: Ib138c2e3b7b667edf15cd497c2f710f80b3c29f8
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7424
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Niels Sascha Reedijk <niels.reedijk@gmail.com>


# 88af15cf 18-Dec-2023 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot : Refactor Screenshots

Rework the way in which the application deals
with screenshots so that there is a repository
of screenshots that is referenced from
identifiers on the package model and not that
the screenshot bitmaps are stored with the
model and not cleaned up.

Change-Id: I632def96852a518b3f6b1c8b81909de117bbbc54
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7296
Reviewed-by: Andrew Lindesay <apl@lindesay.co.nz>


# 2af0f027 08-Dec-2023 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot : Rename Depot Url to Identifier

The old depot / repository "url" was renamed as
"identifier" some years ago. This field seemed
to remain as "url" and is now corrected.

Change-Id: Icd1390745311030e3fd57b852de91ed69b326496
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7190
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>


# 4b347fcc 23-Sep-2023 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot: Token Based Authentication

This switches the application over from using basic
authentication to using token-based authentication in
preparation for later using Open-ID based
authentication flows. The application version is also
bumped in order that the server can detect this version
at some later date in the future when it no longer
supports basic authentication itself.

Change-Id: I7addde1d57503c58d6bcd54908f22f66830c0c59
Reviewed-on: https://review.haiku-os.org/c/haiku/+/6944
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>


# 409af934 01-May-2022 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot: Fix Crash on Shutdown

The MainWindow itself was a BReferencable via a listener
virtual class. It looks like the error has come from a
conflict between the MainWindow's own deletion and the
state of the reference count. This change moves the
listener / BReferencable out of the MainWindow so that
the lifecycle of the BReferenable can be managed
correctly.

A further problem here is that the new listener
was leaked from the MainWindow class on shutdown.
To resolve this problem requires a considerable
change to the "process coordinator" system.

Fixes #17689

Change-Id: I7230843ba05537015f4a597b4a616b96c6db3dde
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5285
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Andrew Lindesay <apl@lindesay.co.nz>


# f6e22563 21-Mar-2022 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot: Send Repository Code on API

Some APIs will require the repository source
code to be sent in the future instead of the
repository code. This change prepares for
this.

Change-Id: Iccf0baca077ab81356ed81c18d14122a5b0dacec
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5137
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# 0ebb9177 04-Jul-2021 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot: reflect package install changes

This update will mean that HaikuDepot is able to detect
install / uninstall actions on packages at the system
level and reflect this in the user interface.

Fixes #15879, #15994 and #15046.
Relates to #11674.

Also cleans up disused code in the WorkStatusView.

Change-Id: Ide2d5d93c2f71915bc7cfe7d3628e5f343e43f35
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4145
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# 133ebab6 16-Mar-2021 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot: Increment Pkg View Counter

Closes #16814

Change-Id: Idf451628b4680fb33563dbf4817bd11049c326b5
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3803
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>


# d75b4d61 31-Jan-2021 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot: Remove Custom List

Further removal of the use of custom list class;
this time with the package lists.

Relates To #15534
Change-Id: I1f01ed9d5ddbd7754097ce0adbf505d6ba17fd2f
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3732
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# 779ab335 09-Dec-2020 X512 <danger_mail@list.ru>

use .IsSet() instead if .Get() != NULL

Change-Id: Ia2b7a719fd398e78cc3b11d4f7b02cb81179f65f
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3488
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>


# 9984ca59 07-Jan-2021 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot: Remove Custom List

Further removal of the use of custom list class.

Relates To #15534

Change-Id: I1d84b562b334e5e52ed4772bad3a6aea7b715562
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3657
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# 4cd33fec 22-Oct-2020 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot: Fix x86gcc2 Build

Change-Id: I06c94f6c09f9a4fdec3dc22a2da704225a7845c5
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3345
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>


# a5e4976d 22-Sep-2020 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot: Lists; Categories + Stabilities

Remove use of custom list class where it is not
really required in the area of Categories. Also
introduces stabilities relayed over from the
Server and used in the HD user interface instead
of being hard-coded.

Relates To #15534

Change-Id: Ib71141e71cd4a0b4882827e2e59b62072de01b4b
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3331
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>


# 05880d13 16-Sep-2020 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot: Custom List Removal (Depots)

Remove use of custom list class where it is not
really required in the area of Depots. Also
convert the use of Depots to be wrapped in
BReference to match other model objects. At the
same time some data-loading logic has been
simplified.

Relates To #15534

Change-Id: Ie6fcc35f258a0c69c44990e4b09f6c32ec79945d
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3225
Reviewed-by: Rene Gollent <rene@gollent.com>


# 4af3fbf9 18-Sep-2020 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot: Lists & Prominences

Use BStringList instead of bespoke List class for
lists of strings.

Also fix the prominences so that the sort
ordering in the featured packages uses the sorting
algorithm properly.

Relates To #15534

Change-Id: I56e67931aa08e6bfee6d2be21a459152216790e2
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3232
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# f0e491d3 28-Jul-2020 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot: Icon / Tarball Handling

Instead of exploding the tar-ball of icons from
HDS, keep it as a tar-ball, index it and read
data directly out from specific indicies on demand.

This will speed up the process of downloading
the icons by removing the unpack. Also updates
will be faster by avoiding the need to delete the
old icon files.

Because icons are loaded on-demand, the start
time is faster by avoiding all the icon loads.
There are also savings on memory consumption.

Indexing on each load is surprisingly fast so
no external index is maintained. Likewise for
the tar-balls's meta-data.

This commit does not cover the implementation
of an LRU cache of the icons in memory.

Relates to #15370

Change-Id: Ia1647d8c805be89618f493d2592bf7877fca3f14
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3205
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# fa5c8097 25-Jul-2020 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot: Languages List

Abstacts the list of supported languages into
the LanguageModel class preventing use of
List. Also; fix a few cases where newer
logging techniques may have caused incorrect
logic flow.

Relates To #15534

Change-Id: I144fe4788abdaf0d93e53eeabc97b3f7aa2ec710
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3085
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# f96d1f4d 10-Jul-2020 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot: Better Logging

Changes the logging in HD to use a macro for the
various log levels to declutter the code and to
make it easier to more systematically log.

Change-Id: I025970707a0a11e7e3aaa4b52fc91288af0183f5
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3018
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# 9295c1f6 03-Jul-2020 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot: Url -> Identifier

This change will rename the confusing "url" within
HaikuDepot to be "identifier" in line with
corresponding changes in pkg kit and HDS. Also at
the same time support is introduced for HDS
repos' meta-data to artificially match against
multiple repos; as requested for the future R1B3
release process. Some tidy-ups and extensions have
been made to the JSON schema-to-model and the
schema-to-parser scripts.

Change-Id: I402e7d610986039f58d72028bda7de977e9115e2
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2986
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# 8c6ebdec 20-May-2020 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot: Changelog & Contents Tabs

Disable the changelog tab in the case that a package
has no changelog. Also disable the contents tab and
do not attempt to load the package contents in the
case where a package is not installed on the host.

Resolves #15299

Change-Id: Id17daf46aba6709f35438db2ee30f3485fc251ea
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2749
Reviewed-by: humdinger <humdingerb@gmail.com>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# c4199192 19-May-2020 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot: Performance

This change removes two mistakes I made a long time ago
that caused unnecessarily copying of lists of data. This
fix speeds up the UI alot.

This change also clears data in UI list elements when a
bulk load is requested. It stops clearing otherwise and
instead uses "add" and "remove" operations in the lists
which is OK now because the UI list elements are much
faster than they have been in the past. This removes
the strange clean-and-reload that was visible in the UI
previously.

A threaded package loading system was put in place a long
time ago, but with these performance improvements this
mechanism is no longer necessary; it has been removed to
simplify the code.

Fixes #16012

Change-Id: I393cee929695726539602b51630ae285fb8384f1
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2748
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# 1f3909ad 02-May-2020 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot: Referencable Fixes

Some misuse of BReferencable / BReference are causing the
debugger to fire while debugging another issue. This
should fix some of it.

Change-Id: I895e209afe9e350e35b111739140c85133107227
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2556
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# ccf707d0 30-Mar-2020 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot: Fixes for Tabs

Cleans up the code around tab-switching and
also improves some logic around inserting
packages into the list of 'prominent'
packages by using a binary search.

If Haiku is installed into an environment with no
networking then it won't be able to talk to HDS
and so won't know which packages are promoted.
In this case switch the user to the "all packages"
tab so they are not shown a blank panel by default.

Relates to #14675, #14927

Change-Id: I14dd3be4af09a98245ddd0a9704bd8d53ed64a53
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2478
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# 10cd325c 30-Mar-2020 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot: Check User Auth on Start

The user might have changed their authentication details
on the server and the client won't detect this until
they go to do something. Instead, if possible, check
this as the client starts. Also check that the user has
agreed to the current user usage conditions.

As a side-effect this generalizes the logic for process
coordination in the main window and also fixes some bugs
in the main window's progress display as the application
starts.

Relates to #15209

Change-Id: I4c9620648819ecd14fb095e4cb2c66fe7b2a0920
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2467
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# 32ed7659 22-Mar-2020 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot: Check Working Files Writable

At start time, it is possible that the local disk
system is not able to be written to where the
application is trying to store working files. This
change introduces a check at startup that ensures
working files can be written to and warns the user
if this is not the case.

Change-Id: I907bf41a3b4eceb0083119a082fd5e68e4d534c1
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2397
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# 041bbff9 29-Nov-2019 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot: Better Logging of Cache File Creation

A user has reported having some problems around
initial use of HaikuDepot and this seems to be
related to setup of the directories etc... at
start time. This change should improve the
logging so that it is easier to identify the
cause. Also some additional locking has been
introduced as there might be a problem where two
threads are creating the same directory at the
same time.

Relates to #15493

Change-Id: I4cbfda7c2ce87b8509ceb78788b7995ee3185050
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1980
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# d2d4866d 19-Sep-2019 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot: Display User's Usage Conditions

A HaikuDepotServer may have previously agreed to
user usage conditions. If this is the case then
they are now able to view those conditions. There
were some problems with date formatting in this
change and so the date formatting logic has moved
into the HaikuDepot source code temporarily until
issues with the BDateTime class can be resolved;
most likely as a separate piece of work.

Relates to 15209

Change-Id: Ic3e5413d9139f410d7f7e8b566d4c56352dd2778
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1870
Reviewed-by: Stephan Aßmus <superstippi@gmx.de>


# 051ee9d8 01-Sep-2019 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot: Improvements to User Ratings

Change to match the web user interface behaviour;
the user ratings for all architectures are shown
and the list of user ratings is restricted to the
actual repository in use. This is important
where two repositories have the same package with
different versions. Also the architecture
is displayed with the version in the package info
page.

Change-Id: I8c024d9ddec6b97f52233b7462c47d2a1c83af09
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1817
Reviewed-by: Andrew Lindesay <apl@lindesay.co.nz>


# 89b16bb4 22-May-2019 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot: Categories from Server

The list of categories for packages is currently
hard-coded into the HaikuDepot desktop
application. This change will change that so that
the list is obtained from the HaikuDepot Server
system and is always up to date with the server's
list of categories.

Change-Id: I757732f4d771e1599d6ad9c85cd65905640de928
Reviewed-on: https://review.haiku-os.org/c/1478
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# f85e0300 28-Apr-2019 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot: Load Languages from HDS

The HaikuDepot application has, thus far had its
own hard-coded list of languages that the user is
able to choose when (a) creating a new account or
(b) creating a user-rating. This change will mean
that those languages are loaded from the HDS
server dynamically and in this way the user can
choose from the full list. There have also been
improvements to the way in which the languages are
displayed in the menu as well.

Change-Id: If7cb7b87f348ca59d503d276a22444e72d0e6168
Reviewed-on: https://review.haiku-os.org/c/1425
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# c91b716e 02-Mar-2019 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot : Generate Sources -Fix Build

In recent changes to HD's build files to generate
some sources at build-time there was a problem
with builds that were configured to run with some
element of concurrency. In this change, the steps
that should be in sequence are done with shell
commands to avoid race conditions.

Change-Id: I5b6fb4907d8ea5f3ca90de956ecce322cd89c685
Reviewed-on: https://review.haiku-os.org/c/1130
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# 3369e03d 15-Dec-2018 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot: Process and Data-loading Improvements

This change is a reshuffle of the backend processing involved in the
aquisition of data from servers including the pull-down and load of
HPKR data as well as the pull-down and load of data from the
HaikuDepotServer (HDS) system. The driver for this change is to
implement an initial implementation of a progress bar for the
loading of data as the application starts.

The following are notable changes;

* Removed some previously attempted 'functional style' logic in the
model which didn't fit well with C++
* Use of the base-url in the logical mapping from HDS and HD data is no
longer required and has been removed
* Some logging has been improved making it clearer which part of HD
is producing the logging which in turn helps with debugging issues
* List class has been modified to more cleanly support sorted lists
and binary searches; tests have also be updated accordingly
* Reorganise and tidy-up of the data-loading processes' structures
* The local repository update (HPKR) and data-load occur in background
processes now in the same system as the HDS data-load - this has been
crudely shifted from the MainWindow to new Processes and incorporated
into the background processing system
* The 'state-machine' background process runner is now replaced with a
'coordinator' style approach that can more easily handle the new
processes related to HPKR loading.
* Progress for loading processes is shown in the main window in the
WorkStatusView - this is flickering a bit, but basically works
* Added some documentation regarding how Processes work in the system
* The "Refresh Repositories" menu item now also updates data from HDS
* The "Refresh Repositories" menu item is disabled when the background
processes are running that update the repository data

Some further refinement would be good, but this change is large enough
for one round of improvements. There is an issue that the status bar
is used for screenshot display as well as this data-loading, but that
was the case before so it is something that can be dealt with later if
it is a problem.

Change-Id: I7668307645e3aabaf7e4a6e37e2cca80cc0f489e
Reviewed-on: https://review.haiku-os.org/770
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# f1962303 05-Oct-2018 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot : Add Italian To Languages

Unfortunately reference data is not downloaded
from HDS to HD (it is being worked on) and in
the meantime somebody wants to work with Italian
translations so this will add Italian into the
list of hard-coded supported languages.

Change-Id: Ie0b923ce60acd473cbbea5bbac2254402d7a8fdd
Reviewed-on: https://review.haiku-os.org/618
Reviewed-by: Humdinger <humdingerb@gmail.com>


# 3b17d8dd 27-Jun-2018 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot / PackageKit: Repositories 'Identifier' URL

Repositories are identified with a 'url' in the
remote 'repo.info' file. There is also a
'base url' which is the URL locally with which
the system is able to access the repository
data on. There is some confusion between these
two terms in the source. This change aims to
separate the two out and consistently name them.
The settings for the repository locally also was
not storing these values and that has been fixed.
Debug info about the repositories also did not
display the two urls consistently and will now
also do so. Finally, HaikuDepot now correlates
locally configured repositories with the data in
HaikuDepotServer using the identifier URL; this
makes the use of mirrors with HaikuDepot possible.

Fixes #13888
Change-Id: I66dfe589b05c24e1ab123a6945352e0f24b60bf1


# a9edb9bf 05-Jun-2018 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot: Multiple improvements for user-ratings

* Display of the user-ratings listing improved
* When a user-rating is created / edited, the pkg is updated
* Creation date of the user-rating is unpacked shown
* Ability to create a user-rating with a comment, but no numerical rating
* Stars display show grey if no numerical rating present
* Improvements to error reporting when problem arise
* Parsing of the 'revision' field of the version working
* Removed debug logging for the text engine
* Other minor tweaks

Change-Id: I99f881ab1426641ef4177eec2d3bcacc7cb74e95


# d13c3d89 04-Mar-2018 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot : Handling for Depot Name Anomalies

There is a problem primarily manifesting itself in
the x86_64 build where the packages' names from the
solver are not correlating with the names of the
as-configured depots. There was also a problem
with a local variable being the same name as a function
parameter. This does not fix the underlying problem,
but avoids further anomalies in the HaikuDepot UI.

Possibly related trac #11317, #11674, #13940.
Change-Id: Ic140f114bbe38e59c78760213843bf492ff7a270


# 80a272ee 27-Jan-2018 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot : Changelog, Remove old API and Version Bump

This change re-instates the change-log function (TRAC#13827) that was
dropped in earlier changes. Also now-disused API handling logic is
removed. A small code-style fix is made and the version of the
application has been incremented so that this version's logic can later
be detected by the HDS application server.


# 39f49f70 26-Dec-2017 Julian Harnath <julian.harnath@rwth-aachen.de>

HaikuDepot: speed up package change handling

* During package population, when the repository is being
refreshed, thousands of package change messages arrive
in MainWindow while the PackageInfo fields are filled with
data.

Every such message caused a full generation of a package
list (including applying filters to all known packages),
which is quite slow, and caused the freezing from bug
#13823. The list was only used temporarily to figure out
if the package should be visible now or not.

* Instead of generating a new package list, we now only
match the single updated PackageInfo against the current
filters.

* Fixes #13823

* To reduce CPU usage even more, it would be better to not
generate at all, or not subscribe to, package changes while the
list is being initially populated, and/or to coalesce all the
changes to each package info into one update message (instead
of one for title, one for prominence, etc).
Deferring subscription requires some additional thought on when
to subscribe then, and how to avoid leaving a "hole" where
changes would go unnoticed.


# 3094fef3 19-Dec-2017 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot : More Backend Communications Improvements

* Further improves the logging and provides some
basic performance numbers.
* Moves the bulk-load logic out of the data-model
class.
* Introduces a state-machine for the bulk-load
process so that it will be more easily able to be
shifted to non-blocking IO when the HTTP libraries
can do that.
* Implements concurrent loading of the bulk-data to
hopefully improve lead time for icons and meta-data.
* Loads data to a temporary file and then moves to the
final location in order to avoid partially written
data in the cache.
* Handles situations where no network is available;
prevents attempt to access the network.
* Allows bulk-load processes to be cancelled when the
application quits.
* Introduces command-line arguments to help simulate
scenarios to help with testing performance and
network absence.
* Implements ordered insert and binary search in the
'List' class + basic unit test.


# 74e41611 24-Nov-2017 Julian Harnath <julian.harnath@rwth-aachen.de>

HaikuDepot: hide debuginfo too when hiding development pkgs

* When development packages ([...]_devel) are not shown, we now also
hide debuginfo packages ([...]_debuginfo).

* Fixes #13095


# c23b641c 11-Nov-2017 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot: New Mechanic for Package Data Download

The application was previously making a number of different
requests to the application server in order to pull-down
meta-data (ratings, localization etc...) for packages. This
will now happen in one request per repo. The data is
also cached locally and freshness of the data is checked
back with the server before new data is pulled down.


# f0665db4 05-Nov-2017 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot: Improved logging control

The application had previously no means to control the verbosity of
logging. This excessive logging meant that it was bit hard to
understand what is going on. Now it is possible to define the level
of logging that is output; especially as the application pulls-down
data from the remote server system.


# 3d528c4a 03-Nov-2017 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot: Change communication mechanism with server for repos

(last commit with same title only included new files - added those now)

Previously the desktop application would make a number of JSON-RPC calls
over HTTP to get the repositories. Now it will make a single call to get
the repositories and cache the result. This uses standard HTTP cache
signalling techniques and allows the server-side the ability to cache
the generated data as well. Note that the model classes and parse-
related classes are generated and may not be code-style compliant. They
are generated from JSON schema files in the server-side project.
Information about this as well as the python files used to generate the
C++ classes and headers are included in the server-side project.


# 0d51483f 29-Jan-2017 Jessica Hamilton <jessica.l.hamilton@gmail.com>

HaikuDepot: format string fixes.


# 19c15fec 27-Jan-2017 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot: Improve icon download handling performance

Previously each icon would launch an independent HTTP request to
pull down the HVIF icon data. This change means that the data
will be pulled down in bulk across all packages as a .tgz and
will then be kept in a cache locally. The client-server logic
will use standard "If-Modified-Since" headers to check for
updates each time the HaikuDepot desktop application starts up.
This arrangement will bring down the HVIF as well as bitmap
icons and use the best representation it can.

Additionally, it is possible from a command-line option to log
HTTP traffic verbosely and it is also possible to use an "-h"
flag to display help on command-line arguments.

The code-structure around this change also anticipates some
future extensions to handle other client-server improvements.

Fixes #11804


# be298474 21-Oct-2016 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot: code clean-up from #12793


# ebb1a01c 20-Oct-2016 Andrew Lindesay <apl@lindesay.co.nz>

HaikuDepot: Handling for communications with application server over multiple repositories

This change allows for the HaikuDepot desktop application to query the server application
over HTTP for data regarding packages across the various repositories that the have been
configured on the desktop environment. Previously it was 'hard-coded' to only
communicate about the HaikuPorts repository.


# da16a928 25-Sep-2015 Stephan Aßmus <superstippi@gmx.de>

Model: Pull changelogs from the package infos


# 87084745 07-Apr-2015 Michael Lotz <mmlr@mlotz.ch>

HaikuDepot: Clean up trailing whitespace.


# f67071b9 04-Apr-2015 Stephan Aßmus <superstippi@gmx.de>

HaikuDepot: Re-activated Size-column

Noticed that HaikuDepotServer info now contains "payloadLength", which is
the package size. Populate that in the list view.


# 72992391 04-Apr-2015 Stephan Aßmus <superstippi@gmx.de>

HaikuDepot: Title versus Name distinction

* The name is the static package name. The title is either that name,
or a translated pretty version of the name.
* Adjust package info retrieval to server API changes. Unbreaks package
translations.


# 7b2c59b9 25-Jan-2015 Stephan Aßmus <superstippi@gmx.de>

HaikuDepot: Implemented light-weight package manager update

No, not updating packages via HaikuDepot, but a light-weight synchronization
between the system package manager list and the HaikuDepot model. After
installing or removing a package, HaikuDepot performed a very costly update
of all information by basically throwing everything away and reloading it.
Implements #11786.


# 89e4ba17 28-Dec-2014 Stephan Aßmus <superstippi@gmx.de>

HaikuDepot: Update package info after rating package

Let Model::PopulatePackage() have a mode where it forces the update on a
package that has already been populated. Trigger populating from success
code path in RatePackageWindow. Fixes #11638.


# 12107be2 27-Dec-2014 Stephan Aßmus <superstippi@gmx.de>

HaikuDepot: Search all packages when showing featured

The intention was that typing search terms searches all packages, not only
the featured ones. This didn't actually work in Model::CreatePackageList().


# 4fade61f 26-Dec-2014 Stephan Aßmus <superstippi@gmx.de>

HaikuDepot: Change when featured packages are shown

* Renamed the "Option" menu to "Show", removed the now redundant "Show" from
the items in that menu.
* Add an "Only featured packages" item in the Show menu. This item is disabled
as soon as the user types something in the search terms field. Othetwise,
this setting is respected, i.e. one can combine the featured setting with
other settings, i.e. show all featured packages of a certain depot and in a
certain category.
* Added PackageInfo::IsProminent() and removed the respective method from
the MainWindow (which only considered a package prominent if it was not
yet installed).
* "Show -> Installed packages" now defaults to on. There have been complaints
on Trac and I guess rightfully so. The use-cases in which one starts
HaikuDepot and wants to know about installed packages are just as likely
as the use-case where one wants to install new software.


# 0c169ace 01-Nov-2014 Stephan Aßmus <superstippi@gmx.de>

HaikuDepot: Add some getters to Model.

For category, depot and search terms filter.


# 9f40cd41 01-Nov-2014 Stephan Aßmus <superstippi@gmx.de>

HaikuDepot: Retrieve prominence values from web app


# 6b147523 25-Oct-2014 Stephan Aßmus <superstippi@gmx.de>

HaikuDepot: Fixed potential dead-lock in package list refresh.

When the package list was refreshed while package info was still being
pulled from the web app, calling Model::Clear() with the model lock already
held could lead to a dead-lock: The package populator could block on the
model lock to update information, while StopPopulatingAllPackages() waited
for the thread to exit, but held the lock that the thread was blocking on.
So call StopPopulatingAllPackages() before grabbing the lock and calling
Clear() in MainWindow::_RefreshPackageList().


# a3dfc57d 07-Oct-2014 Stephan Aßmus <superstippi@gmx.de>

HaikuDepot: Enable caching of info retrieved from web-app


# 8f03a0f9 27-Sep-2014 Stephan Aßmus <superstippi@gmx.de>

HaikuDepot: Restore logged in user across sessions.

* Store the username in the app settings. The password was already stored
in the keyring. Restore the username upon next launch.
* Display the logged in user in the main window.
* Added "Log out" menu entry.
* When the password could not be retrieved from the keyring (also because
the user rejects the keyring dialog), unset the username.
* Allow unsetting the username by passing an empty name.


# 4ff3d17a 27-Sep-2014 Stephan Aßmus <superstippi@gmx.de>

HaikuDepot: Put supported languages into a StringList

* Added TODO to retrieve the list from the web-app, there is already an
API for it. For now, the hard-coded list matches the web-app's and the
next change in this regard will be to support any known language.
* Make the list accessible.


# 04c9d578 27-Sep-2014 Stephan Aßmus <superstippi@gmx.de>

HaikuDepot: Organized source into sub-folders


# da16a9289414991b0dfa68b9979d9f744a2ebdff 25-Sep-2015 Stephan Aßmus <superstippi@gmx.de>

Model: Pull changelogs from the package infos


# 8708474567be756984f35cd6c5bfcc2c9546dc1e 07-Apr-2015 Michael Lotz <mmlr@mlotz.ch>

HaikuDepot: Clean up trailing whitespace.


# f67071b98ca57efd722b4603fcfe1c899fd2c4ce 04-Apr-2015 Stephan Aßmus <superstippi@gmx.de>

HaikuDepot: Re-activated Size-column

Noticed that HaikuDepotServer info now contains "payloadLength", which is
the package size. Populate that in the list view.


# 72992391bb6f9351f80367604d64c5da21a9f4a9 04-Apr-2015 Stephan Aßmus <superstippi@gmx.de>

HaikuDepot: Title versus Name distinction

* The name is the static package name. The title is either that name,
or a translated pretty version of the name.
* Adjust package info retrieval to server API changes. Unbreaks package
translations.


# 7b2c59b9b848f467d2229dedf91ca19899b8ed13 25-Jan-2015 Stephan Aßmus <superstippi@gmx.de>

HaikuDepot: Implemented light-weight package manager update

No, not updating packages via HaikuDepot, but a light-weight synchronization
between the system package manager list and the HaikuDepot model. After
installing or removing a package, HaikuDepot performed a very costly update
of all information by basically throwing everything away and reloading it.
Implements #11786.


# 89e4ba17d0ae033b2a4896bfabfbde9cd4da5ed7 28-Dec-2014 Stephan Aßmus <superstippi@gmx.de>

HaikuDepot: Update package info after rating package

Let Model::PopulatePackage() have a mode where it forces the update on a
package that has already been populated. Trigger populating from success
code path in RatePackageWindow. Fixes #11638.


# 12107be2ec53a0f63edeba707ff7194027db9ef6 27-Dec-2014 Stephan Aßmus <superstippi@gmx.de>

HaikuDepot: Search all packages when showing featured

The intention was that typing search terms searches all packages, not only
the featured ones. This didn't actually work in Model::CreatePackageList().


# 4fade61ff862bff75a0e5d13fe949b7b4234a91d 26-Dec-2014 Stephan Aßmus <superstippi@gmx.de>

HaikuDepot: Change when featured packages are shown

* Renamed the "Option" menu to "Show", removed the now redundant "Show" from
the items in that menu.
* Add an "Only featured packages" item in the Show menu. This item is disabled
as soon as the user types something in the search terms field. Othetwise,
this setting is respected, i.e. one can combine the featured setting with
other settings, i.e. show all featured packages of a certain depot and in a
certain category.
* Added PackageInfo::IsProminent() and removed the respective method from
the MainWindow (which only considered a package prominent if it was not
yet installed).
* "Show -> Installed packages" now defaults to on. There have been complaints
on Trac and I guess rightfully so. The use-cases in which one starts
HaikuDepot and wants to know about installed packages are just as likely
as the use-case where one wants to install new software.


# 0c169ace2edb1bbaffbbce243d56e72cc25b7123 01-Nov-2014 Stephan Aßmus <superstippi@gmx.de>

HaikuDepot: Add some getters to Model.

For category, depot and search terms filter.


# 9f40cd412176bcb816e1b462da4adc382a76086d 01-Nov-2014 Stephan Aßmus <superstippi@gmx.de>

HaikuDepot: Retrieve prominence values from web app


# 6b147523f1cdb026f13752be0ad300c8a845bf7e 25-Oct-2014 Stephan Aßmus <superstippi@gmx.de>

HaikuDepot: Fixed potential dead-lock in package list refresh.

When the package list was refreshed while package info was still being
pulled from the web app, calling Model::Clear() with the model lock already
held could lead to a dead-lock: The package populator could block on the
model lock to update information, while StopPopulatingAllPackages() waited
for the thread to exit, but held the lock that the thread was blocking on.
So call StopPopulatingAllPackages() before grabbing the lock and calling
Clear() in MainWindow::_RefreshPackageList().


# a3dfc57d0494c8286d645e0ef478a1d5bdd920b9 07-Oct-2014 Stephan Aßmus <superstippi@gmx.de>

HaikuDepot: Enable caching of info retrieved from web-app


# 8f03a0f9f2645bc296173abce96cc8547a977b6e 27-Sep-2014 Stephan Aßmus <superstippi@gmx.de>

HaikuDepot: Restore logged in user across sessions.

* Store the username in the app settings. The password was already stored
in the keyring. Restore the username upon next launch.
* Display the logged in user in the main window.
* Added "Log out" menu entry.
* When the password could not be retrieved from the keyring (also because
the user rejects the keyring dialog), unset the username.
* Allow unsetting the username by passing an empty name.


# 4ff3d17ae8f8185c3a94fe35035a0fdacc582881 27-Sep-2014 Stephan Aßmus <superstippi@gmx.de>

HaikuDepot: Put supported languages into a StringList

* Added TODO to retrieve the list from the web-app, there is already an
API for it. For now, the hard-coded list matches the web-app's and the
next change in this regard will be to support any known language.
* Make the list accessible.


# 04c9d578d85baa79584c1c40c61cc73ca58d527b 27-Sep-2014 Stephan Aßmus <superstippi@gmx.de>

HaikuDepot: Organized source into sub-folders