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

📄 bcuniteditwidget.cpp

📁 Bookcase 是一个用于KDE的个人的书籍管理。它使用XML文件存储格式
💻 CPP
📖 第 1 页 / 共 2 页
字号:
          }          // 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 + -