// 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 }
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(); } } }
/** \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); }
/** \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); } } }