=== chriadam|away is now known as chriadam
=== chihchun_afk is now known as chihchun
zbenjamindidrocks: you here :D07:07
=== chihchun is now known as chihchun_afk
didrockszbenjamin: yep! :)07:13
zbenjamindidrocks: hey sorry, i was on holiday07:22
didrockszbenjamin: no worry! I hope you enjoyed them :)07:24
zbenjamindidrocks: yeps :D it was good07:24
zbenjamindidrocks: i saw you spent some quality time with the sdk07:30
didrockszbenjamin: heh, quite some yeah :)07:35
didrockszbenjamin: so, is my conclusion correct, you need to fiddle yourself with subdirectories?07:35
didrockszbenjamin: so doing something like this: https://github.com/didrocks/splitthebill/commit/11fd9cd1d399539597f186b5e94ef207abfdd98607:36
zbenjamindidrocks: yes, thats your responsibility with all qmake projects07:46
didrockszbenjamin: not really dev friendly I guess, especially as the ide is adding them directly (see the deletions)07:47
zbenjamindidrocks: thats true. But you can not assume that srcdir == installdir.07:47
zbenjaminI guess they just wanted to assume nothing07:48
didrockszbenjamin: in some way, they do assume that even if you put files in a subdirectory, you want a flat structure when deploying though07:54
didrocks(which IMHO makes less sense that leaving files with the same dir structure)07:54
kenvandinerpadovani, looking forward to falldown hitting the store!07:59
=== _salem is now known as salem_
=== chriadam is now known as chriadam|away
zbenjamindidrocks: yeah for QML at least08:29
zbenjamindidrocks: there should be proper QML support in qmake08:29
didrocksagreed :)08:31
nik90zsombi: ping10:47
zsombinik90: ong11:09
zsombip+ :D11:11
zsombinik90: so, whazzup?11:11
nik90zsombi: I need some brainstorming help with https://bugs.launchpad.net/ubuntu-clock-app/+bug/148843911:12
ubot5Ubuntu bug 1488439 in Ubuntu Clock App "Editing alarms re-orders them but the list view isn’t updated" [High,Confirmed]11:12
nik90zsombi: shouldn' the listview automatically update when the data model changes?11:12
nik90it should be a Notifyable  property informing qml of the changes made to the backend and update the labels? Or do I have to manually call for alarmModel refresh() ?11:13
zsombinik90: yes, it should, the only reason it doesn't may be that the date chaneg doesn't seem to be reported as position change on the alarm cache...11:13
nik90hmm, anyway I can detect this?11:13
nik90like using onModelReset or any other signal?11:14
zsombinik90: if you don't get any signal from the ListView, then the cache did not refresh11:14
zsombinik90: I think that one...11:14
nik90ok, so in the alarm list page, I will have onModelReset: refresh() to recreate the cache.11:15
nik90zsombi: https://code.launchpad.net/~nik90/ubuntu-clock-app/fix-alarm-list-refresh/+merge/26904711:29
=== salem_ is now known as _salem
=== MacSlow is now known as MacSlow|lunch
zsombinik90: nice :)12:20
nik90zsombi: the one minor inconvenience was that I had to pass the entire alarmModel to the edit alarm page as an argument. Although that's fine I suppose12:22
zsombinik90: it is, as long as the model exists till teh entire lifetime of the page, beside, it only passes the reference, doesn't copy the model, so... :)12:23
nik90zsombi: indeed. I need to be careful about when I refresh the alarmModel indeed. We just fixed https://bugs.launchpad.net/bugs/1487789 few days back that scared the shit out of me.12:24
ubot5Ubuntu bug 1487789 in Ubuntu Clock App "Edited alarm cannot be saved if any point clock app loses focus" [Critical,Fix committed]12:24
zsombipopey: ^^^ nik90 fixed the bug ;)12:24
popeyzsombi: nik90 is awesome.12:25
nik90lol :D12:25
zsombiwe knew that ;)12:25
nik90oh stop it guys ;)12:25
zsombit1mp: could you give an eye one more time on the cppAbstractButton MR pls?12:26
zsombikalikiana: ^12:26
zsombiyou as well12:26
nik90zsombi: could you quickly add a comment approving the MR from a code-review perspective. I can then get it merged later today.12:27
zsombinik90: I don' thave right to approve it, but yes, I can comment12:40
maggotsanyone alive12:41
zsombinik90: commented12:42
nik90zsombi: thnx, I or bartosz can top-approve once we do some more manual testing.12:42
zsombievrrybody is alive :)12:42
t1mpzsombi: normally, an app dev would set onTriggered: {...} for an AbstractButton, and not override the trigger() function, right?12:43
zsombit1mp: yes...12:44
zsombit1mp: but, if you want to override the default trigger sequence, you would have to do it like that12:45
t1mpzsombi: so if the abstract has an action, but you do not want that action triggered when you click the button?12:46
t1mpweird use case ;)12:46
zsombit1mp: or you want to delay the action triggering, like we do in ListItem's case12:46
t1mps/abstract/abstract button12:46
maggotsi have a proble i uploaded version 0.1 to the app store and now i'm ready for version 0.2 what do i need to change for it to build the new package?12:47
t1mpzsombi: delay? in which way? time?12:48
t1mpzsombi: are you talking about old or new list items?12:48
zsombit1mp: don't tell me you haven't seen the ListItem code :D12:48
zsombit1mp: new ListItems of course12:48
zsombit1mp: we must delay the action triggering in teh leading/trailing actions12:48
zsombit1mp: they should be triggered once the animation is over, remember?12:49
zsombit1mp: if I do not override AbstractButton.trigger(), then the action will be triggered immediately12:49
zsombit1mp: and if the action deletes the item, the UI will crash12:50
zsombit1mp: because there will be an ongoing animation to snap the ListItem's panel out12:50
zsombit1mp: but you approved this feature of trigger() overriding before, am surprised we are reloading the talks about it now :)12:52
t1mpI'm not against it, but I did need to refresh my memory12:53
zsombit1mp: you scared me :D12:53
t1mpzsombi: I think now the update to Empty.qml in 1.2 can be reverted12:59
zsombit1mp: I thought I did...13:00
t1mpzsombi: so when you register a component from cpp, it automatically overrides the qml version?13:00
zsombit1mp: yes13:00
t1mpcool. That may become even more useful in the future :)13:00
zsombit1mp: the qmldir is there just to automate the call of qmlRegisterType() fo ryou13:01
t1mpzsombi: https://code.launchpad.net/~zsombi/ubuntu-ui-toolkit/cppAbstractButton/+merge/268442 l.22213:01
zsombit1mp: we can even stop a type from being exported in certain version onwards13:01
zsombit1mp: yes, I saw it, I'll push an update as long as you confirm nothing else needs to be fixed on the branch13:02
t1mpzsombi: yes it is good. Should we wait for kalikiana too?13:02
zsombit1mp: I dunno... we basically discussed this thing I just implemented there13:03
kalikianalast I checked there's still some 1.2 stuff that's unecessary, in the list item and some import changes13:04
kalikianaby the looks of it that will be fixed?13:04
zsombikalikiana: which ones are?13:04
kalikianazsombi: CheckBox, ComboButton, TextField13:05
zsombikalikiana: for 1.2 Checkbox and ComboButton we need thiose imports, I am getting ambiguous errors otherwise13:05
zsombisame for text field13:05
kalikianazsombi: oh. why? if they're using the same QML as before..13:05
zsombikalikiana: perhaps the different type import for 1.3 messes it up... lemme check again13:05
kalikianazsombi: hmm I guess if QML is being funny is fine - I'd just try to avoid unnecessary changes in 1.2 if possible13:06
zsombikalikiana: sure, +1 on that, let me check again13:06
zsombikalikiana: the nice thing is that qmlapicheck does the job for me now ;)13:07
zsombikalikiana: seems to be fine without 1.2 imports13:07
zsombikalikiana: I guess I had them dues to full cpp button... :)13:08
zsombikalikiana: t1mp: pushed an update, rolling back 1.2 changes13:10
zsombit1mp: kalikiana: so, should ActionContext.active work same way as the Item.enabled does?13:20
kalikianazsombi: in what sense?13:22
kalikianaare you talking about making it dependent on parents?13:23
zsombikalikiana: in a sense that if the parent ActionContext is deactivated, all its child ActionContexts shousl also be deactivated13:23
kalikianawe need that behavior13:23
zsombikalikiana: state being reflected thru teh action property13:23
zsombikalikiana: it gets deactivated, it's just not reported thru teh actuve property13:24
kalikianazsombi: yeah13:24
zsombikalikiana: so the actions added to these child ActionContexts won't get triggered in these cases, but the active property will still say true13:25
zsombikalikiana: I thought so... so, I think then we have a problem of that being override :)13:25
zsombikalikiana: same way as the enabled or visible13:25
zsombidamn it, I have 2sec lag time in chat!!!13:26
zsombikalikiana: so, the thing is, when an Item's enabled has a binding, and its parent gets disabled, the enabled will change, but the binding won't get broken13:27
zsombikalikiana: which means that if the binding is reevaluated, the enabled will be set back13:27
zsombikalikiana: same with visible13:27
kalikianazsombi: well, from my point of view we don't really need the magical properties here. if you need to know if a context blocks an action you can ask the context about that13:27
zsombikalikiana: sure, internally we do actually13:28
zsombikalikiana: its just shoudl we reflect this tru the active property or not... that's the only question13:28
kalikianazsombi: we need to ensure trigger() respects its context - there's no requirement beyond that. even a custom component wouldn't care so long as it simply calls that function13:30
kalikianathe only other aspect would be hotkey registration which probably should depend on whether the context is active13:31
kalikianaie. if you have a shortcut ^X in two contexts one of which is enabled, it shouldn't clash13:31
zsombikalikiana: I think the shortcut registration can proceed no matter of what, the shortcut matcher otoh takes into account whether the action is activable or not, if not, then won't return the match13:32
zsombikalikiana: so in this sense if we have two actions with the same shortcut, and one is activable other si not, only teh activable will be selected13:32
kalikianazsombi: yep, if that respects the context state that's all we need13:33
kalikianaand then there's no need for the action itself to magically change property values13:33
zsombikalikiana: right, what I'm trying to sort out with you si the ActionContext.active state :)13:35
zsombikalikiana: so if we want that to follow the same setup as Item.enabled/visible, then we may run into the same problemas Item.enabled/visible does13:36
kalikianazsombi: oh, you mean having the context change its property value13:36
kalikianaI was thinking only of the action above13:36
zsombikalikiana: actually I was only talking about the context :)13:36
zsombikalikiana: like if you change the enabled/visible of a parent item, that affects the child items' properties as well13:37
kalikianazsombi: right. my stance is the same, though. I don't find the semantics of those magical properties very nice to work with13:37
zsombikalikiana: now, if the child items do have bindings on these, those change these back eventually13:37
kalikianait breaks bindings and makes it difficult to know what the real value is13:37
zsombikalikiana: the thing is that the enabled is handled behind teh scenes and bindings stay!13:38
kalikianazsombi: well, yes, but you still get different values than you should, and you can't know the real state anymore13:39
kalikianazsombi: I would like it if there was a way to actually know both13:40
kalikianazsombi: it's also very specialized - rotation doesn't work in this way13:40
kalikianayou change the value, things move around, and the value is the same13:41
zsombikalikiana: let me get to a meeting, and we get back to it13:41
zsombikalikiana: we could have active, and effectiveActive props, what do you think? effectiveActive would be RO, so no binding on it would be doable13:48
zsombikalikiana: active would mean the local active, would not collide with the parent actives at all, and wouldn't be driven by that either13:49
kalikianazsombi: the question is, what's the use case for it?13:54
=== _salem is now known as salem_
davmor2popey: I found out why some of the apps from the ppa weren't opening.  They rely on Ubuntu.component 1.3 which is wily, that would explain why it worked for you and not me too I guess right?14:26
davmor2popey: I upgraded today and they all open now :)  Calendar refuses to accept my Google account which makes it a bit meh :(14:27
DS-McGuireAnnouncing Ubuntu Themed Days - Looking for feedback: https://www.reddit.com/r/UbuntuAppDev/comments/3ic48m/announcing_ubuntu_themed_days_looking_for_feedback/14:47
zsombikalikiana: back now....14:58
zsombit1mp: kalikiana: we are going to have a real palette FINALLY!!!14:58
popeydavmor2: yes, I'm on wily14:59
kalikianazsombi: my last question wrt ActionContext was, what use case are we looking at for effectiveActive? if we only sort it out internally we don't necessarily want API15:00
zsombikalikiana: so, the only use case for effectiveActive I see is testing, however that one can be handled thru triggering actions and not getting any trigger count on the signal sspy15:00
zsombikalikiana: right, so I'd then skip it for now until further notice15:01
kalikianayeah. I'd expect tests to only test the expected value anyway - there's no need for conditions15:01
zsombikalikiana: yes, I do the testing like that now15:01
zsombikalikiana: one more thing, I turned ActionContext into Item, the property lookup was really slow... so now those who want to group actions can use the ActionContext, and it is also a focus scope to propagate focusing15:02
zsombit1mp: kalikiana: we got 4 color sets, normal, selected, hovered and disabled, and few more palette value names: positive, negative, active, position15:04
zsombit1mp: kalikiana: and finally we are going to use these values in the UI spec!!!!!!!!!!!15:04
kalikianazsombi: erm, what about focussed?15:05
zsombikalikiana: that will be potentially a simple color apart from the palette, as it only happens on components which are focused15:06
zsombikalikiana: so the visual component doing the focusing will need to be subtyped in themes if they need different color15:07
zsombikalikiana: or, we put it as color in the Palette, without being included in any color value set, I think this would be much better15:07
zsombikalikiana: in this way the Palette will have normal, selected, hovered, disabled value sets and focus + focusText pair15:08
zsombikalikiana: however we may not even need focusText for now...15:11
kalikianazsombi: how is focus different to say selected? you select text and the component assumes focus styling, with the text changing colors15:11
kalikianathat seems reverse to what you're saying15:11
zsombikalikiana: the focus frame will be shown around a text input, and then the selected text will be colored differently, just like now15:11
kalikianazsombi: yes. but that means selected isn't a state at all, but focus is15:13
zsombikalikiana: hmm.... actually you're right! the selected is actually the focus...15:13
zsombikalikiana: or... hold on, no15:14
zsombikalikiana: there will be a state in some components, called selected15:14
zsombikalikiana: we're gonna use the color set on those components, the focus is focus + normal15:14
* zsombi double checks15:15
kalikianazsombi: I'm kind of wondering how these categories are defined. for example normal=enabled/sleeping disabled=!enabled hovered=mouse within the component.... so why isn't focus=activeFocus in the same league as those other folks?15:16
didrocksjdstrand: hey, I was wondering if the user denied some permissions, like the location one for an app. Is there an easy way for the app itself to know about it? (like showing two label, one "no location available" if no GPS is available and another "location is denied for this application")?15:18
ogra_didrocks, i guess thats a tvoss question, that stuff should be handled by the trust-store15:19
didrocksah, I'm happy to relay :)15:19
jdstrandthere is not a way for the app to specifically ask if it has permission that I know of. it depends on what APIs the service in question offers15:19
didrocksjdstrand: yeah, for location is just seem that no signal will be sent for instance, but that can also mean we didn't get any GPS fix15:20
jdstrandeg, does location service provide an api for the app to see if it has access. (I don't think it does)15:20
didrocksyep, that's exactly it15:20
didrocksthanks ogra_, jdstrand!15:21
aquariusjdstrand, ping about manual review of apps :)15:32
=== MacSlow|lunch is now known as MacSlow
=== chihchun_afk is now known as chihchun
=== chihchun is now known as chihchun_afk
zsombikalikiana: you mean the colors?15:58
zsombimzanetti: ping15:58
zsombikalikiana: t1mpso, I can happrove https://code.launchpad.net/~zsombi/ubuntu-ui-toolkit/cppAbstractButton/+merge/268442?16:00
zsombit1mp: ^16:00
kalikianazsombi: yes, as far as I16:01
kalikiana'm concerned16:01
zsombikalikiana: thx16:01
zsombikalikiana: t1mp was waiting on your approval16:01
kalikianaoh. but I already approved on lp16:01
kalikianasorry about that16:02
zsombikalikiana: np, I happroved it now, thx + t1mp16:02
zsombikalikiana: so, back to colors...16:02
kalikianazsombi: yes wrt the colors. it's unclear to me how selected warrants a category in the palette, but focus doesn't16:02
zsombikalikiana: so, selected == focus16:03
zsombikalikiana: and we may get an outline + text color pair there to handle the focus coloring of the components16:03
kalikianazsombi: well, there's possibly two things we call selected, so we should try to avoid ambiguity here16:03
kalikianayou can select text - different colors16:04
kalikianayou can select list items16:04
zsombikalikiana: the text selection is called position...16:04
kalikianayou can select, as in focus16:04
zsombikalikiana: the list item selection is made thru checkboxes16:04
kalikianazsombi: position?16:04
zsombikalikiana: perhaps a bit different, I do n't remember by heart, but we can ammend that16:05
kalikianazsombi: I get the feeling if we're not careful the only way to talk about the palette will be with a cheatsheet that shows what the terms mean..16:06
zsombikalikiana: then we will have different selections in different components as well, so..16:06
zsombikalikiana: I second to that :) it's just we cannot really change the palette value set names like that...16:07
kalikianaselection styling depends on the component, just like focus does, that is fine16:07
kalikianathe question is if there is a color that'll be shared - or will selection in that way always be based on other things16:08
zsombikalikiana: yes, the text selection will also be used in file manager's selection too... potentially...16:08
zsombiI mean colors16:08
zsombikalikiana: which is why the "position" was added16:09
zsombikalikiana: it's just badly named16:09
zsombikalikiana: sees UX doc end16:09
kalikianazsombi: thing is nobody would ever say "I postioned a few files, now how do I copy them" ;-)16:10
zsombikalikiana: LOL exactly... and they really call it as16:10
kalikianazsombi: so if "position" means selection in plan english, what does "selection" translate to?16:11
zsombikalikiana: just commented on it :D16:12
zsombikalikiana: + the "active" seems to be the color they use in focus highlighting...16:13
kalikianaah found it in the doc now16:14
kalikianaokay, so position is even described as selection...16:14
zsombiright :D16:16
mzanettizsombi, pong16:25
zsombimzanetti: remember the mouse/keyboard detection thingie?16:25
zsombimzanetti: or you had sthing comitted upstream which would do some enumeration for these, right?16:26
zsombikalikiana: one more question, do you prefer overlay action context or modal action context naming?16:29
zsombikalikiana: maybe we don't even want to exose this...16:31
zsombikalikiana: but drive it from the Dialog in some way...16:31
zsombimzanetti: do you know what I'm talking about?16:32
mzanettizsombi, yes16:38
zsombimzanetti: aaaaand? :)16:38
=== salem_ is now known as _salem
davmor2popey: coreapps ppa will all the apps get rebuilt for wily?19:14
popeydavmor2: possibly19:25
=== ahayzen_ is now known as ahayzen
aquariusHm. How do I use i18n.tr to indicate a translation on an HTML string? I have, for example, the string "Hello, this is the <b>world</b>"; how do I express that in an i18n.tr-able form so that it can be translated? I don't want to do i18n.tr("Hello, you are the") + "<b>" + i18n.tr("world") + "</b>" because then someone translating won't get the whole sentence in one go (and so won't know which gender to put the21:51
aquarius "the" in)21:51
ahayzenaquarius, you could put a // TRANSLATORS: comment on the line before which then shows in LP, like we do in the music-app here http://bazaar.launchpad.net/~music-app-dev/music-app/refactor/view/head:/app/components/Helpers/UserMetricsHelper.qml#L30 this then appears like this https://translations.launchpad.net/music-app/refactor/+pots/com.ubuntu.music/en_GB/25/+translate21:57
aquariusahayzen, I could, but then the comment would have to say "be careful to keep all the HTML formatting in place or you'll break everything" :-)21:57
aquariuswhich I don't really wanna do21:58
aquariuswhat I *want* to do is this: i18n.tr("Hello, your port is number %1".replace("%1", "<b>%1</b>")).arg(port);22:00
aquariusbut I bet that doesn't work right because it's not a plain string inside the i18n.tr call so the thing which parses the QML file won't get it correctly.22:01
aquariusand I can't replace it *afterwards* (that is, i18n.tr("Port is %1 or maybe %2").arg(port1,port2).replace(port1, "<b>"+port1+"</b>").replace(port2, "<b>"+port2+"</b>") because port1 might be a substring of port222:03
ahayzenoo that looks like the tag() thing we never got working https://developer.ubuntu.com/api/apps/qml/sdk-15.04/Ubuntu.Components.i18n/#tag-method22:06
aquariusya, I was right, I can't do clever things inside an i18n.tr call.22:11
aquariusactually... maybe I can.22:17
aquariusha haaaa!22:19
aquariusno, wait.22:20
aquariusdarn it.22:21
aquariusmy trick won't work.22:21
mcphailaquarius: you can have a function as the 2nd argument to String.replace, so you don't have to rely on the dumb defaults to do the replacement (and hence getting mixed up with substrings)22:24
aquariusmcphail, the problem is that I don't know what to replace.22:24
aquariusI would like the output string to be: <p>Hello, your number is 31</p>. I have a variable, n, which is set to 31. What should my i18n.tr line be?22:25
* mcphail looks up his javascript book22:26
aquariusClearly the string that goes to translators should be "Hello, your number is 31" (with no HTML in it).22:26
aquarius(er, sorry, the output string should be <p>Hello, your number is <b>31</b></p>22:28
aquariusi18n.tr("Hello, your number is %1").arg(n).replace("%1", "<b>%1</b>") doesn't work because there's no %1 in the string by the time the replace runs22:29
aquariusi18n.tr("Hello, your number is %1").replace("%1", "<b>%1</b>").arg(n) doesn't work because replace doesn't return a magic thing with a .arg method, it just returns a string22:30
aquariusi18n.tr("Hello, your number is %1".replace("%1", "<b>%1</b>")).arg(n) doesn't work because it won't find a match to translate22:30
mcphailaquarius: what about i18n.tr("Port is do_not_translate_this_placeholder_1 or maybe do_not_translate_this_placeholder_2").replace(/do_not_translate_this_placeholder_1/, "<b>"+n1+"</b>").replace(/...etcetc22:30
mcphailugly but might work22:31
aquariusthen I'm doing the substitutions myself rather than i18n.tr doing them22:31
aquariusI suppose since it's just a port number, I could do that22:31
mcphailaquarius: can't see how a port number would be internationalised. Different if it was something with a decimal point or whatever22:32
aquariusso, "your port is $PORT$" with a translator comment of "do not translate the $PORT$, just put it where the port number would be"22:32
mcphailMight well work22:33
mcphailaquarius: I'm sure the GNU gettext manual has a section on best practice for this kind of thing...22:34
mcphailaquarius: "HTML markup, however, is common enough that it’s probably ok to use in translatable strings.", according to GNU anyway22:41
aquariusright. I don't believe that :)22:41
aquariusI do not want translators to have to understand markup22:42
mcphailaquarius: fair enough, but at least you can quote a source which says it is OK :) http://www.gnu.org/software/gettext/manual/html_node/Preparing-Strings.html#Preparing-Strings22:42
aquariusespecially since if they, for example, translate <p><font size="7">Hello</font></p> to <p><font size="7>Bonjour</font></p> by accident then it will completely break the app22:42

Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!