From c38f00cd5ac054965b49bfea0ef1163d933d70c0 Mon Sep 17 00:00:00 2001 From: Dober Date: Sun, 17 Dec 2017 20:44:24 +0300 Subject: [PATCH] =?UTF-8?q?=D1=82=D0=B0=D0=BA=20=D1=8F=D0=B4=D1=80=D0=BE?= =?UTF-8?q?=20=D0=B3=D0=BE=D1=82=D0=BE=D0=B2=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Passgen.pro | 6 ++-- Passgen.pro.user | 4 +-- boss.cpp | 36 ++++++++++++++++++++-- boss.h | 4 ++- conmenu.cpp | 76 +++++++++++++++++++++++++++++++++++++++++++++++ conmenu.h | 26 ++++++++++++++++ lock.png | Bin 0 -> 2466 bytes pcore.cpp | 4 +-- res.qrc | 1 + 9 files changed, 147 insertions(+), 10 deletions(-) create mode 100644 conmenu.cpp create mode 100644 conmenu.h create mode 100644 lock.png diff --git a/Passgen.pro b/Passgen.pro index 4884cf5..617aff0 100644 --- a/Passgen.pro +++ b/Passgen.pro @@ -25,10 +25,12 @@ DEFINES += QT_DEPRECATED_WARNINGS SOURCES += main.cpp\ boss.cpp \ - pcore.cpp + pcore.cpp \ + conmenu.cpp HEADERS += boss.h \ - pcore.h + pcore.h \ + conmenu.h DISTFILES += \ README.md diff --git a/Passgen.pro.user b/Passgen.pro.user index 7b54fbe..afd529b 100644 --- a/Passgen.pro.user +++ b/Passgen.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId @@ -62,7 +62,7 @@ Desktop Qt 5.7.1 MSVC2015_64bit Desktop Qt 5.7.1 MSVC2015_64bit qt.57.win64_msvc2015_64_kit - 0 + 1 0 0 diff --git a/boss.cpp b/boss.cpp index 4a78807..fa7e5c5 100644 --- a/boss.cpp +++ b/boss.cpp @@ -1,8 +1,11 @@ #include "boss.h" +#include boss::boss(QWidget *parent) : QMainWindow(parent) { + cnm = new conmenu(); + trayIco = new QSystemTrayIcon(this); connect(trayIco, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(ia(QSystemTrayIcon::ActivationReason))); QIcon temp = QIcon(":/lock.png"); @@ -16,7 +19,10 @@ boss::boss(QWidget *parent) */ void boss::ttt() { - + cnm->close(); + QRect *gg = mcm(); + cnm->move(gg->x(),gg->y()); + cnm->show(); } /** @@ -45,8 +51,32 @@ boss::~boss() * @brief boss::mcm * @return позицию иконки в трее (x,y,width,height) */ -QRect boss::mcm() +QRect *boss::mcm() { - QRect *temp; + int sw, sh;//разрешение + int ew, eh;//размеры менюхи + int tx, ty;//позиция иконки в трее + + QRect sg = QGuiApplication::primaryScreen()->geometry(); + sw = sg.width(); sh = sg.height();//длина и ширина разришения + ew = cnm->width(); eh = cnm->height();//длина и ширина менюхи + QRect ss = trayIco->geometry(); + tx = ss.x(); ty = ss.y();//позиция иконки + QRect *temp = new QRect(0,0,0,0); + + int px = 30; + temp->setX(((tx-ew-px)<0) ? (tx+px) : (tx-ew-px));//если менюха по x пойдет слишком влево(за пределы) то двигаем вправо если нет то пускай так и будет + temp->setX(((tx+px+ew)>sw) ? (tx-ew-px) : (tx+px));//если ненюха но x будет уходить вправо(за пределы) то двигаем влево на всю длинну ели нет то так и будет + /* + *30 является неким отступом + * размеры менюхи задаються в conmenu.cpp на 48 строке **resize(200,500) + * 1) например if tx(15)-ew(200)-30<0 then tx(15)+30 else tx(15)-ew(200)-30 для случаев с левостроронним треем + * 2)например if tx(1000)+30+ew(200)>sw(1024) then tx(1000)-ew(200)-30 else tx(1000)+30 для случеев с правостороним треем + */ + int py = 0; +#ifdef Q_OS_WIN + py = 5; +#endif + temp->setY(((ty+eh)>sh) ? (ty-eh-py) : (ty+py));//если трей слишком внизу то подымаем вверх или пускай так и будет return temp; } diff --git a/boss.h b/boss.h index 884ceba..f632b71 100644 --- a/boss.h +++ b/boss.h @@ -1,6 +1,7 @@ #ifndef BOSS_H #define BOSS_H +#include "conmenu.h" #include #include @@ -12,9 +13,10 @@ public: boss(QWidget *parent = 0); ~boss(); private: + conmenu *cnm; QSystemTrayIcon *trayIco; QRect *mcm(); -private slots; +private slots: void ttt(); void ia(QSystemTrayIcon::ActivationReason reason); }; diff --git a/conmenu.cpp b/conmenu.cpp new file mode 100644 index 0000000..8b06a33 --- /dev/null +++ b/conmenu.cpp @@ -0,0 +1,76 @@ +#include "conmenu.h" +#include +#include +#include +#include +#include +#include + +conmenu::conmenu() +{ + this->setWindowFlags(Qt::FramelessWindowHint | Qt::Popup);//будь всплывайкой + this->setStyleSheet("background-color:#444");//общий задний фон + + QVBoxLayout *boss = new QVBoxLayout(this);//main init + boss->setSizeConstraint(QLayout::SetMaximumSize);//растянуть полностью + boss->setMargin(0);//нахуй все пренудительные отступы + + cont = new QHBoxLayout(this);//инициализация слоя для контента + core = new PCore();//инициализация ядра-хранилища(локального) + + core->addPass(tr("domain"),tr("lUserName"),tr("infa(url, path, other desc)"),tr("pass(2r3tgwe454hb3f4)"));//временая костыля + + //инициализация класса входа и отображения окна + + boss->addLayout(cont); + boss->addStretch(); + + QFrame *vline = new QFrame(); + QFrame *hline = new QFrame(); + + hline->setFrameShape(QFrame::HLine);//делаем горизонтальную полоску + boss->addWidget(hline);//сразу ресуем её + + QHBoxLayout *buttons = new QHBoxLayout(this);//слой двух кнопок (exit and settings) + buttons->setMargin(0); + QPushButton *tt; + tt = sBut(buttons, tr("Settings")); + connect(tt, SIGNAL(clicked(bool)), this, SLOT(sets()));//вызывает меню настроек + + vline->setFrameShape(QFrame::VLine);//разделитель двух кнопок + buttons->addWidget(vline); + + tt = sBut(buttons, tr("Exit")); + connect(tt, SIGNAL(clicked(bool)), qApp, SLOT(quit()));//вырубает прогу + boss->addLayout(buttons); + + setLayout(boss); + resize(200,500);//ну тут и для дауна должно быть понятно + +} + +QPushButton *conmenu::sBut(QBoxLayout *bb, const QString &name) +{ + QPushButton *nb = new QPushButton(name, this); + nb->setAttribute(Qt::WA_TranslucentBackground);//прунудительная поддержка альфы + nb->setStyleSheet("" + "border: none; " + "margin: 0px;" + "padding:5px 0px;" + "");//нахуй все бордюры и отступы + bb->addWidget(nb); + return nb; +} + +/** + * @brief conmenu::sets вызывает слой настроек + */ +void conmenu::sets() +{ + qDebug()<<"Settings";//но пока тут заглушка +} + +conmenu::~conmenu() +{ + +} diff --git a/conmenu.h b/conmenu.h new file mode 100644 index 0000000..11d9655 --- /dev/null +++ b/conmenu.h @@ -0,0 +1,26 @@ +#ifndef CONMENU_H +#define CONMENU_H + +#include "pcore.h" +#include + + +class QBoxLayout; +class QHBoxLayout; + +class conmenu : public QDialog +{ + Q_OBJECT + +public: + conmenu(); + ~conmenu(); +protected: + PCore *core; + QHBoxLayout *cont; + QPushButton *sBut(QBoxLayout *bb, const QString &name); +private slots: + void sets(); +}; + +#endif // CONMENU_H diff --git a/lock.png b/lock.png new file mode 100644 index 0000000000000000000000000000000000000000..3746208eb4bcb3fea9e5c64a88dc7befd568cfcc GIT binary patch literal 2466 zcmV;T30?MyP)id-Cf&@iBX0FBtlR4Oewb7ttR&6_vpPo6ya$tv*BLk~IETzl>B zwr}5lw}^-_MvSpgAKgHK@UvnJQX&xhN)fVt{Z(77wT**=1FyHYx959$dOjHi_Uzds zYuBy&!R?*5KOhhk3Pl)W5E0g=4vDF$snW#6#N^aep(p}LBoYpRaF2*UBmt#DsaU&q z-E|`$eUu*?8+)s#r>7KGCg)-laGcZ^cI?>ki$pRZ`N=$7*JT7@o;!Cg|LTz=Z}jw> zJd(@h-ci+@h|FNyDt-~$3GMUf&P6`T@eC@TPC!ctH?<0MEy?-hc z3eN*L0iahz`T_LjCnw(;=V8WBM{od!uU*1&O`bTXN2I^Eaz z!l_fIF2n*gt^%1%X5$T8Z}=KOOy={9L>s>J(u>Cq9X$AJk}m=n@9OH(IgYRZ3cGgg z`uMoB!|1ZyDusUJ@wR6rmwHJD?gRblVm!bruxZ{D^|3u1<<;4=gtM?i={v|n_Zbs zr>-C=)>`=Vp$rTRd_b~SMBIxJzT8xG^uyud9+KiXj`&$yrM9lF-f^535m_+E#8N;+ znn(!!mj?7vjOTKr0CH8FcEOfRI_~)R_`tM6e)$0)nW?E+ju=rgRupnw*FjJhl#4Wy zaE)6exhV7jAdwJ~ECPO^K|ivQB$A0_Ey)D|j->$M*ET>cnCbsvKq2*C z7U%4^6aq*Ad^4+37@!uz%JZJ<15pkT5egBp&W=eTh7_V|ghKI9s(x(5f}BaAc-Ea) zfuH{P+sXWtNmy$gYb>p`FxJ8vOM>t`PXutj_nqCTx|%XtKD7dTD|UAFYv=H})#RD;RM^8`HsEj}C` zI6*Z-o|l;X!@=u*qLedTU9+=&RSS%tFD$w7nq_x_HX$?u3<5N$uQw1{fCj7TO{>sZ z2^tVWA%*lPGy)osc6tm$p$+CuWX~{#CxE0u^AZE00cf$lUbhI*QE;82r}CJHob?fi zsQ^_I&>{d|5YV99NkbpSU>wf-`~3CFxyrqE#vVhke4ZDCpx_s$CImo+K@f?pfX~?? zKm*?b(=VPzZw9I`Qh|EKUQ0oh=jcfq$m=)cQI{#rwnhjFBdC`Xu>|?e7ra_TnqPs?0#>2|`-sh94Ok%!`_Dpt z`?pO<)il#uD^I^NhzE8bW9zcQ4ByZoLi-m*q)_N%?T;Z)nb!iK5B(oa(UTlp#TLM%;l>q4(UHwiKRH1%M3xrM_P$=RD zm5v!u2>$%=cnwoog{lY7^QfvgJC*@i3bLP+kw=8@A%y~K0Jvld6#xVj;v5vhY=HVu8{Zf&0G6@%9Lpl>103`ou&_>-{)xySinUEg*XR=FgpshG+3@|_z>@n zu7I_M9aoN`p-#&PqwKJiWBAHodhC}&^HXS^Upx$v7cEM;g9QkSA}k76UMom>A6SBM zJ^6QEvsmlGvsPYzw@Ii1Q4vw`Y2i~yNP$p9%9QfgB|v{c3N0K)F^zmQ8;9R3))gRd z{JjPkt%bM-p6B60z7FpW)?m}>Qa~R>C072tFfst~&3ds%P~VdNli z`0WN5Us)T#1`aon1EbId@N{KnbC~Wy|KMaQ~heLv2|I&FO&jXkai{&gE z$pMwmp)!nynV5_90nYS+N}kWj

q3QlbjaIrFUY=VB@3Ujjub);`VlKVuW&%po12r2qf`07*qoM6N<$g3P&|HUIzs literal 0 HcmV?d00001 diff --git a/pcore.cpp b/pcore.cpp index dc74c9b..58ee7be 100644 --- a/pcore.cpp +++ b/pcore.cpp @@ -33,12 +33,12 @@ void PCore::addPass(QString domain, QString UName, QString Desc, QString Pass) void PCore::addPass(QString domain, QString UName, QString Pass) { - this->addPass(domain, UName, tr("No Desc"), Pass); + this->addPass(domain, UName, "No Desc", Pass); } void PCore::addPass(QString domain, QString Pass) { - this->addPass(domain, tr("Anonymous"), tr("No Desc"), Pass); + addPass(domain, "Anonymous", "No Desc", Pass); } QList *PCore::getASP() diff --git a/res.qrc b/res.qrc index 9944716..f2b5101 100644 --- a/res.qrc +++ b/res.qrc @@ -1,5 +1,6 @@ pgi.ico + lock.png