Merge lp:~lukas-kde/unity8/keyboardIndicator into lp:unity8

Proposed by Lukáš Tinkl on 2016-06-20
Status: Merged
Approved by: Michał Sawicz on 2016-08-01
Approved revision: 2477
Merged at revision: 2553
Proposed branch: lp:~lukas-kde/unity8/keyboardIndicator
Merge into: lp:unity8
Diff against target: 430 lines (+185/-17)
10 files modified
debian/control (+2/-1)
plugins/Unity/Indicators/indicatorsmanager.cpp (+3/-5)
qml/Components/KeymapSwitcher.qml (+27/-1)
qml/Panel/IndicatorItemRow.qml (+13/-2)
qml/Panel/Indicators/MenuItemFactory.qml (+65/-0)
tests/mocks/Unity/Indicators/IndicatorsModel.qml (+41/-1)
tests/qmltests/Panel/tst_IndicatorItemRow.qml (+26/-1)
tests/qmltests/Panel/tst_IndicatorsBar.qml (+3/-3)
tests/qmltests/Panel/tst_IndicatorsMenu.qml (+4/-3)
tests/qmltests/tst_OrientedShell.qml (+1/-0)
To merge this branch: bzr merge lp:~lukas-kde/unity8/keyboardIndicator
Reviewer Review Type Date Requested Status
Unity8 CI Bot continuous-integration Needs Fixing on 2016-07-31
Michael Terry 2016-06-20 Approve on 2016-07-11
Daniel d'Andrada (community) 2016-07-07 Abstain on 2016-07-11
Review via email: mp+297920@code.launchpad.net

Commit Message

Implement frontend support for running keyboard indicator

Description of the Change

Implement necessary support for the keyboard indicator

- add the keymapMenu to the menu item factory
- signal the current and active keymap
- hide/show the indicator appropriately (based on whether the system has a keyboard attached and there are keymaps configured)

* Are there any related MPs required for this MP to build/function as expected? Please list.

In silo 77, https://requests.ci-train.ubuntu.com/#/ticket/1575):
- https://code.launchpad.net/~lukas-kde/ubuntu-system-settings/keyboardIndicator/+merge/297919
- https://code.launchpad.net/~tiheum/ubuntu-themes/keyboard-indicators/+merge/286671
- https://code.launchpad.net/~lukas-kde/indicator-keyboard/launch-uss-under-u8/+merge/298023

 * Did you perform an exploratory manual test run of your code change and any related functionality?

Yes

 * If you changed the packaging (debian), did you subscribe the ubuntu-unity team to this MP?

N/A

 * If you changed the UI, has there been a design review?

N/A

To post a comment you must log in.
Unity8 CI Bot (unity8-ci-bot) wrote :

PASSED: Continuous integration, rev:2459
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/1660/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/2202
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=vivid+overlay,testname=qmluitests.sh/1167
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/1167
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=yakkety,testname=qmluitests.sh/1167
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/2230
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/2136
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/2136
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=yakkety/2136
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/2127
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/2127/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2127
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2127/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=yakkety/2127
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=yakkety/2127/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/2127
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/2127/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2127
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2127/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=yakkety/2127
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=yakkety/2127/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/2127
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/2127/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/2127
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/2127/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=yakkety/2127
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=yakkety/2127/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/1660/rebuild

review: Approve (continuous-integration)
2460. By Lukáš Tinkl on 2016-07-07

merge trunk

Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2460
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/1688/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/2235
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=vivid+overlay,testname=qmluitests.sh/1197
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/1197
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=yakkety,testname=qmluitests.sh/1197
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/2263
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/2169
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/2169
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=yakkety/2169
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/2160
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/2160/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2160
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2160/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=yakkety/2160
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=yakkety/2160/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/2160
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/2160/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2160
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2160/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=yakkety/2160
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=yakkety/2160/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/2160
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/2160/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/2160
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/2160/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=yakkety/2160
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=yakkety/2160/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/1688/rebuild

review: Needs Fixing (continuous-integration)
Michael Terry (mterry) wrote :

session-migration and dh-migrations might be a nicer way to do such one time migrations. Not necessarily necessary to switch this MP, but just saying.

Michael Terry (mterry) wrote :

Wait, also.. Why are we migrating TO gsettings? What about the unity8-greeter case?

And "org.gnome.desktop.input-sources" seems like a less "standard" place than AccountsService.InputSources.

review: Needs Information
Lukáš Tinkl (lukas-kde) wrote :

