void CGetCovers::RunEx() { std::vector<CAlbum*> albumList; CMediaDatabase::GetAlbumsFromDatabaseNotLoaded(m_pWindow, &albumList); // set processbar max m_pProcessbar->SetMaxPosition((int) albumList.size()); std::vector<CAlbum*>::iterator iter = albumList.begin(); while ((iter != albumList.end()) && (!m_bPleaseStop)) { CAlbum* album = *iter; std::string outfile = SallyAPI::String::PathHelper::GetDirectoryFromPath(album->GetFilename()); outfile.append(album->GetCoverName()); bool exists = SallyAPI::File::FileHelper::FileExists(outfile); if (exists) { // Datei exists already CMediaDatabase::SetAlbumInDatabase(m_pWindow, album->GetAlbum(), album->GetArtist(), true); } else { // Get it from Amazon bool result = false; result = m_AmazonCover.GetMusicCover(album->GetArtist(), album->GetAlbum(), outfile); if (result) { CMediaDatabase::SetAlbumInDatabase(m_pWindow, album->GetAlbum(), album->GetArtist(), true); } else { CMediaDatabase::SetAlbumInDatabase(m_pWindow, album->GetAlbum(), album->GetArtist(), false); } } ++iter; // update processbar m_pProcessbar->SetPosition(m_pProcessbar->GetPosition() + 1); } // Delete vector iter = albumList.begin(); while (iter != albumList.end()) { SafeDelete(*iter); ++iter; } if (!m_bPleaseStop) m_pWindow->SendMessageToParent(0, 0, m_iMessageId); }
void CAddMusicAlbum::OnCommandCharSelector(SallyAPI::GUI::CGUIBaseObject* reporter) { std::string temp = reporter->GetText(); if (temp.length() <= 0) return; char searchForChar = temp[0]; // go to the top if (searchForChar == '*') { ResetImages(); UpdateImages(); return; } int newPosition = 0; std::vector<CAlbum*>::iterator iter = m_vAlbumList.begin(); while (iter != m_vAlbumList.end()) { CAlbum* item = *iter; temp = item->GetArtist(); if (temp.length() > 0) { temp = SallyAPI::String::StringHelper::StringToUpper(temp); char c = temp[0]; if (searchForChar == c) { // found!!!! newPosition = newPosition / m_iRows; m_iStartPicture = newPosition; UpdateImages(); return; } if (((c > searchForChar) && ((c >= 48 && c <= 57) || (c >= 65 && c <= 90) || (c >= 97 && c <= 122))) || (((searchForChar == 48 && searchForChar == 57)) && ((c >= 32 && c <= 47) || (c >= 58 && c <= 64) || (c >= 91 && c <= 96) || (c >= 123 && c <= 126)))) { // ok, we already at the next char newPosition = newPosition / m_iRows; m_iStartPicture = newPosition; UpdateImages(); return; } } ++newPosition; ++iter; } // not found... go to the last one newPosition = newPosition / m_iRows; m_iStartPicture = newPosition; UpdateImages(); }
void CAddMusicAlbum::OnCommandAddAlbum(int reporterId) { if (reporterId == 0) return; reporterId = reporterId - 1; int col = reporterId / 100; int row = reporterId % 100; std::vector<SallyAPI::GUI::CImageBox*> imageBoxVector = m_mImage[col]; std::vector<SallyAPI::GUI::CLabelBox*> imageNameVector = m_mImageName[col]; int fileID = (m_iStartPicture * m_iRows) + (col * m_iRows) + row - m_iRows; if (fileID >= m_vAlbumList.size()) return; CAlbum* album = m_vAlbumList[fileID]; CMediaDatabase::GetAlbumTitelsFromDatabase(dynamic_cast<SallyAPI::GUI::CAppBase*> (m_pParent), m_pAlbumTitles, album->GetAlbum(), album->GetArtist()); AddAllToPlaylistFromListView(); }
void CAddMusicAlbum::OnCommandProcessClicked(int reporterId) { if (reporterId == 0) return; reporterId = reporterId - 1; int col = reporterId / 100; int row = reporterId % 100; std::vector<SallyAPI::GUI::CImageBox*> imageBoxVector = m_mImage[col]; std::vector<SallyAPI::GUI::CLabelBox*> imageNameVector = m_mImageName[col]; int fileID = (m_iStartPicture * m_iRows) + (col * m_iRows) + row - m_iRows; CAlbum* album = m_vAlbumList[fileID]; m_tAlbumGetter.SetValues(dynamic_cast<SallyAPI::GUI::CAppBase*> (m_pParent), m_pAlbumTitles, album->GetAlbum(), album->GetArtist()); m_tAlbumGetter.Start(); m_pSmoothMoveForm->Enable(false); m_pFilterBackground->Enable(false); for (int i = 0; i < 28; ++i) { m_pCharSelector[i]->Enable(false); } // Set Album und Artist std::string temp = album->GetAlbum(); temp.append("\n"); temp.append(album->GetArtist()); m_pAlbumName->SetText(temp); // move speed int xDistance = imageBoxVector[row]->GetPositionX() - (m_pAlbumBackground->GetPositionX() + 5); int yDistance = imageBoxVector[row]->GetPositionY() - (m_pAlbumBackground->GetPositionY() + 5); int widthDistance = (510 - 10) - imageBoxVector[row]->GetWidth(); int heightDistance = (510 - 10) - imageBoxVector[row]->GetHeight(); if (xDistance < 0) xDistance *= -1; if (yDistance < 0) yDistance *= -1; if (widthDistance < 0) widthDistance *= -1; if (heightDistance < 0) heightDistance *= -1; int speedX = (int) (600 * (float) ((float) xDistance / (float) widthDistance)); int speedY = (int) (600 * (float) ((float) yDistance / (float) widthDistance)); m_pImageBoxBig->Move(imageBoxVector[row]->GetPositionX(), imageBoxVector[row]->GetPositionY()); m_pImageBoxBig->Resize(imageBoxVector[row]->GetWidth(), imageBoxVector[row]->GetHeight()); m_pImageBoxBig->MoveAnimated(m_pAlbumBackground->GetPositionX() + 5, m_pAlbumBackground->GetPositionY() + 5, speedX, speedY); m_pImageBoxBig->ResizeAnimated(510 - 10, 510 - 10, 600); m_pImageBoxBig->SetPicture(imageBoxVector[row]->GetPicture()); m_pImageBoxBig->SetRotationAngleY(0.0f); m_pImageBoxBig->SetStopAngelY(180); m_pImageBoxBig->RotateAnimatedY(6, false); m_pImageBoxBig->Visible(true); m_pZoomBackground->Visible(true); m_pZoomBackground->SetAlphaBlending(0); m_pZoomBackground->BlendAnimated(255, 800); }
void CAddMusicAlbum::UpdateImages() { EnterRenderLock(); SallyAPI::Config::CConfig* config = SallyAPI::Config::CConfig::GetInstance(); SallyAPI::Config::CTheme* theme = config->GetTheme(); std::vector<CAlbum*>::iterator iter = m_vAlbumList.begin(); int k = 0; int i = 0; if (m_iStartPicture == 0) { std::vector<SallyAPI::GUI::CImageBox*> imageBoxVector = m_mImage[0]; std::vector<SallyAPI::GUI::CLabelBox*> imageNameVector = m_mImageName[0]; std::vector<SallyAPI::GUI::CButton*> imageAddAllVector = m_mImageAddAlbum[0]; for (int l = 0; l < m_iRows; ++l) { imageBoxVector[l]->Visible(false); imageNameVector[l]->Visible(false); imageAddAllVector[l]->Visible(false); } k = 1; } for (int l = 0; (l < (m_iStartPicture - 1) * m_iRows) && (iter != m_vAlbumList.end()); ++l) { ++iter; } SallyAPI::GUI::CPicture* picture; while ((k < m_iCols + 2) && (iter != m_vAlbumList.end())) { std::vector<SallyAPI::GUI::CImageBox*> imageBoxVector = m_mImage[k]; std::vector<SallyAPI::GUI::CLabelBox*> imageNameVector = m_mImageName[k]; std::vector<SallyAPI::GUI::CButton*> imageAddAllVector = m_mImageAddAlbum[k]; for (; (i < m_iRows) && (iter != m_vAlbumList.end()); i++) { CAlbum* album = *iter; std::string covername = album->GetCoverName(); std::string filename = SallyAPI::String::PathHelper::GetDirectoryFromPath(album->GetFilename()); filename = SallyAPI::String::PathHelper::CorrectPath(filename); filename.append(covername); std::string description = album->GetArtist(); description.append("\n"); description.append(album->GetAlbum()); imageNameVector[i]->SetText(description); imageBoxVector[i]->SetText(filename); picture = m_mPictureMap[filename]; // Not yet loaded... use default pic if (picture == NULL) picture = theme->GetPicture(GUI_APP_DEFAULT_CD + m_iGraphicId); // Now paint if (picture != NULL) { imageBoxVector[i]->SetPicture(picture); imageBoxVector[i]->Visible(true); /* int xImageBox = 0; int yImageBox = 0; imageBoxVector[i]->GetAbsolutPosition(&xImageBox, &yImageBox); float rotationAngleY = xImageBox - ((WINDOW_WIDTH) / 2) + MENU_WIDTH; rotationAngleY = rotationAngleY / 1500; imageBoxVector[i]->SetRotationAngleY(rotationAngleY); */ imageNameVector[i]->Visible(true); imageAddAllVector[i]->Visible(true); } else { imageBoxVector[i]->SetPicture(NULL); imageNameVector[i]->SetText(""); imageNameVector[i]->Visible(false); imageAddAllVector[i]->Visible(false); } ++iter; } if (iter != m_vAlbumList.end()) { i = 0; k++; } } for (; k < m_iCols + 2; ++k) { std::vector<SallyAPI::GUI::CImageBox*> imageBoxVector = m_mImage[k]; std::vector<SallyAPI::GUI::CLabelBox*> imageNameVector = m_mImageName[k]; std::vector<SallyAPI::GUI::CButton*> imageAddAllVector = m_mImageAddAlbum[k]; for (; i < m_iRows; ++i) { imageBoxVector[i]->Visible(false); imageNameVector[i]->Visible(false); imageAddAllVector[i]->Visible(false); imageNameVector[i]->SetText(""); imageBoxVector[i]->SetPicture(NULL); } i = 0; } LeaveRenderLock(); }