Changeset 6225

Show
Ignore:
Timestamp:
05/28/08 13:49:40 (6 months ago)
Author:
eugene
Message:

Revised the owner edit dialog.

Location:
trunk/qt4-gui/src/dialogs
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/qt4-gui/src/dialogs/ownereditdlg.cpp

    r6054 r6225  
    3333#include <licq_user.h> 
    3434 
    35 #include "config/iconmanager.h" 
    36  
    3735#include "core/messagebox.h" 
    3836 
    3937#include "helpers/support.h" 
     38 
     39#include "widgets/protocombobox.h" 
    4040 
    4141using namespace LicqQtGui; 
     
    4343 
    4444OwnerEditDlg::OwnerEditDlg(unsigned long ppid, QWidget* parent) 
    45   : QDialog(parent) 
     45  : QDialog(parent), 
     46    myPpid(ppid) 
    4647{ 
    4748  Support::setWidgetProps(this, "OwnerEdit"); 
     
    4950  setWindowTitle(tr("Edit Account")); 
    5051 
    51   IconManager* iconman = IconManager::instance(); 
    52  
    5352  QGridLayout* lay = new QGridLayout(this); 
    5453  lay->setColumnStretch(2, 2); 
    5554  lay->setColumnMinimumWidth(1, 8); 
    5655 
    57   // Protocol 
    58   lay->addWidget(new QLabel(tr("Protocol:")), 0, 0); 
    59   cmbProtocol = new QComboBox(); 
    60   lay->addWidget(cmbProtocol, 0, 2); 
     56  cmbProtocol = new ProtoComboBox(ppid == 0, this); 
    6157 
    62   // User ID 
    63   lay->addWidget(new QLabel(tr("User ID:")), 1, 0); 
    6458  edtId = new QLineEdit(); 
    65   edtId->setMinimumWidth(edtId->sizeHint().width()*2); 
    66   lay->addWidget(edtId, 1, 2); 
     59  connect(edtId, SIGNAL(returnPressed()), SLOT(slot_ok())); 
    6760 
    68   // Password 
    69   lay->addWidget(new QLabel(tr("Password:")), 2, 0); 
    7061  edtPassword = new QLineEdit(); 
    7162  edtPassword->setEchoMode(QLineEdit::Password); 
    72   lay->addWidget(edtPassword, 2, 2); 
     63  connect(edtPassword, SIGNAL(returnPressed()), SLOT(slot_ok())); 
    7364 
    74   // Save Password 
    75   chkSave = new QCheckBox(tr("Save Password")); 
    76   lay->addWidget(chkSave, 3, 0, 1, 3); 
     65  unsigned short i = 0; 
     66  QLabel* lbl; 
    7767 
    78   QString id; 
    79   // Fill the combo list now 
    80   FOR_EACH_PROTO_PLUGIN_START(gLicqDaemon) 
    81     unsigned long curPpid = (*_ppit)->PPID(); 
    82     if (ppid != 0) // Modifying a user 
    83     { 
    84       ICQOwner* o = gUserManager.FetchOwner(curPpid, LOCK_R); 
    85       if (o == NULL) 
    86         id = QString::null; 
    87       else 
    88       { 
    89         id = o->IdString(); 
    90         gUserManager.DropOwner(curPpid); 
    91       } 
     68#define ADDWIDGET(name, widget) \ 
     69  lbl = new QLabel(name); \ 
     70  lbl->setBuddy(widget); \ 
     71  lay->addWidget(lbl, i, 0); \ 
     72  lay->addWidget(widget, i++, 2) 
    9273 
    93       cmbProtocol->addItem( 
    94           iconman->iconForStatus(ICQ_STATUS_ONLINE, id.toLatin1(), curPpid), 
    95           (*_ppit)->Name(), QString::number(curPpid)); 
     74  ADDWIDGET(tr("Pro&tocol:"), cmbProtocol); 
     75  ADDWIDGET(tr("&User ID:"), edtId); 
     76  ADDWIDGET(tr("&Password:"), edtPassword); 
    9677 
    97       // Check if this is the current protocol 
    98       if (ppid == curPpid) 
    99         cmbProtocol->setCurrentIndex(cmbProtocol->count() - 1); 
    100     } 
    101     else // Adding a user 
    102     { 
    103       ICQOwner* o = gUserManager.FetchOwner(curPpid, LOCK_R); 
    104       if (o == NULL) 
    105         cmbProtocol->addItem( 
    106             iconman->iconForStatus(ICQ_STATUS_ONLINE, "0", curPpid), 
    107             (*_ppit)->Name(), QString::number(curPpid)); 
    108       else 
    109         gUserManager.DropOwner(curPpid); 
    110     } 
    111   FOR_EACH_PROTO_PLUGIN_END 
     78#undef ADDWIDGET 
     79 
     80  chkSave = new QCheckBox(tr("&Save Password")); 
     81  lay->addWidget(chkSave, i++, 0, 1, 3); 
     82 
     83  QDialogButtonBox* buttons = new QDialogButtonBox(); 
     84  buttons->addButton(QDialogButtonBox::Ok); 
     85  buttons->addButton(QDialogButtonBox::Cancel); 
     86  connect(buttons, SIGNAL(accepted()), SLOT(slot_ok())); 
     87  connect(buttons, SIGNAL(rejected()), SLOT(close())); 
     88  lay->addWidget(buttons, i++, 0, 1, 3); 
    11289 
    11390  // Set the fields 
     
    11592  { 
    11693    ICQOwner* o = gUserManager.FetchOwner(ppid, LOCK_R); 
    117     if (o) 
     94    if (o != NULL) 
    11895    { 
    11996      edtId->setText(o->IdString()); 
     97      edtId->setEnabled(false); 
    12098      edtPassword->setText(o->Password()); 
    12199      chkSave->setChecked(o->SavePassword()); 
     
    123101    } 
    124102 
     103    cmbProtocol->setCurrentPpid(ppid); 
    125104    cmbProtocol->setEnabled(false); 
    126105  } 
     
    135114  } 
    136115 
    137   lay->setRowStretch(4, 1); 
    138  
    139   QDialogButtonBox* buttons = new QDialogButtonBox(); 
    140   lay->addWidget(buttons, 5, 0, 1, 3); 
    141  
    142   btnOk = new QPushButton(tr("&Ok")); 
    143   buttons->addButton(btnOk, QDialogButtonBox::AcceptRole); 
    144  
    145   btnCancel = new QPushButton(tr("&Cancel")); 
    146   buttons->addButton(btnCancel, QDialogButtonBox::RejectRole); 
    147  
    148   connect(btnOk, SIGNAL(clicked()), SLOT(slot_ok())); 
    149   connect(edtId, SIGNAL(returnPressed()), SLOT(slot_ok())); 
    150   connect(edtPassword, SIGNAL(returnPressed()), SLOT(slot_ok())); 
    151   connect(btnCancel, SIGNAL(clicked()), SLOT(close())); 
    152  
    153   // Set Tab Order 
    154   setTabOrder(edtId, edtPassword); 
    155   setTabOrder(edtPassword, cmbProtocol); 
    156   setTabOrder(cmbProtocol, btnOk); 
    157   setTabOrder(btnOk, btnCancel); 
    158  
    159116  show(); 
    160117} 
     
    162119void OwnerEditDlg::slot_ok() 
    163120{ 
    164   QString szUser = edtId->text(); 
    165   QString szPassword; 
    166   if (!edtPassword->text().isEmpty()) 
    167     szPassword = edtPassword->text(); 
    168   unsigned long nPPID = cmbProtocol->itemData(cmbProtocol->currentIndex()).toString().toULong(); 
     121  QString id = edtId->text(); 
     122  QString pwd = edtPassword->text(); 
     123  unsigned long ppid = myPpid == 0 ? cmbProtocol->currentPpid() : myPpid; 
    169124 
    170   ICQOwner* o = gUserManager.FetchOwner(nPPID, LOCK_W); 
    171   if (o != NULL) 
     125  if (id.isEmpty()) 
    172126  { 
    173     o->SetId(szUser.toLatin1()); 
     127    InformUser(this, tr("User ID field cannot be empty.")); 
     128    return; 
    174129  } 
    175   else 
    176   { 
    177     gUserManager.AddOwner(szUser.toLatin1(), nPPID); 
    178     o = gUserManager.FetchOwner(nPPID, LOCK_W); 
    179   } 
    180   if (!szPassword.isNull()) 
    181     o->SetPassword(szPassword.toLatin1()); 
    182130 
     131  if (myPpid == 0) 
     132    gUserManager.AddOwner(id.toLocal8Bit(), ppid); 
     133 
     134  ICQOwner* o = gUserManager.FetchOwner(ppid, LOCK_W); 
     135  if (o == NULL) 
     136    return; 
     137 
     138  o->SetPassword(pwd.toLocal8Bit()); 
    183139  o->SetSavePassword(chkSave->isChecked()); 
    184140 
    185   gUserManager.DropOwner(nPPID); 
     141  gUserManager.DropOwner(ppid); 
    186142  gLicqDaemon->SaveConf(); 
    187143 
    188144  close(); 
    189145} 
    190  
  • trunk/qt4-gui/src/dialogs/ownereditdlg.h

    r6054 r6225  
    2323#include <QDialog> 
    2424 
    25 class QComboBox; 
    2625class QCheckBox; 
    2726class QLineEdit; 
    28 class QPushButton; 
    2927 
    3028namespace LicqQtGui 
    3129{ 
     30class ProtoComboBox; 
     31 
    3232class OwnerEditDlg : public QDialog 
    3333{ 
    3434  Q_OBJECT 
     35 
    3536public: 
    3637  OwnerEditDlg(unsigned long ppid = 0, QWidget* parent = NULL); 
     
    4041 
    4142private: 
    42   QPushButton* btnOk; 
    43   QPushButton* btnCancel; 
    4443  QLineEdit* edtId; 
    4544  QLineEdit* edtPassword; 
    46   QComboBox* cmbProtocol; 
     45  ProtoComboBox* cmbProtocol; 
    4746  QCheckBox* chkSave; 
     47  unsigned long myPpid; 
    4848}; 
    4949