source: s10k/Vago/windowMessagesWizard/wmpage.cpp

Last change on this file was 1061, checked in by s10k, 8 years ago

Added Vago 1.3

File size: 4.7 KB
Line 
1#include "wmpage.h"
2
3WmPage::WmPage(QWidget *currentTab)
4{
5 createAndAddPageToTab(currentTab);
6}
7
8void 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
76QTextEdit& WmPage::getMainText(){
77 return *this->mainText;
78}
79
80QTextEdit& WmPage::getFooterText(){
81 return *this->footerText;
82}
83
84QLabel& WmPage::getMiddleImage(){
85 return *this->middleImage;
86}
87
88void WmPage::hideFooterText(){
89 this->footerTextGroupBox->hide();
90}
91
92void WmPage::showFooterText(){
93 this->footerTextGroupBox->show();
94}
95
96void 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}
Note: See TracBrowser for help on using the repository browser.