public async Task SetDataRequestDataAsync(DataRequest request)
        {
            var requestData = request.Data;

            requestData.SetWebLink(new Uri(Image.Urls.Full));
            requestData.Properties.Title = ResourcesHelper.GetResString("ShareTitle");
            requestData.Properties.ContentSourceWebLink         = new Uri(Image.Urls.Full);
            requestData.Properties.ContentSourceApplicationLink = new Uri(Image.Urls.Full);

            requestData.SetText(ShareText);

            var file = await StorageFile.GetFileFromPathAsync(BitmapSource.LocalPath);

            if (file != null)
            {
                List <IStorageItem> imageItems = new List <IStorageItem>
                {
                    file
                };
                requestData.SetStorageItems(imageItems);

                var imageStreamRef = RandomAccessStreamReference.CreateFromFile(file);
                requestData.SetBitmap(imageStreamRef);
                requestData.Properties.Thumbnail = imageStreamRef;
            }
        }
Beispiel #2
0
        public MainViewModel()
        {
            IsLoading = Visibility.Collapsed;
            NoDeletedItemsVisibility = Visibility.Collapsed;

            EnableItemClick = true;

            UndoneCount = 0;

            //初始化
            CateVM       = new CategoryViewModel();
            EditedToDo   = new ToDo();
            CurrentUser  = new MyerListUser();
            AllToDos     = new ObservableCollection <ToDo>();
            DeletedToDos = new ObservableCollection <ToDo>();
            StagedToDos  = new ObservableCollection <ToDo>();

            CurrentDisplayToDos = AllToDos;

            SelectedCate = AddingCate = -1;

            CateColor = Application.Current.Resources["DefaultColor"] as SolidColorBrush;

            //设置当前页面为 ALL To-Do
            SelectedPage = 0;

            Title = ResourcesHelper.GetResString("CateAll");

            RegisterMessenger();
        }
Beispiel #3
0
        public async Task Refresh(LoginMode mode)
        {
            if (Categories.Count == 0)
            {
                Categories = await RestoreCacheButDefaultList();
            }
            //已经登陆过的了
            if (mode != LoginMode.OfflineMode && !App.IsNoNetwork)
            {
                var isGot = await GetLatestCates();

                if (!isGot)
                {
                    Categories = await RestoreCacheButDefaultList();

                    await SerializerHelper.SerializerToJson <ObservableCollection <ToDoCategory> >(Categories, SerializerFileNames.CategoryFileName);
                }
            }
            Categories.ToList().ForEach(s => s.UpdateColor());
            Categories.Insert(0, new ToDoCategory()
            {
                CateName = ResourcesHelper.GetResString("CateAll"), CateColor = App.Current.Resources["MyerListBlue"] as SolidColorBrush, CateColorID = 0
            });
            Categories.Add(new ToDoCategory()
            {
                CateName = ResourcesHelper.GetResString("CateDelete"), CateColor = App.Current.Resources["DeletedColor"] as SolidColorBrush, CateColorID = -1
            });
            UpdateCateToModify();
            UpdateCatesToAdd();
            App.MainVM.RefreshCate();
        }
Beispiel #4
0
        public async Task SetDataRequestDataAsync(DataRequest request)
        {
            var requestData = request.Data;

            requestData.SetWebLink(new Uri(Image.Urls.Full));
            requestData.Properties.Title = ResourcesHelper.GetResString("ShareTitle");
            requestData.Properties.ContentSourceWebLink         = new Uri(Image.Urls.Full);
            requestData.Properties.ContentSourceApplicationLink = new Uri(Image.Urls.Full);

            requestData.SetText(ShareText);

            var cachekey = _cacheKeyFactory.ProvideKey(LoadingUrl);
            var file     = await _cacheSupplier.TryGetCacheAsync(cachekey);

            if (file != null)
            {
                List <IStorageItem> imageItems = new List <IStorageItem>
                {
                    file
                };
                requestData.SetStorageItems(imageItems);

                var imageStreamRef = RandomAccessStreamReference.CreateFromFile(file);
                requestData.SetBitmap(imageStreamRef);
                requestData.Properties.Thumbnail = imageStreamRef;
            }
        }
