Ejemplo n.º 1
0
Archivo: tocdlg.cpp Proyecto: pesgh/cr3
TocDlg::TocDlg(QWidget *parent, CR3View * docView) :
    QDialog(parent),
    m_ui(new Ui::TocDlg), m_docview(docView)
{
    setAttribute( Qt::WA_DeleteOnClose, true );
    m_ui->setupUi(this);
    m_ui->treeWidget->setColumnCount(2);
    m_ui->treeWidget->setHeaderItem(new QTreeWidgetItem(QStringList() << tr("Title") << tr("Page") ));
    m_ui->treeWidget->header()->setStretchLastSection(false);
    m_ui->treeWidget->header()->setResizeMode( 0, QHeaderView::Stretch );
    m_ui->treeWidget->header()->setResizeMode( 1, QHeaderView::ResizeToContents );

    int nearestPage = -1;
    int currPage = docView->getCurPage();
    TocItem * nearestItem = NULL;
    LVTocItem * root = m_docview->getToc();
    for ( int i=0; i<root->getChildCount(); i++ ) {
        m_ui->treeWidget->addTopLevelItem( new TocItem( root->getChild(i), currPage, nearestPage, nearestItem ) );
    }
    m_ui->treeWidget->expandAll();
    if ( nearestItem ) {
        m_ui->treeWidget->setCurrentItem( nearestItem );
    }
    m_docview->restoreWindowPos( this, "toc." );
}
Ejemplo n.º 2
0
Archivo: tocdlg.cpp Proyecto: pesgh/cr3
bool TocDlg::showDlg(  QWidget * parent, CR3View * docView )
{
    LVTocItem * root = docView->getToc();
    if ( !root || !root->getChildCount() )
        return false;
    TocDlg * dlg = new TocDlg( parent, docView );
    dlg->show();
    return true;
}
Ejemplo n.º 3
0
TocDlg::TocDlg(QWidget *parent, CR3View * docView)
    : Dialog(parent)
    , ui(new Ui::TocDlg)
    , docview(docView)
{
    ui->setupUi(this);

    QFont f(ui->treeWidget->font());
    f.setPointSize(docView->getOptions()->getIntDef(PROP_APP_UI_TOC_FONT_SIZE, 12));
    ui->treeWidget->setFont(f);

    f = ui->lblTitle->font();
    f.setBold(true);
    ui->lblTitle->setFont(f);

    f = ui->lblPosition->font();
    f.setPointSize(f.pointSize()/2);
    ui->lblPosition->setFont(f);

    ui->treeWidget->setColumnCount(2);

    bool isVscroll = docview->getOptions()->getIntDef(PROP_APP_UI_TOC_VSCROLLBAR, 1) != 0;
    ui->treeWidget->setVerticalScrollBarPolicy(isVscroll? Qt::ScrollBarAsNeeded : Qt::ScrollBarAlwaysOff);
    bool isHscroll = docview->getOptions()->getIntDef(PROP_APP_UI_TOC_HSCROLLBAR, 1) != 0;
    ui->treeWidget->setHorizontalScrollBarPolicy(isHscroll? Qt::ScrollBarAsNeeded : Qt::ScrollBarAlwaysOff);

    ui->treeWidget->header()->setDefaultAlignment(Qt::AlignLeft);
    ui->treeWidget->header()->setResizeMode(0, isHscroll? QHeaderView::ResizeToContents : QHeaderView::Stretch);
    ui->treeWidget->header()->setResizeMode(1, QHeaderView::ResizeToContents);
    ui->treeWidget->header()->setStretchLastSection(false);
    ui->treeWidget->setExpandsOnDoubleClick(false);
    ui->treeWidget->setEditFocus(true);
  
    int nearestPage = -1;
    int currPage = docView->getCurPage();
    TocItem * nearestItem = NULL;
    LVTocItem * root = docview->getToc();
    for (int i=0; i<root->getChildCount(); i++ )
        ui->treeWidget->addTopLevelItem(new TocItem(root->getChild(i), currPage, nearestPage, nearestItem));

    ui->treeWidget->expandAll();
    if (nearestItem)
    {
        ui->treeWidget->setCurrentItem(nearestItem);
        ui->treeWidget->scrollToItem(nearestItem, QAbstractItemView::EnsureVisible);
    }

    QObject::connect( ui->treeWidget, SIGNAL(itemActivated(QTreeWidgetItem*,int)), this, SLOT(onClicked(QTreeWidgetItem*,int)) );
    QObject::connect( ui->treeWidget, SIGNAL(itemClicked(QTreeWidgetItem*,int)), this, SLOT(onClicked(QTreeWidgetItem*,int)) );

    ui->navBar->setControls(ui->treeWidget, ui->lblPosition,
                              QSize( docview->getOptions()->getIntDef(PROP_APP_UI_SWIPES_X_WEIGHT, 1),
                                     docview->getOptions()->getIntDef(PROP_APP_UI_SWIPES_Y_WEIGHT, 1) ) );

    init();
}
Ejemplo n.º 4
0
TocDlg::TocDlg(QWidget *parent, CR3View * docView) :
    QDialog(parent),
    m_ui(new Ui::TocDlg), m_docview(docView)
{
    setAttribute(Qt::WA_DeleteOnClose, true);
    m_ui->setupUi(this);
    addAction(m_ui->actionNextPage);
    addAction(m_ui->actionPrevPage);
    addAction(m_ui->actionUpdatePage);

    QAction *actionSelect = m_ui->actionGotoPage;
    actionSelect->setShortcut(Qt::Key_Select);
    addAction(actionSelect);

    m_ui->treeWidget->setColumnCount(2);
    m_ui->treeWidget->header()->setResizeMode(0, QHeaderView::Stretch);
    m_ui->treeWidget->header()->setResizeMode(1, QHeaderView::ResizeToContents);

    int nearestPage = -1;
    int currPage = docView->getCurPage();
    TocItem * nearestItem = NULL;
    LVTocItem * root = m_docview->getToc();
    for (int i=0; i<root->getChildCount(); i++ )
        m_ui->treeWidget->addTopLevelItem(new TocItem(root->getChild(i), currPage, nearestPage, nearestItem));

    m_ui->treeWidget->expandAll();
    if(nearestItem)
        m_ui->treeWidget->setCurrentItem(nearestItem);

    m_ui->pageNumEdit->setValidator(new QIntValidator(1, 999999999, this));
    m_ui->pageNumEdit->installEventFilter(this);
    m_ui->treeWidget->installEventFilter(this);

    // code added 28.11.2011
    countItems = 0;
    countItemsTotal = getMaxItemPosFromBegin(m_docview->getToc(),m_ui->treeWidget->currentItem(),0);
    isPageUpdated = false;
}
Ejemplo n.º 5
0
void OnyxMainWindow::showTableOfContents()
{
    std::vector<int> paragraphs;
    std::vector<int> pages;
    std::vector<QString> titles;
    std::vector<QString> paths;
    LVTocItem * root = this->view_->getToc();

    for ( int i=0; i<root->getChildCount(); i++ )
    {
        LVTocItem *n = root->getChild(i);
        paragraphs.push_back(n->getLevel());
        titles.push_back( cr2qt(n->getName()));
        paths.push_back(cr2qt(n->getPath()));
        pages.push_back(n->getPage());
        for ( int j=0; j<n->getChildCount(); j++ )
        {
            LVTocItem *m = n->getChild(j);
            paragraphs.push_back(m->getLevel());
            titles.push_back( cr2qt(m->getName()));
            paths.push_back(cr2qt(m->getPath()));
            pages.push_back(m->getPage());
        }
    }

    std::vector<QStandardItem *> ptrs;
    QStandardItemModel model;

    QStandardItem *parent = model.invisibleRootItem();
    for (size_t i = 0;i < paragraphs.size();++i)
    {
        QStandardItem *item= new QStandardItem(titles[i]);
        item->setData(paths[i],Qt::UserRole+100);
        item->setEditable(false);
        ptrs.push_back(item);

        // Get parent.
        parent = searchParent(i, paragraphs, ptrs, model);
        parent->appendRow(item);
    }

    TreeViewDialog dialog( this );
    dialog.setModel( &model);

    int ret = dialog.popup( tr("Table of Contents") );
    if (ret != QDialog::Accepted)
    {
        onyx::screen::watcher().enqueue(this, onyx::screen::ScreenProxy::GU);
        return;
    }

    QModelIndex index = dialog.selectedItem();
    if ( !index.isValid() )
    {
        return;
    }
    view_->goToXPointer(index.data(Qt::UserRole+100).toString());
}