1*facb16e7SArmin Le Grand /************************************************************** 2*facb16e7SArmin Le Grand * 3*facb16e7SArmin Le Grand * Licensed to the Apache Software Foundation (ASF) under one 4*facb16e7SArmin Le Grand * or more contributor license agreements. See the NOTICE file 5*facb16e7SArmin Le Grand * distributed with this work for additional information 6*facb16e7SArmin Le Grand * regarding copyright ownership. The ASF licenses this file 7*facb16e7SArmin Le Grand * to you under the Apache License, Version 2.0 (the 8*facb16e7SArmin Le Grand * "License"); you may not use this file except in compliance 9*facb16e7SArmin Le Grand * with the License. You may obtain a copy of the License at 10*facb16e7SArmin Le Grand * 11*facb16e7SArmin Le Grand * http://www.apache.org/licenses/LICENSE-2.0 12*facb16e7SArmin Le Grand * 13*facb16e7SArmin Le Grand * Unless required by applicable law or agreed to in writing, 14*facb16e7SArmin Le Grand * software distributed under the License is distributed on an 15*facb16e7SArmin Le Grand * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*facb16e7SArmin Le Grand * KIND, either express or implied. See the License for the 17*facb16e7SArmin Le Grand * specific language governing permissions and limitations 18*facb16e7SArmin Le Grand * under the License. 19*facb16e7SArmin Le Grand * 20*facb16e7SArmin Le Grand *************************************************************/ 21*facb16e7SArmin Le Grand 22*facb16e7SArmin Le Grand #include "precompiled_sc.hxx" 23*facb16e7SArmin Le Grand 24*facb16e7SArmin Le Grand #include <CellLineStyleControl.hxx> 25*facb16e7SArmin Le Grand #include "sc.hrc" 26*facb16e7SArmin Le Grand #include "scresid.hxx" 27*facb16e7SArmin Le Grand #include <CellAppearancePropertyPanel.hrc> 28*facb16e7SArmin Le Grand #include <CellLineStyleValueSet.hxx> 29*facb16e7SArmin Le Grand #include <vcl/i18nhelp.hxx> 30*facb16e7SArmin Le Grand #include <editeng/boxitem.hxx> 31*facb16e7SArmin Le Grand #include <editeng/bolnitem.hxx> 32*facb16e7SArmin Le Grand #include <CellAppearancePropertyPanel.hxx> 33*facb16e7SArmin Le Grand #include <sfx2/bindings.hxx> 34*facb16e7SArmin Le Grand #include <sfx2/dispatch.hxx> 35*facb16e7SArmin Le Grand 36*facb16e7SArmin Le Grand namespace sc { namespace sidebar { 37*facb16e7SArmin Le Grand 38*facb16e7SArmin Le Grand CellLineStyleControl::CellLineStyleControl(Window* pParent, CellAppearancePropertyPanel& rPanel) 39*facb16e7SArmin Le Grand : svx::sidebar::PopupControl(pParent, ScResId(RID_POPUPPANEL_APPEARANCE_CELL_LINESTYLE)), 40*facb16e7SArmin Le Grand mrCellAppearancePropertyPanel(rPanel), 41*facb16e7SArmin Le Grand maPushButtonMoreOptions(this, ScResId(PB_OPTIONS)), 42*facb16e7SArmin Le Grand maCellLineStyleValueSet(this, ScResId(VS_STYLE)), 43*facb16e7SArmin Le Grand mpStr(0), 44*facb16e7SArmin Le Grand mbVSfocus(true) 45*facb16e7SArmin Le Grand { 46*facb16e7SArmin Le Grand Initialize(); 47*facb16e7SArmin Le Grand FreeResource(); 48*facb16e7SArmin Le Grand } 49*facb16e7SArmin Le Grand 50*facb16e7SArmin Le Grand CellLineStyleControl::~CellLineStyleControl(void) 51*facb16e7SArmin Le Grand { 52*facb16e7SArmin Le Grand delete[] mpStr; 53*facb16e7SArmin Le Grand } 54*facb16e7SArmin Le Grand 55*facb16e7SArmin Le Grand void CellLineStyleControl::Initialize() 56*facb16e7SArmin Le Grand { 57*facb16e7SArmin Le Grand //if(!GetSettings().GetStyleSettings().GetHighContrastMode()) 58*facb16e7SArmin Le Grand //{ 59*facb16e7SArmin Le Grand // maPushButtonMoreOptions.SetDefBkColor(GetSettings().GetStyleSettings().GetPopupPanelBackgroundColor());//Color(244,245,249) 60*facb16e7SArmin Le Grand // maPushButtonMoreOptions.SetHoverBkColor(GetSettings().GetStyleSettings().GetCustButtonHoverColor());//Color( 93, 120, 163 ) 61*facb16e7SArmin Le Grand // maPushButtonMoreOptions.SetHoverTxtColor(GetSettings().GetStyleSettings().GetCustButtonTextHoverColor());//Color( 255, 255, 255 ) 62*facb16e7SArmin Le Grand //} 63*facb16e7SArmin Le Grand //else 64*facb16e7SArmin Le Grand //{ 65*facb16e7SArmin Le Grand // maPushButtonMoreOptions.SetDefBkColor(GetSettings().GetStyleSettings().GetMenuColor());//Color(244,245,249) 66*facb16e7SArmin Le Grand // maPushButtonMoreOptions.SetHoverBkColor(GetSettings().GetStyleSettings().GetMenuColor());//Color( 93, 120, 163 ) 67*facb16e7SArmin Le Grand // maPushButtonMoreOptions.SetHoverTxtColor(GetSettings().GetStyleSettings().GetCustButtonTextHoverColor());//Color( 255, 255, 255 ) 68*facb16e7SArmin Le Grand //} 69*facb16e7SArmin Le Grand 70*facb16e7SArmin Le Grand //maPushButtonMoreOptions.SetIcoPosX(2); 71*facb16e7SArmin Le Grand Link aLink = LINK(this, CellLineStyleControl, PBClickHdl); 72*facb16e7SArmin Le Grand maPushButtonMoreOptions.SetClickHdl(aLink); 73*facb16e7SArmin Le Grand 74*facb16e7SArmin Le Grand maCellLineStyleValueSet.SetStyle(maCellLineStyleValueSet.GetStyle()| WB_3DLOOK | WB_NO_DIRECTSELECT); 75*facb16e7SArmin Le Grand maCellLineStyleValueSet.SetControlBackground(GetSettings().GetStyleSettings().GetMenuColor()); 76*facb16e7SArmin Le Grand maCellLineStyleValueSet.SetColor(GetSettings().GetStyleSettings().GetMenuColor()); 77*facb16e7SArmin Le Grand 78*facb16e7SArmin Le Grand for(sal_uInt16 i = 1 ; i <= 9 ; i++) 79*facb16e7SArmin Le Grand { 80*facb16e7SArmin Le Grand maCellLineStyleValueSet.InsertItem(i); 81*facb16e7SArmin Le Grand } 82*facb16e7SArmin Le Grand 83*facb16e7SArmin Le Grand mpStr = new XubString[9]; 84*facb16e7SArmin Le Grand mpStr[0] = GetSettings().GetLocaleI18nHelper().GetNum( 5, 2 ).AppendAscii("pt"); 85*facb16e7SArmin Le Grand mpStr[1] = GetSettings().GetLocaleI18nHelper().GetNum( 250, 2 ).AppendAscii("pt"); 86*facb16e7SArmin Le Grand mpStr[2] = GetSettings().GetLocaleI18nHelper().GetNum( 400, 2 ).AppendAscii("pt"); 87*facb16e7SArmin Le Grand mpStr[3] = GetSettings().GetLocaleI18nHelper().GetNum( 500, 2 ).AppendAscii("pt"); 88*facb16e7SArmin Le Grand mpStr[4] = GetSettings().GetLocaleI18nHelper().GetNum( 110, 2 ).AppendAscii("pt"); 89*facb16e7SArmin Le Grand mpStr[5] = GetSettings().GetLocaleI18nHelper().GetNum( 260, 2 ).AppendAscii("pt"); 90*facb16e7SArmin Le Grand mpStr[6] = GetSettings().GetLocaleI18nHelper().GetNum( 450, 2 ).AppendAscii("pt"); 91*facb16e7SArmin Le Grand mpStr[7] = GetSettings().GetLocaleI18nHelper().GetNum( 505, 2 ).AppendAscii("pt"); 92*facb16e7SArmin Le Grand mpStr[8] = GetSettings().GetLocaleI18nHelper().GetNum( 750, 2 ).AppendAscii("pt"); 93*facb16e7SArmin Le Grand maCellLineStyleValueSet.SetUnit(mpStr); 94*facb16e7SArmin Le Grand 95*facb16e7SArmin Le Grand for(sal_uInt16 i = 1 ; i <= 9 ; i++) 96*facb16e7SArmin Le Grand { 97*facb16e7SArmin Le Grand maCellLineStyleValueSet.SetItemText(i, mpStr[i-1]); 98*facb16e7SArmin Le Grand } 99*facb16e7SArmin Le Grand 100*facb16e7SArmin Le Grand SetAllNoSel(); 101*facb16e7SArmin Le Grand aLink = LINK(this, CellLineStyleControl, VSSelectHdl); 102*facb16e7SArmin Le Grand maCellLineStyleValueSet.SetSelectHdl(aLink); 103*facb16e7SArmin Le Grand maCellLineStyleValueSet.StartSelection(); 104*facb16e7SArmin Le Grand maCellLineStyleValueSet.Show(); 105*facb16e7SArmin Le Grand } 106*facb16e7SArmin Le Grand 107*facb16e7SArmin Le Grand void CellLineStyleControl::GetFocus() 108*facb16e7SArmin Le Grand { 109*facb16e7SArmin Le Grand if(!mbVSfocus) 110*facb16e7SArmin Le Grand { 111*facb16e7SArmin Le Grand maPushButtonMoreOptions.GrabFocus(); 112*facb16e7SArmin Le Grand } 113*facb16e7SArmin Le Grand else 114*facb16e7SArmin Le Grand { 115*facb16e7SArmin Le Grand maCellLineStyleValueSet.GrabFocus(); 116*facb16e7SArmin Le Grand } 117*facb16e7SArmin Le Grand } 118*facb16e7SArmin Le Grand 119*facb16e7SArmin Le Grand void CellLineStyleControl::SetAllNoSel() 120*facb16e7SArmin Le Grand { 121*facb16e7SArmin Le Grand maCellLineStyleValueSet.SelectItem(0); 122*facb16e7SArmin Le Grand maCellLineStyleValueSet.SetNoSelection(); 123*facb16e7SArmin Le Grand maCellLineStyleValueSet.Format(); 124*facb16e7SArmin Le Grand Invalidate(); 125*facb16e7SArmin Le Grand maCellLineStyleValueSet.StartSelection(); 126*facb16e7SArmin Le Grand } 127*facb16e7SArmin Le Grand 128*facb16e7SArmin Le Grand IMPL_LINK(CellLineStyleControl, VSSelectHdl, void *, pControl) 129*facb16e7SArmin Le Grand { 130*facb16e7SArmin Le Grand if(pControl == &maCellLineStyleValueSet) 131*facb16e7SArmin Le Grand { 132*facb16e7SArmin Le Grand const sal_uInt16 iPos(maCellLineStyleValueSet.GetSelectItemId()); 133*facb16e7SArmin Le Grand SvxLineItem aLineItem(SID_FRAME_LINESTYLE); 134*facb16e7SArmin Le Grand sal_uInt16 n1 = 0; 135*facb16e7SArmin Le Grand sal_uInt16 n2 = 0; 136*facb16e7SArmin Le Grand sal_uInt16 n3 = 0; 137*facb16e7SArmin Le Grand 138*facb16e7SArmin Le Grand switch(iPos) 139*facb16e7SArmin Le Grand { 140*facb16e7SArmin Le Grand case 1: 141*facb16e7SArmin Le Grand n1 = DEF_LINE_WIDTH_0; 142*facb16e7SArmin Le Grand break; 143*facb16e7SArmin Le Grand case 2: 144*facb16e7SArmin Le Grand n1 = DEF_LINE_WIDTH_2; 145*facb16e7SArmin Le Grand break; 146*facb16e7SArmin Le Grand case 3: 147*facb16e7SArmin Le Grand n1 = DEF_LINE_WIDTH_3; 148*facb16e7SArmin Le Grand break; 149*facb16e7SArmin Le Grand case 4: 150*facb16e7SArmin Le Grand n1 = DEF_LINE_WIDTH_4; 151*facb16e7SArmin Le Grand break; 152*facb16e7SArmin Le Grand case 5: 153*facb16e7SArmin Le Grand n1 = DEF_DOUBLE_LINE0_OUT; 154*facb16e7SArmin Le Grand n2 = DEF_DOUBLE_LINE0_IN; 155*facb16e7SArmin Le Grand n3 = DEF_DOUBLE_LINE0_DIST; 156*facb16e7SArmin Le Grand break; 157*facb16e7SArmin Le Grand case 6: 158*facb16e7SArmin Le Grand n1 = DEF_DOUBLE_LINE7_OUT; 159*facb16e7SArmin Le Grand n2 = DEF_DOUBLE_LINE7_IN; 160*facb16e7SArmin Le Grand n3 = DEF_DOUBLE_LINE7_DIST; 161*facb16e7SArmin Le Grand break; 162*facb16e7SArmin Le Grand case 7: 163*facb16e7SArmin Le Grand n1 = DEF_DOUBLE_LINE4_OUT; 164*facb16e7SArmin Le Grand n2 = DEF_DOUBLE_LINE4_IN; 165*facb16e7SArmin Le Grand n3 = DEF_DOUBLE_LINE4_DIST; 166*facb16e7SArmin Le Grand break; 167*facb16e7SArmin Le Grand case 8: 168*facb16e7SArmin Le Grand n1 = DEF_DOUBLE_LINE9_OUT; 169*facb16e7SArmin Le Grand n2 = DEF_DOUBLE_LINE9_IN; 170*facb16e7SArmin Le Grand n3 = DEF_DOUBLE_LINE9_DIST; 171*facb16e7SArmin Le Grand break; 172*facb16e7SArmin Le Grand case 9: 173*facb16e7SArmin Le Grand n1 = DEF_DOUBLE_LINE2_OUT; 174*facb16e7SArmin Le Grand n2 = DEF_DOUBLE_LINE2_IN; 175*facb16e7SArmin Le Grand n3 = DEF_DOUBLE_LINE2_DIST; 176*facb16e7SArmin Le Grand break; 177*facb16e7SArmin Le Grand default: 178*facb16e7SArmin Le Grand break; 179*facb16e7SArmin Le Grand } 180*facb16e7SArmin Le Grand 181*facb16e7SArmin Le Grand SvxBorderLine aTmp( NULL, n1, n2, n3 ); 182*facb16e7SArmin Le Grand aLineItem.SetLine( &aTmp ); 183*facb16e7SArmin Le Grand mrCellAppearancePropertyPanel.GetBindings()->GetDispatcher()->Execute(SID_FRAME_LINESTYLE, SFX_CALLMODE_RECORD, &aLineItem, 0L); 184*facb16e7SArmin Le Grand SetAllNoSel(); 185*facb16e7SArmin Le Grand mrCellAppearancePropertyPanel.EndCellLineStylePopupMode(); 186*facb16e7SArmin Le Grand } 187*facb16e7SArmin Le Grand 188*facb16e7SArmin Le Grand return(0L); 189*facb16e7SArmin Le Grand } 190*facb16e7SArmin Le Grand 191*facb16e7SArmin Le Grand IMPL_LINK(CellLineStyleControl, PBClickHdl, PushButton *, pPBtn) 192*facb16e7SArmin Le Grand { 193*facb16e7SArmin Le Grand if(pPBtn == &maPushButtonMoreOptions) 194*facb16e7SArmin Le Grand { 195*facb16e7SArmin Le Grand if(mrCellAppearancePropertyPanel.GetBindings()) 196*facb16e7SArmin Le Grand { 197*facb16e7SArmin Le Grand mrCellAppearancePropertyPanel.GetBindings()->GetDispatcher()->Execute(SID_CELL_FORMAT_BORDER, SFX_CALLMODE_ASYNCHRON); 198*facb16e7SArmin Le Grand } 199*facb16e7SArmin Le Grand 200*facb16e7SArmin Le Grand mrCellAppearancePropertyPanel.EndCellLineStylePopupMode(); 201*facb16e7SArmin Le Grand } 202*facb16e7SArmin Le Grand 203*facb16e7SArmin Le Grand return 0; 204*facb16e7SArmin Le Grand } 205*facb16e7SArmin Le Grand 206*facb16e7SArmin Le Grand void CellLineStyleControl::SetLineStyleSelect(sal_uInt16 out, sal_uInt16 in, sal_uInt16 dis) 207*facb16e7SArmin Le Grand { 208*facb16e7SArmin Le Grand SetAllNoSel(); 209*facb16e7SArmin Le Grand mbVSfocus = true; 210*facb16e7SArmin Le Grand 211*facb16e7SArmin Le Grand if(out == DEF_LINE_WIDTH_0 && in == 0 && dis == 0) //1 212*facb16e7SArmin Le Grand { 213*facb16e7SArmin Le Grand maCellLineStyleValueSet.SetSelItem(1); 214*facb16e7SArmin Le Grand } 215*facb16e7SArmin Le Grand else if(out == DEF_LINE_WIDTH_2 && in == 0 && dis == 0) //2 216*facb16e7SArmin Le Grand { 217*facb16e7SArmin Le Grand maCellLineStyleValueSet.SetSelItem(2); 218*facb16e7SArmin Le Grand } 219*facb16e7SArmin Le Grand else if(out == DEF_LINE_WIDTH_3 && in == 0 && dis == 0) //3 220*facb16e7SArmin Le Grand { 221*facb16e7SArmin Le Grand maCellLineStyleValueSet.SetSelItem(3); 222*facb16e7SArmin Le Grand } 223*facb16e7SArmin Le Grand else if(out == DEF_LINE_WIDTH_4 && in == 0 && dis == 0) //4 224*facb16e7SArmin Le Grand { 225*facb16e7SArmin Le Grand maCellLineStyleValueSet.SetSelItem(4); 226*facb16e7SArmin Le Grand } 227*facb16e7SArmin Le Grand else if(out == DEF_DOUBLE_LINE0_OUT && in == DEF_DOUBLE_LINE0_IN && dis == DEF_DOUBLE_LINE0_DIST) //5 228*facb16e7SArmin Le Grand { 229*facb16e7SArmin Le Grand maCellLineStyleValueSet.SetSelItem(5); 230*facb16e7SArmin Le Grand } 231*facb16e7SArmin Le Grand else if(out == DEF_DOUBLE_LINE7_OUT && in == DEF_DOUBLE_LINE7_IN && dis == DEF_DOUBLE_LINE7_DIST) //6 232*facb16e7SArmin Le Grand { 233*facb16e7SArmin Le Grand maCellLineStyleValueSet.SetSelItem(6); 234*facb16e7SArmin Le Grand } 235*facb16e7SArmin Le Grand else if(out == DEF_DOUBLE_LINE4_OUT && in == DEF_DOUBLE_LINE4_IN && dis == DEF_DOUBLE_LINE4_DIST) //7 236*facb16e7SArmin Le Grand { 237*facb16e7SArmin Le Grand maCellLineStyleValueSet.SetSelItem(7); 238*facb16e7SArmin Le Grand } 239*facb16e7SArmin Le Grand else if(out == DEF_DOUBLE_LINE9_OUT && in == DEF_DOUBLE_LINE9_IN && dis == DEF_DOUBLE_LINE9_DIST) //8 240*facb16e7SArmin Le Grand { 241*facb16e7SArmin Le Grand maCellLineStyleValueSet.SetSelItem(8); 242*facb16e7SArmin Le Grand } 243*facb16e7SArmin Le Grand else if(out == DEF_DOUBLE_LINE2_OUT && in == DEF_DOUBLE_LINE2_IN && dis == DEF_DOUBLE_LINE2_DIST) //9 244*facb16e7SArmin Le Grand { 245*facb16e7SArmin Le Grand maCellLineStyleValueSet.SetSelItem(9); 246*facb16e7SArmin Le Grand } 247*facb16e7SArmin Le Grand else 248*facb16e7SArmin Le Grand { 249*facb16e7SArmin Le Grand maCellLineStyleValueSet.SetSelItem(0); 250*facb16e7SArmin Le Grand mbVSfocus = false; 251*facb16e7SArmin Le Grand } 252*facb16e7SArmin Le Grand 253*facb16e7SArmin Le Grand maCellLineStyleValueSet.Format(); 254*facb16e7SArmin Le Grand maCellLineStyleValueSet.StartSelection(); 255*facb16e7SArmin Le Grand } 256*facb16e7SArmin Le Grand 257*facb16e7SArmin Le Grand } } // end of namespace svx::sidebar 258*facb16e7SArmin Le Grand 259*facb16e7SArmin Le Grand // eof 260