Double-clicking to select/deselect preferred languages added.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34062 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -14,6 +14,8 @@ extern const char* kSignature;
|
|||||||
static const uint32 kMsgCountrySelection = 'csel';
|
static const uint32 kMsgCountrySelection = 'csel';
|
||||||
static const uint32 kMsgSettingsChanged = 'SeCh';
|
static const uint32 kMsgSettingsChanged = 'SeCh';
|
||||||
static const uint32 kMsgPrefLanguagesChanged = 'lang';
|
static const uint32 kMsgPrefLanguagesChanged = 'lang';
|
||||||
|
static const uint32 kMsgLangInvoked = 'laiv';
|
||||||
|
static const uint32 kMsgPrefLangInvoked = 'pliv';
|
||||||
static const uint32 kMsgDefaults = 'dflt';
|
static const uint32 kMsgDefaults = 'dflt';
|
||||||
static const uint32 kMsgRevert = 'revt';
|
static const uint32 kMsgRevert = 'revt';
|
||||||
|
|
||||||
|
|||||||
@@ -317,11 +317,13 @@ LocaleWindow::LocaleWindow()
|
|||||||
|
|
||||||
{
|
{
|
||||||
// first list: available languages
|
// first list: available languages
|
||||||
LanguageListView* listView = new LanguageListView("available",
|
fLanguageListView = new LanguageListView("available",
|
||||||
B_MULTIPLE_SELECTION_LIST);
|
B_MULTIPLE_SELECTION_LIST);
|
||||||
BScrollView* scrollView = new BScrollView("scroller", listView,
|
BScrollView* scrollView = new BScrollView("scroller", fLanguageListView,
|
||||||
B_WILL_DRAW | B_FRAME_EVENTS, false, true);
|
B_WILL_DRAW | B_FRAME_EVENTS, false, true);
|
||||||
|
|
||||||
|
fLanguageListView->SetInvocationMessage(new BMessage(kMsgLangInvoked));
|
||||||
|
|
||||||
// Fill the language list from the LocaleRoster data
|
// Fill the language list from the LocaleRoster data
|
||||||
BMessage installedLanguages;
|
BMessage installedLanguages;
|
||||||
if (be_locale_roster->GetInstalledLanguages(&installedLanguages)
|
if (be_locale_roster->GetInstalledLanguages(&installedLanguages)
|
||||||
@@ -342,7 +344,7 @@ LocaleWindow::LocaleWindow()
|
|||||||
languageFullName.toUTF8(bbs);
|
languageFullName.toUTF8(bbs);
|
||||||
LanguageListItem* si
|
LanguageListItem* si
|
||||||
= new LanguageListItem(str, currentLanguage.String());
|
= new LanguageListItem(str, currentLanguage.String());
|
||||||
listView->AddItem(si);
|
fLanguageListView->AddItem(si);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@@ -360,6 +362,9 @@ LocaleWindow::LocaleWindow()
|
|||||||
BScrollView* scrollViewEnabled = new BScrollView("scroller",
|
BScrollView* scrollViewEnabled = new BScrollView("scroller",
|
||||||
fPreferredListView, B_WILL_DRAW | B_FRAME_EVENTS, false, true);
|
fPreferredListView, B_WILL_DRAW | B_FRAME_EVENTS, false, true);
|
||||||
|
|
||||||
|
fPreferredListView
|
||||||
|
->SetInvocationMessage(new BMessage(kMsgPrefLangInvoked));
|
||||||
|
|
||||||
// get the preferred languages from the Settings. Move them here from
|
// get the preferred languages from the Settings. Move them here from
|
||||||
// the other list.
|
// the other list.
|
||||||
BMessage msg;
|
BMessage msg;
|
||||||
@@ -369,11 +374,12 @@ LocaleWindow::LocaleWindow()
|
|||||||
== B_OK;
|
== B_OK;
|
||||||
index++) {
|
index++) {
|
||||||
for (int listPos = 0; LanguageListItem* lli
|
for (int listPos = 0; LanguageListItem* lli
|
||||||
= static_cast<LanguageListItem*>(listView->ItemAt(listPos));
|
= static_cast<LanguageListItem*>
|
||||||
|
(fLanguageListView->ItemAt(listPos));
|
||||||
listPos++) {
|
listPos++) {
|
||||||
if (langCode == lli->LanguageCode()) {
|
if (langCode == lli->LanguageCode()) {
|
||||||
fPreferredListView->AddItem(lli);
|
fPreferredListView->AddItem(lli);
|
||||||
listView->RemoveItem(lli);
|
fLanguageListView->RemoveItem(lli);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -499,6 +505,37 @@ LocaleWindow::MessageReceived(BMessage* message)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case kMsgLangInvoked:
|
||||||
|
{
|
||||||
|
int32 index = 0;
|
||||||
|
if (message->FindInt32("index", &index) == B_OK) {
|
||||||
|
LanguageListItem* listItem
|
||||||
|
= static_cast<LanguageListItem*>
|
||||||
|
(fLanguageListView->RemoveItem(index));
|
||||||
|
fPreferredListView->AddItem(listItem);
|
||||||
|
fPreferredListView
|
||||||
|
->Invoke(new BMessage(kMsgPrefLanguagesChanged));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case kMsgPrefLangInvoked:
|
||||||
|
{
|
||||||
|
if (fPreferredListView->CountItems() == 1)
|
||||||
|
break;
|
||||||
|
|
||||||
|
int32 index = 0;
|
||||||
|
if (message->FindInt32("index", &index) == B_OK) {
|
||||||
|
LanguageListItem* listItem
|
||||||
|
= static_cast<LanguageListItem*>
|
||||||
|
(fPreferredListView->RemoveItem(index));
|
||||||
|
fLanguageListView->AddItem(listItem);
|
||||||
|
fPreferredListView
|
||||||
|
->Invoke(new BMessage(kMsgPrefLanguagesChanged));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
BWindow::MessageReceived(message);
|
BWindow::MessageReceived(message);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
BButton* fRevertButton;
|
BButton* fRevertButton;
|
||||||
|
BListView* fLanguageListView;
|
||||||
BListView* fPreferredListView;
|
BListView* fPreferredListView;
|
||||||
FormatView* fFormatView;
|
FormatView* fFormatView;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user