HTML1: TMenuItem;
DAT4: TMenuItem;
N80: TMenuItem;
+ SameBoardThreadItem: TMenuItem;
+ N81: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure BrowserStatusTextChange(Sender: TObject;
procedure ShowEditors(nCmdShow: Integer);
//! \82à\82Á\82Æ\82à\8cÃ\82¢Browser\82Ì\8aJ\95ú
procedure ReleaseOldestBrowser;
+ //! \83A\83N\83e\83B\83u\82È\83^\83u\82Æ\93¯\82¶\94Â\82Ì\8aJ\82¢\82Ä\82¢\82é\83X\83\8c\83b\83h\82ð\83\81\83j\83\85\81[\83A\83C\83e\83\80\82É\92Ç\89Á
+ procedure AddMenuSameBoardThread;
+ //! \83A\83N\83e\83B\83u\82È\83^\83u\82Æ\93¯\82¶\94Â\82Ì\8aJ\82¢\82Ä\82¢\82é\83X\83\8c\83b\83h\83N\83\8a\83b\83N\83C\83x\83\93\83g
+ procedure SameBoardThreadSubItemOnClick(Sender: TObject);
protected
procedure CreateParams(var Params: TCreateParams); override;
procedure WndProc(var Message: TMessage); override;
procedure TGikoForm.BrowserTabPopupMenuPopup(Sender: TObject);
begin
AddRoundNameMenu(dummy1);
+ AddMenuSameBoardThread;
+end;
+//! \83A\83N\83e\83B\83u\82È\83^\83u\82Æ\93¯\82¶\94Â\82Ì\8aJ\82¢\82Ä\82¢\82é\83X\83\8c\83b\83h\82ð\83\81\83j\83\85\81[\83A\83C\83e\83\80\82É\92Ç\89Á
+procedure TGikoForm.AddMenuSameBoardThread;
+var
+ i: Integer;
+ Item: TMenuItem;
+begin
+ SameBoardThreadItem.Clear;
+ for i := 0 to BrowserTab.Tabs.Count - 1 do begin
+ // \93¯\82¶\94Â\82©\82Ç\82¤\82©
+ if (FActiveContent.Thread.ParentBoard =
+ TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread.ParentBoard) then begin
+ // \8e©\95ª\82Í\8aO\82·
+ if FActiveContent.Thread <>
+ TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread then begin
+ Item := TMenuItem.Create(Self);
+ Item.Caption := TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread.Title;
+ Item.OnClick := SameBoardThreadSubItemOnClick;
+ SameBoardThreadItem.Add(Item);
+ end;
+ end;
+ end;
+ // \89½\82à\96³\82¢\82È\82ç\8eg\97p\82Å\82«\82È\82¢\82æ\82¤\82É\82·\82é
+ SameBoardThreadItem.Enabled := SameBoardThreadItem.Count > 0;
+end;
+//! \83A\83N\83e\83B\83u\82È\83^\83u\82Æ\93¯\82¶\94Â\82Ì\8aJ\82¢\82Ä\82¢\82é\83X\83\8c\83b\83h\83N\83\8a\83b\83N\83C\83x\83\93\83g
+procedure TGikoForm.SameBoardThreadSubItemOnClick(Sender: TObject);
+var
+ i, j: Integer;
+ MenuItem: TMenuItem;
+begin
+ if Sender is TMenuItem then begin
+ try
+ j := 0;
+ MenuItem := TMenuItem(Sender);
+ for i := 0 to BrowserTab.Tabs.Count - 1 do begin
+ // \93¯\82¶\94Â\82©\82Ç\82¤\82©
+ if (FActiveContent.Thread.ParentBoard =
+ TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread.ParentBoard) then begin
+ if FActiveContent.Thread <>
+ TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread then begin
+ if (SameBoardThreadItem.Items[j] = MenuItem) then begin
+ MoveToURL( TBrowserRecord(BrowserTab.Tabs.Objects[i])
+ .Thread.URL);
+ Exit;
+ end;
+ Inc(j);
+ end;
+ end;
+ end;
+ except
+ end;
+ end;
end;
-
procedure TGikoForm.FavoritesURLReplace(oldURLs: TStringList; newURLs: TStringList);
begin
FavoriteDM.URLReplace(oldURLs, newURLs);
TreeDoubleClick( TreeView.Selected );
end else if Key = VK_RETURN then begin
TreeClick( TreeView.Selected );
- TreeView.Selected.Expanded := not TreeView.Selected.Expanded;
+ // \97\9a\97ð\82Ì\8fê\8d\87\81A\8fÁ\82³\82ê\82Ä\82¢\82é\82Ì\82Å\83`\83F\83b\83N\82·\82é
+ if (TreeView.Selected <> nil) then begin
+ TreeView.Selected.Expanded := not TreeView.Selected.Expanded;
+ end;
end;
end;
//! \82¨\8bC\82É\93ü\82è\82ÌMouseDown\83C\83x\83\93\83g
function ChooseString(const Text, Separator: string; Index: integer): string;
//! \88ê\8e\9e\83t\83@\83C\83\8b\82©\82ç\82Ì\95\9c\8b\8c
procedure RestoreThreadData(Board: TBoard);
+ //! \83C\83\93\83f\83b\83N\83X\82É\82È\82¢dat\81i\82Í\82®\82êdat\81j\82Ì\92Ç\89Á
+ procedure AddOutofIndexDat(Board: TBoard; DatList: TStringList);
public
{ Public \90é\8c¾ }
FAbon : TAbon;
i: Integer;
Rec: TIndexRec;
UnRead: Integer;
- ResRec: TResRec;
usePlugIn : Boolean;
- BoardPath : String;
- server : String;
islog : Boolean;
urlHead: String;
{*
Board.Clear;
UnRead := 0;
usePlugIn := Board.IsBoardPlugInAvailable;
- server := UrlToServer( Board.URL );
+ //server := UrlToServer( Board.URL );
+ // \83X\83\8c\83b\83h\82Å\8b¤\92Ê\82ÌURL\95\94
+ if Board.is2ch then begin
+ urlHead := UrlToServer( Board.URL ) + 'test/read.cgi/' + Board.BBSID + '/';
+ end else begin
+ urlHead := UrlToServer( Board.URL ) + 'test/read.cgi?bbs=' + Board.BBSID + '&key=';
+ end;
FileName := Board.GetFolderIndexFileName;
// \8fd\95¡\82ð\96h\82®
Board.BeginUpdate;
Board.Sorted := True;
-
sl := TStringList.Create;
try
if FileExists(FileName) then begin
sl.LoadFromFile(FileName);
- // \83X\83\8c\83b\83h\82Å\8b¤\92Ê\82ÌURL\95\94
- if Board.is2ch then begin
- urlHead := server + 'test/read.cgi/' + Board.BBSID + '/';
- end else begin
- urlHead := server + 'test/read.cgi?bbs=' + Board.BBSID + '&key=';
- end;
//\82Q\8ds\96Ú\82©\82ç\81i\82P\8ds\96Ú\82Í\83o\81[\83W\83\87\83\93\81j
for i := sl.Count - 1 downto 1 do begin
Rec := ParseIndexLine(sl[i]);
ThreadItem.EndUpdate;
Board.Add(ThreadItem);
- if (ThreadItem.IsLogFile) and (ThreadItem.UnRead) then
+ if (ThreadItem.UnRead) and (ThreadItem.IsLogFile) then
Inc(UnRead);
end;
end;
if UnRead <> Board.UnRead then
Board.UnRead := UnRead;
- Boardpath := ExtractFilePath(Board.GetFolderIndexFileName);
//\83C\83\93\83f\83b\83N\83X\82É\96³\82©\82Á\82½\83\8d\83O\82ð\92Ç\89Á\81i\95\85\82ê\83C\83\93\83f\83b\83N\83X\91Î\89\9e\81j
- for i := 0 to FileList.Count - 1 do begin
- FileName := Boardpath + FileList[i];
-
- //ResRec := DivideStrLine(ReadThreadFile(FileName, 1));
- if usePlugIn then begin
- ThreadItem := TThreadItem.Create(
- Board.BoardPlugIn,
- Board,
- Board.BoardPlugIn.FileName2ThreadURL( DWORD( Board ), FileList[i] ) );
- THTMLCreate.DivideStrLine(Board.BoardPlugIn.GetDat( DWORD( ThreadItem ), 1 ), @ResRec);
- end else begin
- ThreadItem := TThreadItem.Create(
- nil,
- Board,
- Get2chBoard2ThreadURL( Board, ChangeFileExt( FileList[i], '' ) ) );
- THTMLCreate.DivideStrLine(ReadThreadFile(FileName, 1), @ResRec);
- end;
-
- ThreadItem.BeginUpdate;
- ThreadItem.FileName := FileList[i];
- //ThreadItem.FilePath := FileName;
- ThreadItem.No := Board.Count + 1;
- ThreadItem.Title := ResRec.FTitle;
- ThreadItem.Count := GetFileLineCount(FileName);
- ThreadItem.AllResCount := ThreadItem.Count;
- ThreadItem.NewResCount := ThreadItem.Count;
- ThreadItem.Size := GetFileSize(FileName) - ThreadItem.Count;//1byte\82¸\82ê\82é\82Æ\82«\82ª\82 \82é\82¯\82Ç\82»\82ê\82Í\82 \82«\82ç\82ß\82é
- ThreadItem.RoundDate := FileDateToDateTime( FileAge( FileName ) );
- ThreadItem.LastModified := ThreadItem.RoundDate;
- ThreadItem.Kokomade := -1;
- ThreadItem.NewReceive := 0;
- ThreadItem.ParentBoard := Board;
- ThreadItem.IsLogFile := True;
- ThreadItem.Round := False;
- ThreadItem.UnRead := False;
- ThreadItem.ScrollTop := 0;
- ThreadItem.AgeSage := gasNone;
- ThreadItem.EndUpdate;
- Board.Add(ThreadItem);
- end;
+ AddOutofIndexDat(Board, FileList);
Board.EndUpdate;
-
+
//\91O\89ñ\88Ù\8fí\8fI\97¹\8e\9e\83`\83F\83b\83N
RestoreThreadData( Board );
finally
end;
Board.IsThreadDatRead := True;
end;
-
+{!
+\brief \83C\83\93\83f\83b\83N\83X\82É\82È\82¢dat\81i\82Í\82®\82êdat\81j\82Ì\92Ç\89Á
+\param Board \92Ç\89Á\82·\82é\94Â
+\param DatList dat\83t\83@\83C\83\8b\96¼
+}
+procedure TGikoSys.AddOutofIndexDat(Board: TBoard; DatList: TStringList);
+var
+ i : Integer;
+ Boardpath,FileName : String;
+ ResRec: TResRec;
+ ThreadItem: TThreadItem;
+begin
+ Boardpath := ExtractFilePath(Board.GetFolderIndexFileName);
+ //\83C\83\93\83f\83b\83N\83X\82É\96³\82©\82Á\82½\83\8d\83O\82ð\92Ç\89Á\81i\95\85\82ê\83C\83\93\83f\83b\83N\83X\91Î\89\9e\81j
+ for i := 0 to DatList.Count - 1 do begin
+ FileName := Boardpath + DatList[i];
+
+ //ResRec := DivideStrLine(ReadThreadFile(FileName, 1));
+ if Board.IsBoardPlugInAvailable then begin
+ ThreadItem := TThreadItem.Create(
+ Board.BoardPlugIn,
+ Board,
+ Board.BoardPlugIn.FileName2ThreadURL( DWORD( Board ), DatList[i] ) );
+ THTMLCreate.DivideStrLine(Board.BoardPlugIn.GetDat( DWORD( ThreadItem ), 1 ), @ResRec);
+ end else begin
+ ThreadItem := TThreadItem.Create(
+ nil,
+ Board,
+ Get2chBoard2ThreadURL( Board, ChangeFileExt( DatList[i], '' ) ) );
+ THTMLCreate.DivideStrLine(ReadThreadFile(FileName, 1), @ResRec);
+ end;
+
+ ThreadItem.BeginUpdate;
+ ThreadItem.FileName := DatList[i];
+ //ThreadItem.FilePath := FileName;
+ ThreadItem.No := Board.Count + 1;
+ ThreadItem.Title := ResRec.FTitle;
+ ThreadItem.Count := GetFileLineCount(FileName);
+ ThreadItem.AllResCount := ThreadItem.Count;
+ ThreadItem.NewResCount := ThreadItem.Count;
+ ThreadItem.Size := GetFileSize(FileName) - ThreadItem.Count;//1byte\82¸\82ê\82é\82Æ\82«\82ª\82 \82é\82¯\82Ç\82»\82ê\82Í\82 \82«\82ç\82ß\82é
+ ThreadItem.RoundDate := FileDateToDateTime( FileAge( FileName ) );
+ ThreadItem.LastModified := ThreadItem.RoundDate;
+ ThreadItem.Kokomade := -1;
+ ThreadItem.NewReceive := 0;
+ ThreadItem.ParentBoard := Board;
+ ThreadItem.IsLogFile := True;
+ ThreadItem.Round := False;
+ ThreadItem.UnRead := False;
+ ThreadItem.ScrollTop := 0;
+ ThreadItem.AgeSage := gasNone;
+ ThreadItem.EndUpdate;
+ Board.Add(ThreadItem);
+ end;
+end;
{!
\brief \83X\83\8c\83b\83h\83C\83\93\83f\83b\83N\83X\83t\83@\83C\83\8b(Folder.idx)\8dì\90¬
\param Board Folder.idx \82ð\8dì\90¬\82·\82é\94Â
}
function TGikoSys.ParseIndexLine(Line: string): TIndexRec;
begin
- Result.FNo := StrToIntDef('$' + RemoveToken(Line, #1), 0);
- Result.FFileName := RemoveToken(Line, #1);
- Result.FTitle := MojuUtils.UnSanitize(RemoveToken(Line, #1));
- Result.FCount := StrToIntDef('$' + RemoveToken(Line, #1), 0);
- Result.FSize := StrToIntDef('$' + RemoveToken(Line, #1), 0);
- Result.FRoundDate := IntToDateTime(StrToIntDef('$' + RemoveToken(Line, #1), ZERO_DATE));
- Result.FLastModified := IntToDateTime(StrToIntDef('$' + RemoveToken(Line, #1), ZERO_DATE));
- Result.FKokomade := StrToIntDef('$' + RemoveToken(Line, #1), -1);
- Result.FNewReceive := StrToIntDef('$' + RemoveToken(Line, #1), 0);
+ Result.FNo := StrToIntDef('$' + MojuUtils.RemoveToken(Line, #1), 0);
+ Result.FFileName := MojuUtils.RemoveToken(Line, #1);
+ Result.FTitle := MojuUtils.UnSanitize(MojuUtils.RemoveToken(Line, #1));
+ Result.FCount := StrToIntDef('$' + MojuUtils.RemoveToken(Line, #1), 0);
+ Result.FSize := StrToIntDef('$' + MojuUtils.RemoveToken(Line, #1), 0);
+ Result.FRoundDate := IntToDateTime(StrToIntDef('$' + MojuUtils.RemoveToken(Line, #1), ZERO_DATE));
+ Result.FLastModified := IntToDateTime(StrToIntDef('$' + MojuUtils.RemoveToken(Line, #1), ZERO_DATE));
+ Result.FKokomade := StrToIntDef('$' + MojuUtils.RemoveToken(Line, #1), -1);
+ Result.FNewReceive := StrToIntDef('$' + MojuUtils.RemoveToken(Line, #1), 0);
RemoveToken(Line, #1);//9: ; //\96¢\8eg\97p
- Result.FUnRead := IntToBool(StrToIntDef('$' + RemoveToken(Line, #1), 0));
- Result.FScrollTop := StrToIntDef('$' + RemoveToken(Line, #1), 0);
- Result.FAllResCount := StrToIntDef('$' + RemoveToken(Line, #1), 0);
- Result.FNewResCount := StrToIntDef('$' + RemoveToken(Line, #1), 0);
- Result.FAgeSage := TGikoAgeSage(StrToIntDef('$' + RemoveToken(Line, #1), 0));
+ Result.FUnRead := IntToBool(StrToIntDef('$' + MojuUtils.RemoveToken(Line, #1), 0));
+ Result.FScrollTop := StrToIntDef('$' + MojuUtils.RemoveToken(Line, #1), 0);
+ Result.FAllResCount := StrToIntDef('$' + MojuUtils.RemoveToken(Line, #1), 0);
+ Result.FNewResCount := StrToIntDef('$' + MojuUtils.RemoveToken(Line, #1), 0);
+ Result.FAgeSage := TGikoAgeSage(StrToIntDef('$' + MojuUtils.RemoveToken(Line, #1), 0));
end;