Changeset 5973 for branches/newosd
- Timestamp:
- 12/31/07 20:03:04 (11 months ago)
- Location:
- branches/newosd/src
- Files:
-
- 3 modified
Legend:
- Unmodified
- Added
- Removed
-
branches/newosd/src/iface.cpp
r5968 r5973 4 4 5 5 #include <licq_icqd.h> 6 #include <licq_translate.h> 6 7 7 8 Iface::Iface() … … 48 49 void Iface::processSignal(CICQSignal* sig) 49 50 { 50 if (setText(sig->Id(), sig->PPID())) 51 aosd_flash(aosd, 0, 1000, 150); 51 clearLayout(); 52 53 switch (sig->Signal()) 54 { 55 case SIGNAL_UPDATExUSER: 56 { 57 if (!checkDisabledTimer() || 58 !checkOwner(sig->Id(), sig->PPID())) 59 break; 60 61 ICQUser* u = checkUser(sig->Id(), sig->PPID()); 62 if (u == NULL) 63 break; 64 65 string msg = ""; 66 67 switch (sig->SubSignal()) 68 { 69 case USER_STATUS: 70 msg = u->GetAlias(); 71 msg += " changed status to: "; 72 msg += u->StatusStr(); 73 if (sig->Argument() > 0) 74 msg += " [logged on]"; 75 break; 76 77 case USER_EVENTS: 78 break; 79 80 default: 81 break; 82 } 83 84 gUserManager.DropUser(u); 85 pango_layout_set_text_aosd(trd.lay, const_cast<char*>(msg.c_str())); 86 displayLayout(); 87 } 88 break; 89 90 case SIGNAL_LOGON: 91 break; 92 93 case SIGNAL_LOGOFF: 94 break; 95 96 default: 97 break; 98 } 52 99 } 53 100 54 bool Iface::setText(char* id, unsigned long ppid)101 void Iface::clearLayout() 55 102 { 56 int tag_width; 57 unsigned width, height; 103 pango_layout_set_text(trd.lay, "", -1); 104 pango_layout_set_indent(trd.lay, 0); 105 } 58 106 107 ICQUser* Iface::checkUser(char* id, unsigned long ppid) 108 { 59 109 if (id == NULL) 110 return NULL; 111 112 ICQUser* u = gUserManager.FetchUser(id, ppid, LOCK_R); 113 114 if (u == NULL) 115 return NULL; 116 117 if (u->IgnoreList()) 118 { 119 gUserManager.DropUser(u); 120 return NULL; 121 } 122 123 return u; 124 } 125 126 bool Iface::checkOwner(char* id, unsigned long ppid) 127 { 128 ICQOwner* o = gUserManager.FetchOwner(ppid, LOCK_R); 129 130 if (o == NULL) 60 131 return false; 61 132 62 ICQUser* u = gUserManager.FetchUser(id, ppid, LOCK_R); 63 if (u == NULL) 64 return false; 133 bool ret = true; 65 134 135 do 136 { 137 if (strcmp(id, o->IdString()) == 0) 138 { 139 ret = false; 140 break; 141 } 142 143 // TODO status check 144 } while (false); 145 146 gUserManager.DropOwner(ppid); 147 return ret; 148 } 149 150 bool Iface::checkDisabledTimer() 151 { 152 return true; 153 } 154 155 const char* Iface::setLayoutTag(ICQUser* u) 156 { 66 157 string str = u->GetAlias(); 67 gUserManager.DropUser(u);158 str += (true && u->Secure()) ? " (S)" : ""; 68 159 str += ": "; 160 161 int tag_width = 0; 69 162 70 163 pango_layout_set_text(trd.lay, str.c_str(), -1); … … 72 165 pango_layout_set_indent(trd.lay, -tag_width); 73 166 74 str += "received\nthe\nsignal"; 167 return str.c_str(); 168 } 75 169 76 pango_layout_set_text_aosd(trd.lay, const_cast<char*>(str.c_str())); 170 void Iface::displayLayout() 171 { 172 if (strlen(pango_layout_get_text(trd.lay)) == 0) 173 return; 174 175 unsigned width, height; 176 77 177 pango_layout_get_size_aosd(trd.lay, &width, &height, &trd.lbearing); 78 178 … … 83 183 80, 80); 84 184 85 return true;185 aosd_flash(aosd, 0, 1000, 150); 86 186 } 87 187 -
branches/newosd/src/iface.h
r5965 r5973 3 3 4 4 class CICQSignal; 5 class ICQUser; 5 6 6 7 extern "C" … … 23 24 TextRenderData trd; 24 25 25 bool setText(char* id, unsigned long ppid); 26 ICQUser* checkUser(char* id, unsigned long ppid); 27 bool checkOwner(char* id, unsigned long ppid); 28 bool checkDisabledTimer(); 29 30 const char* setLayoutTag(ICQUser* u); 31 void clearLayout(); 32 void displayLayout(); 26 33 }; 27 34 -
branches/newosd/src/plugin.cpp
r5967 r5973 88 88 break; 89 89 90 case 'E': 91 { 92 ICQEvent* ev = daemon->PopPluginEvent(); 93 if (ev != NULL) 94 delete ev; 95 } 96 break; 97 90 98 case 'X': 91 99 finita = true;
