1 #include "pagewidget.h"
2 #include "bookbrowser.h"
3 #include "treescrollpopup.h"
4
5 #include <QApplication>
6 #include <QHeaderView>
7
8 bool stopFlag = false;
9
10 const QString PageWidget::CutString("----- cut -----");
11 const QString PageWidget::IntString("----- interrupted -----");
12
PageWidget(QWidget * parent,const SearchMethod & method)13 PageWidget::PageWidget(QWidget *parent, const SearchMethod &method)
14 : QSplitter(parent), method_(method)
15 {
16 setObjectName("dicpage");
17 bookTree = new QTreeWidget();
18 bookTree->header()->hide();
19 bookTree->setColumnCount(2);
20 bookTree->setColumnHidden(1, true);
21 bookTree->setFont(qApp->font());
22 bookTree->setContextMenuPolicy(Qt::CustomContextMenu);
23 bookTree->setIndentation(15);
24
25 bookBrowser_ = new BookBrowser(this);
26 bookBrowser_->setObjectName("main_browser");
27
28 addWidget(bookTree);
29 addWidget(bookBrowser_);
30 setStretchFactor(indexOf(bookBrowser_), 1);
31
32 connect(bookTree,
33 SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)),
34 SLOT(scrollTo(QTreeWidgetItem*,QTreeWidgetItem*)));
35 connect(bookTree,
36 SIGNAL(itemPressed(QTreeWidgetItem*,int)),
37 SLOT(scrollTo(QTreeWidgetItem*,int)));
38 connect(bookTree, SIGNAL(customContextMenuRequested(QPoint)),
39 SLOT(popupSlide(QPoint)));
40 }
41
checkStop()42 bool PageWidget::checkStop()
43 {
44 QEventLoop().processEvents();
45 return stopFlag;
46 }
47
toAnchor(const QString & str,int num)48 QString PageWidget::toAnchor(const QString &str, int num)
49 {
50 return str + QString::number(num);
51 }
52
scrollTo(QTreeWidgetItem * to)53 void PageWidget::scrollTo(QTreeWidgetItem *to)
54 {
55 if (to && to->text(1).at(0) != 'P' ) {
56 bookBrowser_->scrollToAnchor(to->text(1));
57 emit selectionRequested(to->text(0));
58 }
59 }
60
changeFont(const QFont & font)61 void PageWidget::changeFont(const QFont &font)
62 {
63 bookBrowser_->document()->setDefaultFont(font);
64 bookBrowser_->setFont(font);
65 }
66
popupSlide(const QPoint & pos)67 void PageWidget::popupSlide(const QPoint &pos)
68 {
69 QTreeWidgetItem *item = bookTree->itemAt(pos);
70
71 if (!item || !item->childCount())
72 return;
73
74 bookTree->setCurrentItem(item);
75 TreeScrollPopup *popup = new TreeScrollPopup(item, 0);
76 popup->move(bookTree->viewport()->mapToGlobal(pos));
77 popup->show();
78 }
79
zoomIn()80 void PageWidget::zoomIn()
81 {
82 QFont font = bookBrowser_->currentFont();
83 int fsz = font.pointSize();
84 font.setPointSize(fsz + 1);
85
86 bookBrowser_->document()->setDefaultFont(font);
87 bookBrowser_->setFont(font);
88 }
89
zoomOut()90 void PageWidget::zoomOut()
91 {
92 QFont font = bookBrowser_->currentFont();
93 int fsz = font.pointSize();
94 font.setPointSize(fsz - 1);
95
96 bookBrowser_->document()->setDefaultFont(font);
97 bookBrowser_->setFont(font);
98 }
99
setBookTreeVisible(bool visible)100 void PageWidget::setBookTreeVisible(bool visible)
101 {
102 bookTree->setVisible(visible);
103 }
104