Files
keepass2android/src/Kp2aBusinessLogic/database/edit/EditGroup.cs

98 lines
2.5 KiB
C#

/*
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 KeePassLib;
namespace keepass2android
{
public class EditGroup : OperationWithFinishHandler {
internal Database Db
{
get { return _app.FindDatabaseForElement(Group); }
}
public IKp2aApp App { get => _app; }
private IKp2aApp _app;
private readonly String _name;
private readonly PwIcon _iconId;
private readonly PwUuid _customIconId;
internal PwGroup Group;
readonly Activity _ctx;
public EditGroup(Activity ctx, IKp2aApp app, String name, PwIcon iconid, PwUuid customIconId, PwGroup group, OnOperationFinishedHandler operationFinishedHandler)
: base(ctx, operationFinishedHandler)
{
_ctx = ctx;
_name = name;
_iconId = iconid;
Group = group;
_customIconId = customIconId;
_app = app;
_operationFinishedHandler = new AfterEdit(ctx, this, operationFinishedHandler);
}
public override void Run() {
// modify group:
Group.Name = _name;
Group.IconId = _iconId;
Group.CustomIconUuid = _customIconId;
Group.Touch(true);
// Commit to disk
SaveDb save = new SaveDb(_ctx, _app, Db, operationFinishedHandler);
save.SetStatusLogger(StatusLogger);
save.Run();
}
private class AfterEdit : OnOperationFinishedHandler {
readonly EditGroup _editGroup;
public AfterEdit(Activity ctx, EditGroup editGroup, OnOperationFinishedHandler operationFinishedHandler)
: base(ctx, operationFinishedHandler)
{
_editGroup = editGroup;
}
public override void Run() {
if ( Success ) {
// Mark parent group dirty
_editGroup.App.DirtyGroups.Add(_editGroup.Group.ParentGroup);
} else
{
_editGroup._app.Lock(false, false);
}
base.Run();
}
}
}
}