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

📄 librarypage.h

📁 Last change: 2008-02-03 This is the source code of KCeasy。
💻 H
字号:
/*
This file is part of KCeasy (http://www.kceasy.com)
Copyright (C) 2002-2004 Markus Kern <mkern@kceasy.com>

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
*/
//---------------------------------------------------------------------------
#ifndef LibraryPageH
#define LibraryPageH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include <ImgList.hpp>
#include <Grids.hpp>
#include <ValEdit.hpp>
#include <ComCtrls.hpp>
#include <Menus.hpp>
#include <Buttons.hpp>
#include "VirtualTrees.hpp"

#include "istring.h"
#include "Engine.h"
#include "VTHeaderPopup.hpp"
//---------------------------------------------------------------------------

class TFolderNodeData
{
public:
    typedef enum
    {
        Shares = 0,
        All = 1,
        Audio = FTAudio,
        Video = FTVideo,
        Images = FTImage,
        Documents = FTDocument,
        Software = FTSoftware,
        Torrents = FTTorrent,
        Unknown = FTUnknown,
        RecentDownloads = 2,
        Collections = 3
    } TFolderType;

    TFolderNodeData(TFolderType NType, const char* NCaption, int NImageIndex) : Type(NType), Caption(NCaption), ImageIndex(NImageIndex), CaptionNumber(0) {}

    TFolderType Type;
    string Caption;
    int CaptionNumber; // if 0 not displayed
    int ImageIndex;
};

class TFileNodeData
{
public:
    TFileNodeData() : File(NULL), ImageIndex(-1) {}

    TSharedFile* File;
    int ImageIndex;
};

