QVariant
KeyTreeModel::data(const QModelIndex& index, int role) const
{
  if (!index.isValid())
    return QVariant();


  KeyTreeItem* item = static_cast<KeyTreeItem*>(index.internalPointer());
  switch (role) {
  case Qt::DisplayRole:
    {
      return item->data();
    }
  case Qt::FontRole:
    {
      QFont font;
      if (item->isDefault()) {
        font.setBold(true);
      }
      return font;
    }
  // case Qt::BackgroundRole:
  //   {
  //     std::cerr << "brush" << std::endl;
  //     QBrush brush(Qt::white, Qt::SolidPattern);
  //     if (index.row() % 2 == 0) {
  //       brush.setColor(Qt::cyan);
  //     }
  //     return brush;
  //   }
  default:
    return QVariant();
  }
}
Esempio n. 2
0
	const QString CPrinter::entryLink(const KeyTreeItem& item, CSwordModuleInfo* module) {
		Q_ASSERT(module);

		if (module->type() == CSwordModuleInfo::Bible) {
			CSwordVerseKey vk(module);
			vk = item.key();

			switch (item.settings().keyRenderingFace) {
				case KeyTreeItem::Settings::CompleteShort:
					return QString::fromUtf8(vk.getShortText());

				case KeyTreeItem::Settings::CompleteLong:
					return vk.key();

				case KeyTreeItem::Settings::NoKey:
					return QString::null;

				case KeyTreeItem::Settings::SimpleKey: //fall through
				default:
					return QString::number(vk.Verse());
			}

		}

		return item.key();
	}
