00001
00002
00003
00004
00005
00006
00007 #include <e32base.h>
00008 #include "aknnotewrappers.h"
00009 #include "..\inc\BluetoothRefreshTimer.h"
00010 #include "btdiscoverer.h"
00011 #include "DeviceListContainer.h"
00012
00013
00014 const TInt KThreadSecond = 1000 * 1000;
00015
00016 _LIT( refreshDevices, "refreshing devices..." );
00017
00018
00019
00020
00021
00022
00023 CBluetoothRefreshTimer::CBluetoothRefreshTimer(
00024 CSharedIntermediator* aSMediator,
00025 CActiveSchedulerWait* aWait)
00026 : CTimer(CActive::EPriorityStandard),
00027 iWait(aWait), iSMediator(aSMediator),
00028 iBTDiscoverer(NULL), iRefreshTime(0), iTime(0)
00029 {
00030 iSMediator->SetBTRefreshTimerPtr(this);
00031 }
00032
00033
00034
00035
00036
00037
00038 CBluetoothRefreshTimer::~CBluetoothRefreshTimer()
00039 {
00040 Cancel();
00041 delete iBTDiscoverer;
00042 }
00043
00044
00045 CBluetoothRefreshTimer* CBluetoothRefreshTimer::NewL(
00046 CSharedIntermediator* aSMediator, CActiveSchedulerWait* aWait)
00047 {
00048 CBluetoothRefreshTimer* self = CBluetoothRefreshTimer::NewLC(
00049 aSMediator, aWait );
00050 CleanupStack::Pop(self);
00051 return self;
00052 }
00053
00054 CBluetoothRefreshTimer* CBluetoothRefreshTimer::NewLC(
00055 CSharedIntermediator* aSMediator, CActiveSchedulerWait* aWait)
00056 {
00057 CBluetoothRefreshTimer* self = new (ELeave) CBluetoothRefreshTimer(
00058 aSMediator, aWait );
00059 CleanupStack::PushL(self);
00060 self->ConstructL();
00061 return self;
00062 }
00063
00064
00065 void CBluetoothRefreshTimer::ConstructL()
00066 {
00067 CTimer::ConstructL();
00068
00069 iBTDiscoverer = CBTDiscoverer::NewL(iSMediator);
00070 }
00071
00072
00073
00074
00075
00076
00077 void CBluetoothRefreshTimer::StartL()
00078 {
00079 iRefreshTime = KThreadSecond*iSMediator->RefreshTimerInitlVal();
00080
00081 iBTDiscoverer->StartDiscoveringDevicesL();
00082 After( KThreadSecond );
00083 }
00084
00085
00086
00087
00088
00089
00090 void CBluetoothRefreshTimer::StopWaitLoop()
00091 {
00092 iBTDiscoverer->DoCancel();
00093 Cancel();
00094 iWait->AsyncStop();
00095 }
00096
00097
00098
00099
00100
00101 void CBluetoothRefreshTimer::RunL()
00102 {
00103
00104 if ( iTime >= iRefreshTime )
00105 {
00106 CDeviceListContainer* container = iSMediator->DeviceListContainer();
00107
00108 container->ClearListBox();
00109 container->AddItemL( refreshDevices );
00110
00111
00112 iSMediator->ResetArray();
00113
00114
00115 iBTDiscoverer->RefreshDevices();
00116
00117 iTime = 0;
00118 }
00119
00120
00121 if (iSMediator->StopSearching())
00122 {
00123
00124 StopWaitLoop();
00125 }
00126
00127
00128 iTime+=KThreadSecond;
00129 After( KThreadSecond );
00130 }
00131
00132
00133
00134
00135
00136
00137 void CBluetoothRefreshTimer::DoCancel()
00138 {
00139 CTimer::DoCancel();
00140 }
00141
00142
00143
00144
00145
00146
00147 void CBluetoothRefreshTimer::SetRefreshTime(TInt aRefreshTime)
00148 {
00149
00150 if ( aRefreshTime < KRefreshTimeMin )
00151 {
00152 aRefreshTime = KRefreshTimeDefault;
00153 }
00154
00155
00156 iRefreshTime = aRefreshTime * KThreadSecond;
00157 }
00158
00159
00160
00161
00162
00163 TInt CBluetoothRefreshTimer::RunError(TInt)
00164 {
00165 return KErrNone;
00166 }
00167