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

📄 listdata.h

📁 iContact v0.75 iContact is designed to be an all-inclusive finger-friendly contact manager for Wind
💻 H
字号:
#pragma once

#include "Settings.h"

#define MAX_LIST_ITEMS 2000
#define MAX_SUBLIST_ITEMS 20

#define PRIMARY_TEXT_LENGTH 64
#define SECONDARY_TEXT_LENGTH 16

enum DataItemType {
    diNothing, diCategory, diText, diUrl,
    diName, diCompany, diPhone, diSms, diEmail,
    diDetailsButton, diEditButton, diCallButton, 
    diSmsButton, diSaveContactButton,
};

/// List DATA
struct Data {
	int		    ID;
	LONG    	oId;
	TCHAR       szPrimaryText[PRIMARY_TEXT_LENGTH];
	TCHAR		szSecondaryText[10];
    TCHAR       wcGroup;
	int		    nPrimaryTextLength;
	int			nSecondaryTextLength;
    bool        isFavorite;
    COLORREF    rgbPrimaryText;
};

struct DataDetail {
	TCHAR           text[PRIMARY_TEXT_LENGTH];
	TCHAR	        label[SECONDARY_TEXT_LENGTH];
    TCHAR           arg1[PRIMARY_TEXT_LENGTH];
    TCHAR           arg2[PRIMARY_TEXT_LENGTH];
	DataItemType    type;
};

class ListData {
protected:
    Settings * _settings;
    bool _canFavorite;
    bool _canAdd;

    Data * _items;
    int _arrayLength;
    int _listCounter;
    int _currentItemIndex;

    HBITMAP _hBitmap;
    UINT _nBitmapHeight;
    UINT _nBitmapWidth;

    DataDetail * _detailItems;
    int _currentDetailIndex;
    int _itemDetailCount;
    const TCHAR * _currentDetailTitle;

    void _addDetail(DataItemType, 
        const TCHAR * text, 
        const TCHAR * label = NULL, 
        const TCHAR * arg1 = NULL, 
        const TCHAR * arg2 = NULL);

    bool _addListItem(int id, 
        const TCHAR * tszPrimary, 
        const TCHAR * tszSecondary, 
        TCHAR tszGroup, 
        LONG oId, 
        COLORREF rgbPrimary);

    virtual HRESULT _loadBitmap ();

public:

    ListData();
    ListData(Settings * pSettings);
    ~ListData(void);

    // Overridable methods
    virtual void Release();
    virtual HRESULT Populate();

    virtual void ToggleFavorite();
    virtual void AddItem();
    virtual void DisplayItem();
    virtual void EditItem();

    virtual HRESULT PopulateDetailsFor(int id);
    virtual void GetItemGroup(int index, TCHAR * pszGroup);

    // Property accessors
    bool CanAdd(void);
    bool CanFavorite(void);
    HBITMAP GetHBitmap();
    int GetHBitmapWidth();
    int GetHBitmapHeight();

    // Methods dealing with main items
    int GetItemCount(void);
    int GetCurrentItemIndex();
    Data GetCurrentItem();
    Data GetItem(int index);
    Data SelectItem(int index);
    Data SelectPreviousItem(int defaultIndex, bool byGroup = false);
    Data SelectNextItem(int defaultIndex, bool byGroup = false);
    bool IsItemNewGroup(int index);
    void UnselectItem();

    // Methods dealing with item details
    HRESULT PopulateDetails();
    int GetItemDetailCount(void);
    int GetCurrentDetailIndex(void);
    const TCHAR * GetCurrentDetailTitle(void);
    bool SelectDetail(int index);
    void IncrementDetailIndex(int by = 1);
    HRESULT PerformCurrentDetailAction(int x);
    DataDetail GetItemDetail(int index);
};

⌨️ 快捷键说明

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