_f9Kw+>hAH3GqxGWjuH!EVT3>sL4rV$
zg4m!$2=Q2C0|K#Oku_}c2e5%<6qHq9!6qBb9{`CWMIr=Hq$ngj9GuAmJAO>hOuwq`
zz2~sF)jd5uGqD4a$2n4~s&92yecwIbdE8rKW_*;*9X5df*NXWsBI1EAP;vW_Q=kDR
zW|pRdGXf&gdGNspPd)kMlaHS{bLKlojvQG#43r1ia5%iOzP|q3#~yp^XCiXR%xVBJ
zv+2yQJ^%dkzj)w*2fnAOhYWXrbI$S7OE3NAp@$y&32?>C(o`lr;Pkn3=N`FT!2_r&
z=gysb1UOB`JkxmzoLF65J$_i=Zq{0iC&-v*G2nrYnQ^9yaV47ff-EkMmj3^4~{c~;wL6)Xd`)_t0eMM3IaeS2|ppdI&6~d>*H>o(W9lGb6T-7o3F|
zu2vy#N@9%9hJ#@44&q$|x?Q?UJ;Xbt@VKe=onQiHiX}s1LVcO;=+KvFCuEEuMi^>0GyJ+3Hl;*d7R%)nF`7kebMe-O{tfo`Wuuj=9ok9a}6
z1DCaGv;>@?E@3KAD5g_@mNjWvA~q)@OF*G$saQ}Pg7+o9@OWP!&LJX5i^tTE+_&w)
zI8VSWdZ1HPbUGcp_uw7Q3$(#DO}DBBUUNJuS>tM$Z`0^BC{rdzGM0*h<*MM)l>u5R
zUR+C{pzsAa!TB8tSyD8O_w#^T^nlDWtjdaRH6xlW&LY3EGD+biDIcBs^h-1
zr}*ck0nYgy5|zh!pJm)D=tV~ucNaadFM)Z6R7Js;?pdQ(dN!NH>l*{6^9HEU@eYzPoSXj*dNhM-hHKFdY$beA@XF;)?z&@%jV5w>rAMvCFhmByc=hTwAsP1^UBVRJ?2o9t
z<5S01xIPJ7-VSuU<6}z|%Z2CK_Jm86TODZoMTPhhSEcHr)8pk@0
z{-9yBQ7s1V!L7v9O6PfVbHe(t;pB3cwdIQKCUIh^!Vi1+L`wdkE
zMR_31y_I-s-g&(DcrOGqHk!nll`gBDlGRShYgY$2fvAR=;GJh<61hAG^d}MTJSiFd
zQLYW9p5?A*YzfqOx8ES*ajwD;jxTrEYK)Z(dE6qo~pNfVg_<Ind5$iZOcK01oN%EZXbfUdQXSbG1X9Wy5$~6U<{9El+gxsK
zk78UK2i7;oj6%YhQ8}SMYFPG;+CdXx+(fPq0^=qzo+wSo1@84^y!hHx2BQecIJwrN
zQwdvM8P$<1eMh%fa{rw@URWOy%&=snkOA1EvW_y%!!Bj&-q8{%lWHY=6N+?&(yhCA@`yg={`&J#eKB)Q2#VdqHG0n4;wQg7h
zi-txenDEzsyvJyJJOgjZcz3(z(tCpQIrpcg!4;nE?J?qVD$dnjX-1R9EVOSsy~_hB
zCQ_4dg@P0MO=M#d*cdm&q-e@rrN*|YQ=2tt7K{}0Y-7UuaMJckf~i6TO^TUOR0Td1
zZT`<4uX8Rh3))_&9*u6w1G}xF~{C54#5humVf>Aqc{NZUH^%>2AH6J{0Ix%{ko4@`!G1GjtjR0uO8rNk@$`VYMm
zwyT|uY_^nG@1LX(f;1QEB>^{NpDg9HD!D~Mx^vwS-l
z)JQeK6)kw*_BdoPJ04Ipq#XiHngNx4mWTg~h0xqw5KqAaG}|M@50S#PEw1cnlUDCK
zl~5u!F)tOTjogQ5v2GTJZXCp;?QN3uaNf;&bZNImvIp8=RV6j?LkGQ!K$t8J?Hk0q
z>OgE7Y%t6hBrmpQA&76)R%E(K3GK3DN0-=YJ!frMCoTT!*4VM5OZyG)t;F+JAOG>g
z{QT+PbA4-18Na1={AiD#{^;Sw;r%zZ=H2wouYI2He*OLfS3n!CK>q4z^lMz
zGqYLyAR-Pp2Am>;uMP+2f!2^oTmm-CEWcG)%sL`ckfn9Iy}?u
zL|Y+&7g^{J&{jJ~$cjL;O0?Bh`#7rzFc1Vt5WqkjC|*Q~6q=OeNT$Sx`4|r8abMki
zsf&1S|3`jr?jNLuW?%V}{i1dJCZ@>Na@BiQjKlrPqrKNAh7?-}%
z;eN@|w(W2@9De-HJMa9(tFONLGho}@>u&!P01=76i8tST^ABHp?X@4NYGr2kXxLw_
zs48aGy!F;wue|>H>puZD+`WYYK=JqEz{3|WUi|Ut)2E+%P?YaPRk?os`iE!EocR;r
z8nET=-uZU``oN>BtE*=oH01%zjMdfEGr*%{T?6a{I0Y7g<$k}vaBqfq_oe8zOx9Il
zHvqlzd(frRQ(=b(bU8n`I}a*5EP8dRUEu!D@&9M}jR#!+%)txl?%ThcQUnY{KpmtzhP>>qFVfv-
zzC8KZDPH{EH#xS{pKdF9?V|T{YXOlR`u~@I`}h3Ir5i|9;VKZo6$k<<5G1QEk~MV@
z^Fly9uP28D;(1+CJ}&Ri0OaM&x-+w_(*VSzu=~RSaBF$-x6kv}Km4-RkCQ31;GXA!nVU;DU1SAzM&{Wv+_Q~XUWWpZlmDCJ)&VEDIpW|&d6^!|%y}}s
z)O->C^*=tDzvB=9_DM1$YME^nTm=aVu`Cr_6%XLa5GkW_-x;(PObT`)d)75ukGSLm
zRkG40HwiP!cjp%OI2ZtE($R!&764`Ho;z2KAyCDLL`ABA1Vy5NW)M)tgWw8o2CZSO
z;nH@aEJ`|}WD|EOZXm@)3=(*BXf1c`1FW=PUpRUa8mb(_dIX
zV#pwUeTYQ^^#H=}zDi1T8Zt#xzTK
za>N~POFU>xCTg=~Oo0d#tI10h$=N_>1A9K#laa#w7(WkyZo@ua(CbAO`U^PlgAF)=N;7;toO(K|@4U5XyME
z%;oub$FVe=2f*QJaIeqwVxNAm2SLyf5S8r9L31n;nXv$yqVE#3SqIPYP|NHlN4uOp
z8{w^FiIk7=WRM&S4o#j_aUq0=21O+hbXNI}Er7e>=A_B)x^5oDKQasSs*0+r(5R?t
zo_Q@naK>T0Gd;I#_PbJ7H><@G0G*=7G}XCfr7^=2cx&0JLQa!W6%9(%h-g4Hpi0Ri
zodp1Hm_ak{bCm3Lfqgx~SXK0^UUmV^L2&O)^BIKm?*jG#2H9qM}oG%seGqnz>OAcLPv#n?Y+15fYKzX;5{V
z232SMf5z_$;c@ev4#^SPJ@a0-V*Xk*Zf6X(vk>b{KP&&O)5mdxppi>A2dF3_*$smR
zR22;o31koo0E?9}n6!9us$SfyTnE5h3!t-rSpce7QN@ar#}*I~Hk%ezDI}(|fLsZf
zISWA%hf$kyK$;%-5)w2U
zB=9>=p5W(~HyDjts(x>mE;AM|7XaD26Cgz8nbWJh^vy>=gr8iz!RK4UoPKr!FOMHz
z%yhS;@5>uQQUM^-T_BV~2FWzHyI}$kIYzh|HwO(-hj>b?4I5UM`-mvL20{pg5RecE
zQL{S)EfxvqZ;bKSqqi7{y=t#I`}CX(z-%!THS*Nzv26Y#Jb7Y?Yoj_VF$33gUt7U(
z-oL()(_9E>=LSZ08@ifKr$lD43PfOBC&uFzlWYaowrXgN5PA%1N5$#)`#ie3gal!2
zn6mO!20>>6s#JYtaj~KiDHf3}V5L&5HEwOyRK4o3?$$mcL^u1p00_c%ZT!Q3
zUn8h;a;eAaVh<5vyJ<<27I&v{&uL$kAOV#ep`!*I=XW1I$%%!CyYTL%+e{KH_9BbD
zKtCu~HfunMp~6X+D8YoKD)9W{E4=^t7NW|{kr4wdE%bQy;Uzv?uX*mg`nU?MzxY=Q57y~o<9;lkQhuJ?h)op-O?&QUz%
zL8wZO*2SuVKx@JzL7R+mV;D+|;I3Hdii8+Yjl>uc3AvsKN)qLxwT9JWJsv&YM}u(Y
zr1Jjt5#Bf&bF4UE<_}DR`>3#LH=7`;Op+5?N7Q-xKN_
zw?DnQNL1nK=7d3=NbZbV
z?=zS*Y)zahDpgdLMHtk^RuX=EVUv~R$i~>PWLRUQIDhrkJ
z%<3}d*R}znr^>D2gd4*Nmp8|St3woLFlkw?l;x*F$B
z$C8nnL|Zqzb-9CDU{21+OlH!woV&J(hFp~mCoR{_nV4ZI*8n*5gJNd1Nx+QpBynSN
z%yy+*ys2hc^YN7pKDug?0;4lKYCvz?}=6poKDEQoqX_Y9s|S>%(O11^mQtPN_e
zZ;ff&jt=iEEm3L$_@nQf2H@|0_IV~nCZ#Zf4=--;$U}>44HH|F7LCevODv3PF0T){
zc6-QXZ99F_Qg@^#(Kd4d*d=qR@Gh}jn+pn9srw}t^j3NS4ueU{twGIyezwNANvK0A
z1&)>3?3O;m`^AO#KDhw~?YJo*?bHw3qnclAk8%+fh0q34YH6BGgU6#uF3~$$-t_~_
zX(shNvp>)R=DrSN$ubCCchf*LcZav@#QJE$`lx1Hr>Xf_a#}YiGw)um(}9t?>*jl0
z_~jbjwYV(T6k?92YzbzTi=Y@tRUo998X)MDWkRV;%Q%|Jc;2M%YWy7860@cyH7VcF
zoZ5^Vg9*3B4RxEQP1#(~y6A2Jbu#
z4u%tMes+`fQ4K0PCO3Q2uI!xxP+Xx+cw?l}>B+Niq}CA8X;)X=^8=TzTrSEpCvByg
zT>MNeU{7zN)G}^PJ)Y|VyW~&+Qc9frdM`*U0DN_Xwl_uX?gUobG3_baUZ;l>dKGa?k&L4@VzB
z*%br!TEN{W==Wac0x)gt+`fH#^3{tCOPJR9DymAOS<5K6mci+Pr6I_q&J)=gys5
zBY!~ZJ6VU_HOLoTKWyLn`g-%h2Oq4T
zJ$v@O^XJe1Gw@U37r=FQ_u0?pdcb4Av%vGfw}BPz|IcV@U=z3ioCiJvu5{lH?)`9b
z2{=Xmvg#D@5cvb6`&mZ7E#M|_6}ai{(>EyReL5R~6TlKsasQJgBiHgnW~$b$hud(g+z{{sl9EgM7cv6cV;002ovPDHLkV1fY-O!@!-
literal 0
HcmV?d00001
diff --git a/src/gui/basewebview.cpp b/src/gui/basewebview.cpp
index 7517164de..c08220c9f 100644
--- a/src/gui/basewebview.cpp
+++ b/src/gui/basewebview.cpp
@@ -12,10 +12,12 @@
BaseWebView::BaseWebView(QWidget *parent)
: QWebView(parent), m_page(new BaseWebPage(this)) {
setPage(m_page);
+ initializeActions();
createConnections();
}
BaseWebView::~BaseWebView() {
+ qDebug("Destroying BaseWebView.");
}
void BaseWebView::onLoadFinished(bool ok) {
@@ -30,6 +32,38 @@ void BaseWebView::createConnections() {
this, &BaseWebView::onLoadFinished);
}
+void BaseWebView::setupIcons() {
+ m_actionReload->setIcon(ThemeFactory::fromTheme("view-refresh"));
+ m_actionCopyLink->setIcon(ThemeFactory::fromTheme("edit-copy"));
+ m_actionCopyImage->setIcon(ThemeFactory::fromTheme("insert-image"));
+ m_actionCopyImageUrl->setIcon(ThemeFactory::fromTheme("edit-copy"));
+}
+
+void BaseWebView::initializeActions() {
+ // Create needed actions.
+ m_actionReload = pageAction(QWebPage::Reload);
+ m_actionReload->setParent(this);
+ m_actionReload->setText(tr("Reload web page"));
+ m_actionReload->setToolTip(tr("Reload current web page"));
+
+ m_actionCopyLink = pageAction(QWebPage::CopyLinkToClipboard);
+ m_actionCopyLink->setParent(this);
+ m_actionCopyLink->setText(tr("Copy link url"));
+ m_actionCopyLink->setToolTip(tr("Copy link url to clipboard"));
+
+
+ m_actionCopyImage = pageAction(QWebPage::CopyImageToClipboard);
+ m_actionCopyImage->setParent(this);
+ m_actionCopyImage->setText(tr("Copy image"));
+ m_actionCopyImage->setToolTip(tr("Copy image to clipboard"));
+
+
+ m_actionCopyImageUrl = pageAction(QWebPage::CopyImageUrlToClipboard);
+ m_actionCopyImageUrl->setParent(this);
+ m_actionCopyImageUrl->setText(tr("Copy image url"));
+ m_actionCopyImageUrl->setToolTip(tr("Copy image url to clipboard"));
+}
+
void BaseWebView::displayErrorPage() {
// TODO: Add better custom error page.
setHtml("error", url());
@@ -40,41 +74,28 @@ void BaseWebView::contextMenuEvent(QContextMenuEvent *event) {
QMenu image_submenu(tr("Image"), &context_menu);
QWebHitTestResult hit_result = page()->mainFrame()->hitTestContent(event->pos());
- // Obtain needed actions.
- QAction *action_reload = pageAction(QWebPage::Reload);
- action_reload->setText(tr("Reload web page"));
- action_reload->setToolTip(tr("Reload current web page"));
- context_menu.addAction(action_reload);
+ image_submenu.setIcon(ThemeFactory::fromTheme("image-x-generic"));
+
+ // Assemble the menu from actions.
+ context_menu.addAction(m_actionReload);
if (hit_result.linkUrl().isValid()) {
- QAction *action_copylink = pageAction(QWebPage::CopyLinkToClipboard);
- action_copylink->setText(tr("Copy link url"));
- action_copylink->setToolTip(tr("Copy link url to clipboard"));
- action_copylink->setIcon(ThemeFactory::fromTheme("edit-copy"));
- context_menu.addAction(action_copylink);
+ context_menu.addAction(m_actionCopyLink);
}
if (!hit_result.pixmap().isNull()) {
+ // Add 'Image' menu, because if user clicked image it needs to be visible.
context_menu.addMenu(&image_submenu);
- QAction *action_copyimage = pageAction(QWebPage::CopyImageToClipboard);
- action_copyimage->setText(tr("Copy image"));
- action_copyimage->setToolTip(tr("Copy image to clipboard"));
- action_copyimage->setIcon(ThemeFactory::fromTheme("insert-image"));
- image_submenu.addAction(action_copyimage);
+ image_submenu.addAction(m_actionCopyImage);
}
if (hit_result.imageUrl().isValid()) {
- QAction *action_copyimageurl = pageAction(QWebPage::CopyImageUrlToClipboard);
- action_copyimageurl->setText(tr("Copy image url"));
- action_copyimageurl->setToolTip(tr("Copy image url to clipboard"));
- action_copyimageurl->setIcon(ThemeFactory::fromTheme("edit-copy"));
- image_submenu.addAction(action_copyimageurl);
+ image_submenu.addAction(m_actionCopyImageUrl);
}
// Display the menu.
context_menu.exec(mapToGlobal(event->pos()));
- context_menu.deleteLater();
}
void BaseWebView::paintEvent(QPaintEvent *event) {
diff --git a/src/gui/basewebview.h b/src/gui/basewebview.h
index 28a20d2db..49060abe0 100644
--- a/src/gui/basewebview.h
+++ b/src/gui/basewebview.h
@@ -2,6 +2,7 @@
#define BASEWEBVIEW_H
#include
+#include
class QPaintEvent;
@@ -15,11 +16,15 @@ class BaseWebView : public QWebView {
explicit BaseWebView(QWidget *parent = 0);
virtual ~BaseWebView();
+ void setupIcons();
+
protected slots:
// Executes if loading of any page is done.
void onLoadFinished(bool ok);
protected:
+ void initializeActions();
+
// Creates necessary connections.
void createConnections();
@@ -34,6 +39,11 @@ class BaseWebView : public QWebView {
private:
BaseWebPage *m_page;
+
+ QAction *m_actionReload;
+ QAction *m_actionCopyLink;
+ QAction *m_actionCopyImage;
+ QAction *m_actionCopyImageUrl;
};
#endif // BASEWEBVIEW_H
diff --git a/src/gui/formabout.cpp b/src/gui/formabout.cpp
index 48b1df420..b48da8a0a 100644
--- a/src/gui/formabout.cpp
+++ b/src/gui/formabout.cpp
@@ -67,15 +67,16 @@ FormAbout::FormAbout(QWidget *parent) : QDialog(parent), m_ui(new Ui::FormAbout)
"Martin Rotter (rotter.martinos@gmail.com) (author of RSS Guard)"
"snakebite & tiheum (authors of KFaenza/Faenza icon theme)"
"Digia Plc (author of QtSingleApplication component)"
+ "Artem Galichkin (doomer3d@gmail.com) (author of original QKeySequenceWidget component)"
""
"