~phroa/phone-app

31f8f2dddef1d35557457de9fe53d74deeaad2e4 — Jack Stratton 6 months ago 759462f
Connect to PostgreSQL
M phms/MainActivity.cs => phms/MainActivity.cs +25 -1
@@ 4,11 4,15 @@ using System;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Support.Design.Widget;
using Android.Support.V7.App;
using Android.Widget;
using Npgsql;

namespace phms
{
    using R = Resource;
    
    [Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
    public class MainActivity : AppCompatActivity
    {


@@ 23,7 27,7 @@ namespace phms
            var prefs = GetPreferences(FileCreationMode.Private) ??
                        throw new Exception("Couldn't GetPreferences.");

            var databaseUri = FindViewById<EditText>(Resource.Id.databaseUri) ??
            var databaseUri = FindViewById<EditText>(R.Id.databaseUri) ??
                              throw new Exception("Couldn't FindViewById.");
            databaseUri.Text = prefs.GetString(DatabaseUriPref, "");
            databaseUri.AfterTextChanged += (sender, e) =>


@@ 34,6 38,26 @@ namespace phms
                prefsEditor.PutString(DatabaseUriPref, newValue);
                prefsEditor.Apply();
            };

            var connect = FindViewById<Button>(R.Id.connect) ??
                          throw new Exception("Couldn't FindViewById.");
            connect.Click += (sender, e) =>
            {
                try
                {
                    using var conn = new NpgsqlConnection(databaseUri.Text);
                    conn.Open();
                    using var cmd = new NpgsqlCommand("SHOW server_version", conn);
                    var result = cmd.ExecuteScalar();
                    Snackbar.Make(connect, $"Success, {result}", Snackbar.LengthShort).Show();
                }
                catch
                {
                    Console.WriteLine();
                    Snackbar.Make(connect, "Failure", Snackbar.LengthShort).Show();
                    throw;
                }
            };
        }
    }
}
\ No newline at end of file

M phms/Resources/Resource.Designer.cs => phms/Resources/Resource.Designer.cs +168 -165
@@ 3131,448 3131,451 @@ namespace phms
			public const int collapseActionView = 2131230762;
			
			// aapt resource value: 0x7F08002B
			public const int container = 2131230763;
			public const int connect = 2131230763;
			
			// aapt resource value: 0x7F08002C
			public const int content = 2131230764;
			public const int container = 2131230764;
			
			// aapt resource value: 0x7F08002D
			public const int contentPanel = 2131230765;
			public const int content = 2131230765;
			
			// aapt resource value: 0x7F08002E
			public const int coordinator = 2131230766;
			public const int contentPanel = 2131230766;
			
			// aapt resource value: 0x7F08002F
			public const int coordinator = 2131230767;
			
			// aapt resource value: 0x7F080001
			public const int CTRL = 2131230721;
			
			// aapt resource value: 0x7F08002F
			public const int custom = 2131230767;
			
			// aapt resource value: 0x7F080030
			public const int customPanel = 2131230768;
			public const int custom = 2131230768;
			
			// aapt resource value: 0x7F080031
			public const int databaseUri = 2131230769;
			public const int customPanel = 2131230769;
			
			// aapt resource value: 0x7F080032
			public const int decor_content_parent = 2131230770;
			public const int databaseUri = 2131230770;
			
			// aapt resource value: 0x7F080033
			public const int default_activity_button = 2131230771;
			public const int decor_content_parent = 2131230771;
			
			// aapt resource value: 0x7F080034
			public const int design_bottom_sheet = 2131230772;
			public const int default_activity_button = 2131230772;
			
			// aapt resource value: 0x7F080035
			public const int design_menu_item_action_area = 2131230773;
			public const int design_bottom_sheet = 2131230773;
			
			// aapt resource value: 0x7F080036
			public const int design_menu_item_action_area_stub = 2131230774;
			public const int design_menu_item_action_area = 2131230774;
			
			// aapt resource value: 0x7F080037
			public const int design_menu_item_text = 2131230775;
			public const int design_menu_item_action_area_stub = 2131230775;
			
			// aapt resource value: 0x7F080038
			public const int design_navigation_view = 2131230776;
			public const int design_menu_item_text = 2131230776;
			
			// aapt resource value: 0x7F080039
			public const int disableHome = 2131230777;
			public const int design_navigation_view = 2131230777;
			
			// aapt resource value: 0x7F08003A
			public const int edit_query = 2131230778;
			public const int disableHome = 2131230778;
			
			// aapt resource value: 0x7F08003B
			public const int end = 2131230779;
			public const int edit_query = 2131230779;
			
			// aapt resource value: 0x7F08003C
			public const int enterAlways = 2131230780;
			public const int end = 2131230780;
			
			// aapt resource value: 0x7F08003D
			public const int enterAlwaysCollapsed = 2131230781;
			public const int enterAlways = 2131230781;
			
			// aapt resource value: 0x7F08003E
			public const int exitUntilCollapsed = 2131230782;
			
			// aapt resource value: 0x7F080040
			public const int expanded_menu = 2131230784;
			public const int enterAlwaysCollapsed = 2131230782;
			
			// aapt resource value: 0x7F08003F
			public const int expand_activities_button = 2131230783;
			public const int exitUntilCollapsed = 2131230783;
			
			// aapt resource value: 0x7F080041
			public const int fill = 2131230785;
			public const int expanded_menu = 2131230785;
			
			// aapt resource value: 0x7F080044
			public const int filled = 2131230788;
			// aapt resource value: 0x7F080040
			public const int expand_activities_button = 2131230784;
			
			// aapt resource value: 0x7F080042
			public const int fill_horizontal = 2131230786;
			public const int fill = 2131230786;
			
			// aapt resource value: 0x7F080045
			public const int filled = 2131230789;
			
			// aapt resource value: 0x7F080043
			public const int fill_vertical = 2131230787;
			public const int fill_horizontal = 2131230787;
			
			// aapt resource value: 0x7F080045
			public const int @fixed = 2131230789;
			// aapt resource value: 0x7F080044
			public const int fill_vertical = 2131230788;
			
			// aapt resource value: 0x7F080046
			public const int forever = 2131230790;
			public const int @fixed = 2131230790;
			
			// aapt resource value: 0x7F080047
			public const int forever = 2131230791;
			
			// aapt resource value: 0x7F080002
			public const int FUNCTION = 2131230722;
			
			// aapt resource value: 0x7F080047
			public const int ghost_view = 2131230791;
			
			// aapt resource value: 0x7F080048
			public const int group_divider = 2131230792;
			public const int ghost_view = 2131230792;
			
			// aapt resource value: 0x7F080049
			public const int home = 2131230793;
			public const int group_divider = 2131230793;
			
			// aapt resource value: 0x7F08004A
			public const int homeAsUp = 2131230794;
			public const int home = 2131230794;
			
			// aapt resource value: 0x7F08004B
			public const int icon = 2131230795;
			public const int homeAsUp = 2131230795;
			
			// aapt resource value: 0x7F08004C
			public const int icon_group = 2131230796;
			public const int icon = 2131230796;
			
			// aapt resource value: 0x7F08004D
			public const int ifRoom = 2131230797;
			public const int icon_group = 2131230797;
			
			// aapt resource value: 0x7F08004E
			public const int image = 2131230798;
			public const int ifRoom = 2131230798;
			
			// aapt resource value: 0x7F08004F
			public const int info = 2131230799;
			public const int image = 2131230799;
			
			// aapt resource value: 0x7F080050
			public const int italic = 2131230800;
			public const int info = 2131230800;
			
			// aapt resource value: 0x7F080051
			public const int item_touch_helper_previous_elevation = 2131230801;
			public const int italic = 2131230801;
			
			// aapt resource value: 0x7F080052
			public const int labeled = 2131230802;
			public const int item_touch_helper_previous_elevation = 2131230802;
			
			// aapt resource value: 0x7F080053
			public const int largeLabel = 2131230803;
			public const int labeled = 2131230803;
			
			// aapt resource value: 0x7F080054
			public const int left = 2131230804;
			public const int largeLabel = 2131230804;
			
			// aapt resource value: 0x7F080055
			public const int line1 = 2131230805;
			public const int left = 2131230805;
			
			// aapt resource value: 0x7F080056
			public const int line3 = 2131230806;
			public const int line1 = 2131230806;
			
			// aapt resource value: 0x7F080057
			public const int listMode = 2131230807;
			public const int line3 = 2131230807;
			
			// aapt resource value: 0x7F080058
			public const int list_item = 2131230808;
			public const int listMode = 2131230808;
			
			// aapt resource value: 0x7F080059
			public const int masked = 2131230809;
			public const int list_item = 2131230809;
			
			// aapt resource value: 0x7F08005A
			public const int message = 2131230810;
			public const int masked = 2131230810;
			
			// aapt resource value: 0x7F08005B
			public const int message = 2131230811;
			
			// aapt resource value: 0x7F080003
			public const int META = 2131230723;
			
			// aapt resource value: 0x7F08005B
			public const int middle = 2131230811;
			
			// aapt resource value: 0x7F08005C
			public const int mini = 2131230812;
			public const int middle = 2131230812;
			
			// aapt resource value: 0x7F08005D
			public const int mtrl_child_content_container = 2131230813;
			public const int mini = 2131230813;
			
			// aapt resource value: 0x7F08005E
			public const int mtrl_internal_children_alpha_tag = 2131230814;
			public const int mtrl_child_content_container = 2131230814;
			
			// aapt resource value: 0x7F08005F
			public const int multiply = 2131230815;
			public const int mtrl_internal_children_alpha_tag = 2131230815;
			
			// aapt resource value: 0x7F080060
			public const int navigation_header_container = 2131230816;
			public const int multiply = 2131230816;
			
			// aapt resource value: 0x7F080061
			public const int never = 2131230817;
			public const int navigation_header_container = 2131230817;
			
			// aapt resource value: 0x7F080062
			public const int none = 2131230818;
			public const int never = 2131230818;
			
			// aapt resource value: 0x7F080063
			public const int normal = 2131230819;
			public const int none = 2131230819;
			
			// aapt resource value: 0x7F080064
			public const int notification_background = 2131230820;
			public const int normal = 2131230820;
			
			// aapt resource value: 0x7F080065
			public const int notification_main_column = 2131230821;
			public const int notification_background = 2131230821;
			
			// aapt resource value: 0x7F080066
			public const int notification_main_column_container = 2131230822;
			public const int notification_main_column = 2131230822;
			
			// aapt resource value: 0x7F080067
			public const int outline = 2131230823;
			public const int notification_main_column_container = 2131230823;
			
			// aapt resource value: 0x7F080068
			public const int parallax = 2131230824;
			public const int outline = 2131230824;
			
			// aapt resource value: 0x7F080069
			public const int parentPanel = 2131230825;
			public const int parallax = 2131230825;
			
			// aapt resource value: 0x7F08006A
			public const int parent_matrix = 2131230826;
			public const int parentPanel = 2131230826;
			
			// aapt resource value: 0x7F08006B
			public const int pin = 2131230827;
			public const int parent_matrix = 2131230827;
			
			// aapt resource value: 0x7F08006C
			public const int progress_circular = 2131230828;
			public const int pin = 2131230828;
			
			// aapt resource value: 0x7F08006D
			public const int progress_horizontal = 2131230829;
			public const int progress_circular = 2131230829;
			
			// aapt resource value: 0x7F08006E
			public const int radio = 2131230830;
			public const int progress_horizontal = 2131230830;
			
			// aapt resource value: 0x7F08006F
			public const int right = 2131230831;
			public const int radio = 2131230831;
			
			// aapt resource value: 0x7F080070
			public const int right_icon = 2131230832;
			public const int right = 2131230832;
			
			// aapt resource value: 0x7F080071
			public const int right_side = 2131230833;
			public const int right_icon = 2131230833;
			
			// aapt resource value: 0x7F080072
			public const int save_image_matrix = 2131230834;
			public const int right_side = 2131230834;
			
			// aapt resource value: 0x7F080073
			public const int save_non_transition_alpha = 2131230835;
			public const int save_image_matrix = 2131230835;
			
			// aapt resource value: 0x7F080074
			public const int save_scale_type = 2131230836;
			public const int save_non_transition_alpha = 2131230836;
			
			// aapt resource value: 0x7F080075
			public const int screen = 2131230837;
			public const int save_scale_type = 2131230837;
			
			// aapt resource value: 0x7F080076
			public const int scroll = 2131230838;
			
			// aapt resource value: 0x7F08007A
			public const int scrollable = 2131230842;
			public const int screen = 2131230838;
			
			// aapt resource value: 0x7F080077
			public const int scrollIndicatorDown = 2131230839;
			public const int scroll = 2131230839;
			
			// aapt resource value: 0x7F08007B
			public const int scrollable = 2131230843;
			
			// aapt resource value: 0x7F080078
			public const int scrollIndicatorUp = 2131230840;
			public const int scrollIndicatorDown = 2131230840;
			
			// aapt resource value: 0x7F080079
			public const int scrollView = 2131230841;
			public const int scrollIndicatorUp = 2131230841;
			
			// aapt resource value: 0x7F08007B
			public const int search_badge = 2131230843;
			// aapt resource value: 0x7F08007A
			public const int scrollView = 2131230842;
			
			// aapt resource value: 0x7F08007C
			public const int search_bar = 2131230844;
			public const int search_badge = 2131230844;
			
			// aapt resource value: 0x7F08007D
			public const int search_button = 2131230845;
			public const int search_bar = 2131230845;
			
			// aapt resource value: 0x7F08007E
			public const int search_close_btn = 2131230846;
			public const int search_button = 2131230846;
			
			// aapt resource value: 0x7F08007F
			public const int search_edit_frame = 2131230847;
			public const int search_close_btn = 2131230847;
			
			// aapt resource value: 0x7F080080
			public const int search_go_btn = 2131230848;
			public const int search_edit_frame = 2131230848;
			
			// aapt resource value: 0x7F080081
			public const int search_mag_icon = 2131230849;
			public const int search_go_btn = 2131230849;
			
			// aapt resource value: 0x7F080082
			public const int search_plate = 2131230850;
			public const int search_mag_icon = 2131230850;
			
			// aapt resource value: 0x7F080083
			public const int search_src_text = 2131230851;
			public const int search_plate = 2131230851;
			
			// aapt resource value: 0x7F080084
			public const int search_voice_btn = 2131230852;
			
			// aapt resource value: 0x7F080086
			public const int selected = 2131230854;
			public const int search_src_text = 2131230852;
			
			// aapt resource value: 0x7F080085
			public const int select_dialog_listview = 2131230853;
			public const int search_voice_btn = 2131230853;
			
			// aapt resource value: 0x7F080087
			public const int selected = 2131230855;
			
			// aapt resource value: 0x7F080086
			public const int select_dialog_listview = 2131230854;
			
			// aapt resource value: 0x7F080004
			public const int SHIFT = 2131230724;
			
			// aapt resource value: 0x7F080087
			public const int shortcut = 2131230855;
			
			// aapt resource value: 0x7F080088
			public const int showCustom = 2131230856;
			public const int shortcut = 2131230856;
			
			// aapt resource value: 0x7F080089
			public const int showHome = 2131230857;
			public const int showCustom = 2131230857;
			
			// aapt resource value: 0x7F08008A
			public const int showTitle = 2131230858;
			public const int showHome = 2131230858;
			
			// aapt resource value: 0x7F08008B
			public const int smallLabel = 2131230859;
			public const int showTitle = 2131230859;
			
			// aapt resource value: 0x7F08008C
			public const int snackbar_action = 2131230860;
			public const int smallLabel = 2131230860;
			
			// aapt resource value: 0x7F08008D
			public const int snackbar_text = 2131230861;
			public const int snackbar_action = 2131230861;
			
			// aapt resource value: 0x7F08008E
			public const int snap = 2131230862;
			public const int snackbar_text = 2131230862;
			
			// aapt resource value: 0x7F08008F
			public const int snapMargins = 2131230863;
			public const int snap = 2131230863;
			
			// aapt resource value: 0x7F080090
			public const int spacer = 2131230864;
			public const int snapMargins = 2131230864;
			
			// aapt resource value: 0x7F080091
			public const int split_action_bar = 2131230865;
			public const int spacer = 2131230865;
			
			// aapt resource value: 0x7F080092
			public const int src_atop = 2131230866;
			public const int split_action_bar = 2131230866;
			
			// aapt resource value: 0x7F080093
			public const int src_in = 2131230867;
			public const int src_atop = 2131230867;
			
			// aapt resource value: 0x7F080094
			public const int src_over = 2131230868;
			public const int src_in = 2131230868;
			
			// aapt resource value: 0x7F080095
			public const int start = 2131230869;
			public const int src_over = 2131230869;
			
			// aapt resource value: 0x7F080096
			public const int stretch = 2131230870;
			public const int start = 2131230870;
			
			// aapt resource value: 0x7F080097
			public const int submenuarrow = 2131230871;
			public const int stretch = 2131230871;
			
			// aapt resource value: 0x7F080098
			public const int submit_area = 2131230872;
			public const int submenuarrow = 2131230872;
			
			// aapt resource value: 0x7F080099
			public const int submit_area = 2131230873;
			
			// aapt resource value: 0x7F080005
			public const int SYM = 2131230725;
			
			// aapt resource value: 0x7F080099
			public const int tabMode = 2131230873;
			
			// aapt resource value: 0x7F08009A
			public const int tag_transition_group = 2131230874;
			public const int tabMode = 2131230874;
			
			// aapt resource value: 0x7F08009B
			public const int tag_unhandled_key_event_manager = 2131230875;
			public const int tag_transition_group = 2131230875;
			
			// aapt resource value: 0x7F08009C
			public const int tag_unhandled_key_listeners = 2131230876;
			public const int tag_unhandled_key_event_manager = 2131230876;
			
			// aapt resource value: 0x7F08009D
			public const int text = 2131230877;
			public const int tag_unhandled_key_listeners = 2131230877;
			
			// aapt resource value: 0x7F08009E
			public const int text2 = 2131230878;
			public const int text = 2131230878;
			
			// aapt resource value: 0x7F0800A3
			public const int textinput_counter = 2131230883;
			// aapt resource value: 0x7F08009F
			public const int text2 = 2131230879;
			
			// aapt resource value: 0x7F0800A4
			public const int textinput_error = 2131230884;
			public const int textinput_counter = 2131230884;
			
			// aapt resource value: 0x7F0800A5
			public const int textinput_helper_text = 2131230885;
			public const int textinput_error = 2131230885;
			
			// aapt resource value: 0x7F08009F
			public const int textSpacerNoButtons = 2131230879;
			// aapt resource value: 0x7F0800A6
			public const int textinput_helper_text = 2131230886;
			
			// aapt resource value: 0x7F0800A0
			public const int textSpacerNoTitle = 2131230880;
			public const int textSpacerNoButtons = 2131230880;
			
			// aapt resource value: 0x7F0800A1
			public const int textStart = 2131230881;
			public const int textSpacerNoTitle = 2131230881;
			
			// aapt resource value: 0x7F0800A2
			public const int text_input_password_toggle = 2131230882;
			public const int textStart = 2131230882;
			
			// aapt resource value: 0x7F0800A6
			public const int time = 2131230886;
			// aapt resource value: 0x7F0800A3
			public const int text_input_password_toggle = 2131230883;
			
			// aapt resource value: 0x7F0800A7
			public const int title = 2131230887;
			public const int time = 2131230887;
			
			// aapt resource value: 0x7F0800A8
			public const int titleDividerNoCustom = 2131230888;
			public const int title = 2131230888;
			
			// aapt resource value: 0x7F0800A9
			public const int title_template = 2131230889;
			public const int titleDividerNoCustom = 2131230889;
			
			// aapt resource value: 0x7F0800AA
			public const int top = 2131230890;
			public const int title_template = 2131230890;
			
			// aapt resource value: 0x7F0800AB
			public const int topPanel = 2131230891;
			public const int top = 2131230891;
			
			// aapt resource value: 0x7F0800AC
			public const int touch_outside = 2131230892;
			public const int topPanel = 2131230892;
			
			// aapt resource value: 0x7F0800AD
			public const int transition_current_scene = 2131230893;
			public const int touch_outside = 2131230893;
			
			// aapt resource value: 0x7F0800AE
			public const int transition_layout_save = 2131230894;
			public const int transition_current_scene = 2131230894;
			
			// aapt resource value: 0x7F0800AF
			public const int transition_position = 2131230895;
			public const int transition_layout_save = 2131230895;
			
			// aapt resource value: 0x7F0800B0
			public const int transition_scene_layoutid_cache = 2131230896;
			public const int transition_position = 2131230896;
			
			// aapt resource value: 0x7F0800B1
			public const int transition_transform = 2131230897;
			public const int transition_scene_layoutid_cache = 2131230897;
			
			// aapt resource value: 0x7F0800B2
			public const int uniform = 2131230898;
			public const int transition_transform = 2131230898;
			
			// aapt resource value: 0x7F0800B3
			public const int unlabeled = 2131230899;
			public const int uniform = 2131230899;
			
			// aapt resource value: 0x7F0800B4
			public const int up = 2131230900;
			public const int unlabeled = 2131230900;
			
			// aapt resource value: 0x7F0800B5
			public const int useLogo = 2131230901;
			public const int up = 2131230901;
			
			// aapt resource value: 0x7F0800B6
			public const int view_offset_helper = 2131230902;
			public const int useLogo = 2131230902;
			
			// aapt resource value: 0x7F0800B7
			public const int visible = 2131230903;
			public const int view_offset_helper = 2131230903;
			
			// aapt resource value: 0x7F0800B8
			public const int withText = 2131230904;
			public const int visible = 2131230904;
			
			// aapt resource value: 0x7F0800B9
			public const int wrap_content = 2131230905;
			public const int withText = 2131230905;
			
			// aapt resource value: 0x7F0800BA
			public const int wrap_content = 2131230906;
			
			static Id()
			{

M phms/Resources/layout/activity_main.axml => phms/Resources/layout/activity_main.axml +9 -5
@@ 1,9 1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
                xmlns:app="http://schemas.android.com/apk/res-auto"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_width="match_parent"
                android:layout_height="match_parent" android:padding="20dp">

    <EditText
            android:id="@+id/databaseUri"


@@ 12,5 12,9 @@
            android:ems="10"
            android:inputType="textMultiLine|textNoSuggestions"
            android:hint="Database URI"/>
    
    <Button
            android:text="Connect"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:id="@+id/connect" android:layout_below="@id/databaseUri"/>

</RelativeLayout>
\ No newline at end of file

M phms/phms.csproj => phms/phms.csproj +3 -1
@@ 51,8 51,9 @@
    </PropertyGroup>
    <ItemGroup>
        <Reference Include="System" />
        <Reference Include="System.Xml" />
        <Reference Include="System.Core" />
        <Reference Include="System.Data" />
        <Reference Include="System.Xml" />
        <Reference Include="Mono.Android" />
    </ItemGroup>
    <ItemGroup>


@@ 76,6 77,7 @@
        <AndroidResource Include="Resources\values\styles.xml" />
    </ItemGroup>
    <ItemGroup>
        <PackageReference Include="Npgsql" Version="6.0.0-preview5" />
        <PackageReference Include="Xamarin.Android.Support.Design" Version="28.0.0.3" />
    </ItemGroup>
    <Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />