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 UIDirect3D9Window::MainLoop(void) { quint64 timestamp = StartFrame(); CheckForNewTheme(); UpdateImages(); if (m_d3dDevice) { HRESULT result = m_d3dDevice->TestCooperativeLevel(); if (SUCCEEDED(result)) { m_d3dDevice->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_ARGB(0, 0, 0, 0), 1.0f, 0); if (m_theme && m_d3dDevice && SUCCEEDED(m_d3dDevice->BeginScene())) { m_theme->Refresh(timestamp); m_theme->Draw(timestamp, this, 0.0, 0.0); m_d3dDevice->EndScene(); m_d3dDevice->Present(NULL, NULL, NULL, NULL); SetThreadExecutionState(ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED); } } else { switch (result) { case D3DERR_DEVICELOST: if (D3DERR_DEVICELOST != m_deviceState) LOG(VB_GENERAL, LOG_ERR, "Device lost"); m_deviceState = D3DERR_DEVICELOST; break; case D3DERR_DRIVERINTERNALERROR: LOG(VB_GENERAL, LOG_ERR, "Driver error - quiting"); m_deviceState = D3DERR_DRIVERINTERNALERROR; qApp->exit(); break; case D3DERR_DEVICENOTRESET: if (D3DERR_DEVICENOTRESET != m_deviceState) LOG(VB_GENERAL, LOG_ERR, "Device needs reset"); m_deviceState = D3DERR_DEVICENOTRESET; HandleDeviceReset(); default: break; } } } FinishDrawing(); if (m_timer) { m_timer->Wait(); m_timer->Start(); } }
void CAddMusicAlbum::OnCommandUpdateFilter() { std::string artist = m_pArtistFilter->GetText(); std::string album = m_pAlbumFilter->GetText(); std::string genre = m_pGenreFilter->GetText(); DeleteLoadedCovers(); m_pZoomBackground->Visible(false); m_pAlbumBackground->Visible(false); m_iStartPicture = 0; ResetImages(); UpdateImages(); CMediaDatabase::GetAlbumsFromDatabase(dynamic_cast<SallyAPI::GUI::CAppBase*> (m_pParent), &m_vAlbumList, artist, album, genre); m_tImageLoader.Start(); }
void CAddMusicAlbum::OnCommandMouseMove(SallyAPI::GUI::SendMessage::CParameterBase* messageParameter) { // remove the mouse down selection for (int k = 0; 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 (int i = 0; i < m_iRows; ++i) { imageBoxVector[i]->SendMessageToChilds(0, 0, GUI_MESSAGE_CONTROL_SCROLLED, NULL); imageNameVector[i]->SendMessageToChilds(0, 0, GUI_MESSAGE_CONTROL_SCROLLED, NULL); imageAddAllVector[i]->SendMessageToChilds(0, 0, GUI_MESSAGE_CONTROL_SCROLLED, NULL); } } SallyAPI::GUI::SendMessage::CParameterInteger* interger = (SallyAPI::GUI::SendMessage::CParameterInteger*) messageParameter; if (interger == NULL) return; int moveValue = interger->GetInteger(); // std::string ttt = SallyAPI::String::StringHelper::ConvertToString(moveValue); // ttt.append("\n"); // OutputDebugStr(ttt.c_str()); std::vector<SallyAPI::GUI::CLabelBox*> imageNameVectorTest = m_mImageName[0]; // move to the left int xTemp = imageNameVectorTest[0]->GetPositionX(); while ((xTemp + moveValue >= 0) && (m_iStartPicture > 0)) { moveValue -= PICTURE_WIDTH_MAX_SMALL_COMPLETE; m_iStartPicture--; // std::string ttt; // ttt.append("--\n"); // OutputDebugStr(ttt.c_str()); } // move to the right xTemp = imageNameVectorTest[0]->GetPositionX(); while ((xTemp + moveValue <= PICTURE_WIDTH_MAX_SMALL_COMPLETE * -1) && (m_iStartPicture + m_iCols - 2 < ((m_vAlbumList.size() - 1) / m_iRows) + 1)) { moveValue += PICTURE_WIDTH_MAX_SMALL_COMPLETE; m_iStartPicture++; // std::string ttt; // ttt.append("++\n"); // OutputDebugStr(ttt.c_str()); } // can we scroll so far to the left? if (m_iStartPicture <= 0) { std::vector<SallyAPI::GUI::CLabelBox*> imageNameVectorStart = m_mImageName[1]; int newX = imageNameVectorStart[0]->GetPositionX() + moveValue; if (newX > m_iBorderLeft) { moveValue = (imageNameVectorStart[0]->GetPositionX() - m_iBorderLeft) * -1; ResetBox2Object(); } } // can we scroll so far to the right? if (m_iStartPicture + m_iCols - 2 >= ((m_vAlbumList.size() - 1) / m_iRows) + 1) { std::vector<SallyAPI::GUI::CLabelBox*> imageNameVectorStart = m_mImageName[1]; int newX = imageNameVectorStart[0]->GetPositionX() + moveValue; if (newX < m_iBorderLeft) { moveValue = m_iBorderLeft - imageNameVectorStart[0]->GetPositionX(); ResetBox2Object(); } } // rock'n'roll for (int k = 0; 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 (int i = 0; i < m_iRows; ++i) { imageBoxVector[i]->Move(imageBoxVector[i]->GetPositionX() + moveValue, imageBoxVector[i]->GetPositionY()); imageNameVector[i]->Move(imageNameVector[i]->GetPositionX() + moveValue, imageNameVector[i]->GetPositionY()); imageAddAllVector[i]->Move(imageAddAllVector[i]->GetPositionX() + moveValue, imageAddAllVector[i]->GetPositionY()); } } UpdateImages(); }
void CAddMusicAlbum::SendMessageToParent(SallyAPI::GUI::CGUIBaseObject* reporter, int reporterId, int messageId, SallyAPI::GUI::SendMessage::CParameterBase* messageParameter) { switch (messageId) { case MS_SALLY_KEYBOARD_REQUEST_WORDS: OnCommandRequestWords(reporter, messageParameter); return; case GUI_APP_RENDER_LOCK: EnterRenderLock(); return; case GUI_APP_RENDER_RELEASE: LeaveRenderLock(); return; case GUI_CONTROL_RESIZED: if (reporter == m_pImageBoxBig) { m_pAlbumBackground->Visible(true); m_pAlbumBackground->SetAlphaBlending(0); m_pAlbumBackground->BlendAnimated(255, 800); } return; case GUI_CONTROL_BLENDED: if ((m_pAlbumBackground == reporter) && (m_pAlbumBackground->GetAlphaBlending() == 0)) { m_pSmoothMoveForm->Enable(true); m_pFilterBackground->Enable(true); m_pAlbumBackground->Visible(false); m_pZoomBackground->Visible(false); for (int i = 0; i < 28; ++i) { m_pCharSelector[i]->Enable(true); } } else if ((m_pAlbumBackground == reporter) && (m_pAlbumBackground->GetAlphaBlending() == 255)) { m_pImageBoxBig->Visible(false); m_pImageBoxBig->SetPicture(NULL); } return; case GUI_MOUSEMOVE_SMOOTH_LEFT: case GUI_MOUSEMOVE_SMOOTH_RIGHT: if (reporter == m_pSmoothMoveForm) { OnCommandMouseMove(messageParameter); } return; case GUI_BUTTON_CLICKED: switch(reporterId) { case GUI_APP_ALBUM_BACK: OnCommandBackClicked(); return; case GUI_APP_ADD_ALL_ALBUM: AddAllToPlaylistFromListView(); return; case GUI_APP_CLEAR_TEXT_SEARCH: m_bDisableAutoSearch = true; m_pArtistFilter->SetText(""); m_pAlbumFilter->SetText(""); m_bDisableAutoSearch = false; m_pGenreFilter->SetText(""); return; case GUI_CHAR_SELECTOR: OnCommandCharSelector(reporter); return; } OnCommandAddAlbum(reporterId); break; case GUI_LISTVIEW_ITEM_ACTION_CLICKED: case GUI_LISTVIEW_ITEM_CLICKED: if (reporter == m_pAlbumTitles) AddToPlaylistFromListView(messageParameter); return; case GUI_LISTVIEW_ITEM_DOUBLECLICKED: if (reporter == m_pAlbumTitles) OnCommandDoubleClicked(messageParameter); return; case GUI_EDIT_CHANGED: switch (reporterId) { case GUI_APP_FILTER_GENRE_EDIT: case GUI_APP_FILTER_ALBUM_EDIT: case GUI_APP_FILTER_ARTIST_EDIT: if (!m_bDisableAutoSearch) OnCommandUpdateFilter(); return; } break; case GUI_APP_FOLDER_PIC_CHANGED: UpdateImages(); return; case GUI_APP_FOLDER_PIC_LOADED: UpdateImages(messageParameter); return; case GUI_IMAGEBOX_CLICKED: if (reporter != m_pZoomBackground) OnCommandProcessClicked(reporterId); break; } SallyAPI::GUI::CForm::SendMessageToParent(reporter, reporterId, messageId, messageParameter); }