From e2605fb0ed517cc2ea03a18cb3f94bda5629321f Mon Sep 17 00:00:00 2001 From: Lei Zhang Date: Thu, 23 Aug 2007 00:34:48 -0700 Subject: [PATCH] gphoto2.ds: Add preview button and ability to disable import GUI. --- dlls/gphoto2.ds/Makefile.in | 2 +- dlls/gphoto2.ds/gphoto2_De.rc | 8 ++- dlls/gphoto2.ds/gphoto2_En.rc | 8 ++- dlls/gphoto2.ds/gphoto2_Fr.rc | 8 ++- dlls/gphoto2.ds/gphoto2_Ko.rc | 8 ++- dlls/gphoto2.ds/gphoto2_Nl.rc | 8 ++- dlls/gphoto2.ds/gphoto2_No.rc | 8 ++- dlls/gphoto2.ds/gphoto2_Pl.rc | 8 ++- dlls/gphoto2.ds/resource.h | 2 + dlls/gphoto2.ds/ui.c | 103 +++++++++++++++++++++++----------- 10 files changed, 108 insertions(+), 55 deletions(-) diff --git a/dlls/gphoto2.ds/Makefile.in b/dlls/gphoto2.ds/Makefile.in index 042cbc3322f..4858200f4d9 100644 --- a/dlls/gphoto2.ds/Makefile.in +++ b/dlls/gphoto2.ds/Makefile.in @@ -3,7 +3,7 @@ TOPOBJDIR = ../.. SRCDIR = @srcdir@ VPATH = @srcdir@ MODULE = gphoto2.ds -IMPORTS = comctl32 user32 gdi32 kernel32 ntdll +IMPORTS = comctl32 user32 gdi32 advapi32 kernel32 ntdll EXTRALIBS = @GPHOTO2LIBS@ EXTRAINCL = @GPHOTO2INCL@ diff --git a/dlls/gphoto2.ds/gphoto2_De.rc b/dlls/gphoto2.ds/gphoto2_De.rc index 000f3e3a968..ee17d6f4a11 100644 --- a/dlls/gphoto2.ds/gphoto2_De.rc +++ b/dlls/gphoto2.ds/gphoto2_De.rc @@ -29,9 +29,11 @@ FONT 8, "MS Sans Serif" BEGIN CONTROL "List1",IDC_LIST1,"SysListView32", LVS_ICON | WS_BORDER | WS_TABSTOP,7,7,358,229 - DEFPUSHBUTTON "Gewählte importieren",IDC_IMPORT,225,252,56,14 - PUSHBUTTON "Alle importieren",IDC_IMPORTALL,7,252,52,14 - PUSHBUTTON "Beenden",IDC_EXIT,295,252,50,14 + DEFPUSHBUTTON "Gewählte importieren",IDC_IMPORT,152,252,72,14 + PUSHBUTTON "Preview",IDC_FETCH,7,252,64,14 + PUSHBUTTON "Alle importieren",IDC_IMPORTALL,80,252,64,14 + CONTROL "Skip This Dialog",IDC_SKIP,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,230,252,76,14 + PUSHBUTTON "Beenden",IDC_EXIT,315,252,50,14 END IDD_DIALOG1 DIALOG DISCARDABLE 0, 0, 186, 46 diff --git a/dlls/gphoto2.ds/gphoto2_En.rc b/dlls/gphoto2.ds/gphoto2_En.rc index 8b3b47973ef..793bfa48125 100644 --- a/dlls/gphoto2.ds/gphoto2_En.rc +++ b/dlls/gphoto2.ds/gphoto2_En.rc @@ -29,9 +29,11 @@ FONT 8, "MS Sans Serif" BEGIN CONTROL "List1",IDC_LIST1,"SysListView32", LVS_ICON | WS_BORDER | WS_TABSTOP,7,7,358,229 - DEFPUSHBUTTON "Import Selected",IDC_IMPORT,225,252,56,14 - PUSHBUTTON "Import All",IDC_IMPORTALL,7,252,52,14 - PUSHBUTTON "Exit",IDC_EXIT,295,252,50,14 + DEFPUSHBUTTON "Import Selected",IDC_IMPORT,152,252,72,14 + PUSHBUTTON "Preview",IDC_FETCH,7,252,64,14 + PUSHBUTTON "Import All",IDC_IMPORTALL,80,252,64,14 + CONTROL "Skip This Dialog",IDC_SKIP,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,230,252,76,14 + PUSHBUTTON "Exit",IDC_EXIT,315,252,50,14 END IDD_DIALOG1 DIALOG DISCARDABLE 0, 0, 186, 46 diff --git a/dlls/gphoto2.ds/gphoto2_Fr.rc b/dlls/gphoto2.ds/gphoto2_Fr.rc index c8a53be88b7..2645fdf7ec6 100644 --- a/dlls/gphoto2.ds/gphoto2_Fr.rc +++ b/dlls/gphoto2.ds/gphoto2_Fr.rc @@ -29,9 +29,11 @@ FONT 8, "MS Sans Serif" BEGIN CONTROL "List1",IDC_LIST1,"SysListView32", LVS_ICON | WS_BORDER | WS_TABSTOP,7,7,358,229 - DEFPUSHBUTTON "Importer la sélection",IDC_IMPORT,225,252,56,14 - PUSHBUTTON "Importer tous",IDC_IMPORTALL,7,252,52,14 - PUSHBUTTON "Fermer",IDC_EXIT,295,252,50,14 + DEFPUSHBUTTON "Importer la sélection",IDC_IMPORT,152,252,72,14 + PUSHBUTTON "Preview",IDC_FETCH,7,252,64,14 + PUSHBUTTON "Importer tous",IDC_IMPORTALL,80,252,64,14 + CONTROL "Skip This Dialog",IDC_SKIP,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,230,252,76,14 + PUSHBUTTON "Fermer",IDC_EXIT,315,252,50,14 END IDD_DIALOG1 DIALOG DISCARDABLE 0, 0, 186, 46 diff --git a/dlls/gphoto2.ds/gphoto2_Ko.rc b/dlls/gphoto2.ds/gphoto2_Ko.rc index a486ce80fae..daaf24c3b5e 100644 --- a/dlls/gphoto2.ds/gphoto2_Ko.rc +++ b/dlls/gphoto2.ds/gphoto2_Ko.rc @@ -30,9 +30,11 @@ FONT 8, "MS Sans Serif" BEGIN CONTROL "List1",IDC_LIST1,"SysListView32", LVS_ICON | WS_BORDER | WS_TABSTOP,7,7,358,229 - DEFPUSHBUTTON "¼±ÅÃµÈ °ÍÀ» ºÒ·¯¿À±â",IDC_IMPORT,225,252,56,14 - PUSHBUTTON "¸ðµÎ ºÒ·¯¿À±â",IDC_IMPORTALL,7,252,52,14 - PUSHBUTTON "³ª°¡±â",IDC_EXIT,295,252,50,14 + DEFPUSHBUTTON "¼±ÅÃµÈ °ÍÀ» ºÒ·¯¿À±â",IDC_IMPORT,152,252,72,14 + PUSHBUTTON "Preview",IDC_FETCH,7,252,64,14 + PUSHBUTTON "¸ðµÎ ºÒ·¯¿À±â",IDC_IMPORTALL,80,252,64,14 + CONTROL "Skip This Dialog",IDC_SKIP,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,230,252,76,14 + PUSHBUTTON "³ª°¡±â",IDC_EXIT,315,252,50,14 END IDD_DIALOG1 DIALOG DISCARDABLE 0, 0, 186, 46 diff --git a/dlls/gphoto2.ds/gphoto2_Nl.rc b/dlls/gphoto2.ds/gphoto2_Nl.rc index 805ce492a0d..fe8c0061cca 100644 --- a/dlls/gphoto2.ds/gphoto2_Nl.rc +++ b/dlls/gphoto2.ds/gphoto2_Nl.rc @@ -29,9 +29,11 @@ FONT 8, "MS Sans Serif" BEGIN CONTROL "List1",IDC_LIST1,"SysListView32", LVS_ICON | WS_BORDER | WS_TABSTOP,7,7,358,229 - DEFPUSHBUTTON "Importeer geselecteerde bestanden",IDC_IMPORT,225,252,56,14 - PUSHBUTTON "Importeer alles",IDC_IMPORTALL,7,252,52,14 - PUSHBUTTON "Afsluiten",IDC_EXIT,295,252,50,14 + DEFPUSHBUTTON "Importeer geselecteerde bestanden",IDC_IMPORT,120,252,120,14 + PUSHBUTTON "Preview",IDC_FETCH,7,252,48,14 + PUSHBUTTON "Importeer alles",IDC_IMPORTALL,60,252,56,14 + CONTROL "Skip This Dialog",IDC_SKIP,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,244,252,76,14 + PUSHBUTTON "Afsluiten",IDC_EXIT,315,252,50,14 END IDD_DIALOG1 DIALOG DISCARDABLE 0, 0, 186, 46 diff --git a/dlls/gphoto2.ds/gphoto2_No.rc b/dlls/gphoto2.ds/gphoto2_No.rc index a5c5ad0eb82..f29beb29f29 100644 --- a/dlls/gphoto2.ds/gphoto2_No.rc +++ b/dlls/gphoto2.ds/gphoto2_No.rc @@ -29,9 +29,11 @@ FONT 8, "MS Sans Serif" BEGIN CONTROL "List1",IDC_LIST1,"SysListView32", LVS_ICON | WS_BORDER | WS_TABSTOP,7,7,358,229 - DEFPUSHBUTTON "Importer valgte",IDC_IMPORT,225,252,56,14 - PUSHBUTTON "Importer alle",IDC_IMPORTALL,7,252,52,14 - PUSHBUTTON "Avslutt",IDC_EXIT,295,252,50,14 + DEFPUSHBUTTON "Importer valgte",IDC_IMPORT,152,252,72,14 + PUSHBUTTON "Preview",IDC_FETCH,7,252,64,14 + PUSHBUTTON "Importer alle",IDC_IMPORTALL,80,252,64,14 + CONTROL "Skip This Dialog",IDC_SKIP,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,230,252,76,14 + PUSHBUTTON "Avslutt",IDC_EXIT,315,252,50,14 END IDD_DIALOG1 DIALOG DISCARDABLE 0, 0, 186, 46 diff --git a/dlls/gphoto2.ds/gphoto2_Pl.rc b/dlls/gphoto2.ds/gphoto2_Pl.rc index c95eb20c022..e8657afd1ff 100644 --- a/dlls/gphoto2.ds/gphoto2_Pl.rc +++ b/dlls/gphoto2.ds/gphoto2_Pl.rc @@ -30,9 +30,11 @@ FONT 8, "MS Sans Serif" BEGIN CONTROL "List1",IDC_LIST1,"SysListView32", LVS_ICON | WS_BORDER | WS_TABSTOP,7,7,358,229 - DEFPUSHBUTTON "Skopiuj wybrane",IDC_IMPORT,205,252,76,14 - PUSHBUTTON "Skopiuj wszystkie",IDC_IMPORTALL,7,252,72,14 - PUSHBUTTON "Zakoñcz",IDC_EXIT,295,252,50,14 + DEFPUSHBUTTON "Skopiuj wybrane",IDC_IMPORT,152,252,72,14 + PUSHBUTTON "Preview",IDC_FETCH,7,252,64,14 + PUSHBUTTON "Skopiuj wszystkie",IDC_IMPORTALL,80,252,64,14 + CONTROL "Skip This Dialog",IDC_SKIP,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,230,252,76,14 + PUSHBUTTON "Zakoñcz",IDC_EXIT,315,252,50,14 END IDD_DIALOG1 DIALOG DISCARDABLE 0, 0, 186, 46 diff --git a/dlls/gphoto2.ds/resource.h b/dlls/gphoto2.ds/resource.h index d972978e648..a13915a4766 100644 --- a/dlls/gphoto2.ds/resource.h +++ b/dlls/gphoto2.ds/resource.h @@ -28,3 +28,5 @@ #define IDC_IMPORTALL 1002 #define IDC_EXIT 1003 #define IDC_BITMAP 1004 +#define IDC_FETCH 1005 +#define IDC_SKIP 1006 diff --git a/dlls/gphoto2.ds/ui.c b/dlls/gphoto2.ds/ui.c index e709984fac7..7d43744765d 100644 --- a/dlls/gphoto2.ds/ui.c +++ b/dlls/gphoto2.ds/ui.c @@ -31,6 +31,7 @@ #include "winuser.h" #include "winnls.h" #include "wingdi.h" +#include "winreg.h" #include "commctrl.h" #include "prsht.h" #include "twain.h" @@ -38,6 +39,9 @@ #include "wine/debug.h" #include "resource.h" +LPCSTR settings_key = "Software\\Wine\\Gphoto2"; +LPCSTR settings_value = "SkipUI"; +static BOOL disable_dialog; static HBITMAP static_bitmap; static INT_PTR CALLBACK ConnectingProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) @@ -45,6 +49,43 @@ static INT_PTR CALLBACK ConnectingProc(HWND hwnd, UINT msg, WPARAM wParam, LPARA return FALSE; } +static void on_disable_dialog_clicked(HWND dialog) +{ + if (IsDlgButtonChecked(dialog, IDC_SKIP) == BST_CHECKED) + disable_dialog = TRUE; + else + disable_dialog = FALSE; +} + +static void UI_EndDialog(HWND hwnd, INT_PTR rc) +{ + if (disable_dialog) + { + HKEY key; + const DWORD data = 1; + if (RegCreateKeyExA(HKEY_CURRENT_USER, settings_key, 0, NULL, 0, KEY_ALL_ACCESS, NULL, &key, NULL) == ERROR_SUCCESS) + { + RegSetValueExA(key, settings_value, 0, REG_DWORD, (const BYTE *)&data, sizeof(DWORD)); + RegCloseKey(key); + } + } + EndDialog(hwnd, rc); +} + +static int GetAllImages() +{ + struct gphoto2_file *file; + int has_images = 0; + + LIST_FOR_EACH_ENTRY( file, &activeDS.files, struct gphoto2_file, entry) + { + if (strstr(file->filename,".JPG") || strstr(file->filename,".jpg")) + file->download = TRUE; + has_images = 1; + } + return has_images; +} + static void PopulateListView(HWND List) { struct gphoto2_file *file; @@ -120,14 +161,8 @@ static INT_PTR CALLBACK DialogProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lP { case WM_INITDIALOG: { - HIMAGELIST ilist = 0; - HWND list = GetDlgItem(hwnd,IDC_LIST1); + disable_dialog = FALSE; EnableWindow(GetDlgItem(hwnd,IDC_IMPORT),FALSE); - - PopulateImageList(&ilist,list); - - SendMessageA(list, LVM_SETIMAGELIST,LVSIL_NORMAL,(LPARAM)ilist); - PopulateListView(list); } break; case WM_NOTIFY: @@ -144,8 +179,11 @@ static INT_PTR CALLBACK DialogProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lP case WM_COMMAND: switch LOWORD(wParam) { + case IDC_SKIP: + on_disable_dialog_clicked(hwnd); + break; case IDC_EXIT: - EndDialog(hwnd,0); + UI_EndDialog(hwnd,0); break; case IDC_IMPORT: { @@ -155,7 +193,7 @@ static INT_PTR CALLBACK DialogProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lP if (count ==0) { - EndDialog(hwnd,0); + UI_EndDialog(hwnd,0); return FALSE; } @@ -184,38 +222,28 @@ static INT_PTR CALLBACK DialogProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lP } } - EndDialog(hwnd,1); + UI_EndDialog(hwnd,1); } break; case IDC_IMPORTALL: { - HWND list = GetDlgItem(hwnd,IDC_LIST1); - int count = SendMessageA(list,LVM_GETITEMCOUNT,0,0); - int i; - - if (count ==0) + if (!GetAllImages()) { - EndDialog(hwnd,0); + UI_EndDialog(hwnd,0); return FALSE; } + UI_EndDialog(hwnd,1); + } + break; + case IDC_FETCH: + { + HIMAGELIST ilist = 0; + HWND list = GetDlgItem(hwnd,IDC_LIST1); + PopulateImageList(&ilist,list); - for ( i = 0; i < count; i++) - { - LVITEMA item; - struct gphoto2_file *file; - - - item.mask = LVIF_PARAM; - item.iItem = i; - item.iSubItem = 0; - - SendMessageA(list,LVM_GETITEMA,0,(LPARAM)&item); - - file = (struct gphoto2_file*)item.lParam; - file->download = TRUE; - } - - EndDialog(hwnd,1); + SendMessageA(list, LVM_SETIMAGELIST,LVSIL_NORMAL,(LPARAM)ilist); + PopulateListView(list); + EnableWindow(GetDlgItem(hwnd,IDC_FETCH),FALSE); } break; } @@ -226,6 +254,15 @@ static INT_PTR CALLBACK DialogProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lP BOOL DoCameraUI(void) { + HKEY key; + DWORD data = 0; + DWORD size = sizeof(data); + if (RegOpenKeyExA(HKEY_CURRENT_USER, settings_key, 0, KEY_READ, &key) == ERROR_SUCCESS) { + RegQueryValueExA(key, settings_value, NULL, NULL, (LPBYTE) &data, &size); + RegCloseKey(key); + if (data) + return GetAllImages(); + } return DialogBoxW(GPHOTO2_instance, (LPWSTR)MAKEINTRESOURCE(IDD_CAMERAUI),NULL, DialogProc); }