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();
}
Exemple #2
0
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);
}