⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sman.cpp

📁 手机文件浏览器 Here are the sources to SMan v1.2c 1.2 is a major jump from v1.1. You will see this from the
💻 CPP
📖 第 1 页 / 共 5 页
字号:
			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 + -