ギコナビ
修訂 | b86063858cee550e0635d5045760477270c3e1af (tree) |
---|---|
時間 | 2006-08-19 03:37:28 |
作者 | h677 <h677> |
Commiter | h677 |
ローカルルール取得とかのリファクタリング
@@ -252,6 +252,11 @@ type | ||
252 | 252 | procedure SetExtraTab; |
253 | 253 | //! Âæ¾ |
254 | 254 | function GetBoard : TBoard; |
255 | + //! URLÌf[^ðstreamÉæèÞ | |
256 | + procedure GetWebData(const URL: string; const RefURL: string; | |
257 | + Modified: TDateTime; stream: TStream); | |
258 | + //! GikoFormÉV bZ[WðÇÁ·é | |
259 | + procedure AddFormMessageNew(icon: TGikoMessageIcon); | |
255 | 260 | protected |
256 | 261 | procedure CreateParams(var Params: TCreateParams); override; |
257 | 262 | public |
@@ -1002,34 +1007,23 @@ begin | ||
1002 | 1007 | if FStatusCode = 302 then begin |
1003 | 1008 | GikoForm.PlaySound('ResEnd'); |
1004 | 1009 | SaveSendFile; |
1005 | - if FThreadItem = nil then | |
1006 | - GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.GetGikoMessage(gmNewSure), nil, gmiOK) | |
1007 | - else | |
1008 | - GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.GetGikoMessage(gmNewRes), nil, gmiOK); | |
1010 | + AddFormMessageNew( gmiOK ); | |
1009 | 1011 | Close; |
1010 | 1012 | Exit; |
1011 | 1013 | end; |
1012 | 1014 | if State = gdsComplete then begin |
1013 | 1015 | GikoForm.PlaySound('ResEnd'); |
1014 | 1016 | SaveSendFile; |
1015 | - if FThreadItem = nil then | |
1016 | - GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.GetGikoMessage(gmNewSure), nil, gmiOK) | |
1017 | - else | |
1018 | - GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.GetGikoMessage(gmNewRes), nil, gmiOK); | |
1017 | + AddFormMessageNew( gmiOK ); | |
1019 | 1018 | Close; |
1020 | 1019 | end else if State = gdsError then begin |
1021 | - if FThreadItem = nil then | |
1022 | - GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.GetGikoMessage(gmNewSure), nil, gmiOK) | |
1023 | - else | |
1024 | - GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.GetGikoMessage(gmNewRes), nil, gmiOK); | |
1025 | - | |
1020 | + AddFormMessageNew( gmiOK ); | |
1026 | 1021 | EditorPage.ActivePage := PreviewTab; |
1027 | 1022 | SetContent(ResponseText, Browser); |
1028 | 1023 | end else if State = gdsAbort then begin |
1029 | 1024 | GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.GetGikoMessage(gmAbort), nil, gmiSAD); |
1030 | 1025 | end; |
1031 | 1026 | end; |
1032 | - | |
1033 | 1027 | function TEditorForm.GetResultType(ResponseText: string): TGikoResultType; |
1034 | 1028 | begin |
1035 | 1029 | if AnsiPos('«±ÝªIíèܵ½', ResponseText) <> 0 then |
@@ -1508,65 +1502,59 @@ end; | ||
1508 | 1502 | |
1509 | 1503 | procedure TEditorForm.GetSETTINGTXTActionExecute(Sender: TObject); |
1510 | 1504 | var |
1505 | + memStream: TMemoryStream; | |
1511 | 1506 | URL, RefURL: string; |
1512 | 1507 | settingBody: TStringList; |
1513 | 1508 | tmpBoard: TBoard; |
1514 | 1509 | begin |
1510 | + if not FWork then begin | |
1511 | + FWork := True; | |
1515 | 1512 | |
1516 | - if FWork then begin | |
1517 | - Exit; | |
1518 | - end; | |
1519 | - | |
1520 | - FWork := True; | |
1521 | - | |
1522 | - InitIdHTTP(Indy); | |
1523 | - tmpBoard := GetBoard; | |
1524 | - | |
1525 | - if tmpBoard = nil then Exit; | |
1526 | - | |
1527 | - RefURL := tmpBoard.URL; | |
1528 | - if RefURL[Length(RefURL)] <> '/' then | |
1529 | - URL := RefURL + '/' + 'SETTING.TXT' | |
1530 | - else | |
1531 | - URL := RefURL + 'SETTING.TXT'; | |
1532 | - | |
1533 | - Indy.Request.LastModified := tmpBoard.SETTINGTXTTime; | |
1534 | - Indy.Request.Referer := RefURL; | |
1535 | - Screen.Cursor := crHourGlass; | |
1536 | - settingBody := TStringList.Create; | |
1537 | - try | |
1538 | - StatusBar.Panels[0].Text := 'SETTING.TXT_E[h'; | |
1539 | - try | |
1540 | - IdAntiFreeze.Active := True; | |
1541 | - try | |
1542 | - settingBody.Text := Indy.Get(URL); | |
1543 | - finally | |
1544 | - IdAntiFreeze.Active := False; | |
1545 | - end; | |
1546 | - if( Indy.ResponseCode = 200 ) then begin | |
1547 | - settingBody.SaveToFile(tmpBoard.GetSETTINGTXTFileName); | |
1548 | - tmpBoard.SETTINGTXTTime := Indy.Response.LastModified; | |
1549 | - tmpBoard.IsSETTINGTXT := true; | |
1550 | - tmpBoard.TitlePictureURL := GetTitlePictureURL(settingBody, tmpBoard); | |
1551 | - tmpBoard.Modified := true; | |
1552 | - StatusBar.Panels[0].Text := 'SETTING.TXTæ¾®¹(' + IntToStr(Indy.ResponseCode) + ')'; | |
1553 | - end; | |
1554 | - except | |
1555 | - on E: EIdException do begin | |
1556 | - if( AnsiPos('304', E.Message) > 0 ) then | |
1557 | - StatusBar.Panels[0].Text := 'SETTING.TXTXV³µ(' + IntToStr(Indy.ResponseCode) + ')' | |
1558 | - else | |
1559 | - StatusBar.Panels[0].Text := 'SETTING.TXTæ¾G[(' + IntToStr(Indy.ResponseCode) + ')'; | |
1560 | - end; | |
1561 | - end; | |
1562 | - finally | |
1563 | - settingBody.Free; | |
1564 | - Screen.Cursor := crDefault; | |
1565 | - FWork := False; | |
1566 | - end; | |
1567 | - ShowBoardInformation(tmpBoard, BoardInformationMemo); | |
1568 | - | |
1569 | - | |
1513 | + tmpBoard := GetBoard; | |
1514 | + if tmpBoard <> nil then begin | |
1515 | + | |
1516 | + RefURL := tmpBoard.URL; | |
1517 | + if RefURL[Length(RefURL)] <> '/' then | |
1518 | + URL := RefURL + '/' + 'SETTING.TXT' | |
1519 | + else | |
1520 | + URL := RefURL + 'SETTING.TXT'; | |
1521 | + Screen.Cursor := crHourGlass; | |
1522 | + memStream := TMemoryStream.Create; | |
1523 | + try | |
1524 | + try | |
1525 | + StatusBar.Panels[0].Text := 'SETTING.TXT_E[h'; | |
1526 | + GetWebData(URL, RefURL, tmpBoard.SETTINGTXTTime, memStream); | |
1527 | + if( Indy.ResponseCode = 200 ) then begin | |
1528 | + settingBody := TStringList.Create; | |
1529 | + try | |
1530 | + memStream.Seek(0, soFromBeginning); | |
1531 | + settingBody.LoadFromStream(memStream); | |
1532 | + settingBody.SaveToFile(tmpBoard.GetSETTINGTXTFileName); | |
1533 | + tmpBoard.SETTINGTXTTime := Indy.Response.LastModified; | |
1534 | + tmpBoard.IsSETTINGTXT := true; | |
1535 | + tmpBoard.TitlePictureURL := GetTitlePictureURL(settingBody, tmpBoard); | |
1536 | + tmpBoard.Modified := true; | |
1537 | + finally | |
1538 | + settingBody.Free; | |
1539 | + end; | |
1540 | + StatusBar.Panels[0].Text := 'SETTING.TXTæ¾®¹(' + IntToStr(Indy.ResponseCode) + ')'; | |
1541 | + end; | |
1542 | + except | |
1543 | + on E: EIdException do begin | |
1544 | + if( AnsiPos('304', E.Message) > 0 ) then | |
1545 | + StatusBar.Panels[0].Text := 'SETTING.TXTXV³µ(' + IntToStr(Indy.ResponseCode) + ')' | |
1546 | + else | |
1547 | + StatusBar.Panels[0].Text := 'SETTING.TXTæ¾G[(' + IntToStr(Indy.ResponseCode) + ')'; | |
1548 | + end; | |
1549 | + end; | |
1550 | + finally | |
1551 | + memStream.Free; | |
1552 | + Screen.Cursor := crDefault; | |
1553 | + end; | |
1554 | + ShowBoardInformation(tmpBoard, BoardInformationMemo); | |
1555 | + end; | |
1556 | + FWork := False; | |
1557 | + end; | |
1570 | 1558 | end; |
1571 | 1559 | |
1572 | 1560 | procedure TEditorForm.ShowBoardInformation(ABoard: TBoard; AMemo: TMemo); |
@@ -1640,38 +1628,53 @@ begin | ||
1640 | 1628 | Exit; |
1641 | 1629 | |
1642 | 1630 | FWork := True; |
1643 | - | |
1644 | - InitIdHTTP(Indy); | |
1645 | 1631 | memStream := TMemoryStream.Create; |
1646 | 1632 | try |
1647 | 1633 | tmpBoard := GetBoard; |
1648 | 1634 | |
1649 | - Indy.Request.Referer := tmpBoard.URL; | |
1650 | - if tmpBoard.TitlePictureURL <> '' then begin | |
1635 | + if (tmpBoard <> nil) and (tmpBoard.TitlePictureURL <> '') then begin | |
1651 | 1636 | StatusBar.Panels[0].Text := 'Âgbvæ_E[h'; |
1652 | 1637 | Screen.Cursor := crHourGlass; |
1653 | 1638 | try |
1654 | - IdAntiFreeze.Active := True; | |
1655 | - try | |
1656 | - Indy.Get(tmpBoard.TitlePictureURL, memStream); | |
1657 | - finally | |
1658 | - IdAntiFreeze.Active := False; | |
1659 | - end; | |
1639 | + // URLðwèµÄÉÇÝÞ | |
1640 | + GetWebData(tmpBoard.TitlePictureURL, tmpBoard.URL, | |
1641 | + ZERO_DATE, memStream); | |
1660 | 1642 | if Indy.ResponseCode = 200 then begin |
1661 | 1643 | memStream.SaveToFile(tmpBoard.GetTitlePictureFileName); |
1662 | 1644 | ShowTitlePicture(); |
1663 | 1645 | tmpBoard.Modified := true; |
1664 | 1646 | end; |
1647 | + StatusBar.Panels[0].Text := 'Âgbvæ (' + IntToStr(Indy.ResponseCode) + ')'; | |
1665 | 1648 | except |
1666 | 1649 | end; |
1667 | 1650 | end; |
1668 | 1651 | finally |
1669 | - Screen.Cursor := crDefault; | |
1670 | - StatusBar.Panels[0].Text := 'Âgbvæ (' + IntToStr(Indy.ResponseCode) + ')'; | |
1671 | 1652 | memStream.Free; |
1653 | + FWork := False; | |
1654 | + Screen.Cursor := crDefault; | |
1672 | 1655 | end; |
1656 | +end; | |
1657 | +{ | |
1658 | +\brief URLÌf[^ðstreamÉÇÝÞ | |
1659 | +\param URL ÇÝÞæ | |
1660 | +\param RefURL refererÉÝè·é | |
1661 | +\param Modified ModifiedÉÝè·é | |
1662 | +\param stream ÇÝñ¾f[^ÌÛ¶æ | |
1663 | +} | |
1664 | +procedure TEditorForm.GetWebData(const URL: string; const RefURL: string; | |
1665 | + Modified: TDateTime; stream: TStream); | |
1666 | +begin | |
1667 | + InitIdHTTP(Indy); | |
1668 | + Indy.Request.Referer := RefURL; | |
1669 | + Indy.Request.LastModified := Modified; | |
1670 | + | |
1671 | + IdAntiFreeze.Active := True; | |
1672 | + try | |
1673 | + Indy.Get(URL, stream); | |
1674 | + finally | |
1675 | + IdAntiFreeze.Active := False; | |
1676 | + end; | |
1673 | 1677 | |
1674 | - FWork := False; | |
1675 | 1678 | end; |
1676 | 1679 | procedure TEditorForm.ShowTitlePicture(); |
1677 | 1680 | var |
@@ -1708,69 +1711,63 @@ var | ||
1708 | 1711 | URL, RefURL: string; |
1709 | 1712 | settingBody: TStringList; |
1710 | 1713 | tmpBoard: TBoard; |
1714 | + memStream: TMemoryStream; | |
1711 | 1715 | begin |
1712 | - if FWork then | |
1713 | - Exit; | |
1716 | + if not FWork then begin | |
1714 | 1717 | FWork := True; |
1715 | 1718 | |
1716 | - InitIdHTTP(Indy); | |
1717 | - | |
1718 | - tmpBoard := GetBoard; | |
1719 | - | |
1720 | - if tmpBoard = nil then Exit; | |
1721 | - | |
1722 | - RefURL := tmpBoard.URL; | |
1723 | - if RefURL[Length(RefURL)] <> '/' then | |
1724 | - URL := RefURL + '/' + 'head.txt' | |
1725 | - else | |
1726 | - URL := RefURL + 'head.txt'; | |
1727 | - | |
1728 | - if FileExists(tmpBoard.GETHEADTXTFileName) then | |
1729 | - Indy.Request.LastModified := tmpBoard.HEADTXTTime | |
1730 | - else | |
1731 | - Indy.Request.LastModified := ZERO_DATE; | |
1732 | - | |
1733 | - Indy.Request.Referer := RefURL; | |
1734 | - Screen.Cursor := crHourGlass; | |
1735 | - settingBody := TStringList.Create; | |
1736 | - try | |
1737 | - StatusBar.Panels[0].Text := '[J[(head.txt)_E[h'; | |
1738 | - try | |
1739 | - IdAntiFreeze.Active := True; | |
1740 | - try | |
1741 | - settingBody.Text := Indy.Get(URL); | |
1742 | - finally | |
1743 | - IdAntiFreeze.Active := False; | |
1744 | - end; | |
1745 | - if( Indy.ResponseCode = 200 ) then begin | |
1746 | - settingBody.Insert(0, '<HTML lang="ja"><HEAD>'); | |
1747 | - settingBody.Insert(1, '<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">'); | |
1748 | - settingBody.Insert(2, '<TITLE>' + tmpBoard.Title + '</TITLE>'); | |
1749 | - settingBody.Insert(3, '<base href="' + RefURL + '"></HEAD><BODY>'); | |
1750 | - settingBody.Add('</BODY></HTML>'); | |
1751 | - settingBody.SaveToFile(tmpBoard.GETHEADTXTFileName); | |
1752 | - tmpBoard.HEADTXTTime := Indy.Response.LastModified; | |
1753 | - tmpBoard.IsHEADTXT := true; | |
1754 | - tmpBoard.Modified := true; | |
1755 | - StatusBar.Panels[0].Text := '[J[æ¾®¹(' + IntToStr(Indy.ResponseCode) + ')'; | |
1756 | - end; | |
1757 | - except | |
1758 | - on E: EIdException do begin | |
1759 | - if( AnsiPos('304', E.Message) > 0 ) then | |
1760 | - StatusBar.Panels[0].Text := '[J[XV³µ(' + IntToStr(Indy.ResponseCode) + ')' | |
1761 | - else | |
1762 | - StatusBar.Panels[0].Text := '[J[æ¾G[(' + IntToStr(Indy.ResponseCode) + ')'; | |
1763 | - end; | |
1764 | - end; | |
1765 | - finally | |
1766 | - settingBody.Free; | |
1767 | - Screen.Cursor := crDefault; | |
1719 | + tmpBoard := GetBoard; | |
1720 | + if (tmpBoard <> nil) then begin | |
1721 | + | |
1722 | + RefURL := tmpBoard.URL; | |
1723 | + if RefURL[Length(RefURL)] <> '/' then | |
1724 | + URL := RefURL + '/' + 'head.txt' | |
1725 | + else | |
1726 | + URL := RefURL + 'head.txt'; | |
1727 | + | |
1728 | + Screen.Cursor := crHourGlass; | |
1729 | + memStream := TMemoryStream.Create; | |
1730 | + try | |
1731 | + StatusBar.Panels[0].Text := '[J[(head.txt)_E[h'; | |
1732 | + try | |
1733 | + GetWebData(URL, RefURL, tmpBoard.HEADTXTTime, memStream); | |
1734 | + if( Indy.ResponseCode = 200 ) then begin | |
1735 | + settingBody := TStringList.Create; | |
1736 | + try | |
1737 | + memStream.Seek(0, soFromBeginning); | |
1738 | + settingBody.LoadFromStream(memStream); | |
1739 | + settingBody.Insert(0, '<HTML lang="ja"><HEAD>'); | |
1740 | + settingBody.Insert(1, '<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">'); | |
1741 | + settingBody.Insert(2, '<TITLE>' + tmpBoard.Title + '</TITLE>'); | |
1742 | + settingBody.Insert(3, '<base href="' + RefURL + '"></HEAD><BODY>'); | |
1743 | + settingBody.Add('</BODY></HTML>'); | |
1744 | + settingBody.SaveToFile(tmpBoard.GETHEADTXTFileName); | |
1745 | + tmpBoard.HEADTXTTime := Indy.Response.LastModified; | |
1746 | + tmpBoard.IsHEADTXT := true; | |
1747 | + tmpBoard.Modified := true; | |
1748 | + finally | |
1749 | + settingBody.Free; | |
1750 | + end; | |
1751 | + StatusBar.Panels[0].Text := '[J[æ¾®¹(' + IntToStr(Indy.ResponseCode) + ')'; | |
1752 | + end; | |
1753 | + except | |
1754 | + on E: EIdException do begin | |
1755 | + if( AnsiPos('304', E.Message) > 0 ) then | |
1756 | + StatusBar.Panels[0].Text := '[J[XV³µ(' + IntToStr(Indy.ResponseCode) + ')' | |
1757 | + else | |
1758 | + StatusBar.Panels[0].Text := '[J[æ¾G[(' + IntToStr(Indy.ResponseCode) + ')'; | |
1759 | + end; | |
1760 | + end; | |
1761 | + finally | |
1762 | + memStream.Free; | |
1763 | + Screen.Cursor := crDefault; | |
1764 | + end; | |
1765 | + if tmpBoard.IsHEADTXT then begin | |
1766 | + ShowBoardHead(tmpboard, LocalEdit); | |
1767 | + end; | |
1768 | + end; | |
1768 | 1769 | FWork := False; |
1769 | - end; | |
1770 | - if tmpBoard.IsHEADTXT then begin | |
1771 | - ShowBoardHead(tmpboard, LocalEdit); | |
1772 | - end; | |
1773 | - | |
1770 | + end; | |
1774 | 1771 | |
1775 | 1772 | end; |
1776 | 1773 |
@@ -2277,5 +2274,18 @@ begin | ||
2277 | 2274 | Result := FThreadItem.ParentBoard; |
2278 | 2275 | end; |
2279 | 2276 | end; |
2277 | +{ | |
2278 | +\brief GikoFormÉbZ[WðÇÁ·é | |
2279 | +\param icon bZ[WÉÂACR | |
2280 | +} | |
2281 | +procedure TEditorForm.AddFormMessageNew(icon: TGikoMessageIcon); | |
2282 | +begin | |
2283 | + if FThreadItem = nil then begin | |
2284 | + GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.GetGikoMessage(gmNewSure), nil, icon) | |
2285 | + end else begin | |
2286 | + GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.GetGikoMessage(gmNewRes), nil, icon); | |
2287 | + end; | |
2288 | + | |
2289 | +end; | |
2280 | 2290 | |
2281 | 2291 | end. |