private void ShowChats(User user) { TextView placeholder = FindViewById <TextView> (Resource.Id.placeholder); var x = db.Table <Chat> (); if (x.Count() > 0) { placeholder.Visibility = ViewStates.Gone; } else { placeholder.Visibility = ViewStates.Visible; placeholder.Text = "No chats found."; } LinearLayout chatList = FindViewById <LinearLayout> (Resource.Id.chatList); chatList.RemoveAllViews(); foreach (var elem in x.OrderByDescending(e => e.time)) { View v; if (setting.FontSize == Setting.Size.large) { v = LayoutInflater.Inflate(Resource.Layout.ChatLarge, null); } else { v = LayoutInflater.Inflate(Resource.Layout.Chat, null); } TextView name = v.FindViewById <TextView>(Resource.Id.chatName); TextView message = v.FindViewById <TextView>(Resource.Id.chatMessage); TextView time = v.FindViewById <TextView>(Resource.Id.chatTime); ImageView image = v.FindViewById <ImageView> (Resource.Id.chatImage); if (elem.Marked) { message.SetTextColor(Color.Green); } new Thread(async() => { try { string conv = elem.conversation; if (conv.Split(',').Length == 2) { if (conv.Split(',')[0] == user.user) { conv = conv.Split(',')[1]; } else { conv = conv.Split(',')[0]; } } var imageBitmap = await network.GetImageBitmapFromUrl(Resources.GetString(Resource.String.profileUrl) + conv + ".png"); RunOnUiThread(() => image.SetImageBitmap(imageBitmap)); } catch (Exception e) { Log.Error("BlaChat", e.StackTrace); } }).Start(); name.TextFormatted = SpannableTools.GetSmiledText(this, new SpannableString(elem.name)); var tmp = db.Table <Message> ().Where(q => q.conversation == elem.conversation).OrderByDescending(q => q.time); var lastMsg = tmp.FirstOrDefault(); if (lastMsg != null) { var escape = lastMsg.text.Replace(""", "\""); escape = escape.Replace("<", "<"); escape = escape.Replace(">", ">"); escape = escape.Replace("&", "&"); if (escape.StartsWith("#image")) { escape = "(image)"; } else if (escape.StartsWith("#video")) { escape = "(video)"; } if (lastMsg.nick == user.user) { message.TextFormatted = SpannableTools.GetSmiledText(this, new SpannableString("Du: " + escape)); } else { if (elem.conversation.Split(',').Length == 2 && lastMsg.nick != "watchdog") { message.TextFormatted = SpannableTools.GetSmiledText(this, new SpannableString(escape)); } else { message.TextFormatted = SpannableTools.GetSmiledText(this, new SpannableString(lastMsg.author + ": " + escape)); } } time.Text = TimeConverter.AutoConvert(lastMsg.time); } else { time.Text = ""; message.Text = "No message"; } v.Clickable = true; v.Click += delegate { var intent = new Intent(this, typeof(ChatActivity)); intent.PutExtra("conversation", elem.conversation); StartActivity(intent); }; chatList.AddView(v); } chatList.Post(() => chatList.RequestLayout()); }
void InitializeView() { var smallFont = FindViewById <RadioButton> (Resource.Id.smallfont); var mediumFont = FindViewById <RadioButton> (Resource.Id.mediumfont); var largeFont = FindViewById <RadioButton> (Resource.Id.largefont); smallFont.Checked = setting.FontSize == Setting.Size.small; mediumFont.Checked = setting.FontSize == Setting.Size.medium; largeFont.Checked = setting.FontSize == Setting.Size.large; largeFont.CheckedChange += delegate { if (largeFont.Checked) { setting.FontSize = Setting.Size.large; db.Update(setting); Refresh(); } }; mediumFont.CheckedChange += delegate { if (mediumFont.Checked) { setting.FontSize = Setting.Size.medium; db.Update(setting); Refresh(); } }; smallFont.CheckedChange += delegate { if (smallFont.Checked) { setting.FontSize = Setting.Size.small; db.Update(setting); Refresh(); } }; var lightTheme = FindViewById <RadioButton> (Resource.Id.lighttheme); var darkTheme = FindViewById <RadioButton> (Resource.Id.darktheme); var materialTheme = FindViewById <RadioButton> (Resource.Id.materialtheme); var materialThemeDark = FindViewById <RadioButton> (Resource.Id.materialthemeDark); var materialThemeBlue = FindViewById <RadioButton> (Resource.Id.materialthemeBlue); var materialThemeDarkBlue = FindViewById <RadioButton> (Resource.Id.materialthemeDarkBlue); var materialThemeGreen = FindViewById <RadioButton> (Resource.Id.materialthemeGreen); var materialThemeDarkGreen = FindViewById <RadioButton> (Resource.Id.materialthemeDarkGreen); lightTheme.Checked = setting.Theme == Resource.Style.LightHolo; darkTheme.Checked = setting.Theme == Resource.Style.DarkHolo; lightTheme.CheckedChange += delegate { if (lightTheme.Checked) { setting.Theme = Resource.Style.LightHolo; db.Update(setting); Refresh(); } }; darkTheme.CheckedChange += delegate { if (darkTheme.Checked) { setting.Theme = Resource.Style.DarkHolo; db.Update(setting); Refresh(); } }; if ((int)Android.OS.Build.VERSION.SdkInt >= 21) { materialTheme.Checked = setting.Theme == Resource.Style.LightMaterial; materialThemeDark.Checked = setting.Theme == Resource.Style.DarkMaterial; materialTheme.CheckedChange += delegate { if (materialTheme.Checked) { setting.Theme = Resource.Style.LightMaterial; db.Update(setting); Refresh(); } }; materialThemeDark.CheckedChange += delegate { if (materialThemeDark.Checked) { setting.Theme = Resource.Style.DarkMaterial; db.Update(setting); Refresh(); } }; materialThemeBlue.Checked = setting.Theme == Resource.Style.LightBlueMaterial; materialThemeDarkBlue.Checked = setting.Theme == Resource.Style.DarkBlueMaterial; materialThemeBlue.CheckedChange += delegate { if (materialThemeBlue.Checked) { setting.Theme = Resource.Style.LightBlueMaterial; db.Update(setting); Refresh(); } }; materialThemeDarkBlue.CheckedChange += delegate { if (materialThemeDarkBlue.Checked) { setting.Theme = Resource.Style.DarkBlueMaterial; db.Update(setting); Refresh(); } }; materialThemeGreen.Checked = setting.Theme == Resource.Style.LightGreenMaterial; materialThemeDarkGreen.Checked = setting.Theme == Resource.Style.DarkGreenMaterial; materialThemeGreen.CheckedChange += delegate { if (materialThemeGreen.Checked) { setting.Theme = Resource.Style.LightGreenMaterial; db.Update(setting); Refresh(); } }; materialThemeDarkGreen.CheckedChange += delegate { if (materialThemeDarkGreen.Checked) { setting.Theme = Resource.Style.DarkGreenMaterial; db.Update(setting); Refresh(); } }; } else { materialTheme.Visibility = ViewStates.Gone; materialThemeDark.Visibility = ViewStates.Gone; materialThemeBlue.Visibility = ViewStates.Gone; materialThemeDarkBlue.Visibility = ViewStates.Gone; materialThemeGreen.Visibility = ViewStates.Gone; materialThemeDarkGreen.Visibility = ViewStates.Gone; } var readMessages = FindViewById <CheckBox> (Resource.Id.readMessages); readMessages.Checked = setting.ReadMessagesEnabled; readMessages.CheckedChange += delegate { setting.ReadMessagesEnabled = readMessages.Checked; db.Update(setting); }; var visibleMessages = FindViewById <EditText> (Resource.Id.visibleMessages); visibleMessages.Text = setting.VisibleMessages.ToString(); visibleMessages.TextChanged += delegate { try { setting.VisibleMessages = int.Parse(visibleMessages.Text); db.Update(setting); } catch (Exception) { setting.VisibleMessages = 0; db.Update(setting); } }; var notifications = FindViewById <CheckBox> (Resource.Id.notifications); var vibrate = FindViewById <CheckBox> (Resource.Id.vibrate); var sound = FindViewById <CheckBox> (Resource.Id.sound); var led = FindViewById <CheckBox> (Resource.Id.led); notifications.Checked = setting.Notifications; vibrate.Checked = setting.Vibrate; sound.Checked = setting.Sound; led.Checked = setting.Led; notifications.CheckedChange += delegate { setting.Notifications = notifications.Checked; db.Update(setting); }; vibrate.CheckedChange += delegate { setting.Vibrate = vibrate.Checked; db.Update(setting); }; sound.CheckedChange += delegate { setting.Sound = sound.Checked; db.Update(setting); }; led.CheckedChange += delegate { setting.Led = led.Checked; db.Update(setting); }; var highSync = FindViewById <RadioButton> (Resource.Id.highsync); var normalSync = FindViewById <RadioButton> (Resource.Id.normalsync); var lowSync = FindViewById <RadioButton> (Resource.Id.lowsync); var wlanSync = FindViewById <RadioButton> (Resource.Id.wlansync); highSync.Checked = setting.Synchronisation == Setting.Frequency.often; normalSync.Checked = setting.Synchronisation == Setting.Frequency.normal; lowSync.Checked = setting.Synchronisation == Setting.Frequency.rare; wlanSync.Checked = setting.Synchronisation == Setting.Frequency.wlan; highSync.CheckedChange += delegate { if (highSync.Checked) { setting.Synchronisation = Setting.Frequency.often; db.Update(setting); } }; normalSync.CheckedChange += delegate { if (normalSync.Checked) { setting.Synchronisation = Setting.Frequency.normal; db.Update(setting); } }; lowSync.CheckedChange += delegate { if (lowSync.Checked) { setting.Synchronisation = Setting.Frequency.rare; db.Update(setting); } }; wlanSync.CheckedChange += delegate { if (wlanSync.Checked) { setting.Synchronisation = Setting.Frequency.wlan; db.Update(setting); } }; var server = FindViewById <TextView> (Resource.Id.server); var nickname = FindViewById <TextView> (Resource.Id.nickname); var changeProfile = FindViewById <ImageButton> (Resource.Id.changeProfile); var savechanges = FindViewById <Button> (Resource.Id.save); var logout = FindViewById <Button> (Resource.Id.logout); var name = FindViewById <EditText> (Resource.Id.name); if (user != null) { server.Text = user.server; nickname.Text = user.user; name.Text = user.name; logout.Click += delegate { db.DropUserSpecificData(); var intent = new Intent(this, typeof(MainActivity)); intent.SetFlags(ActivityFlags.NewTask | ActivityFlags.ClearTask); Finish(); StartActivity(intent); }; savechanges.Click += delegate { Toast.MakeText(this, "Not implemented yet.", ToastLength.Long).Show(); }; changeProfile.Click += delegate { Toast.MakeText(this, "Not implemented yet.", ToastLength.Long).Show(); }; new Thread(async() => { try { var imageBitmap = await network.GetImageBitmapFromUrl(Resources.GetString(Resource.String.profileUrl) + user.user + ".png"); RunOnUiThread(() => changeProfile.SetImageBitmap(imageBitmap)); } catch (Exception e) { Log.Error("BlaChat", e.StackTrace); } }).Start(); } else { server.Text = "none"; nickname.Text = "none"; name.Enabled = false; changeProfile.Visibility = ViewStates.Gone; savechanges.Visibility = ViewStates.Gone; logout.Visibility = ViewStates.Gone; } var currentVersion = FindViewById <TextView> (Resource.Id.version); var newestVersion = FindViewById <TextView> (Resource.Id.newestVersion); currentVersion.Text = Setting.CurrentVersion; if (setting.NewestVersion != null && !setting.NewestVersion.StartsWith(Setting.CurrentVersion)) { newestVersion.TextFormatted = SpannableTools.GetSmiledText(this, new SpannableString(setting.NewestVersion)); } else { newestVersion.Text = Setting.CurrentVersion; } }
private void AddMessage(LinearLayout messageList, Message elem) { View v = null; if (elem.text.StartsWith("#image")) { if (elem.nick == user.user) { if (setting.FontSize == Setting.Size.large) { v = LayoutInflater.Inflate(Resource.Layout.ImageRightLarge, null); } else { v = LayoutInflater.Inflate(Resource.Layout.ImageRight, null); } } else { if (setting.FontSize == Setting.Size.large) { v = LayoutInflater.Inflate(Resource.Layout.ImageLeftLarge, null); } else { v = LayoutInflater.Inflate(Resource.Layout.ImageLeft, null); } ImageView image = v.FindViewById <ImageView> (Resource.Id.messageImage); new Thread(async() => { try { var imageBitmap = await network.GetImageBitmapFromUrl(Resources.GetString(Resource.String.profileUrl) + elem.nick + ".png"); RunOnUiThread(() => image.SetImageBitmap(imageBitmap)); } catch (Exception e) { Log.Error("BlaChat", e.StackTrace); } }).Start(); } ImageView contentImage = v.FindViewById <ImageView> (Resource.Id.contentImage); contentImage.Click += delegate { string images = System.IO.Path.Combine(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath, "Pictures/BlaChat"); var filename = elem.text.Substring("#image ".Length); filename = filename.Substring(filename.LastIndexOf("/") + 1); filename = System.IO.Path.Combine(images, filename); Intent intent = new Intent(Intent.ActionView); intent.SetDataAndType(Android.Net.Uri.Parse("file://" + filename), "image/*"); StartActivity(intent); }; //contentImage.SetOnTouchListener (new TouchListener(this, elem.text.Substring ("#image ".Length))); new Thread(async() => { try { var uri = elem.text.Substring("#image ".Length); var imageBitmap = await network.GetImageBitmapFromUrl(uri); RunOnUiThread(() => contentImage.SetImageBitmap(imageBitmap)); } catch (Exception e) { Log.Error("BlaChat", e.StackTrace); } }).Start(); } else { if (elem.nick == user.user) { if (setting.FontSize == Setting.Size.large) { v = LayoutInflater.Inflate(Resource.Layout.MessageRightLarge, null); } else { v = LayoutInflater.Inflate(Resource.Layout.MessageRight, null); } } else { if (setting.FontSize == Setting.Size.large) { v = LayoutInflater.Inflate(Resource.Layout.MessageLeftLarge, null); } else { v = LayoutInflater.Inflate(Resource.Layout.MessageLeft, null); } ImageView image = v.FindViewById <ImageView> (Resource.Id.messageImage); new Thread(async() => { try { var imageBitmap = await network.GetImageBitmapFromUrl(Resources.GetString(Resource.String.profileUrl) + elem.nick + ".png"); RunOnUiThread(() => image.SetImageBitmap(imageBitmap)); } catch (Exception e) { Log.Error("BlaChat", e.StackTrace); } }).Start(); } TextView text = v.FindViewById <TextView> (Resource.Id.messageText); var escape = elem.text.Replace(""", "\""); escape = escape.Replace("<", "<"); escape = escape.Replace(">", ">"); escape = escape.Replace("&", "&"); text.TextFormatted = SpannableTools.GetSmiledText(this, new SpannableString(escape)); } TextView caption = v.FindViewById <TextView> (Resource.Id.messageCaption); if (elem.nick != user.user) { caption.TextFormatted = SpannableTools.GetSmiledText(this, new SpannableString(elem.author + " (" + elem.time.Substring(11, 5) + ")")); } else { if (elem.time == "sending") { caption.TextFormatted = SpannableTools.GetSmiledText(this, new SpannableString("Du (" + elem.time + ")")); } else { caption.Text = "Du (" + elem.time.Substring(11, 5) + ")"; } } messageList.AddView(v); }