Juan F. Codagnone wrote:

>licq_interests.diff is a first attemp to check for the Users 's personal 
>interests 
>i know that the right thing (...) would be to store the array of interests 
>in this first patch my aproach is to "render" the string.
>
>qt_interests.diff is my aproach to add it to the Users Info Dialog.. Note 
>that it display de info in About dialog. (and i don't know yet why)
>(i am not a c++ programer)
>
>Feel free to test, fix, and comment.
>
>The main thing. Store the array as 
>Eg:
>interests_n = 3
>interests_sz_1 = C, AWK ...
>Interests_cat_1 = 68000
>....
>?
>So...do you think i should change this code to save the array?
>
>Regards,
>       Juan.
>
>  
>
>------------------------------------------------------------------------
>
>? licqd_personal.diff
>Index: include/licq_events.h
>===================================================================
>RCS file: /cvsroot/licq/licq/include/licq_events.h,v
>retrieving revision 1.13
>diff -u -1 -b -p -r1.13 licq_events.h
>--- include/licq_events.h      1 Dec 2001 15:50:40 -0000       1.13
>+++ include/licq_events.h      16 Apr 2002 22:04:06 -0000
>@@ -292,2 +292,3 @@ const unsigned long USER_ABOUT          
> const unsigned long USER_SECURITY               = 9;
>+const unsigned long USER_INTERESTS            = 10;
> 
>Index: include/licq_user.h
>===================================================================
>RCS file: /cvsroot/licq/licq/include/licq_user.h,v
>retrieving revision 1.23
>diff -u -1 -b -p -r1.23 licq_user.h
>--- include/licq_user.h        20 Mar 2002 06:35:46 -0000      1.23
>+++ include/licq_user.h        16 Apr 2002 22:04:06 -0000
>@@ -163,2 +163,3 @@ public:
>   void SaveAboutInfo();
>+  void SaveInterestsInfo();
>   void SaveExtInfo();
>@@ -212,2 +213,3 @@ public:
>   char *GetAbout()                      { return m_szAbout; }
>+  char *GetInterests()                        { return m_szInterests; }
> 
>@@ -294,3 +296,4 @@ public:
>   void SetAbout(const char *n)        {  SetString(&m_szAbout, n);  SaveAboutInfo(); 
> }
>-
>+  // Personal Interets Info
>+  void SetInterests( const char *n)   {  SetString(&m_szInterests,n); 
>SaveInterestsInfo(); }
>   // Licq Info
>@@ -416,2 +419,3 @@ protected:
>   void LoadAboutInfo();
>+  void LoadInterestsInfo();
>   void LoadLicqInfo();
>@@ -505,2 +509,4 @@ protected:
>   char *m_szAbout;
>+  // Personal Interests
>+  char *m_szInterests;
> 
>Index: src/icqd-srv.cpp
>===================================================================
>RCS file: /cvsroot/licq/licq/src/icqd-srv.cpp,v
>retrieving revision 1.29
>diff -u -1 -b -p -r1.29 icqd-srv.cpp
>--- src/icqd-srv.cpp   9 Apr 2002 20:58:59 -0000       1.29
>+++ src/icqd-srv.cpp   16 Apr 2002 22:04:07 -0000
>@@ -1125,2 +1125,24 @@ void CICQDaemon::ProcessLocationFam(cons
> 
>+static const char * info_category2str( unsigned short cat )
>+{     struct _table
>+      {       unsigned short cat ;
>+              const  char * str ;
>+      } ;
>+      static struct _table t[] = 
>+      {
>+              {       0x0068, "Computer" }
>+      };
>+      unsigned i;
>+      const char *ret = "unknown";
>+      
>+      for( i=0 ; i < sizeof(t)/sizeof(*t) ; i++ )
>+      {       if( cat == t[i].cat )
>+              {       ret = t[i].str;
>+                      break;
>+               }
>+      }
>+
>+      return ret;
>+}
>+
> //--------ProcessBuddyFam--------------------------------------------------
>@@ -2446,8 +2468,39 @@ void CICQDaemon::ProcessVariousFam(CBuff
>           // personal interests info
>+          unsigned int n_info;
>+          unsigned short category;
>+          char s[MAX_DATA_LEN]={0};
>+          char *tmp;
>+          const char *szCat;
>+          int len=sizeof(s);
>+          #define sz_sep ": "
>+
>+          gLog.Info("%sPersonal Interests Info on %s (%ld).\n", L_SRVxSTR,
>+                      u->GetAlias(), u ->Uin());
>+
>+          n_info = msg.UnpackChar() ;
>+          for ( ; n_info > 0 ; n_info -- )
>+          {   /* To do less work i save the interests as only one 
>+               * string. (versus Interests1,...,InterestsN,ICat1..ICatN)
>+               */
>+
>+               category=msg.UnpackUnsignedShort();
>+               tmp = msg.UnpackString();       
>+               szCat = info_category2str(category);
>+
>+               len -= strlen(tmp) + strlen(sz_sep) + strlen(szCat) + 1 ;
>+               if( len > 0 )
>+               {      strcat(s,szCat);
>+                      strcat(s,sz_sep);
>+                      strcat(s,tmp);
>+                      strcat(s,"\n");
>+               }
>+               else
>+                      break;
>+               delete tmp;
>+          }
> 
>-          char * buf;
>-
>-          gLog.Unknown("%spersonal interests: %04hx\n%s\n", L_UNKNOWNxSTR,
>-                                  nSubSequence, packet.print(buf));
>-          delete [] buf;
>+          // save the user infomation
>+          u->SetInterests( s );
>+          u->SetEnableSave(true);
>+          u->SaveInterestsInfo();
> 
>@@ -2456,2 +2509,4 @@ void CICQDaemon::ProcessVariousFam(CBuff
> 
>+          PushPluginSignal(new CICQSignal(SIGNAL_UPDATExUSER, USER_INTERESTS,
>+                              u->Uin()));
>           break;
>Index: src/user.cpp
>===================================================================
>RCS file: /cvsroot/licq/licq/src/user.cpp,v
>retrieving revision 1.36
>diff -u -1 -b -p -r1.36 user.cpp
>--- src/user.cpp       19 Mar 2002 06:54:24 -0000      1.36
>+++ src/user.cpp       16 Apr 2002 22:04:08 -0000
>@@ -795,2 +795,3 @@ bool ICQUser::LoadInfo()
>   LoadAboutInfo();
>+  LoadInterestsInfo();
>   LoadLicqInfo();
>@@ -871,2 +872,11 @@ void ICQUser::LoadAboutInfo()
> 
>+//-----ICQUser::LoadInterestsInfo-----------------------------------------------
>+void ICQUser::LoadInterestsInfo()
>+{
>+      // read in the fields, checking for errors each timei
>+      char szTemp[MAX_DATA_LEN];
>+      m_fConf.SetSection("user");
>+      m_fConf.ReadStr("Interests", szTemp, ""); SetAbout(szTemp);
>+              
>+}
> //-----ICQUser::LoadLicqInfo-------------------------------------------------
>@@ -999,2 +1009,4 @@ ICQUser::~ICQUser()
>       free( m_szAbout );
>+  if( m_szInterests )
>+      free( m_szInterests );
>   if ( m_szCustomAutoResponse )
>@@ -1089,2 +1101,4 @@ void ICQUser::Init(unsigned long _nUin)
>   m_szAbout = NULL;
>+  // Personal Interests
>+  m_szInterests = NULL;
> 
>@@ -1156,2 +1170,3 @@ void ICQUser::SetDefaults()
>   SetAbout(szTemp);
>+  SetInterests(szTemp);
>   SetCustomAutoResponse(szTemp);
>@@ -1847,2 +1862,25 @@ void ICQUser::SaveAboutInfo()
> 
>+//-----ICQUser::SaveInterestsInfo---------------------------------------------
>+void ICQUser::SaveInterestsInfo()
>+{     
>+      if (!EnableSave()) return;
>+
>+      if (!m_fConf.ReloadFile())
>+      {       gLog.Error("%sError opening '%s' for reading.\n"
>+                         "%sSee log for details.\n",
>+                         L_ERRORxSTR, m_fConf.FileName(), L_BLANKxSTR);
>+              return ;
>+      }
>+
>+      m_fConf.SetSection("user");
>+      m_fConf.WriteStr("Interests", m_szInterests);
>+
>+      if (!m_fConf.FlushFile())
>+      {        gLog.Error("%sError opening '%s' for writing.\n"
>+                          "%sSee log for details.\n", L_ERRORxSTR,
>+                              m_fConf.FileName(), L_BLANKxSTR);
>+
>+              return; 
>+      } 
>+}
> 
>  
>
>------------------------------------------------------------------------
>
>Index: userinfodlg.cpp
>===================================================================
>RCS file: /cvsroot/licq/qt-gui/src/userinfodlg.cpp,v
>retrieving revision 1.39
>diff -u -1 -b -p -r1.39 userinfodlg.cpp
>--- userinfodlg.cpp    8 Apr 2002 16:12:56 -0000       1.39
>+++ userinfodlg.cpp    16 Apr 2002 22:03:13 -0000
>@@ -71,2 +71,3 @@ UserInfoDlg::UserInfoDlg(CICQDaemon *s, 
>   CreateAbout();
>+  CreateInterests();
>   CreateHistory();
>@@ -83,2 +84,3 @@ UserInfoDlg::UserInfoDlg(CICQDaemon *s, 
>   tabs->addTab(tabList[AboutInfo].tab, tabList[AboutInfo].label);
>+  tabs->addTab(tabList[InterestsInfo].tab, tabList[InterestsInfo].label);
>   tabs->addTab(tabList[HistoryInfo].tab, tabList[HistoryInfo].label);
>@@ -801,3 +803,3 @@ void UserInfoDlg::SetAbout(ICQUser *u)
>   mleAbout->setText(aboutstr);
>-
>+  cout << aboutstr ;
>   if (bDropUser) gUserManager.DropUser(u);
>@@ -816,2 +818,53 @@ void UserInfoDlg::SaveAbout()
> 
>+// ----Personal Interests--------------------------------------------------
>+void UserInfoDlg::CreateInterests()
>+{
>+  tabList[InterestsInfo].label = tr("&Interests");
>+  tabList[InterestsInfo].tab = new QVBox(this, 
>tabList[InterestsInfo].label.latin1());
>+  tabList[InterestsInfo].loaded = false;
>+
>+  QVBox *p = (QVBox *)tabList[InterestsInfo].tab;
>+
>+  p->setMargin(8);
>+  p->setSpacing(8);
>+
>+  lblInterests = new QLabel(tr("Interests:"), p);
>+  mleInterests = new MLEditWrap(true, p);
>+  mleInterests->setReadOnly(!m_bOwner);
>+
>+}
>+
>+void UserInfoDlg::SetInterests(ICQUser *u)
>+{
>+  tabList[InterestsInfo].loaded = true;
>+  bool bDropUser = false;
>+
>+  if (u == NULL)
>+  {
>+    u = gUserManager.FetchUser(m_nUin, LOCK_R);
>+    if (u == NULL) return;
>+    bDropUser = true;
>+  }
>+
>+  QTextCodec * codec = UserCodec::codecForICQUser(u);
>+
>+  QString intereststr = codec->toUnicode(u->GetInterests());
>+  intereststr.replace(QRegExp("\r"), "");
>+  mleInterests->setText(intereststr);
>+
>+  if (bDropUser) gUserManager.DropUser(u);
>+
>+}
>+
>+void UserInfoDlg::SaveInterests()
>+{
>+  ICQUser *u = gUserManager.FetchUser(m_nUin, LOCK_W);
>+  if (u == NULL) return;
>+
>+  QTextCodec * codec = UserCodec::codecForICQUser(u);
>+
>+  u->SetInterests(codec->fromUnicode(mleInterests->text()));
>+  gUserManager.DropUser(u);
>+}
>+
> //-----LastCounters--------------------------------------------------------
>@@ -1194,2 +1247,3 @@ void UserInfoDlg::updateTab(const QStrin
> {
>+      cout << txt;
>   if (txt == tabList[GeneralInfo].label)
>@@ -1234,2 +1288,12 @@ void UserInfoDlg::updateTab(const QStrin
>   }
>+  else if( txt == tabList[InterestsInfo].label) 
>+  {
>+    btnMain3->setText(tr("&Update"));
>+    btnMain2->setText(m_bOwner ? tr("Retrieve") : tr("&Save"));
>+    btnMain3->setEnabled(true);
>+    btnMain2->setEnabled(true);
>+    currentTab = InterestsInfo;
>+    if (!tabList[InterestsInfo].loaded)
>+      SetInterests(NULL);
>+  }
>   else if (txt == tabList[HistoryInfo].label)
>@@ -1276,2 +1340,5 @@ void UserInfoDlg::SaveSettings()
>     break;
>+  case InterestsInfo:
>+    SaveInterests();
>+    break;
>   case HistoryInfo:
>@@ -1314,2 +1381,3 @@ void UserInfoDlg::slotRetrieve()
>     case AboutInfo:   icqEventTag = server->icqRequestMetaInfo(m_nUin);  break;
>+    case InterestsInfo: icqEventTag = server->icqRequestMetaInfo(m_nUin); break;
>   }
>@@ -1397,2 +1465,3 @@ void UserInfoDlg::slotUpdate()
>   case AboutInfo:    icqEventTag = 
>server->icqSetAbout(codec->fromUnicode(mleAbout->text()));  break;
>+ // case InterestsInfo: icqEventTag = 
>server->icqSetInterests(codec->fromUnicode(mleInterests->text()));break
>   case HistoryInfo:  ShowHistoryNext();  break;
>@@ -1469,2 +1538,5 @@ void UserInfoDlg::updatedUser(CICQSignal
>     SetAbout(u);
>+    break;
>+  case USER_INTERESTS:
>+    SetInterests(u);
>     break;
>Index: userinfodlg.h
>===================================================================
>RCS file: /cvsroot/licq/qt-gui/src/userinfodlg.h,v
>retrieving revision 1.16
>diff -u -1 -b -p -r1.16 userinfodlg.h
>--- userinfodlg.h      5 Mar 2002 17:32:04 -0000       1.16
>+++ userinfodlg.h      16 Apr 2002 22:03:13 -0000
>@@ -52,2 +52,3 @@ public:
>     AboutInfo,
>+    InterestsInfo,
>     HistoryInfo,
>@@ -114,2 +115,7 @@ protected:
> 
>+  // Interests
>+  void CreateInterests();
>+  QLabel *lblInterests;
>+  MLEditWrap *mleInterests;
>+
>   // Last Counters
>@@ -139,2 +145,3 @@ protected:
>   void SetAbout(ICQUser *);
>+  void SetInterests(ICQUser *);
>   void SetLastCountersInfo(ICQUser *);
>@@ -144,2 +151,3 @@ protected:
>   void SaveAbout();
>+  void SaveInterests();
> 
>  
>
I tried patch and interest shows like this :

unknown: BMW,Car Racing - Formula 1 ,Ferrari,Porsche
unknown: Action Movies,Horror Movies
unknown: Clubs,Dj's,Drinks,Music,parties,Trance

Want to make it better?





_______________________________________________
Licq-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/licq-devel

Reply via email to