HaikuDepot: Load Languages from HDS - Fixes

Follow-on changes from recent commit of the same title
with some improvements and fixes.

Change-Id: Ic4439966340578b920345332669591f6cdfcc203
Reviewed-on: https://review.haiku-os.org/c/1471
Reviewed-by: waddlesplash <[email protected]>
This commit is contained in:
Andrew Lindesay
2019-05-21 20:23:18 +00:00
committed by waddlesplash
parent 38ce902686
commit 4f8d9e120f
7 changed files with 49 additions and 27 deletions
+1 -1
View File
@@ -39,7 +39,7 @@ LanguageModel::LanguageModel()
{
const Language defaultLanguage = _DeriveDefaultLanguage();
fSupportedLanguages.Add(LanguageRef(
new Language(defaultLanguage)));
new Language(defaultLanguage), true));
_SetPreferredLanguage(defaultLanguage);
}
@@ -7,6 +7,7 @@
#include "ProcessCoordinatorFactory.h"
#include <Autolock.h>
#include <AutoLocker.h>
#include <package/Context.h>
#include <package/PackageRoster.h>
@@ -78,6 +79,8 @@ ProcessCoordinatorFactory::CreateBulkLoadCoordinator(
status_t repoNamesResult = roster.GetRepositoryNames(repoNames);
if (repoNamesResult == B_OK) {
AutoLocker<BLocker> locker(model->Lock());
for (int32 i = 0; i < repoNames.CountStrings(); i++) {
ProcessNode* processNode = new ProcessNode(
new ServerPkgDataUpdateProcess(
@@ -11,6 +11,7 @@
#include <time.h>
#include <AutoDeleter.h>
#include <AutoLocker.h>
#include <Catalog.h>
#include <FileIO.h>
#include <Url.h>
@@ -63,6 +64,7 @@ BString
ServerReferenceDataUpdateProcess::UrlPathComponent()
{
BString result;
AutoLocker<BLocker> locker(fModel->Lock());
result.SetToFormat("/__reference/all-%s.json.gz",
fModel->Language().PreferredLanguage().Code());
return result;
@@ -128,7 +130,10 @@ ServerReferenceDataUpdateProcess::_ProcessNaturalLanguages(
naturalLanguage->IsPopular())));
}
fModel->Language().AddSupportedLanguages(result);
{
AutoLocker<BLocker> locker(fModel->Lock());
fModel->Language().AddSupportedLanguages(result);
}
printf("[%s] did add %" B_PRId32 " supported languages\n",
Name(), result.CountItems());
@@ -11,6 +11,7 @@
#include <time.h>
#include <AutoDeleter.h>
#include <AutoLocker.h>
#include <Catalog.h>
#include <FileIO.h>
#include <Url.h>
@@ -178,6 +179,7 @@ BString
ServerRepositoryDataUpdateProcess::UrlPathComponent()
{
BString result;
AutoLocker<BLocker> locker(fModel->Lock());
result.SetToFormat("/__repository/all-%s.json.gz",
fModel->Language().PreferredLanguage().Code());
return result;
+18 -11
View File
@@ -11,6 +11,7 @@
#include <Alert.h>
#include <Autolock.h>
#include <AutoLocker.h>
#include <Catalog.h>
#include <Button.h>
#include <CheckBox.h>
@@ -191,7 +192,7 @@ RatePackageWindow::RatePackageWindow(BWindow* parent, BRect frame,
fTextEditor(new TextEditor(), true),
fRating(RATING_NONE),
fRatingDeterminate(false),
fCommentLanguageCode(fModel.Language().PreferredLanguage().Code()),
fCommentLanguageCode(LANGUAGE_DEFAULT_CODE),
fWorkerThread(-1)
{
AddToSubset(parent);
@@ -242,17 +243,23 @@ RatePackageWindow::RatePackageWindow(BWindow* parent, BRect frame,
fStability = fStabilityCodes.ItemAt(0).Name();
stabilityMenu->ItemAt(0)->SetMarked(true);
// Construct languages popup
BPopUpMenu* languagesMenu = new BPopUpMenu(B_TRANSLATE("Language"));
fCommentLanguageField = new BMenuField("language",
B_TRANSLATE("Comment language:"), languagesMenu);
LanguageMenuUtils::AddLanguagesToMenu(
fModel.Language().SupportedLanguages(),
languagesMenu);
languagesMenu->SetTargetForItems(this);
LanguageMenuUtils::MarkLanguageInMenu(fCommentLanguageCode,
languagesMenu);
{
AutoLocker<BLocker> locker(fModel.Lock());
fCommentLanguageCode = fModel.Language().PreferredLanguage().Code();
// Construct languages popup
BPopUpMenu* languagesMenu = new BPopUpMenu(B_TRANSLATE("Language"));
fCommentLanguageField = new BMenuField("language",
B_TRANSLATE("Comment language:"), languagesMenu);
LanguageMenuUtils::AddLanguagesToMenu(
fModel.Language().SupportedLanguages(),
languagesMenu);
languagesMenu->SetTargetForItems(this);
LanguageMenuUtils::MarkLanguageInMenu(fCommentLanguageCode,
languagesMenu);
}
fRatingActiveCheckBox = new BCheckBox("rating active",
B_TRANSLATE("Other users can see this rating"),
+18 -13
View File
@@ -13,6 +13,7 @@
#include <Alert.h>
#include <Autolock.h>
#include <AutoLocker.h>
#include <Catalog.h>
#include <Button.h>
#include <LayoutBuilder.h>
@@ -47,7 +48,7 @@ UserLoginWindow::UserLoginWindow(BWindow* parent, BRect frame, Model& model)
B_FLOATING_WINDOW_LOOK, B_FLOATING_SUBSET_WINDOW_FEEL,
B_ASYNCHRONOUS_CONTROLS | B_AUTO_UPDATE_SIZE_LIMITS
| B_NOT_RESIZABLE | B_NOT_ZOOMABLE),
fPreferredLanguageCode(model.Language().PreferredLanguage().Code()),
fPreferredLanguageCode(LANGUAGE_DEFAULT_CODE),
fModel(model),
fMode(NONE),
fWorkerThread(-1)
@@ -67,20 +68,24 @@ UserLoginWindow::UserLoginWindow(BWindow* parent, BRect frame, Model& model)
"", new BMessage(MSG_VALIDATE_FIELDS));
fRepeatPasswordField->TextView()->HideTyping(true);
// Construct languages popup
BPopUpMenu* languagesMenu = new BPopUpMenu(B_TRANSLATE("Language"));
fLanguageCodeField = new BMenuField("language",
B_TRANSLATE("Preferred language:"), languagesMenu);
{
AutoLocker<BLocker> locker(fModel.Lock());
fPreferredLanguageCode = fModel.Language().PreferredLanguage().Code();
// Construct languages popup
BPopUpMenu* languagesMenu = new BPopUpMenu(B_TRANSLATE("Language"));
fLanguageCodeField = new BMenuField("language",
B_TRANSLATE("Preferred language:"), languagesMenu);
LanguageMenuUtils::AddLanguagesToMenu(
fModel.Language().SupportedLanguages(),
languagesMenu);
languagesMenu->SetTargetForItems(this);
LanguageMenuUtils::AddLanguagesToMenu(
fModel.Language().SupportedLanguages(),
languagesMenu);
languagesMenu->SetTargetForItems(this);
printf("using preferred language code [%s]\n",
fPreferredLanguageCode.String());
LanguageMenuUtils::MarkLanguageInMenu(fPreferredLanguageCode,
languagesMenu);
printf("using preferred language code [%s]\n",
fPreferredLanguageCode.String());
LanguageMenuUtils::MarkLanguageInMenu(fPreferredLanguageCode,
languagesMenu);
}
fEmailField = new BTextControl(B_TRANSLATE("Email address:"), "", NULL);
fCaptchaView = new BitmapView("captcha view");
@@ -23,7 +23,7 @@
LanguageMenuUtils::AddLanguagesToMenu(
const LanguageList& languages, BMenu* menu)
{
if (languages.IsEmpty())
if (languages.IsEmpty() && Logger::IsInfoEnabled())
printf("there are no languages defined\n");
int32 addedPopular = LanguageMenuUtils::_AddLanguagesToMenu(