亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bookcase.cpp

?? Bookcase 是一個用于KDE的個人的書籍管理。它使用XML文件存儲格式
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
  }  m_configDlg->show();}void Bookcase::slotHideConfigDialog() {  if(m_configDlg) {    m_configDlg->delayedDestruct();    m_configDlg = 0;  }}void Bookcase::slotStatusMsg(const QString& text_) {  statusBar()->clear();  // add a space at the beginning and end for asthetic reasons  statusBar()->changeItem(QString::fromLatin1(" ")+text_+QString::fromLatin1(" "), ID_STATUS_MSG);  kapp->processEvents();}void Bookcase::slotUnitCount() {  // I add a space before and after for asthetic reasons  QString text = QString::fromLatin1(" ");  BCCollectionListIterator it(m_doc->collectionList());  for( ; it.current(); ++it) {    text += i18n("%1 Total").arg(it.current()->unitTitle());    text += QString::fromLatin1(": ");    text += QString::number(it.current()->unitCount());  }  text += QString::fromLatin1(" ");  statusBar()->changeItem(text, ID_STATUS_COUNT);}void Bookcase::slotDeleteUnit(BCUnit* unit_) {  m_doc->slotDeleteUnit(unit_);  m_editWidget->slotSetContents(0);  m_detailedView->slotSetSelected(0);  m_groupView->slotSetSelected(0);}//void Bookcase::slotFileNewCollection() {//  kdDebug() << "Bookcase::slotFileNewCollection()" << endl;//}void Bookcase::slotEnableOpenedActions(bool opened_ /*= true*/) {  // collapse all the groups (depth=1)  m_groupView->slotCollapseAll(1);  // expand the collections  m_groupView->slotExpandAll(0);  m_fileSaveAs->setEnabled(opened_);  m_filePrint->setEnabled(opened_);  m_exportBibtex->setEnabled(opened_);  m_exportBibtexml->setEnabled(opened_);  m_exportXSLT->setEnabled(opened_);  m_editFind->setEnabled(opened_);}void Bookcase::slotEnableModifiedActions(bool modified_ /*= true*/) {  setCaption(m_doc->URL().fileName(), modified_);  m_fileSave->setEnabled(modified_);}void Bookcase::slotUpdateFractionDone(float f_) {  // first check bounds  f_ = (f_ < 0.0) ? 0.0 : f_;  f_ = (f_ > 1.0) ? 1.0 : f_;  if(!m_progress->isVisible()) {    m_progress->show();  }  m_progress->setValue(static_cast<int>(f_ * 100.0));  kapp->processEvents();  if(f_ == 1.0) {    m_progress->hide();  }}void Bookcase::slotHandleConfigChange() {  // for some reason, the m_config pointer is getting changed, but  // I can't figure out where, so just to be on the safe side  if(m_config != kapp->config()) {    m_config = kapp->config();  }  bool showCount = m_configDlg->configValue(QString::fromLatin1("showCount"));  m_groupView->showCount(showCount, m_doc->collectionList());    m_configDlg->saveConfiguration(m_config);}void Bookcase::updateCollectionToolBar() {//  kdDebug() << "Bookcase::updateCollectionToolBar()" << endl;  //TODO fix this later  BCCollection* coll = m_doc->collectionById(0);  if(!coll) {    return;  }    QString current = m_groupView->collGroupBy(coll->unitName());  if(current.isEmpty()) {    current = coll->defaultGroupAttribute();    m_groupView->setGroupAttribute(coll, current);  }  QStringList groupTitles;  int index = 0;  QStringList groups = coll->unitGroups();  QStringList::Iterator it = groups.begin();  for(int i = 0; it != groups.end(); ++it, ++i) {    QString groupName = static_cast<QString>(*it);    BCAttribute* att = coll->attributeByName(groupName);    groupTitles << att->title();    if(groupName == current) {      index = i;    }  }// is it more of a performance hit to compare two stringlists then to repopulate needlessly?//  if(groupTitles != m_unitGrouping->items()) {    m_unitGrouping->setItems(groupTitles);//  }  m_unitGrouping->setCurrentItem(index);//  kdDebug() << "Bookcase::updateCollectionToolBar - setting index " << index << " for " << groupTitles[index] << endl;}void Bookcase::slotChangeGrouping() {//  kdDebug() << "Bookcase::slotChangeGrouping()" << endl;  unsigned idx = m_unitGrouping->currentItem();  BCCollectionListIterator collIt(m_doc->collectionList());  for( ; collIt.current(); ++collIt) {    BCCollection* coll = collIt.current();    QString groupName;    if(idx < coll->unitGroups().count()) {      groupName = coll->unitGroups()[idx];    } else {      groupName = coll->defaultGroupAttribute();    }//    kdDebug() << "\tchange to " << groupName << endl;    m_groupView->setGroupAttribute(coll, groupName);  }}void Bookcase::slotUpdateCollection(BCCollection* coll_) {//  kdDebug() << "Bookcase::slotUpdateCollection()" << endl;    updateCollectionToolBar();  slotUnitCount();  connect(coll_, SIGNAL(signalGroupModified(BCCollection*, BCUnitGroup*)),          m_groupView, SLOT(slotModifyGroup(BCCollection*, BCUnitGroup*)));}void Bookcase::doPrint(const QString& html_) {  KHTMLPart* w = new KHTMLPart();  w->begin(m_doc->URL());  w->write(html_);  w->end();  // the problem with doing my own layout is that the text gets truncated, both at the// top and at the bottom. Even adding the overlap parameter, there were problems.// KHTMLView takes care of that with a truncatedAt() parameter, but that's hidden in// the khtml::render_root class. So for now, just use the KHTMLView::print() method.// in KDE 3.1, there's an added option for printing a header with the date, url, and// page number#if 1  w->view()->print();#else  KPrinter* printer = new KPrinter(QPrinter::PrinterResolution);  if(printer->setup(this)) {    //viewport()->setCursor(waitCursor);    printer->setFullPage(false);    printer->setCreator("Bookcase");    printer->setDocName(m_doc->URL().url());    QPainter *p = new QPainter;    p->begin(printer);        // mostly taken from KHTMLView::print()    QString headerLeft = KGlobal::locale()->formatDate(QDate::currentDate(), false);    QString headerRight = m_doc->URL().url();    QString footerMid;        QFont headerFont("helvetica", 8);    p->setFont(headerFont);    const int lspace = p->fontMetrics().lineSpacing();    const int headerHeight = (lspace * 3) / 2;        QPaintDeviceMetrics metrics(printer);    const int pageHeight = metrics.height() - 2*headerHeight;    const int pageWidth = metrics.width();            //    kdDebug() << "Bookcase::doPrint() - pageHeight = " << pageHeight << ""//                 "; contentsHeight = " << w->view()->contentsHeight() << endl;    int top = 0;    int page = 1;    bool more = true;    while(more) {      p->setPen(Qt::black);      p->setFont(headerFont);      footerMid = i18n("Page %1").arg(page);      p->drawText(0, 0, pageWidth, lspace, Qt::AlignLeft, headerLeft);      p->drawText(0, 0, pageWidth, lspace, Qt::AlignRight, headerRight);      p->drawText(0, pageHeight+headerHeight, pageWidth, lspace, Qt::AlignHCenter, footerMid);      w->paint(p, QRect(0, -top + 2*headerHeight, pageWidth, pageHeight+top), top, &more);      top += pageHeight - PRINTED_PAGE_OVERLAP;      if(more) {        printer->newPage();        page++;      }//      p->resetXForm();    }    // stop painting, this will automatically send the print data to the printer    p->end();    delete p;  }  delete printer;#endif  delete w;}void Bookcase::XSLTError() {  QString str = i18n("Bookcase encountered an error in XSLT processing.\n");  str += i18n("Please check your installation.");  KMessageBox::sorry(this, str);}void Bookcase::FileError(const QString& filename) {  QString str = i18n("Bookcase is unable to find a required file - %1.\n").arg(filename);  str += i18n("Please check your installation.");  KMessageBox::sorry(this, str);}void Bookcase::slotExportBibtex() {  slotStatusMsg(i18n("Exporting..."));  if(m_doc->isEmpty()) {    slotStatusMsg(i18n("Ready."));    return;  }  QString filename(QString::fromLatin1("bookcase2bibtex.xsl"));    QString filter = i18n("*.bib|Bibtex files (*.bib)");  filter += QString::fromLatin1("\n");  filter += i18n("*|All files");  exportUsingXSLT(filename, filter);  slotStatusMsg(i18n("Ready."));}void Bookcase::slotExportBibtexml() {  slotStatusMsg(i18n("Exporting..."));  if(m_doc->isEmpty()) {    slotStatusMsg(i18n("Ready."));    return;  }  QString filename(QString::fromLatin1("bookcase2bibtexml.xsl"));    QString filter = i18n("*.xml|Bibtexml files (*.xml)");  filter += QString::fromLatin1("\n");  filter += i18n("*|All files");  exportUsingXSLT(filename, filter);  slotStatusMsg(i18n("Ready."));}void Bookcase::slotImportBibtex() {  slotStatusMsg(i18n("Importing from Bibtex..."));  QString filter = i18n("*.bib|Bibtex files (*.bib)");  filter += QString::fromLatin1("\n");  filter += i18n("*|All files");  // use keyword import  KURL infile = KFileDialog::getOpenURL(QString::fromLatin1(":import"), filter,                                        this, i18n("Import from Bibtex..."));  if(infile.isEmpty()) {    return;  }  QDomDocument* dom = BookcaseDoc::importBibtex(infile);  KURL url;  url.setFileName(i18n("Untitled"));  bool success = m_doc->loadDomDocument(url, *dom);  delete dom;  if(success) {    slotEnableOpenedActions(true);    slotEnableModifiedActions(true);  }  slotStatusMsg(i18n("Ready."));}void Bookcase::slotImportBibtexml() {  slotStatusMsg(i18n("Importing from Bibtexml..."));  QString filename(QString::fromLatin1("bibtexml2bookcase.xsl"));  QString xsltfile = KGlobal::dirs()->findResource("appdata", filename);  if(xsltfile.isEmpty()) {    FileError(filename);    return;  }  QString filter = i18n("*.xml|Bibtexml files (*.xml)");  filter += QString::fromLatin1("\n");  filter += i18n("*|All files");  // keyword 'import'  KURL infile = KFileDialog::getOpenURL(QString::fromLatin1(":import"), filter,                                        this, i18n("Import from Bibtexml..."));  if(infile.isEmpty()) {    return;  }    XSLTHandler handler(xsltfile);    QDomDocument* inputDom = m_doc->readDocument(infile);  // readDocument() has its own error messages  if(!inputDom || inputDom->isNull()) {    kdDebug() << "slotImportBibtexml() - null QDomDocument!" << endl;    delete inputDom;    return;  }    QString text = handler.applyStylesheet(inputDom->toString());  delete inputDom;  if(text.isEmpty()) {    XSLTError();    return;  }  QDomDocument dom;  if(!dom.setContent(text)) {    XSLTError();  }    KURL url;  url.setFileName(i18n("Untitled"));  bool success = (m_editWidget->queryModified()                  && m_doc->saveModified()                  && m_doc->loadDomDocument(url, dom));  if(success) {    slotEnableOpenedActions(true);    slotEnableModifiedActions(true);  }  slotStatusMsg(i18n("Ready."));}void Bookcase::slotExportXSLT() {  slotStatusMsg(i18n("Exporting..."));  if(m_doc->isEmpty()) {    slotStatusMsg(i18n("Ready."));    return;  }  QString filter = i18n("*.xsl|XSLT files (*.xsl)");  filter += QString::fromLatin1("\n");  filter += i18n("*|All files");  KURL xsltfile = KFileDialog::getOpenURL(QString::fromLatin1(":export"), filter,                                          this, i18n("Select XSLT file..."));  if(xsltfile.isEmpty()) {    slotStatusMsg(i18n("Ready."));    return;  }    XSLTHandler handler(xsltfile);  handler.addStringParam(QCString("version"), QCString(VERSION));  QDomDocument dom = m_doc->exportXML();  QString text = handler.applyStylesheet(dom.toString());  if(text.isEmpty()) {    XSLTError();    return;  }  KURL url = KFileDialog::getSaveURL(QString::fromLatin1(":export"),                                     i18n("*|All files"),                                     this, i18n("Export..."));  if(!url.isEmpty()) {    m_doc->writeURL(url, text);  }  slotStatusMsg(i18n("Ready."));}bool Bookcase::exportUsingXSLT(const QString& xsltFileName_, const QString& filter_) {  QString xsltfile = KGlobal::dirs()->findResource("appdata", xsltFileName_);  if(xsltfile.isEmpty()) {    FileError(xsltFileName_);    return false;  }  XSLTHandler handler(xsltfile);  handler.addStringParam(QCString("version"), QCString(VERSION));  QDomDocument dom = m_doc->exportXML();  QString text = handler.applyStylesheet(dom.toString());  if(text.isEmpty()) {    XSLTError();    return false;  }  // use keyword 'export'  KURL url = KFileDialog::getSaveURL(QString::fromLatin1(":export"), filter_,                                     this, i18n("Export..."));  if(url.isEmpty()) {    return false;  }  return m_doc->writeURL(url, text);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品成人网| 国产欧美一区二区精品性色超碰 | 日韩主播视频在线| 亚洲欧美色一区| 中文在线一区二区| 中文字幕一区二区三区在线观看| 国产亚洲欧美日韩在线一区| 久久精品夜色噜噜亚洲aⅴ| 久久精品免费在线观看| 欧美国产成人精品| 日韩美女视频一区| 香蕉成人啪国产精品视频综合网| 亚洲国产精品一区二区久久恐怖片| 亚洲一区电影777| 日韩电影在线免费看| 久久av老司机精品网站导航| 国产精品一区二区三区99| 国产成人在线视频网站| 91黄色小视频| 日韩精品一区二区三区四区视频| 久久婷婷国产综合精品青草| 亚洲欧洲精品天堂一级| 午夜婷婷国产麻豆精品| 九九九精品视频| 一本高清dvd不卡在线观看| 欧美日韩一区中文字幕| 久久一区二区三区国产精品| 亚洲视频 欧洲视频| 日欧美一区二区| 丁香婷婷深情五月亚洲| 91丝袜美腿高跟国产极品老师| 欧美日韩国产小视频在线观看| 精品国产网站在线观看| 国产精品久久毛片a| 三级欧美韩日大片在线看| 九九久久精品视频 | 国产精品电影院| 三级一区在线视频先锋| 不卡区在线中文字幕| 5858s免费视频成人| 国产精品少妇自拍| 日本美女视频一区二区| 99国产精品久| 久久综合精品国产一区二区三区| 日韩毛片视频在线看| 久久精品国产免费| 欧美午夜电影在线播放| 久久蜜桃香蕉精品一区二区三区| 亚洲一二三区不卡| 成人黄色一级视频| 欧美精品一区二区三区高清aⅴ | 免费av成人在线| 91年精品国产| 中文字幕电影一区| 国产一区二区在线免费观看| 欧美伦理影视网| 亚洲精品欧美专区| 粉嫩av亚洲一区二区图片| 精品欧美黑人一区二区三区| 亚洲一区在线观看视频| 91黄视频在线观看| 亚洲精品乱码久久久久| av激情综合网| 国产精品传媒入口麻豆| 国产不卡免费视频| 久久久国际精品| 狠狠色丁香九九婷婷综合五月| 欧美一区二区三区四区在线观看| 亚洲一卡二卡三卡四卡五卡| 在线欧美小视频| 亚洲美腿欧美偷拍| 在线观看亚洲精品视频| 亚洲国产aⅴ天堂久久| 欧美视频精品在线| 日韩国产欧美在线播放| 911精品产国品一二三产区| 亚洲一卡二卡三卡四卡五卡| 欧美日韩专区在线| 日韩在线播放一区二区| 欧美一区二区三区不卡| 蜜臀av一区二区| 精品黑人一区二区三区久久 | 成人黄色网址在线观看| 国产精品久久久久久亚洲毛片| 成人18视频在线播放| 亚洲男人都懂的| 欧美日韩免费电影| 美腿丝袜亚洲色图| 国产日产欧美一区| 91啪在线观看| 天天色天天操综合| www欧美成人18+| 成人深夜在线观看| 亚洲一区二区综合| 欧美大白屁股肥臀xxxxxx| 国产福利电影一区二区三区| 亚洲天堂a在线| 555www色欧美视频| 国产传媒久久文化传媒| 亚洲综合在线五月| 日韩久久精品一区| 波多野结衣中文一区| 亚洲成精国产精品女| 精品国产伦一区二区三区免费| 成人精品小蝌蚪| 首页国产丝袜综合| 国产欧美一区二区三区在线老狼| 91福利视频久久久久| 狠狠色丁香久久婷婷综| 一区二区在线观看不卡| 欧美mv日韩mv国产网站| 在线精品亚洲一区二区不卡| 国产在线一区观看| 亚洲成av人片在www色猫咪| 久久色在线视频| 欧美伦理视频网站| 91视频免费观看| 国产成人免费xxxxxxxx| 日韩中文字幕一区二区三区| 国产精品国产三级国产普通话蜜臀| 91麻豆精品国产综合久久久久久| 国产成人丝袜美腿| 奇米影视一区二区三区| 1024成人网| 国产精品毛片高清在线完整版| 欧美一区二区三区四区在线观看 | 亚洲色图欧美在线| 久久免费午夜影院| 91精品国产综合久久久久| 色婷婷精品大视频在线蜜桃视频| 国内成人精品2018免费看| 午夜精品久久久久久久99樱桃| 亚洲视频在线一区观看| 日本一区二区三区国色天香 | 色乱码一区二区三区88| 成人国产精品免费观看动漫| 国产在线精品一区在线观看麻豆| 亚洲一区二区美女| 玉米视频成人免费看| 亚洲色图欧洲色图| 亚洲日本青草视频在线怡红院| 国产视频一区二区三区在线观看| 精品粉嫩aⅴ一区二区三区四区| 69p69国产精品| 欧美一区日韩一区| 日韩一区二区三区免费看| 91麻豆精品国产91久久久| 5月丁香婷婷综合| 91精品国产一区二区三区 | 国产成人日日夜夜| 国产精品白丝jk黑袜喷水| 国产麻豆日韩欧美久久| 国产精品99久久久久久久女警| 久久99久久精品欧美| 麻豆91在线播放| 精品综合久久久久久8888| 精东粉嫩av免费一区二区三区| 国产制服丝袜一区| 粉嫩av一区二区三区粉嫩| 不卡在线观看av| 欧美性受xxxx黑人xyx性爽| 欧美日韩美少妇| 日韩欧美成人激情| 精品久久国产97色综合| 国产精品视频一二三| 亚洲中国最大av网站| 日韩一区精品视频| 国产一区在线不卡| 97精品久久久久中文字幕| 色视频欧美一区二区三区| 欧美日韩国产123区| 精品国产亚洲一区二区三区在线观看| 久久久久国产免费免费| 亚洲欧美一区二区不卡| 亚洲国产wwwccc36天堂| 黑人巨大精品欧美黑白配亚洲| 成人激情开心网| 欧美人妖巨大在线| 久久综合久久综合久久| 亚洲欧美另类久久久精品2019| 亚洲不卡av一区二区三区| 国产真实乱偷精品视频免| 91女人视频在线观看| 欧美成人免费网站| 亚洲欧美国产三级| 精品中文字幕一区二区小辣椒| 99久久精品免费| 日韩精品在线看片z| 国产精品国产三级国产普通话99| 日韩制服丝袜av| 色综合中文字幕国产 | 成人午夜伦理影院| 777亚洲妇女| 亚洲欧美偷拍另类a∨色屁股| 免费观看30秒视频久久| 色综合色综合色综合| 久久久久久久久久久久电影| 亚洲线精品一区二区三区八戒| 国产 欧美在线| 日韩欧美不卡在线观看视频|