From 0c060267ccea726d5c2c2fd1e45d1f16965fb01e Mon Sep 17 00:00:00 2001 From: George Hazan Date: Sun, 16 Aug 2015 23:08:55 +0000 Subject: code cleaning git-svn-id: http://svn.miranda-ng.org/main/trunk@14975 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/Ping/src/collection.h | 272 ++++++++++------- plugins/Ping/src/pingthread.cpp | 635 +++++++++++++++++----------------------- 2 files changed, 443 insertions(+), 464 deletions(-) (limited to 'plugins/Ping') diff --git a/plugins/Ping/src/collection.h b/plugins/Ping/src/collection.h index 927d3db53d..6e1615ea01 100644 --- a/plugins/Ping/src/collection.h +++ b/plugins/Ping/src/collection.h @@ -1,4 +1,5 @@ -template class Collection { +template class Collection +{ protected: unsigned long count; public: @@ -11,7 +12,8 @@ public: const unsigned long size() const { return count; } }; -template class Node { +template class Node +{ public: T val; @@ -19,24 +21,28 @@ public: virtual ~Node() {} }; -template class ListNode : public Node < T > { +template class ListNode : public Node < T > +{ public: ListNode *next, *prev; ListNode(const T &v) : Node(v), next(0), prev(0) {} - virtual ~ListNode() { + virtual ~ListNode() + { if (next) next->prev = prev; if (prev) prev->next = next; } }; -template class LinkedList : public Collection < T > { +template class LinkedList : public Collection < T > +{ protected: ListNode *head, *tail; public: - class Iterator { - friend class LinkedList < T > ; + class Iterator + { + friend class LinkedList < T >; protected: ListNode *n; Iterator(ListNode *start) : n(start) {} @@ -50,7 +56,8 @@ public: }; LinkedList() : Collection(), head(0), tail(0) {}; - LinkedList(const LinkedList &other) : Collection(), head(0), tail(0) { + LinkedList(const LinkedList &other) : Collection(), head(0), tail(0) + { for (Iterator i = other.begin(); i.has_val(); i.next()) add(i.val()); } @@ -78,7 +85,8 @@ public: virtual Iterator begin() const { return Iterator(head); } - virtual void add_front(T &val) { + virtual void add_front(T &val) + { ListNode *n = new ListNode(val); n->next = head; if (head) head->prev = n; @@ -87,7 +95,8 @@ public: Collection::count++; } - virtual void add(const T &val) { + virtual void add(const T &val) + { ListNode *n = new ListNode(val); n->prev = tail; if (tail) tail->next = n; @@ -96,7 +105,8 @@ public: Collection::count++; } - virtual const bool remove(const T &val) { + virtual const bool remove(const T &val) + { ListNode *n = head; while (n) { if (n->val == val) { @@ -114,7 +124,8 @@ public: return false; } - virtual const bool contains(T &val) const { + virtual const bool contains(T &val) const + { ListNode *n = head; while (n) { if (n->val == val) { @@ -130,15 +141,18 @@ public: // queue/stack functions // stack - use push/pop // queue - use push_back/pop - virtual void push(T val) { + virtual void push(T val) + { add_front(val); } - virtual void push_back(T &val) { + virtual void push_back(T &val) + { add(val); } - virtual const bool pop(T &val) { + virtual const bool pop(T &val) + { if (!head) return false; ListNode *n = head; @@ -155,15 +169,17 @@ public: } }; -template class DynamicArray : public Collection < T > { +template class DynamicArray : public Collection < T > +{ protected: T *ar; unsigned long initial, limit, increment; public: - class Iterator { - friend class DynamicArray < T > ; + class Iterator + { + friend class DynamicArray < T >; protected: T *ar; unsigned long count; @@ -178,12 +194,14 @@ public: virtual const bool has_val() { return pos < count; } }; - DynamicArray(unsigned long init = 0, unsigned long inc = 1) : Collection(), ar(0), initial(init), limit(init), increment(inc) { + DynamicArray(unsigned long init = 0, unsigned long inc = 1) : Collection(), ar(0), initial(init), limit(init), increment(inc) + { if (limit) ar = (T *)malloc(limit * sizeof(T)); } virtual ~DynamicArray() { if (ar) free(ar); } - virtual void clear() { + virtual void clear() + { Collection::count = 0; limit = initial; if (limit) ar = (T *)realloc(ar, limit * sizeof(T)); @@ -195,7 +213,8 @@ public: virtual Iterator begin() const { return Iterator(ar, Collection::count, 0); } - virtual void add(const T &val) { + virtual void add(const T &val) + { if (Collection::count == limit) { limit += increment; ar = (T *)realloc(ar, limit * sizeof(T)); @@ -205,13 +224,15 @@ public: ar[Collection::count++] = val; } - virtual void add_all(DynamicArray &other) { + virtual void add_all(DynamicArray &other) + { for (Iterator i = other.begin(); i != pl.end(); ++i) { add(i.val()); } } - virtual const bool remove(const T &val) { + virtual const bool remove(const T &val) + { for (unsigned long i = 0; i < Collection::count; i++) { if (ar[i] == val) { memmove(ar + i, ar + i + 1, (Collection::count - i) * sizeof(T)); @@ -222,7 +243,8 @@ public: return false; } - virtual const bool remove(const unsigned long index) { + virtual const bool remove(const unsigned long index) + { if (index >= Collection::count) return false; memmove(ar + index, ar + index + 1, (Collection::count - index) * sizeof(T)); @@ -230,7 +252,8 @@ public: return true; } - virtual const bool insert(const T &val, const unsigned long index) { + virtual const bool insert(const T &val, const unsigned long index) + { if (index > Collection::count) return false; if (Collection::count == limit) { @@ -246,11 +269,13 @@ public: return true; } - virtual T &operator[](const int index) { + virtual T &operator[](const int index) + { return ar[index]; } - const bool index_of(const T &val, unsigned long &index) const { + const bool index_of(const T &val, unsigned long &index) const + { for (int i = 0; i < Collection::count; i++) { if (ar[index] == val) { index = i; @@ -260,7 +285,8 @@ public: return false; } - const int index_of(const T &val) const { + const int index_of(const T &val) const + { for (int i = 0; i < Collection::count; i++) { if (ar[i] == val) { return i; @@ -270,7 +296,8 @@ public: } // stack functions - virtual const bool pop(T &val) { + virtual const bool pop(T &val) + { if (Collection::count) { val = ar[Collection::count - 1]; remove(Collection::count - 1); @@ -279,25 +306,26 @@ public: return false; } - virtual void push(const T &val) { + virtual void push(const T &val) + { add(val); } }; -template class SortedDynamicArray : public DynamicArray < T > { +template class SortedDynamicArray : public DynamicArray < T > +{ public: SortedDynamicArray(unsigned long init = 0, unsigned long inc = 1) : DynamicArray(init, inc) {} virtual ~SortedDynamicArray() {} - const bool get_index(const T &val, unsigned long &index) { + const bool get_index(const T &val, unsigned long &index) + { unsigned long low = 0; unsigned long high = Collection::count - 1; - while (high < Collection::count && low <= high) - { + while (high < Collection::count && low <= high) { unsigned long i = (low + high) / 2; - if (DynamicArray::ar[i] == val) - { + if (DynamicArray::ar[i] == val) { index = i; return true; } @@ -312,19 +340,22 @@ public: return false; } - virtual void add(const T &val) { + virtual void add(const T &val) + { unsigned long index; get_index(val, index); insert(val, index); } }; -template class TreeNode : public Node < T > { +template class TreeNode : public Node < T > +{ public: TreeNode *parent, *left, *right; TreeNode(const T &v, TreeNode *par) : Node(v), parent(par), left(0), right(0) {} - virtual ~TreeNode() { + virtual ~TreeNode() + { if (parent) { if (parent->left == this) parent->left = 0; if (parent->right == this)parent->right = 0; @@ -332,12 +363,14 @@ public: } }; -template > class BinaryTree : public Collection < T > { +template > class BinaryTree : public Collection < T > +{ protected: N *root; - virtual void delete_node(N *n) { + virtual void delete_node(N *n) + { if (n->left && n->right) { N *minmax = n->left; while (minmax->right) minmax = minmax->right; @@ -370,7 +403,8 @@ protected: Collection::count--; } - virtual void insert_node(N *n) { + virtual void insert_node(N *n) + { N *current = root, *parent = 0; while (current) { parent = current; @@ -396,11 +430,13 @@ protected: } public: - class Iterator { - friend class BinaryTree < T, N > ; + class Iterator + { + friend class BinaryTree < T, N >; protected: - class EvalNode { + class EvalNode + { public: bool evaluate; N *node; @@ -416,7 +452,8 @@ public: LinkedList stack; - Iterator(N *start) : n(0) { + Iterator(N *start) : n(0) + { if (start) { stack.push(EvalNode(true, start)); next(); @@ -424,11 +461,12 @@ public: } public: - Iterator(const Iterator &other) :n(other.n), stack(other.stack) {} + Iterator(const Iterator &other) :n(other.n), stack(other.stack) {} virtual ~Iterator() {} virtual T &val() { return n->val; } - virtual void next() { + virtual void next() + { EvalNode en; bool popped = false; while ((popped = stack.pop(en)) && en.evaluate) { @@ -443,20 +481,23 @@ public: }; BinaryTree() : Collection(), root(0) {}; - BinaryTree(BinaryTree &other) : Collection(), root(0) { + BinaryTree(BinaryTree &other) : Collection(), root(0) + { for (Iterator i = other.begin(); i != pl.end(); ++i) add(i.val()); } virtual ~BinaryTree() { clear(); } - BinaryTree &operator=(BinaryTree &other) { + BinaryTree &operator=(BinaryTree &other) + { clear(); for (Iterator i = other.begin(); i != pl.end(); ++i) add(i.val()); return *this; } - virtual void clear() { + virtual void clear() + { N *current = root, *parent = 0; while (current) { if (current->left) current = current->left; @@ -472,12 +513,14 @@ public: Collection::count = 0; } - void add(const T &val) { + void add(const T &val) + { N *n = new N(val, 0); insert_node(n); } - const bool remove(const T &val) { + const bool remove(const T &val) + { N *current = root; while (current) { if (current->val == val) @@ -496,7 +539,8 @@ public: return false; } - const bool contains(const T &val) const { + const bool contains(const T &val) const + { N *current = root; while (current) { if (current->val == val) @@ -517,13 +561,15 @@ public: #define BLACK 0 // thanks to wikipedia (http://en.wikipedia.org/wiki/Red_black_tree) -template class ColouredTreeNode : public Node < T > { +template class ColouredTreeNode : public Node < T > +{ public: ColouredTreeNode *parent, *left, *right; char color; ColouredTreeNode(const T &v, ColouredTreeNode *par) : Node(v), parent(par), left(0), right(0), color(BLACK) {} - virtual ~ColouredTreeNode() { + virtual ~ColouredTreeNode() + { if (parent) { if (parent->left == this) parent->left = 0; if (parent->right == this)parent->right = 0; @@ -531,15 +577,18 @@ public: } }; -template > class RedBlackTree : public BinaryTree < T, N > { +template > class RedBlackTree : public BinaryTree < T, N > +{ protected: - N *grandparent(N *n) { + N *grandparent(N *n) + { if (n && n->parent) return n->parent->parent; else return NULL; } - N *uncle(N *n) { + N *uncle(N *n) + { if (grandparent(n)) { if (n->parent == grandparent(n)->left) return grandparent(n)->right; @@ -549,7 +598,8 @@ protected: else return NULL; } - N *sibling(N *n) { + N *sibling(N *n) + { if (n->parent) { if (n == n->parent->left) return n->parent->right; @@ -559,11 +609,13 @@ protected: else return NULL; } - bool is_leaf(N *n) { + bool is_leaf(N *n) + { return n == 0; } - void replace_node(N *o, N *n) { + void replace_node(N *o, N *n) + { n->parent = o->parent; if (n->parent) { if (n->parent->left == o) n->parent->left = n; @@ -573,7 +625,8 @@ protected: BinaryTree::root = n; } - void rotate_left(N *n) { + void rotate_left(N *n) + { N *p = n->right; N *q = n; @@ -589,7 +642,8 @@ protected: else BinaryTree::root = p; } - void rotate_right(N *n) { + void rotate_right(N *n) + { N *p = n->left; N *q = n; @@ -606,19 +660,22 @@ protected: BinaryTree::root = p; } - void insert_case1(N *n) { + void insert_case1(N *n) + { if (n->parent == NULL) n->color = BLACK; else insert_case2(n); } - void insert_case2(N *n) { + void insert_case2(N *n) + { if (n->parent->color == BLACK) return; /* Tree is still valid */ else insert_case3(n); } - void insert_case3(N *n) { + void insert_case3(N *n) + { if (uncle(n) != NULL && uncle(n)->color == RED) { n->parent->color = BLACK; uncle(n)->color = BLACK; @@ -628,7 +685,8 @@ protected: else insert_case4(n); } - void insert_case4(N *n) { + void insert_case4(N *n) + { if (n == n->parent->right && n->parent == grandparent(n)->left) { rotate_left(n->parent); n = n->left; @@ -639,7 +697,8 @@ protected: } insert_case5(n); } - void insert_case5(N *n) { + void insert_case5(N *n) + { n->parent->color = BLACK; grandparent(n)->color = RED; if (n == n->parent->left && n->parent == grandparent(n)->left) { @@ -651,7 +710,8 @@ protected: } } - void delete_case0(N *n) { + void delete_case0(N *n) + { /* Precondition: n has at most one non-null child */ N *child = is_leaf(n->right) ? n->left : n->right; if (child) replace_node(n, child); @@ -669,13 +729,15 @@ protected: delete n; Collection::count--; } - void delete_case1(N *n) { + void delete_case1(N *n) + { if (n->parent == NULL) return; else delete_case2(n); } - void delete_case2(N *n) { + void delete_case2(N *n) + { if (sibling(n) && sibling(n)->color == RED) { n->parent->color = RED; sibling(n)->color = BLACK; @@ -686,40 +748,40 @@ protected: } delete_case3(n); } - void delete_case3(N *n) { + void delete_case3(N *n) + { if (n->parent->color == BLACK && sibling(n) && sibling(n)->color == BLACK && (sibling(n)->left == 0 || sibling(n)->left->color == BLACK) && - (sibling(n)->right == 0 || sibling(n)->right->color == BLACK)) - { + (sibling(n)->right == 0 || sibling(n)->right->color == BLACK)) { sibling(n)->color = RED; delete_case1(n->parent); } else delete_case4(n); } - void delete_case4(N *n) { + void delete_case4(N *n) + { if (n->parent->color == RED && sibling(n) && sibling(n)->color == BLACK && (sibling(n)->left == 0 || sibling(n)->left->color == BLACK) && - (sibling(n)->right == 0 || sibling(n)->right->color == BLACK)) - { + (sibling(n)->right == 0 || sibling(n)->right->color == BLACK)) { sibling(n)->color = RED; n->parent->color = BLACK; } else delete_case5(n); } - void delete_case5(N *n) { + void delete_case5(N *n) + { if (n == n->parent->left && sibling(n) && sibling(n)->color == BLACK && sibling(n)->left && sibling(n)->left->color == RED && - (sibling(n)->right == 0 || sibling(n)->right->color == BLACK)) - { + (sibling(n)->right == 0 || sibling(n)->right->color == BLACK)) { sibling(n)->color = RED; sibling(n)->left->color = BLACK; rotate_right(sibling(n)); @@ -729,15 +791,15 @@ protected: sibling(n)->color == BLACK && sibling(n)->right && sibling(n)->right->color == RED && - (sibling(n)->left == 0 || sibling(n)->left->color == BLACK)) - { + (sibling(n)->left == 0 || sibling(n)->left->color == BLACK)) { sibling(n)->color = RED; sibling(n)->right->color = BLACK; rotate_left(sibling(n)); } delete_case6(n); } - void delete_case6(N *n) { + void delete_case6(N *n) + { sibling(n)->color = n->parent->color; n->parent->color = BLACK; if (n == n->parent->left) { @@ -752,20 +814,23 @@ protected: } } - N *get_predecessor(N *n) { + N *get_predecessor(N *n) + { N *minmax = n->left; while (minmax->right) minmax = minmax->right; return minmax; } - virtual void insert_node(N *n) { + virtual void insert_node(N *n) + { BinaryTree::insert_node(n); n->color = RED; insert_case1(n); } - virtual void delete_node(N *n) { + virtual void delete_node(N *n) + { if (n->left && n->right) { N *predecessor = get_predecessor(n); n->val = predecessor->val; @@ -780,7 +845,8 @@ public: virtual ~RedBlackTree() {} }; -template class Pair { +template class Pair +{ public: A first; B second; @@ -796,10 +862,12 @@ public: }; //template > > class Map: public BinaryTree< Pair< A, B >, N > { -template > > class Map : public RedBlackTree < Pair< A, B >, N > { +template > > class Map : public RedBlackTree < Pair< A, B >, N > +{ protected: - N *find(A &key) const { + N *find(A &key) const + { N *n = RedBlackTree< Pair< A, B >, N >::root; while (n) { if (n->val.first == key) @@ -817,11 +885,13 @@ public: Map() : RedBlackTree< Pair, N >() {} virtual ~Map() {} - void put(A &key, B &value) { + void put(A &key, B &value) + { add(Pair(key, value)); } - const bool get(A &key, B &val) const { + const bool get(A &key, B &val) const + { const N *n = find(key); if (n) { val = n->val.second; @@ -831,28 +901,26 @@ public: return false; } - B &operator[](A &key) { + B &operator[](A &key) + { N *n = find(key); if (n) return n->val.second; else { Pair< A, B > p(key); - N *n = new N(p, 0); + n = new N(p, 0); insert_node(n); return n->val.second; } } - virtual const bool exists(A &key) const { - const N *n = find(key); - if (n) { - return true; - } - else - return false; + virtual const bool exists(A &key) const + { + return find(key) != NULL; } - virtual const bool remove(A &key) { + virtual const bool remove(A &key) + { N *n = find(key); if (n) { delete_node(n); diff --git a/plugins/Ping/src/pingthread.cpp b/plugins/Ping/src/pingthread.cpp index c9b6e87421..ca291c835d 100644 --- a/plugins/Ping/src/pingthread.cpp +++ b/plugins/Ping/src/pingthread.cpp @@ -29,37 +29,41 @@ COLORREF bk_col = RGB(255, 255, 255); static int transparentFocus = 1; ///////////////// -bool get_thread_finished() { +bool get_thread_finished() +{ mir_cslock lck(thread_finished_cs); bool retval = thread_finished; return retval; } -void set_thread_finished(bool f) { +void set_thread_finished(bool f) +{ mir_cslock lck(thread_finished_cs); thread_finished = f; } -bool get_list_changed() { +bool get_list_changed() +{ mir_cslock lck(list_changed_cs); bool retval = list_changed; return retval; } -void set_list_changed(bool f) { +void set_list_changed(bool f) +{ mir_cslock lck(list_changed_cs); list_changed = f; } -void SetProtoStatus(TCHAR *pszLabel, char *pszProto, int if_status, int new_status) { +void SetProtoStatus(TCHAR *pszLabel, char *pszProto, int if_status, int new_status) +{ if (mir_strcmp(pszProto, Translate("")) == 0) { int num_protocols; PROTOACCOUNT **pppDesc; Proto_EnumAccounts(&num_protocols, &pppDesc); - for (int i = 0; i < num_protocols; i++) { + for (int i = 0; i < num_protocols; i++) SetProtoStatus(pszLabel, pppDesc[i]->szModuleName, if_status, new_status); - } } else { if (ProtoServiceExists(pszProto, PS_GETSTATUS)) { @@ -78,8 +82,7 @@ void SetProtoStatus(TCHAR *pszLabel, char *pszProto, int if_status, int new_stat void __cdecl sttCheckStatusThreadProc(void*) { clock_t start_t = clock(), end_t; - while (!get_thread_finished()) - { + while (!get_thread_finished()) { end_t = clock(); int wait = (int)((options.ping_period - ((end_t - start_t) / (double)CLOCKS_PER_SEC)) * 1000); @@ -94,35 +97,35 @@ void __cdecl sttCheckStatusThreadProc(void*) bool reply = false; int count = 0; - PINGADDRESS pa; + PINGADDRESS pa = { 0 }; HistPair history_entry; - - mir_cslock lck(data_list_cs); - set_list_changed(false); - size_t size = data_list.size(); - - size_t index = 0; - for (; index < size; index++) + size_t size; { mir_cslock lck(data_list_cs); - size_t c = 0; - for (pinglist_it i = data_list.begin(); i != data_list.end() && c <= index; ++i, c++) + set_list_changed(false); + size = data_list.size(); + } + + size_t index = 0; + for (; index < size; index++) { { - if (c == index) - { - // copy just what we need - i.e. not history, not command - pa.get_status = i->get_status; - pa.item_id = i->item_id; - pa.miss_count = i->miss_count; - pa.port = i->port; - mir_tstrncpy(pa.pszLabel, i->pszLabel, _countof(pa.pszLabel)); - mir_tstrncpy(pa.pszName, i->pszName, _countof(pa.pszName)); - mir_strncpy(pa.pszProto, i->pszProto, _countof(pa.pszProto)); - pa.set_status = i->set_status; - pa.status = i->status; - break; + mir_cslock lck(data_list_cs); + size_t c = 0; + for (pinglist_it i = data_list.begin(); i != data_list.end() && c <= index; ++i, c++) { + if (c == index) { + // copy just what we need - i.e. not history, not command + pa.get_status = i->get_status; + pa.item_id = i->item_id; + pa.miss_count = i->miss_count; + pa.port = i->port; + mir_tstrncpy(pa.pszLabel, i->pszLabel, _countof(pa.pszLabel)); + mir_tstrncpy(pa.pszName, i->pszName, _countof(pa.pszName)); + mir_strncpy(pa.pszProto, i->pszProto, _countof(pa.pszProto)); + pa.set_status = i->set_status; + pa.status = i->status; + break; + } } - } if (get_thread_finished()) break; @@ -132,12 +135,9 @@ void __cdecl sttCheckStatusThreadProc(void*) if (!options.no_test_icon) { mir_cslock lck(data_list_cs); for (pinglist_it i = data_list.begin(); i != data_list.end(); ++i) - { if (i->item_id == pa.item_id) - { i->status = PS_TESTING; - } - } + InvalidateRect(list_hwnd, 0, FALSE); } @@ -146,42 +146,40 @@ void __cdecl sttCheckStatusThreadProc(void*) if (get_thread_finished()) break; if (get_list_changed()) break; - mir_cslock lck(data_list_cs); - for (pinglist_it i = data_list.begin(); i != data_list.end(); ++i) - { - if (i->item_id == pa.item_id) - { - i->responding = pa.responding; - i->round_trip_time = pa.round_trip_time; - history_entry.first = i->round_trip_time; - history_entry.second = time(0); - history_map[i->item_id].push_back(history_entry); - // maintain history (-1 represents no response) - while (history_map[i->item_id].size() >= MAX_HISTORY) - //history_map[i->item_id].pop_front(); - history_map[i->item_id].remove(history_map[i->item_id].begin().val()); - - if (pa.responding) - { - if (pa.miss_count > 0) - pa.miss_count = -1; - else - pa.miss_count--; - pa.status = PS_RESPONDING; - } - else - { - if (pa.miss_count < 0) - pa.miss_count = 1; - else - pa.miss_count++; - pa.status = PS_NOTRESPONDING; + { mir_cslock lck(data_list_cs); + + for (pinglist_it i = data_list.begin(); i != data_list.end(); ++i) { + if (i->item_id == pa.item_id) { + i->responding = pa.responding; + i->round_trip_time = pa.round_trip_time; + history_entry.first = i->round_trip_time; + history_entry.second = time(0); + history_map[i->item_id].push_back(history_entry); + // maintain history (-1 represents no response) + while (history_map[i->item_id].size() >= MAX_HISTORY) + //history_map[i->item_id].pop_front(); + history_map[i->item_id].remove(history_map[i->item_id].begin().val()); + + if (pa.responding) { + if (pa.miss_count > 0) + pa.miss_count = -1; + else + pa.miss_count--; + pa.status = PS_RESPONDING; + } + else { + if (pa.miss_count < 0) + pa.miss_count = 1; + else + pa.miss_count++; + pa.status = PS_NOTRESPONDING; + } + + i->miss_count = pa.miss_count; + i->status = pa.status; + + break; } - - i->miss_count = pa.miss_count; - i->status = pa.status; - - break; } } @@ -189,8 +187,7 @@ void __cdecl sttCheckStatusThreadProc(void*) count++; if (pa.miss_count == -1 - options.retries || - (((-pa.miss_count) % (options.retries + 1)) == 0 && !options.block_reps)) - { + (((-pa.miss_count) % (options.retries + 1)) == 0 && !options.block_reps)) { reply = true; if (options.show_popup2 && ServiceExists(MS_POPUP_SHOWMESSAGE)) { ShowPopup(TranslateT("Ping Reply"), pa.pszLabel, 1); @@ -204,10 +201,8 @@ void __cdecl sttCheckStatusThreadProc(void*) SetProtoStatus(pa.pszLabel, pa.pszProto, pa.get_status, pa.set_status); } else { - if (pa.miss_count == 1 + options.retries || - ((pa.miss_count % (options.retries + 1)) == 0 && !options.block_reps)) - { + ((pa.miss_count % (options.retries + 1)) == 0 && !options.block_reps)) { timeout = true; if (options.show_popup) ShowPopup(TranslateT("Ping Timeout"), pa.pszLabel, 0); @@ -241,7 +236,8 @@ void start_ping_thread() status_update_thread = mir_forkthread(sttCheckStatusThreadProc, 0); } -void stop_ping_thread() { +void stop_ping_thread() +{ set_thread_finished(true); SetEvent(hWakeEvent); //ICMP::get_instance()->stop(); @@ -251,14 +247,16 @@ void stop_ping_thread() { status_update_thread = 0; } -bool FrameIsFloating() { +bool FrameIsFloating() +{ if (frame_id == -1) return true; // no frames, always floating return (CallService(MS_CLIST_FRAMES_GETFRAMEOPTIONS, MAKEWPARAM(FO_FLOATING, frame_id), 0) != 0); } -int FillList(WPARAM, LPARAM) { +int FillList(WPARAM, LPARAM) +{ if (options.logging) CallService(PLUG "/Log", (WPARAM)_T("ping address list reload"), 0); @@ -267,20 +265,19 @@ int FillList(WPARAM, LPARAM) { CallService(PLUG "/GetPingList", 0, (LPARAM)&pl); SendMessage(list_hwnd, WM_SETREDRAW, FALSE, 0); - mir_cslock lck(data_list_cs); - - data_list = pl; - SendMessage(list_hwnd, LB_RESETCONTENT, 0, 0); - - int index = 0; - for (pinglist_it j = data_list.begin(); j != data_list.end(); ++j, index++) { - SendMessage(list_hwnd, LB_INSERTSTRING, (WPARAM)-1, (LPARAM)&(*j)); - } - set_list_changed(true); + mir_cslock lck(data_list_cs); + data_list = pl; + SendMessage(list_hwnd, LB_RESETCONTENT, 0, 0); - list_size = data_list.size(); + int index = 0; + for (pinglist_it j = data_list.begin(); j != data_list.end(); ++j, index++) { + SendMessage(list_hwnd, LB_INSERTSTRING, (WPARAM)-1, (LPARAM)&(*j)); + } + set_list_changed(true); + list_size = data_list.size(); + } SendMessage(list_hwnd, WM_SETREDRAW, TRUE, 0); InvalidateRect(list_hwnd, 0, FALSE); @@ -295,8 +292,7 @@ int FillList(WPARAM, LPARAM) { INT_PTR PingPlugShowWindow(WPARAM, LPARAM) { - if (hpwnd) - { + if (hpwnd) { if (frame_id != -1 && ServiceExists(MS_CLIST_FRAMES_SHFRAME)) CallService(MS_CLIST_FRAMES_SHFRAME, (WPARAM)frame_id, 0); else @@ -305,16 +301,11 @@ INT_PTR PingPlugShowWindow(WPARAM, LPARAM) return 0; } -#define TIMER_ID 11042 -void CALLBACK TimerProc( - HWND , // handle to window - UINT, // WM_TIMER message - UINT_PTR, // timer identifier - DWORD // current system time - ) +#define TIMER_ID 11042 + +void CALLBACK TimerProc(HWND, UINT, UINT_PTR, DWORD) { - if (frame_id != -1 && ServiceExists(MS_CLIST_FRAMES_ADDFRAME)) - { + if (frame_id != -1 && ServiceExists(MS_CLIST_FRAMES_ADDFRAME)) { TCHAR TBcapt[255]; if (total > 0) mir_sntprintf(TBcapt, _countof(TBcapt), _T("Ping (%d/%d)"), upCount, total); @@ -325,11 +316,6 @@ void CALLBACK TimerProc( CallService(MS_CLIST_FRAMES_SETFRAMEOPTIONS, MAKEWPARAM(FO_TBTIPNAME | FO_TCHAR, frame_id), (LPARAM)TBcapt); CallService(MS_CLIST_FRAMES_UPDATEFRAME, frame_id, FU_TBREDRAW); } - else { - // if(options.attach_to_clist) { - // AttachToClist(true); - // } - } } DWORD context_point; @@ -340,13 +326,11 @@ LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar MEASUREITEMSTRUCT *mis; LPDRAWITEMSTRUCT dis; SIZE textSize; - PINGADDRESS itemData; RECT r; LPARAM lp; int sel; - switch (msg) - { + switch (msg) { case WM_MEASUREITEM: mis = (MEASUREITEMSTRUCT *)lParam; @@ -360,25 +344,25 @@ LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar HBRUSH ttbrush = 0; COLORREF tcol; if (dis->itemID != -1) { - mir_cslock lck(data_list_cs); - itemData = *(PINGADDRESS *)dis->itemData; - + PINGADDRESS itemData; + { + mir_cslock lck(data_list_cs); + itemData = *(PINGADDRESS *)dis->itemData; + } SendMessage(list_hwnd, LB_SETITEMHEIGHT, 0, (LPARAM)options.row_height); - //dis->rcItem.bottom = dis->rcItem.top + options.row_height; LONG x, y; if (context_point_valid) { - RECT r; GetWindowRect(list_hwnd, &r); - x = LOWORD(context_point) - r.left, - y = HIWORD(context_point) - r.top; + x = LOWORD(context_point) - r.left; + y = HIWORD(context_point) - r.top; } + else x = y = 0; GetClientRect(hwnd, &r); if ((dis->itemState & ODS_SELECTED && dis->itemState & ODS_FOCUS) - || (context_point_valid && (x >= dis->rcItem.left && x <= dis->rcItem.right) && (y >= dis->rcItem.top && y <= dis->rcItem.bottom))) - { + || (context_point_valid && (x >= dis->rcItem.left && x <= dis->rcItem.right) && (y >= dis->rcItem.top && y <= dis->rcItem.bottom))) { tcol = db_get_dw(NULL, "CLC", "SelBkColour", GetSysColor(COLOR_HIGHLIGHT)); SetBkColor(dis->hDC, tcol); FillRect(dis->hDC, &dis->rcItem, (ttbrush = CreateSolidBrush(tcol))); @@ -398,8 +382,6 @@ LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar SetBkMode(dis->hDC, TRANSPARENT); HICON hIcon = (itemData.status != PS_DISABLED ? (itemData.status == PS_TESTING ? hIconTesting : (itemData.status == PS_RESPONDING ? hIconResponding : hIconNotResponding)) : hIconDisabled); dis->rcItem.left += options.indent; - //DrawIconEx(dis->hDC,dis->rcItem.left,(dis->rcItem.top + dis->rcItem.bottom - GetSystemMetrics(SM_CYSMICON))>>1,hIcon,GetSystemMetrics(SM_CXSMICON),GetSystemMetrics(SM_CYSMICON),0,NULL,DI_NORMAL); - //DrawIconEx(dis->hDC,dis->rcItem.left,(dis->rcItem.top + dis->rcItem.bottom - GetSystemMetrics(SM_CYSMICON))>>1,hIcon,0, 0, 0, NULL, DI_NORMAL); DrawIconEx(dis->hDC, dis->rcItem.left, dis->rcItem.top + ((options.row_height - 16) >> 1), hIcon, 0, 0, 0, NULL, DI_NORMAL); GetTextExtentPoint32(dis->hDC, itemData.pszLabel, (int)mir_tstrlen(itemData.pszLabel), &textSize); @@ -423,81 +405,72 @@ LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar if (ttbrush) DeleteObject(ttbrush); return TRUE; } - //return DefWindowProc(hwnd, msg, wParam, lParam); return TRUE; case WM_CTLCOLORLISTBOX: - { - if (tbrush) DeleteObject(tbrush); - - return (BOOL)(tbrush = CreateSolidBrush(bk_col)); - } + if (tbrush) + DeleteObject(tbrush); + return (INT_PTR)(tbrush = CreateSolidBrush(bk_col)); case WM_ERASEBKGND: - { - RECT r; GetClientRect(hwnd, &r); - if (!tbrush) tbrush = CreateSolidBrush(bk_col); + if (!tbrush) + tbrush = CreateSolidBrush(bk_col); FillRect((HDC)wParam, &r, tbrush); - } - return TRUE; + return TRUE; case WM_CONTEXTMENU: - { - context_point = lParam; - context_point_valid = true; - InvalidateRect(list_hwnd, 0, FALSE); - HMENU menu = LoadMenu(hInst, MAKEINTRESOURCE(IDR_MENU1)), - submenu = GetSubMenu(menu, 0); - - POINT pt = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) }; - - RECT r; - GetClientRect(list_hwnd, &r); - ScreenToClient(list_hwnd, &pt); - - DWORD item = SendMessage(list_hwnd, LB_ITEMFROMPOINT, 0, MAKELPARAM(pt.x, pt.y)); - bool found = false; - if (HIWORD(item) == 0) { - int count = LOWORD(item); - mir_cslock lck(data_list_cs); - if (count >= 0 && count < (int)data_list.size()) { - itemData = *(PINGADDRESS *)SendMessage(list_hwnd, LB_GETITEMDATA, count, 0); - found = true; + { + context_point = lParam; + context_point_valid = true; + InvalidateRect(list_hwnd, 0, FALSE); + HMENU menu = LoadMenu(hInst, MAKEINTRESOURCE(IDR_MENU1)), + submenu = GetSubMenu(menu, 0); + + POINT pt = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) }; + + GetClientRect(list_hwnd, &r); + ScreenToClient(list_hwnd, &pt); + + PINGADDRESS itemData; + DWORD item = SendMessage(list_hwnd, LB_ITEMFROMPOINT, 0, MAKELPARAM(pt.x, pt.y)); + bool found = false; + if (HIWORD(item) == 0) { + int count = LOWORD(item); + mir_cslock lck(data_list_cs); + if (count >= 0 && count < (int)data_list.size()) { + itemData = *(PINGADDRESS *)SendMessage(list_hwnd, LB_GETITEMDATA, count, 0); + + found = true; + EnableMenuItem(submenu, ID_MENU_GRAPH, MF_BYCOMMAND | MF_ENABLED); + EnableMenuItem(submenu, ID_MENU_EDIT, MF_BYCOMMAND | MF_ENABLED); + EnableMenuItem(submenu, ID_MENU_TOGGLE, MF_BYCOMMAND | MF_ENABLED); + if (itemData.status == PS_DISABLED) + ModifyMenu(submenu, ID_MENU_TOGGLE, MF_BYCOMMAND | MF_STRING, ID_MENU_TOGGLE, TranslateT("Enable")); + else + ModifyMenu(submenu, ID_MENU_TOGGLE, MF_BYCOMMAND | MF_STRING, ID_MENU_TOGGLE, TranslateT("Disable")); + } } - } - if (found) { - EnableMenuItem(submenu, ID_MENU_GRAPH, MF_BYCOMMAND | MF_ENABLED); - EnableMenuItem(submenu, ID_MENU_EDIT, MF_BYCOMMAND | MF_ENABLED); - EnableMenuItem(submenu, ID_MENU_TOGGLE, MF_BYCOMMAND | MF_ENABLED); - if (itemData.status == PS_DISABLED) { - ModifyMenu(submenu, ID_MENU_TOGGLE, MF_BYCOMMAND | MF_STRING, ID_MENU_TOGGLE, TranslateT("Enable")); + if (!found) { + EnableMenuItem(submenu, ID_MENU_GRAPH, MF_BYCOMMAND | MF_GRAYED); + EnableMenuItem(submenu, ID_MENU_EDIT, MF_BYCOMMAND | MF_GRAYED); + EnableMenuItem(submenu, ID_MENU_TOGGLE, MF_BYCOMMAND | MF_GRAYED); } - else { - ModifyMenu(submenu, ID_MENU_TOGGLE, MF_BYCOMMAND | MF_STRING, ID_MENU_TOGGLE, TranslateT("Disable")); - } - } - else { - EnableMenuItem(submenu, ID_MENU_GRAPH, MF_BYCOMMAND | MF_GRAYED); - EnableMenuItem(submenu, ID_MENU_EDIT, MF_BYCOMMAND | MF_GRAYED); - EnableMenuItem(submenu, ID_MENU_TOGGLE, MF_BYCOMMAND | MF_GRAYED); - } - TranslateMenu(submenu); + TranslateMenu(submenu); + + GetCursorPos(&pt); + BOOL ret = TrackPopupMenu(submenu, TPM_TOPALIGN | TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_RETURNCMD, pt.x, pt.y, 0, hwnd, NULL); + DestroyMenu(menu); + if (ret) + SendMessage(hwnd, WM_COMMAND, ret, 0); - //ClientToScreen(list_hwnd, &pt); - GetCursorPos(&pt); - BOOL ret = TrackPopupMenu(submenu, TPM_TOPALIGN | TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_RETURNCMD, pt.x, pt.y, 0, hwnd, NULL); - DestroyMenu(menu); - if (ret) { - SendMessage(hwnd, WM_COMMAND, ret, 0); + context_point_valid = false; + InvalidateRect(list_hwnd, 0, FALSE); } - context_point_valid = false; - InvalidateRect(list_hwnd, 0, FALSE); - } - return TRUE; + return TRUE; case WM_SYSCOLORCHANGE: SendMessage(list_hwnd, msg, wParam, lParam); @@ -509,18 +482,17 @@ LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar (WS_VISIBLE | WS_CHILD | LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_NOTIFY) & ~WS_BORDER, 0, 0, 0, 0, hwnd, NULL, hInst, 0); - if (db_get_b(NULL, "CList", "Transparent", 0)) - { + if (db_get_b(NULL, "CList", "Transparent", 0)) { if (ServiceExists(MS_CLIST_FRAMES_ADDFRAME)) { } else { -#ifdef WS_EX_LAYERED + #ifdef WS_EX_LAYERED SetWindowLongPtr(hwnd, GWL_EXSTYLE, GetWindowLongPtr(hwnd, GWL_EXSTYLE) | WS_EX_LAYERED); -#endif -#ifdef LWA_ALPHA + #endif + #ifdef LWA_ALPHA SetLayeredWindowAttributes(hwnd, RGB(0, 0, 0), (BYTE)db_get_b(NULL, "CList", "Alpha", SETTING_ALPHA_DEFAULT), LWA_ALPHA); -#endif + #endif } } @@ -541,9 +513,9 @@ LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar else { if (db_get_b(NULL, "CList", "Transparent", SETTING_TRANSPARENT_DEFAULT)) { KillTimer(hwnd, TM_AUTOALPHA); -#ifdef LWA_ALPHA + #ifdef LWA_ALPHA SetLayeredWindowAttributes(hwnd, RGB(0, 0, 0), (BYTE)db_get_b(NULL, "CList", "Alpha", SETTING_ALPHA_DEFAULT), LWA_ALPHA); -#endif + #endif transparentFocus = 1; } } @@ -552,9 +524,9 @@ LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar case WM_SETCURSOR: if (db_get_b(NULL, "CList", "Transparent", SETTING_TRANSPARENT_DEFAULT)) { if (!transparentFocus && GetForegroundWindow() != hwnd) { -#ifdef LWA_ALPHA + #ifdef LWA_ALPHA SetLayeredWindowAttributes(hwnd, RGB(0, 0, 0), (BYTE)db_get_b(NULL, "CList", "Alpha", SETTING_ALPHA_DEFAULT), LWA_ALPHA); -#endif + #endif transparentFocus = 1; SetTimer(hwnd, TM_AUTOALPHA, 250, NULL); } @@ -562,8 +534,7 @@ LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar return DefWindowProc(hwnd, msg, wParam, lParam); case WM_TIMER: - if ((int)wParam == TM_AUTOALPHA) - { + if ((int)wParam == TM_AUTOALPHA) { int inwnd; if (GetForegroundWindow() == hwnd) { @@ -578,13 +549,12 @@ LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar hwndPt = WindowFromPoint(pt); inwnd = (hwndPt == hwnd || GetParent(hwndPt) == hwnd); } - if (inwnd != transparentFocus) - { //change + if (inwnd != transparentFocus) { //change transparentFocus = inwnd; -#ifdef LWA_ALPHA + #ifdef LWA_ALPHA if (transparentFocus) SetLayeredWindowAttributes(hwnd, RGB(0, 0, 0), (BYTE)db_get_b(NULL, "CList", "Alpha", SETTING_ALPHA_DEFAULT), LWA_ALPHA); else SetLayeredWindowAttributes(hwnd, RGB(0, 0, 0), (BYTE)db_get_b(NULL, "CList", "AutoAlpha", SETTING_AUTOALPHA_DEFAULT), LWA_ALPHA); -#endif + #endif } if (!transparentFocus) KillTimer(hwnd, TM_AUTOALPHA); return TRUE; @@ -592,135 +562,103 @@ LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar return FALSE; case WM_SHOWWINDOW: - { - static int noRecurse = 0; - if (lParam) break; - if (noRecurse) break; - if (!db_get_b(NULL, "CLUI", "FadeInOut", 0)) - break; -#ifdef WS_EX_LAYERED - if (GetWindowLongPtr(hwnd, GWL_EXSTYLE)&WS_EX_LAYERED) { - DWORD thisTick, startTick; - int sourceAlpha, destAlpha; - if (wParam) { - sourceAlpha = 0; - destAlpha = (BYTE)db_get_b(NULL, "CList", "Alpha", SETTING_AUTOALPHA_DEFAULT); -#ifdef LWA_ALPHA - SetLayeredWindowAttributes(hwnd, RGB(0, 0, 0), 0, LWA_ALPHA); -#endif - noRecurse = 1; - ShowWindow(hwnd, SW_SHOW); - noRecurse = 0; - } - else { - sourceAlpha = (BYTE)db_get_b(NULL, "CList", "Alpha", SETTING_AUTOALPHA_DEFAULT); - destAlpha = 0; - } - for (startTick = GetTickCount();;) { - thisTick = GetTickCount(); - if (thisTick >= startTick + 200) break; -#ifdef LWA_ALPHA - SetLayeredWindowAttributes(hwnd, RGB(0, 0, 0), (BYTE)(sourceAlpha + (destAlpha - sourceAlpha)*(int)(thisTick - startTick) / 200), LWA_ALPHA); -#endif + { + static int noRecurse = 0; + if (lParam) break; + if (noRecurse) break; + if (!db_get_b(NULL, "CLUI", "FadeInOut", 0)) + break; + #ifdef WS_EX_LAYERED + if (GetWindowLongPtr(hwnd, GWL_EXSTYLE)&WS_EX_LAYERED) { + DWORD thisTick, startTick; + int sourceAlpha, destAlpha; + if (wParam) { + sourceAlpha = 0; + destAlpha = (BYTE)db_get_b(NULL, "CList", "Alpha", SETTING_AUTOALPHA_DEFAULT); + #ifdef LWA_ALPHA + SetLayeredWindowAttributes(hwnd, RGB(0, 0, 0), 0, LWA_ALPHA); + #endif + noRecurse = 1; + ShowWindow(hwnd, SW_SHOW); + noRecurse = 0; + } + else { + sourceAlpha = (BYTE)db_get_b(NULL, "CList", "Alpha", SETTING_AUTOALPHA_DEFAULT); + destAlpha = 0; + } + for (startTick = GetTickCount();;) { + thisTick = GetTickCount(); + if (thisTick >= startTick + 200) break; + #ifdef LWA_ALPHA + SetLayeredWindowAttributes(hwnd, RGB(0, 0, 0), (BYTE)(sourceAlpha + (destAlpha - sourceAlpha)*(int)(thisTick - startTick) / 200), LWA_ALPHA); + #endif + } + #ifdef LWA_ALPHA + SetLayeredWindowAttributes(hwnd, RGB(0, 0, 0), (BYTE)destAlpha, LWA_ALPHA); + #endif } -#ifdef LWA_ALPHA - SetLayeredWindowAttributes(hwnd, RGB(0, 0, 0), (BYTE)destAlpha, LWA_ALPHA); -#endif + else AnimateWindow(hwnd, 200, AW_BLEND | (wParam ? 0 : AW_HIDE)); + #endif } - else { - // if(wParam) SetForegroundWindow(hwnd); - AnimateWindow(hwnd, 200, AW_BLEND | (wParam ? 0 : AW_HIDE)); - //SetWindowPos(label,0,0,0,0,0,SWP_NOZORDER|SWP_NOMOVE|SWP_NOSIZE|SWP_FRAMECHANGED); - } -#endif - //int res = DefWindowProc(hwnd, msg, wParam, lParam); - //return res; - //break; - //return FALSE; //break; return DefWindowProc(hwnd, msg, wParam, lParam); - } - - /* - case WM_PAINT: - { - paintDC = BeginPaint(hwnd, &paintStruct); // - //SelectObject(paintDC,TitleBarFont); - //SetBkMode(paintDC,TRANSPARENT); - - //paintStruct.fErase=TRUE; - //color=RGB(1,1,1); - //brush=CreateSolidBrush(RGB(200,20,20)); - - //GetClientRect(hwnd,&rect); - //FillRect(paintDC,&rect,brush); - //TextOut(paintDC,4,4,"cl1 Bottom window",sizeof("cl1 Bottom window")-1); - //DeleteObject(brush); - EndPaint(hwnd, &paintStruct); // - - }; - return TRUE; - */ case WM_COMMAND: - //CreateServiceFunction("PingPlug/DisableAll", PingPlugDisableAll); - //CreateServiceFunction("PingPlug/EnableAll", PingPlugEnableAll); switch (LOWORD(wParam)) { case ID_MENU_GRAPH: if (context_point_valid) { - WORD x = LOWORD(context_point), - y = HIWORD(context_point); - RECT r; + WORD x = LOWORD(context_point), y = HIWORD(context_point); GetWindowRect(list_hwnd, &r); DWORD item = SendMessage(list_hwnd, LB_ITEMFROMPOINT, 0, MAKELPARAM(x - r.left, y - r.top)); if (HIWORD(item) == 0) { int count = LOWORD(item); bool found = false; - mir_cslock lck(data_list_cs); - if (count >= 0 && count < (int)data_list.size()) { - itemData = *(PINGADDRESS *)SendMessage(list_hwnd, LB_GETITEMDATA, count, 0); - found = true; + PINGADDRESS itemData; + { + mir_cslock lck(data_list_cs); + if (count >= 0 && count < (int)data_list.size()) { + itemData = *(PINGADDRESS *)SendMessage(list_hwnd, LB_GETITEMDATA, count, 0); + found = true; + } } if (found) CallService(PLUG "/ShowGraph", (WPARAM)itemData.item_id, (LPARAM)itemData.pszLabel); } } return TRUE; + case ID_MENU_TOGGLE: if (context_point_valid) { - WORD x = LOWORD(context_point), - y = HIWORD(context_point); - RECT r; + WORD x = LOWORD(context_point), y = HIWORD(context_point); GetWindowRect(list_hwnd, &r); DWORD item = SendMessage(list_hwnd, LB_ITEMFROMPOINT, 0, MAKELPARAM(x - r.left, y - r.top)); if (HIWORD(item) == 0) { int count = LOWORD(item); - bool found = false; + mir_cslock lck(data_list_cs); if (count >= 0 && count < (int)data_list.size()) { - itemData = *(PINGADDRESS *)SendMessage(list_hwnd, LB_GETITEMDATA, count, 0); - found = true; - } - if (found) + PINGADDRESS itemData = *(PINGADDRESS *)SendMessage(list_hwnd, LB_GETITEMDATA, count, 0); CallService(PLUG "/ToggleEnabled", (WPARAM)itemData.item_id, 0); + } } } return TRUE; + case ID_MENU_EDIT: if (context_point_valid) { - WORD x = LOWORD(context_point), - y = HIWORD(context_point); - RECT r; + WORD x = LOWORD(context_point), y = HIWORD(context_point); GetWindowRect(list_hwnd, &r); DWORD item = SendMessage(list_hwnd, LB_ITEMFROMPOINT, 0, MAKELPARAM(x - r.left, y - r.top)); PINGADDRESS *temp = 0; if (HIWORD(item) == 0) { int count = LOWORD(item); - mir_cslock lck(data_list_cs); - if (count >= 0 && count < (int)data_list.size()) { - temp = (PINGADDRESS *)SendMessage(list_hwnd, LB_GETITEMDATA, count, 0); + { + mir_cslock lck(data_list_cs); + if (count >= 0 && count < (int)data_list.size()) { + temp = (PINGADDRESS *)SendMessage(list_hwnd, LB_GETITEMDATA, count, 0); + } } if (temp) { - itemData = *temp; + PINGADDRESS itemData = *temp; if (Edit(hwnd, itemData)) { mir_cslock lck(data_list_cs); *temp = itemData; @@ -730,42 +668,46 @@ LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar } } return TRUE; + case ID_MENU_DISABLEALLPINGS: CallService(PLUG "/DisableAll", 0, 0); return TRUE; + case ID_MENU_ENABLEALLPINGS: CallService(PLUG "/EnableAll", 0, 0); return TRUE; + case ID_MENU_OPTIONS: - { - OPENOPTIONSDIALOG oop = { 0 }; - oop.cbSize = sizeof(oop); - oop.pszGroup = "Network"; - oop.pszPage = "Ping"; - oop.pszTab = "Settings"; - Options_Open(&oop); - } - return TRUE; + { + OPENOPTIONSDIALOG oop = { 0 }; + oop.cbSize = sizeof(oop); + oop.pszGroup = "Network"; + oop.pszPage = "Ping"; + oop.pszTab = "Settings"; + Options_Open(&oop); + } + return TRUE; + case ID_MENU_DESTINATIONS: - { - OPENOPTIONSDIALOG oop = { 0 }; - oop.cbSize = sizeof(oop); - oop.pszGroup = "Network"; - oop.pszPage = "Ping"; - oop.pszTab = "Hosts"; - Options_Open(&oop); - } - return TRUE; + { + OPENOPTIONSDIALOG oop = { 0 }; + oop.cbSize = sizeof(oop); + oop.pszGroup = "Network"; + oop.pszPage = "Ping"; + oop.pszTab = "Hosts"; + Options_Open(&oop); + } + return TRUE; } + if (HIWORD(wParam) == LBN_DBLCLK) { sel = SendMessage(list_hwnd, LB_GETCURSEL, 0, 0); if (sel != LB_ERR) { lp = SendMessage(list_hwnd, LB_GETITEMDATA, sel, 0); if (lp != LB_ERR) { - PINGADDRESS *pItemData = (PINGADDRESS *)lp; - mir_cslock lck(data_list_cs); + PINGADDRESS *pItemData = (PINGADDRESS *)lp; if (pItemData) { DWORD item_id = pItemData->item_id; @@ -778,7 +720,6 @@ LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar mir_sntprintf(buf, _T("%s - %s"), pItemData->pszLabel, (wake ? TranslateT("enabled") : TranslateT("double clicked"))); CallService(PLUG "/Log", (WPARAM)buf, 0); } - } } } @@ -789,26 +730,23 @@ LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar case WM_MOVE: // needed for docked frames in clist_mw (not needed in clist_modern) if (FrameIsFloating()) break; - case WM_SIZE: - { - //PostMessage(label, WM_SIZE, wParam, lParam); + case WM_SIZE: GetClientRect(hwnd, &rect); - //SetWindowPos(list_hwnd, 0, rect.left, rect.top, rect.right-rect.left, rect.bottom-rect.top, SWP_NOZORDER); - //InvalidateRect(list_hwnd, &rect, FALSE); - int winheight = rect.bottom - rect.top, - itemheight = SendMessage(list_hwnd, LB_GETITEMHEIGHT, 0, 0), - count = SendMessage(list_hwnd, LB_GETCOUNT, 0, 0), -#ifdef min - height = min(winheight - winheight % itemheight, itemheight * count); -#else - height = std::min(winheight - winheight % itemheight, itemheight * count); -#endif - SetWindowPos(list_hwnd, 0, rect.left, rect.top, rect.right - rect.left, height, SWP_NOZORDER); - InvalidateRect(list_hwnd, 0, FALSE); - } - InvalidateRect(hwnd, 0, TRUE); - return DefWindowProc(hwnd, msg, wParam, lParam); + { + int winheight = rect.bottom - rect.top, + itemheight = SendMessage(list_hwnd, LB_GETITEMHEIGHT, 0, 0), + count = SendMessage(list_hwnd, LB_GETCOUNT, 0, 0), + #ifdef min + height = min(winheight - winheight % itemheight, itemheight * count); + #else + height = std::min(winheight - winheight % itemheight, itemheight * count); + #endif + SetWindowPos(list_hwnd, 0, rect.left, rect.top, rect.right - rect.left, height, SWP_NOZORDER); + InvalidateRect(list_hwnd, 0, FALSE); + } + InvalidateRect(hwnd, 0, TRUE); + return DefWindowProc(hwnd, msg, wParam, lParam); case WM_DESTROY: if (!ServiceExists(MS_CLIST_FRAMES_ADDFRAME)) { @@ -829,37 +767,7 @@ LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar return 0; } return DefWindowProc(hwnd, msg, wParam, lParam); - /* - case WM_POWERBROADCAST: - - if(options.logging) { - std::ostringstream oss; - switch(wParam) { - case PBT_APMSUSPEND: - CallService("PingPlug/Log", (WPARAM)"system suspend", 0); - break; - case PBT_APMRESUMESUSPEND: - oss << "system resume"; - if(lParam == PBTF_APMRESUMEFROMFAILURE) - oss << " [suspend failure!]"; - CallService("PingPlug/Log", (WPARAM)oss.str().c_str(), 0); - break; - case PBT_APMRESUMEAUTOMATIC: - oss << "system resume (automatic)"; - if(lParam == PBTF_APMRESUMEFROMFAILURE) - oss << " [suspend failure!]"; - CallService("PingPlug/Log", (WPARAM)oss.str().c_str(), 0); - break; - case PBT_APMRESUMECRITICAL: - oss << "system resume (critical)"; - if(lParam == PBTF_APMRESUMEFROMFAILURE) - oss << " [suspend failure!]"; - CallService("PingPlug/Log", (WPARAM)oss.str().c_str(), 0); - break; - } - } - break; - */ + default: return DefWindowProc(hwnd, msg, wParam, lParam); @@ -868,7 +776,8 @@ LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar return(TRUE); }; -int ReloadFont(WPARAM, LPARAM) { +int ReloadFont(WPARAM, LPARAM) +{ if (hFont) DeleteObject(hFont); LOGFONT log_font; @@ -882,13 +791,15 @@ int ReloadFont(WPARAM, LPARAM) { return 0; } -int RefreshWindow(WPARAM, LPARAM) { +int RefreshWindow(WPARAM, LPARAM) +{ InvalidateRect(list_hwnd, 0, TRUE); InvalidateRect(hpwnd, 0, TRUE); return 0; } -void UpdateFrame() { +void UpdateFrame() +{ if (IsWindowVisible(hwnd_clist) != IsWindowVisible(hpwnd)) ShowWindow(hpwnd, IsWindowVisible(hwnd_clist) ? SW_SHOW : SW_HIDE); @@ -916,8 +827,7 @@ LRESULT APIENTRY ClistSubclassProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM l if (uMsg == WM_NCCALCSIZE) { // possible window style change if (GetWindowLongPtr(hwnd_clist, GWL_STYLE) != GetWindowLong(hpwnd, GWL_STYLE) - || GetWindowLongPtr(hwnd_clist, GWL_STYLE) != GetWindowLongPtr(hpwnd, GWL_STYLE)) - { + || GetWindowLongPtr(hwnd_clist, GWL_STYLE) != GetWindowLongPtr(hpwnd, GWL_STYLE)) { SetWindowLongPtr(hpwnd, GWL_STYLE, GetWindowLongPtr(hwnd_clist, GWL_STYLE)); SetWindowLongPtr(hpwnd, GWL_EXSTYLE, GetWindowLongPtr(hwnd_clist, GWL_EXSTYLE)); SetWindowPos(hpwnd, 0, 0, 0, 0, 0, SWP_FRAMECHANGED | SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOSIZE); @@ -1035,8 +945,9 @@ void InitList() start_ping_thread(); } -void DeinitList() { +void DeinitList() +{ DestroyWindow(hpwnd); stop_ping_thread(); if (hFont) DeleteObject(hFont); -} \ No newline at end of file +} -- cgit v1.2.3