📄 librarypage.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 + -