├── 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 |