DROPEFFECT COleServerItem::DoDragDrop(LPCRECT lpItemRect, CPoint ptOffset, BOOL bIncludeLink, DWORD dwEffects, LPCRECT lpRectStartDrag) { ASSERT(AfxIsValidAddress(lpItemRect, sizeof(RECT))); ASSERT_VALID(this); ASSERT_VALID(this); DROPEFFECT dropEffect = DROPEFFECT_NONE; COleDataSource *pDataSource = NULL; TRY { // get clipboard data for this item CSize sizeItem( lpItemRect->right - lpItemRect->left, lpItemRect->bottom - lpItemRect->top); pDataSource = OnGetClipboardData(bIncludeLink, &ptOffset, &sizeItem); // add DROPEFFECT_LINK if link source is available LPDATAOBJECT lpDataObject = (LPDATAOBJECT) pDataSource->GetInterface(&IID_IDataObject); ASSERT(lpDataObject != NULL); FORMATETC formatEtc; formatEtc.cfFormat = (CLIPFORMAT)_oleData.cfLinkSource; formatEtc.ptd = NULL; formatEtc.dwAspect = DVASPECT_CONTENT; formatEtc.lindex = -1; formatEtc.tymed = (TYMED)-1; if (lpDataObject->QueryGetData(&formatEtc) == S_OK) dwEffects |= DROPEFFECT_LINK; // calculate default sensitivity rectangle CRect rectDrag; if (lpRectStartDrag == NULL) { rectDrag.SetRect(lpItemRect->left, lpItemRect->top, lpItemRect->left, lpItemRect->top); lpRectStartDrag = &rectDrag; } // do drag drop operation dropEffect = pDataSource->DoDragDrop(dwEffects, lpRectStartDrag); pDataSource->InternalRelease(); } CATCH_ALL(e) { if (pDataSource != NULL) pDataSource->InternalRelease(); THROW_LAST(); } END_CATCH_ALL return dropEffect; }
void ConfigComputerDialog::createControls() { lstView = new QListWidget(this); pages = new QStackedWidget(this); panMain = createMainWidget(); panSolver = createSolverWidget(); // List View lstView->setCurrentRow(0); lstView->setViewMode(QListView::IconMode); lstView->setResizeMode(QListView::Adjust); lstView->setMovement(QListView::Static); lstView->setFlow(QListView::TopToBottom); lstView->setIconSize(QSize(60, 60)); lstView->setMinimumWidth(135); lstView->setMaximumWidth(135); lstView->setMinimumHeight((45+fontMetrics().height()*4)*5); connect(lstView, SIGNAL(currentItemChanged(QListWidgetItem *, QListWidgetItem *)), this, SLOT(doCurrentItemChanged(QListWidgetItem *, QListWidgetItem *))); QSize sizeItem(131, 85); // listView items QListWidgetItem *itemMain = new QListWidgetItem(icon("options-main"), tr("Main"), lstView); itemMain->setTextAlignment(Qt::AlignHCenter); itemMain->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); itemMain->setSizeHint(sizeItem); QListWidgetItem *itemSolver = new QListWidgetItem(icon("options-solver"), tr("Solver"), lstView); itemSolver->setTextAlignment(Qt::AlignHCenter); itemSolver->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); itemSolver->setSizeHint(sizeItem); pages->addWidget(panMain); pages->addWidget(panSolver); QHBoxLayout *layoutHorizontal = new QHBoxLayout(); layoutHorizontal->addWidget(lstView); layoutHorizontal->addWidget(pages); // dialog buttons QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); connect(buttonBox, SIGNAL(accepted()), this, SLOT(doAccept())); connect(buttonBox, SIGNAL(rejected()), this, SLOT(doReject())); QVBoxLayout *layout = new QVBoxLayout(); layout->addLayout(layoutHorizontal); // layout->addStretch(); layout->addWidget(buttonBox); setLayout(layout); }