⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 umain.pas

📁 自己写的一个 RSS 阅读器
💻 PAS
📖 第 1 页 / 共 5 页
字号:
unit uMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, Menus, ExtCtrls, OleCtrls,
  SHDocVw, EmbeddedWB, StdCtrls, ImgList, ActnList,
  JvExComCtrls, JvStatusBar,uFeed, JvListView,MSXML2_TLB,
  uLocalRSS,uOpml,WinHTTP, dxBar, JvExExtCtrls, JvNetscapeSplitter,
  cxInplaceContainer, cxTL, cxControls, cxStyles,cxGraphics, cxEdit,
  cxEditRepositoryItems,cxImageComboBox, XPMenu,uFavorite,Buttons,
  CoolTrayIcon, JvComponent, JvBaseDlg, JvDesktopAlert, XPMan;

type
  TMainWindow = class(TForm)
    MainMenu1: TMainMenu;
    f1: TMenuItem;
    EmbeddedWB1: TEmbeddedWB;
    ActionListBrowser: TActionList;
    actBack: TAction;
    actForward: TAction;
    actGo: TAction;
    ActionList1: TActionList;
    actNew: TAction;
    actExit: TAction;
    actOption: TAction;
    actAbout: TAction;
    New1: TMenuItem;
    N1: TMenuItem;
    Exit1: TMenuItem;
    N2: TMenuItem;
    Option1: TMenuItem;
    N3: TMenuItem;
    About1: TMenuItem;
    StaImg: TImage;
    XPManifest1: TXPManifest;
    JvStatusBar1: TJvStatusBar;
    StaImgInernet: TImage;
    ProgressBar: TProgressBar;
    PMFeed: TPopupMenu;
    u1: TMenuItem;
    TimerAutoReaded: TTimer;
    PMRssItem: TPopupMenu;
    T1: TMenuItem;
    d1: TMenuItem;
    ImageList1: TImageList;
    dxBarManager1: TdxBarManager;
    PanelLeft: TPanel;
    PanelRight: TPanel;
    JvNetscapeSplitter1: TJvNetscapeSplitter;
    PanelR_TOP: TPanel;
    PanelR_Bottom: TPanel;
    JvNetscapeSplitter2: TJvNetscapeSplitter;
    dxBarDockControl1: TdxBarDockControl;
    AddressBox: TdxBarCombo;
    BarBtnBack: TdxBarButton;
    BarBtnForward: TdxBarButton;
    BarBtnRefresh: TdxBarButton;
    BarBtnStop: TdxBarButton;
    BarCmbStyle: TdxBarCombo;
    actStop: TAction;
    actRefresh: TAction;
    P1: TMenuItem;
    PMFolder: TPopupMenu;
    cxStyleRepository1: TcxStyleRepository;
    PerviewStyle: TcxStyle;
    ImageListOutline: TImageList;
    BarBtnShowPerview: TdxBarButton;
    M1: TMenuItem;
    m2: TMenuItem;
    M3: TMenuItem;
    actMakeRead: TAction;
    actMakeUnRead: TAction;
    actDeleteItem: TAction;
    BoldStyle: TcxStyle;
    NormalStyle: TcxStyle;
    BarBtnPreUnread: TdxBarButton;
    BarBtnNextUnread: TdxBarButton;
    BarBtnPre: TdxBarButton;
    BarBtnNext: TdxBarButton;
    actPreUnread: TAction;
    actNextUnread: TAction;
    actPreview: TAction;
    actNext: TAction;
    ImageMain: TImageList;
    FeedTree: TcxTreeList;
    ChannelCol_Title: TcxTreeListColumn;
    ChannelCol_Unread: TcxTreeListColumn;
    ChannelCol_Readed: TcxTreeListColumn;
    PMChannel: TPopupMenu;
    N5: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    D2: TMenuItem;
    N9: TMenuItem;
    R1: TMenuItem;
    r2: TMenuItem;
    N10: TMenuItem;
    PreviewUnread1: TMenuItem;
    NextUnread1: TMenuItem;
    Preview1: TMenuItem;
    Next1: TMenuItem;
    N11: TMenuItem;
    Deleteitems1: TMenuItem;
    N12: TMenuItem;
    actSelectAll: TAction;
    SelectAll1: TMenuItem;
    actNewFolder: TAction;
    N13: TMenuItem;
    N14: TMenuItem;
    M4: TMenuItem;
    dxBarDockControl3: TdxBarDockControl;
    Panel2: TPanel;
    dxBarButton1: TdxBarButton;
    dxBarButton2: TdxBarButton;
    actMoveUp: TAction;
    actMoveDown: TAction;
    dxBarButton3: TdxBarButton;
    dxBarButton4: TdxBarButton;
    actDeleteChannel: TAction;
    actMoveTo: TAction;
    MoveTo1: TMenuItem;
    MoveTo2: TMenuItem;
    cxEditRepository1: TcxEditRepository;
    FlagImageComboBox: TcxEditRepositoryImageComboBoxItem;
    PMFlag: TPopupMenu;
    C2: TMenuItem;
    N17: TMenuItem;
    MFlagNull: TMenuItem;
    MFlag: TMenuItem;
    N15: TMenuItem;
    actReName: TAction;
    ActUpdate: TAction;
    N4: TMenuItem;
    PMFav: TPopupMenu;
    N6: TMenuItem;
    PMFavFolder: TPopupMenu;
    PMFavItem: TPopupMenu;
    N16: TMenuItem;
    R3: TMenuItem;
    N18: TMenuItem;
    D3: TMenuItem;
    r4: TMenuItem;
    D4: TMenuItem;
    N19: TMenuItem;
    M5: TMenuItem;
    NewFavoriteItem1: TMenuItem;
    S1: TMenuItem;
    actShowError: TAction;
    dxBarButton6: TdxBarButton;
    cxTreeList1: TcxTreeList;
    Col_read: TcxTreeListColumn;
    Col_Flag: TcxTreeListColumn;
    Col_Title: TcxTreeListColumn;
    Col_Author: TcxTreeListColumn;
    Col_PublishDate: TcxTreeListColumn;
    Col_Categry: TcxTreeListColumn;
    Col_Description: TcxTreeListColumn;
    Col_ReceivedDate: TcxTreeListColumn;
    ClearItems1: TMenuItem;
    dxBarButton7: TdxBarButton;
    PMSearch: TPopupMenu;
    S2: TMenuItem;
    FilterBox: TdxBarCombo;
    DateFilterBox: TdxBarCombo;
    S3: TMenuItem;
    actStopRefresh: TAction;
    Update1: TMenuItem;
    TrayIcon: TCoolTrayIcon;
    ImageTray: TImageList;
    PopupMenu1: TPopupMenu;
    S4: TMenuItem;
    R5: TMenuItem;
    E1: TMenuItem;
    dxBarButton5: TdxBarButton;
    dxBarButton8: TdxBarButton;
    dxBarButton9: TdxBarButton;
    H1: TMenuItem;
    E2: TMenuItem;
    V1: TMenuItem;
    N20: TMenuItem;
    Update2: TMenuItem;
    Stop1: TMenuItem;
    N21: TMenuItem;
    Delete1: TMenuItem;
    Showerror1: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure actBackEecute(Sender: TObject);
    procedure actForwardExecute(Sender: TObject);
    procedure actGoExecute(Sender: TObject);
    procedure actBackUpdate(Sender: TObject);
    procedure actForwardUpdate(Sender: TObject);
    procedure EmbeddedWB1StatusTextChange(Sender: TObject;
      const Text: WideString);
    procedure FormDestroy(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure EmbeddedWB1NewWindow2(Sender: TObject; var ppDisp: IDispatch;
      var Cancel: WordBool);
    procedure actExitExecute(Sender: TObject);
    procedure actOptionExecute(Sender: TObject);
    procedure actAboutExecute(Sender: TObject);
    procedure EmbeddedWB1ProgressChange(Sender: TObject; Progress,
      ProgressMax: Integer);
    procedure JvStatusBar1Resize(Sender: TObject);
    procedure TimerAutoReadedTimer(Sender: TObject);
    procedure AddressBoxKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure BarCmbStyleChange(Sender: TObject);
    procedure EmbeddedWB1BeforeNavigate2(Sender: TObject;
      const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
      Headers: OleVariant; var Cancel: WordBool);
    procedure EmbeddedWB1NavigateComplete2(Sender: TObject;
      const pDisp: IDispatch; var URL: OleVariant);
    procedure AddressBoxChange(Sender: TObject);
    procedure actStopExecute(Sender: TObject);
    procedure actStopUpdate(Sender: TObject);
    procedure actRefreshExecute(Sender: TObject);
    procedure actRefreshUpdate(Sender: TObject);
    procedure P1Click(Sender: TObject);
    procedure cxTreeList1DblClick(Sender: TObject);
    procedure cxTreeList1CustomDrawCell(Sender: TObject;
      ACanvas: TcxCanvas; AViewInfo: TcxTreeListEditCellViewInfo;
      var ADone: Boolean);
    procedure BarBtnShowPerviewClick(Sender: TObject);
    procedure cxTreeList1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure actMakeReadExecute(Sender: TObject);
    procedure actMakeUnReadExecute(Sender: TObject);
    procedure actMakeReadUpdate(Sender: TObject);
    procedure actMakeUnReadUpdate(Sender: TObject);
    procedure actDeleteItemExecute(Sender: TObject);
    procedure actDeleteItemUpdate(Sender: TObject);
    procedure cxTreeList1Click(Sender: TObject);
    procedure actPreviewExecute(Sender: TObject);
    procedure actPreviewUpdate(Sender: TObject);
    procedure actNextExecute(Sender: TObject);
    procedure actNextUpdate(Sender: TObject);
    procedure EmbeddedWB1ScriptError(Sender: TObject; ErrorLine,
      ErrorCharacter, ErrorCode, ErrorMessage, ErrorUrl: String;
      var ContinueScript, Showdialog: Boolean);
    procedure LoadToTree(aNode:TcxTreeListNode;oln:TOutlineType);
    procedure LoadFavToTree(aNode:TcxTreeListNode;oln:TOutlineType);
    function GetRootNode(aNode:TcxTreeListNode):TcxTreeListNode;
    procedure FeedTreeMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FeedTreeCustomDrawCell(Sender: TObject; ACanvas: TcxCanvas;
      AViewInfo: TcxTreeListEditCellViewInfo; var ADone: Boolean);
    procedure cxTreeList1Change(Sender: TObject);
    procedure FeedTreeFocusedNodeChanged(Sender: TObject; APrevFocusedNode,
      AFocusedNode: TcxTreeListNode);
    procedure cxTreeList1SelectionChanged(Sender: TObject);
    procedure actSelectAllExecute(Sender: TObject);
    procedure actSelectAllUpdate(Sender: TObject);
    procedure actPreUnreadExecute(Sender: TObject);
    procedure actNextUnreadExecute(Sender: TObject);
    procedure actNewFolderUpdate(Sender: TObject);
    procedure actNewFolderExecute(Sender: TObject);
    procedure M4Click(Sender: TObject);
    procedure actMoveUpExecute(Sender: TObject);
    procedure actMoveDownExecute(Sender: TObject);
    procedure actMoveUpUpdate(Sender: TObject);
    procedure actMoveDownUpdate(Sender: TObject);
    procedure actDeleteChannelExecute(Sender: TObject);
    procedure actDeleteChannelUpdate(Sender: TObject);
    procedure actMoveToExecute(Sender: TObject);
    procedure FeedTreeCollapsed(Sender: TObject; ANode: TcxTreeListNode);
    procedure FeedTreeExpanded(Sender: TObject; ANode: TcxTreeListNode);
    procedure C2Click(Sender: TObject);
    procedure PMFlagPopup(Sender: TObject);
    procedure actReNameExecute(Sender: TObject);
    procedure actNewExecute(Sender: TObject);
    procedure actNewUpdate(Sender: TObject);
    procedure ActUpdateExecute(Sender: TObject);
    procedure ActUpdateUpdate(Sender: TObject);
    procedure actReNameUpdate(Sender: TObject);
    procedure N19Click(Sender: TObject);
    procedure r4Click(Sender: TObject);
    procedure M5Click(Sender: TObject);
    procedure actShowErrorUpdate(Sender: TObject);
    procedure actShowErrorExecute(Sender: TObject);
    procedure cxTreeList1CustomDrawPreview(Sender: TObject;
      ACanvas: TcxCanvas; AViewInfo: TcxTreeListEditCellViewInfo;
      var ADone: Boolean);
    function EmbeddedWB1GetExternal(out ppDispatch: IDispatch): HRESULT;
    procedure ClearItems1Click(Sender: TObject);
    procedure dxBarButton6Click(Sender: TObject);
    procedure S2Click(Sender: TObject);
    procedure FilterBoxChange(Sender: TObject);
    procedure actStopRefreshUpdate(Sender: TObject);
    procedure actStopRefreshExecute(Sender: TObject);
    procedure TrayIconDblClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure H1Click(Sender: TObject);
    procedure R5Click(Sender: TObject);
    procedure E2Click(Sender: TObject);
  private
    FirstShow,IsStartHidden:Boolean;
    HistoryIndex: Integer;
    HistoryList: TStringList;
    ADBlockCount:Integer;
    XSL,HTMLXml:IXMLDOMDocument2;
    UpdateCombo:boolean;
    AutoSetReaded:Boolean;
    PrevUnreadNode,NextUnreadNode:TcxTreeListNode;
    ClickX,ClickY:Integer;

    procedure TranslateToolBarCustomize;
    procedure FindAddress(Url:WideString);
    Procedure ShowHtmlInBrowser( Const Html: WideString );
    procedure ApplyStyle(Sender:TObject);
    procedure RestoreWindowSettings;
    procedure SaveWindowSettings;
    procedure LoadToobarStatus;
    procedure LoadTreeListSettings;
    procedure SaveTreeListSettings;

    procedure ReloadRssItems(AFocusedNode:TcxTreeListNode);
    procedure ReloadFavRssItems(AFocusedNode:TcxTreeListNode);
    procedure ShowFolderContent(AFocusedNode:TcxTreeListNode);
    procedure MakeNewsPaper(AFocusedNode:TcxTreeListNode);
    procedure OnProgress(Sender:TObject;Position,Max:integer);

    function IsUnreadBOF:Boolean;
    function IsUnreadEOF:Boolean;
    procedure CalculateFolderReadedCount(aNode:TcxTreeListNode);
    procedure DeleteChildrenNode(aNode:TcxTreeListNode);
    procedure FlagMenuItemClick(Sender:TObject);
    procedure UpdateWithChild(aNode:TcxTreeListNode);
    procedure ExecSearch;
    function ApplyFilter(AItem:TLocalRssItem):Boolean;
    procedure DesktopAlterMessageClick(Sender:TObject);
    { Private declarations }
  public
    ExecPath:string;
    FeedList:TFeed;
    FavList:TFavorite;
    Opml,FavOpml:TOpmlType;

    FavoritesNode,ChannelNode,SearchNode,WatchNode:TcxTreeListNode;
    procedure TranslateFormMain;
    function AddFeed(parent:TcxTreeListNode;FeedTitle,XmlURL,Description,HtmlUrl,FileName:string):TFeedItem;
    procedure LoadOPMLFile;
    procedure LoadFavOPMLFile;
    function NewFolder(DesNode:TcxTreeListNode;FolderName:string):TcxTreeListNode;
    procedure RenameFolder(DesNode:TcxTreeListNode;FolderName:string);
    function NewFavFolder(DesNode:TcxTreeListNode;FolderName:string):TcxTreeListNode;
    procedure LoadFlags;
    Procedure Event_UpdateProgress(Sender: TObject; const ContentType: string;
                                FileSize, BytesRead,PercentsDone: Integer);
    procedure Event_UpdateDone(Sender: TObject; const ContentType: string; FileSize: Integer; Stream: TStream);
    procedure Event_ShowDesktopAlert(ANode:TcxTreeListNode;AMessageText:string);
    procedure Event_Error(Sender: TObject; ErrorStr: string);
    procedure Event_ItemsChange(Sender: TObject);
    procedure Event_FavItemsChange(Sender: TObject);
    procedure Event_OnNewItem(Sender:TObject;Item:TLocalRssItem);
    { Public declarations }
  end;

var
  MainWindow: TMainWindow;

implementation

uses Comm,MProperties,uHTMLMessage,AboutDialog_FRM,uLanguage,Option_FRM,
  uHtmlMessageDlg,XFunctions, AddNewFeed_Frm,FastStrings,uW3CDTF,uConstants,
  ActiveX,uStyle,FeedProperty_Frm,FastStringFuncs,IniFiles,cxCustomData,
  ChooseFolder_Frm,newFolder_Frm, flag_Frm,uFlagBase,
  Error_Frm,MyExternal, search_Frm,ExportOPML_Frm;

{$R *.dfm}

procedure TMainWindow.TranslateFormMain;
begin
  SetCaption('RssNavigator');
  TranslateToolBarCustomize;
end;

procedure TMainWindow.TranslateToolBarCustomize;
begin
  with dxBarManager1.CustomizeCaptions do
  begin
    CAPTION := TranslateStr('ToolabrCustomize',64857);
    TABSHEET1 := TranslateStr('ToolabrCustomize',64848);
    TABSHEET2 := TranslateStr('ToolabrCustomize',64849);
    TABSHEET3 := TranslateStr('ToolabrCustomize',64850);
    TOOLBARS := TranslateStr('ToolabrCustomize',64851);
    NEW := TranslateStr('ToolabrCustomize',64852);
    RENAME := TranslateStr('ToolabrCustomize',64853);
    DELETE := TranslateStr('ToolabrCustomize',64854);
    RESET := TranslateStr('ToolabrCustomize',64855);
    CLOSE := TranslateStr('ToolabrCustomize',64856);
    CATEGORIES := TranslateStr('ToolabrCustomize',64858);
    COMMANDS := TranslateStr('ToolabrCustomize',64859);
    DESCRIPTION := TranslateStr('ToolabrCustomize',64860);
    PERSMENUSANDTOOLBARS := TranslateStr('ToolabrCustomize',64844);
    MENUSSHOWRECENTITEMS := TranslateStr('ToolabrCustomize',64845);
    SHOWFULLMENUSAFTERDELAY := TranslateStr('ToolabrCustomize',64846);
    RESETUSAGEDATA := TranslateStr('ToolabrCustomize',64847);
    OTHEROPTIONS := TranslateStr('ToolabrCustomize',64816);
    LARGEICONS := TranslateStr('ToolabrCustomize',64817);
    HINTOPT1 := TranslateStr('ToolabrCustomize',64818);
    HINTOPT2 := TranslateStr('ToolabrCustomize',64819);
    MENUANIMATIONS := TranslateStr('ToolabrCustomize',64820);
    MENUANIM1 := TranslateStr('ToolabrCustomize',64821);
    MENUANIM2 := TranslateStr('ToolabrCustomize',64822);
    MENUANIM3 := TranslateStr('ToolabrCustomize',64823);
    MENUANIM4 := TranslateStr('ToolabrCustomize',64824);
    MENUANIM5 := TranslateStr('ToolabrCustomize',64825);
    CUSTOMIZE := TranslateStr('ToolabrCustomize',64861);
    ADDREMOVEBUTTONS  := TranslateStr('ToolabrCustomize',64862);
    MOREBUTTONS  := TranslateStr('ToolabrCustomize',64863);
    RESETTOOLBAR  := TranslateStr('ToolabrCustomize',64832);
    WANTTORESETUSAGEDATA := TranslateStr('ToolabrCustomize',64907);
    TOOLBARADD   := TranslateStr('ToolabrCustomize',64839);
    TOOLBARRENAME   := TranslateStr('ToolabrCustomize',64840);
    TOOLBARNAME   := TranslateStr('ToolabrCustomize',64842);
    DIALOGOK  := TranslateStr('ToolabrCustomize',64904);
    DIALOGCANCEL  := TranslateStr('ToolabrCustomize',64905);
    WANTTORESETTOOLBAR  := TranslateStr('ToolabrCustomize',64906);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -