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:
Jonas Sundström
2009-11-15 18:11:58 +00:00
parent 61646809a3
commit 5e5a7d535c
3 changed files with 45 additions and 5 deletions
+2
View File
@@ -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';
+42 -5
View File
@@ -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;
+1
View File
@@ -22,6 +22,7 @@ public:
private: private:
BButton* fRevertButton; BButton* fRevertButton;
BListView* fLanguageListView;
BListView* fPreferredListView; BListView* fPreferredListView;
FormatView* fFormatView; FormatView* fFormatView;
}; };