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 #include <tools/debug.hxx>
25 #include <svtools/libcall.hxx>
26 #include <vcl/msgbox.hxx>
27 #include <vcl/window.hxx>
28 #include <vcl/button.hxx>
29 #include <vcl/field.hxx>
30 #include <vcl/fixed.hxx>
31 #include <vcl/help.hxx>
32 #include <usr/conver.hxx>
33 #include <usr/uno.hxx>
34 #include <usr/refl.hxx>
35 #include <stardiv/one/frame/xcollect.hxx>
36 #include <stardiv/one/text/offfield.hxx>
37 #include <stardiv/one/offmisc.hxx>
38 #include <stardiv/one/sheet/offtable.hxx>
39 #include <stardiv/one/text/offtext.hxx>
40 #include <stardiv/one/offstyle.hxx>
41 #include <stardiv/one/offview.hxx>
42 #include <stardiv/uno/repos/serinfo.hxx>
43 #include <stardiv/one/sheet/sctypes.hxx>
44 #include <stardiv/one/sheet/scmodel.hxx>
45 #include <stardiv/one/sheet/sccells.hxx>
46 #include <stardiv/one/sheet/sctables.hxx>
47 #include <stardiv/one/sheet/sctable.hxx>
48 #include <stardiv/one/sheet/sccell.hxx>
49 #include <stardiv/one/sheet/scpostit.hxx>
50 #include <stardiv/one/sheet/scview.hxx>
51 #include <stardiv/one/sheet/scdata.hxx>
52 #include <stardiv/one/sheet/scattr.hxx>
53
54 //! das muss als Konstante in irgendeine idl-Datei!!!!
55 #define TEXTCONTROLCHAR_PARAGRAPH_BREAK 0
56
57
58 class MyFixedText : public FixedText
59 {
60 protected:
61 void RequestHelp( const HelpEvent& rHEvt );
62 public:
MyFixedText(Window * pParent)63 MyFixedText(Window* pParent) : FixedText(pParent) {}
64 };
65
66 class MyWindow : public Window
67 {
68 private:
69 NumericField aCountField;
70 PushButton aCountButton;
71 MyFixedText aTimeText;
72 NumericField aColField;
73 NumericField aRowField;
74 NumericField aPosField;
75 NumericField aLenField;
76 Edit aTextEdit;
77 PushButton aTextButton;
78 PushButton aBlaButton;
79 PushButton aTabButton;
80 PushButton aViewButton;
81
82 public:
83 MyWindow( Window *pParent );
84
85 DECL_LINK(CountHdl, PushButton*);
86 DECL_LINK(TextHdl, PushButton*);
87 DECL_LINK(BlaHdl, PushButton*);
88 DECL_LINK(TabHdl, PushButton*);
89 DECL_LINK(ViewHdl, PushButton*);
90 };
91
92 //-----------------------------------------------------------------------
93
94 class ScTestListener : public XSelectionChangeListener, public UsrObject
95 {
96 private:
97 FixedText* pFixedText;
98
99 public:
100 ScTestListener(FixedText* pF);
101 virtual ~ScTestListener();
102
103 SMART_UNO_DECLARATION( ScTestListener, UsrObject );
104
105 virtual XInterface * queryInterface( UsrUik );
106 virtual XIdlClassRef getIdlClass(void);
107
108 virtual void disposing(const EventObject& Source);
109
110 // XSelectionChangeListener
111 virtual void selectionChanged(const EventObject& aEvent);
112 };
113
114 //-----------------------------------------------------------------------
115
116 static long nBla = 0;
117
118 static XCellRef xGlobalCell;
119
120 //-----------------------------------------------------------------------
121
ScTestListener(FixedText * pF)122 ScTestListener::ScTestListener(FixedText* pF) :
123 pFixedText( pF )
124 {
125 }
126
~ScTestListener()127 ScTestListener::~ScTestListener()
128 {
129 }
130
queryInterface(UsrUik aUIK)131 XInterface* ScTestListener::queryInterface( UsrUik aUIK )
132 {
133 if ( aUIK == XSelectionChangeListener::getSmartUik() )
134 return (XSelectionChangeListener*) this;
135
136 return UsrObject::queryInterface( aUIK );
137 }
138
getIdlClass(void)139 XIdlClassRef ScTestListener::getIdlClass(void)
140 {
141 static XIdlClassRef xClass = createStandardClass( L"ScTestListener",
142 UsrObject::getUsrObjectIdlClass(),
143 1, XSelectionChangeListener_getReflection() );
144 return xClass;
145 }
146
disposing(const EventObject & Source)147 void ScTestListener::disposing(const EventObject& Source)
148 {
149 }
150
151 // XSelectionChangeListener
152
selectionChanged(const EventObject & aEvent)153 void ScTestListener::selectionChanged(const EventObject& aEvent)
154 {
155 static USHORT nBla = 0;
156 pFixedText->SetText(++nBla);
157
158 XInterfaceRef xInt = aEvent.Source;
159 if (!xInt) return;
160 XDocumentViewRef xView = (XDocumentView*)xInt->queryInterface(XDocumentView::getSmartUik());
161 if (!xView) return;
162 XInterfaceRef xSelInt = xView->getSelection();
163 if (!xSelInt) return;
164 XCellCollectionRef xCells = (XCellCollection*)
165 xSelInt->queryInterface(XCellCollection::getSmartUik());
166 if (!xCells) return;
167
168 String aStr = OUStringToString( xCells->getAddress(), CHARSET_SYSTEM );
169 pFixedText->SetText(aStr);
170 }
171
172
173 //-----------------------------------------------------------------------
174
CreateWindow(Window * pParent,const String & rParam)175 extern "C" Window* __LOADONCALLAPI CreateWindow( Window *pParent, const String& rParam )
176 {
177 MyWindow *pWin = new MyWindow( pParent );
178 return pWin;
179 }
180
RequestHelp(const HelpEvent & rHEvt)181 void MyFixedText::RequestHelp( const HelpEvent& rHEvt )
182 {
183 String aTxtStr=GetText();
184 Size aTxtSize=GetTextSize(aTxtStr);
185 Point aShowPoint= OutputToScreenPixel(Point(0,0));
186 if ( ( rHEvt.GetMode() & HELPMODE_QUICK ) == HELPMODE_QUICK &&
187 aTxtSize.Width()>GetSizePixel().Width())
188 Help::ShowQuickHelp( Rectangle(aShowPoint,aTxtSize), aTxtStr, QUICKHELP_TOP|QUICKHELP_LEFT );
189 else
190 FixedText::RequestHelp( rHEvt );
191 }
192
MyWindow(Window * pParent)193 MyWindow::MyWindow( Window *pParent ) :
194 Window( pParent ),
195 aCountField( this, WinBits(WB_SPIN | WB_REPEAT | WB_BORDER) ),
196 aCountButton( this ),
197 aTimeText( this ),
198 aColField( this, WinBits(WB_SPIN | WB_REPEAT | WB_BORDER) ),
199 aRowField( this, WinBits(WB_SPIN | WB_REPEAT | WB_BORDER) ),
200 aPosField( this, WinBits(WB_SPIN | WB_REPEAT | WB_BORDER) ),
201 aLenField( this, WinBits(WB_SPIN | WB_REPEAT | WB_BORDER) ),
202 aTextEdit( this, WinBits(WB_BORDER) ),
203 aTextButton( this ),
204 aBlaButton( this ),
205 aTabButton( this ),
206 aViewButton( this )
207 {
208 aCountField.SetPosSizePixel( Point(10,10), Size(40,20) );
209 aCountField.SetValue(1);
210
211 aCountButton.SetPosSizePixel( Point(10,40), Size(100,30) );
212 aCountButton.SetText("hochzaehlen");
213
214 aTimeText.SetPosSizePixel( Point(10,80), Size(100,20) );
215
216 aColField.SetPosSizePixel( Point(10,120), Size(40,20) );
217 aRowField.SetPosSizePixel( Point(60,120), Size(40,20) );
218 aPosField.SetPosSizePixel( Point(10,150), Size(40,20) );
219 aLenField.SetPosSizePixel( Point(60,150), Size(40,20) );
220 aTextEdit.SetPosSizePixel( Point(10,180), Size(100,20) );
221
222 aTextButton.SetPosSizePixel( Point(10,210), Size(100,30) );
223 aTextButton.SetText("col/row/pos/len");
224
225 aBlaButton.SetPosSizePixel( Point(10,260), Size(100,30) );
226 aBlaButton.SetText("Bla");
227
228 aTabButton.SetPosSizePixel( Point(10,310), Size(100,30) );
229 aTabButton.SetText("Tabellen");
230
231 aViewButton.SetPosSizePixel( Point(10,360), Size(100,30) );
232 aViewButton.SetText("Pfui");
233
234 aCountButton.SetClickHdl(LINK(this, MyWindow, CountHdl));
235 aTextButton.SetClickHdl(LINK(this, MyWindow, TextHdl));
236 aBlaButton.SetClickHdl(LINK(this, MyWindow, BlaHdl));
237 aTabButton.SetClickHdl(LINK(this, MyWindow, TabHdl));
238 aViewButton.SetClickHdl(LINK(this, MyWindow, ViewHdl));
239
240 aCountField.Show();
241 aCountButton.Show();
242 aTimeText.Show();
243 aColField.Show();
244 aRowField.Show();
245 aPosField.Show();
246 aLenField.Show();
247 aTextEdit.Show();
248 aTextButton.Show();
249 aBlaButton.Show();
250 aTabButton.Show();
251 aViewButton.Show();
252 }
253
254 //-----------------------------------------------------------------------
255
lcl_GetDocument()256 XSpreadsheetDocumentRef lcl_GetDocument()
257 {
258 XServiceManagerRef xProv = getGlobalServiceManager();
259 DBG_ASSERT( xProv.is(), "Kein ServiceManager!" );
260
261 XServiceRegistryRef xReg = (XServiceRegistry*)xProv->queryInterface(XServiceRegistry::getSmartUik());
262 if ( !xReg )
263 return NULL;
264
265 Sequence<Uik> aIfaces( 1 );
266 aIfaces.getArray()[0] = XModelCollection::getSmartUik();
267 XServiceProviderRef xSSI = xProv->getServiceProvider( L"stardiv.desktop.ModelCollection",
268 aIfaces, Sequence<Uik>() );
269
270 XModelCollectionRef aCollRef = (XModelCollection*)
271 xSSI->newInstance()->queryInterface( XModelCollection::getSmartUik() );
272 USHORT nCount = aCollRef->getCount();
273
274 XSpreadsheetDocumentRef xModel; // Calc-Model
275 for (USHORT nMod=0; nMod<nCount && !xModel; nMod++) // Calc-Doc suchen
276 {
277 XModelRef aRef = aCollRef->getItemByIndex( nMod );
278 if ( aRef )
279 {
280 aRef->acquire();
281 xModel = (XSpreadsheetDocument*) aRef->queryInterface( XSpreadsheetDocument::getSmartUik() );
282 aRef->release();
283 }
284 }
285 return xModel;
286 }
287
lcl_GetView()288 XInterfaceRef lcl_GetView()
289 {
290 XInterfaceRef xView;
291 XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
292 if (xDoc)
293 xView = xDoc->getDDELinks(); //! temporaer zum Testen !!!!!!!!!
294
295 return xView;
296 }
297
298 //-----------------------------------------------------------------------
299
lcl_OutputNames(const XInterfaceRef & xSource,const XSpreadsheetDocumentRef & xDoc,USHORT nCol,USHORT nRow,USHORT nTab)300 void lcl_OutputNames( const XInterfaceRef& xSource, // XNameAccess
301 const XSpreadsheetDocumentRef& xDoc,
302 USHORT nCol, USHORT nRow, USHORT nTab )
303 {
304 CellAddress aAdr;
305 aAdr.Sheet = nTab;
306 aAdr.Column = nCol;
307 aAdr.Row = nRow;
308
309 XNameAccessRef xNames = (XNameAccess*)xSource->queryInterface(XNameAccess::getSmartUik());
310 if (!xNames) return;
311 Sequence<UString> aSeq = xNames->getElementNames();
312
313 USHORT nLen = (USHORT)aSeq.getLen();
314
315 XCellRef xCell = xDoc->getCell(aAdr);
316 if (!xCell) return;
317 xCell->setValue( nLen );
318 ++aAdr.Row;
319
320 UString* pAry = aSeq.getArray();
321 for (USHORT i=0; i<nLen; i++)
322 {
323 xCell = xDoc->getCell(aAdr);
324 if (!xCell) return;
325 XTextRef xText = (XText*)xCell->queryInterface(XText::getSmartUik());
326 if (!xText) return;
327 xText->setText( pAry[i] );
328 ++aAdr.Row;
329 }
330 }
331
332 //-----------------------------------------------------------------------
333
lcl_SetText(const XTextRef & xText)334 void lcl_SetText( const XTextRef& xText )
335 {
336 if (!xText.is()) return;
337 XTextCursorRef xCursor = xText->createTextCursor();
338 if (!xCursor.is()) return;
339 XTextPositionRef xPos = (XTextPosition*)xCursor->queryInterface(XTextPosition::getSmartUik());
340 XPropertySetRef xProp = (XPropertySet*)xCursor->queryInterface(XPropertySet::getSmartUik());
341 XControlCharacterInsertableRef xControl = (XControlCharacterInsertable*)
342 xCursor->queryInterface(XControlCharacterInsertable::getSmartUik());
343 XParagraphCursorRef xPara = (XParagraphCursor*)
344 xCursor->queryInterface(XParagraphCursor::getSmartUik());
345
346 if (!xPos.is() || !xControl.is() || !xPara.is()) return; // PropertySet kann fehlen
347
348 xText->setText(L"bla fasel");
349 xCursor->gotoEnd(FALSE);
350 xControl->insertControlCharacter( TEXTCONTROLCHAR_PARAGRAPH_BREAK );
351 xPos->collapseToEnd();
352 xPos->setText(L"s\xFClz"); // zweiter Absatz
353
354 xCursor->gotoStart(FALSE);
355 xPara->gotoEndOfParagraph(FALSE);
356 xCursor->goLeft(5, TRUE); // letzte 5 Zeichen im 1. Absatz
357 if (xProp.is())
358 xProp->setPropertyValue(L"Bold", UsrAny((BOOL)TRUE));
359 }
360
361 //-----------------------------------------------------------------------
362
lcl_DoCount()363 void lcl_DoCount()
364 {
365 XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
366 if (xDoc)
367 {
368 XActionLockableRef xLock = (XActionLockable*)
369 xDoc->queryInterface(XActionLockable::getSmartUik());
370 XCalculateRef xCalc = (XCalculate*)
371 xDoc->queryInterface(XCalculate::getSmartUik());
372 if (xLock)
373 xLock->addActionLock(); // nicht zwischendurch painten
374 if (xCalc)
375 xCalc->setAutomaticCalculation(FALSE);
376
377 CellAddress aPos;
378 aPos.Sheet = 0;
379
380 for (USHORT nRow = 0; nRow < 20; nRow++)
381 {
382 aPos.Row = nRow;
383 for (USHORT nCol = 0; nCol < 10; nCol++)
384 {
385 aPos.Column = nCol;
386 XCellRef xCell = xDoc->getCell(aPos);
387 if ( xCell )
388 {
389 // Wert der Zelle um 1 hochzaehlen
390
391 double fVal = xCell->getValue();
392 fVal += 1.0;
393 xCell->setValue( fVal );
394 }
395 }
396 }
397
398 if (xCalc)
399 xCalc->setAutomaticCalculation(TRUE);
400 if (xLock)
401 xLock->removeActionLock();
402 }
403 }
404
405
lcl_GlobalCell()406 void lcl_GlobalCell()
407 {
408 if ( xGlobalCell )
409 {
410 String aStr = OUStringToString( xGlobalCell->getFormula(), CHARSET_SYSTEM );
411 aStr+='0';
412 xGlobalCell->setFormula( StringToOUString( aStr, CHARSET_SYSTEM ) );
413 }
414 }
415
416
lcl_Annotations(FixedText & aTimeText)417 void lcl_Annotations( FixedText& aTimeText )
418 {
419 XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
420 if (xDoc)
421 {
422 CellAddress aPos;
423 aPos.Sheet = 0;
424 aPos.Column = 1;
425 aPos.Row = 2;
426 XCellRef xCell = xDoc->getCell(aPos);
427 if ( xCell )
428 {
429 XSheetAnnotationAnchorRef xAnchor =
430 (XSheetAnnotationAnchor*)xCell->queryInterface(XSheetAnnotationAnchor::getSmartUik());
431 if ( xAnchor )
432 {
433 XSheetAnnotationRef xAnnotation = xAnchor->getAnnotation();
434 if ( xAnnotation )
435 {
436 String aBlubb = OUStringToString( xAnnotation->getAuthor(), CHARSET_SYSTEM )+
437 String(" - ")+
438 OUStringToString( xAnnotation->getDate(), CHARSET_SYSTEM );
439 aTimeText.SetText(aBlubb);
440
441 XTextRef xAnnotationText =
442 (XText*)xAnnotation->queryInterface(XText::getSmartUik());
443 if ( xAnnotationText )
444 {
445 XTextCursorRef xCursor = xAnnotationText->createTextCursor();
446 if (xCursor)
447 {
448 XTextPositionRef xPos = (XTextPosition*)
449 xCursor->queryInterface(XTextPosition::getSmartUik());
450 XControlCharacterInsertableRef xControl = (XControlCharacterInsertable*)
451 xCursor->queryInterface(XControlCharacterInsertable::getSmartUik());
452
453 if (xPos && xControl)
454 {
455 ULONG nStart = Time::GetSystemTicks();
456
457 xAnnotationText->setText(L"bla");
458 xCursor->gotoEnd(FALSE);
459 xCursor->goLeft(1,TRUE);
460 xPos->setText(L"ubb");
461 for (USHORT i=0; i<10; i++)
462 {
463 xPos->collapseToEnd();
464 xControl->insertControlCharacter( TEXTCONTROLCHAR_PARAGRAPH_BREAK );
465 xPos->collapseToEnd();
466 xPos->setText(L"dumdi");
467 }
468
469 ULONG nEnd = Time::GetSystemTicks();
470 aTimeText.SetText(String(nEnd-nStart)+String(" ms"));
471 }
472 }
473 }
474 }
475 }
476 }
477 }
478 }
479
480
lcl_Cursor(FixedText & aTimeText)481 void lcl_Cursor( FixedText& aTimeText )
482 {
483 aTimeText.SetText( "..." );
484 XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
485 if (xDoc)
486 {
487 XActionLockableRef xLock = (XActionLockable*)
488 xDoc->queryInterface(XActionLockable::getSmartUik());
489 if (xLock)
490 xLock->addActionLock();
491
492 CellAddress aPos;
493 aPos.Sheet = 0;
494 aPos.Column = 1;
495 aPos.Row = 2;
496 XCellRef xCell = xDoc->getCell(aPos);
497 if ( xCell )
498 {
499 XTextRef xText = (XText*)xCell->queryInterface(XText::getSmartUik());
500 XCellCollectionRef xColl = (XCellCollection*)xCell->queryInterface(XCellCollection::getSmartUik());
501 if ( xText && xColl )
502 {
503 xText->setText(L"bla");
504 XLineCursorRef xCursor = xColl->createCursor();
505 if ( xCursor )
506 {
507 XCellCursorRef xCC = (XCellCursor*)xCursor->queryInterface(XCellCursor::getSmartUik());
508 XCellRangesCursorRef xRC = (XCellRangesCursor*)
509 xCursor->queryInterface(XCellRangesCursor::getSmartUik());
510
511 if ( xCC && xRC )
512 {
513 xCursor->goDown( 1, FALSE );
514
515 xColl = xCC->getRanges();
516 if ( xColl )
517 {
518 // XText ist drin, wenn's ne einzelne Zelle ist
519 xText = (XText*)xColl->queryInterface(XText::getSmartUik());
520 if ( xText )
521 {
522 xText->setText(L"fasel");
523 }
524 }
525
526 CellRangeAddress aSecond;
527 aSecond.Sheet = 0;
528 aSecond.StartColumn = 3;
529 aSecond.StartRow = 4;
530 aSecond.EndColumn = 3;
531 aSecond.EndRow = 4;
532 xRC->gotoUnion(aSecond);
533
534 xColl = xCC->getRanges();
535 if ( xColl )
536 {
537 XPropertySetRef xProp = (XPropertySet*)
538 xColl->queryInterface(XPropertySet::getSmartUik());
539 if ( xProp )
540 {
541 UsrAny aAny;
542
543 aAny = xProp->getPropertyValue(L"ShadowFormat");
544 if ( aAny.getReflection()->getName() ==
545 ShadowFormat_getReflection()->getName() )
546 {
547 //ShadowFormat* pOld = (ShadowFormat*)aAny.get();
548 ShadowFormat aNew;
549 aNew.Location = SHADOWLOCATION_BOTTOMRIGHT;
550 aNew.ShadowWidth = 100;
551 aNew.IsTransparent = FALSE;
552 aNew.Color = 0xff0000L;
553 aAny.set( &aNew, aAny.getReflection() );
554 xProp->setPropertyValue(L"ShadowFormat", aAny);
555 }
556
557 aAny = xProp->getPropertyValue(L"RotationValue");
558 aAny.setINT32(4500);
559 xProp->setPropertyValue(L"RotationValue", aAny);
560
561 aAny = xProp->getPropertyValue(L"FontHeight");
562 aAny.setUINT32(280);
563 xProp->setPropertyValue(L"FontHeight", aAny);
564
565 aAny = xProp->getPropertyValue(L"TransparentBackground");
566 aAny.setBOOL(FALSE);
567 xProp->setPropertyValue(L"TransparentBackground", aAny);
568
569 aAny = xProp->getPropertyValue(L"BackgroundColor");
570 aAny.setUINT32(0xffff00);
571 xProp->setPropertyValue(L"BackgroundColor", aAny);
572
573 aAny = xProp->getPropertyValue(L"CellProtection");
574 if ( aAny.getReflection()->getName() ==
575 CellProtection_getReflection()->getName() )
576 {
577 //CellProtection* pOld = (CellProtection*)aAny.get();
578 CellProtection aNew;
579 aNew.Locked = FALSE;
580 aNew.FormulaHidden = FALSE;
581 aNew.Hidden = FALSE;
582 aNew.PrintHidden = FALSE;
583 aAny.set( &aNew, aAny.getReflection() );
584 xProp->setPropertyValue(L"CellProtection", aAny);
585 }
586 }
587
588 // XIndexAccess gibts nur wenn's mehrere sind (??!??!)
589 XIndexAccessRef xIndex = (XIndexAccess*)
590 xColl->queryInterface(XIndexAccess::getSmartUik());
591 if ( xIndex )
592 {
593 USHORT nCount = (USHORT)xIndex->getCount();
594 aTimeText.SetText( String(nCount) );
595 }
596 }
597 }
598 }
599 }
600 }
601
602 if (xLock)
603 xLock->removeActionLock();
604 }
605 }
606
607
lcl_Cells(FixedText & aTimeText)608 void lcl_Cells( FixedText& aTimeText )
609 {
610 aTimeText.SetText( "..." );
611 XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
612 if (xDoc)
613 {
614 long nCount = 0;
615 ULONG nStart = Time::GetSystemTicks();
616
617 XActionLockableRef xLock = (XActionLockable*)
618 xDoc->queryInterface(XActionLockable::getSmartUik());
619 // if (xLock)
620 // xLock->addActionLock();
621
622 CellRangeAddress aRngAddr;
623 aRngAddr.Sheet = 0;
624 aRngAddr.StartColumn = 0;
625 aRngAddr.StartRow = 0;
626 aRngAddr.EndColumn = 9;
627 aRngAddr.EndRow = 19;
628 XCellRangeRef xRange = xDoc->getCellRange(aRngAddr);
629 if (xRange)
630 {
631 XCellCollectionRef xColl = (XCellCollection*)
632 xRange->queryInterface(XCellCollection::getSmartUik());
633 if (xColl)
634 {
635 XEnumerationAccessRef xEnAcc = xColl->getCells();
636 if (xEnAcc)
637 {
638 XEnumerationRef xEnum = xEnAcc->getEnumeration();
639 if (xEnum)
640 {
641 while (xEnum->hasMoreElements())
642 {
643 XInterfaceRef xInt = xEnum->nextElement();
644 if (xInt)
645 {
646 ++nCount;
647 }
648 }
649 }
650 }
651 }
652 }
653
654 ULONG nEnd = Time::GetSystemTicks();
655 aTimeText.SetText(String(nCount)+String(" ")+String(nEnd-nStart)+String(" ms"));
656
657
658 // if (xLock)
659 // xLock->removeActionLock();
660 }
661 }
662
lcl_Sheet(FixedText & aTimeText)663 void lcl_Sheet( FixedText& aTimeText )
664 {
665 aTimeText.SetText( "..." );
666 XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
667 if (!xDoc) return;
668 XSpreadsheetsRef xSheets = xDoc->getSheets();
669 if (!xSheets) return;
670 XTableSheetRef xSheet = xSheets->getSheetByIndex(0);
671 if (!xSheet) return;
672 XNamedRef xNamed = (XNamed*)xSheet->queryInterface(XNamed::getSmartUik());
673 if (!xNamed) return;
674
675 String aName = OUStringToString( xNamed->getName(), CHARSET_SYSTEM );
676 aName += 'X';
677 xNamed->setName(StringToOUString( aName, CHARSET_SYSTEM ));
678
679 XCellRangeRef xRange = (XCellRange*)xSheet->queryInterface(XCellRange::getSmartUik());
680 if (!xRange) return;
681 XCellRef xCell = xRange->getCell(2,1);
682 if (!xCell) return;
683 XTextRef xText = (XText*)xCell->queryInterface(XText::getSmartUik());
684 if (!xText) return;
685 String aBla = OUStringToString( xText->getText(), CHARSET_SYSTEM );
686 aBla += "bla";
687 xText->setText(StringToOUString( aBla, CHARSET_SYSTEM ));
688
689 XColumnRowRangeRef xCRR = (XColumnRowRange*)xSheet->queryInterface(XColumnRowRange::getSmartUik());
690 if (!xCRR) return;
691
692 XTableColumnsRef xCols = xCRR->getColumns();
693 if (!xCols) return;
694 XPropertySetRef xCol = xCols->getColumnByIndex(2);
695 if (!xCol) return;
696
697 UINT16 nWidth = TypeConversion::toUINT16(xCol->getPropertyValue(L"Width"));
698 // UINT16 nNewWidth = nWidth + 100;
699 // xCol->setPropertyValue(L"Width", UsrAny(nNewWidth));
700
701 xCol->setPropertyValue(L"OptimalWidth", UsrAny((BOOL)TRUE));
702 xCol->setPropertyValue(L"NewPage", UsrAny((BOOL)FALSE));
703
704 UsrAny aAny = xCol->getPropertyValue(L"ShadowFormat");
705 if ( aAny.getReflection()->getName() ==
706 ShadowFormat_getReflection()->getName() )
707 {
708 //ShadowFormat* pOld = (ShadowFormat*)aAny.get();
709 ShadowFormat aNew;
710 aNew.Location = SHADOWLOCATION_BOTTOMRIGHT;
711 aNew.ShadowWidth = 100;
712 aNew.IsTransparent = FALSE;
713 aNew.Color = 0xff0000L;
714 aAny.set( &aNew, aAny.getReflection() );
715 xCol->setPropertyValue(L"ShadowFormat", aAny);
716 }
717
718 XTableRowsRef xRows = xCRR->getRows();
719 if (!xRows) return;
720 XPropertySetRef xRow = xRows->getRowByIndex(1);
721 if (!xRow) return;
722
723 xRows->removeRowsByIndex( 2, 1 );
724
725 UINT16 nHeight = TypeConversion::toUINT16(xRow->getPropertyValue(L"Height"));
726 BOOL bOptH = TypeConversion::toBOOL(xRow->getPropertyValue(L"OptimalHeight"));
727
728 UINT16 nNewHeight = nHeight + 100;
729 xRow->setPropertyValue(L"Height", UsrAny(nNewHeight));
730
731 aTimeText.SetText(String("W:")+String(nWidth)+String(" H:")+String(nHeight)+
732 String(" ")+String((USHORT)bOptH));
733 }
734
lcl_Names(FixedText & aTimeText)735 void lcl_Names( FixedText& aTimeText )
736 {
737 aTimeText.SetText( "..." );
738 XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
739 if (!xDoc) return;
740 XNamedRangesRef xNames = xDoc->getNamedRanges();
741 if (!xNames) return;
742 XNamedRangeRef xName = xNames->getRangeByName(L"bla");
743 if (!xName) return;
744 String aCont = OUStringToString( xName->getContent(), CHARSET_SYSTEM );
745 aTimeText.SetText(aCont);
746
747 XCellRangeSourceRef xSource = (XCellRangeSource*)
748 xName->queryInterface(XCellRangeSource::getSmartUik());
749 if (!xSource) return;
750 XCellRangeRef xRange = xSource->getReferredCells();
751 if (!xRange) return;
752 XPropertySetRef xProp = (XPropertySet*)xRange->queryInterface(XPropertySet::getSmartUik());
753 if (!xProp) return;
754 UsrAny aAny = xProp->getPropertyValue(L"RotationValue");
755 aAny.setINT32(3000);
756 xProp->setPropertyValue(L"RotationValue", aAny);
757 }
758
lcl_Sheets(FixedText & aTimeText)759 void lcl_Sheets( FixedText& aTimeText )
760 {
761 aTimeText.SetText( "..." );
762 XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
763 if (!xDoc) return;
764 XSpreadsheetsRef xSheets = xDoc->getSheets();
765 if (!xSheets) return;
766
767 #if 0
768 xSheets->insertSheet( "hinten", 100 );
769 xSheets->insertSheet( "vorne", 0 );
770 xSheets->removeSheetByName( "hinten" );
771 xSheets->removeSheetByName( "vorne" );
772 #endif
773
774 xSheets->moveSheet(0, 1, TRUE);
775 xSheets->moveSheet(0, 2, FALSE);
776 }
777
lcl_Goal(FixedText & aTimeText)778 void lcl_Goal( FixedText& aTimeText )
779 {
780 XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
781 if (!xDoc) return;
782 XGoalSeekRef xGoal = (XGoalSeek*)xDoc->queryInterface(XGoalSeek::getSmartUik());
783 if (!xGoal) return;
784
785 double fResult;
786 CellAddress aFormula; // A1
787 aFormula.Sheet = 0;
788 aFormula.Column = 0;
789 aFormula.Row = 0;
790 CellAddress aVar; // A2
791 aVar.Sheet = 0;
792 aVar.Column = 0;
793 aVar.Row = 1;
794 BOOL bFound = xGoal->doGoalSeek(fResult, aFormula, aVar, L"42");
795
796 if (bFound)
797 {
798 CellAddress aOut; // A3
799 aOut.Sheet = 0;
800 aOut.Column = 0;
801 aOut.Row = 2;
802
803 XCellRef xCell = xDoc->getCell(aOut);
804 if (!xCell) return;
805 xCell->setValue(fResult);
806 }
807 }
808
lcl_TabOp(FixedText & aTimeText)809 void lcl_TabOp( FixedText& aTimeText )
810 {
811 // Mehrfachoperation auf Tabelle2
812 XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
813 if (!xDoc) return;
814
815 XCellRangeRef xRange;
816 XTableOperationRef xGoal;
817 CellRangeAddress aRangeAddr;
818 CellRangeAddress aFormulaRange;
819 CellAddress aColumnCell;
820 CellAddress aRowCell;
821 TableOperationMode nMode;
822
823 aRangeAddr.Sheet = 1; // c9:e11
824 aRangeAddr.StartColumn = 2;
825 aRangeAddr.StartRow = 8;
826 aRangeAddr.EndColumn = 4;
827 aRangeAddr.EndRow = 10;
828 aFormulaRange.Sheet = 1; // c6:c7
829 aFormulaRange.StartColumn = 2;
830 aFormulaRange.StartRow = 5;
831 aFormulaRange.EndColumn = 2;
832 aFormulaRange.EndRow = 6;
833 aColumnCell.Sheet = 0; // nicht benutzt
834 aColumnCell.Column = 0;
835 aColumnCell.Row = 0;
836 aRowCell.Sheet = 1; // c5
837 aRowCell.Column = 2;
838 aRowCell.Row = 4;
839 nMode = TABLEOP_ROW;
840
841 xRange = xDoc->getCellRange(aRangeAddr);
842 if (!xRange) return;
843 xGoal = (XTableOperation*)xRange->queryInterface(XTableOperation::getSmartUik());
844 if (!xGoal) return;
845 xGoal->setTableOperation( nMode, aFormulaRange, aColumnCell, aRowCell );
846
847 aRangeAddr.Sheet = 1; // b19:d21
848 aRangeAddr.StartColumn = 1;
849 aRangeAddr.StartRow = 18;
850 aRangeAddr.EndColumn = 3;
851 aRangeAddr.EndRow = 20;
852 aFormulaRange.Sheet = 1; // c16:d16
853 aFormulaRange.StartColumn = 2;
854 aFormulaRange.StartRow = 15;
855 aFormulaRange.EndColumn = 3;
856 aFormulaRange.EndRow = 15;
857 aColumnCell.Sheet = 1; // b16
858 aColumnCell.Column = 1;
859 aColumnCell.Row = 15;
860 aRowCell.Sheet = 0; // nicht benutzt
861 aRowCell.Column = 0;
862 aRowCell.Row = 0;
863 nMode = TABLEOP_COLUMN;
864
865 xRange = xDoc->getCellRange(aRangeAddr);
866 if (!xRange) return;
867 xGoal = (XTableOperation*)xRange->queryInterface(XTableOperation::getSmartUik());
868 if (!xGoal) return;
869 xGoal->setTableOperation( nMode, aFormulaRange, aColumnCell, aRowCell );
870
871 aRangeAddr.Sheet = 1; // b29:e32
872 aRangeAddr.StartColumn = 1;
873 aRangeAddr.StartRow = 28;
874 aRangeAddr.EndColumn = 4;
875 aRangeAddr.EndRow = 31;
876 aFormulaRange.Sheet = 1; // c27:c27
877 aFormulaRange.StartColumn = 2;
878 aFormulaRange.StartRow = 26;
879 aFormulaRange.EndColumn = 2;
880 aFormulaRange.EndRow = 26;
881 aColumnCell.Sheet = 1; // c25
882 aColumnCell.Column = 2;
883 aColumnCell.Row = 24;
884 aRowCell.Sheet = 1; // c26
885 aRowCell.Column = 2;
886 aRowCell.Row = 25;
887 nMode = TABLEOP_BOTH;
888
889 xRange = xDoc->getCellRange(aRangeAddr);
890 if (!xRange) return;
891 xGoal = (XTableOperation*)xRange->queryInterface(XTableOperation::getSmartUik());
892 if (!xGoal) return;
893 xGoal->setTableOperation( nMode, aFormulaRange, aColumnCell, aRowCell );
894 }
895
lcl_Fill(FixedText & aTimeText)896 void lcl_Fill( FixedText& aTimeText )
897 {
898 XInterfaceRef xInt = lcl_GetView();
899 if (!xInt) return;
900 XDocumentViewRef xView = (XDocumentView*)xInt->queryInterface(XDocumentView::getSmartUik());
901 if (!xView) return;
902
903 XInterfaceRef xSelInt = xView->getSelection();
904 if (!xSelInt) return;
905
906 XCellSeriesRef xFill = (XCellSeries*)xSelInt->queryInterface(XCellSeries::getSmartUik());
907 if (!xFill) return;
908
909 // xFill->fillAuto( FILL_DIRECTION_TO_BOTTOM, 2 );
910
911 xFill->fillSeries( FILL_DIRECTION_TO_LEFT, FILL_MODE_GROWTH, FILL_DATE_DAY,
912 2.0, 1000.0 );
913 }
914
lcl_Audi(FixedText & aTimeText)915 void lcl_Audi( FixedText& aTimeText )
916 {
917 aTimeText.SetText( "..." );
918 XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
919 if (!xDoc) return;
920 XSpreadsheetsRef xSheets = xDoc->getSheets();
921 if (!xSheets) return;
922 XTableSheetRef xSheet = xSheets->getSheetByIndex(0);
923 if (!xSheet) return;
924
925 XSheetAuditingRef xAudi = (XSheetAuditing*)xSheet->queryInterface(XSheetAuditing::getSmartUik());
926 if (!xAudi) return;
927
928 CellAddress aPosition;
929 aPosition.Sheet = 0;
930 aPosition.Column = 0;
931 aPosition.Row = 0;
932 xAudi->showDependents(aPosition);
933 }
934
lcl_Consoli(FixedText & aTimeText)935 void lcl_Consoli( FixedText& aTimeText )
936 {
937 XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
938 if (!xDoc) return;
939 XConsolidationRef xCons = (XConsolidation*)xDoc->queryInterface(XConsolidation::getSmartUik());
940 if (!xCons) return;
941 XConsolidationDescriptorRef xDesc = xCons->createConsolidationDescriptor(FALSE);
942 if (!xDesc) return;
943 xDesc->setFunction(SUMMARY_COUNTNUMS);
944 xCons->consolidate(xDesc);
945 }
946
lcl_Sort(FixedText & aTimeText)947 void lcl_Sort( FixedText& aTimeText )
948 {
949 XInterfaceRef xInt = lcl_GetView();
950 if (!xInt) return;
951 XDocumentViewRef xView = (XDocumentView*)xInt->queryInterface(XDocumentView::getSmartUik());
952 if (!xView) return;
953 XInterfaceRef xSelInt = xView->getSelection();
954 if (!xSelInt) return;
955 XSortableRef xSort = (XSortable*)xSelInt->queryInterface(XSortable::getSmartUik());
956 if (!xSort) return;
957 XSortDescriptorRef xDesc = xSort->createSortDescriptor(FALSE);
958 if (!xDesc) return;
959 Sequence<SortField> aFields = xDesc->getSortFields();
960 if (aFields.getLen())
961 {
962 // 1.Feld umkehren
963 SortField* pAry = aFields.getArray();
964 if (!pAry) return;
965 pAry[0].Ascending = !pAry[0].Ascending;
966 }
967 else // neue Sequence, 1. Spalte aufsteigend
968 {
969 aFields = Sequence<SortField>(1);
970 SortField* pAry = aFields.getArray();
971 if (!pAry) return;
972 pAry[0].Field = 0;
973 pAry[0].Ascending = TRUE;
974 pAry[0].Type = SORT_FIELD_AUTOMATIC;
975 }
976 xDesc->setSortFields(aFields);
977
978 XTableSortDescriptorRef xTableSort = (XTableSortDescriptor*)
979 xDesc->queryInterface(XTableSortDescriptor::getSmartUik());
980 if (!xTableSort) return;
981 CellAddress aOutPos;
982 aOutPos.Sheet = 2;
983 aOutPos.Column = 0;
984 aOutPos.Row = 0;
985 xTableSort->setUseOutputPosition(TRUE);
986 xTableSort->setOutputPosition(aOutPos);
987
988 XPropertySetRef xPropSet = (XPropertySet*)
989 xDesc->queryInterface(XPropertySet::getSmartUik());
990 if (!xPropSet) return;
991 xPropSet->setPropertyValue(L"IncludeFormats", UsrAny((BOOL)FALSE));
992
993 xSort->sort(xDesc);
994 }
995
lcl_Filter(FixedText & aTimeText)996 void lcl_Filter( FixedText& aTimeText )
997 {
998 aTimeText.SetText("...");
999
1000 XInterfaceRef xInt = lcl_GetView();
1001 if (!xInt) return;
1002 XDocumentViewRef xView = (XDocumentView*)xInt->queryInterface(XDocumentView::getSmartUik());
1003 if (!xView) return;
1004 XInterfaceRef xSelInt = xView->getSelection();
1005 if (!xSelInt) return;
1006 XFilterableRef xFilter = (XFilterable*)xSelInt->queryInterface(XFilterable::getSmartUik());
1007 if (!xFilter) return;
1008
1009 #if 0
1010 XTableFilterDescriptorRef xDesc = xFilter->createFilterDescriptor(FALSE);
1011 if (!xDesc) return;
1012 Sequence<TableFilterField> aFields = xDesc->getFilterFields();
1013 if (aFields.getLen())
1014 {
1015 // 1.Feld zwischen 1. und 2. Spalte toggeln
1016 TableFilterField* pAry = aFields.getArray();
1017 if (!pAry) return;
1018 pAry[0].Field = pAry[0].Field ? 0 : 1;
1019 }
1020 xDesc->setFilterFields(aFields);
1021 xFilter->filter(xDesc);
1022 #endif
1023
1024 XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
1025 if (!xDoc) return;
1026 CellRangeAddress aAddress;
1027 aAddress.Sheet = 3;
1028 aAddress.StartColumn = 0;
1029 aAddress.StartRow = 0;
1030 aAddress.EndColumn = 1;
1031 aAddress.EndRow = 2;
1032 XCellRangeRef xRange = xDoc->getCellRange(aAddress);
1033 if (!xRange) return;
1034 XAdvancedFilterSourceRef xSource = (XAdvancedFilterSource*)
1035 xRange->queryInterface(XAdvancedFilterSource::getSmartUik());
1036 if (!xSource) return;
1037
1038 XTableFilterDescriptorRef xDesc = xSource->createAdvancedFilter(xFilter);
1039 if (!xDesc)
1040 {
1041 aTimeText.SetText("kein Filter");
1042 return;
1043 }
1044 aTimeText.SetText("Filter gefunden");
1045 xFilter->filter(xDesc);
1046 }
1047
lcl_AutoFilter(FixedText & aTimeText)1048 void lcl_AutoFilter( FixedText& aTimeText )
1049 {
1050 XInterfaceRef xInt = lcl_GetView();
1051 if (!xInt) return;
1052 XDocumentViewRef xView = (XDocumentView*)xInt->queryInterface(XDocumentView::getSmartUik());
1053 if (!xView) return;
1054 XInterfaceRef xSelInt = xView->getSelection();
1055 if (!xSelInt) return;
1056 XFilterableRef xFilter = (XFilterable*)xSelInt->queryInterface(XFilterable::getSmartUik());
1057 if (!xFilter) return;
1058
1059 BOOL bAuto = xFilter->getAutoFilter();
1060 xFilter->setAutoFilter(!bAuto);
1061 }
1062
lcl_Merge(FixedText & aTimeText)1063 void lcl_Merge( FixedText& aTimeText )
1064 {
1065 static BOOL bMerged = FALSE;
1066
1067 XInterfaceRef xInt = lcl_GetView();
1068 if (!xInt) return;
1069 XDocumentViewRef xView = (XDocumentView*)xInt->queryInterface(XDocumentView::getSmartUik());
1070 if (!xView) return;
1071 XInterfaceRef xSelInt = xView->getSelection();
1072 if (!xSelInt) return;
1073 XMergeableRef xMerge = (XMergeable*)xSelInt->queryInterface(XMergeable::getSmartUik());
1074 if (!xMerge) return;
1075
1076 if (bMerged)
1077 xMerge->unmergeCells();
1078 else
1079 xMerge->mergeCells();
1080 bMerged = !bMerged;
1081 }
1082
lcl_Outline(FixedText & aTimeText)1083 void lcl_Outline( FixedText& aTimeText )
1084 {
1085 static BOOL bOutline = FALSE;
1086
1087 XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
1088 if (!xDoc) return;
1089 XSpreadsheetsRef xSheets = xDoc->getSheets();
1090 if (!xSheets) return;
1091 XTableSheetRef xSheet = xSheets->getSheetByIndex(0);
1092 if (!xSheet) return;
1093 XSheetOutlineRef xOut = (XSheetOutline*)xSheet->queryInterface(XSheetOutline::getSmartUik());
1094 if (!xOut) return;
1095
1096 XInterfaceRef xInt = lcl_GetView();
1097 if (!xInt) return;
1098 XDocumentViewRef xView = (XDocumentView*)xInt->queryInterface(XDocumentView::getSmartUik());
1099 if (!xView) return;
1100 XInterfaceRef xSelInt = xView->getSelection();
1101 if (!xSelInt) return;
1102 XAddressableCellRangeRef xRange = (XAddressableCellRange*)
1103 xSelInt->queryInterface(XAddressableCellRange::getSmartUik());
1104 if (!xRange) return;
1105 CellRangeAddress aRange = xRange->getRangeAddress();
1106
1107 if (bOutline)
1108 xOut->showDetail( aRange );
1109 else
1110 xOut->hideDetail( aRange );
1111
1112 bOutline = !bOutline;
1113 }
1114
lcl_Bla(FixedText & aTimeText)1115 void lcl_Bla( FixedText& aTimeText )
1116 {
1117 aTimeText.SetText("...");
1118
1119 XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
1120 if (!xDoc) return;
1121 XActionLockableRef xLock = (XActionLockable*)xDoc->queryInterface(XActionLockable::getSmartUik());
1122 if (!xLock) return;
1123 xLock->addActionLock();
1124 xLock->addActionLock();
1125 USHORT nCount = xLock->resetActionLocks(); // sollte 2 sein
1126 String aBla = nCount;
1127 xLock->setActionLocks(nCount);
1128 xLock->removeActionLock();
1129 xLock->removeActionLock();
1130
1131 aBla += '/'; aBla += xLock->resetActionLocks(); // sollte 0 sein
1132
1133 aTimeText.SetText(aBla);
1134 }
1135
lcl_CellCursor(FixedText & aTimeText)1136 void lcl_CellCursor( FixedText& aTimeText )
1137 {
1138 static int nCursorCount = 0;
1139
1140 XInterfaceRef xInt = lcl_GetView();
1141 if (!xInt) return;
1142 XDocumentViewRef xView = (XDocumentView*)xInt->queryInterface(XDocumentView::getSmartUik());
1143 if (!xView) return;
1144 XInterfaceRef xSelInt = xView->getSelection();
1145 if (!xSelInt) return;
1146 XCellCollectionRef xColl = (XCellCollection*)xSelInt->queryInterface(XCellCollection::getSmartUik());
1147 if (!xColl) return;
1148
1149 XLineCursorRef xCursor = xColl->createCursor();
1150 if (!xCursor) return;
1151 XCellCursorRef xCC = (XCellCursor*)xCursor->queryInterface(XCellCursor::getSmartUik());
1152 if (!xCC) return;
1153 XCellRangesCursorRef xCRC = (XCellRangesCursor*)xCursor->queryInterface(XCellRangesCursor::getSmartUik());
1154 if (!xCRC) return;
1155 XCellRangeCursorRef xCR = (XCellRangeCursor*)xCursor->queryInterface(XCellRangeCursor::getSmartUik());
1156 if (!xCR) return;
1157 XCellContentCursorRef xCCC = (XCellContentCursor*)xCursor->queryInterface(XCellContentCursor::getSmartUik());
1158 if (!xCCC) return;
1159 XFormulaCursorRef xFC = (XFormulaCursor*)xCursor->queryInterface(XFormulaCursor::getSmartUik());
1160 if (!xFC) return;
1161
1162 CellAddress aPos;
1163 aPos.Sheet = 0; // ignored
1164 aPos.Row = 3;
1165 aPos.Column = 2;
1166
1167 switch (nCursorCount++)
1168 {
1169 case 0:
1170 xFC->gotoDependents(FALSE);
1171 break;
1172 case 1:
1173 xFC->gotoDependents(TRUE);
1174 break;
1175 case 2:
1176 xFC->gotoPrecedents(FALSE);
1177 break;
1178 case 3:
1179 xFC->gotoPrecedents(TRUE);
1180
1181 nCursorCount = 0;
1182 break;
1183 }
1184
1185 XCellCollectionRef xNew = xCC->getRanges();
1186 if (!xNew) return;
1187 xView->select( xNew );
1188 }
1189
lcl_Notes(FixedText & aTimeText)1190 void lcl_Notes( FixedText& aTimeText )
1191 {
1192 aTimeText.SetText( "..." );
1193 XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
1194 if (!xDoc) return;
1195 XSpreadsheetsRef xSheets = xDoc->getSheets();
1196 if (!xSheets) return;
1197 XTableSheetRef xSheet = xSheets->getSheetByIndex(0);
1198 if (!xSheet) return;
1199
1200 XSheetAnnotationsRef xNotes = xSheet->getAnnotations();
1201 if (!xNotes) return;
1202 XIndexAccessRef xNIndex = (XIndexAccess*)xNotes->queryInterface(XIndexAccess::getSmartUik());
1203 if (!xNIndex) return;
1204
1205 CellAddress aPos;
1206 aPos.Column = 0;
1207 aPos.Row = 0;
1208 aPos.Sheet = 0;
1209 xNotes->addAnnotation( L"neu", aPos );
1210
1211 ULONG nCount = xNIndex->getCount();
1212 for (ULONG i=0; i<nCount; i++)
1213 {
1214 XSheetAnnotationRef xAnn = xNotes->getAnnotationByIndex((UINT16)i);
1215 XTextRef xText = (XText*)xAnn->queryInterface(XText::getSmartUik());
1216 if (xText)
1217 {
1218 String aStr = OUStringToString( xText->getText(), CHARSET_SYSTEM );
1219 aStr += "x";
1220 xText->setText(StringToOUString( aStr, CHARSET_SYSTEM ));
1221 }
1222 }
1223 }
1224
lcl_Scenario(FixedText & aTimeText)1225 void lcl_Scenario( FixedText& aTimeText )
1226 {
1227 aTimeText.SetText( "..." );
1228 XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
1229 if (!xDoc) return;
1230 XSpreadsheetsRef xSheets = xDoc->getSheets();
1231 if (!xSheets) return;
1232 XTableSheetRef xSheet = xSheets->getSheetByIndex(0);
1233 if (!xSheet) return;
1234
1235 XScenariosRef xColl = xSheet->getScenarios();
1236 if (!xColl) return;
1237
1238 Sequence<CellRangeAddress> aRanges(2);
1239 CellRangeAddress* pAry = aRanges.getArray();
1240 if (!pAry) return;
1241 pAry[0].Sheet = 0;
1242 pAry[0].StartColumn = 0;
1243 pAry[0].StartRow = 0;
1244 pAry[0].EndColumn = 1;
1245 pAry[0].EndRow = 1;
1246 pAry[1].Sheet = 0;
1247 pAry[1].StartColumn = 3;
1248 pAry[1].StartRow = 3;
1249 pAry[1].EndColumn = 4;
1250 pAry[1].EndRow = 4;
1251
1252 xColl->addScenario( aRanges, L"bla", L"bla blubb" );
1253
1254 XIndexAccessRef xIndex = (XIndexAccess*)xColl->queryInterface(XIndexAccess::getSmartUik());
1255 if (!xIndex) return;
1256 ULONG nCount = xIndex->getCount();
1257 aTimeText.SetText( nCount );
1258
1259 XScenarioRef xScen = xColl->getScenarioByIndex(0);
1260 if (!xScen) return;
1261
1262 aRanges = Sequence<CellRangeAddress>(1);
1263 pAry = aRanges.getArray();
1264 if (!pAry) return;
1265 pAry[0].Sheet = 0;
1266 pAry[0].StartColumn = 6;
1267 pAry[0].StartRow = 6;
1268 pAry[0].EndColumn = 7;
1269 pAry[0].EndRow = 7;
1270
1271 xScen->addRanges( aRanges );
1272
1273 XTableSheetRef xSh2 = xSheets->getSheetByIndex(1);
1274 if (!xSh2) return;
1275
1276 xSh2->setVisible( TRUE );
1277 xSh2->setVisible( FALSE );
1278 }
1279
lcl_Formula(FixedText & aTimeText)1280 void lcl_Formula( FixedText& aTimeText )
1281 {
1282 aTimeText.SetText("...");
1283
1284 XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
1285 if (!xDoc) return;
1286 CellAddress aPos;
1287 aPos.Sheet = 0;
1288 aPos.Column = 0;
1289 aPos.Row = 0;
1290 XCellRef xCell = xDoc->getCell(aPos);
1291 if (!xCell) return;
1292
1293 // String aStr = OUStringToString( xCell->getFormula(), CHARSET_SYSTEM );
1294 // aTimeText.SetText(aStr);
1295
1296 XTextRef xText = (XText*)xCell->queryInterface(XText::getSmartUik());
1297 if (!xText) return;
1298 String aStr = OUStringToString( xText->getText(), CHARSET_SYSTEM );
1299 aTimeText.SetText(aStr);
1300 }
1301
lcl_DBRange(FixedText & aTimeText)1302 void lcl_DBRange( FixedText& aTimeText ) // 23
1303 {
1304 aTimeText.SetText("...");
1305
1306 XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
1307 if (!xDoc) return;
1308 XDatabaseRangesRef xDBs = xDoc->getDatabaseRanges();
1309 if (!xDBs) return;
1310
1311 CellRangeAddress aRange;
1312 aRange.Sheet = 0;
1313 aRange.StartColumn = 1;
1314 aRange.StartRow = 1;
1315 aRange.EndColumn = 3;
1316 aRange.EndRow = 10;
1317
1318 xDBs->addRange( L"blubb", aRange );
1319
1320 xDBs->removeRangeByName( L"gaga" );
1321
1322 XDatabaseRangeRef xDB = xDBs->getRangeByName( L"blubb" );
1323 if (!xDB) return;
1324
1325 String aName = OUStringToString( xDB->getName(), CHARSET_SYSTEM );
1326 aTimeText.SetText(aName);
1327
1328 xDB->setName( L"gaga" );
1329
1330 CellRangeAddress aDBRange = xDB->getDataArea();
1331 ++aDBRange.Sheet;
1332 xDB->setDataArea(aDBRange);
1333 }
1334
lcl_FillTab(FixedText & aTimeText)1335 void lcl_FillTab( FixedText& aTimeText ) // 24
1336 {
1337 aTimeText.SetText("...");
1338
1339 XInterfaceRef xInt = lcl_GetView();
1340 if (!xInt) return;
1341 XDocumentViewRef xView = (XDocumentView*)xInt->queryInterface(XDocumentView::getSmartUik());
1342 if (!xView) return;
1343 XInterfaceRef xSelInt = xView->getSelection();
1344 if (!xSelInt) return;
1345
1346 XCellRangesRef xRanges = (XCellRanges*)xSelInt->queryInterface(XCellRanges::getSmartUik());
1347 XIndexAccessRef xIndex = (XIndexAccess*)xSelInt->queryInterface(XIndexAccess::getSmartUik());
1348 if (!xRanges || !xIndex) return;
1349
1350 ULONG nCount = xIndex->getCount();
1351 aTimeText.SetText(nCount);
1352 }
1353
lcl_Listener(FixedText & aTimeText)1354 void lcl_Listener( FixedText& aTimeText ) // 25
1355 {
1356 XInterfaceRef xInt = lcl_GetView();
1357 if (!xInt) return;
1358 XStarCalcViewRef xView = (XStarCalcView*)xInt->queryInterface(XStarCalcView::getSmartUik());
1359 if (!xView) return;
1360 xView->addSelectionChangeListener( new ScTestListener(&aTimeText) );
1361 }
1362
lcl_CellAttrib(FixedText & aTimeText)1363 void lcl_CellAttrib( FixedText& aTimeText ) // 26
1364 {
1365 XInterfaceRef xInt = lcl_GetView();
1366 if (!xInt) return;
1367 XDocumentViewRef xView = (XDocumentView*)xInt->queryInterface(XDocumentView::getSmartUik());
1368 if (!xView) return;
1369 XInterfaceRef xSelInt = xView->getSelection();
1370 if (!xSelInt) return;
1371 XTextRef xText = (XText*)xSelInt->queryInterface(XText::getSmartUik());
1372 if (!xText) return;
1373
1374 XTextCursorRef xCursor = xText->createTextCursor();
1375 if (!xCursor) return;
1376
1377 XTextPositionRef xPos = (XTextPosition*)xCursor->queryInterface(XTextPosition::getSmartUik());
1378 XPropertySetRef xProp = (XPropertySet*)xCursor->queryInterface(XPropertySet::getSmartUik());
1379 XParagraphCursorRef xPar = (XParagraphCursor*)xCursor->queryInterface(XParagraphCursor::getSmartUik());
1380 if (!xPos || !xProp || !xPar) return;
1381
1382 xCursor->gotoStart(FALSE);
1383 xCursor->goRight(1,FALSE);
1384 xCursor->goRight(1,TRUE);
1385
1386 UsrAny aAny = xProp->getPropertyValue(L"FontHeight");
1387 UINT32 nOld = aAny.getUINT32();
1388 aAny.setUINT32(nOld*11/10);
1389 xProp->setPropertyValue(L"FontHeight", aAny);
1390
1391 xPos->collapseToEnd();
1392 xCursor->goRight(1,TRUE);
1393
1394 xProp->setPropertyValue(L"Bold", UsrAny((BOOL)TRUE));
1395
1396 xPos->setText(L"x");
1397
1398 xPos->collapseToEnd();
1399 xPar->gotoNextParagraph(FALSE,TRUE);
1400 xProp->setPropertyValue(L"Italic", UsrAny((BOOL)TRUE));
1401 xProp->setPropertyValue(L"Underlined", UsrAny((BOOL)TRUE));
1402 }
1403
lcl_Styles(FixedText & aTimeText)1404 void lcl_Styles( FixedText& aTimeText ) // 27
1405 {
1406 aTimeText.SetText("...");
1407 XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
1408 if (!xDoc) return;
1409 XStyleFamiliesRef xFamilies = xDoc->getStyleFamilies();
1410 if (!xFamilies) return;
1411 XStyleFamilyRef xFamily = xFamilies->getStyleFamilyByType( STYLE_FAMILY_CELL );
1412 // XStyleFamilyRef xFamily = xFamilies->getStyleFamilyByType( STYLE_FAMILY_PAGE );
1413 if (!xFamily) return;
1414 long nCount = xFamily->getCount();
1415 aTimeText.SetText(nCount);
1416
1417 XStyleRef xStyle = xFamily->getStyleByName(L"rot");
1418 if (!xStyle) return;
1419 // XPropertySetRef xProp = (XPropertySet*)xStyle->queryInterface(XPropertySet::getSmartUik());
1420 // if (!xProp) return;
1421
1422 XStyleRef xNew = xFamily->addStyle( L"gaga", xStyle );
1423 if (!xNew) return;
1424 XPropertySetRef xProp = (XPropertySet*)xNew->queryInterface(XPropertySet::getSmartUik());
1425 if (!xProp) return;
1426
1427 UsrAny aAny;
1428 aAny = xProp->getPropertyValue(L"TransparentBackground");
1429 aAny.setBOOL(FALSE);
1430 xProp->setPropertyValue(L"TransparentBackground", aAny);
1431 aAny = xProp->getPropertyValue(L"BackgroundColor");
1432 aAny.setUINT32(0xffff00);
1433 xProp->setPropertyValue(L"BackgroundColor", aAny);
1434
1435 xFamily->removeStyle( L"rot" );
1436 }
1437
lcl_PageStyle(FixedText & aTimeText)1438 void lcl_PageStyle( FixedText& aTimeText ) // 28
1439 {
1440 aTimeText.SetText("...");
1441
1442 XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
1443 if (!xDoc) return;
1444 XStyleFamiliesRef xFamilies = xDoc->getStyleFamilies();
1445 if (!xFamilies) return;
1446 XStyleFamilyRef xFamily = xFamilies->getStyleFamilyByType( STYLE_FAMILY_PAGE );
1447 if (!xFamily) return;
1448 XStyleRef xStyle = xFamily->getStyleByName(L"Standard");
1449 if (!xStyle) return;
1450 XPropertySetRef xProp = (XPropertySet*)xStyle->queryInterface(XPropertySet::getSmartUik());
1451 if (!xProp) return;
1452
1453 UsrAny aAny;
1454 aAny = xProp->getPropertyValue(L"RightPageHeaderContent");
1455
1456 // geht nicht:
1457 // if ( !XHeaderFooterContent_getReflection()->equals(*aAny.getReflection()) )
1458 // return;
1459
1460 XHeaderFooterContentRef* pxContent = (XHeaderFooterContentRef*)aAny.get();
1461 if (!pxContent || !pxContent->is()) return;
1462
1463 XTextRef xText = (*pxContent)->getCenterText();
1464 if (!xText) return;
1465
1466 String aVal = OUStringToString(xText->getText(), CHARSET_SYSTEM);
1467 aTimeText.SetText(aVal);
1468
1469 // xText->setText(L"Bla fasel s\xFClz");
1470 lcl_SetText(xText);
1471
1472 xProp->setPropertyValue(L"RightPageHeaderContent", aAny);
1473 }
1474
lcl_AutoForm(FixedText & aTimeText)1475 void lcl_AutoForm( FixedText& aTimeText ) // 29
1476 {
1477 XInterfaceRef xInt = lcl_GetView();
1478 if (!xInt) return;
1479
1480 #if 0
1481 //! Test - AutoFormat muss von der App kommen
1482 XStarCalcViewRef xView = (XStarCalcView*)xInt->queryInterface(XStarCalcView::getSmartUik());
1483 if (!xView) return;
1484 XTableAutoFormatsRef xFormats = xView->getTableAutoFormats();
1485 if (!xFormats) return;
1486 //! Test
1487 #endif
1488 XTableAutoFormatsRef xFormats;
1489
1490 XTableAutoFormatRef xFormat = xFormats->getAutoFormatByName(L"gaga");
1491 if (!xFormat) return;
1492 XPropertySetRef xProp = (XPropertySet*)xFormat->queryInterface(XPropertySet::getSmartUik());
1493 if (!xProp) return;
1494
1495 BOOL bVal = TypeConversion::toBOOL(xProp->getPropertyValue(L"IncludeBackground"));
1496 xProp->setPropertyValue(L"IncludeBackground", UsrAny(BOOL(!bVal)));
1497
1498 XNamedRef xNamed = (XNamed*)xFormat->queryInterface(XNamed::getSmartUik());
1499 if (!xNamed) return;
1500 xNamed->setName(L"zzz");
1501
1502 xFormats->addAutoFormat(L"gaga");
1503 XTableAutoFormatRef xNew = xFormats->getAutoFormatByName(L"gaga");
1504 if (!xNew) return;
1505
1506 for (USHORT i=0; i<16; i++)
1507 {
1508 XPropertySetRef xNewProp = xNew->getFieldByIndex(i);
1509 if (!xNewProp) return;
1510
1511 xNewProp->setPropertyValue(L"TransparentBackground", UsrAny(BOOL(FALSE)));
1512 UINT32 nColor = 0x111100 * i;
1513 xNewProp->setPropertyValue(L"BackgroundColor", UsrAny(nColor));
1514 }
1515 }
1516
lcl_Pivot(FixedText & aTimeText)1517 void lcl_Pivot( FixedText& aTimeText ) // 30
1518 {
1519 XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
1520 if (!xDoc) return;
1521
1522 XSpreadsheetsRef xSheets = xDoc->getSheets();
1523 if (!xSheets) return;
1524 XIndexAccessRef xInd = (XIndexAccess*)xSheets->queryInterface(XIndexAccess::getSmartUik());
1525 if (!xInd) return;
1526 USHORT nCount = (USHORT)xInd->getCount();
1527
1528 for (USHORT nTab=0; nTab<nCount; nTab++)
1529 {
1530 XTableSheetRef xSheet = xSheets->getSheetByIndex(nTab);
1531 if (!xSheet) return;
1532 XDataPilotTablesRef xPivots = xSheet->getDataPilotTables();
1533 if (!xPivots) return;
1534 lcl_OutputNames( xPivots, xDoc, nTab,0,0 );
1535 XIndexAccessRef xPInd = (XIndexAccess*)xPivots->queryInterface(XIndexAccess::getSmartUik());
1536 if (!xPInd) return;
1537 USHORT nPCount = (USHORT)xPInd->getCount();
1538 for (USHORT nP=0; nP<nPCount; nP++)
1539 {
1540 XDataPilotTableRef xTable = xPivots->getTableByIndex(nP);
1541 if (!xTable) return;
1542
1543 // xTable->refreshTable();
1544
1545 XDataPilotDescriptorRef xDesc = (XDataPilotDescriptor*)
1546 xTable->queryInterface(XDataPilotDescriptor::getSmartUik());
1547 if (!xDesc) return;
1548 CellRangeAddress aSource = xDesc->getSourceRange();
1549 ++aSource.Sheet;
1550 xDesc->setSourceRange(aSource);
1551
1552 CellRangeAddress aAddr = xTable->getOutputRange();
1553 XCellRangeRef xRange = xDoc->getCellRange(aAddr);
1554 if (!xRange) return;
1555 XPropertySetRef xProp = (XPropertySet*)xRange->queryInterface(XPropertySet::getSmartUik());
1556 if (!xProp) return;
1557 xProp->setPropertyValue(L"TransparentBackground", UsrAny(BOOL(FALSE)));
1558 xProp->setPropertyValue(L"BackgroundColor", UsrAny((UINT32)0x00FF00));
1559 }
1560 }
1561 }
1562
IMPL_LINK(MyWindow,CountHdl,PushButton *,EMPTYARG)1563 IMPL_LINK(MyWindow, CountHdl, PushButton*, EMPTYARG)
1564 {
1565 #if 0
1566
1567 long nCount = aCountField.GetValue();
1568 if (nCount < 1)
1569 nCount = 1;
1570
1571 ULONG nStart = Time::GetSystemTicks();
1572 for (long i=0; i<nCount; i++)
1573 lcl_DoCount();
1574 ULONG nEnd = Time::GetSystemTicks();
1575 aTimeText.SetText(String(nCount)+String(" x Count: ")+String(nEnd-nStart)+String(" ms"));
1576
1577 #else
1578
1579 long nCount = aCountField.GetValue();
1580 switch ( nCount )
1581 {
1582 case 0:
1583 {
1584 ULONG nStart = Time::GetSystemTicks();
1585 lcl_DoCount();
1586 ULONG nEnd = Time::GetSystemTicks();
1587 aTimeText.SetText(String("Count: ")+String(nEnd-nStart)+String(" ms"));
1588 }
1589 break;
1590 case 1:
1591 lcl_GlobalCell();
1592 break;
1593 case 2:
1594 lcl_Annotations(aTimeText);
1595 break;
1596 case 3:
1597 lcl_Cursor(aTimeText);
1598 break;
1599 case 4:
1600 lcl_Cells(aTimeText);
1601 break;
1602 case 5:
1603 lcl_Sheet(aTimeText);
1604 break;
1605 case 6:
1606 lcl_Names(aTimeText);
1607 break;
1608 case 7:
1609 lcl_Sheets(aTimeText);
1610 break;
1611 case 8:
1612 lcl_Goal(aTimeText);
1613 break;
1614 case 9:
1615 lcl_TabOp(aTimeText);
1616 break;
1617 case 10:
1618 lcl_Fill(aTimeText);
1619 break;
1620 case 11:
1621 lcl_Audi(aTimeText);
1622 break;
1623 case 12:
1624 lcl_Consoli(aTimeText);
1625 break;
1626 case 13:
1627 lcl_Sort(aTimeText);
1628 break;
1629 case 14:
1630 lcl_Filter(aTimeText);
1631 break;
1632 case 15:
1633 lcl_AutoFilter(aTimeText);
1634 break;
1635 case 16:
1636 lcl_Merge(aTimeText);
1637 break;
1638 case 17:
1639 lcl_Outline(aTimeText);
1640 break;
1641 case 18:
1642 lcl_Bla(aTimeText);
1643 break;
1644 case 19:
1645 lcl_CellCursor(aTimeText);
1646 break;
1647 case 20:
1648 lcl_Notes(aTimeText);
1649 break;
1650 case 21:
1651 lcl_Scenario(aTimeText);
1652 break;
1653 case 22:
1654 lcl_Formula(aTimeText);
1655 break;
1656 case 23:
1657 lcl_DBRange(aTimeText);
1658 break;
1659 case 24:
1660 lcl_FillTab(aTimeText);
1661 break;
1662 case 25:
1663 lcl_Listener(aTimeText);
1664 break;
1665 case 26:
1666 lcl_CellAttrib(aTimeText);
1667 break;
1668 case 27:
1669 lcl_Styles(aTimeText);
1670 break;
1671 case 28:
1672 lcl_PageStyle(aTimeText);
1673 break;
1674 case 29:
1675 lcl_AutoForm(aTimeText);
1676 break;
1677 case 30:
1678 lcl_Pivot(aTimeText);
1679 break;
1680 }
1681
1682 #endif
1683
1684 return 0;
1685 }
1686
1687 //-----------------------------------------------------------------------
1688
IMPL_LINK(MyWindow,TextHdl,PushButton *,EMPTYARG)1689 IMPL_LINK(MyWindow, TextHdl, PushButton*, EMPTYARG)
1690 {
1691 USHORT nTab = 0;
1692 USHORT nCol = (USHORT)aColField.GetValue();
1693 USHORT nRow = (USHORT)aRowField.GetValue();
1694 USHORT nPos = (USHORT)aPosField.GetValue();
1695 USHORT nLen = (USHORT)aLenField.GetValue();
1696 String aStr = aTextEdit.GetText();
1697
1698 aTimeText.SetText("...");
1699
1700 XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
1701 if (xDoc)
1702 {
1703 CellAddress aPos;
1704 aPos.Sheet = nTab;
1705 aPos.Column = nCol;
1706 aPos.Row = nRow;
1707 XCellRef xCell = xDoc->getCell(aPos);
1708 if ( xCell )
1709 {
1710 XTextRef xCellText = (XText*)xCell->queryInterface(XText::getSmartUik());
1711 if (xCellText)
1712 {
1713 XTextCursorRef xCursor = xCellText->createTextCursor();
1714 if (xCursor)
1715 {
1716 XTextPositionRef xPos = (XTextPosition*)
1717 xCursor->queryInterface(XTextPosition::getSmartUik());
1718 XControlCharacterInsertableRef xControl = (XControlCharacterInsertable*)
1719 xCursor->queryInterface(XControlCharacterInsertable::getSmartUik());
1720
1721 if (xPos && xControl)
1722 {
1723 xCursor->gotoStart(FALSE);
1724 xCursor->goRight(11,TRUE);
1725 String aVal = OUStringToString( xPos->getText(), CHARSET_SYSTEM );
1726 aTimeText.SetText(aVal);
1727 }
1728 }
1729 }
1730 }
1731 }
1732
1733 return 0;
1734 }
1735
1736 //-----------------------------------------------------------------------
1737
IMPL_LINK(MyWindow,BlaHdl,PushButton *,EMPTYARG)1738 IMPL_LINK(MyWindow, BlaHdl, PushButton*, EMPTYARG)
1739 {
1740 aTimeText.SetText("...");
1741
1742 XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
1743 if (xDoc)
1744 {
1745 CellAddress aPos;
1746 aPos.Sheet = 0;
1747 aPos.Column = 1;
1748 aPos.Row = 2;
1749 XCellRef xCell = xDoc->getCell(aPos);
1750 if ( xCell )
1751 {
1752 XTextRef xText = (XText*)xCell->queryInterface(XText::getSmartUik());
1753 XFieldContainerRef xCont = (XFieldContainer*)
1754 xCell->queryInterface(XFieldContainer::getSmartUik());
1755
1756 if ( xText && xCont )
1757 {
1758 XFieldTypesRef xTypes = xCont->getFieldTypes();
1759 if ( xTypes )
1760 {
1761 XTextFieldTypeRef xType = xTypes->getFieldType( FIELDTYPE_INTERNET );
1762 XTextCursorRef xCursor = xText->createTextCursor();
1763 if ( xCursor && xType )
1764 {
1765 #if 0
1766 // Feld einfuegen
1767 XTextPositionRef xPos = (XTextPosition*)
1768 xCursor->queryInterface(XTextPosition::getSmartUik());
1769 if ( xPos )
1770 {
1771 xCursor->gotoEnd(FALSE);
1772 XTextFieldRef xField = xTypes->insertTextField( xType, xPos );
1773 if (xField)
1774 {
1775 // Eigenschaften setzen
1776 XPropertySetRef xProp = (XPropertySet*)xField->
1777 queryInterface(XPropertySet::getSmartUik());
1778 if ( xProp )
1779 {
1780 xProp->setPropertyValue(L"URL",
1781 UsrAny(String("http://www.mopo.de/")));
1782 xProp->setPropertyValue(L"Representation",
1783 UsrAny(String("ein Hyperlink")));
1784 }
1785 }
1786 }
1787 #endif
1788
1789 // letztes Feld loeschen
1790 XIndexAccessRef xIndex = (XIndexAccess*)
1791 xType->queryInterface(XIndexAccess::getSmartUik());
1792 if (xIndex)
1793 {
1794 String aBla;
1795 ULONG nCount = xIndex->getCount();
1796 for (ULONG i=0; i<nCount; i++)
1797 {
1798 XInterfaceRef xInt = xIndex->getElementByIndex(i);
1799 if (xInt)
1800 {
1801 XPropertySetRef xProp = (XPropertySet*)xInt->
1802 queryInterface(XPropertySet::getSmartUik());
1803 if ( xProp )
1804 {
1805 if (aBla.Len()) aBla += ',';
1806 aBla += OUStringToString(
1807 TypeConversion::toString(
1808 xProp->getPropertyValue(L"URL") ),
1809 CHARSET_SYSTEM );
1810 }
1811 if ( i+1 == nCount ) // letztes
1812 {
1813 XTextFieldRef xField = (XTextField*)xInt->
1814 queryInterface(XTextField::getSmartUik());
1815 if (xField)
1816 xTypes->removeTextField(xField);
1817 }
1818 }
1819 }
1820 aTimeText.SetText(aBla);
1821 }
1822 }
1823 }
1824 }
1825 }
1826
1827 xGlobalCell = xCell;
1828 }
1829 return 0;
1830 }
1831
1832
1833 //-----------------------------------------------------------------------
1834
IMPL_LINK(MyWindow,TabHdl,PushButton *,EMPTYARG)1835 IMPL_LINK(MyWindow, TabHdl, PushButton*, EMPTYARG)
1836 {
1837 String aResult;
1838
1839 XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
1840 if (xDoc)
1841 {
1842 XSpreadsheetsRef xSheets = xDoc->getSheets();
1843 if (xSheets)
1844 {
1845 XIndexAccessRef xIndex = (XIndexAccess*)xSheets->queryInterface(XIndexAccess::getSmartUik());
1846 if (xIndex)
1847 {
1848 USHORT nCount = (USHORT) xIndex->getCount();
1849 for (USHORT nTab=0; nTab<nCount; nTab++)
1850 {
1851 XInterfaceRef xInt = xIndex->getElementByIndex(nTab);
1852 if (xInt)
1853 {
1854 XNamedRef xNamed = (XNamed*)xInt->queryInterface(XNamed::getSmartUik());
1855 if (xNamed)
1856 {
1857 if (nTab)
1858 aResult += ",";
1859 aResult += OUStringToString( xNamed->getName(), CHARSET_SYSTEM );
1860 }
1861 }
1862 }
1863 }
1864
1865 CellAddress aPos;
1866 aPos.Sheet = 0;
1867 aPos.Column = 0;
1868 aPos.Row = 0;
1869
1870 XEnumerationAccessRef xEAcc = (XEnumerationAccess*)
1871 xSheets->queryInterface(XEnumerationAccess::getSmartUik());
1872 if (xEAcc)
1873 {
1874 XEnumerationRef xEnum = xEAcc->getEnumeration();
1875 if (xEnum)
1876 {
1877 while (xEnum->hasMoreElements())
1878 {
1879 XInterfaceRef xInt = xEnum->nextElement();
1880 if (xInt)
1881 {
1882 XNamedRef xNamed = (XNamed*)xInt->queryInterface(XNamed::getSmartUik());
1883 if (xNamed)
1884 {
1885 UString aName = xNamed->getName();
1886 XCellRef xCell = xDoc->getCell(aPos);
1887 if ( xCell )
1888 {
1889 XTextRef xText = (XText*)xCell->queryInterface(XText::getSmartUik());
1890 xText->setText( aName );
1891 ++aPos.Row;
1892 }
1893 }
1894 }
1895 }
1896 }
1897 }
1898 }
1899 }
1900
1901 aTimeText.SetText(aResult);
1902
1903 return 0;
1904 }
1905
1906 //-----------------------------------------------------------------------
1907
lcl_FillCells(XCellCollectionRef xColl)1908 void lcl_FillCells(XCellCollectionRef xColl)
1909 {
1910 XEnumerationAccessRef xEnAcc = xColl->getCells();
1911 if (!xEnAcc) return;
1912 XEnumerationRef xEnum = xEnAcc->getEnumeration();
1913 if (!xEnum) return;
1914 while (xEnum->hasMoreElements())
1915 {
1916 XInterfaceRef xInt = xEnum->nextElement();
1917 if (xInt)
1918 {
1919 XCellRef xCell = (XCell*)xInt->queryInterface(XCell::getSmartUik());
1920 if (xCell)
1921 {
1922 xCell->setValue(42.0);
1923 }
1924 }
1925 }
1926 }
1927
IMPL_LINK(MyWindow,ViewHdl,PushButton *,EMPTYARG)1928 IMPL_LINK(MyWindow, ViewHdl, PushButton*, EMPTYARG)
1929 {
1930 XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
1931 XInterfaceRef xInt = lcl_GetView();
1932 if (!xInt) return 0;
1933 XDocumentViewRef xView = (XDocumentView*)xInt->queryInterface(XDocumentView::getSmartUik());
1934 if (!xView) return 0;
1935
1936 XInterfaceRef xSelInt = xView->getSelection();
1937 if (!xSelInt) return 0;
1938
1939 #if 0
1940 XPropertySetRef xProp = (XPropertySet*)xSelInt->queryInterface(XPropertySet::getSmartUik());
1941 if ( xProp )
1942 {
1943 UsrAny aAny;
1944
1945 aAny = xProp->getPropertyValue(L"TransparentBackground");
1946 aAny.setBOOL(FALSE);
1947 xProp->setPropertyValue(L"TransparentBackground", aAny);
1948
1949 aAny = xProp->getPropertyValue(L"BackgroundColor");
1950 aAny.setUINT32(0xffff00);
1951 xProp->setPropertyValue(L"BackgroundColor", aAny);
1952 }
1953 XIndentRef xInd = (XIndent*)xSelInt->queryInterface(XIndent::getSmartUik());
1954 if ( xInd )
1955 {
1956 xInd->incrementIndent();
1957 }
1958 #endif
1959
1960 XAutoFormattableRef xAuto = (XAutoFormattable*)xSelInt->
1961 queryInterface(XAutoFormattable::getSmartUik());
1962 if ( xAuto )
1963 xAuto->applyAutoFormat( L"gaga" );
1964
1965 XFormulaArrayRef xArr = (XFormulaArray*)xSelInt->queryInterface(XFormulaArray::getSmartUik());
1966 if ( xArr )
1967 {
1968 // xArr->setFormulaArray( "123" );
1969 String aFormula = OUStringToString( xArr->getFormulaArray(), CHARSET_SYSTEM );
1970 aTimeText.SetText(aFormula);
1971 }
1972 else
1973 aTimeText.SetText("...");
1974
1975 XTextRef xText = (XText*)xSelInt->queryInterface(XText::getSmartUik());
1976 if ( xText )
1977 {
1978 String aStr = OUStringToString( xText->getText(), CHARSET_SYSTEM );
1979 aStr += 'X';
1980 xText->setText(StringToOUString(aStr, CHARSET_SYSTEM));
1981 }
1982
1983 // Zelle selektieren
1984
1985 #if 0
1986 if (xDoc)
1987 {
1988 CellAddress aPos;
1989 aPos.Sheet = 0;
1990 aPos.Column = 1;
1991 aPos.Row = 2;
1992 XCellRef xCell = xDoc->getCell(aPos);
1993 if ( xCell )
1994 xView->select( xCell );
1995 }
1996 #endif
1997
1998 XPrintableRef xPrint = (XPrintable*)xInt->queryInterface(XPrintable::getSmartUik());
1999 String aName = OUStringToString( xPrint->getPrinterName(), CHARSET_SYSTEM );
2000 // aTimeText.SetText(aName);
2001
2002 xPrint->setPrinterName(L"HP5_2");
2003 // xPrint->setPrinterName(L"blubb");
2004
2005 // XPropertySetRef xOptions;
2006 // xPrint->print(xOptions);
2007
2008 /* XViewPaneRef xPane = (XViewPane*)xInt->queryInterface(XViewPane::getSmartUik());
2009 if (!xPane) return 0;
2010 xPane->setScrollRow( 2 );
2011 */
2012
2013 XCellRangeSourceRef xSrc = (XCellRangeSource*)
2014 xInt->queryInterface(XCellRangeSource::getSmartUik());
2015 if (!xSrc) return 0;
2016 XCellRangeRef xRange = xSrc->getReferredCells();
2017 if (!xRange) return 0;
2018 XCellCollectionRef xColl = (XCellCollection*)
2019 xRange->queryInterface(XCellCollection::getSmartUik());
2020 if (!xColl) return 0;
2021
2022 XActionLockableRef xLock = (XActionLockable*)
2023 xDoc->queryInterface(XActionLockable::getSmartUik());
2024 if (xLock)
2025 xLock->addActionLock(); // nicht zwischendurch painten
2026
2027 // lcl_FillCells(xColl);
2028
2029 if (xLock)
2030 xLock->removeActionLock(); // nicht zwischendurch painten
2031
2032 XStarCalcViewRef xCalc = (XStarCalcView*)xInt->queryInterface(XStarCalcView::getSmartUik());
2033 if (!xCalc) return 0;
2034
2035 return 0;
2036 }
2037
2038