diff -r 89d6a7a84779 -r 25a17d01db0c Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/_backed_up_8cpp-source.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/_backed_up_8cpp-source.html Fri Jan 22 18:26:19 2010 +0000 @@ -0,0 +1,318 @@ + + +TB10.1 Example Applications: examples/Graphics/WS/BackedUp/BackedUp.cpp Source File + + + + +

examples/Graphics/WS/BackedUp/BackedUp.cpp

00001 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+00002 // All rights reserved.
+00003 // This component and the accompanying materials are made available
+00004 // under the terms of "Eclipse Public License v1.0"
+00005 // which accompanies this distribution, and is available
+00006 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
+00007 //
+00008 // Initial Contributors:
+00009 // Nokia Corporation - initial contribution.
+00010 //
+00011 // Contributors:
+00012 //
+00013 // Description:
+00014 //
+00015 
+00016 #include <w32std.h>
+00017 #include "Base.h"
+00018 #include "BackedUp.h"
+00019 
+00020 _LIT(KString1,"1");
+00021 _LIT(KString2,"2");
+00022 _LIT(KString3,"3");
+00023 _LIT(KString4,"4");
+00024 _LIT(KString5,"5");
+00025 
+00026 enum TBackedUpPanic
+00027         {
+00028         EConnectPanicRedrawToBackedUpWindow,
+00029         };
+00030 
+00031 
+00033 //                                       CNumberedWindow implementation
+00035 
+00036 /****************************************************************************\
+00037 |       Function:       Constructor/Destructor for CNumberedWindow
+00038 |       Input:          aClient         Client application that owns the window
+00039 \****************************************************************************/
+00040 CNumberedWindow::CNumberedWindow (CWsClient* aClient)
+00041 : CWindow (aClient), iOldPos(0,0)
+00042         {
+00043         // iNumber is displayed on front of window.
+00044         iNumber = iCount;
+00045         iCount++;
+00046         }
+00047 
+00048 
+00049 CNumberedWindow::~CNumberedWindow ()
+00050         {
+00051         }
+00052 
+00053 
+00054 /****************************************************************************\
+00055 |       Function:       CNumberedWindow::Draw
+00056 |       Purpose:        Redraws the contents of CNumberedWindow within a given
+00057 |                               rectangle.  CNumberedWindow displays a number in the window.
+00058 |       Input:          aRect   Rectangle that needs redrawing
+00059 |       Output:         None
+00060 \****************************************************************************/
+00061 void CNumberedWindow::Draw(const TRect& aRect)
+00062         {
+00063         const TBufC<1> strings[5] = { *&KString1,
+00064                                                           *&KString2,
+00065                                                           *&KString3,
+00066                                                           *&KString4,
+00067                                                   *&KString5
+00068                                                         };
+00069 
+00070         CWindowGc* gc=SystemGc(); // get a graphics context
+00071         gc->SetClippingRect(aRect); // clip outside the redraw area
+00072         gc->Clear(aRect); // clear the redraw area
+00073         TSize size=iWindow.Size();
+00074         TInt height=size.iHeight; // Need window height to calculate vertical text offset
+00075         TInt ascent = Font()->AscentInPixels();
+00076         TInt descent = Font()->DescentInPixels();
+00077         TInt offset = (height + (ascent + descent)) / 2; // Calculate vertical text offset
+00078         gc->SetPenColor(TRgb(0,0,0)); // Set pen to black
+00079         gc->UseFont(Font());
+00080         gc->DrawText(strings[iNumber], TRect(TPoint(0,0), size), offset, CGraphicsContext::ECenter);
+00081         gc->DiscardFont();
+00082         }
+00083 
+00084 /****************************************************************************\
+00085 |       Function:       CNumberedWindow::HandlePointerEvent
+00086 |       Purpose:        Handles pointer events for CNumberedWindow.
+00087 |       Input:          aPointerEvent   The pointer event
+00088 |       Output:         None
+00089 \****************************************************************************/
+00090 void CNumberedWindow::HandlePointerEvent (TPointerEvent& aPointerEvent)
+00091         {       
+00092         switch (aPointerEvent.iType)
+00093                 {
+00094                 case TPointerEvent::EDrag:
+00095                         {
+00096                         TPoint point = aPointerEvent.iParentPosition;
+00097                         TPoint distToMove = point - iOldPos;
+00098                         TPoint position = Window().Position();
+00099                         Window().SetPosition (position + distToMove);
+00100                         iOldPos = point;
+00101                         break;
+00102                         }
+00103                 case TPointerEvent::EButton1Down:
+00104                         {
+00105                         // Request drag events 
+00106                         Window().PointerFilter (EPointerFilterDrag,     0);
+00107                         Window().SetOrdinalPosition (0);
+00108                         iOldPos = aPointerEvent.iParentPosition;
+00109                         break;
+00110                         }
+00111                 case TPointerEvent::EButton1Up:
+00112                         {
+00113                         // Cancel the request for drag events.
+00114                         Window().PointerFilter (EPointerFilterDrag,     EPointerFilterDrag);
+00115                         break;
+00116                         }
+00117                 default:
+00118                         break;
+00119                 }
+00120         }
+00121 
+00122 
+00124 //                                       CMainWindow implementation
+00126 
+00127 
+00128 /****************************************************************************\
+00129 |       Function:       Constructor/Destructor for CMainWindow
+00130 |       Input:          aClient         Client application that owns the window
+00131 \****************************************************************************/
+00132 CMainWindow::CMainWindow (CWsClient* aClient)
+00133 : CBackedUpWindow (aClient)
+00134         {
+00135         }
+00136 
+00137 
+00138 CMainWindow::~CMainWindow ()
+00139         {
+00140         iWindow.Close();
+00141         }
+00142 
+00143 /****************************************************************************\
+00144 |       Function:       CMainWindow::Draw
+00145 |       Purpose:        Redraws the contents of CMainWindow within a given
+00146 |                               rectangle.
+00147 |       Input:          aRect   Rectangle that needs redrawing
+00148 |       Output:         None
+00149 \****************************************************************************/
+00150 
+00151 void CMainWindow::Draw(const TRect& /*aRect*/)
+00152         {
+00153         _LIT(KPanicMsg,"BACKEDUP");
+00154         User::Panic(KPanicMsg,EConnectPanicRedrawToBackedUpWindow);
+00155         }
+00156 
+00157 void CMainWindow::HandlePointerMoveBufferReady ()
+00158         {               
+00159         TPoint pnts[KPointerMoveBufferSize];
+00160         TPtr8 ptr((TUint8 *)&pnts,sizeof(pnts));
+00161         TInt numPnts=Window().RetrievePointerMoveBuffer(ptr);
+00162         CWindowGc* gc=SystemGc();
+00163         gc->Activate(Window());
+00164         for(TInt index=0;index<numPnts;index++) gc->DrawLineTo(pnts[index]);
+00165         gc->Deactivate();
+00166         }
+00167 
+00168 /****************************************************************************\
+00169 |       Function:       CMainWindow::HandlePointerEvent
+00170 |       Purpose:        Handles pointer events for CMainWindow.
+00171 |       Input:          aPointerEvent   The pointer event!
+00172 |       Output:         None
+00173 \****************************************************************************/
+00174 
+00175 void CMainWindow::HandlePointerEvent (TPointerEvent& aPointerEvent)
+00176         {       
+00177         switch (aPointerEvent.iType)
+00178                 {
+00179                 case TPointerEvent::EButton1Down:
+00180                         {
+00181                         Window().SetShadowDisabled(EFalse);
+00182                         Window().EnablePointerMoveBuffer();
+00183                         CWindowGc* gc = SystemGc();
+00184                         gc->Activate(Window());
+00185                         gc->MoveTo(aPointerEvent.iPosition);
+00186                         gc->Deactivate();
+00187                         }
+00188                 default:
+00189                         break;
+00190                 }
+00191         }
+00192 
+00193 
+00195 //                                       CExampleWsClient implementation
+00197 
+00198 CExampleWsClient* CExampleWsClient::NewL(const TRect& aRect)
+00199         {
+00200         // make new client
+00201         CExampleWsClient* client=new (ELeave) CExampleWsClient(aRect); 
+00202         CleanupStack::PushL(client); // push, just in case
+00203         client->ConstructL(); // construct and run
+00204         CleanupStack::Pop();
+00205         return client;
+00206         }
+00207 
+00208 /****************************************************************************\
+00209 |       Function:       Constructor/Destructor for CExampleWsClient
+00210 |                               Destructor deletes everything that was allocated by
+00211 |                               ConstructMainWindowL()
+00212 \****************************************************************************/
+00213 
+00214 CExampleWsClient::CExampleWsClient(const TRect& aRect)
+00215 :iRect(aRect)
+00216         {
+00217         }
+00218 
+00219 CExampleWsClient::~CExampleWsClient ()
+00220         {
+00221         delete iMainWindow;
+00222         delete iWindow1;
+00223         }
+00224 
+00225 
+00226 /****************************************************************************\
+00227 |       Function:       CExampleWsClient::ConstructMainWindowL()
+00228 |                               Called by base class's ConstructL
+00229 |       Purpose:        Allocates and creates all the windows owned by this client
+00230 |                               (See list of windows in CExampleWsCLient declaration).
+00231 \****************************************************************************/
+00232 
+00233 void CExampleWsClient::ConstructMainWindowL()
+00234         {
+00235         // Resources allocated in this function are freed in the CExampleWsClient destructor
+00236         
+00237         iMainWindow=new (ELeave) CMainWindow(this);
+00238         iMainWindow->ConstructL(iRect);
+00239         iWindow1  = new (ELeave) CNumberedWindow (this);
+00240         iWindow1->ConstructL (TRect (TPoint (100, 100), TSize (100, 100)), TRgb (100, 100, 100),
+00241                 iMainWindow);
+00242         }
+00243 
+00244 
+00245 /****************************************************************************\
+00246 |       Function:       CExampleWsClient::RunL()
+00247 |                               Called by active scheduler when an even occurs
+00248 |       Purpose:        Processes events according to their type
+00249 |                               For key events: calls HandleKeyEventL() (global to client)
+00250 |                               For pointer event: calls HandlePointerEvent() for window
+00251 |                                  event occurred in.
+00252 \****************************************************************************/
+00253 void CExampleWsClient::RunL()
+00254         {
+00255         // get the event
+00256         iWs.GetEvent(iWsEvent);
+00257         TInt eventType=iWsEvent.Type();
+00258         // take action on it
+00259         switch (eventType)
+00260                 {
+00261         // events global within window group
+00262         case EEventNull:
+00263                 break;
+00264         case EEventKey:
+00265                 {
+00266                 TKeyEvent& keyEvent=*iWsEvent.Key(); // get key event
+00267                 HandleKeyEventL (keyEvent);
+00268                 break;
+00269                 }
+00270         case EEventKeyUp:
+00271         case EEventModifiersChanged:
+00272         case EEventKeyDown:
+00273         case EEventFocusLost:
+00274         case EEventFocusGained:
+00275         case EEventSwitchOn:
+00276         case EEventPassword:
+00277         case EEventWindowGroupsChanged:
+00278         case EEventErrorMessage:
+00279                 break;
+00280         // events local to specific windows
+00281         case EEventPointer:
+00282                 {
+00283                 CWindow* window=(CWindow*)(iWsEvent.Handle()); // get window
+00284                 TPointerEvent& pointerEvent=*iWsEvent.Pointer();
+00285                 window->HandlePointerEvent (pointerEvent);
+00286                 break;
+00287                 }
+00288         case EEventPointerExit:
+00289         case EEventPointerEnter:
+00290         case EEventPointerBufferReady:
+00291                 {
+00292                 CWindow* window=(CWindow*)(iWsEvent.Handle()); // get window
+00293                 window->HandlePointerMoveBufferReady ();
+00294                 break;
+00295                 }
+00296         case EEventDragDrop:
+00297                 break;
+00298         default:
+00299                 break;
+00300                 }
+00301         IssueRequest(); // maintain outstanding request
+00302         }
+00303 
+00304 /****************************************************************************\
+00305 |       Function:       CExampleWsClient::HandleKeyEventL()
+00306 |       Purpose:        Processes key events for CExampleWsClient
+00307 \****************************************************************************/
+00308 void CExampleWsClient::HandleKeyEventL (TKeyEvent& /*aKeyEvent*/)
+00309         {
+00310         }
+00311 
+00312 
+

Generated on Thu Jan 21 10:32:58 2010 for TB10.1 Example Applications by  + +doxygen 1.5.3
+ +