N74: TMenuItem;
WikiFAQ: TMenuItem;
GikoApplicationEvents: TApplicationEvents;
+ N22: TMenuItem;
+ N42: TMenuItem;
+ DAT2: TMenuItem;
+ N75: TMenuItem;
+ DAT3: TMenuItem;
+ N76: TMenuItem;
+ FavoriteTreeItemNameCopyPopupMenu: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure BrowserStatusTextChange(Sender: TObject;
procedure GikoApplicationEventsException(Sender: TObject; E: Exception);
procedure TreeViewMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
+ procedure GetResURLMenuClick(Sender: TObject);
private
{ Private \90é\8c¾ }
FEnabledCloseButton: Boolean;
FIsHandledWheel : Boolean; ///< \8aù\82É\8eó\82¯\8eæ\82Á\82½ WM_MOUSEWHEEL \82©\82Ç\82¤\82©
DiffComp: Boolean; //Add by Genyakun \83X\83\8c\82ª\8dX\90V\82³\82ê\82½\82Æ\82«\82ÉTrue\82É\82È\82é
FOrigenCaption: String; //\82¨\8bC\82É\93ü\82è\83c\83\8a\81[\82Ì\83A\83C\83e\83\80\95Ò\8fW\8e\9e\82Ì\95Ò\8fW\91O\82Ì\95¶\8e\9a\97ñ
- FPreviewBrowserRect: TRect; ///< \83v\83\8c\83r\83\85\81[\82Ì\95\\8e¦\88Ê\92u\82ð\8bL\89¯\82·\82é
+ FPreviewBrowserRect: TRect; ///< \83v\83\8c\83r\83\85\81[\82Ì\95\\8e¦\88Ê\92u\82ð\8bL\89¯\82·\82é
+ FActionListGroupIndexes: array of Integer; ///<GikoDM\8fã\82Ì\83A\83N\83V\83\87\83\93\83\8a\83X\83g\82Ì\8ae\83A\83N\83V\83\87\83\93\82É\90Ý\92è\82³\82ê\82½GroupIndex\82ð\95Û\91¶\82·\82é\94z\97ñ
procedure DownloadEnd(Sender: TObject; Item: TDownloadItem);
procedure DownloadMsg(Sender: TObject; Item: TDownloadItem; Msg: string; Icon: TGikoMessageIcon);
procedure WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer; Number: Integer; const AWorkTitle: string);
function GetScreenCursor(): TCursor;
//\83J\81[\83\\83\8b\82ð\90Ý\92è\82·\82é
procedure SetScreenCursor(Cursor : TCursor);
- //! \83A\83N\83V\83\87\83\93\82Ì\83`\83F\83b\83N\8fó\91Ô\82Ì\8f\89\8aú\89»
- procedure InitActionChecked();
//! \83_\83E\83\93\83\8d\81[\83h\83R\83\93\83g\83\8d\81[\83\8b\83X\83\8c\83b\83h\82Ì\90¶\90¬
procedure CreateControlThread();
//! \83u\83\89\83E\83U\82Ì\90¶\90¬
procedure CreateBrowsers(count: Integer);
+ //! ActionList\82ÌGroupIndex\82Ì\95Û\91¶
+ procedure GetGroupIndex(ActionList: TActionList);
+ //! ActionList\82ÌGroupIndex\82Ì\90Ý\92è
+ procedure SetGroupIndex(ActionList: TActionList);
+ //! \8ew\92è\82³\82ê\82½\83X\83\8c\83b\83h\82ð\8aJ\82(\83\8d\83O\82ª\96³\82¢\82Æ\82« or \8ew\92èJUMP\82Ü\82Å\91«\82è\82È\82¢\82Æ\82«\82ÍDL\82·\82é)
+ procedure OpenThreadItem(Thread: TThreadItem; URL: String);
+ //! ListView\81i\83X\83\8c\83b\83h\88ê\97\97\81j\82ð\8dX\90V\82·\82é
+ procedure RefreshListView(Thread: TThreadItem);
+ //! \83X\83\8c\83b\83h\88ê\97\97\82Ì\95\\8e¦\94Í\88Í\90Ý\92è\83`\83F\83b\83N\83N\83\8a\83A
+ procedure ClearThreadRengeAction;
protected
procedure CreateParams(var Params: TCreateParams); override;
procedure WndProc(var Message: TMessage); override;
function WebBrowserClick(Sender: TObject): WordBool;
//! \83c\81[\83\8b\83o\81[\82É\83X\83\8c\8di\8d\9e\82Ý\83R\83\93\83{\83{\83b\83N\83X\82ð\90Ý\92è\82·\82é
procedure SetSelectComboBox();
+
published
property EnabledCloseButton: Boolean read FEnabledCloseButton write SetEnabledCloseButton;
end;
FavoriteArrange, AddressHistory, Preview, Gesture,
About, Option, Round, Splash, Sort, ListSelect, Imm,
NewBoard, MojuUtils, Clipbrd, GikoBayesian,Y_TextConverter,
- HTMLCreate, ListViewUtils, GikoDataModule, GikoMessage;
+ HTMLCreate, ListViewUtils, GikoDataModule, GikoMessage,
+ InputAssistDataModule;
const
BLANK_HTML: string = 'about:blank';
Writeln('============================================================');
{$ENDIF}
//try
+ Sort.SetSortDate(Now());
+
FTreeType := gttNone;
// \8bN\93®\8e\9e\82É\95Û\91¶\82³\82ê\82Ä\82µ\82Ü\82¤\91Î\8dô
FStartUp := true;
Application.HookMainWindow(Hook);
FIsIgnoreResize := rtResizing;
-
+ //ActionList\82ÌGuoupIndex\82ð\95Û\91¶\82µ\82Ä\81A0\82É\83N\83\8a\83A\82·\82é\81B
+ //(\8bN\93®\8e\9e\82É\83c\81[\83\8b\83{\83^\83\93\82ÌDown\83v\83\8d\83p\83e\83B\82ð\94½\89f\82³\82¹\82é\93s\8d\87\8fãGroupIndex\82Í\90Ý\92è\82Å\82«\82È\82¢)
+ //\82±\82ê\88È\8cãSet\81`\82Å\8dÄ\90Ý\92è\82·\82é\82Ü\82Å\81AAction\82ÌChecked\82ð\82¢\82¶\82é\82Æ\82«\82Í\92\8d\88Ó\81I
+ GetGroupIndex(GikoDM.GikoFormActionList);
FSearchDialog := nil;
CreateBrowsers(BROWSER_COUNT);
//ViewNoButton.Down := GikoSys.Setting.ListViewNo;
GikoDM.ListNumberVisibleAction.Checked := GikoSys.Setting.ListViewNo;
+ //\83~\83\85\81[\83g\82Ì\8fó\91Ô\82ð\90Ý\92è
+ GikoDM.MuteAction.Checked := GikoSys.Setting.Mute;
+
+ // \83\8c\83X\95\\8e¦\94Í\88Í
+ FResRangeMenuSelect := GikoSys.ResRange;
+ case GikoSys.ResRange of
+ Ord( grrAll ):
+ begin
+ GikoDM.AllResAction.Execute;
+ end;
+ Ord( grrSelect ):
+ begin
+ SelectComboBox.Text := SelectComboBox.Items[ 1 ];
+ GikoDM.SelectResAction.Checked := True;
+ end;
+ else
+ case FResRangeMenuSelect of
+ Ord( grrKoko ): GikoDM.OnlyKokoResAction.Checked := True;
+ Ord( grrNew ): GikoDM.OnlyNewResAction.Checked := True;
+ 100: GikoDM.OnlyAHundredResAction.Checked := True;
+ end;
+ end;
+
+ // \83X\83\8c\83b\83h\88ê\97\97\95\\8e¦\94Í\88Í
+ case GikoSys.Setting.ThreadRange of
+ gtrAll:
+ begin
+ GikoDM.AllItemAction.Checked := True;
+ ViewType := gvtAll;
+ end;
+ gtrLog:
+ begin
+ GikoDM.LogItemAction.Checked := True;
+ ViewType := gvtLog;
+ end;
+ gtrNew:
+ begin
+ GikoDM.NewItemAction.Checked := True;
+ ViewType := gvtNew;
+ end;
+ gtrLive:
+ begin
+ GikoDM.LiveItemAction.Checked := True;
+ ViewType := gvtLive;
+ end;
+ gtrArch:
+ begin
+ GikoDM.ArchiveItemAction.Checked := True;
+ ViewType := gvtArch;
+ end;
+ end;
+
+
//\83u\83\89\83E\83U\83^\83u\83t\83H\83\93\83g
BrowserTab.Font.Name := GikoSys.Setting.BrowserTabFontName;
BrowserTab.Font.Size := GikoSys.Setting.BrowserTabFontSize;
BrowserTab.Font.Style := [fsBold];
if GikoSys.Setting.BrowserTabFontItalic then
BrowserTab.Font.Style := GikoForm.BrowserTab.Font.Style + [fsItalic];
+ BrowserTab.DoubleBuffered := True;
FDragWFirst := false;
SetContent(BrowserNullTab); //\83u\83\89\83E\83U\82ð\8bó\94\92\95\\8e¦
+ //\83u\83\89\83E\83U\83^\83u
+ GikoDM.BrowserTabVisibleAction.Checked := GikoSys.Setting.BrowserTabVisible;
+
+ if GikoSys.Setting.BrowserTabPosition = gtpTop then begin
+ GikoDM.BrowserTabTopAction.Checked := True;
+ end else begin
+ GikoDM.BrowserTabBottomAction.Checked := True;
+ end;
+
+ if GikoSys.Setting.BrowserTabStyle = gtsTab then begin
+ GikoDM.BrowserTabTabStyleAction.Checked := True;
+ end else if GikoSys.Setting.BrowserTabStyle = gtsButton then begin
+ GikoDM.BrowserTabButtonStyleAction.Checked := True;
+ end else begin
+ GikoDM.BrowserTabFlatStyleAction.Checked := True;
+ end;
+
//\83v\83\8d\83O\83\8c\83X\83o\81[\82Ì\8f\89\8aú\89»
ProgressBar.Parent := StatusBar;
ProgressBar.Top := 2;
FavoriteAddToolButton.Caption := '\92Ç\89Á...';
AntiIndivAbonMenuItem.Caption := '\8cÂ\95Ê\82 \82Ú\81`\82ñ\89ð\8f\9c';
-
+ //\93ü\97Í\83A\83V\83X\83g\8b@\8d\\82Ì\8f\89\8aú\89»
+ InputAssistDM.Init(GikoSys.GetInputAssistFileName);
end;
// CoolBar \82Ì\90Ý\92è\82ð\95Ï\90\94\82É\95Û\91¶
GikoDM.BrowserNameBarVisibleAction.Checked := GikoSys.Setting.BrowserNameBarVisible;
GikoDM.BrowserNameBarVisibleActionExecute( nil );
- //\83u\83\89\83E\83U\83^\83u
- GikoDM.BrowserTabVisibleAction.Checked := GikoSys.Setting.BrowserTabVisible;
- GikoDM.BrowserTabVisibleActionExecute(nil);
-
- if GikoSys.Setting.BrowserTabPosition = gtpTop then begin
- GikoDM.BrowserTabTopAction.Checked := True;
- GikoDM.BrowserTabTopActionExecute(nil);
- end else begin
- GikoDM.BrowserTabBottomAction.Checked := True;
- GikoDM.BrowserTabBottomActionExecute(nil);
- end;
-
- if GikoSys.Setting.BrowserTabStyle = gtsTab then begin
- GikoDM.BrowserTabTabStyleAction.Checked := True;
- GikoDM.BrowserTabTabStyleActionExecute(nil);
- end else if GikoSys.Setting.BrowserTabStyle = gtsButton then begin
- GikoDM.BrowserTabButtonStyleAction.Checked := True;
- GikoDM.BrowserTabButtonStyleActionExecute(nil);
- end else begin
- GikoDM.BrowserTabFlatStyleAction.Checked := True;
- GikoDM.BrowserTabFlatStyleActionExecute(nil);
- end;
-
- // ListView \82Ì\83w\83b\83_\83h\83\89\83b\83O
-// ListView.FullDrag := True;
-
// CoolBar \95\9c\8c³
LoadCoolBarSettings;
//\8fd\97v\81@\82±\82ê\82ª\82È\82¢\82Æ\83c\81[\83\8b\83{\83^\83\93\82Ì\8dX\90V\82ª\82¨\82©\82µ\82\82È\82é
// ResetBandInfo( ListCoolBar, ListToolBar );
FIsIgnoreResize := rtNone;
- //\83c\81[\83\8b\83o\81[\82Ì\8dX\90V\82ð\8fI\82¦\82½\8cã\82É\82â\82ç\82È\82¢\82Æ\82¢\82¯\82È\82¢\82Ì\82©\82à
- //\83A\83N\83V\83\87\83\93\82Ì\83`\83F\83b\83N\8fó\91Ô\82ð\8f\89\8aú\89»
- InitActionChecked();
//FormCrete\82©\82ç\88Ú\93®\81B
if GikoSys.Setting.TabAutoLoadSave then begin
GikoDM.TabAutoLoadAction.Execute;
end;
- //\82É\82¿\82á\82ñ\8cê\88Ä\93à\83T\83|\81[\83g\8b@\94\
- if GikoSys.Setting.GengoSupport then begin
- //\97\\92è\92n
- //Test\8cü\82¯
- end;
+
+ //ActionList\82ÌGroupIndex\82ð\8c³\82É\96ß\82·
+ SetGroupIndex(GikoDM.GikoFormActionList);
FStartUp := false;
end;
begin
// if GikoForm.WindowState <> wsMinimized then
// SaveCoolBarSettings;
+ CanClose := True;
if ( GikoSys.Setting.ShowDialogForEnd ) and
(MessageDlg('\83M\83R\83i\83r\82ð\8fI\97¹\82µ\82Ä\82æ\82ë\82µ\82¢\82Å\82·\82©\81H', mtConfirmation,[mbOk, mbCancel], 0) = mrCancel ) then begin
CanClose := false;
Exit;
- end else begin
- CanClose := True;
- if GikoSys.Setting.TabAutoLoadSave then begin
- GikoDM.TabAutoSaveAction.Execute;
+ end;
+
+ if GikoSys.Setting.TabAutoLoadSave then begin
+ GikoDM.TabAutoSaveAction.Execute;
+ end;
+
+ if (SearchDialog <> nil) then begin
+ if (SearchDialog.Visible) then begin
+ SearchDialog.Close;
+ try
+ SearchDialog.Release;
+ except
+ end;
+ SearchDialog := nil;
end;
end;
- { //2ch\8c¾\8cȩ̂²ÙFree
+ { //2ch\8c¾\8cȩ̂²ÙFree
if GikoSys.Setting.Gengo <> nil then begin
GikoSys.Setting.Gengo.Free;
end;
- }
+ }
Application.UnhookMainWindow(Hook);
Application.Terminate;
end;
// CoolBar \95Û\91¶
//if (GikoForm.WindowState <> wsMinimized) and (GikoForm.WindowState <> wsMaximized) then
+ //\93ü\97Í\83A\83V\83X\83g\8b@\8d\\82Ì\90Ý\92è\82Ì\95Û\91¶
+ InputAssistDM.SaveToFile(GikoSys.GetInputAssistFileName);
//\82¨\8bC\82É\93ü\82è\95Û\91¶
try
GikoDM.TabsOpenAction.Execute;
end;
-
+{!
+\todo \89½\8cÌ IE 7 \82Å\82Í about:.. \82É\82È\82é\82Ì\82©
+ (IE 7 \82ª about:.. \82ð\92Ç\89Á\82µ\82Ä\82¢\82é\82Ì\82©\81A\83M\83R\83i\83r\82ª\92Ç\89Á\82µ\82Ä\82¢\82é\82Ì\82©)
+ \92²\8d¸\82·\82é\82±\82Æ
+}
procedure TGikoForm.BrowserStatusTextChange(Sender: TObject; const Text: WideString);
var
p: TPoint;
e: IHTMLElement;
Ext: string;
PathRec: TPathRec;
-begin
+ Text2: string;
+begin
+ // \83M\83R\83i\83r\82Í\83\8c\83X\83A\83\93\83J\81[\82ª about:blank.. \82Å\8en\82Ü\82é\82±\82Æ\82ð\8aú\91Ò\82µ\82Ä\82¢\82é\82ª
+ // IE 7 \82Å\82Í about:blank.. \82Å\82Í\82È\82 about:.. \82É\82È\82é\82Ì\82Å\81A\92u\8a·\82·\82é(\93\8a\82°\82â\82è)
+ if Pos('about:..', Text) = 1 then
+ Text2 := 'about:blank..' + Copy( Text, Length('about:..')+1, Length(Text) )
+ else
+ Text2 := Text;
if not( TObject(Sender) is TWebBrowser )then
Exit;
try
Exit;
end;
- StatusBar.Panels[1].Text := Text;
+ StatusBar.Panels[1].Text := Text2;
if FHint <> nil then begin
FHint.ReleaseHandle;
//file:///C:/Borland/Projects/gikoNavi/test/read.cgi/qa/990576336/10-15
s := '';
- Ext := AnsiLowerCase(ExtractFileExt(Text));
- if (Pos('http://', Text) = 1) and (GikoSys.Setting.PreviewVisible) and
+ Ext := AnsiLowerCase(ExtractFileExt(Text2));
+ if (Pos('http://', Text2) = 1) and (GikoSys.Setting.PreviewVisible) and
((Ext = '.jpg') or (Ext = '.jpeg') or (Ext = '.gif') or (Ext = '.png')) then begin
if FPreviewBrowser = nil then begin
FPreviewBrowser := TPreviewBrowser.Create(Self);
TOleControl(FPreviewBrowser).Parent := nil;
end;
FPreviewBrowser.Navigate(BLANK_HTML);//\91O\89ñ\82Ì\83v\83\8c\83r\83\85\81[\89æ\91\9c\8fÁ\8b\8e\97p
- FPreviewURL := Text;
+ FPreviewURL := Text2;
PreviewTimer.Interval := GikoSys.Setting.PreviewWait;
PreviewTimer.Enabled := True;
- end else if (Pos('about:blank', Text) = 1) or (Pos('http://', Text) = 1) or (Pos('mailto:', Text) = 1) then begin
- if Pos('mailto:', Text) = 1 then begin
- s := StringReplace(Text, 'mailto:', '', [rfIgnoreCase]);
+ end else if (Pos('about:blank', Text2) = 1) or (Pos('http://', Text2) = 1) or (Pos('mailto:', Text2) = 1) then begin
+ if Pos('mailto:', Text2) = 1 then begin
+ s := StringReplace(Text2, 'mailto:', '', [rfIgnoreCase]);
//\83M\83R\83i\83r\83X\83\8c \83p\81[\83g3\82Ì466\8e\81\82É\8a´\8eÓ
GetCursorPos(p);
p.x := p.x - TWebBrowser(Sender).ClientOrigin.x;
tmp2 := ZenToHan(e.Get_outerText);
if (GikoSys.IsNumeric(tmp2)) then begin
//\82\93\82Í\83\8c\83X\94Ô\8d\86\82Á\82Û\82¢\82Á\82·\81B
- wkIntSt := StrToInt(tmp2);
- wkIntTo := StrToInt(tmp2);
+ wkIntSt := StrToInt64(tmp2);
+ wkIntTo := StrToInt64(tmp2);
//s := GetThreadText(wkBBS, wkKey, wkIntSt, wkIntTo, False, False);
FHint.PopupType := gptThread;
HTMLCreater.SetResPopupText(FHint, GetActiveContent, wkIntSt, wkIntTo, False, False);
end;
end else begin
threadItem := GetActiveContent;
- URL := THTMLCreate.GetRespopupURL(Text, threadItem.URL);
+ URL := THTMLCreate.GetRespopupURL(Text2, threadItem.URL);
PathRec := Gikosys.Parse2chURL2(URL);
if (PathRec.FNoParam) then begin
PathRec.FSt := 1;
s: string;
boardPlugIn : TBoardPlugIn;
i: Integer;
- browserRec : TBrowserRecord;
Res : TResRec;
begin
try
GikoSys.Setting.BoardSortIndex := 0;
GikoSys.Setting.BoardSortOrder := True;
end;
+ Sort.SetSortDate(Now());
SetActiveList(Item.Board);
end;
Item.Board.Modified := True;
Item.Board.IsThreadDatRead := True;
PlaySound('New');
+ ListView.Refresh;
end else if Item.DownType = gdtThread then begin
//\83X\83\8c
Item.SaveItemFile;
end;
if GikoSys.Setting.BrowserTabVisible then begin
if GetActiveContent = Item.ThreadItem then
- browserRec := InsertBrowserTab(Item.ThreadItem)
+ InsertBrowserTab(Item.ThreadItem)
else if (ListView.Selected <> nil ) and ( TObject(ListView.Selected.Data) is TThreadItem ) and ( Item.ThreadItem = TThreadItem(ListView.Selected.Data)) then
- browserRec := InsertBrowserTab(Item.ThreadItem, True)
+ InsertBrowserTab(Item.ThreadItem, True)
else
- browserRec := InsertBrowserTab(Item.ThreadItem, False);
- if browserRec.Thread = BrowserNullTab.Thread then begin
- browserRec.Movement := BrowserNullTab.Movement;
- BrowserNullTab.Movement := '';
- end;
+ InsertBrowserTab(Item.ThreadItem, False);
+
end else begin
if (GetActiveContent = Item.ThreadItem) or (FActiveContent = nil) or(FActiveContent.Browser = BrowserNullTab.Browser) then
InsertBrowserTab(Item.ThreadItem);
gvtAll: ListView.Items.Count := TBoard(ActiveList).Count;
gvtLog: ListView.Items.Count := TBoard(ActiveList).LogThreadCount;
gvtNew: ListView.Items.Count := TBoard(ActiveList).NewThreadCount;
+ gvtArch: ListView.Items.Count := TBoard(ActiveList).ArchiveThreadCount;
+ gvtLive: ListView.Items.Count := TBoard(ActiveList).LiveThreadCount;
gvtUser: ListView.Items.Count := TBoard(ActiveList).UserThreadCount;
end;
end;
+ RefreshListView(Item.ThreadItem);
end;
- ListView.Refresh;
+
end else if Item.State = gdsNotModify then begin
//\95Ï\8dX\83i\83V
{ if (Item.DownType = gdtThread) and (AddHistory(Item.ThreadItem)) then begin
BrowserNullTab := TBrowserRecord.Create;
BrowserNullTab.Browser := Browser;
end;
- if BrowserNullTab.thread <> ThreadItem then begin
- BrowserNullTab.Movement := '';
- end;
+// if BrowserNullTab.thread <> ThreadItem then begin
+// BrowserNullTab.Movement := '';
+// end;
BrowserNullTab.thread := ThreadItem;
Result := BrowserNullTab;
BrowserTab.TabIndex := -1;
BBSID: string;
FileName: string;
sTitle: string;
- doc: Variant;
+ doc: Variant;
s: string;
i: Integer;
idx: Integer;
(Assigned(FActiveContent.Browser.Document)) then begin
try
try
- Sleep(1);
FActiveContent.Thread.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document).Body).ScrollTop;
except
on E: Exception do
if (not Assigned(Thread.Browser.Document)) then begin
Thread.Browser.Navigate('about:blank');
end;
-
while (Thread.Browser.ReadyState <> READYSTATE_COMPLETE) and
(Thread.Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin
Application.ProcessMessages;
end;
end;
+ if (Thread <> nil) and (ThreadItem <>nil) then begin
+ BrowserBoardNameLabel.Caption := ThreadPTitle;
+ ItemIcon16.GetBitmap(4, ItemBoardImage.Picture.Bitmap);
+ BrowserNameLabel.Caption := ThreadTitle;
+ ItemImage.Picture := nil;
+ if ThreadIsLog then
+ if ThreadNewArraical then
+ ItemImageList.GetBitmap(2, ItemImage.Picture.Bitmap)
+ else
+ ItemImageList.GetBitmap(0, ItemImage.Picture.Bitmap)
+ else
+ ItemImageList.GetBitmap(1, ItemImage.Picture.Bitmap);
+
+ ItemImage.Left := BrowserBoardNameLabel.Left + BrowserBoardNameLabel.Width + 8;
+ BrowserNameLabel.Left := ItemImage.Left + 20;
+
+ end;
//ActiveContent\81@\82Ì\8dX\90V
FActiveContent := Thread;
if not ThreadIsLog then begin
Self.Caption := GikoDataModule.CAPTION_NAME ;
- //\83X\83e\81[\83^\83X\83o\81[\82É\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\82Ì\97e\97Ê\82ð\8fÁ\8b\8e
+ //\83X\83e\81[\83^\83X\83o\81[\82É\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\82Ì\97e\97Ê\82ð\8fÁ\8b\8e
StatusBar.Panels[THREADSIZE_PANEL].Text := '';
try
+ Thread.Browser.BringToFront;
s := '<HTML><BODY><CENTER>\82±\82Ì\83X\83\8c\83b\83h\82Í\8eæ\93¾\82µ\82Ä\82¢\82Ü\82¹\82ñ</CENTER></BODY></HTML>';
doc := Idispatch( olevariant(Thread.Browser.ControlInterface).Document) as IHTMLDocument2;
doc.open;
doc.Write(s);
doc.Close;
finally
+
end;
end else begin
Self.Caption := GikoDataModule.CAPTION_NAME + ' - [' + ThreadTitle + ']';
- //\83X\83e\81[\83^\83X\83o\81[\82É\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\82Ì\97e\97Ê\82ð\95\\8e¦
+ //\83X\83e\81[\83^\83X\83o\81[\82É\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\82Ì\97e\97Ê\82ð\95\\8e¦
StatusBar.Panels[THREADSIZE_PANEL].Text := Format('%6.2f kB', [ThreadItem.Size / 1024]);
StatusBar.Panels[THREADSIZE_PANEL].Width :=
Max(StatusBar.Canvas.TextWidth(StatusBar.Panels[THREADSIZE_PANEL].Text), 70);
Thread.Repaint := false;
Thread.Browser.OnStatusTextChange := nil;
- doc := Idispatch( olevariant(Thread.Browser.ControlInterface).Document) as IHTMLDocument2;
-
- //GikoSys.CreateHTML2(doc, ThreadItem, sTitle);
- HTMLCreater.CreateHTML2(doc, ThreadItem, sTitle);
+ LockWindowUpdate(Thread.Browser.ParentWindow);
+ HTMLCreater.CreateHTML2(Thread.Browser, ThreadItem, sTitle);
Thread.Browser.OnStatusTextChange := BrowserStatusTextChange;
-
- if ThreadItem = nil then begin
- FActiveContent := nil;
- BrowserTab.Repaint;
- Exit;
- end;
PostMessage( Handle, USER_DOCUMENTCOMPLETE, Integer( Thread.Browser ), 0 );
end;
end;
- if (Thread <> nil) and (ThreadItem <>nil) then begin
- BrowserBoardNameLabel.Caption := ThreadPTitle;
- ItemIcon16.GetBitmap(4, ItemBoardImage.Picture.Bitmap);
- BrowserNameLabel.Caption := ThreadTitle;
- ItemImage.Picture := nil;
- if ThreadIsLog then
- if ThreadNewArraical then
- ItemImageList.GetBitmap(2, ItemImage.Picture.Bitmap)
- else
- ItemImageList.GetBitmap(0, ItemImage.Picture.Bitmap)
- else
- ItemImageList.GetBitmap(1, ItemImage.Picture.Bitmap);
-
- ItemImage.Left := BrowserBoardNameLabel.Left + BrowserBoardNameLabel.Width + 8;
- BrowserNameLabel.Left := ItemImage.Left + 20;
- //Thread\82Ì\94Â\82Æ\95\\8e¦\82µ\82Ä\82¢\82é\94Â\82ª\93¯\82¶\82È\82ç\95`\89æ\82ð\8dX\90V\82·\82é
- if (FActiveList is TBoard) and (TBoard(ActiveList) = ThreadItem.ParentBoard) then
- ListView.Refresh;
- end else begin
- FActiveContent := nil;
- end;
+ RefreshListView(ThreadItem);
finally
Screen.Cursor := crDefault;
end;
//gvtAll: ListView.Items.Count := Board.Count;
gvtLog: Board.LogThreadCount := Board.GetLogThreadCount;
gvtNew: Board.NewThreadCount := Board.GetNewThreadCount;
+ gvtArch: Board.ArchiveThreadCount := Board.GetArchiveThreadCount;
+ gvtLive: Board.LiveThreadCount := Board.GetLiveThreadCount;
gvtUser: Board.UserThreadCount:= Board.GetUserThreadCount;
+
end;
SetActiveList(Board);
ListView.Canvas.Font.Color := clGreen;
s := '\82±\82Ì\83r\83\85\81[\82É\82Í\90V\92\85\83A\83C\83e\83\80\82ª\82 \82è\82Ü\82¹\82ñ\81B';
end;
+ gvtArch: begin
+ ListView.Canvas.Font.Color := clFuchsia;
+ s := '\82±\82Ì\83r\83\85\81[\82É\82ÍDAT\97\8e\82¿\83A\83C\83e\83\80\82ª\82 \82è\82Ü\82¹\82ñ\81B';
+ end;
+ gvtLive: begin
+ ListView.Canvas.Font.Color := clMaroon;
+ s := '\82±\82Ì\83r\83\85\81[\82É\82Í\90¶\91¶\83A\83C\83e\83\80\82ª\82 \82è\82Ü\82¹\82ñ\81B';
+ end;
gvtUser: begin
ListView.Canvas.Font.Color := clNavy;
s := '\82±\82Ì\83r\83\85\81[\82É\82Í\83^\83C\83g\83\8b\82ª\81u%s\81v\82ð\8aÜ\82Þ\83A\83C\83e\83\80\82ª\82 \82è\82Ü\82¹\82ñ\81B';
procedure TGikoForm.DeleteHistory( threadItem: TThreadItem );
var
i: Integer;
-begin
+ node: TTreeNode;
+begin
+ // \83L\83\83\83r\83l\83b\83g\82É\97\9a\97ð\82ª\95\\8e¦\82³\82ê\82Ä\82¢\82½\82ç\81A
+ // \83L\83\83\83r\83l\83b\83g\93à\82Ì\83A\83C\83e\83\80\82à\8dí\8f\9c\82·\82é\81B
+ if (FTreeType = gttHistory) then begin
+ node := TreeView.Items.GetFirstNode;
+ while (node <> nil) do begin
+ if ( TFavoriteThreadItem(node.Data).Item = threadItem ) then begin
+ TreeView.Items.Delete(node);
+ TreeView.Refresh;
+ node := nil;
+ end else begin
+ node := node.GetNext;
+ end;
+ end;
+ end;
for i := 0 to FHistoryList.Count - 1 do begin
- if threadItem.URL = TFavoriteThreadItem( FHistoryList.Items[i] ).URL then begin
+ if threadItem = TFavoriteThreadItem( FHistoryList.Items[i] ).Item then begin
TFavoriteThreadItem( FHistoryList.Items[ i ] ).Free;
FHistoryList.Delete(i);
- FHistoryList.Capacity := FHistoryList.Count;
+ FHistoryList.Capacity := FHistoryList.Count;
Break;
end;
end;
// title \82Í\8d¡\82Ì\82Æ\82±\82ë\8eg\82Á\82Ä\82¢\82È\82¢
saveList.Add(
'<history url="' + HtmlEncode( TFavoriteThreadItem( FHistoryList[ i ] ).URL ) + '"' +
- ' title="' + HtmlEncode( TFavoriteThreadItem( FHistoryList[ i ] ).Title ) + '"/>');
+ ' title="' + HtmlEncode( MojuUtils.Sanitize(TFavoriteThreadItem( FHistoryList[ i ] ).Title )) + '"/>');
end;
saveList.Add('</address>');
saveList.SaveToFile( GikoSys.GetConfigDir + 'History.xml' );
HistoryNode : IXMLNode;
s : string;
favItem : TFavoriteThreadItem;
+{$IFDEF DEBUG}
+ st, rt : Cardinal;
+{$ENDIF}
begin
+{$IFDEF DEBUG}
+ st := GetTickCount;
+{$ENDIF}
fileName := GikoSys.GetConfigDir + 'History.xml';
if FileExists( fileName ) then begin
try
- XMLDoc := IXMLDocument.Create;
+ XMLDoc := IXMLDocument.Create;
//XMLDoc := LoadXMLDocument(FileName);
- LoadXMLDocument(FileName, XMLDoc);
+ LoadXMLDocument(FileName, XMLDoc);
try
XMLNode := XMLDoc.DocumentElement;
s := Trim(HistoryNode.Attributes['url']);
if s <> '' then begin
favItem := TFavoriteThreadItem.Create(
- s, HistoryNode.Attributes[ 'title' ] );
+ s, MojuUtils.UnSanitize(HistoryNode.Attributes[ 'title' ]) );
if not AddHistory( favItem ) then
- favItem.Free;
+ favItem.Free;
end;
//end;
end;
except
end;
end;
+{$IFDEF DEBUG}
+ rt := GetTickCount - st;
+ Writeln('Runtime(Load Histroy) : ' + IntToStr(rt) + ' ms');
+{$ENDIF}
end;
end else begin
if Item <> FActiveList then begin
ActiveListColumnSave;
-
if (Item is TBBS) or (Item is TCategory) then begin
ListView.Columns.Clear;
SetActiveList( Item );
Screen.Cursor := crDefault;
end;
end;
+ Sort.SetSortDate(Now());
SetActiveList( Item );
end;
end;
FTabHintIndex := -1;
for i := 0 to BrowserTab.Tabs.Count - 1 do begin
if TBrowserRecord(BrowserTab.Tabs.Objects[i]) = BrowserRecord then begin
- BrowserTab.Tabs.BeginUpdate;
try
if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser <> nil then begin
doc := TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser.Document;
if j <> -1 then
FBrowsers.Move(j, BROWSER_COUNT - 1);
end;
- TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
- BrowserTab.Tabs.Delete(i);
- if idx > i then begin
- BrowserTab.TabIndex := idx - 1;
- end else begin
- if BrowserTab.Tabs.Count -1 >= idx then
- BrowserTab.TabIndex := idx
- else
- BrowserTab.TabIndex := BrowserTab.Tabs.Count - 1;
+ BrowserTab.Tabs.BeginUpdate;
+ try
+ TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
+ if ( BrowserTab.Tabs.Count - 1 = i ) and
+ ( BrowserTab.TabRect(i).Left
+ <= BrowserTab.DisplayRect.Left ) then begin
+ BrowserTab.ScrollTabs(-1);
+ end;
+ BrowserTab.Tabs.Delete(i);
+ if idx > i then begin
+ BrowserTab.TabIndex := idx - 1;
+ end else begin
+ if BrowserTab.Tabs.Count -1 >= idx then
+ BrowserTab.TabIndex := idx
+ else
+ BrowserTab.TabIndex := BrowserTab.Tabs.Count - 1;
+ end;
+ finally
+ BrowserTab.Tabs.EndUpdate;
end;
if BrowserTab.Tabs.Count = 0 then begin
BrowserNullTab.Thread := nil;
TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Repaint := true;
FBrowsers.Move(BROWSER_COUNT - 1, 0);
end;
- BrowserTab.Tabs.EndUpdate;
if( FActiveContent = nil) then
BrowserTab.OnChange(nil);
Exit;
FTabHintIndex := -1;
for i := 0 to BrowserTab.Tabs.Count - 1 do begin
if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread = ThreadItem then begin
- BrowserTab.Tabs.BeginUpdate;
try
if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser <> nil then begin
doc := TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser.Document;
if j <> -1 then
FBrowsers.Move(j, BROWSER_COUNT - 1);
end;
- TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
- BrowserTab.Tabs.Delete(i);
- if idx > i then begin
- BrowserTab.TabIndex := idx - 1;
- end else begin
- if BrowserTab.Tabs.Count -1 >= idx then
- BrowserTab.TabIndex := idx
- else
- BrowserTab.TabIndex := BrowserTab.Tabs.Count - 1;
+ BrowserTab.Tabs.BeginUpdate;
+ try
+ TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
+ if ( BrowserTab.Tabs.Count - 1 = i ) and
+ ( BrowserTab.TabRect(i).Left
+ <= BrowserTab.DisplayRect.Left ) then begin
+ BrowserTab.ScrollTabs(-1);
+ end;
+ BrowserTab.Tabs.Delete(i);
+ if idx > i then begin
+ BrowserTab.TabIndex := idx - 1;
+ end else begin
+ if BrowserTab.Tabs.Count -1 >= idx then
+ BrowserTab.TabIndex := idx
+ else
+ BrowserTab.TabIndex := BrowserTab.Tabs.Count - 1;
+ end;
+ finally
+ BrowserTab.Tabs.EndUpdate;
end;
if(BrowserTab.TabIndex <> -1) and
( TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Browser = nil) then begin
FBrowsers.Move(BROWSER_COUNT - 1, 0);
end;
- BrowserTab.Tabs.EndUpdate;
if( FActiveContent = nil) then
BrowserTab.OnChange(nil);
Exit;
procedure TGikoForm.SetBrowserTabState;
var
-// i: Integer;
CoolBand: TCoolBand;
begin
BrowserBottomPanel.AutoSize := False;
if GikoSys.Setting.BrowserTabVisible then begin
- if GikoSys.Setting.BrowserTabStyle = gtsTab then begin
- BrowserTab.Style := tsTabs;
- if GikoSys.Setting.BrowserTabPosition = gtpTop then
- BrowserTab.TabPosition := tpTop
- else
- BrowserTab.TabPosition := tpBottom;
- end else if GikoSys.Setting.BrowserTabStyle = gtsButton then begin
- BrowserTab.TabPosition := tpTop;
- BrowserTab.Style := tsButtons;
- end else begin
- BrowserTab.TabPosition := tpTop;
- BrowserTab.Style := tsFlatButtons
- end;
-
- if GikoSys.Setting.BrowserTabPosition = gtpTop then begin
- BrowserTab.Parent := BrowserTabToolBar;
- BrowserBottomPanel.Hide;
- CoolBand := GetCoolBand(BrowserCoolBar, BrowserTabToolBar);
- if CoolBand <> nil then
- CoolBand.Visible := True;
-// BrowserTab.Parent := BrowserTopPanel;
-// BrowserTab.Parent := BrowserCoolBar;
-// BrowserTab.Top := 26;
-// BrowserTopPanel.Height := 44;
+ BrowserTab.Hide;
+ BrowserTab.Tabs.BeginUpdate;
+ try
+ if GikoSys.Setting.BrowserTabStyle = gtsTab then begin
+ BrowserTab.Style := tsTabs;
+ if GikoSys.Setting.BrowserTabPosition = gtpTop then
+ BrowserTab.TabPosition := tpTop
+ else
+ BrowserTab.TabPosition := tpBottom;
+ end else if GikoSys.Setting.BrowserTabStyle = gtsButton then begin
+ BrowserTab.TabPosition := tpTop;
+ BrowserTab.Style := tsButtons;
+ end else begin
+ BrowserTab.TabPosition := tpTop;
+ BrowserTab.Style := tsFlatButtons
+ end;
- end else begin
- BrowserTab.Parent := BrowserBottomPanel;
- BrowserTab.Top := 0;
- BrowserTab.Left := 0;
- BrowserBottomPanel.Show;
- CoolBand := GetCoolBand(BrowserCoolBar, BrowserTabToolBar);
- if CoolBand <> nil then
- CoolBand.Visible := False;
-// BrowserTopPanel.Height := 26;
- end;
- BrowserTab.Show;
+ if GikoSys.Setting.BrowserTabPosition = gtpTop then begin
+ BrowserTab.Parent := BrowserTabToolBar;
+ BrowserBottomPanel.Hide;
+ CoolBand := GetCoolBand(BrowserCoolBar, BrowserTabToolBar);
+ if CoolBand <> nil then
+ CoolBand.Visible := True;
+ end else begin
+ BrowserTab.Parent := BrowserBottomPanel;
+ BrowserTab.Top := 0;
+ BrowserTab.Left := 0;
+ BrowserBottomPanel.Show;
+ CoolBand := GetCoolBand(BrowserCoolBar, BrowserTabToolBar);
+ if CoolBand <> nil then
+ CoolBand.Visible := False;
+ end;
+ finally
+ BrowserTab.Tabs.EndUpdate;
+ BrowserTab.Show;
+ end;
end else begin
CoolBand := GetCoolBand(BrowserCoolBar, BrowserTabToolBar);
if CoolBand <> nil then
CoolBand.Visible := False;
BrowserBottomPanel.Visible := False;
-// BrowserTab.Visible := False;
-// BrowserTopPanel.Height := 26;
GikoDM.AllTabCloseAction.Execute;
end;
end;
doc : Variant;
threadItem : TThreadItem;
begin
-// AddMessageList('DocumentComplete', nil, gmiWhat);
if TObject(Sender) is TWebBrowser then begin
BrowserRecord := nil;
if TWebBrowser(Sender) <> Browser then begin
FEvent := nil;
end;
end;
-
+
end;
if (BrowserRecord <> nil) and
Assigned( BrowserRecord.Thread ) then begin
threadItem := BrowserRecord.Thread;
- if (BrowserRecord <> nil) and (Length( BrowserRecord.Movement ) > 0) then begin
+ if (threadItem.JumpAddress > 0) then begin
if threadItem.UnRead then begin
threadItem.UnRead := False;
TreeView.Refresh;
- ListView.Refresh;
+ RefreshListView(threadItem);
end;
// \83X\83N\83\8d\81[\83\8b\90æ\82ª\8eæ\93¾\8aO\82Ì\83\8c\83X\82Ì\8e\9e\82Í\8fI\92[\82É\88Ú\93®
- if (StrToIntDef(BrowserRecord.Movement, 0) <= BrowserRecord.Thread.Count) then begin
- BrowserRecord.Move(BrowserRecord.Movement);
- BrowserRecord.Movement := '';
+ //if (StrToIntDef(BrowserRecord.Movement, 0) <= BrowserRecord.Thread.Count) then begin
+ if (threadItem.JumpAddress <= BrowserRecord.Thread.Count) then begin
+ BrowserRecord.Move(IntToStr(threadItem.JumpAddress));
+ threadItem.JumpAddress := 0;
end else begin
BrowserRecord.Move(IntToStr(BrowserRecord.Thread.Count));
end;
threadItem.UnRead := False;
TreeView.Refresh;
BrowserRecord.Move('new');
- ListView.Refresh;
+ RefreshListView(threadItem);
end else if threadItem.ScrollTop <> 0 then begin
try
doc := Idispatch( OleVariant( BrowserRecord.Browser.ControlInterface ).Document ) as IHTMLDocument2;
end;
end;
end;
+ LockWindowUpdate(0);
end;
procedure TGikoForm.RoundNamePopupMenuPopup(Sender: TObject);
end;
procedure TGikoForm.ShowFavoriteAddDialog( Item : TObject );
+const
+ MsgAdd : String = '\8aù\82É\82¨\8bC\82É\93ü\82è\82É\93o\98^\82³\82ê\82Ä\82¢\82Ü\82·\81B\82»\82ê\82Å\82à\92Ç\89Á\82µ\82Ü\82·\82©\81H';
+ TitleAdd: String = '\82¨\8bC\82É\93ü\82è\82Ì\92Ç\89Á';
var
Dlg : TFavoriteAddDialog;
ItemURL : string;
Data := Node.Data;
if TObject( Data ) is TFavoriteBoardItem then begin
if ItemURL = TFavoriteBoardItem( Data ).URL then begin
- if Application.MessageBox( '\8aù\82É\82¨\8bC\82É\93ü\82è\82É\93o\98^\82³\82ê\82Ä\82¢\82Ü\82·\81B\82»\82ê\82Å\82à\92Ç\89Á\82µ\82Ü\82·\82©\81H', '\82¨\8bC\82É\93ü\82è\82Ì\92Ç\89Á', MB_YESNO ) = IDNO then
+ if Application.MessageBox(PChar(MsgAdd) , PChar(TitleAdd), MB_YESNO ) = IDNO then
Exit;
Break;
end;
Data := Node.Data;
if TObject( Data ) is TFavoriteThreadItem then begin
if ItemURL = TFavoriteThreadItem( Data ).URL then begin
- if Application.MessageBox( '\8aù\82É\82¨\8bC\82É\93ü\82è\82É\93o\98^\82³\82ê\82Ä\82¢\82Ü\82·\81B\82»\82ê\82Å\82à\92Ç\89Á\82µ\82Ü\82·\82©\81H', '\82¨\8bC\82É\93ü\82è\82Ì\92Ç\89Á', MB_YESNO ) = IDNO then
+ if Application.MessageBox( PChar(MsgAdd), PChar(TitleAdd), MB_YESNO ) = IDNO then
Exit;
Break;
end;
TopPanel.Height := Max(MainCoolBar.Height, AnimePanel.Height);
end;
+//! \8ew\92è\82³\82ê\82½\83X\83\8c\83b\83h\82ð\8aJ\82(\83\8d\83O\82ª\96³\82¢\82Æ\82« or \8ew\92èJUMP\82Ü\82Å\91«\82è\82È\82¢\82Æ\82«\82ÍDL\82·\82é)
+procedure TGikoForm.OpenThreadItem(Thread: TThreadItem; URL: String);
+var
+ stRes, edRes : Int64;
+ browserRec : TBrowserRecord;
+ threadNumber : String;
+ doc : Variant;
+begin
+ stRes := 0;
+ edRes := 0;
+ Thread.JumpAddress := 0;
+ // \83^\83u\82ð\90¶\90¬
+ browserRec := InsertBrowserTab(Thread);
+ if (browserRec <> nil) then begin
+ // JUMP\82·\82×\82«\83\8c\83X\94Ô\8d\86\82ª\82 \82é\82©\83`\83F\83b\83N\82·\82é
+ threadNumber := ChangeFileExt(Thread.FileName, '');
+ GikoSys.GetPopupResNumber( URL, stRes, edRes );
+ // \83X\83\8c\82Ì\94Ô\8d\86\82ð\83\8c\83X\94Ô\82Æ\8cë\82Á\82Ä\94F\8e¯\82µ\82Ä\82¢\82é\82Ì\82ð\83N\83\8a\83A
+ if (StrToInt64(threadNumber) = stRes) then begin
+ if not (AnsiEndsText(threadNumber + '/' + threadNumber, URL))
+ and (Pos('&st=' + threadNumber , URL) = 0) then begin
+ stRes := 0;
+ end;
+ end;
+ if ( stRes > 0 ) then begin
+ Thread.JumpAddress := stRes;
+ end;
+ // \83\8d\83O\82ð\8e\9d\82Á\82Ä\82¢\82È\82¢\82© JUMP\82·\82×\82«\83\8c\83X\94Ô\8d\86\82Ü\82Å\8eæ\93¾\82µ\82Ä\82¢\82È\82¢\82Æ\82«\82ÍDL\82·\82é
+ if (not Thread.IsLogFile) or (stRes > Thread.Count) then begin
+ DownloadContent(Thread);
+ end else if (not browserRec.Repaint) and (stRes > 0) then begin
+ browserRec.Move(IntToStr(stRes));
+ Thread.JumpAddress := 0;
+ try
+ doc := Idispatch( OleVariant( browserRec.Browser.ControlInterface ).Document ) as IHTMLDocument2;
+ Thread.ScrollTop := doc.Body.ScrollTop;
+ except
+ end;
+ end;
+ end;
+end;
procedure TGikoForm.MoveToURL(const inURL: string);
var
i, bi : Integer;
boardURL : string;
tmpThread : TThreadItem;
-// category : TCategory;
-// categoryNode : TTreeNode;
-// boardNode : TTreeNode;
shiftDown : Boolean;
ctrlDown : Boolean;
- stRes, edRes : Int64;
- browserRec : TBrowserRecord;
begin
GikoSys.ParseURI( inURL, protocol, host, path, document, port, bookmark );
if TBoard(ActiveList) = Board then
ListView.Items.Count := ListView.Items.Count + 1;
end;
- GikoSys.GetPopupResNumber( inURL, stRes, edRes );
- browserRec := InsertBrowserTab( ThreadItem );
- if (browserRec <> nil) and (stRes > 0) then
- browserRec.Movement := IntToStr( stRes );
- DownloadContent( ThreadItem );
- Exit;
end else begin
tmpThread.Free;
- GikoSys.GetPopupResNumber( inURL, stRes, edRes );
- browserRec := InsertBrowserTab( ThreadItem );
- if ThreadItem.IsLogFile then begin
- if (browserRec <> nil) and (stRes > 0) then begin
- browserRec.Movement := IntToStr( stRes );
- if (stRes > ThreadItem.Count) then begin
- DownloadContent( ThreadItem );
- end;
- end;
- end else begin
- if (browserRec <> nil) and (stRes > 0) then
- browserRec.Movement := IntToStr( stRes );
- DownloadContent( ThreadItem );
- end;
- Exit;
end;
+ OpenThreadItem(ThreadItem, inURL);
+ Exit;
end;
end;
if (Length( Trim(BBSKey) ) > 0) and (Length( Trim(BBSID) ) > 0) then begin
boardURL := GikoSys.Get2chThreadURL2BoardURL( inURL );
Board := BBSsFindBoardFromURL( boardURL );
- //if Board = nil then
- // Board := BBSsFindBoardFromBBSID( BBSID );
- { \82±\82Ì\95\94\95ª\82àBBS\82\93FindBoardFromURL\82É\8e\9d\82½\82¹\82½\81@20050523
- if Board = nil then begin
- // \81¦\8dì\82Á\82Ä\82à\92Ç\89Á\82·\82é\82Æ\82±\82ë\82ª\96³\82¢\82Ì\82Å\8c\83\82µ\82\95Û\97¯
- //\81@\89ß\8b\8e\83\8d\83O\91q\8cÉ\82©\82ç\81A\83_\83E\83\\82µ\82½\83X\83\8c\82ª\94\8c©\82Å\82«\82È\82¢\82Ì\82Å\82±\82±\82Å\92T\82·\82æ\82¤\82É\82·\82é (2004/01/22)
- Board := BBSs[ 0 ].FindBBSID( BBSID );
- end;
- }
if Board = nil then begin
// \93ü\82é\82×\82«\94Â\82ª\8c©\82Â\82©\82ç\82È\82©\82Á\82½\82Ì\82Å\81A\95\81\92Ê\82Ì\83u\83\89\83E\83U\82Å\8aJ\82
GikoSys.OpenBrowser(inURL, gbtUserApp);
if ThreadItem = nil then begin
ThreadItem := Board.FindThreadFromFileName( BBSKey + '.dat' );
end;
- if ThreadItem = nil then begin
- //shift -> \90Ý\92è\83u\83\89\83E\83U\81i\96³\82¯\82ê\82ÎIE\81j
- //ctrl -> IE
- {shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
- ctrlDown := GetAsyncKeyState(VK_CONTROL) = Smallint($8001);
- if shiftDown then
- GikoSys.OpenBrowser(URL1, gbtUserApp)
- else if ctrlDown then
- GikoSys.OpenBrowser(URL1, gbtIE)
- else begin
- }
- ThreadItem := TThreadItem.Create( nil, Board, URL );
- ThreadItem.FileName := ChangeFileExt(BBSKey, '.dat');
- if AnsiPos(Host, Board.URL) = 0 then
- ThreadItem.DownloadHost := Host
- else
- ThreadItem.DownloadHost := '';
- Board.Insert(0, ThreadItem);
- if ActiveList is TBoard then begin
- if TBoard(ActiveList) = Board then
- ListView.Items.Count := ListView.Items.Count + 1;
- end;
- GikoSys.GetPopupResNumber( inURL, stRes, edRes );
- browserRec := InsertBrowserTab(ThreadItem);
- if (browserRec <> nil) and (stRes > 0) then
- browserRec.Movement := IntToStr( stRes );
- DownloadContent(ThreadItem);
- {end;}
- end else begin
- if ThreadItem.IsLogFile then begin
- GikoSys.GetPopupResNumber( inURL, stRes, edRes );
- browserRec := InsertBrowserTab(ThreadItem);
- if (browserRec <> nil) and (stRes > 0) then begin
- browserRec.Movement := IntToStr( stRes );
- if (stRes > ThreadItem.Count) then begin
- DownloadContent(ThreadItem);
- end;
+ try
+ // \83X\83\8c\83b\83h\83A\83C\83e\83\80\82ª\82È\82¢\82È\82ç\90¶\90¬\82·\82é\81B
+ if ThreadItem = nil then begin
+ ThreadItem := TThreadItem.Create( nil, Board, URL );
+ ThreadItem.FileName := ChangeFileExt(BBSKey, '.dat');
+ Board.Insert(0, ThreadItem);
+ if ActiveList is TBoard then begin
+ if TBoard(ActiveList) = Board then
+ ListView.Items.Count := ListView.Items.Count + 1;
end;
- end else begin
+ end;
+ // \83\8d\83O\82È\82µ\83X\83\8c\83b\83h\82Ì\82Æ\82«\82Í\81A\83z\83X\83g\96¼\82Ì\83`\83F\83b\83N\82ð\82·\82é
+ if (not ThreadItem.IsLogFile) then begin
if AnsiPos(Host, Board.URL) = 0 then
ThreadItem.DownloadHost := Host
else
ThreadItem.DownloadHost := '';
- GikoSys.GetPopupResNumber( inURL, stRes, edRes );
- browserRec := InsertBrowserTab(ThreadItem);
- if (browserRec <> nil) and (stRes > 0) then
- browserRec.Movement := IntToStr( stRes );
- DownloadContent(ThreadItem);
end;
+ OpenThreadItem(ThreadItem, inURL);
+ except
end;
end else begin
Board := BBSsFindBoardFromURL( inURL );
if FActiveBBS <> Board.ParentCategory.ParenTBBS then
ShowBBSTree( Board.ParentCategory.ParenTBBS );
SelectTreeNode( Board, True );
- end;
+ end;
end;
end;
ThreadItem := GetActiveContent;
if ThreadItem <> nil then begin
- Num := StrToInt(s);
+ Num := StrToInt64(s);
FHint.PopupType := gptThread;
HTMLCreater.SetResPopupText(FHint, ThreadItem, Num, Num, False, False);
if FHint.ResCount <> 0 then
procedure TGikoForm.SetSelectWord( const text : string );
begin
+ // \83X\83\8c\88ê\97\97\82Ì\94Í\88Í\8ew\92è\82ð\89ð\8f\9c
+ ClearThreadRengeAction;
if Length( text ) = 0 then
begin
GikoDM.AllItemAction.Checked := True;
- GikoDM.LogItemAction.Checked := False;
- GikoDM.NewItemAction.Checked := False;
- end else begin
- // \83`\83\89\82Â\82\82Æ\8c\99\82¾\82©\82ç\81A\88ê\89\9e\89\9f\82µ\82Ä\82 \82é\82Æ\82«\82¾\82¯\8f\88\97\9d\82·\82é
- if GikoDM.AllItemAction.Checked then
- GikoDM.AllItemAction.Checked := False;
- if GikoDM.LogItemAction.Checked then
- GikoDM.LogItemAction.Checked := False;
- if GikoDM.NewItemAction.Checked then
- GikoDM.NewItemaction.Checked := False;
- end;
-
- if Length( text ) = 0 then
SetListViewType( gvtAll )
- else
+ end else begin
SetListViewType( gvtUser, text, false );
-
+ end;
end;
procedure TGikoForm.SelectComboBoxChange(Sender: TObject);
end else
Str := SelectComboBox.Text + Str;
- SetSelectWord(Str);
+ if (Length(Str) > 0) then begin
+ SetSelectWord(Str);
+ end;
end;
end else if Length( SelectComboBox.Text ) = 0 then
begin
* \81i\82±\82±\82Å\82Í\89½\82à\82µ\82È\82¢\81j
*}
end else begin
- // \83`\83\89\82Â\82\82Æ\8c\99\82¾\82©\82ç\81A\88ê\89\9e\89\9f\82µ\82Ä\82 \82é\82Æ\82«\82¾\82¯\8f\88\97\9d\82·\82é
- if GikoDM.AllItemAction.Checked then
- GikoDM.AllItemAction.Checked := False;
- if GikoDM.LogItemAction.Checked then
- GikoDM.LogItemAction.Checked := False;
- if GikoDM.NewItemAction.Checked then
- GikoDM.NewItemaction.Checked := False;
+ // \83X\83\8c\88ê\97\97\82Ì\94Í\88Í\8ew\92è\82ð\89ð\8f\9c
+ ClearThreadRengeAction;
end;
end;
+//! \83X\83\8c\83b\83h\88ê\97\97\82Ì\95\\8e¦\94Í\88Í\90Ý\92è\83`\83F\83b\83N\83N\83\8a\83A
+procedure TGikoForm.ClearThreadRengeAction;
+begin
+ // \83`\83\89\82Â\82\82Æ\8c\99\82¾\82©\82ç\81A\88ê\89\9e\89\9f\82µ\82Ä\82 \82é\82Æ\82«\82¾\82¯\8f\88\97\9d\82·\82é
+ if GikoDM.AllItemAction.Checked then
+ GikoDM.AllItemAction.Checked := False;
+ if GikoDM.LogItemAction.Checked then
+ GikoDM.LogItemAction.Checked := False;
+ if GikoDM.NewItemAction.Checked then
+ GikoDM.NewItemaction.Checked := False;
+ if GikoDM.LiveItemAction.Checked then
+ GikoDM.LiveItemAction.Checked := False;
+ if GikoDM.ArchiveItemAction.Checked then
+ GikoDM.ArchiveItemAction.Checked := False;
+
+end;
procedure TGikoForm.SelectComboBoxExit(Sender: TObject);
begin
FavoriteTreeNameURLCopyPopupMenu.Visible := False;
FavoriteTreeReloadPopupMenu.Visible := False;
FavoriteTreeLogDeletePopupMenu.Visible := False;
+ FavoriteTreeItemNameCopyPopupMenu.Visible := False;
end else if FClickNode.IsFirstNode then begin
FavoriteTreeBrowseFolderPopupMenu.Visible := True;
FavoriteTreeDeletePopupMenu.Visible := False;
FavoriteTreeRenamePopupMenu.Visible := False;
FavoriteTreeNewFolderPopupMenu.Visible := True;
FavoriteTreeURLCopyPopupMenu.Visible := False;
- FavoriteTreeNameCopyPopupMenu.Visible := True;
+ FavoriteTreeNameCopyPopupMenu.Visible := False;
FavoriteTreeNameURLCopyPopupMenu.Visible := False;
FavoriteTreeReloadPopupMenu.Visible := False;
FavoriteTreeLogDeletePopupMenu.Visible := False;
+ FavoriteTreeItemNameCopyPopupMenu.Visible := True;
end else if FClickNode.Text = Favorite.FAVORITE_LINK_NAME then begin
FavoriteTreeBrowseFolderPopupMenu.Visible := True;
FavoriteTreeDeletePopupMenu.Visible := True;
FavoriteTreeRenamePopupMenu.Visible := False;
FavoriteTreeNewFolderPopupMenu.Visible := True;
FavoriteTreeURLCopyPopupMenu.Visible := False;
- FavoriteTreeNameCopyPopupMenu.Visible := True;
+ FavoriteTreeNameCopyPopupMenu.Visible := False;
FavoriteTreeNameURLCopyPopupMenu.Visible := False;
FavoriteTreeReloadPopupMenu.Visible := False;
FavoriteTreeLogDeletePopupMenu.Visible := False;
+ FavoriteTreeItemNameCopyPopupMenu.Visible := True;
end else if TObject(FClickNode.Data) is TFavoriteFolder then begin
FavoriteTreeBrowseFolderPopupMenu.Visible := True;
FavoriteTreeDeletePopupMenu.Visible := True;
FavoriteTreeNameURLCopyPopupMenu.Visible := False;
FavoriteTreeReloadPopupMenu.Visible := False;
FavoriteTreeLogDeletePopupMenu.Visible := False;
+ FavoriteTreeItemNameCopyPopupMenu.Visible := True;
end else if TObject(FClickNode.Data) is TFavoriteThreadItem then begin
FavoriteTreeBrowseFolderPopupMenu.Visible := False;
FavoriteTreeDeletePopupMenu.Visible := True;
FavoriteTreeNameURLCopyPopupMenu.Visible := True;
FavoriteTreeReloadPopupMenu.Visible := True;
FavoriteTreeLogDeletePopupMenu.Visible := True;
+ FavoriteTreeItemNameCopyPopupMenu.Visible := True;
end else if TObject(FClickNode.Data) is TFavoriteBoardItem then begin
FavoriteTreeBrowseFolderPopupMenu.Visible := False;
FavoriteTreeDeletePopupMenu.Visible := True;
FavoriteTreeNameURLCopyPopupMenu.Visible := True;
FavoriteTreeReloadPopupMenu.Visible := True;
FavoriteTreeLogDeletePopupMenu.Visible := False;
+ FavoriteTreeItemNameCopyPopupMenu.Visible := True;
end else begin
FavoriteTreeBrowseFolderPopupMenu.Visible := False;
FavoriteTreeDeletePopupMenu.Visible := False;
FavoriteTreeNameURLCopyPopupMenu.Visible := False;
FavoriteTreeReloadPopupMenu.Visible := False;
FavoriteTreeLogDeletePopupMenu.Visible := False;
+ FavoriteTreeItemNameCopyPopupMenu.Visible := False;
end;
end;
Screen.Cursor := crDefault;
end;
end;
+ Sort.SetSortDate(Now());
SetActiveList(Node.data);
end;
(FavoriteTreeView.Selected = FavoriteTreeView.GetNodeAt(X, Y)) then begin
//\83}\83E\83X\82ªnode\82Ì\8fã\82É\82¢\82é\82©
rect := FavoriteTreeView.Selected.DisplayRect(true);
- if ((rect.Left <= X) and (rect.Right >= X)) and
+ // \83A\83C\83R\83\93\95ª\8d¶\82É\82¸\82ç\82·
+ if ((rect.Left - FavoriteTreeView.Indent <= X) and (rect.Right >= X)) and
((rect.Bottom >= Y) and (rect.Top <= Y)) then begin
if ssDouble in Shift then begin
FClickNode := FavoriteTreeView.Selected;
MsgBox(Handle, s, '\8f\88\97\9d\82³\82ê\82È\82©\82Á\82½\97á\8aO', MB_OK or MB_ICONSTOP);
end;
// *************************************************************************
-//! \83A\83N\83V\83\87\83\93\82Ì\83`\83F\83b\83N\8fó\91Ô\82Ì\8f\89\8aú\89» Form\82ÌCreate\82Å\8cÄ\82Ñ\8fo\82µ\82Ä\82à\94½\89f\82µ\82È\82¢
-// *************************************************************************
-procedure TGikoForm.InitActionChecked();
-begin
- //\83\8d\83O\83C\83\93\8fó\91Ô\82ð\8dÄ\90Ý\92è
- GikoDM.LoginAction.Checked := GikoDM.LoginAction.Checked;
- //\83~\83\85\81[\83g\82Ì\8fó\91Ô\82ð\90Ý\92è
- GikoDM.MuteAction.Checked := GikoSys.Setting.Mute;
- //\89æ\96Ê\82Ì\95ª\8a\84\82Ì\8fó\91Ô\82ð\8dÄ\90Ý\92è
- GikoDM.ArrangeAction.Checked := GikoDM.ArrangeAction.Checked;
-
- //\83X\83\8c\91S\95\94\95\\8e¦\83{\83^\83\93\82ð\89\9f\82³\82ê\82½\8fó\91Ô\82É\82·\82é
- GikoDM.AllItemAction.Checked := True;
- GikoDM.AllResAction.Checked := True;
-
- // \83\8c\83X\95\\8e¦\94Í\88Í
- FResRangeMenuSelect := GikoSys.ResRange;
- case GikoSys.ResRange of
- Ord( grrAll ):
- begin
- GikoDM.AllResAction.Execute;
- end;
- Ord( grrSelect ):
- begin
- SelectComboBox.Text := SelectComboBox.Items[ 1 ];
- GikoDM.SelectResAction.Checked := True;
- end;
- else
- case FResRangeMenuSelect of
- Ord( grrKoko ): GikoDM.OnlyKokoResAction.Checked := True;
- Ord( grrNew ): GikoDM.OnlyNewResAction.Checked := True;
- 100: GikoDM.OnlyAHundredResAction.Checked := True;
- end;
- end;
-
- // \83X\83\8c\83b\83h\88ê\97\97\95\\8e¦\94Í\88Í
- case GikoSys.Setting.ThreadRange of
- gtrAll:
- begin
- GikoDM.AllItemAction.Checked := True;
- ViewType := gvtAll;
- end;
- gtrLog:
- begin
- GikoDM.LogItemAction.Checked := True;
- ViewType := gvtLog;
- end;
- gtrNew:
- begin
- GikoDM.NewItemAction.Checked := True;
- ViewType := gvtNew;
- end;
- end;
- if GikoSys.Setting.BrowserTabPosition = gtpTop then begin
- GikoDM.BrowserTabTopAction.Checked := True;
- end else begin
- GikoDM.BrowserTabBottomAction.Checked := True;
- end;
-
- if GikoSys.Setting.BrowserTabStyle = gtsTab then begin
- GikoDM.BrowserTabTabStyleAction.Checked := True;
- end else if GikoSys.Setting.BrowserTabStyle = gtsButton then begin
- GikoDM.BrowserTabButtonStyleAction.Checked := True;
- end else begin
- GikoDM.BrowserTabFlatStyleAction.Checked := True;
- end;
-end;
-// *************************************************************************
//! \83_\83E\83\93\83\8d\81[\83h\83R\83\93\83g\83\8d\81[\83\8b\83X\83\8c\83b\83h\82Ì\90¶\90¬
// *************************************************************************
procedure TGikoForm.CreateControlThread();
TOleControl(newBrowser).Align := alNone;
TOleControl(newBrowser).Left := 0;
TOleControl(newBrowser).Top := 0;
+ newBrowser.RegisterAsDropTarget := False;
newBrowser.OnDocumentComplete := BrowserDocumentComplete;
newBrowser.OnBeforeNavigate2 := BrowserBeforeNavigate2;
newBrowser.OnEnter := BrowserEnter;
(TreeView.Selected = TreeView.GetNodeAt(X, Y)) then begin
//\83}\83E\83X\82ªnode\82Ì\8fã\82É\82¢\82é\82©
rect := TreeView.Selected.DisplayRect(true);
- if ((rect.Left <= X) and (rect.Right >= X)) and
+ // \83A\83C\83R\83\93\95ª\82¾\82¯\8d¶\82É\82¸\82ç\82·
+ if ((rect.Left - TreeView.Indent <= X) and (rect.Right >= X)) and
((rect.Bottom >= Y) and (rect.Top <= Y)) then begin
- // \83N\83\8a\83b\83N\82Æ\83_\83u\83\8b\83N\83\8a\83b\83N\82ð\83R\83R\82Å\94»\92è
+ // \83N\83\8a\83b\83N\82Æ\83_\83u\83\8b\83N\83\8a\83b\83N\82ð\83R\83R\82Å\94»\92è
if ssDouble in Shift then begin
TreeDoubleClick( TreeView.Selected );
end else begin
end;
end;
end;
+//! ActionList\82ÌGroupIndex\82Ì\95Û\91¶
+procedure TGikoForm.GetGroupIndex(ActionList: TActionList);
+var
+ i: Integer;
+begin
+ if ActionList <> nil then begin
+ SetLength(FActionListGroupIndexes, ActionList.ActionCount);
+
+ for i := 0 to ActionList.ActionCount - 1 do begin
+ try
+ FActionListGroupIndexes[i] :=
+ TCustomAction(ActionList.Actions[i]).GroupIndex;
+ TCustomAction(ActionList.Actions[i]).GroupIndex
+ := 0;
+ except
+ ;//Cast\82Å\82«\82È\82¢\82Æ\82«\91Î\8dô
+ end;
+ end;
+
+ end;
+end;
+//! ActionList\82ÌGroupIndex\82Ì\90Ý\92è
+procedure TGikoForm.SetGroupIndex(ActionList: TActionList);
+var
+ i: Integer;
+begin
+ if ActionList <> nil then begin
+ if Length( FActionListGroupIndexes ) = ActionList.ActionCount then begin
+ for i := 0 to ActionList.ActionCount - 1 do begin
+ try
+ TCustomAction(ActionList.Actions[i]).GroupIndex
+ := FActionListGroupIndexes[i];
+ except
+ ;//Cast\82Å\82«\82È\82¢\82Æ\82«\91Î\8dô
+ end;
+ end;
+ end;
+ end;
+end;
+//! \82±\82Ì\83\8c\83X\82ÌURL\8eæ\93¾
+procedure TGikoForm.GetResURLMenuClick(Sender: TObject);
+begin
+;
+end;
+//! ListView\81i\83X\83\8c\83b\83h\88ê\97\97\81j\82ð\8dX\90V\82·\82é
+procedure TGikoForm.RefreshListView(Thread: TThreadItem);
+begin
+ //Thread\82Ì\94Â\82Æ\95\\8e¦\82µ\82Ä\82¢\82é\94Â\82ª\93¯\82¶\82È\82ç\95`\89æ\82ð\8dX\90V\82·\82é
+ if (FActiveList is TBoard) and (TBoard(ActiveList) = Thread.ParentBoard) then begin
+ ListView.Refresh;
+ end;
+end;
initialization
OleInitialize(nil);