> Wait, also.. Why are we migrating TO gsettings? What about the
> unity8-greeter case?
>
> And "org.gnome.desktop.input-sources" seems like a less "standard" place than
> AccountsService.InputSources.

This is orthogonal to https://code.launchpad.net/~lukas-kde/ubuntu-system-settings/keyboardIndicator/+merge/297919, the reason being that indicator-keyboard reads the config from gsettings, not AS (altho it writes it there too, presumably for the greeter profile)

Michael Terry (mterry) wrote :

So we could also change indicator-keyboard to read from AS instead of everyone else writing to gsettings.

But changing indicator-keyboard would involve updating unity-control-center too. And losing compatibility with gnome-control-center (though I doubt we need that anymore).

So fine. We can write to gsettings and sync to AS. But I don't see where AS syncing is done in indicator-keyboard? It does some reading from AS, but I'm not sure I see it copying from gsettings to AS.

I just want to make sure we don't lose support for the greeter here.

Lukáš Tinkl (lukas-kde) wrote :

> So we could also change indicator-keyboard to read from AS instead of everyone
> else writing to gsettings.
>
> But changing indicator-keyboard would involve updating unity-control-center
> too. And losing compatibility with gnome-control-center (though I doubt we
> need that anymore).

Yeah, it's in fact another app, unity-settings-daemon that writes and keeps the config from unity-control-center...

> So fine. We can write to gsettings and sync to AS. But I don't see where AS
> syncing is done in indicator-keyboard? It does some reading from AS, but I'm
> not sure I see it copying from gsettings to AS.