class TLibraryForm : public TForm
{
__published:	// IDE-managed Components
    TPanel *LeftPanel;
    TSplitter *HSplitter;
    TPanel *RightPanel;
    TPanel *FilePanel;
    TSplitter *VSplitter;
    TPanel *DetailsPanel;
    TVirtualStringTree *FileTree;
    TVirtualStringTree *FolderTree;
    TImageList *FolderImageList;
    TLabel *InfoFileNameLabel;
    TPanel *InfoCaptionPanel;
    TBevel *InfoBevel;
    TLabel *InfoDetailsLabel;
    TLabel *InfoNameLabel;
    TLabel *InfoValueLabel;
    TImage *InfoImage;
    TImageList *InfoImageList;
    TPopupMenu *FilePopup;
    TMenuItem *PlayFileMnu;
    TMenuItem *ExploreFileMnu;
    TMenuItem *OpenFileExternallyMnu;
    TMenuItem *ResyncSharesMnu;
    TMenuItem *N1;
    TMenuItem *N2;
    TPanel *StatusPanel;
    TSpeedButton *SelectSharesBtn;
    TMenuItem *DeleteFileMnu;
    TMenuItem *N3;
    TMenuItem *HideSharesMnu;
    TStaticText *StatusStatic;
    TMenuItem *LaunchTorrentMnu;
    TMenuItem *CopyFileMagnetMnu;
    TMenuItem *N4;
    TPanel *CtrlPanel;
    TSpeedButton *ShowFoldersBtn;
    TBevel *BottomLineBevel;
    TSpeedButton *ShowDetailsBtn;
    TBevel *Bevel1;
    TBevel *Bevel2;
    TMenuItem *RenameFileMnu;
    TVTHeaderPopupMenu *FileTreeHeaderPopup;
    TLabel *FilterLbl;
    TComboBox *FilterKeyCombo;
    TEdit *FilterEdit;
    TScrollBox *DetailsScrollBox;
    TMenuItem *GoogleLyricsMnu;
    TAnimate *HashingAnimate;
    TPanel *HashingPanel;
    TStaticText *HashingStatic;
    TSpeedButton *FilePlayBtn;
    TSpeedButton *FileDeleteBtn;
    TBevel *Bevel3;
    TSpeedButton *DownloadFolderBtn;
    TMenuItem *CopyFileMnu;
    TMenuItem *GotoBitziMnu;
    TMenuItem *FindOnYouTubeMnu;
    void __fastcall FolderTreeGetText(TBaseVirtualTree *Sender,
          PVirtualNode Node, TColumnIndex Column, TVSTTextType TextType,
          WideString &CellText);
    void __fastcall FolderTreeGetImageIndex(TBaseVirtualTree *Sender,
          PVirtualNode Node, TVTImageKind Kind, TColumnIndex Column,
          bool &Ghosted, int &ImageIndex);
    void __fastcall FolderTreeFreeNode(TBaseVirtualTree *Sender,
          PVirtualNode Node);
    void __fastcall FolderTreeChange(TBaseVirtualTree *Sender,
          PVirtualNode Node);
    void __fastcall FileTreeGetText(TBaseVirtualTree *Sender,
          PVirtualNode Node, TColumnIndex Column, TVSTTextType TextType,
          WideString &CellText);
    void __fastcall FileTreeGetImageIndex(TBaseVirtualTree *Sender,
          PVirtualNode Node, TVTImageKind Kind, TColumnIndex Column,
          bool &Ghosted, int &ImageIndex);
    void __fastcall FolderTreeFocusChanging(TBaseVirtualTree *Sender,
          PVirtualNode OldNode, PVirtualNode NewNode,
          TColumnIndex OldColumn, TColumnIndex NewColumn, bool &Allowed);
    void __fastcall FileTreeCompareNodes(TBaseVirtualTree *Sender,
          PVirtualNode Node1, PVirtualNode Node2, TColumnIndex Column,
          int &Result);
    void __fastcall FileTreeHeaderClick(TVTHeader *Sender,
          TColumnIndex Column, TMouseButton Button, TShiftState Shift,
          int X, int Y);
    void __fastcall FileTreeGetPopupMenu(TBaseVirtualTree *Sender,
          PVirtualNode Node, TColumnIndex Column, const TPoint &P,
          bool &AskParent, TPopupMenu *&PopupMenu);
    void __fastcall ResyncSharesMnuClick(TObject *Sender);
    void __fastcall PlayFileMnuClick(TObject *Sender);
    void __fastcall ExploreFileMnuClick(TObject *Sender);
    void __fastcall OpenFileExternallyMnuClick(TObject *Sender);
    void __fastcall SelectSharesBtnClick(TObject *Sender);
    void __fastcall DeleteFileMnuClick(TObject *Sender);
    void __fastcall FileTreeFocusChanged(TBaseVirtualTree *Sender,
          PVirtualNode Node, TColumnIndex Column);
    void __fastcall HideSharesMnuClick(TObject *Sender);
    void __fastcall FileTreeIncrementalSearch(TBaseVirtualTree *Sender,
          PVirtualNode Node, const WideString SearchText, int &Result);
    void __fastcall LaunchTorrentMnuClick(TObject *Sender);
    void __fastcall CopyFileMagnetMnuClick(TObject *Sender);
    void __fastcall ShowFoldersBtnClick(TObject *Sender);
    void __fastcall ShowDetailsBtnClick(TObject *Sender);
    void __fastcall FileTreeKeyAction(TBaseVirtualTree *Sender,
          WORD &CharCode, TShiftState &Shift, bool &DoDefault);
    void __fastcall FileTreeEditing(TBaseVirtualTree *Sender,
          PVirtualNode Node, TColumnIndex Column, bool &Allowed);
    void __fastcall FileTreeNewText(TBaseVirtualTree *Sender,
          PVirtualNode Node, TColumnIndex Column, WideString NewText);
    void __fastcall RenameFileMnuClick(TObject *Sender);
    void __fastcall FileTreeHeaderDragged(TVTHeader *Sender,
          TColumnIndex Column, int OldPosition);
    void __fastcall FileTreeHeaderPopupPopup(TObject *Sender);
    void __fastcall FileTreeHeaderMouseUp(TVTHeader *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y);
    void __fastcall FileTreeHeaderPopupColumnChange(
          const TBaseVirtualTree *Sender, const TColumnIndex Column,
          bool Visible);
    void __fastcall FilterEditChange(TObject *Sender);
    void __fastcall GoogleLyricsMnuClick(TObject *Sender);
    void __fastcall FileTreeChange(TBaseVirtualTree *Sender,
          PVirtualNode Node);
    void __fastcall DownloadFolderBtnClick(TObject *Sender);
    void __fastcall FileTreeRenderOLEData(TBaseVirtualTree *Sender,
          const tagFORMATETC &FormatEtcIn, tagSTGMEDIUM &Medium,
          bool ForClipboard, HRESULT &Result);
    void __fastcall FileTreeGetUserClipboardFormats(
          TBaseVirtualTree *Sender, TFormatEtcArray &Formats);
    void __fastcall CopyFileMnuClick(TObject *Sender);
    void __fastcall GotoBitziMnuClick(TObject *Sender);
    void __fastcall FindOnYouTubeMnuClick(TObject *Sender);
private:	// User declarations
    TVirtualNode* __fastcall AddFolder(TVirtualNode* ParentNode, TFolderNodeData::TFolderType Type, AnsiString Caption, int ImageIndex);
    TVirtualNode* __fastcall GetFolderNodeByType(TFolderNodeData::TFolderType Type);
    bool __fastcall FileNodeVisible(TVirtualNode* Node);
    void __fastcall FileShowDetails(TSharedFile* File);
    string __fastcall GetFileTreeColumnKey(TFolderNodeData::TFolderType Type);
    void __fastcall SaveFileTreeColumns();

    bool UseSystemIcons;

public:		// User declarations
    __fastcall TLibraryForm(TComponent* Owner);
    void __fastcall Release();
    
    bool __fastcall EngineCallback(TCallbackInfo* CbInfo);
    bool FindFileByHash(const THashSet* Hashes);
};
//---------------------------------------------------------------------------
extern PACKAGE TLibraryForm *LibraryForm;
//---------------------------------------------------------------------------
#endif

⌨️ 快捷键说明

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