From 64c5b6087eeedfc65737cb2f1b2df0bb5a5e02c5 Mon Sep 17 00:00:00 2001 From: Yorick-Ryu <2524964538@qq.com> Date: Thu, 12 Jan 2023 13:10:17 +0800 Subject: [PATCH] Build packages for Android and Windows --- LICENSE | 2 +- README.md | 2 +- .../sharednotes/ui/screen/NotesScreen.kt | 24 ++++++++++--- .../sharednotes/ui/note/NoteListScreen.kt | 2 +- .../sharednotes/ui/screen/NotesScreen.kt | 19 +++++++--- desktop/LICENSE | 21 +++++++++++ desktop/build.gradle.kts | 34 ++++++++++++++++-- desktop/img/ic_launcher.icns | Bin 0 -> 7338 bytes desktop/img/ic_launcher.ico | Bin 0 -> 69694 bytes desktop/img/ic_launcher.png | Bin 0 -> 3738 bytes .../jvmMain/resources/img/ic_launcher.icns | Bin 0 -> 7338 bytes .../src/jvmMain/resources/img/ic_launcher.ico | Bin 0 -> 69694 bytes .../src/jvmMain/resources/img/ic_launcher.png | Bin 0 -> 3738 bytes img/ic_launcher.icns | Bin 0 -> 7338 bytes img/ic_launcher.ico | Bin 0 -> 69694 bytes img/ic_launcher.png | Bin 0 -> 3738 bytes 16 files changed, 91 insertions(+), 13 deletions(-) create mode 100644 desktop/LICENSE create mode 100644 desktop/img/ic_launcher.icns create mode 100644 desktop/img/ic_launcher.ico create mode 100644 desktop/img/ic_launcher.png create mode 100644 desktop/src/jvmMain/resources/img/ic_launcher.icns create mode 100644 desktop/src/jvmMain/resources/img/ic_launcher.ico create mode 100644 desktop/src/jvmMain/resources/img/ic_launcher.png create mode 100644 img/ic_launcher.icns create mode 100644 img/ic_launcher.ico create mode 100644 img/ic_launcher.png diff --git a/LICENSE b/LICENSE index a7920ae..c21cf29 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2023 Ruiyu +Copyright (c) 2023 Rui Yu Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 9ef1ebf..77921c8 100644 --- a/README.md +++ b/README.md @@ -110,7 +110,7 @@ categories and tags (not implemented) is supplied by Categories and Tags. ``` MIT License -Copyright (c) 2023 Ruiyu +Copyright (c) 2023 Rui Yu Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/common/src/androidMain/kotlin/com/yorick/sharednotes/ui/screen/NotesScreen.kt b/common/src/androidMain/kotlin/com/yorick/sharednotes/ui/screen/NotesScreen.kt index 96e84f3..76aba2c 100644 --- a/common/src/androidMain/kotlin/com/yorick/sharednotes/ui/screen/NotesScreen.kt +++ b/common/src/androidMain/kotlin/com/yorick/sharednotes/ui/screen/NotesScreen.kt @@ -2,6 +2,7 @@ package com.yorick.sharednotes.ui.screen import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.rememberLazyListState +import androidx.compose.foundation.rememberScrollState import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Edit import androidx.compose.material3.FloatingActionButton @@ -9,6 +10,7 @@ import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource @@ -23,6 +25,7 @@ import com.yorick.sharednotes.ui.note.NoteListScreen import com.yorick.sharednotes.ui.note.NotesSinglePaneContent import com.yorick.sharednotes.ui.utils.SharedNotesContentType import com.yorick.sharednotes.ui.utils.SharedNotesNavigationType +import kotlinx.coroutines.launch @Composable fun NoteScreen( @@ -41,7 +44,8 @@ fun NoteScreen( closeDetailScreen() } } - + val stateVertical = rememberScrollState() + val scope = rememberCoroutineScope() val noteLazyListState = rememberLazyListState() if (contentType == SharedNotesContentType.DUAL_PANE) { @@ -50,7 +54,12 @@ fun NoteScreen( NoteListScreen( notes = notesUIState.notes, noteLazyListState = noteLazyListState, - navigateToDetail = navigateToDetail, + navigateToDetail = { id, type -> + scope.launch { + stateVertical.animateScrollTo(0) + } + navigateToDetail(id, type) + }, tagsGrid = tagsGrid ) }, @@ -58,7 +67,8 @@ fun NoteScreen( NoteDetailScreen( note = notesUIState.selectedNote ?: notesUIState.notes.first(), isFullScreen = false, - addNote = addNote + addNote = addNote, + stateVertical = stateVertical ) }, strategy = HorizontalTwoPaneStrategy(splitFraction = 0.5f, gapWidth = 0.dp), @@ -71,8 +81,14 @@ fun NoteScreen( noteLazyListState = noteLazyListState, modifier = Modifier.fillMaxSize(), closeDetailScreen = closeDetailScreen, - navigateToDetail = navigateToDetail, + navigateToDetail = { id, type -> + scope.launch { + stateVertical.animateScrollTo(0) + } + navigateToDetail(id, type) + }, addNote = addNote, + stateVertical = stateVertical, tagsGrid = tagsGrid ) if (navigationType == SharedNotesNavigationType.BOTTOM_NAVIGATION) { diff --git a/common/src/commonMain/kotlin/com/yorick/sharednotes/ui/note/NoteListScreen.kt b/common/src/commonMain/kotlin/com/yorick/sharednotes/ui/note/NoteListScreen.kt index d2f1e9d..dacb57b 100644 --- a/common/src/commonMain/kotlin/com/yorick/sharednotes/ui/note/NoteListScreen.kt +++ b/common/src/commonMain/kotlin/com/yorick/sharednotes/ui/note/NoteListScreen.kt @@ -81,7 +81,7 @@ fun NoteDetailScreen( } NoteContent( noteBody = note.body, - stateVertical = stateVertical + stateVertical = stateVertical, ) } } \ No newline at end of file diff --git a/common/src/desktopMain/kotlin/com/yorick/sharednotes/ui/screen/NotesScreen.kt b/common/src/desktopMain/kotlin/com/yorick/sharednotes/ui/screen/NotesScreen.kt index 79e3abf..146fe31 100644 --- a/common/src/desktopMain/kotlin/com/yorick/sharednotes/ui/screen/NotesScreen.kt +++ b/common/src/desktopMain/kotlin/com/yorick/sharednotes/ui/screen/NotesScreen.kt @@ -15,6 +15,7 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollbarAdapter import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable +import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp @@ -25,6 +26,7 @@ import com.yorick.sharednotes.ui.note.NoteDetailScreen import com.yorick.sharednotes.ui.note.NoteListScreen import com.yorick.sharednotes.ui.note.NotesSinglePaneContent import com.yorick.sharednotes.ui.utils.SharedNotesContentType +import kotlinx.coroutines.launch @Composable fun NotesScreen( @@ -39,6 +41,7 @@ fun NotesScreen( val noteLazyListState = rememberLazyListState() val isTwoPane: Boolean = windowState.size.width > 850.dp val stateVertical = rememberScrollState() + val scope = rememberCoroutineScope() AnimatedVisibility( visible = isTwoPane, enter = expandHorizontally(initialWidth = { it * 5 / 13 }), @@ -50,7 +53,12 @@ fun NotesScreen( NoteListScreen( notes = notesUIState.notes, noteLazyListState = noteLazyListState, - navigateToDetail = navigateToDetail, + navigateToDetail = { id, type -> + scope.launch { + stateVertical.animateScrollTo(0) + } + navigateToDetail(id, type) + }, tagsGrid = tagsGrid ) }, @@ -99,13 +107,16 @@ fun NotesScreen( notesUIState = notesUIState, noteLazyListState = noteLazyListState, closeDetailScreen = closeDetailScreen, - navigateToDetail = navigateToDetail, + navigateToDetail = { id, type -> + scope.launch { + stateVertical.animateScrollTo(0) + } + navigateToDetail(id, type) + }, addNote = addNote, tagsGrid = tagsGrid, stateVertical = stateVertical ) } } - - } \ No newline at end of file diff --git a/desktop/LICENSE b/desktop/LICENSE new file mode 100644 index 0000000..c21cf29 --- /dev/null +++ b/desktop/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Rui Yu + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/desktop/build.gradle.kts b/desktop/build.gradle.kts index 2a53235..338e3ae 100644 --- a/desktop/build.gradle.kts +++ b/desktop/build.gradle.kts @@ -1,4 +1,3 @@ - import org.jetbrains.compose.desktop.application.dsl.TargetFormat plugins { @@ -30,11 +29,42 @@ kotlin { compose.desktop { application { + javaHome = System.getenv("JDK_17") mainClass = "com.yorick.sharednotes.MainKt" nativeDistributions { - targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb) + targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb,TargetFormat.Exe) packageName = "SharedNotes" packageVersion = "1.0.0" + description = "SharedNotes" + copyright = "© 2023 Rui yu. All rights reserved." + vendor = "yorick.love" + licenseFile.set(project.file("LICENSE")) + + windows { + packageVersion = "1.0.0" + msiPackageVersion = "1.0.0" + exePackageVersion = "1.0.0" + iconFile.set(File("img/ic_launcher.ico")) + } + + linux { + packageVersion = "1.0.0" + debPackageVersion = "1.0.0" + rpmPackageVersion = "1.0.0" + iconFile.set(File("img/ic_launcher.png")) + } + + macOS{ + packageVersion = "1.0.0" + dmgPackageVersion = "1.0.0" + pkgPackageVersion = "1.0.0" + dockName = "SharedNotes" + + packageBuildVersion = "1.0.0" + dmgPackageBuildVersion = "1.0.0" + pkgPackageBuildVersion = "1.0.0" + iconFile.set(File("img/ic_launcher.icns")) + } } } } diff --git a/desktop/img/ic_launcher.icns b/desktop/img/ic_launcher.icns new file mode 100644 index 0000000000000000000000000000000000000000..a49689f06c86e9fe0668210d2fd31da848ecddfd GIT binary patch literal 7338 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 literal 0 HcmV?d00001 diff --git a/desktop/img/ic_launcher.ico b/desktop/img/ic_launcher.ico new file mode 100644 index 0000000000000000000000000000000000000000..a50ed2eb3ffe0e043f338decf8bc23278b69042e GIT binary patch literal 69694 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 G9{4{HZ_Nq- literal 0 HcmV?d00001 diff --git a/desktop/img/ic_launcher.png b/desktop/img/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..968a8361a38d3dea403697122fc38e1e77efc7ae GIT binary patch literal 3738 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 literal 0 HcmV?d00001 diff --git a/desktop/src/jvmMain/resources/img/ic_launcher.icns b/desktop/src/jvmMain/resources/img/ic_launcher.icns new file mode 100644 index 0000000000000000000000000000000000000000..a49689f06c86e9fe0668210d2fd31da848ecddfd GIT binary patch literal 7338 zcmZvhWl$T=y2cYUK!HG!;99&`TPVeX7c1_?iy~1b@69&UO@nWFgINFgB(6CB`yE}z?Xk7 zt^Rj}|Eqzp{`Q?>rh|V)Ci2n}njV>lh6au#I$n<-jICTG@W>9F52KrngugK34T2Xi z8~it@YE6MWF|&V4OBIUGsvJD~q|^zV?9`Kr^Wy88dQvmcGv+nBEtuN$GE3(p-Su?K zUtpV?D?;)p{Gq%PN-FL-)vh1h37MQUMxzS63r2P9>!6d9!>E=gH*Q~&_so>)0Gv<~ zXa@skoa1{SGxdKDbEgk8AWXtQwEO0p^2WxDsHmul@nd`SYHwz+Arljqwc>JFlanzv z1Z1ivp3xSAjy+YF!%$Qxv!G*@CG5`O@!&e(cfW>=v4wxPrKczKuOfXG#8?p945N6J96*T)2&SMV?D^2IUc6N5+82O_d#R?=^nC418 z)ozZyxr=@omL5i&#O1n1`E!j6uzA z>r1`rFZX;+Y-OCvOui1_pvTI;1GzXQ%h?e~cBO&8KL;ln7(3OPJdfKdrJ?cmI}vZ3 zaXP~kWKavwiio=)q@xiv%bQTq`|6qDK?s@i6{(smz*NC`4<@ml9=q5(Pe4AM_lWyW zINYfo(S6_>V!A=X_?o`4?Q3W+e-8rN0a4Plik@L-u?eH2=?C@p983HcJB^P=f2yvG zDS?MwA5OQrx)RchUV#V93H%tf`-fj}pq*Bu^%UyRr`o+7;(c}u^avy9mMDxtjHk#2 z<7!DZkjQMIK=?lK%&lc7HfS=YBCj;@Y0`7WF`zUwH29Y?xgu>6$h^RD(kQhKNJ5t! z2)7-Wg0A+)R|tO59=AfI0FW{?%(P9aqMtO0zX!E*N)9NZNkW?)5yv1DO)f^9_nn!e5 zd-NV%UNg*|!qiC;Z!nZ$pvlTXU`iRVg1JpS%RbLKJ zjX6a)Mv^U>08Ob)$$hU^nr33Xa1qo&jW8LYTH>4+;M9i^$gJEv$KE3Gmc`m^gZy6` z-={)LP3`7@Z92V~seH3rZEbcP+kgl6h@`OX#j3_Nn(TRl%|_P!l~`6<{(ZU&qo(g5 z6ubu1UYZS_aiMb2DxW=)>U5%6e3t+Yvd`euT!Ech8CodIetO#YB4}Tj*5Ed=+pJWNbNvjsn6lqa!{b$llEr z#ylB`a^UqXsSq8)CQ%SkU<0>=I}(C*fV?c()oDBEk}Uppa<38y+2ObJC(aU*dXGDW zMDoO`%oq%L(q3^_{E3fZ3Ovup8vt0UxU!#p5}=Ph7Ri*!d8_I4;hH3v4F%pz-{Fu? z&I4HK--#tZ$s-Cf=o^Ue1U<~-isRc>DL;s@iaBhZuKi^F_B&C+yMcyqX*PN!M!4xW zk%iIsWyUaOjHa4XiwgXe7*AH=bC&Xu=He)&0XC&2X}5QgbuowCsD8eu>G@~9^DCXn zxhZ3JCgtEzv=_ug(%V2vhDHM7THaC0xW3q$Z#`YzIEPfr(Mp!oyh`F2yqnHCCqI7N z1&?{rd5{E~nJ!;m+T`@bx7{>6q6(R>z7|GAoDM+``1Ee;NyNtx5mR za==j;ziXo;u`BuRt&OgSH3QzV$Sy91pnNdW`bQ-$60iN?x{_t#2o+ay^c?j)A{u*;&fEMl|Oe#%U@NCGPv=+=oZ*IIix( zKCz1R2B$^dj8v~k$$i0&a8m=p?#2kzw6pJb$>H`N@qkTJHF&#+P2^d|C=TkME!A;M zL~WHTO`);kLO@7S{t?b6k`>S6yIo%dd9vMfo+-J0OD;ufy$7xL%2IGq5l&pPTU6Eq z#vK8&ol~VXV#{t&#;v^gT`i%nL83patRGHcgDxC*HrOV0uELTj`5*4*0iOpr5chOi zv)pi#>VGJgT(Y+g*p)u0m_4m6r8YPkbvchW+vV}Xu3kT$_lbQ>Yeth2l$qrjC2Dz7 zk00wM3VbWm=Guk3r~F_rcDMS2?Ok^RPg-OlE;y=fW#3FbR)2Wsn)nq@kxLOLm!Gp2 zngh+>`?Sr4$mrO>*k@@7uRPV56TWA$w6v0z+^w(e!>P6Nz-cyA3A59#duA{7#DuA;p`p(+*SGI^N}=sMs<-ui;z~B4xS#v^>ygH{Qr} z;`wHrHV^xS_v(lO7itx+3*B`b88K9&Ws*|9EuJYab!~Rb9}3stC2S=d$H1XRz7Y1P zXukl_P`9;#!)HpJK}Yk}^8c7j`<4VDz(lApNdS=aQrCubF*jW{E9b~Nd9;7Xa@2Ek zgG@eJS6kL!lhWKu#e6hZuvy=DdbNT3*ZMzYD+P1}+|jXjoDMR`)T$aJXx;UVMa_4K zEGmmTk+p@p5vtVmcgX9b$px#Lp{JbUjl)gIh~eANk(eaMwGqXe@08Rf-g01vSl1d0lzh8FT&#&fP~%`Ox5?NN6j*NGu6Qs0oHSo0z^_y@E`$Yz&-I9(-d zsn?NGYU!97<#!=8qdSgioMvLIIR-Em;bT29UC^1~X)ifet(mV%P8iCGk#4-1g`4)c zoLVrwKOt?zWaV%A?^=lmSuuDB?B!PWf#XyV!Lx6P{EmFOsYfb?17^rvL!&GQuEKMN zkh4@3kP&1q00@aSATRzj$>OMy|7+;w*rVI>Y zLdDUp-rD9EJhpUt$7S8}`wWr)X$eq%$QbW6Z=vzc@)KsBL0>E!8U2_}^878UXKlGo z@=@ztE9rsGbvO4yD+TcZu&nxiP=j&dx{r|J{K3{wfQJWL>ywKY1+exxQCIrn*DOTsW9q8z zIP5QQnYC=a&fda){|kWjT~nqRCi2unJ~VoTU2BGL2i0!8)*Lbp>%xU|W#;&C4h>#W zWFL4}u2nr`FjS)HzTURDQ|h|Ul@s)Gg`pe30PJuB)9ft`k=a(vz-B7S@1YKr?`=uJ z&*T!${`BLuI1=){d-xiOZ(uz zYd-IL={@}*y6nug<;8C}D{(zb*VB;Qv-dYyX*{TwR@3c}y8}wdhy{!4<7+C^`zipL z;&;vl@8-{k!?I%WT!0{5-icqEOnYdBpQ@~@C9cq!ss93&5iA6yNJq6vW84q@EY1z1 z7N^~xS4HbHZfM=a&X{BnU`(y+_HFB%|0lPM;01jARR?;QjqWWxjOevElUbxU7RO9^ zUDi9&h*VXylWr{+YVQ!Xh*pqTZDY%8!GQeaAl?DUFCSAZ_$7>+d_XAl8PM}_3zO9$ z%aR*^#v`(Bg;+8VyboxlCY2q9JkLt_klSa;VVgItj!_3}|Bn6eFu|?c z<(E-4r=O;-kSD0?#TL=wVQ^ld0);R{#5cZGW)TxQ=LGcZ?(VMZbZEy7o{rX`SwEGm zH9s|1+n@gqN4I zr;I#&>;b^3Q?|)^P={=KDo+`;a*j}NDQG(tR!E(*p*z!!4@@=^Adq2-`Cg=dHOX^E z_q2lj)Dhl#J|g^Cm*-c=X3o&?Fwo9!Z`AMhoM+Nl&kgoxU?kVY+dyGllVdqoI`u6c zDY56&CfgUqY#+{av~Bg5U-y+BHy4l(!=uY@PXzQOEO~}Uf-7N~x+7lz6T7^~wy18} zr|MF_iSwydLhZ$`v*|OWgSmADU3vZV4AwK;Q(h9xzA%HcoXD@9Lm!NLrqU{(w|ejR zJw4pShQ=Z~nNusd&qQdTh0Q2V(@T@8 zR*WqkLSHbi<4)R}l(D)pUkK;4dR?yP^RTG+xvg6@J{~|uZ%qR_h%3c=6)!3n5bDkz z$8l(5X6crp7J4jzS$A=}F_Vr{YH08Z4i&ogH>-)idvE+egzl$xE;XShfuP~h#mn>{GCTDki!I-j(eOGS^k>mF zeK=JbON2NfIdr=gtqDd5uZpVL&CsJ>)OWu*i&ng7{Wz)nI7D)m{2yc<8O*7Csz>_xkFXg8ir~H#e-|L%HKa;X8W=q`k&YlJ?HxQSV*T`H=9a z@Lh;m@WLhF^@6|ULIfe)s9&CmiOI#wI&5ks>*g@Ih@J1Wo#a?@@@%%FsH)i^c_JwU>s@txq# z$j3kECe;zo7|hm+B7rzEjHeq?JU+S(4nkdNgF%27HYf6swLJaRA5nnZps(BeRzEF| zZ&6ncPxxpU7%~7dF=Igs@!(ceQ0j#mm;%Jno7v|28#CB$mhm>(0?zr0gWP!n+};T?=G;bc zk}!pRq(M|1>1PAiXhhDR%1WwT--P>zD9)D2w5H(0P3|c}3~jkNTfLI3;2#pQj!Srz zjhpTTG((r0u4c@{l!*Z*dY>;P87+M`O2ln)oi2Goizg(;Qhnzari5Q%A2TS zg0BJ&;0lddhWYq(%Ib}>2m;!7A?d*M5qRFO^soNKs;Mz99ML7~oVgnG5Q-j(`mD>= zU#>gy{B0peoA-B2zn>uz8IhZ(%Pl}#Di}$6L3b4;sNFPQ9~xH2&zcOJ;7e)TwLwZc zSULO}>4R?TiTQkB;_4td30!U14_mk|4V^<8j4<*-F@!BwowIv3`=*Dn(hsTIe#0#a zc%9a@nr_aj5g}WR#*zJ6^s&=O57t@-ufkkh(FqRv=W9OPk$4W7K=qe=djP7;iK-H4 zoHd?>N3N}GSCg76Kr&^kvk=Q#Uj(?Cj%&-#`7A{9yLzB?dQ6i!`2(57yfm5Q1aMFx zFi(G-NHQI3utouw;Zn)thdl+EQR@vB_lP0%3I8CG%RTi+z$_T6FSIYf!g>je)pGTt zn65riEgu;1+4#NZm5qPtnxYGqT&+oE||JyY+DH_7cRboru0(yFV!Ys-F; zz{+xR(XwRYH8w*)okppl`(=tN$lXEt)2(x7%2MEVVVPA3;C_C~yu$l@$qgzzgfWlFFN z$+M0O>p!2kSvTl?BO!ne*wSF+Qs49^B&_u*o~*$Fz1C!=?Gw5B?b0=_aoYr?K}8RM z?IY~P#iz&O13(WXb#TgA3*X~6ZrGxTm)Gsd<(k~s@;pJWla0E67)S6{AoB~mk>XY| zW=%H*V94r%}C^j>*OXJRs2M4yZ4QQgF@|aS`pE1j=omEy+ zm`8d`ZUw7;-fZ-??;2T?+sC3E#)VdV zV~{i41~{mg0&k|5``l-UMAF}2ssfmQZ4~L?Mt&q)S`sX@T}j)Ec(ayNRj>unlkOk& z^rnr&o(66s?hKJVBf~4UAdlCafUcCT0#ma=QNlLYG%p6mf4bY|CA9dqGj9WX)q#ap z8Ln%bSHdA;`gyF0T}erdrQ#l3qyWam>8;#gNoz4dlq6dK^NZBl9%n0@}R*1;%Gd8&``uz&5 zjL$2gwZ~q@RG5pLHa}>P&eOu$tzC!`+i+cSUHrlbNFV1Jc}vi_*7>2@ zSH7wA#%S#TXkCjwT>JEIuyA7u)lz+pzW4vYf)4<|DEu#ALH}1r|8KDP>g9FuS7i0S zV9}*xXiYs${O%GXklYBm#w*fx=ZHs%!vw?v5EM4Akiuhj$c?2POFRuHK`kmg&k6XV%ND*xPzo;F5@>bOd=kI#Y6`5CLV zn+XN977=~uBI{NoCj<6BxQxH4vhGY5TU@4v*_wod(V|ZAHxQ$@11dGJVLdIo#dKK` zcH1iI%m)O1=UMUrr3qSZ`uOBmMdV*|z~{U~qZZqClV zU94~XZ3;!VIM$f?&Nx!S#S!9|J-V#z0>>W#h)22$N@-oW>T>r zzPN+rfgqhCAC@f%U!9}yx!fSHzwagS&|rCkjS#7+b6p?Kt>Z8XlkB6A`@@r=6$lXuXS*Wb9r=GZc>ReZmg-l`5#q&UfaOoj zVddeFC_5ot-H&aH9n@}%PrSH-KTnriw2!O$MJldbEVjrIH$xYD@-=`Me@ zZPVR8(T36JwWK3e@C5${m^a$*MYQE*_c`j;pVe0R)Aq?w$KZXAU8wtYGJ;4ZLqX#G zU?OdYt>CIXQ7owzG0t5J{rmXCmP2fzg$QF(-%7a|IM* zggX;+Jp!=z_U1b0H=ffFN6=O2QC6q9T(5Agy=S6NPDgHy5gCbxPKCj&gHo2K)x9-$ vN@FxL8sBI9Yk_nO0U7#&FO?q*qf;6mktjdlzYLIGrGSIg*;xL6)~Wvi^!oBj literal 0 HcmV?d00001 diff --git a/desktop/src/jvmMain/resources/img/ic_launcher.ico b/desktop/src/jvmMain/resources/img/ic_launcher.ico new file mode 100644 index 0000000000000000000000000000000000000000..a50ed2eb3ffe0e043f338decf8bc23278b69042e GIT binary patch literal 69694 zcmeI5dr(yO6~~tt0U!UWQkETL=B1)(>sQAu^5JY(k3b?Q!Dn9WM zK%-To2rB|EF2X*DsU|ThDq)?rnaQ-B=^yE&Gx?*fjllkT&c!Pm1a=qhW$)g5aE^Cb zc47B?zUTbT@Ao_Ru1e(r|I}&~{QtUYyq||^h)Sgz4+eMPo!tF+vx~16;r;<&gTRJ+ zd3lZV^YfkD->3hyk#7u{HU7;J^B09qU%Mu1PU8CLz+^J%`(RyEU`j;foVcLisVgT; z8aX#$)R38~{;Dbd{=UBezGH!N0GJ<`H<%~bD_{Z0-qY7}(%bKhpT9A7esb2~2>p?B zk>8#y-}1vJHHpm^YLi+o)+V)(N!te(t|zsguSs}vvOM-*ht6*Lb4LD(E8**Be>m}% zqXIo&@_h5D28IFim%)6%Ui0?$9s|dpM??i~+*7pPc)Duq59K$~nEpx`{lyWX$!pl zy+@87J!EL`vZ>QgRmN89@9tvAp18|X_ZZVg$O$FJWR|`^{PdVHgU9*$`VP%2UcXWI zRp$4`#+(+4dwH_AiD_$1gSxd)8}r?=RWlX@1x*;Gtxr7l|mTpsgX zp>}g9u>TR_o}VvJ{3{^-G2UT~=*Qyns4$Zy=hhxMIi zihucY=VP1rD~C1D-1bQPi9h9k4W zr!jU-dnn2VBh86!C2s4d4Tu}!yh#;FZC6+m(zgz%nOLWaQsmN zSQF-6TEc1?GTovcApXMg=QW_Y6yg>dApY(AV^6&0(A*yx+cV4qyURi)Uk?!fcK(N} zRsM8yB6{80m#2aZ>-VM})n6I26ITq`F2&+|tO;QsD0$ODVh zUlU9NSQF+!O(>;2K>R!B&uidN@k`J)CfRu5K&3tAH{ zggM4OiD-cMch8^C0|mMWLB|5j12`7Ax`%}L+vkrOz-wU~zqW=g&Jea9$Srm4yny&S z#ve5R*U)0es#gm-7H~D8Hq>SPgv8%*{=5dTCKPgw=v|l>6tl6e8~caA?_4;-lY zy`UPHm+Hsxch>cB9})3)oDO#WpzN+P!o^ z+4DNWoPy4+JLrvh0$@FkXqz9$z=bzcBItOariYT%cRULNcA77vNZl^?%L%=X*zSomh;0 zL*g$if7Aia3%LCPC)SFQ{r)R3|A*)DTH=qoJ3Cm+@#$=DiGq}Idzrb~a^ z#y&VaiDS>#IJkGbU%<6u;x8V5UISgN74zqgc3hi4_7`r%vdAM-*sQqz&&?@O1DIQ| z-sH!Ko*u>IUjb`>@x?Q_u?xp9SJ~dnVV%}gJ@uKh&ugm(R>6Kjdmj;=Gm7JRXLWw* z%{aE{$YeG<-t#&3d>#ma+Ts#C&e_+}@$q8vH$p9p+OBr7VeQO)rh&lgza4$q-S@l( zFm~JO{IE{Paoyb=Y{S8cY-ZexU9v|FU_F3q1l|2jM}8(Ie@Fhlk{*M7#V7P@xgLVf z>U@lqm3!XkmOCH+c#J+ajrhATriIcjj`!MIiEJI#`CB|3=D)4**Tmn=`6GMWCy6{f zna$kRea^Ry{TbW(L0{_o#NW;Nm)%TYn+v9NTkF|!$J;peV~tRCCyn^KHGd5|YmR2P z*VmD8SKlN1h`m2!Ww+vieeXY)k?KEj=l}L<1f0VksanZ!UeFbD{(fY?GH(pGE@bcb zI{I_s?^^!I3FiX1rq`VYW^C=p%?&VLV9nqtUwe-u{;ubbj4%%zfc+ml*R10l0ONi& z&NQ`ase34GgbCvRpF)&OaW? zRzSW_Jw1n84;Es)@A!Ac1-VAC&*4QCoJGJ1G7s{we+)*8q+Gj^{MW|Bm~ryBsa% z&nW*p9{V^Cp!j!O)1`3!Us%>~Ze0`CHsxTe_Kam``ry1QF=O8LcZ(VScn$26wI8s; zn)R}=j}4m`o=+4V`D3q|+)Pe2fSCOC4H?||PI!GRxfu3mT@|43UMdD} zxSl?r#(x_BY5aFw1C;+A&uN(dgW$7I@!VCp*b=y|EA}+?G~Y_?d1B`Os;|;m`nh>* zJDk5L7sG2cYHuYFf7m;anwIJHIL}1P_$MCD^XO}z5r6435>pezpZJS4{}WTU^t*-8 zEyceuesoto5`W@P`Cqvjp!ioVdmOWfKk=vhuUrjK{419|<$qUe6 z)&I)X0L8y@*>|k}PE|y|XKu=AhWo8gje2}!-sfZ+|HNN;xq$d9k2&Uj-fa1wz8Vus z`M=#aypQC3wB>(JAG?J3E0_N#wcA2qF4$~pqWVwHF>m|c`1rqMNNFxLCe1Z9<^GTO zD<}sv<+LL2i-yGio-?FOFg9ua0UDtBpG}Qq8!xiE4g3v_8tWNd+~13IiG$(&-7*7z zG}*mZr7(5oeFFcQdur>cirD%hU8E0u4rM;n0F3x6WDJ1ZU-fx9`$+p?ib|#O&^KiN z)?~^38`goO0hwz6V!!TzrbYW{>R%3=-Y}w!mG!G`O!bG)87%<*PfQl54V=j(^w?+X zDw6jb#Jv&tU%#h*Tw+R2D$vJzF~&U9YV`}|2iX&$Ce)z@z)%BJ3&=^^z#Z8e8*~1x zyPa{e%oIOd&D1YI{#T&}&~8}rroviKCGcl39<*{}0XzqE(e_+Ax{V(&evvn_Lyo|- z1?;imL3UBq=jyRMbL5X-_`Qm$JZc|mMw=hyW`KQ*Isn7xJ~Ny*l1bkOw#=S#w3sZK z*t!OFKu7j%3TV>+<^=sW1zz=*ys_p-yHn~P?KZ&k|7y16Jci>F&=Q%{eSmdbQ|^E2 zExF%-U9Gp|L|toA4=Za@dm>*h)_Lf3BoB}W$OGg7@&I{&JU|{G50D4Q1LOhn0C_<6 G9{4{HZ_Nq- literal 0 HcmV?d00001 diff --git a/desktop/src/jvmMain/resources/img/ic_launcher.png b/desktop/src/jvmMain/resources/img/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..968a8361a38d3dea403697122fc38e1e77efc7ae GIT binary patch literal 3738 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 literal 0 HcmV?d00001 diff --git a/img/ic_launcher.icns b/img/ic_launcher.icns new file mode 100644 index 0000000000000000000000000000000000000000..a49689f06c86e9fe0668210d2fd31da848ecddfd GIT binary patch literal 7338 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 literal 0 HcmV?d00001 diff --git a/img/ic_launcher.ico b/img/ic_launcher.ico new file mode 100644 index 0000000000000000000000000000000000000000..a50ed2eb3ffe0e043f338decf8bc23278b69042e GIT binary patch literal 69694 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 G9{4{HZ_Nq- literal 0 HcmV?d00001 diff --git a/img/ic_launcher.png b/img/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..968a8361a38d3dea403697122fc38e1e77efc7ae GIT binary patch literal 3738 zcmbtXc{G%58-HdP)7WFYNFtO`*;1AvhGfe!MvOIUA$#_vnXzOKMMy@I7o{vkwy_M^ z3Ngx-Y|$_XAtBp0de8a(`_A{B^F8NTuIqQ-*YEzFb6@Aao+|-utjocAj1>R?4t+gs z4CC8;_#9zjyfI^*Pypa`)YsO$7IJ-w7=F#%9Nf_YKrUp1y-wVdJ+B)<%GNP+|L{{T z(6i{SG1q{>DkPcJ39;~y%`K;>DA}zP(|s&rZUrp27)y8(1ej!ScJSyW$W#Q4>%eoD;jz#HsK)`@LLB4GO~l$R)e7fC8dKtbbv zjCsQ|BrQv5xx8U)L;`wdG=CSvWD57^2gp&qZw3or#c#3&DJj(&GBsHAfAlSFsLM<9 zpk*zT3*mKS8|tT#_Vv}J#wy5(XXm`g>oWx0^V)$C>xpw8Bn$3X(;k67i7%~q7>kUb zd|6<}ri?=t*!>8*?($~%K7~(rPm#qSp37Iq&C@P?IR@dahE6bkYLn6=H-rt(x0_2b z`kA+83Du3)aN~*p*f+r&svBhVkv!Oum@htk<0h9%ma4m9cuBOF1n@23UEr^5gxc#B z|IekC`ftShz#aYgjVuxMfEjw9ipD&$_B405kVo6trN;;HDKrc0WoFm*!EaH3Ql0F8 zx!=O&C>S}$o%)utG!~aKZ|86P(~L(3=RD58XdKGijCmF)7sJfT+86qRPR`IN^wOoh@edpaQ9xdm-J-)082q>)Ez%s`urrD;;_DTPEu&e?AzhDUEZuH@ zA2-sld0oiHulQ>?D=LajvFBLZ$C;g`1G6iuO!U!$-QB#|6G1j>HD0Yr36HUr3NPRK z7$-mFR>X-nnU9WL-vN{bv`S#&!#amd?N-R zy;pL~2(@3cgPjIhYKdhxWUY8ommiTwq~)38@!l&#;ZguhaRO{8B^|P0(1_uO3!;B+>H zABC5P6GozHfb>k++{Cg=x#{Wge-=wnWPbO#$`K3^Z7Jdag)M@Wr;jyrlawH$K`2oC zM>LRs0Zu@0Ktv5L|6guE<{g}#i|1p>Snu3oiBGqNteQ@rL4g8T)p0gIrEq9%+C8%e zB?}bGe_#XvApvld3WC6SXb`{%D1`d-&_Dw;5`g?;u#%3$QE?2U5Mue;{holOirr7U zOIP$yjACzX=R5}>RH=GPNsBy{GZqoskq=7LgL~F4nu1tS8L?pQ!l!_?I|490_Mcp2 zw~6pk%6QeawCsc?L-0`APB;lxR z->TKV$SDEYB+5b(5h{D(Etz652lc~nQ5hRf1aP# zVU%pM%@?%LdRB<&$-l4V!D1UPe8G6*-@mx-8QNRMSeM$eT(&*QZh;Rp99y0KL`3qk zm*hHzHXV+kTUG>{%hvMKeXJ*fX6_U)UshCemI~4RS^lnC4U2sWNVt)9FWcu7+kKy? zm_GWNjWmlz|31b@4@>#EXg}xfjx6!#}&tP_V3I57ZrRN$w z<6(MRgb2^nTje|Jl{kIw`mO8oJ6p!x{sDZfBwkLXRwG=eSLnDg08RZWt1&s-pdL8r zBGn?4nJSM^*~{CtoUG9y^enM?e&#D;q#wyYBVxNrpl)#Umg`#Et= zfb3U@WW5daHK?Cq)0ynt@$+>!2c2VTc| zhx%2!|b6EFcHE+o;X7Yd_Lb-CJ>OGAM zj_M5Dk2wvpkj(AsQg~`52->pU>OU2fDWcTN_oeo52EnqK=UX=RuMun9_a8xX_a_P9 zv?m1j)Nxv;QrpxJbbW4_69LqL6zg=ps4WS;@s71T`nK3smvK5pjt?gTcyAMu8;z@< zvz)?!q=Bs+-Y>}RsSOk4!aE-n2;OP7KQ%T%JyH8o0j^XX$ihmJ8~G|+Rp`NR+R`{w z^0$(f?U&rSSV@SHuT|mcS9fk^_SFXyDdGr1ltVG^q_YQpo6AbQ<`W4>j9g0{Z=w#Z zIgif#6sLe7=y-I7$YWdMk*^#4tfV6&-@4w^?M4sneU?{k*w+HVfycH%S$I@?K&MRL z?cv&V&8*8_U;~riUr5&$!L&(qsetWkx`Rf0`F;1xM-9- zKa%@ZtH-A7Ghgtbn>A{$_VUvG%7OVqG1*B=TnPMESEzI!Uok_^=_X$-lta45{4?me zKHm2XgoP3z#{G69bGGb%D}&?HoKKl8Lut4s2db?{cr#7N!H3j@)cRgmM=FYniwhDzF+y6@ z&K22HaM|EOJr?-zibmzHF_>xpSjZKH5hOwj$voat@jKCkGs()FPrAY;y8rdSz`z7O zccRgo>w25fgDqS%bn{_qjmg=wxzT2S$=HTSqma?^8&dV?v$HFcGPtY*PY`)9c&Zsk z&zVrsg;CE+NzJ>i*0fE^97O0E50WoksoJ@_qh)tiV(JlLE6EhMJvVd(`l6k8`Nl;$ zoP0OssYlq{@smJQoq$D@x3Ql7*4>EX5`yZLFV><@i7fMZP>^NBE;&*5l=IvQ*Bjlg zV10!X)?Bff1Nm3!*LF)+EkSP~a^%=v6$8Quq7UO{fT2hn@qOm{#-@&0H1>o>W}j$|;22h|_s`HSC%1y#$7ulv+UXw(~KG zmRnS>JDA_>_fuP)oSk*|)O{@adxRg_x4Ic7SrC7tntiiV2gUMb5NfmAFHJ=F+BsI@ z?_N}GH?y%l$WGgFktauU&fAfVRx)RbG;|vJz%>RqzF|pkH(RH%BkbC@hnd!I8&nLJ zKPQ@-Z+}?#Y1s9eh+Gg^<6LRV#Jg>p=bs3T3$jlau6Y{$N5%_r%^k0aws>>c;&71Mij3m2+ur-(0fUVLDek+S=M&I2v7dd1r1K z5*55V-h^tK79BXMBMCAjUOEdhs*I#S=R_6+!-!fn$3uTA)Y;2Eg0n7oR-_(>^uLyUnzk;^&L2ZjNtAV)Yd(wi=<$sh>mtlv$s-gcLr;F-#} zYo}T=?v&2nZMk=f>2I}I=U2)fjxx523JCy@qjaf!0W9O1ac_%ub=YBY_DM-=-^Uy| z<1|}tvHzGeJ<%=ikS{|A$OL1O5d8?FVIir~(UuPe)i^_WJ08)6kBxLJck2S`%>}&J^(~SDK(^SIojh^LXsQ^ tEj-iX3Gru}$_1iN-TIG>T)?FR=;-PBYD??C54%u6|BA78nU+J;zX1Ju)SLhS literal 0 HcmV?d00001