| 45 |
end; |
end; |
| 46 |
|
|
| 47 |
TFavoriteDM = class(TDataModule) |
TFavoriteDM = class(TDataModule) |
|
procedure DataModuleDestroy(Sender: TObject); |
|
| 48 |
private |
private |
| 49 |
{ Private 宣言 } |
{ Private 宣言 } |
| 50 |
|
FAbEnd: Boolean; |
| 51 |
FStack: TStack; |
FStack: TStack; |
| 52 |
FTreeView: TTreeView; |
FTreeView: TTreeView; |
| 53 |
FModified: boolean; |
FModified: boolean; |
| 54 |
procedure ReadNode(Node: IXMLNode); |
procedure ReadNode(Node: IXMLNode); |
| 55 |
procedure AddSaveString(Node: TTreeNode; SaveList: TStringList); |
procedure AddSaveString(Node: TTreeNode; SaveList: TStringList); |
|
// procedure AddSaveString(Node: TTreeNode; XMLNode: IXMLNode); |
|
|
// procedure SAXStartDocument(Sender: TObject); |
|
|
// procedure SAXEndDocument(Sender: TObject); |
|
|
// procedure SAXStartElement(Sender: TObject; const NamespaceURI, LocalName, QName: SAXString; const Atts: IAttributes); |
|
|
// procedure SAXEndElement(Sender: TObject; const NamespaceURI, LocalName, QName: SAXString); |
|
|
// procedure SAXCharacters(Sender: TObject; const PCh: SAXString); |
|
| 56 |
public |
public |
| 57 |
{ Public 宣言 } |
{ Public 宣言 } |
| 58 |
procedure Clear; |
procedure Clear; |
| 64 |
procedure URLReplace(oldURLs: TStringList; newURLs: TStringList); |
procedure URLReplace(oldURLs: TStringList; newURLs: TStringList); |
| 65 |
property TreeView: TTreeView read FTreeView; |
property TreeView: TTreeView read FTreeView; |
| 66 |
property Modified: boolean read FModified write FModified; |
property Modified: boolean read FModified write FModified; |
| 67 |
|
property AbEnd: Boolean read FAbEnd write FAbEnd; |
| 68 |
end; |
end; |
| 69 |
|
|
| 70 |
var |
var |
| 257 |
|
|
| 258 |
end; |
end; |
| 259 |
|
|
|
procedure TFavoriteDM.DataModuleDestroy(Sender: TObject); |
|
|
//var |
|
|
// i: Integer; |
|
|
begin |
|
|
{ TreeView.Items.BeginUpdate; |
|
|
for i := TreeView.Items.Count - 1 downto 0 do begin |
|
|
// if TObject(TreeView.Items[i].Data) <> nil then |
|
|
// TObject(TreeView.Items[i].Data).Free; |
|
|
end; |
|
|
TreeView.Items.Clear; |
|
|
TreeView.Items.EndUpdate; |
|
|
} //TreeView.Free; |
|
|
end; |
|
| 260 |
procedure TFavoriteDM.Clear; |
procedure TFavoriteDM.Clear; |
| 261 |
var |
var |
| 262 |
Node : TTreeNode; |
Node : TTreeNode; |
| 289 |
FavFolder: TFavoriteFolder; |
FavFolder: TFavoriteFolder; |
| 290 |
LinkExists: Boolean; |
LinkExists: Boolean; |
| 291 |
begin |
begin |
| 292 |
|
FABend := False; |
| 293 |
|
|
| 294 |
FavoriteDM.Modified := true; |
FavoriteDM.Modified := true; |
| 295 |
FileName := GikoSys.GetConfigDir + FAVORITE_FILE_NAME; |
FileName := GikoSys.GetConfigDir + FAVORITE_FILE_NAME; |
| 296 |
|
|
| 325 |
Node.ImageIndex := 14; |
Node.ImageIndex := 14; |
| 326 |
Node.SelectedIndex := 14; |
Node.SelectedIndex := 14; |
| 327 |
end; |
end; |
| 328 |
|
|
| 329 |
finally |
finally |
| 330 |
FStack.Free; |
FStack.Free; |
| 331 |
XMLDoc.Free; |
XMLDoc.Free; |
| 332 |
end; |
end; |
| 333 |
except |
except |
| 334 |
|
on e : Exception do begin |
| 335 |
|
FABend := True; |
| 336 |
|
end; |
| 337 |
end; |
end; |
| 338 |
end; |
end; |
| 339 |
|
|
| 443 |
end; |
end; |
| 444 |
|
|
| 445 |
procedure TFavoriteDM.WriteFavorite; |
procedure TFavoriteDM.WriteFavorite; |
|
{ |
|
|
var |
|
|
FileName: string; |
|
|
// SaveList: TStringList; |
|
|
// i: Integer; |
|
|
// Count: Integer; |
|
|
|
|
|
XMLDoc: IXMLDocument; |
|
|
XMLNode: IXMLNode; |
|
|
// FavoNode: IXMLNode; |
|
|
begin |
|
|
XMLDoc := NewXMLDocument; |
|
|
XMLDoc.Encoding := 'Shift_JIS'; |
|
|
XMLDoc.StandAlone := 'yes'; |
|
|
XMLNode := XMLDoc.AddChild('favorite'); |
|
|
FileName := GikoSys.GetConfigDir + FAVORITE_FILE_NAME; |
|
|
AddSaveString(TreeView.Items.GetFirstNode, XMLNode); |
|
|
XMLDoc.SaveToFile(FileName); |
|
|
} |
|
| 446 |
var |
var |
| 447 |
FileName, tmpFileName: string; |
FileName, tmpFileName: string; |
| 448 |
SaveList: TStringList; |
SaveList: TStringList; |
| 471 |
end; |
end; |
| 472 |
end; |
end; |
| 473 |
|
|
|
{ |
|
|
procedure TFavoriteDM.AddSaveString(Node: TTreeNode; XMLNode: IXMLNode); |
|
|
var |
|
|
i: Integer; |
|
|
// s: string; |
|
|
FavBoard: TFavoriteBoardItem; |
|
|
FavThread: TFavoriteThreadItem; |
|
|
FavNode: IXMLNode; |
|
|
begin |
|
|
for i := 0 to Node.Count - 1 do begin |
|
|
if TObject(Node.Item[i].Data) is TFavoriteFolder then begin |
|
|
FavNode := XMLNode.AddChild('folder'); |
|
|
FavNode.Attributes['title'] := Node.Item[i].Text; |
|
|
AddSaveString(Node.Item[i], FavNode); |
|
|
end else if TObject(Node.Item[i].Data) is TFavoriteBoardItem then begin |
|
|
FavBoard := TFavoriteBoardItem(Node.Item[i].Data); |
|
|
FavNode := XMLNode.AddChild('favitem'); |
|
|
FavNode.Attributes['type'] := '2ch'; |
|
|
FavNode.Attributes['favtype'] := 'board'; |
|
|
FavNode.Attributes['bbs'] := FavBoard.BBSID; |
|
|
FavNode.Attributes['title'] := Node.Item[i].Text; |
|
|
FavNode.Attributes['boardname'] := FavBoard.BoardName; |
|
|
end else if TObject(Node.Item[i].Data) is TFavoriteThreadItem then begin |
|
|
FavThread := TFavoriteThreadItem(Node.Item[i].Data); |
|
|
FavNode := XMLNode.AddChild('favitem'); |
|
|
FavNode.Attributes['type'] := '2ch'; |
|
|
FavNode.Attributes['favtype'] := 'thread'; |
|
|
FavNode.Attributes['bbs'] := FavThread.BBSID; |
|
|
FavNode.Attributes['thread'] := FavThread.ThreadID; |
|
|
FavNode.Attributes['title'] := Node.Item[i].Text; |
|
|
FavNode.Attributes['threadname'] := FavThread.ThreadName; |
|
|
end; |
|
|
end; |
|
|
end; |
|
|
} |
|
|
|
|
| 474 |
procedure TFavoriteDM.AddSaveString(Node: TTreeNode; SaveList: TStringList); |
procedure TFavoriteDM.AddSaveString(Node: TTreeNode; SaveList: TStringList); |
| 475 |
var |
var |
| 476 |
s: string; |
s: string; |
| 503 |
end; |
end; |
| 504 |
end; |
end; |
| 505 |
|
|
|
{ |
|
|
procedure TFavoriteDM.SAXStartDocument(Sender: TObject); |
|
|
begin |
|
|
FStack := TStack.Create; |
|
|
FStack.Push(FTreeView.Items.GetFirstNode); |
|
|
end; |
|
|
|
|
|
procedure TFavoriteDM.SAXEndDocument(Sender: TObject); |
|
|
begin |
|
|
FStack.Free; |
|
|
end; |
|
|
|
|
|
procedure TFavoriteDM.SAXStartElement(Sender: TObject; const NamespaceURI, LocalName, QName: SAXString; |
|
|
const Atts: IAttributes); |
|
|
var |
|
|
FavType: string; |
|
|
ParentNode: TTreeNode; |
|
|
CurrentNode: TTreeNode; |
|
|
FavFolder: TFavoriteFolder; |
|
|
FavBoard: TFavoriteBoardItem; |
|
|
FavThread: TFavoriteThreadItem; |
|
|
begin |
|
|
if QName = 'folder' then begin |
|
|
ParentNode := FStack.Peek; |
|
|
if TObject(ParentNode.Data) is TFavoriteFolder then begin |
|
|
FavFolder := TFavoriteFolder.Create; |
|
|
CurrentNode := FTreeView.Items.AddChildObject(ParentNode, Atts.getValue('title'), FavFolder); |
|
|
CurrentNode.ImageIndex := 12; |
|
|
CurrentNode.SelectedIndex := 13; |
|
|
FStack.Push(CurrentNode); |
|
|
end; |
|
|
end else if QName = 'favitem' then begin |
|
|
ParentNode := FStack.Peek; |
|
|
if TObject(ParentNode.Data) is TFavoriteFolder then begin |
|
|
FavType := Atts.getValue('favtype'); |
|
|
if FavType = 'board' then begin |
|
|
FavBoard := TFavoriteBoardItem.Create; |
|
|
FavBoard.BBSID := Atts.getValue('bbs'); |
|
|
FavBoard.BoardName := Atts.getValue('boardname'); |
|
|
CurrentNode := FTreeView.Items.AddChildObject(ParentNode, Atts.getValue('title'), FavBoard); |
|
|
CurrentNode.ImageIndex := 14; |
|
|
CurrentNode.SelectedIndex := 15; |
|
|
end else if FavType = 'thread' then begin |
|
|
FavThread := TFavoriteThreadItem.Create; |
|
|
FavThread.BBSID := Atts.getValue('bbs'); |
|
|
FavThread.ThreadID := Atts.getValue('thread'); |
|
|
FavThread.ThreadName := Atts.getValue('threadname'); |
|
|
CurrentNode := FTreeView.Items.AddChildObject(ParentNode, Atts.getValue('title'), FavThread); |
|
|
CurrentNode.ImageIndex := 16; |
|
|
CurrentNode.SelectedIndex := 17; |
|
|
end; |
|
|
end; |
|
|
end; |
|
|
end; |
|
|
|
|
|
procedure TFavoriteDM.SAXEndElement(Sender: TObject; const NamespaceURI, LocalName, QName: SAXString); |
|
|
begin |
|
|
if QName = 'folder' then begin |
|
|
if FStack.Count <> 0 then |
|
|
FStack.Pop; |
|
|
end; |
|
|
end; |
|
|
|
|
|
procedure TFavoriteDM.SAXCharacters(Sender: TObject; const PCh: SAXString); |
|
|
begin |
|
|
// |
|
|
end; |
|
|
} |
|
| 506 |
function TFavoriteDM.SaveFavoriteFile(FileName: String) : Boolean; |
function TFavoriteDM.SaveFavoriteFile(FileName: String) : Boolean; |
| 507 |
var |
var |
| 508 |
FavoriteFilePath: string; |
FavoriteFilePath: string; |