QString CrossRefRendering::entryLink(const KeyTreeItem &item,
                                     const CSwordModuleInfo *module)
{
    QString linkText;

    const bool isBible = module && (module->type() == CSwordModuleInfo::Bible);
    CSwordVerseKey vk(module); //only valid for bible modules, i.e. isBible == true
    if (isBible) {
        vk.setKey(item.key());
    }

    switch (item.settings().keyRenderingFace) {
        case KeyTreeItem::Settings::NoKey: {
            linkText = QString::null;
            break; //no key is valid for all modules
        }
        case KeyTreeItem::Settings::CompleteShort: {
            if (isBible) {
                linkText = QString::fromUtf8(vk.getShortText());
                break;
            }
            //fall through for non-Bible modules
        }
        case KeyTreeItem::Settings::CompleteLong: {
            if (isBible) {
                linkText = vk.key();
                break;
            }
            //fall through for non-Bible modules
        }
        case KeyTreeItem::Settings::SimpleKey: {
            if (isBible) {
                linkText = QString::number(vk.getVerse());
                break;
            }
            //fall through for non-Bible modules
        }
        default: { //default behaviour to return the passed key
            linkText = item.key();
            break;
        }
    }

    if (!linkText.isEmpty()) { //if we have a valid link text
        //     qWarning("rendering");
        return QString("<a href=\"%1\">%2</a>")
               .arg(
                   ReferenceManager::encodeHyperlink(
                       module->name(),
                       item.key(),
                       ReferenceManager::typeFromModule(module->type())
                   )
               )
               .arg(linkText);
    }

    return QString::null;
}
QVariant
KeyTreeModel::name(const QModelIndex& index, int role) const
{
  if (!index.isValid())
    return QVariant();

  if (role != Qt::DisplayRole)
    return QVariant();

  KeyTreeItem* item = static_cast<KeyTreeItem*>(index.internalPointer());

  return item->name();
}
int
KeyTreeModel::rowCount(const QModelIndex &parent) const
{
  KeyTreeItem *parentItem;
  if (parent.column() > 0)
    return 0;

  if (!parent.isValid())
    parentItem = m_rootItem;
  else
    parentItem = static_cast<KeyTreeItem*>(parent.internalPointer());

  return parentItem->childCount();
}
QModelIndex
KeyTreeModel::parent(const QModelIndex &index) const
{
  if (!index.isValid())
    return QModelIndex();

  KeyTreeItem *childItem = static_cast<KeyTreeItem*>(index.internalPointer());
  KeyTreeItem *parentItem = childItem->parentItem();

  if (parentItem == m_rootItem)
    return QModelIndex();

  return createIndex(parentItem->row(), 0, parentItem);
}
Esempio n. 7
0
QString CPrinter::renderEntry(const KeyTreeItem &i, CSwordKey * key) {
    Q_UNUSED(key);

    const CPrinter::KeyTreeItem* printItem = dynamic_cast<const CPrinter::KeyTreeItem*>(&i);
    Q_ASSERT(printItem);

    if (printItem && printItem->hasAlternativeContent()) {
        QString ret = QString::fromLatin1("<div class=\"entry\"><div class=\"rangeheading\">%1</div>").arg(printItem->getAlternativeContent());

        if (!i.childList()->isEmpty()) {
            KeyTree const * tree = i.childList();

            Q_FOREACH (const KeyTreeItem * const c, *tree) {
                ret.append( CDisplayRendering::renderEntry( *c ) );
            }
        }
QModelIndex
KeyTreeModel::index(int row, int column, const QModelIndex &parent) const
{
  if (!hasIndex(row, column, parent))
    return QModelIndex();

  KeyTreeItem *parentItem;

  if (!parent.isValid())
    parentItem = m_rootItem;
  else
    parentItem = static_cast<KeyTreeItem*>(parent.internalPointer());

  KeyTreeItem *childItem = parentItem->child(row);
  if (childItem)
    return createIndex(row, column, childItem);
  else
    return QModelIndex();
}
Esempio n. 9
0
	const QString CPrinter::renderEntry( const KeyTreeItem& i, CSwordKey* ) {
		const CPrinter::KeyTreeItem* printItem = dynamic_cast<const CPrinter::KeyTreeItem*>(&i);
		Q_ASSERT(printItem);

		if (printItem && printItem->hasAlternativeContent()) {
			QString ret = QString::fromLatin1("<div class=\"entry\"><div class=\"rangeheading\">%1</div>").arg(printItem->getAlternativeContent());

			if (i.hasChildItems()) {
				KeyTree const * tree = i.childList();

				for ( KeyTreeItem* c = tree->first(); c; c = tree->next() ) {
					ret.append( CDisplayRendering::renderEntry( *c ) );
				}
			}

			ret.append("</div>");
			return ret;
		}

		return CDisplayRendering::renderEntry(i);
	}
Esempio n. 10
0
CTextRendering::KeyTreeItem::KeyTreeItem(const KeyTreeItem& i)
        : m_settings( i.m_settings ),
        m_moduleList( i.m_moduleList ),
        m_key( i.m_key ),
        m_childList(),
        m_stopKey( i.m_stopKey ),
        m_alternativeContent( i.m_alternativeContent )
{
    const KeyTree &tree = *i.childList();
    Q_FOREACH (const KeyTreeItem * const item, tree) {
        m_childList.append(new KeyTreeItem((*item))); //deep copy
    }
	const QString CPlainTextExportRendering::renderEntry( const KeyTreeItem& i, CSwordKey*  ) {
		if (!m_settings.addText) {
			return QString(i.key()).append("\n");
		}

		ListCSwordModuleInfo modules = i.modules();
		boost::scoped_ptr<CSwordKey> key( CSwordKey::createInstance(modules.first()) );
		QString renderedText = QString(i.key()).append(":\n");

		QString entry;
		//   for (CSwordModuleInfo* m = modules.first(); m; m = modules.next()) {
		ListCSwordModuleInfo::iterator end_it = modules.end();

		for (ListCSwordModuleInfo::iterator it(modules.begin()); it != end_it; ++it) {
			key->module(*it);
			key->key( i.key() );

			//ToDo: Check this code
			entry.append(key->strippedText()).append("\n");
			renderedText.append( entry );
		}

		return renderedText;
	}
Esempio n. 12
0
QString CDisplayRendering::entryLink(const KeyTreeItem &item,
                                     const CSwordModuleInfo * module)
{
    QString linkText;

    const bool isBible = module && (module->type() == CSwordModuleInfo::Bible);
    CSwordVerseKey vk(module); //only valid for bible modules, i.e. isBible == true
    vk.setIntros(true);

    if (isBible) {
        vk.setKey(item.key());
    }

    if (isBible && (vk.getVerse() == 0)) {
        return QString::null; //Warning: return already here
    }

    switch (item.settings().keyRenderingFace) {

        case KeyTreeItem::Settings::NoKey: {
            linkText = QString::null;
            break; //no key is valid for all modules
        }

        case KeyTreeItem::Settings::CompleteShort: {
            if (isBible) {
                linkText = QString::fromUtf8(vk.getShortText());
                break;
            }

            //fall through for non-Bible modules
        }

        case KeyTreeItem::Settings::CompleteLong: {
            if (isBible) {
                linkText = vk.key();
                break;
            }

            //fall through for non-Bible modules
        }

        case KeyTreeItem::Settings::SimpleKey: {
            if (isBible) {
                linkText = QString::number(vk.getVerse());
                break;
            }

            //fall through for non-Bible modules
        }

        default: { //default behaviour to return the passed key
            linkText = item.key();
            break;
        }
    }


    if (linkText.isEmpty()) {
        return QString("<a name=\"").append(keyToHTMLAnchor(item.key())).append("\"></a>");
    }
    else {
        return QString("<a name=\"").append(keyToHTMLAnchor(item.key())).append("\" ")
               .append("href=\"")
               .append(ReferenceManager::encodeHyperlink(
                           module->name(), item.key(), ReferenceManager::typeFromModule(module->type()))
                      )
               .append("\">").append(linkText).append("</a>\n");
    }

    return QString::null;
}