Ejemplo n.º 1
0
        public static void DropAllCollections()
        {
            IMongoMapperConfiguration config = MongoMapperConfiguration.GetConfig("");


            var colNames = CollectionsManager.GetCollentionNames("XXX");

            foreach (string colName in colNames)
            {
                if (!colName.ToUpper().Contains("SYSTEM") && !colName.Contains("MongoMapperConfig"))
                {
                    Mapper.MongoMapperHelper.Db("XXX").DropCollectionAsync(colName);
                }
            }

            foreach (var collectionElement in config.CustomCollectionConfig)
            {
                var collection = (MongoMapperConfigurationElement)collectionElement;
                if (collection.Name != "TestConf1")
                {
                    foreach (string colName in CollectionsManager.GetCollentionNames(collection.Name))
                    {
                        if (!colName.ToUpper().Contains("SYSTEM") && !colName.Contains("MongoMapperConfig"))
                        {
                            Mapper.MongoMapperHelper.Db(collection.Name).DropCollectionAsync(colName);
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        public void onItemClick(int position)
        {
            Recommend.RecommendBooks books = mAdapter.getItem(position);

            if (books.path.EndsWith(Constant.SUFFIX_TXT))
            {
                // TXT
                new AlertDialog.Builder(this)
                .SetTitle("提示")
                .SetMessage(Java.Lang.String.Format(GetString(
                                                        Resource.String.book_detail_is_joined_the_book_shelf), books.title))
                .SetPositiveButton("确定", (sender, e) =>
                {
                    // 拷贝到缓存目录
                    FileUtils.fileChannelCopy(new File(books.path),
                                              new File(FileUtils.getChapterPath(books._id, 1)));
                    // 加入书架
                    if (CollectionsManager.getInstance().add(books))
                    {
                        mRecyclerView.showTipViewAndDelayClose(Java.Lang.String.Format(GetString(
                                                                                           Resource.String.book_detail_has_joined_the_book_shelf), books.title));
                        // 通知
                        EventManager.refreshCollectionList();
                    }
                    else
                    {
                        mRecyclerView.showTipViewAndDelayClose("书籍已存在");
                    }
                    var dialog = sender as AlertDialog;
                    dialog?.Dismiss();
                })
                .SetNegativeButton("取消", (sender, e) =>
                {
                    var dialog = sender as AlertDialog;
                    dialog?.Dismiss();
                })
                .Show();
            }
            else if (books.path.EndsWith(Constant.SUFFIX_PDF))
            {
                // PDF
                // TODO: ReadPDFActivity.start(this, books.path);
                ToastUtils.showSingleToast("等待开发中");
            }
            else if (books.path.EndsWith(Constant.SUFFIX_EPUB))
            {
                // EPub
                // TODO: ReadEPubActivity.start(this, books.path);
                ToastUtils.showSingleToast("等待开发中");
            }
            else if (books.path.EndsWith(Constant.SUFFIX_CHM))
            {
                // CHM
                // TODO: ReadCHMActivity.start(this, books.path);
                ToastUtils.showSingleToast("等待开发中");
            }
        }
Ejemplo n.º 3
0
 public void showRecommendList(List <Recommend.RecommendBooks> list)
 {
     mAdapter.clear();
     mAdapter.addAll(list);
     // 推荐列表默认加入收藏
     foreach (var bean in list)
     {
         //TO DO 此处可优化:批量加入收藏->加入前需先判断是否收藏过
         CollectionsManager.getInstance().add(bean);
     }
 }
 /// <summary>
 /// 刷新收藏图标
 /// </summary>
 private void refreshCollectionIcon()
 {
     if (CollectionsManager.getInstance().isCollected(recommendBooks._id))
     {
         initCollection(false);
     }
     else
     {
         initCollection(true);
     }
 }
Ejemplo n.º 5
0
        public override void initDatas()
        {
            var recommendBooksStr = Intent.GetStringExtra(INTENT_BEAN);

            recommendBooks = JsonConvert.DeserializeObject <Recommend.RecommendBooks>(recommendBooksStr);;
            bookId         = recommendBooks._id;
            isFromSD       = Intent.GetBooleanExtra(INTENT_SD, false);

            if (Intent.ActionView.Equals(Intent.Action))
            {
                String filePath = Uri.Decode(Intent.DataString.Replace("file://", ""));
                String fileName;
                if (filePath.LastIndexOf(".") > filePath.LastIndexOf("/"))
                {
                    fileName = filePath.Substring(filePath.LastIndexOf("/") + 1, filePath.LastIndexOf("."));
                }
                else
                {
                    fileName = filePath.Substring(filePath.LastIndexOf("/") + 1);
                }

                CollectionsManager.getInstance().remove(fileName);
                // 转存
                File desc = FileUtils.createWifiTranfesFile(fileName);
                FileUtils.fileChannelCopy(new File(filePath), desc);
                // 建立
                recommendBooks          = new Recommend.RecommendBooks();
                recommendBooks.isFromSD = true;
                recommendBooks._id      = fileName;
                recommendBooks.title    = fileName;

                isFromSD = true;
            }

            MessageBus.Default.Register <DownloadProgress>(showDownProgress);
            MessageBus.Default.Register <DownloadMessage>(downloadMessage);
            showDialog();

            mTvBookReadTocTitle.Text = (recommendBooks.title);

            //mTtsPlayer = TTSPlayerUtils.getTTSPlayer();
            //ttsConfig = TTSPlayerUtils.getTtsConfig();

            intentFilter.AddAction(Intent.ActionBatteryChanged);
            intentFilter.AddAction(Intent.ActionTimeTick);

            CollectionsManager.getInstance().setRecentReadingTime(bookId);
            System.Reactive.Linq.Observable.Timer(new TimeSpan(0, 0, 1)) // 1s
            .Subscribe(_ =>
            {
                //延迟1秒刷新书架
                EventManager.refreshCollectionList();
            });
        }
Ejemplo n.º 6
0
        public override bool OnKeyDown([GeneratedEnum] Keycode keyCode, KeyEvent e)
        {
            switch (keyCode)
            {
            case Keycode.Back:
                if (mTocListPopupWindow != null && mTocListPopupWindow.IsShowing)
                {
                    mTocListPopupWindow.Dismiss();
                    gone(mTvBookReadTocTitle);
                    visible(mTvBookReadReading, mTvBookReadCommunity, mTvBookReadChangeSource);
                    return(true);
                }
                else if (isVisible(rlReadAaSet))
                {
                    gone(rlReadAaSet);
                    return(true);
                }
                else if (isVisible(mLlBookReadBottom))
                {
                    hideReadBar();
                    return(true);
                }
                else if (!CollectionsManager.getInstance().isCollected(bookId))
                {
                    showJoinBookShelfDialog(recommendBooks);
                    return(true);
                }
                break;

            case Keycode.Menu:
                toggleReadBar();
                return(true);

            case Keycode.VolumeDown:
                if (Settings.VolumeFlipEnable)
                {
                    return(true);
                }
                break;

            case Keycode.VolumeUp:
                if (Settings.VolumeFlipEnable)
                {
                    return(true);
                }
                break;

            default:
                break;
            }
            return(base.OnKeyDown(keyCode, e));
        }
        public ActionResult Index()
        {
            this.FillSeoInformation(UrlBuilder.COLLECTIONS);

            ViewBag.Scripts = new List <string>()
            {
                "collections.js"
            };

            var model = CollectionsManager.SeasonalCollections(this.CurrentBrand);

            return(View(PathFromView("Collections"), model));
        }
Ejemplo n.º 8
0
        public override void onRefresh()
        {
            base.onRefresh();
            Gone(llBatchManagement);
            List <Recommend.RecommendBooks> data = CollectionsManager.getInstance().getCollectionListBySort();

            mAdapter.clear();
            mAdapter.addAll(data);
            //不加下面这句代码会导致,添加本地书籍的时候,部分书籍添加后直接崩溃
            //报错:Scrapped or attached views may not be recycled. isScrap:false isAttached:true
            mAdapter.NotifyDataSetChanged();
            mRecyclerView.setRefreshing(false);
        }
Ejemplo n.º 9
0
        public UserTopGenerator(string osuApiKey, MapCacher mapCacher)
        {
            if (mapCacher == null)
            {
                throw new ArgumentNullException(nameof(mapCacher));
            }
            if (string.IsNullOrEmpty(osuApiKey))
            {
                throw new ArgumentException("osuApiKey is required.");
            }

            _osuApi            = new OsuApi(osuApiKey);
            _mapCacher         = mapCacher;
            _collectionManager = new CollectionsManager(_mapCacher.Beatmaps);
        }
Ejemplo n.º 10
0
        public async Task WhenGetCollectionsAsyncCalledContainsExpectedResult(string id)
        {
            Collection mediaCollection = new Collection();
            var        mock            = new Mock <IOauthRequestSender>();

            mock.Setup(reqSenderMock => reqSenderMock.SendRequestAsync(It.IsAny <Request <Collection> >())).Returns(Task.FromResult(mediaCollection));

            var manager    = new CollectionsManager(mock.Object);
            var collection = await manager.GetCollectionAsync(id);

            mock.Verify(reqSenderMock
                        => reqSenderMock.SendRequestAsync(It.Is <Request <Collection> >(req => req.Uri == $"/api/v4/collections/{id}/" &&
                                                                                        req.HTTPMethod == HttpMethod.Get)));
            Assert.AreEqual(mediaCollection, collection);
        }
Ejemplo n.º 11
0
        public async Task WhenGetMediaAsyncCalledContainsExpectedResult(string id)
        {
            var query = new GetMediaQuery(id);

            IList <string> mediaList = new List <string>();
            var            mock      = new Mock <IOauthRequestSender>();

            mock.Setup(reqSenderMock => reqSenderMock.SendRequestAsync(It.IsAny <Request <IList <string> > >())).Returns(Task.FromResult(mediaList));

            var manager           = new CollectionsManager(mock.Object);
            var mediaOfCollection = await manager.GetMediaAsync(query);

            mock.Verify(reqSenderMock
                        => reqSenderMock.SendRequestAsync(It.Is <Request <IList <string> > >(req => req.Uri == $"/api/v4/collections/{id}/media/" &&
                                                                                             req.HTTPMethod == HttpMethod.Get)));
            Assert.AreEqual(mediaList, mediaOfCollection);
        }
Ejemplo n.º 12
0
        public async Task WhenRemoveMediaAsyncCalledContainsExpectedResult(string id, string mediaId)
        {
            var query = new RemoveMediaQuery(id, new[] { mediaId });

            IList <string> mediaList = new List <string>();
            var            mock      = new Mock <IOauthRequestSender>();

            mock.Setup(reqSenderMock => reqSenderMock.SendRequestAsync(It.IsAny <Request <string> >())).Returns(Task.FromResult(string.Empty));

            var manager = new CollectionsManager(mock.Object);
            await manager.RemoveMediaAsync(query);

            mock.Verify(reqSenderMock
                        => reqSenderMock.SendRequestAsync(It.Is <Request <string> >(req => req.Uri == $"/api/v4/collections/{id}/media/" &&
                                                                                    req.HTTPMethod == HttpMethod.Delete &&
                                                                                    ((RemoveMediaQuery)req.Query).MediaIds.Contains(mediaId))));
        }
Ejemplo n.º 13
0
        public async Task WhenShareAsyncCalledContainsExpectedResult(string id, string emailAddresses)
        {
            IList <string> recipients = emailAddresses.Split(',');

            var query = new ShareQuery(id, recipients, SharingPermission.View);

            IList <string> mediaList = new List <string>();
            var            mock      = new Mock <IOauthRequestSender>();

            mock.Setup(reqSenderMock => reqSenderMock.SendRequestAsync(It.IsAny <Request <string> >())).Returns(Task.FromResult(string.Empty));

            var manager = new CollectionsManager(mock.Object);
            await manager.ShareCollectionAsync(query);

            mock.Verify(reqSenderMock
                        => reqSenderMock.SendRequestAsync(It.Is <Request <string> >(req => req.Uri == $"/api/v4/collections/{id}/share/" &&
                                                                                    req.HTTPMethod == HttpMethod.Post &&
                                                                                    ((ShareQuery)req.Query).Recipients.Count == recipients.Count &&
                                                                                    ((ShareQuery)req.Query).Permission == SharingPermission.View)));
        }
Ejemplo n.º 14
0
 public void onClickJoinCollection()
 {
     if (!isJoinedCollections)
     {
         if (recommendBooks != null)
         {
             CollectionsManager.getInstance().add(recommendBooks);
             ToastUtils.showToast(Java.Lang.String.Format(GetString(
                                                              Resource.String.book_detail_has_joined_the_book_shelf), recommendBooks.title));
             initCollection(false);
         }
     }
     else
     {
         CollectionsManager.getInstance().remove(recommendBooks._id);
         ToastUtils.showToast(Java.Lang.String.Format(GetString(
                                                          Resource.String.book_detail_has_remove_the_book_shelf), recommendBooks.title));
         initCollection(true);
     }
 }
Ejemplo n.º 15
0
        public async Task WhenGetCollectionsAsyncCalledContainsExpectedResult()
        {
            var query = new GetCollectionsQuery()
            {
                Limit = 50, Page = 1
            };

            IList <Collection> mediaCollections = new List <Collection>();
            var mock = new Mock <IOauthRequestSender>();

            mock.Setup(reqSenderMock => reqSenderMock.SendRequestAsync(It.IsAny <Request <IList <Collection> > >())).Returns(Task.FromResult(mediaCollections));

            var manager        = new CollectionsManager(mock.Object);
            var collectionList = await manager.GetCollectionsAsync(query);

            mock.Verify(reqSenderMock
                        => reqSenderMock.SendRequestAsync(It.Is <Request <IList <Collection> > >(req => req.Uri == $"/api/v4/collections/" &&
                                                                                                 req.HTTPMethod == HttpMethod.Get &&
                                                                                                 req.Query == query)));
            Assert.AreEqual(mediaCollections, collectionList);
        }
Ejemplo n.º 16
0
 /**
  * 显示加入书架对话框
  *
  * @param bean
  */
 private void showJoinBookShelfDialog(Recommend.RecommendBooks bean)
 {
     new AlertDialog.Builder(mContext)
     .SetTitle(GetString(Resource.String.book_read_add_book))
     .SetMessage(GetString(Resource.String.book_read_would_you_like_to_add_this_to_the_book_shelf))
     .SetPositiveButton(GetString(Resource.String.book_read_join_the_book_shelf), (sender, e) =>
     {
         var dialog = sender as AlertDialog;
         dialog.Dismiss();
         bean.recentReadingTime = FormatUtils.getCurrentTimeString(FormatUtils.FORMAT_DATE_TIME);
         CollectionsManager.getInstance().add(bean);
         Finish();
     })
     .SetNegativeButton(GetString(Resource.String.book_read_not), (sender, e) =>
     {
         var dialog = sender as AlertDialog;
         dialog.Dismiss();
         Finish();
     })
     .Create()
     .Show();
 }
Ejemplo n.º 17
0
 /// <summary>
 /// 显示删除本地缓存对话框
 /// </summary>
 /// <param name="removeList"></param>
 private void showDeleteCacheDialog(List <Recommend.RecommendBooks> removeList)
 {
     bool[] selected = { true };
     new AlertDialog.Builder(Activity)
     .SetTitle(Activity.GetString(Resource.String.remove_selected_book))
     .SetMultiChoiceItems(new String[] { Activity.GetString(Resource.String.delete_local_cache) }, selected,
                          (sender, e) => {
         selected[0] = e.IsChecked;
     })
     .SetPositiveButton(Activity.GetString(Resource.String.confirm), (sender, e) => {
         var dialog = sender as AlertDialog;
         dialog?.Dismiss();
         // DoInBackground
         ShowDialog();
         Task.Factory
         .StartNew(() =>
                   CollectionsManager.getInstance().removeSome(removeList, selected[0])
                   )
         .ContinueWith(task =>
                       Activity.RunOnUiThread(() => {
             mRecyclerView.showTipViewAndDelayClose("成功移除书籍");
             foreach (Recommend.RecommendBooks bean in removeList)
             {
                 mAdapter.remove(bean);
             }
             if (IsViewVisible(llBatchManagement))
             {
                 //批量管理完成后,隐藏批量管理布局并刷新页面
                 goneBatchManagementAndRefreshUI();
             }
             HideDialog();
         }
                                              ));
     })
     .SetNegativeButton(Activity.GetString(Resource.String.cancel), (sender, e) => { })
     .Create().Show();
 }
Ejemplo n.º 18
0
        private void syncBookShelf()
        {
            List <Recommend.RecommendBooks>          list        = CollectionsManager.getInstance().getCollectionList();
            List <IObservable <BookMixAToc.MixToc> > observables = new List <IObservable <BookMixAToc.MixToc> >();

            if (list != null && list.Any())
            {
                foreach (var bean in list)
                {
                    if (!bean.isFromSD)
                    {
                        IObservable <BookMixAToc.MixToc> fromNetWork = BookApi.Instance.getBookMixAToc(bean._id, "chapters")
                                                                       .Select(s => s.mixToc);
                        observables.Add(fromNetWork);
                    }
                }
            }
            else
            {
                ToastUtils.showSingleToast("书架空空如也...");
                syncBookShelfCompleted();
                return;
            }
            Observable.Merge(observables)
            .SubscribeOn(DefaultScheduler.Instance)
            .ObserveOn(Application.SynchronizationContext)
            .Subscribe(data => {
                String lastChapter = data.chapters[data.chapters.Count() - 1].title;
                CollectionsManager.getInstance().setLastChapterAndLatelyUpdate(data.book, lastChapter, data.chaptersUpdated);
            }, e => {
                LogUtils.e("onError: " + e);
                showError();
            }, () => {
                syncBookShelfCompleted();
            });
        }
Ejemplo n.º 19
0
        static void Main(string[] args)
        {
            try
            {
                if (System.Threading.Thread.CurrentThread.CurrentCulture.Name.StartsWith("zh"))
                {
                    language = JsonConvert.DeserializeObject <Language>(Encoding.UTF8.GetString(Properties.Resources.zh_tw));                                                                            //假如是中文語系,就使用中文
                }
                else
                {
                    language = new Language();  //否則,英文
                }
            }
            catch (Exception) { language = new Language(); /*這邊是當跳出錯誤時,使用英文。正常來說是不會有錯誤才對,但有次比賽拿來做測試的時候出了錯誤,也抓不到點,就先認定是語系的問題了*/ }

            Console.Title = language.AppTitle;

            if (OsuPathResolver.Instance.OsuIsRunning)
            {
                FormatWrite(language.DetectionOsuIsRunning, ConsoleColor.Red);
            }

            OpenFileDialog openFileDialog = new OpenFileDialog(); //選擇收藏夾檔案的對話方塊

            openFileDialog.AddExtension    = true;
            openFileDialog.CheckFileExists = true;
            openFileDialog.CheckPathExists = true;
            openFileDialog.DefaultExt      = "json";
            openFileDialog.Filter          = language.OpenFileFilter;
            openFileDialog.Multiselect     = false;

            if (openFileDialog.ShowDialog() == DialogResult.Cancel)
            {
                Exit(language.PleaseSelectCollection, true);
            }

            JsonData collectionData = null;

            try { collectionData = JsonConvert.DeserializeObject <JsonData>(File.ReadAllText(openFileDialog.FileName)); } //讀取收藏夾資料
            catch (Exception) { }
            if (collectionData == null || collectionData.collection_data == null)
            {
                Exit(language.ReadCollectionFail, true);
            }

            string osuPath = OsuPathResolver.Instance.GetOsuDir((path) => { //第一次會先偵測osu的路徑,然後提示使用者是否正確
                var dialogResult = MessageBox.Show(
                    string.Format(
                        language.ConfirmOsuPath, Environment.NewLine + path, Environment.NewLine),
                    "", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk);
                return(dialogResult == DialogResult.Yes);
            }, (text) => {
                FolderBrowserDialog dialog = new FolderBrowserDialog(); //假如是錯誤的,那就開個資料夾選擇對話框,讓使用者自行選擇osu的路徑

                dialog.ShowNewFolderButton = false;
                dialog.Description         = language.PleaseSelectOsuPath;
                dialog.RootFolder          = Environment.SpecialFolder.MyComputer;
                if (dialog.ShowDialog() == DialogResult.OK && Directory.Exists(dialog.SelectedPath))
                {
                    return(dialog.SelectedPath);
                }
                return("");
            });

            if (osuPath == string.Empty || !Directory.Exists(osuPath))
            {
                Exit(language.NeedValidOsuPath, true);
            }
            if (!osuPath.EndsWith("\\"))
            {
                osuPath += "\\";
            }

            FormatWrite(string.Format(language.OsuPath, osuPath), ConsoleColor.Yellow);
            OsuFileIo.OsuSettings.Load(osuPath);
            OsuFileIo.OsuDatabase.Load(osuPath + "osu!.db"); //載入osu的資料庫來抓取songs的資料夾路徑

            List <BeatmapData> needDownloadBeatmapList = new List <BeatmapData>();
            var collectionManager = new CollectionsManager(OsuFileIo.OsuDatabase.LoadedMaps.Beatmaps); Collection collection;                          //初始化目前osu所有的Beatmap

            collectionManager.EditCollection(CollectionEditArgs.AddCollections(OsuFileIo.CollectionLoader.LoadCollection(osuPath + "collection.db"))); //載入原先的收藏夾

            foreach (CollectionData item in collectionData.collection_data)
            {
                FormatWrite(string.Format(language.CollectionName, item.collection_name), ConsoleColor.Yellow);

                if (collectionManager.CollectionNameExists(item.collection_name))
                {
                    collection = collectionManager.GetCollectionByName(item.collection_name);                                                               //如果收藏夾已經存在,就讀取出來
                }
                else
                {
                    collection = new Collection(OsuFileIo.LoadedMaps)
                    {
                        Name = item.collection_name
                    }
                };                                                                                      //否則新建一個

                foreach (BeatmapData item2 in item.beatmap_data)
                {
                    if (!collection.AllBeatmaps().Any((x) => x.MapId == item2.beatmap_id)) //讀取收藏夾內的Beatmap,如果要匯入的收藏夾Beatmap ID不存在於收藏夾內,那就新增進去
                    {
                        FormatWrite(string.Format(language.AddBeatmapToCollection, item2.beatmap_name), ConsoleColor.Green);
                        collection.AddBeatmapByHash(item2.beatmap_md5);                                         //新增Beatmap,使用Hash新增法
                        if (!OsuFileIo.OsuDatabase.LoadedMaps.Beatmaps.Any((x) => x.MapId == item2.beatmap_id)) //如果osu資料庫裡面沒有該Beatmap
                        {
                            needDownloadBeatmapList.Add(item2);                                                 //就新增到下載清單內
                            FormatWrite(language.NeedDownloadBeatmap, ConsoleColor.Cyan);
                        }
                    }
                }

                collectionManager.EditCollection(CollectionEditArgs.RemoveCollections(new Collections()
                {
                    collection
                }));                                                                                                      //先把收藏夾移除
                collectionManager.EditCollection(CollectionEditArgs.AddCollections(new Collections()
                {
                    collection
                }));                                                                                                   //再把收藏夾新增,以達成重整的效果
            }

            if (needDownloadBeatmapList.Count != 0) //如果下載清單數量不為0,就進入下載程序
            {
                FormatWrite(language.DownloadBeatmapInfo, ConsoleColor.Green);
                CookieAwareWebClient cookieAwareWebClient = new CookieAwareWebClient(); //CollectionManager提供的class,可以讓WebClient使用cookie的功能
                string username, password;
                do
                {
                    Console.Write(language.OsuUsername); username = Console.ReadLine();
                    Console.Write(language.OsuPassword); password = "";
                    do
                    {
                        ConsoleKeyInfo key = Console.ReadKey(true);
                        if (key.Key != ConsoleKey.Backspace && key.Key != ConsoleKey.Enter)
                        {
                            password += key.KeyChar;
                            Console.Write("*");
                        }
                        else
                        {
                            if (key.Key == ConsoleKey.Backspace && password.Length > 0)
                            {
                                password = password.Substring(0, (password.Length - 1));
                                Console.Write("\b \b");
                            }
                            else if (key.Key == ConsoleKey.Enter)
                            {
                                Console.WriteLine();
                                break;
                            }
                        }
                    } while (true);

                    try { if (!cookieAwareWebClient.Login(loginAddress, string.Format(loginDataStr, username, password)).Contains("I don't have an account"))
                          {
                              break;
                          }
                    }                                                                                                                                                  //登入失敗的話,回傳的網頁資料會有I don't have an account
                    catch (Exception ex) { Exit(string.Format(language.LoginErrorElseReason, ex.Message)); }

                    FormatWrite(language.LoginError, ConsoleColor.Red);
                } while (true);

                bool downloadVideo = MessageBox.Show(language.DownloadBeatmapWithVideo, "", MessageBoxButtons.YesNo) == DialogResult.Yes; //提示下載時是否包含背景影片

                needDownloadBeatmapList.ForEach((item) => {
                    string savePath = OsuFileIo.OsuSettings.CustomBeatmapDirectoryLocation + item.beatmap_setid + " " + StripInvalidCharacters(item.beatmap_name) + ".osz"; //存放路徑: osu的songs資料夾 + BeatmapSet ID + BeatmapSet Name
                    if (!File.Exists(savePath))
                    {
                        FormatWrite(string.Format(language.DownloadBeatmapName, Path.GetFileName(savePath)), ConsoleColor.Green);
                        try { File.WriteAllBytes(savePath, cookieAwareWebClient.DownloadData("https://osu.ppy.sh/d/" + item.beatmap_setid + (downloadVideo ? "n" : ""))); }
                        catch (Exception ex) { Console.WriteLine(string.Format(language.DownloadFali, ex.Message)); }
                    }
                    else
                    {
                        FormatWrite(string.Format(language.DownloadDone, Path.GetFileName(savePath)), ConsoleColor.Yellow);
                    }
                });
            }

            string backupName = "collection.db-" + DateTime.Now.ToFileTime() + ".bak"; //備份舊的收藏夾檔案

            File.Move(osuPath + "collection.db", osuPath + backupName);                //然後覆蓋新的收藏夾檔案
            Console.WriteLine(string.Format(language.BackupCollectionTo, osuPath + backupName));

            Console.WriteLine(language.WritingNewCollection);
            OsuFileIo.CollectionLoader.SaveOsuCollection(collectionManager.LoadedCollections, osuPath + "collection.db");

            if (OsuPathResolver.Instance.OsuIsRunning)
            {
                if (needDownloadBeatmapList.Count != 0)
                {
                    Exit(language.WriteDone1);
                }
                else
                {
                    Exit(language.WriteDone2);
                }
            }
            else
            {
                if (needDownloadBeatmapList.Count != 0)
                {
                    Exit(language.WriteDone3);
                }
                else
                {
                    Exit(language.WriteDone4);
                }
            }
        }
Ejemplo n.º 20
0
        /// <summary>
        /// 显示长按对话框
        /// </summary>
        /// <param name="position"></param>
        private void showLongClickDialog(int position)
        {
            var isTop = CollectionsManager.getInstance().isTop(mAdapter.getItem(position)._id);

            string[] items;
            EventHandler <DialogClickEventArgs> handler;

            if (mAdapter.getItem(position).isFromSD)
            {
                items   = Resources.GetStringArray(Resource.Array.recommend_item_long_click_choice_local);
                handler = (sender, e) => {
                    var dialog = (AlertDialog)sender;
                    var which  = e.Which;
                    switch (which)
                    {
                    case 0:
                        //置顶、取消置顶
                        CollectionsManager.getInstance().top(mAdapter.getItem(position)._id, !isTop);
                        break;

                    case 1:
                        //删除
                        List <Recommend.RecommendBooks> removeList = new List <Recommend.RecommendBooks>();
                        removeList.Add(mAdapter.getItem(position));
                        showDeleteCacheDialog(removeList);
                        break;

                    case 2:
                        //批量管理
                        showBatchManagementLayout();
                        break;

                    default:
                        break;
                    }
                    dialog.Dismiss();
                };
            }
            else
            {
                items   = Resources.GetStringArray(Resource.Array.recommend_item_long_click_choice);
                handler = (sender, e) => {
                    var dialog = (AlertDialog)sender;
                    var which  = e.Which;
                    switch (which)
                    {
                    case 0:
                        //置顶、取消置顶
                        CollectionsManager.getInstance().top(mAdapter.getItem(position)._id, !isTop);
                        break;

                    case 1:
                        // 书籍详情
                        BookDetailActivity.startActivity(Activity,
                                                         mAdapter.getItem(position)._id);
                        break;

                    case 2:
                        //移入养肥区
                        mRecyclerView.showTipViewAndDelayClose("正在拼命开发中...");
                        break;

                    case 3:
                        //缓存全本
                        if (mAdapter.getItem(position).isFromSD)
                        {
                            mRecyclerView.showTipViewAndDelayClose("本地文件不支持该选项哦");
                        }
                        else
                        {
                            ShowDialog();
                            getTocList(mAdapter.getItem(position)._id);
                        }
                        break;

                    case 4:
                        //删除
                        List <Recommend.RecommendBooks> removeList = new List <Recommend.RecommendBooks>();
                        removeList.Add(mAdapter.getItem(position));
                        showDeleteCacheDialog(removeList);
                        break;

                    case 5:
                        //批量管理
                        showBatchManagementLayout();
                        break;

                    default:
                        break;
                    }
                    dialog.Dismiss();
                };
            }
            if (isTop)
            {
                items[0] = GetString(Resource.String.cancle_top);
            }
            new AlertDialog.Builder(Activity)
            .SetTitle(mAdapter.getItem(position).title)
            .SetItems(items, handler)
            //.SetNegativeButton(text:string.Empty, handler:(sender, e) => {
            //    // 不干任何事情
            //})
            .Create().Show();
        }