From 383ed798dd7f781ea7ca0089961a2ee3325553c4 Mon Sep 17 00:00:00 2001 From: con <qtc-committer@nokia.com> Date: Mon, 18 Jan 2010 12:48:27 +0100 Subject: [PATCH] Add widget for selecting settings for a specific target. --- .../images/targetbuildselected.png | Bin 0 -> 1359 bytes .../images/targetrunselected.png | Bin 0 -> 1305 bytes .../images/targetseparatorbackground.png | Bin 0 -> 393 bytes .../images/targetunselected.png | Bin 0 -> 1060 bytes .../projectexplorer/projectexplorer.pro | 11 +- .../projectexplorer/projectexplorer.qrc | 6 +- .../projectexplorer/targetselector.cpp | 129 ++++++++++++++++++ src/plugins/projectexplorer/targetselector.h | 48 +++++++ .../projectexplorer/targetsettingswidget.cpp | 83 +++++++++++ .../projectexplorer/targetsettingswidget.h | 49 +++++++ .../projectexplorer/targetsettingswidget.ui | 67 +++++++++ 11 files changed, 389 insertions(+), 4 deletions(-) create mode 100644 src/plugins/projectexplorer/images/targetbuildselected.png create mode 100644 src/plugins/projectexplorer/images/targetrunselected.png create mode 100644 src/plugins/projectexplorer/images/targetseparatorbackground.png create mode 100644 src/plugins/projectexplorer/images/targetunselected.png create mode 100644 src/plugins/projectexplorer/targetselector.cpp create mode 100644 src/plugins/projectexplorer/targetselector.h create mode 100644 src/plugins/projectexplorer/targetsettingswidget.cpp create mode 100644 src/plugins/projectexplorer/targetsettingswidget.h create mode 100644 src/plugins/projectexplorer/targetsettingswidget.ui diff --git a/src/plugins/projectexplorer/images/targetbuildselected.png b/src/plugins/projectexplorer/images/targetbuildselected.png new file mode 100644 index 0000000000000000000000000000000000000000..f1cf44c08b97cd29655a9af67f07e772a195060a GIT binary patch literal 1359 zcmV-V1+e;wP)<h;3K|Lk000e1NJLTq003<O001ip1^@s6a`^@)00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_000EyNkl<Zc-rk; zO)N8A7(I%%I^$KQg!l_d>o=l)61uP<79|!oT{CtPx)z}e7IrL%%}BcJ#!eTSSTrT+ zMy*8J*ib1#gwD{a<bJD4nZEt1yqM&k<ffTBGk4}br_VXh+%}VEu~-PhFeof61cfqC zpwsE_=g%K#G#VNWrI1!wSO|?q1Fcp|qoEYi0DuqzLI{n9Qb<b@MoCi+R5S!M(<mru z6jUB*^+-YGk>X>dC9{o!W*P<cGzwZhQhB7Hq)|}PXdyyDGmV0hMoFWfo<{MVnby|U zhMt}t)YsReuC5L$)$e~MUtV5T3<>dg9PxM@qA23&>FIN%Ra8`9VqyZ#&CQDYHWET` zdU~ped(~((&}cN!>-8utEyeZqH4=$LX3~<AOoh>Cgxzij!!U}J5G6@|EEYp77Q_Ah zJ@k4#s;jFJi9`^K#j^Lbii!%%&dw^9uvFrdhP%5vyu7@iva%B4a5!zorIp9Y$w@E_ z^S_f`T3UkF>wVK_v)RD&e8%%cQN;B0GyuTqbV3jWxLhvqJP(`ACOdX~d>kyxVtaf0 z+cIr%a1f)Tqp#cN=jU)bow&Wd{pZ9zJUl?9QlY%O92XZCvi+)5(g-1FX=(Yehw(g* z-Q8UnjYha!F1X$9Un7s7X~AF+cDo&Ob8`TI(b3T_88@4DcXtOu2(((QY@aOCdV70w z4pdiH7eb*BqS0u^<5-r3)9L)xo|YOHNs<r<1klvf^sSN`jYh#R3?3gJGkaQldwb3o zIXpZ>RaF&6Mn>RrxgZF_t6ZjT+ibRslIQh$AqWB@kqB6p{n0{%5CV?lV6j+maBu)Z z2y8YR3<d+%*Vh36LqkJoYHGsz`ueNva~ubQ!GN=~Gi+>Z$O4}YBuPR^Nr`M8GI``U z?!$u%f`H-SVT3{<SgqEa1D*7+)zwu1!1newrlzKTOd?Gt6V}$&u&}Uz{r!D-Jf1fJ ze6Lc;&zhPVY;A49;c$TCIP~}T=XCu<B7uT}0$IQ8Df#*N`NP3UdYaX0g&+tJ1R>`@ zd%a$Wq6o9u43=d-{U!Jeg25nWW@Zo!20!HUM@L6EKR?Iq?Ja`AAPfe>m)@5uodJHv z(~>f&^g<+c3_%c3Q&WS^&Q1_Q@c8)n=2)Fh_t$YGNy_;i^7HeNNF?N$_P*oz`1n(v zmL$(;G`{Hzg+f`4VK$oq0D(XNqA0@cc0&}!AE_Rb<4BSOkH>?tv9Z_f+S*!h90!xh z1dGKYdoFzMskvOgsHi9{>8kew`u+Z#J<aWQ!)mpH=XrE>bzxv&0HII_!^6W_2fnJR z3U<34kw^sN<Kx)b+4-@OKehRMKIn8h3=Ivz=kwv_<^~Rj13b^;<mBX^l>IErA{vd# z`t!QGy9vWEP^;Ci6JA_gL~CoSqE|!a=jXG|?%#;g(o!%CgK#)3_q22;Y;JBsk|a?4 z42p}3QC3!ltE;Q*3K2pGE-x>!va*tsm;A;>V<k1cUjMp$_5A#tzCfw0taPZ=YT0jO zH#ax%`~7HWX!!Dy^*gY)xA!gUgkJ%zRttt<U@#b<R;zJwae;U|{@3I4%w{uTSvKQ) zL^?V;(AU?8#>Pf8Ha058)0Bc(EQWYIj%YNR)yhep*=(jSe^D6dfB6-N{{Ua_?~j`_ RoFD)I002ovPDHLkV1iEsg~|W` literal 0 HcmV?d00001 diff --git a/src/plugins/projectexplorer/images/targetrunselected.png b/src/plugins/projectexplorer/images/targetrunselected.png new file mode 100644 index 0000000000000000000000000000000000000000..228287b3e102ade477734619d48d60bb15fe0427 GIT binary patch literal 1305 zcmV+!1?KvRP)<h;3K|Lk000e1NJLTq003<O001ip1^@s6a`^@)00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_000E6Nkl<Zc-rk; zNl5!n7=5*^X_Hn(QR;FKT&SQ25upeg#03OBdGM|WkDjZ=1*M7?Zz_U#@*sE<6c;Rs z2Ngs`a6v^}C~i=fq@pc2|5J;aR_oed{>+1cPG&NhZ(iQ_eVK-6N=ixy$8pf>^`KA( zbS%pvE-nrX!_d`G3u$`29t^|4U@*|tPzz}QKnMXLgsz5KNDB}~NmCDE=n_z+QBcw- zsC%T@BL#Jj6rUq4pf(DsGzuEiC}{Rb-6I7hje?R!6A=okGzv-@C5?i{G>X4en$c*4 z$z%e<FsgcMtF5i=pP%FN^D|CQPjPZ`g0;0ZY;SLWk2JkrkCc=Y5JDi!GVbo~@bvVg z3c|9ovQ#n8n3x!3W@aKYGZQ?|V{dN{V`F2uy1EK~&dXi?mxW;%q^GAtmSwozZrt77 z;qmcN(eGa_YJ}BlMSFWYva_?p+7%OuFr7{Zi^YQL>ucQH+^CAE|3iG{I1Vi>El5sI z4ryCR_n4fV43Ecy`}_NM2QM!#2ha1bj!jHVV0U--!-+LFH)DT)A1;?GIF29)aJgKH zzMY+&VcWvtJLL8B^k8agDp;?ptAoSg_;cbK8ynHv+Z)<FzAOfV0fdl<6c)hf=qNfm zIv@xF8X6jqkdP4Zxo;QtqrQKow)psXtgf!Y>2yLAMfCLaM8#F+<>h^>G>+pSNz$i{ zCWPSP;sO9*Hk;w`c;4+lG&B@;ocFHrnfd$#Dk>_lyu1ui6r<uQi;IgD8KvSm&1f_R zRrXoZEEWsS&(Cpue2mJ<%Am_zSXfZhySuxCzu%5iSy_qP++3ulrb3qGsFF54Jq=M5 zQC3zKbe*CoVs36uQ4gpwKyX=E*|*(lety2f7KPGuIvxCe|EG*@YHE7rDnq%vaP?4a zMMXuBBnb|O165U3!MOR?35LyP0|3<4)<(Seq9~%dxfv|WVqjnZPNx&Ct*u|4LsC+b z!tNjW=X!K>6b^?2f*_!&sR;!I1z#Sks;UYmlL`C#`v8FX`T19B`%A2>tf02GHe%Np zP-K05J!)!df)CH%fzRjrI1%yt{m^Q)pAPhd5G*Y%0RSu(%a@h*UIrMAw7;~p6aX+X zG7^;=CsabHAkFLb!e}&piL`)$7Z(?pnVA6qq@|^S5CV-x6A@{%v$Ftz+}vCcLQq{@ z4U@?fHPU#VM|pWUCMPEW09vg!*fu^sj>W~rUnOm4XGfVmzP+O*NkU>`B5rSQzZBC1 zLBQtbCNvri1VI4L^Kd$ySYKa{IHtWk@8IAds)+~y*zI<>TrTwW^}%kpV`F0jHk%DB z%ff24;_&eB*GOAkT~*kkDJm)=9LFIxHa2)LBO?P|uNOBrH>%xL$jQlx%Cpr^tE{W5 zOBvHbb-uj3L}Fqh%w{tvq64qji{atn$andDJ|Em}H`3D5pw((stvEG8mSyz!_XjsC zLXs9L20T1G;N;{47K;Te%R-VQJUu<(@$pd=hO2escyDhHgM))%2@CFsgoEGj$JyB# zSeAv^Y({*1JpBs7FW~6t2uDXpSXo)Y*4EaC{WXP!h4kYuDg%9&UxoM&yRk)yHE&3_ P00000NkvXXu0mjfQ4LR} literal 0 HcmV?d00001 diff --git a/src/plugins/projectexplorer/images/targetseparatorbackground.png b/src/plugins/projectexplorer/images/targetseparatorbackground.png new file mode 100644 index 0000000000000000000000000000000000000000..ff14f0d6737a1e08d2ea6444a34d76aaf7a12511 GIT binary patch literal 393 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2nC-#^NA%Cx&(BWL^R}Y)RhkE)4%c zaKYZ?lYt_f1s;*b3=G`DAk4@xYmNj^i;Sm>V@Srmx3j$aS`Bzuq_qvd+Y6L8u?BI- zpYQVdWc0f-w>9;oH23toPClnM-7xWGU@$&hIj_U8sn?UY=v=HI_hhLRS>Z<x9dQ<B zP>`EtVBFEJR&;KE-wesV#|^8RCbpjUyWif+d$awG^Ebuc6aL0WbQqc$hws-@Q<F2B zw#use<9n{v-8UkBWSbjTJ$k;$xIg&p61LAa<*qt9Hs_tIt+Sq)AKP3NbV<L#sJQ1$ zcu#rp&B)^`(;6%1983NG>U11)n*S_`^KUw5pVnLBSF`DX;=C!R=LNk=>+9wGeM@&! zb;hF3k7wc~cb`7Dr|YP*jpU~KrEjj6mb&)ny!n0aM*aPA@pBRp5!bgiObG&d<IuKT ip!??TvoAN?C|^?dJnZVhPw#<&$KdJe=d#Wzp$PyK<)z*L literal 0 HcmV?d00001 diff --git a/src/plugins/projectexplorer/images/targetunselected.png b/src/plugins/projectexplorer/images/targetunselected.png new file mode 100644 index 0000000000000000000000000000000000000000..2df56444182b87e036c7c3343e73e183663d4bf7 GIT binary patch literal 1060 zcmV+<1l#+GP)<h;3K|Lk000e1NJLTq003<O001ip1^@s6a`^@)00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_000BGNkl<Zc-rlo zze^)Q9K}C(IVCGL(L!)zmrbda1{;%*E?C%TVG|Gx{sR{21r35=6-Y`8K~Mw*ZN%6} zu#BBsniMJ4D%lN@>|B*4#vgZ@aJYN(U|^Q)clf^f?t3#kY<>tK1QM>ouXejlyWN&E z;S%_KK7Ij6vAIlXLI_zj7eNTYPdN=PRGPF$X^#^Bz#gU2q|zj$(j=tPq|zj$(j-2i zG$91GZOhq^_9!9kQ9>$BDosLeL?r%Wdu+8@3=a=Wdvp_;%_c)bLsDsOf@N8Zj*fa) zX<l5@8jS|y<Ky1lh<H(HjYh+hygY4>^?Kd2uQHys$9lc)NnX+(|5tl_cz7U}%Q@Fm zQ&Xf;sXuN4j*gB1SXo(NYio-{BEkIp{HyzNxg6nem_#D+PwnyQ>WcI8^H1|~#d}&O zc5iPF%d*Jja@^kDvbebTVchca@{9OC<?-1ZP1EdKY2k2~jg1Y5*V)+_sZ`4SO6#6< zzu!+V7{oA)FOB(L%vT<)ev8)2Yi4E!UDv;b<@UW1>5#B(8^bWrb)94~iEZ2L?CcPU zM2N@Z0Oa#|G)*HOkH6@5;%(bT*L9AMk1-5`U@(YfS%gBNPv>ZwX5YLzb7L3=rBaDV zB!X?*PJZch8i4ETYjj;FolcX_=K*+ndU80V(`gh%`92$wPVDC9CIG=;kU${tLLI&1 zcVBnkXPPDl2M5ICabmF;x~@|w6uxAS&1SQ2Rp`3z@Jc3=#A30(;#H|sSYKafWMqW> z{e4QM60ulpU`6}cJ#k-c0NHGoY&MIksuT)^S8LT<Ygcdo@$nIWXf%otf>0=grfFZw zsnu%r%}diXve_(}ra9L5)&tjD#Odj2R8=Jq2%u@2vs?_K0sI`qAl(F_(I}Q>VHk#E z37y|e(|og7?^)AZF@M{hpP&2Y)#<OUu2QK~D3{C58rPfSd*k%pJBT(grFHt{av4QY z2m}I*jg2`(i^U?<YV|{<O-@c?Sr)}&5g`O8CnqmrzM50Ny!?JY(P)&5iwlGhD2hV0 zT6Na&ySuv&ZGRBCbdNW%H7%3L0HCTWYinx=Ay`;g;PCK}OeTY>s;H{^VbT14KTAtX zoSvR?d3pI}%pi87pWQtI%+Ahob8|znSY&Q)j{Ez2c6WDC6opVIgk@Q;iZrNPddK-u ztJOrUR`cA+!S?pH^B{Q%6B85O{zgO|W67d@uTy?mG<R{5|G9Rf(xg4QuxLJ?&$FMJ ed6AdT=i@itU6H9!o51A&0000<MNUMnLSTY0UG^gY literal 0 HcmV?d00001 diff --git a/src/plugins/projectexplorer/projectexplorer.pro b/src/plugins/projectexplorer/projectexplorer.pro index da492ea272d..981a42da11a 100644 --- a/src/plugins/projectexplorer/projectexplorer.pro +++ b/src/plugins/projectexplorer/projectexplorer.pro @@ -66,7 +66,9 @@ HEADERS += projectexplorer.h \ projectexplorersettingspage.h \ projectwelcomepage.h \ projectwelcomepagewidget.h \ - baseprojectwizarddialog.h + baseprojectwizarddialog.h \ + targetselector.h \ + targetsettingswidget.h SOURCES += projectexplorer.cpp \ projectwindow.cpp \ buildmanager.cpp \ @@ -120,7 +122,9 @@ SOURCES += projectexplorer.cpp \ projectwelcomepage.cpp \ projectwelcomepagewidget.cpp \ corelistenercheckingforrunningbuild.cpp \ - baseprojectwizarddialog.cpp + baseprojectwizarddialog.cpp \ + targetselector.cpp \ + targetsettingswidget.cpp FORMS += processstep.ui \ editorsettingspropertiespage.ui \ runsettingspropertiespage.ui \ @@ -128,7 +132,8 @@ FORMS += processstep.ui \ projectwizardpage.ui \ removefiledialog.ui \ projectexplorersettingspage.ui \ - projectwelcomepagewidget.ui + projectwelcomepagewidget.ui \ + targetsettingswidget.ui win32 { SOURCES += applicationlauncher_win.cpp \ diff --git a/src/plugins/projectexplorer/projectexplorer.qrc b/src/plugins/projectexplorer/projectexplorer.qrc index a9e1b3488ef..2c1f8f1683e 100644 --- a/src/plugins/projectexplorer/projectexplorer.qrc +++ b/src/plugins/projectexplorer/projectexplorer.qrc @@ -1,5 +1,5 @@ <RCC> - <qresource prefix="/projectexplorer" > + <qresource prefix="/projectexplorer"> <file>images/build.png</file> <file>images/build_small.png</file> <file>images/clean.png</file> @@ -19,5 +19,9 @@ <file>images/run_small.png</file> <file>images/session.png</file> <file>images/stop.png</file> + <file>images/targetbuildselected.png</file> + <file>images/targetrunselected.png</file> + <file>images/targetseparatorbackground.png</file> + <file>images/targetunselected.png</file> </qresource> </RCC> diff --git a/src/plugins/projectexplorer/targetselector.cpp b/src/plugins/projectexplorer/targetselector.cpp new file mode 100644 index 00000000000..1a14de2e3ee --- /dev/null +++ b/src/plugins/projectexplorer/targetselector.cpp @@ -0,0 +1,129 @@ +#include "targetselector.h" + +#include <QtGui/QPainter> +#include <QtGui/QMouseEvent> +#include <QtGui/QFontMetrics> + +static const int TARGET_WIDTH = 109; +static const int TARGET_HEIGHT = 43; +static const int ADDBUTTON_WIDTH = 27; + +using namespace ProjectExplorer::Internal; + +TargetSelector::TargetSelector(QWidget *parent) : + QWidget(parent), + m_currentTargetIndex(-1) +{ + QFont f = font(); + f.setPixelSize(10); + f.setBold(true); + setFont(f); +} + +void TargetSelector::addTarget(const QString &name) +{ + Target target; + target.name = name; + target.currentSubIndex = 0; + m_targets.append(target); + if (m_currentTargetIndex == -1) + m_currentTargetIndex = m_targets.size() - 1; + update(); +} + +void TargetSelector::removeTarget(int index) +{ + m_targets.removeAt(index); + update(); +} + +TargetSelector::Target TargetSelector::targetAt(int index) const +{ + return m_targets.at(index); +} + +QSize TargetSelector::minimumSizeHint() const +{ + return QSize((TARGET_WIDTH + 1) * m_targets.size() + ADDBUTTON_WIDTH + 2, TARGET_HEIGHT + 2); +} + +void TargetSelector::mousePressEvent(QMouseEvent *event) +{ + if (event->x() > (TARGET_WIDTH + 1) * m_targets.size()) { + // check for add button + event->accept(); + emit addButtonClicked(); + } else { + // find the clicked target button + int x = 1; + int index; + for (index = 0; index < m_targets.size(); ++index) { + if (event->x() <= x) { + break; + } + x += TARGET_WIDTH + 1; + } + --index; + if (index >= 0 && index < m_targets.size()) { + // handle clicked target + // check if user clicked on Build or Run + if (event->y() > TARGET_HEIGHT * 3/5) { + if ((event->x() - (TARGET_WIDTH + 1) * index) - 2 > TARGET_WIDTH / 2) { + m_targets[index].currentSubIndex = 1; + } else { + m_targets[index].currentSubIndex = 0; + } + } + m_currentTargetIndex = index; + //TODO don't emit if nothing changed! + update(); + emit currentIndexChanged(m_currentTargetIndex, m_targets.at(m_currentTargetIndex).currentSubIndex); + } else { + event->ignore(); + } + } +} + +void TargetSelector::paintEvent(QPaintEvent *event) +{ + static QPixmap unselected(":/projectexplorer/targetunselected.png"); + static QPixmap runselected(":/projectexplorer/targetrunselected.png"); + static QPixmap buildselected(":/projectexplorer/targetbuildselected.png"); + static QPixmap targetaddbutton(":/projectexplorer/targetaddbutton.png"); + Q_UNUSED(event) + + QPainter p(this); + p.setPen(QColor(89, 89, 89)); + QSize size = minimumSizeHint(); + //draw frame + p.drawLine(1, 0, size.width() - 2, 0); + p.drawLine(1, size.height() - 1, size.width() - 2, size.height() - 1); + p.drawLine(0, 1, 0, size.height() - 2); + p.drawLine(size.width() - 1, 1, size.width() - 1, size.height() - 2); + //draw targets + int x = 1; + int index = 0; + QFontMetrics fm(font()); + foreach (const Target &target, m_targets) { + QPixmap *pixmap = &unselected; + if (index == m_currentTargetIndex) { + p.setPen(QColor(255, 255, 255)); + if (target.currentSubIndex == 0) { + pixmap = &buildselected; + } else { + pixmap = &runselected; + } + } else { + p.setPen(QColor(0, 0, 0)); + } + p.drawPixmap(x, 1, *pixmap); + p.drawText(x + (TARGET_WIDTH - fm.width(target.name))/2 + 1, 7 + fm.ascent(), + target.name); + x += TARGET_WIDTH; + p.drawLine(x, 1, x, TARGET_HEIGHT); + ++x; + ++index; + } + // draw add button + p.drawPixmap(x, 1, targetaddbutton); +} diff --git a/src/plugins/projectexplorer/targetselector.h b/src/plugins/projectexplorer/targetselector.h new file mode 100644 index 00000000000..212f2594968 --- /dev/null +++ b/src/plugins/projectexplorer/targetselector.h @@ -0,0 +1,48 @@ +#ifndef TARGETSELECTOR_H +#define TARGETSELECTOR_H + +#include <QWidget> + +namespace ProjectExplorer { +namespace Internal { + +class TargetSelector : public QWidget +{ +Q_OBJECT +public: + struct Target { + QString name; + int currentSubIndex; + }; + + explicit TargetSelector(QWidget *parent = 0); + + QSize minimumSizeHint() const; + + Target targetAt(int index) const; + int targetCount() const { return m_targets.size(); } + int currentIndex() const { return m_currentTargetIndex; } + int currentSubIndex() const { return m_targets.at(m_currentTargetIndex).currentSubIndex; } + +public slots: + void addTarget(const QString &name); + void removeTarget(int index); + +signals: + void addButtonClicked(); + void currentIndexChanged(int targetIndex, int subIndex); + +protected: + void paintEvent(QPaintEvent *event); + void mousePressEvent(QMouseEvent *event); + +private: + QList<Target> m_targets; + + int m_currentTargetIndex; +}; + +} // namespace Internal +} // namespace ProjectExplorer + +#endif // TARGETSELECTOR_H diff --git a/src/plugins/projectexplorer/targetsettingswidget.cpp b/src/plugins/projectexplorer/targetsettingswidget.cpp new file mode 100644 index 00000000000..6a45a4f9ed4 --- /dev/null +++ b/src/plugins/projectexplorer/targetsettingswidget.cpp @@ -0,0 +1,83 @@ +#include "targetsettingswidget.h" +#include "ui_targetsettingswidget.h" + +static int WIDTH = 750; + +using namespace ProjectExplorer::Internal; + +TargetSettingsWidget::TargetSettingsWidget(QWidget *parent) : + QWidget(parent), + ui(new Ui::TargetSettingsWidget), + m_targetSelector(new TargetSelector(this)) +{ + ui->setupUi(this); + ui->separator->setStyleSheet(QLatin1String("* { " + "background-image: url(:/projectexplorer/images/targetseparatorbackground.png);" + "}")); + m_targetSelector->raise(); + connect(m_targetSelector, SIGNAL(addButtonClicked()), + this, SIGNAL(addButtonClicked())); + connect(m_targetSelector, SIGNAL(currentIndexChanged(int,int)), + this, SIGNAL(currentIndexChanged(int,int))); + updateTargetSelector(); +} + +TargetSettingsWidget::~TargetSettingsWidget() +{ + delete ui; +} + +void TargetSettingsWidget::addTarget(const QString &name) +{ + m_targetSelector->addTarget(name); + updateTargetSelector(); +} + +void TargetSettingsWidget::removeTarget(int index) +{ + m_targetSelector->removeTarget(index); +} + +QString TargetSettingsWidget::targetNameAt(int index) const +{ + return m_targetSelector->targetAt(index).name; +} + +void TargetSettingsWidget::setCentralWidget(QWidget *widget) +{ + ui->scrollArea->setWidget(widget); +} + +int TargetSettingsWidget::targetCount() const +{ + return m_targetSelector->targetCount(); +} + +int TargetSettingsWidget::currentIndex() const +{ + return m_targetSelector->currentIndex(); +} + +int TargetSettingsWidget::currentSubIndex() const +{ + return m_targetSelector->currentSubIndex(); +} + +void TargetSettingsWidget::updateTargetSelector() +{ + m_targetSelector->setGeometry((WIDTH-m_targetSelector->minimumSizeHint().width())/2, 12, + m_targetSelector->minimumSizeHint().width(), + m_targetSelector->minimumSizeHint().height()); +} + +void TargetSettingsWidget::changeEvent(QEvent *e) +{ + QWidget::changeEvent(e); + switch (e->type()) { + case QEvent::LanguageChange: + ui->retranslateUi(this); + break; + default: + break; + } +} diff --git a/src/plugins/projectexplorer/targetsettingswidget.h b/src/plugins/projectexplorer/targetsettingswidget.h new file mode 100644 index 00000000000..ca4d8b26eaa --- /dev/null +++ b/src/plugins/projectexplorer/targetsettingswidget.h @@ -0,0 +1,49 @@ +#ifndef TARGETSETTINGSWIDGET_H +#define TARGETSETTINGSWIDGET_H + +#include "targetselector.h" + +#include <QWidget> + +namespace ProjectExplorer { +namespace Internal { + +namespace Ui { + class TargetSettingsWidget; +} + +class TargetSettingsWidget : public QWidget { + Q_OBJECT +public: + explicit TargetSettingsWidget(QWidget *parent = 0); + ~TargetSettingsWidget(); + + void setCentralWidget(QWidget *widget); + + QString targetNameAt(int index) const; + int targetCount() const; + int currentIndex() const; + int currentSubIndex() const; + +public slots: + void addTarget(const QString &name); + void removeTarget(int index); + +signals: + void addButtonClicked(); + void currentIndexChanged(int targetIndex, int subIndex); + +protected: + void changeEvent(QEvent *e); + +private: + void updateTargetSelector(); + Ui::TargetSettingsWidget *ui; + + TargetSelector *m_targetSelector; +}; + +} // namespace Internal +} // namespace ProjectExplorer + +#endif // TARGETSETTINGSWIDGET_H diff --git a/src/plugins/projectexplorer/targetsettingswidget.ui b/src/plugins/projectexplorer/targetsettingswidget.ui new file mode 100644 index 00000000000..64f25f70a96 --- /dev/null +++ b/src/plugins/projectexplorer/targetsettingswidget.ui @@ -0,0 +1,67 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>ProjectExplorer::Internal::TargetSettingsWidget</class> + <widget class="QWidget" name="ProjectExplorer::Internal::TargetSettingsWidget"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>618</width> + <height>454</height> + </rect> + </property> + <property name="windowTitle"> + <string>TargetSettingsWidget</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <property name="spacing"> + <number>0</number> + </property> + <property name="margin"> + <number>0</number> + </property> + <item> + <widget class="QWidget" name="separator" native="true"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>0</width> + <height>50</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>16777215</width> + <height>50</height> + </size> + </property> + </widget> + </item> + <item> + <widget class="QScrollArea" name="scrollArea"> + <property name="widgetResizable"> + <bool>true</bool> + </property> + <widget class="QWidget" name="scrollAreaWidgetContents"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>614</width> + <height>400</height> + </rect> + </property> + </widget> + </widget> + </item> + </layout> + </widget> + <layoutdefault spacing="6" margin="11"/> + <resources/> + <connections/> +</ui> -- GitLab