INT CALLBACK dloginfoproc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { char buf[256]; fz_document *doc = gapp.doc; switch(message) { case WM_INITDIALOG: SetDlgItemTextW(hwnd, 0x10, wbuf); if (fz_meta(doc, FZ_META_FORMAT_INFO, buf, 256) < 0) { SetDlgItemTextA(hwnd, 0x11, "Unknown"); SetDlgItemTextA(hwnd, 0x12, "None"); SetDlgItemTextA(hwnd, 0x13, "n/a"); return TRUE; } SetDlgItemTextA(hwnd, 0x11, buf); if (fz_meta(doc, FZ_META_CRYPT_INFO, buf, 256) == 0) { SetDlgItemTextA(hwnd, 0x12, buf); } else { SetDlgItemTextA(hwnd, 0x12, "None"); } buf[0] = 0; if (fz_meta(doc, FZ_META_HAS_PERMISSION, NULL, FZ_PERMISSION_PRINT) == 0) strcat(buf, "print, "); if (fz_meta(doc, FZ_META_HAS_PERMISSION, NULL, FZ_PERMISSION_CHANGE) == 0) strcat(buf, "modify, "); if (fz_meta(doc, FZ_META_HAS_PERMISSION, NULL, FZ_PERMISSION_COPY) == 0) strcat(buf, "copy, "); if (fz_meta(doc, FZ_META_HAS_PERMISSION, NULL, FZ_PERMISSION_NOTES) == 0) strcat(buf, "annotate, "); if (strlen(buf) > 2) buf[strlen(buf)-2] = 0; else strcpy(buf, "None"); SetDlgItemTextA(hwnd, 0x13, buf); #define SETUTF8(ID, STRING) \ { \ *(char **)buf = STRING; \ if (fz_meta(doc, FZ_META_INFO, buf, 256) <= 0) \ buf[0] = 0; \ SetDlgItemTextA(hwnd, ID, buf); \ } SETUTF8(0x20, "Title"); SETUTF8(0x21, "Author"); SETUTF8(0x22, "Subject"); SETUTF8(0x23, "Keywords"); SETUTF8(0x24, "Creator"); SETUTF8(0x25, "Producer"); SETUTF8(0x26, "CreationDate"); SETUTF8(0x27, "ModDate"); return TRUE; case WM_COMMAND: EndDialog(hwnd, 1); return TRUE; } return FALSE; }
INT_PTR CALLBACK dloginfoproc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { char buf[256]; wchar_t bufx[256]; fz_context *ctx = gapp.ctx; fz_document *doc = gapp.doc; switch(message) { case WM_INITDIALOG: SetDlgItemTextW(hwnd, 0x10, wbuf); if (fz_lookup_metadata(ctx, doc, FZ_META_FORMAT, buf, sizeof buf) >= 0) { SetDlgItemTextA(hwnd, 0x11, buf); } else { SetDlgItemTextA(hwnd, 0x11, "Unknown"); SetDlgItemTextA(hwnd, 0x12, "None"); SetDlgItemTextA(hwnd, 0x13, "n/a"); return TRUE; } if (fz_lookup_metadata(ctx, doc, FZ_META_ENCRYPTION, buf, sizeof buf) >= 0) { SetDlgItemTextA(hwnd, 0x12, buf); } else { SetDlgItemTextA(hwnd, 0x12, "None"); } buf[0] = 0; if (fz_has_permission(ctx, doc, FZ_PERMISSION_PRINT)) strcat(buf, "print, "); if (fz_has_permission(ctx, doc, FZ_PERMISSION_COPY)) strcat(buf, "copy, "); if (fz_has_permission(ctx, doc, FZ_PERMISSION_EDIT)) strcat(buf, "edit, "); if (fz_has_permission(ctx, doc, FZ_PERMISSION_ANNOTATE)) strcat(buf, "annotate, "); if (strlen(buf) > 2) buf[strlen(buf)-2] = 0; else strcpy(buf, "none"); SetDlgItemTextA(hwnd, 0x13, buf); #define SETUTF8(ID, STRING) \ if (fz_lookup_metadata(ctx, doc, "info:" STRING, buf, sizeof buf) >= 0) \ { \ MultiByteToWideChar(CP_UTF8, 0, buf, -1, bufx, nelem(bufx)); \ SetDlgItemTextW(hwnd, ID, bufx); \ } SETUTF8(0x20, "Title"); SETUTF8(0x21, "Author"); SETUTF8(0x22, "Subject"); SETUTF8(0x23, "Keywords"); SETUTF8(0x24, "Creator"); SETUTF8(0x25, "Producer"); SETUTF8(0x26, "CreationDate"); SETUTF8(0x27, "ModDate"); return TRUE; case WM_COMMAND: EndDialog(hwnd, 1); return TRUE; } return FALSE; }