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

📄 qpdf.cpp

📁 爱可视605看PDF程式源代码, 基于APDF
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	}	if (!handled)		return QWidget::event(e);	return true;}void QPdfDlg::toggleVideo(void){#ifndef SIM	static int old_w = 0, old_h = 0;	int fd = ::open("/dev/fb0", O_RDWR);	if (fd < 0) {		qWarning("Can't open framebuffer device /dev/fb0");		return;	}	fb_var_screeninfo vinfo;	memset( &vinfo, 0, sizeof(fb_var_screeninfo) );	if (ioctl(fd, FBIOGET_VSCREENINFO, &vinfo)) {		qFatal("Error reading variable information in card init");		::close(fd);		return;	}	::close(fd);	int w = vinfo.xres;	int h = vinfo.yres;	int d = vinfo.bits_per_pixel;	qWarning("__fb0 read w = %i h = %i d = %i\n", w, h, d);	if (w == old_w && h == old_h) {		qWarning("mode hasn't changed");		return;	}	old_w = w;	old_h = h;	qt_screen->setMode(w, h, d);	QWSServer::beginDisplayReconfigure();	QWSServer::endDisplayReconfigure();#endif}void QPdfDlg::rendererRunning(bool running){    if (running) {		spinbar->start();		spinbar->setText(QString::fromUtf8(atr("pdf_prep_page")).arg(pdfWidget->getPageNumber()).arg(pdfWidget->getNumPages()));		spinbar->show();    }    else {		spinbar->stop();		spinbar->setText("");		spinbar->hide();    }}class DocumentLoader : public QThread {	public :		DocumentLoader(QString docPath, QObject *master) : QThread()			, m_master(master)			, m_docPath(docPath)		{}		virtual void run()		{			qWarning("DocumentLoader: trying to load %s", m_docPath.ascii());			Poppler::Document *doc = Poppler::Document::load(m_docPath);			if (doc) {				QApplication::postEvent(m_master, new QCustomEvent((QEvent::Type)DocLoaded, doc));			} else {				QApplication::postEvent(m_master, new QCustomEvent((QEvent::Type)DocLoaded, 0));			}		}	private:		QObject *m_master;		QString m_docPath;};void QPdfDlg::customEvent(QCustomEvent *e){    if ((int)e->type() == DocLoaded) {        docLoaded((Poppler::Document*)e->data());    } else {        QWidget::customEvent(e);    }}void QPdfDlg::docLoaded(Poppler::Document* d){	if (d) {		m_doc = d;		qWarning("document loaded");		m_pages = m_doc->getNumPages();		sideMenu->setEntryVisible(PPAGE_ENTRY, 0);		sideMenu->setEntryVisible(NPAGE_ENTRY, m_pages > 1);		sideMenu->setEntryVisible(GOTOPAGE_ENTRY, m_pages > 1);		pdfWidget->setDocument(m_doc, FIT_TO_WIDTH);		sideMenu->show();		m_docLoaded = true;	} else {		qWarning("failed to load document");		spinbar->stop();		spinbar->setText("");		spinbar->hide();		exit(1);	}}void QPdfDlg::openFile(const QString &f){	QFileInfo fi(f);		if (fi.exists()) {		delete m_doc;		m_doc = 0;		m_loader = new DocumentLoader(f, this);		spinbarLoading();		m_loader->start();	}	else {		qWarning("Couldn't open file '%s'!", f.ascii());		exit(1);	}}void QPdfDlg::spinbarLoading(void){	spinbar->start();	spinbar->setText(QString::fromUtf8(atr("pdf_loading_document")));	spinbar->show();}void QPdfDlg::isFirstPage(bool first) {    if (first) {        sideMenu->setEntryVisible(PPAGE_ENTRY, 0);    }    else {        sideMenu->setEntryVisible(PPAGE_ENTRY, 1);    }}void QPdfDlg::isLastPage(bool last) {    if (last) {        sideMenu->setEntryVisible(NPAGE_ENTRY, 0);    }    else {        sideMenu->setEntryVisible(NPAGE_ENTRY, 1);    }}void QPdfDlg::pagesInHistory(bool page){    if (page) {        sideMenu->setEntryVisible(LBACK_ENTRY, 1);    }    else {        sideMenu->setEntryVisible(LBACK_ENTRY, 0);    }}// private slotvoid QPdfDlg::zoomChanged() {	if (pdfWidget->zoomIsUpperBound()) {		sideMenu->setEntryVisible(ZIN_ENTRY, 0);	} else {		sideMenu->setEntryVisible(ZIN_ENTRY, 1);	}	if (pdfWidget->zoomIsLowerBound()) {		sideMenu->setEntryVisible(ZOUT_ENTRY, 0);	} else {		sideMenu->setEntryVisible(ZOUT_ENTRY, 1);	}}void QPdfDlg::createMenu(){	sideMenu = new SideMenu(8, this, "side menu");	sideMenu->setBackgroundColor(QColor(90, 90, 120));	setupMenuItems(sideMenu);	int dw = qt_screen->width();	int dh = qt_screen->height();	int mw = sideMenu->sizeHint().width();	sideMenu->setGeometry(dw - mw, 0, mw, dh);	QSize s;	if (Screen::mode() == wqvga || Screen::mode() == qvga) {		s = QSize(30, 30);	}	else {  // wvga		s = QSize(60, 60);	}	pdfWidget->setHotspot(s);	connect(sideMenu, SIGNAL(entryActivated(int)), this, SLOT(onMenuEntryActivated(int)));	connect(gotoPage, SIGNAL(closed()), sideMenu, SLOT(show()));	connect(pdfWidget, SIGNAL(hotspot()), sideMenu, SLOT(showMenuAndLabels()));}void QPdfDlg::disconnectSignals(void){	disconnect(sideMenu, 0, 0, 0);	disconnect(gotoPage, 0, 0, 0);	disconnect(pdfWidget, 0, sideMenu, 0);}void QPdfDlg::setupMenuItems(SideMenu *smenu){	QString path = Screen::prefix();	smenu->setEntry(HIDE_ENTRY, 1, hide, QString::fromUtf8(atr("pdf_hide_overlay")), path + "apdf/label_photo_hide_osd");	smenu->setEntry(HOME_ENTRY, 1, home, QString::fromUtf8(atr("pdf_home")), path + "apdf/label_home");	int enabled = !pdfWidget->zoomIsUpperBound();	smenu->setEntry(ZIN_ENTRY, enabled, zin, QString::fromUtf8(atr("pdf_zoom_in")), path + "apdf/label_zoom_in");	enabled = !pdfWidget->zoomIsLowerBound();	smenu->setEntry(ZOUT_ENTRY, enabled, zout, QString::fromUtf8(atr("pdf_zoom_out")), path + "apdf/label_zoom_out");	enabled = pdfWidget->getPageNumber() > 1;	smenu->setEntry(PPAGE_ENTRY, enabled, prevpage, QString::fromUtf8(atr("pdf_prev_page")), path + "apdf/label_arrow_left");	enabled = pdfWidget->getPageNumber() < pdfWidget->getNumPages();	smenu->setEntry(NPAGE_ENTRY, enabled, nextpage, QString::fromUtf8(atr("pdf_next_page")), path + "apdf/label_arrow_right");	enabled = pdfWidget->arePagesInHistory();	smenu->setEntry(LBACK_ENTRY, enabled, linkback, QString::fromUtf8(atr("pdf_link_back")), path + "apdf/label_link_back");	enabled = pdfWidget->getNumPages() > 1;	smenu->setEntry(GOTOPAGE_ENTRY, enabled, gotopage, QString::fromUtf8(atr("pdf_goto_page")), path + "apdf/label_goto_page");}void QPdfDlg::createGotoPage(){	gotoPage = new GotoPage(0, 0, m_cancelSetZoom, this);	connect(gotoPage, SIGNAL(gotoPage(int)), pdfWidget, SLOT(jumpToPage(int)));}void QPdfDlg::createSpinbar(){	spinbar = new Spinbar(this, 400, 40);	spinbar->move(15, qt_screen->height() - 15 - spinbar->height());}void QPdfDlg::resizeEvent(QResizeEvent *){	qWarning("Screen::mode = %i, m_mode = %i\n", Screen::mode(), m_mode);	if (Screen::mode() != m_mode) {		m_mode = Screen::mode();		qWarning("new screen mode\n");		restartGui();	}}void QPdfDlg::restartGui(void){	disconnectSignals();	delete spinbar;	createSpinbar();	if (m_doc) {		rendererRunning(pdfWidget->rendererRunning());	}	else {		spinbarLoading();	}	delete gotoPage;	createGotoPage();	delete sideMenu;	createMenu();	sideMenu->show();	int dw = qt_screen->width();	int dh = qt_screen->height();	qWarning("desktop %ix%i\n", dw, dh);	int mw = sideMenu->sizeHint().width();	sideMenu->setGeometry(dw - mw, 0, mw, dh);	pdfWidget->resize(dw, dh);}void QPdfDlg::onMenuEntryActivated(int id) {	extapp_msg_t msg;	switch(id) {		case zin :			pdfWidget->zoomIn();			break;		case zout :			pdfWidget->zoomOut();			break;		case prevpage :			pdfWidget->prevPage();			break;		case nextpage :			pdfWidget->nextPage();			break;		case linkback :			pdfWidget->moveBack();			break;		case gotopage :			sideMenu->hide();			gotoPage->setValues(pdfWidget->getNumPages(), pdfWidget->getPageNumber());			gotoPage->show();			break;		case home:			msg.header.magic = EXTAPP_MAGIC;			msg.header.packet_type = EXTAPP_PACKET_TOGGLE_VISIBLE;			msg.header.data_length = 0;			msg.data = NULL;			avossocket->sendMsg(&msg);			break;		case hide:			sideMenu->hide();			break;	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -