OSDN Git Service

リファクタリング中
authorh677 <h677>
Sat, 10 Dec 2005 06:13:31 +0000 (06:13 +0000)
committerh677 <h677>
Sat, 10 Dec 2005 06:13:31 +0000 (06:13 +0000)
BoardGroup.pas
Favorite.pas
GikoDataModule.pas
GikoSystem.pas

index 4617aad..80a3c35 100644 (file)
@@ -458,10 +458,11 @@ function  BBSsFindThreadFromURL(
 ) : 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 );
@@ -475,6 +476,26 @@ begin
                        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;
 
index f8c4751..d62a8f7 100644 (file)
@@ -12,34 +12,37 @@ type
        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)
@@ -113,15 +116,30 @@ begin
                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
@@ -176,6 +194,17 @@ 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
index 6c80978..d59d519 100644 (file)
@@ -363,6 +363,7 @@ type
        procedure AllSelectActionUpdate(Sender: TObject);
   private
        { Private \90é\8c¾ }
+       procedure RepaintStatusBar;
   public
        { Public \90é\8c¾ }
   published
@@ -471,19 +472,13 @@ end;
 //! 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;
@@ -492,24 +487,32 @@ 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);
@@ -701,27 +704,14 @@ end;
 // *************************************************************************
 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;
 // *************************************************************************
@@ -733,40 +723,16 @@ var
        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é
@@ -774,42 +740,15 @@ end;
 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;
index 23cfa78..4fc95ed 100644 (file)
@@ -176,7 +176,6 @@ type
 
                function GetFileSize(FileName : string) : longint;
                function GetFileLineCount(FileName : string): longint;
-               function Get2chDate(aDate: TDateTime): string;
                function IntToDateTime(val: Int64): TDateTime;
                function DateTimeToInt(ADate: TDateTime): Int64;
 
@@ -526,19 +525,6 @@ begin
 end;
 
 {!
-\brief \82Q\82¿\82á\82ñ\82Ë\82é\95û\8e®\8e\9e\8d\8f\8eæ\93¾
-\param  \95Ï\8a·\82·\82é\8e\9e\8d\8f
-\return 2\82¿\82á\82ñ\82Ë\82é\95û\8e®\82Å\8e\9e\8d\8f\82ð\95\\82µ\82½\95\8e\9a\97ñ
-}
-function TGikoSys.Get2chDate(aDate: TDateTime): string;
-var
-       d2: TDateTime;
-begin
-       d2 := aDate - EncodeTime(9, 0, 0, 0);
-       Result := FloatToStr(Trunc((d2 - ZERO_DATE) * 86400));
-end;
-
-{!
 \brief \8co\89ß\95b\82ð TDateTime \82É\95Ï\8a·
 \param val 1970/1/1/ 00:00:00 \82©\82ç\82Ì\8co\89ß\95b
 \return val \82ð\8e¦\82· TDateTime