mirror of
https://github.com/mgroves/MonodroidStockPortfolio.git
synced 2024-12-24 12:03:02 +00:00
refactored to use built-in Context menu stuff instead of my own long-click handling
This commit is contained in:
parent
a39911f7ff
commit
1f3fcf49e2
3 changed files with 27 additions and 23 deletions
|
@ -58,19 +58,18 @@ namespace MonoStockPortfolio.Core.PortfolioRepositories
|
|||
_db.Insert(POSITION_TABLE_NAME, null, GetPositionContentValues(position));
|
||||
}
|
||||
|
||||
public void DeletePortfolio(string portfolioName)
|
||||
public void DeletePortfolioById(int portfolioId)
|
||||
{
|
||||
_db.BeginTransaction();
|
||||
try
|
||||
{
|
||||
var portfolio = GetPortfolioByName(portfolioName);
|
||||
_db.Delete(PORTFOLIO_TABLE_NAME, "id = " + portfolio.ID, null);
|
||||
_db.Delete(POSITION_TABLE_NAME, "ContainingPortfolioID = " + portfolio.ID, null);
|
||||
_db.Delete(PORTFOLIO_TABLE_NAME, "id = " + portfolioId, null);
|
||||
_db.Delete(POSITION_TABLE_NAME, "ContainingPortfolioID = " + portfolioId, null);
|
||||
_db.SetTransactionSuccessful();
|
||||
}
|
||||
catch (SQLiteException ex)
|
||||
catch (SQLiteException)
|
||||
{
|
||||
Log.E("DeletePortfolio", "Name = " + portfolioName);
|
||||
Log.E("DeletePortfolio", "SQLiteException => Id = " + portfolioId);
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
|
|
@ -5,9 +5,9 @@ namespace MonoStockPortfolio.Core.PortfolioRepositories
|
|||
{
|
||||
public interface IPortfolioRepository
|
||||
{
|
||||
IList<Entities.Portfolio> GetAllPortfolios();
|
||||
void SavePortfolio(Entities.Portfolio portfolio);
|
||||
void DeletePortfolio(string portfolioName);
|
||||
IList<Portfolio> GetAllPortfolios();
|
||||
void SavePortfolio(Portfolio portfolio);
|
||||
void DeletePortfolioById(int portfolioId);
|
||||
IList<Position> GetAllPositions(long portfolioId);
|
||||
Portfolio GetPortfolioById(long portfolioId);
|
||||
void SavePosition(Position position);
|
||||
|
|
|
@ -18,7 +18,6 @@ namespace MonoStockPortfolio
|
|||
[IoC] private IPortfolioRepository _repo;
|
||||
|
||||
private IList<Portfolio> _portfolios;
|
||||
private readonly string[] _longClickOptions = new[] {"Rename", "Delete"};
|
||||
|
||||
protected override void OnCreate(Bundle bundle)
|
||||
{
|
||||
|
@ -42,37 +41,43 @@ namespace MonoStockPortfolio
|
|||
private void WireUpEvents()
|
||||
{
|
||||
AddPortfolioButton.Click += addPortfolioButton_Click;
|
||||
PortfolioListView.ItemLongClick += PortfolioListView_ItemLongClick;
|
||||
PortfolioListView.ItemClick += listView_ItemClick;
|
||||
RegisterForContextMenu(PortfolioListView);
|
||||
}
|
||||
|
||||
void PortfolioListView_ItemLongClick(object sender, ItemEventArgs e)
|
||||
public override void OnCreateContextMenu(Android.Views.IContextMenu menu, Android.Views.View v, Android.Views.IContextMenuContextMenuInfo menuInfo)
|
||||
{
|
||||
var selectedPortfolioName = ((TextView) e.View).Text.ToS();
|
||||
base.OnCreateContextMenu(menu, v, menuInfo);
|
||||
|
||||
var info = (AdapterView.AdapterContextMenuInfo)menuInfo;
|
||||
var selectedPortfolioName = ((TextView)info.TargetView).Text.ToS();
|
||||
var selectedPortfolio = _repo.GetPortfolioByName(selectedPortfolioName);
|
||||
var dialogBuilder = new AlertDialog.Builder(this);
|
||||
dialogBuilder.SetTitle("Options");
|
||||
dialogBuilder.SetItems(_longClickOptions,
|
||||
(senderi, ei) => tr_LongClick_Options(ei, selectedPortfolio));
|
||||
dialogBuilder.Create().Show();
|
||||
var id = (int)(selectedPortfolio.ID ?? -1);
|
||||
|
||||
menu.SetHeaderTitle("Options");
|
||||
menu.Add(0, id, 1, "Rename");
|
||||
menu.Add(0, id, 2, "Delete");
|
||||
}
|
||||
|
||||
private void tr_LongClick_Options(DialogClickEventArgs e, Portfolio selectedPortfolio)
|
||||
public override bool OnContextItemSelected(Android.Views.IMenuItem item)
|
||||
{
|
||||
if(_longClickOptions[e.Which] == "Rename")
|
||||
if (item.Title.ToS() == "Rename")
|
||||
{
|
||||
// Edit
|
||||
var intent = new Intent();
|
||||
intent.SetClassName(this, EditPortfolioActivity.ClassName);
|
||||
intent.PutExtra(EditPortfolioActivity.Extra_PortfolioID, selectedPortfolio.ID ?? -1);
|
||||
intent.PutExtra(EditPortfolioActivity.Extra_PortfolioID, (long)item.ItemId);
|
||||
StartActivityForResult(intent, 0);
|
||||
return true;
|
||||
}
|
||||
else if (_longClickOptions[e.Which] == "Delete")
|
||||
if (item.Title.ToS() == "Delete")
|
||||
{
|
||||
// Delete
|
||||
_repo.DeletePortfolio(selectedPortfolio.Name);
|
||||
_repo.DeletePortfolioById(item.ItemId);
|
||||
RefreshList();
|
||||
return true;
|
||||
}
|
||||
return base.OnContextItemSelected(item);
|
||||
}
|
||||
|
||||
private void listView_ItemClick(object sender, ItemEventArgs e)
|
||||
|
|
Loading…
Reference in a new issue