Responsive Navigator in React Navigation - expo

I've been using expo & react-navigation for developing on both mobile & desktop and so far it's awesome! However, I need to display bottom tab in mobile & drawer in desktop. I've been facing some trouble with applying different navigator in smaller & larger screens. We want to display tab in mobile & a sidebar in larger screens. The route structure is different between mobile & larger screen.
For example:
In mobile screens:
Main Navigator
Tab Navigator
Screen A
Screen B
Screen C
Profile Stack Navigator
Settings Stack Navigator
In mobile we just want the 3 screens to be inside the tab, while the other should not display the tab.
In larger screens:
Main Navigator
Drawer Navigator
Stack A
Screen A
Profile Stack Navigator (put the stack here, because we don't want the profile stack navigator to be displayed in drawer item list)
Stack B
Screen B
Settings Stack Navigator
Stack C
Screen C
Notice that in larger screens, we want every screen to be inside the drawer navigator (as the sidebar would be persistent)
The first thing we can would be to do a conditional rendering (based on the dimensions), but several problems arises:
How would we type this in the screens?
The structure is different, how would we navigate? (the path would be also be different right?)
I'm thinking to create some kind of navigation wrapper that will receive navigation & current screen as the params. But not sure about this. If you guys have any thoughts or ever experienced this, please do share! Thanks in advance!

Related

MFC - CPropertyPageEx and scaling (4K monitor)

I'm upgrading an old MFC app to support 4K monitors. According to what information I can find, CPropertySheetEx 'implements Wizard97 style functionality'. It's a dialog with Previous and Next buttons and a banner.
Now MFC has done a poor job of scaling this dialog and I'm not sure what control I have over it.
4K is usually 200% scaling. The banner height is unchanged at 59 pixels (so is too small on a 4K monitor). The rest of the dialog seems to have scaled to about 150% (width, height).
I've tried SetWindowPos on the banner. This doesn't resize it and causes other dialog issues.
There's this note in the code, which makes me think the banner is dynamically constructed with the property sheet.
// If the page has a header, we need to paint the area above the border.
// By inspection (Spy++), the border is a static control with ID 0x3027
CWnd* pTopBorder = GetDlgItem(0x3027);
Any suggestions or guides would be appreciated.
The app is DPI aware. Many MFC components scale properly (some need some work)
Question - How can I get CPropertyPageEX dialogs to support scaling?
Here's an image ![Scaling Issue]https://imgur.com/a/Ww8SLnU
Edit -
The icon and the text in the banner can be resized and repositioned, only the height of the banner seems stuck at 50 pixels.
CPropertyPageEx is defined as CPropertyPage in MFC 11. It's derived directly from CWnd.
Having a look at the sources for CPropertyPage (atlmfc\src\mfc\dlgprop.cpp) there's no constructor where it creates buttons or banners (so I may be looking in the wrong place).
A PropertySheet seems to consist of
a graphic (user supplied),
a horizontal bar (static control),
a dialog resource from the Property Page currently displayed
another horizontal bar
a series of buttons (Prev , Next etc)
Have a look at my high def screenshot https://imgur.com/a/yR97H96
The dialog and controls have rescaled
The vertical position of the horizontal bar and the property page are both unchanged from the unscaled version, leading to the ugly overlap you can see.
.

MFC VC++: How to remove blank space between the Window caption and Client area

I am developing a desktop app using MFC. The following image shows the current state of the app's window top part. The area marked in red is unnecessary and I want to remove it.
How can I remove that space or atleast change the color to match the rest of the window background?
More Info:
The App is using Ribbon UI. I have added the App button programmatically in onCreate of CMainFrame. Is it the bar that holds the Ribbon categories? I tried SetMenubarState(AFX_MVS_HIDDEN) thinking it was the menu bar, but that didn't work. Just changing its color is also acceptable.
Update:
I have managed to change the color of that ribbon strip, and removed the caption bar I used for showing the 'add' button. Now I need to figure out how to place the 'Add' button on the right side of the ribbon strip.

Can you implement a stacked ActionBar on a tablet?

I have implemented an ActionBar with my own custom icons. I have added tabs as well but I want these to appear below the ActionBar. At the moment they are displaying in the ActionBar. According to the Android Developers guide:
http://developer.android.com/guide/topics/ui/actionbar.html
when the screen is wide enough the tabs appear in the action bar
alongside the action buttons (such as when on a tablet, shown in
figure 7), while when on a narrow screen they appear in a separate bar
(known as the "stacked action bar", shown in figure 8)
Is it possible to implement a stacked action bar permanently so that the tabs are constantly displayed below the ActionBar across all devices?
If you want the same effect as in that image, you can use tabs. Here is a tutorial on how to implement them.

MFC Print Preview 'Prev' button not enabling when used with Objective Grid from Rogue Wave - Stingray Studio

I have an MFC app that uses Rogue Wave's Stingray Studio Objective Grid to display a dialog with a grid in it. When doing a print preview, the grid uses the MFC print preview mechanism to generate the print preview dialog. On the dialog I see all the buttons you would expect, including next and previous, and zoom in and zoom out. I have more than one page worth of data in the grid and so I see a scroll bar on the right, the Next button is enabled and the previous button is disabled. If I click on the next button, the dialog advances the preview to the next page of the data, and I see the scroll bar move down accordingly, but the Prev button does not become enabled. I can use the scroll bar to scroll in both directions, but the 'Prev' button never becomes enabled and the Next button never disables when I reach the last page. I see a similar problem with the Zoom buttons. I can zoom in, but the zoom out button never enables so I can never zoom out anymore.
Has anyone seen this sort of behaviour before and know what causes it?
So it would seem that my problem boils down to the toolbar not getting messages to refresh itself. It should be getting a WM_IDLEUPDATECMDUI whenever the preview invalidates itself, but it is not. A sample app I found is working correctly and it does get those messages. What I believe is happening in my situation is that My code is in a DLL for an app which I do not control, and when the app catches messages, it swallows certain ones, including this one. I was able to resolve the issue with a kludge. I find the preview window and in the OnPrint virtual function I send the message to it's toolbar. This works quite well, but it is not very pretty.

MFC dock at bottom right

I have a pane in an C++ MFC app that I want to dock bottom right as shown in orange in this image. Currently it is going right across the bottom (red).
see http://screencast.com/t/kSpPhvZkgBGj
This is how the user can do it in VS2008.
http://screencast.com/t/kSpPhvZkgBGj
What position is this called? How can I get the same effect?
It depends on the order the panes are created. I developed a software that even has two interface versions, with completely different layouts.
Outlook Layout:
Ribbon Layout
As you can see in the Outlook layout the 3 panes at top got at the left in the Ribbon layout; and the information bar moved from the top to the bottom.
This got some annoying work to be done. I used CDockablePane entities. Are you using them?