00001
00002
00003
00004
00005
00006
00007 #include <avkon.hrh>
00008 #include <aknnotewrappers.h>
00009 #include <ThreadAO.rsg>
00010
00011 #include <btnotifierapi.h>
00012
00013 #include "ThreadAO.pan"
00014 #include "ThreadAOAppUi.h"
00015 #include "ThreadAO.hrh"
00016 #include "threadAOengine.h"
00017 #include "DevicelistContainer.h"
00018 #include "SharedIntermediator.h"
00019 #include "BluetoothRefreshTimer.h"
00020
00021 #include "ListboxRefreshTimer.h"
00022
00023
00024
00025
00026
00027
00028 void CThreadAOAppUi::ConstructL()
00029 {
00030 BaseConstructL( CAknAppUi::EAknEnableSkin );
00031
00032
00033 iContainer = CDeviceListContainer::NewL(ClientRect());
00034 iContainer->SetMopParent(this);
00035
00036
00037 AddToStackL(iContainer);
00038 iSMediator = CSharedIntermediator::NewL(iContainer);
00039
00040
00041 iContainer->SetSMediator(iSMediator);
00042
00043
00044
00045 iTimer = CListboxRefreshTimer::NewL( iContainer );
00046
00047
00048 iTimer->StartL();
00049
00050
00051 iThreadEngine = CThreadAOEngine::NewL(iSMediator);
00052 }
00053
00054 TBool CThreadAOAppUi::TurnBtOnL()
00055 {
00056 RNotifier notifier;
00057 User::LeaveIfError( notifier.Connect() );
00058 TPckgBuf<TBool> dummy(ETrue);
00059 TPckgBuf<TBool> reply(ETrue);
00060 TRequestStatus stat;
00061
00062 notifier.StartNotifierAndGetResponse(stat, KPowerModeSettingNotifierUid, dummy, reply);
00063 User::WaitForRequest(stat);
00064
00065 notifier.CancelNotifier(KPowerModeSettingNotifierUid);
00066 notifier.Close();
00067 return reply();
00068 }
00069
00070
00071
00072
00073
00074
00075
00076 CThreadAOAppUi::CThreadAOAppUi() : iThreadStarted(EFalse)
00077 {
00078 }
00079
00080
00081
00082
00083
00084
00085 CThreadAOAppUi::~CThreadAOAppUi()
00086 {
00087 delete iThreadEngine;
00088
00089 if ( iContainer )
00090 {
00091 iEikonEnv->RemoveFromStack(iContainer);
00092 delete iContainer;
00093 }
00094
00095 delete iTimer;
00096
00097 delete iSMediator;
00098 }
00099
00100
00101
00102
00103
00104
00105 void CThreadAOAppUi::HandleCommandL(TInt aCommand)
00106 {
00107 switch(aCommand)
00108 {
00109 case EEikCmdExit:
00110 case EAknSoftkeyExit:
00111 {
00112 if (iThreadStarted)
00113 {
00114
00115
00116
00117
00118 iThreadEngine->Stop();
00119 }
00120 else
00121 {
00122 Exit();
00123 }
00124 }
00125 break;
00126
00127 case EThreadStartCommand:
00128 {
00129 if (!TurnBtOnL())
00130 {
00131 return;
00132 }
00133
00134
00135 if (!iThreadStarted)
00136 {
00137 iThreadEngine->StartL();
00138 iThreadStarted = ETrue;
00139 }
00140 }
00141 break;
00142
00143 case EThreadSetRefreshTimeCommand:
00144 {
00145
00146 if ( iThreadStarted )
00147 {
00148 TInt newRefreshTime = 0;
00149 CAknNumberQueryDialog* dlg = new (ELeave)
00150 CAknNumberQueryDialog(newRefreshTime, CAknQueryDialog::ENoTone);
00151 if ( dlg->ExecuteLD( R_SET_REFRESH_TIME_DIALOG ) )
00152 {
00153 iSMediator->BTRefreshTimerPtr()->SetRefreshTime(
00154 newRefreshTime );
00155 }
00156 }
00157 else
00158
00159
00160 {
00161 TInt newRefreshTime = 0;
00162 CAknNumberQueryDialog* dlg = new (ELeave)
00163 CAknNumberQueryDialog(newRefreshTime, CAknQueryDialog::ENoTone);
00164 if (dlg->ExecuteLD(R_SET_REFRESH_TIME_DIALOG))
00165 {
00166 iSMediator->SetRefreshTimerInitlVal( newRefreshTime );
00167 }
00168 }
00169 }
00170 break;
00171
00172 default:
00173 Panic(EThreadUi);
00174 break;
00175 }
00176 }
00177
00178
00179
00180
00181
00182
00183 void CThreadAOAppUi::HandleStatusPaneSizeChange()
00184 {
00185 CAknAppUi::HandleStatusPaneSizeChange();
00186 iContainer->SetRect( ClientRect());
00187 }
00188
00189