1 | #include "wmpage.h"
|
---|
2 |
|
---|
3 | WmPage::WmPage(QWidget *currentTab)
|
---|
4 | {
|
---|
5 | createAndAddPageToTab(currentTab);
|
---|
6 | }
|
---|
7 |
|
---|
8 | void WmPage::createAndAddPageToTab(QWidget *currentTab){
|
---|
9 | // Adapted from here: http://stackoverflow.com/questions/5258665/how-to-set-number-of-lines-for-an-qtextedit
|
---|
10 | // Thanks TonyK
|
---|
11 | // Note: not working totally as expected. It isnt resizing correctly for the number of rows.
|
---|
12 | std::function<void(QTextEdit*, int)> setNumberOfRows = [](QTextEdit* textEdit, int rows){
|
---|
13 | textEdit->setFixedHeight(QFontMetrics(textEdit->font()).lineSpacing() * rows);
|
---|
14 | };
|
---|
15 |
|
---|
16 | this->pageTab = currentTab;
|
---|
17 |
|
---|
18 | QGroupBox *mainTextGroupBox = new QGroupBox(this->pageTab);
|
---|
19 | mainTextGroupBox->setTitle("Main Text");
|
---|
20 |
|
---|
21 | this->mainText = new QTextEdit(this->pageTab);
|
---|
22 | setNumberOfRows(this->mainText, 8);
|
---|
23 | this->mainText->setAcceptRichText(false); // block pasting of external formatting
|
---|
24 | this->mainText->setWordWrapMode(QTextOption::NoWrap);
|
---|
25 | QPalette auxPalette = this->mainText->palette();
|
---|
26 | auxPalette.setColor(QPalette::Base, QColor(64,64,64));
|
---|
27 | this->mainText->setPalette(auxPalette);
|
---|
28 |
|
---|
29 | QVBoxLayout *mainTextGroupBoxLayout = new QVBoxLayout();
|
---|
30 | mainTextGroupBoxLayout->addWidget(this->mainText);
|
---|
31 | mainTextGroupBox->setLayout(mainTextGroupBoxLayout);
|
---|
32 |
|
---|
33 | footerTextGroupBox = new QGroupBox(this->pageTab);
|
---|
34 | footerTextGroupBox->setTitle("Footer Text");
|
---|
35 |
|
---|
36 | this->footerText = new QTextEdit(footerTextGroupBox);
|
---|
37 | setNumberOfRows(this->footerText, 4);
|
---|
38 | this->footerText->setAcceptRichText(false); // block pasting of external formatting
|
---|
39 | this->footerText->setWordWrapMode(QTextOption::NoWrap);
|
---|
40 | this->footerText->setPalette(auxPalette);
|
---|
41 |
|
---|
42 |
|
---|
43 | QVBoxLayout *footerTextGroupBoxLayout = new QVBoxLayout();
|
---|
44 | footerTextGroupBoxLayout->addWidget(this->footerText);
|
---|
45 | footerTextGroupBox->setLayout(footerTextGroupBoxLayout);
|
---|
46 |
|
---|
47 | this->middleImage = new QLabel(this->pageTab);
|
---|
48 | this->middleImage->setText("No image selected");
|
---|
49 | this->middleImage->setFixedSize(140,100);
|
---|
50 | this->middleImage->setFrameShape(QFrame::StyledPanel);
|
---|
51 | this->middleImage->setWordWrap(true); // allows us to have text in multiple rows
|
---|
52 | this->middleImage->setAlignment(Qt::AlignVCenter | Qt::AlignHCenter); // align text at center
|
---|
53 |
|
---|
54 | this->addRemoveImageButton = new QToolButton(this->pageTab);
|
---|
55 | this->addRemoveImageButton->setToolTip("Click to add an image");
|
---|
56 | this->addRemoveImageButton->setIcon(QIcon(":/new/icons/plus.png"));
|
---|
57 |
|
---|
58 | QHBoxLayout *imageLayoutCenter = new QHBoxLayout();
|
---|
59 | imageLayoutCenter->addSpacerItem(new QSpacerItem(1,1, QSizePolicy::Expanding, QSizePolicy::Fixed));
|
---|
60 | imageLayoutCenter->addWidget(this->middleImage);
|
---|
61 | imageLayoutCenter->addWidget(this->addRemoveImageButton);
|
---|
62 | imageLayoutCenter->addSpacerItem(new QSpacerItem(1,1, QSizePolicy::Expanding, QSizePolicy::Fixed));
|
---|
63 |
|
---|
64 | QVBoxLayout *pageLayout = new QVBoxLayout();
|
---|
65 | pageLayout->addWidget(mainTextGroupBox);
|
---|
66 | pageLayout->addLayout(imageLayoutCenter);
|
---|
67 | pageLayout->addWidget(footerTextGroupBox);
|
---|
68 |
|
---|
69 | this->pageTab->setLayout(pageLayout);
|
---|
70 |
|
---|
71 | // Connect addRemoveImageButton to our slot
|
---|
72 | connect(this->addRemoveImageButton, SIGNAL(clicked(bool)), this, SLOT(addRemoveImageButtonTriggered()));
|
---|
73 | }
|
---|
74 |
|
---|
75 |
|
---|
76 | QTextEdit& WmPage::getMainText(){
|
---|
77 | return *this->mainText;
|
---|
78 | }
|
---|
79 |
|
---|
80 | QTextEdit& WmPage::getFooterText(){
|
---|
81 | return *this->footerText;
|
---|
82 | }
|
---|
83 |
|
---|
84 | QLabel& WmPage::getMiddleImage(){
|
---|
85 | return *this->middleImage;
|
---|
86 | }
|
---|
87 |
|
---|
88 | void WmPage::hideFooterText(){
|
---|
89 | this->footerTextGroupBox->hide();
|
---|
90 | }
|
---|
91 |
|
---|
92 | void WmPage::showFooterText(){
|
---|
93 | this->footerTextGroupBox->show();
|
---|
94 | }
|
---|
95 |
|
---|
96 | void WmPage::addRemoveImageButtonTriggered(){
|
---|
97 |
|
---|
98 | if(this->middleImage->pixmap() == nullptr){
|
---|
99 |
|
---|
100 | QString selectedImage = QFileDialog::getOpenFileName(this->pageTab,"Choose the image file...","./" , "Image (*.JPG *.JPEG *.PNG)");
|
---|
101 |
|
---|
102 | if(!selectedImage.isEmpty()){
|
---|
103 |
|
---|
104 | this->middleImage->setText(selectedImage);
|
---|
105 | this->middleImage->setToolTip(selectedImage);
|
---|
106 |
|
---|
107 | this->middleImage->setPixmap( selectedImage );
|
---|
108 |
|
---|
109 | // Thanks bukkfa!
|
---|
110 | // http://stackoverflow.com/questions/5653114/display-image-in-qt-to-fit-label-size
|
---|
111 | this->middleImage->setScaledContents( true );
|
---|
112 | this->addRemoveImageButton->setToolTip("Click to remove the image");
|
---|
113 | this->addRemoveImageButton->setIcon(QIcon(":/new/icons/abort.png"));
|
---|
114 | }
|
---|
115 | }
|
---|
116 | else{
|
---|
117 | this->middleImage->setToolTip("");
|
---|
118 | this->middleImage->clear();
|
---|
119 | this->middleImage->setText("No image selected");
|
---|
120 | this->addRemoveImageButton->setToolTip("Click to add an image");
|
---|
121 | this->addRemoveImageButton->setIcon(QIcon(":/new/icons/plus.png"));
|
---|
122 | }
|
---|
123 | }
|
---|