Example #1
0
// COptionsGeneral message handlers
BOOL COptionsGeneral::OnInitDialog() 
{
	CDialog::OnInitDialog();

	UpdateThumbnail();
	size_t nDFI = CSCAD3DMdlSettings::Get3DS() ? CSCAD3DMdlSettings::Get3DS()->GetEFISize() : 0;
	int nItemPos;
	const FPTExtFuncInfo * pEFI;
	UINT i;
	CRect r;

	m_ViewProperty = m_rViewerOptions.m_ViewProp;
	for( i = 0; i < nDFI; i++ )
	{
		pEFI = CSCAD3DMdlSettings::Get3DS()->GetEFIAt( i );
		nItemPos = m_FileTypeList.AddString( pEFI->m_sDescript );
		m_FileTypeList.SetItemData( nItemPos, DWORD_PTR(pEFI) );
		if( std::find( m_ViewProperty.m_vsExt.begin(), m_ViewProperty.m_vsExt.end(), pEFI->m_sExt ) != m_ViewProperty.m_vsExt.end() )
			m_FileTypeList.SetSel( nItemPos, TRUE );
	}

	for( i = 0; i < SCADDefProj::GetDefProjSize(); i++ )
	{
		nItemPos = m_DefProjList.AddString( SCADDefProj::GetDesc( SCDefProjType(i) ) );
		m_DefProjList.SetItemData( nItemPos, DWORD(i) );
		if( m_ViewProperty.m_DefProj == int(i) )
			m_DefProjList.SetCurSel( nItemPos );
	}
	//m_ViewProperty.m_DefProj = m_rViewerOptions.nDefaultView;
	m_ThumbWidthSlider.GetClientRect( &r );
	m_ThumbWidthSlider.SetRange( 10, r.Width() );
	m_ThumbWidthSlider.SetTicFreq( 10 );
	m_ThumbWidthSlider.SetPos( m_ViewProperty.m_nItemCX);
	m_ThumbHeightSlider.GetClientRect( &r );
	m_ThumbHeightSlider.SetRange( 10, r.Height() );
	m_ThumbHeightSlider.SetTicFreq( 10 );
	m_ThumbHeightSlider.SetPos( m_ViewProperty.m_nItemCY);

	static_cast<CButton*>(GetDlgItem( IDC_SIZE_PROP ))->SetBitmap( m_LockBmp );
	static_cast<CButton*>(GetDlgItem( IDC_SIZE_PROP ))->SetCheck( m_bSyncChangeThumbSize ? BST_CHECKED : BST_UNCHECKED );

	nItemPos = m_Languages.AddString( _T("English") );
	m_Languages.SetItemData( nItemPos, 1033 );
	if( m_nLangID == 1033 )
		m_Languages.SetCurSel( nItemPos );
	nItemPos = m_Languages.AddString( _T("–усский") );
	m_Languages.SetItemData( nItemPos, 1049 );
	if( m_nLangID == 1049 )
		m_Languages.SetCurSel( nItemPos );


	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
Example #2
0
void COptionsGeneral::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
	CDialog::OnHScroll(nSBCode, nPos, pScrollBar);

	if( !pScrollBar || !m_bManualThumbChange)
		return;
	
	CSliderCtrl * pSlider = reinterpret_cast<CSliderCtrl*>( pScrollBar );
	
	if( pSlider && pSlider->GetDlgCtrlID() == IDC_WIDTH_SLIDER )
	{
		int pos = pSlider->GetPos();

		if( m_nThumbnailWidth != pos )
		{
			if( m_bSyncChangeThumbSize )
			{
				int nNewHeight = int(pos/m_fAspect);
				int nMaxHeight, nMinHeight;
				
				m_ThumbHeightSlider.GetRange( nMinHeight, nMaxHeight );
				if( nNewHeight < nMinHeight || nNewHeight > nMaxHeight )
				{
					MessageBeep( MB_ICONEXCLAMATION );
					pSlider->SetPos( m_nThumbnailWidth);
				}
				else
				{
					CSCADString str;

					m_nThumbnailWidth = pos;
					m_nThumbnailHeight = nNewHeight;
					m_bManualThumbChange = false;
					m_ThumbHeightSlider.SetPos( m_nThumbnailHeight);
					m_bManualThumbChange = true;
					str.Format( _T("%d"), m_nThumbnailWidth );
					GetDlgItem( IDC_WIDTH_EDIT )->SetWindowText( str );
					str.Format( _T("%d"), m_nThumbnailHeight );
					GetDlgItem( IDC_HEIGHT_EDIT )->SetWindowText( str );
				}
			}
			else
			{
				CSCADString str;

				str.Format( _T("%d"), pos );
				GetDlgItem( IDC_WIDTH_EDIT )->SetWindowText( str );
				m_nThumbnailWidth = pos;
			}
			UpdateThumbnail();

		}
	}
}
Example #3
0
/** \fn     GalleryView::UpdateImageItem(MythUIButtonListItem *)
 *  \brief  Updates the visible representation of a MythUIButtonListItem
 *  \param  item The item that shall be updated
 *  \return void
 */
void GalleryView::UpdateImageItem(MythUIButtonListItem *item)
{
    if (!item)
        return;

    MythGenericTree *node = item->GetData().value<MythGenericTree *>();
    if (!node)
        return;

    // update the position in the node list
    m_galleryViewHelper->m_currentNode->setSelectedChild(node);

    ImageMetadata *im = node->GetData().value<ImageMetadata *>();
    if (!im)
        return;

    // Depending what the themer has done, display a small
    // icon that shows if the current item is a file or a folder
    // Also show an additional background image if required. This is
    // primarily useful when the item is a folder and a folder background
    // image shall be shown behind the small preview thumbnail images
    switch (im->m_type)
    {
    case kSubDirectory:

        item->SetText(QString::number(im->m_dirCount), "childcount");

        if (im->m_fileCount > 0)
            item->SetText(QString("%1/%2")
                          .arg(im->m_dirCount)
                          .arg(im->m_fileCount), "childcount");

        item->DisplayState("subfolder", "nodetype");
        break;

    case kUpDirectory:
        item->DisplayState("upfolder", "nodetype");
        break;

    case kImageFile:
        item->DisplayState("image", "nodetype");
        break;

    case kVideoFile:
        item->DisplayState("video", "nodetype");
        break;

    default:
        break;
    }

    // set the image as hidden or visible
    QString state = (im->m_isHidden) ? "hidden" : "visible";
    item->DisplayState(state, "nodevisibility");

    item->SetText(im->m_name, "title");
    item->SetText(im->m_name);

    // set the image as selected
    item->setChecked(MythUIButtonListItem::NotChecked);
    item->DisplayState("off", "nodecheck");
    if (im->m_selected)
    {
        item->setChecked(MythUIButtonListItem::FullChecked);
        item->DisplayState("full", "nodecheck");
    }

    // update the other widgets in the screen
    if (item == m_imageList->GetItemCurrent())
        UpdateText(item);

    // set the thumbnail image
    UpdateThumbnail(item);
}
Example #4
0
/** \fn     GalleryView::customEvent(QEvent *)
 *  \brief  Translates the keypresses to specific actions within the plugin
 *  \param  event The custom event
 *  \return void
 */
void GalleryView::customEvent(QEvent *event)
{
    if ((MythEvent::Type)(event->type()) == MythEvent::MythEventMessage)
    {
        MythEvent *me = (MythEvent *)event;
        QString message = me->Message();

        if (message.startsWith("IMAGE_THUMB_CREATED"))
        {
            QStringList tokens = message.simplified().split(" ");
            int fileid = 0;
            if (tokens.size() >= 2)
            {
                fileid = tokens[1].toUInt();

                // FIXME: This sucks, must be a better way to do this
                //
                // get through the entire list of image items and find
                // the fileid that matches the created thumbnail filename
                for (int i = 0; i < m_imageList->GetCount(); i++)
                {
                    MythUIButtonListItem *item = m_imageList->GetItemAt(i);
                    if (!item)
                        continue;

                    ImageMetadata *im = GetImageMetadataFromButton(item);
                    if (!im)
                        continue;

                    if (im->m_id == fileid)
                    {
                        UpdateThumbnail(item, true);
                        break;
                    }
                }
            }
        }
    }
    else if (event->type() == DialogCompletionEvent::kEventType)
    {
        DialogCompletionEvent *dce = (DialogCompletionEvent*)(event);

        QString resultid  = dce->GetId();
        int     buttonnum = dce->GetResult();

        // Confirm current file deletion
        if (resultid == "confirmdelete")
        {
            switch (buttonnum)
            {
            case 0 :
                break;
            case 1 :
                FileDelete();
                break;
            }
        }

        // Confirm all selected file deletion
        if (resultid == "confirmdeleteselected")
        {
            switch (buttonnum)
            {
            case 0 :
                break;
            case 1 :
                FileDeleteSelected();
                break;
            }
        }

        // Synchronize the database
        if (resultid == "confirmstartsync")
        {
            switch (buttonnum)
            {
            case 0 :
                break;
            case 1 :
                // Start the sync, the API call will
                // check if a sync is running already
                m_galleryViewHelper->m_fileHelper->StartSyncImages();

                if (!m_syncStatusThread->isRunning())
                    m_syncStatusThread->start();

                break;
            }
        }

        // Stop the database sync
        if (resultid == "confirmstopsync")
        {
            switch (buttonnum)
            {
            case 0 :
                break;
            case 1 :
                if (m_syncStatusThread->isRunning())
                    m_syncStatusThread->quit();

                m_galleryViewHelper->m_fileHelper->StopSyncImages();
                break;
            }
        }

        if (resultid == "filerename")
        {
            QString newName = dce->GetResultText();
            FileRename(newName);
        }
    }
}