Closed shermp closed 4 years ago
Works well, but it would be useful to see if the
N3Dialog
s can be named more specifically.
That would be nice. I'll see if Kobo have set windowTitle.
EDIT: Nope, at least not in 4.6. It has been set for the home page, and "My Books", but not for the dialogs 😞
I finally figured out how to get the title of an N3Settings
dialog. Tried N3Settings::getTitle()
and N3Settings::getTitleLarge()
, but couldn't figure out the proper return type. Tried char*
, QString
, QString*
, QByteArray
. Nothing seemed to work.
Digged further into the code, and found they returned a SmallLabel*
and HeaderMediumLabel*
respectively, both of which seem to be derived from QLabel
.
And sure enough, calling QLabel::text() for the N3Settings::getTitleLarge()
return value gives a useful title 😁
@pgaskin I've tested on FW 4.6, could you try a newer version please?
Found a much better way of getting the current dialog name, that isn't tied to the current language. Turns out N3Dialog
is more of a generic wrapper than anything else. It contains a widget that has the dialog contents.
This widget can be obtained by calling N3Dialog::content()
, and one can get the the object name from the returned QWidget pointer.
[root@(none) ~]# qndb -m ndbCurrentView
N3SettingsView
[root@(none) ~]# qndb -m ndbCurrentView
N3SettingsDeviceInformationView
Well, the NH failsafe just saved me from having to factory reset... Hooray for the failsafe 😀
For those wondering, apparently QTimer
really prefers to be heap allocated.
Could you have one last quick look please @pgaskin when/if you get a moment?
I've now added a crude debounce style filter to prevent duplicate signals being sent, like what was happening before in FW 4.6
Otherwise I think I'm done, barring any issues.
Looks good. Tested on FW 15548.
Thank you very much.
I know you're currently pretty busy, so thanks for taking the time to look at this. It's most appreciated.
This PR adds a method to find out what the currently shown view is (eg:
HomePageView
,ReadingView
). It also adds a signal that is emitted every time the current view changes.I search the result of
QApplication::allWidgets()
for aQStackedWidget
which contains theHomePageView
widget. I only search once, then cache theQStackedWidget
pointer for subsequent calls. This method works as far back as firmware version 4.6.x.According to @pgaskin this
QStackedWidget
is managed by theMainWindowController
singleton. I can't figure out a way of getting it from the MWC, especially on older firmware versions. Unless anyone has any further ideas, I'll stick with theQApplication
method.