📄 sman.cpp
字号:
if (iBJackView->oScanner->IsActive())
{
if (iBJackView->oScanner->scannerStatus == CScanner::isShutdown)
iEikonEnv->InfoMsg(R_TBUF_SCANNERSTOPPING);
else
iEikonEnv->InfoMsg(R_TBUF_STOPSCANNER);
}
else if (iFileView->blueBeam->IsActive())
iEikonEnv->InfoMsg(R_TBUF_STOPBEAM);
else
Exit();
}
}
else if (aCommand == cmdCompressHeap)
{
User::CompressAllHeaps();
User::Heap().Compress();
iTaskView->refreshTaskList(TODO_REFRESH);
}
else if (aCommand == cmdRefresh)
{
iTaskView->refreshTaskList(TODO_REFRESH);
}
else if (aCommand == cmdNoHotkey)
{
configData->hotkeyEnabled = !configData->hotkeyEnabled;
static_cast<CSMan2Document*>(Document())->saveConfig();
iTaskView->ToggleHotKey();
}
else if (aCommand == cmdResolveName)
{
configData->resolveName = !configData->resolveName;
static_cast<CSMan2Document*>(Document())->saveConfig();
}
/*************************************************************
*
* Commands for Bluejack view
*
**************************************************************/
else if (aCommand == cmdBluejackClearLog)
{
iBJackView->oScanner->logBuffer.Copy(_L(""));
iBJackView->oScanner->logHelper->updateLog(NULL, 0, CLogger::logAll);
}
else if (aCommand == cmdBluejackStop)
{
iBJackView->oScanner->stopScan();
}
else if (aCommand == cmdBluejackOne)
{
if (!iBJackView->oScanner->IsActive())
{
// bluejack one
iBJackView->oScanner->scannerBehaviour = CScanner::behaviourBluejackOne;
iBJackView->oScanner->startScan();
}
}
else if (aCommand == cmdBluejackDelFileLog)
{
EikFileUtils::DeleteFile(iBJackView->oScanner->logHelper->logFilename);
CEikonEnv::Static()->InfoMsg(R_TBUF_MISC_DONE);
}
else if (aCommand == cmdBluejackViewFileLog)
{
if (ConeUtils::FileExists(iBJackView->oScanner->logHelper->logFilename))
QikFileUtils::StartAppL(iBJackView->oScanner->logHelper->logFilename);
else
CEikonEnv::Static()->InfoMsg(R_TBUF_BJACKLOGMISSING);
}
else if (aCommand == cmdBluejackSysMsg)
{
CBluejackNotifications* notificationDialog = new (ELeave) CBluejackNotifications(configData);
if (notificationDialog->ExecuteLD(R_DIALOG_NOTIFICATION) == EEikBidOk)
static_cast<CSMan2Document*>(Document())->saveConfig();
}
else if (aCommand == cmdBluejackOnce)
{
configData->proxSweepOnce = !configData->proxSweepOnce;
static_cast<CSMan2Document*>(Document())->saveConfig();
}
else if (aCommand == cmdAbout)
{
CEikDialog* aboutDialog = new (ELeave) CEikDialog;
aboutDialog->ExecuteLD(R_DIALOG_ABOUT);
/*
#include <msvapi.h>
#include <mtclreg.h>
#include <msvstd.h>
LIB - msgs.lib
CMsvSession* iMsvSession = CMsvSession::OpenSyncL(*this);
// Create client registry object
CClientMtmRegistry* iClientMtmRegistry =
CClientMtmRegistry::NewL(*iMsvSession);
//handle also the invisible entries
TMsvSelectionOrdering sort;
sort.SetShowInvisibleEntries(ETrue);
// Search MMSs in the INBOX
CMsvEntry* parentEntry;
parentEntry = CMsvEntry::NewL* (iMsvSession,KMsvDraftEntryId, sort);
CleanupStack::PushL(parentEntry);
CMsvEntrySelection* entries = parentEntry->ChildrenWithMtmL(KUidMsgTypeMMS);
CleanupStack::PushL(entries);
entries->Count();
*/
/*
RTelServer server;
RMobilePhone phone;
User::LeaveIfError( server.Connect() );
// load a phone profile
_LIT(KGsmModuleName, "erigsm.tsy");
User::LeaveIfError(server.LoadPhoneModule(KGsmModuleName));
// initialize the phone object
RTelServer::TPhoneInfo info;
User::LeaveIfError(server.GetPhoneInfo(0, info));
User::LeaveIfError(phone.Open(server, info.iName));
TRequestStatus tempStatus;
tempStatus = KRequestPending;
TInt32 sigStr;
TInt8 aBar;
phone.GetSignalStrength(tempStatus, sigStr, aBar);
User::WaitForRequest(tempStatus);
TBuf<50> temp;
temp.Format(_L("Signal str %d"), sigStr);
User::InfoPrint(temp);
tempStatus = KRequestPending;
RMobilePhone::TMobilePhoneLocationAreaV1 locArea;
RMobilePhone::TMobilePhoneNetworkInfoV1 pkgData;
TPckg<RMobilePhone::TMobilePhoneNetworkInfoV1Pckg> thePackage(pkgData);
phone.GetCurrentNetwork(tempStatus, thePackage, locArea);
User::WaitForRequest(tempStatus);
temp.Format(_L("Cellid %d"), locArea.iCellId);
User::InfoPrint(temp);
server.Close();
*/
//CEikonEnv::Static()->AppUiFactory()->MenuBar()->OverrideColorL(EColorMenuPaneDimmedText, KRgbBlack);
//CEikonEnv::Static()->AppUiFactory()->MenuBar()->SetTitleDimmed(0, ETrue);
}
else if (aCommand == cmdBluejackMsg)
{
if (!iBJackView->oScanner->IsActive())
{
CBluejackMessageDialog* bluejackMsgDialog = new (ELeave) CBluejackMessageDialog(iBJackView->oScanner);
bluejackMsgDialog->ExecuteLD(R_BLUEJACK_VCARD);
}
else
iEikonEnv->InfoMsg(R_TBUF_STOPSCANNER);
}
else if (aCommand == cmdBluejack)
{
if (!iBJackView->oScanner->IsActive())
{
iBJackView->oScanner->scannerBehaviour = CScanner::behaviourProximitySweep;
iBJackView->oScanner->startScan();
}
else
/* Note, this part of the else block will only get executed if
1. You are in flip closed mode
2. You chose to stop bluejack
3. Bluejack was running
This is because we disable this command in the fullscreen mode's toolbar if bluejack is already
active i.e. you will not be able to press the button and issue this command in that scenario
*/
iBJackView->oScanner->stopScan();
}
}
void CSMan2AppUi::launchApp(TUid appUid, TFileName docName, TBool putHistory)
{
RApaLsSession mySession;
TInt runResult;
TApaAppInfo aInfo;
// Don't launch if another copy is already running.
runResult = KErrGeneral;
TApaTaskList taskList(CEikonEnv::Static()->WsSession());
TApaTask theTask = taskList.FindApp(appUid);
if (theTask.Exists())
{
// Why the *toot* did I even put this here????? This line causes problems!!
//SetAppPosition(EFalse);
theTask.BringToForeground();
runResult = KErrNone;
}
else
{
if (FindApp(appUid, &aInfo) == 0)
{
if (docName.Compare(_L("")) == 0)
{
TRAPD(err, QikFileUtils::MakeAppDocumentFileNameL(docName, appUid));
if (err != KErrNone)
docName.Copy(_L(""));
}
CApaCommandLine* cmdln = CApaCommandLine::NewLC();
cmdln->SetLibraryNameL(aInfo.iFullName);
cmdln->SetCommandL(EApaCommandRun);
cmdln->SetDocumentNameL(docName);
mySession.Connect();
runResult = mySession.StartApp(*cmdln);
CleanupStack::PopAndDestroy(cmdln);
mySession.Close();
}
}
if (runResult != KErrNone)
iEikonEnv->InfoMsg(R_TBUF_ERRLAUNCHAPP);
else
{
if (putHistory)
{
TInt i, j;
for (i = NUM_LASTRUN_HISTORY - 1; i > -1; i--)
if (historyUidList->At(i) == appUid)
break;
if (i > -1)
j = i;
else
j = NUM_LASTRUN_HISTORY - 1;
for (; j > 0; j--)
historyUidList->At(j) = historyUidList->At(j - 1);
historyUidList->At(0) = appUid;
}
}
}
void CSMan2AppUi::SetAppPosition(TBool foreground)
{
RWsSession& oWindowSession = iEikonEnv->WsSession();
RWindowGroup& oWindowGroup = iEikonEnv->RootWin();
int windowID = oWindowGroup.Identifier();
TApaTask oTApaTask(oWindowSession);
oTApaTask.SetWgId(windowID);
if (foreground)
oTApaTask.BringToForeground();
else
oTApaTask.SendToBackground();
}
void CSMan2AppUi::focusPhoneApp()
{
TVwsViewId viewId;
viewId.iAppUid = KUidPhoneApp;
if (GetDefaultViewId(viewId) == KErrNone)
{
TRAPD(err, ActivateViewL(viewId));
if (!err)
iCoeEnv->RootWin().SetOrdinalPosition(-1);
}
}
void CSMan2AppUi::HandleWsEventL(const TWsEvent& aEvent, CCoeControl* aDestination)
{
if ((aEvent.Type() == EEventKey) && (aEvent.Key()->iCode == sCaptureKeyCodes[configData->iHotkeyDialogResult]))
{
if (CEikonEnv::Static()->ScreenDevice()->CurrentScreenMode() != 0)
ActivateViewL(TVwsViewId(KUidSMan2App, KUidFlipclosedView));
else
{
TVwsViewId currentView;
if (GetActiveViewId(currentView) != KErrNone)
SetAppPosition(ETrue);
else
{
if ((!CEikonEnv::Static()->AppUiFactory()->MenuBar()->DrawableWindow()->IsFaded()) && (appInForeground))
{
TInt selectedTitle;
if (CEikonEnv::Static()->AppUiFactory()->MenuBar()->IsFocused())
{
selectedTitle = CEikonEnv::Static()->AppUiFactory()->MenuBar()->SelectedTitle();
if (selectedTitle == (CEikonEnv::Static()->AppUiFactory()->MenuBar()->MenuTitleArray()->Count() - 2))
ProcessCommandL(EEikCmdCanceled);
else
{
if (selectedTitle == (CEikonEnv::Static()->AppUiFactory()->MenuBar()->MenuTitleArray()->Count() - 1))
selectedTitle = -1;
CEikonEnv::Static()->AppUiFactory()->MenuBar()->MoveHighlightToL(selectedTitle + 1, -1);
}
}
else
{
CEikonEnv::Static()->AppUiFactory()->MenuBar()->MoveHighlightToL(CEikonEnv::Static()->AppUiFactory()->MenuBar()->MenuTitleArray()->Count() - 1, -1);
}
}
else
SetAppPosition(ETrue);
}
}
}
else if (aEvent.Type() == EEventScreenDeviceChanged)
{
// For another strange reason, i found that this event is fired off by the
// phone when you launch your program in flipclosed mode. I didn't even open/close
// the flip and yet it is fired....why?!?!? my workaround is to use "oldScreenMode"
if (CEikonEnv::Static()->ScreenDevice()->CurrentScreenMode() == 0) // 0 = flip open
{
if (configData->iHotkeyDialogResult == 3)
SetAppPosition(ETrue);
oldScreenMode = 0;
}
else
{
if (oldScreenMode != 1)
{
if (configData->flipFlush)
flushTasks();
//focusPhoneApp();
SetAppPosition(EFalse);
oldScreenMode = 1;
}
}
}
CQikAppUi::HandleWsEventL(aEvent, aDestination);
}
void CSMan2AppUi::flushTasks(void)
{
if (iTaskView->snapshotTasks->Count() <= 0)
{
iEikonEnv->InfoMsg(R_TBUF_NOSNAPSHOT);
}
else
{
iTaskView->refreshTaskList(TODO_FLUSH);
iEikonEnv->InfoMsg(R_TBUF_TASKSFLUSHED);
}
}
void CSMan2AppUi::updateSnapShot(void)
{
iTaskView->snapshotTasks->Reset();
iTaskView->refreshTaskList(TODO_SNAPSHOT);
if (iTaskView->saveSnapShot() == 0)
iEikonEnv->InfoMsg(R_TBUF_SNAPSHOTUPDATED);
else
iEikonEnv->InfoMsg(R_TBUF_ERRSAVESNAPSHOT);
}
void CSMan2AppUi::FindAndLaunchAppNoUid(const TDesC *appPath)
{
// Given the path to an .APP or .EXE file, find the UID of the app and launch it
RApaLsSession mySession;
TApaAppCapabilityBuf aCapabilityBuf;
TApaAppInfo aInfo;
TBool appRegistered = EFalse;
TFullName temp;
temp.Copy(*appPath);
temp.UpperCase();
TParsePtr toFind(temp);
// Bounce the app server
FindApp(KUidControlPanel, &aInfo);
mySession.Connect();
mySession.GetAllApps();
while (mySession.GetNextApp(aInfo) == KErrNone)
{
if (mySession.GetAppCapability(aCapabilityBuf, aInfo.iUid) == KErrNone)
{
// Only scan applications that are not hidden
if (aCapabilityBuf().iAppIsHidden == EFalse)
{
aInfo.iFullName.UpperCase();
if (aInfo.iFullName == toFind.FullName())
{
launchApp(aInfo.iUid, _L(""), EFalse);
appRegistered = ETrue;
break;
}
}
}
}
mySession.Close();
if (!appRegistered)
iEikonEnv->InfoMsg(R_TBUF_FILEMAN_APPNOTREGISTERED);
}
TInt CSMan2AppUi::FindApp(TUid appUid, TApaAppInfo *aInfo)
{
// Given an app UID, find if it is installed and get its app info
RApaLsSession mySession;
TApaAppInfo theAppInfo;
TApaAppCapabilityBuf aCapabilityBuf;
TInt errRes, iTimeout = 50;
TTimeIntervalMicroSeconds32 iDelay = 100;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -