Skip to content

Commit

Permalink
[Coffee-Filter] Android and Shared projects refactoring + iOS applica…
Browse files Browse the repository at this point in the history
…tion + watch kit app
  • Loading branch information
olegoid committed May 6, 2015
1 parent 0f5744b commit a720eef
Show file tree
Hide file tree
Showing 274 changed files with 10,544 additions and 2,881 deletions.
30 changes: 13 additions & 17 deletions CoffeeFilter.Android/BaseActivity.cs
Original file line number Diff line number Diff line change
@@ -1,36 +1,32 @@

using Android.Support.V7.App;
using Android.Support.V7.App;
using Android.Support.V7.Widget;
using Android.OS;

namespace CoffeeFilter
{
public abstract class BaseActivity : ActionBarActivity
{
public Toolbar Toolbar {
get;
set;
public Toolbar Toolbar { get; set; }

protected int ActionBarIcon {
set {
Toolbar.SetNavigationIcon (value);
}
}

protected abstract int LayoutResource { get; }

protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
SetContentView (LayoutResource);
Toolbar = FindViewById<Toolbar>(Resource.Id.toolbar);
Toolbar = FindViewById<Toolbar> (Resource.Id.toolbar);
if (Toolbar != null) {
SetSupportActionBar(Toolbar);
SupportActionBar.SetDisplayHomeAsUpEnabled(true);
SetSupportActionBar (Toolbar);
SupportActionBar.SetDisplayHomeAsUpEnabled (true);
SupportActionBar.SetHomeButtonEnabled (true);

}
}

protected abstract int LayoutResource{
get;
}

protected int ActionBarIcon {
set{ Toolbar.SetNavigationIcon (value); }
}
}
}

64 changes: 31 additions & 33 deletions CoffeeFilter.Android/CoffeeFilter.Android.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@
<AndroidLinkMode>Full</AndroidLinkMode>
<AndroidSupportedAbis>armeabi-v7a;x86</AndroidSupportedAbis>
<AssemblyName>CoffeeFilter</AssemblyName>
<EnableProguard>true</EnableProguard>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'UITests|AnyCPU' ">
<DebugType>full</DebugType>
Expand All @@ -64,7 +63,16 @@
</Reference>
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.Net.Http" />
<Reference Include="Connectivity.Plugin">
<HintPath>..\packages\Xam.Plugin.Connectivity.1.0.1\lib\MonoAndroid10\Connectivity.Plugin.dll</HintPath>
</Reference>
<Reference Include="Connectivity.Plugin.Abstractions">
<HintPath>..\packages\Xam.Plugin.Connectivity.1.0.1\lib\MonoAndroid10\Connectivity.Plugin.Abstractions.dll</HintPath>
</Reference>
<Reference Include="System.Xml" />
<Reference Include="GooglePlayServicesLib">
<HintPath>..\packages\Xamarin.GooglePlayServices.22.0.0.2\lib\MonoAndroid41\GooglePlayServicesLib.dll</HintPath>
</Reference>
<Reference Include="ExternalMaps.Plugin">
<HintPath>..\packages\Xam.Plugin.ExternalMaps.1.0.4\lib\MonoAndroid10\ExternalMaps.Plugin.dll</HintPath>
</Reference>
Expand All @@ -74,49 +82,39 @@
<Reference Include="Xamarin.Insights">
<HintPath>..\packages\Xamarin.Insights.1.9.1.107\lib\MonoAndroid10\Xamarin.Insights.dll</HintPath>
</Reference>
<Reference Include="UrlImageViewHelper">
<HintPath>..\Components\urlimageviewhelper-1.0.4\lib\android\UrlImageViewHelper.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json">
<HintPath>..\packages\Newtonsoft.Json.6.0.8\lib\portable-net40+sl5+wp80+win8+wpa81\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="Refractored.Xam.Settings">
<HintPath>..\packages\Xam.Plugins.Settings.1.5.0\lib\MonoAndroid10\Refractored.Xam.Settings.dll</HintPath>
</Reference>
<Reference Include="Refractored.Xam.Settings.Abstractions">
<HintPath>..\packages\Xam.Plugins.Settings.1.5.0\lib\MonoAndroid10\Refractored.Xam.Settings.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Connectivity.Plugin">
<HintPath>..\packages\Xam.Plugin.Connectivity.1.0.2\lib\MonoAndroid10\Connectivity.Plugin.dll</HintPath>
</Reference>
<Reference Include="Connectivity.Plugin.Abstractions">
<HintPath>..\packages\Xam.Plugin.Connectivity.1.0.2\lib\MonoAndroid10\Connectivity.Plugin.Abstractions.dll</HintPath>
<Reference Include="Xamarin.Android.Support.v7.CardView">
<HintPath>..\packages\Xamarin.Android.Support.v7.CardView.22.0.0.0-beta2\lib\MonoAndroid403\Xamarin.Android.Support.v7.CardView.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.v4">
<HintPath>..\packages\Xamarin.Android.Support.v4.22.0.0.0\lib\MonoAndroid10\Xamarin.Android.Support.v4.dll</HintPath>
<HintPath>..\packages\Xamarin.Android.Support.v4.22.0.0.0-beta2\lib\MonoAndroid10\Xamarin.Android.Support.v4.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.v7.AppCompat">
<HintPath>..\packages\Xamarin.Android.Support.v7.AppCompat.22.0.0.0\lib\MonoAndroid403\Xamarin.Android.Support.v7.AppCompat.dll</HintPath>
<HintPath>..\packages\Xamarin.Android.Support.v7.AppCompat.22.0.0.0-beta2\lib\MonoAndroid403\Xamarin.Android.Support.v7.AppCompat.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.v7.MediaRouter">
<HintPath>..\packages\Xamarin.Android.Support.v7.MediaRouter.22.0.0.0-beta2\lib\MonoAndroid403\Xamarin.Android.Support.v7.MediaRouter.dll</HintPath>
</Reference>
<Reference Include="Refractored.PagerSlidingTabStrip">
<HintPath>..\packages\Refractored.PagerSlidingTabStrip.1.0.9\lib\MonoAndroid10\Refractored.PagerSlidingTabStrip.dll</HintPath>
<HintPath>..\packages\Refractored.PagerSlidingTabStrip.1.0.9-beta2\lib\MonoAndroid10\Refractored.PagerSlidingTabStrip.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.v7.CardView">
<HintPath>..\packages\Xamarin.Android.Support.v7.CardView.22.0.0.0\lib\MonoAndroid403\Xamarin.Android.Support.v7.CardView.dll</HintPath>
<Reference Include="Newtonsoft.Json">
<HintPath>..\packages\Newtonsoft.Json.6.0.8\lib\portable-net40+sl5+wp80+win8+wpa81\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.v7.MediaRouter">
<HintPath>..\packages\Xamarin.Android.Support.v7.MediaRouter.22.0.0.0\lib\MonoAndroid403\Xamarin.Android.Support.v7.MediaRouter.dll</HintPath>
<Reference Include="ModernHttpClient">
<HintPath>..\packages\modernhttpclient.2.2.0\lib\MonoAndroid\ModernHttpClient.dll</HintPath>
</Reference>
<Reference Include="Xamarin.GooglePlayServices.Base">
<HintPath>..\packages\Xamarin.GooglePlayServices.Base.23.0.0.0-beta1\lib\MonoAndroid41\Xamarin.GooglePlayServices.Base.dll</HintPath>
<Reference Include="OkHttp">
<HintPath>..\packages\modernhttpclient.2.2.0\lib\MonoAndroid\OkHttp.dll</HintPath>
</Reference>
<Reference Include="Xamarin.GooglePlayServices.Maps">
<HintPath>..\packages\Xamarin.GooglePlayServices.Maps.23.0.0.0-beta1\lib\MonoAndroid41\Xamarin.GooglePlayServices.Maps.dll</HintPath>
<Reference Include="Refractored.Xam.Settings">
<HintPath>..\packages\Xam.Plugins.Settings.1.5.0\lib\MonoAndroid10\Refractored.Xam.Settings.dll</HintPath>
</Reference>
<Reference Include="Xamarin.GooglePlayServices.Panorama">
<HintPath>..\packages\Xamarin.GooglePlayServices.Panorama.23.0.0.0-beta1\lib\MonoAndroid41\Xamarin.GooglePlayServices.Panorama.dll</HintPath>
<Reference Include="Refractored.Xam.Settings.Abstractions">
<HintPath>..\packages\Xam.Plugins.Settings.1.5.0\lib\MonoAndroid10\Refractored.Xam.Settings.Abstractions.dll</HintPath>
</Reference>
<Reference Include="UrlImageViewHelper">
<HintPath>..\Components\urlimageviewhelper-1.0.4\lib\android\UrlImageViewHelper.dll</HintPath>
</Reference>
<Reference Include="Mono.Android.Export" />
</ItemGroup>
<ItemGroup>
<Compile Include="MainActivity.cs" />
Expand All @@ -139,8 +137,8 @@
<None Include="Properties\AndroidManifest.xml" />
<None Include="PluginsHelp\GeolocatorReadme.txt" />
<None Include="packages.config" />
<None Include="Properties\_SettingsStarted.txt" />
<None Include="PluginsHelp\ConnectivityReadme.txt" />
<None Include="Properties\_SettingsStarted.txt" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\values\colors.xml" />
Expand Down
137 changes: 68 additions & 69 deletions CoffeeFilter.Android/DetailsActivity.cs
Original file line number Diff line number Diff line change
@@ -1,81 +1,84 @@

