void MainWindow::_RatePackage() { if (fModel.Username().IsEmpty()) { BAlert* alert = new(std::nothrow) BAlert( B_TRANSLATE("Not logged in"), B_TRANSLATE("You need to be logged into an account before you " "can rate packages."), B_TRANSLATE("Cancel"), B_TRANSLATE("Login or Create account")); if (alert == NULL) return; int32 choice = alert->Go(); if (choice == 1) _OpenLoginWindow(BMessage(MSG_RATE_PACKAGE)); return; } // TODO: Allow only one RatePackageWindow // TODO: Mechanism for remembering the window frame RatePackageWindow* window = new RatePackageWindow(this, BRect(0, 0, 500, 400), fModel); window->SetPackage(fPackageInfoView->Package()); window->Show(); }
int32 RatePackageWindow::_SendRatingThreadEntry(void* data) { RatePackageWindow* window = reinterpret_cast<RatePackageWindow*>(data); window->_SendRatingThread(); return 0; }
void MainWindow::MessageReceived(BMessage* message) { switch (message->what) { case MSG_MODEL_WORKER_DONE: { fModelWorker = B_BAD_THREAD_ID; _AdoptModel(); fFilterView->AdoptModel(fModel); break; } case B_SIMPLE_DATA: case B_REFS_RECEIVED: // TODO: ? break; case MSG_REFRESH_DEPOTS: _StartRefreshWorker(true); break; case MSG_SHOW_SOURCE_PACKAGES: { BAutolock locker(fModel.Lock()); fModel.SetShowSourcePackages(!fModel.ShowSourcePackages()); } _AdoptModel(); break; case MSG_SHOW_DEVELOP_PACKAGES: { BAutolock locker(fModel.Lock()); fModel.SetShowDevelopPackages(!fModel.ShowDevelopPackages()); } _AdoptModel(); break; case MSG_PACKAGE_SELECTED: { BString title; if (message->FindString("title", &title) == B_OK) { int count = fVisiblePackages.CountItems(); for (int i = 0; i < count; i++) { const PackageInfoRef& package = fVisiblePackages.ItemAtFast(i); if (package.Get() != NULL && package->Title() == title) { _AdoptPackage(package); break; } } } else { _ClearPackage(); } break; } case MSG_CATEGORY_SELECTED: { BString name; if (message->FindString("name", &name) != B_OK) name = ""; fModel.SetCategory(name); _AdoptModel(); break; } case MSG_DEPOT_SELECTED: { BString name; if (message->FindString("name", &name) != B_OK) name = ""; fModel.SetDepot(name); _AdoptModel(); break; } case MSG_SEARCH_TERMS_MODIFIED: { // TODO: Do this with a delay! BString searchTerms; if (message->FindString("search terms", &searchTerms) != B_OK) searchTerms = ""; fModel.SetSearchTerms(searchTerms); _AdoptModel(); break; } case MSG_PACKAGE_STATE_CHANGED: { PackageInfo* info; if (message->FindPointer("package", (void**)&info) == B_OK) { PackageInfoRef ref(info, true); fModel.SetPackageState(ref, ref->State()); } break; } case MSG_RATE_PACKAGE: { // TODO: Allow only one RatingWindow // TODO: Mechanism for remembering the window frame RatePackageWindow* window = new RatePackageWindow(this, BRect(0, 0, 500, 400)); window->Show(); break; } default: BWindow::MessageReceived(message); break; } }