) : TThreadItem;
var
board : TBoard;
+ tmpThread : TThreadItem;
boardURL : string;
protocol, host, path, document, port, bookmark : string;
BBSID, BBSKey : string;
-// i : Integer;
+ i, bi : Integer;
begin
boardURL := GikoSys.GetThreadURL2BoardURL( inURL );
GikoSys.ParseURI( inURL, protocol, host, path, document, port, bookmark );
GikoSys.Parse2chURL( inURL, path, document, BBSID, BBSKey );
Result := board.FindThreadFromFileName(BBSKey + '.dat');
+ end else if (Result = nil) and not (board.Is2ch) then begin
+ //\83v\83\89\83O\83C\83\93\8cn\82Ì\92T\8dõ\81i\8eå\82ÉURL\82ª\93r\92\86\82Å\95Ï\8dX\82É\82È\82Á\82½\97Þ)
+ try
+ bi := Length(BoardGroups) - 1;
+ for i := 1 to bi do begin
+ if (BoardGroups[i].BoardPlugIn <> nil) and (Assigned(Pointer(BoardGroups[i].BoardPlugIn.Module))) then begin
+ if BoardGroups[i].BoardPlugIn.AcceptURL( inURL ) = atThread then begin
+ tmpThread := TThreadItem.Create( BoardGroups[i].BoardPlugIn, Board, inURL );
+ if not board.IsThreadDatRead then begin
+ GikoSys.ReadSubjectFile( board );
+ end;
+ Result := Board.FindThreadFromFileName( tmpThread.FileName );
+ tmpThread.Free;
+ Break;
+ end;
+ end;
+ end;
+ except
+ Result := nil;
+ end;
end;
end;
TFavoriteFolder = class
end;
- TFavoriteBoardItem = class
+ TFavoriteItem = class(TObject)
private
- FItem : TBoard;
FURL : string;
FTitle : string;
+ public
+ function GetItemTitle : string; virtual;abstract;
+ property URL : string read FURL write FURL; // Item \82ª\8eæ\93¾\82Å\82«\82È\82\82Ä\82à URL \82Í\8fí\82É\95Û\8e\9d\82³\82ê\82é
+ property Title : string read FTitle write FTitle;
+ end;
+ TFavoriteBoardItem = class(TFavoriteItem)
+ private
+ FItem : TBoard;
function GetItem : TBoard;
public
constructor Create( inURL : string; inTitle : string = ''; inItem : TBoard = nil );
constructor CreateWithItem( inItem : TBoard );
- destructor Destory;
+ destructor Destory;
+ function GetItemTitle : string; override;
property Item : TBoard read GetItem write FItem;
- property URL : string read FURL write FURL; // Item \82ª\8eæ\93¾\82Å\82«\82È\82\82Ä\82à URL \82Í\8fí\82É\95Û\8e\9d\82³\82ê\82é
- property Title : string read FTitle write FTitle;
end;
- TFavoriteThreadItem = class
+ TFavoriteThreadItem = class(TFavoriteItem)
private
FItem : TThreadItem;
- FURL : string;
- FTitle : string;
function GetItem : TThreadItem;
public
constructor Create( inURL : string; inTitle : string = ''; inItem : TThreadItem = nil );
constructor CreateWithItem( inItem : TThreadItem );
- destructor Destory;
+ destructor Destory;
+ function GetItemTitle : string; override;
property Item : TThreadItem read GetItem write FItem;
- property URL : string read FURL write FURL; // Item \82ª\8eæ\93¾\82Å\82«\82È\82\82Ä\82à URL \82Í\8fí\82É\95Û\8e\9d\82³\82ê\82é
- property Title : string read FTitle write FTitle;
end;
TFavoriteDM = class(TDataModule)
FItem.Free;
inherited;
end;
+//! \95Û\8e\9d\82µ\82Ä\82¢\82é\94Â\82Ì\83^\83C\83g\83\8b\82ð\95Ô\82·
+function TFavoriteBoardItem.GetItemTitle : string;
+begin
+ Result := '';
+ //\88ê\93x\82à\94Â\82ð\8aJ\82¢\82Ä\82¢\82È\82¢\82Æ\82«\81i\8bN\93®\8e\9e\82É\83L\83\83\83r\83l\83b\83g\82ð\82¨\8bC\82É\93ü\82è\82Æ\82©\81j
+ //\82Ì\82Æ\82«\82ÉFItem\82ªnil\82È\82Ì\82Å\82»\82Ì\82Æ\82«\82Í\82×\82Á\82Æ\8c\9f\8dõ
+ if FItem = nil then begin
+ FItem := BBSsFindBoardFromURL(URL);
+ end;
+ if FItem <> nil then begin
+ try
+ if not FItem.IsThreadDatRead then begin
+ GikoSys.ReadSubjectFile(FItem);
+ end;
+ except
+ end;
+ Result := FItem.Title;
+ end;
+end;
function TFavoriteBoardItem.GetItem : TBoard;
var
protocol, host, path, document, port, bookmark : string;
- BBSID{, BBSKey} : string;
- tmpURL{, boardURL} : string;
-// category : TCategory;
- {i, bi: Integer;}
- {tmpThread: TThreadItem;}
- {tmpBoard: TBoard;}
+ BBSID : string;
+ tmpURL : string;
begin
if FItem = nil then begin
FItem.Free;
inherited;
end;
+//! \95Û\8e\9d\82µ\82Ä\82¢\82é\83X\83\8c\82Ì\83^\83C\83g\83\8b\82ð\95Ô\82·
+function TFavoriteThreadItem.GetItemTitle : string;
+begin
+ Result := '';
+ if FItem = nil then begin
+ FItem := BBSsFindThreadFromURL(URL);
+ end;
+ if FItem <> nil then begin
+ Result := FItem.Title;
+ end;
+end;
function TFavoriteThreadItem.GetItem : TThreadItem;
var
procedure AllSelectActionUpdate(Sender: TObject);
private
{ Private \90é\8c¾ }
+ procedure RepaintStatusBar;
public
{ Public \90é\8c¾ }
published
//! NG\83\8f\81[\83h\93Ç\82Ý\8d\9e\82Ý\81i\88ê\82Â\8cã\82ë\81j
// *************************************************************************
procedure TGikoDM.GoFowardActionExecute(Sender: TObject);
-var
- s: string;
begin
//\88ê\82Â\8cã\82ë\82Ì\93Ç\82Ý\8d\9e\82Ý\81@\8e¸\94s\82µ\82½\82ç\83\81\83b\83Z\81[\83W\8fo\97Í
if GikoSys.FAbon.GoBack =false then begin
MsgBox(GikoForm.Handle, '\88ê\82Â\8cã\82ë\82ÌNG\83\8f\81[\83h\83t\83@\83C\83\8b\82Ì\93Ç\82Ý\8d\9e\82Ý\82É\8e¸\94s\82µ\82Ü\82µ\82½', '\83G\83\89\81[', MB_OK or MB_ICONEXCLAMATION);
end else begin
//\83X\83e\81[\83^\83X\82É\95\\8e¦\82³\82ê\82éNG\83\8f\81[\83h\83t\83@\83C\83\8b\96¼\82ð\8dX\90V
- s := GikoSys.FAbon.NGwordname;
- GikoForm.StatusBar.Panels.Items[2].Text := s;
- //\83X\83e\81[\83^\83X\82Ì\95\\8e¦\83T\83C\83Y\82Ì\83\8a\83T\83C\83Y
- GikoForm.StatusBar.Panels[2].Width := Max(GikoForm.StatusBar.Canvas.TextWidth(s), 100);
- GikoForm.StatusBarResize(Sender);
+ RepaintStatusBar;
//\91S\82Ä\82Ì\83^\83u\82É\8dÄ\95`\89æ\82ð\90Ý\92è
GikoForm.RepaintAllTabsBrowser();
end;
//! NG\83\8f\81[\83h\93Ç\82Ý\8d\9e\82Ý\81i\88ê\82Â\91O\81j
// *************************************************************************
procedure TGikoDM.GoBackActionExecute(Sender: TObject);
-var
- s: string;
begin
//\88ê\82Â\8cã\82ë\82Ì\93Ç\82Ý\8d\9e\82Ý\81@\8e¸\94s\82µ\82½\82ç\83\81\83b\83Z\81[\83W\8fo\97Í
if GikoSys.FAbon.GoForward =false then begin
MsgBox(GikoForm.Handle, '\88ê\82Â\91O\82ÌNG\83\8f\81[\83h\83t\83@\83C\83\8b\82Ì\93Ç\82Ý\8d\9e\82Ý\82É\8e¸\94s\82µ\82Ü\82µ\82½', '\83G\83\89\81[', MB_OK or MB_ICONEXCLAMATION);
end else begin
- //\83X\83e\81[\83^\83X\82É\95\\8e¦\82³\82ê\82éNG\83\8f\81[\83h\83t\83@\83C\83\8b\96¼\82ð\8dX\90V
- s := GikoSys.FAbon.NGwordname;
- GikoForm.StatusBar.Panels.Items[2].Text := s;
- //\83X\83e\81[\83^\83X\82Ì\95\\8e¦\83T\83C\83Y\82Ì\83\8a\83T\83C\83Y
- GikoForm.StatusBar.Panels[2].Width := Max(GikoForm.StatusBar.Canvas.TextWidth(s), 100);
- GikoForm.StatusBarResize(Sender);
- //\91S\82Ä\82Ì\83^\83u\82É\8dÄ\95`\89æ\82ð\90Ý\92è
+ //\83X\83e\81[\83^\83X\82É\95\\8e¦\82³\82ê\82éNG\83\8f\81[\83h\83t\83@\83C\83\8b\96¼\82ð\8dX\90V
+ RepaintStatusBar;
+ //\91S\82Ä\82Ì\83^\83u\82É\8dÄ\95`\89æ\82ð\90Ý\92è
GikoForm.RepaintAllTabsBrowser();
end;
end;
// *************************************************************************
+//! NG\83\8f\81[\83h\82ð\95Ï\8dX\82µ\82½\8cã\82Ì\83X\83e\81[\83^\83X\83o\81[\82Ì\8dX\90V\8f\88\97\9d
+// *************************************************************************
+procedure TGikoDM.RepaintStatusBar;
+var
+ s : String;
+begin
+ //\83X\83e\81[\83^\83X\82É\95\\8e¦\82³\82ê\82éNG\83\8f\81[\83h\83t\83@\83C\83\8b\96¼\82ð\8dX\90V
+ s := GikoSys.FAbon.NGwordname;
+ GikoForm.StatusBar.Panels.Items[2].Text := s;
+ //\83X\83e\81[\83^\83X\82Ì\95\\8e¦\83T\83C\83Y\82Ì\83\8a\83T\83C\83Y
+ GikoForm.StatusBar.Panels[2].Width := Max(GikoForm.StatusBar.Canvas.TextWidth(s), 100);
+ GikoForm.StatusBarResize(nil);
+end;
+// *************************************************************************
//! \83A\83h\83\8c\83X\83o\81[\82É\95\\8e¦\82µ\82Ä\82¢\82é\83A\83h\83\8c\83X\82Ö\88Ú\93®\82·\82é
// *************************************************************************
procedure TGikoDM.MoveToActionExecute(Sender: TObject);
// *************************************************************************
procedure TGikoDM.FavoriteTreeViewURLCopyActionExecute(Sender: TObject);
var
- FavThread : TFavoriteThreadItem;
- FavBoard : TFavoriteBoardItem;
+ FavItem : TFavoriteItem;
s : string;
begin
if GikoForm.ClickNode = nil then Exit;
- if (TObject(GikoForm.ClickNode.Data) is TFavoriteThreadItem) then begin
-
- FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data );
- s := FavThread.URL + #13#10;
- if s <> '' then
- Clipboard.AsText := s;
-
- end else if (TObject(GikoForm.ClickNode.Data) is TFavoriteBoardItem) then begin
-
- FavBoard := TFavoriteBoardItem( GikoForm.ClickNode.Data );
- s := FavBoard.URL + #13#10;
- if s <> '' then
- Clipboard.AsText := s;
-
+ if (TObject(GikoForm.ClickNode.Data) is TFavoriteItem) then begin
+ Clipboard.AsText := TFavoriteItem( GikoForm.ClickNode.Data ).URL + #13#10;
end;
end;
// *************************************************************************
FavThread: TFavoriteThreadItem;
Board: TBoard;
FavBoard: TFavoriteBoardItem;
+ FavItem: TFavoriteItem;
s: string;
begin
if GikoForm.ClickNode = nil then Exit;
- if (TObject(GikoForm.ClickNode.Data) is TFavoriteThreadItem) then begin
-
- FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data );
- ThreadItem := FavThread.Item;
-
- try
- s := ThreadItem.Title + #13#10;
- if s <> '' then
- Clipboard.AsText := s;
- finally
- end;
-
- end else if (TObject(GikoForm.ClickNode.Data) is TFavoriteBoardItem) then begin
-
- FavBoard := TFavoriteBoardItem( GikoForm.ClickNode.Data );
- Board := FavBoard.Item;
- if Board <> nil then
- if not Board.IsThreadDatRead then
- GikoSys.ReadSubjectFile(Board);
-
- try
- s := Board.Title + #13#10;
- if s <> '' then
- Clipboard.AsText := s;
- finally
- end;
-
+ if (TObject(GikoForm.ClickNode.Data) is TFavoriteItem) then begin
+ Clipboard.AsText :=
+ TFavoriteItem(GikoForm.ClickNode.Data).GetItemTitle + #13#10;
end;
-
end;
// *************************************************************************
//! \91I\91ð\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82Ì\96¼\91O\82ÆURL\82ð\83R\83s\81[\82·\82é
procedure TGikoDM.FavoriteTreeViewNameURLCopyActionExecute(
Sender: TObject);
var
- ThreadItem: TThreadItem;
- FavThread: TFavoriteThreadItem;
- Board: TBoard;
- FavBoard: TFavoriteBoardItem;
- s: string;
+ favItem : TFavoriteItem;
begin
if GikoForm.ClickNode = nil then Exit;
- if (TObject(GikoForm.ClickNode.Data) is TFavoriteThreadItem) then begin
-
- FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data );
- ThreadItem := FavThread.Item;
-
- try
- s := ThreadItem.Title + #13#10 + ThreadItem.URL + #13#10;
- if s <> '' then
- Clipboard.AsText := s;
- finally
- end;
-
- end else if (TObject(GikoForm.ClickNode.Data) is TFavoriteBoardItem) then begin
-
- FavBoard := TFavoriteBoardItem( GikoForm.ClickNode.Data );
- Board := FavBoard.Item;
- if Board <> nil then
- if not Board.IsThreadDatRead then
- GikoSys.ReadSubjectFile(Board);
-
- try
- s := Board.Title + #13#10 + Board.URL + #13#10;
- if s <> '' then
- Clipboard.AsText := s;
- finally
- end;
-
+ if (TObject(GikoForm.ClickNode.Data) is TFavoriteItem) then begin
+ favItem := TFavoriteItem(GikoForm.ClickNode.Data);
+ Clipboard.AsText := favItem.GetItemTitle + #13#10 +
+ favItem.URL + #13#10;
end;
end;