[4/8] msi: Move the preview code to dialog.c.

Hans Leidekker hans at codeweavers.com
Fri Sep 9 04:00:24 CDT 2011


---
 dlls/msi/Makefile.in |    1 -
 dlls/msi/dialog.c    |  139 +++++++++++++++++++++++++++++++++++++-
 dlls/msi/msipriv.h   |    1 -
 dlls/msi/preview.c   |  184 --------------------------------------------------
 4 files changed, 138 insertions(+), 187 deletions(-)
 delete mode 100644 dlls/msi/preview.c

diff --git a/dlls/msi/Makefile.in b/dlls/msi/Makefile.in
index c12b25d..a9f061a 100644
--- a/dlls/msi/Makefile.in
+++ b/dlls/msi/Makefile.in
@@ -31,7 +31,6 @@ C_SRCS = \
 	msiquery.c \
 	package.c \
 	patch.c \
-	preview.c \
 	record.c \
 	registry.c \
 	script.c \
diff --git a/dlls/msi/dialog.c b/dlls/msi/dialog.c
index caad21c..51ca2e7 100644
--- a/dlls/msi/dialog.c
+++ b/dlls/msi/dialog.c
@@ -38,6 +38,7 @@
 #include "commctrl.h"
 #include "winreg.h"
 #include "shlwapi.h"
+#include "msiserver.h"
 
 #include "wine/debug.h"
 #include "wine/unicode.h"
@@ -3848,7 +3849,7 @@ UINT msi_dialog_run_message_loop( msi_dialog *dialog )
     return ERROR_SUCCESS;
 }
 
-void msi_dialog_do_preview( msi_dialog *dialog )
+static void msi_dialog_do_preview( msi_dialog *dialog )
 {
     TRACE("\n");
     dialog->attributes |= msidbDialogAttributesVisible;
@@ -4015,3 +4016,139 @@ done:
 
     return r;
 }
+
+static void MSI_ClosePreview( MSIOBJECTHDR *arg )
+{
+    MSIPREVIEW *preview = (MSIPREVIEW *)arg;
+    msiobj_release( &preview->package->hdr );
+}
+
+static MSIPREVIEW *MSI_EnableUIPreview( MSIDATABASE *db )
+{
+    MSIPREVIEW *preview = NULL;
+    MSIPACKAGE *package;
+
+    package = MSI_CreatePackage( db, NULL );
+    if (package)
+    {
+        preview = alloc_msiobject( MSIHANDLETYPE_PREVIEW, sizeof(MSIPREVIEW), MSI_ClosePreview );
+        if (preview)
+        {
+            preview->package = package;
+            msiobj_addref( &package->hdr );
+        }
+        msiobj_release( &package->hdr );
+    }
+    return preview;
+}
+
+UINT WINAPI MsiEnableUIPreview( MSIHANDLE hdb, MSIHANDLE *phPreview )
+{
+    MSIDATABASE *db;
+    MSIPREVIEW *preview;
+    UINT r = ERROR_FUNCTION_FAILED;
+
+    TRACE("%d %p\n", hdb, phPreview);
+
+    db = msihandle2msiinfo( hdb, MSIHANDLETYPE_DATABASE );
+    if (!db)
+    {
+        IWineMsiRemoteDatabase *remote_database;
+
+        remote_database = (IWineMsiRemoteDatabase *)msi_get_remote( hdb );
+        if (!remote_database)
+            return ERROR_INVALID_HANDLE;
+
+        *phPreview = 0;
+
+        IWineMsiRemoteDatabase_Release( remote_database );
+        WARN("MsiEnableUIPreview not allowed during a custom action!\n");
+
+        return ERROR_FUNCTION_FAILED;
+    }
+    preview = MSI_EnableUIPreview( db );
+    if (preview)
+    {
+        *phPreview = alloc_msihandle( &preview->hdr );
+        msiobj_release( &preview->hdr );
+        r = ERROR_SUCCESS;
+        if (!*phPreview)
+            r = ERROR_NOT_ENOUGH_MEMORY;
+    }
+    msiobj_release( &db->hdr );
+    return r;
+}
+
+static UINT preview_event_handler( MSIPACKAGE *package, LPCWSTR event,
+                                   LPCWSTR argument, msi_dialog *dialog )
+{
+    MESSAGE("Preview dialog event '%s' (arg='%s')\n", debugstr_w(event), debugstr_w(argument));
+    return ERROR_SUCCESS;
+}
+
+static UINT MSI_PreviewDialogW( MSIPREVIEW *preview, LPCWSTR szDialogName )
+{
+    msi_dialog *dialog = NULL;
+    UINT r = ERROR_SUCCESS;
+
+    if (preview->dialog)
+        msi_dialog_destroy( preview->dialog );
+
+    /* an empty name means we should just destroy the current preview dialog */
+    if (szDialogName)
+    {
+        dialog = msi_dialog_create( preview->package, szDialogName, NULL, preview_event_handler );
+        if (dialog)
+            msi_dialog_do_preview( dialog );
+        else
+            r = ERROR_FUNCTION_FAILED;
+    }
+    preview->dialog = dialog;
+    return r;
+}
+
+UINT WINAPI MsiPreviewDialogW( MSIHANDLE hPreview, LPCWSTR szDialogName )
+{
+    MSIPREVIEW *preview;
+    UINT r;
+
+    TRACE("%d %s\n", hPreview, debugstr_w(szDialogName));
+
+    preview = msihandle2msiinfo( hPreview, MSIHANDLETYPE_PREVIEW );
+    if (!preview)
+        return ERROR_INVALID_HANDLE;
+
+    r = MSI_PreviewDialogW( preview, szDialogName );
+    msiobj_release( &preview->hdr );
+    return r;
+}
+
+UINT WINAPI MsiPreviewDialogA( MSIHANDLE hPreview, LPCSTR szDialogName )
+{
+    UINT r;
+    LPWSTR strW = NULL;
+
+    TRACE("%d %s\n", hPreview, debugstr_a(szDialogName));
+
+    if (szDialogName)
+    {
+        strW = strdupAtoW( szDialogName );
+        if (!strW)
+            return ERROR_OUTOFMEMORY;
+    }
+    r = MsiPreviewDialogW( hPreview, strW );
+    msi_free( strW );
+    return r;
+}
+
+UINT WINAPI MsiPreviewBillboardW( MSIHANDLE hPreview, LPCWSTR szControlName, LPCWSTR szBillboard )
+{
+    FIXME("%d %s %s\n", hPreview, debugstr_w(szControlName), debugstr_w(szBillboard));
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+UINT WINAPI MsiPreviewBillboardA( MSIHANDLE hPreview, LPCSTR szControlName, LPCSTR szBillboard )
+{
+    FIXME("%d %s %s\n", hPreview, debugstr_a(szControlName), debugstr_a(szBillboard));
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
diff --git a/dlls/msi/msipriv.h b/dlls/msi/msipriv.h
index 96f0808..7fbab61 100644
--- a/dlls/msi/msipriv.h
+++ b/dlls/msi/msipriv.h
@@ -922,7 +922,6 @@ extern msi_dialog *msi_dialog_create( MSIPACKAGE*, LPCWSTR, msi_dialog*, msi_dia
 extern UINT msi_dialog_run_message_loop( msi_dialog* ) DECLSPEC_HIDDEN;
 extern void msi_dialog_end_dialog( msi_dialog* ) DECLSPEC_HIDDEN;
 extern void msi_dialog_check_messages( HANDLE ) DECLSPEC_HIDDEN;
-extern void msi_dialog_do_preview( msi_dialog* ) DECLSPEC_HIDDEN;
 extern void msi_dialog_destroy( msi_dialog* ) DECLSPEC_HIDDEN;
 extern void msi_dialog_unregister_class( void ) DECLSPEC_HIDDEN;
 extern void msi_dialog_handle_event( msi_dialog*, LPCWSTR, LPCWSTR, MSIRECORD * ) DECLSPEC_HIDDEN;
diff --git a/dlls/msi/preview.c b/dlls/msi/preview.c
deleted file mode 100644
index 458e4a1..0000000
--- a/dlls/msi/preview.c
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * Implementation of the Microsoft Installer (msi.dll)
- *
- * Copyright 2005 Mike McCormack for CodeWeavers
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#define COBJMACROS
-
-#include <stdarg.h>
-
-#include "windef.h"
-#include "winbase.h"
-#include "winnls.h"
-#include "msi.h"
-#include "msipriv.h"
-#include "msiserver.h"
-
-#include "wine/debug.h"
-#include "wine/unicode.h"
-
-WINE_DEFAULT_DEBUG_CHANNEL(msi);
-
-static void MSI_ClosePreview( MSIOBJECTHDR *arg )
-{
-    MSIPREVIEW *preview = (MSIPREVIEW *) arg;
-
-    msiobj_release( &preview->package->hdr );
-}
-
-static MSIPREVIEW *MSI_EnableUIPreview( MSIDATABASE *db )
-{
-    MSIPREVIEW *preview = NULL;
-    MSIPACKAGE *package;
-
-    package = MSI_CreatePackage( db, NULL );
-    if( package )
-    {
-        preview = alloc_msiobject( MSIHANDLETYPE_PREVIEW, sizeof (MSIPREVIEW),
-                               MSI_ClosePreview );
-        if( preview )
-        {
-            preview->package = package;
-            msiobj_addref( &package->hdr );
-        }
-        msiobj_release( &package->hdr );
-    }
-    return preview;
-}
-
-UINT WINAPI MsiEnableUIPreview( MSIHANDLE hdb, MSIHANDLE* phPreview )
-{
-    MSIDATABASE *db;
-    MSIPREVIEW *preview;
-    UINT r = ERROR_FUNCTION_FAILED;
-
-    TRACE("%d %p\n", hdb, phPreview);
-
-    db = msihandle2msiinfo( hdb, MSIHANDLETYPE_DATABASE );
-    if( !db )
-    {
-        IWineMsiRemoteDatabase *remote_database;
-
-        remote_database = (IWineMsiRemoteDatabase *)msi_get_remote( hdb );
-        if ( !remote_database )
-            return ERROR_INVALID_HANDLE;
-
-        *phPreview = 0;
-
-        IWineMsiRemoteDatabase_Release( remote_database );
-        WARN("MsiEnableUIPreview not allowed during a custom action!\n");
-
-        return ERROR_FUNCTION_FAILED;
-    }
-
-    preview = MSI_EnableUIPreview( db );
-    if( preview )
-    {
-        *phPreview = alloc_msihandle( &preview->hdr );
-        msiobj_release( &preview->hdr );
-        r = ERROR_SUCCESS;
-        if (! *phPreview)
-            r = ERROR_NOT_ENOUGH_MEMORY;
-    }
-    msiobj_release( &db->hdr );
-
-    return r;
-}
-
-static UINT preview_event_handler( MSIPACKAGE *package, LPCWSTR event,
-                                   LPCWSTR argument, msi_dialog *dialog )
-{
-    MESSAGE("Preview dialog event '%s' (arg='%s')\n",
-            debugstr_w( event ), debugstr_w( argument ));
-    return ERROR_SUCCESS;
-}
-
-static UINT MSI_PreviewDialogW( MSIPREVIEW *preview, LPCWSTR szDialogName )
-{
-    msi_dialog *dialog = NULL;
-    UINT r = ERROR_SUCCESS;
-
-    if( preview->dialog )
-        msi_dialog_destroy( preview->dialog );
-
-    /* an empty name means we should just destroy the current preview dialog */
-    if( szDialogName )
-    {
-        dialog = msi_dialog_create( preview->package, szDialogName, NULL,
-                                    preview_event_handler );
-        if( dialog )
-            msi_dialog_do_preview( dialog );
-        else
-            r = ERROR_FUNCTION_FAILED;
-    }
-    preview->dialog = dialog;
-
-    return r;
-}
-
-UINT WINAPI MsiPreviewDialogW( MSIHANDLE hPreview, LPCWSTR szDialogName )
-{
-    MSIPREVIEW *preview;
-    UINT r;
-
-    TRACE("%d %s\n", hPreview, debugstr_w(szDialogName));
-
-    preview = msihandle2msiinfo( hPreview, MSIHANDLETYPE_PREVIEW );
-    if( !preview )
-        return ERROR_INVALID_HANDLE;
-
-    r = MSI_PreviewDialogW( preview, szDialogName );
-
-    msiobj_release( &preview->hdr );
-
-    return r;
-}
-
-UINT WINAPI MsiPreviewDialogA( MSIHANDLE hPreview, LPCSTR szDialogName )
-{
-    UINT r;
-    LPWSTR strW = NULL;
-
-    TRACE("%d %s\n", hPreview, debugstr_a(szDialogName));
-
-    if( szDialogName )
-    {
-        strW = strdupAtoW( szDialogName );
-        if( !strW )
-            return ERROR_OUTOFMEMORY;
-    }
-    r = MsiPreviewDialogW( hPreview, strW );
-    msi_free( strW );
-    return r;
-}
-
-UINT WINAPI MsiPreviewBillboardW( MSIHANDLE hPreview, LPCWSTR szControlName,
-                                  LPCWSTR szBillboard)
-{
-    FIXME("%d %s %s\n", hPreview, debugstr_w(szControlName),
-          debugstr_w(szBillboard));
-    return ERROR_CALL_NOT_IMPLEMENTED;
-}
-
-UINT WINAPI MsiPreviewBillboardA( MSIHANDLE hPreview, LPCSTR szControlName,
-                                  LPCSTR szBillboard)
-{
-    FIXME("%d %s %s\n", hPreview, debugstr_a(szControlName),
-          debugstr_a(szBillboard));
-    return ERROR_CALL_NOT_IMPLEMENTED;
-}
-- 
1.7.5.4







More information about the wine-patches mailing list