Thanks, patch applied. On Fri, Jul 13, 2018 at 7:10 AM, Akshay Joshi <akshay.jo...@enterprisedb.com > wrote:
> Attached is the refactored patch. > > On Fri, Jul 13, 2018 at 11:19 AM, Akshay Joshi < > akshay.jo...@enterprisedb.com> wrote: > >> >> >> On Thu, Jul 12, 2018 at 9:38 PM, Dave Page <dp...@pgadmin.org> wrote: >> >>> >>> >>> On Thu, Jul 12, 2018 at 4:40 PM, Dave Page <dp...@pgadmin.org> wrote: >>> >>>> >>>> >>>> On Thu, Jul 12, 2018 at 11:17 AM, Akshay Joshi < >>>> akshay.jo...@enterprisedb.com> wrote: >>>> >>>>> >>>>> >>>>> On Wed, Jul 11, 2018 at 8:18 PM, Dave Page <dp...@pgadmin.org> wrote: >>>>> >>>>>> >>>>>> >>>>>> On Wed, Jul 11, 2018 at 11:05 AM, Akshay Joshi < >>>>>> akshay.jo...@enterprisedb.com> wrote: >>>>>> >>>>>>> Hi Dave >>>>>>> >>>>>>> On Wed, Jul 11, 2018 at 1:31 PM, Dave Page <dp...@pgadmin.org> >>>>>>> wrote: >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Wed, Jul 11, 2018 at 8:03 AM, Akshay Joshi < >>>>>>>> akshay.jo...@enterprisedb.com> wrote: >>>>>>>> >>>>>>>>> Hi >>>>>>>>> >>>>>>>>> On Tue, Jul 10, 2018 at 9:16 PM, Dave Page <dp...@pgadmin.org> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Tue, Jul 10, 2018 at 4:05 PM, Akshay Joshi < >>>>>>>>>> akshay.jo...@enterprisedb.com> wrote: >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Tue, 10 Jul 2018, 18:32 Dave Page, <dp...@pgadmin.org> wrote: >>>>>>>>>>> >>>>>>>>>>>> Hi >>>>>>>>>>>> >>>>>>>>>>>> On Tue, Jul 10, 2018 at 11:20 AM, Akshay Joshi < >>>>>>>>>>>> akshay.jo...@enterprisedb.com> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> Hi Hackers, >>>>>>>>>>>>> >>>>>>>>>>>>> I have implemented the fix for RM #3316 "Pgadmin4 No Tray >>>>>>>>>>>>> Crash". I have implemented it as follows: >>>>>>>>>>>>> >>>>>>>>>>>>> - Check the availability of System Tray for 30 seconds (no >>>>>>>>>>>>> changes made here). >>>>>>>>>>>>> - If System Tray not found create one Floating Window with >>>>>>>>>>>>> menu. (Refer attached screenshot). >>>>>>>>>>>>> - I have remove close(x) button of the floating window. >>>>>>>>>>>>> - Fedora have "Quit" menu for the applications, so I have >>>>>>>>>>>>> handle the close event and shutdown the python server. >>>>>>>>>>>>> >>>>>>>>>>>>> I have tested this on Fedora-28 (no system tray) and Ubuntu >>>>>>>>>>>>> 18.04 (with system tray). >>>>>>>>>>>>> >>>>>>>>>>>>> Please review the screenshot and suggest changes (if any). >>>>>>>>>>>>> I'll send the patch later. >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> What does the window look like without the menu? I'd suggest >>>>>>>>>>>> putting a Slonik image there, and maybe a note (or a button to >>>>>>>>>>>> display a >>>>>>>>>>>> note) saying that installing a system tray plugin can be used to >>>>>>>>>>>> hide the >>>>>>>>>>>> window. >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> You mean instead of "pgAdmin4" menu we should add toolbar >>>>>>>>>>> with button having slonik image and when click on there submenus >>>>>>>>>>> will be >>>>>>>>>>> open. >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> No - I assume that's a drop down menu over a blank window? I'm >>>>>>>>>> suggesting something to fill the blank space. >>>>>>>>>> >>>>>>>>> >>>>>>>>> Attached are the screenshot after adding 'Slonik' icon and >>>>>>>>> 'Note'. >>>>>>>>> >>>>>>>> >>>>>>>> Looks good - though please fix the aspect ratio so it doesn't >>>>>>>> squish the logo. I may tweak the message in review. >>>>>>>> >>>>>>> >>>>>>> I have tried using "QPixmap", but not able to fix the aspect >>>>>>> ratio. >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>> Should we allow user to resize the floating window? Definitely not >>>>>>>>> maximize, because icon gets blurred. >>>>>>>>> >>>>>>>> >>>>>>>> No - but it should be minimisable. >>>>>>>> >>>>>>> >>>>>>> Fixed. Attached is the working patch. Please review it. >>>>>>> >>>>>> >>>>>> Thanks. Here's an update to the patch which makes the floating window >>>>>> a Qt Form for ease of maintenance, as well as making a few other tweaks. >>>>>> >>>>> >>>>> I have applied the patch and found below issues: >>>>> >>>>> - Slonik icon is not visible, I have remove the QPixmap and apply >>>>> the style sheet in ui file, it works for me. >>>>> >>>>> I'll bet it was because I told it to use a local file, which it >>>> included without a path. I've seen Qt mess that up before. >>>> >>>>> >>>>> - Window is resizable, to fix that i have set the fixed size. >>>>> >>>>> OK. >>>> >>>> >>>>> Please refer "*pgAdmin4_Floating_Window.png*" >>>>> >>>>>> >>>>>> I really dislike the 30 second delay that's caused by the attempt to >>>>>> initialise the tray icon. We need to do something about that; >>>>>> >>>>> >>>>> Do we need to reduce the delay? Meanwhile I have added some action >>>>> messages like "Checking for system tray..." onto the splash screen, so the >>>>> user will be aware of the actions. Please refer " >>>>> *Splash_With_Message.png*" >>>>> >>>> >>>> Yes - we cannot have the check for a system tray taking 30 seconds. >>>> People get very annoyed when pgAdmin takes too long to start! >>>> >>>> As a worst case scenario, we can add a command line switch that tells >>>> it to not bother using the tray, which can then be used in the shortcut on >>>> the menu. However, I really would like to make this fully automatic, and >>>> near instantaneous if possible, so let's try to figure it out before >>>> falling back to that hack. >>>> >>> >>> I played some more. It looks like it's an easy fix - something like the >>> following seems to work for me on Fedora 28 (no tray) and macOS, with no >>> noticeable delay on either: >>> >>> if (!QSystemTrayIcon::isSystemTrayAvailable() || !trayicon->Init()) >>> >>> { >>> >>> // Delete Tray Icon object >>> >>> delete trayicon; >>> >>> trayicon = NULL; >>> >>> >>> splash->showMessage(QString(QWidget::tr("System tray not found, >>> creating floating window...")), Qt::AlignBottom | Qt::AlignCenter); >>> >>> >>> Of course, if we call QSystemTrayIcon::isSystemTrayAvailable() earlier, >>> we can skip even trying to create the tray icon, rather than creating it >>> and then deleting it. Can you look at refactoring that way, and see if it >>> works for you please? >>> >> >> Sure, If you can see the Init() method of trayicon it calls >> isSystemTrayAvailable() which eventually call >> QSystemTrayIcon::isSystemTrayAvailable() >> for 10 times in loop with wait of 3 seconds. Why we have added that logic? >> Is that method required to be called multiple times for the correct return >> value ? I am asking that because it would be easy for me to refactor the >> logic. If we can rely on single call to the function QSystemTrayIcon:: >> isSystemTrayAvailable() then no need to create a tray icon if system >> tray is not available. >> >> Meanwhile I'll start refactoring the logic. Thanks >> >> >> >>> >>> Thanks. >>> >>> >>>> >>>> >>>>> >>>>> >>>>>> can we start the splash screen and server before trying to create the >>>>>> icon? That way the user can be up and running immediately; they just >>>>>> won't >>>>>> see the tray icon or floating window for a short while. >>>>>> >>>>> >>>>> Logic to show splash screen is already there and it is before >>>>> initializing the tray icon, but for some reason it is not visible. It is >>>>> visible only when app.exec() will be called. To fix that I'll have to add >>>>> sleep of 1 second before calling processEvents() (googled it). >>>>> >>>> >>>> We shouldn't need a sleep - simply processing events should be enough. >>>> >>>> >>>>> >>>>> Starting the server before trying to create tray icon shouldn't be >>>>> a good idea, because in case of some error in starting the server, user >>>>> should be able to view the log by clicking the "View log" menu from tray >>>>> icon. >>>>> >>>> >>>> Yeah - I'm not sure it's a huge issue as they'll be able to click >>>> something within 30 seconds, but it's certainly far from ideal. >>>> >>>> Thanks. >>>> >>>> >>>>> >>>>> Attached is the modified patch. Please review it. >>>>> >>>>>> >>>>>> Thanks. >>>>>> >>>>>> -- >>>>>> Dave Page >>>>>> Blog: http://pgsnake.blogspot.com >>>>>> Twitter: @pgsnake >>>>>> >>>>>> EnterpriseDB UK: http://www.enterprisedb.com >>>>>> The Enterprise PostgreSQL Company >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> *Akshay Joshi* >>>>> >>>>> *Sr. Software Architect * >>>>> >>>>> >>>>> >>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246* >>>>> >>>> >>>> >>>> >>>> -- >>>> Dave Page >>>> Blog: http://pgsnake.blogspot.com >>>> Twitter: @pgsnake >>>> >>>> EnterpriseDB UK: http://www.enterprisedb.com >>>> The Enterprise PostgreSQL Company >>>> >>> >>> >>> >>> -- >>> Dave Page >>> Blog: http://pgsnake.blogspot.com >>> Twitter: @pgsnake >>> >>> EnterpriseDB UK: http://www.enterprisedb.com >>> The Enterprise PostgreSQL Company >>> >> >> >> >> -- >> *Akshay Joshi* >> >> *Sr. Software Architect * >> >> >> >> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246* >> > > > > -- > *Akshay Joshi* > > *Sr. Software Architect * > > > > *Phone: +91 20-3058-9517Mobile: +91 976-788-8246* > -- Dave Page Blog: http://pgsnake.blogspot.com Twitter: @pgsnake EnterpriseDB UK: http://www.enterprisedb.com The Enterprise PostgreSQL Company