xref: /AOO41X/main/cui/source/dialogs/dlgname.cxx (revision 2ee96f1cdb99d49425d866b1ec4c5567f37285e6)
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