Пример #1
0
        protected override void OnCreate(Bundle bundle)
        {
            db = new DataBaseWrapper(this.Resources);
            if ((setting = db.Table <Setting> ().FirstOrDefault()) == null)
            {
                db.Insert(setting = new Setting());
            }
            SetTheme(setting.Theme);
            base.OnCreate(bundle);

            network = new AsyncNetwork();
            db      = new DataBaseWrapper(this.Resources);
            user    = db.Table <User>().FirstOrDefault();

            if (setting.FontSize == Setting.Size.large)
            {
                SetContentView(Resource.Layout.SettingsLarge);
            }
            else
            {
                SetContentView(Resource.Layout.Settings);
            }

            InitializeView();
        }
Пример #2
0
        private async Task <int> EventHandling(DataBaseWrapper db, JsonValue result)
        {
            if (result.ContainsKey("events"))
            {
                JsonArray arr = (JsonArray)result ["events"];
                foreach (JsonValue v in arr)
                {
                    var e = new Event()
                    {
                        type   = v ["type"],
                        msg    = v ["msg"],
                        nick   = v ["nick"],
                        text   = v ["text"],
                        time   = v ["time"],
                        author = v ["author"]
                    };
                    db.Insert(e);
                }

                if (backgroundService != null)
                {
                    await backgroundService.UpdateNotifications();
                }
            }
            if (result.ContainsKey("onLoginError"))
            {
                return(1);
            }
            return(0);
        }
Пример #3
0
        protected override void OnCreate(Bundle bundle)
        {
            db = new DataBaseWrapper(this.Resources);
            if ((setting = db.Table <Setting> ().FirstOrDefault()) == null)
            {
                db.Insert(setting = new Setting());
            }
            StartupTheme = setting.Theme;
            SetTheme(setting.Theme);
            base.OnCreate(bundle);

            new UpdateChecker(this, db, setting);

            // Check if the application knows a user.
            User user = db.Table <User>().FirstOrDefault();

            if (user != null && user.user != null)
            {
                initializeAuthenticated(user);
            }
            else
            {
                initializeNotAuthenticated();
            }
        }
Пример #4
0
        protected override void OnCreate(Bundle bundle)
        {
            db = new DataBaseWrapper(this.Resources);
            if ((setting = db.Table <Setting> ().FirstOrDefault()) == null)
            {
                db.Insert(setting = new Setting());
            }
            SetTheme(setting.Theme);
            base.OnCreate(bundle);

            if (Intent.ActionSend == Intent.Action)
            {
                if (Intent.GetStringExtra(Intent.ExtraText) != null)
                {
                    textShare = Intent.GetStringExtra(Intent.ExtraText);
                }
                else
                {
                    var uriString = Intent.GetParcelableExtra(Intent.ExtraStream).ToString();
                    var uri       = Android.Net.Uri.Parse(uriString);
                    if (uri != null)
                    {
                        fileset.Add(uri);
                    }
                }
            }
            else if (Intent.ActionSendMultiple == Intent.Action)
            {
                var uris = Intent.GetParcelableArrayListExtra(Intent.ExtraStream);
                if (uris != null)
                {
                    foreach (var uri in uris)
                    {
                        fileset.Add(Android.Net.Uri.Parse(uri.ToString()));
                    }
                }
            }

            // Check if the application knows a user.
            User user = db.Table <User>().FirstOrDefault();

            if (user != null && user.user != null)
            {
                initializeAuthenticated(user);
            }
        }
Пример #5
0
        public Task <bool> UpdateContacts(DataBaseWrapper db, User user)
        {
            string request = String.Format("\"getContacts\":{{}}");

            return(CommonNetworkOperations(db, request, user, "onGetContacts", x => {
                JsonArray arr = (JsonArray)x;
                foreach (JsonValue v in arr)
                {
                    var contact = db.Get <Contact> (v ["nick"]);
                    if (contact == null)
                    {
                        contact = new Contact()
                        {
                            nick = v ["nick"]
                        };
                        db.Insert(contact);
                    }
                    contact.name = v ["name"];
                    contact.status = v ["status"];
                    db.Update(contact);
                }
            }));
        }
Пример #6
0
        public Task <bool> UpdateChats(DataBaseWrapper db, User user)
        {
            string request = String.Format("\"getChats\":{{}}");

            return(CommonNetworkOperations(db, request, user, "onGetChats", x => {
                JsonArray arr = (JsonArray)x;
                foreach (JsonValue v in arr)
                {
                    string conv = v ["conversation"];
                    var chat = db.Get <Chat> (conv);
                    if (chat == null)
                    {
                        chat = new Chat()
                        {
                            conversation = conv
                        };
                        db.Insert(chat);
                    }
                    chat.name = v ["name"];
                    chat.time = v ["time"];
                    db.Update(chat);
                }
            }));
        }
Пример #7
0
        private void initializeNotAuthenticated()
        {
            SetContentView(Resource.Layout.Authentication);

            Button login = FindViewById <Button> (Resource.Id.login);

            login.Click += async delegate {
                InputMethodManager manager = (InputMethodManager)GetSystemService(InputMethodService);
                manager.HideSoftInputFromWindow(FindViewById <EditText> (Resource.Id.username).WindowToken, 0);
                manager.HideSoftInputFromWindow(FindViewById <EditText> (Resource.Id.password).WindowToken, 0);
                manager.HideSoftInputFromWindow(FindViewById <EditText> (Resource.Id.server).WindowToken, 0);

                login.Text    = "Connecting...";
                login.Enabled = false;

                var user = new User()
                {
                    user     = FindViewById <EditText> (Resource.Id.username).Text.ToLower(),
                    password = FindViewById <EditText> (Resource.Id.password).Text,
                    server   = !string.IsNullOrEmpty(FindViewById <EditText> (Resource.Id.server).Text) ?
                               FindViewById <EditText> (Resource.Id.server).Text :
                               FindViewById <EditText> (Resource.Id.server).Hint
                };
                if (user.user == "" || user.password == "")
                {
                    login.Text    = "Login";
                    login.Enabled = true;
                    return;
                }

                if (await network.Authenticate(db, user))
                {
                    login.Text = "Loading data...";
                    new Thread(async() => {
                        int i = 0;
                        db.Insert(user);
                        while (!await network.UpdateChats(db, user))
                        {
                            await network.Authenticate(db, user);
                        }
                        var x     = db.Table <Chat> ();
                        int count = x.Count();
                        var tasks = new List <Task <bool> >();
                        RunOnUiThread(() => { if (isUnbound())
                                              {
                                                  return;
                                              }
                                              initializeAuthenticated(user); });

                        foreach (var chat in x)
                        {
                            while (!await network.UpdateHistory(db, user, chat, 30))
                            {
                                await network.Authenticate(db, user);
                            }
                            OnUpdateRequested();
                        }
                    }).Start();
                }
                else
                {
                    login.Text    = "Retry Login";
                    login.Enabled = true;
                }
            };
        }
Пример #8
0
        protected override void OnCreate(Bundle bundle)
        {
            db = new DataBaseWrapper(this.Resources);
            if ((setting = db.Table <Setting> ().FirstOrDefault()) == null)
            {
                db.Insert(setting = new Setting());
            }
            StartupTheme = setting.Theme;
            SetTheme(setting.Theme);
            base.OnCreate(bundle);

            SetContentView(Resource.Layout.ChatActivity);

            conversation = Intent.GetStringExtra("conversation");

            chat            = db.Get <Chat> (conversation);
            visibleMessages = chat.VisibleMessages;
            if (visibleMessages <= 0)
            {
                visibleMessages = setting.VisibleMessages;
            }
            if (visibleMessages <= 0)
            {
                visibleMessages = 30;
            }
            Title = SmileyTools.GetSmiledTextUTF(chat.name);
            ActionBar.SetDisplayHomeAsUpEnabled(true);
            ActionBar.SetIcon(Resource.Drawable.Icon);

            user = db.Table <User>().FirstOrDefault();

            Button send = FindViewById <Button>(Resource.Id.send);

            send.Click += delegate {
                TextView message = FindViewById <TextView>(Resource.Id.message);
                var      msg     = message.Text;
                message.Text = "";

                if (msg.Equals(""))
                {
                    return;
                }

                LinearLayout messageList = FindViewById <LinearLayout>(Resource.Id.messageLayout);
                AddMessage(messageList, new Message()
                {
                    time = "sending", author = "Du", nick = user.user, text = msg, conversation = this.conversation
                });

                ScrollView scrollView = FindViewById <ScrollView>(Resource.Id.messageScrollView);
                scrollView.FullScroll(FocusSearchDirection.Down);
                scrollView.Post(() => scrollView.FullScroll(FocusSearchDirection.Down));

                OnBind();
                new Thread(async() => {
                    while (!await network.SendMessage(db, user, chat, msg))
                    {
                        await network.Authenticate(db, user);
                    }
                }).Start();
            };
            Button smiley = FindViewById <Button>(Resource.Id.smile);

            smiley.Click += delegate {
                // TODO implement smiley stuff...
            };
        }