* Add some more icons for better testing

* Use the country name instead of the language name to identify each icon
 * Cleanup, fixed copyrights, and some more checks to avoid crashing in case of a missing icon


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36321 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Adrien Destugues
2010-04-15 21:34:00 +00:00
parent 35ca8fd8aa
commit 0638c3ab4c
12 changed files with 140 additions and 24 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+14 -7
View File
@@ -91,18 +91,25 @@ BCountry::Code() const
status_t status_t
BCountry::GetIcon(BBitmap* result) BCountry::GetIcon(BBitmap* result)
{ {
if (result == NULL)
return B_BAD_DATA;
// TODO: a proper way to locate the library being used ? // TODO: a proper way to locate the library being used ?
BResources storage("/boot/system/lib/liblocale.so"); BResources storage("/boot/system/lib/liblocale.so");
if (storage.InitCheck() != B_OK) if (storage.InitCheck() != B_OK)
return B_ERROR; return B_ERROR;
size_t size; size_t size;
const void* buffer = storage.LoadResource(B_VECTOR_ICON_TYPE, Code(), const char* code = fICULocale->getCountry();
&size); if (code != NULL) {
if (buffer != NULL && size != 0) { printf("this is %s drawing\n",code);
return BIconUtils::GetVectorIcon(static_cast<const uint8*>(buffer), const void* buffer = storage.LoadResource(B_VECTOR_ICON_TYPE, code,
size, result); &size);
} else if (buffer != NULL && size != 0) {
return B_BAD_DATA; puts(" icon found!");
return BIconUtils::GetVectorIcon(static_cast<const uint8*>(buffer),
size, result);
}
}
return B_BAD_DATA;
} }
+93 -1
View File
@@ -1,5 +1,97 @@
resource(2, "fr") #'VICN' array { resource(1, "AG") #'VICN' array {
$"6E63696605050003FCD116030072C605FF03CE1126060A041F20D93F20D93F60"
$"1F600A20C61FC54BC550C10EC2F1C4A9C3D0C06FC03EC2DBC2ABBF49BE71C029"
$"C20CBDCABDCFBCFAC20C37BE71B9CBC2ABBAABC03EB719C3D0B985C2F1B54BC5"
$"50B8E6C61FB4A9C6EFB8E6C94EB54BC86FB985CC01B719C994BAABCDCEB9CBCA"
$"3337CE70BCFACA33BDCACDCEC029C994BF49CC01C2DBC86FC06FC94EC4A9C6EF"
$"C10E0A041FBCFAD93FBCFAD93F601F600A041FC285D93FC285D93F601F600A03"
$"1F601F20C61F600A03D93F60D93F20C61F60060A000100023ECAC10000000000"
$"003ECAC1BAB068461FBB0A010101023ECAC10000000000003ECAC1BAB068461F"
$"BB0A020102023ECAC10000000000003ECAC1BAB068461FBB0A030103023ECAC1"
$"0000000000003ECAC1BAB068461FBB0A040104023ECAC10000000000003ECAC1"
$"BAB068461FBB0A040105023ECAC10000000000003ECAC1BAB068461FBB"
};
resource(2, "AM") #'VICN' array {
$"6E6369660303EF6B00035575C403D81B3E030A04201FE6001FE600CC7F20CC7F"
$"0A04201FE6001FE600C3FF20C3FF0A04201FE6001FE600BB7F20BB7F030A0001"
$"00023E01B30000000000003E01B3B766E9477C990A010101023E01B300000000"
$"00003E01B3B766E9477C990A020102023E01B30000000000003E01B3B766E947"
$"7C99"
};
resource(3, "AT") #'VICN' array {
$"6E6369660203D81E0505FF020A04201FD9401FD9406020600A0420BB7FD940BB"
$"7FD940C3FF20C3FF020A000100023EC1100000000000003EC110B62046467DDF"
$"0A010101023EC1100000000000003EC110B62046467DDF"
};
resource(4, "AU") #'VICN' array {
$"6E6369660403002B7F050005FF03CE1126110A04201FE6001FE6006020600A0E"
$"40C24CBF03C497BCC2C3BDBE17C5BFBC05C6F9BE6BC72FBE17C99240C7D3C168"
$"C992C114C72FC37AC6F9C168C5BFC2BDC3BDC07CC4970A0ED8F2C6E9D898C801"
$"D785C799D828C88DD72BC923D850C93DD827CA5FD8F2C98BD9BCCA5FD994C93D"
$"DAB8C923D9BCC88DDA5EC799D94CC8010A0ED8F2B5BBD898B6D3D785B66BD828"
$"B75FD72BB7F5D850B80ED827B931D8F2B85CD9BCB931D994B80EDAB8B7F5D9BC"
$"B75FDA5EB66BD94CB6D30A0ED2DFBD7BD285BE93D173BE2BD215BF1FD119BFB5"
$"D23DBFCFD21543D2DFC01DD3AA43D381BFCFD4A6BFB5D3A9BF1FD44CBE2BD339"
$"BE930A0EDEEABAA2DE90BBBADD7DBB52DE20BC46DD23BCDCDE4839DE20BE19DE"
$"EABD44DFB4BE19DF8C39E0B0BCDCDFB4BC46E056BB52DF44BBBA0A0ADBCCBFBF"
$"DB85C06DDACAC07BDB59C0F5DB2DC1ABDBCCC148DC6CC1ABDC3FC0F5DCCFC07B"
$"DC14C06D0A062040B5D94060B46C6020C9A62020BE530A066040C9A64020B46C"
$"2020B5D92060BE530A04BDA020C1E020C1E040BDA0400A0420B74060B74060BB"
$"8020BB800A0420B81960B81960BAA620BAA60A04BE7920C10620C10640BE7940"
$"0A042040B4E640BD66BB80BB80BB800A04C219B740C400B7406020CA99200A04"
$"604060BECCC5E6BB80C400BB800A04202020B3F3B999B740BB80B740110A0001"
$"00023E021E0000000000003E021EBABC7E47FB990A020101023E021E00000000"
$"00003E021EBABC7E47FB990A020102023E021E0000000000003E021EBABC7E47"
$"FB990A020103023E021E0000000000003E021EBABC7E47FB990A020104023E02"
$"1E0000000000003E021EBABC7E47FB990A020105023E021E0000000000003E02"
$"1EBABC7E47FB990A020106023E021E0000000000003E021EBABC7E47FB990A02"
$"0107023E021E0000000000003E021EBABC7E47FB990A020108023E021E000000"
$"0000003E021EBABC7E47FB990A020109023E021E0000000000003E021EBABC7E"
$"47FB990A02010A023E021E0000000000003E021EBABC7E47FB990A03010B023E"
$"021E0000000000003E021EBABC7E47FB990A03010C023E021E0000000000003E"
$"021EBABC7E47FB990A03010D023E021E0000000000003E021EBABC7E47FB990A"
$"03010E023E021E0000000000003E021EBABC7E47FB990A03010F023E021E0000"
$"000000003E021EBABC7E47FB990A030110023E021E0000000000003E021EBABC"
$"7E47FB99"
};
resource(5, "AZ") #'VICN' array {
$"6E6369660403009E4903D62828030091C905FF060A042020E60020E600602060"
$"0A042020E60020E600C40020C4000A042020E60020E600BB8020BB800204CF0C"
$"40CF0CC1DCCF0CBDA3CB39BBECCD56BBECC91CBBECC76640C766BDA3C766C1DC"
$"CB39C393C91CC393CD56C3930204CF4340CF43C182CF43BDFDCC1338CDD538CA"
$"5038C8E340C8E3BDFDC8E3C182CC1348CA5048CDD5480A10CF79C1E0CF11C0BB"
$"CDF8C14065C028CD594065BF57CDF8BE3FCF11BEC4CF79BDA0CFE1BEC4D0FABE"
$"3FD074BF57D19940D074C028D0FAC140CFE1C0BB060A000100023E0364000000"
$"0000003E0364B9640647F9380A010101023E03640000000000003E0364B96406"
$"47F9380A020102023E03640000000000003E0364B9640647F9380A030103023E"
$"03640000000000003E0364B9640647F9380A010104023E03640000000000003E"
$"0364B9640647F9380A030105023E03640000000000003E0364B9640647F938"
};
resource(6, "BH") #'VICN' array {
$"6E6369660203CE112605FF020A04201FDD7F1FDD7FCC7F20CC7F0A0D201FBD9F"
$"1FC400B58CBD9FB819C400BAA6BD9FBD33C400BFBFBD9FC24CC400C4D9BD9FC7"
$"66C400C9F3BD9FCC7F20CC7F020A000100023E850D0000000000003E850DBA86"
$"BC46F5E40A010101023E850D0000000000003E850DBA86BC46F5E4"
};
resource(7, "DZ") #'VICN' array {
$"6E6369660303007A3D05FF03CE1126040A042020D94020D9406020600A045020"
$"D94020D94060506002085030C88530C29B30404040BC3B40C3455050C29B50C8"
$"8650CBB3C2D6CA9CC4CCCAC4C40DC7AAC4D958C4D9C4D9C4D9C29040C290C291"
$"C290BCEFC7AABAA6C4D9BAA6C94FBAA6CBB1BCA7CAC2BB71CA9ABAB30A0AC9B0"
$"BCB7C9B0BF08CBE440C9B0C077C9B0C2C8C853C0E850C19FC77C4050BDE0C853"
$"BE97040A000100023EC1460000000000003EC146B68CBF467D730A010101023E"
$"C1460000000000003EC146B68CBF467D730A020102023EC1460000000000003E"
$"C146B68CBF467D730A020103023EC1460000000000003EC146B68CBF467D73"
};
resource(8, "FR") #'VICN' array {
$"6E636966030300335B05FF03D81C3F030A04B2FBB75DCC84B75DCC84C863B2FB" $"6E636966030300335B05FF03D81C3F030A04B2FBB75DCC84B75DCC84C863B2FB"
$"C8630A04BB7EB75DCC84B75DCC84C863BB7EC8630A04C401B75DCC84B75DCC84" $"C8630A04BB7EB75DCC84B75DCC84C863BB7EC8630A04C401B75DCC84B75DCC84"
$"C863C401C863030A000100000A010101000A02010200" $"C863C401C863030A000100000A010101000A02010200"
-2
View File
@@ -142,8 +142,6 @@ BLanguage::GetName(BString* name)
preferredLanguage.FindString("language", 0, &appLanguage); preferredLanguage.FindString("language", 0, &appLanguage);
printf("lang : %s\n",appLanguage.String());
UnicodeString s; UnicodeString s;
fICULocale->getDisplayName(Locale(appLanguage), s); fICULocale->getDisplayName(Locale(appLanguage), s);
BStringByteSink converter(name); BStringByteSink converter(name);
+24 -7
View File
@@ -1,14 +1,20 @@
/* /*
* Copyright 2010, Adrien Destugues, [email protected] * Copyright 2006-2010, Haiku.
* All rights reserved. Distributed under the terms of the MIT License. * All rights reserved. Distributed under the terms of the MIT License.
* Authors:
* Adrien Destugues <[email protected]>
* Stephan Aßmus <[email protected]>
*/ */
#include "LanguageListView.h" #include "LanguageListView.h"
#include "Locale.h" #include "Locale.h"
#include <Bitmap.h> #include <Bitmap.h>
#include <Country.h> #include <Country.h>
#include <stdio.h>
#include <new>
#define MAX_DRAG_HEIGHT 200.0 #define MAX_DRAG_HEIGHT 200.0
#define ALPHA 170 #define ALPHA 170
@@ -23,8 +29,17 @@ LanguageListItem::LanguageListItem(const char* text, const char* code)
// TODO: should probably keep the BCountry as a member of the class // TODO: should probably keep the BCountry as a member of the class
BCountry myCountry(code); BCountry myCountry(code);
BRect bounds(0, 0, 15, 15); BRect bounds(0, 0, 15, 15);
icon = new BBitmap(bounds, B_RGBA32); fIcon = new(std::nothrow) BBitmap(bounds, B_RGBA32);
myCountry.GetIcon(icon); if (fIcon && myCountry.GetIcon(fIcon) != B_OK) {
delete fIcon;
fIcon = NULL;
}
}
LanguageListItem::~LanguageListItem()
{
delete fIcon;
} }
@@ -56,9 +71,11 @@ LanguageListItem::DrawItem(BView *owner, BRect frame, bool complete)
BRect iconFrame(frame); BRect iconFrame(frame);
iconFrame.Set(iconFrame.left, iconFrame.top+1, iconFrame.left+15, iconFrame.top+16); iconFrame.Set(iconFrame.left, iconFrame.top+1, iconFrame.left+15, iconFrame.top+16);
owner->SetDrawingMode(B_OP_OVER); if (fIcon && fIcon->IsValid()) {
owner->DrawBitmap(icon, iconFrame); owner->SetDrawingMode(B_OP_OVER);
owner->SetDrawingMode(B_OP_COPY); owner->DrawBitmap(fIcon, iconFrame);
owner->SetDrawingMode(B_OP_COPY);
}
frame.left += 16 * (OutlineLevel() + 1); frame.left += 16 * (OutlineLevel() + 1);
owner->SetHighColor(kBlack); owner->SetHighColor(kBlack);
+9 -7
View File
@@ -1,6 +1,9 @@
/* /*
* Copyright 2010, Adrien Destugues, [email protected] * Copyright 2006-2010, Haiku.
* All rights reserved. Distributed under the terms of the MIT License. * All rights reserved. Distributed under the terms of the MIT License.
* Authors:
* Adrien Destugues <[email protected]>
* Stephan Aßmus <[email protected]>
*/ */
@@ -20,19 +23,18 @@ class LanguageListItem: public BStringItem {
LanguageListItem(const LanguageListItem& other) LanguageListItem(const LanguageListItem& other)
: :
BStringItem(other.Text()), BStringItem(other.Text()),
fLanguageCode(other.fLanguageCode) fLanguageCode(other.fLanguageCode),
fIcon(other.fIcon)
{} {}
~LanguageListItem() {}; ~LanguageListItem();
const inline BString LanguageCode() { return fLanguageCode; } const inline BString LanguageCode() { return fLanguageCode; }
void DrawItem(BView *owner, BRect frame, bool complete = false);
//virtual void Update(BView *owner, const BFont *finfo);
virtual void DrawItem(BView *owner, BRect frame, bool complete = false);
private: private:
const BString fLanguageCode; const BString fLanguageCode;
BBitmap* icon; BBitmap* fIcon;
}; };