using System;
using System;
using System.Collections.Generic;

using Android.App;
using Android.Content;
using Android.Content.PM;
using Android.OS;
using Android.Runtime;
using Android.Support.V4.App;
using Android.Support.V4.View;
using Android.Support.V7.Widget;
using Android.Views;
using Android.Widget;

using CoffeeFilter.Fragments;
using Android.Support.V4.App;
using Android.Support.V4.View;
using com.refractored;
using CoffeeFilter.Shared.ViewModels;
using CoffeeFilter.Shared.Helpers;
using System.Collections.Generic;
using Android.Content.PM;
using CoffeeFilter.Shared.ViewModels;
using com.refractored;

namespace CoffeeFilter
{
[Activity (Label = "Details", ScreenOrientation = ScreenOrientation.Portrait)]
public class DetailsActivity : BaseActivity
{
Android.Support.V7.Widget.ShareActionProvider actionProvider;
DetailsAdapter adapter;
ViewPager pager;
PagerSlidingTabStrip tabs;
DetailsViewModel viewModel;

protected override int LayoutResource {
get {
return Resource.Layout.details;
}
}

private DetailsAdapter adapter;
private ViewPager pager;
private PagerSlidingTabStrip tabs;
private DetailsViewModel viewModel;


protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);

viewModel = ServiceContainer.Resolve<DetailsViewModel> ();

adapter = new DetailsAdapter(this,SupportFragmentManager, viewModel);
adapter = new DetailsAdapter (this, SupportFragmentManager, viewModel);
pager = FindViewById<ViewPager> (Resource.Id.pager);
tabs = FindViewById<PagerSlidingTabStrip> (Resource.Id.tabs);
pager.Adapter = adapter;
tabs.SetViewPager (pager);
pager.OffscreenPageLimit = 3;

var progressBar = new ProgressBar (this, null, Android.Resource.Attribute.ProgressBarStyleSmallTitle);
progressBar.Indeterminate = true;
progressBar.LayoutParameters = new Android.Support.V7.Widget.Toolbar.LayoutParams(
var layoutParameters = new Android.Support.V7.Widget.Toolbar.LayoutParams (
ViewGroup.LayoutParams.WrapContent,
ViewGroup.LayoutParams.WrapContent,
(int)(GravityFlags.Top | GravityFlags.Right));

var progressBar = new ProgressBar (this, null, Android.Resource.Attribute.ProgressBarStyleSmallTitle) {
Indeterminate = true,
LayoutParameters = layoutParameters
};

SupportActionBar.SetDisplayShowCustomEnabled (true);

SupportActionBar.CustomView = progressBar;
SupportActionBar.Title = viewModel.Place.Name;

#if !DEBUG
Xamarin.Insights.Track("AppNav-Details", new Dictionary<string,string>
{
{"page", "details"},
{"name", viewModel.Place.Name},
Xamarin.Insights.Track ("AppNav", new Dictionary<string,string> {
{ "page", "details" },
{ "name", viewModel.Place.Name }
});
#endif

viewModel.RefreshPlace ().ContinueWith ((result) => {
RunOnUiThread(()=>
{
SupportActionBar.CustomView.Visibility = ViewStates.Gone;
if(!result.Result){
Toast.MakeText(this, Resource.String.unable_to_get_details, ToastLength.Long).Show();
return;
}
adapter.NotifyDataSetChanged();
SupportInvalidateOptionsMenu();
});
RunOnUiThread (() => {
SupportActionBar.CustomView.Visibility = ViewStates.Gone;
if (!result.Result) {
Toast.MakeText (this, Resource.String.unable_to_get_details, ToastLength.Long).Show ();
return;
}
adapter.NotifyDataSetChanged ();
SupportInvalidateOptionsMenu ();
});
});
}

Expand All @@ -84,76 +87,72 @@ protected override void OnDestroy ()
base.OnDestroy ();
ServiceContainer.RemoveScope ();
}
public override bool OnOptionsItemSelected(IMenuItem item)

public override bool OnOptionsItemSelected (IMenuItem item)
{
switch (item.ItemId)
{
case Android.Resource.Id.Home:
if (item.ItemId == Android.Resource.Id.Home)
Finish ();
break;
}

return base.OnOptionsItemSelected(item);
return base.OnOptionsItemSelected (item);
}

Android.Support.V7.Widget.ShareActionProvider actionProvider;
public override bool OnCreateOptionsMenu(IMenu menu)
public override bool OnCreateOptionsMenu (IMenu menu)
{
//change menu_share1 to your name
this.MenuInflater.Inflate(Resource.Menu.menu_details, menu);
var shareItem = menu.FindItem(Resource.Id.action_share);
var provider = MenuItemCompat.GetActionProvider(shareItem);
actionProvider = provider.JavaCast<Android.Support.V7.Widget.ShareActionProvider>();
var intent = new Intent(Intent.ActionSend);
intent.SetType("text/plain");
MenuInflater.Inflate (Resource.Menu.menu_details, menu);
var shareItem = menu.FindItem (Resource.Id.action_share);
var provider = MenuItemCompat.GetActionProvider (shareItem);
actionProvider = provider.JavaCast<Android.Support.V7.Widget.ShareActionProvider> ();
var intent = new Intent (Intent.ActionSend);
intent.SetType ("text/plain");
var shareText = string.Format (Resources.GetString (Resource.String.share_text), viewModel.Place.Name);
if (!string.IsNullOrWhiteSpace (viewModel.Place.Website))
shareText += " " + viewModel.Place.Website;

intent.PutExtra(Intent.ExtraText, shareText);
actionProvider.SetShareIntent(intent);
return base.OnCreateOptionsMenu(menu);
intent.PutExtra (Intent.ExtraText, shareText);
actionProvider.SetShareIntent (intent);
return base.OnCreateOptionsMenu (menu);
}
}

public class DetailsAdapter : FragmentStatePagerAdapter{
private string[] Titles;
private DetailsViewModel viewModel;
public DetailsAdapter(Context context, Android.Support.V4.App.FragmentManager fm, DetailsViewModel viewModel) : base(fm)
public class DetailsAdapter : FragmentStatePagerAdapter
{
string[] titles;
DetailsViewModel viewModel;

public override int Count {
get {
return titles.Length;
}
}

public DetailsAdapter (Context context, Android.Support.V4.App.FragmentManager fm, DetailsViewModel viewModel) : base (fm)
{
Titles = context.Resources.GetTextArray (Resource.Array.sections);
titles = context.Resources.GetTextArray (Resource.Array.sections);
this.viewModel = viewModel;
}

public override Java.Lang.ICharSequence GetPageTitleFormatted (int position)
{
return new Java.Lang.String (Titles [position]);
return new Java.Lang.String (titles [position]);
}
#region implemented abstract members of PagerAdapter
public override int Count {
get {
return Titles.Length;
}
}
#endregion
#region implemented abstract members of FragmentPagerAdapter

public override Android.Support.V4.App.Fragment GetItem (int position)
{
switch (position) {
case 0:
return PlaceDetailsFragment.NewInstance (viewModel.Place, viewModel.Position);
case 1:
return PlaceReviewsFragment.NewInstance (viewModel.Place);
return PlaceReviewsFragment.CreateNewInstance (viewModel.Place);
case 2:
return PlacePhotosFragment.NewInstance (viewModel.Place);
return PlacePhotosFragment.CreateNewInstance (viewModel.Place);
}
return null;
}
#endregion

public override int GetItemPosition (Java.Lang.Object frag)
{
return PositionNone;
return PositionNone;
}
}
}
Expand Down
Loading

0 comments on commit a720eef

Please sign in to comment.