/**************************************************************
 * 
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 * 
 *************************************************************/



#ifndef _DBUI_HRC
#define _DBUI_HRC

// #include *****************************************************************

#include "rcid.hrc"

// Dialoge --------------------------------------------------------------------

#define DLG_DBSELECTION			(RC_DBUI_BEGIN)
#define DLG_PRINTMONITOR		(RC_DBUI_BEGIN + 1)
#define DLG_AP_INSERT_DB_SEL	(RC_DBUI_BEGIN + 2)

#define DLG_MAILMERGEWIZARD         (RC_DBUI_BEGIN + 3)
#define DLG_MM_DOCSELECT_PAGE       (RC_DBUI_BEGIN + 4)
#define DLG_MM_OUTPUTTYPE_PAGE      (RC_DBUI_BEGIN + 5)
#define DLG_MM_ADDRESSBLOCK_PAGE    (RC_DBUI_BEGIN + 6)
#define DLG_MM_GREETINGS_PAGE       (RC_DBUI_BEGIN + 7)
#define DLG_MM_PREPAREMERGE_PAGE    (RC_DBUI_BEGIN + 8)
#define DLG_MM_MERGE_PAGE           (RC_DBUI_BEGIN + 9)
#define DLG_MM_OUTPUT_PAGE          (RC_DBUI_BEGIN + 10)
#define DLG_MM_ADDRESSLISTDIALOG    (RC_DBUI_BEGIN + 11)
#define DLG_MM_SELECTDBTABLEDDIALOG (RC_DBUI_BEGIN + 12)
#define DLG_MM_DBTABLEPREVIEWDIALOG (RC_DBUI_BEGIN + 13)
#define DLG_MM_CREATEADDRESSLIST    (RC_DBUI_BEGIN + 14)
#define DLG_MM_FIND_ENTRY           (RC_DBUI_BEGIN + 15)
#define DLG_MM_ADD_RENAME_ENTRY     (RC_DBUI_BEGIN + 16)
#define DLG_MM_CUSTOMIZE_ADDRESS_LIST (RC_DBUI_BEGIN + 17)
#define DLG_MM_CUSTOMIZEADDRESSBLOCK  (RC_DBUI_BEGIN + 18)
#define DLG_MM_SELECTADDRESSBLOCK     (RC_DBUI_BEGIN + 19)
#define DLG_MM_ASSIGNFIELDS           (RC_DBUI_BEGIN + 20)

#define DLG_MM_LAYOUT_PAGE            (RC_DBUI_BEGIN + 22)
#define DLG_MM_COPYTO                 (RC_DBUI_BEGIN + 23)
#define DLG_MM_MAILBODY               (RC_DBUI_BEGIN + 24)
#define DLG_MM_SENDMAILS              (RC_DBUI_BEGIN + 25)
#define DLG_MAILMERGECHILD            (RC_DBUI_BEGIN + 26)
#define DLG_MM_SAVEWARNING            (RC_DBUI_BEGIN + 27)
#define DLG_MM_QUERY                  (RC_DBUI_BEGIN + 28)
#define DLG_MM_SENDWARNING            (RC_DBUI_BEGIN + 29)
#define DLG_MM_CREATIONMONITOR        (RC_DBUI_BEGIN + 30)
// Strings ------------------------------------------------------------------

#define STR_DB_EMAIL			(RC_DBUI_BEGIN)
#define SA_ADDRESS_HEADER       (RC_DBUI_BEGIN + 1)
#define STR_NOTASSIGNED         (RC_DBUI_BEGIN + 2)
#define STR_FILTER_ALL          (RC_DBUI_BEGIN + 3)
#define STR_FILTER_SXB          (RC_DBUI_BEGIN + 4)
#define STR_FILTER_SXC          (RC_DBUI_BEGIN + 5)
#define STR_FILTER_DBF          (RC_DBUI_BEGIN + 6)
#define STR_FILTER_XLS          (RC_DBUI_BEGIN + 7)
#define STR_FILTER_TXT          (RC_DBUI_BEGIN + 8)
#define STR_FILTER_CSV          (RC_DBUI_BEGIN + 9)
#define STR_FILTER_ALL_DATA     (RC_DBUI_BEGIN + 10)
#define STR_FILTER_MDB          (RC_DBUI_BEGIN + 11)
#define STR_FILTER_ACCDB        (RC_DBUI_BEGIN + 12)

// Bitmaps ------------------------------------------------------------------


// Elemente -----------------------------------------------------------------

#define TLB_DBLIST			1
#define BTN_OK				2
#define BTN_CANCEL			3
#define BTN_HELP			4

#define FT_DOCNAME			5
#define FT_PRINTING			6
#define FT_PRINTER			7
#define FT_PRINTINFO		8
#define PB_CANCELPRNMON		9
#define FT_SENDING			10
#define STR_EMAILMON		11
#define FT_STATUS			12
#define FT_CREATEDOCUMENTS  13
#define FT_PROGRESS    	    14
#define FT_COUNTING    	    15
#define STR_SAVEMON         16
#define FT_SAVING           17

#define MM_PART_TITLE                   0
#define MM_PART_FIRSTNAME               1
#define MM_PART_LASTNAME                2
#define MM_PART_COMPANY                 3
#define MM_PART_ADDRESS_1               4
#define MM_PART_ADDRESS_2               5
#define MM_PART_CITY                    6
#define MM_PART_REGION                  7
#define MM_PART_ZIP                     8
#define MM_PART_COUNTRY                 9
#define MM_PART_PHONE_PRIVATE           10
#define MM_PART_PHONE_BUSINESS          11
#define MM_PART_E_MAIL                  12
#define MM_PART_GENDER                  13

#endif


