1 /**************************************************************
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements. See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership. The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License. You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied. See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 *
20 *************************************************************/
21
22
23
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_cui.hxx"
26
27 #include <tools/ref.hxx>
28 #include <tools/list.hxx>
29 #include <tools/shl.hxx>
30 #include <tools/debug.hxx>
31 #include <vcl/msgbox.hxx>
32
33 #include <cuires.hrc>
34
35 #include "dlgname.hxx"
36 #include "defdlgname.hxx" //CHINA001
37 #include "dlgname.hrc"
38 #include <dialmgr.hxx>
39
40 #define MAX_DESCRIPTION_LINES ((long)5)
41
42 /*************************************************************************
43 |*
44 |* Dialog zum Editieren eines Namens
45 |*
46 \************************************************************************/
47
SvxNameDialog(Window * pWindow,const String & rName,const String & rDesc)48 SvxNameDialog::SvxNameDialog( Window* pWindow, const String& rName, const String& rDesc ) :
49 ModalDialog ( pWindow, CUI_RES( RID_SVXDLG_NAME ) ),
50 aFtDescription ( this, CUI_RES( FT_DESCRIPTION ) ),
51 aEdtName ( this, CUI_RES( EDT_STRING ) ),
52 aBtnOK ( this, CUI_RES( BTN_OK ) ),
53 aBtnCancel ( this, CUI_RES( BTN_CANCEL ) ),
54 aBtnHelp ( this, CUI_RES( BTN_HELP ) )
55 {
56 FreeResource();
57
58 aFtDescription.SetText( rDesc );
59 aEdtName.SetText( rName );
60 aEdtName.SetSelection(Selection(SELECTION_MIN, SELECTION_MAX));
61 ModifyHdl(&aEdtName);
62 aEdtName.SetModifyHdl(LINK(this, SvxNameDialog, ModifyHdl));
63
64 // dynamic height of the description field
65 Size aSize = aFtDescription.GetSizePixel();
66 long nTxtWidth = aFtDescription.GetCtrlTextWidth( rDesc );
67 if ( nTxtWidth > aSize.Width() )
68 {
69 long nLines = Min( ( nTxtWidth / aSize.Width() + 1 ), MAX_DESCRIPTION_LINES );
70 long nHeight = aSize.Height();
71 aSize.Height() = nHeight * nLines;
72 aFtDescription.SetSizePixel( aSize );
73 Point aPnt = aEdtName.GetPosPixel();
74 aPnt.Y() += ( aSize.Height() - nHeight );
75 aEdtName.SetPosPixel( aPnt );
76 }
77 }
78
79 /* -----------------------------27.02.2002 15:22------------------------------
80
81 ---------------------------------------------------------------------------*/
IMPL_LINK(SvxNameDialog,ModifyHdl,Edit *,EMPTYARG)82 IMPL_LINK(SvxNameDialog, ModifyHdl, Edit*, EMPTYARG)
83 {
84 if(aCheckNameHdl.IsSet())
85 aBtnOK.Enable(aCheckNameHdl.Call(this) > 0);
86 return 0;
87 }
88
89 ///////////////////////////////////////////////////////////////////////////////////////////////
90 // #i68101#
91 // Dialog for editing Object Name
92 // plus uniqueness-callback-linkHandler
93
SvxObjectNameDialog(Window * pWindow,const String & rName)94 SvxObjectNameDialog::SvxObjectNameDialog(
95 Window* pWindow,
96 const String& rName)
97 : ModalDialog(pWindow, CUI_RES(RID_SVXDLG_OBJECT_NAME)),
98 aFtName(this, CUI_RES(NTD_FT_NAME)),
99 aEdtName(this, CUI_RES(NTD_EDT_NAME)),
100 aFlSeparator(this, CUI_RES(FL_SEPARATOR_A)),
101 aBtnHelp(this, CUI_RES(BTN_HELP)),
102 aBtnOK(this, CUI_RES(BTN_OK)),
103 aBtnCancel(this, CUI_RES(BTN_CANCEL))
104 {
105 FreeResource();
106
107 // set name
108 aEdtName.SetText(rName);
109
110 // activate name
111 aEdtName.SetSelection(Selection(SELECTION_MIN, SELECTION_MAX));
112 ModifyHdl(&aEdtName);
113 aEdtName.SetModifyHdl(LINK(this, SvxObjectNameDialog, ModifyHdl));
114 }
115
IMPL_LINK(SvxObjectNameDialog,ModifyHdl,Edit *,EMPTYARG)116 IMPL_LINK(SvxObjectNameDialog, ModifyHdl, Edit*, EMPTYARG)
117 {
118 if(aCheckNameHdl.IsSet())
119 {
120 aBtnOK.Enable(aCheckNameHdl.Call(this) > 0);
121 }
122
123 return 0;
124 }
125
126 ///////////////////////////////////////////////////////////////////////////////////////////////
127 // #i68101#
128 // Dialog for editing Object Title and Description
129
SvxObjectTitleDescDialog(Window * pWindow,const String & rTitle,const String & rDescription)130 SvxObjectTitleDescDialog::SvxObjectTitleDescDialog(
131 Window* pWindow,
132 const String& rTitle,
133 const String& rDescription)
134 : ModalDialog(pWindow, CUI_RES(RID_SVXDLG_OBJECT_TITLE_DESC)),
135 aFtTitle(this, CUI_RES(NTD_FT_TITLE)),
136 aEdtTitle(this, CUI_RES(NTD_EDT_TITLE)),
137 aFtDescription(this, CUI_RES(NTD_FT_DESC)),
138 aEdtDescription(this, CUI_RES(NTD_EDT_DESC)),
139 aFlSeparator(this, CUI_RES(FL_SEPARATOR_B)),
140 aBtnHelp(this, CUI_RES(BTN_HELP)),
141 aBtnOK(this, CUI_RES(BTN_OK)),
142 aBtnCancel(this, CUI_RES(BTN_CANCEL))
143 {
144 FreeResource();
145
146 // set title & desc
147 aEdtTitle.SetText(rTitle);
148 aEdtDescription.SetText(rDescription);
149
150 // activate title
151 aEdtTitle.SetSelection(Selection(SELECTION_MIN, SELECTION_MAX));
152 }
153
154 ///////////////////////////////////////////////////////////////////////////////////////////////
155
156 /*************************************************************************
157 |*
158 |* Dialog zum Abbrechen, Speichern oder Hinzufuegen
159 |*
160 \************************************************************************/
161
SvxMessDialog(Window * pWindow,const String & rText,const String & rDesc,Image * pImg)162 SvxMessDialog::SvxMessDialog( Window* pWindow, const String& rText, const String& rDesc, Image* pImg ) :
163 ModalDialog ( pWindow, CUI_RES( RID_SVXDLG_MESSBOX ) ),
164 aFtDescription ( this, CUI_RES( FT_DESCRIPTION ) ),
165 aBtn1 ( this, CUI_RES( BTN_1 ) ),
166 aBtn2 ( this, CUI_RES( BTN_2 ) ),
167 aBtnCancel ( this, CUI_RES( BTN_CANCEL ) ),
168 aFtImage ( this )
169 {
170 FreeResource();
171
172 if( pImg )
173 {
174 pImage = new Image( *pImg );
175 aFtImage.SetImage( *pImage );
176 aFtImage.SetStyle( ( aFtImage.GetStyle()/* | WB_NOTABSTOP */) & ~WB_3DLOOK );
177 aFtImage.SetPosSizePixel( LogicToPixel( Point( 3, 6 ), MAP_APPFONT ),
178 aFtImage.GetImage().GetSizePixel() );
179 aFtImage.Show();
180 }
181
182 SetText( rText );
183 aFtDescription.SetText( rDesc );
184
185 aBtn1.SetClickHdl( LINK( this, SvxMessDialog, Button1Hdl ) );
186 aBtn2.SetClickHdl( LINK( this, SvxMessDialog, Button2Hdl ) );
187 }
188
~SvxMessDialog()189 SvxMessDialog::~SvxMessDialog()
190 {
191 if( pImage )
192 delete pImage;
193 }
194
195 /*************************************************************************/
196
IMPL_LINK_INLINE_START(SvxMessDialog,Button1Hdl,Button *,EMPTYARG)197 IMPL_LINK_INLINE_START( SvxMessDialog, Button1Hdl, Button *, EMPTYARG )
198 {
199 EndDialog( RET_BTN_1 );
200 return 0;
201 }
IMPL_LINK_INLINE_END(SvxMessDialog,Button1Hdl,Button *,EMPTYARG)202 IMPL_LINK_INLINE_END( SvxMessDialog, Button1Hdl, Button *, EMPTYARG )
203
204 /*************************************************************************/
205
206 IMPL_LINK_INLINE_START( SvxMessDialog, Button2Hdl, Button *, EMPTYARG )
207 {
208 EndDialog( RET_BTN_2 );
209 return 0;
210 }
IMPL_LINK_INLINE_END(SvxMessDialog,Button2Hdl,Button *,EMPTYARG)211 IMPL_LINK_INLINE_END( SvxMessDialog, Button2Hdl, Button *, EMPTYARG )
212
213 /*************************************************************************/
214
215 void SvxMessDialog::SetButtonText( sal_uInt16 nBtnId, const String& rNewTxt )
216 {
217 switch ( nBtnId )
218 {
219 case MESS_BTN_1:
220 aBtn1.SetText( rNewTxt );
221 break;
222
223 case MESS_BTN_2:
224 aBtn2.SetText( rNewTxt );
225 break;
226
227 default:
228 DBG_ERROR( "Falsche Button-Nummer!!!" );
229 }
230 }
231
232
233