More refactoring
Added first simple unit test
This commit is contained in:
		| @@ -15,21 +15,14 @@ This file is part of Keepass2Android, Copyright 2013 Philipp Crocoll. | ||||
|   along with Keepass2Android.  If not, see <http://www.gnu.org/licenses/>. | ||||
|   */ | ||||
|  | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Linq; | ||||
| using System.Text; | ||||
|  | ||||
| using Android.App; | ||||
| using Android.Content; | ||||
| using Android.OS; | ||||
| using Android.Runtime; | ||||
| using Android.Views; | ||||
| using Android.Widget; | ||||
| using KeePassLib; | ||||
|  | ||||
| namespace keepass2android | ||||
| { | ||||
| 	/// <summary> | ||||
| 	/// EqualityComparer implementation to compare PwGroups based on their Id | ||||
| 	/// </summary> | ||||
| 	class PwGroupEqualityFromIdComparer: IEqualityComparer<PwGroup> | ||||
| 	{ | ||||
| 		#region IEqualityComparer implementation			 | ||||
|   | ||||
| @@ -15,22 +15,14 @@ This file is part of Keepass2Android, Copyright 2013 Philipp Crocoll. | ||||
|   along with Keepass2Android.  If not, see <http://www.gnu.org/licenses/>. | ||||
|   */ | ||||
|  | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Linq; | ||||
| using System.Text; | ||||
|  | ||||
| using Android.App; | ||||
| using Android.Content; | ||||
| using Android.OS; | ||||
| using Android.Runtime; | ||||
| using Android.Views; | ||||
| using Android.Widget; | ||||
|  | ||||
| using KeePassLib; | ||||
|  | ||||
| namespace keepass2android | ||||
| { | ||||
| 	/// <summary> | ||||
| 	/// EqualityComparer for PwUuid based on their value (instead of reference) | ||||
| 	/// </summary> | ||||
| 	public class PwUuidEqualityComparer: IEqualityComparer<PwUuid> | ||||
| 	{ | ||||
| 		#region IEqualityComparer implementation			 | ||||
|   | ||||
| @@ -1,5 +1,11 @@ | ||||
| namespace keepass2android | ||||
| { | ||||
| 	/// <summary> | ||||
| 	/// Keys to identify user-displayable strings. | ||||
| 	/// </summary> | ||||
| 	/// Do not rename the keys here unless you rename the corresponding keys in the resource file of KP2A. | ||||
| 	/// The keys are resolved by reflection to the static Resource class. This kind of duplication is necessary  | ||||
| 	/// in order to use the Resource mechanism of Android but still decouple the logic layer from the UI. | ||||
|     public enum UiStringKey | ||||
|     { | ||||
|         AskDeletePermanentlyGroup, | ||||
|   | ||||
| @@ -139,7 +139,7 @@ namespace keepass2android | ||||
| 		} | ||||
| 		 | ||||
| 		public PwGroup SearchForText(String str) { | ||||
| 			PwGroup group = SearchHelper.searchForText(this, str); | ||||
| 			PwGroup group = SearchHelper.SearchForText(this, str); | ||||
| 			 | ||||
| 			return group; | ||||
| 			 | ||||
| @@ -147,19 +147,19 @@ namespace keepass2android | ||||
|  | ||||
| 		public PwGroup Search(SearchParameters searchParams) | ||||
| 		{ | ||||
| 			return SearchHelper.search(this, searchParams); | ||||
| 			return SearchHelper.Search(this, searchParams); | ||||
| 		} | ||||
|  | ||||
| 		 | ||||
| 		public PwGroup SearchForExactUrl(String url) { | ||||
| 			PwGroup group = SearchHelper.searchForExactUrl(this, url); | ||||
| 			PwGroup group = SearchHelper.SearchForExactUrl(this, url); | ||||
| 			 | ||||
| 			return group; | ||||
| 			 | ||||
| 		} | ||||
|  | ||||
| 		public PwGroup SearchForHost(String url, bool allowSubdomains) { | ||||
| 			PwGroup group = SearchHelper.searchForHost(this, url, allowSubdomains); | ||||
| 			PwGroup group = SearchHelper.SearchForHost(this, url, allowSubdomains); | ||||
| 			 | ||||
| 			return group; | ||||
| 			 | ||||
|   | ||||
| @@ -110,12 +110,12 @@ namespace keepass2android | ||||
| 	                    { | ||||
| 		                    DeletePermanently = true; | ||||
| 		                    ProgressTask pt = new ProgressTask(App, Ctx, this, UiStringKey.saving_database); | ||||
| 		                    pt.run(); | ||||
| 		                    pt.Run(); | ||||
| 	                    }, | ||||
|                 (dlgSender, dlgEvt) => {	 | ||||
| 	                                       DeletePermanently = false; | ||||
| 	                                       ProgressTask pt = new ProgressTask(App, Ctx, this, UiStringKey.saving_database); | ||||
| 	                                       pt.run(); | ||||
| 	                                       pt.Run(); | ||||
|                 }, | ||||
|                 (dlgSender, dlgEvt) => {}, | ||||
|                 Ctx); | ||||
| @@ -125,7 +125,7 @@ namespace keepass2android | ||||
| 			} else | ||||
| 			{ | ||||
| 				ProgressTask pt = new ProgressTask(App, Ctx, this, UiStringKey.saving_database); | ||||
| 				pt.run(); | ||||
| 				pt.Run(); | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
|   | ||||
| @@ -77,7 +77,7 @@ namespace keepass2android | ||||
| 		private class AfterSave : OnFinish { | ||||
| 			private readonly CompositeKey _backup; | ||||
| 			private readonly DateTime _previousKeyChanged; | ||||
| 			private PwDatabase _db; | ||||
| 			private readonly PwDatabase _db; | ||||
| 			 | ||||
| 			public AfterSave(CompositeKey backup, DateTime previousKeyChanged, PwDatabase db, OnFinish finish): base(finish) { | ||||
| 				_previousKeyChanged = previousKeyChanged; | ||||
|   | ||||
| @@ -46,6 +46,8 @@ | ||||
|     <Reference Include="System.Xml" /> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <Compile Include="TestDrawableFactory.cs" /> | ||||
|     <Compile Include="TestCreateDb.cs" /> | ||||
|     <Compile Include="MainActivity.cs" /> | ||||
|     <Compile Include="Resources\Resource.Designer.cs" /> | ||||
|     <Compile Include="Properties\AssemblyInfo.cs" /> | ||||
| @@ -64,6 +66,14 @@ | ||||
|     <AndroidResource Include="Resources\Drawable\Icon.png" /> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ProjectReference Include="..\KeePassLib2Android\KeePassLib2Android.csproj"> | ||||
|       <Project>{545B4A6B-8BBA-4FBE-92FC-4AC060122A54}</Project> | ||||
|       <Name>KeePassLib2Android</Name> | ||||
|     </ProjectReference> | ||||
|     <ProjectReference Include="..\Kp2aBusinessLogic\Kp2aBusinessLogic.csproj"> | ||||
|       <Project>{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}</Project> | ||||
|       <Name>Kp2aBusinessLogic</Name> | ||||
|     </ProjectReference> | ||||
|     <ProjectReference Include="..\monodroid-unittesting\MonoDroidUnitTesting\MonoDroidUnitTesting.csproj"> | ||||
|       <Project>{a5f8fb02-00e0-4335-91ef-aeaa2c2f3c48}</Project> | ||||
|       <Name>MonoDroidUnitTesting</Name> | ||||
|   | ||||
							
								
								
									
										4
									
								
								src/Kp2aUnitTests/Resources/Resource.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								src/Kp2aUnitTests/Resources/Resource.Designer.cs
									
									
									
										generated
									
									
									
								
							| @@ -26,6 +26,7 @@ namespace Kp2aUnitTests | ||||
| 		 | ||||
| 		public static void UpdateIdValues() | ||||
| 		{ | ||||
| 			KeePassLib2Android.Resource.String.library_name = Kp2aUnitTests.Resource.String.library_name; | ||||
| 		} | ||||
| 		 | ||||
| 		public partial class Attribute | ||||
| @@ -98,6 +99,9 @@ namespace Kp2aUnitTests | ||||
| 			// aapt resource value: 0x7f040000 | ||||
| 			public const int Hello = 2130968576; | ||||
| 			 | ||||
| 			// aapt resource value: 0x7f040002 | ||||
| 			public const int library_name = 2130968578; | ||||
| 			 | ||||
| 			static String() | ||||
| 			{ | ||||
| 				global::Android.Runtime.ResourceIdManager.UpdateIdValues(); | ||||
|   | ||||
							
								
								
									
										51
									
								
								src/Kp2aUnitTests/TestCreateDb.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								src/Kp2aUnitTests/TestCreateDb.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,51 @@ | ||||
| using System.Collections.Generic; | ||||
| using System.Linq; | ||||
| using System.Text; | ||||
| using Android.App; | ||||
| using Java.IO; | ||||
| using KeePassLib; | ||||
| using KeePassLib.Keys; | ||||
| using KeePassLib.Serialization; | ||||
| using Microsoft.VisualStudio.TestTools.UnitTesting; | ||||
| using keepass2android; | ||||
|  | ||||
| namespace Kp2aUnitTests | ||||
| { | ||||
| 	[TestClass] | ||||
| 	class TestCreateDb | ||||
| 	{ | ||||
| 		[TestMethod] | ||||
| 		public void CreateAndSaveLocal() | ||||
| 		{ | ||||
| 			IKp2aApp app = new TestKp2aApp(); | ||||
| 			IOConnectionInfo ioc = new IOConnectionInfo {Path = "/mnt/sdcard/kp2atest/savetest.kdbx"}; | ||||
|  | ||||
| 			File outputDir = new File("/mnt/sdcard/kp2atest/"); | ||||
| 			outputDir.Mkdirs(); | ||||
| 			File targetFile = new File(ioc.Path); | ||||
| 			if (targetFile.Exists()) | ||||
| 				targetFile.Delete(); | ||||
|  | ||||
| 			bool createSuccesful = false; | ||||
| 			//create the task: | ||||
| 			CreateDb createDb = new CreateDb(app, Application.Context, ioc, new ActionOnFinish((success, message) => | ||||
| 				{ createSuccesful = success; if (!success)  | ||||
| 					Assert.Fail(message); | ||||
| 				}), false); | ||||
| 			//run it: | ||||
| 			createDb.Run(); | ||||
| 			//check expectations: | ||||
| 			Assert.IsTrue(createSuccesful); | ||||
| 			Assert.IsNotNull(app.GetDb()); | ||||
| 			Assert.IsNotNull(app.GetDb().KpDatabase); | ||||
| 			//the create task should create two groups: | ||||
| 			Assert.AreEqual(2, app.GetDb().KpDatabase.RootGroup.Groups.Count()); | ||||
|  | ||||
| 			//ensure the the database can be loaded from file: | ||||
| 			PwDatabase loadedDb = new PwDatabase(); | ||||
| 			loadedDb.Open(ioc, new CompositeKey(), null); | ||||
|  | ||||
| 			 | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										27
									
								
								src/Kp2aUnitTests/TestDrawableFactory.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								src/Kp2aUnitTests/TestDrawableFactory.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | ||||
| using System; | ||||
| using Android.Content.Res; | ||||
| using Android.Graphics.Drawables; | ||||
| using Android.Widget; | ||||
| using KeePassLib; | ||||
| using keepass2android; | ||||
|  | ||||
| namespace Kp2aUnitTests | ||||
| { | ||||
| 	internal class TestDrawableFactory : IDrawableFactory | ||||
| 	{ | ||||
| 		public void AssignDrawableTo(ImageView iv, Resources res, PwDatabase db, PwIcon icon, PwUuid customIconId) | ||||
| 		{ | ||||
| 			 | ||||
| 		} | ||||
|  | ||||
| 		public Drawable GetIconDrawable(Resources res, PwDatabase db, PwIcon icon, PwUuid customIconId) | ||||
| 		{ | ||||
| 			return res.GetDrawable(Resource.Drawable.Icon); | ||||
| 		} | ||||
|  | ||||
| 		public void Clear() | ||||
| 		{ | ||||
| 			 | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										54
									
								
								src/Kp2aUnitTests/TestKp2aApp.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								src/Kp2aUnitTests/TestKp2aApp.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,54 @@ | ||||
| using System; | ||||
| using Android.Content; | ||||
| using KeePassLib.Serialization; | ||||
| using keepass2android; | ||||
|  | ||||
| namespace Kp2aUnitTests | ||||
| { | ||||
| 	/// <summary> | ||||
| 	/// Very simple implementation of the Kp2aApp interface to be used in tests | ||||
| 	/// </summary> | ||||
| 	internal class TestKp2aApp : IKp2aApp | ||||
| 	{ | ||||
| 		private Database _db; | ||||
|  | ||||
| 		public void SetShutdown() | ||||
| 		{ | ||||
| 			 | ||||
| 		} | ||||
|  | ||||
| 		public Database GetDb() | ||||
| 		{ | ||||
| 			return _db; | ||||
| 		} | ||||
|  | ||||
| 		public void StoreOpenedFileAsRecent(IOConnectionInfo ioc, string keyfile) | ||||
| 		{ | ||||
| 			 | ||||
| 		} | ||||
|  | ||||
| 		public Database CreateNewDatabase() | ||||
| 		{ | ||||
| 			TestDrawableFactory testDrawableFactory = new TestDrawableFactory(); | ||||
| 			_db = new Database(testDrawableFactory, new TestKp2aApp()); | ||||
| 			return _db; | ||||
|  | ||||
| 		} | ||||
|  | ||||
| 		public string GetResourceString(UiStringKey stringKey) | ||||
| 		{ | ||||
| 			return stringKey.ToString(); | ||||
| 		} | ||||
|  | ||||
| 		public bool GetBooleanPreference(PreferenceKey key) | ||||
| 		{ | ||||
| 			return true; | ||||
| 		} | ||||
|  | ||||
| 		public void AskYesNoCancel(UiStringKey titleKey, UiStringKey messageKey, EventHandler<DialogClickEventArgs> yesHandler, EventHandler<DialogClickEventArgs> noHandler, | ||||
| 		                           EventHandler<DialogClickEventArgs> cancelHandler, Context ctx) | ||||
| 		{ | ||||
| 			yesHandler(null, null); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| @@ -125,7 +125,7 @@ namespace keepass2android | ||||
| 				RequiresRefresh(); | ||||
| 				UpdateEntry update = new UpdateEntry(this, App.Kp2a.GetDb(), backupEntry, Entry, null); | ||||
|                 ProgressTask pt = new ProgressTask(App.Kp2a, this, update, UiStringKey.saving_database); | ||||
| 				pt.run(); | ||||
| 				pt.Run(); | ||||
| 			} | ||||
| 			FillData(false); | ||||
| 			 | ||||
| @@ -371,7 +371,7 @@ namespace keepass2android | ||||
| 			ImageView iv = (ImageView)FindViewById(Resource.Id.entry_icon); | ||||
| 			if (iv != null) | ||||
| 			{ | ||||
| 			App.Kp2a.GetDb().DrawableFactory.assignDrawableTo(iv, Resources, App.Kp2a.GetDb().KpDatabase, Entry.IconId, Entry.CustomIconUuid); | ||||
| 			App.Kp2a.GetDb().DrawableFactory.AssignDrawableTo(iv, Resources, App.Kp2a.GetDb().KpDatabase, Entry.IconId, Entry.CustomIconUuid); | ||||
| 			} | ||||
| 			 | ||||
| 			//populateText(Resource.Id.entry_title, _entry.Strings.ReadSafe(PwDefs.TitleField)); | ||||
|   | ||||
| @@ -388,7 +388,7 @@ namespace keepass2android | ||||
| 				runnable = new UpdateEntry(this, App.Kp2a.GetDb(), initialEntry, newEntry, closeOrShowError); | ||||
| 			} | ||||
|             ProgressTask pt = new ProgressTask(App.Kp2a, act, runnable, UiStringKey.saving_database); | ||||
| 			pt.run(); | ||||
| 			pt.Run(); | ||||
| 			 | ||||
|  | ||||
| 		} | ||||
| @@ -796,7 +796,7 @@ namespace keepass2android | ||||
| 		 | ||||
| 		private void FillData() { | ||||
| 			ImageButton currIconButton = (ImageButton) FindViewById(Resource.Id.icon_button); | ||||
| 			App.Kp2a.GetDb().DrawableFactory.assignDrawableTo(currIconButton, Resources, App.Kp2a.GetDb().KpDatabase, State.Entry.IconId, State.Entry.CustomIconUuid); | ||||
| 			App.Kp2a.GetDb().DrawableFactory.AssignDrawableTo(currIconButton, Resources, App.Kp2a.GetDb().KpDatabase, State.Entry.IconId, State.Entry.CustomIconUuid); | ||||
| 			 | ||||
| 			PopulateText(Resource.Id.entry_title, State.Entry.Strings.ReadSafe (PwDefs.TitleField)); | ||||
| 			PopulateText(Resource.Id.entry_user_name, State.Entry.Strings.ReadSafe (PwDefs.UserNameField)); | ||||
|   | ||||
| @@ -179,7 +179,7 @@ namespace keepass2android | ||||
| 				Handler handler = new Handler(); | ||||
| 				AddGroup task = AddGroup.GetInstance(this, App.Kp2a.GetDb(), groupName, groupIconId, Group, new RefreshTask(handler, this), false); | ||||
|                 ProgressTask pt = new ProgressTask(App.Kp2a, act, task, UiStringKey.saving_database); | ||||
| 				pt.run(); | ||||
| 				pt.Run(); | ||||
| 				break; | ||||
| 				 | ||||
| 			case Result.Canceled: | ||||
|   | ||||
| @@ -21,8 +21,10 @@ using Android.OS; | ||||
| using Android.Runtime; | ||||
|  | ||||
| namespace keepass2android | ||||
| { | ||||
| 	 | ||||
| {	 | ||||
| 	/// <summary> | ||||
| 	/// Base class for list activities. Notifies the TimeoutHelper whether the app is active or not. | ||||
| 	/// </summary> | ||||
| 	public class LockingListActivity : ListActivity { | ||||
|  | ||||
| 		 | ||||
|   | ||||
| @@ -73,7 +73,7 @@ namespace keepass2android | ||||
| 				 | ||||
| 				SetPassword sp = new SetPassword(Context, App.Kp2a.GetDb(), pass, keyfile, new AfterSave(this, _finish, new Handler())); | ||||
| 				ProgressTask pt = new ProgressTask(App.Kp2a, Context, sp, UiStringKey.saving_database); | ||||
| 				pt.run(); | ||||
| 				pt.Run(); | ||||
| 			}; | ||||
| 				 | ||||
|  | ||||
|   | ||||
| @@ -47,7 +47,9 @@ namespace keepass2android | ||||
| 		public const string PackagePart = "keepass2android"; | ||||
| 	} | ||||
| #endif | ||||
|  | ||||
| 	/// <summary> | ||||
| 	/// Main implementation of the IKp2aApp interface for usage in the real app. | ||||
| 	/// </summary> | ||||
|     public class Kp2aApp: IKp2aApp | ||||
|     { | ||||
|         public bool IsShutdown() | ||||
|   | ||||
| @@ -162,13 +162,12 @@ namespace keepass2android | ||||
| 					return; | ||||
| 				} | ||||
| 				 | ||||
| 				// Prep an object to collect a password once the database has | ||||
| 				// been created | ||||
| 				CollectPassword password = new CollectPassword( | ||||
| 				// Prep an object to collect a password once the database has been created | ||||
| 				CollectPassword collectPassword = new CollectPassword( | ||||
| 					new LaunchGroupActivity(IOConnectionInfo.FromPath(filename), this), this); | ||||
| 				 | ||||
| 				// Create the new database | ||||
| 				CreateDb create = new CreateDb(App.Kp2a, this, IOConnectionInfo.FromPath(filename), password, true); | ||||
| 				CreateDb create = new CreateDb(App.Kp2a, this, IOConnectionInfo.FromPath(filename), collectPassword, true); | ||||
| 				ProgressTask createTask = new ProgressTask( | ||||
|                     App.Kp2a, | ||||
| 					this, create, | ||||
|   | ||||
| @@ -99,8 +99,8 @@ namespace keepass2android | ||||
| 				} | ||||
| 					 | ||||
| 				bitmap = resize (bitmap); | ||||
| 					 | ||||
| 				draw = BitmapDrawableCompat.GetBitmapDrawable (res, bitmap); | ||||
|  | ||||
| 				draw = new BitmapDrawable(res, bitmap); | ||||
| 				_customIconMap[icon] = draw; | ||||
| 			} | ||||
| 				 | ||||
|   | ||||
| @@ -86,11 +86,9 @@ | ||||
|     <Compile Include="fileselect\FileSelectActivity.cs" /> | ||||
|     <Compile Include="fileselect\FileDbHelper.cs" /> | ||||
|     <Compile Include="Utils\Util.cs" /> | ||||
|     <Compile Include="Utils\Interaction.cs" /> | ||||
|     <Compile Include="intents\Intents.cs" /> | ||||
|     <Compile Include="fileselect\BrowserDialog.cs" /> | ||||
|     <Compile Include="timeout\TimeoutHelper.cs" /> | ||||
|     <Compile Include="timers\Timeout.cs" /> | ||||
|     <Compile Include="GroupActivity.cs" /> | ||||
|     <Compile Include="GroupBaseActivity.cs" /> | ||||
|     <Compile Include="LockCloseListActivity.cs" /> | ||||
| @@ -104,7 +102,6 @@ | ||||
|     <Compile Include="settings\PrefsUtil.cs" /> | ||||
|     <Compile Include="views\PwEntryView.cs" /> | ||||
|     <Compile Include="views\GroupHeaderView.cs" /> | ||||
|     <Compile Include="BitmapDrawableCompat.cs" /> | ||||
|     <Compile Include="GroupEditActivity.cs" /> | ||||
|     <Compile Include="EntryEditActivity.cs" /> | ||||
|     <Compile Include="LockCloseActivity.cs" /> | ||||
|   | ||||
| @@ -19,6 +19,7 @@ using System; | ||||
| using Android.App; | ||||
| using Android.Content; | ||||
| using Android.Preferences; | ||||
| using Android.Util; | ||||
| using KeePassLib.Serialization; | ||||
|  | ||||
| namespace keepass2android | ||||
|   | ||||
| @@ -81,10 +81,10 @@ namespace keepass2android.view | ||||
| 			bool isExpired = pw.Expires && pw.ExpiryTime < DateTime.Now; | ||||
| 			if (isExpired) | ||||
| 			{ | ||||
| 				App.Kp2a.GetDb().DrawableFactory.assignDrawableTo(iv, Resources, App.Kp2a.GetDb().KpDatabase, PwIcon.Expired, PwUuid.Zero); | ||||
| 				App.Kp2a.GetDb().DrawableFactory.AssignDrawableTo(iv, Resources, App.Kp2a.GetDb().KpDatabase, PwIcon.Expired, PwUuid.Zero); | ||||
| 			} else | ||||
| 			{ | ||||
| 				App.Kp2a.GetDb().DrawableFactory.assignDrawableTo(iv, Resources, App.Kp2a.GetDb().KpDatabase, pw.IconId, pw.CustomIconUuid); | ||||
| 				App.Kp2a.GetDb().DrawableFactory.AssignDrawableTo(iv, Resources, App.Kp2a.GetDb().KpDatabase, pw.IconId, pw.CustomIconUuid); | ||||
| 			} | ||||
|  | ||||
| 			String title = pw.Strings.ReadSafe(PwDefs.TitleField); | ||||
|   | ||||
| @@ -69,7 +69,7 @@ namespace keepass2android.view | ||||
| 			_pwGroup = pw; | ||||
| 			 | ||||
| 			ImageView iv = (ImageView) gv.FindViewById(Resource.Id.group_icon); | ||||
| 			App.Kp2a.GetDb().DrawableFactory.assignDrawableTo(iv, Resources, App.Kp2a.GetDb().KpDatabase, pw.IconId, pw.CustomIconUuid); | ||||
| 			App.Kp2a.GetDb().DrawableFactory.AssignDrawableTo(iv, Resources, App.Kp2a.GetDb().KpDatabase, pw.IconId, pw.CustomIconUuid); | ||||
| 			 | ||||
| 			_textview.Text = pw.Name; | ||||
| 		} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Philipp Crocoll
					Philipp Crocoll