📄 bcuniteditwidget.cpp
字号:
} // the completion object is updated when slotUpdateCompletions is called } break; case BCAttribute::Para: te = m_multiDict.find(QString::number(m_currColl->id()) + it.current()->name()); if(te) { temp = te->text().simplifyWhiteSpace(); m_currUnit->setAttribute(it.current()->name(), temp); if(!temp.isEmpty()) { empty = false; } } break; case BCAttribute::Choice: kc = m_comboDict.find(QString::number(m_currColl->id()) + it.current()->name()); if(kc) { temp = kc->currentText().simplifyWhiteSpace(); // ok to set attribute empty m_currUnit->setAttribute(it.current()->name(), temp); if(!temp.isEmpty()) { //empty = false; } } break; case BCAttribute::Bool: cb = m_checkDict.find(QString::number(m_currColl->id()) + it.current()->name()); if(cb) { if(cb->isChecked()) { // "1" means checked m_currUnit->setAttribute(it.current()->name(), QString::fromLatin1("1")); //empty = false; } else { m_currUnit->setAttribute(it.current()->name(), QString()); } } break; case BCAttribute::Year: kl = m_editDict.find(QString::number(m_currColl->id()) + it.current()->name()); if(kl) { temp = kl->text(); // ok to set attribute empty string m_currUnit->setAttribute(it.current()->name(), temp); } break; case BCAttribute::ReadOnly: break; default: kdWarning() << "BCUnitEditWidget::slotHandleSave() - unknown attribute type (" "" << it.current()->type() << ") named " << it.current()->name() << endl; return; break; } // end switch } // if something was not empty, signal a save, and then clear everything if(!empty) { // this has to be before signal, since slotSetContents() gets called m_modified = false; emit signalSaveUnit(m_currUnit); } else { // go back to first tab, with title, etc... m_tabs->showTab(0); } slotHandleNew();}void BCUnitEditWidget::slotHandleDelete() { if(m_currUnit && m_currColl->unitList().containsRef(m_currUnit) > 0) {// kdDebug() << "BCUnitEditWidget::slotHandleDelete() - item " << m_currUnit->title() << endl; // this widget does not actually delete the unit emit signalDeleteUnit(m_currUnit); } // clear the widget whether or not anything was deleted slotHandleClear();}void BCUnitEditWidget::slotHandleClear() {// kdDebug() << "BCUnitEditWidget::slotHandleClear()" << endl; // clear the linedits QDictIterator<KLineEdit> it1(m_editDict); for( ; it1.current(); ++it1) { it1.current()->clear(); } // clear the linedits QDictIterator<QTextEdit> it2(m_multiDict); for( ; it2.current(); ++it2) { it2.current()->clear(); } // set all the comboboxes to the first item, which should be the null string QDictIterator<KComboBox> it3(m_comboDict); for( ; it3.current(); ++it3) { it3.current()->setCurrentItem(0); } // clear the checkboxes, too QDictIterator<QCheckBox> it4(m_checkDict); for( ; it4.current(); ++it4) { it4.current()->setChecked(false); } // this crashes the app, find out why... // nullify the pointer...// if(m_currUnit// && m_currUnit->collection()->unitList().containsRef(m_currUnit) == 0) {// // this means we created a pointer but haven't added it to the collection yet// // TODO: ask user if he wants to save it// delete m_currUnit;// } m_currUnit = 0; // disable the copy and delete buttons#ifdef SHOW_COPY_BTN m_copy->setEnabled(false);#endif m_delete->setEnabled(false); m_save->setText(i18n("Enter Book")); m_save->setEnabled(false); m_modified = false;}void BCUnitEditWidget::slotSetContents(BCUnit* unit_) { bool ok = queryModified(); if(!ok) { return; } if(!unit_) { slotHandleClear(); return; }// kdDebug() << "BCUnitEditWidget::slotSetContents() - " << unit_->title() << endl; m_currUnit = unit_;// m_currColl = unit_->collection(); if(m_currColl != unit_->collection()) { kdDebug() << "BCUnitEditWidget::slotSetContents() - collections don't match" << endl; m_currColl = unit_->collection(); } //disable save button m_save->setEnabled(false); // enable copy and delete buttons#ifdef SHOW_COPY_BTN m_copy->setEnabled(true);#endif m_delete->setEnabled(true);// m_tabs->showTab(0); KLineEdit* kl; QTextEdit* te; KComboBox* kc; QCheckBox* cb; BCAttributeListIterator it(m_currColl->attributeList()); for( ; it.current(); ++it) { switch(it.current()->type()) { case BCAttribute::Line: kl = m_editDict.find(QString::number(m_currColl->id()) + it.current()->name()); if(kl) { kl->setText(unit_->attribute(it.current()->name())); } break; case BCAttribute::Para: te = m_multiDict.find(QString::number(m_currColl->id()) + it.current()->name()); break; case BCAttribute::Choice: kc = m_comboDict.find(QString::number(m_currColl->id()) + it.current()->name()); for(int i = 0; kc && i < kc->count(); ++i) { if(kc->text(i) == m_currUnit->attribute(it.current()->name())) { kc->setCurrentItem(i); break; } } break; case BCAttribute::Bool: cb = m_checkDict.find(QString::number(m_currColl->id()) + it.current()->name()); if(cb) { if(m_currUnit->attribute(it.current()->name()).isEmpty()) { cb->setChecked(false); } else { cb->setChecked(true); } } break; case BCAttribute::Year: kl = m_editDict.find(QString::number(m_currColl->id()) + it.current()->name()); if(kl) { kl->setText(unit_->attribute(it.current()->name())); } break; case BCAttribute::ReadOnly: break; default: kdWarning() << "BCUnitEditWidget::slotSetContents() - unknown attribute type (" "" << it.current()->type() << ") named " << it.current()->name() << endl; break; } //end switch } // end attribute loop if(m_currUnit && m_currColl->unitList().containsRef(m_currUnit) > 0) { m_save->setText(i18n("Modify Book")); m_save->setEnabled(false); } m_modified = false;}void BCUnitEditWidget::slotUpdateCompletions(BCUnit* unit_) { if(m_currColl != unit_->collection()) { kdDebug() << "BCUnitEditWidget::slotUpdateCompletions - inconsistent colleection pointers!" << endl; m_currColl = unit_->collection(); } BCAttributeListIterator it(m_currColl->attributeList()); for( ; it.current(); ++it) { if(it.current()->type() == BCAttribute::Line && !(it.current()->flags() & BCAttribute::NoComplete)) { QString key = QString::number(m_currColl->id()) + it.current()->name(); KLineEdit* kl = m_editDict.find(key); if(kl) { QString value = unit_->attribute(it.current()->name()); kl->completionObject()->addItem(value); } } }}void BCUnitEditWidget::slotSwitchFocus(int tabNum_) { m_tabs->setFocusToChild(tabNum_);}void BCUnitEditWidget::slotSetModified() { m_modified = true; m_save->setEnabled(true);}bool BCUnitEditWidget::queryModified() { bool ok = true; if(m_modified) { Bookcase* app = bookcaseParent(parent()); QString str(i18n("The current book has been modified.\n" "Do you want to enter the changes?")); int want_save = KMessageBox::warningYesNoCancel(app, str, i18n("Warning!"), i18n("Enter Book"), KStdGuiItem::discard()); switch(want_save) { case KMessageBox::Yes: slotHandleSave(); ok = true; break; case KMessageBox::No: m_modified = false; ok = true; break; case KMessageBox::Cancel: ok = false; break; } } return ok;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -