diff options
Diffstat (limited to 'kopete/protocols/oscar/icq/ui')
19 files changed, 3541 insertions, 0 deletions
diff --git a/kopete/protocols/oscar/icq/ui/Makefile.am b/kopete/protocols/oscar/icq/ui/Makefile.am new file mode 100644 index 00000000..24a726f2 --- /dev/null +++ b/kopete/protocols/oscar/icq/ui/Makefile.am @@ -0,0 +1,17 @@ +METASOURCES = AUTO +AM_CPPFLAGS = -I$(srcdir)/../ \ + -I$(srcdir)/../../ \ + -I$(srcdir)/ui/ \ + -I$(srcdir)/../../liboscar \ + -I$(srcdir)/../../../../ \ + $(KOPETE_INCLUDES) $(all_includes) + +noinst_LTLIBRARIES = libkopeteicqui.la + +libkopeteicqui_la_SOURCES = icqadd.ui icqeditaccountui.ui \ + icqeditaccountwidget.cpp icqgeneralinfo.ui icqotherinfowidget.ui icqworkinfowidget.ui icqinterestinfowidget.ui\ + icquserinfowidget.cpp icqauthreplyui.ui icqauthreplydialog.cpp icqaddcontactpage.cpp \ + icqsearchbase.ui icqsearchdialog.cpp icqsearchdialog.h + +libkopeteicqui_la_LIBADD = $(top_builddir)/kopete/libkopete/libkopete.la + diff --git a/kopete/protocols/oscar/icq/ui/icqadd.ui b/kopete/protocols/oscar/icq/ui/icqadd.ui new file mode 100644 index 00000000..ef793fbb --- /dev/null +++ b/kopete/protocols/oscar/icq/ui/icqadd.ui @@ -0,0 +1,122 @@ +<!DOCTYPE UI><UI version="3.3" stdsetdef="1"> +<class>icqAddUI</class> +<widget class="QWidget"> + <property name="name"> + <cstring>icqAddUI</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>452</width> + <height>88</height> + </rect> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>layout3</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel1</cstring> + </property> + <property name="text"> + <string>UIN #:</string> + </property> + </widget> + <widget class="QLineEdit"> + <property name="name"> + <cstring>uinEdit</cstring> + </property> + </widget> + </hbox> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>layout4</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel1_2</cstring> + </property> + <property name="text"> + <string>Alternatively, you can search the ICQ Whitepages :</string> + </property> + </widget> + <spacer> + <property name="name"> + <cstring>spacer8</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>47</width> + <height>26</height> + </size> + </property> + </spacer> + <widget class="KPushButton"> + <property name="name"> + <cstring>searchButton</cstring> + </property> + <property name="text"> + <string>&Search</string> + </property> + <property name="iconSet"> + <iconset>image0</iconset> + </property> + </widget> + </hbox> + </widget> + <spacer> + <property name="name"> + <cstring>spacer4</cstring> + </property> + <property name="orientation"> + <enum>Vertical</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </vbox> +</widget> +<images> + <image name="image0"> + <data format="PNG" length="736">89504e470d0a1a0a0000000d49484452000000100000001008060000001ff3ff61000002a749444154388d7d91cd4b945114c69f73ef3b33ea7ca838a6a32681501194d2975050b4c82f92dc042e5a550b5bf60744bb16b58a8268218144d026da64da228a0a2b52d1c8c8c48f2c54669c19df79df793fefbd2d662469860e1cb870cef3e339cf2500989b5b88e56cb78b0857f2b6d3e67b0e0b0503baf4e57bdbb21eb8b6fadedf7fda4599a2e999f9bdb66b5fb75db79b3164b8c6b3504af8426852885adff3272dc31cb14c313e38d827fe0568593d77225811b8d8d810475555a89e88e0791e0c330f2515cc7c9e6ccb822f8d6f00964a009e6b5f8ed554211a0d235c5501ce1874c30411414a89582cdc0625c3e964e64c3900b35de768301000e70c1ae7608c81738e80a6a1b2b202b16814cd4d8946ced550b90c98e33a158c113ccf47ceccc3cc5b080534282591d94c637d6d1d5bd92c2ccb3af2f0d1e8bd92135cd7370184018088c0350ec639a291086291083ccf432e6740d3822c994cc54a1c5886f5d1755d48a920a584520a4a291000251508844c3a83baf82e1051e90996e5dc5959fe0d21fd4270424208015184e9ba8e0f139350d050460fd6de7ec80e5786313b3307c33021a484effb104222994c61ecc52b380ec1cbfcc281fcd33dd3379af7ec04d0f497c5ae8977afc77b7acf6262620a7a2e0d2505a0181a1a1388d735209f5a41647504bb833fdcad8de4e896c9864edd5edb00006d9bd49468c4c0406f318b420b2121a440eaf324226d3588b79c0f6a536303d6fc2a9e5d4d5c1bb8bfb6cc769829f7cd2010aaf77741f7dbb095d1517bb81b0dadf57dd1907bf3f1a5448b5656b52d2ea6c62b6bf076ad09355f17cc939d84face736185d10bd9d9541dfbbb5c1010018c1158f14d44205600ad878ebdf9f47cfceec6a6e5b0d6e39a1139d8a5b1e2707878e47f660a15aaddfcb9a4df4a3f79d921abf7f52cda1d737f0030624881b39160420000000049454e44ae426082</data> + </image> +</images> +<layoutdefaults spacing="6" margin="11"/> +<includehints> + <includehint>kpushbutton.h</includehint> +</includehints> +</UI> diff --git a/kopete/protocols/oscar/icq/ui/icqaddcontactpage.cpp b/kopete/protocols/oscar/icq/ui/icqaddcontactpage.cpp new file mode 100644 index 00000000..b1ab2eb4 --- /dev/null +++ b/kopete/protocols/oscar/icq/ui/icqaddcontactpage.cpp @@ -0,0 +1,126 @@ + /* + icqaddcontactpage.cpp - ICQ Protocol Plugin + + Copyright (c) 2002 by Stefan Gehn <metz AT gehn.net> + Kopete (c) 2002-2003 by the Kopete developers <kopete-devel@kde.org> + + ************************************************************************* + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ************************************************************************* +*/ + +#include "icqaddcontactpage.h" + +#include <ctype.h> + +#include <qlayout.h> +#include <qpushbutton.h> +#include <qcombobox.h> +#include <qcheckbox.h> +#include <qlineedit.h> +#include <qtabwidget.h> +#include <qlabel.h> + +#include <kdebug.h> +#include <kiconloader.h> +#include <klistview.h> +#include <klocale.h> +#include <kpushbutton.h> +#include <kmessagebox.h> + +#include "icqadd.h" +#include "icqaccount.h" +#include "icqprotocol.h" +#include "icqsearchdialog.h" + + +ICQAddContactPage::ICQAddContactPage(ICQAccount *owner, QWidget *parent, const char *name) + : AddContactPage(parent,name) +{ + kdDebug(14153) << k_funcinfo << "called" << endl; + mAccount = owner; + m_searchDialog = 0L; + + (new QVBoxLayout(this))->setAutoAdd(true); + addUI = new icqAddUI(this); + connect( addUI->searchButton, SIGNAL( clicked() ), this, SLOT( showSearchDialog() ) ); +} + +ICQAddContactPage::~ICQAddContactPage() +{ +} + +void ICQAddContactPage::setUINFromSearch( const QString& uin ) +{ + addUI->uinEdit->setText( uin ); +} + +void ICQAddContactPage::showEvent(QShowEvent *e) +{ +// slotSelectionChanged(); + AddContactPage::showEvent(e); +} + +bool ICQAddContactPage::apply(Kopete::Account* , Kopete::MetaContact *parentContact ) +{ + kdDebug(14153) << k_funcinfo << "called; adding contact..." << endl; + + QString contactId = addUI->uinEdit->text(); + kdDebug(14153) << k_funcinfo << "uin=" << contactId << endl; + return mAccount->addContact(contactId, parentContact, Kopete::Account::ChangeKABC ); + +} + +bool ICQAddContactPage::validateData() +{ + if(!mAccount->isConnected()) + { + // Account currently offline + addUI->searchButton->setEnabled( false ); + addUI->uinEdit->setEnabled( false ); + KMessageBox::sorry( this, i18n("You must be online to add a contact."), i18n("ICQ Plugin") ); + return false; + } + + Q_ULONG uin = addUI->uinEdit->text().toULong(); + if ( uin < 1000 ) + { + // Invalid (or missing) UIN + KMessageBox::sorry( this, i18n("You must enter a valid UIN."), i18n("ICQ Plugin") ); + return false; + } + else + { + // UIN is valid + return true; + } +} + +void ICQAddContactPage::showSearchDialog() +{ + if ( m_searchDialog ) + m_searchDialog->raise(); + else + { + m_searchDialog = new ICQSearchDialog( mAccount, this, "icqSearchDialog" ); + m_searchDialog->show(); + connect( m_searchDialog, SIGNAL( finished() ), this, SLOT( searchDialogDestroyed() ) ); + } +} + +void ICQAddContactPage::searchDialogDestroyed() +{ + QObject::disconnect( this, 0, m_searchDialog, 0 ); + m_searchDialog->delayedDestruct(); + m_searchDialog = NULL; +} + + +#include "icqaddcontactpage.moc" +// vim: set noet ts=4 sts=4 sw=4: +// kate: indent-mode csands; space-indent off; replace-tabs off; diff --git a/kopete/protocols/oscar/icq/ui/icqaddcontactpage.h b/kopete/protocols/oscar/icq/ui/icqaddcontactpage.h new file mode 100644 index 00000000..e9285b79 --- /dev/null +++ b/kopete/protocols/oscar/icq/ui/icqaddcontactpage.h @@ -0,0 +1,60 @@ + /* + icqaddcontactpage.h - ICQ Protocol Plugin + + Copyright (c) 2002 by Stefan Gehn <metz AT gehn.net> + Copyright (c) 2004-2005 by Matt Rogers <mattr@kde.org> + Kopete (c) 2002-2005 by the Kopete developers <kopete-devel@kde.org> + + ************************************************************************* + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ************************************************************************* +*/ + +#ifndef ICQADDCONTACTPAGE_H +#define ICQADDCONTACTPAGE_H + +#include <qwidget.h> +#include <addcontactpage.h> + +/** + *@author Matt Rogers + *@author Stefan Gehn + */ +class icqAddUI; +class ICQAccount; +class ICQSearchDialog; + +class ICQAddContactPage : public AddContactPage +{ +Q_OBJECT + +public: + ICQAddContactPage(ICQAccount *owner, QWidget *parent = 0, const char *name = 0); + ~ICQAddContactPage(); + + virtual bool validateData(); + virtual bool apply(Kopete::Account* , Kopete::MetaContact *parentContact); + + void setUINFromSearch( const QString& ); + +protected: + void showEvent(QShowEvent *e); + +private slots: + void showSearchDialog(); + void searchDialogDestroyed(); +private: + + ICQAccount *mAccount; + icqAddUI *addUI; + ICQSearchDialog* m_searchDialog; +}; + +#endif + +//kate: space-indent off; replace-tabs off; indent-mode csands; diff --git a/kopete/protocols/oscar/icq/ui/icqauthreplydialog.cpp b/kopete/protocols/oscar/icq/ui/icqauthreplydialog.cpp new file mode 100644 index 00000000..76b56fba --- /dev/null +++ b/kopete/protocols/oscar/icq/ui/icqauthreplydialog.cpp @@ -0,0 +1,73 @@ +/* + Kopete Oscar Protocol + icqauthreplydialog.cpp - ICQ authorization reply dialog + + Copyright (c) 2004 Gustavo Pichorim Boiko <gustavo.boiko@kdemail.net> + + Kopete (c) 2002-2004 by the Kopete developers <kopete-devel@kde.org> + + ************************************************************************* + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Lesser General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + ************************************************************************* +*/ +#include "icqauthreplydialog.h" +#include "icqauthreplyui.h" + +#include <klocale.h> + +#include <qlabel.h> +#include <qradiobutton.h> +#include <qlineedit.h> + +ICQAuthReplyDialog::ICQAuthReplyDialog( QWidget *parent, const char *name, bool wasRequested ) + : KDialogBase( parent, name, true, i18n( "Authorization Reply" ), KDialogBase::Ok | KDialogBase::Cancel ) +{ + m_ui = new ICQAuthReplyUI( this ); + setMainWidget( m_ui ); + m_wasRequested = wasRequested; + + if ( !m_wasRequested ) + { + m_ui->lblReqReason->hide(); + m_ui->lblRequestReason->hide(); + } + else + { + this->setWFlags( this->getWFlags() | Qt::WDestructiveClose ); + } +} + +ICQAuthReplyDialog::~ICQAuthReplyDialog() +{ +} + +void ICQAuthReplyDialog::setUser( const QString & user ) +{ + if ( m_wasRequested ) + m_ui->lblUserReq->setText( + i18n( "<b>%1</b> requested authorization to add you to his/her contact list." ).arg( user ) ); + else + m_ui->lblUserReq->setText( i18n( "Authorization reply to <b>%1</b>." ).arg( user ) ); +} + +void ICQAuthReplyDialog::setRequestReason( const QString & reason ) +{ + m_ui->lblRequestReason->setText( reason ); +} + +QString ICQAuthReplyDialog::reason() +{ + return m_ui->leReason->text(); +} + +bool ICQAuthReplyDialog::grantAuth() +{ + return m_ui->rbGrant->isChecked(); +} + +#include "icqauthreplydialog.moc" diff --git a/kopete/protocols/oscar/icq/ui/icqauthreplydialog.h b/kopete/protocols/oscar/icq/ui/icqauthreplydialog.h new file mode 100644 index 00000000..da27b241 --- /dev/null +++ b/kopete/protocols/oscar/icq/ui/icqauthreplydialog.h @@ -0,0 +1,45 @@ +/* + Kopete Oscar Protocol + icqauthreplydialog.h - ICQ authorization reply dialog + + Copyright (c) 2004 Gustavo Pichorim Boiko <gustavo.boiko@kdemail.net> + + Kopete (c) 2002-2004 by the Kopete developers <kopete-devel@kde.org> + + ************************************************************************* + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Lesser General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + ************************************************************************* +*/ +#ifndef ICQAUTHREPLYDIALOG_H +#define ICQAUTHREPLYDIALOG_H + +#include <kdialogbase.h> + +class ICQAuthReplyUI; + +/** + * A dialog to ask user what to do when a contact requests authorization + * @author Gustavo Pichorim Boiko + */ +class ICQAuthReplyDialog : public KDialogBase +{ +Q_OBJECT +public: + ICQAuthReplyDialog(QWidget *parent = 0, const char *name = 0, bool wasRequested = true); + ~ICQAuthReplyDialog(); + + void setUser( const QString& user ); + void setRequestReason( const QString& reason ); + QString reason(); + bool grantAuth(); +private: + bool m_wasRequested; + ICQAuthReplyUI *m_ui; +}; + +#endif diff --git a/kopete/protocols/oscar/icq/ui/icqauthreplyui.ui b/kopete/protocols/oscar/icq/ui/icqauthreplyui.ui new file mode 100644 index 00000000..12607856 --- /dev/null +++ b/kopete/protocols/oscar/icq/ui/icqauthreplyui.ui @@ -0,0 +1,196 @@ +<!DOCTYPE UI><UI version="3.3" stdsetdef="1"> +<class>ICQAuthReplyUI</class> +<widget class="QWidget"> + <property name="name"> + <cstring>ICQAuthReplyUI</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>412</width> + <height>148</height> + </rect> + </property> + <property name="caption"> + <string>ICQ Authorization Reply</string> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLayoutWidget" row="3" column="0"> + <property name="name"> + <cstring>layout22</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>lblReason</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>1</hsizetype> + <vsizetype>5</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>Reason:</string> + </property> + </widget> + <widget class="QLineEdit"> + <property name="name"> + <cstring>leReason</cstring> + </property> + </widget> + </hbox> + </widget> + <widget class="QLayoutWidget" row="2" column="0"> + <property name="name"> + <cstring>layout23</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <spacer> + <property name="name"> + <cstring>spacer14</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>50</width> + <height>20</height> + </size> + </property> + </spacer> + <widget class="QButtonGroup"> + <property name="name"> + <cstring>bgAction</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>5</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="frameShape"> + <enum>NoFrame</enum> + </property> + <property name="frameShadow"> + <enum>Plain</enum> + </property> + <property name="title"> + <string></string> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QRadioButton" row="0" column="0"> + <property name="name"> + <cstring>rbGrant</cstring> + </property> + <property name="text"> + <string>&Grant authorization</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + <widget class="QRadioButton" row="0" column="1"> + <property name="name"> + <cstring>rbDecline</cstring> + </property> + <property name="text"> + <string>&Decline authorization</string> + </property> + </widget> + </grid> + </widget> + <spacer> + <property name="name"> + <cstring>spacer12</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>220</width> + <height>21</height> + </size> + </property> + </spacer> + </hbox> + </widget> + <widget class="QLabel" row="0" column="0"> + <property name="name"> + <cstring>lblUserReq</cstring> + </property> + <property name="text"> + <string>%1 requested authorization to add you to his/her contact list.</string> + </property> + </widget> + <widget class="QLayoutWidget" row="1" column="0"> + <property name="name"> + <cstring>layout24</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>lblReqReason</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>0</hsizetype> + <vsizetype>5</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>Request Reason:</string> + </property> + </widget> + <widget class="QLabel"> + <property name="name"> + <cstring>lblRequestReason</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>5</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>Some reason...</string> + </property> + </widget> + </hbox> + </widget> + </grid> +</widget> +<layoutdefaults spacing="6" margin="11"/> +</UI> diff --git a/kopete/protocols/oscar/icq/ui/icqeditaccountui.ui b/kopete/protocols/oscar/icq/ui/icqeditaccountui.ui new file mode 100644 index 00000000..3ecc91cb --- /dev/null +++ b/kopete/protocols/oscar/icq/ui/icqeditaccountui.ui @@ -0,0 +1,486 @@ +<!DOCTYPE UI><UI version="3.3" stdsetdef="1"> +<class>ICQEditAccountUI</class> +<widget class="QWidget"> + <property name="name"> + <cstring>ICQEditAccountUI</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>592</width> + <height>404</height> + </rect> + </property> + <property name="caption"> + <string>Account Preferences - ICQ</string> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>0</number> + </property> + <widget class="QTabWidget"> + <property name="name"> + <cstring>tabWidget7</cstring> + </property> + <widget class="QWidget"> + <property name="name"> + <cstring>tab</cstring> + </property> + <attribute name="title"> + <string>&Basic Setup</string> + </attribute> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QGroupBox"> + <property name="name"> + <cstring>groupBox3</cstring> + </property> + <property name="title"> + <string>Account Preferences</string> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>layout5</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>lblAccountId</cstring> + </property> + <property name="text"> + <string>IC&Q UIN:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>edtAccountId</cstring> + </property> + <property name="toolTip" stdset="0"> + <string>The user ID of your ICQ account.</string> + </property> + <property name="whatsThis" stdset="0"> + <string>The user ID of your ICQ account. This should be in the form of a number (no decimals, no spaces).</string> + </property> + </widget> + <widget class="QLineEdit"> + <property name="name"> + <cstring>edtAccountId</cstring> + </property> + <property name="toolTip" stdset="0"> + <string>The user ID of your ICQ account.</string> + </property> + <property name="whatsThis" stdset="0"> + <string>The user ID of your ICQ account. This should be in the form of a number (no decimals, no spaces).</string> + </property> + </widget> + </hbox> + </widget> + <widget class="Kopete::UI::PasswordWidget"> + <property name="name"> + <cstring>mPasswordWidget</cstring> + </property> + </widget> + <widget class="QCheckBox"> + <property name="name"> + <cstring>chkAutoLogin</cstring> + </property> + <property name="enabled"> + <bool>true</bool> + </property> + <property name="text"> + <string>E&xclude from connect all</string> + </property> + <property name="whatsThis" stdset="0"> + <string>If you check that case, the account will not be connected when you press the "Connect All" button, or at startup even if you selected to automatically connect at startup</string> + </property> + </widget> + <widget class="QCheckBox"> + <property name="name"> + <cstring>chkGlobalIdentity</cstring> + </property> + <property name="text"> + <string>Exclu&de from Global Identity</string> + </property> + </widget> + </vbox> + </widget> + <widget class="QGroupBox"> + <property name="name"> + <cstring>groupBox5</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>3</hsizetype> + <vsizetype>1</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="title"> + <string>Registration</string> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel6</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>3</hsizetype> + <vsizetype>1</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>0</width> + <height>0</height> + </size> + </property> + <property name="text"> + <string>To connect to the ICQ network, you will need an ICQ account.<br><br> +If you do not currently have an ICQ account, please click the button to create one.</string> + </property> + <property name="alignment"> + <set>WordBreak|AlignVCenter</set> + </property> + </widget> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonRegister</cstring> + </property> + <property name="text"> + <string>Re&gister New Account</string> + </property> + </widget> + </hbox> + </widget> + <spacer> + <property name="name"> + <cstring>spacerBasicSetup</cstring> + </property> + <property name="orientation"> + <enum>Vertical</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </vbox> + </widget> + <widget class="QWidget"> + <property name="name"> + <cstring>tab</cstring> + </property> + <attribute name="title"> + <string>Accou&nt Preferences</string> + </attribute> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QGroupBox" row="0" column="0" rowspan="1" colspan="2"> + <property name="name"> + <cstring>groupBox2</cstring> + </property> + <property name="title"> + <string>Connection Preferences</string> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QSpinBox" row="1" column="3"> + <property name="name"> + <cstring>edtServerPort</cstring> + </property> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="maxValue"> + <number>65534</number> + </property> + <property name="minValue"> + <number>1</number> + </property> + <property name="value"> + <number>5190</number> + </property> + <property name="toolTip" stdset="0"> + <string>The port on the ICQ server that you would like to connect to.</string> + </property> + <property name="whatsThis" stdset="0"> + <string>The port on the ICQ server that you would like to connect to. Normally this is 5190.</string> + </property> + </widget> + <widget class="QLineEdit" row="1" column="2"> + <property name="name"> + <cstring>edtServerAddress</cstring> + </property> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="text"> + <string>login.icq.com</string> + </property> + <property name="toolTip" stdset="0"> + <string>The IP address or hostmask of the ICQ server you wish to connect to.</string> + </property> + <property name="whatsThis" stdset="0"> + <string>The IP address or hostmask of the ICQ server you wish to connect to. Normally you will want the default (login.icq.com).</string> + </property> + </widget> + <widget class="QLabel" row="1" column="1"> + <property name="name"> + <cstring>lblServerPort</cstring> + </property> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="text"> + <string>Po&rt:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>edtServerPort</cstring> + </property> + <property name="toolTip" stdset="0"> + <string>The port on the ICQ server that you would like to connect to.</string> + </property> + <property name="whatsThis" stdset="0"> + <string>The port on the ICQ server that you would like to connect to. Normally this is 5190.</string> + </property> + </widget> + <widget class="QLabel" row="1" column="0"> + <property name="name"> + <cstring>lblServer</cstring> + </property> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="text"> + <string>Ser&ver /</string> + </property> + <property name="buddy" stdset="0"> + <cstring>edtServerAddress</cstring> + </property> + <property name="toolTip" stdset="0"> + <string>The IP address or hostmask of the ICQ server you wish to connect to.</string> + </property> + <property name="whatsThis" stdset="0"> + <string>The IP address or hostmask of the ICQ server you wish to connect to. Normally you will want the default (login.icq.com).</string> + </property> + </widget> + <widget class="QCheckBox" row="0" column="0" rowspan="1" colspan="4"> + <property name="name"> + <cstring>optionOverrideServer</cstring> + </property> + <property name="text"> + <string>&Override default server information</string> + </property> + </widget> + </grid> + </widget> + <widget class="QGroupBox" row="1" column="0" rowspan="1" colspan="2"> + <property name="name"> + <cstring>groupBox65</cstring> + </property> + <property name="title"> + <string>Privacy Options</string> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QCheckBox" row="0" column="0"> + <property name="name"> + <cstring>chkRequireAuth</cstring> + </property> + <property name="text"> + <string>&Require authorization before someone can add you to their contact list</string> + </property> + <property name="toolTip" stdset="0"> + <string>Enable authorization requirement, which will not allow users to add you to their contact list without authorization from you.</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Enable authorization requirement, which will not allow users to add you to their contact list without authorization from you. Check this box, and you will have to confirm any users who add you to their list before they may see your online status.</string> + </property> + </widget> + <widget class="QCheckBox" row="1" column="0"> + <property name="name"> + <cstring>chkHideIP</cstring> + </property> + <property name="text"> + <string>Hide &IP address</string> + </property> + <property name="toolTip" stdset="0"> + <string>Check this to hide your IP address from people when they view your user info</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Checking this box will not allow people to see what your IP address if they view your ICQ user details such as name, address, or age.</string> + </property> + </widget> + <widget class="QCheckBox" row="2" column="0"> + <property name="name"> + <cstring>chkWebAware</cstring> + </property> + <property name="text"> + <string>Make my status available via &ICQ's unified messaging center</string> + </property> + <property name="checked"> + <bool>false</bool> + </property> + <property name="toolTip" stdset="0"> + <string>Check this box to enable Web Aware functionality.</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Check this box to enable ICQ's Web Aware functionality, which allows people to see your online status from ICQ's web page, and send you a message without necessarily having ICQ themselves.</string> + </property> + </widget> + </grid> + </widget> + <spacer row="3" column="0"> + <property name="name"> + <cstring>spacerPreferences</cstring> + </property> + <property name="orientation"> + <enum>Vertical</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + <widget class="QComboBox" row="2" column="1"> + <property name="name"> + <cstring>encodingCombo</cstring> + </property> + <property name="enabled"> + <bool>true</bool> + </property> + </widget> + <widget class="QLabel" row="2" column="0"> + <property name="name"> + <cstring>textLabel1</cstring> + </property> + <property name="enabled"> + <bool>true</bool> + </property> + <property name="text"> + <string>Default to the following &encoding for messages:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>encodingCombo</cstring> + </property> + </widget> + </grid> + </widget> + </widget> + <widget class="QLabel"> + <property name="name"> + <cstring>labelStatusMessage</cstring> + </property> + <property name="text"> + <string></string> + </property> + <property name="alignment"> + <set>AlignCenter</set> + </property> + </widget> + </vbox> +</widget> +<customwidgets> + <customwidget> + <class>Kopete::UI::PasswordWidget</class> + <header location="local">kopetepasswordwidget.h</header> + <sizehint> + <width>50</width> + <height>50</height> + </sizehint> + <container>0</container> + <sizepolicy> + <hordata>1</hordata> + <verdata>0</verdata> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + <pixmap>image0</pixmap> + <signal>changed()</signal> + </customwidget> +</customwidgets> +<images> + <image name="image0"> + <data format="PNG" length="1002">89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b000003b149444154388dad945f4c5b551cc73fe7dc4b7b4bcba0762d45c43114323599ee6192609c51d883892ce083f1718b3ebb185f8dc91e972cf39d2d2a2f1af664b6f1e0fe3863a0718969700eb0c52142da0242a1bd6d696f7bcff101585203ceb8fd9ece39f99dcff9fe7edf939f88c562ec465f5f9fe609442c161362173c3e3eae7b7a7ac8e7f36432196cdbfe4f907c3e4f2291201e8fe338cec3737357e9e8e828aded1e229d650e1f2d51754b082110124c13a4dc5ea341eb9dc284c0558a853f3ce8cb0677ef500fde7d39d2596679e326597b8e9abb85d7a770ab16ab6983ec5a05b487a70e36f0f4e10afe408d6a558310980108478dba4a1e8233990c5d474b64ed39aa3a8fe5f3317fbf81dbd70bccfeb205947632fd74f6589c1c6ea2f70d03a58ba0c1f2c9bdc1b66de3b8256a6e11cbe7e3ee1d181b590124fe2693aeee08d223c82c3a2c24b7b874bec8f26288774f7bd054504aef0dde6e99c0eb83f9fb266323cb80a27fb0958141836044605a2ee5523393371cc646fee2da37195aa35d0c0c5b4859ac03d7e91712dcaac5adab3650a3ff9d08ef7dd8404bb48869e5d958b5b87dadc4c9a1464e9f0d0326df7ebd86bd2e310cb1bf62d384d59441f2d70a070e1c60e09489929b988681bdd9cc97170bcc4c65595f71f8e0e3301337fc24a7732467831875a47f289652b0be5e4151e6d07316c1b0c0340d8ab92023e76d66a6b2840e36d2fb7a13fee632475e6edc367ea98a90fb98b7dd6310ca0328a44761582e1bab41befabcc0ec940d28bc5e93b68e064cab84e1d9beaeb48934eac1f53b01c1b000fca496aa54b61a99fcde61662a4b4b4b23d1680be9d426173e4df3602a48ea411989a4fd590f52a8fd156b05ed9d350e3defe3cfdf4b4c7ce770ea7d3fb9f520afbe1620daeee5c26735d20b9b9cfb6811a754a439e4e5c5639a4caa1e5caf586bfc0197b78702005cb9b4cae4cd3267ce8638fe964bd72b393e39d74928d242617303a756a37f284447770dcdbffc6384a05a85de1306e9a52057c7527c7131c3c42d3f475eb2303c82d4fc3276d6811db37efeb148723082d9b08f79f97c1e5729109a9a28307cc622d2d6cdf52b2b24efe548dedb00142009862cfa879ee1a71f6cec928353511472fbf4389148b0b0e0c108081412458dfe21c9f11351e67e7358595468246d1d1e5e38a6e9e851bc39d84ab502a669331dafec0d8ec7e3e8cb06e1a881d727d1ae40180a434a8c9db129a54126ad48a7358c2b4c5352c8c374bcccdab2bb37d8719cba79fab8211f9df218e0582c261e95f8bfc04f1a1e8bc5c4dfe0a190172af6a9690000000049454e44ae426082</data> + </image> +</images> +<connections> + <connection> + <sender>optionOverrideServer</sender> + <signal>toggled(bool)</signal> + <receiver>lblServer</receiver> + <slot>setEnabled(bool)</slot> + </connection> + <connection> + <sender>optionOverrideServer</sender> + <signal>toggled(bool)</signal> + <receiver>lblServerPort</receiver> + <slot>setEnabled(bool)</slot> + </connection> + <connection> + <sender>optionOverrideServer</sender> + <signal>toggled(bool)</signal> + <receiver>edtServerAddress</receiver> + <slot>setEnabled(bool)</slot> + </connection> + <connection> + <sender>optionOverrideServer</sender> + <signal>toggled(bool)</signal> + <receiver>edtServerPort</receiver> + <slot>setEnabled(bool)</slot> + </connection> +</connections> +<tabstops> + <tabstop>tabWidget7</tabstop> + <tabstop>edtAccountId</tabstop> + <tabstop>chkAutoLogin</tabstop> + <tabstop>buttonRegister</tabstop> + <tabstop>optionOverrideServer</tabstop> + <tabstop>edtServerAddress</tabstop> + <tabstop>edtServerPort</tabstop> + <tabstop>chkRequireAuth</tabstop> + <tabstop>chkHideIP</tabstop> + <tabstop>chkWebAware</tabstop> +</tabstops> +<layoutdefaults spacing="6" margin="11"/> +<includehints> + <includehint>kopetepasswordwidget.h</includehint> +</includehints> +</UI> diff --git a/kopete/protocols/oscar/icq/ui/icqeditaccountwidget.cpp b/kopete/protocols/oscar/icq/ui/icqeditaccountwidget.cpp new file mode 100644 index 00000000..e4b308be --- /dev/null +++ b/kopete/protocols/oscar/icq/ui/icqeditaccountwidget.cpp @@ -0,0 +1,190 @@ +/* + icqeditaccountwidget.cpp - ICQ Account Widget + + Copyright (c) 2003 by Chris TenHarmsel <tenharmsel@staticmethod.net> + Kopete (c) 2003 by the Kopete developers <kopete-devel@kde.org> + + ************************************************************************* + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ************************************************************************* +*/ + +#include "icqeditaccountwidget.h" +#include "icqeditaccountui.h" + +#include <qlayout.h> +#include <qcheckbox.h> +#include <qcombobox.h> +#include <qlineedit.h> +#include <qtextedit.h> +#include <qspinbox.h> +#include <qpushbutton.h> + +#include <kconfig.h> +#include <kdebug.h> +#include <kdialog.h> +#include <klocale.h> +#include <kiconloader.h> +#include <kjanuswidget.h> +#include <kurllabel.h> +#include <kdatewidget.h> +#include <krun.h> +#include <kpassdlg.h> + +#include "kopetepassword.h" +#include "kopetepasswordwidget.h" + +#include "icqprotocol.h" +#include "icqaccount.h" +#include "icqcontact.h" + +ICQEditAccountWidget::ICQEditAccountWidget(ICQProtocol *protocol, + Kopete::Account *account, QWidget *parent, const char *name) + : QWidget(parent, name), KopeteEditAccountWidget(account) +{ + kdDebug(14153) << k_funcinfo << "Called." << endl; + + mAccount=dynamic_cast<ICQAccount*>(account); + mProtocol=protocol; + + (new QVBoxLayout(this))->setAutoAdd(true); + mAccountSettings = new ICQEditAccountUI( this ); + + mProtocol->fillComboFromTable( mAccountSettings->encodingCombo, mProtocol->encodings() ); + + // Read in the settings from the account if it exists + if(mAccount) + { + mAccountSettings->edtAccountId->setText(mAccount->accountId()); + + // TODO: Remove me after we can change Account IDs (Matt) + mAccountSettings->edtAccountId->setDisabled(true); + mAccountSettings->mPasswordWidget->load(&mAccount->password()); + mAccountSettings->chkAutoLogin->setChecked(mAccount->excludeConnect()); + + QString serverEntry = mAccount->configGroup()->readEntry("Server", "login.oscar.aol.com"); + int portEntry = mAccount->configGroup()->readNumEntry("Port", 5190); + if ( serverEntry != "login.oscar.aol.com" || ( portEntry != 5190) ) + mAccountSettings->optionOverrideServer->setChecked( true ); + + mAccountSettings->edtServerAddress->setText( serverEntry ); + mAccountSettings->edtServerPort->setValue( portEntry ); + + bool configValue = mAccount->configGroup()->readBoolEntry( "RequireAuth", false ); + mAccountSettings->chkRequireAuth->setChecked( configValue ); + + configValue = mAccount->configGroup()->readBoolEntry( "HideIP", true ); + mAccountSettings->chkHideIP->setChecked( configValue ); + + configValue = mAccount->configGroup()->readBoolEntry( "WebAware", false ); + mAccountSettings->chkWebAware->setChecked( configValue ); + + int encodingValue = mAccount->configGroup()->readNumEntry( "DefaultEncoding", 4 ); + mProtocol->setComboFromTable( mAccountSettings->encodingCombo, + mProtocol->encodings(), + encodingValue ); + + // Global Identity + mAccountSettings->chkGlobalIdentity->setChecked( mAccount->configGroup()->readBoolEntry("ExcludeGlobalIdentity", false) ); + } + else + { + mProtocol->setComboFromTable( mAccountSettings->encodingCombo, + mProtocol->encodings(), + 4 ); + } + + QObject::connect(mAccountSettings->buttonRegister, SIGNAL(clicked()), this, SLOT(slotOpenRegister())); + + /* Set tab order to password custom widget correctly */ + QWidget::setTabOrder( mAccountSettings->edtAccountId, mAccountSettings->mPasswordWidget->mRemembered ); + QWidget::setTabOrder( mAccountSettings->mPasswordWidget->mRemembered, mAccountSettings->mPasswordWidget->mPassword ); + QWidget::setTabOrder( mAccountSettings->mPasswordWidget->mPassword, mAccountSettings->chkAutoLogin ); + +} + +Kopete::Account *ICQEditAccountWidget::apply() +{ + kdDebug(14153) << k_funcinfo << "Called." << endl; + + // If this is a new account, create it + if (!mAccount) + { + kdDebug(14153) << k_funcinfo << "Creating a new account" << endl; + mAccount = new ICQAccount(mProtocol, mAccountSettings->edtAccountId->text()); + if(!mAccount) + return NULL; + } + + mAccountSettings->mPasswordWidget->save(&mAccount->password()); + mAccount->setExcludeConnect(mAccountSettings->chkAutoLogin->isChecked()); + + bool configValue = mAccountSettings->chkRequireAuth->isChecked(); + mAccount->configGroup()->writeEntry( "RequireAuth", configValue ); + + configValue = mAccountSettings->chkHideIP->isChecked(); + mAccount->configGroup()->writeEntry( "HideIP", configValue ); + + configValue = mAccountSettings->chkWebAware->isChecked(); + mAccount->configGroup()->writeEntry( "WebAware", configValue ); + + int encodingMib = mProtocol->getCodeForCombo( mAccountSettings->encodingCombo, + mProtocol->encodings() ); + mAccount->configGroup()->writeEntry( "DefaultEncoding", encodingMib ); + + if ( mAccountSettings->optionOverrideServer->isChecked() ) + { + mAccount->setServerAddress(mAccountSettings->edtServerAddress->text()); + mAccount->setServerPort(mAccountSettings->edtServerPort->value()); + } + else + { + mAccount->setServerAddress("login.oscar.aol.com"); + mAccount->setServerPort(5190); + } + + // Global Identity + mAccount->configGroup()->writeEntry( "ExcludeGlobalIdentity", mAccountSettings->chkGlobalIdentity->isChecked() ); + + return mAccount; +} + +bool ICQEditAccountWidget::validateData() +{ + kdDebug(14153) << k_funcinfo << "Called." << endl; + + QString userName = mAccountSettings->edtAccountId->text(); + + if (userName.isEmpty()) + return false; + + for (unsigned int i=0; i<userName.length(); i++) + { + if(!(userName[i]).isNumber()) + return false; + } + + // No need to check port, min and max values are properly defined in .ui + + if (mAccountSettings->edtServerAddress->text().isEmpty()) + return false; + + // Seems good to me + kdDebug(14153) << k_funcinfo << + "Account data validated successfully." << endl; + return true; +} + +void ICQEditAccountWidget::slotOpenRegister() +{ + KRun::runURL( "http://go.icq.com/register/", "text/html" ); +} + +#include "icqeditaccountwidget.moc" +// vim: set noet ts=4 sts=4 sw=4: +// kate: indent-mode csands; space-indent off; replace-tabs off; diff --git a/kopete/protocols/oscar/icq/ui/icqeditaccountwidget.h b/kopete/protocols/oscar/icq/ui/icqeditaccountwidget.h new file mode 100644 index 00000000..fc5c6d38 --- /dev/null +++ b/kopete/protocols/oscar/icq/ui/icqeditaccountwidget.h @@ -0,0 +1,52 @@ +/* + icqeditaccountwidget.h - ICQ Account Widget + + Copyright (c) 2003 by Chris TenHarmsel <tenharmsel@staticmethod.net> + Copyright (c) 2004-2005 by Matt Rogers <mattr@kde.org> + Kopete (c) 2002-2005 by the Kopete developers <kopete-devel@kde.org> + + ************************************************************************* + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ************************************************************************* +*/ + +#ifndef ICQEDITACCOUNTWIDGET_H +#define ICQEDITACCOUNTWIDGET_H + +#include <qwidget.h> +#include <qdatetime.h> +#include "editaccountwidget.h" + +namespace Kopete { class Account; } + +class ICQAccount; +class ICQProtocol; +class ICQEditAccountUI; + +class ICQEditAccountWidget : public QWidget, public KopeteEditAccountWidget +{ +Q_OBJECT + +public: + ICQEditAccountWidget(ICQProtocol *, Kopete::Account *, + QWidget *parent=0, const char *name=0); + + virtual bool validateData(); + virtual Kopete::Account *apply(); + +private slots: + void slotOpenRegister(); + +protected: + ICQAccount *mAccount; + ICQProtocol *mProtocol; + ICQEditAccountUI *mAccountSettings; +}; +#endif +// vim: set noet ts=4 sts=4 sw=4: +// kate: indent-mode csands; space-indent off; replace-tabs off; diff --git a/kopete/protocols/oscar/icq/ui/icqgeneralinfo.ui b/kopete/protocols/oscar/icq/ui/icqgeneralinfo.ui new file mode 100644 index 00000000..6383bec1 --- /dev/null +++ b/kopete/protocols/oscar/icq/ui/icqgeneralinfo.ui @@ -0,0 +1,611 @@ +<!DOCTYPE UI><UI version="3.3" stdsetdef="1"> +<class>ICQGeneralInfoWidget</class> +<widget class="QWidget"> + <property name="name"> + <cstring>ICQGeneralInfoWidget</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>488</width> + <height>572</height> + </rect> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QGroupBox" row="1" column="0"> + <property name="name"> + <cstring>groupBox2</cstring> + </property> + <property name="title"> + <string>Location && Contact Information</string> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel" row="1" column="0"> + <property name="name"> + <cstring>textLabel2</cstring> + </property> + <property name="text"> + <string>&City:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>cityEdit</cstring> + </property> + </widget> + <widget class="QLabel" row="0" column="0"> + <property name="name"> + <cstring>textLabel1</cstring> + </property> + <property name="text"> + <string>&Address:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>addressEdit</cstring> + </property> + </widget> + <widget class="QLabel" row="3" column="0"> + <property name="name"> + <cstring>textLabel5</cstring> + </property> + <property name="text"> + <string>&Phone:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>phoneEdit</cstring> + </property> + </widget> + <widget class="QLabel" row="1" column="2"> + <property name="name"> + <cstring>textLabel4</cstring> + </property> + <property name="text"> + <string>&State:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>stateEdit</cstring> + </property> + </widget> + <widget class="QLineEdit" row="1" column="1"> + <property name="name"> + <cstring>cityEdit</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>1</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLabel" row="2" column="2"> + <property name="name"> + <cstring>textLabel8</cstring> + </property> + <property name="text"> + <string>Countr&y:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>countryEdit</cstring> + </property> + </widget> + <widget class="QLineEdit" row="6" column="1" rowspan="1" colspan="3"> + <property name="name"> + <cstring>homepageEdit</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>3</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLabel" row="5" column="0"> + <property name="name"> + <cstring>textLabel9</cstring> + </property> + <property name="text"> + <string>&Email:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>emailEdit</cstring> + </property> + </widget> + <widget class="QLineEdit" row="5" column="1" rowspan="1" colspan="3"> + <property name="name"> + <cstring>emailEdit</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>3</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLabel" row="6" column="0"> + <property name="name"> + <cstring>textLabel10_2</cstring> + </property> + <property name="text"> + <string>&Homepage:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>homepageEdit</cstring> + </property> + </widget> + <widget class="QLineEdit" row="3" column="3"> + <property name="name"> + <cstring>cellEdit</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLineEdit" row="2" column="3"> + <property name="name"> + <cstring>countryEdit</cstring> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLineEdit" row="1" column="3"> + <property name="name"> + <cstring>stateEdit</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>1</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLabel" row="4" column="0"> + <property name="name"> + <cstring>textLabel7_2</cstring> + </property> + <property name="text"> + <string>Fa&x:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>faxEdit</cstring> + </property> + </widget> + <widget class="QLineEdit" row="4" column="1"> + <property name="name"> + <cstring>faxEdit</cstring> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLineEdit" row="3" column="1"> + <property name="name"> + <cstring>phoneEdit</cstring> + </property> + <property name="text"> + <string></string> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLabel" row="3" column="2"> + <property name="name"> + <cstring>textLabel6_2</cstring> + </property> + <property name="text"> + <string>Ce&ll:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>cellEdit</cstring> + </property> + </widget> + <widget class="QLineEdit" row="0" column="1" rowspan="1" colspan="3"> + <property name="name"> + <cstring>addressEdit</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>3</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLabel" row="2" column="0"> + <property name="name"> + <cstring>textLabel3</cstring> + </property> + <property name="text"> + <string>&Zip:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>zipEdit</cstring> + </property> + </widget> + <widget class="QLineEdit" row="2" column="1"> + <property name="name"> + <cstring>zipEdit</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string></string> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + </grid> + </widget> + <widget class="QGroupBox" row="0" column="0"> + <property name="name"> + <cstring>groupBox4</cstring> + </property> + <property name="title"> + <string>Personal Information</string> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLineEdit" row="0" column="3"> + <property name="name"> + <cstring>uinEdit</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>1</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLabel" row="1" column="0"> + <property name="name"> + <cstring>fullNameLabel</cstring> + </property> + <property name="text"> + <string>&Full name:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>fullNameEdit</cstring> + </property> + </widget> + <widget class="QLineEdit" row="1" column="3"> + <property name="name"> + <cstring>ipEdit</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>125</width> + <height>0</height> + </size> + </property> + <property name="text"> + <string></string> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLineEdit" row="2" column="3"> + <property name="name"> + <cstring>timezoneEdit</cstring> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLineEdit" row="0" column="1"> + <property name="name"> + <cstring>nickNameEdit</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>2</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLabel" row="0" column="0"> + <property name="name"> + <cstring>nickNameLabel</cstring> + </property> + <property name="text"> + <string>&Nickname:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>nickNameEdit</cstring> + </property> + </widget> + <widget class="QLabel" row="0" column="2"> + <property name="name"> + <cstring>uinLabel</cstring> + </property> + <property name="text"> + <string>&UIN #:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>uinEdit</cstring> + </property> + </widget> + <widget class="QLabel" row="3" column="0"> + <property name="name"> + <cstring>birthdayLabel</cstring> + </property> + <property name="text"> + <string>&Birthday:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>birthday</cstring> + </property> + </widget> + <widget class="QSpinBox" row="3" column="3"> + <property name="name"> + <cstring>ageSpinBox</cstring> + </property> + </widget> + <widget class="QLabel" row="2" column="0"> + <property name="name"> + <cstring>textLabel6</cstring> + </property> + <property name="text"> + <string>Gen&der:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>genderEdit</cstring> + </property> + </widget> + <widget class="QLineEdit" row="3" column="1"> + <property name="name"> + <cstring>birthday</cstring> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLineEdit" row="1" column="1"> + <property name="name"> + <cstring>fullNameEdit</cstring> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLineEdit" row="2" column="1"> + <property name="name"> + <cstring>genderEdit</cstring> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLabel" row="1" column="2"> + <property name="name"> + <cstring>ipLabel</cstring> + </property> + <property name="text"> + <string>&IP:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>ipEdit</cstring> + </property> + </widget> + <widget class="QLabel" row="2" column="2"> + <property name="name"> + <cstring>textLabel7</cstring> + </property> + <property name="text"> + <string>&Timezone:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>timezoneEdit</cstring> + </property> + </widget> + <widget class="QLabel" row="4" column="0"> + <property name="name"> + <cstring>maritalLabel</cstring> + </property> + <property name="text"> + <string>Marital status:</string> + </property> + </widget> + <widget class="QLabel" row="3" column="2"> + <property name="name"> + <cstring>textLabel10</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>0</hsizetype> + <vsizetype>5</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>A&ge:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>ageSpinBox</cstring> + </property> + </widget> + <widget class="QLineEdit" row="4" column="1" rowspan="1" colspan="3"> + <property name="name"> + <cstring>marital</cstring> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + </grid> + </widget> + <widget class="QGroupBox" row="2" column="0"> + <property name="name"> + <cstring>groupBox3</cstring> + </property> + <property name="title"> + <string>Origin</string> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLineEdit" row="1" column="1"> + <property name="name"> + <cstring>oStateEdit</cstring> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLineEdit" row="2" column="1"> + <property name="name"> + <cstring>oCountryEdit</cstring> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLineEdit" row="0" column="1"> + <property name="name"> + <cstring>oCityEdit</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLabel" row="0" column="0"> + <property name="name"> + <cstring>textLabel2_2</cstring> + </property> + <property name="text"> + <string>City:</string> + </property> + </widget> + <widget class="QLabel" row="2" column="0"> + <property name="name"> + <cstring>textLabel3_2</cstring> + </property> + <property name="text"> + <string>Country:</string> + </property> + </widget> + <widget class="QLabel" row="1" column="0"> + <property name="name"> + <cstring>textLabel1_2</cstring> + </property> + <property name="text"> + <string>State:</string> + </property> + </widget> + </grid> + </widget> + <spacer row="3" column="0"> + <property name="name"> + <cstring>spacer4</cstring> + </property> + <property name="orientation"> + <enum>Vertical</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>21</width> + <height>20</height> + </size> + </property> + </spacer> + </grid> +</widget> +<tabstops> + <tabstop>nickNameEdit</tabstop> + <tabstop>fullNameEdit</tabstop> + <tabstop>genderEdit</tabstop> + <tabstop>uinEdit</tabstop> + <tabstop>ipEdit</tabstop> + <tabstop>timezoneEdit</tabstop> + <tabstop>ageSpinBox</tabstop> + <tabstop>addressEdit</tabstop> + <tabstop>cityEdit</tabstop> + <tabstop>stateEdit</tabstop> + <tabstop>zipEdit</tabstop> + <tabstop>countryEdit</tabstop> + <tabstop>phoneEdit</tabstop> + <tabstop>faxEdit</tabstop> + <tabstop>cellEdit</tabstop> + <tabstop>emailEdit</tabstop> + <tabstop>homepageEdit</tabstop> +</tabstops> +<layoutdefaults spacing="6" margin="11"/> +</UI> diff --git a/kopete/protocols/oscar/icq/ui/icqinterestinfowidget.ui b/kopete/protocols/oscar/icq/ui/icqinterestinfowidget.ui new file mode 100644 index 00000000..ce4041c9 --- /dev/null +++ b/kopete/protocols/oscar/icq/ui/icqinterestinfowidget.ui @@ -0,0 +1,116 @@ +<!DOCTYPE UI><UI version="3.3" stdsetdef="1"> +<class>ICQInterestInfoWidget</class> +<widget class="QWidget"> + <property name="name"> + <cstring>ICQInterestInfoWidget</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>660</width> + <height>572</height> + </rect> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QButtonGroup" row="0" column="0"> + <property name="name"> + <cstring>buttonGroup1</cstring> + </property> + <property name="title"> + <string>Interests</string> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLineEdit" row="0" column="1"> + <property name="name"> + <cstring>desc1</cstring> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLineEdit" row="1" column="1"> + <property name="name"> + <cstring>desc2</cstring> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLineEdit" row="2" column="1"> + <property name="name"> + <cstring>desc3</cstring> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLineEdit" row="1" column="0"> + <property name="name"> + <cstring>topic2</cstring> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLineEdit" row="0" column="0"> + <property name="name"> + <cstring>topic1</cstring> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLineEdit" row="2" column="0"> + <property name="name"> + <cstring>topic3</cstring> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLineEdit" row="3" column="0"> + <property name="name"> + <cstring>topic4</cstring> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLineEdit" row="3" column="1"> + <property name="name"> + <cstring>desc4</cstring> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + </grid> + </widget> + <spacer row="1" column="0"> + <property name="name"> + <cstring>spacer2</cstring> + </property> + <property name="orientation"> + <enum>Vertical</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>220</height> + </size> + </property> + </spacer> + </grid> +</widget> +<layoutdefaults spacing="6" margin="11"/> +</UI> diff --git a/kopete/protocols/oscar/icq/ui/icqotherinfowidget.ui b/kopete/protocols/oscar/icq/ui/icqotherinfowidget.ui new file mode 100644 index 00000000..4e5a3a34 --- /dev/null +++ b/kopete/protocols/oscar/icq/ui/icqotherinfowidget.ui @@ -0,0 +1,68 @@ +<!DOCTYPE UI><UI version="3.3" stdsetdef="1"> +<class>ICQOtherInfoWidget</class> +<widget class="QWidget"> + <property name="name"> + <cstring>ICQOtherInfoWidget</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>289</width> + <height>473</height> + </rect> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <spacer row="4" column="1"> + <property name="name"> + <cstring>spacer8</cstring> + </property> + <property name="orientation"> + <enum>Vertical</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>30</height> + </size> + </property> + </spacer> + <widget class="QLabel" row="0" column="0"> + <property name="name"> + <cstring>textLabel12</cstring> + </property> + <property name="text"> + <string>Email addresses:</string> + </property> + </widget> + <widget class="QListBox" row="1" column="0" rowspan="1" colspan="2"> + <property name="name"> + <cstring>emailListBox</cstring> + </property> + </widget> + <widget class="QLabel" row="2" column="0" rowspan="1" colspan="2"> + <property name="name"> + <cstring>textLabel13</cstring> + </property> + <property name="text"> + <string>Contact notes:</string> + </property> + </widget> + <widget class="QTextEdit" row="3" column="0" rowspan="1" colspan="2"> + <property name="name"> + <cstring>notesEdit</cstring> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + </grid> +</widget> +<layoutdefaults spacing="6" margin="11"/> +</UI> diff --git a/kopete/protocols/oscar/icq/ui/icqsearchbase.ui b/kopete/protocols/oscar/icq/ui/icqsearchbase.ui new file mode 100644 index 00000000..68e59281 --- /dev/null +++ b/kopete/protocols/oscar/icq/ui/icqsearchbase.ui @@ -0,0 +1,493 @@ +<!DOCTYPE UI><UI version="3.3" stdsetdef="1"> +<class>ICQSearchBase</class> +<widget class="QWidget"> + <property name="name"> + <cstring>ICQSearchBase</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>603</width> + <height>465</height> + </rect> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="KPushButton" row="4" column="1"> + <property name="name"> + <cstring>clearButton</cstring> + </property> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="text"> + <string>C&lear</string> + </property> + <property name="stdItem" stdset="0"> + <number>10</number> + </property> + <property name="whatsThis" stdset="0"> + <string>Clear the results</string> + </property> + </widget> + <widget class="KPushButton" row="7" column="1"> + <property name="name"> + <cstring>closeButton</cstring> + </property> + <property name="text"> + <string>&Close</string> + </property> + <property name="stdItem" stdset="0"> + <number>13</number> + </property> + <property name="whatsThis" stdset="0"> + <string>Close this dialog</string> + </property> + </widget> + <widget class="KPushButton" row="3" column="1"> + <property name="name"> + <cstring>stopButton</cstring> + </property> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="text"> + <string>Stop</string> + </property> + <property name="accel"> + <string></string> + </property> + <property name="stdItem" stdset="0"> + <number>26</number> + </property> + <property name="whatsThis" stdset="0"> + <string>Stops the search</string> + </property> + </widget> + <widget class="KPushButton" row="5" column="1"> + <property name="name"> + <cstring>addButton</cstring> + </property> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="text"> + <string>Add</string> + </property> + <property name="accel"> + <string></string> + </property> + <property name="stdItem" stdset="0"> + <number>27</number> + </property> + <property name="whatsThis" stdset="0"> + <string>Add the selected user to your contact list</string> + </property> + </widget> + <widget class="KPushButton" row="6" column="1"> + <property name="name"> + <cstring>userInfoButton</cstring> + </property> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="text"> + <string>User Info</string> + </property> + <property name="accel"> + <string></string> + </property> + <property name="whatsThis" stdset="0"> + <string>Show information about the selected contact</string> + </property> + </widget> + <spacer row="0" column="1"> + <property name="name"> + <cstring>spacer6</cstring> + </property> + <property name="orientation"> + <enum>Vertical</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>41</width> + <height>190</height> + </size> + </property> + </spacer> + <widget class="QTabWidget" row="0" column="0"> + <property name="name"> + <cstring>tabWidget3</cstring> + </property> + <widget class="QWidget"> + <property name="name"> + <cstring>tab</cstring> + </property> + <attribute name="title"> + <string>UIN Search</string> + </attribute> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel" row="0" column="0"> + <property name="name"> + <cstring>textLabel1</cstring> + </property> + <property name="text"> + <string>&UIN #:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>uin</cstring> + </property> + </widget> + <widget class="QLineEdit" row="0" column="1"> + <property name="name"> + <cstring>uin</cstring> + </property> + </widget> + <spacer row="1" column="1"> + <property name="name"> + <cstring>spacer4</cstring> + </property> + <property name="orientation"> + <enum>Vertical</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>105</height> + </size> + </property> + </spacer> + </grid> + </widget> + <widget class="QWidget"> + <property name="name"> + <cstring>tab</cstring> + </property> + <attribute name="title"> + <string>ICQ Whitepages Search</string> + </attribute> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLineEdit" row="1" column="3"> + <property name="name"> + <cstring>lastName</cstring> + </property> + </widget> + <widget class="QLineEdit" row="0" column="1"> + <property name="name"> + <cstring>nickName</cstring> + </property> + </widget> + <widget class="QLabel" row="1" column="2"> + <property name="name"> + <cstring>textLabel4</cstring> + </property> + <property name="text"> + <string>&Last name:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>lastName</cstring> + </property> + </widget> + <widget class="QLabel" row="0" column="2"> + <property name="name"> + <cstring>textLabel3</cstring> + </property> + <property name="text"> + <string>&First name:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>firstName</cstring> + </property> + </widget> + <widget class="QLabel" row="1" column="0"> + <property name="name"> + <cstring>textLabel6</cstring> + </property> + <property name="text"> + <string>&Email:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>email</cstring> + </property> + </widget> + <widget class="QLabel" row="0" column="0"> + <property name="name"> + <cstring>textLabel2</cstring> + </property> + <property name="text"> + <string>&Nickname:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>nickName</cstring> + </property> + </widget> + <widget class="QComboBox" row="3" column="3"> + <property name="name"> + <cstring>country</cstring> + </property> + </widget> + <widget class="QLabel" row="3" column="0"> + <property name="name"> + <cstring>textLabel9</cstring> + </property> + <property name="text"> + <string>Lan&guage:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>language</cstring> + </property> + </widget> + <widget class="QComboBox" row="3" column="1"> + <property name="name"> + <cstring>language</cstring> + </property> + </widget> + <widget class="QLineEdit" row="2" column="3"> + <property name="name"> + <cstring>city</cstring> + </property> + </widget> + <widget class="QLabel" row="2" column="2"> + <property name="name"> + <cstring>textLabel10</cstring> + </property> + <property name="text"> + <string>&City:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>city</cstring> + </property> + </widget> + <widget class="QLineEdit" row="0" column="3"> + <property name="name"> + <cstring>firstName</cstring> + </property> + </widget> + <widget class="QLineEdit" row="1" column="1"> + <property name="name"> + <cstring>email</cstring> + </property> + </widget> + <widget class="QLabel" row="2" column="0"> + <property name="name"> + <cstring>textLabel8</cstring> + </property> + <property name="text"> + <string>&Gender:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>gender</cstring> + </property> + </widget> + <widget class="QComboBox" row="2" column="1"> + <property name="name"> + <cstring>gender</cstring> + </property> + </widget> + <widget class="QCheckBox" row="4" column="0" rowspan="1" colspan="2"> + <property name="name"> + <cstring>onlyOnline</cstring> + </property> + <property name="text"> + <string>Only search for online contacts</string> + </property> + </widget> + <widget class="QLabel" row="3" column="2"> + <property name="name"> + <cstring>textLabel11</cstring> + </property> + <property name="text"> + <string>C&ountry:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>country</cstring> + </property> + </widget> + <spacer row="5" column="1"> + <property name="name"> + <cstring>spacer5</cstring> + </property> + <property name="orientation"> + <enum>Vertical</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>16</height> + </size> + </property> + </spacer> + <spacer row="4" column="2" rowspan="1" colspan="2"> + <property name="name"> + <cstring>spacer3</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>166</width> + <height>20</height> + </size> + </property> + </spacer> + </grid> + </widget> + </widget> + <widget class="KListView" row="1" column="0" rowspan="7" colspan="1"> + <column> + <property name="text"> + <string>UIN</string> + </property> + <property name="clickable"> + <bool>true</bool> + </property> + <property name="resizable"> + <bool>true</bool> + </property> + </column> + <column> + <property name="text"> + <string>Nickname</string> + </property> + <property name="clickable"> + <bool>true</bool> + </property> + <property name="resizable"> + <bool>true</bool> + </property> + </column> + <column> + <property name="text"> + <string>First Name</string> + </property> + <property name="clickable"> + <bool>true</bool> + </property> + <property name="resizable"> + <bool>true</bool> + </property> + </column> + <column> + <property name="text"> + <string>Last Name</string> + </property> + <property name="clickable"> + <bool>true</bool> + </property> + <property name="resizable"> + <bool>true</bool> + </property> + </column> + <column> + <property name="text"> + <string>Email</string> + </property> + <property name="clickable"> + <bool>true</bool> + </property> + <property name="resizable"> + <bool>true</bool> + </property> + </column> + <column> + <property name="text"> + <string>Requires Authorization?</string> + </property> + <property name="clickable"> + <bool>true</bool> + </property> + <property name="resizable"> + <bool>true</bool> + </property> + </column> + <property name="name"> + <cstring>searchResults</cstring> + </property> + <property name="allColumnsShowFocus"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string>This is where the results from your search are displayed. If you double-click a result, the search window will close and pass the UIN of the contact you wish to add back to the Add Contact Wizard. You can only add one contact at a time.</string> + </property> + </widget> + <widget class="KPushButton" row="1" column="1"> + <property name="name"> + <cstring>searchButton</cstring> + </property> + <property name="text"> + <string>&Search</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Search the ICQ Whitepages with your search criteria</string> + </property> + </widget> + <widget class="KPushButton" row="2" column="1"> + <property name="name"> + <cstring>newSearchButton</cstring> + </property> + <property name="enabled"> + <bool>true</bool> + </property> + <property name="text"> + <string>New Search</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Clears both search fields and results</string> + </property> + </widget> + </grid> +</widget> +<tabstops> + <tabstop>tabWidget3</tabstop> + <tabstop>uin</tabstop> + <tabstop>nickName</tabstop> + <tabstop>firstName</tabstop> + <tabstop>email</tabstop> + <tabstop>lastName</tabstop> + <tabstop>gender</tabstop> + <tabstop>city</tabstop> + <tabstop>language</tabstop> + <tabstop>country</tabstop> + <tabstop>onlyOnline</tabstop> + <tabstop>searchButton</tabstop> + <tabstop>stopButton</tabstop> + <tabstop>clearButton</tabstop> + <tabstop>addButton</tabstop> + <tabstop>userInfoButton</tabstop> + <tabstop>closeButton</tabstop> + <tabstop>searchResults</tabstop> +</tabstops> +<layoutdefaults spacing="6" margin="11"/> +<includehints> + <includehint>kpushbutton.h</includehint> + <includehint>kpushbutton.h</includehint> + <includehint>kpushbutton.h</includehint> + <includehint>kpushbutton.h</includehint> + <includehint>kpushbutton.h</includehint> + <includehint>klistview.h</includehint> + <includehint>kpushbutton.h</includehint> + <includehint>kpushbutton.h</includehint> +</includehints> +</UI> diff --git a/kopete/protocols/oscar/icq/ui/icqsearchdialog.cpp b/kopete/protocols/oscar/icq/ui/icqsearchdialog.cpp new file mode 100644 index 00000000..0010166a --- /dev/null +++ b/kopete/protocols/oscar/icq/ui/icqsearchdialog.cpp @@ -0,0 +1,320 @@ +/* + Kopete Oscar Protocol + icqsearchdialog.cpp - search for people + + Copyright (c) 2005 Matt Rogers <mattr@kde.org> + + Kopete (c) 2002-2005 by the Kopete developers <kopete-devel@kde.org> + + ************************************************************************* + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Lesser General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + ************************************************************************* +*/ + +#include "icqsearchdialog.h" + +#include <qlineedit.h> +#include <qcheckbox.h> +#include <qcombobox.h> +#include <qlayout.h> +#include <qtextcodec.h> +#include <qtabwidget.h> +#include <kdebug.h> +#include <kiconloader.h> +#include <klistview.h> +#include <klocale.h> +#include <kpushbutton.h> +#include <kmessagebox.h> + +#include "kopeteuiglobal.h" + +#include "icqaccount.h" +#include "icqaddcontactpage.h" +#include "icqprotocol.h" +#include "icqsearchbase.h" +#include "oscartypes.h" +#include "icqcontact.h" +#include "icquserinfowidget.h" + +ICQSearchDialog::ICQSearchDialog( ICQAccount* account, QWidget* parent, const char* name ) +: KDialogBase( parent, name, true, i18n( "ICQ User Search" ), 0, NoDefault ) +{ + m_account = account; + m_searchUI = new ICQSearchBase( this, name ); + setMainWidget( m_searchUI ); + connect( m_searchUI->searchButton, SIGNAL( clicked() ), this, SLOT( startSearch() ) ); + connect( m_searchUI->searchResults, SIGNAL( selectionChanged() ), this, SLOT( resultSelectionChanged() ) ); + connect( m_searchUI->addButton, SIGNAL( clicked() ), this, SLOT( addContact() ) ); + connect( m_searchUI->clearButton, SIGNAL( clicked() ), this, SLOT( clearResults() ) ); + connect( m_searchUI->stopButton, SIGNAL( clicked() ), this, SLOT( stopSearch() ) ); + connect( m_searchUI->closeButton, SIGNAL( clicked() ), this, SLOT( closeDialog() ) ); + connect( m_searchUI->userInfoButton, SIGNAL( clicked() ), this, SLOT( userInfo() ) ); + connect( m_searchUI->newSearchButton, SIGNAL( clicked() ), this, SLOT( newSearch() ) ); + + ICQProtocol *p = ICQProtocol::protocol(); + p->fillComboFromTable( m_searchUI->gender, p->genders() ); + p->fillComboFromTable( m_searchUI->country, p->countries() ); + p->fillComboFromTable( m_searchUI->language, p->languages() ); + + m_contact = NULL; + m_infoWidget = NULL; + + m_contact = NULL; + m_infoWidget = NULL; +} + + +ICQSearchDialog::~ICQSearchDialog() +{ +} + +void ICQSearchDialog::startSearch() +{ + // Doing the search only if the account is online, otherwise warn the user + if(!m_account->isConnected()) + { + // Account currently offline + m_searchUI->searchButton->setEnabled( false ); + KMessageBox::sorry( this, i18n("You must be online to search the ICQ Whitepages."), i18n("ICQ Plugin") ); + } + else + { + // Account is online + clearResults(); + + m_searchUI->stopButton->setEnabled( true ); + m_searchUI->searchButton->setEnabled( false ); + m_searchUI->newSearchButton->setEnabled( false ); + + connect( m_account->engine(), SIGNAL( gotSearchResults( const ICQSearchResult& ) ), + this, SLOT( newResult( const ICQSearchResult& ) ) ); + connect( m_account->engine(), SIGNAL( endOfSearch( int ) ), + this, SLOT( searchFinished( int ) ) ); + + const QWidget* currentPage = m_searchUI->tabWidget3->currentPage(); + + if ( currentPage == m_searchUI->tab ) + { + if( m_searchUI->uin->text().isEmpty() || m_searchUI->uin->text().toULong() == 0 ) + { + // Invalid UIN + stopSearch(); + clearResults(); + KMessageBox::sorry( this, i18n("You must enter a valid UIN."), i18n("ICQ Plugin") ); + kdDebug(OSCAR_RAW_DEBUG) << k_funcinfo << "Search aborted: invalid UIN " << m_searchUI->uin->text() << endl; + } + else + { + //doing a uin search + m_account->engine()->uinSearch( m_searchUI->uin->text() ); + } + } + else if ( currentPage == m_searchUI->tab_2 ) + { + //create a ICQWPSearchInfo struct and send it + ICQProtocol* p = ICQProtocol::protocol(); + ICQWPSearchInfo info; + QTextCodec* codec = m_account->defaultCodec(); + info.firstName = codec->fromUnicode( m_searchUI->firstName->text() ); + info.lastName = codec->fromUnicode( m_searchUI->lastName->text() ); + info.nickName = codec->fromUnicode( m_searchUI->nickName->text() ); + info.email = codec->fromUnicode( m_searchUI->email->text() ); + info.city = codec->fromUnicode( m_searchUI->city->text() ); // City + info.gender = p->getCodeForCombo(m_searchUI->gender, p->genders()); // Gender + info.language = p->getCodeForCombo(m_searchUI->language, p->languages()); // Lang + info.country =p->getCodeForCombo(m_searchUI->country, p->countries()); // country code + info.onlineOnly = m_searchUI->onlyOnline->isChecked(); + + // Check if the user has actually entered things to search + if( info.firstName.isEmpty() && + info.lastName.isEmpty() && + info.nickName.isEmpty() && + info.email.isEmpty() && + info.city.isEmpty() && + (info.gender == 0) && + (info.language == 0) && + (info.country == 0) + ) + { + // All fields were blank + stopSearch(); + clearResults(); + KMessageBox::information(this, i18n("You must enter search criteria."), i18n("ICQ Plugin") ); + kdDebug(OSCAR_ICQ_DEBUG) << k_funcinfo << "Search aborted: all fields were blank" << endl; + } + else + { + // Start the search + m_account->engine()->whitePagesSearch( info ); + kdDebug(OSCAR_RAW_DEBUG) << k_funcinfo << "Starting whitepage search" << endl; + } + } + } +} + +void ICQSearchDialog::stopSearch() +{ + disconnect( m_account->engine(), SIGNAL( gotSearchResults( const ICQSearchResult& ) ), + this, SLOT( newResult( const ICQSearchResult& ) ) ); + disconnect( m_account->engine(), SIGNAL( endOfSearch( int ) ), + this, SLOT( searchFinished( int ) ) ); + + m_searchUI->stopButton->setEnabled( false ); + m_searchUI->searchButton->setEnabled( true ); + m_searchUI->newSearchButton->setEnabled( true ); +} + +void ICQSearchDialog::addContact() +{ + ICQAddContactPage* iacp = dynamic_cast<ICQAddContactPage*>( parent() ); + if ( !iacp ) + { + kdDebug(OSCAR_ICQ_DEBUG) << k_funcinfo << "The ICQ ACP is not our parent!!" << endl; + } + else + { + QString uin = m_searchUI->searchResults->selectedItem()->text( 0 ); + kdDebug(OSCAR_ICQ_DEBUG) << k_funcinfo << "Passing " << uin << " back to the ACP" << endl; + iacp->setUINFromSearch( uin ); + + // Closing the dialog + closeDialog(); + } +} + +void ICQSearchDialog::userInfo() +{ + // Lookup user info only if the account is online, otherwise warn the user + if(!m_account->isConnected()) + { + // Account currently offline + KMessageBox::sorry( this, i18n("You must be online to display user info."), i18n("ICQ Plugin") ); + } + else + { + // Account currently online + m_contact = new ICQContact( m_account, + m_searchUI->searchResults->selectedItem()->text( 0 ), + NULL); + + m_infoWidget = new ICQUserInfoWidget( Kopete::UI::Global::mainWidget(), "icq info" ); + QObject::connect( m_infoWidget, SIGNAL( finished() ), this, SLOT( closeUserInfo() ) ); + + m_infoWidget->setContact( m_contact ); + m_infoWidget->setModal(true); + m_infoWidget->show(); + if ( m_contact->account()->isConnected() ) + m_account->engine()->requestFullInfo( m_contact->contactId() ); + kdDebug(OSCAR_ICQ_DEBUG) << k_funcinfo << "Displaying user info" << endl; + } +} + +void ICQSearchDialog::closeUserInfo() +{ + // Free the ICQUserInfoWidget + QObject::disconnect( this, 0, m_infoWidget, 0 ); + m_infoWidget->delayedDestruct(); + m_infoWidget = NULL; + + // Free the ICQContact + delete m_contact; + m_contact = NULL; +} + +void ICQSearchDialog::clearResults() +{ + stopSearch(); + m_searchUI->searchResults->clear(); + m_searchUI->addButton->setEnabled( false ); + m_searchUI->userInfoButton->setEnabled( false ); + m_searchUI->searchButton->setEnabled( true ); +} + +void ICQSearchDialog::closeDialog() +{ + stopSearch(); + clearResults(); + clearFields(); + + slotClose(); +} + +void ICQSearchDialog::resultSelectionChanged() +{ + if ( !m_searchUI->searchResults->selectedItem() ) + { + m_searchUI->addButton->setEnabled( false ); + m_searchUI->userInfoButton->setEnabled( false ); + } + else + { + m_searchUI->addButton->setEnabled( true ); + m_searchUI->userInfoButton->setEnabled( true ); + } +} + +void ICQSearchDialog::newResult( const ICQSearchResult& info ) +{ + if ( info.uin == 1 ) + { + //TODO update progress + return; + } + + QTextCodec* codec = m_account->defaultCodec(); + + QListViewItem *item = new QListViewItem( m_searchUI->searchResults, QString::number( info.uin ), + codec->toUnicode( info.nickName ), + codec->toUnicode( info.firstName ), + codec->toUnicode( info.lastName ), + codec->toUnicode( info.email ), + info.auth ? i18n( "Yes" ) : i18n( "No" ) ); + + if ( !item ) + return; + + if ( info.online ) + item->setPixmap( 0, SmallIcon( "icq_online" ) ); + else + item->setPixmap( 0, SmallIcon( "icq_offline" ) ); + +} + +void ICQSearchDialog::searchFinished( int numLeft ) +{ + kdWarning(OSCAR_ICQ_DEBUG) << k_funcinfo << "There are " << numLeft << "contact left out of this search" << endl; + m_searchUI->stopButton->setEnabled( false ); + m_searchUI->clearButton->setEnabled( true ); + m_searchUI->searchButton->setEnabled( true ); + m_searchUI->newSearchButton->setEnabled( true ); +} + +void ICQSearchDialog::clearFields() +{ + m_searchUI->uin->setText( QString::null ); + + m_searchUI->firstName->setText( QString::null ); + m_searchUI->lastName->setText( QString::null ); + m_searchUI->nickName->setText( QString::null ); + m_searchUI->email->setText( QString::null ); + m_searchUI->city->setText( QString::null ); + m_searchUI->gender->setCurrentItem( 0 ); // Unspecified + m_searchUI->country->setCurrentItem( 0 ); + m_searchUI->language->setCurrentItem( 0 ); + m_searchUI->onlyOnline->setChecked( false ); +} + +void ICQSearchDialog::newSearch() +{ + clearResults(); + clearFields(); +} + +//kate: indent-mode csands; space-indent off; replace-tabs off; tab-width 4; + +#include "icqsearchdialog.moc" diff --git a/kopete/protocols/oscar/icq/ui/icqsearchdialog.h b/kopete/protocols/oscar/icq/ui/icqsearchdialog.h new file mode 100644 index 00000000..b14aa2a1 --- /dev/null +++ b/kopete/protocols/oscar/icq/ui/icqsearchdialog.h @@ -0,0 +1,69 @@ +/* + Kopete Oscar Protocol + icqsearchdialog.h - search for people + + Copyright (c) 2005 Matt Rogers <mattr@kde.org> + + Kopete (c) 2002-2005 by the Kopete developers <kopete-devel@kde.org> + + ************************************************************************* + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Lesser General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + ************************************************************************* +*/ + +#ifndef ICQSEARCHDIALOG_H +#define ICQSEARCHDIALOG_H + +#include <kdialogbase.h> +#include "icquserinfo.h" + +class ICQAccount; +class ICQSearchBase; +class ICQContact; +class ICQUserInfoWidget; +/** +@author Kopete Developers +*/ +class ICQSearchDialog : public KDialogBase +{ +Q_OBJECT +public: + ICQSearchDialog( ICQAccount* account, QWidget* parent = 0, const char* name = 0 ); + ~ICQSearchDialog(); + +private slots: + void startSearch(); + void stopSearch(); + void addContact(); + void clearResults(); + void closeDialog(); + void userInfo(); + void closeUserInfo(); + void newSearch(); + + /// Enable/disable buttons when the selection changes + void resultSelectionChanged(); + + /// Add a search result to the listview + void newResult( const ICQSearchResult& info ); + + /// The search is finished + void searchFinished( int numLeft ); + +private: + ICQAccount* m_account; + ICQSearchBase* m_searchUI; + ICQContact* m_contact; + ICQUserInfoWidget* m_infoWidget; + + void clearFields(); +}; + +#endif + +//kate: indent-mode csands; space-indent off; replace-tabs off; tab-width 4; diff --git a/kopete/protocols/oscar/icq/ui/icquserinfowidget.cpp b/kopete/protocols/oscar/icq/ui/icquserinfowidget.cpp new file mode 100644 index 00000000..3830e05f --- /dev/null +++ b/kopete/protocols/oscar/icq/ui/icquserinfowidget.cpp @@ -0,0 +1,190 @@ +/* + Kopete Oscar Protocol + icquserinfowidget.cpp - Display ICQ user info + + Copyright (c) 2005 Matt Rogers <mattr@kde.org> + + Kopete (c) 2002-2005 by the Kopete developers <kopete-devel@kde.org> + + ************************************************************************* + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Lesser General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + ************************************************************************* +*/ + +#include "icquserinfowidget.h" + +#include <qlayout.h> +#include <qlineedit.h> +#include <qspinbox.h> +#include <qcombobox.h> +#include <qobject.h> +#include <qtextcodec.h> + +#include <kdatewidget.h> +#include <kdebug.h> +#include <kglobal.h> +#include <kiconloader.h> +#include <kjanuswidget.h> +#include <klocale.h> + +#include "icqgeneralinfo.h" +#include "icqcontact.h" +#include "icqprotocol.h" +#include "icqworkinfowidget.h" +#include "icqotherinfowidget.h" +#include "icqinterestinfowidget.h" + + +ICQUserInfoWidget::ICQUserInfoWidget( QWidget * parent, const char * name ) +: KDialogBase( KDialogBase::IconList, 0, parent, name, false, i18n( "ICQ User Information" ), Ok ) +{ + kdDebug(14153) << k_funcinfo << "Creating new icq user info widget" << endl; + + QFrame* genInfo = addPage( i18n( "General Info" ), + i18n( "General ICQ Information" ), + KGlobal::iconLoader()->loadIcon( QString::fromLatin1( "identity" ), KIcon::Desktop ) ); + QVBoxLayout* genLayout = new QVBoxLayout( genInfo ); + m_genInfoWidget = new ICQGeneralInfoWidget( genInfo, "Basic Information" ); + genLayout->addWidget( m_genInfoWidget ); + + QFrame* workInfo = addPage( i18n( "Work Info" ), + i18n( "Work Information" ), + KGlobal::iconLoader()->loadIcon( QString::fromLatin1( "attach" ), KIcon::Desktop ) ); + QVBoxLayout* workLayout = new QVBoxLayout( workInfo ); + m_workInfoWidget = new ICQWorkInfoWidget( workInfo, "Work Information" ); + workLayout->addWidget( m_workInfoWidget ); + + QFrame* otherInfo = addPage( i18n( "Other Info" ), + i18n( "Other ICQ Information" ), + KGlobal::iconLoader()->loadIcon( QString::fromLatin1( "email" ), KIcon::Desktop ) ); + QVBoxLayout* otherLayout = new QVBoxLayout( otherInfo ); + m_otherInfoWidget = new ICQOtherInfoWidget( otherInfo, "Other Information" ); + otherLayout->addWidget( m_otherInfoWidget ); + + QFrame* interestInfo = addPage( i18n( "Interest Info" ), + i18n( "Interest" ), + KGlobal::iconLoader()->loadIcon( QString::fromLatin1( "email" ), KIcon::Desktop ) ); + QVBoxLayout* interestLayout = new QVBoxLayout( interestInfo ); + m_interestInfoWidget = new ICQInterestInfoWidget( interestInfo, "Other Information" ); + interestLayout->addWidget( m_interestInfoWidget ); + +} + +void ICQUserInfoWidget::setContact( ICQContact* contact ) +{ + m_contact = contact; + QObject::connect( contact, SIGNAL( haveBasicInfo( const ICQGeneralUserInfo& ) ), + this, SLOT( fillBasicInfo( const ICQGeneralUserInfo& ) ) ); + QObject::connect( contact, SIGNAL( haveWorkInfo( const ICQWorkUserInfo& ) ), + this, SLOT( fillWorkInfo( const ICQWorkUserInfo& ) ) ); + QObject::connect( contact, SIGNAL( haveEmailInfo( const ICQEmailInfo& ) ), + this, SLOT( fillEmailInfo( const ICQEmailInfo& ) ) ); + QObject::connect( contact, SIGNAL( haveMoreInfo( const ICQMoreUserInfo& ) ), + this, SLOT( fillMoreInfo( const ICQMoreUserInfo& ) ) ); + QObject::connect( contact, SIGNAL( haveInterestInfo( const ICQInterestInfo& ) ), + this, SLOT( fillInterestInfo( const ICQInterestInfo& ) ) ); +} + +void ICQUserInfoWidget::fillBasicInfo( const ICQGeneralUserInfo& ui ) +{ + QTextCodec* codec = m_contact->contactCodec(); + m_genInfoWidget->uinEdit->setText( m_contact->contactId() ); + m_genInfoWidget->nickNameEdit->setText( codec->toUnicode( ui.nickname ) ); + m_genInfoWidget->fullNameEdit->setText( codec->toUnicode( ui.firstName ) + " " + codec->toUnicode( ui.lastName ) ); + m_genInfoWidget->ipEdit->setText( m_contact->property( "ipAddress" ).value().toString() ); + m_genInfoWidget->emailEdit->setText( codec->toUnicode( ui.email ) ); + m_genInfoWidget->cityEdit->setText( codec->toUnicode( ui.city ) ); + m_genInfoWidget->stateEdit->setText( codec->toUnicode( ui.state ) ); + m_genInfoWidget->phoneEdit->setText( codec->toUnicode( ui.phoneNumber ) ); + m_genInfoWidget->faxEdit->setText( codec->toUnicode( ui.faxNumber ) ); + m_genInfoWidget->addressEdit->setText( codec->toUnicode( ui.address ) ); + m_genInfoWidget->cellEdit->setText( codec->toUnicode( ui.cellNumber ) ); + m_genInfoWidget->zipEdit->setText( codec->toUnicode( ui.zip ) ); + + QString country = static_cast<ICQProtocol*>( m_contact->protocol() )->countries()[ui.country]; + m_genInfoWidget->countryEdit->setText( country ); +} + +void ICQUserInfoWidget::fillWorkInfo( const ICQWorkUserInfo& ui ) +{ + QTextCodec* codec = m_contact->contactCodec(); + m_workInfoWidget->cityEdit->setText( codec->toUnicode( ui.city ) ); + m_workInfoWidget->stateEdit->setText( codec->toUnicode( ui.state ) ); + m_workInfoWidget->phoneEdit->setText( codec->toUnicode( ui.phone ) ); + m_workInfoWidget->faxEdit->setText( codec->toUnicode( ui.fax ) ); + m_workInfoWidget->addressEdit->setText( codec->toUnicode( ui.address ) ); + m_workInfoWidget->zipEdit->setText( codec->toUnicode( ui.zip ) ); + m_workInfoWidget->companyEdit->setText( codec->toUnicode( ui.company ) ); + m_workInfoWidget->departmentEdit->setText( codec->toUnicode( ui.department ) ); + m_workInfoWidget->positionEdit->setText( codec->toUnicode( ui.position ) ); + m_workInfoWidget->homepageEdit->setText( codec->toUnicode( ui.homepage ) ); + + ICQProtocol* p = static_cast<ICQProtocol*>( m_contact->protocol() ); + QString country = p->countries()[ui.country]; + m_workInfoWidget->countryEdit->setText( country ); + + //TODO handle the occupation +} + +void ICQUserInfoWidget::fillEmailInfo( const ICQEmailInfo& ) +{ +} + +void ICQUserInfoWidget::fillInterestInfo( const ICQInterestInfo& info) +{ + QTextCodec* codec = m_contact->contactCodec(); + if (info.count>0) { + QString topic = static_cast<ICQProtocol*>( m_contact->protocol() )->interests()[info.topics[0]]; + m_interestInfoWidget->topic1->setText( topic ); + m_interestInfoWidget->desc1->setText( codec->toUnicode( info.descriptions[0] ) ); + } + if (info.count>1) { + QString topic = static_cast<ICQProtocol*>( m_contact->protocol() )->interests()[info.topics[1]]; + m_interestInfoWidget->topic2->setText( topic ); + m_interestInfoWidget->desc2->setText( codec->toUnicode( info.descriptions[1] ) ); + } + if (info.count>2) { + QString topic = static_cast<ICQProtocol*>( m_contact->protocol() )->interests()[info.topics[2]]; + m_interestInfoWidget->topic3->setText( topic ); + m_interestInfoWidget->desc3->setText( codec->toUnicode( info.descriptions[2] ) ); + } + if (info.count>3) { + QString topic = static_cast<ICQProtocol*>( m_contact->protocol() )->interests()[info.topics[3]]; + m_interestInfoWidget->topic4->setText( topic ); + m_interestInfoWidget->desc4->setText( codec->toUnicode( info.descriptions[3] ) ); + } +} + +void ICQUserInfoWidget::fillMoreInfo( const ICQMoreUserInfo& ui ) +{ + QTextCodec* codec = m_contact->contactCodec(); + m_genInfoWidget->ageSpinBox->setValue( ui.age ); + if ( ui.birthday.isValid() ) + m_genInfoWidget->birthday->setText( KGlobal::locale()->formatDate( ui.birthday,true ) ); + + QString gender = static_cast<ICQProtocol*>( m_contact->protocol() )->genders()[ui.gender]; + m_genInfoWidget->genderEdit->setText( gender ); + m_genInfoWidget->homepageEdit->setText( codec->toUnicode( ui.homepage ) ); + + QString ms = static_cast<ICQProtocol*>( m_contact->protocol() )->maritals()[ui.marital]; + m_genInfoWidget->marital->setText( ms ); + + m_genInfoWidget->oCityEdit->setText( codec->toUnicode( ui.ocity) ); + m_genInfoWidget->oStateEdit->setText( codec->toUnicode( ui.ostate) ); + + QString ocountry = static_cast<ICQProtocol*>( m_contact->protocol() )->countries()[ui.ocountry]; + m_genInfoWidget->oCountryEdit->setText( ocountry ); + + //TODO languages +} + + +#include "icquserinfowidget.moc" + +//kate: indent-mode csands; tab-width 4; space-indent off; replace-tabs off; + diff --git a/kopete/protocols/oscar/icq/ui/icquserinfowidget.h b/kopete/protocols/oscar/icq/ui/icquserinfowidget.h new file mode 100644 index 00000000..ef478e59 --- /dev/null +++ b/kopete/protocols/oscar/icq/ui/icquserinfowidget.h @@ -0,0 +1,58 @@ +/* + Kopete Oscar Protocol + icquserinfowidget.h - Display ICQ user info + + Copyright (c) 2005 Matt Rogers <mattr@kde.org> + + Kopete (c) 2002-2005 by the Kopete developers <kopete-devel@kde.org> + + ************************************************************************* + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Lesser General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + ************************************************************************* +*/ + +#ifndef _ICQUSERINFOWIDGET_H_ +#define _ICQUSERINFOWIDGET_H_ + +#include <kdialogbase.h> +#include <icquserinfo.h> + +class KJanusWidget; +class ICQGeneralInfoWidget; +class ICQWorkInfoWidget; +class ICQOtherInfoWidget; +class ICQInterestInfoWidget; +class ICQContact; + +class ICQUserInfoWidget : public KDialogBase +{ +Q_OBJECT +public: + ICQUserInfoWidget( QWidget* parent = 0, const char* name = 0 ); + void setContact( ICQContact* contact ); + +public slots: + void fillBasicInfo( const ICQGeneralUserInfo& ); + void fillWorkInfo( const ICQWorkUserInfo& ); + void fillEmailInfo( const ICQEmailInfo& ); + void fillMoreInfo( const ICQMoreUserInfo& ); + void fillInterestInfo( const ICQInterestInfo& ); + +private: + ICQGeneralInfoWidget* m_genInfoWidget; + ICQWorkInfoWidget* m_workInfoWidget; + ICQOtherInfoWidget* m_otherInfoWidget; + ICQInterestInfoWidget * m_interestInfoWidget; + KJanusWidget* m_janusWidget; + ICQContact* m_contact; + +}; + +#endif + +//kate: indent-mode csands; tab-width 4; space-indent off; replace-tabs off; diff --git a/kopete/protocols/oscar/icq/ui/icqworkinfowidget.ui b/kopete/protocols/oscar/icq/ui/icqworkinfowidget.ui new file mode 100644 index 00000000..a31021ba --- /dev/null +++ b/kopete/protocols/oscar/icq/ui/icqworkinfowidget.ui @@ -0,0 +1,249 @@ +<!DOCTYPE UI><UI version="3.3" stdsetdef="1"> +<class>ICQWorkInfoWidget</class> +<widget class="QWidget"> + <property name="name"> + <cstring>ICQWorkInfoWidget</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>328</width> + <height>480</height> + </rect> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QGroupBox"> + <property name="name"> + <cstring>groupBox2</cstring> + </property> + <property name="title"> + <string>Personal Work Information</string> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel" row="1" column="0"> + <property name="name"> + <cstring>textLabel10</cstring> + </property> + <property name="text"> + <string>Phone:</string> + </property> + </widget> + <widget class="QLabel" row="1" column="2"> + <property name="name"> + <cstring>textLabel11</cstring> + </property> + <property name="text"> + <string>Fax:</string> + </property> + </widget> + <widget class="QLabel" row="0" column="0"> + <property name="name"> + <cstring>textLabel6</cstring> + </property> + <property name="text"> + <string>Department:</string> + </property> + </widget> + <widget class="QLineEdit" row="0" column="1"> + <property name="name"> + <cstring>departmentEdit</cstring> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLabel" row="0" column="2"> + <property name="name"> + <cstring>textLabel7</cstring> + </property> + <property name="text"> + <string>Position:</string> + </property> + </widget> + <widget class="QLineEdit" row="0" column="3"> + <property name="name"> + <cstring>positionEdit</cstring> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLineEdit" row="1" column="1"> + <property name="name"> + <cstring>phoneEdit</cstring> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLineEdit" row="1" column="3"> + <property name="name"> + <cstring>faxEdit</cstring> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + </grid> + </widget> + <widget class="QButtonGroup"> + <property name="name"> + <cstring>buttonGroup1</cstring> + </property> + <property name="title"> + <string>Company Location Information</string> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel" row="0" column="0"> + <property name="name"> + <cstring>textLabel1</cstring> + </property> + <property name="text"> + <string>Name:</string> + </property> + </widget> + <widget class="QLabel" row="1" column="0"> + <property name="name"> + <cstring>textLabel8</cstring> + </property> + <property name="text"> + <string>Homepage:</string> + </property> + </widget> + <widget class="QLabel" row="2" column="0"> + <property name="name"> + <cstring>textLabel2</cstring> + </property> + <property name="text"> + <string>Address:</string> + </property> + </widget> + <widget class="QLabel" row="5" column="0"> + <property name="name"> + <cstring>textLabel4</cstring> + </property> + <property name="text"> + <string>Zip:</string> + </property> + </widget> + <widget class="QLabel" row="4" column="0"> + <property name="name"> + <cstring>textLabel5</cstring> + </property> + <property name="text"> + <string>State:</string> + </property> + </widget> + <widget class="QLabel" row="3" column="0"> + <property name="name"> + <cstring>textLabel3</cstring> + </property> + <property name="text"> + <string>City:</string> + </property> + </widget> + <widget class="QLabel" row="6" column="0"> + <property name="name"> + <cstring>textLabel9</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>5</hsizetype> + <vsizetype>5</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>Country:</string> + </property> + </widget> + <widget class="QLineEdit" row="0" column="1"> + <property name="name"> + <cstring>companyEdit</cstring> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLineEdit" row="1" column="1"> + <property name="name"> + <cstring>homepageEdit</cstring> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLineEdit" row="2" column="1"> + <property name="name"> + <cstring>addressEdit</cstring> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLineEdit" row="3" column="1"> + <property name="name"> + <cstring>cityEdit</cstring> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLineEdit" row="4" column="1"> + <property name="name"> + <cstring>stateEdit</cstring> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLineEdit" row="5" column="1"> + <property name="name"> + <cstring>zipEdit</cstring> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLineEdit" row="6" column="1"> + <property name="name"> + <cstring>countryEdit</cstring> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + </grid> + </widget> + <spacer> + <property name="name"> + <cstring>spacer2</cstring> + </property> + <property name="orientation"> + <enum>Vertical</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>70</height> + </size> + </property> + </spacer> + </vbox> +</widget> +<layoutdefaults spacing="6" margin="11"/> +</UI> |