We don't write any settings, we just read it; it's u-s-s that writes it (see here https://code.launchpad.net/~lukas-kde/ubuntu-system-settings/keyboardIndicator/+merge/297919)

> I just want to make sure we don't lose support for the greeter here.

We don't, it's fine since u-s-s writes to AS and that's where the greeter will pick it up.

2461. By Lukáš Tinkl on 2016-07-08

merge trunk

Michael Terry (mterry) wrote :

19 +void AccountsService::migrateKeymapSettings()

I would like to (A) see a larger comment about why this function exists, just for future coders.

Specifically, why it exists in unity8 at all. A naive watcher would suspect indicator-keyboard could do it's own homework.

OR (B) move this code to ubuntu-system-settings and only actually do migration if we're in a ubuntu-touch XDG session (while doing that move, we can switch it to a proper dh-migrations script). Because outside of this method, unity8 does not care about the input-sources gsettings key at all. That's all internal to how ubuntu-system-settings records this data for consumption by other parts of the system. I feel like you put it here just because you knew it would be run early. But that's what dh-migrations is for.

21 + QSettings settings;
22 + if (!settings.value(QStringLiteral("KeymapsMigrated")).toBool()) {

Why use QSettings like this? This might be the first time we're using unity8's default QSettings location. Can we not use GSettings like we do elsewhere in unity8? Or just use dh-migrations.

(I can try to whip up such a script... Give me a bit.)

Still haven't actually tested this. :) Getting to that.

review: Needs Fixing
Michael Terry (mterry) wrote :

OK, I filed https://code.launchpad.net/~mterry/ubuntu-system-settings/keyboardIndicator-migration/+merge/299593 against the USS branch. With that, we should be able to remove migrateKeymapSettings from this MP.

Also... I notice that this MP's use of com.canonical.indicator.keyboard.visible is not great. That's a user setting, to hide/show the indicator as the user wants (see unity-control-center's "Text Entry" panel and its "Show current input source in the menu bar" setting). We may not use that key in ubuntu-system-settings, but my point is that the key is a user setting, not a communication channel from shell to indicator.

Instead, we should hide/show it in our unity8 indicator menu bar as we wish.

Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2461
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/1703/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/2250
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=vivid+overlay,testname=qmluitests.sh/1207
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/1207
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=yakkety,testname=qmluitests.sh/1207
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/2278
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/2184
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/2184
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=yakkety/2184
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/2175
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/2175/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2175
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2175/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=yakkety/2175
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=yakkety/2175/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/2175
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/2175/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2175
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2175/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=yakkety/2175
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=yakkety/2175/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/2175
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/2175/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/2175
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/2175/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=yakkety/2175
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=yakkety/2175/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/1703/rebuild

review: Needs Fixing (continuous-integration)
Michael Terry (mterry) wrote :

I've just tested this on my phone (I tested the versions with my migration changes). Looks great! Good work.

So I'm +1 on this MP if:
- You merge in my migration add-on MPs.
- You switch from using com.canonical.indicator.keyboard.visible to a unity8-internal means of hiding the indicator.
- And add a test for that new hiding/showing method of the indicator, testing different number of layouts and whether nor not we have a keyboard.

review: Needs Fixing
Michael Terry (mterry) wrote :

(You can reset migration state by clearing your gsettings like "gsettings set org.gnome.desktop.input-sources sources '[]'" and editing .local/share/session_migration-ubuntu-touch to not list the new keyboard script and then rebooting.)

2462. By Lukáš Tinkl on 2016-07-11

use client-side hiding of the indicator

2463. By Lukáš Tinkl on 2016-07-11

merge lp:~mterry/unity8/keyboardIndicator-migration

2464. By Lukáš Tinkl on 2016-07-11

add a test to check hiding of the keyboard indicator

2465. By Lukáš Tinkl on 2016-07-11

remove unused var

Lukáš Tinkl (lukas-kde) wrote :

> I've just tested this on my phone (I tested the versions with my migration
> changes). Looks great! Good work.
>
> So I'm +1 on this MP if:
> - You merge in my migration add-on MPs.
> - You switch from using com.canonical.indicator.keyboard.visible to a
> unity8-internal means of hiding the indicator.
> - And add a test for that new hiding/showing method of the indicator, testing
> different number of layouts and whether nor not we have a keyboard.

I believe I addressed all your comments, let's give it another spin :)

2466. By Lukáš Tinkl on 2016-07-11

add a cleanup() function

2467. By Lukáš Tinkl on 2016-07-11

less fragile panel item finding

2468. By Lukáš Tinkl on 2016-07-11

s/tryCompare/compare

2469. By Lukáš Tinkl on 2016-07-11

also cleanup the keymaps

Daniel d'Andrada (dandrader) wrote :

Please confirm that QDBusActionGroup does indeed only work when put inside an Item instead of a QtObject. QDBusActionGroup itself is a plain QObject. So this requirement looks very odd. If it does, there's a bug somewhere that needs reporting.

review: Needs Information
2470. By Lukáš Tinkl on 2016-07-11

Recommend indicator-keyboard

2471. By Lukáš Tinkl on 2016-07-11

turn KeymapSwitcher back into a QtObject

Lukáš Tinkl (lukas-kde) wrote :

> Please confirm that QDBusActionGroup does indeed only work when put inside an
> Item instead of a QtObject. QDBusActionGroup itself is a plain QObject. So
> this requirement looks very odd. If it does, there's a bug somewhere that
> needs reporting.

Good point, restored it as a QtObject - works fine, dunno why it hadn't worked for me initially. Thanks for pointing out

Daniel d'Andrada (dandrader) wrote :

Glad to hear it works inside a QtObject.

review: Abstain
Michael Terry (mterry) wrote :

Just tested this and it still works. Thanks for integrating the session-migration stuff and making the other changes. This looks good to me!

review: Approve
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2471
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/1714/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/2264
    FAILURE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=vivid+overlay,testname=qmluitests.sh/1218/console
    FAILURE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/1218/console
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=yakkety,testname=qmluitests.sh/1218
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/2292
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/2198
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/2198
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=yakkety/2198
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/2189
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/2189/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2189
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2189/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=yakkety/2189
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=yakkety/2189/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/2189
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/2189/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2189
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2189/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=yakkety/2189
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=yakkety/2189/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/2189
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/2189/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/2189
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/2189/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=yakkety/2189
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=yakkety/2189/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/1714/rebuild

review: Needs Fixing (continuous-integration)
2472. By Lukáš Tinkl on 2016-07-13

fixup failing tests

Albert Astals Cid (aacid) wrote :

Text conflict in plugins/Unity/Indicators/indicatorsmanager.cpp
1 conflicts encountered.

2473. By Lukáš Tinkl on 2016-07-14

merge trunk

Lukáš Tinkl (lukas-kde) wrote :

Merged trunk, resolved conflict and fixed up failing tests

Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2473
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/1845/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/2407
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=vivid+overlay,testname=qmluitests.sh/1303
    FAILURE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/1303/console
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=yakkety,testname=qmluitests.sh/1303
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/2435
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/2322
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/2322
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=yakkety/2322
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/2315
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/2315/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2315
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2315/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=yakkety/2315
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=yakkety/2315/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/2315
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/2315/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2315
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2315/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=yakkety/2315
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=yakkety/2315/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/2315
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/2315/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/2315
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/2315/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=yakkety/2315
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=yakkety/2315/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/1845/rebuild

review: Needs Fixing (continuous-integration)
2474. By Lukáš Tinkl on 2016-07-29

stabilize tests

2475. By Lukáš Tinkl on 2016-07-29

stabilize++

Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2474
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/1848/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/2411
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=vivid+overlay,testname=qmluitests.sh/1306
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/1306
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=yakkety,testname=qmluitests.sh/1306
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/2439
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/2326
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/2326
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=yakkety/2326
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/2319
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/2319/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2319
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2319/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=yakkety/2319
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=yakkety/2319/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/2319
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/2319/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2319
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2319/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=yakkety/2319
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=yakkety/2319/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/2319
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/2319/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/2319
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/2319/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=yakkety/2319
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=yakkety/2319/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/1848/rebuild

review: Needs Fixing (continuous-integration)
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2475
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/1850/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/2414
    FAILURE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=vivid+overlay,testname=qmluitests.sh/1308/console
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/1308
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=yakkety,testname=qmluitests.sh/1308
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/2442
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/2329
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/2329
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=yakkety/2329
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/2322
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/2322/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2322
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2322/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=yakkety/2322
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=yakkety/2322/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/2322
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/2322/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2322
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2322/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=yakkety/2322
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=yakkety/2322/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/2322
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/2322/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/2322
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/2322/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=yakkety/2322
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=yakkety/2322/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/1850/rebuild

review: Needs Fixing (continuous-integration)
Lukáš Tinkl (lukas-kde) wrote :

Tests likely failing in CI because of missing icons:

QWARN : qmltestrunner::IndicatorItemRow::test_validCurrentItem(row 1) file:///usr/lib/x86_64-linux-gnu/qt5/qml/Ubuntu/Components/1.3/Icon.qml:115:5: QML Image: Failed to get image from provider: image://theme/indicator-keyboard-Cs-1

2476. By Lukáš Tinkl on 2016-07-30

try with a generic icon

Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2476
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/1851/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/2415
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=vivid+overlay,testname=qmluitests.sh/1309
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/1309
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=yakkety,testname=qmluitests.sh/1309
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/2443
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/2330
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/2330
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=yakkety/2330
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/2323
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/2323/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2323
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2323/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=yakkety/2323
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=yakkety/2323/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/2323
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/2323/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2323
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2323/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=yakkety/2323
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=yakkety/2323/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/2323
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/2323/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/2323
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/2323/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=yakkety/2323
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=yakkety/2323/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/1851/rebuild

review: Needs Fixing (continuous-integration)
Lukáš Tinkl (lukas-kde) wrote :

All tests passing again, with the (known) exceptions in yakkety

2477. By Lukáš Tinkl on 2016-07-31

merge trunk

Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:2477
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/1852/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/2416
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=vivid+overlay,testname=qmluitests.sh/1310
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=qmluitests.sh/1310
    UNSTABLE: https://unity8-jenkins.ubuntu.com/job/test-0-autopkgtest/label=amd64,release=yakkety,testname=qmluitests.sh/1310
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/2444
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/2331
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/2331
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=yakkety/2331
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/2324
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/2324/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2324
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2324/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=yakkety/2324
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=yakkety/2324/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/2324
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/2324/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2324
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2324/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=yakkety/2324
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=yakkety/2324/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/2324
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/2324/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/2324
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/2324/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=yakkety/2324
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=yakkety/2324/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-unity8-ci/1852/rebuild

review: Needs Fixing (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'debian/control'
2--- debian/control 2016-07-22 07:42:41 +0000
3+++ debian/control 2016-07-31 17:02:58 +0000
4@@ -130,7 +130,8 @@
5 unity8-private | unity-launcher-impl,
6 ${misc:Depends},
7 ${shlibs:Depends},
8-Recommends: indicator-session,
9+Recommends: indicator-keyboard,
10+ indicator-session,
11 unity-scope-click,
12 unity-scope-mediascanner2,
13 Breaks: indicator-network (<< 0.5.1+14.10.20141014),
14
15=== modified file 'plugins/Unity/Indicators/indicatorsmanager.cpp'
16--- plugins/Unity/Indicators/indicatorsmanager.cpp 2016-06-08 21:52:16 +0000
17+++ plugins/Unity/Indicators/indicatorsmanager.cpp 2016-07-31 17:02:58 +0000
18@@ -114,10 +114,6 @@
19 QSettings indicator_settings(file_info.absoluteFilePath(), QSettings::IniFormat, this);
20 const QString name = indicator_settings.value(QStringLiteral("Indicator Service/Name")).toString();
21
22- if (m_platform.isPC() && name == QLatin1String("indicator-keyboard")) {
23- return; // convergence: skip this indicator until it works in Mir
24- }
25-
26 auto iter = m_indicatorsData.constFind(name);
27 if (iter != m_indicatorsData.constEnd())
28 {
29@@ -285,11 +281,13 @@
30
31 // convergence:
32 // 1) enable session indicator
33- // 2) on a PC, switch the battery/power indicator to desktop mode,
34+ // 2) enable keyboard indicator
35+ // 3) on a PC, switch the battery/power indicator to desktop mode,
36 // can't control brightness for now and phone-on-desktop broken (FIXME)
37 //
38 // The rest of the indicators respect their default profile (which is "phone", even on desktop PCs)
39 if ((new_indicator->identifier() == QStringLiteral("indicator-session"))
40+ || new_indicator->identifier() == QStringLiteral("indicator-keyboard")
41 || (new_indicator->identifier() == QStringLiteral("indicator-power") && m_platform.isPC())) {
42 new_indicator->setProfile(m_profile.replace(QStringLiteral("phone"), QStringLiteral("desktop")));
43 } else {
44
45=== modified file 'qml/Components/KeymapSwitcher.qml'
46--- qml/Components/KeymapSwitcher.qml 2016-04-04 13:38:56 +0000
47+++ qml/Components/KeymapSwitcher.qml 2016-07-31 17:02:58 +0000
48@@ -17,6 +17,7 @@
49 import QtQuick 2.4
50 import AccountsService 0.1
51 import GlobalShortcut 1.0
52+import QMenuModel 0.1
53 import Unity.Application 0.1
54
55 QtObject {
56@@ -36,7 +37,8 @@
57
58 readonly property var keymaps: AccountsService.keymaps
59 readonly property int keymapCount: keymaps.length
60- property int currentKeymapIndex: 0
61+ // default keymap, either the one remembered by the indicator, or the 1st one selected by user
62+ property int currentKeymapIndex: actionGroup.currentAction.valid ? actionGroup.currentAction.state : 0
63 readonly property string currentKeymap: keymaps[currentKeymapIndex]
64
65 function nextKeymap() {
66@@ -62,4 +64,28 @@
67 property: "keymap"
68 value: root.currentKeymap
69 }
70+
71+ // indicator
72+ property QDBusActionGroup actionGroup: QDBusActionGroup {
73+ busType: DBus.SessionBus
74+ busName: "com.canonical.indicator.keyboard"
75+ objectPath: "/com/canonical/indicator/keyboard"
76+
77+ property variant currentAction: action("current")
78+ property variant activeAction: action("active")
79+
80+ Component.onCompleted: actionGroup.start();
81+ }
82+
83+ onCurrentKeymapIndexChanged: {
84+ actionGroup.currentAction.updateState(currentKeymapIndex);
85+ }
86+
87+ readonly property int activeActionState: actionGroup.activeAction.valid ? actionGroup.activeAction.state : -1
88+
89+ onActiveActionStateChanged: {
90+ if (activeActionState != -1) {
91+ currentKeymapIndex = activeActionState;
92+ }
93+ }
94 }
95
96=== modified file 'qml/Panel/IndicatorItemRow.qml'
97--- qml/Panel/IndicatorItemRow.qml 2016-03-29 03:47:39 +0000
98+++ qml/Panel/IndicatorItemRow.qml 2016-07-31 17:02:58 +0000
99@@ -18,6 +18,10 @@
100 import QtQuick.Window 2.2
101 import Ubuntu.Components 1.3
102
103+// for indicator-keyboard
104+import AccountsService 0.1
105+import Unity.InputInfo 0.1
106+
107 Item {
108 id: root
109 width: row.width
110@@ -127,6 +131,11 @@
111 property bool forceAlignmentAnimationDisabled: false
112 }
113
114+ InputDeviceModel {
115+ id: keyboardsModel
116+ deviceFilter: InputInfo.Keyboard
117+ }
118+
119 onCurrentItemChanged: {
120 if (d.previousItem) {
121 d.firstItemSwitch = false;
122@@ -184,9 +193,11 @@
123
124 property int ownIndex: index
125 property bool overflow: row.width - x > overFlowWidth
126- property bool hidden: !expanded && (overflow || !indicatorVisible || hideSessionIndicator)
127+ property bool hidden: !expanded && (overflow || !indicatorVisible || hideSessionIndicator || hideKeyboardIndicator)
128 // HACK for indicator-session
129 readonly property bool hideSessionIndicator: identifier == "indicator-session" && Math.min(Screen.width, Screen.height) <= units.gu(60)
130+ // HACK for indicator-keyboard
131+ readonly property bool hideKeyboardIndicator: identifier == "indicator-keyboard" && (AccountsService.keymaps.length < 2 || keyboardsModel.count == 0)
132
133 height: row.height
134 expanded: root.expanded
135@@ -202,7 +213,7 @@
136 NumberAnimation { duration: UbuntuAnimation.SnapDuration; easing: UbuntuAnimation.StandardEasing }
137 }
138
139- width: ((expanded || indicatorVisible) && !hideSessionIndicator) ? implicitWidth : 0
140+ width: ((expanded || indicatorVisible) && !hideSessionIndicator && !hideKeyboardIndicator) ? implicitWidth : 0
141
142 Behavior on width {
143 NumberAnimation { duration: UbuntuAnimation.SnapDuration; easing: UbuntuAnimation.StandardEasing }
144
145=== modified file 'qml/Panel/Indicators/MenuItemFactory.qml'
146--- qml/Panel/Indicators/MenuItemFactory.qml 2016-05-20 08:43:45 +0000
147+++ qml/Panel/Indicators/MenuItemFactory.qml 2016-07-31 17:02:58 +0000
148@@ -985,6 +985,62 @@
149 }
150 }
151
152+ Component {
153+ id: keymapMenu;
154+
155+ // FIXME this should use a "radio button" menu, once we have it in the SDK
156+ ListItems.Empty {
157+ id: checkItem
158+ objectName: "keymapMenu"
159+ property QtObject menuData: null
160+ property int menuIndex: -1
161+ readonly property bool serverChecked: menuData && menuData.isToggled || false
162+
163+ enabled: menuData && menuData.sensitive || false
164+ highlightWhenPressed: false
165+ __acceptEvents: !serverChecked
166+
167+ CheckBox {
168+ id: checkbox
169+ __acceptEvents: !checkItem.serverChecked
170+ anchors {
171+ left: parent.left
172+ leftMargin: checkItem.__contentsMargins
173+ verticalCenter: parent.verticalCenter
174+ }
175+ }
176+
177+ ServerPropertySynchroniser {
178+ objectName: "sync"
179+ syncTimeout: Utils.Constants.indicatorValueTimeout
180+
181+ serverTarget: checkItem
182+ serverProperty: "serverChecked"
183+ userTarget: checkbox
184+ userProperty: "checked"
185+
186+ onSyncTriggered: {
187+ menuModel.activate(checkItem.menuIndex);
188+ }
189+ }
190+
191+ Label {
192+ id: label
193+ anchors {
194+ left: checkbox.right
195+ leftMargin: checkItem.__contentsMargins
196+ right: parent.right
197+ rightMargin: checkItem.__contentsMargins
198+ verticalCenter: parent.verticalCenter
199+ }
200+ elide: Text.ElideRight
201+ text: checkItem.menuData && checkItem.menuData.label || ""
202+ }
203+
204+ onClicked: menuModel.activate(menuIndex);
205+ }
206+ }
207+
208 function load(modelData, context) {
209 // tweak indicator-session items
210 if (context === "indicator-session") {
211@@ -995,6 +1051,15 @@
212 }
213 }
214
215+ // specialize for indicator-keyboard
216+ if (context === "indicator-keyboard") {
217+ if (modelData.isRadio) {
218+ return keymapMenu;
219+ } else if (modelData.action === "indicator.map" || modelData.action === "indicator.chart") {
220+ return null; // map and chart not available
221+ }
222+ }
223+
224 if (modelData.type !== undefined && modelData.type !== "") {
225 var component = undefined;
226
227
228=== modified file 'tests/mocks/Unity/Indicators/IndicatorsModel.qml'
229--- tests/mocks/Unity/Indicators/IndicatorsModel.qml 2015-07-15 15:07:19 +0000
230+++ tests/mocks/Unity/Indicators/IndicatorsModel.qml 2016-07-31 17:02:58 +0000
231@@ -16,12 +16,23 @@
232
233 import QtQuick 2.4
234 import Unity.Indicators 0.1 as Indicators
235+import Unity.InputInfo 0.1
236+import AccountsService 0.1
237
238 Indicators.FakeIndicatorsModel {
239 id: root
240
241 property var originalModelData: [
242 {
243+ "identifier": "indicator-keyboard",
244+ "indicatorProperties": {
245+ "enabled": true,
246+ "busName": "com.canonical.indicators.fake0",
247+ "menuObjectPath": "/com/canonical/indicators/fake0",
248+ "actionsObjectPath": "/com/canonical/indicators/fake0"
249+ }
250+ },
251+ {
252 "identifier": "fake-indicator-bluetooth",
253 "indicatorProperties": {
254 "enabled": true,
255@@ -74,13 +85,38 @@
256 "menuObjectPath": "/com/canonical/indicators/fake6",
257 "actionsObjectPath": "/com/canonical/indicators/fake6"
258 }
259+ },
260+ {
261+ "identifier": "fake-indicator-session",
262+ "indicatorProperties": {
263+ "enabled": true,
264+ "busName": "com.canonical.indicators.fake7",
265+ "menuObjectPath": "/com/canonical/indicators/fake7",
266+ "actionsObjectPath": "/com/canonical/indicators/fake7"
267+ }
268 }
269 ]
270
271+ Component.onCompleted: {
272+ // init data for the fake indicator-keyboard
273+ MockInputDeviceBackend.addMockDevice("/indicator_kbd0", InputInfo.Keyboard);
274+ AccountsService.keymaps = ["us", "cs"];
275+ }
276+
277+ Component.onDestruction: {
278+ MockInputDeviceBackend.removeDevice("/indicator_kbd0");
279+ AccountsService.keymaps = ["us"];
280+ }
281+
282 function load(profile) {
283 unload();
284 root.modelData = originalModelData;
285
286+ Indicators.UnityMenuModelCache.setCachedModelData("/com/canonical/indicators/fake0",
287+ getUnityMenuModelData("indicator-keyboard",
288+ "Czech (F)",
289+ "",
290+ [ "image://theme/input-keyboard-symbolic" ]));
291 Indicators.UnityMenuModelCache.setCachedModelData("/com/canonical/indicators/fake1",
292 getUnityMenuModelData("fake-indicator-bluetooth",
293 "Bluetooth (F)",
294@@ -111,6 +147,11 @@
295 "Upcoming Events (F)",
296 "12:04",
297 []));
298+ Indicators.UnityMenuModelCache.setCachedModelData("/com/canonical/indicators/fake7",
299+ getUnityMenuModelData("fake-indicator-session",
300+ "System (F)",
301+ "",
302+ ["image://theme/system-devices-panel"]));
303 }
304
305 function getUnityMenuModelData(identifier, title, label, icons) {
306@@ -173,6 +214,5 @@
307 break;
308 }
309 }
310-
311 }
312 }
313
314=== modified file 'tests/qmltests/Panel/tst_IndicatorItemRow.qml'
315--- tests/qmltests/Panel/tst_IndicatorItemRow.qml 2016-03-29 03:47:39 +0000
316+++ tests/qmltests/Panel/tst_IndicatorItemRow.qml 2016-07-31 17:02:58 +0000
317@@ -21,6 +21,8 @@
318 import Ubuntu.Components 1.3
319 import Unity.Test 0.1 as UT
320 import Unity.Indicators 0.1 as Indicators
321+import AccountsService 0.1
322+import Unity.InputInfo 0.1
323
324 IndicatorTest {
325 id: root
326@@ -194,7 +196,7 @@
327 verify(dataItem !== null);
328
329 indicatorsRow.selectItemAt(dataItem.x + dataItem.width/2);
330- compare(indicatorsRow.currentItem, dataItem);
331+ tryCompare(indicatorsRow, "currentItem", dataItem);
332 }
333
334 // tests item default selection (no item at position X)
335@@ -285,5 +287,28 @@
336 // should go back to 0
337 tryCompare(findChild(indicatorsRow, "highlight"), "highlightCenterOffset", 0);
338 }
339+
340+ function test_hidingKeyboardIndicator_data() {
341+ return [
342+ { tag: "No keyboard, no keymap", keyboard: false, keymaps: [], hidden: true },
343+ { tag: "No keyboard, one keymap", keyboard: false, keymaps: ["us"], hidden: true },
344+ { tag: "No keyboard, 2 keymaps", keyboard: false, keymaps: ["us", "cs"], hidden: true },
345+ { tag: "Keyboard, no keymap", keyboard: true, keymaps: [], hidden: true },
346+ { tag: "Keyboard, one keymap", keyboard: true, keymaps: ["us"], hidden: true },
347+ { tag: "Keyboard, 2 keymaps", keyboard: true, keymaps: ["us", "cs"], hidden: false }
348+ ];
349+ }
350+
351+ function test_hidingKeyboardIndicator(data) {
352+ var item = findChild(indicatorsRow, "indicator-keyboard-panelItem");
353+ AccountsService.keymaps = data.keymaps;
354+ if (data.keyboard) {
355+ MockInputDeviceBackend.addMockDevice("/indicator_kbd0", InputInfo.Keyboard);
356+ } else {
357+ MockInputDeviceBackend.removeDevice("/indicator_kbd0");
358+ }
359+
360+ compare(item.hidden, data.hidden);
361+ }
362 }
363 }
364
365=== modified file 'tests/qmltests/Panel/tst_IndicatorsBar.qml'
366--- tests/qmltests/Panel/tst_IndicatorsBar.qml 2015-07-15 15:13:18 +0000
367+++ tests/qmltests/Panel/tst_IndicatorsBar.qml 2016-07-31 17:02:58 +0000
368@@ -136,6 +136,7 @@
369 }
370
371 function wait_for_expansion_to_settle() {
372+ waitUntilTransitionsEnd(indicatorsBar);
373 tryCompare(heightAnimation, "running", false);
374 wait(UbuntuAnimation.SnapDuration); // put a little extra wait in for things to settle
375 }
376@@ -151,7 +152,6 @@
377 indicatorsBar.expanded = true;
378 wait_for_expansion_to_settle();
379
380-
381 // mappedPosition contained within mappedRect
382 tryCompareFunction(function() {
383 var mappedRect = indicatorsBar.mapFromItem(dataItem, 0, 0, dataItem.width, dataItem.height);
384@@ -203,8 +203,8 @@
385
386 function test_visibleIndicators_data() {
387 return [
388- { visible: [true, false, true, false, true, true] },
389- { visible: [false, false, false, false, false, false] }
390+ { visible: [true, false, true, false, true, true, false, true] },
391+ { visible: [false, false, false, false, false, false, true, false] }
392 ];
393 }
394
395
396=== modified file 'tests/qmltests/Panel/tst_IndicatorsMenu.qml'
397--- tests/qmltests/Panel/tst_IndicatorsMenu.qml 2016-06-15 14:36:15 +0000
398+++ tests/qmltests/Panel/tst_IndicatorsMenu.qml 2016-07-31 17:02:58 +0000
399@@ -219,8 +219,8 @@
400 mappedPosition.x, indicatorsMenu.openedHeight / 2,
401 true /* beginTouch */, false /* endTouch */);
402
403- compare(indicatorItemRow.currentItem, indicatorItem,
404- "Incorrect item activated at position " + i);
405+ tryCompare(indicatorItemRow, "currentItem", indicatorItem, undefined /*timeout, default */,
406+ "Incorrect item activated at position " + i);
407
408 touchFlick(indicatorItemRow,
409 mappedPosition.x, indicatorsMenu.openedHeight / 2,
410@@ -265,7 +265,8 @@
411 false /* beginTouch */, false /* endTouch */,
412 units.gu(50) /* speed */, 5 /* iterations */); // more samples needed for accurate velocity
413
414- compare(indicatorItemRow.currentItem, firstItem, "First indicator should still be the current item");
415+ tryCompare(indicatorItemRow, "currentItem", firstItem, undefined /* timeout, default */,
416+ "First indicator should still be the current item");
417 // after waiting in the same spot with touch down, it should update to the next item.
418 tryCompare(indicatorItemRow, "currentItem", nextItem);
419
420
421=== modified file 'tests/qmltests/tst_OrientedShell.qml'
422--- tests/qmltests/tst_OrientedShell.qml 2016-06-30 19:04:19 +0000
423+++ tests/qmltests/tst_OrientedShell.qml 2016-07-31 17:02:58 +0000
424@@ -1117,6 +1117,7 @@
425
426 function test_attachRemoveInputDevices(data) {
427 loadShell("mako")
428+ MockInputDeviceBackend.removeDevice("/indicator_kbd0");
429 var shell = findChild(orientedShell, "shell");
430 var inputMethod = findChild(shell, "inputMethod");
431

Subscribers

People subscribed via source and target branches