untracked files on master: cab539e Merge branch 'master' of https://git01.codeplex.com/keepass2android
				
					
				
			
							
								
								
									
										235
									
								
								src/KeePass2Android.sln
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,235 @@ | ||||
|  | ||||
| Microsoft Visual Studio Solution File, Format Version 12.00 | ||||
| # Visual Studio 2010 | ||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KeePassLib2Android", "KeePassLib2Android\KeePassLib2Android.csproj", "{545B4A6B-8BBA-4FBE-92FC-4AC060122A54}" | ||||
| EndProject | ||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "keepass2android", "keepass2android\keepass2android.csproj", "{A6CF8A86-37C1-4197-80FE-519DE2C842F5}" | ||||
| EndProject | ||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "kp2akeytransform", "kp2akeytransform\kp2akeytransform.csproj", "{A57B3ACE-5634-469A-88C4-858BB409F356}" | ||||
| EndProject | ||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Kp2aKeyboardBinding", "Kp2aKeyboardBinding\Kp2aKeyboardBinding.csproj", "{A8779D4D-7C49-4C2F-82BD-2CDC448391DA}" | ||||
| EndProject | ||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Kp2aBusinessLogic", "Kp2aBusinessLogic\Kp2aBusinessLogic.csproj", "{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}" | ||||
| EndProject | ||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoDroidUnitTesting", "monodroid-unittesting\MonoDroidUnitTesting\MonoDroidUnitTesting.csproj", "{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}" | ||||
| EndProject | ||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Kp2aUnitTests", "Kp2aUnitTests\Kp2aUnitTests.csproj", "{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}" | ||||
| EndProject | ||||
| Global | ||||
| 	GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||||
| 		Debug|Any CPU = Debug|Any CPU | ||||
| 		Debug|Mixed Platforms = Debug|Mixed Platforms | ||||
| 		Debug|Win32 = Debug|Win32 | ||||
| 		Debug|x64 = Debug|x64 | ||||
| 		Release|Any CPU = Release|Any CPU | ||||
| 		Release|Mixed Platforms = Release|Mixed Platforms | ||||
| 		Release|Win32 = Release|Win32 | ||||
| 		Release|x64 = Release|x64 | ||||
| 		ReleaseNoNet|Any CPU = ReleaseNoNet|Any CPU | ||||
| 		ReleaseNoNet|Mixed Platforms = ReleaseNoNet|Mixed Platforms | ||||
| 		ReleaseNoNet|Win32 = ReleaseNoNet|Win32 | ||||
| 		ReleaseNoNet|x64 = ReleaseNoNet|x64 | ||||
| 	EndGlobalSection | ||||
| 	GlobalSection(ProjectConfigurationPlatforms) = postSolution | ||||
| 		{545B4A6B-8BBA-4FBE-92FC-4AC060122A54}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||
| 		{545B4A6B-8BBA-4FBE-92FC-4AC060122A54}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||
| 		{545B4A6B-8BBA-4FBE-92FC-4AC060122A54}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU | ||||
| 		{545B4A6B-8BBA-4FBE-92FC-4AC060122A54}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU | ||||
| 		{545B4A6B-8BBA-4FBE-92FC-4AC060122A54}.Debug|Win32.ActiveCfg = Debug|Any CPU | ||||
| 		{545B4A6B-8BBA-4FBE-92FC-4AC060122A54}.Debug|Win32.Build.0 = Debug|Any CPU | ||||
| 		{545B4A6B-8BBA-4FBE-92FC-4AC060122A54}.Debug|x64.ActiveCfg = Debug|Any CPU | ||||
| 		{545B4A6B-8BBA-4FBE-92FC-4AC060122A54}.Debug|x64.Build.0 = Debug|Any CPU | ||||
| 		{545B4A6B-8BBA-4FBE-92FC-4AC060122A54}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||
| 		{545B4A6B-8BBA-4FBE-92FC-4AC060122A54}.Release|Any CPU.Build.0 = Release|Any CPU | ||||
| 		{545B4A6B-8BBA-4FBE-92FC-4AC060122A54}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU | ||||
| 		{545B4A6B-8BBA-4FBE-92FC-4AC060122A54}.Release|Mixed Platforms.Build.0 = Release|Any CPU | ||||
| 		{545B4A6B-8BBA-4FBE-92FC-4AC060122A54}.Release|Win32.ActiveCfg = Release|Any CPU | ||||
| 		{545B4A6B-8BBA-4FBE-92FC-4AC060122A54}.Release|Win32.Build.0 = Release|Any CPU | ||||
| 		{545B4A6B-8BBA-4FBE-92FC-4AC060122A54}.Release|x64.ActiveCfg = Release|Any CPU | ||||
| 		{545B4A6B-8BBA-4FBE-92FC-4AC060122A54}.Release|x64.Build.0 = Release|Any CPU | ||||
| 		{545B4A6B-8BBA-4FBE-92FC-4AC060122A54}.ReleaseNoNet|Any CPU.ActiveCfg = ReleaseNoNet|Any CPU | ||||
| 		{545B4A6B-8BBA-4FBE-92FC-4AC060122A54}.ReleaseNoNet|Any CPU.Build.0 = ReleaseNoNet|Any CPU | ||||
| 		{545B4A6B-8BBA-4FBE-92FC-4AC060122A54}.ReleaseNoNet|Mixed Platforms.ActiveCfg = ReleaseNoNet|Any CPU | ||||
| 		{545B4A6B-8BBA-4FBE-92FC-4AC060122A54}.ReleaseNoNet|Mixed Platforms.Build.0 = ReleaseNoNet|Any CPU | ||||
| 		{545B4A6B-8BBA-4FBE-92FC-4AC060122A54}.ReleaseNoNet|Win32.ActiveCfg = ReleaseNoNet|Any CPU | ||||
| 		{545B4A6B-8BBA-4FBE-92FC-4AC060122A54}.ReleaseNoNet|x64.ActiveCfg = ReleaseNoNet|Any CPU | ||||
| 		{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||
| 		{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||
| 		{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Debug|Any CPU.Deploy.0 = Debug|Any CPU | ||||
| 		{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU | ||||
| 		{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU | ||||
| 		{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Debug|Mixed Platforms.Deploy.0 = Debug|Any CPU | ||||
| 		{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Debug|Win32.ActiveCfg = Debug|Any CPU | ||||
| 		{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Debug|Win32.Build.0 = Debug|Any CPU | ||||
| 		{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Debug|x64.ActiveCfg = Debug|Any CPU | ||||
| 		{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Debug|x64.Build.0 = Debug|Any CPU | ||||
| 		{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||
| 		{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Release|Any CPU.Build.0 = Release|Any CPU | ||||
| 		{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU | ||||
| 		{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Release|Mixed Platforms.Build.0 = Release|Any CPU | ||||
| 		{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Release|Win32.ActiveCfg = Release|Any CPU | ||||
| 		{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Release|Win32.Build.0 = Release|Any CPU | ||||
| 		{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Release|x64.ActiveCfg = Release|Any CPU | ||||
| 		{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Release|x64.Build.0 = Release|Any CPU | ||||
| 		{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.ReleaseNoNet|Any CPU.ActiveCfg = ReleaseNoNet|Any CPU | ||||
| 		{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.ReleaseNoNet|Any CPU.Build.0 = ReleaseNoNet|Any CPU | ||||
| 		{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.ReleaseNoNet|Mixed Platforms.ActiveCfg = ReleaseNoNet|Any CPU | ||||
| 		{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.ReleaseNoNet|Mixed Platforms.Build.0 = ReleaseNoNet|Any CPU | ||||
| 		{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.ReleaseNoNet|Mixed Platforms.Deploy.0 = ReleaseNoNet|Any CPU | ||||
| 		{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.ReleaseNoNet|Win32.ActiveCfg = ReleaseNoNet|Any CPU | ||||
| 		{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.ReleaseNoNet|x64.ActiveCfg = ReleaseNoNet|Any CPU | ||||
| 		{A57B3ACE-5634-469A-88C4-858BB409F356}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||
| 		{A57B3ACE-5634-469A-88C4-858BB409F356}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||
| 		{A57B3ACE-5634-469A-88C4-858BB409F356}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU | ||||
| 		{A57B3ACE-5634-469A-88C4-858BB409F356}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU | ||||
| 		{A57B3ACE-5634-469A-88C4-858BB409F356}.Debug|Win32.ActiveCfg = Debug|Any CPU | ||||
| 		{A57B3ACE-5634-469A-88C4-858BB409F356}.Debug|Win32.Build.0 = Debug|Any CPU | ||||
| 		{A57B3ACE-5634-469A-88C4-858BB409F356}.Debug|x64.ActiveCfg = Debug|Any CPU | ||||
| 		{A57B3ACE-5634-469A-88C4-858BB409F356}.Debug|x64.Build.0 = Debug|Any CPU | ||||
| 		{A57B3ACE-5634-469A-88C4-858BB409F356}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||
| 		{A57B3ACE-5634-469A-88C4-858BB409F356}.Release|Any CPU.Build.0 = Release|Any CPU | ||||
| 		{A57B3ACE-5634-469A-88C4-858BB409F356}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU | ||||
| 		{A57B3ACE-5634-469A-88C4-858BB409F356}.Release|Mixed Platforms.Build.0 = Release|Any CPU | ||||
| 		{A57B3ACE-5634-469A-88C4-858BB409F356}.Release|Win32.ActiveCfg = Release|Any CPU | ||||
| 		{A57B3ACE-5634-469A-88C4-858BB409F356}.Release|Win32.Build.0 = Release|Any CPU | ||||
| 		{A57B3ACE-5634-469A-88C4-858BB409F356}.Release|x64.ActiveCfg = Release|Any CPU | ||||
| 		{A57B3ACE-5634-469A-88C4-858BB409F356}.Release|x64.Build.0 = Release|Any CPU | ||||
| 		{A57B3ACE-5634-469A-88C4-858BB409F356}.ReleaseNoNet|Any CPU.ActiveCfg = Debug|Any CPU | ||||
| 		{A57B3ACE-5634-469A-88C4-858BB409F356}.ReleaseNoNet|Any CPU.Build.0 = Debug|Any CPU | ||||
| 		{A57B3ACE-5634-469A-88C4-858BB409F356}.ReleaseNoNet|Mixed Platforms.ActiveCfg = Release|Any CPU | ||||
| 		{A57B3ACE-5634-469A-88C4-858BB409F356}.ReleaseNoNet|Mixed Platforms.Build.0 = Release|Any CPU | ||||
| 		{A57B3ACE-5634-469A-88C4-858BB409F356}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU | ||||
| 		{A57B3ACE-5634-469A-88C4-858BB409F356}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU | ||||
| 		{A8779D4D-7C49-4C2F-82BD-2CDC448391DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||
| 		{A8779D4D-7C49-4C2F-82BD-2CDC448391DA}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||
| 		{A8779D4D-7C49-4C2F-82BD-2CDC448391DA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU | ||||
| 		{A8779D4D-7C49-4C2F-82BD-2CDC448391DA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU | ||||
| 		{A8779D4D-7C49-4C2F-82BD-2CDC448391DA}.Debug|Win32.ActiveCfg = Debug|Any CPU | ||||
| 		{A8779D4D-7C49-4C2F-82BD-2CDC448391DA}.Debug|Win32.Build.0 = Debug|Any CPU | ||||
| 		{A8779D4D-7C49-4C2F-82BD-2CDC448391DA}.Debug|x64.ActiveCfg = Debug|Any CPU | ||||
| 		{A8779D4D-7C49-4C2F-82BD-2CDC448391DA}.Debug|x64.Build.0 = Debug|Any CPU | ||||
| 		{A8779D4D-7C49-4C2F-82BD-2CDC448391DA}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||
| 		{A8779D4D-7C49-4C2F-82BD-2CDC448391DA}.Release|Any CPU.Build.0 = Release|Any CPU | ||||
| 		{A8779D4D-7C49-4C2F-82BD-2CDC448391DA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU | ||||
| 		{A8779D4D-7C49-4C2F-82BD-2CDC448391DA}.Release|Mixed Platforms.Build.0 = Release|Any CPU | ||||
| 		{A8779D4D-7C49-4C2F-82BD-2CDC448391DA}.Release|Win32.ActiveCfg = Release|Any CPU | ||||
| 		{A8779D4D-7C49-4C2F-82BD-2CDC448391DA}.Release|Win32.Build.0 = Release|Any CPU | ||||
| 		{A8779D4D-7C49-4C2F-82BD-2CDC448391DA}.Release|x64.ActiveCfg = Release|Any CPU | ||||
| 		{A8779D4D-7C49-4C2F-82BD-2CDC448391DA}.Release|x64.Build.0 = Release|Any CPU | ||||
| 		{A8779D4D-7C49-4C2F-82BD-2CDC448391DA}.ReleaseNoNet|Any CPU.ActiveCfg = Debug|Any CPU | ||||
| 		{A8779D4D-7C49-4C2F-82BD-2CDC448391DA}.ReleaseNoNet|Any CPU.Build.0 = Debug|Any CPU | ||||
| 		{A8779D4D-7C49-4C2F-82BD-2CDC448391DA}.ReleaseNoNet|Mixed Platforms.ActiveCfg = Release|Any CPU | ||||
| 		{A8779D4D-7C49-4C2F-82BD-2CDC448391DA}.ReleaseNoNet|Mixed Platforms.Build.0 = Release|Any CPU | ||||
| 		{A8779D4D-7C49-4C2F-82BD-2CDC448391DA}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU | ||||
| 		{A8779D4D-7C49-4C2F-82BD-2CDC448391DA}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU | ||||
| 		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||
| 		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||
| 		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU | ||||
| 		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU | ||||
| 		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.Debug|Win32.ActiveCfg = Debug|Any CPU | ||||
| 		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.Debug|x64.ActiveCfg = Debug|Any CPU | ||||
| 		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||
| 		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.Release|Any CPU.Build.0 = Release|Any CPU | ||||
| 		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU | ||||
| 		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.Release|Mixed Platforms.Build.0 = Release|Any CPU | ||||
| 		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.Release|Win32.ActiveCfg = Release|Any CPU | ||||
| 		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.Release|x64.ActiveCfg = Release|Any CPU | ||||
| 		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.ReleaseNoNet|Any CPU.ActiveCfg = Release|Any CPU | ||||
| 		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.ReleaseNoNet|Any CPU.Build.0 = Release|Any CPU | ||||
| 		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.ReleaseNoNet|Mixed Platforms.ActiveCfg = Release|Any CPU | ||||
| 		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.ReleaseNoNet|Mixed Platforms.Build.0 = Release|Any CPU | ||||
| 		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU | ||||
| 		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU | ||||
| 		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||
| 		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||
| 		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU | ||||
| 		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU | ||||
| 		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.Debug|Win32.ActiveCfg = Debug|Any CPU | ||||
| 		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.Debug|x64.ActiveCfg = Debug|Any CPU | ||||
| 		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||
| 		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.Release|Any CPU.Build.0 = Release|Any CPU | ||||
| 		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU | ||||
| 		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.Release|Mixed Platforms.Build.0 = Release|Any CPU | ||||
| 		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.Release|Win32.ActiveCfg = Release|Any CPU | ||||
| 		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.Release|x64.ActiveCfg = Release|Any CPU | ||||
| 		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.ReleaseNoNet|Any CPU.ActiveCfg = Release|Any CPU | ||||
| 		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.ReleaseNoNet|Any CPU.Build.0 = Release|Any CPU | ||||
| 		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.ReleaseNoNet|Mixed Platforms.ActiveCfg = Release|Any CPU | ||||
| 		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.ReleaseNoNet|Mixed Platforms.Build.0 = Release|Any CPU | ||||
| 		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU | ||||
| 		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU | ||||
| 		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||
| 		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||
| 		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Debug|Any CPU.Deploy.0 = Debug|Any CPU | ||||
| 		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU | ||||
| 		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU | ||||
| 		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Debug|Mixed Platforms.Deploy.0 = Debug|Any CPU | ||||
| 		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Debug|Win32.ActiveCfg = Debug|Any CPU | ||||
| 		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Debug|x64.ActiveCfg = Debug|Any CPU | ||||
| 		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||
| 		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Release|Any CPU.Build.0 = Release|Any CPU | ||||
| 		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Release|Any CPU.Deploy.0 = Release|Any CPU | ||||
| 		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU | ||||
| 		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Release|Mixed Platforms.Build.0 = Release|Any CPU | ||||
| 		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Release|Mixed Platforms.Deploy.0 = Release|Any CPU | ||||
| 		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Release|Win32.ActiveCfg = Release|Any CPU | ||||
| 		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Release|x64.ActiveCfg = Release|Any CPU | ||||
| 		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.ReleaseNoNet|Any CPU.ActiveCfg = Release|Any CPU | ||||
| 		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.ReleaseNoNet|Any CPU.Build.0 = Release|Any CPU | ||||
| 		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.ReleaseNoNet|Any CPU.Deploy.0 = Release|Any CPU | ||||
| 		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.ReleaseNoNet|Mixed Platforms.ActiveCfg = Release|Any CPU | ||||
| 		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.ReleaseNoNet|Mixed Platforms.Build.0 = Release|Any CPU | ||||
| 		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.ReleaseNoNet|Mixed Platforms.Deploy.0 = Release|Any CPU | ||||
| 		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU | ||||
| 		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU | ||||
| 	EndGlobalSection | ||||
| 	GlobalSection(SolutionProperties) = preSolution | ||||
| 		HideSolutionNode = FALSE | ||||
| 	EndGlobalSection | ||||
| 	GlobalSection(MonoDevelopProperties) = preSolution | ||||
| 		StartupItem = keepass2android\keepass2android.csproj | ||||
| 		Policies = $0 | ||||
| 		$0.DotNetNamingPolicy = $1 | ||||
| 		$1.DirectoryNamespaceAssociation = None | ||||
| 		$1.ResourceNamePolicy = FileFormatDefault | ||||
| 		$0.TextStylePolicy = $5 | ||||
| 		$2.FileWidth = 120 | ||||
| 		$2.TabsToSpaces = False | ||||
| 		$2.inheritsSet = VisualStudio | ||||
| 		$2.inheritsScope = text/plain | ||||
| 		$2.scope = text/x-csharp | ||||
| 		$0.CSharpFormattingPolicy = $3 | ||||
| 		$3.IndentSwitchBody = True | ||||
| 		$3.AnonymousMethodBraceStyle = NextLine | ||||
| 		$3.PropertyBraceStyle = NextLine | ||||
| 		$3.PropertyGetBraceStyle = NextLine | ||||
| 		$3.PropertySetBraceStyle = NextLine | ||||
| 		$3.EventBraceStyle = NextLine | ||||
| 		$3.EventAddBraceStyle = NextLine | ||||
| 		$3.EventRemoveBraceStyle = NextLine | ||||
| 		$3.StatementBraceStyle = NextLine | ||||
| 		$3.ArrayInitializerBraceStyle = NextLine | ||||
| 		$3.BeforeMethodDeclarationParentheses = False | ||||
| 		$3.BeforeMethodCallParentheses = False | ||||
| 		$3.BeforeConstructorDeclarationParentheses = False | ||||
| 		$3.BeforeDelegateDeclarationParentheses = False | ||||
| 		$3.NewParentheses = False | ||||
| 		$3.inheritsSet = Mono | ||||
| 		$3.inheritsScope = text/x-csharp | ||||
| 		$3.scope = text/x-csharp | ||||
| 		$4.FileWidth = 120 | ||||
| 		$4.TabsToSpaces = False | ||||
| 		$4.inheritsSet = VisualStudio | ||||
| 		$4.inheritsScope = text/plain | ||||
| 		$4.scope = text/plain | ||||
| 		$5.inheritsSet = null | ||||
| 		$5.scope = application/xml | ||||
| 		$0.XmlFormattingPolicy = $6 | ||||
| 		$6.inheritsSet = Mono | ||||
| 		$6.inheritsScope = application/xml | ||||
| 		$6.scope = application/xml | ||||
| 		$0.StandardHeader = $7 | ||||
| 		$7.Text = @/*\nThis file is part of Keepass2Android, Copyright 2013 Philipp Crocoll.\n\n  Keepass2Android is free software: you can redistribute it and/or modify\n  it under the terms of the GNU General Public License as published by\n  the Free Software Foundation, either version 2 of the License, or\n  (at your option) any later version.\n\n  Keepass2Android is distributed in the hope that it will be useful,\n  but WITHOUT ANY WARRANTY; without even the implied warranty of\n  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n  GNU General Public License for more details.\n\n  You should have received a copy of the GNU General Public License\n  along with Keepass2Android.  If not, see <http://www.gnu.org/licenses/>.\n  */\n | ||||
| 		$7.IncludeInNewFiles = True | ||||
| 	EndGlobalSection | ||||
| EndGlobal | ||||
							
								
								
									
										
											BIN
										
									
								
								src/keepass2android/Resources/drawable-hdpi/ic_launcher_red.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 2.6 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/keepass2android/Resources/drawable-mdpi/ic_launcher_red.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.6 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/keepass2android/Resources/drawable-v11/ic_unlocked_gray.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.9 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/keepass2android/Resources/drawable-xhdpi/ic_launcher_red.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 3.2 KiB | 
| After Width: | Height: | Size: 5.3 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/keepass2android/Resources/drawable/ic_launcher_red.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.6 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/keepass2android/Resources/drawable/ic_unlocked_gray.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.5 KiB | 
							
								
								
									
										227
									
								
								src/keepass2android/services/Keepass2AndroidService.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,227 @@ | ||||
| /* | ||||
| This file is part of Keepass2Android, Copyright 2013 Philipp Crocoll. This file is based on Keepassdroid, Copyright Brian Pellin. | ||||
|  | ||||
|   Keepass2Android is free software: you can redistribute it and/or modify | ||||
|   it under the terms of the GNU General Public License as published by | ||||
|   the Free Software Foundation, either version 2 of the License, or | ||||
|   (at your option) any later version. | ||||
|  | ||||
|   Keepass2Android is distributed in the hope that it will be useful, | ||||
|   but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|   GNU General Public License for more details. | ||||
|  | ||||
|   You should have received a copy of the GNU General Public License | ||||
|   along with Keepass2Android.  If not, see <http://www.gnu.org/licenses/>. | ||||
|   */ | ||||
|  | ||||
| using System; | ||||
| using Android.App; | ||||
| using Android.Content; | ||||
| using Android.Graphics; | ||||
| using Android.OS; | ||||
| using Android.Preferences; | ||||
| using Android.Support.V4.App; | ||||
| using KeePassLib.Utility; | ||||
|  | ||||
| namespace keepass2android | ||||
| { | ||||
| 	/// <summary> | ||||
| 	/// General purpose service for Keepass2Android | ||||
| 	///  | ||||
| 	/// Manages timeout to lock the database after some idle time | ||||
| 	/// Shows database unlocked warning persistent notification | ||||
| 	/// Shows Quick-Unlock notification | ||||
| 	/// </summary> | ||||
| 	[Service] | ||||
| 	public class Keepass2AndroidService : Service { | ||||
| 		 | ||||
| 		#region Service | ||||
| 		private const int ServiceId = 238787; | ||||
|  | ||||
| 		private BroadcastReceiver _intentReceiver; | ||||
|  | ||||
| 		public override void OnCreate() { | ||||
| 			base.OnCreate(); | ||||
| 			 | ||||
| 			_intentReceiver = new Keepass2AndroidServiceBroadcastReceiver(this); | ||||
|  | ||||
| 			IntentFilter filter = new IntentFilter(); | ||||
| 			filter.AddAction(Intents.Timeout); | ||||
| 			filter.AddAction(Intents.LockDatabase); | ||||
| 			filter.AddAction(Intents.UnlockDatabase); | ||||
| 			RegisterReceiver(_intentReceiver, filter); | ||||
| 			 | ||||
| 		} | ||||
|  | ||||
| 		public override StartCommandResult OnStartCommand(Intent intent, StartCommandFlags flags, int startId) | ||||
| 		{ | ||||
| 			Kp2aLog.Log("Starting Keepass2AndroidService"); | ||||
|  | ||||
| 			var prefs = PreferenceManager.GetDefaultSharedPreferences(this); | ||||
|  | ||||
| 			Notification notification = null; | ||||
| 			 | ||||
| 			if (prefs.GetBoolean(GetString(Resource.String.ShowUnlockedNotification_key), Resources.GetBoolean(Resource.Boolean.ShowUnlockedNotification_default)) | ||||
| 				&& App.Kp2a.DatabaseIsUnlocked) | ||||
| 			{ | ||||
| 				// Show the Unlocked icon | ||||
| 				notification = GetUnlockedNotification(); | ||||
|  | ||||
| 			} | ||||
| 			else if (App.Kp2a.QuickUnlockEnabled) | ||||
| 			{ | ||||
| 				// Show the Quick Unlock icon | ||||
| 				notification = GetQuickUnlockNotification(); | ||||
| 			} | ||||
| 			 | ||||
| 			if (notification != null) | ||||
| 			{ | ||||
| 				if (App.Kp2a.QuickUnlockEnabled) | ||||
| 				{ | ||||
| 					StartForeground(ServiceId, notification); | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					// Doesn't actually need to be persistent in memory, allow it to be killed as required | ||||
| 					var notificationManager = (NotificationManager)GetSystemService(NotificationService); | ||||
| 					notificationManager.Notify(ServiceId, notification); | ||||
| 				} | ||||
| 			} | ||||
|  | ||||
| 			return StartCommandResult.NotSticky; | ||||
| 		} | ||||
|  | ||||
| 		public override void OnDestroy() | ||||
| 		{ | ||||
| 			base.OnDestroy(); | ||||
|  | ||||
| 			var notificationManager = (NotificationManager)GetSystemService(NotificationService); | ||||
| 			notificationManager.Cancel(ServiceId); | ||||
|  | ||||
| 			Kp2aLog.Log("Destroying Keepass2AndroidService"); | ||||
| 			UnregisterReceiver(_intentReceiver); | ||||
|  | ||||
| 			// The service will be stopped deliberately to cause the database to lock. | ||||
| 			// If the service is killed, then also lock the database immediately (as timeout will no longer work, and the unlocked warning icon will no longer display) | ||||
| 			Application.Context.SendBroadcast(new Intent(Intents.LockDatabase)); // Ensure all other listeners receive the Lock broadcast | ||||
| 			App.Kp2a.LockDatabaseInternal(this);  | ||||
| 		} | ||||
| 		 | ||||
| 		public override IBinder OnBind(Intent intent) | ||||
| 		{ | ||||
| 			return null; | ||||
| 		} | ||||
| 		#endregion | ||||
|  | ||||
| 		#region Timeout | ||||
| 		private void Timeout() | ||||
| 		{ | ||||
| 			Kp2aLog.Log("Timeout"); | ||||
| 			StopSelf(); | ||||
| 		} | ||||
| 		#endregion | ||||
|  | ||||
| 		#region QuickUnlock | ||||
|  | ||||
| 		private Notification GetQuickUnlockNotification() | ||||
| 		{ | ||||
| 			NotificationCompat.Builder builder =  | ||||
| 				new NotificationCompat.Builder(this) | ||||
| 					.SetSmallIcon(Resource.Drawable.ic_launcher_gray) | ||||
| 					.SetLargeIcon(BitmapFactory.DecodeResource(Resources, AppNames.LauncherIcon)) | ||||
| 					.SetContentTitle(GetText(Resource.String.app_name)) | ||||
| 					.SetContentText(GetString(Resource.String.database_loaded_quickunlock_enabled, GetDatabaseName())); | ||||
|  | ||||
| 			Intent startKp2aIntent = new Intent(this, typeof(KeePass)); | ||||
| 			startKp2aIntent.SetAction(Intent.ActionMain); | ||||
| 			startKp2aIntent.AddCategory(Intent.CategoryLauncher); | ||||
|  | ||||
| 			PendingIntent startKp2APendingIntent = | ||||
| 				PendingIntent.GetActivity(this, 0, startKp2aIntent, PendingIntentFlags.UpdateCurrent); | ||||
| 			builder.SetContentIntent(startKp2APendingIntent); | ||||
|  | ||||
| 			return builder.Build(); | ||||
| 		} | ||||
| 		#endregion | ||||
|  | ||||
| 		#region Unlocked Warning | ||||
| 		private Notification GetUnlockedNotification() | ||||
| 		{ | ||||
| 			NotificationCompat.Builder builder = | ||||
| 				new NotificationCompat.Builder(this) | ||||
| 					.SetOngoing(true) | ||||
| 					.SetSmallIcon(Resource.Drawable.ic_unlocked_gray) | ||||
| 					.SetLargeIcon(BitmapFactory.DecodeResource(Resources, Resource.Drawable.ic_launcher_red)) | ||||
| 					.SetContentTitle(GetText(Resource.String.app_name)) | ||||
| 					.SetContentText(GetString(Resource.String.database_loaded_unlocked, GetDatabaseName())); | ||||
|  | ||||
| 			builder.SetContentIntent(PendingIntent.GetBroadcast(this, 0, new Intent(Intents.LockDatabase), PendingIntentFlags.UpdateCurrent)); | ||||
|  | ||||
| 			return builder.Build(); | ||||
| 		} | ||||
|  | ||||
| 		private static string GetDatabaseName() | ||||
| 		{ | ||||
| 			var db = App.Kp2a.GetDb().KpDatabase; | ||||
| 			var name = db.Name; | ||||
| 			if (String.IsNullOrEmpty(name)) | ||||
| 			{ | ||||
| 				name = UrlUtil.StripExtension(UrlUtil.GetFileName(db.IOConnectionInfo.Path)); | ||||
| 			} | ||||
|  | ||||
| 			return name; | ||||
| 		} | ||||
|  | ||||
| 		private void LockDatabase() | ||||
| 		{ | ||||
| 			Kp2aLog.Log("LockDatabase"); | ||||
| 			StopSelf(); | ||||
| 		} | ||||
|  | ||||
| 		private void UnlockDatabase() | ||||
| 		{ | ||||
| 			Kp2aLog.Log("UnlockDatabase"); | ||||
|  | ||||
| 			// Replace the QuickLock icon with the Unlocked icon. QuickLockEnabled must be true, so we need a foreground service to prevent being killed | ||||
| 			StartForeground(ServiceId, GetUnlockedNotification()); | ||||
|  | ||||
| 			App.Kp2a.UnlockDatabaseInternal(this); | ||||
| 		} | ||||
| 		#endregion | ||||
|  | ||||
| 		[BroadcastReceiver] | ||||
| 		private class Keepass2AndroidServiceBroadcastReceiver: BroadcastReceiver | ||||
| 		{ | ||||
| 			public Keepass2AndroidServiceBroadcastReceiver() | ||||
| 			{ | ||||
| 				//dummy constructor required for MonoForAndroid, not called. | ||||
| 				throw new NotImplementedException(); | ||||
| 			} | ||||
|  | ||||
| 			readonly Keepass2AndroidService _service; | ||||
| 			public Keepass2AndroidServiceBroadcastReceiver(Keepass2AndroidService service) | ||||
| 			{ | ||||
| 				_service = service; | ||||
| 			} | ||||
|  | ||||
| 			public override void OnReceive(Context context, Intent intent) | ||||
| 			{ | ||||
| 				switch (intent.Action) | ||||
| 				{ | ||||
| 					case Intents.Timeout: | ||||
| 						_service.Timeout(); | ||||
| 						break; | ||||
| 					case Intents.LockDatabase: | ||||
| 						_service.LockDatabase(); | ||||
| 						break; | ||||
| 					case Intents.UnlockDatabase: | ||||
| 						_service.UnlockDatabase(); | ||||
| 						break; | ||||
|  | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | ||||
 AlexVallat
					AlexVallat