/// <summary> /// Tries to auto-load metadata for newly added manga /// </summary> /// <param name="obj">NULL</param> private void AutoMetadata(object obj) { const int Second = 1000; int iRecordID = -1; while (true) { metadataQueue.PauseThread(); while (!metadataQueue.StopRequested && metadataQueue.LoadMetadata && metadataQueue.Count() > 0) { iRecordID = metadataQueue.Dequeue(); csEntry en = new csEntry(iRecordID); if (!string.IsNullOrWhiteSpace(en.URL)) { SQL.SaveManga(en.Artist, en.Title, en.PostedDate, en.Tags, en.Location, en.PageCount, en.PageReadCount, en.Category, en.Rating, en.Description, en.URL, en.MangaRead, iRecordID); if (mangaID == iRecordID) { BeginInvoke(new DelInt(SetData), iRecordID); } BeginInvoke(new DelVoid(UpdateLV)); } Thread.Sleep(Second); } } }
/// <summary> /// Adds folder(s) to database when dragged over LV_Entries /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void LV_Entries_DragDrop(object sender, DragEventArgs e) { string[] asDir = ((string[])e.Data.GetData(DataFormats.FileDrop, false)); string sError = ""; int iTrack = mangaID; //add all remaining folders for (int i = 0; i < asDir.Length; i++) { if (string.IsNullOrWhiteSpace(asDir[i]) || (!Directory.Exists(asDir[i]) && !Ext.IsArchive(asDir[i]))) continue; //add item csEntry en = new csEntry(asDir[i]); if (!SQL.ContainsEntry(en.Artist, en.Title)) { mangaID = SQL.SaveManga(en.Artist, en.Title, en.PostedDate, en.Tags, en.Location, en.PageCount, -1, en.Category, en.Rating, "", en.URL); QueueNewManga(mangaID); if (en.Artist != "" && !acTxBx_Artist.KeyWords.Contains(en.Artist)) acTxBx_Artist.KeyWords = SQL.GetArtists(); } else sError += '\n' + asDir[i]; } if (sError != "") { xMessage.ShowWarning("The following path(s) already exists in the database:" + sError); } //Update LV if (iTrack != mangaID) { HandleNewEntries(); } }
/// <summary> /// Adds folder(s) to database when dragged over LV_Entries /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void LV_Entries_DragDrop(object sender, DragEventArgs e) { string[] asDir = ((string[])e.Data.GetData(DataFormats.FileDrop, false)); string sError = ""; int iTrack = mangaID; //add all remaining folders for (int i = 0; i < asDir.Length; i++) { if (string.IsNullOrWhiteSpace(asDir[i]) || (!Directory.Exists(asDir[i]) && !IsArchive(asDir[i]))) continue; //add item csEntry en = new csEntry(asDir[i]); if (!SQL.ContainsEntry(en.sArtist, en.sTitle)) { mangaID = SQL.SaveManga(en.sArtist, en.sTitle, en.dtDate, en.sTags, en.sLoc, en.pages, en.sType, en.byRat, en.sDesc); if (en.sArtist != "" && !CmbBx_Artist.Items.Contains(en.sArtist)) CmbBx_Artist.Items.Add(en.sArtist); } else sError += '\n' + asDir[i]; } if (sError != "") { MessageBox.Show("The following path(s) already exists in the database:" + sError, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information); } //Update LV if (iTrack != mangaID) AddEntries(); }