Changeset 5032

Show
Ignore:
Timestamp:
07/20/07 05:36:49 (17 months ago)
Author:
flynd
Message:

Updated UserInfoDlg? to use Qt4 without Qt3 compability classes.

Location:
branches/qt-gui_qt4/src
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • branches/qt-gui_qt4/src/userinfodlg.cpp

    r5002 r5032  
    2727#include "config.h" 
    2828 
    29 #include "widgets/tabwidget.h" 
    30  
    31 #include <Q3VBox> 
     29#include <cstring> 
     30 
    3231#include <QCheckBox> 
    33 #include <Q3Header> 
    3432#include <QDateTime> 
    35 #include <QLayout> 
    36 #include <QSpinBox> 
    37 #include <QTimer> 
    38 #include <Q3ProgressBar> 
    39 #include <QApplication> 
    40 #include <QTextCodec> 
    41 #include <Q3Accel> 
    42 #include <QTimer> 
    43 #include <Q3WhatsThis> 
    44 //Added by qt3to4: 
     33#include <QGridLayout> 
     34#include <QHBoxLayout> 
     35#include <QHeaderView> 
    4536#include <QLabel> 
    4637#include <QPixmap> 
    47 #include <Q3GridLayout> 
    48 #include <QKeyEvent> 
    49 #include <Q3HBoxLayout> 
    50 #include <Q3VBoxLayout> 
    51 #include <ctype.h> 
     38#include <QProgressBar> 
     39#include <QShortcut> 
     40#include <QSpinBox> 
     41#include <QTextCodec> 
     42#include <QTimer> 
     43#include <QTreeWidget> 
     44#include <QVBoxLayout> 
    5245 
    5346#ifdef USE_KDE 
     
    6255#endif 
    6356#else 
    64 #include <Q3FileDialog> 
     57#include <QFileDialog> 
    6558#endif 
    6659 
     
    7871#include "licq_socket.h" 
    7972#include "licq_log.h" 
    80 #include "usercodec.h" 
    8173 
    8274#include "widgets/infofield.h" 
     75#include "widgets/tabwidget.h" 
    8376#include "widgets/timezoneedit.h" 
    8477 
     78#include "catdlg.h" 
    8579#include "editfile.h" 
    8680#include "ewidgets.h" 
    8781#include "eventdesc.h" 
    8882#include "gui-defines.h" 
    89 #include "userinfodlg.h" 
    90 #include "sigman.h" 
     83#include "mainwin.h" 
    9184#include "mledit.h" 
    9285#include "mlview.h" 
     86#include "phonedlg.h" 
     87#include "sigman.h" 
     88#include "usercodec.h" 
    9389 
    9490#include "xpm/phonebookPhone.xpm" 
     
    9894#include "xpm/phonebookPager.xpm" 
    9995 
     96#include "userinfodlg.h" 
     97 
     98 
    10099// ----------------------------------------------------------------------------- 
    101100UserInfoDlg::UserInfoDlg(CICQDaemon *s, CSignalManager *theSigMan, CMainWindow *m, 
    102101                         const char *szId, unsigned long nPPID, QWidget *parent) 
    103   : QWidget(parent, "UserInfoDialog", Qt::WDestructiveClose) 
    104 { 
     102  : QWidget(parent) 
     103{ 
     104  setObjectName("UserInfoDialog"); 
     105  setAttribute(Qt::WA_DeleteOnClose, true); 
     106 
    105107  server = s; 
    106108  mainwin = m; 
    107109  sigman = theSigMan; 
    108110  icqEventTag = 0; 
    109   m_szId = szId ? strdup(szId) : 0; 
     111  myId = szId; 
    110112  m_nPPID = nPPID; 
    111113  m_bOwner = (gUserManager.FindOwner(szId, nPPID) != NULL); 
     
    126128#endif 
    127129 
    128   Q3BoxLayout *lay = new Q3VBoxLayout(this, 8); 
    129  
    130   tabs = new CTabWidget(this); 
     130  QVBoxLayout* lay = new QVBoxLayout(this); 
     131 
     132  tabs = new CTabWidget(); 
    131133  lay->addWidget(tabs, 2); 
    132134 
     
    148150           this, SLOT(updatedUser(CICQSignal *))); 
    149151 
    150   btnMain3 = new QPushButton(tr("&Update"), this); 
    151   btnMain4 = new QPushButton(tr("&Close"), this); 
     152  btnMain3 = new QPushButton(tr("&Update")); 
     153  btnMain4 = new QPushButton(tr("&Close")); 
    152154  connect(btnMain4, SIGNAL(clicked()), this, SLOT(close())); 
    153155 
    154156  if (m_bOwner) 
    155157  { 
    156     btnMain1 = new QPushButton(tr("&Save"), this); 
    157     btnMain2 = new QPushButton(tr("Retrieve"), this); 
     158    btnMain1 = new QPushButton(tr("&Save")); 
     159    btnMain2 = new QPushButton(tr("Retrieve")); 
    158160    connect(btnMain1, SIGNAL(clicked()), this, SLOT(SaveSettings())); 
    159161    connect(btnMain2, SIGNAL(clicked()), this, SLOT(slotRetrieve())); 
     
    162164  else 
    163165  { 
    164     btnMain1 = new QPushButton(tr("&Menu"), this); 
    165     btnMain2 = new QPushButton(tr("&Save"), this); 
     166    btnMain1 = new QPushButton(tr("&Menu")); 
     167    btnMain2 = new QPushButton(tr("&Save")); 
    166168    connect(btnMain1, SIGNAL(pressed()), this, SLOT(ShowUsermenu())); 
    167     btnMain1->setPopup(gMainWindow->UserMenu()); 
     169    btnMain1->setMenu(gMainWindow->UserMenu()); 
    168170    connect(btnMain2, SIGNAL(clicked()), this, SLOT(SaveSettings())); 
    169171    connect(btnMain3, SIGNAL(clicked()), this, SLOT(slotRetrieve())); 
     
    171173 
    172174  int bw = 80; 
    173   bw = QMAX(bw, btnMain1->sizeHint().width()); 
    174   bw = QMAX(bw, btnMain2->sizeHint().width()); 
    175   bw = QMAX(bw, btnMain3->sizeHint().width()); 
    176   bw = QMAX(bw, btnMain4->sizeHint().width()); 
     175  bw = qMax(bw, btnMain1->sizeHint().width()); 
     176  bw = qMax(bw, btnMain2->sizeHint().width()); 
     177  bw = qMax(bw, btnMain3->sizeHint().width()); 
     178  bw = qMax(bw, btnMain4->sizeHint().width()); 
    177179  btnMain1->setFixedWidth(bw); 
    178180  btnMain2->setFixedWidth(bw); 
     
    180182  btnMain4->setFixedWidth(bw); 
    181183 
    182   Q3BoxLayout* l = new Q3HBoxLayout(lay); 
     184  QHBoxLayout* l = new QHBoxLayout(); 
    183185 
    184186  l->addWidget(btnMain1); 
     
    190192  btnMain4->setDefault(true); 
    191193 
     194  lay->addLayout(l); 
     195 
    192196  // prepare the timer for the history filter 
    193   timer = new QTimer(this, "history_filterTimer"); 
     197  timer = new QTimer(this); 
     198  timer->setObjectName("history_filterTimer"); 
    194199  connect(timer, SIGNAL(timeout()), this, SLOT(ShowHistory())); 
    195200 
    196   ICQUser *u = gUserManager.FetchUser(m_szId, m_nPPID, LOCK_R); 
     201  ICQUser* u = gUserManager.FetchUser(myId.toLatin1(), m_nPPID, LOCK_R); 
    197202  if (u == NULL) 
    198203  { 
    199204    m_sBasic = tr("Licq - Info ") + tr("INVALID USER"); 
    200205    resetCaption(); 
    201     setIconText(tr("INVALID USER")); 
     206    setWindowIconText(tr("INVALID USER")); 
    202207  } 
    203208  else 
     
    213218    m_sBasic = tr("Licq - Info ") + QString::fromUtf8(u->GetAlias()) + tmp; 
    214219    resetCaption(); 
    215     setIconText(u->GetAlias()); 
     220    setWindowIconText(u->GetAlias()); 
    216221    SetGeneralInfo(u); 
    217222    gUserManager.DropUser(u); 
     
    243248    delete m_PhoneBook; 
    244249 
    245   emit finished(m_szId, m_nPPID); 
     250  emit finished(myId.toLatin1(), m_nPPID); 
    246251 
    247252  ICQUser::ClearHistory(m_lHistoryList); 
     
    253258void UserInfoDlg::keyPressEvent(QKeyEvent* e) 
    254259{ 
    255   if ( e->state() == 0 ) 
     260  if (e->modifiers() == Qt::NoModifier) 
    256261  { 
    257262    switch ( e->key() ) { 
     
    275280void UserInfoDlg::showTab(int tab) 
    276281{ 
    277   tabs->showPage(tabList[tab].tab); 
     282  tabs->setCurrentWidget(tabList[tab].tab); 
    278283} 
    279284 
    280285bool UserInfoDlg::isTabShown(int tab) 
    281286{ 
    282   return (tabs->currentPage() == tabList[tab].tab); 
     287  return (tabs->currentWidget() == tabList[tab].tab); 
    283288} 
    284289 
     
    289294{ 
    290295  tabList[GeneralInfo].label = tr("&General"); 
    291   tabList[GeneralInfo].tab = new QWidget(this, tabList[GeneralInfo].label.latin1()); 
     296  QWidget* p = new QWidget(this); 
     297  tabList[GeneralInfo].tab = p; 
     298  p->setObjectName(tabList[GeneralInfo].label); 
    292299  tabList[GeneralInfo].loaded = false; 
    293300 
    294301  unsigned short CR = 0; 
    295   QWidget *p = tabList[GeneralInfo].tab; 
    296  
    297   Q3GridLayout *lay = new Q3GridLayout(p, 11, 5, 10, 5); 
    298   lay->addColSpacing(2, 10); 
     302 
     303  QGridLayout* lay = new QGridLayout(p); 
     304  lay->setColumnMinimumWidth(2, 10); 
    299305  lay->setRowStretch(9, 1); 
    300306 
    301   lay->addWidget(new QLabel(tr("Alias:"), p), CR, 0); 
    302   nfoAlias = new CInfoField(p, false); 
     307  lay->addWidget(new QLabel(tr("Alias:")), CR, 0); 
     308  nfoAlias = new InfoField(false); 
    303309  lay->addWidget(nfoAlias, CR, 1); 
    304   chkKeepAliasOnUpdate = new QCheckBox(tr("Keep Alias on Update"), p); 
    305   Q3WhatsThis::add(chkKeepAliasOnUpdate, tr("Normally Licq overwrites the Alias when updating user details.\n" 
     310  chkKeepAliasOnUpdate = new QCheckBox(tr("Keep Alias on Update")); 
     311  chkKeepAliasOnUpdate->setToolTip(tr("Normally Licq overwrites the Alias when updating user details.\n" 
    306312                                           "Check this if you want to keep your changes to the Alias.")); 
    307   lay->addMultiCellWidget(chkKeepAliasOnUpdate, CR, CR, 3,4); 
    308  
    309   lay->addWidget(new QLabel(tr("ID:"), p), ++CR, 0); 
    310   nfoUin = new CInfoField(p, true); 
     313  lay->addWidget(chkKeepAliasOnUpdate, CR, 3, 1, 2); 
     314 
     315  lay->addWidget(new QLabel(tr("ID:")), ++CR, 0); 
     316  nfoUin = new InfoField(true); 
    311317  lay->addWidget(nfoUin, CR, 1); 
    312   lay->addWidget(new QLabel(tr("IP:"), p), CR, 3); 
    313   nfoIp = new CInfoField(p, true); 
     318  lay->addWidget(new QLabel(tr("IP:")), CR, 3); 
     319  nfoIp = new InfoField(true); 
    314320  lay->addWidget(nfoIp, CR, 4); 
    315321 
    316   lay->addWidget(new QLabel(tr("Status:"), p), ++CR, 0); 
    317   nfoStatus = new CInfoField(p, true); 
     322  lay->addWidget(new QLabel(tr("Status:")), ++CR, 0); 
     323  nfoStatus = new InfoField(true); 
    318324  lay->addWidget(nfoStatus, CR, 1); 
    319   lay->addWidget(new QLabel(tr("Timezone:"), p), CR, 3); 
    320   tznZone = new TimeZoneEdit(p); 
     325  lay->addWidget(new QLabel(tr("Timezone:")), CR, 3); 
     326  tznZone = new TimeZoneEdit(); 
    321327  lay->addWidget(tznZone, CR, 4); 
    322328 
    323   lay->addWidget(new QLabel(tr("Name:"), p), ++CR, 0); 
    324   nfoFirstName = new CInfoField(p, false); 
     329  lay->addWidget(new QLabel(tr("Name:")), ++CR, 0); 
     330  nfoFirstName = new InfoField(false); 
    325331  lay->addWidget(nfoFirstName, CR, 1); 
    326   nfoLastName = new CInfoField(p, false); 
    327   lay->addMultiCellWidget(nfoLastName, CR, CR, 2, 4); 
    328  
    329   lay->addWidget(new QLabel(tr("EMail 1:"), p), ++CR, 0); 
    330   nfoEmailPrimary = new CInfoField(p, false); 
    331   lay->addMultiCellWidget(nfoEmailPrimary, CR, CR, 1, 4); 
    332  
    333   lay->addWidget(new QLabel(tr("EMail 2:"), p), ++CR, 0); 
    334   nfoEmailSecondary = new CInfoField(p, false); 
    335   lay->addMultiCellWidget(nfoEmailSecondary, CR, CR, 1, 4); 
    336  
    337   lay->addWidget(new QLabel(tr("Old Email:"), p), ++CR, 0); 
    338   nfoEmailOld = new CInfoField(p, false); 
    339   lay->addMultiCellWidget(nfoEmailOld, CR, CR, 1, 4); 
    340  
    341   lay->addWidget(new QLabel(tr("Address:"), p), ++CR, 0); 
    342   nfoAddress = new CInfoField(p, !m_bOwner); 
     332  nfoLastName = new InfoField(false); 
     333  lay->addWidget(nfoLastName, CR, 2, 1, 3); 
     334 
     335  lay->addWidget(new QLabel(tr("EMail 1:")), ++CR, 0); 
     336  nfoEmailPrimary = new InfoField(false); 
     337  lay->addWidget(nfoEmailPrimary, CR, 1, 1, 4); 
     338 
     339  lay->addWidget(new QLabel(tr("EMail 2:")), ++CR, 0); 
     340  nfoEmailSecondary = new InfoField(false); 
     341  lay->addWidget(nfoEmailSecondary, CR, 1, 1, 4); 
     342 
     343  lay->addWidget(new QLabel(tr("Old Email:")), ++CR, 0); 
     344  nfoEmailOld = new InfoField(false); 
     345  lay->addWidget(nfoEmailOld, CR, 1, 1, 4); 
     346 
     347  lay->addWidget(new QLabel(tr("Address:")), ++CR, 0); 
     348  nfoAddress = new InfoField(!m_bOwner); 
    343349  lay->addWidget(nfoAddress, CR, 1); 
    344   lay->addWidget(new QLabel(tr("Phone:"), p), CR, 3); 
    345   nfoPhone = new CInfoField(p, false);//!m_bOwner); 
     350  lay->addWidget(new QLabel(tr("Phone:")), CR, 3); 
     351  nfoPhone = new InfoField(false);//!m_bOwner); 
    346352  lay->addWidget(nfoPhone, CR, 4); 
    347353 
    348   lay->addWidget(new QLabel(tr("State:"), p), ++CR, 0); 
    349   nfoState = new CInfoField(p, !m_bOwner); 
     354  lay->addWidget(new QLabel(tr("State:")), ++CR, 0); 
     355  nfoState = new InfoField(!m_bOwner); 
    350356  nfoState->setMaxLength(3); 
     357  lay->addWidget(nfoState, CR, 1); 
    351358  setTabOrder(nfoAddress, nfoState); 
    352   lay->addWidget(nfoState, CR, 1); 
    353   lay->addWidget(new QLabel(tr("Fax:"), p), CR, 3); 
    354   nfoFax = new CInfoField(p, false);//!m_bOwner); 
     359  lay->addWidget(new QLabel(tr("Fax:")), CR, 3); 
     360  nfoFax = new InfoField(false);//!m_bOwner); 
     361  lay->addWidget(nfoFax, CR, 4); 
    355362  setTabOrder(nfoPhone, nfoFax); 
    356   lay->addWidget(nfoFax, CR, 4); 
    357  
    358   lay->addWidget(new QLabel(tr("City:"), p), ++CR, 0); 
    359   nfoCity = new CInfoField(p, !m_bOwner); 
     363 
     364  lay->addWidget(new QLabel(tr("City:")), ++CR, 0); 
     365  nfoCity = new InfoField(!m_bOwner); 
     366  lay->addWidget(nfoCity, CR, 1); 
    360367  setTabOrder(nfoState, nfoCity); 
    361   lay->addWidget(nfoCity, CR, 1); 
    362   lay->addWidget(new QLabel(tr("Cellular:"), p), CR, 3); 
    363   nfoCellular = new CInfoField(p, false);//!m_bOwner); 
     368  lay->addWidget(new QLabel(tr("Cellular:")), CR, 3); 
     369  nfoCellular = new InfoField(false);//!m_bOwner); 
     370  lay->addWidget(nfoCellular, CR, 4); 
    364371  setTabOrder(nfoFax, nfoCellular); 
    365   lay->addWidget(nfoCellular, CR, 4); 
    366  
    367   lay->addWidget(new QLabel(tr("Zip:"), p), ++CR, 0); 
    368   nfoZipCode = new CInfoField(p, !m_bOwner); 
     372 
     373  lay->addWidget(new QLabel(tr("Zip:")), ++CR, 0); 
     374  nfoZipCode = new InfoField(!m_bOwner); 
     375  lay->addWidget(nfoZipCode, CR, 1); 
    369376  setTabOrder(nfoCity, nfoZipCode); 
    370   lay->addWidget(nfoZipCode, CR, 1); 
    371   lay->addWidget(new QLabel(tr("Country:"), p), CR, 3); 
     377  lay->addWidget(new QLabel(tr("Country:")), CR, 3); 
    372378  if (m_bOwner) 
    373379  { 
    374380    cmbCountry = new QComboBox(tabList[GeneralInfo].tab); 
    375     //cmbCountry->insertItem(tr("Unspecified")); 
     381    //cmbCountry->addItem(tr("Unspecified")); 
    376382    cmbCountry->setMaximumWidth(cmbCountry->sizeHint().width()+20); 
    377383    for (unsigned short i = 0; i < NUM_COUNTRIES; i++) 
    378       cmbCountry->insertItem(GetCountryByIndex(i)->szName); 
     384      cmbCountry->addItem(GetCountryByIndex(i)->szName); 
    379385    lay->addWidget(cmbCountry, CR, 4); 
    380386  } 
    381387  else 
    382388  { 
    383     nfoCountry = new CInfoField(p, !m_bOwner); 
     389    nfoCountry = new InfoField(!m_bOwner); 
    384390    lay->addWidget(nfoCountry, CR, 4); 
    385391  } 
     
    396402  if (u == NULL) 
    397403  { 
    398     u = gUserManager.FetchUser(m_szId, m_nPPID, LOCK_R); 
     404    u = gUserManager.FetchUser(myId.toLatin1(), m_nPPID, LOCK_R); 
    399405    if (u == NULL) return; 
    400406    bDropUser = true; 
     
    406412    chkKeepAliasOnUpdate->hide(); 
    407413  chkKeepAliasOnUpdate->setChecked(u->KeepAliasOnUpdate()); 
    408   nfoAlias->setData(QString::fromUtf8(u->GetAlias())); 
     414  nfoAlias->setText(QString::fromUtf8(u->GetAlias())); 
    409415  connect(nfoAlias, SIGNAL(textChanged(const QString &)), this, SLOT(slot_aliasChanged(const QString &))); 
    410   nfoFirstName->setData(codec->toUnicode(u->GetFirstName())); 
    411   nfoLastName->setData(codec->toUnicode(u->GetLastName())); 
    412   nfoEmailPrimary->setData(codec->toUnicode(u->GetEmailPrimary())); 
    413   nfoEmailSecondary->setData(codec->toUnicode(u->GetEmailSecondary())); 
    414   nfoEmailOld->setData(codec->toUnicode(u->GetEmailOld())); 
    415   nfoUin->setData(u->IdString()); 
     416  nfoFirstName->setText(codec->toUnicode(u->GetFirstName())); 
     417  nfoLastName->setText(codec->toUnicode(u->GetLastName())); 
     418  nfoEmailPrimary->setText(codec->toUnicode(u->GetEmailPrimary())); 
     419  nfoEmailSecondary->setText(codec->toUnicode(u->GetEmailSecondary())); 
     420  nfoEmailOld->setText(codec->toUnicode(u->GetEmailOld())); 
     421  nfoUin->setText(u->IdString()); 
    416422  QString ip = QString(u->IpStr(buf)); 
    417423  if (u->Ip() != u->IntIp() && u->IntIp() != 0) 
     
    423429    ip.append(QString(":%1").arg(u->PortStr(buf))); 
    424430  } 
    425   nfoIp->setData(ip); 
     431  nfoIp->setText(ip); 
    426432  tznZone->setData(u->GetTimezone()); 
    427   nfoStatus->setData(u->StatusStr()); 
     433  nfoStatus->setText(u->StatusStr()); 
    428434  if (m_bOwner) 
    429435  { 
     
    433439    const SCountry *c = GetCountryByCode(u->GetCountryCode()); 
    434440    if (c == NULL) 
    435       cmbCountry->setCurrentItem(0); 
     441      cmbCountry->setCurrentIndex(0); 
    436442    else 
    437       cmbCountry->setCurrentItem(c->nIndex); 
     443      cmbCountry->setCurrentIndex(c->nIndex); 
    438444  } 
    439445  else 
     
    441447    const SCountry *c = GetCountryByCode(u->GetCountryCode()); 
    442448    if (c == NULL) 
    443       nfoCountry->setData(tr("Unknown (%1)").arg(u->GetCountryCode())); 
     449      nfoCountry->setText(tr("Unknown (%1)").arg(u->GetCountryCode())); 
    444450    else  // known 
    445       nfoCountry->setData(c->szName); 
    446   } 
    447   nfoAddress->setData(codec->toUnicode(u->GetAddress())); 
    448   nfoCity->setData(codec->toUnicode(u->GetCity())); 
    449   nfoState->setData(codec->toUnicode(u->GetState())); 
    450   nfoPhone->setData(codec->toUnicode(u->GetPhoneNumber())); 
    451   nfoFax->setData(codec->toUnicode(u->GetFaxNumber())); 
    452   nfoCellular->setData(codec->toUnicode(u->GetCellularNumber())); 
    453   nfoZipCode->setData(codec->toUnicode(u->GetZipCode())); 
     451      nfoCountry->setText(c->szName); 
     452  } 
     453  nfoAddress->setText(codec->toUnicode(u->GetAddress())); 
     454  nfoCity->setText(codec->toUnicode(u->GetCity())); 
     455  nfoState->setText(codec->toUnicode(u->GetState())); 
     456  nfoPhone->setText(codec->toUnicode(u->GetPhoneNumber())); 
     457  nfoFax->setText(codec->toUnicode(u->GetFaxNumber())); 
     458  nfoCellular->setText(codec->toUnicode(u->GetCellularNumber())); 
     459  nfoZipCode->setText(codec->toUnicode(u->GetZipCode())); 
    454460 
    455461  if (!u->StatusOffline()) 
    456     nfoLastOnline->setData(tr("Now")); 
     462    nfoLastOnline->setText(tr("Now")); 
    457463  else if (u->LastOnline() == 0) 
    458     nfoLastOnline->setData(tr("Unknown")); 
     464    nfoLastOnline->setText(tr("Unknown")); 
    459465  else 
    460466  { 
     
    463469    QString ds = t.toString(); 
    464470    ds.truncate(ds.length() - 8); 
    465     nfoLastOnline->setData(ds); 
     471    nfoLastOnline->setText(ds); 
    466472  } 
    467473 
     
    471477void UserInfoDlg::SaveGeneralInfo() 
    472478{ 
    473   ICQUser *u = gUserManager.FetchUser(m_szId, m_nPPID, LOCK_W); 
     479  ICQUser* u = gUserManager.FetchUser(myId.toLatin1(), m_nPPID, LOCK_W); 
    474480  if (u == NULL) return; 
    475481 
     
    478484  u->SetEnableSave(false); 
    479485 
    480   u->SetAlias(nfoAlias->text().utf8()); 
     486  u->SetAlias(nfoAlias->text().toUtf8()); 
    481487  u->SetKeepAliasOnUpdate(chkKeepAliasOnUpdate->isChecked()); 
    482488  u->SetFirstName(codec->fromUnicode(nfoFirstName->text())); 
     
    494500  if (m_bOwner) 
    495501  { 
    496     unsigned short i = cmbCountry->currentItem(); 
     502    unsigned short i = cmbCountry->currentIndex(); 
    497503    u->SetCountryCode(GetCountryByIndex(i)->nCode); 
    498504  } 
     
    505511 
    506512  if (!m_bOwner) 
    507     server->ProtoRenameUser(m_szId, m_nPPID); 
     513    server->ProtoRenameUser(myId.toLatin1(), m_nPPID); 
    508514} 
    509515 
     
    513519{ 
    514520  tabList[MoreInfo].label = tr("&More"); 
    515   tabList[MoreInfo].tab = new QWidget(this, tabList[MoreInfo].label.latin1()); 
     521  QWidget* p = new QWidget(this); 
     522  tabList[MoreInfo].tab = p; 
     523  p->setObjectName(tabList[MoreInfo].label); 
    516524  tabList[MoreInfo].loaded = false; 
    517525 
    518526  unsigned short CR = 0; 
    519   QWidget *p = tabList[MoreInfo].tab; 
    520   Q3GridLayout *lay = new Q3GridLayout(p, 9, 5, 10, 5); 
    521   lay->addColSpacing(2, 10); 
    522   lay->addRowSpacing(6, 5); 
     527  QGridLayout* lay = new QGridLayout(p); 
     528  lay->setColumnMinimumWidth(2, 10); 
     529  lay->setRowMinimumHeight(6, 5); 
    523530  lay->setRowStretch(3, 1); 
    524531 
    525   lay->addWidget(new QLabel(tr("Age:"), p), CR, 0); 
    526   nfoAge = new CInfoField(p, !m_bOwner); 
     532  lay->addWidget(new QLabel(tr("Age:")), CR, 0); 
     533  nfoAge = new InfoField(!m_bOwner); 
    527534  lay->addWidget(nfoAge, CR, 1); 
    528   lay->addWidget(new QLabel(tr("Gender:"), p), CR, 3); 
     535  lay->addWidget(new QLabel(tr("Gender:")), CR, 3); 
    529536  if (m_bOwner) 
    530537  { 
    531     cmbGender = new QComboBox(p); 
    532     cmbGender->insertItem(tr("Unspecified"), GENDER_UNSPECIFIED); 
    533     cmbGender->insertItem(tr("Female"), GENDER_FEMALE); 
    534     cmbGender->insertItem(tr("Male"), GENDER_MALE); 
     538    cmbGender = new QComboBox(); 
     539    cmbGender->insertItem(GENDER_UNSPECIFIED, tr("Unspecified")); 
     540    cmbGender->insertItem(GENDER_FEMALE, tr("Female")); 
     541    cmbGender->insertItem(GENDER_MALE, tr("Male")); 
    535542    lay->addWidget(cmbGender, CR, 4); 
    536543  } 
    537544  else 
    538545  { 
    539     nfoGender = new CInfoField(p, true); 
     546    nfoGender = new InfoField(true); 
    540547    lay->addWidget(nfoGender, CR, 4); 
    541548  } 
    542549 
    543   lay->addWidget(new QLabel(tr("Homepage:"), p), ++CR, 0); 
    544   nfoHomepage = new CInfoField(p, !m_bOwner); 
    545   lay->addMultiCellWidget(nfoHomepage, CR, CR, 1, 4); 
    546  
    547   lay->addWidget(new QLabel(tr("Category:"), p), ++CR, 0); 
    548   lvHomepageCategory = new Q3ListView(p); 
    549   lvHomepageCategory->addColumn(""); 
     550  lay->addWidget(new QLabel(tr("Homepage:")), ++CR, 0); 
     551  nfoHomepage = new InfoField(!m_bOwner); 
     552  lay->addWidget(nfoHomepage, CR, 1, 1, 4); 
     553 
     554  lay->addWidget(new QLabel(tr("Category:")), ++CR, 0); 
     555  lvHomepageCategory = new QTreeWidget(); 
     556  lvHomepageCategory->setColumnCount(1); 
    550557  lvHomepageCategory->header()->hide(); 
    551558  lvHomepageCategory->setRootIsDecorated(true); 
    552559  lvHomepageCategory->setMaximumHeight(50); 
    553   lay->addMultiCellWidget(lvHomepageCategory, CR, CR, 1, 4); 
    554  
    555   lay->addWidget(new QLabel(tr("Description:"), p), ++CR, 0); 
    556   mleHomepageDesc = new MLEditWrap(true, p); 
     560  lay->addWidget(lvHomepageCategory, CR, 1, 1, 4); 
     561 
     562  lay->addWidget(new QLabel(tr("Description:")), ++CR, 0); 
     563  mleHomepageDesc = new MLEditWrap(true); 
    557564  mleHomepageDesc->setReadOnly(true); 
    558   lay->addMultiCellWidget(mleHomepageDesc, CR, CR, 1, 4); 
     565  lay->addWidget(mleHomepageDesc, CR, 1, 1, 4); 
    559566   
    560   lay->addWidget(new QLabel(tr("Birthday:"), p), ++CR, 0); 
     567  lay->addWidget(new QLabel(tr("Birthday:")), ++CR, 0); 
    561568  if (m_bOwner) 
    562569  { 
    563     Q3HBox* w = new Q3HBox(p); 
     570    QHBoxLayout* w = new QHBoxLayout(); 
    564571    w->setSpacing(8); 
    565     QLabel* lblDay = new QLabel(tr(" Day:"), w); 
    566     lblDay->setAlignment(Qt::AlignRight | Qt::AlignVCenter | Qt::SingleLine); 
    567     spnBirthDay = new QSpinBox(1, 31, 1, w); 
    568     QLabel* lblMonth = new QLabel(tr(" Month:"), w); 
    569     lblMonth->setAlignment(Qt::AlignRight | Qt::AlignVCenter | Qt::SingleLine); 
    570     spnBirthMonth = new QSpinBox(1, 12, 1, w); 
    571     QLabel* lblYear = new QLabel(tr(" Year:"), w); 
    572     lblYear->setAlignment(Qt::AlignRight | Qt::AlignVCenter | Qt::SingleLine); 
    573     spnBirthYear = new QSpinBox(1900, 2020, 1, w); 
    574     lay->addMultiCellWidget(w, CR, CR, 1, 4); 
    575   } 
    576   else 
    577   { 
    578     nfoBirthday = new CInfoField(p, !m_bOwner); 
    579     lay->addMultiCellWidget(nfoBirthday, CR, CR, 1, 4); 
     572    QLabel* lblDay = new QLabel(tr(" Day:")); 
     573    lblDay->setAlignment(Qt::AlignRight | Qt::AlignVCenter); 
     574    spnBirthDay = new QSpinBox(); 
     575    spnBirthDay->setRange(1, 31); 
     576    QLabel* lblMonth = new QLabel(tr(" Month:")); 
     577    lblMonth->setAlignment(Qt::AlignRight | Qt::AlignVCenter); 
     578    spnBirthMonth = new QSpinBox(); 
     579    spnBirthMonth->setRange(1, 12); 
     580    QLabel* lblYear = new QLabel(tr(" Year:")); 
     581    lblYear->setAlignment(Qt::AlignRight | Qt::AlignVCenter); 
     582    spnBirthYear = new QSpinBox(); 
     583    spnBirthYear->setRange(1900, 2020); 
     584    lay->addLayout(w, CR, 1, 1, 4); 
     585  } 
     586  else 
     587  { 
     588    nfoBirthday = new InfoField(!m_bOwner); 
     589    lay->addWidget(nfoBirthday, CR, 1, 1, 4); 
    580590  } 
    581591 
    582592  if (m_bOwner) 
    583593  { 
    584     lay->addWidget(new QLabel(tr("Language 1:"), p), ++CR, 0); 
    585     cmbLanguage[0] = new QComboBox(p); 
     594    lay->addWidget(new QLabel(tr("Language 1:")), ++CR, 0); 
     595    cmbLanguage[0] = new QComboBox(); 
    586596    lay->addWidget(cmbLanguage[0], CR, 1); 
    587     lay->addWidget(new QLabel(tr("Language 2:"), p), CR, 3); 
    588     cmbLanguage[1] = new QComboBox(p); 
     597    lay->addWidget(new QLabel(tr("Language 2:")), CR, 3); 
     598    cmbLanguage[1] = new QComboBox(); 
    589599    lay->addWidget(cmbLanguage[1], CR, 4); 
    590600 
    591     lay->addWidget(new QLabel(tr("Language 3:"), p), ++CR, 0); 
    592     cmbLanguage[2] = new QComboBox(p); 
     601    lay->addWidget(new QLabel(tr("Language 3:")), ++CR, 0); 
     602    cmbLanguage[2] = new QComboBox(); 
    593603    lay->addWidget(cmbLanguage[2], CR, 1); 
    594604 
     
    597607      for (unsigned short j = 0; j < NUM_LANGUAGES; j++) 
    598608        if (GetLanguageByIndex(j)) 
    599           cmbLanguage[i]->insertItem(GetLanguageByIndex(j)->szName); 
    600     } 
    601   } 
    602   else 
    603   { 
    604     lay->addWidget(new QLabel(tr("Language 1:"), p), ++CR, 0); 
    605     nfoLanguage[0] = new CInfoField(p, !m_bOwner); 
     609          cmbLanguage[i]->addItem(GetLanguageByIndex(j)->szName); 
     610    } 
     611