⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 abeditor.cpp

📁 Trolltech公司发布的图形界面操作系统。可在qt-embedded-2.3.7平台上编译为嵌入式图形界面操作系统。
💻 CPP
📖 第 1 页 / 共 3 页
字号:
    personalTabKeys.append( PimContact::Birthday );    personalTabKeys.append( PimContact::Gender );    // business tab keys    QValueList<int> businessTabKeys;    businessTabKeys.append( PimContact::Company );    businessTabKeys.append( PimContact::CompanyPronunciation );    businessTabKeys.append( PimContact::JobTitle );    businessTabKeys.append( PimContact::BusinessPhone );    businessTabKeys.append( PimContact::BusinessFax );    businessTabKeys.append( PimContact::BusinessMobile );    businessTabKeys.append( PimContact::BusinessPager );    businessTabKeys.append( PimContact::BusinessStreet );    businessTabKeys.append( PimContact::BusinessCity );    businessTabKeys.append( PimContact::BusinessState );    businessTabKeys.append( PimContact::BusinessZip );    businessTabKeys.append( PimContact::BusinessCountry );    businessTabKeys.append( PimContact::BusinessWebPage );    businessTabKeys.append( PimContact::Department );    businessTabKeys.append( PimContact::Office );    businessTabKeys.append( PimContact::Profession );    businessTabKeys.append( PimContact::Manager );    businessTabKeys.append( PimContact::Assistant );    // home tab keys    QValueList<int> homeTabKeys;    homeTabKeys.append( PimContact::Spouse );    homeTabKeys.append( PimContact::Anniversary );    homeTabKeys.append( PimContact::Children );    homeTabKeys.append( PimContact::HomePhone );    homeTabKeys.append( PimContact::HomeFax );    homeTabKeys.append( PimContact::HomeMobile );    homeTabKeys.append( PimContact::HomeStreet );    homeTabKeys.append( PimContact::HomeCity );    homeTabKeys.append( PimContact::HomeState );    homeTabKeys.append( PimContact::HomeZip );    homeTabKeys.append( PimContact::HomeCountry );    homeTabKeys.append( PimContact::HomeWebPage );    // notes has it's own tab currently; if you want to change this    // 1. remove the code at the bottom of this section    // 2. add PimContact::Notes to one section and    // 3. modify the addFields method to make notes a multi line edit    QVBoxLayout *vb = new QVBoxLayout( this );    // setup tab groups    tabs = new QTabWidget( this );    vb->addWidget( tabs );    personalTab = new VScrollView( tabs );    VScrollView *businessTab = new VScrollView( tabs );    VScrollView *homeTab = new VScrollView( tabs );#ifdef QTOPIA_DESKTOP    // ### Should use summary tab if has room, not    // just compiled for the desktop    summaryTab = new QWidget( tabs, "summaryTab" );    tabs->addTab( summaryTab, tr("Summary") );    connect( tabs, SIGNAL( currentChanged( QWidget *) ), SLOT( tabClicked(QWidget *) ) );    QVBoxLayout *vbSummary = new QVBoxLayout( summaryTab, 5, 5 );    summary = new QTextEdit( summaryTab );    summary->setReadOnly( TRUE );    vbSummary->addWidget( summary );#else    summaryTab = 0;    summary = 0;#endif    tabs->addTab( personalTab, tr("Personal") );    tabs->addTab( businessTab, tr("Business") );    tabs->addTab( homeTab, tr("Home") );    // add the key fields to the personal tab    addFields( personalTab->widget(), personalTabKeys );    addFields( businessTab->widget(), businessTabKeys );    addFields( homeTab->widget() , homeTabKeys );    setTabOrders();    txtNote = new QMultiLineEdit( tabs );    txtNote->setWordWrap(QMultiLineEdit::WidgetWidth);    tabs->addTab( txtNote, tr("Notes") );#ifdef QTOPIA_DESKTOP    QHBoxLayout *bottomBox = new QHBoxLayout( vb );    bottomBox->addStretch();    QPushButton *okButton = new QPushButton( tr("OK"), this );    okButton->setDefault( TRUE );    connect( okButton, SIGNAL(clicked()), this, SLOT(accept()) );    bottomBox->addWidget( okButton );    QPushButton *cancelButton = new QPushButton( tr("Cancel"), this );    cancelButton->setAutoDefault( TRUE );    connect( cancelButton, SIGNAL(clicked()), this, SLOT(reject()) );    bottomBox->addWidget( cancelButton );#endif    QWhatsThis::add(lineEdits[PimContact::FirstNamePronunciation],	tr("Describes the spoken name phonetically."));    QWhatsThis::add(lineEdits[PimContact::Spouse],	tr("e.g. Husband or Wife."));    QWhatsThis::add(fileAsCombo,	tr("Preferred format for the contact name."));    QWhatsThis::add(lineEdits[PimContact::Profession],	tr("Occupation or job description."));    new QPEDialogListener(this);}void AbEditor::setTabOrders(void){    setTabOrder(fileAsCombo, cmbCat);    setTabOrder(cmbCat, emailLE);    setTabOrder(emailLE, emailBtn);    setTabOrder(emailBtn, bdayButton);    setTabOrder(bdayButton, genderCombo);}void AbEditor::tabClicked( QWidget *tab ){#ifdef QTOPIA_DESKTOP    if ( summaryTab && tab == summaryTab ) {	PimContact c;	contactFromFields(c);	summary->setText(c.toRichText());    }#else    Q_UNUSED(tab);#endif}void AbEditor::editEmails(){    EmailDialog *ed = new EmailDialog(this, "Emails", TRUE);    QString strDefaultEmail;    QStringList emails;    parseEmailFrom( emailLE->text(), strDefaultEmail,	    emails );    //ent.setDefaultEmail( strDefaultEmail );    //ent.setEmailList( emails  );    ed->setEmails( strDefaultEmail, emails );#ifdef QTOPIA_DESKTOP    if (ed->exec())#else    if (QPEApplication::execDialog(ed))#endif    {	ent.setDefaultEmail(ed->defaultEmail());	ent.setEmailList(ed->emails());	QString str;	parseEmailTo( ed->defaultEmail(), ed->emails(), str );	emailLE->setText( str );	emailLE->home( false );    }    delete ed;}void AbEditor::addFields( QWidget *container, const QValueList<int> &keys ){    // init this combo here, since addFields assumes is already exists    if ( ! fileAsCombo )	fileAsCombo = new FileAsCombo( this, container );    const QMap<int, QString> & displayNames = PimContact::trFieldsMap();    QGridLayout *gl = new QGridLayout( container, keys.count()+1, 2, 4, 2 );    gl->setSpacing(1);    QWidget *lastEditor = 0, *editor;    int fieldInTabNum=0;    for ( QValueList<int>::ConstIterator fieldKey = keys.begin();	  fieldKey != keys.end(); ++fieldKey ) {	QLabel *label = new QLabel( displayNames[ *fieldKey ], container );	// do a switch on the field type; most are line edits, the exceptions get a case, the default	// is a linedit	editor = 0;	switch ( *fieldKey ) {	case PimContact::Suffix:	    suffixCombo = new QComboBox( container );	    suffixCombo->setEditable( TRUE );	    suffixCombo->setDuplicatesEnabled( FALSE );	    suffixCombo->setAutoCompletion( TRUE );	    suffixCombo->insertItem( "", 0 );	    suffixCombo->insertItem( tr( "Jr.", "Person's name suffix" )  );	    suffixCombo->insertItem( tr( "Sr." )  );	    suffixCombo->insertItem( tr( "I", "Person's name suffix" )  );	    suffixCombo->insertItem( tr( "II" )  );	    suffixCombo->insertItem( tr( "III" )  );	    suffixCombo->insertItem( tr( "IV" )  );	    suffixCombo->insertItem( tr( "V" )  );	    connect(suffixCombo, SIGNAL(textChanged(const QString&)),		fileAsCombo, SLOT(autoUpdate()));	    editor = suffixCombo;	    break;	case PimContact::NameTitle:	    titleCombo = new QComboBox( container );	    titleCombo->setEditable( TRUE );	    titleCombo->setDuplicatesEnabled( FALSE );	    titleCombo->setAutoCompletion( TRUE );	    titleCombo->insertItem( "", 0 );	    titleCombo->insertItem( tr( "Mr." )  );	    titleCombo->insertItem( tr( "Mrs." )  );	    titleCombo->insertItem( tr( "Ms." )  );	    titleCombo->insertItem( tr( "Miss" )  );	    titleCombo->insertItem( tr( "Dr." )  );	    titleCombo->insertItem( tr( "Prof." )  );	    editor = titleCombo;	    break;	case PimContact::Gender:	    genderCombo = new QComboBox( container );	    genderCombo->insertItem( "", 0 );	    genderCombo->insertItem( tr( "Male" ), 1 );	    genderCombo->insertItem( tr( "Female" ), 2 );	    editor = genderCombo;	    break;	case PimContact::FileAs:	    editor = fileAsCombo;	    break;	case PimContact::Birthday:	    bdayButton = new QPEDateEdit( container, "", FALSE, TRUE );	    editor = bdayButton;	    break;	case PimContact::DefaultEmail:	case PimContact::Emails:	    ehb = new QHBox(container);	    emailLE = new QLineEdit( ehb );	    emailBtn = new QPushButton("...", ehb);	    connect(emailBtn, SIGNAL(clicked()), this, SLOT(editEmails()));	    editor = ehb;	    break;	case PimContact::Anniversary:	    anniversaryButton = new QPEDateEdit( container, "", FALSE, TRUE );	    editor = anniversaryButton;	    break;	case PimContact::Categories:	    {		QArray<int> emptyCat;		cmbCat = new CategorySelect( emptyCat, "Address Book", // No tr()			tr("Contacts"), container );		editor = cmbCat;		if ( cmbCat->widgetType() == CategorySelect::ListView ) {		    delete label;		    label = 0;		}	    }	    break;	case PimContact::Notes:	    // this is taken care of later; don't want to create a line edit for it	    editor = 0;	    break;	case PimContact::HomeStreet:	    {	    homeStreetEdit = new QMultiLineEdit( container );	    homeStreetEdit->setWordWrap(QMultiLineEdit::WidgetWidth);	    int fontSize = homeStreetEdit->font().pixelSize();	    if (fontSize <= 1)		fontSize = 10;	    homeStreetEdit->setMaximumHeight(fontSize*4);	    editor = homeStreetEdit;	    }	    break;	case PimContact::BusinessStreet:	    {	    businessStreetEdit = new QMultiLineEdit( container );	    businessStreetEdit->setWordWrap(QMultiLineEdit::WidgetWidth);	    int fontSize = businessStreetEdit->font().pixelSize();	    if (fontSize <= 1)		fontSize = 10;	    businessStreetEdit->setMaximumHeight(fontSize*4);	    editor = businessStreetEdit;	    }	    break;	default:	{	    QLineEdit *lineedit = new QLineEdit( container );	    lineEdits.insert( *fieldKey, lineedit );	    connect( lineedit, SIGNAL ( textChanged( const QString & ) ),		     fileAsCombo, SLOT( autoUpdate() ) );	    editor = lineedit;	}	    break;	};	if ( editor ) {	    // add the editor to the layout	    if ( label ) {		gl->addWidget( label, fieldInTabNum, 0 );		labels.insert( *fieldKey, label );		gl->addWidget( editor, fieldInTabNum, 1 );	    }	    else		gl->addMultiCellWidget( editor, fieldInTabNum, fieldInTabNum, 0, 1 );	    if ( lastEditor ) {		setTabOrder( lastEditor, editor );	    }	    lastEditor = editor;	    // increment the field number for this tab	    fieldInTabNum++;	} else delete label;    }    QSpacerItem *verticleSpacer = new QSpacerItem( 1, 1, QSizePolicy::Minimum,						   QSizePolicy::Expanding );    gl->addItem( verticleSpacer, fieldInTabNum, 1 );}void AbEditor::setEntry( const PimContact &entry ){    quitExplicitly = FALSE;    ent = entry;    // do this first, so then we can ignore the rest of the line edits change events    fileAsCombo->reload();    fileAsCombo->programaticUpdate = TRUE;    // categories not part of map    cmbCat->setCategories( ent.categories(), "Address Book", // No tr()	tr("Contacts") );    // iterate through all display fields for contact    QMap<int, QCString> i2keyMap = PimContact::keyToIdentifierMap();    QMap<int, QCString>::Iterator it;    for( it = i2keyMap.begin(); it != i2keyMap.end(); ++it ) {	int keyIt = it.key();	if (keyIt <= PimRecord::PrivateFieldsEnd)	    continue;	// put the non-lineedit sets here	bool isLineEdit = FALSE;	switch( keyIt ) {	case PimContact::FileAs:	    break;	case PimContact::Gender:	{	    switch ( ent.gender() ) {	    case PimContact::UnspecifiedGender :		genderCombo->setCurrentItem( 0 );		break;	    case PimContact::Male:		genderCombo->setCurrentItem( 1 );		break;	    case PimContact::Female:		genderCombo->setCurrentItem( 2 );		break;	    }	}	    break;	case PimContact::NameTitle:	    if ( ent.nameTitle().isEmpty() )		titleCombo->setCurrentItem( 0 );	    else		titleCombo->setEditText( ent.nameTitle() );	    break;	case PimContact::Suffix:	    if ( ent.suffix().isEmpty() )		suffixCombo->setCurrentItem( 0 );	    else	    suffixCombo->setEditText( ent.suffix() );	    break;	case PimContact::Notes:	    txtNote->setText( ent.notes() );	    break;	case PimContact::HomeStreet:	    homeStreetEdit->setText( ent.homeStreet() );	    break;	case PimContact::BusinessStreet:	    businessStreetEdit->setText( ent.businessStreet() );	    break;	case PimContact::Birthday:	    bdayButton->setDate( ent.birthday() );	    break;	case PimContact::Anniversary:	    anniversaryButton->setDate( ent.anniversary() );	    break;	    // email	case PimContact::DefaultEmail:	case PimContact::Emails:	    {		QString strDefEmail = ent.defaultEmail();		QStringList strAllEmail = ent.emailList();		QString strFinal;		parseEmailTo( strDefEmail, strAllEmail, strFinal );		emailLE->setText( strFinal );		// make sure we see the "default"		emailLE->home( false );		break;	    }	default:	    isLineEdit = TRUE;	}	// handle all of the line edits together since we	// can extract the QLineEdit once for all rather than duplicate

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -