summaryrefslogtreecommitdiff
path: root/plugins/Ping
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2015-08-16 23:08:55 +0000
committerGeorge Hazan <george.hazan@gmail.com>2015-08-16 23:08:55 +0000
commit0c060267ccea726d5c2c2fd1e45d1f16965fb01e (patch)
treeef15e5533dbda23f63e423056b9d746e5d643ae3 /plugins/Ping
parentaf58213e6005cbf4b9ce8be2ad66eb6eae3df4a9 (diff)
code cleaning
git-svn-id: http://svn.miranda-ng.org/main/trunk@14975 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/Ping')
-rw-r--r--plugins/Ping/src/collection.h272
-rw-r--r--plugins/Ping/src/pingthread.cpp635
2 files changed, 443 insertions, 464 deletions
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 T> class Collection {
+template<class T> class Collection
+{
protected:
unsigned long count;
public:
@@ -11,7 +12,8 @@ public:
const unsigned long size() const { return count; }
};
-template<class T> class Node {
+template<class T> class Node
+{
public:
T val;
@@ -19,24 +21,28 @@ public:
virtual ~Node() {}
};
-template<class T> class ListNode : public Node < T > {
+template<class T> class ListNode : public Node < T >
+{
public:
ListNode<T> *next, *prev;
ListNode(const T &v) : Node<T>(v), next(0), prev(0) {}
- virtual ~ListNode() {
+ virtual ~ListNode()
+ {
if (next) next->prev = prev;
if (prev) prev->next = next;
}
};
-template<class T> class LinkedList : public Collection < T > {
+template<class T> class LinkedList : public Collection < T >
+{
protected:
ListNode<T> *head, *tail;
public:
- class Iterator {
- friend class LinkedList < T > ;
+ class Iterator
+ {
+ friend class LinkedList < T >;
protected:
ListNode<T> *n;
Iterator(ListNode<T> *start) : n(start) {}
@@ -50,7 +56,8 @@ public:
};
LinkedList() : Collection<T>(), head(0), tail(0) {};
- LinkedList(const LinkedList<T> &other) : Collection<T>(), head(0), tail(0) {
+ LinkedList(const LinkedList<T> &other) : Collection<T>(), 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<T> *n = new ListNode<T>(val);
n->next = head;
if (head) head->prev = n;
@@ -87,7 +95,8 @@ public:
Collection<T>::count++;
}
- virtual void add(const T &val) {
+ virtual void add(const T &val)
+ {
ListNode<T> *n = new ListNode<T>(val);
n->prev = tail;
if (tail) tail->next = n;
@@ -96,7 +105,8 @@ public:
Collection<T>::count++;
}
- virtual const bool remove(const T &val) {
+ virtual const bool remove(const T &val)
+ {
ListNode<T> *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<T> *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<T> *n = head;
@@ -155,15 +169,17 @@ public:
}
};
-template<class T> class DynamicArray : public Collection < T > {
+template<class T> 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<T>(), ar(0), initial(init), limit(init), increment(inc) {
+ DynamicArray(unsigned long init = 0, unsigned long inc = 1) : Collection<T>(), 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<T>::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<T>::count, 0); }
- virtual void add(const T &val) {
+ virtual void add(const T &val)
+ {
if (Collection<T>::count == limit) {
limit += increment;
ar = (T *)realloc(ar, limit * sizeof(T));
@@ -205,13 +224,15 @@ public:
ar[Collection<T>::count++] = val;
}
- virtual void add_all(DynamicArray<T> &other) {
+ virtual void add_all(DynamicArray<T> &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<T>::count; i++) {
if (ar[i] == val) {
memmove(ar + i, ar + i + 1, (Collection<T>::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<T>::count) return false;
memmove(ar + index, ar + index + 1, (Collection<T>::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<T>::count) return false;
if (Collection<T>::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<T>::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<T>::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<T>::count) {
val = ar[Collection<T>::count - 1];
remove(Collection<T>::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 T> class SortedDynamicArray : public DynamicArray < T > {
+template<class T> class SortedDynamicArray : public DynamicArray < T >
+{
public:
SortedDynamicArray(unsigned long init = 0, unsigned long inc = 1) : DynamicArray<T>(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<T>::count - 1;
- while (high < Collection<T>::count && low <= high)
- {
+ while (high < Collection<T>::count && low <= high) {
unsigned long i = (low + high) / 2;
- if (DynamicArray<T>::ar[i] == val)
- {
+ if (DynamicArray<T>::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 T> class TreeNode : public Node < T > {
+template<class T> class TreeNode : public Node < T >
+{
public:
TreeNode<T> *parent, *left, *right;
TreeNode(const T &v, TreeNode<T> *par) : Node<T>(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 T, class N = TreeNode<T> > class BinaryTree : public Collection < T > {
+template<class T, class N = TreeNode<T> > 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<T>::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<EvalNode> 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<T>(), root(0) {};
- BinaryTree(BinaryTree<T> &other) : Collection<T>(), root(0) {
+ BinaryTree(BinaryTree<T> &other) : Collection<T>(), root(0)
+ {
for (Iterator i = other.begin(); i != pl.end(); ++i)
add(i.val());
}
virtual ~BinaryTree() { clear(); }
- BinaryTree &operator=(BinaryTree<T> &other) {
+ BinaryTree &operator=(BinaryTree<T> &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<T>::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 T> class ColouredTreeNode : public Node < T > {
+template<class T> class ColouredTreeNode : public Node < T >
+{
public:
ColouredTreeNode<T> *parent, *left, *right;
char color;
ColouredTreeNode(const T &v, ColouredTreeNode<T> *par) : Node<T>(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 T, class N = ColouredTreeNode<T> > class RedBlackTree : public BinaryTree < T, N > {
+template<class T, class N = ColouredTreeNode<T> > 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<T, N>::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<T, N>::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<T, N>::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<T>::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<T, N>::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 A, class B> class Pair {
+template<class A, class B> class Pair
+{
public:
A first;
B second;
@@ -796,10 +862,12 @@ public:
};
//template<class A, class B, class N = TreeNode<Pair<A, B> > > class Map: public BinaryTree< Pair< A, B >, N > {
-template<class A, class B, class N = ColouredTreeNode<Pair<A, B> > > class Map : public RedBlackTree < Pair< A, B >, N > {
+template<class A, class B, class N = ColouredTreeNode<Pair<A, B> > > 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<A, B>, N >() {}
virtual ~Map() {}
- void put(A &key, B &value) {
+ void put(A &key, B &value)
+ {
add(Pair<A, B>(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("<all>")) == 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
+}