9 #ifndef UI_ABOUTDIALOG_H 10 #define UI_ABOUTDIALOG_H 12 #include <QtCore/QVariant> 13 #include <QtWidgets/QAction> 14 #include <QtWidgets/QApplication> 15 #include <QtWidgets/QButtonGroup> 16 #include <QtWidgets/QDialog> 17 #include <QtWidgets/QDialogButtonBox> 18 #include <QtWidgets/QGridLayout> 19 #include <QtWidgets/QHBoxLayout> 20 #include <QtWidgets/QHeaderView> 21 #include <QtWidgets/QLabel> 22 #include <QtWidgets/QPushButton> 23 #include <QtWidgets/QScrollArea> 24 #include <QtWidgets/QVBoxLayout> 25 #include <QtWidgets/QWidget> 46 if (aboutDialog->objectName().isEmpty())
47 aboutDialog->setObjectName(QStringLiteral(
"aboutDialog"));
48 aboutDialog->resize(601, 653);
49 QSizePolicy sizePolicy(QSizePolicy::Maximum, QSizePolicy::MinimumExpanding);
50 sizePolicy.setHorizontalStretch(0);
51 sizePolicy.setVerticalStretch(0);
52 sizePolicy.setHeightForWidth(aboutDialog->sizePolicy().hasHeightForWidth());
53 aboutDialog->setSizePolicy(sizePolicy);
54 aboutDialog->setMinimumSize(QSize(0, 0));
55 aboutDialog->setSizeGripEnabled(
true);
56 gridLayout =
new QGridLayout(aboutDialog);
57 gridLayout->setObjectName(QStringLiteral(
"gridLayout"));
58 verticalLayout =
new QVBoxLayout();
59 verticalLayout->setObjectName(QStringLiteral(
"verticalLayout"));
60 verticalLayout->setSizeConstraint(QLayout::SetDefaultConstraint);
61 verticalLayout->setContentsMargins(-1, -1, -1, 0);
62 addrLayout =
new QHBoxLayout();
63 addrLayout->setObjectName(QStringLiteral(
"addrLayout"));
64 addrLayout->setContentsMargins(-1, 0, -1, -1);
65 aboutBoxScroll =
new QScrollArea(aboutDialog);
66 aboutBoxScroll->setObjectName(QStringLiteral(
"aboutBoxScroll"));
67 aboutBoxScroll->setFrameShadow(QFrame::Plain);
68 aboutBoxScroll->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
69 aboutBoxScroll->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
70 aboutBoxScroll->setWidgetResizable(
false);
71 scrollAreaWidgetContents =
new QWidget();
72 scrollAreaWidgetContents->setObjectName(QStringLiteral(
"scrollAreaWidgetContents"));
73 scrollAreaWidgetContents->setGeometry(QRect(0, 0, 566, 2500));
74 QSizePolicy sizePolicy1(QSizePolicy::MinimumExpanding, QSizePolicy::Expanding);
75 sizePolicy1.setHorizontalStretch(0);
76 sizePolicy1.setVerticalStretch(0);
77 sizePolicy1.setHeightForWidth(scrollAreaWidgetContents->sizePolicy().hasHeightForWidth());
78 scrollAreaWidgetContents->setSizePolicy(sizePolicy1);
79 scrollAreaWidgetContents->setAutoFillBackground(
true);
80 layoutWidget =
new QWidget(scrollAreaWidgetContents);
81 layoutWidget->setObjectName(QStringLiteral(
"layoutWidget"));
82 layoutWidget->setGeometry(QRect(2, -2, 811, 2671));
83 verticalLayout_2 =
new QVBoxLayout(layoutWidget);
84 verticalLayout_2->setSpacing(2);
85 verticalLayout_2->setObjectName(QStringLiteral(
"verticalLayout_2"));
86 verticalLayout_2->setContentsMargins(0, 0, 0, 0);
87 titleLabel =
new QLabel(layoutWidget);
88 titleLabel->setObjectName(QStringLiteral(
"titleLabel"));
90 font.setPointSize(12);
93 titleLabel->setFont(font);
94 titleLabel->setTextFormat(Qt::RichText);
95 titleLabel->setAlignment(Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter);
96 titleLabel->setWordWrap(
true);
98 verticalLayout_2->addWidget(titleLabel);
100 turtleButton =
new QPushButton(layoutWidget);
101 turtleButton->setObjectName(QStringLiteral(
"turtleButton"));
102 turtleButton->setEnabled(
true);
103 turtleButton->setMinimumSize(QSize(558, 443));
104 turtleButton->setMaximumSize(QSize(558, 443));
106 icon.addFile(QStringLiteral(
":/ui/ui/turt558.png"), QSize(), QIcon::Normal, QIcon::Off);
107 turtleButton->setIcon(icon);
108 turtleButton->setIconSize(QSize(558, 443));
109 turtleButton->setFlat(
true);
111 verticalLayout_2->addWidget(turtleButton);
113 aboutTextLabel =
new QLabel(layoutWidget);
114 aboutTextLabel->setObjectName(QStringLiteral(
"aboutTextLabel"));
115 aboutTextLabel->setMinimumSize(QSize(550, 2200));
116 aboutTextLabel->setMaximumSize(QSize(550, 2200));
117 aboutTextLabel->setTextFormat(Qt::RichText);
118 aboutTextLabel->setAlignment(Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop);
119 aboutTextLabel->setWordWrap(
true);
120 aboutTextLabel->setOpenExternalLinks(
true);
122 verticalLayout_2->addWidget(aboutTextLabel);
124 aboutBoxScroll->setWidget(scrollAreaWidgetContents);
126 addrLayout->addWidget(aboutBoxScroll);
129 verticalLayout->addLayout(addrLayout);
132 gridLayout->addLayout(verticalLayout, 0, 0, 1, 1);
134 closeButtonBox =
new QDialogButtonBox(aboutDialog);
135 closeButtonBox->setObjectName(QStringLiteral(
"closeButtonBox"));
136 closeButtonBox->setStandardButtons(QDialogButtonBox::Close);
138 gridLayout->addWidget(closeButtonBox, 1, 0, 1, 1);
142 QObject::connect(closeButtonBox, SIGNAL(rejected()), aboutDialog, SLOT(deleteLater()));
144 QMetaObject::connectSlotsByName(aboutDialog);
149 aboutDialog->setWindowTitle(QApplication::translate(
"aboutDialog",
"About classified ads", Q_NULLPTR));
150 titleLabel->setText(QApplication::translate(
"aboutDialog",
" Classified ads is a program for online communications", Q_NULLPTR));
151 turtleButton->setText(QString());
152 aboutTextLabel->setText(QApplication::translate(
"aboutDialog",
"<html><head/><body><p>Classified ads is free software. You may use, copy and modify it if you follow the conditions given in GNU lesser general public license version 2.1.</p><p>Classified ads is copyright \302\251 Antti J\303\244rvinen 2013. </p><p>Main feature of the program is an "advertisement" - a piece of text belonging to selected classification. There are several pre-programmed classifications and operators are encouraged to invent new classifications for new purposes ; the selection boxes in classification-selection tab are editable. Other operators may then view the ads, publicly comment the ads, the operators and also send private messages to each others. </p><p>Another important feature of classified ads is that it is designed to be operated without any centralized server infrastructure - it is you and other operators whose computers store and transmit all the content visible inside classified ads. To get connected you need to know address of at least one existing computer (a <span style=" 153 "\" font-style:italic;\">node</span>) so if your network connection dialog shows no connections, you may need to contact someone you know is using the software and ask for address of her node to make initial contact with the network. Once connected the software should maintain list of addresses of other nodes. </p><p>Due to its server-less design the whole system works best if you leave the program running always when you have your computer powered on ; while processing other operators requests it will hog some computing resources and generate network traffic also when you are not actively using the program yourself - others are. </p><p>Operators concerned about privacy of the content should be aware of following items:</p><p>- Data storage implementation is variant of <span style=\" font-style:italic;\">distributed hash table</span>, practically meaning that content posted by you gets copied some more-or-less random nodes in the network. </p><p>- Any data item (ad, comment, binary file, private message etc.) i" 154 "s digitally signed. This makes it more difficult to try to pose as another operator. </p><p>- Operators are reliably identified only by the SHA1 hash of their generated encryption keys. SHA1 hash is displayed when viewing details of operator profiles. Other identifying information like nickname or city name are entered by operator himself and can be anything. The operator profile, as it is published to the network, is also signed with the encryption keys of the operator - if you identify an operator by her SHA1 hash, you have a mechanism for identifying if any content inside classified ads is posted by this operator or not. Classified ads internally checks for digital signatures, throwing away content that fails signature check and tries to provide SHA1 hash of the operator who posted the content.</p><p>- All classified ads are posted as plain text, no encryption is used. All public profiles are posted as plain text, no encryption is used. If profile is made private, it is encrypted to be readable only by sele" 155 "cted other profiles. This applies also to binary files shared by operators private profiles and comments about private profiles after the profile was made private (previously plain-text comments or files don't get magically encrypted afterwards). Private messages are encrypted always to be readable only by recipient and sender. Attachments follow the privacy rules of the document, they're attached to. </p><p>- As is the case with all internet-communications, this small fact is true for classified ads too : <span style=\" font-style:italic;\">once something gets posted online, there is no way to remove it from network</span>. </p><p>- Data encryption implementation for content is OpenSSL, relying mostly on algorithms RSA-2048 and AES-256. </p><p>- While connections between nodes are implemented using SSL, other nodes inside network do get to know what content is being transmitted in neighboring nodes. While there is no central point for easily collecting this information about particular classification or opera" 156 "tor, operators still should expect no privacy regarding their doings online, although some effort has been been put into hiding <span style=\" font-style:italic;\">contents</span> of private messages and private profiles. </p><p>Programming was (mostly) done by Antti J\303\244rvinen, artwork by Meeri J\303\244rvinen.</p><p>This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/).</p><p>Happy advertising!</p><p><br/></p></body></html>", Q_NULLPTR));
167 #endif // UI_ABOUTDIALOG_H QWidget * layoutWidget
Definition: ui_aboutDialog.h:37
QHBoxLayout * addrLayout
Definition: ui_aboutDialog.h:34
QLabel * aboutTextLabel
Definition: ui_aboutDialog.h:41
QScrollArea * aboutBoxScroll
Definition: ui_aboutDialog.h:35
Definition: ui_aboutDialog.h:161
QWidget * scrollAreaWidgetContents
Definition: ui_aboutDialog.h:36
void retranslateUi(QDialog *aboutDialog)
Definition: ui_aboutDialog.h:147
QVBoxLayout * verticalLayout_2
Definition: ui_aboutDialog.h:38
QGridLayout * gridLayout
Definition: ui_aboutDialog.h:32
QVBoxLayout * verticalLayout
Definition: ui_aboutDialog.h:33
QLabel * titleLabel
Definition: ui_aboutDialog.h:39
Definition: ui_aboutDialog.h:29
Definition: ui_aboutDialog.h:162
QPushButton * turtleButton
Definition: ui_aboutDialog.h:40
QDialogButtonBox * closeButtonBox
Definition: ui_aboutDialog.h:42
void setupUi(QDialog *aboutDialog)
Definition: ui_aboutDialog.h:44