Beispiel #5
0
        private async Task ClearCacheAsync()
        {
            ClearCacheCommandEnabled = false;
            CacheHint = ResourceLoader.GetForCurrentView().GetString("Cleaning");
            await _cacheSupplier.ClearAsync();

            ToastService.SendToast(ResourcesHelper.GetResString("TempFilesCleaned"), TimeSpan.FromMilliseconds(1000));
            await UpdateCacheSizeUIAsync();
        }
Beispiel #6
0
        public async Task UpdateCacheSizeUIAsync()
        {
            CacheHint = ResourcesHelper.GetResString("CalculatingCache");
            ClearCacheCommandEnabled = false;
            var size = await _cacheSupplier.GetSizeAsync();

            var sizeFormatted = (size / (1024 * 1024)).ToString("f0");

            CacheHint = ResourcesHelper.GetFormattedResString("CleanUpContent", sizeFormatted);
            ClearCacheCommandEnabled = true;
        }
Beispiel #7
0
        private async Task <bool> RegisterAsync()
        {
            try
            {
                //注册
                IsLoading = true;

                var loader = new ResourceLoader();

                var check = await CloudService.CheckEmailExistAsync(TempEmail);

                if (check)
                {
                    throw new MyerListException()
                          {
                              ErrorCode = "202"
                          };
                }
                string salt = await CloudService.RegisterAsync(TempEmail, InputPassword);

                if (!string.IsNullOrEmpty(salt))
                {
                    LocalSettingHelper.AddValue("email", TempEmail);
                    LocalSettingHelper.AddValue("password", InputPassword);
                    return(true);
                }
                else
                {
                    throw new MyerListException()
                          {
                              ErrorCode = ""
                          };
                }
            }
            catch (MyerListException e)
            {
                ToastService.SendToast(ErrorUtils.GetUserMsgFromErrorCode(int.Parse(e.ErrorCode)));
                IsLoading = false;
                return(false);
            }
            catch (TaskCanceledException)
            {
                ToastService.SendToast(ResourcesHelper.GetResString("RequestError"));
                IsLoading = false;
                return(false);
            }
            catch (COMException)
            {
                ToastService.SendToast(ResourcesHelper.GetResString("RequestError"));
                IsLoading = false;
                return(false);
            }
        }
Beispiel #8
0
        private void AddBtn_Click(object sender, RoutedEventArgs e)
        {
            MainVM.CateVM.CatesToModify.Add(new Model.ToDoCategory()
            {
                CateColor   = CateColorsVM.CateColors[0],
                CateColorID = CreateNewID(),
                CateName    = ResourcesHelper.GetResString("NewCateName"),
            });
            var sv = CateListView.GetScrollViewer();

            sv.ChangeView(null, 1000, null);
        }
Beispiel #9
0
        /// <summary>
        /// 初始化,还原列表等
        /// 区分账户的各种状态:离线模式,没有网络,登录了有网络
        /// </summary>
        /// <param name="args"></param>
        /// <returns></returns>
        private async Task HandleActive(LoginMode mode)
        {
            IsLoading = Visibility.Visible;

            await InitialCate(mode);

            //已经登陆过的了
            if (mode != LoginMode.OfflineMode)
            {
                CurrentUser.Email = LocalSettingHelper.GetValue("email");

                ShowLoginBtnVisibility    = Visibility.Collapsed;
                ShowAccountInfoVisibility = Visibility.Visible;

                await RestoreData();

                //没有网络
                if (App.IsNoNetwork)
                {
                    ToastService.SendToast(ResourcesHelper.GetResString("NoNetworkHint"));
                }
                //有网络
                else
                {
                    SelectedCate = 0;

                    //从离线模式注册/登录的
                    if (mode == LoginMode.OfflineModeToLogin || mode == LoginMode.OfflineModeToRegister)
                    {
                        await AddAllOfflineToDos();
                    }

                    await ReSendStagedToDos();

                    await SyncAllToDos();

                    CurrentDisplayToDos = AllToDos;
                }
            }
            //处于离线模式
            else if (mode == LoginMode.OfflineMode)
            {
                ShowLoginBtnVisibility    = Visibility.Visible;
                ShowAccountInfoVisibility = Visibility.Collapsed;
                await RestoreData();
            }
            IsLoading = Visibility.Collapsed;
        }
Beispiel #10
0
        public async Task <bool> SaveCatesToModify()
        {
            var currentMaxID = CreateNewID();
            var array        = new JsonArray();

            foreach (var item in CatesToModify)
            {
                var obj = new JsonObject();
                obj.Add("name", JsonValue.CreateStringValue(item.CateName));
                obj.Add("color", JsonValue.CreateStringValue(item.CateColor.Color.ToString()));
                obj.Add("id", JsonValue.CreateNumberValue(item.CateColorID));
                array.Add(obj);
            }
            var arrayString = array.ToString();
            var cateString  = AppSettings.ModifiedCateJsonStringFore + arrayString + "}";

            try
            {
                if (!App.IsInOfflineMode)
                {
                    var isOK = await CloudService.UpdateCateInfoAsync(cateString);

                    if (!isOK)
                    {
                        throw new ArgumentException();
                    }
                }

                Categories = CatesToModify;
                await SerializerHelper.SerializerToJson <ObservableCollection <ToDoCategory> >(Categories, SerializerFileNames.CategoryFileName);

                Categories.Insert(0, new ToDoCategory()
                {
                    CateName = ResourcesHelper.GetResString("CateAll"), CateColor = App.Current.Resources["MyerListBlue"] as SolidColorBrush, CateColorID = 0
                });
                Categories.Add(new ToDoCategory()
                {
                    CateName = ResourcesHelper.GetResString("CateDelete"), CateColor = App.Current.Resources["DeletedColor"] as SolidColorBrush, CateColorID = -1
                });
                UpdateCatesToAdd();
                App.MainVM.RefreshCate();
                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
Beispiel #11
0
 private void UpdateTitle(int cateID)
 {
     if (cateID > 0)
     {
         var cate = CateVM.Categories.ToList().Find(s => s.CateColorID == cateID);
         if (cate != null)
         {
             Title = cate.CateName;
         }
     }
     else if (cateID == 0)
     {
         Title = ResourcesHelper.GetResString("CateAll");
     }
     else if (cateID == -1)
     {
         Title = ResourcesHelper.GetResString("CateDelete");
     }
 }
Beispiel #12
0
        private async Task <bool> LoginAsync()
        {
            try
            {
                IsLoading = true;

                var check = await CloudService.CheckEmailExistAsync(TempEmail);

                string salt = await CloudService.GetSaltAsync(TempEmail);

                //尝试登录
                var login = await CloudService.LoginAsync(TempEmail, InputPassword, salt);

                App.IsInOfflineMode = false;
                LocalSettingHelper.AddValue("OfflineMode", "false");
                return(true);
            }
            catch (MyerListException e)
            {
                ToastService.SendToast(ErrorUtils.GetUserMsgFromErrorCode(int.Parse(e.ErrorCode)));
                return(false);
            }
            catch (TaskCanceledException)
            {
                ToastService.SendToast(ResourcesHelper.GetResString("RequestError"));
                return(false);
            }
            catch (COMException)
            {
                ToastService.SendToast(ResourcesHelper.GetResString("RequestError"));
                return(false);
            }
            catch (Exception)
            {
                ToastService.SendToast(ResourcesHelper.GetResString("RequestError"));
                return(false);
            }
            finally
            {
                IsLoading = false;
            }
        }
Beispiel #13
0
        public static ObservableCollection <ToDo> ParseJsonToObs(string rawJson)
        {
            try
            {
                ObservableCollection <ToDo> schedules = new ObservableCollection <ToDo>();

                JObject job   = JObject.Parse(rawJson);
                JArray  array = job["ScheduleInfo"] as JArray;
                if (array != null)
                {
                    foreach (var sch in array)
                    {
                        ToDo newSchedule = new ToDo();

                        var      timeString = (string)sch["time"];
                        DateTime time;
                        if (DateTime.TryParse(timeString, out time))
                        {
                            newSchedule.CreateTime = time.ToString();
                        }
                        else
                        {
                            newSchedule.CreateTime = ResourcesHelper.GetResString("UnknownTime");
                        }

                        newSchedule.ID       = (string)sch["id"];
                        newSchedule.SID      = (string)sch["sid"];
                        newSchedule.Content  = (string)sch["content"];
                        newSchedule.IsDone   = (string)sch["isdone"] != "0";
                        newSchedule.Category = (int)sch["cate"];

                        schedules.Add(newSchedule);
                    }
                }
                return(schedules);
            }
            catch (Exception e)
            {
                var task = Logger.LogAsync(e);
                return(null);
            }
        }
        private async void DownloadBtn_Click(object sender, RoutedEventArgs e)
        {
            if (CurrentImage.DownloadStatus == DownloadStatus.Ok)
            {
                return;
            }

            FlipperControl.DisplayIndex = (int)DownloadStatus.Downloading;

            Events.LogDownloadButtonOnList();

            try
            {
                _cts = new CancellationTokenSource();
                var item = new DownloadItem(CurrentImage);
                item = await DownloadsVM.AddDownloadingImageAsync(item);

                var savedResult = false;
                if (item != null)
                {
                    savedResult = await item.DownloadFullImageAsync(_cts);
                }

                //Still in this page
                if (IsShown && savedResult)
                {
                    CurrentImage.DownloadStatus = DownloadStatus.Ok;
                    FlipperControl.DisplayIndex = (int)DownloadStatus.Ok;
                    ToastService.SendToast(ResourcesHelper.GetResString("SavedTitle"), 1000);
                }
            }
            catch (OperationCanceledException)
            {
                FlipperControl.DisplayIndex = (int)DownloadStatus.Pending;
            }
            catch (Exception ex)
            {
                var task = Logger.LogAsync(ex);
                FlipperControl.DisplayIndex = (int)DownloadStatus.Pending;
                ToastService.SendToast(ResourcesHelper.GetResString("ErrorStatus") + ex.Message, 3000);
            }
        }
        protected async virtual Task <IEnumerable <ImageItem> > RequestAsync(int pageIndex)
        {
            try
            {
                _imageService.Page = pageIndex;
                var result = await _imageService.GetImagesAsync();

                if (result != null)
                {
                    return(CreateImageItems(result));
                }
                else
                {
                    throw new APIException(ResourcesHelper.GetResString("RequestFailed"));
                }
            }
            catch (TaskCanceledException)
            {
                throw new APIException(ResourcesHelper.GetResString("RequestTimeout"));
            }
        }
Beispiel #16
0
        private async Task ClearTempFileAsync()
        {
            var folder = await AppSettings.Instance.GetSavingFolderAsync();

            var files = await folder.GetFilesAsync();

            if (files != null)
            {
                foreach (var file in files)
                {
                    var prop = await file.GetBasicPropertiesAsync();

                    if (file.Name.EndsWith(".tmp") || prop.Size == 0)
                    {
                        await file.DeleteAsync();
                    }
                }
            }

            ToastService.SendToast(ResourcesHelper.GetResString("TempFilesCleaned"));
        }
        /// <summary>
        /// 添加or修改内容
        /// </summary>
        /// <returns></returns>
        private async Task AddOrModifyToDo()
        {
            try
            {
                if (EditedToDo != null)
                {
                    if (_addMode == AddMode.None)
                    {
                        return;
                    }

                    if (string.IsNullOrEmpty(EditedToDo.Content))
                    {
                        await ToastService.SendToastAsync(ResourcesHelper.GetResString("ContentEmpty"));

                        return;
                    }

                    ShowPaneOpen = false;

                    //显示进度条
                    IsLoading = Visibility.Visible;

                    //添加
                    if (_addMode == AddMode.Add)
                    {
                        await AddOrRestoreAndSyncNewToDo();
                    }
                    //修改
                    else if (_addMode == AddMode.Modify)
                    {
                        await ModifyAndSyncToDo();
                    }
                }
            }
            catch (Exception ex)
            {
                var task = ExceptionHelper.WriteRecordAsync(ex, nameof(MainViewModel), nameof(AddOrModifyToDo));
            }
        }
Beispiel #18
0
 private void RegisterMessenger()
 {
     Messenger.Default.Register <GenericMessage <ObservableCollection <ToDo> > >(this, MessengerTokens.UpdateTile, async msg =>
     {
         await TileControl.UpdateTileAsync(msg.Content);
     });
     Messenger.Default.Register <GenericMessage <string> >(this, MessengerTokens.CloseHam, msg =>
     {
         if (_isDrawerSlided && CoreWindow.GetForCurrentThread().Bounds.Width < 720)
         {
             ToggleDrawerAnimation(false);
             ToggleDrawerMaskAnimation(false);
             HamburgerBtn.PlayHamOutStory();
             _isDrawerSlided = false;
         }
     });
     Messenger.Default.Register(this, MessengerTokens.ChangeCommandBarToDelete, (GenericMessage <string> msg) =>
     {
         this.SwitchToDeleteCommandBar();
     });
     Messenger.Default.Register(this, MessengerTokens.ChangeCommandBarToDefault, (GenericMessage <string> msg) =>
     {
         this.SwitchToDefaultCommandBar();
     });
     Messenger.Default.Register <GenericMessage <string> >(this, MessengerTokens.GoToSort, act =>
     {
         DisplayedListView.CanDragItems       = true;
         DisplayedListView.CanReorderItems    = true;
         DisplayedListView.AllowDrop          = true;
         DisplayedListView.IsItemClickEnabled = false;
         ToastService.SendToast(ResourcesHelper.GetResString("ReorderHint"));
     });
     Messenger.Default.Register <GenericMessage <string> >(this, MessengerTokens.LeaveSort, act =>
     {
         DisplayedListView.CanDragItems       = false;
         DisplayedListView.CanReorderItems    = false;
         DisplayedListView.AllowDrop          = false;
         DisplayedListView.IsItemClickEnabled = true;
     });
 }
Beispiel #19
0
        private async void OkBtn_Click(object sender, RoutedEventArgs e)
        {
            LoadingMaskGrid.Visibility = Visibility.Visible;
            OkBtn.IsEnabled            = false;
            if (await MainVM.CateVM.SaveCatesToModify())
            {
                if (PopupService.CurrentShownCPEX != null)
                {
                    PopupService.CurrentShownCPEX.Hide();
                }
                OkBtn.IsEnabled            = true;
                LoadingMaskGrid.Visibility = Visibility.Collapsed;

                OnClickOKBtn?.Invoke();
            }
            else
            {
                OkBtn.IsEnabled            = true;
                LoadingMaskGrid.Visibility = Visibility.Collapsed;

                ToastService.SendToast(ResourcesHelper.GetResString("RequestError"));
            }
        }
Beispiel #20
0
 private void ToRegisterMode()
 {
     ShowRegister = Visibility.Visible;
     Title        = ResourcesHelper.GetResString("Register");
     BtnContent   = ResourcesHelper.GetResString("Register");
 }
Beispiel #21
0
        /// <summary>
        /// 从云端同步所有待办事项
        /// </summary>
        /// <returns></returns>
        private async Task SyncAllToDos()
        {
            try
            {
                //没网络
                if (App.IsNoNetwork)
                {
                    //通知没有网络
                    ToastService.SendToast(ResourcesHelper.GetResString("NoNetworkHint"));
                    return;
                }
                if (App.IsInOfflineMode)
                {
                    return;
                }
                //加载滚动条
                IsLoading = Visibility.Visible;

                ToastService.SendToast(ResourcesHelper.GetResString("Syncing"));

                var isSyncOK = false;

                DispatcherTimer timer = new DispatcherTimer();
                timer.Interval = TimeSpan.FromSeconds(2);
                timer.Tick    += ((sendert, et) =>
                {
                    if (isSyncOK)
                    {
                        IsLoading = Visibility.Collapsed;
                        ToastService.SendToast(ResourcesHelper.GetResString("SyncSuccessfully"));
                    }
                    timer.Stop();
                });
                timer.Start();

                try
                {
                    await ReSendStagedToDos();

                    await CateVM.Refresh(LoginMode.Login);

                    var result = await CloudService.GetMyToDosAsync();

                    if (!string.IsNullOrEmpty(result.JsonSrc))
                    {
                        //获得无序的待办事项
                        var scheduleWithoutOrder = ToDo.ParseJsonToObs(result.JsonSrc);

                        //获得顺序列表
                        var orders = await CloudService.GetMyOrderAsync();

                        //排序
                        AllToDos = ToDo.GetSortedList(scheduleWithoutOrder, orders);

                        UpdateListByChangingSelectedCate();

                        await SerializerHelper.SerializerToJson <ObservableCollection <ToDo> >(AllToDos, SerializerFileNames.ToDoFileName);

                        isSyncOK = true;
                    }
                }
                catch (COMException)
                {
                    ToastService.SendToast(ResourcesHelper.GetResString("RequestError"));
                }
                finally
                {
                    IsLoading = Visibility.Collapsed;
                    if (!timer.IsEnabled)
                    {
                        ToastService.SendToast(ResourcesHelper.GetResString("SyncSuccessfully"));
                    }
                }

                //最后更新动态磁贴
                Messenger.Default.Send(new GenericMessage <ObservableCollection <ToDo> >(AllToDos), MessengerTokens.UpdateTile);
            }
            catch (Exception ex)
            {
                var task = Logger.LogAsync(ex);
            }
        }
        /// <summary>
        /// 修改待办事项
        /// </summary>
        /// <returns></returns>
        private async Task ModifyAndSyncToDo()
        {
            IsLoading = Visibility.Visible;

            //修改当前列表
            var itemToModify = AllToDos.ToList().Find(sche =>
            {
                if (sche.ID == EditedToDo.ID)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            });

            itemToModify.Content    = EditedToDo.Content;
            itemToModify.Category   = CateVM.Categories[AddingCate].CateColorID;
            itemToModify.CreateTime = DateTime.Now.ToString();

            UpdateDisplayList(CateVM.Categories[SelectedCate].CateColorID);

            //离线模式
            if (App.IsInOfflineMode)
            {
                await SerializerHelper.SerializerToJson <ObservableCollection <ToDo> >(AllToDos, SerializerFileNames.ToDoFileName);

                EditedToDo = new ToDo();

                Messenger.Default.Send(new GenericMessage <ObservableCollection <ToDo> >(AllToDos), MessengerTokens.UpdateTile);

                return;
            }
            //非离线模式
            else if (App.CanSendRequest)
            {
                try
                {
                    var resultUpdate = await CloudService.UpdateContent(itemToModify.ID, itemToModify.Content, itemToModify.CreateTime, itemToModify.Category);

                    if (resultUpdate)
                    {
                        AllToDos.ToList().Find(sche =>
                        {
                            if (sche.ID == EditedToDo.ID)
                            {
                                return(true);
                            }
                            else
                            {
                                return(false);
                            }
                        }).Content = EditedToDo.Content;

                        EditedToDo = new ToDo();

                        Messenger.Default.Send(new GenericMessage <ObservableCollection <ToDo> >(AllToDos), MessengerTokens.UpdateTile);
                    }
                }
                catch (COMException)
                {
                    await ToastService.SendToastAsync(ResourcesHelper.GetResString("RequestError"));
                }
            }
            IsLoading = Visibility.Collapsed;
        }