├── iOS
├── MonoTouch.Dialog
│ ├── .gitignore
│ ├── Images
│ │ └── arrow.png
│ ├── ActivityElement.cs
│ ├── ChangeLog
│ ├── OwnerDrawnElement.cs
│ ├── LoadMoreElement.cs
│ ├── MonoTouch.Dialog.csproj
│ ├── ElementBadge.cs
│ └── Controls.cs
├── Default.png
├── icon_57.png
├── icon_114.png
├── Background.png
├── Images
│ ├── 103-map.png
│ ├── 28-star.png
│ ├── 103-map@2x.png
│ ├── 28-star@2x.png
│ ├── favorite.png
│ ├── favorited.png
│ ├── surprise.png
│ ├── tabspeaker.png
│ ├── 124-bullhorn.png
│ ├── 83-calendar.png
│ ├── 124-bullhorn@2x.png
│ └── 83-calendar@2x.png
├── ObjectModel
│ ├── ObjectExtensions.cs
│ ├── Objects2.cs
│ └── Objects.cs
├── ICEViewController.cs
├── Info.plist
├── TabAbout
│ └── AboutViewController.cs
├── Main.cs
├── TableViewControllerBase.cs
├── TabSchedule
│ ├── TimeslotViewController.cs
│ ├── SessionCellController.xib.cs
│ ├── SessionCellController.xib.designer.cs
│ ├── WeekViewController.cs
│ ├── DayViewController.cs
│ └── HomeViewController.cs
├── TabFavorites
│ └── FavoritesViewController.cs
├── SessionDatabase
│ └── Database.cs
├── TabSessions
│ ├── TagsViewController.cs
│ ├── RssSessionsEntryViewController.cs
│ ├── RssSessionsViewController.cs
│ ├── SessionViewController.cs
│ └── SessionsViewController.cs
├── TabMap
│ ├── MapFlipViewController.cs
│ ├── MapLocationViewController.cs
│ └── MapHelper.cs
├── WebViewController.cs
├── TabSpeakers
│ ├── SpeakerBioViewController.cs
│ └── SpeakersViewController.cs
├── WebViewControllerBase.cs
├── Monospace11.sln
├── TabBarController.cs
├── ConferenceElements.cs
├── AppDelegate.cs
└── Monospace11.csproj
├── .gitignore
├── Android
├── Resources
│ ├── Drawable
│ │ ├── feed.png
│ │ ├── icon.png
│ │ ├── map.png
│ │ ├── star.png
│ │ ├── map_2x.png
│ │ ├── bullhorn.png
│ │ ├── calendar.png
│ │ ├── feed_2x.png
│ │ ├── star_2x.png
│ │ ├── WindowTitle.png
│ │ ├── bullhorn_2x.png
│ │ ├── calendar_2x.png
│ │ ├── microphone.png
│ │ └── microphone_2x.png
│ ├── Drawable-hdpi
│ │ ├── icon.png
│ │ └── WindowTitle.png
│ ├── Drawable-ldpi
│ │ ├── icon.png
│ │ └── WindowTitle.png
│ ├── Drawable-mdpi
│ │ ├── icon.png
│ │ └── WindowTitle.png
│ ├── Values
│ │ ├── Strings.xml
│ │ └── custom_style.xml
│ ├── Layout
│ │ ├── SessionsItem.axml
│ │ ├── TagsItem.axml
│ │ ├── SpeakersItem.axml
│ │ ├── WindowTitle.axml
│ │ ├── Tags.axml
│ │ ├── Favourites.axml
│ │ ├── Speakers.axml
│ │ ├── Sessions.axml
│ │ ├── Home.axml
│ │ ├── Sessions2Item.axml
│ │ ├── FavouritesItem.axml
│ │ ├── HomeItem.axml
│ │ ├── Speaker.axml
│ │ └── Session.axml
│ ├── AboutResources.txt
│ └── Resource.Designer.cs
├── ObjectModel
│ ├── ConferenceInfo.cs
│ ├── Constants.cs
│ ├── DayConferenceViewModel.cs
│ └── Objects2.cs
├── Properties
│ ├── AndroidManifest.xml
│ └── AssemblyInfo.cs
├── Monospace11.sln
├── Adapters
│ ├── TagsAdapter.cs
│ ├── SessionsAdapter.cs
│ ├── SpeakersAdapter.cs
│ ├── FavouritesAdapter.cs
│ ├── Sessions2Adapter.cs
│ └── HomeAdapter.cs
├── Activities
│ ├── TagsActivity.cs
│ ├── FavouritesActivity.cs
│ ├── SpeakersActivity.cs
│ ├── SpeakerActivity.cs
│ ├── HomeActivity.cs
│ ├── SessionActivity.cs
│ ├── BaseActivity.cs
│ └── SessionsActivity.cs
└── Monospace11.csproj
└── LICENSE
/iOS/MonoTouch.Dialog/.gitignore:
--------------------------------------------------------------------------------
1 | bin
2 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | bin
2 | obj
3 | *~
4 | *.userprefs
5 | *.pidb
6 | .DS_Store
7 |
--------------------------------------------------------------------------------
/iOS/Default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/iOS/Default.png
--------------------------------------------------------------------------------
/iOS/icon_57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/iOS/icon_57.png
--------------------------------------------------------------------------------
/iOS/icon_114.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/iOS/icon_114.png
--------------------------------------------------------------------------------
/iOS/Background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/iOS/Background.png
--------------------------------------------------------------------------------
/iOS/Images/103-map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/iOS/Images/103-map.png
--------------------------------------------------------------------------------
/iOS/Images/28-star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/iOS/Images/28-star.png
--------------------------------------------------------------------------------
/iOS/Images/103-map@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/iOS/Images/103-map@2x.png
--------------------------------------------------------------------------------
/iOS/Images/28-star@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/iOS/Images/28-star@2x.png
--------------------------------------------------------------------------------
/iOS/Images/favorite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/iOS/Images/favorite.png
--------------------------------------------------------------------------------
/iOS/Images/favorited.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/iOS/Images/favorited.png
--------------------------------------------------------------------------------
/iOS/Images/surprise.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/iOS/Images/surprise.png
--------------------------------------------------------------------------------
/iOS/Images/tabspeaker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/iOS/Images/tabspeaker.png
--------------------------------------------------------------------------------
/iOS/Images/124-bullhorn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/iOS/Images/124-bullhorn.png
--------------------------------------------------------------------------------
/iOS/Images/83-calendar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/iOS/Images/83-calendar.png
--------------------------------------------------------------------------------
/iOS/Images/124-bullhorn@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/iOS/Images/124-bullhorn@2x.png
--------------------------------------------------------------------------------
/iOS/Images/83-calendar@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/iOS/Images/83-calendar@2x.png
--------------------------------------------------------------------------------
/Android/Resources/Drawable/feed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/Android/Resources/Drawable/feed.png
--------------------------------------------------------------------------------
/Android/Resources/Drawable/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/Android/Resources/Drawable/icon.png
--------------------------------------------------------------------------------
/Android/Resources/Drawable/map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/Android/Resources/Drawable/map.png
--------------------------------------------------------------------------------
/Android/Resources/Drawable/star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/Android/Resources/Drawable/star.png
--------------------------------------------------------------------------------
/Android/Resources/Drawable/map_2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/Android/Resources/Drawable/map_2x.png
--------------------------------------------------------------------------------
/iOS/MonoTouch.Dialog/Images/arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/iOS/MonoTouch.Dialog/Images/arrow.png
--------------------------------------------------------------------------------
/Android/Resources/Drawable-hdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/Android/Resources/Drawable-hdpi/icon.png
--------------------------------------------------------------------------------
/Android/Resources/Drawable-ldpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/Android/Resources/Drawable-ldpi/icon.png
--------------------------------------------------------------------------------
/Android/Resources/Drawable-mdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/Android/Resources/Drawable-mdpi/icon.png
--------------------------------------------------------------------------------
/Android/Resources/Drawable/bullhorn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/Android/Resources/Drawable/bullhorn.png
--------------------------------------------------------------------------------
/Android/Resources/Drawable/calendar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/Android/Resources/Drawable/calendar.png
--------------------------------------------------------------------------------
/Android/Resources/Drawable/feed_2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/Android/Resources/Drawable/feed_2x.png
--------------------------------------------------------------------------------
/Android/Resources/Drawable/star_2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/Android/Resources/Drawable/star_2x.png
--------------------------------------------------------------------------------
/Android/Resources/Drawable/WindowTitle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/Android/Resources/Drawable/WindowTitle.png
--------------------------------------------------------------------------------
/Android/Resources/Drawable/bullhorn_2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/Android/Resources/Drawable/bullhorn_2x.png
--------------------------------------------------------------------------------
/Android/Resources/Drawable/calendar_2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/Android/Resources/Drawable/calendar_2x.png
--------------------------------------------------------------------------------
/Android/Resources/Drawable/microphone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/Android/Resources/Drawable/microphone.png
--------------------------------------------------------------------------------
/Android/Resources/Drawable/microphone_2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/Android/Resources/Drawable/microphone_2x.png
--------------------------------------------------------------------------------
/Android/Resources/Drawable-hdpi/WindowTitle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/Android/Resources/Drawable-hdpi/WindowTitle.png
--------------------------------------------------------------------------------
/Android/Resources/Drawable-ldpi/WindowTitle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/Android/Resources/Drawable-ldpi/WindowTitle.png
--------------------------------------------------------------------------------
/Android/Resources/Drawable-mdpi/WindowTitle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/conceptdev/Monospace11/HEAD/Android/Resources/Drawable-mdpi/WindowTitle.png
--------------------------------------------------------------------------------
/Android/Resources/Values/Strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Hello World, Click Me!
4 | Conf
5 |
6 |
--------------------------------------------------------------------------------
/Android/ObjectModel/ConferenceInfo.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Conf
4 | {
5 | public class ConferenceInfo
6 | {
7 | public ConferenceInfo ()
8 | {
9 | }
10 |
11 | public string DisplayName {get;set;}
12 | public string DisplayLocation {get;set;}
13 |
14 | public string Code {get;set;}
15 | public DateTime StartDate {get;set;}
16 | public DateTime EndDate {get;set;}
17 | }
18 | }
19 |
20 |
--------------------------------------------------------------------------------
/Android/ObjectModel/Constants.cs:
--------------------------------------------------------------------------------
1 | namespace Conf.ObjectModel
2 | {
3 | static class Constants
4 | {
5 | ///
6 | /// /data/data/com.confapp.monospace11/files
7 | ///
8 | public static string DocumentsFolder
9 | {
10 | get
11 | {
12 | return System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments);
13 | }
14 | }
15 | }
16 | }
--------------------------------------------------------------------------------
/Android/Resources/Values/custom_style.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
11 |
--------------------------------------------------------------------------------
/Android/Properties/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Android/Resources/Layout/SessionsItem.axml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
16 |
17 |
--------------------------------------------------------------------------------
/Android/Resources/Layout/TagsItem.axml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
17 |
18 |
--------------------------------------------------------------------------------
/Android/Resources/Layout/SpeakersItem.axml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
17 |
18 |
--------------------------------------------------------------------------------
/iOS/ObjectModel/ObjectExtensions.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using MonoTouch.CoreLocation;
3 | using MIX10Xml;
4 |
5 | namespace Monospace11
6 | {
7 | public static class ObjectExtensions
8 | {
9 | public static CLLocationCoordinate2D To2D (this System.Drawing.PointF point)
10 | {
11 | return new CLLocationCoordinate2D(point.Y, point.X);
12 | }
13 | public static CLLocationCoordinate2D To2D (this MIX10Xml.Point point)
14 | {
15 | return new CLLocationCoordinate2D(point.Y, point.X);
16 | }
17 | public static string ToLL (this CLLocationCoordinate2D point)
18 | {
19 | return string.Format("{0},{1}", point.Latitude, point.Longitude);
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Android/Resources/Layout/WindowTitle.axml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
18 |
19 |
--------------------------------------------------------------------------------
/iOS/ICEViewController.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using MonoTouch.UIKit;
3 |
4 | namespace Monospace11
5 | {
6 | public class ICEViewController : UIViewController
7 | {
8 | UIImageView imageView;
9 | public ICEViewController ()
10 | {
11 | UIImage img = UIImage.FromFile("Images/surprise.png");
12 | imageView = new UIImageView();
13 | imageView.Image = img;
14 | imageView.Frame = new System.Drawing.RectangleF(0,0,320,480);
15 | this.View.AddSubview(imageView);
16 | }
17 | public override void ViewDidAppear (bool animated)
18 | {
19 | MonoTouch.Foundation.NSTimer.CreateScheduledTimer (TimeSpan.FromSeconds (10), delegate
20 | {
21 | this.ParentViewController.ModalViewController.DismissModalViewControllerAnimated(true);
22 | });
23 | }
24 | }
25 | }
--------------------------------------------------------------------------------
/Android/Resources/Layout/Tags.axml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
15 |
16 |
17 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Android/Resources/Layout/Favourites.axml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
15 |
16 |
17 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Android/Resources/Layout/Speakers.axml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
15 |
16 |
17 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Android/Resources/Layout/Sessions.axml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
16 |
17 |
18 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/Android/Resources/Layout/Home.axml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
16 |
17 |
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/iOS/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDisplayName
6 | Monospace11
7 | CFBundleIconFiles
8 |
9 | icon_57.png
10 | icon_114.png
11 |
12 | CFBundleIdentifier
13 | com.confapp.monospace11
14 | CFBundleVersion
15 | 1.0
16 | MinimumOSVersion
17 | 3.0
18 | SBUsesNetwork
19 |
20 | UIStatusBarStyle
21 | UIStatusBarStyleOpaqueBlack
22 | UISupportedInterfaceOrientations
23 |
24 | UIInterfaceOrientationPortrait
25 | UIInterfaceOrientationPortraitUpsideDown
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/Android/Resources/Layout/Sessions2Item.axml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
17 |
23 |
31 |
32 |
--------------------------------------------------------------------------------
/Android/Resources/Layout/FavouritesItem.axml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
16 |
17 |
23 |
24 |
32 |
33 |
--------------------------------------------------------------------------------
/iOS/TabAbout/AboutViewController.cs:
--------------------------------------------------------------------------------
1 | using System.Text;
2 | using MonoTouch.UIKit;
3 | using MonoTouch.Foundation;
4 |
5 | namespace Monospace11
6 | {
7 | public class AboutViewController : WebViewControllerBase
8 | {
9 | public override void ViewDidLoad ()
10 | {
11 | base.ViewDidLoad ();
12 | webView.ShouldStartLoad = delegate(UIWebView webViewParam, NSUrlRequest request, UIWebViewNavigationType navigationType) {
13 | // view links in a new 'webbrowser' window like session & twitter
14 | if (navigationType == UIWebViewNavigationType.LinkClicked) {
15 | this.NavigationController.PushViewController (new WebViewController (request), true);
16 | return false;
17 | }
18 | return true;
19 | };
20 | }
21 |
22 | protected override string FormatText ()
23 | {
24 | StringBuilder sb = new StringBuilder ();
25 | sb.Append (StyleHtmlSnippet);
26 | sb.Append (AppDelegate.ConferenceData.AboutHtml);
27 | return sb.ToString ();
28 | }
29 | }
30 | }
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/iOS/Main.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using MonoTouch.Foundation;
3 | using MonoTouch.UIKit;
4 | using System.Diagnostics;
5 |
6 | namespace Monospace11
7 | {
8 | ///
9 | /// Starting point for our MonoTouch application. Specifies the AppDelegate to load to kick things off
10 | ///
11 | public class Application
12 | {
13 | static void Main (string[] args)
14 | {
15 | try
16 | {
17 | UIApplication.Main (args, "ConferenceApplication", "AppDelegate");
18 | }
19 | catch (Exception ex)
20 | { // HACK: this is just here for debugging
21 | Debug.WriteLine(ex);
22 | }
23 | }
24 | }
25 |
26 | [Register ("ConferenceApplication")]
27 | public class ConferenceApplication : UIApplication {
28 | public static WeakReference cref;
29 |
30 | public static UIViewController CurrentController {
31 | get {
32 | if (cref != null && cref.IsAlive)
33 | return (UIViewController) cref.Target;
34 |
35 | return null;
36 | }
37 | set {
38 | cref = new WeakReference (value);
39 | }
40 | }
41 | }
42 | }
--------------------------------------------------------------------------------
/iOS/TableViewControllerBase.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Drawing;
4 | using System.IO;
5 | using System.Linq;
6 | using MonoTouch.Foundation;
7 | using MonoTouch.UIKit;
8 | namespace Monospace11
9 | {
10 | public class TableViewControllerBase : UIViewController
11 | {
12 | public UITableView tableView;
13 | public override void ViewDidLoad ()
14 | {
15 | base.ViewDidLoad ();
16 |
17 | UIImageView imageView = new UIImageView(UIImage.FromFile("Background.png"));
18 | imageView.Frame = new RectangleF (0, 0, this.View.Frame.Width, this.View.Frame.Height);
19 | imageView.UserInteractionEnabled = true;
20 |
21 | // no XIB !
22 | tableView = new UITableView()
23 | {
24 | AutoresizingMask = UIViewAutoresizing.FlexibleHeight|
25 | UIViewAutoresizing.FlexibleWidth,
26 | BackgroundColor = UIColor.Clear,
27 | Frame = new RectangleF (0, 0, this.View.Frame.Width, this.View.Frame.Height)
28 | };
29 | imageView.AddSubview(tableView);
30 | this.View.AddSubview(imageView);
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/Android/Monospace11.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 11.00
3 | # Visual Studio 2010
4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Monospace11", "Monospace11.csproj", "{5D8B279C-B1A0-422B-8611-FE0E44FA65FD}"
5 | EndProject
6 | Global
7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
8 | Debug|Any CPU = Debug|Any CPU
9 | Release|Any CPU = Release|Any CPU
10 | EndGlobalSection
11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
12 | {5D8B279C-B1A0-422B-8611-FE0E44FA65FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
13 | {5D8B279C-B1A0-422B-8611-FE0E44FA65FD}.Debug|Any CPU.Build.0 = Debug|Any CPU
14 | {5D8B279C-B1A0-422B-8611-FE0E44FA65FD}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
15 | {5D8B279C-B1A0-422B-8611-FE0E44FA65FD}.Release|Any CPU.ActiveCfg = Release|Any CPU
16 | {5D8B279C-B1A0-422B-8611-FE0E44FA65FD}.Release|Any CPU.Build.0 = Release|Any CPU
17 | {5D8B279C-B1A0-422B-8611-FE0E44FA65FD}.Release|Any CPU.Deploy.0 = Release|Any CPU
18 | EndGlobalSection
19 | GlobalSection(SolutionProperties) = preSolution
20 | HideSolutionNode = FALSE
21 | EndGlobalSection
22 | EndGlobal
23 |
--------------------------------------------------------------------------------
/iOS/TabSchedule/TimeslotViewController.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Drawing;
4 | using System.Text;
5 | using MonoTouch.Foundation;
6 | using MonoTouch.UIKit;
7 | using MIX10Xml;
8 | namespace Monospace11
9 | {
10 | public class TimeslotViewController : WebViewControllerBase
11 | {
12 | Timeslot _slot;
13 | public TimeslotViewController (Timeslot slot) : base()
14 | {
15 | _slot = slot;
16 | }
17 | public void Update (Timeslot slot)
18 | {
19 | _slot = slot;
20 | LoadHtmlString(FormatText());
21 | }
22 | protected override string FormatText()
23 | {
24 | StringBuilder sb = new StringBuilder();
25 | sb.Append(StyleHtmlSnippet);
26 | sb.Append("
"+ _slot.Title+"
"+ Environment.NewLine);
27 | sb.Append(""+_slot.StartTime.ToUniversalTime().ToString("HH:mm")+" - "
28 | +_slot.EndTime.ToUniversalTime().ToString("HH:mm")+"
"+ Environment.NewLine);
29 | //sb.Append(""+_session.Location+"
"+ Environment.NewLine);
30 | sb.Append(""+_slot.Brief+""+ Environment.NewLine);
31 | return sb.ToString();
32 | }
33 | }
34 | }
--------------------------------------------------------------------------------
/iOS/MonoTouch.Dialog/ActivityElement.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Drawing;
3 | using MonoTouch.UIKit;
4 |
5 | namespace MonoTouch.Dialog
6 | {
7 | public class ActivityElement : UIViewElement, IElementSizing {
8 | public ActivityElement () : base ("", new UIActivityIndicatorView (UIActivityIndicatorViewStyle.Gray), false)
9 | {
10 | var sbounds = UIScreen.MainScreen.Bounds;
11 | var uia = View as UIActivityIndicatorView;
12 |
13 | uia.StartAnimating ();
14 |
15 | var vbounds = View.Bounds;
16 | View.Frame = new RectangleF ((sbounds.Width-vbounds.Width)/2, 4, vbounds.Width, vbounds.Height + 0);
17 | View.AutoresizingMask = UIViewAutoresizing.FlexibleLeftMargin | UIViewAutoresizing.FlexibleRightMargin;
18 | }
19 |
20 | public bool Animating {
21 | get {
22 | return ((UIActivityIndicatorView) View).IsAnimating;
23 | }
24 | set {
25 | var activity = View as UIActivityIndicatorView;
26 | if (value)
27 | activity.StartAnimating ();
28 | else
29 | activity.StopAnimating ();
30 | }
31 | }
32 |
33 | public float GetHeight (UITableView tableView, MonoTouch.Foundation.NSIndexPath indexPath)
34 | {
35 | return base.GetHeight (tableView, indexPath)+ 8;
36 | }
37 |
38 | }
39 | }
40 |
41 |
--------------------------------------------------------------------------------
/iOS/TabFavorites/FavoritesViewController.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Drawing;
4 | using System.IO;
5 | using System.Linq;
6 | using MonoTouch.Foundation;
7 | using MonoTouch.UIKit;
8 | using MonoTouch.Dialog;
9 | using System.Diagnostics;
10 |
11 | namespace Monospace11
12 | {
13 | [Register]
14 | public class FavoritesViewController : DialogViewController
15 | {
16 | public FavoritesViewController () : base (null)
17 | {
18 | }
19 |
20 | public override void ViewWillAppear (bool animated)
21 | {
22 | Root = GenerateRoot ();
23 |
24 | Debug.WriteLine ("Summary " + Root.Summary() );
25 | }
26 |
27 | RootElement GenerateRoot ()
28 | {
29 | var favs = AppDelegate.UserData.GetFavoriteCodes();
30 | var root = new RootElement ("Favorites") {
31 | from s in AppDelegate.ConferenceData.Sessions
32 | where favs.Contains(s.Code)
33 | group s by s.Start.Ticks into g
34 | orderby g.Key
35 | select new Section (HomeViewController.MakeCaption ("", new DateTime (g.Key))) {
36 | from hs in g
37 | select (Element) new SessionElement (hs)
38 | }};
39 |
40 | if(favs.Count == 0)
41 | {
42 | var section = new Section("Whoops, Star a few sessions first!");
43 | root.Add(section);
44 | }
45 | return root;
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/Android/Resources/Layout/HomeItem.axml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
20 |
21 |
30 |
31 |
40 |
41 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Monospace11 is licensed under the terms of the MIT X11 license.
2 |
3 | The MonoTouch.Dialog project was developed by Miguel de Icaza
4 | and id licensed also under the MIT X11 license (iOS project).
5 |
6 | The SQlite-net binding was developed by Krueger Systems and is
7 | licensed also under the MIT X11 license (iOS project).
8 |
9 | The MIT X11 license follows:
10 |
11 | Permission is hereby granted, free of charge, to any person obtaining a copy
12 | of this software and associated documentation files (the "Software"), to deal
13 | in the Software without restriction, including without limitation the rights
14 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15 | copies of the Software, and to permit persons to whom the Software is
16 | furnished to do so, subject to the following conditions:
17 |
18 | The above copyright notice and this permission notice shall be included in
19 | all copies or substantial portions of the Software.
20 |
21 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
27 | THE SOFTWARE.
--------------------------------------------------------------------------------
/iOS/TabSchedule/SessionCellController.xib.cs:
--------------------------------------------------------------------------------
1 |
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Linq;
5 | using MonoTouch.Foundation;
6 | using MonoTouch.UIKit;
7 |
8 | namespace Monospace11
9 | {
10 | public partial class SessionCellController : UIViewController
11 | {
12 | #region Constructors
13 |
14 | // The IntPtr and NSCoder constructors are required for controllers that need
15 | // to be able to be created from a xib rather than from managed code
16 |
17 | public SessionCellController (IntPtr handle) : base(handle)
18 | {
19 | Initialize ();
20 | }
21 |
22 | [Export("initWithCoder:")]
23 | public SessionCellController (NSCoder coder) : base(coder)
24 | {
25 | Initialize ();
26 | }
27 |
28 | public SessionCellController ()
29 | {
30 | Initialize ();
31 | }
32 |
33 | void Initialize ()
34 | {
35 | }
36 |
37 | #endregion
38 |
39 |
40 | public string SessionTitle
41 | {
42 | get { return labelTitle.Text; }
43 | set { labelTitle.Text = value; }
44 | }
45 | public string Subtitle
46 | {
47 | get { return labelSubtitle.Text; }
48 | set { labelSubtitle.Text = value; }
49 | }
50 |
51 | public string Time
52 | {
53 | get { return labelTime.Text; }
54 | set { labelTime.Text = value; }
55 | }
56 | public string EndTime
57 | {
58 | get { return labelTimeEnd.Text; }
59 | set { labelTimeEnd.Text = value; }
60 | }
61 | public UITableViewCell Cell
62 | {
63 | get { return cell; }
64 | }
65 |
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/iOS/SessionDatabase/Database.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using Path = System.IO.Path;
5 | using SQLite;
6 |
7 | namespace Monospace11
8 | {
9 | public class FavoriteSession
10 | {
11 | [PrimaryKey]
12 | public string Code {get;set;}
13 | }
14 | ///
15 | /// Use to store 'favorite sessions'
16 | ///
17 | public class UserDatabase : SQLiteConnection
18 | {
19 | public UserDatabase (string path) : base (path)
20 | {
21 | CreateTable();
22 | }
23 | public IEnumerable GetFavorites ()
24 | {
25 | return Query ("SELECT Code FROM FavoriteSession ORDER BY Code");
26 | }
27 | public List GetFavoriteCodes ()
28 | {
29 | IEnumerable x = Query ("SELECT Code FROM FavoriteSession ORDER BY Code");
30 | List l = new List();
31 | foreach (var s in x)
32 | l.Add(s.Code);
33 | return l;
34 | }
35 | public bool IsFavorite (string sessionCode)
36 | {
37 | IEnumerable x = Query ("SELECT Code FROM FavoriteSession WHERE Code = ?", sessionCode);
38 | return x.ToList().Count > 0;
39 | }
40 | public void AddFavoriteSession (string sessionCode) {
41 | Insert(new FavoriteSession() {
42 | Code = sessionCode
43 | });
44 | }
45 | public void RemoveFavoriteSession (string sessionCode) {
46 | Delete(new FavoriteSession() {
47 | Code = sessionCode
48 | });
49 | }
50 | }
51 | }
--------------------------------------------------------------------------------
/Android/ObjectModel/DayConferenceViewModel.cs:
--------------------------------------------------------------------------------
1 | using Android.Runtime;
2 |
3 | namespace Conf.ObjectModel
4 | {
5 | [Preserve]
6 | public class DayConferenceViewModel
7 | {
8 | public int SortOrder { get; set; }
9 | public string Section { get; set; }
10 | public string Day { get; set; }
11 | public string ConfCode { get; set; }
12 | public string SessCode { get; set; }
13 |
14 | private string _lineOne;
15 | ///
16 | /// Sample ViewModel property; this property is used in the view to display its value using a Binding.
17 | ///
18 | public string LineOne
19 | {
20 | get
21 | {
22 | return _lineOne;
23 | }
24 | set
25 | {
26 | if (value != _lineOne)
27 | {
28 | _lineOne = value;
29 | }
30 | }
31 | }
32 |
33 | private string _lineTwo;
34 | ///
35 | /// Sample ViewModel property; this property is used in the view to display its value using a Binding.
36 | ///
37 | public string LineTwo
38 | {
39 | get
40 | {
41 | return _lineTwo;
42 | }
43 | set
44 | {
45 | if (value != _lineTwo)
46 | {
47 | _lineTwo = value;
48 | }
49 | }
50 | }
51 | }
52 | }
--------------------------------------------------------------------------------
/iOS/TabSessions/TagsViewController.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using MonoTouch.UIKit;
5 | using MonoTouch.Dialog;
6 |
7 | namespace Monospace11
8 | {
9 | public class TagsViewController : DialogViewController
10 | {
11 | public TagsViewController () : base (null)
12 | {
13 | }
14 |
15 | public override void LoadView ()
16 | {
17 | Root = GenerateRoot ();
18 | base.LoadView ();
19 | }
20 |
21 | RootElement GenerateRoot ()
22 | {
23 | // The full list
24 | var allSessions = new RootElement ("All Sessions") {
25 | from s in AppDelegate.ConferenceData.Sessions
26 | orderby s.Start ascending
27 | group s by s.Start.Ticks into g
28 | select new Section (HomeViewController.MakeCaption ("", new DateTime (g.Key))) {
29 | from hs in g
30 | select (Element) new SessionElement (hs)
31 | }};
32 |
33 | // Per tags
34 | var stags = new Section ("By Category") {
35 | from tag in AppDelegate.ConferenceData.Tags
36 | orderby tag.Value
37 | select (Element) new RootElement (tag.Value) {
38 | from s in tag.Sessions
39 | group s by s.Start.Ticks into g
40 | orderby g.Key
41 | select new Section (HomeViewController.MakeCaption ("", new DateTime (g.Key))){
42 | from hs in g
43 | select (Element) new SessionElement (hs)
44 | }}};
45 |
46 | var root = new RootElement ("Sessions") {
47 | new Section ("By Time") {
48 | allSessions
49 | },
50 | stags
51 | };
52 |
53 | return root;
54 | }
55 | }
56 | }
--------------------------------------------------------------------------------
/Android/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("Monospace11")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("ConceptDevelopment.net")]
12 | [assembly: AssemblyProduct("Monospace11")]
13 | [assembly: AssemblyCopyright("Copyright © Craig Dunn 2011")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("a557ce8c-9dbe-4b93-8fc4-95ffc126cf14")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.1.0.0")]
36 | [assembly: AssemblyFileVersion("1.1.0.0")]
37 |
--------------------------------------------------------------------------------
/Android/Adapters/TagsAdapter.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Linq;
3 | using Android.App;
4 | using Android.Views;
5 | using Android.Widget;
6 |
7 | namespace Conf.Activities
8 | {
9 | public class TagsAdapter : BaseAdapter
10 | {
11 | private List _tags;
12 | private Activity _context;
13 |
14 | public TagsAdapter(Activity context, List tags)
15 | {
16 | _context = context;
17 | _tags = tags;
18 | }
19 |
20 | public override View GetView(int position, View convertView, ViewGroup parent)
21 | {
22 | var view = (convertView
23 | ?? _context.LayoutInflater.Inflate(
24 | Resource.Layout.TagsItem, parent, false)
25 | ) as LinearLayout;
26 | var row = _tags.ElementAt(position);
27 |
28 | view.FindViewById(Resource.Id.Title).Text = row.Value;
29 |
30 |
31 | return view;
32 | }
33 |
34 | public override int Count
35 | {
36 | get { return _tags.Count(); }
37 | }
38 |
39 | public ConfXml.Tag2 GetRow(int position)
40 | {
41 | return _tags.ElementAt(position);
42 | }
43 |
44 | public override Java.Lang.Object GetItem(int position)
45 | {
46 | return null;
47 | }
48 |
49 | public override long GetItemId(int position)
50 | {
51 | return position;
52 | }
53 | }
54 | }
--------------------------------------------------------------------------------
/Android/Resources/Layout/Speaker.axml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
15 |
16 |
17 |
23 |
24 |
28 |
29 |
30 |
31 |
37 |
44 |
45 |
46 |
47 |
--------------------------------------------------------------------------------
/Android/Adapters/SessionsAdapter.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Linq;
3 | using Android.App;
4 | using Android.Views;
5 | using Android.Widget;
6 |
7 | namespace Conf.Activities
8 | {
9 | public class SessionsAdapter : BaseAdapter
10 | {
11 | private List _sessions;
12 | private Activity _context;
13 |
14 | public SessionsAdapter(Activity context, List sessions)
15 | {
16 | _context = context;
17 | _sessions = sessions;
18 | }
19 |
20 | public override View GetView(int position, View convertView, ViewGroup parent)
21 | {
22 | var view = (convertView
23 | ?? _context.LayoutInflater.Inflate(
24 | Resource.Layout.SessionsItem, parent, false)
25 | ) as LinearLayout;
26 | var row = _sessions.ElementAt(position);
27 |
28 | view.FindViewById(Resource.Id.Title).Text = row.Title;
29 |
30 | return view;
31 | }
32 |
33 | public override int Count
34 | {
35 | get { return _sessions.Count(); }
36 | }
37 |
38 | public ConfXml.Session GetRow(int position)
39 | {
40 | return _sessions.ElementAt(position);
41 | }
42 |
43 | public override Java.Lang.Object GetItem(int position)
44 | {
45 | return null;
46 | }
47 |
48 | public override long GetItemId(int position)
49 | {
50 | return position;
51 | }
52 | }
53 | }
--------------------------------------------------------------------------------
/Android/Adapters/SpeakersAdapter.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Linq;
3 | using Android.App;
4 | using Android.Views;
5 | using Android.Widget;
6 |
7 | namespace Conf.Activities
8 | {
9 | public class SpeakersAdapter : BaseAdapter
10 | {
11 | private List _speakers;
12 | private Activity _context;
13 |
14 | public SpeakersAdapter(Activity context, List speakers)
15 | {
16 | _context = context;
17 | _speakers = speakers;
18 | }
19 |
20 | public override View GetView(int position, View convertView, ViewGroup parent)
21 | {
22 | var view = (convertView
23 | ?? _context.LayoutInflater.Inflate(
24 | Resource.Layout.SpeakersItem, parent, false)
25 | ) as LinearLayout;
26 | var row = _speakers.ElementAt(position);
27 |
28 | view.FindViewById(Resource.Id.Title).Text = row.Name;
29 |
30 |
31 | return view;
32 | }
33 |
34 | public override int Count
35 | {
36 | get { return _speakers.Count(); }
37 | }
38 |
39 | public ConfXml.Speaker2 GetRow(int position)
40 | {
41 | return _speakers.ElementAt(position);
42 | }
43 |
44 | public override Java.Lang.Object GetItem(int position)
45 | {
46 | return null;
47 | }
48 |
49 | public override long GetItemId(int position)
50 | {
51 | return position;
52 | }
53 | }
54 | }
--------------------------------------------------------------------------------
/iOS/TabSessions/RssSessionsEntryViewController.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Drawing;
4 | using System.Text;
5 | using MonoTouch.Foundation;
6 | using MonoTouch.UIKit;
7 |
8 | namespace MIX10
9 | {
10 |
11 | public class RssSessionsEntryViewController: UIViewController
12 | {
13 | ///
14 | /// RssViewController
15 | ///
16 | //RssViewController rootmvc;
17 | string _html;//,_title;
18 |
19 | public RssSessionsEntryViewController (string title, string html) : base()
20 | {
21 | _html = html;
22 | //_title = title;
23 | }
24 |
25 | public UITextView textView;
26 | public UIWebView webView;
27 |
28 | public override void ViewDidLoad ()
29 | {
30 | base.ViewDidLoad ();
31 | // no XIB !
32 | webView = new UIWebView()
33 | {
34 | ScalesPageToFit = false
35 | };
36 | webView.LoadHtmlString(FormatText(), new NSUrl());
37 |
38 | // Set the web view to fit the width of the app.
39 | webView.SizeToFit();
40 |
41 | // Reposition and resize the receiver
42 | webView.Frame = new RectangleF (
43 | 0, 0, this.View.Frame.Width, this.View.Frame.Height);
44 |
45 | // Add the table view as a subview
46 | this.View.AddSubview(webView);
47 |
48 | }
49 | ///
50 | /// Format the parts-of-speech text for UIWebView
51 | ///
52 | private string FormatText()
53 | {
54 | StringBuilder sb = new StringBuilder();
55 |
56 | sb.Append("");
57 | sb.Append(_html);
58 | sb.Append("
");
59 | return sb.ToString();
60 | }
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/iOS/MonoTouch.Dialog/ChangeLog:
--------------------------------------------------------------------------------
1 | 2010-06-16 Eric Maupin
2 |
3 | * Elements.cs: Added support on FloatElement for an optional
4 | caption (default is still no caption).
5 |
6 | * Reflect.cs: Added [Range] optional captions support.
7 |
8 | 2010-06-18 Eric Maupin
9 |
10 | * Element.cs: EntryElement: Fixed an error with FetchValue
11 | if the text field hadn't yet been generated.
12 |
13 | StringElement: SelectionStyle is only blue when there's a
14 | tap handler registered.
15 |
16 | 2010-06-17 Eric Maupin
17 |
18 | * Reflect.cs: EntryAttribute: Removed placeholder requirement
19 | and added KeyboardType support.
20 |
21 | 2010-05-16 Miguel de Icaza
22 |
23 | * DialogViewController.cs (StartSearch, FinishSearch,
24 | PerformFilter): Made public these methods. They allow consumers
25 | to start, stop and trigger a filter operation programatically.
26 |
27 | (OnSearchTextChanged): New virtual method that subclasses can hook
28 | up into to check for changes in the search bar.
29 |
30 | (SearchTextChanged): Event to listen to changes in the search.
31 |
32 | (Selected): New virtual method that actually dispatches to the
33 | Selected method in the element. This wasy subclasses can catch
34 | the Selected method without having to hook up hundreds of
35 | methods.
36 |
37 | * Element.cs (Section.Insert): the overload that takes an
38 | IEnumerable now returns the number of items that were inserted.
39 |
40 | (Section.Remove): Add new overload to remove an element from the
41 | section.
42 |
43 | (RootElement): New constructor that can take a function that
44 | creates the nested DialogViewController, this prevents code from
45 | having to derive a new class just to push a new kind of
46 | UIViewController.
47 |
48 |
--------------------------------------------------------------------------------
/Android/Activities/TagsActivity.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | using Android.App;
5 | using Android.Content;
6 | using Android.OS;
7 | using Android.Views;
8 | using Android.Widget;
9 |
10 | namespace Conf.Activities
11 | {
12 | [Activity(Label = "Tags")]
13 | public class TagsActivity : BaseActivity
14 | {
15 | List _tags;
16 | ListView _list;
17 |
18 | protected override void OnCreate(Bundle bundle)
19 | {
20 | base.OnCreate(bundle);
21 |
22 | RequestWindowFeature(WindowFeatures.CustomTitle); // BETTER: http://www.anddev.org/my_own_titlebar_backbutton_like_on_the_iphone-t4591.html
23 | SetContentView(Resource.Layout.Tags);
24 | Window.SetFeatureInt(WindowFeatures.CustomTitle, Resource.Layout.WindowTitle); // http://www.londatiga.net/it/how-to-create-custom-window-title-in-android/
25 |
26 | _list = FindViewById(Resource.Id.List);
27 | _list.ItemClick += new EventHandler(_list_ItemClick);
28 |
29 | _tags = Conf.Current.ConfItem.Tags;
30 | }
31 | protected override void OnResume()
32 | {
33 | base.OnResume();
34 | refreshTags();
35 | }
36 | private void refreshTags()
37 | {
38 | _list.Adapter = new TagsAdapter(this, _tags);
39 | }
40 |
41 | private void _list_ItemClick(object sender, ItemEventArgs e)
42 | {
43 | var tag = ((TagsAdapter)_list.Adapter).GetRow(e.Position);
44 |
45 | var intent = new Intent();
46 | intent.SetClass(this, typeof(SessionsActivity));
47 | intent.PutExtra("Tag", tag.Value);
48 |
49 | StartActivity(intent);
50 | }
51 | }
52 | }
--------------------------------------------------------------------------------
/Android/Activities/FavouritesActivity.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | using Android.App;
5 | using Android.Content;
6 | using Android.OS;
7 | using Android.Views;
8 | using Android.Widget;
9 |
10 | namespace Conf.Activities
11 | {
12 | [Activity(Label = "My Schedule")]
13 | public class FavouritesActivity : BaseActivity
14 | {
15 | List _favourites;
16 | ListView _list;
17 |
18 | protected override void OnCreate(Bundle bundle)
19 | {
20 | base.OnCreate(bundle);
21 |
22 | RequestWindowFeature(WindowFeatures.CustomTitle); // BETTER: http://www.anddev.org/my_own_titlebar_backbutton_like_on_the_iphone-t4591.html
23 | SetContentView(Resource.Layout.Favourites);
24 | Window.SetFeatureInt(WindowFeatures.CustomTitle, Resource.Layout.WindowTitle); // http://www.londatiga.net/it/how-to-create-custom-window-title-in-android/
25 |
26 | _list = FindViewById(Resource.Id.List);
27 | _list.ItemClick += new EventHandler(_list_ItemClick);
28 |
29 | _favourites = Conf.Current.FavoriteSessions;
30 | }
31 | protected override void OnResume()
32 | {
33 | base.OnResume();
34 | refreshFavourites();
35 | }
36 | private void refreshFavourites()
37 | {
38 | _list.Adapter = new FavouritesAdapter(this, _favourites);
39 | }
40 | private void _list_ItemClick(object sender, ItemEventArgs e)
41 | {
42 | var session = ((FavouritesAdapter)_list.Adapter).GetRow(e.Position);
43 |
44 | var intent = new Intent();
45 | intent.SetClass(this, typeof(SessionActivity));
46 | intent.PutExtra("Code", session.Code);
47 |
48 | StartActivity(intent);
49 | }
50 | }
51 | }
--------------------------------------------------------------------------------
/Android/Activities/SpeakersActivity.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | using Android.App;
5 | using Android.Content;
6 | using Android.OS;
7 | using Android.Views;
8 | using Android.Widget;
9 |
10 | namespace Conf.Activities
11 | {
12 | [Activity(Label = "Speakers")]
13 | public class SpeakersActivity : BaseActivity
14 | {
15 | ListView _list;
16 | List _speakers;
17 |
18 | protected override void OnCreate(Bundle bundle)
19 | {
20 | base.OnCreate(bundle);
21 |
22 | RequestWindowFeature(WindowFeatures.CustomTitle); // BETTER: http://www.anddev.org/my_own_titlebar_backbutton_like_on_the_iphone-t4591.html
23 | SetContentView(Resource.Layout.Speakers);
24 | Window.SetFeatureInt(WindowFeatures.CustomTitle, Resource.Layout.WindowTitle); // http://www.londatiga.net/it/how-to-create-custom-window-title-in-android/
25 |
26 | _speakers = Conf.Current.ConfItem.Speakers ;
27 |
28 | _list = FindViewById(Resource.Id.List);
29 | _list.ItemClick += new EventHandler(_list_ItemClick);
30 | }
31 | protected override void OnResume()
32 | {
33 | base.OnResume();
34 | refreshSpeakers();
35 | }
36 | private void refreshSpeakers()
37 | {
38 | _list.Adapter = new SpeakersAdapter(this, _speakers);
39 | }
40 |
41 | private void _list_ItemClick(object sender, ItemEventArgs e)
42 | {
43 | var speaker = ((SpeakersAdapter)_list.Adapter).GetRow(e.Position);
44 |
45 | var intent = new Intent();
46 | intent.SetClass(this, typeof(SpeakerActivity));
47 | intent.PutExtra("Name", speaker.Name);
48 |
49 | StartActivity(intent);
50 | }
51 | }
52 | }
--------------------------------------------------------------------------------
/Android/Resources/AboutResources.txt:
--------------------------------------------------------------------------------
1 | Images, layout descriptions, binary blobs and string dictionaries can be included
2 | in your application as resource files. Various Android APIs are designed to
3 | operate on the resource IDs instead of dealing with images, strings or binary blobs
4 | directly.
5 |
6 | For example, a sample Android app that contains a user interface layout (Main.xml),
7 | an internationalization string table (Strings.xml) and some icons (drawable/Icon.png)
8 | would keep its resources in the "Resources" directory of the application:
9 |
10 | Resources/
11 | Drawable/
12 | Icon.png
13 |
14 | Layout/
15 | Main.axml
16 |
17 | Values/
18 | Strings.xml
19 |
20 | In order to get the build system to recognize Android resources, the build action should be set
21 | to "AndroidResource". The native Android APIs do not operate directly with filenames, but
22 | instead operate on resource IDs. When you compile an Android application that uses resources,
23 | the build system will package the resources for distribution and generate a class called
24 | "Resource" that contains the tokens for each one of the resources included. For example,
25 | for the above Resources layout, this is what the Resource class would expose:
26 |
27 | public class Resource {
28 | public class Drawable {
29 | public const int Icon = 0x123;
30 | }
31 |
32 | public class Layout {
33 | public const int Main = 0x456;
34 | }
35 |
36 | public class String {
37 | public const int FirstString = 0xabc;
38 | public const int SecondString = 0xbcd;
39 | }
40 | }
41 |
42 | You would then use Resource.Drawable.Icon to reference the Drawable/Icon.png file, or
43 | Resource.Layout.Main to reference the Layout/Main.axml file, or Resource.String.FirstString
44 | to reference the first string in the dictionary file Values/Strings.xml.
--------------------------------------------------------------------------------
/Android/Adapters/FavouritesAdapter.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Linq;
3 | using Android.App;
4 | using Android.Views;
5 | using Android.Widget;
6 |
7 | namespace Conf.Activities
8 | {
9 | public class FavouritesAdapter : BaseAdapter
10 | {
11 | private List _favourites;
12 | private Activity _context;
13 |
14 | public FavouritesAdapter(Activity context, List sessions)
15 | {
16 | _context = context;
17 | _favourites = sessions;
18 | }
19 |
20 | public override View GetView(int position, View convertView, ViewGroup parent)
21 | {
22 | var view = (convertView
23 | ?? _context.LayoutInflater.Inflate(
24 | Resource.Layout.FavouritesItem, parent, false)
25 | ) as LinearLayout;
26 | var row = _favourites.ElementAt(position);
27 |
28 | view.FindViewById(Resource.Id.Time).Text = row.DateTimeQuickJumpDisplay;
29 | view.FindViewById(Resource.Id.Title).Text = row.Title;
30 | if (row.Room != "")
31 | view.FindViewById(Resource.Id.Room).Text = row.Room + " room";
32 |
33 |
34 | return view;
35 | }
36 |
37 | public override int Count
38 | {
39 | get { return _favourites.Count(); }
40 | }
41 |
42 | public ConfXml.Session2 GetRow(int position)
43 | {
44 | return _favourites.ElementAt(position);
45 | }
46 |
47 | public override Java.Lang.Object GetItem(int position)
48 | {
49 | return null;
50 | }
51 |
52 | public override long GetItemId(int position)
53 | {
54 | return position;
55 | }
56 | }
57 | }
--------------------------------------------------------------------------------
/Android/Adapters/Sessions2Adapter.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Linq;
3 | using Android.App;
4 | using Android.Views;
5 | using Android.Widget;
6 |
7 | namespace Conf.Activities
8 | {
9 | public class Sessions2Adapter : BaseAdapter
10 | {
11 | private List _sessions;
12 | private Activity _context;
13 |
14 | public Sessions2Adapter(Activity context, List sessions)
15 | {
16 | _context = context;
17 | _sessions = sessions;
18 | }
19 |
20 | public override View GetView(int position, View convertView, ViewGroup parent)
21 | {
22 | var view = (convertView
23 | ?? _context.LayoutInflater.Inflate(
24 | Resource.Layout.Sessions2Item, parent, false)
25 | ) as LinearLayout;
26 | var row = _sessions.ElementAt(position);
27 |
28 | view.FindViewById(Resource.Id.Time).Text = row.DateTimeDisplay;
29 |
30 | view.FindViewById(Resource.Id.Title).Text = row.Title;
31 |
32 | if (row.Room == "")
33 | view.FindViewById(Resource.Id.Room).Text = row.SpeakerList;
34 | else
35 | view.FindViewById(Resource.Id.Room).Text = row.Room + " room; " + row.SpeakerList;
36 |
37 |
38 | return view;
39 | }
40 |
41 | public override int Count
42 | {
43 | get { return _sessions.Count(); }
44 | }
45 |
46 | public ConfXml.Session2 GetRow(int position)
47 | {
48 | return _sessions.ElementAt(position);
49 | }
50 |
51 | public override Java.Lang.Object GetItem(int position)
52 | {
53 | return null;
54 | }
55 |
56 | public override long GetItemId(int position)
57 | {
58 | return position;
59 | }
60 | }
61 | }
--------------------------------------------------------------------------------
/iOS/TabMap/MapFlipViewController.cs:
--------------------------------------------------------------------------------
1 | using MIX10Xml;
2 | using MonoTouch.UIKit;
3 | using System;
4 | using System.Drawing;
5 |
6 | namespace Monospace11
7 | {
8 | public class MapFlipViewController : UIViewController
9 | {
10 | MapViewController mapView;
11 | MapLocationViewController locationView;
12 |
13 | public override void ViewDidLoad ()
14 | {
15 | base.ViewDidLoad ();
16 | mapView = new MapViewController(this);
17 | mapView.View.Frame = new RectangleF(0,0,this.View.Frame.Width, this.View.Frame.Height);
18 | this.View.AddSubview(mapView.View);
19 | }
20 |
21 | public void Flip(MapLocation toLocation)
22 | {
23 | mapView.SetLocation(toLocation); // assume not null, since it's created in ViewDidLoad ??
24 |
25 | Flip();
26 | }
27 |
28 | public void Flip()
29 | {
30 | // lazy load the non-default view
31 | if (locationView == null)
32 | {
33 | locationView = new MapLocationViewController(this);
34 | locationView.View.Frame = new RectangleF(0,0,this.View.Frame.Width, this.View.Frame.Height);
35 | }
36 | UIView.BeginAnimations("Flipper");
37 | UIView.SetAnimationDuration(1.25);
38 | UIView.SetAnimationCurve(UIViewAnimationCurve.EaseInOut);
39 | if (mapView.View.Superview == null)
40 | { // to map
41 | UIView.SetAnimationTransition (UIViewAnimationTransition.FlipFromRight, this.View, true);
42 | locationView.ViewWillAppear(true);
43 | mapView.ViewWillDisappear(true);
44 |
45 | locationView.View.RemoveFromSuperview();
46 | this.View.AddSubview(mapView.View);
47 |
48 | mapView.ViewDidDisappear(true);
49 | locationView.ViewDidAppear(true);
50 | }
51 | else
52 | { // to list
53 | UIView.SetAnimationTransition (UIViewAnimationTransition.FlipFromLeft, this.View, true);
54 | mapView.ViewWillAppear(true);
55 | locationView.ViewWillDisappear(true);
56 |
57 | mapView.View.RemoveFromSuperview();
58 | this.View.AddSubview(locationView.View);
59 |
60 | locationView.ViewDidDisappear(true);
61 | mapView.ViewDidAppear(true);
62 | }
63 | UIView.CommitAnimations();
64 | }
65 | }
66 | }
67 |
--------------------------------------------------------------------------------
/iOS/WebViewController.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Drawing;
3 | using MonoTouch.UIKit;
4 | using MonoTouch.Foundation;
5 |
6 | namespace Monospace11
7 | {
8 | public class WebViewController : UIViewController {
9 | UIWebView webView;
10 | UIToolbar navBar;
11 | NSUrlRequest url;
12 | UIBarButtonItem [] items;
13 |
14 | public WebViewController (NSUrlRequest url) : base ()
15 | {
16 | this.url = url;
17 | }
18 |
19 | public override void ViewDidLoad ()
20 | {
21 | base.ViewDidLoad ();
22 | navBar = new UIToolbar ();
23 | navBar.Frame = new RectangleF (0, this.View.Frame.Height-130, this.View.Frame.Width, 40);
24 |
25 | items = new UIBarButtonItem [] {
26 | new UIBarButtonItem ("Back", UIBarButtonItemStyle.Bordered, (o, e) => { webView.GoBack (); }),
27 | new UIBarButtonItem ("Forward", UIBarButtonItemStyle.Bordered, (o, e) => { webView.GoForward (); }),
28 | new UIBarButtonItem (UIBarButtonSystemItem.FlexibleSpace, null),
29 | new UIBarButtonItem (UIBarButtonSystemItem.Refresh, (o, e) => { webView.Reload (); }),
30 | new UIBarButtonItem (UIBarButtonSystemItem.Stop, (o, e) => { webView.StopLoading (); })
31 | };
32 | navBar.Items = items;
33 |
34 | SetNavBarColor();
35 |
36 | webView = new UIWebView ();
37 | webView.Frame = new RectangleF (0, 0, this.View.Frame.Width, this.View.Frame.Height-130);
38 |
39 | webView.LoadStarted += delegate {
40 | UIApplication.SharedApplication.NetworkActivityIndicatorVisible = true;
41 | };
42 | webView.LoadFinished += delegate {
43 | UIApplication.SharedApplication.NetworkActivityIndicatorVisible = false;
44 | };
45 |
46 | webView.ScalesPageToFit = true;
47 | webView.SizeToFit ();
48 | webView.LoadRequest (url);
49 |
50 | this.View.AddSubview (webView);
51 | this.View.AddSubview (navBar);
52 | }
53 |
54 | private void SetNavBarColor ()
55 | {
56 | navBar.BarStyle = UIBarStyle.Black;
57 | var frame = new RectangleF(0f, 0f, this.View.Bounds.Width, 40f);
58 | using (var v = new UIView(frame))
59 | {
60 | using(var imageView = new UIImageView(UIImage.FromFile("/Images/TabBarBackground.png")))
61 | {
62 | imageView.Frame = frame;
63 | imageView.Alpha = 0.43f;
64 | navBar.AddSubview(imageView);
65 | }
66 | }
67 | }
68 | }
69 | }
70 |
71 |
--------------------------------------------------------------------------------
/iOS/TabSpeakers/SpeakerBioViewController.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Drawing;
4 | using System.Text;
5 | using MonoTouch.Foundation;
6 | using MonoTouch.UIKit;
7 |
8 | namespace Monospace11
9 | {
10 | ///
11 | /// Uses UIWebView since we want to format the text display (with HTML)
12 | ///
13 | public class SpeakerBioViewController : WebViewControllerBase
14 | {
15 | MIX10Xml.Speaker _speaker;
16 |
17 | public SpeakerBioViewController (MIX10Xml.Speaker speaker) : base()
18 | {
19 | _speaker = speaker;
20 | }
21 | public void Update (MIX10Xml.Speaker speaker)
22 | {
23 | _speaker = speaker;
24 | LoadHtmlString (FormatText ());
25 | }
26 |
27 | public override void ViewDidLoad ()
28 | {
29 | base.ViewDidLoad ();
30 | webView.Delegate = new WebViewDelegate (this);
31 | }
32 | class WebViewDelegate : UIWebViewDelegate
33 | {
34 | private SpeakerBioViewController _c;
35 | public WebViewDelegate (SpeakerBioViewController bc)
36 | {
37 | _c = bc;
38 | }
39 | private SessionViewController sessVC;
40 |
41 | public override bool ShouldStartLoad (UIWebView webView, NSUrlRequest request, UIWebViewNavigationType navigationType)
42 | {
43 | if (navigationType == UIWebViewNavigationType.LinkClicked) {
44 | string path = request.Url.Path.Substring (1);
45 | if (sessVC == null)
46 | sessVC = new SessionViewController (path);
47 | else
48 | sessVC.Update (path);
49 | _c.NavigationController.PushViewController (sessVC, true);
50 | }
51 | return true;
52 | }
53 |
54 | }
55 |
56 | protected override string FormatText ()
57 | {
58 | StringBuilder sb = new StringBuilder ();
59 |
60 | sb.Append (StyleHtmlSnippet);
61 | sb.Append ("" + _speaker.Name + "
" + Environment.NewLine);
62 |
63 | if (!string.IsNullOrEmpty (_speaker.Bio)) {
64 | sb.Append ("" + _speaker.Bio + "
" + Environment.NewLine);
65 |
66 | }
67 | sb.Append ("
");
68 | foreach (var session in _speaker.Sessions) {
69 | sb.Append ("
");
70 | }
71 | return sb.ToString ();
72 | }
73 | }
74 |
75 | }
76 |
--------------------------------------------------------------------------------
/iOS/MonoTouch.Dialog/OwnerDrawnElement.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Drawing;
3 | using MonoTouch.UIKit;
4 | using MonoTouch.CoreFoundation;
5 | using MonoTouch.CoreGraphics;
6 | using MonoTouch.Foundation;
7 |
8 | namespace MonoTouch.Dialog
9 | {
10 | public abstract class OwnerDrawnElement : Element, IElementSizing
11 | {
12 | public string CellReuseIdentifier
13 | {
14 | get;set;
15 | }
16 |
17 | public UITableViewCellStyle Style
18 | {
19 | get;set;
20 | }
21 |
22 | public OwnerDrawnElement (UITableViewCellStyle style, string cellIdentifier) : base(null)
23 | {
24 | this.CellReuseIdentifier = cellIdentifier;
25 | this.Style = style;
26 | }
27 |
28 | public float GetHeight (UITableView tableView, NSIndexPath indexPath)
29 | {
30 | return Height(tableView.Bounds);
31 | }
32 |
33 | public override UITableViewCell GetCell (UITableView tv)
34 | {
35 | OwnerDrawnCell cell = tv.DequeueReusableCell(this.CellReuseIdentifier) as OwnerDrawnCell;
36 |
37 | if (cell == null)
38 | {
39 | cell = new OwnerDrawnCell(this, this.Style, this.CellReuseIdentifier);
40 | cell.Update();
41 | }
42 |
43 | return cell;
44 | }
45 |
46 | public abstract void Draw(RectangleF bounds, CGContext context, UIView view);
47 |
48 | public abstract float Height(RectangleF bounds);
49 |
50 | class OwnerDrawnCell : UITableViewCell
51 | {
52 | OwnerDrawnCellView view;
53 |
54 | public OwnerDrawnCell(OwnerDrawnElement element, UITableViewCellStyle style, string cellReuseIdentifier) : base(style, cellReuseIdentifier)
55 | {
56 | view = new OwnerDrawnCellView(element);
57 | ContentView.Add(view);
58 | }
59 |
60 | public void Update()
61 | {
62 | SetNeedsDisplay();
63 | }
64 |
65 | public override void LayoutSubviews ()
66 | {
67 | base.LayoutSubviews ();
68 |
69 | view.Frame = ContentView.Bounds;
70 | }
71 | }
72 |
73 | class OwnerDrawnCellView : UIView
74 | {
75 | OwnerDrawnElement element;
76 |
77 | public OwnerDrawnCellView(OwnerDrawnElement element)
78 | {
79 | this.element = element;
80 | }
81 |
82 | public void Update()
83 | {
84 | SetNeedsDisplay();
85 |
86 | }
87 |
88 | public override void Draw (RectangleF rect)
89 | {
90 | CGContext context = UIGraphics.GetCurrentContext();
91 | element.Draw(rect, context, this);
92 | }
93 | }
94 | }
95 | }
96 |
97 |
--------------------------------------------------------------------------------
/Android/Resources/Layout/Session.axml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
15 |
16 |
17 |
18 |
24 |
25 |
30 |
31 |
35 |
39 |
44 |
49 |
50 |
56 |
57 |
58 |
63 |
64 |
69 |
73 |
74 |
75 |
--------------------------------------------------------------------------------
/Android/Activities/SpeakerActivity.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 |
5 | using Android.App;
6 | using Android.Content;
7 | using Android.OS;
8 | using Android.Views;
9 | using Android.Widget;
10 |
11 | namespace Conf.Activities
12 | {
13 | [Activity(Label = "Speaker")]
14 | public class SpeakerActivity : BaseActivity
15 | {
16 | string _name;
17 | ConfXml.Speaker2 _speaker;
18 | List _sessions;
19 | ListView _list;
20 |
21 |
22 | protected override void OnCreate(Bundle bundle)
23 | {
24 | base.OnCreate(bundle);
25 |
26 | RequestWindowFeature(WindowFeatures.CustomTitle); // BETTER: http://www.anddev.org/my_own_titlebar_backbutton_like_on_the_iphone-t4591.html
27 | SetContentView(Resource.Layout.Speaker);
28 | Window.SetFeatureInt(WindowFeatures.CustomTitle, Resource.Layout.WindowTitle); // http://www.londatiga.net/it/how-to-create-custom-window-title-in-android/
29 |
30 | _name = Intent.GetStringExtra("Name");
31 |
32 | var _speaker = (from speaker in Conf.Current.ConfItem.Speakers
33 | where speaker.Name == _name
34 | select speaker).FirstOrDefault();
35 |
36 | if (_speaker.Name != "")
37 | {
38 | FindViewById(Resource.Id.Name).Text = _speaker.Name;
39 |
40 | if (!String.IsNullOrEmpty(_speaker.Bio))
41 | FindViewById(Resource.Id.Bio).Text = _speaker.Bio;
42 | else
43 | {
44 | var tv = FindViewById(Resource.Id.Bio);
45 | tv.Text = "no speaker bio available";
46 | }
47 | _sessions = _speaker.Sessions;
48 |
49 | _list = FindViewById(Resource.Id.SessionList);
50 | _list.ItemClick += new EventHandler(_list_ItemClick);
51 | }
52 | }
53 | protected override void OnResume()
54 | {
55 | base.OnResume();
56 | refreshSpeaker();
57 | }
58 | private void refreshSpeaker()
59 | {
60 | _list.Adapter = new SessionsAdapter(this, _sessions);
61 | }
62 |
63 | private void _list_ItemClick(object sender, ItemEventArgs e)
64 | {
65 | var session = ((SessionsAdapter)_list.Adapter).GetRow(e.Position);
66 |
67 | var intent = new Intent();
68 | intent.SetClass(this, typeof(SessionActivity));
69 | intent.PutExtra("Code", session.Code);
70 |
71 | StartActivity(intent);
72 | }
73 | }
74 | }
--------------------------------------------------------------------------------
/Android/Activities/HomeActivity.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | using Android.App;
5 | using Android.Content;
6 | using Android.OS;
7 | using Android.Runtime;
8 | using Android.Views;
9 | using Android.Widget;
10 |
11 | namespace Conf.Activities
12 | {
13 | [Preserve]
14 | [Activity(Label = "Monospace11", MainLauncher = true, Icon="@drawable/icon")]
15 | public class HomeActivity : BaseActivity
16 | {
17 | ListView _list;
18 | List _schedule;
19 |
20 | protected override void OnCreate(Bundle bundle)
21 | {
22 | base.OnCreate(bundle);
23 |
24 | RequestWindowFeature(WindowFeatures.CustomTitle); // BETTER: http://www.anddev.org/my_own_titlebar_backbutton_like_on_the_iphone-t4591.html
25 | SetContentView(Resource.Layout.Home);
26 | Window.SetFeatureInt(WindowFeatures.CustomTitle, Resource.Layout.WindowTitle); // http://www.londatiga.net/it/how-to-create-custom-window-title-in-android/
27 |
28 | _schedule = Conf.Current.ScheduleItems;
29 |
30 | _list = FindViewById(Resource.Id.List);
31 | _list.ItemClick += new EventHandler(_list_ItemClick);
32 | }
33 | protected override void OnResume()
34 | {
35 | base.OnResume();
36 | refreshSchedule();
37 | }
38 | private void refreshSchedule()
39 | {
40 | _schedule = Conf.Current.ScheduleItems;
41 | _list.Adapter = new HomeAdapter(this, _schedule);
42 | }
43 |
44 | private void _list_ItemClick(object sender, ItemEventArgs e)
45 | {
46 | var bm = ((HomeAdapter)_list.Adapter).GetRow(e.Position);
47 | var intent = new Intent();
48 | switch (bm.SortOrder)
49 | {
50 | case 0:
51 | if (!String.IsNullOrEmpty(bm.Day))
52 | { // use date
53 | intent.SetClass(this, typeof(SessionsActivity));
54 | intent.PutExtra("SelectedDateTime", bm.Day);
55 | }
56 | else
57 | { // use session
58 | intent.SetClass(this, typeof(SessionActivity));
59 | intent.PutExtra("Code", bm.SessCode);
60 | }
61 | StartActivity(intent);
62 | break;
63 | case 1:
64 | intent.SetClass(this, typeof(SessionsActivity));
65 | intent.PutExtra("SelectedDate", bm.Day);
66 |
67 | StartActivity(intent);
68 | break;
69 | case 2:
70 | // for future use
71 | break;
72 | }
73 | }
74 | }
75 | }
--------------------------------------------------------------------------------
/iOS/TabSchedule/SessionCellController.xib.designer.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Mono Runtime Version: 2.0.50727.1433
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | // ------------------------------------------------------------------------------
10 |
11 | namespace Monospace11 {
12 |
13 |
14 | // Base type probably should be MonoTouch.UIKit.UIViewController or subclass
15 | [MonoTouch.Foundation.Register("SessionCellController")]
16 | public partial class SessionCellController {
17 |
18 | private MonoTouch.UIKit.UILabel __mt_labelTime;
19 |
20 | private MonoTouch.UIKit.UILabel __mt_labelTitle;
21 |
22 | private MonoTouch.UIKit.UILabel __mt_labelSubtitle;
23 |
24 | private MonoTouch.UIKit.UITableViewCell __mt_cell;
25 |
26 | private MonoTouch.UIKit.UILabel __mt_labelTimeEnd;
27 |
28 | #pragma warning disable 0169
29 | [MonoTouch.Foundation.Connect("labelTime")]
30 | private MonoTouch.UIKit.UILabel labelTime {
31 | get {
32 | this.__mt_labelTime = ((MonoTouch.UIKit.UILabel)(this.GetNativeField("labelTime")));
33 | return this.__mt_labelTime;
34 | }
35 | set {
36 | this.__mt_labelTime = value;
37 | this.SetNativeField("labelTime", value);
38 | }
39 | }
40 |
41 | [MonoTouch.Foundation.Connect("labelTitle")]
42 | private MonoTouch.UIKit.UILabel labelTitle {
43 | get {
44 | this.__mt_labelTitle = ((MonoTouch.UIKit.UILabel)(this.GetNativeField("labelTitle")));
45 | return this.__mt_labelTitle;
46 | }
47 | set {
48 | this.__mt_labelTitle = value;
49 | this.SetNativeField("labelTitle", value);
50 | }
51 | }
52 |
53 | [MonoTouch.Foundation.Connect("labelSubtitle")]
54 | private MonoTouch.UIKit.UILabel labelSubtitle {
55 | get {
56 | this.__mt_labelSubtitle = ((MonoTouch.UIKit.UILabel)(this.GetNativeField("labelSubtitle")));
57 | return this.__mt_labelSubtitle;
58 | }
59 | set {
60 | this.__mt_labelSubtitle = value;
61 | this.SetNativeField("labelSubtitle", value);
62 | }
63 | }
64 |
65 | [MonoTouch.Foundation.Connect("cell")]
66 | private MonoTouch.UIKit.UITableViewCell cell {
67 | get {
68 | this.__mt_cell = ((MonoTouch.UIKit.UITableViewCell)(this.GetNativeField("cell")));
69 | return this.__mt_cell;
70 | }
71 | set {
72 | this.__mt_cell = value;
73 | this.SetNativeField("cell", value);
74 | }
75 | }
76 |
77 | [MonoTouch.Foundation.Connect("labelTimeEnd")]
78 | private MonoTouch.UIKit.UILabel labelTimeEnd {
79 | get {
80 | this.__mt_labelTimeEnd = ((MonoTouch.UIKit.UILabel)(this.GetNativeField("labelTimeEnd")));
81 | return this.__mt_labelTimeEnd;
82 | }
83 | set {
84 | this.__mt_labelTimeEnd = value;
85 | this.SetNativeField("labelTimeEnd", value);
86 | }
87 | }
88 | }
89 | }
90 |
--------------------------------------------------------------------------------
/iOS/TabMap/MapLocationViewController.cs:
--------------------------------------------------------------------------------
1 | using MIX10Xml;
2 | using MonoTouch.Foundation;
3 | using MonoTouch.UIKit;
4 | using System;
5 | using System.Collections.Generic;
6 | using System.Drawing;
7 | using System.Diagnostics;
8 |
9 | namespace Monospace11
10 | {
11 | public class MapLocationViewController : TableViewControllerBase
12 | {
13 | private UINavigationBar navBar;
14 | private List _locations;
15 | public MapFlipViewController FlipController = null;
16 |
17 | private Conference conf;
18 |
19 | public MapLocationViewController (MapFlipViewController mfvc) : base()
20 | {
21 | conf = AppDelegate.ConferenceData;
22 | FlipController = mfvc;
23 | _locations = conf.Locations; // locations from Xml
24 | _locations.Add(new MapLocation{Title="My location", Location=new MIX10Xml.Point{X=0,Y=0}});
25 | }
26 |
27 | public override void ViewDidLoad ()
28 | {
29 | base.ViewDidLoad ();
30 | // no XIB !
31 | navBar = new UINavigationBar();
32 | navBar.PushNavigationItem (new UINavigationItem("Choose Location"), false);
33 | navBar.BarStyle = UIBarStyle.Black;
34 | navBar.Frame = new RectangleF(0,0,this.View.Frame.Width,45);
35 | navBar.TopItem.RightBarButtonItem = new UIBarButtonItem("Done",UIBarButtonItemStyle.Bordered, delegate {FlipController.Flip();});
36 | tableView.TableHeaderView = navBar;
37 | tableView.Source = new TableViewSource(this, _locations);
38 | }
39 | private class TableViewSource : UITableViewSource
40 | {
41 | private MapLocationViewController _dvc;
42 | private List _locations;
43 | public TableViewSource(MapLocationViewController controller, List locations)
44 | {
45 | _dvc = controller;
46 | _locations = locations;
47 | }
48 |
49 | public override void RowSelected (UITableView tableView, NSIndexPath indexPath)
50 | {
51 | var loc = _locations[indexPath.Row];
52 | Debug.WriteLine("RowSelected: Label=" + loc.Title);
53 | _dvc.FlipController.Flip(_locations[indexPath.Row]);
54 | tableView.DeselectRow(indexPath, true);
55 | }
56 | static NSString kCellIdentifier = new NSString ("MyLocationIdentifier");
57 | public override int RowsInSection (UITableView tableview, int section)
58 | {
59 | return _locations.Count;
60 | }
61 | public override UITableViewCell GetCell (UITableView tableView, NSIndexPath indexPath)
62 | {
63 | UITableViewCell cell = tableView.DequeueReusableCell (kCellIdentifier);
64 | if (cell == null)
65 | {
66 | cell = new UITableViewCell (UITableViewCellStyle.Default, kCellIdentifier);
67 | }
68 | cell.TextLabel.Text = _locations[indexPath.Row].Title;
69 | cell.Accessory = UITableViewCellAccessory.None;
70 | return cell;
71 | }
72 | }
73 | }
74 | }
--------------------------------------------------------------------------------
/Android/Activities/SessionActivity.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Linq;
3 |
4 | using Android.App;
5 | using Android.Content;
6 | using Android.OS;
7 | using Android.Views;
8 | using Android.Widget;
9 |
10 | namespace Conf.Activities
11 | {
12 | [Activity(Label = "Session")]
13 | public class SessionActivity : BaseActivity
14 | {
15 | string _code;
16 | ConfXml.Session2 _session;
17 | bool isFavourite = false;
18 | Button _favouriteButton;
19 |
20 | protected override void OnCreate(Bundle bundle)
21 | {
22 | base.OnCreate(bundle);
23 |
24 | RequestWindowFeature(WindowFeatures.CustomTitle); // BETTER: http://www.anddev.org/my_own_titlebar_backbutton_like_on_the_iphone-t4591.html
25 | SetContentView(Resource.Layout.Session);
26 | Window.SetFeatureInt(WindowFeatures.CustomTitle, Resource.Layout.WindowTitle); // http://www.londatiga.net/it/how-to-create-custom-window-title-in-android/
27 |
28 | _favouriteButton = FindViewById