diff options
Diffstat (limited to 'plugins/CSList/src/cslist.h')
-rw-r--r-- | plugins/CSList/src/cslist.h | 440 |
1 files changed, 125 insertions, 315 deletions
diff --git a/plugins/CSList/src/cslist.h b/plugins/CSList/src/cslist.h index c565adbf61..d6b83b30f4 100644 --- a/plugins/CSList/src/cslist.h +++ b/plugins/CSList/src/cslist.h @@ -88,9 +88,6 @@ #define EXTRASTATUS_TITLE_LIMIT 64 // limit of chars for extra status title
#define EXTRASTATUS_MESSAGE_LIMIT 2048 // limit of chars for extra status message
-#define XSTATUS_COUNT 32
-#define XSTATUS_COUNT_EXTENDED 37
-#define MOODS_COUNT 84
// ====[ DEFAULT DB VALUES ]==================================================
@@ -125,34 +122,35 @@ #define deleteSetting( setting ) DBDeleteContactSetting( NULL, __INTERNAL_NAME, setting )
// --
-typedef void (__cdecl *pForAllProtosFunc)( char*, void* );
+typedef void (__cdecl *pForAllProtosFunc)( char*, void *);
// ====[ STRUCTURES ]=========================================================
-struct StatusItem { // list item structure
- int iIcon;
- TCHAR tszTitle[EXTRASTATUS_TITLE_LIMIT];
- TCHAR tszMessage[EXTRASTATUS_MESSAGE_LIMIT];
- BOOL bFavourite;
+struct StatusItem // list item structure
+{
+ int m_iIcon;
+ TCHAR m_tszTitle[EXTRASTATUS_TITLE_LIMIT];
+ TCHAR m_tszMessage[EXTRASTATUS_MESSAGE_LIMIT];
+ BOOL m_bFavourite;
StatusItem()
{
- this->iIcon = 0;
- lstrcpy(this->tszTitle, _T(""));
- lstrcpy(this->tszMessage, _T(""));
- this->bFavourite = FALSE;
+ m_iIcon = 0;
+ lstrcpy(m_tszTitle, _T(""));
+ lstrcpy(m_tszMessage, _T(""));
+ m_bFavourite = FALSE;
}
StatusItem( const StatusItem& p )
{
- this->iIcon = p.iIcon;
- lstrcpy( this->tszTitle, p.tszTitle );
- lstrcpy( this->tszMessage, p.tszMessage );
- this->bFavourite = p.bFavourite;
+ m_iIcon = p.m_iIcon;
+ lstrcpy( m_tszTitle, p.m_tszTitle );
+ lstrcpy( m_tszMessage, p.m_tszMessage );
+ m_bFavourite = p.m_bFavourite;
}
- ~StatusItem( )
+ ~StatusItem()
{
}
};
@@ -161,7 +159,7 @@ static struct CSForm { // icons + buttons int idc;
TCHAR* ptszTitle;
TCHAR* ptszDescr;
- char* pszIconIcoLib;
+ char * pszIconIcoLib;
int iconNoIcoLib;
HANDLE hIcoLibItem;
@@ -180,170 +178,35 @@ static struct CSForm { // icons + buttons { IDOK, LPGENT( "Set custom status to selected one and close" ), LPGENT( "Set" ), "apply", IDI_APPLY, NULL },
};
-static struct CSXstatus { // combobox xstatus icons
- int iId;
- TCHAR* ptszTitle;
-
-} xstatus_names[] = {
-
- { 1, LPGENT( "Angry" ) },
- { 2, LPGENT( "Taking a bath" ) },
- { 3, LPGENT( "Tired" ) },
- { 4, LPGENT( "Party" ) },
- { 5, LPGENT( "Drinking beer" ) },
- { 6, LPGENT( "Thinking" ) },
- { 7, LPGENT( "Eating" ) },
- { 8, LPGENT( "Watching TV" ) },
- { 9, LPGENT( "Meeting" ) },
- { 10, LPGENT( "Coffee" ) },
- { 11, LPGENT( "Listening to music" ) },
- { 12, LPGENT( "Business" ) },
- { 13, LPGENT( "Shooting" ) },
- { 14, LPGENT( "Having fun" ) },
- { 15, LPGENT( "On the phone" ) },
- { 16, LPGENT( "Gaming" ) },
- { 17, LPGENT( "Studying" ) },
- { 18, LPGENT( "Shopping" ) },
- { 19, LPGENT( "Feeling sick" ) },
- { 20, LPGENT( "Sleeping" ) },
- { 21, LPGENT( "Surfing" ) },
- { 22, LPGENT( "Browsing" ) },
- { 23, LPGENT( "Working" ) },
- { 24, LPGENT( "Typing" ) },
- { 25, LPGENT( "Picnic" ) },
- { 26, LPGENT( "PDA" ) },
- { 27, LPGENT( "On the phone" ) },
- { 28, LPGENT( "I'm high" ) },
- { 29, LPGENT( "On WC" ) },
- { 30, LPGENT( "To be or not to be" ) },
- { 31, LPGENT( "Watching pro7 on TV" ) },
- { 32, LPGENT( "Love" ) },
- { 33, LPGENT( "Searching" ) },
- { 34, LPGENT( "Amorous" ) }, // I don't understand why this falls when 2 same named items appear O_o
- { 35, LPGENT( "Journal" ) }, // edit: ..and now I REALLY don't understand why it's working now x))
- { 36, LPGENT( "Sex" ) },
- { 37, LPGENT( "Smoking" ) }, // -||-
-};
-
-static struct CSMoods { // combobox moods icons
- int iId;
- TCHAR* ptszTitle;
- char* szTag;
-} moods_names[] = {
- { 1, LPGENT("Afraid"), "afraid" },
- { 2, LPGENT("Amazed"), "amazed" },
- { 3, LPGENT("Amorous"), "amorous" },
- { 4, LPGENT("Angry"), "angry" },
- { 5, LPGENT("Annoyed"), "annoyed" },
- { 6, LPGENT("Anxious"), "anxious" },
- { 7, LPGENT("Aroused"), "aroused" },
- { 8, LPGENT("Ashamed"), "ashamed" },
- { 9, LPGENT("Bored"), "bored" },
- { 10, LPGENT("Brave"), "brave" },
- { 11, LPGENT("Calm"), "calm" },
- { 12, LPGENT("Cautious"), "cautious" },
- { 13, LPGENT("Cold"), "cold" },
- { 14, LPGENT("Confident"), "confident" },
- { 15, LPGENT("Confused"), "confused" },
- { 16, LPGENT("Contemplative"),"contemplative" },
- { 17, LPGENT("Contented"), "contented" },
- { 18, LPGENT("Cranky"), "cranky" },
- { 19, LPGENT("Crazy"), "crazy" },
- { 20, LPGENT("Creative"), "creative" },
- { 21, LPGENT("Curious"), "curious" },
- { 22, LPGENT("Dejected"), "dejected" },
- { 23, LPGENT("Depressed"), "depressed" },
- { 24, LPGENT("Disappointed"), "disappointed" },
- { 25, LPGENT("Disgusted"), "disgusted" },
- { 26, LPGENT("Dismayed"), "dismayed" },
- { 27, LPGENT("Distracted"), "distracted" },
- { 28, LPGENT("Embarrassed"), "embarrassed" },
- { 29, LPGENT("Envious"), "envious" },
- { 30, LPGENT("Excited"), "excited" },
- { 31, LPGENT("Flirtatious"), "flirtatious" },
- { 32, LPGENT("Frustrated"), "frustrated" },
- { 33, LPGENT("Grateful"), "grateful" },
- { 34, LPGENT("Grieving"), "grieving" },
- { 35, LPGENT("Grumpy"), "grumpy" },
- { 36, LPGENT("Guilty"), "guilty" },
- { 37, LPGENT("Happy"), "happy" },
- { 38, LPGENT("Hopeful"), "hopeful" },
- { 39, LPGENT("Hot"), "hot" },
- { 40, LPGENT("Humbled"), "humbled" },
- { 41, LPGENT("Humiliated"), "humiliated" },
- { 42, LPGENT("Hungry"), "hungry" },
- { 43, LPGENT("Hurt"), "hurt" },
- { 44, LPGENT("Impressed"), "impressed" },
- { 45, LPGENT("In awe"), "in_awe" },
- { 46, LPGENT("In love"), "in_love" },
- { 47, LPGENT("Indignant"), "indignant" },
- { 48, LPGENT("Interested"), "interested" },
- { 49, LPGENT("Intoxicated"), "intoxicated" },
- { 50, LPGENT("Invincible"), "invincible" },
- { 51, LPGENT("Jealous"), "jealous" },
- { 52, LPGENT("Lonely"), "lonely" },
- { 53, LPGENT("Lost"), "lost" },
- { 54, LPGENT("Lucky"), "lucky" },
- { 55, LPGENT("Mean"), "mean" },
- { 56, LPGENT("Moody"), "moody" },
- { 57, LPGENT("Nervous"), "nervous" },
- { 58, LPGENT("Neutral"), "neutral" },
- { 59, LPGENT("Offended"), "offended" },
- { 60, LPGENT("Outraged"), "outraged" },
- { 61, LPGENT("Playful"), "playful" },
- { 62, LPGENT("Proud"), "proud" },
- { 63, LPGENT("Relaxed"), "relaxed" },
- { 64, LPGENT("Relieved"), "relieved" },
- { 65, LPGENT("Remorseful"), "remorseful" },
- { 66, LPGENT("Restless"), "restless" },
- { 67, LPGENT("Sad"), "sad" },
- { 68, LPGENT("Sarcastic"), "sarcastic" },
- { 69, LPGENT("Satisfied"), "satisfied" },
- { 70, LPGENT("Serious"), "serious" },
- { 71, LPGENT("Shocked"), "shocked" },
- { 72, LPGENT("Shy"), "shy" },
- { 73, LPGENT("Sick"), "sick" },
- { 74, LPGENT("Sleepy"), "sleepy" },
- { 75, LPGENT("Spontaneous"), "spontaneous" },
- { 76, LPGENT("Stressed"), "stressed" },
- { 77, LPGENT("Strong"), "strong" },
- { 78, LPGENT("Surprised"), "surprised" },
- { 79, LPGENT("Thankful"), "thankful" },
- { 80, LPGENT("Thirsty"), "thirsty" },
- { 81, LPGENT("Tired"), "tired" },
- { 82, LPGENT("Undefined"), "undefined" },
- { 83, LPGENT("Weak"), "weak" },
- { 84, LPGENT("Worried"), "worried" },
-};
// ====[ MY BITCHY LIST IMPLEMENTATION x)) ]==================================
// TODO: Optimize it all x))
template< class T > struct ListItem
{
- T* item;
- ListItem* next;
+ T* m_item;
+ ListItem* m_next;
- ListItem( )
+ ListItem()
{
- this->item = NULL;
- this->next = NULL;
+ m_item = NULL;
+ m_next = NULL;
}
- ~ListItem( )
+ ~ListItem()
{
- delete this->item;
+ delete m_item;
}
ListItem( StatusItem* si )
{
- this->item = si;
- this->next = NULL;
+ m_item = si;
+ m_next = NULL;
}
ListItem( const ListItem& p )
{
- this->item = p.item;
- this->next = NULL;
+ m_item = p.item;
+ m_next = NULL;
}
};
@@ -351,50 +214,50 @@ template< class T > struct ListItem template< class T > struct List
{
private:
- ListItem< T >* items;
- unsigned int count;
+ ListItem< T >* m_items;
+ unsigned int m_count;
public:
typedef int ( *compareFunc )( const T* p1, const T* p2 );
- compareFunc compare;
+ compareFunc m_compare;
List( compareFunc compFnc )
{
- this->items = NULL;
- this->count = 0;
- this->compare = compFnc;
+ m_items = NULL;
+ m_count = 0;
+ m_compare = compFnc;
}
- ~List( )
+ ~List()
{
- this->destroy( );
+ destroy();
}
- ListItem< T >* getListHead( )
+ ListItem< T >* getListHead()
{
- return items;
+ return m_items;
}
- unsigned int getCount( )
+ unsigned int getCount()
{
- return count;
+ return m_count;
}
int add( T* csi )
{
int position = 0;
ListItem< T >* item = new ListItem< T >( csi );
- if ( this->items == NULL )
- this->items = item;
+ if ( m_items == NULL )
+ m_items = item;
else
{
ListItem< T >* help = item;
- item->next = items;
- while ( help->next != NULL )
+ item->m_next = m_items;
+ while ( help->m_next != NULL )
{
- int cmp = compare( item->item, help->next->item );
- if ( cmp == 1 )
- help = help->next;
+ int cmp = m_compare( item->m_item, help->m_next->m_item );
+ if ( cmp == 1 )
+ help = help->m_next;
else if ( cmp == 0 )
{
delete item;
@@ -406,50 +269,49 @@ public: }
if ( help != item )
{
- item->next = help->next;
- help->next = item;
+ item->m_next = help->m_next;
+ help->m_next = item;
}
- else
- items = item;
+ else m_items = item;
}
- this->count++;
+ m_count++;
return position;
}
int remove( const unsigned int item )
{
int position = 0;
- if ( item < 0 || item >= this->count )
+ if ( item < 0 || item >= m_count )
return -1;
- ListItem< T >* help = items;
+ ListItem< T >* help = m_items;
ListItem< T >* removed;
if ( item == 0 )
{
- items = items->next;
+ m_items = m_items->m_next;
removed = help;
}
else
{
for ( unsigned int i = 0; i < item - 1; i++ )
{
- help = help->next;
+ help = help->m_next;
position++;
}
- removed = help->next;
- help->next = help->next->next;
+ removed = help->m_next;
+ help->m_next = help->m_next->m_next;
}
delete removed;
- this->count--;
+ m_count--;
return position;
}
T* get( const unsigned int item )
{
- ListItem< T >* help = items;
+ ListItem< T >* help = m_items;
for ( unsigned int i = 0; i < item; i++ )
- help = help->next;
- return help->item;
+ help = help->m_next;
+ return help->m_item;
}
T* operator[]( const unsigned int item )
@@ -457,98 +319,72 @@ public: return get( item );
}
- void destroy( )
+ void destroy()
{
- while ( this->count > 0 )
- this->remove( 0 );
+ while ( m_count > 0 )
+ remove( 0 );
}
};
// ====[ CLASSING -- FUNNY STUFF :) ]=========================================
-struct CSList;
struct CSWindow;
struct CSAMWindow;
-struct CSItemsList;
-struct CSListView;
-
-// --------
struct CSListView
{
- HWND handle;
- CSWindow* parent;
+ HWND m_handle;
+ CSWindow* m_parent;
CSListView( HWND, CSWindow* );
void addItem( StatusItem* item, int itemNumber );
void initItems( ListItem< StatusItem >* items );
void reinitItems( ListItem< StatusItem >* items );
- void removeItems( );
- int getPositionInList( );
+ void removeItems();
+ int getPositionInList();
void setFullFocusedSelection( int selection );
};
struct CSItemsList
{
- List< StatusItem >* list;
+ List< StatusItem > *m_list;
static int compareItems( const StatusItem* p1, const StatusItem* p2 );
- void loadItems(char* protoName);
- void saveItems(char* protoName);
+ void loadItems(char *protoName);
+ void saveItems(char *protoName);
- CSItemsList(char* protoName);
+ CSItemsList(char *protoName);
~CSItemsList();
};
-
-struct CSAMWindow
-{
- WORD action;
- StatusItem* item;
- CSWindow* parent;
- BOOL bChanged;
-
- HWND handle;
- HWND hCombo;
- HWND hMessage;
-
- CSAMWindow( WORD action, CSWindow* parent );
- ~CSAMWindow( );
-
- void exec( );
- void setCombo( );
- void fillDialog( );
- void checkFieldLimit( WORD action, WORD item );
- void checkItemValidity();
-};
-
-
struct CSWindow
{
- HWND handle;
- BOOL bExtraIcons;
- CSItemsList* itemslist;
- CSListView* listview;
- CSAMWindow* addModifyDlg;
- HIMAGELIST icons;
- BOOL bSomethingChanged;
- TCHAR* filterString;
- char* protoName;
- CSWindow(char* protoName);
+ HWND m_handle;
+ BOOL m_bExtraIcons;
+ CSItemsList* m_itemslist;
+ CSListView* m_listview;
+ CSAMWindow* m_addModifyDlg;
+ HIMAGELIST m_icons;
+ int m_statusCount;
+ BOOL m_bSomethingChanged;
+ TCHAR* m_filterString;
+ char * m_protoName;
+
+ CSWindow(char *protoName);
~CSWindow();
- void initIcons( );
- void deinitIcons( );
- void initButtons( );
- static void __cdecl showWindow( void* arg );
- static void __cdecl closeWindow( void* arg );
- void loadWindowPosition( );
- BOOL toggleButtons( );
- void toggleEmptyListMessage( );
- void toggleFilter( );
+ void initIcons();
+ void deinitIcons();
+ void initButtons();
+ static void __cdecl showWindow( void *arg );
+ static void __cdecl closeWindow( void *arg );
+ void loadWindowPosition();
+ BOOL toggleButtons();
+ void toggleEmptyListMessage();
+ void toggleFilter();
BOOL itemPassedFilter( ListItem< StatusItem >* li );
void __inline saveWindowPosition( HWND hwnd )
@@ -560,74 +396,51 @@ struct CSWindow }
};
-
-struct CSList
+struct CSAMWindow
{
- // global variables
- static HINSTANCE handle;
- static DWORD dwMirandaVersion;
-
- // class components
- CSWindow* mainWindow;
-
- // events
- HANDLE hHookOnPluginsLoaded;
- HANDLE hHookOnOptionsInit;
- HANDLE hHookOnDBSettingChanged;
- HANDLE hHookOnStatusMenuBuild;
-
- // services
- HANDLE hServiceShowList;
-
- CSList( );
- ~CSList( );
-
- // event functions
- static int postLoading( WPARAM, LPARAM );
- static int initOptions( WPARAM, LPARAM );
- static int respondDBChange( WPARAM, LPARAM );
- static int createMenuItems( WPARAM, LPARAM );
-
- // service functions
- static INT_PTR __cdecl showList(WPARAM, LPARAM, LPARAM);
- void closeList( HWND );
-
- // protocols enumeration related functions
- static void ForAllProtocols( pForAllProtosFunc pFunc, void* arg );
- static void __cdecl addProtoStatusMenuItem( char* protoName, void* arg );
- static void __cdecl countProtos( char* protoName, void* arg );
- static void __cdecl countPlusModProtos( char* protoName, void* arg );
- static void __cdecl importCustomStatusUIStatusesFromAllProtos( char* protoName, void* arg );
-
- // other functions
- void initIcoLib( );
- void registerHotkeys(char buf[200], TCHAR* accName, int Number);
- void rebuildMenuItems( );
- void setStatus(WORD code, StatusItem* item, char* protoName);
+ WORD m_action;
+ StatusItem* m_item;
+ CSWindow* m_parent;
+ BOOL m_bChanged;
+
+ HWND m_handle;
+ HWND m_hCombo;
+ HWND m_hMessage;
+
+ CSAMWindow( WORD action, CSWindow* parent );
+ ~CSAMWindow();
+
+ void exec();
+ void setCombo();
+ void fillDialog();
+ void checkFieldLimit( WORD action, WORD item );
+ void checkItemValidity();
};
-HINSTANCE CSList::handle = NULL;
-DWORD CSList::dwMirandaVersion = 0x00000000;
-// ====[ GLOBALS ]============================================================
+// service functions
+INT_PTR __cdecl showList(WPARAM, LPARAM, LPARAM);
+void closeList( HWND );
-CSList* cslist = NULL;
+// protocols enumeration related functions
+void forAllProtocols(pForAllProtosFunc pFunc, void *arg);
+void addProtoStatusMenuItem( char *protoName, void *arg);
+void countProtos( char *protoName, void *arg);
+void importCustomStatusUIStatusesFromAllProtos( char *protoName, void *arg );
-// ====[ INIT STUFF ]=========================================================
+// other functions
+void IitIcoLib();
+void RegisterHotkeys(char buf[200], TCHAR* accName, int Number);
+void RebuildMenuItems();
+void SetStatus(WORD code, StatusItem* item, char *protoName);
-BOOL WINAPI DllMain( HINSTANCE, DWORD, LPVOID );
+// ====[ INIT STUFF ]=========================================================
extern "C" __declspec( dllexport ) PLUGININFOEX* MirandaPluginInfoEx( DWORD );
extern "C" __declspec( dllexport ) int Load(void);
extern "C" __declspec( dllexport ) int Unload( void );
-
-// ====[ THREAD FORK ]========================================================
-
-void ForkThread( pThreadFunc pFunc, void* arg );
-
-
// ====[ PROCEDURES ]=========================================================
INT_PTR CALLBACK CSWindowProc( HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam );
@@ -635,11 +448,8 @@ INT_PTR CALLBACK CSAMWindowProc( HWND hwnd, UINT message, WPARAM wparam, LPARAM INT_PTR CALLBACK CSRNWindowProc( HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam );
INT_PTR CALLBACK CSOptionsProc( HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam );
-
// ====[ HELPERS ]============================================================
-HICON LoadIconExEx( const char*, int );
-
void __fastcall SAFE_FREE(void** p)
{
if (*p)
|