protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetContentView(Resource.Layout.Navigation); // Create an instance of Preferences which will manage the shared preferences in Android. _Preferences = new Preferences(); // Set up the navigation drawer. CreateNavigationMenu(); if (bundle == null) { // Show the Daily Planner by default. // Create an instance of the fragment. Fragment fragment = new PlannerDailyFragment(); // Use the FragmentManager to assign the fragment to the content layout. //FragmentManager fragmentManager = this.FragmentManager; FragmentManager.BeginTransaction() .Replace(Resource.Id.content, fragment) .Commit(); } }
private void SelectItem(object sender, AdapterView.ItemClickEventArgs e) { Fragment fragment = null; switch (e.Position) { case 0: fragment = new PlannerDailyFragment(); break; case 1: fragment = new PlannerWeeklyFragment(); break; case 2: fragment = new SettingsFragment(); break; case 3: //TODO logout here if (!_Preferences.DemoMode) { // Make sure we're not running in demo mode, then logout and redirect to the login fragment. Logout(); // Destroy the local cookie. _Preferences.AuthenticationCookie = default(Cookie); fragment = new LoginFragment(); } break; } if (fragment != null) { // Load the requested fragment. FragmentManager.BeginTransaction() .Replace(Resource.Id.content, fragment) .AddToBackStack(null) .Commit(); } }
private async void Save_OnClick(object sender, EventArgs e) { try { // Prepare the ActivityLog backend object. BackendActivityLog backend = new BackendActivityLog(); // Get data from the UI TimePicker startTime = View.FindViewById <TimePicker>(Resource.Id.tpStartTime); TimePicker endTime = View.FindViewById <TimePicker>(Resource.Id.tpEndTime); // Create timespan's that hold the updated time for this activity log. TimeSpan newStartTime = new TimeSpan(startTime.Hour, startTime.Minute, 0); TimeSpan newEndTime = new TimeSpan(endTime.Hour, endTime.Minute, 0); // Update the startStart and endTimes. DateTime modStart = _ActivityLogs[_ActivityLogIndex].StartTime.Date + newStartTime; DateTime modEnd = _ActivityLogs[_ActivityLogIndex].EndTime.Date + newEndTime; // Check if Demo mode is enabled, if not - update the acitivity log in the backend. // Otherwise, update the activity log and send it back to the Planner activity. if (!_Preferences.DemoMode) { // Submit these changes to the backend. await backend.Update(_ActivityLogs[_ActivityLogIndex].ActivityLogId, modStart, modEnd); } else { // Update the activity log. _ActivityLogs[_ActivityLogIndex].StartTime = modStart; _ActivityLogs[_ActivityLogIndex].EndTime = modEnd; // Save the activity logs to disk so they can be view on the planner. CacheActivityLogs(); } // Return to the previous fragment. FragmentTransaction fragmentTransaction = FragmentManager.BeginTransaction(); Fragment fragment; // Create an instance of the planner fragment based on the senders view type (weekly or daily). if (_PlannerMode == PlannerFragment.DAILY_VIEW) { fragment = new PlannerDailyFragment(); } else { fragment = new PlannerWeeklyFragment(); } // Create a bundle that can be passed back to the planner. Bundle fragmentBundle = new Bundle(); // Send the activity log's date back to the planner, so that the updated log is in the view. fragmentBundle.PutInt("viewDateYear", _ActivityLogs[_ActivityLogIndex].StartTime.Year); fragmentBundle.PutInt("viewDateMonth", _ActivityLogs[_ActivityLogIndex].StartTime.Month); fragmentBundle.PutInt("viewDateDay", _ActivityLogs[_ActivityLogIndex].StartTime.Day); // Attach the bundle to the fragment and commit it. fragment.Arguments = fragmentBundle; fragmentTransaction.Replace(Resource.Id.content, fragment).Commit(); } catch (System.Net.WebException ex) { if (((HttpWebResponse)ex.Response).StatusCode == HttpStatusCode.Unauthorized) { // The user is not logged in. Move to the Login activity. StartActivity(new Intent(this.Activity, typeof(LoginFragment))); } System.Diagnostics.Debug.WriteLine("Encountered an error while trying to connect to the server: " + ex.Message); } }
private async void Delete_OnClick(object sender, EventArgs e) { // Prepare the Fragment manager. FragmentTransaction fragmentTransaction = FragmentManager.BeginTransaction(); Fragment fragment; // Return to the planner fragment. // Create an instance of the planner fragment based on the senders view type (weekly or daily). if (_PlannerMode == PlannerFragment.DAILY_VIEW) { fragment = new PlannerDailyFragment(); } else { fragment = new PlannerWeeklyFragment(); } // Create a bundle that can be passed back to the planner. Bundle fragmentBundle = new Bundle(); // Send the activity log's date back to the planner. fragmentBundle.PutInt("viewDateYear", _ActivityLogs[_ActivityLogIndex].StartTime.Year); fragmentBundle.PutInt("viewDateMonth", _ActivityLogs[_ActivityLogIndex].StartTime.Month); fragmentBundle.PutInt("viewDateDay", _ActivityLogs[_ActivityLogIndex].StartTime.Day); // Attach the fragment bundle. fragment.Arguments = fragmentBundle; if (!_Preferences.DemoMode) { // Demo mode is disabled. Update the activity log in the backend. try { // Prepare the ActivityLog backend object. BackendActivityLog backend = new BackendActivityLog(); // Submit these changes to the backend. await backend.Delete(_ActivityLogs[_ActivityLogIndex].ActivityLogId); // Switch to the fragment. fragmentTransaction.Replace(Resource.Id.content, fragment).Commit(); } catch (System.Net.WebException ex) { if (((HttpWebResponse)ex.Response).StatusCode == HttpStatusCode.Unauthorized) { // The user is not logged in. Move to the Login activity. StartActivity(new Intent(this.Activity, typeof(LoginFragment))); } System.Diagnostics.Debug.WriteLine("Encountered an error while trying to connect to the server: " + ex.Message); } } else { // Demo mode is enabled, delete the log from the list and write it to disk. _ActivityLogs.RemoveAt(_ActivityLogIndex); CacheActivityLogs(); // Switch to the fragment. fragmentTransaction.Replace(Resource.Id.content, fragment).Commit(); } }
private async void Login_OnClick(object sender, EventArgs e) { // Get the TextView's the contain the username and password. TextView usernameTxt = View.FindViewById <TextView>(Resource.Id.txtUsername); TextView passwordTxt = View.FindViewById <TextView>(Resource.Id.txtPassword); // Extract the text. string username = usernameTxt.Text.Trim(); string password = passwordTxt.Text.Trim(); if (username == "" || password == "") { View.FindViewById <TextView>(Resource.Id.tvErrors).Text = GetString(Resource.String.login_required_fields); return; } // Use a try and catch to determine if the username or password is incorrect. try { // Create an instance of the backend. BackendUser backend = new BackendUser(); await backend.Login(username, password); // Switch back to the Planner fragment Fragment fragment = new PlannerDailyFragment(); // Load the fragment. FragmentManager.BeginTransaction() .Replace(Resource.Id.content, fragment) .Commit(); } catch (WebException ex) { // Use WebException to get the status code returned from the API. if (((HttpWebResponse)ex.Response).StatusCode == HttpStatusCode.Unauthorized) { // User failed to authenticate. Tell them the username or password is incorrect. View.FindViewById <TextView>(Resource.Id.tvErrors).Text = GetString(Resource.String.login_incorrect); } else { // Some other error was thrown. View.FindViewById <TextView>(Resource.Id.tvErrors).Text = GetString(Resource.String.unknown_error); } } catch (BackendTimeoutException) { // Display a popup. DisplayAlert(GetString(Resource.String.timeout), GetString(Resource.String.timeout_message)); } catch (AggregateException ex) { // Catch the aggregate exception, this might be thrown by the asynchronous tasks in the backend. // Handle any of the types that we are aware of. // Managing of aggregate exceptions modified from code found here: https://msdn.microsoft.com/en-us/library/dd537614%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396 ex.Handle((x) => { if (x is WebException) { // Check for an inner exception of Socket Exception if (x.InnerException is System.Net.Sockets.SocketException) { // There is an issue connecting to the backend. DisplayAlert(GetString(Resource.String.connection_failed), GetString(Resource.String.connection_failed_message)); } // This exception matched, return true. return(true); } // Was not able to handle the exception. return(false); }); } }