00001
00002
00003
00004 #include "S60ClientServLabContainer.h"
00005
00006 #include <eiklabel.h>
00007 #include <f32file.h>
00008
00009 _LIT(KClientServerLabText, "Client/Server Lab");
00010 _LIT(KFileWriterText, "File Writer");
00011 _LIT(KOutputFileSizeText, "Output file size:");
00012 _LIT(KNumBytes, "%d bytes");
00013 _LIT(KDataFilePath, "c:\\system\\apps\\S60ClientServLab\\S60ClientServLab.txt");
00014 _LIT8(KDataEntry, "A line of ASCII text\r\n");
00015
00016
00017
00018
00019
00020
00021
00022 void CS60ClientServLabContainer::ConstructL(const TRect& aRect)
00023 {
00024 CreateWindowL();
00025
00026 iTopLabel = new (ELeave) CEikLabel;
00027 iTopLabel->SetContainerWindowL( *this );
00028 iTopLabel->SetTextL(KClientServerLabText);
00029
00030 iBottomLabel = new (ELeave) CEikLabel;
00031 iBottomLabel->SetContainerWindowL( *this );
00032 iBottomLabel->SetTextL(KFileWriterText);
00033
00034 SetRect(aRect);
00035 ActivateL();
00036 }
00037
00038
00039 CS60ClientServLabContainer::~CS60ClientServLabContainer()
00040 {
00041 delete iTopLabel;
00042 delete iBottomLabel;
00043 }
00044
00045
00046
00047
00048
00049
00050 void CS60ClientServLabContainer::SizeChanged()
00051 {
00052 iTopLabel->SetExtent( TPoint(0,0), TSize(Rect().Width(), Rect().Height()/2));
00053 iBottomLabel->SetExtent( TPoint(0,Rect().Height()/2), TSize(Rect().Width(),Rect().Height()/2));
00054 }
00055
00056
00057
00058
00059
00060 TInt CS60ClientServLabContainer::CountComponentControls() const
00061 {
00062 return 2;
00063 }
00064
00065
00066
00067
00068
00069 CCoeControl* CS60ClientServLabContainer::ComponentControl(TInt aIndex) const
00070 {
00071 switch ( aIndex )
00072 {
00073 case 0:
00074 return iTopLabel;
00075 case 1:
00076 return iBottomLabel;
00077 default:
00078 return NULL;
00079 }
00080 }
00081
00082
00083
00084
00085
00086 void CS60ClientServLabContainer::Draw(const TRect& aRect) const
00087 {
00088 CWindowGc& gc = SystemGc();
00089 gc.SetPenStyle(CGraphicsContext::ENullPen);
00090 gc.SetBrushColor(KRgbGray);
00091 gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
00092 gc.DrawRect(aRect);
00093 }
00094
00095
00096
00097
00098
00099
00100 void CS60ClientServLabContainer::HandleControlEventL(
00101 CCoeControl* ,TCoeEvent )
00102 {
00103 }
00104
00105
00106
00107
00108
00109 void CS60ClientServLabContainer::WriteFileL()
00110 {
00111 RFs fs;
00112 User::LeaveIfError(fs.Connect());
00113 CleanupClosePushL(fs);
00114
00115 TParsePtrC parse(KDataFilePath);
00116 TPtrC pathPtr = parse.DriveAndPath();
00117
00118 User::LeaveIfError(fs.MkDirAll(pathPtr));
00119
00120 RFile file;
00121 TInt ret = file.Open(fs, KDataFilePath, EFileWrite | EFileStreamText);
00122
00123 switch(ret)
00124 {
00125 case KErrNotFound:
00126 User::LeaveIfError(file.Create(fs, KDataFilePath, EFileWrite | EFileStreamText));
00127 break;
00128
00129 case KErrNone:
00130
00131 break;
00132
00133 default:
00134 User::Leave(ret);
00135 break;
00136 }
00137
00138 CleanupClosePushL(file);
00139
00140 TInt offset = 0;
00141 User::LeaveIfError(file.Seek(ESeekEnd, offset));
00142 User::LeaveIfError(file.Write(KDataEntry));
00143
00144 TInt fileSize;
00145 file.Size(fileSize);
00146
00147 CleanupStack::PopAndDestroy(2);
00148
00149 TBuf<20> numBytes;
00150 numBytes.Format(KNumBytes, fileSize);
00151
00152 iTopLabel->SetTextL(KOutputFileSizeText);
00153 iBottomLabel->SetTextL(numBytes);
00154 }
00155