// Browse Image void ScreenshotDialog::BrowseBackgroundImage() { // Set Image filter QList<QByteArray> imageFormat(QImageReader::supportedImageFormats()); const int numberOfFormat= imageFormat.size(); QString filter(tr("All Images (")); for (int i= 0; i < numberOfFormat; ++i) { filter.append(QString(" *.") + QString(imageFormat[i])); } filter.append(")"); QString imageFileName= QFileDialog::getOpenFileName(this, tr("Image File Name"), m_CurrentBackgroundImageName, filter); if (!imageFileName.isEmpty() && QFile(imageFileName).exists()) { // Test if the Image is Loadable QImage testBackgroundLoading(imageFileName); if (!testBackgroundLoading.isNull()) { m_CurrentBackgroundImageName= imageFileName; m_BackGroundMode= BackGroundImage; // Take the ScreenShot takeScreenshot(); // Update the preview image updatePreviewImage(); } else { QString message(tr("Unable to load image :") + QString("\n")); message+= imageFileName; QMessageBox::critical(this->parentWidget(), tr("Backround Image"), message); } } }
// The size off the target image changed void ScreenshotDialog::targetImageSizeChanged() { // Compute image aspect ratio m_TargetImageSize.setWidth(spinBoxWidth->value()); m_TargetImageSize.setHeight(spinBoxHeight->value()); m_ImageAspectRatio= static_cast<double>(m_TargetImageSize.width()) / static_cast<double>(m_TargetImageSize.height()); // Take the ScreenShot takeScreenshot(); // Update the preview image updatePreviewImage(); // Update predifined Combo box comboBoxPredifinedSize->blockSignals(true); const int currentIndex= m_PredefinedSizes.indexOf(m_TargetImageSize); if (currentIndex != -1) { comboBoxPredifinedSize->setCurrentIndex(currentIndex); } else { comboBoxPredifinedSize->setCurrentIndex(0); } comboBoxPredifinedSize->blockSignals(false); }
// Edit background color void ScreenshotDialog::editBackgroundColor() { QColor color = QColorDialog::getColor(m_CurrentBackgroundColor, this); if (color.isValid()) { m_CurrentBackgroundColor= color; // Take the ScreenShot takeScreenshot(); // Update the preview image updatePreviewImage(); } }
// Activate default background void ScreenshotDialog::activateDefaultBackground() { if (m_BackGroundMode != BackGroundDefault) { editColorButton->setEnabled(false); browseImageButton->setEnabled(false); m_BackGroundMode= BackGroundDefault; // Take the ScreenShot takeScreenshot(); // Update the preview image updatePreviewImage(); } }
// Initialize the dialog void ScreenshotDialog::initScreenshotDialog(const QString& fileName) { m_DefaultImageName= fileName; // Compute image aspect ratio const int width= spinBoxWidth->value(); const int height= spinBoxHeight->value(); m_ImageAspectRatio= static_cast<double>(width) / static_cast<double>(height); m_ScreenshotAspectRatio= m_pOpenglView->viewportHandle()->aspectRatio(); // Take the ScreenShot takeScreenshot(); // Update the preview image updatePreviewImage(); }
INT_PTR CALLBACK DlgProcPopSkinsOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { static bool bDlgInit = false; //some controls send WM_COMMAND before or during WM_INITDIALOG static HANDLE hhkFontsReload = 0; static OPTTREE_OPTION *skinOptions = NULL; static int skinOptionsCount = 0; if (skinOptions) { int index = -1; OptTree_ProcessMessage(hwndDlg, msg, wParam, lParam, &index, IDC_SKIN_LIST_OPT, skinOptions, skinOptionsCount); if (index != -1) { if (lstrcmp(skinOptions[index].pszSettingName, _T("Skin options")) == 0) { const PopupSkin *skin = 0; if (skin = skins.getSkin(PopupOptions.SkinPack)) { skin->setFlag(skinOptions[index].Data, skinOptions[index].bState ? true : false); } } else if (lstrcmp(skinOptions[index].pszSettingName, _T("Global settings")) == 0) { switch (skinOptions[index].dwFlag) { case (1 << 0): PopupOptions.DisplayTime = skinOptions[index].bState; break; case (1 << 1): PopupOptions.DropShadow = skinOptions[index].bState; break; case (1 << 2): PopupOptions.EnableFreeformShadows = skinOptions[index].bState; break; case (1 << 3): PopupOptions.EnableAeroGlass = skinOptions[index].bState; break; case (1 << 4): PopupOptions.UseWinColors = skinOptions[index].bState; break; case (1 << 5): PopupOptions.UseMText = skinOptions[index].bState; break; } } updatePreviewImage(GetDlgItem(hwndDlg, IDC_PREVIEWBOX)); return FALSE; } } switch (msg) { case WM_INITDIALOG: { HWND hCtrl = NULL; DWORD dwIndex = 0; //Skin List hCtrl = GetDlgItem(hwndDlg, IDC_SKINLIST); ListBox_ResetContent(hCtrl); LPTSTR Temp = NULL; for (const Skins::SKINLIST *sl = skins.getSkinList(); sl; sl = sl->next) { dwIndex = ListBox_AddString(hCtrl, sl->name); ListBox_SetItemData(hCtrl, dwIndex, sl->name); } ListBox_SetCurSel(hCtrl, ListBox_FindString(hCtrl, 0, PopupOptions.SkinPack)); //Skin List reload button SendMessage(GetDlgItem(hwndDlg, IDC_BTN_RELOAD), BUTTONSETASFLATBTN, TRUE, 0); SendMessage(GetDlgItem(hwndDlg, IDC_BTN_RELOAD), BM_SETIMAGE, IMAGE_ICON, (LPARAM)IcoLib_GetIcon(ICO_OPT_RELOAD,0)); SendMessage(GetDlgItem(hwndDlg, IDC_BTN_RELOAD), BUTTONADDTOOLTIP, (WPARAM)Translate("Refresh List"), 0); //Skin Option List SkinOptionList_Update (skinOptions, &skinOptionsCount, hwndDlg); //PreviewBox mir_subclassWindow(GetDlgItem(hwndDlg, IDC_PREVIEWBOX), WndProcPreviewBox); updatePreviewImage(GetDlgItem(hwndDlg, IDC_PREVIEWBOX)); //hooks hhkFontsReload = HookEventMessage(ME_FONT_RELOAD, hwndDlg, WM_USER); TranslateDialogDefault(hwndDlg); bDlgInit = true; } return TRUE; case WM_USER: updatePreviewImage(GetDlgItem(hwndDlg, IDC_PREVIEWBOX)); return TRUE; case WM_COMMAND: { HWND hCtrl = NULL; UINT idCtrl = LOWORD(wParam); switch (HIWORD(wParam)) { case BN_KILLFOCUS: //Button controls case BN_SETFOCUS: //Button controls return TRUE; break; case BN_CLICKED: //Button controls switch(idCtrl) { case IDC_PREVIEW: PopupPreview(); break; case IDC_BTN_RELOAD: { LPTSTR Temp = NULL; DWORD dwIndex = 0; TCHAR szNewSkin[128]; LPTSTR pszOldSkin = mir_tstrdup(PopupOptions.SkinPack); skins.load(_T("")); hCtrl = GetDlgItem(hwndDlg, IDC_SKINLIST); ListBox_ResetContent(hCtrl); for (const Skins::SKINLIST *sl = skins.getSkinList(); sl; sl = sl->next) { dwIndex = ListBox_AddString(hCtrl, sl->name); ListBox_SetItemData(hCtrl, dwIndex, sl->name); } ListBox_SetCurSel(hCtrl, ListBox_FindString(hCtrl, 0, PopupOptions.SkinPack)); //make shure we have select skin (ListBox_SetCurSel may be fail) ListBox_GetText(hCtrl, ListBox_GetCurSel(hCtrl), &szNewSkin); if (lstrcmp(pszOldSkin, szNewSkin) != 0) { mir_free(PopupOptions.SkinPack); PopupOptions.SkinPack = mir_tstrdup(szNewSkin); } mir_free(pszOldSkin); const PopupSkin *skin = 0; if (skin = skins.getSkin(PopupOptions.SkinPack)) { //update Skin Option List from reload SkinPack bDlgInit = false; bDlgInit = SkinOptionList_Update (skinOptions, &skinOptionsCount, hwndDlg); } SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); }//end IDC_BTN_RELOAD: break; case IDC_GETSKINS: CallService(MS_UTILS_OPENURL,0,(LPARAM)"http://miranda-ng.org/"); break; }//end switch(idCtrl) updatePreviewImage(GetDlgItem(hwndDlg, IDC_PREVIEWBOX)); break; case CBN_SELCHANGE: //combo box controls switch(idCtrl) { case IDC_SKINLIST: { //Skin list change mir_free(PopupOptions.SkinPack); PopupOptions.SkinPack = mir_tstrdup((TCHAR *)SendDlgItemMessage( hwndDlg, IDC_SKINLIST, LB_GETITEMDATA, (WPARAM)SendDlgItemMessage(hwndDlg, IDC_SKINLIST, LB_GETCURSEL,0,0), 0)); const PopupSkin *skin = 0; if (skin = skins.getSkin(PopupOptions.SkinPack)) { mir_free(PopupOptions.SkinPack); PopupOptions.SkinPack = mir_tstrdup(skin->getName()); //update Skin Option List bDlgInit = false; bDlgInit = SkinOptionList_Update (skinOptions, &skinOptionsCount, hwndDlg); } updatePreviewImage(GetDlgItem(hwndDlg, IDC_PREVIEWBOX)); } SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); break; }//end switch(idCtrl) break; }//end switch (HIWORD(wParam)) break; }// end WM_COMMAND return FALSE; case WM_NOTIFY: if (!bDlgInit) return FALSE; switch (((LPNMHDR)lParam)->idFrom) { case 0: switch (((LPNMHDR)lParam)->code) { case PSN_RESET: LoadOption_Skins(); return TRUE; case PSN_APPLY: { //skin pack db_set_ts(NULL, MODULNAME, "SkinPack", PopupOptions.SkinPack); //skin options const PopupSkin *skin = 0; if (skin = skins.getSkin(PopupOptions.SkinPack)) skin->saveOpts(); skins.freeAllButActive(); //more Skin options db_set_b(NULL, MODULNAME, "DisplayTime", PopupOptions.DisplayTime); db_set_b(NULL, MODULNAME, "DropShadow", PopupOptions.DropShadow); db_set_b(NULL, MODULNAME, "EnableShadowRegion", PopupOptions.EnableFreeformShadows); db_set_b(NULL, MODULNAME, "EnableAeroGlass", PopupOptions.EnableAeroGlass); db_set_b(NULL, MODULNAME, "UseMText", PopupOptions.UseMText); }//end PSN_APPLY: return TRUE; }//switch (((LPNMHDR)lParam)->code) break; }//end switch (((LPNMHDR)lParam)->idFrom) return FALSE; case WM_DESTROY: if (wndPreview) { delete wndPreview; wndPreview = NULL; gPreviewOk = false; } if (hhkFontsReload) UnhookEvent(hhkFontsReload); if (skinOptions) { for (int i=0; i < skinOptionsCount; ++i) { mir_free(skinOptions[i].pszOptionName); mir_free(skinOptions[i].pszSettingName); } mir_free(skinOptions); skinOptions = NULL; skinOptionsCount = 0; } return TRUE; }//end switch (msg) return FALSE; }