added an 'about' info option to main activity

This commit is contained in:
mgroves 2011-04-10 14:25:15 -04:00
parent cbe17a7175
commit d6eba45a2d
12 changed files with 89 additions and 6 deletions

View file

@ -68,6 +68,7 @@
<Compile Include="Presenters\EditPosition\EditPositionTests.cs" />
<Compile Include="Presenters\EditPosition\When_the_user_tries_to_save_a_position_for_a_ticker_thats_already_being_tracked.cs" />
<Compile Include="Presenters\Main\MainPresenterTests.cs" />
<Compile Include="Presenters\Main\When_the_user_wants_to_see_About_info.cs" />
<Compile Include="Presenters\Portfolio\PortfolioPresenterTests.cs" />
<Compile Include="Presenters\Portfolio\When_done_initializing_a_Portfolio_Presenter.cs" />
<Compile Include="Presenters\Config\When_initialize_the_config_presenter.cs" />

View file

@ -1,13 +1,13 @@
using Machine.Specifications;
using Telerik.JustMock;
namespace MonoStockPortfolio.Tests.Presenters
namespace MonoStockPortfolio.Tests.Presenters.Main
{
[Tags("UnitTest")]
public class When_the_user_wants_to_exit_the_app : Given_an_initialized_Main_Presenter
{
Because of = () =>
_presenter.ExitApplication();
_presenter.ExitApplication();
It should_tell_the_view_to_start_up_the_config_activity = () =>
Mock.Assert(() => _mockView.ExitApplication(), Occurs.Exactly(1));

View file

@ -0,0 +1,33 @@
using Machine.Specifications;
using Telerik.JustMock;
namespace MonoStockPortfolio.Tests.Presenters.Main
{
[Tags("UnitTest")]
public class When_the_user_wants_to_see_About_info : Given_an_initialized_Main_Presenter
{
static string _expectedMessage;
Establish context = () =>
{
_expectedMessage = "Matthew D. Groves © 2011\n" +
"Source code:\n" +
"\n" +
"http://tinyurl.com/mspSource\n" +
"\n" +
"Contact me:\n" +
"\n" +
"http://mgroves.com\n" +
"http://twitter.com/mgroves\n" +
"webmaster@mgroves.com";
};
Because of = () =>
_presenter.GotoAboutInfo();
It should_tell_the_view_toshow_the_about_info = () =>
Mock.Assert(() => _mockView.ShowAboutInfo(Arg.AnyString), Occurs.Exactly(1));
It should_pass_the_expected_message_to_the_about_info = () =>
Mock.Assert(() => _mockView.ShowAboutInfo(_expectedMessage), Occurs.Exactly(1));
}
}

View file

@ -10,5 +10,6 @@
void EditPortfolio(int itemId);
void GotoConfig();
void ExitApplication();
void GotoAboutInfo();
}
}

View file

@ -11,5 +11,6 @@ namespace MonoStockPortfolio.Activites.MainScreen
void StartEditPortfolioActivity(int itemId);
void StartConfigActivity();
void ExitApplication();
void ShowAboutInfo(string message);
}
}

View file

@ -4,6 +4,9 @@ using System.Linq;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Text;
using Android.Text.Method;
using Android.Text.Util;
using Android.Views;
using Android.Widget;
using MonoStockPortfolio.Activites.ConfigScreen;
@ -47,6 +50,22 @@ namespace MonoStockPortfolio.Activites.MainScreen
Finish();
}
public void ShowAboutInfo(string message)
{
var spannable = new SpannableString(message);
Linkify.AddLinks(spannable, MatchOptions.All);
var alertBox = new AlertDialog.Builder(this)
.SetNeutralButton("Ok", (x, y) => { })
.SetMessage(spannable)
.SetTitle("About Mono Stock Portfolio")
.Create();
alertBox.Show();
((TextView)alertBox.FindViewById(Android.Resource.Id.Message)).MovementMethod = LinkMovementMethod.Instance;
}
public void StartEditPortfolioActivity(int itemId)
{
var intent = EditPortfolioActivity.EditIntent(this, itemId);
@ -114,6 +133,8 @@ namespace MonoStockPortfolio.Activites.MainScreen
{
var configItem = menu.Add(0, 1, 1, "Config".ToJ());
configItem.SetIcon(Resource.Drawable.ic_menu_preferences);
var aboutItem = menu.Add(0, 1, 1, "About".ToJ());
aboutItem.SetIcon(Resource.Drawable.ic_menu_info_details); // IcMenuInfoDetails);
var exitItem = menu.Add(0, 1, 1, "Exit".ToJ());
exitItem.SetIcon(Resource.Drawable.ic_menu_close_clear_cancel);
return true;
@ -129,6 +150,9 @@ namespace MonoStockPortfolio.Activites.MainScreen
case "Exit":
_presenter.ExitApplication();
return true;
case "About":
_presenter.GotoAboutInfo();
return true;
default:
return base.OnOptionsItemSelected(item);
}

View file

@ -1,4 +1,5 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using Android.Runtime;
using MonoStockPortfolio.Core.PortfolioRepositories;
using MonoStockPortfolio.Entities;
@ -67,5 +68,21 @@ namespace MonoStockPortfolio.Activites.MainScreen
{
_currentView.ExitApplication();
}
public void GotoAboutInfo()
{
var message = "Matthew D. Groves © 2011\n" +
"Source code:\n" +
"\n" +
"http://tinyurl.com/mspSource\n" +
"\n" +
"Contact me:\n" +
"\n" +
"http://mgroves.com\n" +
"http://twitter.com/mgroves\n" +
"webmaster@mgroves.com";
_currentView.ShowAboutInfo(message);
}
}
}

View file

@ -140,6 +140,9 @@
<AndroidResource Include="Resources\drawable-hdpi\ic_menu_close_clear_cancel.png" />
<AndroidResource Include="Resources\drawable-ldpi\ic_menu_close_clear_cancel.png" />
<AndroidResource Include="Resources\drawable-mdpi\ic_menu_close_clear_cancel.png" />
<AndroidResource Include="Resources\drawable-hdpi\ic_menu_info_details.png" />
<AndroidResource Include="Resources\drawable-ldpi\ic_menu_info_details.png" />
<AndroidResource Include="Resources\drawable-mdpi\ic_menu_info_details.png" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\drawable-hdpi\ic_menu_refresh.png" />

View file

@ -30,13 +30,16 @@ namespace MonoStockPortfolio
public const int ic_menu_close_clear_cancel = 2130837504;
// aapt resource value: 0x7f020001
public const int ic_menu_preferences = 2130837505;
public const int ic_menu_info_details = 2130837505;
// aapt resource value: 0x7f020002
public const int ic_menu_refresh = 2130837506;
public const int ic_menu_preferences = 2130837506;
// aapt resource value: 0x7f020003
public const int icon = 2130837507;
public const int ic_menu_refresh = 2130837507;
// aapt resource value: 0x7f020004
public const int icon = 2130837508;
private Drawable()
{

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB