From 3e419bb41f6b2cdf5afee89bfc873b9f42b0dc73 Mon Sep 17 00:00:00 2001 From: Eberhard Graether Date: Sat, 30 May 2015 21:18:18 +0200 Subject: [PATCH] ui: polishing for presentation * enabled highDpi icons in QApplication for Searchbar Icons * realigned StartScreen contents * showing version number 0.1 * "Search" as placeholder text in SearchBar * same content margins for each dockwidget view * brighter variable color in Graph * press ESC to close StartScreen --- bin/app/data/ApplicationSettings_template.xml | 16 +-- .../gui/refresh_view/images/auto_refresh.png | Bin 3142 -> 3506 bytes .../data/gui/refresh_view/images/refresh.png | Bin 3154 -> 3513 bytes .../data/gui/refresh_view/refresh_view.css | 1 - .../images/button_case_sensitive_active.png | Bin 1533 -> 0 bytes .../images/button_case_sensitive_inactive.png | Bin 1292 -> 0 bytes .../gui/search_view/images/button_search.png | Bin 1451 -> 0 bytes .../data/gui/search_view/images/search.png | Bin 3114 -> 3417 bytes bin/app/data/gui/startscreen/logo_white.png | Bin 7907 -> 23266 bytes .../gui/undoredo_view/images/arrow_left.png | Bin 2975 -> 3125 bytes .../gui/undoredo_view/images/arrow_right.png | Bin 2970 -> 3123 bytes src/app/main.cpp | 54 ++------ src/app/qt/element/QtMainWindow.cpp | 11 +- src/app/qt/element/QtMainWindow.h | 3 +- src/app/qt/element/QtSmartSearchBox.cpp | 2 +- src/app/qt/element/QtSplashScreen.cpp | 124 ++++++++++++------ src/app/qt/element/QtSplashScreen.h | 35 ++--- src/app/qt/element/QtStartScreen.cpp | 100 +++++++------- src/app/qt/element/QtStartScreen.h | 4 - src/app/qt/utility/QtDeviceScaledPixmap.h | 6 + src/app/qt/view/QtCompositeView.cpp | 2 +- 21 files changed, 192 insertions(+), 166 deletions(-) mode change 100644 => 100755 bin/app/data/gui/refresh_view/images/auto_refresh.png delete mode 100644 bin/app/data/gui/search_view/images/button_case_sensitive_active.png delete mode 100644 bin/app/data/gui/search_view/images/button_case_sensitive_inactive.png delete mode 100644 bin/app/data/gui/search_view/images/button_search.png mode change 100644 => 100755 bin/app/data/gui/search_view/images/search.png diff --git a/bin/app/data/ApplicationSettings_template.xml b/bin/app/data/ApplicationSettings_template.xml index c6abeb0f..240ede3b 100644 --- a/bin/app/data/ApplicationSettings_template.xml +++ b/bin/app/data/ApplicationSettings_template.xml @@ -70,20 +70,20 @@ #F4BC3D - #6DA1BC - #3190BA + #7BB5D4 + #42A1D4 - #6DA1BC - #3190BA + #7BB5D4 + #42A1D4 #00000000 #00000000 - #6DA1BC - #3190BA + #7BB5D4 + #42A1D4 #F4D07D @@ -102,8 +102,8 @@ #ededed - #6DA1BC - #3190BA + #7BB5D4 + #42A1D4 #ededed diff --git a/bin/app/data/gui/refresh_view/images/auto_refresh.png b/bin/app/data/gui/refresh_view/images/auto_refresh.png old mode 100644 new mode 100755 index ae7bc7c4b671ca9074eb51e705e03ebad46535a3..0175bce0c245b98bbaffa0f37ca151ba1f39f98f GIT binary patch delta 824 zcmV-81IPTv7_u8SiBL{Q4GJ0x0000DNk~Le0000y0000y2nGNE06P5HasU7T32;bR za{vG?BLDy{BLR4&KX$P;i3)!L-AP12RCwC#o9%I=FbsyJ%oRWhlt2eZDmY5mbU+E) z!IrS;ASIBkfON3i0o%cQf1DYH152{a#|1Q#AKBR$Jy?D%$qoacJ=qKG%nslK_=nlA z;Rno|WMBXV5tT&rn}~8EDm-8RBBBQo-H7OunZFYGF#cixCl(UG1;BqDadvm(6tTen z@TC9-Py%Q$k2L_wO#lPPX9OJs&sPHmPy^_&taSkDMS%fi06ws;eE`TpfO!b%Q)%~* zMo?T5)cD!^J&PRcm6@NjsI;5e);JTb3;jZ&?sY)qw7!`R4rwE7=eCqQP+4;TXM;XW zLdO6%hP9O^N*Z#*j5mMDfZf~H%xX19DhQxb&h|MP*sU!MY(X=c^Fx!p6|un0+OPv1 zxm!Zp1PtJ`71+T{OW}PA1(x1sMJt%w0lbBW8Q2vAUNzn*?6;Lx;HwbI`NE)?;M1so z7GU2xxvT)&8j_I06w+?r^I5(zk?NO^nOUWUM5A30wlct8gEN0EVedUJ1X~*lh&rlx z5Z-EOaQYMoYZ0d^x&h#OLV(k%LcJ$W+9KtyNqQCm9?8%|=bSiMlvw)`qkuc5s!oO9 zDS;ASwXm}TyO8WG4lD9?Q80yP&KJ_wj-^~ha**7h1S!w-80|#$Qt}W9h zf^DU&PAGD^G2nlfiT3A|d4ZYvK}4@a^d6aee7Y9wL-<}Pv~g9(r8mzYe$0w#y4GgI4-p$%8fUBZRxm}79cSDxOzC!YWew> zODEL!f(>6EHmS4~o;G+voN@dc&jEY@AHe^S{T%>G5FRLz>=af20000(^xB>_oNB=E5|i3)!KaY;l$RCwC#m)%u_Fc5|B*npHk2T}s1upMj(SOFzO zE3kyv0a^iefE`?4!fwo&2@5Fr;GB~ulKJL8K}g~Vxx+znJXl1`1)v1b0q6lxS$+6k z&FHxbNmzL%S(5ZzCZ1$v=)3YPFv&Bw$vFp>2^xojqyx|>M!x}g1@M0k;3K5q0YD8v z^YTeVPBGXFHOW@7z9(7diiKny_NCI!hB_Qh#Vx5;l1|Z4&w>3GXa??0u;OjM5?UA` zuPm_B!m|)sksK6gm-9G2Fsy(!Bu53>WQ$9)P*Hp~pjs!4=^(iU+$tfQym=v6MEP_^ z`xQ4$u1xP0O5TP{-@1Ruurv}Eo^?CjN0-MZfam0U3BW7U>QO{a;mkKZxxt++uHfNl z%;hmIqUg+!L}^_+g|Pd%A~L3++dM#`+^Izr_N4i*e`I8aN-s8#%tJ4UJ+H;T^AOnU z=`;7(t9F0vDF$>#4yPLEEMPXr|GzN5Enfowyf~7Dp39%{000UA07*qoM6N<$f+YsR A!2kdN diff --git a/bin/app/data/gui/refresh_view/images/refresh.png b/bin/app/data/gui/refresh_view/images/refresh.png index f674bd4f096384300c1a8d711da253bf80743bc7..956c4b5969c04408c84ad69841a5d8f956d55eee 100755 GIT binary patch delta 831 zcmV-F1Hk;!7`YoZiBL{Q4GJ0x0000DNk~Le0000y0000y2nGNE06P5HasU7T32;bR za{vG?BLDy{BLR4&KX$P;i3)!L)$INRE_WMct4<9|WcmvrCJzS;lK(t2 z->YS}R6aJ6kEh|qM4Bl8WB_vaoTYKk$rw{73+w<_0A2xDsc8Y&1NeUi@HN^8h-Jeh zGm;yU2gZ?uTQ7@g!@gD4(EhX#^NgJpHOR^dR zc%g7mnc&!NjWM4J$Jc+S{jFPbHMI?wSJ%NdsR6thV;aS~&;DROPK)G9@P%stzl<@b zr1N2Si;ndyaCG8mtfax97KSslj#vlYIAhr_r_=?Ood5#HUn&=X5! z5uznHXPyARNwr?rdeb7g@&IQk1HW`!=DXx8MMvdxT7B2O@6>;*mRjICbzswyA$8`6 z#u$?lTwC_{EW~@_?;N$*S1sA!-H~R0sntCEk$zEr&1`1c&0+vIo+`zhq|n~2wZL{} zz%~YO-)(9+GvKBAR@idEww~mnn2G%so_$(zUD{KFE@uMV*H}A>(?h{xB$?kBHuvnW z)B;;=m49MjUsr#^s(^)yu5SdpmMTLFYy}PK;s%cDDABGOSg7U6poOrNx~8Rc4wFDD zx|ewnu+U~kwds)ehxCVc(jINBkmXL7v`4&?RxPE#nQL@Qr5pRA;99ZA=%a_Z!h?s(PU{Fq87{qWI@L&^)zC4h(SWZs{t;n>_~6#b z1NRf=r3VzqE&g^RbNG8!jVsISV@(&dDbPIsZ|MpA1WsE13;^=i1Ri)ykPiR=002ov JPDHLkV1gRSgQx%i delta 470 zcmV;{0V)2u8`2myiBL{Q4GJ0x0000DNk~Le0000U0000U2nGNE06Q?Qq5uE@32;bR za{vGqB>(^xB>_oNB=E5|i3)!KeMv+?RCwCtm%&lPFc3xmGP%bkqy%?>sep8l&;ccw z3S5Gr0-ypx1xW{i3SuhwTx3Sskz^$j<6+o~50dt2SF69Wki;Bzg}IC*N=HqyrDK{! z5{omOtpU^ku06x=0QMsClIm|U0jmJq1K0pqMW!}({s(|30LzP0O|pL`d0+ucPBqCb zfIhI-HvoG8UpBIOj5w>fNUlAbKH7q*LPui9kEs!#fJv@Ai%kT0ajG@gs5Q?M*~$mo zVsh;einIjSEv}97`ye92M2XyFD;LR~8|`nZB*_!4uGN*9rAd7L>FyM27BTR$5PO*t z@t{S&fHeXCCzaN#>(_r|rnyo6`jCKVjW(HJt%B>AWa>89mME%G7h>SXqj+s5^yk=u zU_01(7MiIux0^PewVhA7WQ2-{>!b&;_4wZdc(vaFKxGy0Rw>_Tk0NsCf>WM8ZRU%o zjcIlCd23sxITL6|)>BO)>0NC%(5VjQ+Rl#GsohEb-7m~+;O`az0M$nOWyqp}cmMzZ M07*qoM6N<$g2L&~KL7v# diff --git a/bin/app/data/gui/refresh_view/refresh_view.css b/bin/app/data/gui/refresh_view/refresh_view.css index 92b91c02..9210003c 100644 --- a/bin/app/data/gui/refresh_view/refresh_view.css +++ b/bin/app/data/gui/refresh_view/refresh_view.css @@ -5,7 +5,6 @@ QPushButton { background: #E0E0E0; border: none; - background-position: 15px 5px; height: 30px; width: 30px; } diff --git a/bin/app/data/gui/search_view/images/button_case_sensitive_active.png b/bin/app/data/gui/search_view/images/button_case_sensitive_active.png deleted file mode 100644 index 72212a674586b018d5875dd332c98e088e1e69af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1533 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 FV1oUnr>Ot{ diff --git a/bin/app/data/gui/search_view/images/search.png b/bin/app/data/gui/search_view/images/search.png old mode 100644 new mode 100755 index ca7e7079b889787a7283d269da2b2f7d538c8697..4ae4638c9c257dfcb92667d09f4b0ad809830e84 GIT binary patch delta 735 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 N002ovPDHLkV1jkVMFIc- diff --git a/bin/app/data/gui/undoredo_view/images/arrow_left.png b/bin/app/data/gui/undoredo_view/images/arrow_left.png index acf2fca9d577f349607adb760a5a394bf4989dd8..3df1439c8a77b12b579ce9062d80c4d05f8f5992 100755 GIT binary patch delta 440 zcmV;p0Z0Cy7qu8RiBL{Q4GJ0x0000DNk~Le0000y0000y2nGNE06P5HasU7T32;bR za{vG?BLDy{BLR4&KX$P;i3)!KU`a$lRCwC#+u3cyFbsfUx)WrCjNlR4O}bG>$S4`X z-Jm0+8~lB7gCI!{$r4G0B;Y68Fh0wN4pIR5?`9Ri0a$?Doqa`{cn7c8@3=uf6!;2z z7yS@mUC+1+K)t4cXJG#J+C*2AP0cV%>vVV_k!LVBLayVO@fOeJ`v#FfaqBURYOP z4Xhim7S;t=6Kf9E#+rgHux4N@tO>XRdjg&t4n*|8mDpJth8oxdRt@Y0s{;0f?GE;a z)c}83{Ccv5^BvBwbpCjUv!|7P=^QQPcsTZqN60y?kh7K{=cPlgJcL|Z3b}e1a(y^t z20+LhkC0hBA@j6CX5xj+wQPYNHbJ}=J#2#bG)mMz6JmfMf`y>K%vqA00004nJh^c}wqi2xH zhmB^PT=fj6JY5_^DsCOQevr4>fX5;54yVMzyA6U?Tt3$Vt(cUzNE;k_uR7JjA~Q*S zt12Ihs{e^27QzOZ(@h)LH!v6Px_X*hOJCUWt&Lf@b(c_l`@zhOukZgqzEIX9D^_;8uI=&TgfnIY93+c)I$ztaD0e0stfrZPWk& diff --git a/bin/app/data/gui/undoredo_view/images/arrow_right.png b/bin/app/data/gui/undoredo_view/images/arrow_right.png index 7a5e0a5a97297b0561edaa8c0785ef41140e22a5..0a80d5cebc80cd8cee697284a08bad5fb67698c6 100755 GIT binary patch delta 438 zcmV;n0ZIOv7qb{PiBL{Q4GJ0x0000DNk~Le0000y0000y2nGNE06P5HasU7T32;bR za{vG?BLDy{BLR4&KX$P;i3)!KUP(kjRCwC#+sTo_Fc1aMHW3iQgy0Y$6G9;aLU1S( z0%QUid@kZLHBgqN-q7zV-@NE~lig|w09m{I4FG!pR{)DRMNRtw)NSwv`-hq03TD z#H(Im5xG=s@(_`udLnk7&oJN8?1%ZK)eFnNCH@aHThe z$A?(~z#0!$@w}_kIuBE)HB=?uP_>prRntbpZUNWkrE5O_ZX$A=rs*M(f^!}?t7Y(c gOCQiFW~My{045WLyaFIO-2eap07*qoM6N<$g4?vjP5=M^ delta 284 zcmdliF-zR6Gr-TCmrII^fq{Y7)59eQNXvmR2OE&IHdwa^NO2Z;L>4nJh^c}wqi2xH zhmB^PT=fh`JzX3_DsJ7mevr4>fX5+lyRZS5vVoWT3%4^DIIWnJOIX}~$Z!SmE!?^> zcyZJtClPzq77Ia#to{y;3yi`Brw-mYyZ?H?g6N+8P2MHl>K9xOT<5Qqn_Ax7F{AKy z$e!DISCTJ1dbU!}YS)Lu8^p^G%H83uKN#B@0Me<+CP zHg7boFpk)G>wm@(&HEOqq09dq*R&2l6*o6%ZqTd3Q=BSK&#>Ov`$F^l)#tlCx9qcy gU88ECHI0!WciQ*Tqv@U%K%X*ry85}Sb4q9e0NLJeJpcdz diff --git a/src/app/main.cpp b/src/app/main.cpp index 8b243d95..ea0e4124 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -1,19 +1,16 @@ #include #include -#include -#include -#include -#include + +#include "utility/logging/ConsoleLogger.h" +#include "utility/logging/FileLogger.h" +#include "utility/logging/LogManager.h" #include "Application.h" #include "includes.h" // defines 'void setup(int argc, char *argv[])' #include "qt/element/QtSplashScreen.h" #include "qt/utility/utilityQt.h" #include "qt/view/QtViewFactory.h" -#include "utility/logging/ConsoleLogger.h" -#include "utility/logging/FileLogger.h" -#include "utility/logging/LogManager.h" void init() { @@ -28,56 +25,27 @@ void init() utility::loadFontsFromDirectory("data/fonts", ".otf"); } -class InitThread : public QThread -{ -public: - void run(void) - { - //min Time the Splash screen is displayed - QThread::msleep(500); - } -}; - int main(int argc, char *argv[]) { setup(argc, argv); QApplication qtApp(argc, argv); - QPixmap whitePixmap(500,500); + qtApp.setAttribute(Qt::AA_UseHighDpiPixmaps); + + QPixmap whitePixmap(500, 500); whitePixmap.fill(Qt::white); - QPixmap p; - p.load("data/gui/splash_white.png"); - QPixmap foreground = p.scaled(whitePixmap.size()*0.8); - p.load("data/gui/splash_blue.png"); - QPixmap background = p.scaled(whitePixmap.size()*0.9); - QtSplashScreen* splash = new QtSplashScreen(whitePixmap, Qt::WindowStaysOnTopHint); - qtApp.processEvents(); - splash->setForeground(foreground); - splash->setBackground(background); - - splash->show(); - splash->repaint(); - - qtApp.processEvents(); - if (splash) splash->message( "Starting GUI" ); - qtApp.processEvents(); + splash->setMessage("Loading UI"); + splash->setVersion("0.1"); + splash->exec(qtApp); init(); - // Eventloop for Splashscreen - QEventLoop loop; - InitThread* initThread = new InitThread(); - QObject::connect(initThread, SIGNAL(finished()), &loop, SLOT(quit())); - QObject::connect(initThread, SIGNAL(terminated()), &loop, SLOT(quit())); - initThread->start(); - loop.exec(); - QtViewFactory viewFactory; std::shared_ptr app = Application::create(&viewFactory); - if(splash) + if (splash) { delete splash; } diff --git a/src/app/qt/element/QtMainWindow.cpp b/src/app/qt/element/QtMainWindow.cpp index a88fd46d..ba43fca8 100644 --- a/src/app/qt/element/QtMainWindow.cpp +++ b/src/app/qt/element/QtMainWindow.cpp @@ -42,10 +42,10 @@ QtMainWindow::QtMainWindow() // Seconde call is in Application.cpp loadLayout(); - //startScreen - startScreen = std::make_shared(this); - startScreen->setWindowModality(Qt::WindowModal); - startScreen->show(); + // StartScreen + m_startScreen = std::make_shared(this); + m_startScreen->setWindowModality(Qt::WindowModal); + m_startScreen->show(); } QtMainWindow::~QtMainWindow() @@ -57,6 +57,8 @@ void QtMainWindow::addView(View* view) QDockWidget* dock = new QDockWidget(tr(view->getName().c_str()), this); dock->setWidget(QtViewWidgetWrapper::getWidgetOfView(view)); dock->setObjectName(QString::fromStdString("Dock" + view->getName())); + // dock->setFeatures(QDockWidget::NoDockWidgetFeatures); + // dock->setTitleBarWidget(new QWidget()); addDockWidget(Qt::TopDockWidgetArea, dock); m_dockWidgets.push_back(std::make_pair(view, dock)); } @@ -216,6 +218,7 @@ void QtMainWindow::redo() void QtMainWindow::handleEscapeShortcut() { + m_startScreen->hide(); MessageInterruptTasks().dispatch(); } diff --git a/src/app/qt/element/QtMainWindow.h b/src/app/qt/element/QtMainWindow.h index 7bb14556..f0e87ce6 100644 --- a/src/app/qt/element/QtMainWindow.h +++ b/src/app/qt/element/QtMainWindow.h @@ -56,7 +56,8 @@ private: void setupShortcuts(); QDockWidget* getDockWidgetForView(View* view) const; - std::shared_ptr startScreen; + + std::shared_ptr m_startScreen; std::vector> m_dockWidgets; diff --git a/src/app/qt/element/QtSmartSearchBox.cpp b/src/app/qt/element/QtSmartSearchBox.cpp index 2c0e1389..188620e5 100644 --- a/src/app/qt/element/QtSmartSearchBox.cpp +++ b/src/app/qt/element/QtSmartSearchBox.cpp @@ -781,7 +781,7 @@ void QtSmartSearchBox::updatePlaceholder() { if (!text().size() && !m_elements.size()) { - setPlaceholderText("Please enter your search string."); + setPlaceholderText("Search"); } else { diff --git a/src/app/qt/element/QtSplashScreen.cpp b/src/app/qt/element/QtSplashScreen.cpp index 80605192..563981df 100644 --- a/src/app/qt/element/QtSplashScreen.cpp +++ b/src/app/qt/element/QtSplashScreen.cpp @@ -1,63 +1,103 @@ #include "QtSplashScreen.h" +#include +#include #include -QtSplashScreen::QtSplashScreen(const QPixmap &pixmap, Qt::WindowFlags f) : QSplashScreen (pixmap, f) +#include "qt/utility/QtDeviceScaledPixmap.h" + +namespace { - state = 0; - QTimer *timer = new QTimer( this ); - QObject::connect(timer, SIGNAL(timeout()), this, SLOT(animate())); - timer->start(150); - show(); - repaint(); + class InitThread : public QThread + { + public: + void run(void) + { + // Mininmum time the SplashScreen gets displayed. + QThread::msleep(5000); + } + }; +} + +QtSplashScreen::QtSplashScreen(const QPixmap &pixmap, Qt::WindowFlags f) + : QSplashScreen(pixmap, f) + , m_state(0) +{ + QtDeviceScaledPixmap foreground("data/gui/splash_white.png"); + foreground.scaleToHeight(pixmap.size().height() * 0.8); + m_foreground = foreground.pixmap(); + + QtDeviceScaledPixmap background("data/gui/splash_blue.png"); + background.scaleToHeight(pixmap.size().height() * 0.9); + m_background = background.pixmap(); } QtSplashScreen::~QtSplashScreen() { } +void QtSplashScreen::exec(QApplication& app) +{ + m_state = 0; + QTimer* timer = new QTimer(this); + QObject::connect(timer, SIGNAL(timeout()), this, SLOT(animate())); + timer->start(150); + + app.processEvents(); + + show(); + repaint(); + + app.processEvents(); + + // Eventloop for the SplashScreen + // QEventLoop loop; + // InitThread* initThread = new InitThread(); + // QObject::connect(initThread, SIGNAL(finished()), &loop, SLOT(quit())); + // initThread->start(); + // loop.exec(); +} + +void QtSplashScreen::setMessage(const QString &str) +{ + m_string = str; + repaint(); +} + +void QtSplashScreen::setVersion(const QString &str) +{ + m_version = str; + repaint(); +} + void QtSplashScreen::animate() { - state = (state+2)%120; - repaint(); -} - -void QtSplashScreen::setBackground(QPixmap& pixmap) -{ - m_Background = pixmap; -} - -void QtSplashScreen::setForeground(QPixmap &pixmap) -{ - m_Foreground = pixmap; -} - -void QtSplashScreen::message(const QString &str, int flag, const QColor &color) -{ - QSplashScreen::showMessage(str,flag,color); - animate(); - m_string = str; + m_state = (m_state + 2) % 120; + repaint(); } void QtSplashScreen::drawContents(QPainter *painter) { - painter->save(); - painter->translate(rect().width()/2,rect().height()/2); - painter->rotate(state*3); - painter->drawPixmap(-rect().width()*0.9/2,-rect().height()*0.9/2,m_Background); - painter->restore(); - painter->drawPixmap(rect().width()*0.1,rect().height()*0.1,m_Foreground); + painter->save(); + painter->translate(rect().width() / 2, rect().height() / 2); + painter->rotate(m_state * 3); + painter->drawPixmap(-rect().width() * 0.9 / 2, -rect().height() * 0.9 / 2, m_background); + painter->restore(); + painter->drawPixmap(rect().width() * 0.1, rect().height() * 0.1, m_foreground); - painter->setPen(QColor(74,112,18)); - QRect r = rect(); - r.setRect(r.x() + 5, r.y() + 5, r.width() - 10, r.height() - 10); + QRect r = rect(); + r.setRect(r.x() + 5, r.height() - 20, r.width() - 10, 20); - // TODO: automated Version number - painter->drawText(r, Qt::AlignRight, "Version 0.0.0"); + // TODO: automated Version number + painter->drawText(r, Qt::AlignRight, QString("Coati v").append(m_version)); - // Draw message at given position, limited to 43 chars - // If message is too long, string is truncated - if (m_string.length() > 40) {m_string.truncate(39); m_string += "...";} - painter->drawText(90, 16,m_string); + // Draw message at given position, limited to 43 chars + // If message is too long, string is truncated + if (m_string.length() > 40) + { + m_string.truncate(39); + m_string += "..."; + } + + painter->drawText(r, Qt::AlignLeft, m_string); } - diff --git a/src/app/qt/element/QtSplashScreen.h b/src/app/qt/element/QtSplashScreen.h index 65d454ab..7748ed7a 100644 --- a/src/app/qt/element/QtSplashScreen.h +++ b/src/app/qt/element/QtSplashScreen.h @@ -5,30 +5,35 @@ #include #include +class QApplication; class QPixmap; -class QtSplashScreen : public QSplashScreen +class QtSplashScreen + : public QSplashScreen { - Q_OBJECT + Q_OBJECT public: - QtSplashScreen(const QPixmap& pixmap, Qt::WindowFlags f = 0); - QtSplashScreen(Qt::WindowFlags f = 0); - virtual ~QtSplashScreen(); - void setBackground(QPixmap& pixmap); - void setForeground(QPixmap& pixmap); -protected: - void drawContents(QPainter* painter); + QtSplashScreen(const QPixmap& pixmap, Qt::WindowFlags f = 0); + virtual ~QtSplashScreen(); + + void exec(QApplication& app); + void setMessage(const QString& str); + void setVersion(const QString& str); public slots: - void animate(); - void message(const QString& str, int flag = Qt::AlignLeft, const QColor& color = Qt::black); + void animate(); private: - QString m_string; - int state; - QPixmap m_Background; - QPixmap m_Foreground; + void drawContents(QPainter* painter); + + int m_state; + + QString m_string; + QString m_version; + + QPixmap m_background; + QPixmap m_foreground; }; #endif //QTSPLASHSCREEN_H diff --git a/src/app/qt/element/QtStartScreen.cpp b/src/app/qt/element/QtStartScreen.cpp index dc53918c..6ef6eb69 100644 --- a/src/app/qt/element/QtStartScreen.cpp +++ b/src/app/qt/element/QtStartScreen.cpp @@ -1,17 +1,17 @@ -#include #include "QtStartScreen.h" -#include -#include +#include #include "utility/file/FileSystem.h" #include "utility/messaging/type/MessageLoadProject.h" +#include "qt/utility/QtDeviceScaledPixmap.h" + QtRecentProjectButton::QtRecentProjectButton(const QString &text, QWidget *parent) : QPushButton(text, parent) { m_projectFile = text.toStdString(); - this->setText(FileSystem::fileName(FileSystem::filePathWithoutExtension(text.toStdString())).c_str()); + this->setText(FileSystem::fileName(text.toStdString()).c_str()); } void QtRecentProjectButton::handleButtonClick() @@ -23,37 +23,41 @@ void QtRecentProjectButton::handleButtonClick() QtStartScreen::QtStartScreen(QWidget *parent) : QWidget(parent, Qt::Dialog | Qt::Popup | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint ) { - setGeometry(parent->pos().x()+parent->width()/2-350,parent->pos().y()+parent->height()/2-250,600,500); + setGeometry(parent->pos().x()+parent->width()/2-250,parent->pos().y()+parent->height()/2-250,500,500); QPalette palette; - QLinearGradient linearGradient(QPointF(0, 0), QPointF(0, 500)); - linearGradient.setColorAt(0, QColor(46,61,135)); - linearGradient.setColorAt(1, QColor(0,120,195)); - palette.setBrush(QPalette::Window,*(new QBrush(linearGradient))); + QLinearGradient linearGradient(QPointF(0, 275), QPointF(0, 500)); + linearGradient.setColorAt(0, QColor(46, 61, 135)); + linearGradient.setColorAt(1, QColor(0, 120, 195)); + palette.setBrush(QPalette::Window, *(new QBrush(linearGradient))); this->setPalette(palette); - //QPixmap coati_logo("data/gui/logo_coati.png"); - QPixmap coati_logo("data/gui/startscreen/logo_white.png"); - QPixmap cpp_icon("data/gui/startscreen/cpluspluss_icon.png"); + QtDeviceScaledPixmap coati_logo("data/gui/startscreen/logo_white.png"); + coati_logo.scaleToWidth(100); QLabel* coatiLogoLabel = new QLabel(this); - coatiLogoLabel->setPixmap(coati_logo); - coatiLogoLabel->setGeometry(30,30,100,138); + coatiLogoLabel->setPixmap(coati_logo.pixmap()); + coatiLogoLabel->setGeometry(30, 30, coati_logo.width(), coati_logo.height()); std::string buttonStyle = - "QPushButton{font-family: " - "Source Code Pro; " - "font-size: 17pt; " - "border-radius: 15px; " - "background: white} " - "QPushButton:hover {background:lightgrey;}"; + "QPushButton {" + "font-size: 17pt; " + "border-radius: 10px; " + "background: white; " + "} " + "QPushButton:hover {" + "background: rgba(255, 255, 255, 0.8); " + "}"; m_newProjectButton = new QPushButton("New Project", this); - m_newProjectButton->setGeometry(20,350, 200, 50); + m_newProjectButton->setAttribute(Qt::WA_LayoutUsesWidgetRect); // fixes layouting on Mac + m_newProjectButton->setGeometry(30, 375, 140, 30); m_newProjectButton->setStyleSheet(buttonStyle.c_str()); connect(m_newProjectButton, SIGNAL(clicked()), this, SLOT(handleNewProjectButton())); + m_openProjectButton = new QPushButton("Open Project", this); - m_openProjectButton->setGeometry(20,420, 200, 50); + m_openProjectButton->setAttribute(Qt::WA_LayoutUsesWidgetRect); // fixes layouting on Mac + m_openProjectButton->setGeometry(30, 420, 140, 30); m_openProjectButton->setStyleSheet(buttonStyle.c_str()); connect(m_openProjectButton, SIGNAL(clicked()), this, SLOT(handleOpenProjectButton())); @@ -61,47 +65,51 @@ QtStartScreen::QtStartScreen(QWidget *parent) connect(this, SIGNAL(openNewProjectDialog()), parent, SLOT(newProject())); QLabel* recentProjectsLabel = new QLabel("RECENT PROJECTS: ", this); - QFont font("Helvetica", 20); - recentProjectsLabel->setFont(font); - recentProjectsLabel->setStyleSheet("QLabel{font-family: Source Code Pro; font-size: 20pt; color: white;}"); - recentProjectsLabel->setGeometry(250, 100, 300, 50); + recentProjectsLabel->setGeometry(300, 129, 300, 50); + recentProjectsLabel->setStyleSheet( + "QLabel {" + "font-size: 16pt; " + "color: white; " + "}" + ); std::vector extensions; extensions.push_back(".xml"); std::vector recentProjects = FileSystem::getFileNamesFromDirectory("data/projects", extensions); - int position = 150; - for(std::string project : recentProjects) + int position = 200; + QIcon cpp_icon("data/gui/startscreen/cpluspluss_icon.png"); + for (std::string project : recentProjects) { QtRecentProjectButton* button = new QtRecentProjectButton(project.c_str(), this); - button->setGeometry(250, position, 400, 40); + button->setAttribute(Qt::WA_LayoutUsesWidgetRect); // fixes layouting on Mac button->setIcon(cpp_icon); - button->setIconSize(QSize(40,40)); + button->setIconSize(QSize(25, 25)); button->setStyleSheet( - "QPushButton{" - "font-family: Source Code Pro; " - "font-size: 12pt; " - "Text-align:left; " - "color: white; " - "background:none; " - "border:none;} " - "QPushButton:hover{color:lightgrey;}"); + "QPushButton{" + "font-size: 12pt; " + // "text-align: left; " // when using this the QPixmap is drawn without regard of the screens DPI + "color: white; " + "background: none; " + "border: none; " + "} " + "QPushButton:hover{" + "background: rgba(255, 255, 255, 0.15); " + "border-radius: 10px; " + "}" + ); + button->minimumSizeHint(); // force font loading + button->setGeometry(292, position, button->fontMetrics().width(button->text()) + 45, 40); connect(button, SIGNAL(clicked()), button, SLOT(handleButtonClick())); - position +=50; + position += 40; } this->raise(); - } QSize QtStartScreen::sizeHint() const { - return QSize(500,500); -} - -void QtStartScreen::paintEvent(QPaintEvent *event) -{ - QPainter* painter = new QPainter(this); + return QSize(500, 500); } void QtStartScreen::handleNewProjectButton() diff --git a/src/app/qt/element/QtStartScreen.h b/src/app/qt/element/QtStartScreen.h index 0ab499bc..c3422405 100644 --- a/src/app/qt/element/QtStartScreen.h +++ b/src/app/qt/element/QtStartScreen.h @@ -5,7 +5,6 @@ #include #include - class QtRecentProjectButton : public QPushButton { Q_OBJECT @@ -25,8 +24,6 @@ public: QtStartScreen(QWidget* parent = 0); QSize sizeHint() const Q_DECL_OVERRIDE; - void paintEvent(QPaintEvent* event); - signals: void openOpenProjectDialog(); void openNewProjectDialog(); @@ -40,5 +37,4 @@ private: std::vector m_recentProjects; }; - #endif //STARTSCREEN_H diff --git a/src/app/qt/utility/QtDeviceScaledPixmap.h b/src/app/qt/utility/QtDeviceScaledPixmap.h index bd20f101..935475a1 100644 --- a/src/app/qt/utility/QtDeviceScaledPixmap.h +++ b/src/app/qt/utility/QtDeviceScaledPixmap.h @@ -36,6 +36,12 @@ public: return m_pixmap.height() / devicePixelRatio(); } + void scaleToWidth(int width) + { + m_pixmap = m_pixmap.scaledToWidth(width * devicePixelRatio(), Qt::SmoothTransformation); + m_pixmap.setDevicePixelRatio(devicePixelRatio()); + } + void scaleToHeight(int height) { m_pixmap = m_pixmap.scaledToHeight(height * devicePixelRatio(), Qt::SmoothTransformation); diff --git a/src/app/qt/view/QtCompositeView.cpp b/src/app/qt/view/QtCompositeView.cpp index 51444f97..239a821b 100644 --- a/src/app/qt/view/QtCompositeView.cpp +++ b/src/app/qt/view/QtCompositeView.cpp @@ -19,7 +19,7 @@ QtCompositeView::QtCompositeView(ViewLayout* viewLayout, CompositeDirection dire } layout->setSpacing(5); - layout->setContentsMargins(5, 5, 5, 5); + layout->setContentsMargins(8, 8, 8, 8); layout->setAlignment(Qt::AlignTop); m_widget = new QWidget();