Merge branch 'master' into dev
@@ -1,10 +1,14 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## [2.0.3] - [Unreleased]
|
## [2.0.3] - 2021-08-21
|
||||||
### Fixed
|
### Fixed
|
||||||
- Improve automatic checkmarks for monthly habits (@iSoron, 947)
|
- Improve automatic checkmarks for monthly habits (@iSoron, #947)
|
||||||
- Fix small theme issues (@iSoron)
|
- Fix small theme issues (@iSoron)
|
||||||
- Fix ANR on some Samsung phones (@iSoron, #962)
|
- Fix ANR on some Samsung phones (@iSoron, #962)
|
||||||
|
- Fix dates before the year 2000 (@iSoron, #967)
|
||||||
|
- Fix notification adding checkmarks to the wrong day (@hiqua, #969)
|
||||||
|
- Fix crashes in widgets (@hiqua, @iSoron, #907, #966, #965)
|
||||||
|
- Fix crash when moving habits (@hiqua, #968)
|
||||||
|
|
||||||
## [2.0.2] - 2021-05-23
|
## [2.0.2] - 2021-05-23
|
||||||
|
|
||||||
|
|||||||
@@ -1,350 +1,377 @@
|
|||||||
Name,Languages,"Translated (Words)","Target Words","Approved (Words)",Voted,"""+"" votes received","""-"" votes received","Winning (Words)"
|
Name,Languages,"Translated (Words)","Target Words","Approved (Words)",Voted,"""+"" votes received","""-"" votes received","Winning (Words)",Joined
|
||||||
"Alinson Xavier (iSoron)","Portuguese, Brazilian; Japanese; Spanish; Portuguese; Italian; Chinese Simplified; French; Hungarian; German; Arabic; Hindi; Slovenian; Catalan; Greek; Korean; Bulgarian; Chinese Traditional; Polish; Russian; Serbian (Cyrillic); Turkish; Ukrainian; Czech; Indonesian; Croatian; Danish; Dutch; Romanian; Swedish; Basque; Persian; Vietnamese; Telugu; Finnish; Tamil; Afrikaans; Esperanto; Hebrew",14790,17211,1272,0,1707,70,4259
|
"Alinson Xavier (iSoron)","Portuguese, Brazilian; Japanese; Spanish; Portuguese; Italian; Chinese Simplified; French; Hungarian; German; Arabic; Hindi; Slovenian; Catalan; Greek; Korean; Bulgarian; Chinese Traditional; Polish; Russian; Serbian (Cyrillic); Turkish; Ukrainian; Czech; Indonesian; Croatian; Danish; Dutch; Romanian; Swedish; Basque; Persian; Finnish; Vietnamese; Telugu; Tamil; Afrikaans; Esperanto; Hebrew",14808,17227,1282,0,1779,80,4274,"2016-03-05 18:35:27"
|
||||||
"Slobodan Simić (Слободан Симић) (slsimic)","Serbian (Latin); Serbian (Cyrillic)",2053,1830,2105,12,33,0,1982
|
"Slobodan Simić (Слободан Симић) (slsimic)","Serbian (Latin); Serbian (Cyrillic)",2054,1831,2114,12,33,0,1991,"2021-02-03 14:26:07"
|
||||||
"Oglaigh Rystard (oglaignaheireann)","Ukrainian; Portuguese; Catalan; Greek; Basque; Romanian; Italian",1103,1037,1327,1,13,6,954
|
"Oglaigh Rystard (oglaignaheireann)","Ukrainian; Portuguese; Catalan; Greek; Basque; Romanian; Italian",1103,1037,1327,1,13,6,954,"2017-03-31 09:13:19"
|
||||||
"David (Cliff122)",Swedish,1040,1019,725,6,0,0,700
|
"David (Cliff122)",Swedish,1040,1019,725,6,0,0,700,"2020-01-21 13:56:55"
|
||||||
dukelc,Slovak,919,880,0,0,0,0,0
|
"Omer I.S. (omeritzics)",Hebrew,1000,900,1097,14,1,0,946,"2020-10-11 20:10:51"
|
||||||
KMakoto,"Chinese Traditional",745,1146,949,0,0,0,745
|
dukelc,Slovak,919,880,0,0,0,0,0,"2020-08-27 14:02:41"
|
||||||
"Evren (evrenkiymaz)",Turkish,688,604,0,71,4,0,0
|
"Intan Ayunda (Intan_Ayunda)",Indonesian,800,793,962,0,0,0,711,"2020-10-14 07:51:58"
|
||||||
"David Nos (david.nos)","Catalan; Spanish",667,731,0,0,0,0,0
|
KMakoto,"Chinese Traditional",745,1146,949,0,0,0,745,"2019-10-22 04:19:52"
|
||||||
androide74,Italian,644,659,0,2,0,0,0
|
"Evren (evrenkiymaz)",Turkish,688,604,0,71,5,1,0,"2020-10-04 03:39:16"
|
||||||
Tomairuka,Japanese,633,1636,909,43,0,0,564
|
"David Nos (david.nos)","Catalan; Spanish",667,731,0,0,1,0,0,"2020-01-04 10:15:36"
|
||||||
"Dmitriy Bogdanov (di72nn)",Russian,625,572,1175,0,34,0,519
|
"Antti Kallio (antti.kallio)",Finnish,650,525,0,0,0,0,0,"2021-07-03 05:54:44"
|
||||||
reyhoon,Persian,624,759,0,1,1,0,0
|
androide74,Italian,644,659,0,2,0,0,0,"2020-02-06 15:46:28"
|
||||||
Osoitz,Basque,610,545,0,9,0,0,3
|
Tomairuka,Japanese,633,1636,909,43,0,0,564,"2020-12-12 12:14:22"
|
||||||
fabian.bouchal,German,548,527,0,6,0,3,72
|
"Dmitriy Bogdanov (di72nn)",Russian,625,572,1197,0,36,0,515,"2017-03-31 10:00:48"
|
||||||
boban77,Czech,509,461,0,2,0,0,0
|
reyhoon,Persian,624,759,0,1,3,1,0,"2020-10-01 18:17:23"
|
||||||
"Yoav Argov (YoavArgov)",Hebrew,501,461,0,0,1,8,3
|
Osoitz,Basque,610,545,0,9,0,0,3,"2018-01-23 14:07:47"
|
||||||
REMOVED_USER,Norwegian,501,498,501,0,148,0,501
|
"Saeed Esmaili (saaeed.es20)",Persian,568,774,0,5,4,0,0,"2020-11-26 15:41:15"
|
||||||
"Martim Parente (Sharlimar)",Portuguese,497,534,0,38,0,0,0
|
fabian.bouchal,German,548,527,0,6,0,3,72,"2020-01-07 06:43:37"
|
||||||
"chrrris1987 (Chrrris1987)",Dutch,467,478,0,23,0,0,0
|
boban77,Czech,509,461,0,2,0,0,0,"2020-04-30 13:18:24"
|
||||||
"Huy Ngo (huyngo)",Vietnamese,461,695,0,1,0,0,0
|
"Yoav Argov (YoavArgov)",Hebrew,501,461,0,0,1,8,103,"2017-04-28 07:23:01"
|
||||||
"黄克 (hk13127)","Chinese Simplified",461,765,0,1,0,0,0
|
REMOVED_USER,Norwegian,501,498,501,0,148,0,501,"2017-07-05 19:02:25"
|
||||||
"Arkadiusz Bubak (epitek)",Polish,458,416,29,24,0,3,0
|
"Martim Parente (Sharlimar)",Portuguese,497,534,0,38,0,0,0,"2020-08-26 10:22:11"
|
||||||
marco.baturan,Esperanto,452,452,0,0,0,0,0
|
"chrrris1987 (Chrrris1987)",Dutch,467,478,0,23,0,0,0,"2020-02-03 05:26:04"
|
||||||
"Sief Tarek (sieftarek135)",Arabic,447,455,0,0,0,0,0
|
"Huy Ngo (huyngo)",Vietnamese,461,695,0,1,0,0,0,"2020-01-26 11:58:36"
|
||||||
"Omer I.S. (omeritzics)",Hebrew,428,366,0,14,1,0,0
|
"黄克 (hk13127)","Chinese Simplified",461,765,0,1,0,0,24,"2020-01-17 23:16:03"
|
||||||
"Samuel Guay (SamGuay)",French,426,486,0,6,0,0,0
|
"Arkadiusz Bubak (epitek)",Polish,458,416,29,24,0,3,0,"2020-11-05 05:11:58"
|
||||||
"Diana Karaseva (Sun_Dianka)",Russian,399,373,0,10,1,0,221
|
marco.baturan,Esperanto,452,452,0,0,0,0,0,"2020-06-23 02:49:46"
|
||||||
"Alexander Jansson (dalecarlian)",Swedish,396,406,507,0,0,3,399
|
"Sief Tarek (sieftarek135)",Arabic,447,455,0,0,0,0,0,"2021-02-07 14:35:21"
|
||||||
luiandresgonzalez,Spanish,383,403,0,1,0,0,0
|
"Samuel Guay (SamGuay)",French,426,486,0,6,0,0,0,"2020-06-25 07:14:38"
|
||||||
"Thamara Andrade (tkcandrade)","Portuguese, Brazilian",380,387,0,0,1,0,252
|
"Diana Karaseva (Sun_Dianka)",Russian,399,373,0,10,1,0,209,"2020-01-30 06:40:02"
|
||||||
"Sølv Ræven (soelvraeven)",Danish,370,370,0,0,0,0,0
|
"Alexander Jansson (dalecarlian)",Swedish,396,406,507,0,0,3,399,"2017-06-21 01:37:32"
|
||||||
"Isti (eisti)",Hungarian,367,329,0,0,0,0,0
|
luiandresgonzalez,Spanish,383,403,0,1,28,0,0,"2020-07-11 14:20:44"
|
||||||
"Anh Quân (dangquanuet)",Vietnamese,362,530,0,42,1,0,0
|
"Thamara Andrade (tkcandrade)","Portuguese, Brazilian",380,387,0,0,1,0,252,"2020-01-09 19:35:48"
|
||||||
gapszi,Hungarian,348,301,0,86,0,0,0
|
"Sølv Ræven (soelvraeven)",Danish,370,370,0,0,0,0,0,"2020-11-28 16:46:18"
|
||||||
"Mahdi Nasiri (mahdi.nasiri)",Persian,343,465,0,39,3,0,0
|
"Isti (eisti)",Hungarian,367,329,0,0,0,0,0,"2020-12-03 12:02:51"
|
||||||
Seoyul,Korean,339,825,0,0,27,0,0
|
"Anh Quân (dangquanuet)",Vietnamese,362,530,0,42,2,0,0,"2017-10-29 12:27:44"
|
||||||
"Magimai Prakasam (magimai)",Tamil,336,831,0,12,0,0,0
|
gapszi,Hungarian,348,301,0,86,0,0,0,"2019-04-08 01:35:54"
|
||||||
"Michael Malak (MichaelKMalak)",Arabic,304,271,0,0,0,0,0
|
JY3,"Chinese Simplified",345,585,278,0,1,0,207,"2021-03-08 08:53:35"
|
||||||
"Elina Salminen (salminen.elina.m)",Finnish,297,227,0,0,0,0,0
|
"Mahdi Nasiri (mahdi.nasiri)",Persian,343,465,0,39,3,1,0,"2017-07-14 09:17:25"
|
||||||
ayane.m,Japanese,292,863,0,1,2,0,22
|
Seoyul,Korean,339,825,0,0,27,0,0,"2017-06-21 08:11:39"
|
||||||
"Marius Teufelweich (teufelweich)",German,249,256,606,4,0,0,146
|
"Magimai Prakasam (magimai)",Tamil,336,831,0,12,0,0,0,"2018-04-15 21:16:08"
|
||||||
cobalt59,German,237,234,0,1,23,1,132
|
"Michael Malak (MichaelKMalak)",Arabic,304,271,0,0,0,0,0,"2020-05-26 19:47:58"
|
||||||
"QWERT (lurenjia01)","Chinese Simplified",236,407,0,0,0,0,0
|
"Elina Salminen (salminen.elina.m)",Finnish,297,227,0,0,0,0,0,"2021-01-06 01:28:57"
|
||||||
beriain,Basque,234,235,0,0,2,0,0
|
ayane.m,Japanese,292,863,0,1,3,0,22,"2019-11-20 03:28:26"
|
||||||
"Intan Ayunda (Intan_Ayunda)",Indonesian,228,239,336,0,0,0,135
|
Blinkin,Dutch,284,318,0,1,0,0,0,"2021-06-14 10:30:05"
|
||||||
pnhpnh,Vietnamese,225,343,0,1,3,0,0
|
"Marius Teufelweich (teufelweich)",German,249,256,606,4,2,0,146,"2021-03-12 04:11:38"
|
||||||
"Dika Fitrian Dwi Putra (OsamuDazai)",Indonesian,221,215,0,0,0,0,33
|
cobalt59,German,237,234,0,1,24,1,132,"2017-06-05 05:18:33"
|
||||||
easyrepro,Telugu,214,297,0,0,0,0,0
|
"QWERT (lurenjia01)","Chinese Simplified",236,407,0,0,8,0,19,"2020-03-08 01:46:25"
|
||||||
taras-ko,Ukrainian,211,183,0,1,4,0,19
|
beriain,Basque,234,235,0,0,2,0,0,"2017-03-31 15:42:28"
|
||||||
sojusnik,German,207,200,1,0,30,0,66
|
pnhpnh,Vietnamese,225,343,0,1,3,0,0,"2017-11-27 12:06:07"
|
||||||
axmed99,Ukrainian,203,177,0,40,0,0,53
|
"Dika Fitrian Dwi Putra (OsamuDazai)",Indonesian,221,215,0,0,0,0,48,"2020-07-13 04:40:27"
|
||||||
"Heru Yen (heruyen)",Indonesian,201,201,0,0,0,0,2
|
easyrepro,Telugu,214,297,0,0,0,0,0,"2020-06-12 12:52:10"
|
||||||
Ishmaeel,Turkish,193,174,0,129,6,0,0
|
taras-ko,Ukrainian,211,183,0,1,4,0,19,"2017-10-26 16:52:22"
|
||||||
fbruna17,Danish,181,179,0,1,0,0,0
|
sojusnik,German,207,200,1,0,30,0,66,"2017-04-03 17:11:56"
|
||||||
"Omry Cohen (omrycohen)",Hebrew,175,156,0,1,0,0,0
|
axmed99,Ukrainian,203,177,0,40,0,0,53,"2021-04-01 03:56:20"
|
||||||
Bryanx,Dutch,174,165,0,5,0,0,0
|
"Heru Yen (heruyen)",Indonesian,201,201,0,0,0,0,25,"2020-06-29 18:39:15"
|
||||||
"Pierre GALIEGUE (pierre.galiegue)",French,171,194,0,24,2,0,0
|
"Vijaykumar Borkar (vjkumar)",Hindi,200,364,0,11,0,0,0,"2021-08-06 16:12:15"
|
||||||
DionysosDV,Greek,165,153,0,0,0,0,0
|
Ishmaeel,Turkish,193,174,0,129,6,0,0,"2017-10-04 03:54:00"
|
||||||
"Gustavo Lima (GustavoLima)",Portuguese,158,177,0,1,4,10,0
|
"Aputsiak Niels Janussen (aputtu)",Danish,187,200,0,0,0,0,0,"2019-08-28 05:47:42"
|
||||||
"Aputsiak Niels Janussen (aputtu)",Danish,153,171,0,0,0,0,0
|
_translator,French,181,206,0,11,0,0,0,"2021-07-06 07:54:12"
|
||||||
plitwin,Polish,145,128,0,1,16,0,26
|
fbruna17,Danish,181,179,0,1,0,0,0,"2021-01-28 15:48:47"
|
||||||
"Lương Vĩnh Khang (LuongVinhKhang)",Vietnamese,144,256,0,0,46,1,0
|
"Omry Cohen (omrycohen)",Hebrew,175,156,0,1,0,0,33,"2021-01-18 07:33:23"
|
||||||
azzamsa,Indonesian,142,136,0,48,0,1,50
|
Bryanx,Dutch,174,165,0,5,0,0,0,"2019-11-21 17:08:12"
|
||||||
"Neysa Nasywa (neysanasywa)",Indonesian,140,141,0,0,0,0,35
|
"Pierre GALIEGUE (pierre.galiegue)",French,171,194,0,24,4,0,0,"2020-08-16 11:41:35"
|
||||||
JY3,"Chinese Simplified",136,217,80,0,0,0,80
|
bruhwut,Vietnamese,171,268,0,1,0,0,0,"2021-05-21 07:16:30"
|
||||||
"Mohammed Imthath (mimthath4)",Tamil,136,274,0,0,11,0,0
|
DionysosDV,Greek,165,153,0,0,0,0,0,"2021-02-27 19:05:25"
|
||||||
roptat,French,132,154,0,112,88,5,0
|
"Gustavo Lima (GustavoLima)",Portuguese,158,177,0,1,4,10,0,"2020-08-26 10:35:05"
|
||||||
"Trần Thái (tranhoangthai2001)",Vietnamese,127,186,0,8,1,0,0
|
oscfd,Spanish,155,166,0,1,4,0,0,"2021-05-21 17:58:22"
|
||||||
"OP Smosher (teenwolffan44)","Serbian (Cyrillic)",124,122,0,0,0,0,18
|
plitwin,Polish,145,128,0,1,16,0,26,"2021-01-20 06:18:37"
|
||||||
4001982248998,Esperanto,122,119,0,0,0,0,0
|
"Lương Vĩnh Khang (LuongVinhKhang)",Vietnamese,144,256,0,0,46,1,0,"2017-08-10 10:05:58"
|
||||||
"StoP4Me (Lcqp)",Romanian,121,119,0,0,3,0,0
|
azzamsa,Indonesian,142,136,0,48,0,1,26,"2017-06-16 18:29:45"
|
||||||
Sebastian05067,Spanish,114,133,0,55,18,0,0
|
"yoding (yodingc)","Chinese Traditional; Chinese Simplified",141,271,0,10,0,0,0,"2021-07-07 01:45:45"
|
||||||
"Tanya (MagicUnderHood)",Russian,114,98,0,19,0,0,32
|
"Neysa Nasywa (neysanasywa)",Indonesian,140,141,0,0,0,0,60,"2020-11-18 10:32:10"
|
||||||
REMOVED_USER,Arabic,111,106,0,22,21,2,0
|
"Mohammed Imthath (mimthath4)",Tamil,136,274,0,0,11,0,0,"2018-02-15 22:41:15"
|
||||||
mohmans,Arabic,109,103,0,2,0,0,0
|
roptat,French,132,154,0,112,89,5,0,"2017-04-19 16:54:47"
|
||||||
"Ivan Krušlin (krux3r)",Croatian,108,122,503,0,0,0,108
|
"Trần Thái (tranhoangthai2001)",Vietnamese,127,186,0,8,1,0,0,"2018-03-01 10:51:39"
|
||||||
"Iabin Arteaga (iabin)",Spanish,108,111,0,4,20,0,0
|
"OP Smosher (teenwolffan44)","Serbian (Cyrillic)",124,122,0,0,0,0,18,"2020-11-05 09:41:35"
|
||||||
2kaafone,Finnish,105,90,0,0,0,0,0
|
4001982248998,Esperanto,122,119,0,0,0,0,0,"2017-10-08 04:13:02"
|
||||||
"Adam Jurkiewicz (hasztagg)",Polish,104,105,529,0,0,0,104
|
"StoP4Me (Lcqp)",Romanian,121,119,0,0,3,0,0,"2018-05-06 18:51:59"
|
||||||
"Saeed Esmaili (saaeed.es20)",Persian,104,141,0,0,0,0,0
|
alalloush,Arabic,118,129,0,2,2,0,0,"2017-03-31 12:37:17"
|
||||||
"just a name bro (justanamebr0)",Danish,98,109,0,0,1,0,0
|
"Eilif Adelvice (adelvice)",Spanish,116,126,0,96,0,0,0,"2021-08-05 07:20:21"
|
||||||
"Nam Nguyen (namnl2706)",Vietnamese,95,137,0,0,0,0,0
|
Sebastian05067,Spanish,114,133,0,55,28,0,0,"2017-05-14 00:48:16"
|
||||||
"손유정 (yuwon1213)",Korean,95,57,0,0,0,0,0
|
"Tanya (MagicUnderHood)",Russian,114,98,0,19,0,0,54,"2019-04-21 10:44:03"
|
||||||
ranmagen,Hebrew,91,78,0,0,0,0,0
|
REMOVED_USER,Arabic,111,106,0,22,21,2,0,"2018-01-05 07:01:45"
|
||||||
LoneWanderer,"Chinese Traditional",90,137,0,4,0,0,0
|
mohmans,Arabic,109,103,0,2,0,0,0,"2020-11-23 02:48:00"
|
||||||
"Vo - (voyl)","Chinese Traditional",89,126,0,0,5,0,0
|
"Iabin Arteaga (iabin)",Spanish,108,111,0,4,21,0,0,"2017-08-26 21:08:54"
|
||||||
ikkaz,Indonesian,89,84,0,5,0,0,4
|
"Ivan Krušlin (krux3r)",Croatian,108,122,503,0,0,0,108,"2017-03-31 09:15:24"
|
||||||
"Irene K (Heaun)",Korean,88,75,0,25,0,0,0
|
2kaafone,Finnish,105,90,0,0,0,0,0,"2019-08-12 06:58:48"
|
||||||
"Kumar Anand (kumar0500)",Hindi,87,125,0,0,0,0,0
|
"Adam Jurkiewicz (hasztagg)",Polish,104,105,529,0,0,0,104,"2017-03-31 09:50:51"
|
||||||
Prosta4ok_ua,Ukrainian,87,84,0,1,0,0,17
|
"just a name bro (justanamebr0)",Danish,98,109,0,0,1,0,0,"2019-06-19 11:57:55"
|
||||||
"Ohad Edri (ohadalte)",Hebrew,85,79,0,0,1,3,0
|
"Nam Nguyen (namnl2706)",Vietnamese,95,137,0,0,0,0,0,"2020-08-18 23:02:33"
|
||||||
helectron,Persian,84,102,0,1,0,0,0
|
"손유정 (yuwon1213)",Korean,95,57,0,0,0,0,0,"2021-03-30 05:25:33"
|
||||||
"Radu Cebotari (wildProgrammer)",Romanian,84,92,0,1,0,0,0
|
ranmagen,Hebrew,91,78,0,0,0,0,0,"2021-02-16 05:44:31"
|
||||||
"Israa Z (sosozozo)",Arabic,79,87,0,43,11,0,3
|
LoneWanderer,"Chinese Traditional",90,137,0,4,0,0,0,"2020-09-29 05:24:48"
|
||||||
"Sofia Neves (sofiasonev)","Portuguese, Brazilian",79,84,0,1,0,0,46
|
"Vo - (voyl)","Chinese Traditional",89,126,0,0,5,0,0,"2020-09-02 23:34:42"
|
||||||
Tiralka,French,79,91,0,92,1,0,0
|
ikkaz,Indonesian,89,84,0,5,0,0,4,"2019-09-02 19:58:54"
|
||||||
"Jacob Roller (jdr28070)",Korean,79,61,0,0,0,0,0
|
"Irene K (Heaun)",Korean,88,75,0,25,0,0,0,"2020-03-16 11:31:12"
|
||||||
"Toni Mustonen (toni.mustonen)",Finnish,78,72,0,0,0,0,0
|
Prosta4ok_ua,Ukrainian,87,84,0,1,0,0,17,"2020-01-23 19:43:41"
|
||||||
"Michael (quelbs)",German,76,75,0,1,0,0,39
|
"Kumar Anand (kumar0500)",Hindi,87,125,0,0,0,0,0,"2020-11-07 02:46:09"
|
||||||
"Fauz Aladeem (topfauz)",Arabic,76,77,0,0,0,1,0
|
"Ohad Edri (ohadalte)",Hebrew,85,79,0,0,1,3,18,"2020-07-04 03:42:09"
|
||||||
RealDonald,Dutch,67,69,0,121,10,0,0
|
helectron,Persian,84,102,0,1,0,0,0,"2021-03-02 04:10:51"
|
||||||
sirekanyan,"Armenian; Russian",66,65,0,0,0,0,0
|
"Radu Cebotari (wildProgrammer)",Romanian,84,92,0,1,0,0,0,"2020-02-05 01:20:00"
|
||||||
"Константин К. (kocyak1991)",Russian,64,60,0,0,1,2,0
|
"Sofia Neves (sofiasonev)","Portuguese, Brazilian",79,84,0,1,0,0,46,"2020-03-12 18:19:46"
|
||||||
"Laura Sophie (laurasophie20)",German,62,67,0,4,0,0,0
|
"Jacob Roller (jdr28070)",Korean,79,61,0,0,0,0,0,"2020-01-03 11:36:40"
|
||||||
raden20,Indonesian,61,62,177,0,1,0,64
|
Tiralka,French,79,91,0,92,1,0,0,"2018-02-09 18:39:01"
|
||||||
"Jan Wojtecki (j4nw)",Polish,58,46,0,0,0,0,26
|
"Israa Z (sosozozo)",Arabic,79,87,0,43,12,0,3,"2017-11-27 14:10:50"
|
||||||
"Deepak Bharathi (deepakbharathi1994)",Tamil,56,107,0,0,11,4,0
|
"Toni Mustonen (toni.mustonen)",Finnish,78,72,0,0,0,0,0,"2017-09-02 05:34:12"
|
||||||
"Андрій Козицький (andriikozytskyi1108)",Ukrainian,52,52,0,0,1,0,0
|
"Fauz Aladeem (topfauz)",Arabic,76,77,0,0,0,1,0,"2020-02-21 22:46:12"
|
||||||
REMOVED_USER,Italian,51,52,0,2,0,0,0
|
"Michael (quelbs)",German,76,75,0,1,0,0,39,"2020-08-18 07:39:26"
|
||||||
govindap,"Japanese; Hindi",51,114,0,6,1,0,0
|
"Oliver Gronowski (OliverGronowski)",German,70,69,0,5,0,0,0,"2021-05-14 16:37:10"
|
||||||
"Mare Geldenhuys (mare.geldenhuys)",Afrikaans,50,57,0,0,0,0,0
|
RealDonald,Dutch,67,69,0,121,10,0,0,"2017-06-23 20:10:12"
|
||||||
"Peter Williams (williamspete001)",Japanese,49,133,0,1,0,0,3
|
sirekanyan,"Armenian; Russian",66,65,0,0,0,0,0,"2020-04-18 11:32:52"
|
||||||
"Behnood HRazy (behnoodhr)",Persian,49,70,0,0,0,0,0
|
"Константин К. (kocyak1991)",Russian,64,60,0,0,1,2,0,"2018-06-10 13:39:37"
|
||||||
J3ll3nl,Dutch,48,48,0,0,17,1,3
|
"Laura Sophie (laurasophie20)",German,62,67,0,4,0,0,0,"2018-01-06 14:21:24"
|
||||||
"tat bz (Tat_i)",German,48,56,0,55,0,0,27
|
"Alparslan Sakci (sakci)",Turkish,61,55,0,11,0,0,0,"2021-06-10 11:59:22"
|
||||||
vach,Armenian,47,36,0,0,0,0,0
|
raden20,Indonesian,61,62,177,0,1,0,64,"2017-04-09 22:04:23"
|
||||||
andowero,Czech,47,38,0,0,0,0,0
|
"Jan Wojtecki (j4nw)",Polish,58,46,0,0,0,0,26,"2017-11-02 05:42:14"
|
||||||
"Andrew Firnes (Anechan)",Russian,47,47,0,3,0,0,29
|
"Deepak Bharathi (deepakbharathi1994)",Tamil,56,107,0,0,11,4,0,"2017-09-17 08:00:31"
|
||||||
"Coni Ragni (coni2ragnii)",Spanish,46,46,0,0,0,0,0
|
"Peter Williams (williamspete001)",Japanese,55,147,0,2,0,0,3,"2020-01-01 13:17:44"
|
||||||
"Rahul Shishodia (rahul.shishodia.10)",Hindi,46,85,0,6,0,0,0
|
"Андрій Козицький (andriikozytskyi1108)",Ukrainian,52,52,0,0,1,0,0,"2018-10-22 01:45:08"
|
||||||
Cp0204,"Chinese Simplified",45,72,0,0,0,0,0
|
"Nil riera (nilriera2000)",Catalan,52,61,0,1,0,0,0,"2021-06-22 16:37:44"
|
||||||
"cc (cavaz)",Italian,44,41,0,0,0,0,0
|
REMOVED_USER,Italian,51,52,0,2,0,0,0,"2017-08-21 05:15:31"
|
||||||
"Kamil Dziadek (prso94)",Polish,43,39,0,0,2,0,0
|
govindap,"Japanese; Hindi",51,114,0,6,1,0,0,"2020-06-02 20:15:52"
|
||||||
"Boban Jagertraum (boban40)",Czech,43,38,0,2,1,1,0
|
"Mare Geldenhuys (mare.geldenhuys)",Afrikaans,50,57,0,0,0,0,0,"2017-10-20 18:00:14"
|
||||||
andreea.muscalagiu,Romanian,42,52,0,1,0,0,0
|
"Behnood HRazy (behnoodhr)",Persian,49,70,0,0,0,0,0,"2017-11-25 10:57:21"
|
||||||
"Me Me (gentelwom)",Arabic,42,40,0,0,0,0,0
|
"tat bz (Tat_i)",German,48,56,0,55,0,0,27,"2021-03-26 05:12:54"
|
||||||
"Balázs Keresztury (belidzs)",Hungarian,42,41,501,0,7,0,38
|
J3ll3nl,Dutch,48,48,0,0,17,1,3,"2017-03-31 11:56:09"
|
||||||
MStefanov,Bulgarian,41,55,2,0,2,0,2
|
"Andrew Firnes (Anechan)",Russian,47,47,0,3,0,0,29,"2019-09-18 09:51:59"
|
||||||
"Ali Zali (stm19951995)",Persian,40,60,0,0,0,0,0
|
andowero,Czech,47,38,0,0,0,0,0,"2020-01-20 02:29:01"
|
||||||
"Sofia Veijonen (Suklaa) (sofia.veijonen)",Finnish,40,33,0,0,0,0,0
|
vach,Armenian,47,36,0,0,0,0,0,"2020-04-18 16:53:12"
|
||||||
dusanstrgar,Slovenian,39,41,0,0,0,0,0
|
"Rahul Shishodia (rahul.shishodia.10)",Hindi,46,85,0,6,5,1,0,"2018-12-24 22:18:19"
|
||||||
"Limin Lu (liminlu)","Chinese Simplified",39,79,503,0,0,0,39
|
"Coni Ragni (coni2ragnii)",Spanish,46,46,0,0,0,0,0,"2021-02-28 20:18:37"
|
||||||
Anshoe,Tamil,38,65,0,14,0,0,0
|
Cp0204,"Chinese Simplified",45,72,0,0,0,0,0,"2019-08-20 11:04:27"
|
||||||
anasshm,Arabic,37,36,0,9,0,0,0
|
"cc (cavaz)",Italian,44,41,0,0,0,0,0,"2017-04-01 04:21:08"
|
||||||
hrexen,Armenian,37,37,0,0,0,0,0
|
"Boban Jagertraum (boban40)",Czech,43,38,0,2,1,1,0,"2017-03-31 09:39:16"
|
||||||
REMOVED_USER,Swedish,36,33,0,5,1,0,0
|
"Kamil Dziadek (prso94)",Polish,43,39,0,0,2,0,0,"2020-04-06 17:12:06"
|
||||||
"Abdulrahman (D7M)",Arabic,36,39,0,0,0,0,0
|
"Me Me (gentelwom)",Arabic,42,40,0,0,0,0,0,"2020-11-08 20:44:01"
|
||||||
"長谷川知里 (chase0213)",Japanese,34,138,0,13,0,0,24
|
"Ali Elsheikh (aelsheikh1987)",Arabic,42,41,0,0,0,0,0,"2021-06-16 10:17:26"
|
||||||
"Piotr Łuczyński (peterluczynski)",Polish,33,30,0,6,5,0,2
|
"Balázs Keresztury (belidzs)",Hungarian,42,41,501,0,7,0,38,"2017-04-06 02:40:24"
|
||||||
"milad farahani (miladfarmahini90)",Persian,33,44,0,18,0,0,3
|
andreea.muscalagiu,Romanian,42,52,0,1,0,0,0,"2017-10-22 07:19:49"
|
||||||
"Luis E. Perichon (luisperichon)",Spanish,33,40,0,104,0,0,0
|
"Mateusz Duda (MateuszDuda)",Polish,42,42,0,0,0,0,0,"2021-08-17 11:27:11"
|
||||||
andriikozytskyi2625,Ukrainian,31,23,0,0,0,0,0
|
MStefanov,Bulgarian,41,55,2,0,2,0,2,"2017-03-31 16:09:02"
|
||||||
JoeLi,"Chinese Traditional",31,70,0,12,0,0,24
|
"Sofia Veijonen (Suklaa) (sofia.veijonen)",Finnish,40,33,0,0,0,0,0,"2018-03-07 09:24:22"
|
||||||
Moastafa,Arabic,31,25,0,0,0,0,0
|
"Ali Zali (stm19951995)",Persian,40,60,0,0,0,0,0,"2020-03-23 19:57:26"
|
||||||
REMOVED_USER,Russian,31,30,0,2,4,0,3
|
"Limin Lu (liminlu)","Chinese Simplified",39,79,503,0,0,0,39,"2017-03-31 09:49:35"
|
||||||
"hamza gamal (hamzagamal4444)",Arabic,31,28,0,0,0,0,0
|
dusanstrgar,Slovenian,39,41,0,0,0,0,0,"2017-03-31 10:30:28"
|
||||||
yancyn,"Chinese Simplified",30,40,0,0,0,0,0
|
Anshoe,Tamil,38,65,0,14,0,0,0,"2018-01-02 11:06:52"
|
||||||
"비니몬youtube (khj01025276475)",Korean,29,25,0,0,0,0,0
|
anasshm,Arabic,37,36,0,9,0,0,0,"2019-01-27 04:07:22"
|
||||||
"Ruud Schouten (ruudschouten)",Dutch,29,32,0,41,3,0,0
|
hrexen,Armenian,37,37,0,0,0,0,0,"2020-12-09 02:30:34"
|
||||||
"Guillaume Collic (gcollic)",French,26,28,0,126,11,0,0
|
"Abdulrahman (D7M)",Arabic,36,39,0,0,0,0,0,"2020-01-29 18:55:30"
|
||||||
"Niraj Yadav (neverforgetniraj)",Hindi,26,48,0,0,0,0,0
|
"Maria Chushnyakova (maria.ch)",Russian,36,31,0,3,0,0,0,"2021-08-17 03:23:58"
|
||||||
"Radoslaw Biernacki (radoslaw.biernacki)",Polish,26,24,0,8,0,0,1
|
REMOVED_USER,Swedish,36,33,0,5,1,0,0,"2018-09-29 17:47:33"
|
||||||
"Jonny I (jonny99dj)",Italian,26,26,0,5,0,0,0
|
"長谷川知里 (chase0213)",Japanese,34,138,0,13,0,0,24,"2018-12-14 10:52:44"
|
||||||
"Aaron Dalton (Perlkonig)",French,26,25,0,141,1,0,0
|
"Luis E. Perichon (luisperichon)",Spanish,33,40,0,104,0,0,0,"2017-09-04 13:46:06"
|
||||||
"Eddie (eddieattaboy)","Chinese Traditional",25,34,0,1,0,0,0
|
"Piotr Łuczyński (peterluczynski)",Polish,33,30,0,6,5,0,2,"2020-01-29 07:27:40"
|
||||||
Pan_Filuta,Czech,25,21,0,5,4,0,3
|
"milad farahani (miladfarmahini90)",Persian,33,44,0,18,1,0,3,"2017-08-31 16:09:00"
|
||||||
"eduard83 (barbany.eduard)",Catalan,24,25,0,2,0,0,0
|
andriikozytskyi2625,Ukrainian,31,23,0,0,0,0,0,"2019-07-08 00:16:41"
|
||||||
"Ľuboš Čaky (lubos.caky)",Slovak,23,22,0,0,0,0,0
|
Moastafa,Arabic,31,25,0,0,0,0,0,"2020-07-06 11:37:53"
|
||||||
"Caner Başaran (basarancaner)",Turkish,23,21,0,0,20,0,0
|
"hamza gamal (hamzagamal4444)",Arabic,31,28,0,0,0,0,0,"2020-08-03 15:23:34"
|
||||||
hodanli,Turkish,22,26,0,0,1,0,0
|
REMOVED_USER,Russian,31,30,0,2,4,0,3,"2018-12-03 23:55:47"
|
||||||
"Neeraj Verma (verma.neeraj.in)",Hindi,22,37,0,0,1,0,0
|
JoeLi,"Chinese Traditional",31,70,0,12,0,0,24,"2017-06-25 05:32:48"
|
||||||
"Alcarkse (alexis.brusle)",French,21,25,0,7,11,0,0
|
yancyn,"Chinese Simplified",30,40,0,0,0,0,1,"2020-05-18 20:06:03"
|
||||||
"Shashwat (goforgold)",Hindi,20,33,0,0,0,0,0
|
"비니몬youtube (khj01025276475)",Korean,29,25,0,0,0,0,0,"2020-02-09 20:44:35"
|
||||||
"사자솥 (toke1597)",Korean,19,19,0,0,0,0,0
|
"Ruud Schouten (ruudschouten)",Dutch,29,32,0,41,3,0,0,"2017-07-22 17:49:17"
|
||||||
"İsa Eş (IsaEs)",Turkish,19,17,0,0,6,1,0
|
"Aaron Dalton (Perlkonig)",French,26,25,0,141,1,0,0,"2018-01-14 12:58:19"
|
||||||
sheeCesu,French,19,18,0,48,2,0,0
|
"Niraj Yadav (neverforgetniraj)",Hindi,26,48,0,0,0,0,0,"2017-04-11 02:26:50"
|
||||||
can13,Turkish,19,14,0,8,0,0,0
|
"Guillaume Collic (gcollic)",French,26,28,0,126,11,0,0,"2017-05-05 16:13:00"
|
||||||
"Magdalena Urbańczyk (madziia139)",Polish,19,19,0,0,0,0,0
|
"Radoslaw Biernacki (radoslaw.biernacki)",Polish,26,24,0,8,0,0,1,"2020-12-15 17:55:31"
|
||||||
axikman11111,Uyghur,18,19,0,0,0,0,0
|
"Jonny I (jonny99dj)",Italian,26,26,0,5,0,0,0,"2017-10-07 07:35:34"
|
||||||
Adeline31,French,17,20,0,3,0,0,0
|
"Eddie (eddieattaboy)","Chinese Traditional",25,34,0,1,0,0,0,"2020-11-04 21:48:05"
|
||||||
"Hoon Jung (hooni100)",Korean,17,10,0,0,0,0,0
|
Pan_Filuta,Czech,25,21,0,5,4,0,3,"2017-04-29 12:55:14"
|
||||||
"Ceara Lopez (cealopez)",Spanish,17,18,0,0,5,1,0
|
"eduard83 (barbany.eduard)",Catalan,24,25,0,2,0,0,0,"2019-06-26 14:59:47"
|
||||||
takoyakibento,Korean,17,13,0,3,0,0,0
|
"Ľuboš Čaky (lubos.caky)",Slovak,23,22,0,0,0,0,0,"2019-07-02 16:51:44"
|
||||||
bretzel15,German,16,20,0,0,0,0,0
|
"Caner Başaran (basarancaner)",Turkish,23,21,0,0,21,0,0,"2017-04-09 06:34:59"
|
||||||
engineeringforgood,Russian,16,15,0,0,0,0,0
|
hodanli,Turkish,22,26,0,0,1,0,0,"2017-11-03 14:33:41"
|
||||||
"Şamil Ateşoğlu (m.samilatesoglu)",Turkish,16,22,0,11,6,3,0
|
gnu-ewm,Polish,22,23,0,6,0,0,0,"2021-02-24 03:42:01"
|
||||||
DebatablySane,Bulgarian,16,15,0,48,0,0,0
|
"Neeraj Verma (verma.neeraj.in)",Hindi,22,37,0,0,1,0,0,"2018-07-23 07:16:41"
|
||||||
"Bhava Tharini (bhavidanush)",Tamil,15,37,0,0,0,0,0
|
"Alcarkse (alexis.brusle)",French,21,25,0,7,11,0,0,"2017-08-06 09:32:29"
|
||||||
"Anastasia Borchuk (al2.borchuk)",Russian,14,14,0,0,0,0,0
|
olbotta,Italian,20,25,0,2,0,0,0,"2021-06-06 04:22:55"
|
||||||
"EuiHo Hwang (euiho.hwang)",Korean,14,16,0,0,0,0,0
|
"Shashwat (goforgold)",Hindi,20,33,0,0,0,0,0,"2020-05-17 10:34:42"
|
||||||
iamsurajbobade,Hindi,14,30,0,0,0,0,0
|
"Magdalena Urbańczyk (madziia139)",Polish,19,19,0,0,0,0,0,"2017-10-21 03:01:04"
|
||||||
"Zeynep Esen (nezihaesen50)",Turkish,14,13,0,0,0,0,0
|
sheeCesu,French,19,18,0,48,4,0,0,"2017-12-21 17:01:39"
|
||||||
"Fikret Bilici (fikretbilici)",Turkish,14,13,0,0,0,0,0
|
can13,Turkish,19,14,0,8,0,0,0,"2021-01-03 10:39:03"
|
||||||
"Zeeshan Rabbani (Zeera)",Hindi,14,25,0,0,0,0,0
|
"İsa Eş (IsaEs)",Turkish,19,17,0,0,6,1,0,"2017-06-20 07:30:22"
|
||||||
"Sanji Vinsmock (mukanzhanbolat4)",Russian,14,14,0,0,0,0,0
|
"사자솥 (toke1597)",Korean,19,19,0,0,0,0,0,"2020-02-04 13:36:11"
|
||||||
"Nenad Vukotic (vukotic.nenad)","Serbian (Cyrillic)",13,13,0,1,2,6,0
|
axikman11111,Uyghur,18,19,0,0,0,0,0,"2018-10-13 12:25:31"
|
||||||
"Uwe Mönks (schirinowski)",German,13,12,0,0,0,0,0
|
"Hoon Jung (hooni100)",Korean,17,10,0,0,0,0,0,"2021-01-03 02:26:54"
|
||||||
"Dave (xdave)",Hungarian,13,11,0,0,0,0,0
|
"Ceara Lopez (cealopez)",Spanish,17,18,0,0,5,1,0,"2017-08-22 22:56:13"
|
||||||
soura2,Arabic,12,13,0,0,0,0,0
|
takoyakibento,Korean,17,13,0,3,0,0,0,"2020-08-01 08:44:15"
|
||||||
"shreyas (techiespace)",Hindi,12,20,0,0,0,0,0
|
Adeline31,French,17,20,0,3,0,0,0,"2019-12-06 00:00:11"
|
||||||
"Jo Chuang (josephch405)","Chinese Traditional",11,24,0,0,0,0,11
|
engineeringforgood,Russian,16,15,0,0,0,0,16,"2021-01-22 03:32:35"
|
||||||
Vmrc,French,11,12,0,2,0,0,0
|
bretzel15,German,16,20,0,0,0,0,0,"2020-04-06 02:49:14"
|
||||||
"sathvic k (sathvictripleseven)",Telugu,10,17,0,0,0,0,0
|
"Şamil Ateşoğlu (m.samilatesoglu)",Turkish,16,22,0,11,6,3,0,"2017-07-05 18:37:08"
|
||||||
"Edwin van Rooij (edwinvrooij)",Dutch,10,13,0,17,0,0,0
|
DebatablySane,Bulgarian,16,15,0,48,0,0,0,"2017-07-10 15:13:18"
|
||||||
"Brian Camacho (bmcamacho)",Polish,10,11,0,0,1,0,0
|
"Bhava Tharini (bhavidanush)",Tamil,15,37,0,0,0,0,0,"2019-10-09 05:43:11"
|
||||||
"Ahmed Mosaad (ahmed.mosaad2018)",Arabic,10,12,0,6,0,0,0
|
"Zeynep Esen (nezihaesen50)",Turkish,14,13,0,0,0,0,0,"2020-01-28 07:05:15"
|
||||||
"Mihael Wagner (miha.wagner)",Slovenian,10,9,0,7,0,0,0
|
"Fikret Bilici (fikretbilici)",Turkish,14,13,0,0,0,0,0,"2020-06-21 17:16:11"
|
||||||
"Anonymous edgy nerd (yamentaad)",Arabic,10,13,0,1,0,0,0
|
"EuiHo Hwang (euiho.hwang)",Korean,14,16,0,0,0,0,0,"2020-06-23 02:40:01"
|
||||||
"Martin Vostatek (martinvostatek)",Czech,9,8,0,32,2,0,0
|
"Zeeshan Rabbani (Zeera)",Hindi,14,25,0,0,0,0,0,"2020-09-15 11:32:01"
|
||||||
"Sourire Lucide (sourire_lucide)",Russian,9,10,0,0,1,0,0
|
"Faiz Ahamed (faiznewton)",Tamil,14,31,0,0,0,0,0,"2021-05-06 23:06:46"
|
||||||
"Suhaili Hassan (kucingsyg96)",Indonesian,9,10,0,0,0,0,0
|
"Anastasia Borchuk (al2.borchuk)",Russian,14,14,0,0,0,0,0,"2020-04-14 13:22:49"
|
||||||
"Seweryn Piotrowski (Draxxsx)",Polish,9,10,0,0,19,0,0
|
iamsurajbobade,Hindi,14,30,0,0,0,0,0,"2018-05-21 11:23:27"
|
||||||
Rex123,Persian,8,8,0,0,0,0,0
|
"Sanji Vinsmock (mukanzhanbolat4)",Russian,14,14,0,0,0,0,0,"2020-02-18 12:38:54"
|
||||||
"Konstantin (KZhidovinov)",Russian,7,7,0,0,0,0,0
|
"Maro Chr (caprisunglasses)",Greek,14,17,0,0,0,0,0,"2021-08-17 06:53:33"
|
||||||
pkorove,Greek,7,7,0,0,0,0,0
|
"Nenad Vukotic (vukotic.nenad)","Serbian (Cyrillic)",13,13,0,1,2,6,0,"2019-01-31 14:29:15"
|
||||||
ftfoi,Norwegian,7,6,0,0,0,0,0
|
"Uwe Mönks (schirinowski)",German,13,12,0,0,0,0,0,"2021-02-18 04:00:41"
|
||||||
"Андрій Козицький (andriikozytskyi3807)",Ukrainian,7,12,0,2,0,0,0
|
"Dave (xdave)",Hungarian,13,11,0,0,0,0,0,"2020-03-02 20:56:50"
|
||||||
"Vladimir Pavlychev (KeyJoo)",Russian,7,9,0,0,0,0,0
|
soura2,Arabic,12,13,0,0,0,0,0,"2020-01-13 19:23:47"
|
||||||
"Andrey ZaXeLoN (waragaa)",Russian,7,7,0,8,1,0,0
|
"shreyas (techiespace)",Hindi,12,20,0,0,0,0,0,"2018-06-10 01:14:26"
|
||||||
erfan2927,Persian,6,6,0,0,0,0,0
|
"Sonu Sharma (riteetude)",Hindi,11,23,0,0,0,0,0,"2021-05-30 19:38:00"
|
||||||
dragnus,Arabic,6,6,0,1,1,0,0
|
Vmrc,French,11,12,0,2,0,0,0,"2020-11-02 05:35:06"
|
||||||
"Sam (SorodonSorodon)",German,6,6,0,13,0,0,0
|
"Jo Chuang (josephch405)","Chinese Traditional",11,24,0,0,0,0,11,"2017-06-16 20:21:06"
|
||||||
ChloeLiang,Japanese,6,22,0,0,1,0,3
|
"sathvic k (sathvictripleseven)",Telugu,10,17,0,0,0,0,0,"2020-09-11 08:11:32"
|
||||||
"Burak Ceylan (7burakceylan)",Turkish,6,6,0,0,0,0,0
|
"Brian Camacho (bmcamacho)",Polish,10,11,0,0,1,0,0,"2020-08-03 02:27:28"
|
||||||
"닉닉 (seohu9466)",Korean,6,14,0,13,0,0,0
|
"Anonymous edgy nerd (yamentaad)",Arabic,10,13,0,1,0,0,0,"2018-05-06 09:23:57"
|
||||||
"Matthias Joly (joly.matt12)",French,5,8,0,27,1,0,0
|
"Edwin van Rooij (edwinvrooij)",Dutch,10,13,0,17,0,0,0,"2018-11-05 03:59:10"
|
||||||
"Guerra Ivaneth (rossanaiva-04)",Spanish,5,7,0,0,0,0,0
|
"Mihael Wagner (miha.wagner)",Slovenian,10,9,0,7,0,0,0,"2017-10-18 18:26:29"
|
||||||
"Manuel Tassi (Mannivu)",Italian,5,6,0,0,0,0,0
|
"Ahmed Mosaad (ahmed.mosaad2018)",Arabic,10,12,0,6,0,0,0,"2021-02-03 18:45:43"
|
||||||
"Micaela Pighin (micaelapiighin)",Spanish,5,6,0,1,0,0,0
|
"Suhaili Hassan (kucingsyg96)",Indonesian,9,10,0,0,0,0,0,"2018-06-10 11:55:09"
|
||||||
"Дмитрий Хапенков (d.khapenkov)",Russian,5,5,0,6,4,0,2
|
"Martin Vostatek (martinvostatek)",Czech,9,8,0,32,2,0,0,"2019-01-21 13:52:36"
|
||||||
andriikozytskyi2018,Ukrainian,5,5,0,0,0,0,0
|
"Seweryn Piotrowski (Draxxsx)",Polish,9,10,0,0,19,0,0,"2020-01-02 09:55:48"
|
||||||
"Neko123 (emandic11)","Serbian (Cyrillic)",4,4,0,57,0,0,0
|
"Sourire Lucide (sourire_lucide)",Russian,9,10,0,0,1,0,0,"2018-03-22 01:37:55"
|
||||||
marmo,German,4,4,0,0,0,0,0
|
Rex123,Persian,8,8,0,0,0,0,0,"2017-07-01 00:47:42"
|
||||||
"Eli Besirov (elibesirov07)",Turkish,4,4,0,0,0,0,0
|
"Andrey ZaXeLoN (waragaa)",Russian,7,7,0,8,1,0,0,"2017-09-18 21:37:42"
|
||||||
"Lopo Isaac Fernández (rocapata)",Spanish,4,3,0,0,0,0,0
|
"Konstantin (KZhidovinov)",Russian,7,7,0,0,0,0,0,"2020-01-29 13:35:12"
|
||||||
bziuum,Polish,4,4,0,0,0,0,0
|
"Андрій Козицький (andriikozytskyi3807)",Ukrainian,7,12,0,2,0,0,0,"2020-09-26 20:31:56"
|
||||||
"Thoum Ptrgnt (thomas.petrignet)",French,3,3,0,2,0,3,0
|
ftfoi,Norwegian,7,6,0,0,0,0,0,"2020-04-11 20:42:35"
|
||||||
"Vagner Roberto (vagner.trompete)","Portuguese, Brazilian",3,3,0,0,0,0,0
|
"Vladimir Pavlychev (KeyJoo)",Russian,7,9,0,0,0,0,0,"2017-12-18 02:46:56"
|
||||||
"Unnie Here (Carb)",Hindi,3,8,0,0,0,0,0
|
pkorove,Greek,7,7,0,0,0,0,0,"2020-03-07 11:36:12"
|
||||||
carsten_kafke,German,3,3,0,43,0,0,3
|
erfan2927,Persian,6,6,0,0,0,0,0,"2018-04-09 02:12:44"
|
||||||
Magidxz,Arabic,3,3,0,0,0,0,0
|
"Burak Ceylan (7burakceylan)",Turkish,6,6,0,0,0,0,0,"2018-05-20 17:24:19"
|
||||||
atomjani,Hungarian,3,3,0,0,0,0,0
|
"Sam (SorodonSorodon)",German,6,6,0,13,0,0,0,"2017-04-14 11:09:27"
|
||||||
"Péter Bernát (bernatp)",Hungarian,3,2,0,0,0,0,0
|
"닉닉 (seohu9466)",Korean,6,14,0,13,0,0,0,"2017-10-09 23:08:15"
|
||||||
"Igor Piskun (i_piskun)",Ukrainian,3,3,0,0,0,0,0
|
"Sarita Cajas (sarayanacajas)",Spanish,6,4,0,0,1,0,0,"2021-05-14 14:27:59"
|
||||||
"joabe gabriel (joabegabrielcma1)","Portuguese, Brazilian",3,4,0,0,0,0,0
|
ChloeLiang,Japanese,6,22,0,0,1,0,3,"2017-08-08 05:02:59"
|
||||||
"Oleg Kogut (kogut_oleg)",Ukrainian,3,3,0,0,0,0,0
|
"Manuel Tassi (Mannivu)",Italian,5,6,0,0,0,0,0,"2021-01-03 11:00:33"
|
||||||
"Andrea Bianchi (andreawhite1597)",Italian,3,1,0,1,0,0,0
|
"Tomáš Hrabáček (Hrabyyy)",Czech,5,3,0,0,0,0,0,"2021-05-27 11:58:11"
|
||||||
"Gabriel Cavalcante (gabrielc.alves14)","Portuguese, Brazilian",3,4,0,0,0,0,0
|
"Guerra Ivaneth (rossanaiva-04)",Spanish,5,7,0,0,0,0,0,"2019-02-03 16:48:59"
|
||||||
REMOVED_USER,"Portuguese, Brazilian",3,4,0,0,0,0,0
|
"Дмитрий Хапенков (d.khapenkov)",Russian,5,5,0,6,4,0,2,"2018-01-06 23:00:43"
|
||||||
"Martin Zimdahl (zimdahlmartin)",Swedish,3,2,0,0,1,0,3
|
"Matthias Joly (joly.matt12)",French,5,8,0,27,1,0,0,"2017-08-28 09:53:59"
|
||||||
"Hiohana Rilary (hiohanarilary)","Portuguese, Brazilian",3,4,0,0,0,0,0
|
"Micaela Pighin (micaelapiighin)",Spanish,5,6,0,1,0,0,0,"2019-10-09 23:32:42"
|
||||||
"Sarath S (CyberShark)",Tamil,3,7,0,0,0,0,0
|
andriikozytskyi2018,Ukrainian,5,5,0,0,0,0,0,"2017-09-03 05:24:43"
|
||||||
"Cláudio Bernardo (claudiobernardo.ti)","Portuguese, Brazilian",3,4,0,1,0,0,0
|
marmo,German,4,4,0,0,0,0,0,"2021-01-13 01:16:35"
|
||||||
"hesamiranii (esam.matouri)",Persian,2,2,0,0,0,0,0
|
"Eli Besirov (elibesirov07)",Turkish,4,4,0,0,0,0,0,"2019-03-25 07:12:34"
|
||||||
"조화정 (yunjoo337)",Korean,2,2,0,0,0,0,0
|
"Lopo Isaac Fernández (rocapata)",Spanish,4,3,0,0,0,0,0,"2018-09-20 11:46:22"
|
||||||
"Walid Baazia (walidbaazia2005)",Arabic,2,1,0,0,0,0,0
|
bziuum,Polish,4,4,0,0,0,0,0,"2020-09-01 09:08:01"
|
||||||
LNDDYL,"Chinese Traditional",2,4,0,0,0,0,2
|
"Neko123 (emandic11)","Serbian (Cyrillic)",4,4,0,57,0,0,0,"2021-04-21 15:33:29"
|
||||||
REMOVED_USER,Ukrainian,2,2,0,0,0,0,0
|
Magidxz,Arabic,3,3,0,0,0,0,0,"2021-01-05 05:02:54"
|
||||||
"fatemeh s (fargolseifoori3)",Persian,2,2,0,0,0,0,0
|
"mohammadali barati (mabaraty)",Persian,3,3,0,0,0,0,0,"2021-07-10 05:54:44"
|
||||||
"أم محمد تقي (souadboudia19)",Arabic,2,2,0,0,0,0,0
|
"Sarath S (CyberShark)",Tamil,3,7,0,0,0,0,0,"2020-08-27 22:43:16"
|
||||||
"Alex Stein (diefaust1993)",Russian,2,2,0,4,4,0,2
|
"Unnie Here (Carb)",Hindi,3,8,0,0,0,0,0,"2020-03-18 23:34:35"
|
||||||
"Danial Agh (danialagh)",Persian,2,3,0,0,0,0,0
|
REMOVED_USER,"Portuguese, Brazilian",3,4,0,0,0,0,0,"2018-11-18 09:02:37"
|
||||||
omerfarukbas,Turkish,2,3,0,19,2,0,0
|
"Thoum Ptrgnt (thomas.petrignet)",French,3,3,0,2,0,3,0,"2017-09-23 19:25:52"
|
||||||
"Valerij D (vala.dobler)",German,2,2,0,0,0,0,0
|
"Oleg Kogut (kogut_oleg)",Ukrainian,3,3,0,0,0,0,0,"2018-12-28 14:31:02"
|
||||||
"Naveen jai krishna (njsbpolymer1)",Tamil,2,5,0,0,0,0,0
|
carsten_kafke,German,3,3,0,43,0,0,3,"2017-10-27 13:27:47"
|
||||||
"Balthazar Aubard (Balatzar)",French,2,5,0,0,1,0,0
|
"Vagner Roberto (vagner.trompete)","Portuguese, Brazilian",3,3,0,0,0,0,0,"2017-12-30 17:54:26"
|
||||||
"FAy FAy (fayfayfay52)","Chinese Traditional",2,5,0,0,0,0,0
|
"Igor Piskun (i_piskun)",Ukrainian,3,3,0,0,0,0,0,"2018-01-19 15:20:27"
|
||||||
Soroor_SI,Persian,2,2,0,0,0,0,0
|
"Andrea Bianchi (andreawhite1597)",Italian,3,1,0,1,0,0,0,"2018-01-21 17:45:48"
|
||||||
chavs1997,Russian,2,2,0,9,0,0,0
|
"Cláudio Bernardo (claudiobernardo.ti)","Portuguese, Brazilian",3,4,0,1,0,0,0,"2019-01-08 14:41:10"
|
||||||
amei,"Portuguese, Brazilian",2,2,0,0,0,0,0
|
"Hiohana Rilary (hiohanarilary)","Portuguese, Brazilian",3,4,0,0,0,0,0,"2019-07-31 20:42:20"
|
||||||
"Ilyas Fekhar (il47yas)",Arabic,2,2,0,0,0,0,0
|
"joabe gabriel (joabegabrielcma1)","Portuguese, Brazilian",3,4,0,0,0,0,0,"2018-08-21 09:08:59"
|
||||||
"Ali Zaida (alizaeda92)",Arabic,2,2,0,0,0,0,0
|
"Péter Bernát (bernatp)",Hungarian,3,2,0,0,0,0,0,"2019-11-30 15:50:33"
|
||||||
gnu-ewm,Polish,1,1,0,6,0,0,0
|
"Martin Zimdahl (zimdahlmartin)",Swedish,3,2,0,0,1,0,3,"2018-09-15 04:39:22"
|
||||||
"Luca Gori (grolcu)",Italian,1,2,0,0,0,0,0
|
"Gabriel Cavalcante (gabrielc.alves14)","Portuguese, Brazilian",3,4,0,0,0,0,0,"2018-08-06 22:24:54"
|
||||||
"Alan Jeon (skyisle)",Korean,1,2,0,8,0,0,0
|
atomjani,Hungarian,3,3,0,0,0,0,0,"2019-01-19 00:49:25"
|
||||||
iSoron2,"Portuguese, Brazilian",1,1,0,0,0,0,0
|
"أم محمد تقي (souadboudia19)",Arabic,2,2,0,0,0,0,0,"2020-06-13 15:24:17"
|
||||||
"Anastasiia Bondarenko (nastasya.bondarenko.97)",Russian,1,1,0,0,0,0,0
|
"FAy FAy (fayfayfay52)","Chinese Traditional",2,5,0,0,0,0,0,"2017-10-06 08:53:21"
|
||||||
"Patrick Pimenta (trickap1)","Portuguese, Brazilian",1,1,0,0,0,0,0
|
chavs1997,Russian,2,2,0,9,0,0,0,"2018-05-18 16:58:19"
|
||||||
axd,Spanish,1,1,0,15,0,0,0
|
Soroor_SI,Persian,2,2,0,0,0,0,0,"2018-06-10 06:28:27"
|
||||||
jonesses,German,1,1,0,1,0,0,1
|
"Ilyas Fekhar (il47yas)",Arabic,2,2,0,0,0,0,0,"2018-04-17 22:00:41"
|
||||||
"박찌 (perpact20)",Korean,1,1,0,0,0,0,0
|
"hesamiranii (esam.matouri)",Persian,2,2,0,0,0,0,0,"2018-09-22 16:33:36"
|
||||||
"Kan Black (kanblack.va)",Vietnamese,1,2,0,0,0,1,0
|
"fatemeh s (fargolseifoori3)",Persian,2,2,0,0,0,0,0,"2019-01-31 12:06:57"
|
||||||
REMOVED_USER,Russian,1,2,0,6,1,0,1
|
amei,"Portuguese, Brazilian",2,2,0,0,0,0,0,"2018-04-19 19:42:28"
|
||||||
"Wibi Cahyo (wbcahyoh)",Indonesian,1,3,0,0,0,0,0
|
"Naveen jai krishna (njsbpolymer1)",Tamil,2,5,0,0,0,0,0,"2020-01-10 14:19:41"
|
||||||
"Anton (tT0NG)","Chinese Traditional",1,2,0,0,0,0,1
|
"Danial Agh (danialagh)",Persian,2,3,0,0,0,0,0,"2019-03-30 13:24:16"
|
||||||
"Maria Fefelova (mashafefel)",Russian,1,1,0,0,0,0,0
|
"Walid Baazia (walidbaazia2005)",Arabic,2,1,0,0,0,0,0,"2021-01-27 12:47:34"
|
||||||
Itch,,0,0,0,0,0,0,0
|
"Ali Zaida (alizaeda92)",Arabic,2,2,0,0,0,0,0,"2019-12-01 11:47:00"
|
||||||
"Muhammet Furkan ALMACI (furkan.almaci)",Turkish,0,0,0,1,0,0,0
|
LNDDYL,"Chinese Traditional",2,4,0,0,0,0,2,"2018-04-22 04:00:19"
|
||||||
Sandhu564.,,0,0,0,0,0,0,0
|
"Ño Bí Tã (pt614553)",Arabic,2,8,0,1,0,0,0,"2021-05-22 20:41:01"
|
||||||
"Quentin Hibon (hiq)",,0,0,0,0,0,0,0
|
"Judith Ayala (Azul1612)",Spanish,2,1,0,0,0,1,0,"2021-05-18 17:07:19"
|
||||||
mushin,,0,0,0,0,0,0,0
|
REMOVED_USER,Ukrainian,2,2,0,0,0,0,0,"2017-06-15 12:24:44"
|
||||||
"Balaji Jayaraman (jkbalaji1103)",,0,0,0,0,0,0,0
|
"Valerij D (vala.dobler)",German,2,2,0,0,0,0,0,"2018-09-22 09:38:27"
|
||||||
"Wellington Ribeiro (wellington.rib)",,0,0,0,0,0,0,0
|
"Alex Stein (diefaust1993)",Russian,2,2,0,4,4,0,2,"2017-07-13 06:56:17"
|
||||||
"Javid IRAN (twitteriran98)",Persian,0,0,0,1,0,0,0
|
"조화정 (yunjoo337)",Korean,2,2,0,0,0,0,0,"2019-06-16 22:25:31"
|
||||||
"박인호 (wphestiraid)",Korean,0,0,0,2,0,0,0
|
omerfarukbas,Turkish,2,3,0,19,2,0,0,"2017-08-14 16:10:35"
|
||||||
"Ahmed Nazir (ahmednazir333)",,0,0,0,0,0,0,0
|
"Balthazar Aubard (Balatzar)",French,2,5,0,0,1,0,0,"2017-09-23 01:42:57"
|
||||||
dimateos,,0,0,0,0,0,0,0
|
"Luca Gori (grolcu)",Italian,1,2,0,0,0,0,0,"2020-09-26 23:26:15"
|
||||||
AhmedDz,Arabic,0,0,0,1,0,0,0
|
axd,Spanish,1,1,0,15,0,0,0,"2017-09-12 05:48:51"
|
||||||
"reza golestanzadeh (reza.golestanzadeh)",Persian,0,0,0,1,0,0,0
|
iSoron2,"Portuguese, Brazilian",1,1,0,0,0,0,0,"2017-03-18 17:56:29"
|
||||||
"Petros Bleyan (coolbleyan)",Russian,0,0,0,14,0,0,0
|
REMOVED_USER,Russian,1,2,0,6,1,0,1,"2019-12-26 05:37:01"
|
||||||
Kamalakannan,,0,0,0,0,0,0,0
|
"Wibi Cahyo (wbcahyoh)",Indonesian,1,3,0,0,0,0,0,"2017-12-14 06:35:58"
|
||||||
"Dagna Q (dagnaq)",,0,0,0,0,0,0,0
|
jonesses,German,1,1,0,1,0,0,1,"2021-01-01 08:03:18"
|
||||||
"Thomas Orlita (Thomas995)",Czech,0,0,0,1,0,0,0
|
"Anton (tT0NG)","Chinese Traditional",1,2,0,0,0,0,1,"2017-07-06 14:18:39"
|
||||||
Fazy1380,,0,0,0,0,0,0,0
|
"박찌 (perpact20)",Korean,1,1,0,0,0,0,0,"2018-02-10 10:11:44"
|
||||||
"Rivo Zängov (Eraser)",,0,0,0,0,0,0,0
|
"Alan Jeon (skyisle)",Korean,1,2,0,8,0,0,0,"2018-01-09 10:46:00"
|
||||||
T-v-Gerwen,Dutch,0,0,0,47,0,0,0
|
"Maria Fefelova (mashafefel)",Russian,1,1,0,0,0,0,0,"2019-05-18 02:03:56"
|
||||||
"عبد الناصر سعيد الثبيتي (asaeed)",,0,0,0,0,0,0,0
|
"Anastasiia Bondarenko (nastasya.bondarenko.97)",Russian,1,1,0,0,0,0,0,"2019-06-07 17:43:08"
|
||||||
"Edmunds Edmundam (edmundam)",,0,0,0,0,0,0,0
|
"Kan Black (kanblack.va)",Vietnamese,1,2,0,0,0,1,0,"2019-01-15 03:50:10"
|
||||||
"vi ve (VimalV)",,0,0,0,0,0,0,0
|
"Patrick Pimenta (trickap1)","Portuguese, Brazilian",1,1,0,0,0,0,0,"2018-12-01 14:31:21"
|
||||||
"LeMeD (LeMeS)",French,0,0,0,2,0,0,0
|
"Dagna Q (dagnaq)",,0,0,0,0,0,0,0,"2017-08-06 01:42:52"
|
||||||
"Éjbãss Übbeî (littlebittlebottle)",Norwegian,0,0,0,152,0,0,0
|
Kamalakannan,,0,0,0,0,0,0,0,"2017-05-14 11:40:23"
|
||||||
EmanAmini,,0,0,0,0,0,0,0
|
"Éjbãss Übbeî (littlebittlebottle)",Norwegian,0,0,0,152,0,0,0,"2017-07-05 21:12:02"
|
||||||
AnggaRifandi,,0,0,0,0,0,0,0
|
"Равиль Мифтахов (ravilmif47)",Russian,0,0,0,1,0,0,0,"2019-08-12 21:58:30"
|
||||||
"Mateusz Teteruk (mttet)",Polish,0,0,0,1,0,0,0
|
sanyoniket,,0,0,0,0,0,0,0,"2019-07-23 12:58:40"
|
||||||
"Lori Amico (lavodkaclyde2323)",Italian,0,0,0,1,0,0,0
|
REMOVED_USER,,0,0,0,0,0,0,0,"2020-02-01 03:47:48"
|
||||||
"Florian Stuhlmann (stuhlmann)",German,0,0,0,10,0,0,0
|
"vi ve (VimalV)",,0,0,0,0,0,0,0,"2021-02-08 02:35:45"
|
||||||
"Yasin Okumus (lacivert)",Turkish,0,0,0,1,0,0,0
|
"George Merkulov (george142.emarket)",Russian,0,0,0,11,0,0,0,"2019-06-09 19:47:02"
|
||||||
NairaDNV,Spanish,0,0,0,9,0,0,0
|
"Yasin Okumus (lacivert)",Turkish,0,0,0,1,0,0,0,"2018-02-07 04:13:51"
|
||||||
REMOVED_USER,,0,0,0,0,0,0,0
|
"Petros Bleyan (coolbleyan)",Russian,0,0,0,14,0,0,0,"2017-08-18 18:37:18"
|
||||||
farbod66,Persian,0,0,0,1,0,0,0
|
"LeMeD (LeMeS)",French,0,0,0,2,0,0,0,"2021-02-06 15:35:00"
|
||||||
Raulbertassi,,0,0,0,0,0,0,0
|
ava_rfie,Persian,0,0,0,1,0,0,0,"2019-06-09 16:19:24"
|
||||||
"Равиль Мифтахов (ravilmif47)",Russian,0,0,0,1,0,0,0
|
"Mateusz Teteruk (mttet)",Polish,0,0,0,1,0,0,0,"2021-01-23 13:09:59"
|
||||||
"Pumpith Ungsupanit (pumpithu)",,0,0,0,0,0,0,0
|
EwanB,,0,0,0,0,0,0,0,"2019-11-19 10:04:38"
|
||||||
"Nat Fomicheva (natac)",Russian,0,0,0,3,0,0,0
|
Fazy1380,,0,0,0,0,0,0,0,"2021-04-10 11:02:53"
|
||||||
EwanB,,0,0,0,0,0,0,0
|
"Lori Amico (lavodkaclyde2323)",Italian,0,0,0,1,0,0,0,"2017-04-09 10:08:13"
|
||||||
ava_rfie,Persian,0,0,0,1,0,0,0
|
"Florian Stuhlmann (stuhlmann)",German,0,0,0,10,0,0,0,"2017-04-15 04:04:00"
|
||||||
"George Merkulov (george142.emarket)",Russian,0,0,0,11,0,0,0
|
"عبد الناصر سعيد الثبيتي (asaeed)",,0,0,0,0,0,0,0,"2018-03-13 02:09:35"
|
||||||
REMOVED_USER,,0,0,0,0,0,0,0
|
"Rivo Zängov (Eraser)",,0,0,0,0,0,0,0,"2020-10-13 04:38:26"
|
||||||
sanyoniket,,0,0,0,0,0,0,0
|
Hayder21,,0,0,0,0,0,0,0,"2019-12-31 10:56:24"
|
||||||
"Shuvashish Sahoo (shuvashish76)",,0,0,0,0,0,0,0
|
T-v-Gerwen,Dutch,0,0,0,47,0,0,0,"2018-03-02 10:26:33"
|
||||||
martyaberger,,0,0,0,0,0,0,0
|
"Eduard Boboc (edi.boboc33)",Romanian,0,0,0,4,0,0,0,"2019-12-16 09:08:39"
|
||||||
"Карлен Шаухаев (KarlenShaukhaev)",,0,0,0,0,0,0,0
|
"Samuel Przeździęk (samek22)",Polish,0,0,0,1,0,0,0,"2021-08-01 00:49:01"
|
||||||
"Elmo (oberknecht)",,0,0,0,0,0,0,0
|
"Saiprasath B (Saiprasath)",,0,0,0,0,0,0,0,"2021-07-11 11:10:41"
|
||||||
Irsgram,Russian,0,0,0,1,0,0,0
|
shuvo786,,0,0,0,0,0,0,0,"2019-11-13 00:18:12"
|
||||||
"Matus Zdansky (matuszdansky)",,0,0,0,0,0,0,0
|
"Edmunds Edmundam (edmundam)",,0,0,0,0,0,0,0,"2020-06-01 14:18:18"
|
||||||
shuvo786,,0,0,0,0,0,0,0
|
Itch,,0,0,0,0,0,0,0,"2017-10-16 09:18:42"
|
||||||
"Eduard Boboc (edi.boboc33)",Romanian,0,0,0,4,0,0,0
|
"Manny Farsangy (manifarsangi)",Persian,0,0,0,12,0,0,0,"2021-08-10 05:32:28"
|
||||||
Hayder21,,0,0,0,0,0,0,0
|
"Matus Zdansky (matuszdansky)",,0,0,0,0,0,0,0,"2019-10-20 13:52:24"
|
||||||
AsadullahIlyas,,0,0,0,0,0,0,0
|
"Thomas Orlita (Thomas995)",Czech,0,0,0,1,0,0,0,"2017-12-24 04:08:27"
|
||||||
"Никита Карамов (nikita.karamoff)",Russian,0,0,0,10,0,0,0
|
Irsgram,Russian,0,0,0,1,0,0,0,"2019-09-30 16:42:20"
|
||||||
"Katherine Alexandra Flórez Ramírez (katherine.florez12)",Spanish,0,0,0,46,0,0,0
|
EmanAmini,,0,0,0,0,0,0,0,"2017-03-31 13:27:43"
|
||||||
mdrobulis,,0,0,0,0,0,0,0
|
mushin,,0,0,0,0,0,0,0,"2020-02-02 04:08:05"
|
||||||
"Eliška Roubalová (roubaeli)",Czech,0,0,0,6,0,0,0
|
"Elmo (oberknecht)",,0,0,0,0,0,0,0,"2020-04-16 08:45:50"
|
||||||
droidahmed,Arabic,0,0,0,7,0,0,0
|
AnggaRifandi,,0,0,0,0,0,0,0,"2017-03-31 19:28:35"
|
||||||
"Arjun K. (arjunkdot)",,0,0,0,0,0,0,0
|
"darkkingredian (rediancool)",,0,0,0,0,0,0,0,"2021-07-27 16:04:32"
|
||||||
"Sarah BCNN (fsarahboucenna)",French,0,0,0,16,0,0,0
|
"Sri Harsha Bhogi (sriharshabhogi)",,0,0,0,0,0,0,0,"2018-09-02 05:31:53"
|
||||||
REMOVED_USER,Czech,0,0,0,18,0,0,0
|
"Nat Fomicheva (natac)",Russian,0,0,0,3,0,0,0,"2019-01-25 14:35:02"
|
||||||
BongTran,Vietnamese,0,0,0,2,0,0,0
|
mdrobulis,,0,0,0,0,0,0,0,"2018-05-24 01:40:42"
|
||||||
"Arttu Ylhävuori (arttu.ylhavuori)",,0,0,0,0,0,0,0
|
"Sarah BCNN (fsarahboucenna)",French,0,0,0,16,0,0,0,"2018-02-11 11:07:36"
|
||||||
valney.faria,"Portuguese, Brazilian",0,0,0,1,0,0,0
|
"Arjun K. (arjunkdot)",,0,0,0,0,0,0,0,"2020-09-20 11:16:18"
|
||||||
REMOVED_USER,,0,0,0,0,0,0,0
|
REMOVED_USER,Czech,0,0,0,18,0,0,0,"2018-03-27 06:19:52"
|
||||||
rooban23,,0,0,0,0,0,0,0
|
martyaberger,,0,0,0,0,0,0,0,"2019-01-01 18:48:08"
|
||||||
REMOVED_USER,,0,0,0,0,0,0,0
|
BongTran,Vietnamese,0,0,0,2,0,0,0,"2018-04-24 05:16:07"
|
||||||
"Алтынбек Наурызғали (altinbeknaurizgali)",Russian,0,0,0,1,0,0,0
|
"Arttu Ylhävuori (arttu.ylhavuori)",,0,0,0,0,0,0,0,"2019-07-24 15:03:42"
|
||||||
"Sri Harsha Bhogi (sriharshabhogi)",,0,0,0,0,0,0,0
|
"Никита Карамов (nikita.karamoff)",Russian,0,0,0,10,0,0,0,"2018-10-29 03:57:21"
|
||||||
"Ahnaf Tajwar (atn4404)",,0,0,0,0,0,0,0
|
rooban23,,0,0,0,0,0,0,0,"2020-09-15 11:49:14"
|
||||||
Elham1361,,0,0,0,0,0,0,0
|
"Eliška Roubalová (roubaeli)",Czech,0,0,0,6,0,0,0,"2019-12-31 12:47:29"
|
||||||
dongchen.yue,German,0,0,0,4,0,0,0
|
valney.faria,"Portuguese, Brazilian",0,0,0,1,0,0,0,"2020-02-02 14:45:02"
|
||||||
philfr49,French,0,0,0,2,0,0,0
|
"Алтынбек Наурызғали (altinbeknaurizgali)",Russian,0,0,0,1,0,0,0,"2020-08-12 13:03:49"
|
||||||
|
REMOVED_USER,,0,0,0,0,0,0,0,"2018-10-27 15:34:36"
|
||||||
|
REMOVED_USER,,0,0,0,0,0,0,0,"2018-08-24 00:17:43"
|
||||||
|
Elham1361,,0,0,0,0,0,0,0,"2018-10-27 12:01:06"
|
||||||
|
dongchen.yue,German,0,0,0,4,0,0,0,"2020-09-12 15:05:59"
|
||||||
|
"Ahnaf Tajwar (atn4404)",,0,0,0,0,0,0,0,"2018-10-16 11:13:30"
|
||||||
|
AsadullahIlyas,,0,0,0,0,0,0,0,"2019-01-04 06:14:15"
|
||||||
|
droidahmed,Arabic,0,0,0,7,0,0,0,"2018-01-31 02:18:49"
|
||||||
|
philfr49,French,0,0,0,2,0,0,0,"2018-09-03 14:20:32"
|
||||||
|
"Ahmed Nazir (ahmednazir333)",,0,0,0,0,0,0,0,"2018-05-06 12:10:27"
|
||||||
|
"Balaji Jayaraman (jkbalaji1103)",,0,0,0,0,0,0,0,"2017-10-30 22:12:27"
|
||||||
|
"Wellington Ribeiro (wellington.rib)",,0,0,0,0,0,0,0,"2017-11-16 07:32:25"
|
||||||
|
"Javid IRAN (twitteriran98)",Persian,0,0,0,1,0,0,0,"2017-11-25 16:47:25"
|
||||||
|
"박인호 (wphestiraid)",Korean,0,0,0,2,0,0,0,"2018-01-05 00:33:14"
|
||||||
|
"Pumpith Ungsupanit (pumpithu)",,0,0,0,0,0,0,0,"2019-01-19 23:47:57"
|
||||||
|
Sandhu564.,,0,0,0,0,0,0,0,"2020-12-14 01:27:45"
|
||||||
|
"Quentin Hibon (hiq)",,0,0,0,0,0,0,0,"2021-02-07 16:39:31"
|
||||||
|
AhmedDz,Arabic,0,0,0,1,0,0,0,"2017-12-31 10:12:31"
|
||||||
|
"Shuvashish Sahoo (shuvashish76)",,0,0,0,0,0,0,0,"2020-09-17 09:10:09"
|
||||||
|
REMOVED_USER,,0,0,0,0,0,0,0,"2018-01-05 16:56:12"
|
||||||
|
NairaDNV,Spanish,0,0,0,9,0,0,0,"2018-01-05 19:10:33"
|
||||||
|
Raulbertassi,,0,0,0,0,0,0,0,"2018-01-07 17:23:18"
|
||||||
|
"Карлен Шаухаев (KarlenShaukhaev)",,0,0,0,0,0,0,0,"2020-04-27 08:53:49"
|
||||||
|
dimateos,,0,0,0,0,0,0,0,"2021-01-10 06:29:52"
|
||||||
|
"Katherine Alexandra Flórez Ramírez (katherine.florez12)",Spanish,0,0,0,46,0,0,0,"2018-01-20 02:18:32"
|
||||||
|
"reza golestanzadeh (reza.golestanzadeh)",Persian,0,0,0,1,0,0,0,"2020-10-21 12:07:20"
|
||||||
|
farbod66,Persian,0,0,0,1,0,0,0,"2018-01-20 11:04:23"
|
||||||
|
"Muhammet Furkan ALMACI (furkan.almaci)",Turkish,0,0,0,1,0,0,0,"2017-10-29 13:44:56"
|
||||||
|
|||||||
|
|
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 7.6 KiB |
|
Before Width: | Height: | Size: 8.7 KiB After Width: | Height: | Size: 8.9 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
@@ -23,6 +23,7 @@ import androidx.test.filters.MediumTest
|
|||||||
import org.isoron.uhabits.BaseViewTest
|
import org.isoron.uhabits.BaseViewTest
|
||||||
import org.isoron.uhabits.core.models.Habit
|
import org.isoron.uhabits.core.models.Habit
|
||||||
import org.isoron.uhabits.core.ui.screens.habits.show.views.ScoreCardPresenter.Companion.buildState
|
import org.isoron.uhabits.core.ui.screens.habits.show.views.ScoreCardPresenter.Companion.buildState
|
||||||
|
import org.isoron.uhabits.core.ui.views.LightTheme
|
||||||
import org.isoron.uhabits.utils.toFixedAndroidColor
|
import org.isoron.uhabits.utils.toFixedAndroidColor
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
@@ -39,7 +40,12 @@ class ScoreChartTest : BaseViewTest() {
|
|||||||
super.setUp()
|
super.setUp()
|
||||||
fixtures.purgeHabits(habitList)
|
fixtures.purgeHabits(habitList)
|
||||||
habit = fixtures.createLongHabit()
|
habit = fixtures.createLongHabit()
|
||||||
val state = buildState(habit, prefs.firstWeekdayInt, 0)
|
val state = buildState(
|
||||||
|
habit = habit,
|
||||||
|
firstWeekday = prefs.firstWeekdayInt,
|
||||||
|
spinnerPosition = 0,
|
||||||
|
theme = LightTheme(),
|
||||||
|
)
|
||||||
view = ScoreChart(targetContext).apply {
|
view = ScoreChart(targetContext).apply {
|
||||||
setScores(state.scores)
|
setScores(state.scores)
|
||||||
setColor(state.color.toFixedAndroidColor())
|
setColor(state.color.toFixedAndroidColor())
|
||||||
@@ -72,7 +78,7 @@ class ScoreChartTest : BaseViewTest() {
|
|||||||
@Test
|
@Test
|
||||||
@Throws(Throwable::class)
|
@Throws(Throwable::class)
|
||||||
fun testRender_withMonthlyBucket() {
|
fun testRender_withMonthlyBucket() {
|
||||||
val (scores, bucketSize) = buildState(habit, prefs.firstWeekdayInt, 2)
|
val (scores, bucketSize) = buildState(habit, prefs.firstWeekdayInt, 2, LightTheme())
|
||||||
view.setScores(scores)
|
view.setScores(scores)
|
||||||
view.setBucketSize(bucketSize)
|
view.setBucketSize(bucketSize)
|
||||||
view.invalidate()
|
view.invalidate()
|
||||||
@@ -89,7 +95,7 @@ class ScoreChartTest : BaseViewTest() {
|
|||||||
@Test
|
@Test
|
||||||
@Throws(Throwable::class)
|
@Throws(Throwable::class)
|
||||||
fun testRender_withYearlyBucket() {
|
fun testRender_withYearlyBucket() {
|
||||||
val state = buildState(habit, prefs.firstWeekdayInt, 4)
|
val state = buildState(habit, prefs.firstWeekdayInt, 4, LightTheme())
|
||||||
view.setScores(state.scores)
|
view.setScores(state.scores)
|
||||||
view.setBucketSize(state.bucketSize)
|
view.setBucketSize(state.bucketSize)
|
||||||
view.invalidate()
|
view.invalidate()
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import androidx.test.filters.MediumTest
|
|||||||
import org.isoron.uhabits.BaseViewTest
|
import org.isoron.uhabits.BaseViewTest
|
||||||
import org.isoron.uhabits.R
|
import org.isoron.uhabits.R
|
||||||
import org.isoron.uhabits.core.ui.screens.habits.show.views.FrequencyCardPresenter
|
import org.isoron.uhabits.core.ui.screens.habits.show.views.FrequencyCardPresenter
|
||||||
|
import org.isoron.uhabits.core.ui.views.LightTheme
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
@@ -43,7 +44,13 @@ class FrequencyCardViewTest : BaseViewTest() {
|
|||||||
.from(targetContext)
|
.from(targetContext)
|
||||||
.inflate(R.layout.show_habit, null)
|
.inflate(R.layout.show_habit, null)
|
||||||
.findViewById<View>(R.id.frequencyCard) as FrequencyCardView
|
.findViewById<View>(R.id.frequencyCard) as FrequencyCardView
|
||||||
view.setState(FrequencyCardPresenter.buildState(habit = habit, firstWeekday = 0))
|
view.setState(
|
||||||
|
FrequencyCardPresenter.buildState(
|
||||||
|
habit = habit,
|
||||||
|
firstWeekday = 0,
|
||||||
|
theme = LightTheme(),
|
||||||
|
)
|
||||||
|
)
|
||||||
measureView(view, 800f, 600f)
|
measureView(view, 800f, 600f)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import org.isoron.uhabits.BaseViewTest
|
|||||||
import org.isoron.uhabits.R
|
import org.isoron.uhabits.R
|
||||||
import org.isoron.uhabits.core.models.PaletteColor
|
import org.isoron.uhabits.core.models.PaletteColor
|
||||||
import org.isoron.uhabits.core.ui.screens.habits.show.views.OverviewCardState
|
import org.isoron.uhabits.core.ui.screens.habits.show.views.OverviewCardState
|
||||||
|
import org.isoron.uhabits.core.ui.views.LightTheme
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
@@ -50,6 +51,7 @@ class OverviewCardViewTest : BaseViewTest() {
|
|||||||
scoreYearDiff = 0.74f,
|
scoreYearDiff = 0.74f,
|
||||||
totalCount = 44,
|
totalCount = 44,
|
||||||
color = PaletteColor(7),
|
color = PaletteColor(7),
|
||||||
|
theme = LightTheme(),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
measureView(view, 800f, 300f)
|
measureView(view, 800f, 300f)
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import androidx.test.filters.MediumTest
|
|||||||
import org.isoron.uhabits.BaseViewTest
|
import org.isoron.uhabits.BaseViewTest
|
||||||
import org.isoron.uhabits.R
|
import org.isoron.uhabits.R
|
||||||
import org.isoron.uhabits.core.ui.screens.habits.show.views.ScoreCardPresenter.Companion.buildState
|
import org.isoron.uhabits.core.ui.screens.habits.show.views.ScoreCardPresenter.Companion.buildState
|
||||||
|
import org.isoron.uhabits.core.ui.views.LightTheme
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
@@ -43,7 +44,14 @@ class ScoreCardViewTest : BaseViewTest() {
|
|||||||
.from(targetContext)
|
.from(targetContext)
|
||||||
.inflate(R.layout.show_habit, null)
|
.inflate(R.layout.show_habit, null)
|
||||||
.findViewById<View>(R.id.scoreCard) as ScoreCardView
|
.findViewById<View>(R.id.scoreCard) as ScoreCardView
|
||||||
view.setState(buildState(habit = habit, firstWeekday = 0, spinnerPosition = 0))
|
view.setState(
|
||||||
|
buildState(
|
||||||
|
habit = habit,
|
||||||
|
firstWeekday = 0,
|
||||||
|
spinnerPosition = 0,
|
||||||
|
theme = LightTheme(),
|
||||||
|
)
|
||||||
|
)
|
||||||
measureView(view, 800f, 600f)
|
measureView(view, 800f, 600f)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import androidx.test.filters.MediumTest
|
|||||||
import org.isoron.uhabits.BaseViewTest
|
import org.isoron.uhabits.BaseViewTest
|
||||||
import org.isoron.uhabits.R
|
import org.isoron.uhabits.R
|
||||||
import org.isoron.uhabits.core.ui.screens.habits.show.views.StreakCardState
|
import org.isoron.uhabits.core.ui.screens.habits.show.views.StreakCardState
|
||||||
|
import org.isoron.uhabits.core.ui.views.LightTheme
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
@@ -47,6 +48,7 @@ class StreakCardViewTest : BaseViewTest() {
|
|||||||
StreakCardState(
|
StreakCardState(
|
||||||
bestStreaks = habit.streaks.getBest(10),
|
bestStreaks = habit.streaks.getBest(10),
|
||||||
color = habit.color,
|
color = habit.color,
|
||||||
|
theme = LightTheme(),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
measureView(view, 800f, 600f)
|
measureView(view, 800f, 600f)
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ import org.isoron.uhabits.core.models.PaletteColor
|
|||||||
import org.isoron.uhabits.core.models.Reminder
|
import org.isoron.uhabits.core.models.Reminder
|
||||||
import org.isoron.uhabits.core.models.WeekdayList.Companion.EVERY_DAY
|
import org.isoron.uhabits.core.models.WeekdayList.Companion.EVERY_DAY
|
||||||
import org.isoron.uhabits.core.ui.screens.habits.show.views.SubtitleCardState
|
import org.isoron.uhabits.core.ui.screens.habits.show.views.SubtitleCardState
|
||||||
|
import org.isoron.uhabits.core.ui.views.LightTheme
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
@@ -54,6 +55,7 @@ class SubtitleCardViewTest : BaseViewTest() {
|
|||||||
reminder = Reminder(8, 30, EVERY_DAY),
|
reminder = Reminder(8, 30, EVERY_DAY),
|
||||||
unit = "",
|
unit = "",
|
||||||
targetValue = 0.0,
|
targetValue = 0.0,
|
||||||
|
theme = LightTheme(),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
measureView(view, 800f, 200f)
|
measureView(view, 800f, 200f)
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import org.isoron.uhabits.BuildConfig
|
|||||||
import org.isoron.uhabits.R
|
import org.isoron.uhabits.R
|
||||||
import org.isoron.uhabits.core.models.PaletteColor
|
import org.isoron.uhabits.core.models.PaletteColor
|
||||||
import org.isoron.uhabits.databinding.AboutBinding
|
import org.isoron.uhabits.databinding.AboutBinding
|
||||||
|
import org.isoron.uhabits.utils.currentTheme
|
||||||
import org.isoron.uhabits.utils.setupToolbar
|
import org.isoron.uhabits.utils.setupToolbar
|
||||||
|
|
||||||
@SuppressLint("ViewConstructor")
|
@SuppressLint("ViewConstructor")
|
||||||
@@ -41,7 +42,8 @@ class AboutView(
|
|||||||
setupToolbar(
|
setupToolbar(
|
||||||
toolbar = binding.toolbar,
|
toolbar = binding.toolbar,
|
||||||
color = PaletteColor(11),
|
color = PaletteColor(11),
|
||||||
title = resources.getString(R.string.about)
|
title = resources.getString(R.string.about),
|
||||||
|
theme = currentTheme(),
|
||||||
)
|
)
|
||||||
val version = resources.getString(R.string.version_n)
|
val version = resources.getString(R.string.version_n)
|
||||||
binding.tvContributors.setOnClickListener { screen.showCodeContributorsWebsite() }
|
binding.tvContributors.setOnClickListener { screen.showCodeContributorsWebsite() }
|
||||||
|
|||||||
@@ -19,20 +19,21 @@
|
|||||||
package org.isoron.uhabits.activities.common.dialogs
|
package org.isoron.uhabits.activities.common.dialogs
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import org.isoron.platform.gui.toInt
|
||||||
import org.isoron.uhabits.R
|
import org.isoron.uhabits.R
|
||||||
import org.isoron.uhabits.core.models.PaletteColor
|
import org.isoron.uhabits.core.models.PaletteColor
|
||||||
|
import org.isoron.uhabits.core.ui.views.Theme
|
||||||
import org.isoron.uhabits.inject.ActivityContext
|
import org.isoron.uhabits.inject.ActivityContext
|
||||||
import org.isoron.uhabits.inject.ActivityScope
|
import org.isoron.uhabits.inject.ActivityScope
|
||||||
import org.isoron.uhabits.utils.StyledResources
|
import org.isoron.uhabits.utils.StyledResources
|
||||||
import org.isoron.uhabits.utils.toThemedAndroidColor
|
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@ActivityScope
|
@ActivityScope
|
||||||
class ColorPickerDialogFactory @Inject constructor(@param:ActivityContext private val context: Context) {
|
class ColorPickerDialogFactory @Inject constructor(@param:ActivityContext private val context: Context) {
|
||||||
fun create(color: PaletteColor): ColorPickerDialog {
|
fun create(color: PaletteColor, theme: Theme): ColorPickerDialog {
|
||||||
val dialog = ColorPickerDialog()
|
val dialog = ColorPickerDialog()
|
||||||
val res = StyledResources(context)
|
val res = StyledResources(context)
|
||||||
val androidColor = color.toThemedAndroidColor(context)
|
val androidColor = theme.color(color).toInt()
|
||||||
dialog.initialize(
|
dialog.initialize(
|
||||||
R.string.color_picker_default_title,
|
R.string.color_picker_default_title,
|
||||||
res.getPalette(),
|
res.getPalette(),
|
||||||
|
|||||||
@@ -35,7 +35,12 @@ import androidx.appcompat.app.AppCompatActivity
|
|||||||
import androidx.fragment.app.DialogFragment
|
import androidx.fragment.app.DialogFragment
|
||||||
import com.android.datetimepicker.time.RadialPickerLayout
|
import com.android.datetimepicker.time.RadialPickerLayout
|
||||||
import com.android.datetimepicker.time.TimePickerDialog
|
import com.android.datetimepicker.time.TimePickerDialog
|
||||||
import kotlinx.android.synthetic.main.activity_edit_habit.*
|
import kotlinx.android.synthetic.main.activity_edit_habit.nameInput
|
||||||
|
import kotlinx.android.synthetic.main.activity_edit_habit.notesInput
|
||||||
|
import kotlinx.android.synthetic.main.activity_edit_habit.questionInput
|
||||||
|
import kotlinx.android.synthetic.main.activity_edit_habit.targetInput
|
||||||
|
import kotlinx.android.synthetic.main.activity_edit_habit.unitInput
|
||||||
|
import org.isoron.platform.gui.toInt
|
||||||
import org.isoron.uhabits.HabitsApplication
|
import org.isoron.uhabits.HabitsApplication
|
||||||
import org.isoron.uhabits.R
|
import org.isoron.uhabits.R
|
||||||
import org.isoron.uhabits.activities.AndroidThemeSwitcher
|
import org.isoron.uhabits.activities.AndroidThemeSwitcher
|
||||||
@@ -56,7 +61,6 @@ import org.isoron.uhabits.databinding.ActivityEditHabitBinding
|
|||||||
import org.isoron.uhabits.utils.ColorUtils
|
import org.isoron.uhabits.utils.ColorUtils
|
||||||
import org.isoron.uhabits.utils.formatTime
|
import org.isoron.uhabits.utils.formatTime
|
||||||
import org.isoron.uhabits.utils.toFormattedString
|
import org.isoron.uhabits.utils.toFormattedString
|
||||||
import org.isoron.uhabits.utils.toThemedAndroidColor
|
|
||||||
|
|
||||||
fun formatFrequency(freqNum: Int, freqDen: Int, resources: Resources) = when {
|
fun formatFrequency(freqNum: Int, freqDen: Int, resources: Resources) = when {
|
||||||
freqNum == 1 && (freqDen == 30 || freqDen == 31) -> resources.getString(R.string.every_month)
|
freqNum == 1 && (freqDen == 30 || freqDen == 31) -> resources.getString(R.string.every_month)
|
||||||
@@ -149,7 +153,7 @@ class EditHabitActivity : AppCompatActivity() {
|
|||||||
|
|
||||||
val colorPickerDialogFactory = ColorPickerDialogFactory(this)
|
val colorPickerDialogFactory = ColorPickerDialogFactory(this)
|
||||||
binding.colorButton.setOnClickListener {
|
binding.colorButton.setOnClickListener {
|
||||||
val dialog = colorPickerDialogFactory.create(color)
|
val dialog = colorPickerDialogFactory.create(color, themeSwitcher.currentTheme)
|
||||||
dialog.setListener { paletteColor ->
|
dialog.setListener { paletteColor ->
|
||||||
this.color = paletteColor
|
this.color = paletteColor
|
||||||
updateColors()
|
updateColors()
|
||||||
@@ -321,7 +325,7 @@ class EditHabitActivity : AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun updateColors() {
|
private fun updateColors() {
|
||||||
androidColor = color.toThemedAndroidColor(this)
|
androidColor = themeSwitcher.currentTheme.color(color).toInt()
|
||||||
binding.colorButton.backgroundTintList = ColorStateList.valueOf(androidColor)
|
binding.colorButton.backgroundTintList = ColorStateList.valueOf(androidColor)
|
||||||
if (!themeSwitcher.isNightMode) {
|
if (!themeSwitcher.isNightMode) {
|
||||||
val darkerAndroidColor = ColorUtils.mixColors(Color.BLACK, androidColor, 0.15f)
|
val darkerAndroidColor = ColorUtils.mixColors(Color.BLACK, androidColor, 0.15f)
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ import org.isoron.uhabits.utils.addAtBottom
|
|||||||
import org.isoron.uhabits.utils.addAtTop
|
import org.isoron.uhabits.utils.addAtTop
|
||||||
import org.isoron.uhabits.utils.addBelow
|
import org.isoron.uhabits.utils.addBelow
|
||||||
import org.isoron.uhabits.utils.buildToolbar
|
import org.isoron.uhabits.utils.buildToolbar
|
||||||
|
import org.isoron.uhabits.utils.currentTheme
|
||||||
import org.isoron.uhabits.utils.dim
|
import org.isoron.uhabits.utils.dim
|
||||||
import org.isoron.uhabits.utils.dp
|
import org.isoron.uhabits.utils.dp
|
||||||
import org.isoron.uhabits.utils.setupToolbar
|
import org.isoron.uhabits.utils.setupToolbar
|
||||||
@@ -93,6 +94,7 @@ class ListHabitsRootView @Inject constructor(
|
|||||||
title = resources.getString(R.string.main_activity_title),
|
title = resources.getString(R.string.main_activity_title),
|
||||||
color = PaletteColor(17),
|
color = PaletteColor(17),
|
||||||
displayHomeAsUpEnabled = false,
|
displayHomeAsUpEnabled = false,
|
||||||
|
theme = currentTheme(),
|
||||||
)
|
)
|
||||||
addView(rootView, MATCH_PARENT, MATCH_PARENT)
|
addView(rootView, MATCH_PARENT, MATCH_PARENT)
|
||||||
listAdapter.setListView(listView)
|
listAdapter.setListView(listView)
|
||||||
|
|||||||
@@ -217,7 +217,7 @@ class ListHabitsScreen
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun showColorPicker(defaultColor: PaletteColor, callback: OnColorPickedCallback) {
|
override fun showColorPicker(defaultColor: PaletteColor, callback: OnColorPickedCallback) {
|
||||||
val picker = colorPickerFactory.create(defaultColor)
|
val picker = colorPickerFactory.create(defaultColor, themeSwitcher.currentTheme!!)
|
||||||
picker.setListener(callback)
|
picker.setListener(callback)
|
||||||
picker.show(activity.supportFragmentManager, "picker")
|
picker.show(activity.supportFragmentManager, "picker")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ import android.view.ViewGroup.LayoutParams.WRAP_CONTENT
|
|||||||
import android.widget.FrameLayout
|
import android.widget.FrameLayout
|
||||||
import android.widget.LinearLayout
|
import android.widget.LinearLayout
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
|
import org.isoron.platform.gui.toInt
|
||||||
import org.isoron.uhabits.R
|
import org.isoron.uhabits.R
|
||||||
import org.isoron.uhabits.activities.common.views.RingView
|
import org.isoron.uhabits.activities.common.views.RingView
|
||||||
import org.isoron.uhabits.core.models.Habit
|
import org.isoron.uhabits.core.models.Habit
|
||||||
@@ -41,9 +42,9 @@ import org.isoron.uhabits.core.models.Timestamp
|
|||||||
import org.isoron.uhabits.core.ui.screens.habits.list.ListHabitsBehavior
|
import org.isoron.uhabits.core.ui.screens.habits.list.ListHabitsBehavior
|
||||||
import org.isoron.uhabits.core.utils.DateUtils
|
import org.isoron.uhabits.core.utils.DateUtils
|
||||||
import org.isoron.uhabits.inject.ActivityContext
|
import org.isoron.uhabits.inject.ActivityContext
|
||||||
|
import org.isoron.uhabits.utils.currentTheme
|
||||||
import org.isoron.uhabits.utils.dp
|
import org.isoron.uhabits.utils.dp
|
||||||
import org.isoron.uhabits.utils.sres
|
import org.isoron.uhabits.utils.sres
|
||||||
import org.isoron.uhabits.utils.toThemedAndroidColor
|
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
class HabitCardViewFactory
|
class HabitCardViewFactory
|
||||||
@@ -213,7 +214,7 @@ class HabitCardView(
|
|||||||
fun getActiveColor(habit: Habit): Int {
|
fun getActiveColor(habit: Habit): Int {
|
||||||
return when (habit.isArchived) {
|
return when (habit.isArchived) {
|
||||||
true -> sres.getColor(R.attr.contrast60)
|
true -> sres.getColor(R.attr.contrast60)
|
||||||
false -> habit.color.toThemedAndroidColor(context)
|
false -> currentTheme().color(habit.color).toInt()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -35,7 +35,12 @@ class ShowHabitView(context: Context) : FrameLayout(context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun setState(data: ShowHabitState) {
|
fun setState(data: ShowHabitState) {
|
||||||
setupToolbar(binding.toolbar, title = data.title, color = data.color)
|
setupToolbar(
|
||||||
|
binding.toolbar,
|
||||||
|
title = data.title,
|
||||||
|
color = data.color,
|
||||||
|
theme = data.theme,
|
||||||
|
)
|
||||||
binding.subtitleCard.setState(data.subtitle)
|
binding.subtitleCard.setState(data.subtitle)
|
||||||
binding.overviewCard.setState(data.overview)
|
binding.overviewCard.setState(data.overview)
|
||||||
binding.notesCard.setState(data.notes)
|
binding.notesCard.setState(data.notes)
|
||||||
|
|||||||
@@ -24,12 +24,12 @@ import android.view.LayoutInflater
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.AdapterView
|
import android.widget.AdapterView
|
||||||
import android.widget.LinearLayout
|
import android.widget.LinearLayout
|
||||||
|
import org.isoron.platform.gui.toInt
|
||||||
import org.isoron.platform.time.JavaLocalDateFormatter
|
import org.isoron.platform.time.JavaLocalDateFormatter
|
||||||
import org.isoron.uhabits.core.ui.screens.habits.show.views.BarCardPresenter
|
import org.isoron.uhabits.core.ui.screens.habits.show.views.BarCardPresenter
|
||||||
import org.isoron.uhabits.core.ui.screens.habits.show.views.BarCardState
|
import org.isoron.uhabits.core.ui.screens.habits.show.views.BarCardState
|
||||||
import org.isoron.uhabits.core.ui.views.BarChart
|
import org.isoron.uhabits.core.ui.views.BarChart
|
||||||
import org.isoron.uhabits.databinding.ShowHabitBarBinding
|
import org.isoron.uhabits.databinding.ShowHabitBarBinding
|
||||||
import org.isoron.uhabits.utils.toThemedAndroidColor
|
|
||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
|
|
||||||
class BarCardView(context: Context, attrs: AttributeSet) : LinearLayout(context, attrs) {
|
class BarCardView(context: Context, attrs: AttributeSet) : LinearLayout(context, attrs) {
|
||||||
@@ -37,7 +37,7 @@ class BarCardView(context: Context, attrs: AttributeSet) : LinearLayout(context,
|
|||||||
private var binding = ShowHabitBarBinding.inflate(LayoutInflater.from(context), this)
|
private var binding = ShowHabitBarBinding.inflate(LayoutInflater.from(context), this)
|
||||||
|
|
||||||
fun setState(state: BarCardState) {
|
fun setState(state: BarCardState) {
|
||||||
val androidColor = state.color.toThemedAndroidColor(context)
|
val androidColor = state.theme.color(state.color).toInt()
|
||||||
binding.chart.view = BarChart(state.theme, JavaLocalDateFormatter(Locale.US)).apply {
|
binding.chart.view = BarChart(state.theme, JavaLocalDateFormatter(Locale.US)).apply {
|
||||||
series = mutableListOf(state.entries.map { it.value / 1000.0 })
|
series = mutableListOf(state.entries.map { it.value / 1000.0 })
|
||||||
colors = mutableListOf(theme.color(state.color.paletteIndex))
|
colors = mutableListOf(theme.color(state.color.paletteIndex))
|
||||||
|
|||||||
@@ -22,16 +22,16 @@ import android.content.Context
|
|||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.widget.LinearLayout
|
import android.widget.LinearLayout
|
||||||
|
import org.isoron.platform.gui.toInt
|
||||||
import org.isoron.uhabits.core.ui.screens.habits.show.views.FrequencyCardState
|
import org.isoron.uhabits.core.ui.screens.habits.show.views.FrequencyCardState
|
||||||
import org.isoron.uhabits.databinding.ShowHabitFrequencyBinding
|
import org.isoron.uhabits.databinding.ShowHabitFrequencyBinding
|
||||||
import org.isoron.uhabits.utils.toThemedAndroidColor
|
|
||||||
|
|
||||||
class FrequencyCardView(context: Context, attrs: AttributeSet) : LinearLayout(context, attrs) {
|
class FrequencyCardView(context: Context, attrs: AttributeSet) : LinearLayout(context, attrs) {
|
||||||
|
|
||||||
private var binding = ShowHabitFrequencyBinding.inflate(LayoutInflater.from(context), this)
|
private var binding = ShowHabitFrequencyBinding.inflate(LayoutInflater.from(context), this)
|
||||||
|
|
||||||
fun setState(state: FrequencyCardState) {
|
fun setState(state: FrequencyCardState) {
|
||||||
val androidColor = state.color.toThemedAndroidColor(context)
|
val androidColor = state.theme.color(state.color).toInt()
|
||||||
binding.frequencyChart.setFrequency(state.frequency)
|
binding.frequencyChart.setFrequency(state.frequency)
|
||||||
binding.frequencyChart.setFirstWeekday(state.firstWeekday)
|
binding.frequencyChart.setFirstWeekday(state.firstWeekday)
|
||||||
binding.title.setTextColor(androidColor)
|
binding.title.setTextColor(androidColor)
|
||||||
|
|||||||
@@ -22,12 +22,12 @@ import android.content.Context
|
|||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.widget.LinearLayout
|
import android.widget.LinearLayout
|
||||||
|
import org.isoron.platform.gui.toInt
|
||||||
import org.isoron.platform.time.JavaLocalDateFormatter
|
import org.isoron.platform.time.JavaLocalDateFormatter
|
||||||
import org.isoron.uhabits.core.ui.screens.habits.show.views.HistoryCardPresenter
|
import org.isoron.uhabits.core.ui.screens.habits.show.views.HistoryCardPresenter
|
||||||
import org.isoron.uhabits.core.ui.screens.habits.show.views.HistoryCardState
|
import org.isoron.uhabits.core.ui.screens.habits.show.views.HistoryCardState
|
||||||
import org.isoron.uhabits.core.ui.views.HistoryChart
|
import org.isoron.uhabits.core.ui.views.HistoryChart
|
||||||
import org.isoron.uhabits.databinding.ShowHabitHistoryBinding
|
import org.isoron.uhabits.databinding.ShowHabitHistoryBinding
|
||||||
import org.isoron.uhabits.utils.toThemedAndroidColor
|
|
||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
|
|
||||||
class HistoryCardView(context: Context, attrs: AttributeSet) : LinearLayout(context, attrs) {
|
class HistoryCardView(context: Context, attrs: AttributeSet) : LinearLayout(context, attrs) {
|
||||||
@@ -35,7 +35,7 @@ class HistoryCardView(context: Context, attrs: AttributeSet) : LinearLayout(cont
|
|||||||
private var binding = ShowHabitHistoryBinding.inflate(LayoutInflater.from(context), this)
|
private var binding = ShowHabitHistoryBinding.inflate(LayoutInflater.from(context), this)
|
||||||
|
|
||||||
fun setState(state: HistoryCardState) {
|
fun setState(state: HistoryCardState) {
|
||||||
val androidColor = state.color.toThemedAndroidColor(context)
|
val androidColor = state.theme.color(state.color).toInt()
|
||||||
binding.title.setTextColor(androidColor)
|
binding.title.setTextColor(androidColor)
|
||||||
binding.chart.view = HistoryChart(
|
binding.chart.view = HistoryChart(
|
||||||
today = state.today,
|
today = state.today,
|
||||||
|
|||||||
@@ -22,11 +22,11 @@ import android.content.Context
|
|||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.widget.LinearLayout
|
import android.widget.LinearLayout
|
||||||
|
import org.isoron.platform.gui.toInt
|
||||||
import org.isoron.uhabits.R
|
import org.isoron.uhabits.R
|
||||||
import org.isoron.uhabits.core.ui.screens.habits.show.views.OverviewCardState
|
import org.isoron.uhabits.core.ui.screens.habits.show.views.OverviewCardState
|
||||||
import org.isoron.uhabits.databinding.ShowHabitOverviewBinding
|
import org.isoron.uhabits.databinding.ShowHabitOverviewBinding
|
||||||
import org.isoron.uhabits.utils.StyledResources
|
import org.isoron.uhabits.utils.StyledResources
|
||||||
import org.isoron.uhabits.utils.toThemedAndroidColor
|
|
||||||
import kotlin.math.abs
|
import kotlin.math.abs
|
||||||
|
|
||||||
class OverviewCardView(context: Context, attrs: AttributeSet) : LinearLayout(context, attrs) {
|
class OverviewCardView(context: Context, attrs: AttributeSet) : LinearLayout(context, attrs) {
|
||||||
@@ -42,7 +42,7 @@ class OverviewCardView(context: Context, attrs: AttributeSet) : LinearLayout(con
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun setState(state: OverviewCardState) {
|
fun setState(state: OverviewCardState) {
|
||||||
val androidColor = state.color.toThemedAndroidColor(context)
|
val androidColor = state.theme.color(state.color).toInt()
|
||||||
val res = StyledResources(context)
|
val res = StyledResources(context)
|
||||||
val inactiveColor = res.getColor(R.attr.contrast60)
|
val inactiveColor = res.getColor(R.attr.contrast60)
|
||||||
binding.monthDiffLabel.setTextColor(if (state.scoreMonthDiff >= 0) androidColor else inactiveColor)
|
binding.monthDiffLabel.setTextColor(if (state.scoreMonthDiff >= 0) androidColor else inactiveColor)
|
||||||
|
|||||||
@@ -24,16 +24,16 @@ import android.view.LayoutInflater
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.AdapterView
|
import android.widget.AdapterView
|
||||||
import android.widget.LinearLayout
|
import android.widget.LinearLayout
|
||||||
|
import org.isoron.platform.gui.toInt
|
||||||
import org.isoron.uhabits.core.ui.screens.habits.show.views.ScoreCardPresenter
|
import org.isoron.uhabits.core.ui.screens.habits.show.views.ScoreCardPresenter
|
||||||
import org.isoron.uhabits.core.ui.screens.habits.show.views.ScoreCardState
|
import org.isoron.uhabits.core.ui.screens.habits.show.views.ScoreCardState
|
||||||
import org.isoron.uhabits.databinding.ShowHabitScoreBinding
|
import org.isoron.uhabits.databinding.ShowHabitScoreBinding
|
||||||
import org.isoron.uhabits.utils.toThemedAndroidColor
|
|
||||||
|
|
||||||
class ScoreCardView(context: Context, attrs: AttributeSet) : LinearLayout(context, attrs) {
|
class ScoreCardView(context: Context, attrs: AttributeSet) : LinearLayout(context, attrs) {
|
||||||
private var binding = ShowHabitScoreBinding.inflate(LayoutInflater.from(context), this)
|
private var binding = ShowHabitScoreBinding.inflate(LayoutInflater.from(context), this)
|
||||||
|
|
||||||
fun setState(state: ScoreCardState) {
|
fun setState(state: ScoreCardState) {
|
||||||
val androidColor = state.color.toThemedAndroidColor(context)
|
val androidColor = state.theme.color(state.color).toInt()
|
||||||
binding.title.setTextColor(androidColor)
|
binding.title.setTextColor(androidColor)
|
||||||
binding.spinner.setSelection(state.spinnerPosition)
|
binding.spinner.setSelection(state.spinnerPosition)
|
||||||
binding.scoreView.setScores(state.scores)
|
binding.scoreView.setScores(state.scores)
|
||||||
|
|||||||
@@ -22,16 +22,16 @@ import android.content.Context
|
|||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.widget.LinearLayout
|
import android.widget.LinearLayout
|
||||||
|
import org.isoron.platform.gui.toInt
|
||||||
import org.isoron.uhabits.core.ui.screens.habits.show.views.StreakCardState
|
import org.isoron.uhabits.core.ui.screens.habits.show.views.StreakCardState
|
||||||
import org.isoron.uhabits.databinding.ShowHabitStreakBinding
|
import org.isoron.uhabits.databinding.ShowHabitStreakBinding
|
||||||
import org.isoron.uhabits.utils.toThemedAndroidColor
|
|
||||||
|
|
||||||
class StreakCardView(context: Context, attrs: AttributeSet) : LinearLayout(context, attrs) {
|
class StreakCardView(context: Context, attrs: AttributeSet) : LinearLayout(context, attrs) {
|
||||||
private val binding = ShowHabitStreakBinding.inflate(LayoutInflater.from(context), this)
|
private val binding = ShowHabitStreakBinding.inflate(LayoutInflater.from(context), this)
|
||||||
fun setState(state: StreakCardState) {
|
fun setState(state: StreakCardState) {
|
||||||
val color = state.color.toThemedAndroidColor(context)
|
val androidColor = state.theme.color(state.color).toInt()
|
||||||
binding.title.setTextColor(color)
|
binding.title.setTextColor(androidColor)
|
||||||
binding.streakChart.setColor(color)
|
binding.streakChart.setColor(androidColor)
|
||||||
binding.streakChart.setStreaks(state.bestStreaks)
|
binding.streakChart.setStreaks(state.bestStreaks)
|
||||||
postInvalidate()
|
postInvalidate()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import android.util.AttributeSet
|
|||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.LinearLayout
|
import android.widget.LinearLayout
|
||||||
|
import org.isoron.platform.gui.toInt
|
||||||
import org.isoron.uhabits.R
|
import org.isoron.uhabits.R
|
||||||
import org.isoron.uhabits.activities.habits.edit.formatFrequency
|
import org.isoron.uhabits.activities.habits.edit.formatFrequency
|
||||||
import org.isoron.uhabits.activities.habits.list.views.toShortString
|
import org.isoron.uhabits.activities.habits.list.views.toShortString
|
||||||
@@ -31,7 +32,6 @@ import org.isoron.uhabits.core.ui.screens.habits.show.views.SubtitleCardState
|
|||||||
import org.isoron.uhabits.databinding.ShowHabitSubtitleBinding
|
import org.isoron.uhabits.databinding.ShowHabitSubtitleBinding
|
||||||
import org.isoron.uhabits.utils.InterfaceUtils
|
import org.isoron.uhabits.utils.InterfaceUtils
|
||||||
import org.isoron.uhabits.utils.formatTime
|
import org.isoron.uhabits.utils.formatTime
|
||||||
import org.isoron.uhabits.utils.toThemedAndroidColor
|
|
||||||
|
|
||||||
class SubtitleCardView(context: Context, attrs: AttributeSet) : LinearLayout(context, attrs) {
|
class SubtitleCardView(context: Context, attrs: AttributeSet) : LinearLayout(context, attrs) {
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ class SubtitleCardView(context: Context, attrs: AttributeSet) : LinearLayout(con
|
|||||||
|
|
||||||
@SuppressLint("SetTextI18n")
|
@SuppressLint("SetTextI18n")
|
||||||
fun setState(state: SubtitleCardState) {
|
fun setState(state: SubtitleCardState) {
|
||||||
val color = state.color.toThemedAndroidColor(context)
|
val color = state.theme.color(state.color).toInt()
|
||||||
val reminder = state.reminder
|
val reminder = state.reminder
|
||||||
binding.frequencyLabel.text = formatFrequency(
|
binding.frequencyLabel.text = formatFrequency(
|
||||||
state.frequency.numerator,
|
state.frequency.numerator,
|
||||||
|
|||||||
@@ -23,15 +23,15 @@ import android.content.res.Resources
|
|||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.widget.LinearLayout
|
import android.widget.LinearLayout
|
||||||
|
import org.isoron.platform.gui.toInt
|
||||||
import org.isoron.uhabits.R
|
import org.isoron.uhabits.R
|
||||||
import org.isoron.uhabits.core.ui.screens.habits.show.views.TargetCardState
|
import org.isoron.uhabits.core.ui.screens.habits.show.views.TargetCardState
|
||||||
import org.isoron.uhabits.databinding.ShowHabitTargetBinding
|
import org.isoron.uhabits.databinding.ShowHabitTargetBinding
|
||||||
import org.isoron.uhabits.utils.toThemedAndroidColor
|
|
||||||
|
|
||||||
class TargetCardView(context: Context, attrs: AttributeSet) : LinearLayout(context, attrs) {
|
class TargetCardView(context: Context, attrs: AttributeSet) : LinearLayout(context, attrs) {
|
||||||
private val binding = ShowHabitTargetBinding.inflate(LayoutInflater.from(context), this)
|
private val binding = ShowHabitTargetBinding.inflate(LayoutInflater.from(context), this)
|
||||||
fun setState(state: TargetCardState) {
|
fun setState(state: TargetCardState) {
|
||||||
val androidColor = state.color.toThemedAndroidColor(context)
|
val androidColor = state.theme.color(state.color).toInt()
|
||||||
binding.targetChart.setValues(state.values)
|
binding.targetChart.setValues(state.values)
|
||||||
binding.targetChart.setTargets(state.targets)
|
binding.targetChart.setTargets(state.targets)
|
||||||
binding.targetChart.setLabels(state.intervals.map { intervalToLabel(resources, it) })
|
binding.targetChart.setLabels(state.intervals.map { intervalToLabel(resources, it) })
|
||||||
|
|||||||
@@ -32,13 +32,15 @@ class SettingsActivity : AppCompatActivity() {
|
|||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
val component = (application as HabitsApplication).component
|
val component = (application as HabitsApplication).component
|
||||||
AndroidThemeSwitcher(this, component.preferences).apply()
|
val themeSwitcher = AndroidThemeSwitcher(this, component.preferences)
|
||||||
|
themeSwitcher.apply()
|
||||||
|
|
||||||
val binding = SettingsActivityBinding.inflate(LayoutInflater.from(this))
|
val binding = SettingsActivityBinding.inflate(LayoutInflater.from(this))
|
||||||
binding.root.setupToolbar(
|
binding.root.setupToolbar(
|
||||||
toolbar = binding.toolbar,
|
toolbar = binding.toolbar,
|
||||||
title = resources.getString(R.string.settings),
|
title = resources.getString(R.string.settings),
|
||||||
color = PaletteColor(11),
|
color = PaletteColor(11),
|
||||||
|
theme = themeSwitcher.currentTheme,
|
||||||
)
|
)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ import org.isoron.uhabits.core.models.Habit
|
|||||||
import org.isoron.uhabits.core.models.HabitList
|
import org.isoron.uhabits.core.models.HabitList
|
||||||
import org.isoron.uhabits.core.models.PaletteColor
|
import org.isoron.uhabits.core.models.PaletteColor
|
||||||
import org.isoron.uhabits.databinding.AutomationBinding
|
import org.isoron.uhabits.databinding.AutomationBinding
|
||||||
|
import org.isoron.uhabits.utils.currentTheme
|
||||||
import org.isoron.uhabits.utils.setupToolbar
|
import org.isoron.uhabits.utils.setupToolbar
|
||||||
import java.util.LinkedList
|
import java.util.LinkedList
|
||||||
|
|
||||||
@@ -53,6 +54,7 @@ class EditSettingRootView(
|
|||||||
title = resources.getString(R.string.app_name),
|
title = resources.getString(R.string.app_name),
|
||||||
color = PaletteColor(11),
|
color = PaletteColor(11),
|
||||||
displayHomeAsUpEnabled = false,
|
displayHomeAsUpEnabled = false,
|
||||||
|
theme = currentTheme(),
|
||||||
)
|
)
|
||||||
populateHabitSpinner()
|
populateHabitSpinner()
|
||||||
binding.habitSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
|
binding.habitSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ import android.widget.AdapterView.OnItemClickListener
|
|||||||
import androidx.fragment.app.FragmentActivity
|
import androidx.fragment.app.FragmentActivity
|
||||||
import com.android.datetimepicker.time.RadialPickerLayout
|
import com.android.datetimepicker.time.RadialPickerLayout
|
||||||
import com.android.datetimepicker.time.TimePickerDialog
|
import com.android.datetimepicker.time.TimePickerDialog
|
||||||
|
import org.isoron.platform.gui.toInt
|
||||||
import org.isoron.uhabits.HabitsApplication
|
import org.isoron.uhabits.HabitsApplication
|
||||||
import org.isoron.uhabits.R
|
import org.isoron.uhabits.R
|
||||||
import org.isoron.uhabits.activities.AndroidThemeSwitcher
|
import org.isoron.uhabits.activities.AndroidThemeSwitcher
|
||||||
@@ -35,14 +36,13 @@ import org.isoron.uhabits.core.models.Habit
|
|||||||
import org.isoron.uhabits.core.ui.ThemeSwitcher.Companion.THEME_LIGHT
|
import org.isoron.uhabits.core.ui.ThemeSwitcher.Companion.THEME_LIGHT
|
||||||
import org.isoron.uhabits.receivers.ReminderController
|
import org.isoron.uhabits.receivers.ReminderController
|
||||||
import org.isoron.uhabits.utils.SystemUtils
|
import org.isoron.uhabits.utils.SystemUtils
|
||||||
import org.isoron.uhabits.utils.toThemedAndroidColor
|
|
||||||
import java.util.Calendar
|
import java.util.Calendar
|
||||||
|
|
||||||
class SnoozeDelayPickerActivity : FragmentActivity(), OnItemClickListener {
|
class SnoozeDelayPickerActivity : FragmentActivity(), OnItemClickListener {
|
||||||
private var habit: Habit? = null
|
private var habit: Habit? = null
|
||||||
private var reminderController: ReminderController? = null
|
private var reminderController: ReminderController? = null
|
||||||
private var dialog: AlertDialog? = null
|
private var dialog: AlertDialog? = null
|
||||||
private var color: Int = 0
|
private var androidColor: Int = 0
|
||||||
|
|
||||||
override fun onCreate(bundle: Bundle?) {
|
override fun onCreate(bundle: Bundle?) {
|
||||||
super.onCreate(bundle)
|
super.onCreate(bundle)
|
||||||
@@ -63,7 +63,7 @@ class SnoozeDelayPickerActivity : FragmentActivity(), OnItemClickListener {
|
|||||||
habit = appComponent.habitList.getById(ContentUris.parseId(data))
|
habit = appComponent.habitList.getById(ContentUris.parseId(data))
|
||||||
}
|
}
|
||||||
if (habit == null) finish()
|
if (habit == null) finish()
|
||||||
color = habit!!.color.toThemedAndroidColor(this)
|
androidColor = themeSwitcher.currentTheme.color(habit!!.color).toInt()
|
||||||
reminderController = appComponent.reminderController
|
reminderController = appComponent.reminderController
|
||||||
dialog = AlertDialog.Builder(this)
|
dialog = AlertDialog.Builder(this)
|
||||||
.setTitle(R.string.select_snooze_delay)
|
.setTitle(R.string.select_snooze_delay)
|
||||||
@@ -85,7 +85,7 @@ class SnoozeDelayPickerActivity : FragmentActivity(), OnItemClickListener {
|
|||||||
calendar[Calendar.HOUR_OF_DAY],
|
calendar[Calendar.HOUR_OF_DAY],
|
||||||
calendar[Calendar.MINUTE],
|
calendar[Calendar.MINUTE],
|
||||||
DateFormat.is24HourFormat(this),
|
DateFormat.is24HourFormat(this),
|
||||||
color
|
androidColor
|
||||||
)
|
)
|
||||||
dialog.show(supportFragmentManager, "timePicker")
|
dialog.show(supportFragmentManager, "timePicker")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ package org.isoron.uhabits.utils
|
|||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
import android.util.Log
|
|
||||||
import org.isoron.uhabits.core.models.PaletteColor
|
import org.isoron.uhabits.core.models.PaletteColor
|
||||||
|
|
||||||
object PaletteUtils {
|
object PaletteUtils {
|
||||||
@@ -29,16 +28,6 @@ object PaletteUtils {
|
|||||||
fun getAndroidTestColor(index: Int) = PaletteColor(index).toFixedAndroidColor()
|
fun getAndroidTestColor(index: Int) = PaletteColor(index).toFixedAndroidColor()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun PaletteColor.toThemedAndroidColor(context: Context): Int {
|
|
||||||
val palette = StyledResources(context).getPalette()
|
|
||||||
return if (paletteIndex in palette.indices) {
|
|
||||||
palette[paletteIndex]
|
|
||||||
} else {
|
|
||||||
Log.w("ColorHelper", "Invalid color: $paletteIndex. Returning default.")
|
|
||||||
palette[0]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun PaletteColor.toFixedAndroidColor(): Int {
|
fun PaletteColor.toFixedAndroidColor(): Int {
|
||||||
return intArrayOf(
|
return intArrayOf(
|
||||||
Color.parseColor("#D32F2F"), // 0 red
|
Color.parseColor("#D32F2F"), // 0 red
|
||||||
|
|||||||
@@ -40,8 +40,12 @@ import androidx.appcompat.app.AppCompatActivity
|
|||||||
import androidx.appcompat.widget.Toolbar
|
import androidx.appcompat.widget.Toolbar
|
||||||
import androidx.core.content.FileProvider
|
import androidx.core.content.FileProvider
|
||||||
import com.google.android.material.snackbar.Snackbar
|
import com.google.android.material.snackbar.Snackbar
|
||||||
|
import org.isoron.platform.gui.toInt
|
||||||
|
import org.isoron.uhabits.HabitsApplication
|
||||||
import org.isoron.uhabits.R
|
import org.isoron.uhabits.R
|
||||||
|
import org.isoron.uhabits.activities.AndroidThemeSwitcher
|
||||||
import org.isoron.uhabits.core.models.PaletteColor
|
import org.isoron.uhabits.core.models.PaletteColor
|
||||||
|
import org.isoron.uhabits.core.ui.views.Theme
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
fun RelativeLayout.addBelow(
|
fun RelativeLayout.addBelow(
|
||||||
@@ -157,6 +161,7 @@ fun View.setupToolbar(
|
|||||||
toolbar: Toolbar,
|
toolbar: Toolbar,
|
||||||
title: String,
|
title: String,
|
||||||
color: PaletteColor,
|
color: PaletteColor,
|
||||||
|
theme: Theme,
|
||||||
displayHomeAsUpEnabled: Boolean = true,
|
displayHomeAsUpEnabled: Boolean = true,
|
||||||
) {
|
) {
|
||||||
toolbar.elevation = InterfaceUtils.dpToPixels(context, 2f)
|
toolbar.elevation = InterfaceUtils.dpToPixels(context, 2f)
|
||||||
@@ -165,7 +170,7 @@ fun View.setupToolbar(
|
|||||||
val toolbarColor = if (!res.getBoolean(R.attr.useHabitColorAsPrimary)) {
|
val toolbarColor = if (!res.getBoolean(R.attr.useHabitColorAsPrimary)) {
|
||||||
StyledResources(context).getColor(R.attr.colorPrimary)
|
StyledResources(context).getColor(R.attr.colorPrimary)
|
||||||
} else {
|
} else {
|
||||||
color.toThemedAndroidColor(context)
|
theme.color(color).toInt()
|
||||||
}
|
}
|
||||||
val darkerColor = ColorUtils.mixColors(toolbarColor, Color.BLACK, 0.75f)
|
val darkerColor = ColorUtils.mixColors(toolbarColor, Color.BLACK, 0.75f)
|
||||||
toolbar.background = ColorDrawable(toolbarColor)
|
toolbar.background = ColorDrawable(toolbarColor)
|
||||||
@@ -175,6 +180,13 @@ fun View.setupToolbar(
|
|||||||
activity.supportActionBar?.setDisplayHomeAsUpEnabled(displayHomeAsUpEnabled)
|
activity.supportActionBar?.setDisplayHomeAsUpEnabled(displayHomeAsUpEnabled)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun View.currentTheme(): Theme {
|
||||||
|
val component = (context.applicationContext as HabitsApplication).component
|
||||||
|
val themeSwitcher = AndroidThemeSwitcher(context, component.preferences)
|
||||||
|
themeSwitcher.apply()
|
||||||
|
return themeSwitcher.currentTheme
|
||||||
|
}
|
||||||
|
|
||||||
fun Int.toMeasureSpec(mode: Int) =
|
fun Int.toMeasureSpec(mode: Int) =
|
||||||
View.MeasureSpec.makeMeasureSpec(this, mode)
|
View.MeasureSpec.makeMeasureSpec(this, mode)
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ import org.isoron.uhabits.core.commands.CommandRunner
|
|||||||
import org.isoron.uhabits.core.preferences.Preferences
|
import org.isoron.uhabits.core.preferences.Preferences
|
||||||
import org.isoron.uhabits.core.preferences.WidgetPreferences
|
import org.isoron.uhabits.core.preferences.WidgetPreferences
|
||||||
import org.isoron.uhabits.intents.PendingIntentFactory
|
import org.isoron.uhabits.intents.PendingIntentFactory
|
||||||
|
import kotlin.math.max
|
||||||
|
|
||||||
abstract class BaseWidget(val context: Context, val id: Int, val stacked: Boolean) {
|
abstract class BaseWidget(val context: Context, val id: Int, val stacked: Boolean) {
|
||||||
private val widgetPrefs: WidgetPreferences
|
private val widgetPrefs: WidgetPreferences
|
||||||
@@ -103,8 +104,8 @@ abstract class BaseWidget(val context: Context, val id: Int, val stacked: Boolea
|
|||||||
|
|
||||||
private fun getBitmapFromView(view: View): Bitmap {
|
private fun getBitmapFromView(view: View): Bitmap {
|
||||||
view.invalidate()
|
view.invalidate()
|
||||||
val width = view.measuredWidth
|
val width = max(1, view.measuredWidth)
|
||||||
val height = view.measuredHeight
|
val height = max(1, view.measuredHeight)
|
||||||
val bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
|
val bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
|
||||||
val canvas = Canvas(bitmap)
|
val canvas = Canvas(bitmap)
|
||||||
view.draw(canvas)
|
view.draw(canvas)
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ abstract class BaseWidgetProvider : AppWidgetProvider() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected fun getHabitsFromWidgetId(widgetId: Int): List<Habit> {
|
protected fun getHabitsFromWidgetId(widgetId: Int): List<Habit> {
|
||||||
val selectedIds = widgetPrefs.getHabitIdsFromWidgetId(widgetId)!!
|
val selectedIds = widgetPrefs.getHabitIdsFromWidgetId(widgetId)
|
||||||
val selectedHabits = ArrayList<Habit>(selectedIds.size)
|
val selectedHabits = ArrayList<Habit>(selectedIds.size)
|
||||||
for (id in selectedIds) {
|
for (id in selectedIds) {
|
||||||
val h = habits.getById(id) ?: throw HabitNotFoundException()
|
val h = habits.getById(id) ?: throw HabitNotFoundException()
|
||||||
|
|||||||
@@ -24,10 +24,11 @@ import android.content.Context
|
|||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.annotation.RequiresApi
|
import androidx.annotation.RequiresApi
|
||||||
|
import org.isoron.platform.gui.toInt
|
||||||
import org.isoron.uhabits.core.models.Entry
|
import org.isoron.uhabits.core.models.Entry
|
||||||
import org.isoron.uhabits.core.models.Habit
|
import org.isoron.uhabits.core.models.Habit
|
||||||
|
import org.isoron.uhabits.core.ui.views.WidgetTheme
|
||||||
import org.isoron.uhabits.core.utils.DateUtils
|
import org.isoron.uhabits.core.utils.DateUtils
|
||||||
import org.isoron.uhabits.utils.toThemedAndroidColor
|
|
||||||
import org.isoron.uhabits.widgets.views.CheckmarkWidgetView
|
import org.isoron.uhabits.widgets.views.CheckmarkWidgetView
|
||||||
|
|
||||||
open class CheckmarkWidget(
|
open class CheckmarkWidget(
|
||||||
@@ -53,7 +54,7 @@ open class CheckmarkWidget(
|
|||||||
(widgetView as CheckmarkWidgetView).apply {
|
(widgetView as CheckmarkWidgetView).apply {
|
||||||
val today = DateUtils.getTodayWithOffset()
|
val today = DateUtils.getTodayWithOffset()
|
||||||
setBackgroundAlpha(preferedBackgroundAlpha)
|
setBackgroundAlpha(preferedBackgroundAlpha)
|
||||||
activeColor = habit.color.toThemedAndroidColor(context)
|
activeColor = WidgetTheme().color(habit.color).toInt()
|
||||||
name = habit.name
|
name = habit.name
|
||||||
entryValue = habit.computedEntries.get(today).value
|
entryValue = habit.computedEntries.get(today).value
|
||||||
if (habit.isNumerical) {
|
if (habit.isNumerical) {
|
||||||
|
|||||||
@@ -22,9 +22,10 @@ package org.isoron.uhabits.widgets
|
|||||||
import android.app.PendingIntent
|
import android.app.PendingIntent
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import org.isoron.platform.gui.toInt
|
||||||
import org.isoron.uhabits.activities.common.views.FrequencyChart
|
import org.isoron.uhabits.activities.common.views.FrequencyChart
|
||||||
import org.isoron.uhabits.core.models.Habit
|
import org.isoron.uhabits.core.models.Habit
|
||||||
import org.isoron.uhabits.utils.toThemedAndroidColor
|
import org.isoron.uhabits.core.ui.views.WidgetTheme
|
||||||
import org.isoron.uhabits.widgets.views.GraphWidgetView
|
import org.isoron.uhabits.widgets.views.GraphWidgetView
|
||||||
|
|
||||||
class FrequencyWidget(
|
class FrequencyWidget(
|
||||||
@@ -47,7 +48,7 @@ class FrequencyWidget(
|
|||||||
if (preferedBackgroundAlpha >= 255) widgetView.setShadowAlpha(0x4f)
|
if (preferedBackgroundAlpha >= 255) widgetView.setShadowAlpha(0x4f)
|
||||||
(widgetView.dataView as FrequencyChart).apply {
|
(widgetView.dataView as FrequencyChart).apply {
|
||||||
setFirstWeekday(firstWeekday)
|
setFirstWeekday(firstWeekday)
|
||||||
setColor(habit.color.toThemedAndroidColor(context))
|
setColor(WidgetTheme().color(habit.color).toInt())
|
||||||
setFrequency(habit.originalEntries.computeWeekdayFrequency(habit.isNumerical))
|
setFrequency(habit.originalEntries.computeWeekdayFrequency(habit.isNumerical))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,10 +22,11 @@ package org.isoron.uhabits.widgets
|
|||||||
import android.app.PendingIntent
|
import android.app.PendingIntent
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import org.isoron.platform.gui.toInt
|
||||||
import org.isoron.uhabits.activities.common.views.ScoreChart
|
import org.isoron.uhabits.activities.common.views.ScoreChart
|
||||||
import org.isoron.uhabits.core.models.Habit
|
import org.isoron.uhabits.core.models.Habit
|
||||||
import org.isoron.uhabits.core.ui.screens.habits.show.views.ScoreCardPresenter
|
import org.isoron.uhabits.core.ui.screens.habits.show.views.ScoreCardPresenter
|
||||||
import org.isoron.uhabits.utils.toThemedAndroidColor
|
import org.isoron.uhabits.core.ui.views.WidgetTheme
|
||||||
import org.isoron.uhabits.widgets.views.GraphWidgetView
|
import org.isoron.uhabits.widgets.views.GraphWidgetView
|
||||||
|
|
||||||
class ScoreWidget(
|
class ScoreWidget(
|
||||||
@@ -44,7 +45,8 @@ class ScoreWidget(
|
|||||||
val viewModel = ScoreCardPresenter.buildState(
|
val viewModel = ScoreCardPresenter.buildState(
|
||||||
habit = habit,
|
habit = habit,
|
||||||
firstWeekday = prefs.firstWeekdayInt,
|
firstWeekday = prefs.firstWeekdayInt,
|
||||||
spinnerPosition = prefs.scoreCardSpinnerPosition
|
spinnerPosition = prefs.scoreCardSpinnerPosition,
|
||||||
|
theme = WidgetTheme(),
|
||||||
)
|
)
|
||||||
val widgetView = view as GraphWidgetView
|
val widgetView = view as GraphWidgetView
|
||||||
widgetView.setBackgroundAlpha(preferedBackgroundAlpha)
|
widgetView.setBackgroundAlpha(preferedBackgroundAlpha)
|
||||||
@@ -52,7 +54,7 @@ class ScoreWidget(
|
|||||||
(widgetView.dataView as ScoreChart).apply {
|
(widgetView.dataView as ScoreChart).apply {
|
||||||
setIsTransparencyEnabled(true)
|
setIsTransparencyEnabled(true)
|
||||||
setBucketSize(viewModel.bucketSize)
|
setBucketSize(viewModel.bucketSize)
|
||||||
setColor(habit.color.toThemedAndroidColor(context))
|
setColor(WidgetTheme().color(habit.color).toInt())
|
||||||
setScores(viewModel.scores)
|
setScores(viewModel.scores)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ internal class StackRemoteViewsFactory(private val context: Context, intent: Int
|
|||||||
AppWidgetManager.INVALID_APPWIDGET_ID
|
AppWidgetManager.INVALID_APPWIDGET_ID
|
||||||
)
|
)
|
||||||
private val habitIds: LongArray
|
private val habitIds: LongArray
|
||||||
private val widgetType: StackWidgetType?
|
private val widgetType: StackWidgetType
|
||||||
private var remoteViews = ArrayList<RemoteViews>()
|
private var remoteViews = ArrayList<RemoteViews>()
|
||||||
override fun onCreate() {}
|
override fun onCreate() {}
|
||||||
override fun onDestroy() {}
|
override fun onDestroy() {}
|
||||||
@@ -86,27 +86,27 @@ internal class StackRemoteViewsFactory(private val context: Context, intent: Int
|
|||||||
|
|
||||||
override fun getViewAt(position: Int): RemoteViews? {
|
override fun getViewAt(position: Int): RemoteViews? {
|
||||||
Log.i("StackRemoteViewsFactory", "getViewAt $position")
|
Log.i("StackRemoteViewsFactory", "getViewAt $position")
|
||||||
return if (position < 0 || position > remoteViews.size) null else remoteViews[position]
|
return if (0 <= position && position < remoteViews.size) remoteViews[position] else null
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun constructWidget(
|
private fun constructWidget(
|
||||||
habit: Habit,
|
habit: Habit,
|
||||||
prefs: Preferences
|
prefs: Preferences
|
||||||
): BaseWidget {
|
): BaseWidget {
|
||||||
when (widgetType) {
|
return when (widgetType) {
|
||||||
StackWidgetType.CHECKMARK -> return CheckmarkWidget(context, widgetId, habit, true)
|
StackWidgetType.CHECKMARK -> CheckmarkWidget(context, widgetId, habit, true)
|
||||||
StackWidgetType.FREQUENCY -> return FrequencyWidget(
|
StackWidgetType.FREQUENCY -> FrequencyWidget(
|
||||||
context,
|
context,
|
||||||
widgetId,
|
widgetId,
|
||||||
habit,
|
habit,
|
||||||
prefs.firstWeekdayInt,
|
prefs.firstWeekdayInt,
|
||||||
true
|
true
|
||||||
)
|
)
|
||||||
StackWidgetType.SCORE -> return ScoreWidget(context, widgetId, habit, true)
|
StackWidgetType.SCORE -> ScoreWidget(context, widgetId, habit, true)
|
||||||
StackWidgetType.HISTORY -> return HistoryWidget(context, widgetId, habit, true)
|
StackWidgetType.HISTORY -> HistoryWidget(context, widgetId, habit, true)
|
||||||
StackWidgetType.STREAKS -> return StreakWidget(context, widgetId, habit, true)
|
StackWidgetType.STREAKS -> StreakWidget(context, widgetId, habit, true)
|
||||||
|
StackWidgetType.TARGET -> TargetWidget(context, widgetId, habit, true)
|
||||||
}
|
}
|
||||||
throw IllegalStateException()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getLoadingView(): RemoteViews {
|
override fun getLoadingView(): RemoteViews {
|
||||||
@@ -157,6 +157,7 @@ internal class StackRemoteViewsFactory(private val context: Context, intent: Int
|
|||||||
if (widgetTypeValue < 0) throw RuntimeException("invalid widget type")
|
if (widgetTypeValue < 0) throw RuntimeException("invalid widget type")
|
||||||
if (habitIdsStr == null) throw RuntimeException("habitIdsStr is null")
|
if (habitIdsStr == null) throw RuntimeException("habitIdsStr is null")
|
||||||
widgetType = StackWidgetType.getWidgetTypeFromValue(widgetTypeValue)
|
widgetType = StackWidgetType.getWidgetTypeFromValue(widgetTypeValue)
|
||||||
|
?: throw RuntimeException("unknown widget type value: $widgetTypeValue")
|
||||||
habitIds = splitLongs(habitIdsStr)
|
habitIds = splitLongs(habitIdsStr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,61 +19,59 @@
|
|||||||
package org.isoron.uhabits.widgets
|
package org.isoron.uhabits.widgets
|
||||||
|
|
||||||
import org.isoron.uhabits.R
|
import org.isoron.uhabits.R
|
||||||
|
import java.lang.IllegalStateException
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by victoryu on 11/3/17.
|
|
||||||
*/
|
|
||||||
enum class StackWidgetType(val value: Int) {
|
enum class StackWidgetType(val value: Int) {
|
||||||
CHECKMARK(0), FREQUENCY(1), SCORE(2), // habit strength widget
|
CHECKMARK(0), FREQUENCY(1), SCORE(2), // habit strength widget
|
||||||
HISTORY(3), STREAKS(4), TARGET(5);
|
HISTORY(3), STREAKS(4), TARGET(5);
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun getWidgetTypeFromValue(value: Int): StackWidgetType? {
|
fun getWidgetTypeFromValue(value: Int): StackWidgetType? {
|
||||||
return when {
|
return when (value) {
|
||||||
CHECKMARK.value == value -> CHECKMARK
|
CHECKMARK.value -> CHECKMARK
|
||||||
FREQUENCY.value == value -> FREQUENCY
|
FREQUENCY.value -> FREQUENCY
|
||||||
SCORE.value == value -> SCORE
|
SCORE.value -> SCORE
|
||||||
HISTORY.value == value -> HISTORY
|
HISTORY.value -> HISTORY
|
||||||
STREAKS.value == value -> STREAKS
|
STREAKS.value -> STREAKS
|
||||||
TARGET.value == value -> TARGET
|
TARGET.value -> TARGET
|
||||||
else -> null
|
else -> null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getStackWidgetLayoutId(type: StackWidgetType?): Int {
|
fun getStackWidgetLayoutId(type: StackWidgetType?): Int {
|
||||||
when (type) {
|
return when (type) {
|
||||||
CHECKMARK -> return R.layout.checkmark_stackview_widget
|
CHECKMARK -> R.layout.checkmark_stackview_widget
|
||||||
FREQUENCY -> return R.layout.frequency_stackview_widget
|
FREQUENCY -> R.layout.frequency_stackview_widget
|
||||||
SCORE -> return R.layout.score_stackview_widget
|
SCORE -> R.layout.score_stackview_widget
|
||||||
HISTORY -> return R.layout.history_stackview_widget
|
HISTORY -> R.layout.history_stackview_widget
|
||||||
STREAKS -> return R.layout.streak_stackview_widget
|
STREAKS -> R.layout.streak_stackview_widget
|
||||||
TARGET -> return R.layout.target_stackview_widget
|
TARGET -> R.layout.target_stackview_widget
|
||||||
|
else -> throw IllegalStateException()
|
||||||
}
|
}
|
||||||
return 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getStackWidgetAdapterViewId(type: StackWidgetType?): Int {
|
fun getStackWidgetAdapterViewId(type: StackWidgetType?): Int {
|
||||||
when (type) {
|
return when (type) {
|
||||||
CHECKMARK -> return R.id.checkmarkStackWidgetView
|
CHECKMARK -> R.id.checkmarkStackWidgetView
|
||||||
FREQUENCY -> return R.id.frequencyStackWidgetView
|
FREQUENCY -> R.id.frequencyStackWidgetView
|
||||||
SCORE -> return R.id.scoreStackWidgetView
|
SCORE -> R.id.scoreStackWidgetView
|
||||||
HISTORY -> return R.id.historyStackWidgetView
|
HISTORY -> R.id.historyStackWidgetView
|
||||||
STREAKS -> return R.id.streakStackWidgetView
|
STREAKS -> R.id.streakStackWidgetView
|
||||||
TARGET -> return R.id.targetStackWidgetView
|
TARGET -> R.id.targetStackWidgetView
|
||||||
|
else -> throw IllegalStateException()
|
||||||
}
|
}
|
||||||
return 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getStackWidgetEmptyViewId(type: StackWidgetType?): Int {
|
fun getStackWidgetEmptyViewId(type: StackWidgetType?): Int {
|
||||||
when (type) {
|
return when (type) {
|
||||||
CHECKMARK -> return R.id.checkmarkStackWidgetEmptyView
|
CHECKMARK -> R.id.checkmarkStackWidgetEmptyView
|
||||||
FREQUENCY -> return R.id.frequencyStackWidgetEmptyView
|
FREQUENCY -> R.id.frequencyStackWidgetEmptyView
|
||||||
SCORE -> return R.id.scoreStackWidgetEmptyView
|
SCORE -> R.id.scoreStackWidgetEmptyView
|
||||||
HISTORY -> return R.id.historyStackWidgetEmptyView
|
HISTORY -> R.id.historyStackWidgetEmptyView
|
||||||
STREAKS -> return R.id.streakStackWidgetEmptyView
|
STREAKS -> R.id.streakStackWidgetEmptyView
|
||||||
TARGET -> return R.id.targetStackWidgetEmptyView
|
TARGET -> R.id.targetStackWidgetEmptyView
|
||||||
}
|
else -> throw IllegalStateException()
|
||||||
return 0
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,9 +24,10 @@ import android.content.Context
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup.LayoutParams
|
import android.view.ViewGroup.LayoutParams
|
||||||
import android.view.ViewGroup.LayoutParams.MATCH_PARENT
|
import android.view.ViewGroup.LayoutParams.MATCH_PARENT
|
||||||
|
import org.isoron.platform.gui.toInt
|
||||||
import org.isoron.uhabits.activities.common.views.StreakChart
|
import org.isoron.uhabits.activities.common.views.StreakChart
|
||||||
import org.isoron.uhabits.core.models.Habit
|
import org.isoron.uhabits.core.models.Habit
|
||||||
import org.isoron.uhabits.utils.toThemedAndroidColor
|
import org.isoron.uhabits.core.ui.views.WidgetTheme
|
||||||
import org.isoron.uhabits.widgets.views.GraphWidgetView
|
import org.isoron.uhabits.widgets.views.GraphWidgetView
|
||||||
|
|
||||||
class StreakWidget(
|
class StreakWidget(
|
||||||
@@ -46,7 +47,7 @@ class StreakWidget(
|
|||||||
widgetView.setBackgroundAlpha(preferedBackgroundAlpha)
|
widgetView.setBackgroundAlpha(preferedBackgroundAlpha)
|
||||||
if (preferedBackgroundAlpha >= 255) widgetView.setShadowAlpha(0x4f)
|
if (preferedBackgroundAlpha >= 255) widgetView.setShadowAlpha(0x4f)
|
||||||
(widgetView.dataView as StreakChart).apply {
|
(widgetView.dataView as StreakChart).apply {
|
||||||
setColor(habit.color.toThemedAndroidColor(context))
|
setColor(WidgetTheme().color(habit.color).toInt())
|
||||||
setStreaks(habit.streaks.getBest(maxStreakCount))
|
setStreaks(habit.streaks.getBest(maxStreakCount))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,11 +25,12 @@ import android.view.View
|
|||||||
import android.view.ViewGroup.LayoutParams
|
import android.view.ViewGroup.LayoutParams
|
||||||
import android.view.ViewGroup.LayoutParams.MATCH_PARENT
|
import android.view.ViewGroup.LayoutParams.MATCH_PARENT
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
|
import org.isoron.platform.gui.toInt
|
||||||
import org.isoron.uhabits.activities.common.views.TargetChart
|
import org.isoron.uhabits.activities.common.views.TargetChart
|
||||||
import org.isoron.uhabits.activities.habits.show.views.TargetCardView.Companion.intervalToLabel
|
import org.isoron.uhabits.activities.habits.show.views.TargetCardView.Companion.intervalToLabel
|
||||||
import org.isoron.uhabits.core.models.Habit
|
import org.isoron.uhabits.core.models.Habit
|
||||||
import org.isoron.uhabits.core.ui.screens.habits.show.views.TargetCardPresenter
|
import org.isoron.uhabits.core.ui.screens.habits.show.views.TargetCardPresenter
|
||||||
import org.isoron.uhabits.utils.toThemedAndroidColor
|
import org.isoron.uhabits.core.ui.views.WidgetTheme
|
||||||
import org.isoron.uhabits.widgets.views.GraphWidgetView
|
import org.isoron.uhabits.widgets.views.GraphWidgetView
|
||||||
|
|
||||||
class TargetWidget(
|
class TargetWidget(
|
||||||
@@ -49,8 +50,12 @@ class TargetWidget(
|
|||||||
widgetView.setBackgroundAlpha(preferedBackgroundAlpha)
|
widgetView.setBackgroundAlpha(preferedBackgroundAlpha)
|
||||||
if (preferedBackgroundAlpha >= 255) widgetView.setShadowAlpha(0x4f)
|
if (preferedBackgroundAlpha >= 255) widgetView.setShadowAlpha(0x4f)
|
||||||
val chart = (widgetView.dataView as TargetChart)
|
val chart = (widgetView.dataView as TargetChart)
|
||||||
val data = TargetCardPresenter.buildState(habit, prefs.firstWeekdayInt)
|
val data = TargetCardPresenter.buildState(
|
||||||
chart.setColor(data.color.toThemedAndroidColor(context))
|
habit = habit,
|
||||||
|
firstWeekday = prefs.firstWeekdayInt,
|
||||||
|
theme = WidgetTheme(),
|
||||||
|
)
|
||||||
|
chart.setColor(WidgetTheme().color(habit.color).toInt())
|
||||||
chart.setTargets(data.targets)
|
chart.setTargets(data.targets)
|
||||||
chart.setLabels(data.intervals.map { intervalToLabel(context.resources, it) })
|
chart.setLabels(data.intervals.map { intervalToLabel(context.resources, it) })
|
||||||
chart.setValues(data.values)
|
chart.setValues(data.values)
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ class WidgetUpdater
|
|||||||
val modifiedWidgetIds = when (modifiedHabitId) {
|
val modifiedWidgetIds = when (modifiedHabitId) {
|
||||||
null -> widgetIds.toList()
|
null -> widgetIds.toList()
|
||||||
else -> widgetIds.filter { w ->
|
else -> widgetIds.filter { w ->
|
||||||
widgetPrefs.getHabitIdsFromWidgetId(w)!!.contains(modifiedHabitId)
|
widgetPrefs.getHabitIdsFromWidgetId(w).contains(modifiedHabitId)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ import org.isoron.uhabits.utils.PaletteUtils.getAndroidTestColor
|
|||||||
import org.isoron.uhabits.utils.StyledResources
|
import org.isoron.uhabits.utils.StyledResources
|
||||||
import kotlin.math.max
|
import kotlin.math.max
|
||||||
import kotlin.math.min
|
import kotlin.math.min
|
||||||
|
import kotlin.math.roundToInt
|
||||||
|
|
||||||
class CheckmarkWidgetView : HabitWidgetView {
|
class CheckmarkWidgetView : HabitWidgetView {
|
||||||
var activeColor: Int = 0
|
var activeColor: Int = 0
|
||||||
@@ -118,19 +119,25 @@ class CheckmarkWidgetView : HabitWidgetView {
|
|||||||
get() = R.layout.widget_checkmark
|
get() = R.layout.widget_checkmark
|
||||||
|
|
||||||
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
|
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
|
||||||
val width = MeasureSpec.getSize(widthMeasureSpec)
|
var width = MeasureSpec.getSize(widthMeasureSpec)
|
||||||
val height = MeasureSpec.getSize(heightMeasureSpec)
|
var height = MeasureSpec.getSize(heightMeasureSpec)
|
||||||
var textSize = 0.15f * height
|
if (height >= width) {
|
||||||
val maxTextSize = getDimension(context, R.dimen.smallerTextSize)
|
height = min(height, (width * 1.5).roundToInt())
|
||||||
textSize = min(textSize, maxTextSize)
|
} else {
|
||||||
|
width = min(width, height)
|
||||||
|
}
|
||||||
|
val textSize = min(0.2f * width, getDimension(context, R.dimen.smallerTextSize))
|
||||||
label.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize)
|
label.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize)
|
||||||
if (isNumerical) {
|
if (isNumerical) {
|
||||||
ring.setTextSize(textSize * 0.75f)
|
ring.setTextSize(textSize * 0.9f)
|
||||||
} else {
|
} else {
|
||||||
ring.setTextSize(textSize)
|
ring.setTextSize(textSize)
|
||||||
}
|
}
|
||||||
ring.setThickness(0.15f * textSize)
|
ring.setThickness(0.03f * width)
|
||||||
super.onMeasure(widthMeasureSpec, heightMeasureSpec)
|
super.onMeasure(
|
||||||
|
MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
|
||||||
|
MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun init() {
|
private fun init() {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
Loop Seguiment d'hàbits t'ajuda a crear i mantenir en la teva vida hàbits positius de llarg termini. Estadístiques i gràfiques detallades et donen una imatge clara de com els teus hàbits han millorat en el temps. L'app és completament sense anuncis, de codi obert i respecta la teva privadesa.
|
Loop Seguiment d'hàbits t'ajuda a crear i mantenir en la teva vida hàbits positius de llarg termini. Gràfics i estadístiques detallades us proporcionen una imatge clara de com els vostres hàbits han millorat amb el pas del temps. L'aplicació Blokada és totalment lliure de publicitat, de codi obert i respecta la vostra privadesa.
|
||||||
|
|
||||||
<b>Interfície minimalista, lleugera i bonica</b>
|
<b>Interfície minimalista, lleugera i bonica</b>
|
||||||
Loop té una interfície elegant i minimalista que es molt fàcil d'usar, inclús per als usuaris primerencs. Altament optimitzada per a que sigui ràpida, l'app funciona bé inclús en telèfons antics.
|
Loop té una interfície elegant i minimalista que es molt fàcil d'usar, inclús per als usuaris primerencs. Altament optimitzada per a que sigui ràpida, l'app funciona bé inclús en telèfons antics.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
Loop Habit Tracker te ayuda a crear y mantener hábitos positivos y a largo plazo en tu vida. Gráficos detallados y las estadísticas te dan una idea clara de cómo tus hábitos han mejorado con el tiempo. La aplicación es completamente gratis, de código abierto y respeta tu privacidad.
|
Loop Habit Tracker te ayuda a crear y mantener hábitos positivos de largo plazo en tu vida. Gráficos detallados y estadísticas te dan una idea clara de cómo tus hábitos han mejorado con el tiempo. La aplicación es completamente gratis, de código abierto y respeta tu privacidad.
|
||||||
|
|
||||||
<b>Interfase hermosa, minimalista y liviana</b>
|
<b>Interfaz hermosa, minimalista y liviana</b>
|
||||||
Loop tiene una interfaz elegante y minimalista que es muy fácil de usar, incluso para usuarios nuevos. Muy optimizada para la velocidad, la aplicación funciona bien incluso en teléfonos más antiguos.
|
Loop tiene una interfaz elegante y minimalista que es muy fácil de usar, incluso para usuarios nuevos. Altamente optimizada para la velocidad, la aplicación funciona bien incluso en teléfonos más antiguos.
|
||||||
|
|
||||||
<b>Puntaje de hábitos</b>
|
<b>Puntaje de hábitos</b>
|
||||||
Loop tiene una fórmula avanzada para calcular la fuerza de tus hábitos. Cada repetición fortalece tu hábito y cada día perdido lo debilita. Sin embargo, unos días perdidos después de una larga racha no destruirán por completo tu progreso, a diferencia de muchas otras aplicaciones del tipo "no rompas la cadena".
|
Loop tiene una fórmula avanzada para calcular la fuerza de tus hábitos. Cada repetición fortalece tu hábito y cada día perdido lo debilita. Sin embargo, unos días perdidos después de una larga racha no destruirán por completo tu progreso, a diferencia de muchas otras aplicaciones del tipo "no rompas la cadena".
|
||||||
@@ -13,15 +13,15 @@ Además de los hábitos diarios, Loop admite hábitos con horarios más complejo
|
|||||||
Programa notificaciones para recordarte tus hábitos. Cada hábito puede tener su propio recordatorio, a la hora elegida del día. Marca o descarta fácilmente tu hábito directamente de la notificación.
|
Programa notificaciones para recordarte tus hábitos. Cada hábito puede tener su propio recordatorio, a la hora elegida del día. Marca o descarta fácilmente tu hábito directamente de la notificación.
|
||||||
|
|
||||||
<b>Widgets</b>
|
<b>Widgets</b>
|
||||||
Recuerda tus hábitos apenas desbloqueando el teléfono. Los widgets de colores te permiten rastrear tus hábitos directamente desde tu pantalla de inicio, sin siquiera abrir la aplicación.
|
Recuerde sus hábitos cada vez que desbloquee su teléfono. Los widgets de colores te permiten rastrear tus hábitos directamente desde tu pantalla de inicio, sin siquiera abrir la aplicación.
|
||||||
|
|
||||||
<b>Toma el control de tus datos</b>
|
<b>Toma el control de tus datos</b>
|
||||||
Si quieres analizar más tus datos o moverlos a otro servicio, Loop le permite exportarlo a hojas de cálculo, (CSV) o a un archivo de base de datos (SQLite). Para usuarios avanzados, se pueden marcar hábitos a través de otras aplicaciones, como Tasker.
|
Si deseas analizar más sus datos o moverlos a otro servicio, Loop te permite exportarlos a hojas de cálculo (CSV) o a un archivo de base de datos (SQLite). Para usuarios avanzados, se pueden marcar hábitos a través de otras aplicaciones, como Tasker.
|
||||||
|
|
||||||
<b>Sin limitaciones</b>
|
<b>Sin limitaciones</b>
|
||||||
Rastrea tantos hábitos como desees. Loop no impone límites artificiales sobre cuántos hábitos puedes tener. Todas las características están disponibles para todos los usuarios. No hay compras dentro de la aplicación.
|
Rastrea tantos hábitos como desees. Loop no impone límites artificiales sobre cuántos hábitos puedes tener. Todas las características están disponibles para todos los usuarios. No hay compras dentro de la aplicación.
|
||||||
|
|
||||||
<b>Completamente sin publicidades y código abierto</b>
|
<b>Completamente sin anuncios y código abierto</b>
|
||||||
No hay publicidades, notificaciones molestas o permisos intrusivos en esta aplicación, y nunca los habrá. La aplicación es completamente de código abierto (Licencia GPLv3).
|
No hay publicidades, notificaciones molestas o permisos intrusivos en esta aplicación, y nunca los habrá. La aplicación es completamente de código abierto (Licencia GPLv3).
|
||||||
|
|
||||||
<b>Funciona sin conexión y respeta tu privacidad</b>
|
<b>Funciona sin conexión y respeta tu privacidad</b>
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
Loop Habit Tracker به شما کمک میکند تا عادتهای مثبت طولانیمدت را در زندگی ایجاد و حفظ کنید. نمودارها و آمارهای دقیق، تصویری واضح از چگونگی بهبود عادتهای شما در طول زمان به شما میدهد. این برنامه کاملاً بدون تبلیغات و منبعباز است و به حریم خصوصی شما احترام میگذارد.
|
عادتسنج لوپ به شما کمک میکند تا عادتهای مثبت طولانیمدت را در زندگی ایجاد و حفظ کنید. نمودارها و آمارهای دقیق، تصویری واضح از چگونگی بهبود عادتهای شما در طول زمان به شما میدهد. این برنامه کاملاً بدون تبلیغات و منبعباز است و به حریم خصوصی شما احترام میگذارد.
|
||||||
|
|
||||||
<b>رابط کاربری زیبا، مینیمال و سبک</b>
|
<b>رابط کاربری زیبا، مینیمال و سبک</b>
|
||||||
Loop دارای یک رابط زیبا و مینیمال است که استفاده از آن حتی برای کاربرانی که برای بار اول استفاده میکنند بسیار آسان است. این برنامه از نظر سرعت عملکرد بسیار بهینه شده و حتی در تلفنهای قدیمی نیز به خوبی کار میکند.
|
Loop دارای یک رابط زیبا و مینیمال است که استفاده از آن حتی برای کاربرانی که برای بار اول استفاده میکنند بسیار آسان است. این برنامه از نظر سرعت عملکرد بسیار بهینه شده و حتی در تلفنهای قدیمی نیز به خوبی کار میکند.
|
||||||
|
|
||||||
<b>نمره عادت</b>
|
<b>نمره عادت</b>
|
||||||
Loop فرمول پیشرفتهای برای محاسبه قدرت عادتهای شما دارد. هر تکرار عادت شما را قویتر میکند و هر روز فراموششده آن را ضعیف میکند. چند روز از دست رفته پس از یک رشته طولانی ، برخلاف بسیاری از برنامه های شکننده نشده ، پیشرفت شما را به طور کامل از بین نمی برد.
|
لوپ فرمول پیشرفتهای برای محاسبه قدرت عادتهای شما دارد. هر تکرار عادت شما را قویتر میکند و هر روز فراموششده آن را ضعیف میکند. ولی برخلاف دیگر برنامههای عادتسنج، اگر بعد از یک روند طولانی حفظ عادت، چند روز آن عادت را انجام ندهید، پیشرفت شما به صورت کامل نابود نخواهد شد.
|
||||||
|
|
||||||
برنامهریزی با دست باز
|
<b>برنامهریزی منعطف</b>
|
||||||
علاوه بر علاوه بر عادتهایی که هر روز باید تکرار شوند، شما میتوانید برنامهریزیهای متنوعی دیگری را تنظیم کنید، مثلا هفته ای سه بار یا روز در میان
|
علاوه بر علاوه بر عادتهایی که هر روز باید تکرار شوند، شما میتوانید برنامهریزیهای متنوعی دیگری را تنظیم کنید، مثلا هفته ای سه بار یا روز در میان
|
||||||
|
|
||||||
یاداوری
|
یاداوری
|
||||||
@@ -19,11 +19,11 @@ Loop فرمول پیشرفتهای برای محاسبه قدرت عادت
|
|||||||
اگر می خواهید داده های خود را بیشتر تجزیه و تحلیل کنید ، یا آنها را به سرویس دیگری منتقل کنید ، Loop به شما امکان می دهد آنها را به صفحه گسترده (CSV) یا یک پرونده پایگاه داده (SQLite) صادر کنید. برای کاربران قدرت ، علامت های تأیید را می توان از طریق برنامه های دیگر مانند Tasker اضافه کرد.
|
اگر می خواهید داده های خود را بیشتر تجزیه و تحلیل کنید ، یا آنها را به سرویس دیگری منتقل کنید ، Loop به شما امکان می دهد آنها را به صفحه گسترده (CSV) یا یک پرونده پایگاه داده (SQLite) صادر کنید. برای کاربران قدرت ، علامت های تأیید را می توان از طریق برنامه های دیگر مانند Tasker اضافه کرد.
|
||||||
|
|
||||||
<b>بدون محدودیت</b>
|
<b>بدون محدودیت</b>
|
||||||
هر تعداد که می خواهید عادت ها را دنبال کنید. حلقه محدودیتی مصنوعی در تعداد عادت های شما ایجاد نمی کند. همه ویژگی ها در دسترس همه کاربران است. هیچ خرید درون برنامه ای وجود ندارد.
|
هر تعداد که می خواهید عادت ها را دنبال کنید. حلقه محدودیتی مصنوعی در تعداد عادت های شما ایجاد نمی کند. همه ویژگیها برای همه کاربران در دسترس هستند. هیچ خرید درونبرنامهای وجود ندارد.
|
||||||
|
|
||||||
<b>کاملاً بدون آگهی و منبع آزاد</b>
|
<b>کاملاً بدون آگهی و منبع باز</b>
|
||||||
هیچ تبلیغی ، اعلان آزار دهنده یا مجوز سرزده در این برنامه وجود ندارد و هرگز وجود نخواهد داشت. برنامه کاملاً منبع باز (GPLv3) است.
|
هیچ تبلیغ، اعلان آزاردهنده یا مجوز بیاجازه در این برنامه وجود ندارد و هرگز وجود نخواهد داشت. برنامه کاملاً منبع باز (GPLv3) است.
|
||||||
|
|
||||||
<b>بصورت آفلاین کار می کند و به حریم خصوصی شما احترام می گذارد</b>
|
<b>به صورت آفلاین کار میکند و به حریم خصوصی شما احترام می گذارد</b>
|
||||||
حلقه به اتصال اینترنت یا ثبت نام آنلاین حساب نیاز ندارد. اطلاعات محرمانه شما هرگز برای کسی ارسال نمی شود. نه توسعه دهندگان و نه اشخاص ثالث به آن دسترسی ندارند.
|
لوپ به اینترنت یا ثبتنام آنلاین نیاز ندارد. اطلاعات محرمانه شما هرگز به جایی ارسال نمیشود. نه توسعهدهندگان و نه اشخاص ثالث به آن دسترسی ندارند.
|
||||||
|
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
ایجاد عادت های خوب و پیگیری پیشرفت آنها در طول زمان (بدون تبلیغ)
|
عادتهای خوب ایجاد کنید و پیشرفت آنها را در طول زمان پیگیری کنید (بدون تبلیغ)
|
||||||
|
|||||||
@@ -1,29 +1,29 @@
|
|||||||
אפליקצית Loop Habit Tracker עוזרת לך ליצור ולשמר הרגלים חיוביים וארוכי טווח בחייך. תרשימים וסטטיסטיקה מפורטים נותנים לך תמונה ברורה כיצד ההרגלים שלך השתפרו לאורך זמן. האפליקציה הינה נטולת פרסומות לחלוטין, כתובה בקוד פתוח וכן מכבדת את הפרטיות שלך.
|
„Loop למעקב אחר ההרגלים” מסייע לך ביצירה ובשימור הרגלים טובים וארוכי טווח. תרשימים וסטטיסטיקה מפורטים נותנים לך תמונה ברורה כיצד ההרגלים שלך השתפרו לאורך זמן. היישום נטול פרסומות לחלוטין, קוד המקור שלו פתוח והוא מכבד את הפרטיות שלך.
|
||||||
|
|
||||||
<b>ממשק יפה, מינימלי וקליל</b>
|
<b>ממשק יפה, חסכוני וקליל</b>
|
||||||
ל־Loop ממשק מינימלי וקל לשימוש, כבר בשימוש הראשון. האפליקציה מותאמת מאוד לפעולה מהירה, ופועלת היטב גם בטלפונים ישנים.
|
ל־Loop ממשק אלגנטי, חסכוני וקל לשימוש אפילו בפעם הראשונה. היישום מותאם במיוחד למהירות, ועובד היטב גם בטלפונים ישנים.
|
||||||
|
|
||||||
<b>ציון הרגל</b>
|
<b>ציון הרגל</b>
|
||||||
ל־Loop יש נוסחה מתקדמת לחישוב חוזק ההרגלים שלך. כל חזרה הופכת את ההרגל שלכם לחזק יותר, וכל יום שהוחמץ הופך אותו לחלש יותר. כמה ימים שהוחמצו לאחר רצף ארוך, לעומת זאת, לא יהרסו לחלוטין את ההתקדמות, בניגוד להרבה אפליקציות אחרות מסוג "אל תשברו את השרשרת".
|
ל־Loop יש נוסחה מתקדמת לחישוב חוזק ההרגלים שלך. כל חזרה על ההרגל מחזקת אותו, וכל יום שהוחמץ מחליש אותו. כמה ימים שהוחמצו לאחר רצף ארוך, לעומת זאת, לא יהרסו לחלוטין את ההתקדמות, בניגוד ליישומים רבים אחרים מסוג „לא לשבור את השרשרת”.
|
||||||
|
|
||||||
<b>לוחות זמנים גמישים</b>
|
<b>לוחות זמנים גמישים</b>
|
||||||
בנוסף להרגלים יומיומיים, Loop תומכת בהרגלים עם לוחות זמנים מורכבים יותר, כמו 3 פעמים בשבוע או "יום כן יום לא".
|
בנוסף להרגלים יומיומיים, Loop תומך בהרגלים עם לוחות זמנים מורכבים יותר, כמו 3 פעמים בשבוע או „יום כן יום לא”.
|
||||||
|
|
||||||
<b>תזכורות</b>
|
<b>תזכורות</b>
|
||||||
אפשר לתזמן התראות קבועות עם תזכורות לגבי ההרגלים שלך. לכל הרגל יכולה להיות תזכורת משלו, בשעה שנבחרה ביום. אפשר לסמן או לדחות את עשיית ההרגל ישירות מההתראה בקלות.
|
אפשר לתזמן התראות קבועות עם תזכורות לגבי ההרגלים שלך. לכל הרגל יכולה להיות תזכורת משלו, בשעה שנבחרה ביום. אפשר לסמן או לדחות את עשיית ההרגל ישירות מההתראה בקלות.
|
||||||
|
|
||||||
<b>ווידג'טים</b>
|
<b>יישומונים</b>
|
||||||
היזכרו בהרגלים בכל שחרור נעילת הטלפון. ווידג'טים צבעוניים מאפשרים לך לעקוב אחר הרגליך ישירות ממסך הבית שלך, מבלי לפתוח את האפליקציה אפילו.
|
להיזכר בהרגלים בכל שחרור נעילת הטלפון. יישומונים צבעוניים שמאפשרים לך לעקוב אחר ההרגלים ישירות ממסך הבית, מבלי לפתוח אפילו את היישום.
|
||||||
|
|
||||||
<b>השליטה בנתונים היא בידיים שלך</b>
|
<b>השליטה בנתונים היא בידיים שלך</b>
|
||||||
אם ברצונך לנתח עוד יותר את הנתונים שלך, או להעביר אותם לשירות אחר, Loop מאפשרת לך לייצא אותם לגיליונות אלקטרוניים (CSV) או לקובץ מסד נתונים (SQLite). עבור משתמשים מובילים, ישנה יכולת להוסיף ביקורת באמצעות אפליקציות אחרות, כגון Tasker.
|
אם ברצונך לנתח יותר לעומק את הנתונים שלך, או להעבירם לשירות אחר, Loop מאפשרת לך לייצא אותם לגיליונות אלקטרוניים (CSV) או לקובץ מסד נתונים (SQLite). למשתמשים מתקדמים, אפשר לסמן הרגלים דרך יישומים אחרים, כגון Tasker.
|
||||||
|
|
||||||
<b>בלי הגבלות</b>
|
<b>בלי הגבלות</b>
|
||||||
עקבו אחר כמה הרגלים שתרצו. Loop לא מגבילה את כמות ההרגלים שאפשר להוסיף. כל התכונות זמינות לכל המשתמשים. אין רכישות מתוך האפליקציה.
|
אפשר לעקוב אחר כמה הרגלים שרוצים. Loop לא מגבילה את כמות ההרגלים שאפשר להוסיף. כל התכונות זמינות לכל המשתמשים. אין רכישות מתוך היישום.
|
||||||
|
|
||||||
<b>נטול פרסומות במלואו ובקוד פתוח</b>
|
<b>היישום נטול פרסומות במלואו וקוד המקור שלו פתוח</b>
|
||||||
אין שום פרסומות, התראות מעצבנות או הרשאות פולשניות ביישום הזה, ולעולם לא יהיו. הקוד של היישום הזה פתוח במלואו (GPLv3).
|
אין שום פרסומות, התראות מעצבנות או הרשאות פולשניות ביישום הזה, ולעולם לא יהיו. קוד היישום הזה פתוח לחלוטין (GPLv3).
|
||||||
|
|
||||||
<b>עובד במצב לא מקוון ומכבד את פרטיותך</b>
|
<b>עובד במצב לא מקוון ומכבד את פרטיותך</b>
|
||||||
ל־Loop לא נחוצים חיבור לאינטרנט או הרשמה לחשבון מקוון. הנתונים הסודיים שלך לא נשלחים לאחרים בכלל. גם למפתחים וגם לגורמי צד שלישי כלשהם אין גישה אליהם.
|
ל־Loop לא נחוצים חיבור לאינטרנט או הרשמה לחשבון מקוון. הנתונים הסודיים שלך לא נשלחים לאחרים כלל. גם למפתחים וגם לגורמי צד שלישי כלשהם אין גישה אליהם.
|
||||||
|
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
התחלת הרגלים טובים ומעקב אחר ההתקדמות בעשייתם למשך זמן (ללא פרסומות)
|
התחלת הרגלים טובים ומעקב אחר ההתקדמות בעשייתם לאורך זמן (ללא פרסומות)
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ Plan notificaties om jezelf te herinneren aan je gewoontes. Elke gewoonte kan zi
|
|||||||
<b>Widgets</b>
|
<b>Widgets</b>
|
||||||
Wordt bij elke telefoonontgrendeling herinnerd aan je gewoontes. Kleurrijke widgets maken het mogelijk je gewoontes direct vanuit het startscherm te tracken, zonder de app te openen.
|
Wordt bij elke telefoonontgrendeling herinnerd aan je gewoontes. Kleurrijke widgets maken het mogelijk je gewoontes direct vanuit het startscherm te tracken, zonder de app te openen.
|
||||||
|
|
||||||
<b>Neem controle over uw gegevens</b>
|
<b>Neem controle over je gegevens</b>
|
||||||
Als je jouw gegevens verder wilt analyseren, of wil verplaatsen in een andere service, dan geeft Loop je de mogelijkheid het te exporteren naar spreadsheets (CSV) of naar een databasebestand (SQlite). Voor hoofdgebruikers kunnen vinkjes worden toegevoegd via andere apps, zoals Tasker.
|
Als je jouw gegevens verder wilt analyseren, of wil verplaatsen in een andere service, dan geeft Loop je de mogelijkheid het te exporteren naar spreadsheets (CSV) of naar een databasebestand (SQlite). Voor hoofdgebruikers kunnen vinkjes worden toegevoegd via andere apps, zoals Tasker.
|
||||||
|
|
||||||
<b>Geen beperkingen</b>
|
<b>Geen beperkingen</b>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
Loop 习惯记录(以下简称“Loop”)可以帮助您建立好习惯且随着时间记录你的进步。 详细的图表和统计数据,可以使您更清楚地看到自己的进步。 这是一个完全无广告的开源应用,它尊重您的隐私。
|
Loop 习惯记录(以下简称“Loop”)能帮你养成和长期保持好习惯。 详细的图表和统计数据能让您更清楚地看到自己的进步。 这是一个完全无广告的开源应用,它尊重您的隐私。
|
||||||
|
|
||||||
<b>优雅、简约、轻巧</b>
|
<b>优雅、简约、轻巧</b>
|
||||||
Loop 具有优雅而简约的界面,即使对于初次使用的用户,也非常易于使用。 该应用针对速度进行了高度优化,即使在较旧的手机上也可以正常运行。
|
Loop 具有优雅而简约的界面,即使对于初次使用的用户,也非常易于使用。 该应用针对速度进行了高度优化,即使在较旧的手机上也可以正常运行。
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
养成好习惯且随着时间记录你的进步(无广告)
|
养成好习惯并随时记录你的进步(无广告)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
2.0.2:
|
2.0.3:
|
||||||
* Bug fixes
|
* Bug fixes
|
||||||
2.0:
|
2.0:
|
||||||
* Track numeric habits (e.g. how many pages did you read?)
|
* Track numeric habits (e.g. how many pages did you read?)
|
||||||
|
|||||||
@@ -30,9 +30,11 @@
|
|||||||
<TextView style="@style/About.Item" android:text="tat bz" />
|
<TextView style="@style/About.Item" android:text="tat bz" />
|
||||||
<TextView style="@style/About.Item.Language" android:text="Español" />
|
<TextView style="@style/About.Item.Language" android:text="Español" />
|
||||||
<TextView style="@style/About.Item" android:text="Ander Raso Vazquez" />
|
<TextView style="@style/About.Item" android:text="Ander Raso Vazquez" />
|
||||||
|
<TextView style="@style/About.Item" android:text="Eilif Adelvice" />
|
||||||
<TextView style="@style/About.Item" android:text="Iabin Arteaga" />
|
<TextView style="@style/About.Item" android:text="Iabin Arteaga" />
|
||||||
<TextView style="@style/About.Item" android:text="Sebastian05067" />
|
<TextView style="@style/About.Item" android:text="Sebastian05067" />
|
||||||
<TextView style="@style/About.Item" android:text="luiandresgonzalez" />
|
<TextView style="@style/About.Item" android:text="luiandresgonzalez" />
|
||||||
|
<TextView style="@style/About.Item" android:text="oscfd" />
|
||||||
<TextView style="@style/About.Item.Language" android:text="Esperanto" />
|
<TextView style="@style/About.Item.Language" android:text="Esperanto" />
|
||||||
<TextView style="@style/About.Item" android:text="4001982248998" />
|
<TextView style="@style/About.Item" android:text="4001982248998" />
|
||||||
<TextView style="@style/About.Item" android:text="marco.baturan" />
|
<TextView style="@style/About.Item" android:text="marco.baturan" />
|
||||||
@@ -48,11 +50,14 @@
|
|||||||
<TextView style="@style/About.Item" android:text="Samuel Guay" />
|
<TextView style="@style/About.Item" android:text="Samuel Guay" />
|
||||||
<TextView style="@style/About.Item" android:text="Thibaut Girka" />
|
<TextView style="@style/About.Item" android:text="Thibaut Girka" />
|
||||||
<TextView style="@style/About.Item" android:text="Tiralka" />
|
<TextView style="@style/About.Item" android:text="Tiralka" />
|
||||||
|
<TextView style="@style/About.Item" android:text="_translator" />
|
||||||
<TextView style="@style/About.Item" android:text="roptat" />
|
<TextView style="@style/About.Item" android:text="roptat" />
|
||||||
<TextView style="@style/About.Item.Language" android:text="Fārsi" />
|
<TextView style="@style/About.Item.Language" android:text="Fārsi" />
|
||||||
<TextView style="@style/About.Item" android:text="Behnood HRazy" />
|
<TextView style="@style/About.Item" android:text="Behnood HRazy" />
|
||||||
<TextView style="@style/About.Item" android:text="Eman" />
|
<TextView style="@style/About.Item" android:text="Eman" />
|
||||||
<TextView style="@style/About.Item" android:text="Saeed Esmaili" />
|
<TextView style="@style/About.Item" android:text="Saeed Esmaili" />
|
||||||
|
<TextView style="@style/About.Item.Language" android:text="Hindi" />
|
||||||
|
<TextView style="@style/About.Item" android:text="Vijaykumar Borkar" />
|
||||||
<TextView style="@style/About.Item.Language" android:text="Hrvatski" />
|
<TextView style="@style/About.Item.Language" android:text="Hrvatski" />
|
||||||
<TextView style="@style/About.Item" android:text="Ivan Krušlin" />
|
<TextView style="@style/About.Item" android:text="Ivan Krušlin" />
|
||||||
<TextView style="@style/About.Item.Language" android:text="Italiano" />
|
<TextView style="@style/About.Item.Language" android:text="Italiano" />
|
||||||
@@ -63,6 +68,7 @@
|
|||||||
<TextView style="@style/About.Item" android:text="Isti" />
|
<TextView style="@style/About.Item" android:text="Isti" />
|
||||||
<TextView style="@style/About.Item" android:text="gapszi" />
|
<TextView style="@style/About.Item" android:text="gapszi" />
|
||||||
<TextView style="@style/About.Item.Language" android:text="Nederlands" />
|
<TextView style="@style/About.Item.Language" android:text="Nederlands" />
|
||||||
|
<TextView style="@style/About.Item" android:text="Blinkin" />
|
||||||
<TextView style="@style/About.Item" android:text="Bryanx" />
|
<TextView style="@style/About.Item" android:text="Bryanx" />
|
||||||
<TextView style="@style/About.Item" android:text="Jelle den Butter" />
|
<TextView style="@style/About.Item" android:text="Jelle den Butter" />
|
||||||
<TextView style="@style/About.Item" android:text="Mark Macaré" />
|
<TextView style="@style/About.Item" android:text="Mark Macaré" />
|
||||||
@@ -91,6 +97,7 @@
|
|||||||
<TextView style="@style/About.Item" android:text="Dušan Strgar" />
|
<TextView style="@style/About.Item" android:text="Dušan Strgar" />
|
||||||
<TextView style="@style/About.Item.Language" android:text="Suomen kieli" />
|
<TextView style="@style/About.Item.Language" android:text="Suomen kieli" />
|
||||||
<TextView style="@style/About.Item" android:text="2kaafone" />
|
<TextView style="@style/About.Item" android:text="2kaafone" />
|
||||||
|
<TextView style="@style/About.Item" android:text="Antti Kallio" />
|
||||||
<TextView style="@style/About.Item" android:text="Elina Salminen" />
|
<TextView style="@style/About.Item" android:text="Elina Salminen" />
|
||||||
<TextView style="@style/About.Item" android:text="Sofia Veijonen" />
|
<TextView style="@style/About.Item" android:text="Sofia Veijonen" />
|
||||||
<TextView style="@style/About.Item.Language" android:text="Svenska" />
|
<TextView style="@style/About.Item.Language" android:text="Svenska" />
|
||||||
@@ -104,6 +111,7 @@
|
|||||||
<TextView style="@style/About.Item" android:text="Huy Ngo" />
|
<TextView style="@style/About.Item" android:text="Huy Ngo" />
|
||||||
<TextView style="@style/About.Item" android:text="Lương Vĩnh Khang" />
|
<TextView style="@style/About.Item" android:text="Lương Vĩnh Khang" />
|
||||||
<TextView style="@style/About.Item" android:text="Trần Thái" />
|
<TextView style="@style/About.Item" android:text="Trần Thái" />
|
||||||
|
<TextView style="@style/About.Item" android:text="bruhwut" />
|
||||||
<TextView style="@style/About.Item" android:text="pnhpnh" />
|
<TextView style="@style/About.Item" android:text="pnhpnh" />
|
||||||
<TextView style="@style/About.Item.Language" android:text="Türkçe" />
|
<TextView style="@style/About.Item.Language" android:text="Türkçe" />
|
||||||
<TextView style="@style/About.Item" android:text="Caner Başaran" />
|
<TextView style="@style/About.Item" android:text="Caner Başaran" />
|
||||||
@@ -124,6 +132,7 @@
|
|||||||
<TextView style="@style/About.Item" android:text="Diana Karaseva" />
|
<TextView style="@style/About.Item" android:text="Diana Karaseva" />
|
||||||
<TextView style="@style/About.Item" android:text="Dmitriy Bogdanov" />
|
<TextView style="@style/About.Item" android:text="Dmitriy Bogdanov" />
|
||||||
<TextView style="@style/About.Item" android:text="Tanya" />
|
<TextView style="@style/About.Item" android:text="Tanya" />
|
||||||
|
<TextView style="@style/About.Item" android:text="engineeringforgood" />
|
||||||
<TextView style="@style/About.Item.Language" android:text="Українська" />
|
<TextView style="@style/About.Item.Language" android:text="Українська" />
|
||||||
<TextView style="@style/About.Item" android:text="Oglaigh Rystard" />
|
<TextView style="@style/About.Item" android:text="Oglaigh Rystard" />
|
||||||
<TextView style="@style/About.Item" android:text="Prosta4ok_ua" />
|
<TextView style="@style/About.Item" android:text="Prosta4ok_ua" />
|
||||||
@@ -136,6 +145,7 @@
|
|||||||
<TextView style="@style/About.Item" android:text="Slobodan Simić" />
|
<TextView style="@style/About.Item" android:text="Slobodan Simić" />
|
||||||
<TextView style="@style/About.Item" android:text="Đorđe Vasiljević" />
|
<TextView style="@style/About.Item" android:text="Đorđe Vasiljević" />
|
||||||
<TextView style="@style/About.Item.Language" android:text="עברית" />
|
<TextView style="@style/About.Item.Language" android:text="עברית" />
|
||||||
|
<TextView style="@style/About.Item" android:text="Ohad Edri" />
|
||||||
<TextView style="@style/About.Item" android:text="Omer I.S." />
|
<TextView style="@style/About.Item" android:text="Omer I.S." />
|
||||||
<TextView style="@style/About.Item" android:text="Omry Cohen" />
|
<TextView style="@style/About.Item" android:text="Omry Cohen" />
|
||||||
<TextView style="@style/About.Item" android:text="Yoav Argov" />
|
<TextView style="@style/About.Item" android:text="Yoav Argov" />
|
||||||
@@ -147,6 +157,7 @@
|
|||||||
<TextView style="@style/About.Item" android:text="Michael Malak" />
|
<TextView style="@style/About.Item" android:text="Michael Malak" />
|
||||||
<TextView style="@style/About.Item" android:text="Saeed Esmaili" />
|
<TextView style="@style/About.Item" android:text="Saeed Esmaili" />
|
||||||
<TextView style="@style/About.Item" android:text="Sief Tarek" />
|
<TextView style="@style/About.Item" android:text="Sief Tarek" />
|
||||||
|
<TextView style="@style/About.Item" android:text="alalloush" />
|
||||||
<TextView style="@style/About.Item" android:text="mohmans" />
|
<TextView style="@style/About.Item" android:text="mohmans" />
|
||||||
<TextView style="@style/About.Item" android:text="reyhoon" />
|
<TextView style="@style/About.Item" android:text="reyhoon" />
|
||||||
<TextView style="@style/About.Item.Language" android:text="فارسی" />
|
<TextView style="@style/About.Item.Language" android:text="فارسی" />
|
||||||
@@ -171,6 +182,7 @@
|
|||||||
<TextView style="@style/About.Item" android:text="QWERT" />
|
<TextView style="@style/About.Item" android:text="QWERT" />
|
||||||
<TextView style="@style/About.Item" android:text="Ting-Hua" />
|
<TextView style="@style/About.Item" android:text="Ting-Hua" />
|
||||||
<TextView style="@style/About.Item" android:text="XuToTo" />
|
<TextView style="@style/About.Item" android:text="XuToTo" />
|
||||||
|
<TextView style="@style/About.Item" android:text="yoding" />
|
||||||
<TextView style="@style/About.Item" android:text="黄克" />
|
<TextView style="@style/About.Item" android:text="黄克" />
|
||||||
<TextView style="@style/About.Item.Language" android:text="日本語" />
|
<TextView style="@style/About.Item.Language" android:text="日本語" />
|
||||||
<TextView style="@style/About.Item" android:text="Naofumi F" />
|
<TextView style="@style/About.Item" android:text="Naofumi F" />
|
||||||
|
|||||||
@@ -31,19 +31,19 @@
|
|||||||
android:id="@+id/scoreRing"
|
android:id="@+id/scoreRing"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
android:layout_weight="1"
|
android:layout_weight="0.9"
|
||||||
habit:thickness="2"
|
habit:thickness="2"
|
||||||
habit:textSize="16"
|
habit:textSize="16"
|
||||||
habit:enableFontAwesome="true"
|
habit:enableFontAwesome="true"
|
||||||
android:layout_marginTop="8dp"
|
android:layout_marginTop="8dp"
|
||||||
android:layout_marginLeft="12dp"
|
android:layout_marginLeft="4dp"
|
||||||
android:layout_marginRight="12dp"/>
|
android:layout_marginRight="4dp"/>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/label"
|
android:id="@+id/label"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="0"
|
android:layout_weight="0.1"
|
||||||
android:textSize="12sp"
|
android:textSize="12sp"
|
||||||
android:textColor="@color/white"
|
android:textColor="@color/white"
|
||||||
android:layout_marginLeft="6dp"
|
android:layout_marginLeft="6dp"
|
||||||
|
|||||||
@@ -184,4 +184,8 @@
|
|||||||
<string name="pref_skip_title">تمكين أيام التخطي</string>
|
<string name="pref_skip_title">تمكين أيام التخطي</string>
|
||||||
<string name="pref_skip_description">بدّل مرتين لإضافة تخطي بدلاً من علامة اختيار. التخطيات تحافظ على درجاتك دون تغيير أو خسارة سلسلة الانتصارات.</string>
|
<string name="pref_skip_description">بدّل مرتين لإضافة تخطي بدلاً من علامة اختيار. التخطيات تحافظ على درجاتك دون تغيير أو خسارة سلسلة الانتصارات.</string>
|
||||||
<string name="pref_unknown_title">إظهار علامات الاستفهام للبيانات المفقودة</string>
|
<string name="pref_unknown_title">إظهار علامات الاستفهام للبيانات المفقودة</string>
|
||||||
|
<string name="you_are_now_a_developer">أنت الآن مطوَِر برمجيات!</string>
|
||||||
|
<string name="activity_not_found">لم يتم العثور على تطبيق لإتمام هذا الإجراء</string>
|
||||||
|
<string name="pref_midnight_delay_title">تمديد اليوم بضع ساعات بعد منتصف الليل</string>
|
||||||
|
<string name="pref_midnight_delay_description">انتظر حتى 3:00 صباحاً لعرض يوم جديد. مفيد إذا كنت عادة تذهب إلى السكون بعد منتصف الليل. يتطلب إعادة تشغيل التطبيق.</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -28,6 +28,14 @@
|
|||||||
<string name="add_habit">Afegir hàbit</string>
|
<string name="add_habit">Afegir hàbit</string>
|
||||||
<string name="color_picker_default_title">Canviar color</string>
|
<string name="color_picker_default_title">Canviar color</string>
|
||||||
<string name="toast_habit_created">Hàbit creat.</string>
|
<string name="toast_habit_created">Hàbit creat.</string>
|
||||||
|
<plurals name="toast_habits_changed">
|
||||||
|
<item quantity="one">Hàbit modificat.</item>
|
||||||
|
<item quantity="other">Hàbit modificat.</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="toast_habits_unarchived">
|
||||||
|
<item quantity="one">Hàbit no arxivat</item>
|
||||||
|
<item quantity="other">Hàbit no arxivat</item>
|
||||||
|
</plurals>
|
||||||
<string name="overview">Visió general</string>
|
<string name="overview">Visió general</string>
|
||||||
<string name="habit_strength">Fortalesa de l\'hàbit</string>
|
<string name="habit_strength">Fortalesa de l\'hàbit</string>
|
||||||
<string name="history">Història</string>
|
<string name="history">Història</string>
|
||||||
@@ -36,6 +44,7 @@
|
|||||||
<string name="save">Desar</string>
|
<string name="save">Desar</string>
|
||||||
<string name="streaks">Ratxa</string>
|
<string name="streaks">Ratxa</string>
|
||||||
<string name="no_habits_found">No tens hàbits actius</string>
|
<string name="no_habits_found">No tens hàbits actius</string>
|
||||||
|
<string name="no_habits_left_to_do">Ja heu acabat per avui!</string>
|
||||||
<string name="long_press_to_toggle">Prem i manté per a marcar o desmarcar</string>
|
<string name="long_press_to_toggle">Prem i manté per a marcar o desmarcar</string>
|
||||||
<string name="reminder_off">Desactivat</string>
|
<string name="reminder_off">Desactivat</string>
|
||||||
<string name="create_habit">Crear hàbit</string>
|
<string name="create_habit">Crear hàbit</string>
|
||||||
@@ -69,6 +78,10 @@
|
|||||||
<string name="hint_title">Ho sabies?</string>
|
<string name="hint_title">Ho sabies?</string>
|
||||||
<string name="hint_drag">Per a ordenar les entrades, prem i mantè sobre el nom de l\'hàbit, després arrossega\'l al lloc correcte.</string>
|
<string name="hint_drag">Per a ordenar les entrades, prem i mantè sobre el nom de l\'hàbit, després arrossega\'l al lloc correcte.</string>
|
||||||
<string name="hint_landscape">Pots veure més dies posant el teu telèfon en orientació apaisada.</string>
|
<string name="hint_landscape">Pots veure més dies posant el teu telèfon en orientació apaisada.</string>
|
||||||
|
<plurals name="delete_habits_title">
|
||||||
|
<item quantity="one">Esborrar hàbit</item>
|
||||||
|
<item quantity="other">Esborrar hàbit</item>
|
||||||
|
</plurals>
|
||||||
<string name="habit_not_found">Hàbit suprimit / no trobat</string>
|
<string name="habit_not_found">Hàbit suprimit / no trobat</string>
|
||||||
<string name="weekends">Caps de setmana</string>
|
<string name="weekends">Caps de setmana</string>
|
||||||
<string name="any_weekday">Dilluns a divendres</string>
|
<string name="any_weekday">Dilluns a divendres</string>
|
||||||
@@ -138,6 +151,7 @@
|
|||||||
<string name="by_name">Per nom</string>
|
<string name="by_name">Per nom</string>
|
||||||
<string name="by_color">Pel color</string>
|
<string name="by_color">Pel color</string>
|
||||||
<string name="by_score">Per marcador</string>
|
<string name="by_score">Per marcador</string>
|
||||||
|
<string name="by_status">Per estat</string>
|
||||||
<string name="export">Exportar</string>
|
<string name="export">Exportar</string>
|
||||||
<string name="long_press_to_edit">Prémer i mantenir per a canviar el valor</string>
|
<string name="long_press_to_edit">Prémer i mantenir per a canviar el valor</string>
|
||||||
<string name="change_value">Canviar el valor</string>
|
<string name="change_value">Canviar el valor</string>
|
||||||
|
|||||||
@@ -172,4 +172,5 @@
|
|||||||
<string name="every_month">Každý měsíc</string>
|
<string name="every_month">Každý měsíc</string>
|
||||||
<string name="validation_cannot_be_blank">Musíte vyplnit</string>
|
<string name="validation_cannot_be_blank">Musíte vyplnit</string>
|
||||||
<string name="today">Dnes</string>
|
<string name="today">Dnes</string>
|
||||||
|
<string name="you_are_now_a_developer">Nyní jste vývojář</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -28,9 +28,17 @@
|
|||||||
<string name="add_habit">Agregar hábito</string>
|
<string name="add_habit">Agregar hábito</string>
|
||||||
<string name="color_picker_default_title">Cambiar color</string>
|
<string name="color_picker_default_title">Cambiar color</string>
|
||||||
<string name="toast_habit_created">Hábito creado</string>
|
<string name="toast_habit_created">Hábito creado</string>
|
||||||
|
<plurals name="toast_habits_changed">
|
||||||
|
<item quantity="one">Hábito cambiado</item>
|
||||||
|
<item quantity="other">Hábitos cambiados</item>
|
||||||
|
</plurals>
|
||||||
<plurals name="toast_habits_deleted">
|
<plurals name="toast_habits_deleted">
|
||||||
<item quantity="one">Español</item>
|
<item quantity="one">Hábito eliminado</item>
|
||||||
<item quantity="other">Spanish</item>
|
<item quantity="other">Hábitos eliminados</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="toast_habits_archived">
|
||||||
|
<item quantity="one">Hábito archivado</item>
|
||||||
|
<item quantity="other">Hábitos archivados</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
<plurals name="toast_habits_unarchived">
|
<plurals name="toast_habits_unarchived">
|
||||||
<item quantity="one">Hábito desarchivado</item>
|
<item quantity="one">Hábito desarchivado</item>
|
||||||
|
|||||||
@@ -23,58 +23,83 @@
|
|||||||
<string name="action_settings">تنظیمات</string>
|
<string name="action_settings">تنظیمات</string>
|
||||||
<string name="edit">ویرایش</string>
|
<string name="edit">ویرایش</string>
|
||||||
<string name="delete">حذف</string>
|
<string name="delete">حذف</string>
|
||||||
<string name="archive">بایگانی کن</string>
|
<string name="archive">بایگانی کردن</string>
|
||||||
<string name="unarchive">خارج کردن از بایگانی</string>
|
<string name="unarchive">خارج کردن از بایگانی</string>
|
||||||
<string name="add_habit">افزودن عادت</string>
|
<string name="add_habit">افزودن عادت</string>
|
||||||
<string name="color_picker_default_title">تغییر رنگ</string>
|
<string name="color_picker_default_title">تغییر رنگ</string>
|
||||||
<string name="toast_habit_created">عادت ایجاد شد</string>
|
<string name="toast_habit_created">عادت ایجاد شد</string>
|
||||||
|
<plurals name="toast_habits_changed">
|
||||||
|
<item quantity="one">عادت تغییر داده شد</item>
|
||||||
|
<item quantity="other">عادتها تغییر داده شدند</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="toast_habits_deleted">
|
||||||
|
<item quantity="one">عادت حذف شد.</item>
|
||||||
|
<item quantity="other">عادتها حذف شدند.</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="toast_habits_archived">
|
||||||
|
<item quantity="one">عادت بایگانی شد.</item>
|
||||||
|
<item quantity="other">عادتها بایگانی شدند.</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="toast_habits_unarchived">
|
||||||
|
<item quantity="one">عادت از بایگانی خارج شد.</item>
|
||||||
|
<item quantity="other">عادتها از بایگانی خارج شدند.</item>
|
||||||
|
</plurals>
|
||||||
<string name="overview">مرور</string>
|
<string name="overview">مرور</string>
|
||||||
<string name="habit_strength">قدرت عادت</string>
|
<string name="habit_strength">قدرت عادت</string>
|
||||||
<string name="history">تاریخچه </string>
|
<string name="history">تاریخچه </string>
|
||||||
<string name="clear">پاک کردن</string>
|
<string name="clear">پاک کردن</string>
|
||||||
<string name="reminder">یادآور</string>
|
<string name="reminder">یادآوری</string>
|
||||||
<string name="save">ذخیره</string>
|
<string name="save">ذخیره</string>
|
||||||
<string name="streaks">روزهای پیوسته</string>
|
<string name="streaks">استمرارها</string>
|
||||||
<string name="no_habits_found">شما هیچ عادت فعالی ندارید</string>
|
<string name="no_habits_found">شما هیچ عادت فعالی ندارید</string>
|
||||||
<string name="long_press_to_toggle">برای تیک زدن یا برداشتن، ضربه بزنید و نگه دارید</string>
|
<string name="no_habits_left_to_do">شما همه موارد مربوط به امروز را انجام دادهاید!</string>
|
||||||
<string name="reminder_off">خاموش</string>
|
<string name="long_press_to_toggle">برای تیک زدن یا برداشتن، تپ کنید و نگه دارید</string>
|
||||||
|
<string name="reminder_off">غیرفعال</string>
|
||||||
<string name="create_habit">ساخت عادت جدید</string>
|
<string name="create_habit">ساخت عادت جدید</string>
|
||||||
<string name="edit_habit">ویرایش عادت</string>
|
<string name="edit_habit">ویرایش عادت</string>
|
||||||
<string name="check">تیک زدن</string>
|
<string name="check">تیک زدن</string>
|
||||||
<string name="snooze">بعداً </string>
|
<string name="snooze">بعداً </string>
|
||||||
<string name="intro_title_1">خوش آمدید</string>
|
<string name="intro_title_1">خوش آمدید</string>
|
||||||
<string name="intro_description_1">رهگیر عادت لوپ به شما کمک میکند تا برای خودتان عادتهای خوبی بسازید. </string>
|
<string name="intro_description_1">عادتسنج لوپ به شما کمک میکند تا برای خودتان عادتهای خوبی بسازید. </string>
|
||||||
<string name="intro_title_2">ساخت چند عادت جدید</string>
|
<string name="intro_title_2">ساخت چند عادت جدید</string>
|
||||||
<string name="intro_description_2">هر روز، بعد از انجام عادت، آن را در برنامه تیک بزنید. </string>
|
<string name="intro_description_2">هر روز بعد از انجام عادت، آن را در برنامه تیک بزنید. </string>
|
||||||
<string name="intro_title_4">پیشرفت خود را رهگیری کنید</string>
|
<string name="intro_title_4">پیشرفت خود را پیگیری کنید</string>
|
||||||
<string name="intro_description_4">نمودار جزئیات به شما نشان میدهد که چطور عادتهایتان با گذشت زمان بهبود پیدا کردهاند.</string>
|
<string name="intro_description_4">نمودار جزئیات به شما نشان میدهد که چطور عادتهایتان با گذشت زمان بهبود پیدا کردهاند.</string>
|
||||||
<string name="interval_15_minutes">۱۵ دقیقه</string>
|
<string name="interval_15_minutes">۱۵ دقیقه</string>
|
||||||
<string name="interval_30_minutes">۳۰ دقیقه</string>
|
<string name="interval_30_minutes">۳۰ دقیقه</string>
|
||||||
<string name="interval_1_hour">۱ ساعتذ</string>
|
<string name="interval_1_hour">۱ ساعت</string>
|
||||||
<string name="interval_2_hour">۲ ساعت</string>
|
<string name="interval_2_hour">۲ ساعت</string>
|
||||||
<string name="interval_4_hour">۴ ساعت</string>
|
<string name="interval_4_hour">۴ ساعت</string>
|
||||||
<string name="interval_8_hour">۸ ساعت</string>
|
<string name="interval_8_hour">۸ ساعت</string>
|
||||||
<string name="interval_24_hour">۲۴ ساعت </string>
|
<string name="interval_24_hour">۲۴ ساعت </string>
|
||||||
<string name="interval_always_ask">همیشه پرسیده شود </string>
|
<string name="interval_always_ask">همیشه پرسیده شود </string>
|
||||||
<string name="interval_custom">سفارشی سازی </string>
|
<string name="interval_custom">سفارشیسازی </string>
|
||||||
<string name="pref_toggle_title">با اشارهی کوتاهمدت وضعیت عادت را تغییر بده</string>
|
<string name="pref_toggle_title">با اشارهی کوتاهمدت وضعیت عادت را تغییر بده</string>
|
||||||
<string name="pref_toggle_description">تیک زدن با تکضربه در مقابل ضربهزدن و نگهداشتن راحتتر است ولی ممکن است باعث شود اشتباهی عادتی را تیک بزنید. </string>
|
<string name="pref_toggle_description">تیک زدن با تکضربه در مقابل ضربهزدن و نگهداشتن راحتتر است ولی ممکن است باعث شود اشتباهی عادتی را تیک بزنید. </string>
|
||||||
<string name="pref_rate_this_app">به این برنامه در گوگلپلی امتیاز بدهید </string>
|
<string name="pref_rate_this_app">به این برنامه در گوگلپلی امتیاز بدهید </string>
|
||||||
<string name="pref_send_feedback">ارسال بازخورد به توسعهدهنده</string>
|
<string name="pref_send_feedback">ارسال بازخورد به توسعهدهنده</string>
|
||||||
<string name="pref_view_source_code">دیدن منبع برنامه در گیتهاب </string>
|
<string name="pref_view_source_code">دیدن منبع برنامه در گیتهاب </string>
|
||||||
<string name="links">لینکها</string>
|
<string name="links">پیوندها</string>
|
||||||
<string name="name">نام</string>
|
<string name="name">نام</string>
|
||||||
<string name="settings">تنظیمات</string>
|
<string name="settings">تنظیمات</string>
|
||||||
<string name="select_snooze_delay">تأخیر تعویق را انتخاب کنید </string>
|
<string name="select_snooze_delay">تأخیر تعویق را انتخاب کنید </string>
|
||||||
<string name="hint_title">آیا می دانستید؟ </string>
|
<string name="hint_title">آیا میدانستید؟ </string>
|
||||||
<string name="hint_drag">برای جابجایی عناوین، انگشتتان را روی نام عادت مورد نظر بگذارید و نگه دارید، سپس آن را به محل صحیح بکشید. </string>
|
<string name="hint_drag">برای جابجایی عناوین، انگشتتان را روی نام عادت مورد نظر بگذارید و نگه دارید، سپس آن را به محل صحیح بکشید. </string>
|
||||||
<string name="hint_landscape">با قرار دادن گوشی در حالت افقی میتوانید روزهای بیشتری را ببینید. </string>
|
<string name="hint_landscape">با قرار دادن گوشی در حالت افقی میتوانید روزهای بیشتری را ببینید. </string>
|
||||||
|
<plurals name="delete_habits_title">
|
||||||
|
<item quantity="one">حذف عادت؟</item>
|
||||||
|
<item quantity="other">حذف عادتها؟</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="delete_habits_message">
|
||||||
|
<item quantity="one">این عادت برای همیشه حذف خواهد شد و قابل بازیابی نخواهد بود.</item>
|
||||||
|
<item quantity="other">این عادتها برای همیشه حذف خواهند شد و قابل بازیابی نخواهند بود.</item>
|
||||||
|
</plurals>
|
||||||
<string name="habit_not_found">عادت حذف شده / پیدا نشد </string>
|
<string name="habit_not_found">عادت حذف شده / پیدا نشد </string>
|
||||||
<string name="weekends">آخر هفتهها </string>
|
<string name="weekends">آخر هفتهها </string>
|
||||||
<string name="any_weekday">دوشنبه تا جمعه </string>
|
<string name="any_weekday">دوشنبه تا جمعه </string>
|
||||||
<string name="any_day">هر روز هفته </string>
|
<string name="any_day">هر روز هفته </string>
|
||||||
<string name="select_weekdays">انتخاب روزها </string>
|
<string name="select_weekdays">انتخاب روزها </string>
|
||||||
<string name="export_to_csv">صدور فایل CSV </string>
|
<string name="export_to_csv">خروجی فایل CSV </string>
|
||||||
<string name="done_label">انجام شد </string>
|
<string name="done_label">انجام شد </string>
|
||||||
<string name="clear_label">پاک کردن</string>
|
<string name="clear_label">پاک کردن</string>
|
||||||
<string name="select_hours">انتخاب ساعت </string>
|
<string name="select_hours">انتخاب ساعت </string>
|
||||||
@@ -89,12 +114,12 @@
|
|||||||
<string name="every_day">هر روز </string>
|
<string name="every_day">هر روز </string>
|
||||||
<string name="every_week">هر هفته </string>
|
<string name="every_week">هر هفته </string>
|
||||||
<string name="help">راهنما و سوالات متداول </string>
|
<string name="help">راهنما و سوالات متداول </string>
|
||||||
<string name="could_not_export">خطا در صدور اطلاعات.</string>
|
<string name="could_not_export">خطا در خروجی گرفتن از دیتا.</string>
|
||||||
<string name="could_not_import">خطا در وارد کردن اطلاعات.</string>
|
<string name="could_not_import">خطا در وارد کردن دیتا.</string>
|
||||||
<string name="file_not_recognized">پرونده شناخته شده نیست.</string>
|
<string name="file_not_recognized">فایل شناخته شده نیست.</string>
|
||||||
<string name="habits_imported">عادتها با موفقیت وارد شدند.</string>
|
<string name="habits_imported">عادتها با موفقیت وارد شدند.</string>
|
||||||
<string name="import_data">ورود اطلاعات</string>
|
<string name="import_data">وارد کردن دیتا</string>
|
||||||
<string name="export_full_backup">پشتیبان گیری کامل</string>
|
<string name="export_full_backup">پشتیبانگیری کامل</string>
|
||||||
<string name="import_data_summary">علاوه بر پشتیبان کامل تهیه شده توسط این برنامه، از پروندههای تولید شده توسط Tickmate، HabitbBull و یا Rewire هم پشتیبانی میشود. برای اطلاعات بیشتر سوالات متداول را ببینید.</string>
|
<string name="import_data_summary">علاوه بر پشتیبان کامل تهیه شده توسط این برنامه، از پروندههای تولید شده توسط Tickmate، HabitbBull و یا Rewire هم پشتیبانی میشود. برای اطلاعات بیشتر سوالات متداول را ببینید.</string>
|
||||||
<string name="export_as_csv_summary">پروندهای تولید میکند که میتوان توسط برنامههای صفحه گسترده مانند Microsoft Excel و یا OpenOffice Calc بازشان کرد. این پرونده قابلیت وارد کردن مجدد به این برنامه را ندارد.</string>
|
<string name="export_as_csv_summary">پروندهای تولید میکند که میتوان توسط برنامههای صفحه گسترده مانند Microsoft Excel و یا OpenOffice Calc بازشان کرد. این پرونده قابلیت وارد کردن مجدد به این برنامه را ندارد.</string>
|
||||||
<string name="export_full_backup_summary">پروندهای تولید میکند که شامل تمام اطلاعات شما است. این پرونده قابل بازیابی توسط این برنامه میباشد.</string>
|
<string name="export_full_backup_summary">پروندهای تولید میکند که شامل تمام اطلاعات شما است. این پرونده قابل بازیابی توسط این برنامه میباشد.</string>
|
||||||
@@ -102,12 +127,12 @@
|
|||||||
<string name="generate_bug_report">ایجاد گزارش مشکلات</string>
|
<string name="generate_bug_report">ایجاد گزارش مشکلات</string>
|
||||||
<string name="troubleshooting">ایرادیابی</string>
|
<string name="troubleshooting">ایرادیابی</string>
|
||||||
<string name="help_translate">کمک برای ترجمه این برنامه</string>
|
<string name="help_translate">کمک برای ترجمه این برنامه</string>
|
||||||
<string name="night_mode" comment="dark_theme">حالت شب</string>
|
<string name="night_mode" comment="dark_theme">حالت تیره</string>
|
||||||
<string name="use_pure_black">استفاده از رنگ سیاه خالص در حالت شبانه</string>
|
<string name="use_pure_black">استفاده از رنگ سیاه خالص در حالت تیره</string>
|
||||||
<string name="pure_black_description">جایگزینی پس زمینه خاکستری با سیاه خالص در حالت شب. استفاده از باتری در گوشیهای با صفحه نمایش AMOLED را کاهش میدهد.</string>
|
<string name="pure_black_description">جایگزینی پسزمینه خاکستری با سیاه خالص در حالت تیره. استفاده از باتری را در گوشیهای با صفحه نمایش AMOLED کاهش میدهد.</string>
|
||||||
<string name="interface_preferences">رابط کاربری</string>
|
<string name="interface_preferences">رابط کاربری</string>
|
||||||
<string name="reverse_days">معکوس کردن ترتیب روزها</string>
|
<string name="reverse_days">معکوس کردن ترتیب روزها</string>
|
||||||
<string name="reverse_days_description">روزها را در صفحه اصلی با ترتیب معکوس نمایش میدهد</string>
|
<string name="reverse_days_description">روزها را در صفحه اصلی با ترتیب معکوس نمایش میدهد.</string>
|
||||||
<string name="day">روز</string>
|
<string name="day">روز</string>
|
||||||
<string name="week">هفته</string>
|
<string name="week">هفته</string>
|
||||||
<string name="month">ماه</string>
|
<string name="month">ماه</string>
|
||||||
@@ -121,14 +146,14 @@
|
|||||||
<string name="reminder_sound">صدای یادآور</string>
|
<string name="reminder_sound">صدای یادآور</string>
|
||||||
<string name="none">هیچکدام</string>
|
<string name="none">هیچکدام</string>
|
||||||
<string name="filter">فیلتر</string>
|
<string name="filter">فیلتر</string>
|
||||||
<string name="hide_completed">مخفی کردن کامل شدهها</string>
|
<string name="hide_completed">مخفی کردن کاملشدهها</string>
|
||||||
<string name="hide_archived">مخفی کردن بایگانی شدهها</string>
|
<string name="hide_archived">مخفی کردن بایگانیشدهها</string>
|
||||||
<string name="sticky_notifications">چسبناک کردن اعلانها</string>
|
<string name="sticky_notifications">چسبناک کردن اعلانها</string>
|
||||||
<string name="sticky_notifications_description">از رد کردن اعلان با کشیدن جلوگیری میکند.</string>
|
<string name="sticky_notifications_description">از رد کردن اعلان با کشیدن جلوگیری میکند.</string>
|
||||||
<string name="led_notifications">چراغ اعلان</string>
|
<string name="led_notifications">چراغ اعلان</string>
|
||||||
<string name="led_notifications_description">یک چراغ چشمک زن برای یادآوری ها نشان می دهد. فقط در تلفن های دارای چراغ های اعلان ال ای دی موجود است.</string>
|
<string name="led_notifications_description">یک چراغ چشمکزن برای یادآوریها نشان میدهد. فقط در گوشیهای دارای چراغهای اعلان LED موجود است.</string>
|
||||||
<string name="repair_database">تعمیر پایگاه داده</string>
|
<string name="repair_database">تعمیر دیتابیس</string>
|
||||||
<string name="database_repaired">پایگاه داده تعمیر شد.</string>
|
<string name="database_repaired">دیتابیس تعمیر شد.</string>
|
||||||
<string name="uncheck">برداشتن تیک</string>
|
<string name="uncheck">برداشتن تیک</string>
|
||||||
<string name="toggle">تغییر وضعیت</string>
|
<string name="toggle">تغییر وضعیت</string>
|
||||||
<string name="action">اقدام</string>
|
<string name="action">اقدام</string>
|
||||||
@@ -138,38 +163,54 @@
|
|||||||
<string name="by_name">براساس نام</string>
|
<string name="by_name">براساس نام</string>
|
||||||
<string name="by_color">براساس رنگ</string>
|
<string name="by_color">براساس رنگ</string>
|
||||||
<string name="by_score">براساس امتیاز</string>
|
<string name="by_score">براساس امتیاز</string>
|
||||||
<string name="export">صدور</string>
|
<string name="by_status">براساس وضعیت</string>
|
||||||
<string name="long_press_to_edit">فشار و نگه دارید تا مقدار را تغییر دهید</string>
|
<string name="export">خروجی گرفتن</string>
|
||||||
|
<string name="long_press_to_edit">فشار دهید و نگه دارید تا مقدار را تغییر دهید</string>
|
||||||
<string name="change_value">تغییر مقدار</string>
|
<string name="change_value">تغییر مقدار</string>
|
||||||
<string name="calendar">تقویم</string>
|
<string name="calendar">تقویم</string>
|
||||||
<string name="unit">Unit</string>
|
<string name="unit">واحد</string>
|
||||||
<string name="example_question_boolean">مثلا امروز ورزش کردید؟</string>
|
<string name="example_question_boolean">مثلا آیا امروز ورزش کردید؟</string>
|
||||||
<string name="question">پرسش</string>
|
<string name="question">سوال</string>
|
||||||
<string name="target">هدف</string>
|
<string name="target">هدف</string>
|
||||||
<string name="yes">بله</string>
|
<string name="yes">بله</string>
|
||||||
<string name="no">نه</string>
|
<string name="no">نه</string>
|
||||||
<string name="customize_notification_summary">تنظیمات صدا ، لرزش ، نور و سایر تنظیمات را تغییر دهید</string>
|
<string name="customize_notification_summary">صدا، لرزش، نور و سایر تنظیمات را تغییر دهید</string>
|
||||||
<string name="customize_notification">اعلان ها را سفارشی کنید</string>
|
<string name="customize_notification">اعلانها را سفارشیسازی کنید</string>
|
||||||
<string name="pref_view_privacy">مشاهده سیاست حفظ حریم خصوصی</string>
|
<string name="pref_view_privacy">مشاهده سیاست حفظ حریم خصوصی</string>
|
||||||
<string name="view_all_contributors">مشاهده همه همکاران…</string>
|
<string name="view_all_contributors">مشاهده همه همکاران…</string>
|
||||||
<string name="database">پایگاه داده</string>
|
<string name="database">دیتابیس</string>
|
||||||
<string name="widget_opacity_title">تیرگی ویجت</string>
|
<string name="widget_opacity_title">تیرگی ویجت</string>
|
||||||
<string name="widget_opacity_description">ویجت ها را در صفحه اصلی شفاف تر یا مات می کند.</string>
|
<string name="widget_opacity_description">ویجتها را در صفحه اصلی شفافتر یا ماتتر میکند.</string>
|
||||||
<string name="first_day_of_the_week">روز اول هفته</string>
|
<string name="first_day_of_the_week">روز اول هفته</string>
|
||||||
<string name="default_reminder_question">آیا امروز این عادت را کامل کرده اید؟</string>
|
<string name="default_reminder_question">آیا امروز این عادت را انجام دادهاید؟</string>
|
||||||
<string name="notes">یادداشت</string>
|
<string name="notes">یادداشتها</string>
|
||||||
<string name="example_notes">(اختیاری)</string>
|
<string name="example_notes">(اختیاری)</string>
|
||||||
<string name="yes_or_no_example">آیا امروز زود بیدار شدید؟ ورزش کردی؟ شطرنج بازی کردی؟</string>
|
<string name="yes_or_no_example">آیا امروز زود بیدار شدید؟ ورزش کردید؟ شطرنج بازی کردید؟</string>
|
||||||
<string name="measurable">قابل اندازه گیری</string>
|
<string name="measurable">قابل اندازهگیری</string>
|
||||||
|
<string name="measurable_example">مثلاً امروز چند کیلومتر دویدید؟ چند صفحه مطالعه کردید؟</string>
|
||||||
<string name="x_times_per_week">%d بار در هفته</string>
|
<string name="x_times_per_week">%d بار در هفته</string>
|
||||||
<string name="x_times_per_month">%d بار در ماه</string>
|
<string name="x_times_per_month">%d بار در ماه</string>
|
||||||
<string name="yes_or_no_short_example">مثلاً ورزش کنید</string>
|
<string name="yes_or_no_short_example">مثلاً ورزش کنید</string>
|
||||||
<string name="color">رنگ</string>
|
<string name="color">رنگ</string>
|
||||||
<string name="example_target">مثلاً 15</string>
|
<string name="example_target">مثلاً 15</string>
|
||||||
<string name="measurable_short_example">مثلاً اجرا کنید</string>
|
<string name="measurable_short_example">مثلاً دویدن</string>
|
||||||
<string name="measurable_question_example">امروز چند مایل را طی کردید؟</string>
|
<string name="measurable_question_example">مثلاً امروز چند کیلومتر دویدید؟</string>
|
||||||
<string name="measurable_units_example">مایل ها</string>
|
<string name="measurable_units_example">مثلاً کیلومتر</string>
|
||||||
<string name="every_month">هر ماه</string>
|
<string name="every_month">هر ماه</string>
|
||||||
<string name="validation_cannot_be_blank">نمیتواند خالی باشد</string>
|
<string name="validation_cannot_be_blank">نمیتواند خالی باشد</string>
|
||||||
<string name="today">امروز</string>
|
<string name="today">امروز</string>
|
||||||
|
<string name="enter">وارد کردن</string>
|
||||||
|
<string name="no_habits">عادتی یافت نشد</string>
|
||||||
|
<string name="no_numerical_habits">عادت قابلاندازهگیری یافت نشد</string>
|
||||||
|
<string name="no_boolean_habits">عادت بله/خیر یافت نشد</string>
|
||||||
|
<string name="increment">افزایش</string>
|
||||||
|
<string name="decrement">کاهش</string>
|
||||||
|
<string name="pref_skip_title">فعال کردن پریدن از روزها</string>
|
||||||
|
<string name="pref_skip_description">دو بار تپ کنید تا به جای تیک زدن، از آن روز بپرید. پریدن از یک روز، امتیاز شما را دستنخورده نگهمیدارد و استمرار عادت را خراب نمیکند.</string>
|
||||||
|
<string name="pref_unknown_title">نمایش علامت سوال برای مواردی که دیتایی وجود ندارد</string>
|
||||||
|
<string name="pref_unknown_description">روزهایی که دیتا ندارند و آنهایی که از رویشان پریدهاید را متفاوت نشان میدهد. برای پریدن از روی یک روز، دو بار روی آن تپ کنید.</string>
|
||||||
|
<string name="you_are_now_a_developer">شما اکنون یک توسعهدهنده هستید</string>
|
||||||
|
<string name="activity_not_found">هیچ برنامهای برای انجام این کار یافت نشد.</string>
|
||||||
|
<string name="pref_midnight_delay_title">تمدید کردن روز تا چند ساعت بعد از نیمهشب</string>
|
||||||
|
<string name="pref_midnight_delay_description">تا ساعت ۳ نیمهشب برای نمایش یک روز جدید صبر میکند. اگر معمولاً بعد از نیمهشب میخوابید، برای شما میتواند مفید باشد. نیازمند راهاندازی مجدد برنامه است.</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -28,6 +28,22 @@
|
|||||||
<string name="add_habit">Lisää rutiini</string>
|
<string name="add_habit">Lisää rutiini</string>
|
||||||
<string name="color_picker_default_title">Vaihda väriä</string>
|
<string name="color_picker_default_title">Vaihda väriä</string>
|
||||||
<string name="toast_habit_created">Rutiini luotu</string>
|
<string name="toast_habit_created">Rutiini luotu</string>
|
||||||
|
<plurals name="toast_habits_changed">
|
||||||
|
<item quantity="one">Rutiini muutettu</item>
|
||||||
|
<item quantity="other">Rutiinit muutettu</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="toast_habits_deleted">
|
||||||
|
<item quantity="one">Rutiini poistettu</item>
|
||||||
|
<item quantity="other">Rutiinit poistettu</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="toast_habits_archived">
|
||||||
|
<item quantity="one">Rutiini arkistoitu</item>
|
||||||
|
<item quantity="other">Rutiinit arkistoitu</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="toast_habits_unarchived">
|
||||||
|
<item quantity="one">Rutiini palautettu arkistosta</item>
|
||||||
|
<item quantity="other">Rutiinit palautettu arkistosta</item>
|
||||||
|
</plurals>
|
||||||
<string name="overview">Yleiskatsaus</string>
|
<string name="overview">Yleiskatsaus</string>
|
||||||
<string name="habit_strength">Rutiinin vahvuus</string>
|
<string name="habit_strength">Rutiinin vahvuus</string>
|
||||||
<string name="history">Historia</string>
|
<string name="history">Historia</string>
|
||||||
@@ -36,11 +52,12 @@
|
|||||||
<string name="save">Tallenna</string>
|
<string name="save">Tallenna</string>
|
||||||
<string name="streaks">Pisimmät toistot</string>
|
<string name="streaks">Pisimmät toistot</string>
|
||||||
<string name="no_habits_found">Ei aktiivisia rutiineja</string>
|
<string name="no_habits_found">Ei aktiivisia rutiineja</string>
|
||||||
<string name="long_press_to_toggle">Paina pitkään merkitäksesi suoritetuksi tai postaaksesi suorituksen</string>
|
<string name="no_habits_left_to_do">Olet tältä päivältä valmis!</string>
|
||||||
|
<string name="long_press_to_toggle">Paina pitkään merkitäksesi suoritetuksi tai poistaaksesi suorituksen</string>
|
||||||
<string name="reminder_off">Pois päältä</string>
|
<string name="reminder_off">Pois päältä</string>
|
||||||
<string name="create_habit">Luo rutiini</string>
|
<string name="create_habit">Luo rutiini</string>
|
||||||
<string name="edit_habit">Muokkaa rutiinia</string>
|
<string name="edit_habit">Muokkaa rutiinia</string>
|
||||||
<string name="check">Tehty</string>
|
<string name="check">Merkitse tehdyksi</string>
|
||||||
<string name="snooze">Lykkää</string>
|
<string name="snooze">Lykkää</string>
|
||||||
<string name="intro_title_1">Tervetuloa</string>
|
<string name="intro_title_1">Tervetuloa</string>
|
||||||
<string name="intro_description_1">Loop Habit Tracker auttaa sinua luomaan ja ylläpitämään hyviä rutiineja.</string>
|
<string name="intro_description_1">Loop Habit Tracker auttaa sinua luomaan ja ylläpitämään hyviä rutiineja.</string>
|
||||||
@@ -55,6 +72,7 @@
|
|||||||
<string name="interval_4_hour">4 tuntia</string>
|
<string name="interval_4_hour">4 tuntia</string>
|
||||||
<string name="interval_8_hour">8 tuntia</string>
|
<string name="interval_8_hour">8 tuntia</string>
|
||||||
<string name="interval_24_hour">24 tuntia</string>
|
<string name="interval_24_hour">24 tuntia</string>
|
||||||
|
<string name="interval_always_ask">Kysy aina</string>
|
||||||
<string name="interval_custom">Muu</string>
|
<string name="interval_custom">Muu</string>
|
||||||
<string name="pref_toggle_title">Vaihda merkintää lyhyellä painalluksella</string>
|
<string name="pref_toggle_title">Vaihda merkintää lyhyellä painalluksella</string>
|
||||||
<string name="pref_toggle_description">Tee merkit yhdellä painalluksella pitkän painalluksen sijaan. Kätevämpi, mutta saattaa aiheuttaa vahingossa painamista.</string>
|
<string name="pref_toggle_description">Tee merkit yhdellä painalluksella pitkän painalluksen sijaan. Kätevämpi, mutta saattaa aiheuttaa vahingossa painamista.</string>
|
||||||
@@ -64,25 +82,47 @@
|
|||||||
<string name="links">Linkit</string>
|
<string name="links">Linkit</string>
|
||||||
<string name="name">Nimi</string>
|
<string name="name">Nimi</string>
|
||||||
<string name="settings">Asetukset</string>
|
<string name="settings">Asetukset</string>
|
||||||
|
<string name="select_snooze_delay">Aseta torkkuaika</string>
|
||||||
<string name="hint_title">Tiesitkö?</string>
|
<string name="hint_title">Tiesitkö?</string>
|
||||||
<string name="hint_drag">Muokkaa merkintöjen järjestystä: valitse tavan nimi ja vedä se oikeaan paikkaan.</string>
|
<string name="hint_drag">Muokkaa merkintöjen järjestystä: valitse tavan nimi ja vedä se oikeaan paikkaan.</string>
|
||||||
<string name="hint_landscape">Näe lisää päiviä kääntämällä puhelimesi pitkittäin.</string>
|
<string name="hint_landscape">Näe lisää päiviä kääntämällä puhelimesi pitkittäin.</string>
|
||||||
|
<plurals name="delete_habits_title">
|
||||||
|
<item quantity="one">Poista rutiini?</item>
|
||||||
|
<item quantity="other">Poista rutiinit?</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="delete_habits_message">
|
||||||
|
<item quantity="one">Rutiini poistetaan pysyvästi. Toimintoa ei voi peruuttaa.</item>
|
||||||
|
<item quantity="other">Rutiinit poistetaan pysyvästi. Toimintoa ei voi peruuttaa.</item>
|
||||||
|
</plurals>
|
||||||
<string name="habit_not_found">Tapa on poistettu tai sitä ei löydy</string>
|
<string name="habit_not_found">Tapa on poistettu tai sitä ei löydy</string>
|
||||||
<string name="weekends">Viikonloppuisin</string>
|
<string name="weekends">Viikonloppuisin</string>
|
||||||
<string name="any_weekday">Maanantaista perjantaihin</string>
|
<string name="any_weekday">Maanantaista perjantaihin</string>
|
||||||
<string name="any_day">Mikä tahansa viikonpäivä</string>
|
<string name="any_day">Mikä tahansa viikonpäivä</string>
|
||||||
|
<string name="select_weekdays">Valitse päivät</string>
|
||||||
<string name="export_to_csv">Vie CSV-muodossa</string>
|
<string name="export_to_csv">Vie CSV-muodossa</string>
|
||||||
<string name="done_label">Valmis</string>
|
<string name="done_label">Valmis</string>
|
||||||
<string name="clear_label">Tyhjennä</string>
|
<string name="clear_label">Tyhjennä</string>
|
||||||
|
<string name="select_hours">Valitse tunnit</string>
|
||||||
<string name="select_minutes">Valitse minuutit</string>
|
<string name="select_minutes">Valitse minuutit</string>
|
||||||
<string name="about">Tietoa sovelluksesta</string>
|
<string name="about">Tietoa sovelluksesta</string>
|
||||||
<string name="translators">Kääntäjät</string>
|
<string name="translators">Kääntäjät</string>
|
||||||
<string name="developers">Kehittäjät</string>
|
<string name="developers">Kehittäjät</string>
|
||||||
<string name="version_n">Versio %s</string>
|
<string name="version_n">Versio %s</string>
|
||||||
<string name="frequency">Toistuvuus</string>
|
<string name="frequency">Toistuvuus</string>
|
||||||
|
<string name="checkmark">Valintamerkki</string>
|
||||||
|
<string name="best_streaks">Parhaat putket</string>
|
||||||
<string name="every_day">Joka päivä</string>
|
<string name="every_day">Joka päivä</string>
|
||||||
<string name="every_week">Joka viikko</string>
|
<string name="every_week">Joka viikko</string>
|
||||||
<string name="help">Ohjeita ja usein kysyttyä</string>
|
<string name="help">Ohjeita ja usein kysyttyä</string>
|
||||||
|
<string name="could_not_export">Tietojen vienti ei onnistunut.</string>
|
||||||
|
<string name="could_not_import">Tietojen tuominen ei onnistunut.</string>
|
||||||
|
<string name="file_not_recognized">Tiedostoa ei tunnistettu.</string>
|
||||||
|
<string name="habits_imported">Rutiinit tuotu onnistuneesti.</string>
|
||||||
|
<string name="import_data">Tuo tiedot</string>
|
||||||
|
<string name="export_full_backup">Vie täysi varmuuskopio</string>
|
||||||
|
<string name="import_data_summary">Tukee tästä sovelluksesta vietyjä täysiä varmuuskopioita, sekä tiedostoja jotka on luotu sovelluksissa Tickmate, HabitBull ja Rewire. Katso usein kysytyistä kysymyksistä lisätietoa.</string>
|
||||||
|
<string name="export_as_csv_summary">Luo tiedostoja jotka voidaan avata taulukkolaskentaohjelmistolla, kuten Microsoft Excel tai OpenOffice Calc. Tätä tiedostoa ei voi tuoda takaisin.</string>
|
||||||
|
<string name="export_full_backup_summary">Luo tiedoston jossa on kaikki tietosi. Tämä tiedosto voidaan tuoda takaisin.</string>
|
||||||
<string name="bug_report_failed">Virheraportin luonti epäonnistui.</string>
|
<string name="bug_report_failed">Virheraportin luonti epäonnistui.</string>
|
||||||
<string name="generate_bug_report">Luo virheraportti</string>
|
<string name="generate_bug_report">Luo virheraportti</string>
|
||||||
<string name="troubleshooting">Apua</string>
|
<string name="troubleshooting">Apua</string>
|
||||||
@@ -91,6 +131,7 @@
|
|||||||
<string name="use_pure_black">Käytä puhdasta mustaa yötilassa</string>
|
<string name="use_pure_black">Käytä puhdasta mustaa yötilassa</string>
|
||||||
<string name="pure_black_description">Korvaa harmaat taustat puhtaalla mustalla tummalla teemalla. Vähentää akun käyttöä puhelimissa AMOLED-näytöllä.</string>
|
<string name="pure_black_description">Korvaa harmaat taustat puhtaalla mustalla tummalla teemalla. Vähentää akun käyttöä puhelimissa AMOLED-näytöllä.</string>
|
||||||
<string name="interface_preferences">Käyttöliittymä</string>
|
<string name="interface_preferences">Käyttöliittymä</string>
|
||||||
|
<string name="reverse_days">Päivät käänteisessä järjestyksessä</string>
|
||||||
<string name="reverse_days_description">Näytä päivät käänteisessä järjestyksessä päänäytöllä.</string>
|
<string name="reverse_days_description">Näytä päivät käänteisessä järjestyksessä päänäytöllä.</string>
|
||||||
<string name="day">Päivä</string>
|
<string name="day">Päivä</string>
|
||||||
<string name="week">Viikko</string>
|
<string name="week">Viikko</string>
|
||||||
@@ -101,17 +142,52 @@
|
|||||||
<string name="yes_or_no">Kyllä vai ei?</string>
|
<string name="yes_or_no">Kyllä vai ei?</string>
|
||||||
<string name="every_x_days">%d päivän välein</string>
|
<string name="every_x_days">%d päivän välein</string>
|
||||||
<string name="every_x_weeks">%d viikon välein</string>
|
<string name="every_x_weeks">%d viikon välein</string>
|
||||||
<string name="score">Tulos</string>
|
<string name="score">Pisteet</string>
|
||||||
<string name="reminder_sound">Muistutusääni</string>
|
<string name="reminder_sound">Muistutusääni</string>
|
||||||
|
<string name="none">Ei mitään</string>
|
||||||
<string name="filter">Suodata</string>
|
<string name="filter">Suodata</string>
|
||||||
<string name="hide_completed">Piilota suoritetut</string>
|
<string name="hide_completed">Piilota suoritetut</string>
|
||||||
<string name="hide_archived">Piilota arkistoidut</string>
|
<string name="hide_archived">Piilota arkistoidut</string>
|
||||||
|
<string name="sticky_notifications">Tee ilmoituksesta kiinnitettyjä</string>
|
||||||
|
<string name="sticky_notifications_description">Estää ilmoitusten pois pyyhkäisemisen.</string>
|
||||||
|
<string name="led_notifications">Ilmoitusvalo</string>
|
||||||
|
<string name="led_notifications_description">Näyttää vilkkuvan valon ilmoituksista. Vain puhelimissa joissa on LED-ilmoitusvalo.</string>
|
||||||
|
<string name="repair_database">Korjaa tietokanta</string>
|
||||||
|
<string name="database_repaired">Tietokanta korjattu.</string>
|
||||||
|
<string name="uncheck">Poista tehdyksi merkintä</string>
|
||||||
|
<string name="toggle">Tilanvaihto</string>
|
||||||
|
<string name="action">Toiminta</string>
|
||||||
|
<string name="habit">Rutiini</string>
|
||||||
|
<string name="sort">Järjestä</string>
|
||||||
|
<string name="manually">Käsin</string>
|
||||||
|
<string name="by_name">Nimen mukaan</string>
|
||||||
|
<string name="by_color">Värin mukaan</string>
|
||||||
|
<string name="by_score">Pisteiden mukaan</string>
|
||||||
|
<string name="by_status">Tilan mukaan</string>
|
||||||
|
<string name="export">Vie</string>
|
||||||
|
<string name="long_press_to_edit">Pidä painettuna muuttaaksesi arvoa</string>
|
||||||
|
<string name="change_value">Muuta arvo</string>
|
||||||
|
<string name="calendar">Kalenteri</string>
|
||||||
|
<string name="unit">Yksikkö</string>
|
||||||
|
<string name="example_question_boolean">esim. Harrastitko tänään liikuntaa?</string>
|
||||||
|
<string name="question">Kysymys</string>
|
||||||
|
<string name="target">Tavoite</string>
|
||||||
|
<string name="yes">Kyllä</string>
|
||||||
|
<string name="no">Ei</string>
|
||||||
|
<string name="customize_notification_summary">Muuta ilmoitusten ääntä, värinää, valoa ja muita asetuksia</string>
|
||||||
|
<string name="customize_notification">Mukauta ilmoituksia</string>
|
||||||
|
<string name="pref_view_privacy">Katso tietosuojakäytäntö</string>
|
||||||
|
<string name="view_all_contributors">Näytä kaikki osallistujat…</string>
|
||||||
|
<string name="database">Tietokanta</string>
|
||||||
|
<string name="widget_opacity_title">Widgetin läpinäkyvyys</string>
|
||||||
|
<string name="widget_opacity_description">Muuttaa kotinäkymän widgettien läpinäkyvyyttä.</string>
|
||||||
<string name="first_day_of_the_week">Viikon ensimmäinen päivä</string>
|
<string name="first_day_of_the_week">Viikon ensimmäinen päivä</string>
|
||||||
<string name="default_reminder_question">Oletko suorittanut tämän tavan tänään?</string>
|
<string name="default_reminder_question">Oletko suorittanut tämän tavan tänään?</string>
|
||||||
<string name="notes">Muistiinpanot</string>
|
<string name="notes">Muistiinpanot</string>
|
||||||
<string name="example_notes">(Valinnainen)</string>
|
<string name="example_notes">(Valinnainen)</string>
|
||||||
<string name="yes_or_no_example">Esim. heräsitkö tänään aikaisin? Kuntoilitko? Pelasitko sakkia?</string>
|
<string name="yes_or_no_example">Esim. heräsitkö tänään aikaisin? Kuntoilitko? Pelasitko sakkia?</string>
|
||||||
<string name="measurable">Mitattava</string>
|
<string name="measurable">Mitattava</string>
|
||||||
|
<string name="measurable_example">esim. Montako kilometriä juoksit tänään? Montako sivua luit?</string>
|
||||||
<string name="x_times_per_week">%d kertaa viikossa</string>
|
<string name="x_times_per_week">%d kertaa viikossa</string>
|
||||||
<string name="x_times_per_month">%d kertaa kuukaudessa</string>
|
<string name="x_times_per_month">%d kertaa kuukaudessa</string>
|
||||||
<string name="yes_or_no_short_example">Esim. kuntoilu</string>
|
<string name="yes_or_no_short_example">Esim. kuntoilu</string>
|
||||||
@@ -123,4 +199,18 @@
|
|||||||
<string name="every_month">Joka kuukausi</string>
|
<string name="every_month">Joka kuukausi</string>
|
||||||
<string name="validation_cannot_be_blank">Tätä ei voi jättää tyhjäksi</string>
|
<string name="validation_cannot_be_blank">Tätä ei voi jättää tyhjäksi</string>
|
||||||
<string name="today">Tänään</string>
|
<string name="today">Tänään</string>
|
||||||
|
<string name="enter">Syötä</string>
|
||||||
|
<string name="no_habits">Rutiineja ei löydetty</string>
|
||||||
|
<string name="no_numerical_habits">Mitattavia rutiineja ei löytynyt</string>
|
||||||
|
<string name="no_boolean_habits">Kyllä-tai-ei-rutiineja ei löytynyt</string>
|
||||||
|
<string name="increment">Nosta</string>
|
||||||
|
<string name="decrement">Laske</string>
|
||||||
|
<string name="pref_skip_title">Ota ohituspäivät käyttöön</string>
|
||||||
|
<string name="pref_skip_description">Valitse kahdesti lisätäksesi ohituksen valinnan sijaan. Ohitukset pitävät pisteesi muuttumattomana eivätkä riko suoritusputkeasi.</string>
|
||||||
|
<string name="pref_unknown_title">Näytä kysymysmerkki puuttuvan tiedon kohdalla</string>
|
||||||
|
<string name="pref_unknown_description">Erota päivät ilman tietoja todellisista väliin jäämisistä. Lisätäksesi väliin jäämisen, valitse kahdesti.</string>
|
||||||
|
<string name="you_are_now_a_developer">Olet nyt kehittäjä</string>
|
||||||
|
<string name="activity_not_found">Tälle toiminnolle ei löytynyt yhtään sovellusta</string>
|
||||||
|
<string name="pref_midnight_delay_title">Pidennä päivää muutama tunti keskiyön jälkeen</string>
|
||||||
|
<string name="pref_midnight_delay_description">Odota kello 3.00 asti ennen uuden päivän näyttämistä. Hyödyllinen jos menet nukkumaan yleensä keskiyön jälkeen. Vaatii sovelluksen uudelleenkäynnistyksen.</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -28,6 +28,22 @@
|
|||||||
<string name="add_habit">Ajouter une habitude</string>
|
<string name="add_habit">Ajouter une habitude</string>
|
||||||
<string name="color_picker_default_title">Changer la couleur</string>
|
<string name="color_picker_default_title">Changer la couleur</string>
|
||||||
<string name="toast_habit_created">Habitude créée</string>
|
<string name="toast_habit_created">Habitude créée</string>
|
||||||
|
<plurals name="toast_habits_changed">
|
||||||
|
<item quantity="one">Habitude modifiée</item>
|
||||||
|
<item quantity="other">Habitudes modifiées</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="toast_habits_deleted">
|
||||||
|
<item quantity="one">Habitude supprimée</item>
|
||||||
|
<item quantity="other">Habitudes supprimées</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="toast_habits_archived">
|
||||||
|
<item quantity="one">Habitude archivée</item>
|
||||||
|
<item quantity="other">Habitudes archivées</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="toast_habits_unarchived">
|
||||||
|
<item quantity="one">Habitude désarchivée</item>
|
||||||
|
<item quantity="other">Habitudes désarchivées</item>
|
||||||
|
</plurals>
|
||||||
<string name="overview">Vue d\'ensemble</string>
|
<string name="overview">Vue d\'ensemble</string>
|
||||||
<string name="habit_strength">Force de l\'habitude</string>
|
<string name="habit_strength">Force de l\'habitude</string>
|
||||||
<string name="history">Historique</string>
|
<string name="history">Historique</string>
|
||||||
@@ -36,6 +52,7 @@
|
|||||||
<string name="save">Sauvegarder</string>
|
<string name="save">Sauvegarder</string>
|
||||||
<string name="streaks">Séries</string>
|
<string name="streaks">Séries</string>
|
||||||
<string name="no_habits_found">Vous n\'avez pas d\'habitudes actives</string>
|
<string name="no_habits_found">Vous n\'avez pas d\'habitudes actives</string>
|
||||||
|
<string name="no_habits_left_to_do">Vous avez fait toutes vos habitudes d\'aujourd\'hui !</string>
|
||||||
<string name="long_press_to_toggle">Appuyez longtemps pour cocher ou décocher</string>
|
<string name="long_press_to_toggle">Appuyez longtemps pour cocher ou décocher</string>
|
||||||
<string name="reminder_off">Aucun</string>
|
<string name="reminder_off">Aucun</string>
|
||||||
<string name="create_habit">Créer une habitude</string>
|
<string name="create_habit">Créer une habitude</string>
|
||||||
@@ -69,6 +86,14 @@
|
|||||||
<string name="hint_title">Le saviez-vous ?</string>
|
<string name="hint_title">Le saviez-vous ?</string>
|
||||||
<string name="hint_drag">Pour réordonner les habitudes, faites un appui long sur le nom de l\'habitude et placez-la à la bonne place.</string>
|
<string name="hint_drag">Pour réordonner les habitudes, faites un appui long sur le nom de l\'habitude et placez-la à la bonne place.</string>
|
||||||
<string name="hint_landscape">Vous pouvez voir plus de jours en mettant votre téléphone en mode paysage.</string>
|
<string name="hint_landscape">Vous pouvez voir plus de jours en mettant votre téléphone en mode paysage.</string>
|
||||||
|
<plurals name="delete_habits_title">
|
||||||
|
<item quantity="one">Supprimer cette habitude ?</item>
|
||||||
|
<item quantity="other">Supprimer ces habitudes ?</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="delete_habits_message">
|
||||||
|
<item quantity="one">L\'habitude va être supprimée définitivement. Cette action ne peut pas être annulée.</item>
|
||||||
|
<item quantity="other">Les habitudes vont être supprimées définitivements. Cette action ne peut pas être annulée.</item>
|
||||||
|
</plurals>
|
||||||
<string name="habit_not_found">Habitude supprimée / introuvable</string>
|
<string name="habit_not_found">Habitude supprimée / introuvable</string>
|
||||||
<string name="weekends">Weekends</string>
|
<string name="weekends">Weekends</string>
|
||||||
<string name="any_weekday">Du lundi au vendredi</string>
|
<string name="any_weekday">Du lundi au vendredi</string>
|
||||||
@@ -138,6 +163,7 @@
|
|||||||
<string name="by_name">Par nom</string>
|
<string name="by_name">Par nom</string>
|
||||||
<string name="by_color">Par couleur</string>
|
<string name="by_color">Par couleur</string>
|
||||||
<string name="by_score">Par score</string>
|
<string name="by_score">Par score</string>
|
||||||
|
<string name="by_status">Par statut</string>
|
||||||
<string name="export">Exporter</string>
|
<string name="export">Exporter</string>
|
||||||
<string name="long_press_to_edit">Appuyez et maintenez pour changer la valeur</string>
|
<string name="long_press_to_edit">Appuyez et maintenez pour changer la valeur</string>
|
||||||
<string name="change_value">Modifier la valeur</string>
|
<string name="change_value">Modifier la valeur</string>
|
||||||
@@ -161,6 +187,8 @@
|
|||||||
<string name="example_notes">(Facultatif) </string>
|
<string name="example_notes">(Facultatif) </string>
|
||||||
<string name="yes_or_no_example">Par exemple, vous êtes-vous réveillé tôt aujourd\'hui ? Avez-vous fait de l\'exercice ? Avez-vous joué aux échecs ? </string>
|
<string name="yes_or_no_example">Par exemple, vous êtes-vous réveillé tôt aujourd\'hui ? Avez-vous fait de l\'exercice ? Avez-vous joué aux échecs ? </string>
|
||||||
<string name="measurable">Quantifiable</string>
|
<string name="measurable">Quantifiable</string>
|
||||||
|
<string name="measurable_example">Par exemple : Quelle distance avez vous parcouru aujourd\'hui ?
|
||||||
|
Combien de pages avez-vous lu ?</string>
|
||||||
<string name="x_times_per_week">%d fois par semaine</string>
|
<string name="x_times_per_week">%d fois par semaine</string>
|
||||||
<string name="x_times_per_month">%d fois par mois</string>
|
<string name="x_times_per_month">%d fois par mois</string>
|
||||||
<string name="yes_or_no_short_example">Par ex, Entrainement</string>
|
<string name="yes_or_no_short_example">Par ex, Entrainement</string>
|
||||||
@@ -172,4 +200,18 @@
|
|||||||
<string name="every_month">Tous les mois</string>
|
<string name="every_month">Tous les mois</string>
|
||||||
<string name="validation_cannot_be_blank">Ne peut pas être vide</string>
|
<string name="validation_cannot_be_blank">Ne peut pas être vide</string>
|
||||||
<string name="today">Aujourd\'hui</string>
|
<string name="today">Aujourd\'hui</string>
|
||||||
|
<string name="enter">Inscrire</string>
|
||||||
|
<string name="no_habits">Aucune habitude trouvée :(</string>
|
||||||
|
<string name="no_numerical_habits">Aucune habitude quantifiable trouvée</string>
|
||||||
|
<string name="no_boolean_habits">Aucune habitude binaire trouvée</string>
|
||||||
|
<string name="increment">Augmenter</string>
|
||||||
|
<string name="decrement">Diminuer</string>
|
||||||
|
<string name="pref_skip_title">Pouvoir passer des jours</string>
|
||||||
|
<string name="pref_skip_description">Appuyer deux fois pour passer un jour au lieu de valider. Passer des jours ne change pas votre score et ne brise pas votre série.</string>
|
||||||
|
<string name="pref_unknown_title">Afficher des points d\'interrogations pour les données manquantes</string>
|
||||||
|
<string name="pref_unknown_description">Différentié les jours sans donnée des jours sans avoir fait les habitudes. Pour passer un jour, appuyez deux fois longtemps au lieu d\'une seul fois.</string>
|
||||||
|
<string name="you_are_now_a_developer">Vous êtes désormais un développeur !</string>
|
||||||
|
<string name="activity_not_found">Aucune application trouvée pour faire cette action</string>
|
||||||
|
<string name="pref_midnight_delay_title">Prolonger les jours de quelques heures après minuit </string>
|
||||||
|
<string name="pref_midnight_delay_description">Attendre jusqu\'à trois heures du matin pour changer de jour. Très utile si vous avez l\'habitude d\'aller dormir après minuit. (Redémarrage nécessaire)</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -23,11 +23,23 @@
|
|||||||
<string name="action_settings">सेटिंग्स</string>
|
<string name="action_settings">सेटिंग्स</string>
|
||||||
<string name="edit">संपादित करें</string>
|
<string name="edit">संपादित करें</string>
|
||||||
<string name="delete">हटाएँ</string>
|
<string name="delete">हटाएँ</string>
|
||||||
<string name="archive">संग्रहीत करें</string>
|
<string name="archive">संग्रहित करें</string>
|
||||||
<string name="unarchive">असंगृहीत करें</string>
|
<string name="unarchive">असंग्रहीत करें</string>
|
||||||
<string name="add_habit">आदत जोड़ें</string>
|
<string name="add_habit">आदत जोड़ें</string>
|
||||||
<string name="color_picker_default_title">रंग बदलें</string>
|
<string name="color_picker_default_title">रंग बदलें</string>
|
||||||
<string name="toast_habit_created">आदत बनायी गई</string>
|
<string name="toast_habit_created">आदत बनायी गई</string>
|
||||||
|
<plurals name="toast_habits_deleted">
|
||||||
|
<item quantity="one">आदत हटाई गई</item>
|
||||||
|
<item quantity="other">आदतें हटाई गई</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="toast_habits_archived">
|
||||||
|
<item quantity="one">आदत संग्रहित की गई</item>
|
||||||
|
<item quantity="other">आदतें संग्रहीत की गई</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="toast_habits_unarchived">
|
||||||
|
<item quantity="one">आदत असंग्रहीत की गई</item>
|
||||||
|
<item quantity="other">आदतें असंग्रहीत की गई</item>
|
||||||
|
</plurals>
|
||||||
<string name="overview">अवलोकन</string>
|
<string name="overview">अवलोकन</string>
|
||||||
<string name="habit_strength">आदत शक्ति</string>
|
<string name="habit_strength">आदत शक्ति</string>
|
||||||
<string name="history">पूर्वलेख</string>
|
<string name="history">पूर्वलेख</string>
|
||||||
@@ -37,6 +49,7 @@
|
|||||||
<string name="streaks">प्रवर्ति</string>
|
<string name="streaks">प्रवर्ति</string>
|
||||||
<string name="no_habits_found">\"आपकी कोई सक्रिय आदत नही है
|
<string name="no_habits_found">\"आपकी कोई सक्रिय आदत नही है
|
||||||
\"</string>
|
\"</string>
|
||||||
|
<string name="no_habits_left_to_do">आप के आज के सभी कार्य समाप्त होते हैं </string>
|
||||||
<string name="long_press_to_toggle">चेक या अनचेक करने के लिए दबाएँ व दबाएँ रखें </string>
|
<string name="long_press_to_toggle">चेक या अनचेक करने के लिए दबाएँ व दबाएँ रखें </string>
|
||||||
<string name="reminder_off">बंद</string>
|
<string name="reminder_off">बंद</string>
|
||||||
<string name="create_habit">नयी आदत बनाएं </string>
|
<string name="create_habit">नयी आदत बनाएं </string>
|
||||||
@@ -77,6 +90,14 @@
|
|||||||
प्रविष्टियों को पुनर्व्यवस्थित करने के लिए, आदत के नाम पर प्रेस करें और सही जगह पर खींचें।\"</string>
|
प्रविष्टियों को पुनर्व्यवस्थित करने के लिए, आदत के नाम पर प्रेस करें और सही जगह पर खींचें।\"</string>
|
||||||
<string name="hint_landscape">\"
|
<string name="hint_landscape">\"
|
||||||
अपने फोन को लांडसकपे मोड मे रख कर आप अधिक दिनों से देख सकते हैं\"</string>
|
अपने फोन को लांडसकपे मोड मे रख कर आप अधिक दिनों से देख सकते हैं\"</string>
|
||||||
|
<plurals name="delete_habits_title">
|
||||||
|
<item quantity="one">आदत हटाये?</item>
|
||||||
|
<item quantity="other">आदत हटाएँ</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="delete_habits_message">
|
||||||
|
<item quantity="one">आदत हमेशा के लिये हटा दी जाएगी। इसे वापस नहीं लाया जा सकता।</item>
|
||||||
|
<item quantity="other">आदतें हमेशा के लिये हटा दी जाएगी। उन्हे वापस नहीं लाया जा सकता।</item>
|
||||||
|
</plurals>
|
||||||
<string name="habit_not_found">आदत हटाई गई / नहीं मिली</string>
|
<string name="habit_not_found">आदत हटाई गई / नहीं मिली</string>
|
||||||
<string name="weekends">\"
|
<string name="weekends">\"
|
||||||
सप्ताहांत\"</string>
|
सप्ताहांत\"</string>
|
||||||
@@ -157,6 +178,7 @@
|
|||||||
<string name="sticky_notifications">सुचनाए स्थयी रखे</string>
|
<string name="sticky_notifications">सुचनाए स्थयी रखे</string>
|
||||||
<string name="sticky_notifications_description">नोटिफिकेशन को स्वाइप करने से रोकता है!</string>
|
<string name="sticky_notifications_description">नोटिफिकेशन को स्वाइप करने से रोकता है!</string>
|
||||||
<string name="led_notifications">नोटिफिकेशन लाइट</string>
|
<string name="led_notifications">नोटिफिकेशन लाइट</string>
|
||||||
|
<string name="led_notifications_description">स्मरण के लिए एक चमकती रोशनी दिखाता है। यह केवल एलईडी नोटिफिकेशन लाइट वाले फोन में उपलब्ध है।</string>
|
||||||
<string name="repair_database">डेटाबेस को रिपेयर करें</string>
|
<string name="repair_database">डेटाबेस को रिपेयर करें</string>
|
||||||
<string name="database_repaired">डेटाबेस रिपेयर सफल</string>
|
<string name="database_repaired">डेटाबेस रिपेयर सफल</string>
|
||||||
<string name="uncheck">निशान हटाएँ</string>
|
<string name="uncheck">निशान हटाएँ</string>
|
||||||
@@ -168,7 +190,9 @@
|
|||||||
<string name="by_name">नाम द्वारा</string>
|
<string name="by_name">नाम द्वारा</string>
|
||||||
<string name="by_color">रंग द्वारा</string>
|
<string name="by_color">रंग द्वारा</string>
|
||||||
<string name="by_score">स्कोर से</string>
|
<string name="by_score">स्कोर से</string>
|
||||||
|
<string name="by_status">स्थिति से</string>
|
||||||
<string name="export">एक्सपोर्ट करे</string>
|
<string name="export">एक्सपोर्ट करे</string>
|
||||||
|
<string name="long_press_to_edit">बदलने के लिए दबाकर रखें</string>
|
||||||
<string name="change_value">वैल्यू बदलें</string>
|
<string name="change_value">वैल्यू बदलें</string>
|
||||||
<string name="calendar">कैलेंडर</string>
|
<string name="calendar">कैलेंडर</string>
|
||||||
<string name="unit">इकाई</string>
|
<string name="unit">इकाई</string>
|
||||||
@@ -190,4 +214,32 @@
|
|||||||
<string name="example_notes">वैकल्पिक</string>
|
<string name="example_notes">वैकल्पिक</string>
|
||||||
<string name="yes_or_no_example">उदा। क्या आप आज जल्दी उठ गए? क्या आपने व्यायाम किया? क्या आपने शतरंज खेला?</string>
|
<string name="yes_or_no_example">उदा। क्या आप आज जल्दी उठ गए? क्या आपने व्यायाम किया? क्या आपने शतरंज खेला?</string>
|
||||||
<string name="measurable">मापें</string>
|
<string name="measurable">मापें</string>
|
||||||
|
<string name="measurable_example">जैसे आज आप कितने मील दौड़े? आपने कितने पन्ने पढ़े?</string>
|
||||||
|
<string name="x_times_per_week">\"
|
||||||
|
प्रति सप्ताह %d बार\"</string>
|
||||||
|
<string name="x_times_per_month">\"
|
||||||
|
प्रति माह %d बार\"</string>
|
||||||
|
<string name="yes_or_no_short_example">जैसे व्यायाम</string>
|
||||||
|
<string name="color">रंग</string>
|
||||||
|
<string name="example_target">जैसे १५</string>
|
||||||
|
<string name="measurable_short_example">जैसे दौड</string>
|
||||||
|
<string name="measurable_question_example">जैसे आज आप कितने मील दौड़े?</string>
|
||||||
|
<string name="measurable_units_example">जैसे मील</string>
|
||||||
|
<string name="every_month">प्रति माह</string>
|
||||||
|
<string name="validation_cannot_be_blank">इसे खाली नहीं रखा जा सकता</string>
|
||||||
|
<string name="today">आज</string>
|
||||||
|
<string name="enter">दर्ज करें</string>
|
||||||
|
<string name="no_habits">कोई आदत नहीं मिली</string>
|
||||||
|
<string name="no_numerical_habits">कोई मापने योग्य आदत नहीं मिली</string>
|
||||||
|
<string name="no_boolean_habits">हां - या - ना में आदत नहीं मिली</string>
|
||||||
|
<string name="increment">वृद्धि (Increment)</string>
|
||||||
|
<string name="decrement">घटौंती</string>
|
||||||
|
<string name="pref_skip_title">दिन छोड़ना सक्षम करें</string>
|
||||||
|
<string name="pref_skip_description">चेकमार्क के बजाय स्किप जोड़ने के लिए दो बार टॉगल करें। स्किप आपके स्कोर को जारी रखते हैं और आपकी स्ट्रीक को नहीं तोड़ते हैं।</string>
|
||||||
|
<string name="pref_unknown_title">खोयी जानकारी के लिए प्रश्न चिह्न दिखाएं</string>
|
||||||
|
<string name="pref_unknown_description">वास्तविक चूकों और बिना जानकारीवाले दिनों में अंतर करें। चूक दर्ज करने के लिए, दो बार टॉगल करें।</string>
|
||||||
|
<string name="you_are_now_a_developer">अब आप एक विकसक हैं</string>
|
||||||
|
<string name="activity_not_found">इस कार्रवाई को संभालने के लिए कोई ऐप नहीं मिला</string>
|
||||||
|
<string name="pref_midnight_delay_title">मध्यरात्रि से कुछ घंटे बाद तक दिन बढ़ाएँ</string>
|
||||||
|
<string name="pref_midnight_delay_description">नया दिन दिखाने के लिए सुबह 3:00 बजे तक प्रतीक्षा करें। उपयोगी अगर आप आमतौर पर आधी रात के बाद सोने जाते हैं। ऐप पुनरारंभ की आवश्यकता होगी।</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -206,6 +206,7 @@
|
|||||||
<string name="increment">Incremento</string>
|
<string name="increment">Incremento</string>
|
||||||
<string name="decrement">Decremento</string>
|
<string name="decrement">Decremento</string>
|
||||||
<string name="pref_skip_title">Abilita salta giorni</string>
|
<string name="pref_skip_title">Abilita salta giorni</string>
|
||||||
|
<string name="pref_skip_description">Attiva/disattiva due volte per aggiungere un salto invece di una spunta. Un salto mantiene il tuo punteggio invariato e non interrompe il tuo punteggio.</string>
|
||||||
<string name="pref_unknown_title">Mostra punti interrogativi per i dati mancanti</string>
|
<string name="pref_unknown_title">Mostra punti interrogativi per i dati mancanti</string>
|
||||||
<string name="you_are_now_a_developer">Ora sei uno sviluppatore</string>
|
<string name="you_are_now_a_developer">Ora sei uno sviluppatore</string>
|
||||||
<string name="activity_not_found">Nessuna app disponibile per gestire questa azione</string>
|
<string name="activity_not_found">Nessuna app disponibile per gestire questa azione</string>
|
||||||
|
|||||||
@@ -18,70 +18,107 @@
|
|||||||
~ with this program. If not, see <http://www.gnu.org/licenses/>.
|
~ with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
-->
|
-->
|
||||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||||
<string name="app_name">Loop Habit Tracker</string>
|
<string name="app_name">Loop למעקב אחר ההרגלים</string>
|
||||||
<string name="main_activity_title">הרגלים</string>
|
<string name="main_activity_title">הרגלים</string>
|
||||||
<string name="action_settings">הגדרות</string>
|
<string name="action_settings">הגדרות</string>
|
||||||
<string name="edit">עריכה</string>
|
<string name="edit">עריכה</string>
|
||||||
<string name="delete">מחיקה</string>
|
<string name="delete">מחיקה</string>
|
||||||
<string name="archive">העברה לארכיון</string>
|
<string name="archive">העברה לארכיון</string>
|
||||||
<string name="unarchive">הוצא מארכיון</string>
|
<string name="unarchive">הוצאה מהארכיון</string>
|
||||||
<string name="add_habit">הרגל חדש</string>
|
<string name="add_habit">הרגל חדש</string>
|
||||||
<string name="color_picker_default_title">שינוי צבע</string>
|
<string name="color_picker_default_title">שינוי צבע</string>
|
||||||
<string name="toast_habit_created">הרגל נוצר</string>
|
<string name="toast_habit_created">ההרגל נוצר</string>
|
||||||
|
<plurals name="toast_habits_changed">
|
||||||
|
<item quantity="one">ההרגל השתנה</item>
|
||||||
|
<item quantity="two">ההרגלים השתנו</item>
|
||||||
|
<item quantity="many">ההרגלים השתנו</item>
|
||||||
|
<item quantity="other">ההרגלים השתנו</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="toast_habits_deleted">
|
||||||
|
<item quantity="one">ההרגל נמחק</item>
|
||||||
|
<item quantity="two">ההרגלים נמחקו</item>
|
||||||
|
<item quantity="many">ההרגלים נמחקו</item>
|
||||||
|
<item quantity="other">ההרגלים נמחקו</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="toast_habits_archived">
|
||||||
|
<item quantity="one">ההרגל הועבר לארכיון</item>
|
||||||
|
<item quantity="two">ההרגלים הועברו לארכיון</item>
|
||||||
|
<item quantity="many">ההרגלים הועברו לארכיון</item>
|
||||||
|
<item quantity="other">ההרגלים הועברו לארכיון</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="toast_habits_unarchived">
|
||||||
|
<item quantity="one">ההרגל הוצא מהארכיון</item>
|
||||||
|
<item quantity="two">ההרגלים הוצאו מארכיון</item>
|
||||||
|
<item quantity="many">ההרגלים הוצאו מארכיון</item>
|
||||||
|
<item quantity="other">ההרגלים הוצאו מארכיון</item>
|
||||||
|
</plurals>
|
||||||
<string name="overview">סקירה כללית</string>
|
<string name="overview">סקירה כללית</string>
|
||||||
<string name="habit_strength">חוזק ההרגל</string>
|
<string name="habit_strength">חוזק ההרגל</string>
|
||||||
<string name="history">היסטוריה</string>
|
<string name="history">היסטוריה</string>
|
||||||
<string name="clear">ניקוי</string>
|
<string name="clear">ניקוי</string>
|
||||||
<string name="reminder">תזכורת</string>
|
<string name="reminder">תזכורת</string>
|
||||||
<string name="save">שמירה</string>
|
<string name="save">שמירה</string>
|
||||||
<string name="streaks">רצף</string>
|
<string name="streaks">רצפים</string>
|
||||||
<string name="no_habits_found">אין לך הרגלים פעילים</string>
|
<string name="no_habits_found">אין לך הרגלים פעילים</string>
|
||||||
|
<string name="no_habits_left_to_do">סיימת הכול להיום!</string>
|
||||||
<string name="long_press_to_toggle">לחיצה והחזקה יסמנו או יבטלו את הסימון</string>
|
<string name="long_press_to_toggle">לחיצה והחזקה יסמנו או יבטלו את הסימון</string>
|
||||||
<string name="reminder_off">כבוי</string>
|
<string name="reminder_off">כבוי</string>
|
||||||
<string name="create_habit">יצירת הרגל</string>
|
<string name="create_habit">יצירת הרגל</string>
|
||||||
<string name="edit_habit">עריכת הרגל</string>
|
<string name="edit_habit">עריכת הרגל</string>
|
||||||
<string name="check">בוצע</string>
|
<string name="check">סימון</string>
|
||||||
<string name="snooze">מאוחר יותר</string>
|
<string name="snooze">מאוחר יותר</string>
|
||||||
<string name="intro_title_1">ברוך בואך</string>
|
<string name="intro_title_1">ברוך בואך</string>
|
||||||
<string name="intro_description_1">Loop Habit Tracker מסייע ליצור ולשמר הרגלים טובים.</string>
|
<string name="intro_description_1">„Loop למעקב אחר ההרגלים” מסייע לך ביצירה ובשימור הרגלים טובים.</string>
|
||||||
<string name="intro_title_2">ליצור הרגלים חדשים</string>
|
<string name="intro_title_2">יצירת הרגלים חדשים</string>
|
||||||
<string name="intro_description_2">בכל יום, אחרי ביצוע ההרגל יש לסמן זאת ביישום.</string>
|
<string name="intro_description_2">בכל יום, לאחר שביצעת את ההרגל, יש לסמן זאת ביישום.</string>
|
||||||
<string name="intro_title_4">מעקב התקדמות</string>
|
<string name="intro_title_4">מעקב אחר ההתקדמות</string>
|
||||||
<string name="intro_description_4">גרפים מפורטים מציגים כיצד ההרגלים שלך משתפרים לאורך זמן.</string>
|
<string name="intro_description_4">גרפים מפורטים מציגים כיצד ההרגלים שלך השתפרו לאורך זמן.</string>
|
||||||
<string name="interval_15_minutes">15 דקות</string>
|
<string name="interval_15_minutes">15 דקות</string>
|
||||||
<string name="interval_30_minutes">30 דקות</string>
|
<string name="interval_30_minutes">30 דקות</string>
|
||||||
<string name="interval_1_hour">שעה 1</string>
|
<string name="interval_1_hour">שעה</string>
|
||||||
<string name="interval_2_hour">2 שעות</string>
|
<string name="interval_2_hour">שעתיים</string>
|
||||||
<string name="interval_4_hour">4 שעות</string>
|
<string name="interval_4_hour">4 שעות</string>
|
||||||
<string name="interval_8_hour">8 שעות</string>
|
<string name="interval_8_hour">8 שעות</string>
|
||||||
<string name="interval_24_hour">24 שעות</string>
|
<string name="interval_24_hour">24 שעות</string>
|
||||||
<string name="interval_always_ask">תמיד לשאול</string>
|
<string name="interval_always_ask">תמיד לשאול</string>
|
||||||
<string name="interval_custom">התאמה אישית...</string>
|
<string name="interval_custom">התאמה אישית...</string>
|
||||||
<string name="pref_toggle_title">סימון הרגלים בלחיצה קצרה</string>
|
<string name="pref_toggle_title">סימון הרגלים בלחיצה קצרה</string>
|
||||||
<string name="pref_toggle_description">סמנו יעדים בהקשה קצרה במקום לחיצה ממושכת. נוח יותר, אך יכול להוביל ללחיצות לא מכוונות.</string>
|
<string name="pref_toggle_description">סימון יעדים בהקשה קצרה במקום בלחיצה ממושכת. זה נוח יותר, אך יכול להוביל לסימוני הרגלים בטעות.</string>
|
||||||
<string name="pref_rate_this_app">דירוג היישום ב־Google Play</string>
|
<string name="pref_rate_this_app">דירוג היישום ב־Google Play</string>
|
||||||
<string name="pref_send_feedback">שליחת משוב למפתחים</string>
|
<string name="pref_send_feedback">שליחת משוב למפתחים</string>
|
||||||
<string name="pref_view_source_code">צפייה בקוד המקור ב־GitHub</string>
|
<string name="pref_view_source_code">צפייה בקוד המקור ב־GitHub</string>
|
||||||
<string name="links">קישורים</string>
|
<string name="links">קישורים</string>
|
||||||
<string name="name">שם</string>
|
<string name="name">שם</string>
|
||||||
<string name="settings">הגדרות</string>
|
<string name="settings">הגדרות</string>
|
||||||
<string name="select_snooze_delay">הגדר זמן לדחיית תזכורת</string>
|
<string name="select_snooze_delay">נא לבחור זמן לדחיית התזכורת</string>
|
||||||
<string name="hint_title">הידעת?</string>
|
<string name="hint_title">הידעת?</string>
|
||||||
<string name="hint_drag">לשינוי סדר ההרגלים, יש ללחוץ לחיצה ארוכה על ההרגל ולגרור אותו למקום הרצוי.</string>
|
<string name="hint_drag">לשינוי סדר ההרגלים, יש ללחוץ לחיצה ארוכה על ההרגל ולגרור אותו למקום הרצוי.</string>
|
||||||
<string name="hint_landscape">ניתן לראות ימים נוספים ע\"י סיבוב המסך לתצוגה רוחבית.</string>
|
<string name="hint_landscape">אפשר לראות ימים נוספים בעזרת סיבוב המסך לתצוגה אופקית.</string>
|
||||||
<string name="habit_not_found">הרגל נמחק / לא נמצא</string>
|
<plurals name="delete_habits_title">
|
||||||
|
<item quantity="one">למחוק את ההרגל?</item>
|
||||||
|
<item quantity="two">למחוק את ההרגלים?</item>
|
||||||
|
<item quantity="many">למחוק את ההרגלים?</item>
|
||||||
|
<item quantity="other">למחוק את ההרגלים?</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="delete_habits_message">
|
||||||
|
<item quantity="one">ההרגל יימחק לצמיתות. לא ניתן לבטל פעולה זו.</item>
|
||||||
|
<item quantity="two">ההרגלים יימחקו לצמיתות. לא ניתן לבטל פעולה זו.</item>
|
||||||
|
<item quantity="many">ההרגלים יימחקו לצמיתות. לא ניתן לבטל פעולה זו.</item>
|
||||||
|
<item quantity="other">ההרגלים יימחקו לצמיתות. לא ניתן לבטל פעולה זו.</item>
|
||||||
|
</plurals>
|
||||||
|
<string name="habit_not_found">ההרגל נמחק / לא נמצא</string>
|
||||||
<string name="weekends">סופי שבוע</string>
|
<string name="weekends">סופי שבוע</string>
|
||||||
<string name="any_weekday">ימי חול</string>
|
<string name="any_weekday">ימי חול</string>
|
||||||
<string name="any_day">כל יום בשבוע</string>
|
<string name="any_day">כל ימות השבוע</string>
|
||||||
<string name="select_weekdays">בחירת ימים</string>
|
<string name="select_weekdays">בחירת ימים</string>
|
||||||
<string name="export_to_csv">ייצוא כקובץ CSV</string>
|
<string name="export_to_csv">ייצוא כקובץ CSV</string>
|
||||||
<string name="done_label">בוצע</string>
|
<string name="done_label">סיום</string>
|
||||||
<string name="clear_label">ניקוי</string>
|
<string name="clear_label">ניקוי</string>
|
||||||
<string name="select_hours">בחר שעות</string>
|
<string name="select_hours">בחירת שעות</string>
|
||||||
<string name="select_minutes">בחר דקות</string>
|
<string name="select_minutes">בחירת דקות</string>
|
||||||
<string name="about">על אודות</string>
|
<string name="about">על אודות</string>
|
||||||
<string name="translators">מתרגמים</string>
|
<string name="translators">תרגום</string>
|
||||||
<string name="developers">מפתחים</string>
|
<string name="developers">פיתוח</string>
|
||||||
<string name="version_n">גרסה %s</string>
|
<string name="version_n">גרסה %s</string>
|
||||||
<string name="frequency">תדירות</string>
|
<string name="frequency">תדירות</string>
|
||||||
<string name="checkmark">סימון הרגל</string>
|
<string name="checkmark">סימון הרגל</string>
|
||||||
@@ -89,31 +126,31 @@
|
|||||||
<string name="every_day">כל יום</string>
|
<string name="every_day">כל יום</string>
|
||||||
<string name="every_week">כל שבוע</string>
|
<string name="every_week">כל שבוע</string>
|
||||||
<string name="help">עזרה ושאלות נפוצות</string>
|
<string name="help">עזרה ושאלות נפוצות</string>
|
||||||
<string name="could_not_export">ייצוא נתונים נכשל.</string>
|
<string name="could_not_export">ייצוא הנתונים נכשל.</string>
|
||||||
<string name="could_not_import">ייבוא נתונים נכשל.</string>
|
<string name="could_not_import">ייבוא הנתונים נכשל.</string>
|
||||||
<string name="file_not_recognized">קובץ לא מזוהה.</string>
|
<string name="file_not_recognized">הקובץ אינו מזוהה.</string>
|
||||||
<string name="habits_imported">הרגלים יובאו בהצלחה.</string>
|
<string name="habits_imported">ההרגלים יובאו בהצלחה.</string>
|
||||||
<string name="import_data">ייבוא נתונים</string>
|
<string name="import_data">ייבוא נתונים</string>
|
||||||
<string name="export_full_backup">ייצוא גיבוי מלא</string>
|
<string name="export_full_backup">ייצוא גיבוי מלא</string>
|
||||||
<string name="import_data_summary">תומך בכל הגיבויים שיוצאו ע\"י האפליקציה. כמו גם קבצים שנוצרו ע\"י Tickmate, HabitBull או Rewire. לפרטים נוספים ראו שאלות נפוצות.</string>
|
<string name="import_data_summary">תומך בכל הגיבויים שיוצאו על ידי היישום, כמו־גם קבצים שנוצרו על ידי Tickmate, HabitBull או Rewire. למידע נוסף נא לעיין בשאלות הנפוצות.</string>
|
||||||
<string name="export_as_csv_summary">יוצר קבצים שניתן לפתוח על-ידי תוכנות גיליון אלקטרוני כגון Microsoft Excel או OpenOffice. אין אפשרות לייבא את הקובץ בחזרה.</string>
|
<string name="export_as_csv_summary">ליצירת קבצים שניתן לפתוח באמצעות תוכנת גיליון אלקטרוני כגון Microsoft Exel או OpenOffice Calc. לא ניתן לייבא את נתוני הקובץ בחזרה.</string>
|
||||||
<string name="export_full_backup_summary">יוצר קובץ המכיל את כל הנתונים שלך. קובץ זה ניתן לייבא בחזרה.</string>
|
<string name="export_full_backup_summary">ליצירת קובץ שמכיל את כל הנתונים שלך. לא ניתן לייבא את נתוני הקובץ בחזרה.</string>
|
||||||
<string name="bug_report_failed">הפקת דוח שגיאות נכשלה.</string>
|
<string name="bug_report_failed">יצירת דו״ח התקלה נכשלה.</string>
|
||||||
<string name="generate_bug_report">הפקת דוח שגיאות</string>
|
<string name="generate_bug_report">יצירת דו״ח תקלה</string>
|
||||||
<string name="troubleshooting">פתרון תקלות</string>
|
<string name="troubleshooting">פתרון תקלות</string>
|
||||||
<string name="help_translate">עזרו לנו לתרגם את האפליקציה</string>
|
<string name="help_translate">עזרה בתרגום היישום</string>
|
||||||
<string name="night_mode" comment="dark_theme">מצב לילה</string>
|
<string name="night_mode" comment="dark_theme">ערכת נושא כהה</string>
|
||||||
<string name="use_pure_black">רקע שחור למצב לילה</string>
|
<string name="use_pure_black">רקע שחור מוחלט בערכת הנושא הכהה</string>
|
||||||
<string name="pure_black_description">החלפת הרקע האפור במצב לילה לשחור מוחלט. מפחית בזבוז סוללה במכשירים עם תצוגת AMOLED.</string>
|
<string name="pure_black_description">להחלפת הרקע האפור בערכת הנושא הכהה לשחור מוחלט. זה מפחית את צריכת הסוללה במכשירים עם תצוגת AMOLED.</string>
|
||||||
<string name="interface_preferences">ממשק</string>
|
<string name="interface_preferences">ממשק</string>
|
||||||
<string name="reverse_days">הפיכת סדר הימים</string>
|
<string name="reverse_days">סדר ימים הפוך</string>
|
||||||
<string name="reverse_days_description">מציג ימים בסדר הפוך במסך הראשי</string>
|
<string name="reverse_days_description">הצגת ימים בסדר הפוך במסך הראשי.</string>
|
||||||
<string name="day">יום</string>
|
<string name="day">יום</string>
|
||||||
<string name="week">שבוע</string>
|
<string name="week">שבוע</string>
|
||||||
<string name="month">חודש</string>
|
<string name="month">חודש</string>
|
||||||
<string name="quarter">רבעון</string>
|
<string name="quarter">רבעון</string>
|
||||||
<string name="year">שנה</string>
|
<string name="year">שנה</string>
|
||||||
<string name="total">סה\"כ</string>
|
<string name="total">בסך הכול</string>
|
||||||
<string name="yes_or_no">כן או לא</string>
|
<string name="yes_or_no">כן או לא</string>
|
||||||
<string name="every_x_days">כל %d ימים</string>
|
<string name="every_x_days">כל %d ימים</string>
|
||||||
<string name="every_x_weeks">כל %d שבועות</string>
|
<string name="every_x_weeks">כל %d שבועות</string>
|
||||||
@@ -121,16 +158,16 @@
|
|||||||
<string name="reminder_sound">צליל תזכורת</string>
|
<string name="reminder_sound">צליל תזכורת</string>
|
||||||
<string name="none">ללא</string>
|
<string name="none">ללא</string>
|
||||||
<string name="filter">סינון</string>
|
<string name="filter">סינון</string>
|
||||||
<string name="hide_completed">הסתר יעדים שהושלמו</string>
|
<string name="hide_completed">הסתרת יעדים שהושגו</string>
|
||||||
<string name="hide_archived">הסתר ארכיון</string>
|
<string name="hide_archived">הסתרת הארכיון</string>
|
||||||
<string name="sticky_notifications">צור תזכורות \"דביקות\"</string>
|
<string name="sticky_notifications">יצירת תזכורות נעוצות</string>
|
||||||
<string name="sticky_notifications_description">מונע החלקת וביטול תזכורות.</string>
|
<string name="sticky_notifications_description">למניעת התעלמות מתזכורות.</string>
|
||||||
<string name="led_notifications">תאורת התראה</string>
|
<string name="led_notifications">תאורת התראה</string>
|
||||||
<string name="led_notifications_description">הראה אור מהבהב לתזכורות. זמין רק בטלפונים עם נורות LED להתראות.</string>
|
<string name="led_notifications_description">להצגת אור מהבהב לתזכורות. זמין רק בטלפונים עם נורות LED להתראות.</string>
|
||||||
<string name="repair_database">תיקון מסד נתונים</string>
|
<string name="repair_database">תיקון מסד הנתונים</string>
|
||||||
<string name="database_repaired">מאגר נתונים תוקן.</string>
|
<string name="database_repaired">מסד הנתונים תוקן.</string>
|
||||||
<string name="uncheck">ביטול סימון</string>
|
<string name="uncheck">ביטול סימון</string>
|
||||||
<string name="toggle">הפעלה \ כיבוי</string>
|
<string name="toggle">סימון או ביטול הסימון</string>
|
||||||
<string name="action">פעולה</string>
|
<string name="action">פעולה</string>
|
||||||
<string name="habit">הרגל</string>
|
<string name="habit">הרגל</string>
|
||||||
<string name="sort">מיון</string>
|
<string name="sort">מיון</string>
|
||||||
@@ -138,9 +175,10 @@
|
|||||||
<string name="by_name">לפי שם</string>
|
<string name="by_name">לפי שם</string>
|
||||||
<string name="by_color">לפי צבע</string>
|
<string name="by_color">לפי צבע</string>
|
||||||
<string name="by_score">לפי ציון</string>
|
<string name="by_score">לפי ציון</string>
|
||||||
|
<string name="by_status">לפי מצב</string>
|
||||||
<string name="export">ייצוא</string>
|
<string name="export">ייצוא</string>
|
||||||
<string name="long_press_to_edit">לחיצה והחזקה ישנו את הערך</string>
|
<string name="long_press_to_edit">לחיצה והחזקה ישנו את הערך</string>
|
||||||
<string name="change_value">שנה ערך</string>
|
<string name="change_value">שינוי ערך</string>
|
||||||
<string name="calendar">לוח שנה</string>
|
<string name="calendar">לוח שנה</string>
|
||||||
<string name="unit">יחידה</string>
|
<string name="unit">יחידה</string>
|
||||||
<string name="example_question_boolean">למשל: האם התעמלת היום?</string>
|
<string name="example_question_boolean">למשל: האם התעמלת היום?</string>
|
||||||
@@ -148,28 +186,43 @@
|
|||||||
<string name="target">יעד</string>
|
<string name="target">יעד</string>
|
||||||
<string name="yes">כן</string>
|
<string name="yes">כן</string>
|
||||||
<string name="no">לא</string>
|
<string name="no">לא</string>
|
||||||
<string name="customize_notification_summary">שנה צליל, רטט, תאורה ושאר הגדרות הקשורות להתראות</string>
|
<string name="customize_notification_summary">שינוי הצליל, הרטט, התאורה ושאר הגדרות הקשורות להתראות</string>
|
||||||
<string name="customize_notification">התאם התראות</string>
|
<string name="customize_notification">התאמת ההתראות</string>
|
||||||
<string name="pref_view_privacy">הצג מדיניות פרטיות</string>
|
<string name="pref_view_privacy">הצגת מדיניות הפרטיות</string>
|
||||||
<string name="view_all_contributors">הצג את התורמים</string>
|
<string name="view_all_contributors">הצגת כל המתנדבים…</string>
|
||||||
<string name="database">מסד נתונים</string>
|
<string name="database">מסד נתונים</string>
|
||||||
<string name="widget_opacity_title">אטימות יישומון</string>
|
<string name="widget_opacity_title">אטימות היישומונים</string>
|
||||||
<string name="widget_opacity_description">להפיכת היישומונים שקופים יותר או אטומים יותר במסך הבית שלך.</string>
|
<string name="widget_opacity_description">להפיכת היישומונים שקופים או אטומים יותר במסך הבית שלך.</string>
|
||||||
<string name="first_day_of_the_week">היום הראשון בשבוע</string>
|
<string name="first_day_of_the_week">היום הראשון בשבוע</string>
|
||||||
<string name="default_reminder_question">האם השלמת את ההרגל הזה היום?</string>
|
<string name="default_reminder_question">האם השלמת את ההרגל הזה היום?</string>
|
||||||
<string name="notes">הערות</string>
|
<string name="notes">הערות</string>
|
||||||
<string name="example_notes">(רשות)</string>
|
<string name="example_notes">(רשות)</string>
|
||||||
<string name="yes_or_no_example">למשל: האם התעוררת מוקדם היום? האם עשית פעילות גופנית? האם שיחקת שחמט?</string>
|
<string name="yes_or_no_example">למשל: האם התעוררת מוקדם היום? האם התעמלת? האם שיחקת שחמט?</string>
|
||||||
<string name="measurable">ניתנים למדידה</string>
|
<string name="measurable">הרגלים נמדדים</string>
|
||||||
|
<string name="measurable_example">למשל: כמה קילומטרים רצת היום? כמה עמודים קראת?</string>
|
||||||
<string name="x_times_per_week">%d פעמים בשבוע</string>
|
<string name="x_times_per_week">%d פעמים בשבוע</string>
|
||||||
<string name="x_times_per_month">%d פעמים בחודש</string>
|
<string name="x_times_per_month">%d פעמים בחודש</string>
|
||||||
<string name="yes_or_no_short_example">למשל פעילות גופנית</string>
|
<string name="yes_or_no_short_example">למשל: התעמלות</string>
|
||||||
<string name="color">צבע</string>
|
<string name="color">צבע</string>
|
||||||
<string name="example_target">למשל 15</string>
|
<string name="example_target">למשל: 15</string>
|
||||||
<string name="measurable_short_example">למשל ריצה</string>
|
<string name="measurable_short_example">למשל: ריצה</string>
|
||||||
<string name="measurable_question_example">למשל: כמה קילומטרים רצת היום?</string>
|
<string name="measurable_question_example">למשל: כמה קילומטרים רצת היום?</string>
|
||||||
<string name="measurable_units_example">למשל קילומטרים</string>
|
<string name="measurable_units_example">למשל: קילומטרים</string>
|
||||||
<string name="every_month">כל חודש</string>
|
<string name="every_month">כל חודש</string>
|
||||||
<string name="validation_cannot_be_blank">לא יכול להיות ריק</string>
|
<string name="validation_cannot_be_blank">חובה לתת שם</string>
|
||||||
<string name="today">היום</string>
|
<string name="today">היום</string>
|
||||||
|
<string name="enter">מילוי</string>
|
||||||
|
<string name="no_habits">לא נמצאו הרגלים</string>
|
||||||
|
<string name="no_numerical_habits">לא נמצאו הרגלים נמדדים</string>
|
||||||
|
<string name="no_boolean_habits">לא נמצאו הרגלי „כן או לא”</string>
|
||||||
|
<string name="increment">עלייה</string>
|
||||||
|
<string name="decrement">ירידה</string>
|
||||||
|
<string name="pref_skip_title">לאפשר דילוג על ימים</string>
|
||||||
|
<string name="pref_skip_description">סימון כפול כדי לדלג במקום לסמן. הדילוג שומר על הציון שלך ללא שינוי ואינו שובר את הרצף שלך.</string>
|
||||||
|
<string name="pref_unknown_title">הצגת סימני שאלה לנתונים חסרים</string>
|
||||||
|
<string name="pref_unknown_description">הפרדת הימים ללא הנתונים מהלולאות בפועל. כדי להיכנס ללולאה, יש לסמן פעמיים.</string>
|
||||||
|
<string name="you_are_now_a_developer">מצב הפיתוח הופעל כעת</string>
|
||||||
|
<string name="activity_not_found">לא נמצא יישום שתומך בפעולה זו</string>
|
||||||
|
<string name="pref_midnight_delay_title">הארכת היום בכמה שעות לאחר החצות</string>
|
||||||
|
<string name="pref_midnight_delay_description">לחכות עד 3:00 כדי להציג יום חדש. שימושי אם לרוב הולכים לישון לאחר החצות. דורש הפעלה מחדש של היישום.</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -190,5 +190,7 @@
|
|||||||
<string name="every_month">毎月</string>
|
<string name="every_month">毎月</string>
|
||||||
<string name="validation_cannot_be_blank">空白にはできません</string>
|
<string name="validation_cannot_be_blank">空白にはできません</string>
|
||||||
<string name="today">今日</string>
|
<string name="today">今日</string>
|
||||||
|
<string name="enter">入力</string>
|
||||||
<string name="no_habits">習慣が見つかりませんでした</string>
|
<string name="no_habits">習慣が見つかりませんでした</string>
|
||||||
|
<string name="you_are_now_a_developer">これで開発者になりました!</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -28,6 +28,18 @@
|
|||||||
<string name="add_habit">Nieuwe gewoonte</string>
|
<string name="add_habit">Nieuwe gewoonte</string>
|
||||||
<string name="color_picker_default_title">Verander kleur</string>
|
<string name="color_picker_default_title">Verander kleur</string>
|
||||||
<string name="toast_habit_created">Gewoonte aangemaakt.</string>
|
<string name="toast_habit_created">Gewoonte aangemaakt.</string>
|
||||||
|
<plurals name="toast_habits_changed">
|
||||||
|
<item quantity="one">Gewoonte gewijzigd</item>
|
||||||
|
<item quantity="other">Gewoontes gewijzigd</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="toast_habits_deleted">
|
||||||
|
<item quantity="one">Gewoontes verwijderd</item>
|
||||||
|
<item quantity="other">Gewoontes verwijderd</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="toast_habits_archived">
|
||||||
|
<item quantity="one">Gewoontes gearchiveerd</item>
|
||||||
|
<item quantity="other">Gewoontes gearchiveerd</item>
|
||||||
|
</plurals>
|
||||||
<string name="overview">Overzicht</string>
|
<string name="overview">Overzicht</string>
|
||||||
<string name="habit_strength">Gewoonte-sterkte</string>
|
<string name="habit_strength">Gewoonte-sterkte</string>
|
||||||
<string name="history">Geschiedenis</string>
|
<string name="history">Geschiedenis</string>
|
||||||
@@ -36,6 +48,7 @@
|
|||||||
<string name="save">Opslaan</string>
|
<string name="save">Opslaan</string>
|
||||||
<string name="streaks">Reeksen</string>
|
<string name="streaks">Reeksen</string>
|
||||||
<string name="no_habits_found">Je hebt geen actieve gewoontes</string>
|
<string name="no_habits_found">Je hebt geen actieve gewoontes</string>
|
||||||
|
<string name="no_habits_left_to_do">Je bent klaar voor vandaag!</string>
|
||||||
<string name="long_press_to_toggle">Houdt ingedrukt om te selecteren of deselecteren</string>
|
<string name="long_press_to_toggle">Houdt ingedrukt om te selecteren of deselecteren</string>
|
||||||
<string name="reminder_off">Uit</string>
|
<string name="reminder_off">Uit</string>
|
||||||
<string name="create_habit">Gewoonte aanmaken</string>
|
<string name="create_habit">Gewoonte aanmaken</string>
|
||||||
@@ -68,7 +81,7 @@
|
|||||||
<string name="select_snooze_delay">Snooze vertraging selecteren</string>
|
<string name="select_snooze_delay">Snooze vertraging selecteren</string>
|
||||||
<string name="hint_title">Wist je dat?</string>
|
<string name="hint_title">Wist je dat?</string>
|
||||||
<string name="hint_drag">Om de rijen te ordenen, houdt de gewoonte ingedrukt en sleep het naar de gewenste plek.</string>
|
<string name="hint_drag">Om de rijen te ordenen, houdt de gewoonte ingedrukt en sleep het naar de gewenste plek.</string>
|
||||||
<string name="hint_landscape">Je kunt meer dagen zien door de telefoon in horizontale modus te zetten.</string>
|
<string name="hint_landscape">Je kunt meer dagen zien door de telefoon in landschapsmodus te zetten.</string>
|
||||||
<string name="habit_not_found">Gewoonte verwijderd / niet gevonden</string>
|
<string name="habit_not_found">Gewoonte verwijderd / niet gevonden</string>
|
||||||
<string name="weekends">Weekends</string>
|
<string name="weekends">Weekends</string>
|
||||||
<string name="any_weekday">Maandag tot vrijdag</string>
|
<string name="any_weekday">Maandag tot vrijdag</string>
|
||||||
@@ -95,7 +108,7 @@
|
|||||||
<string name="habits_imported">Gewoontes succesvol geïmporteerd.</string>
|
<string name="habits_imported">Gewoontes succesvol geïmporteerd.</string>
|
||||||
<string name="import_data">Importeer gegevens</string>
|
<string name="import_data">Importeer gegevens</string>
|
||||||
<string name="export_full_backup">Exporteer volledige backup</string>
|
<string name="export_full_backup">Exporteer volledige backup</string>
|
||||||
<string name="import_data_summary">Ondersteunt volledige back-ups geëxporteerd door deze app, evenals bestanden die worden gegenereerd door Tickmate, HabitBull of Rewire. Zie FAQ voor meer informatie.</string>
|
<string name="import_data_summary">Ondersteunt volledige back-ups geëxporteerd door deze app, evenals bestanden die worden gegenereerd door Tickmate, HabitBull of Rewire. Zie de veel gestelde vragen voor meer informatie.</string>
|
||||||
<string name="export_as_csv_summary">Genereert bestanden die geopend kunnen worden door spreadsheet software zoals Microsoft Excel of OpenOffice Calc. Dit bestand kan niet opnieuw worden geïmporteerd.</string>
|
<string name="export_as_csv_summary">Genereert bestanden die geopend kunnen worden door spreadsheet software zoals Microsoft Excel of OpenOffice Calc. Dit bestand kan niet opnieuw worden geïmporteerd.</string>
|
||||||
<string name="export_full_backup_summary">Genereert een bestand met al uw gegevens. Dit bestand kan ook terug geïmporteerd worden.</string>
|
<string name="export_full_backup_summary">Genereert een bestand met al uw gegevens. Dit bestand kan ook terug geïmporteerd worden.</string>
|
||||||
<string name="bug_report_failed">Het genereren van het foutenrapport is mislukt.</string>
|
<string name="bug_report_failed">Het genereren van het foutenrapport is mislukt.</string>
|
||||||
@@ -103,8 +116,8 @@
|
|||||||
<string name="troubleshooting">Probleemoplossing</string>
|
<string name="troubleshooting">Probleemoplossing</string>
|
||||||
<string name="help_translate">Help deze app te vertalen</string>
|
<string name="help_translate">Help deze app te vertalen</string>
|
||||||
<string name="night_mode" comment="dark_theme">Nachtmodus</string>
|
<string name="night_mode" comment="dark_theme">Nachtmodus</string>
|
||||||
<string name="use_pure_black">Gebruik puur zwart bij nachtmodus</string>
|
<string name="use_pure_black">Gebruik puur zwart bij het donkere thema</string>
|
||||||
<string name="pure_black_description">Vervangt grijze achtergronden door puur zwart in nachtmodus. Vermindert batterijgebruik bij telefoons met AMOLED scherm.</string>
|
<string name="pure_black_description">Vervangt grijze achtergronden door puur zwart in het donkere thema. Vermindert batterijgebruik bij telefoons met AMOLED scherm.</string>
|
||||||
<string name="interface_preferences">Interface</string>
|
<string name="interface_preferences">Interface</string>
|
||||||
<string name="reverse_days">Omgekeerde volgorde van dagen</string>
|
<string name="reverse_days">Omgekeerde volgorde van dagen</string>
|
||||||
<string name="reverse_days_description">Toon dagen in omgekeerde volgorde op het hoofdscherm</string>
|
<string name="reverse_days_description">Toon dagen in omgekeerde volgorde op het hoofdscherm</string>
|
||||||
@@ -130,7 +143,7 @@
|
|||||||
<string name="repair_database">Database repareren</string>
|
<string name="repair_database">Database repareren</string>
|
||||||
<string name="database_repaired">Database gerepareerd.</string>
|
<string name="database_repaired">Database gerepareerd.</string>
|
||||||
<string name="uncheck">Deselecteren</string>
|
<string name="uncheck">Deselecteren</string>
|
||||||
<string name="toggle">Omkeren</string>
|
<string name="toggle">Schakel</string>
|
||||||
<string name="action">Actie</string>
|
<string name="action">Actie</string>
|
||||||
<string name="habit">Gewoonte</string>
|
<string name="habit">Gewoonte</string>
|
||||||
<string name="sort">Sorteren</string>
|
<string name="sort">Sorteren</string>
|
||||||
@@ -138,6 +151,7 @@
|
|||||||
<string name="by_name">Op naam</string>
|
<string name="by_name">Op naam</string>
|
||||||
<string name="by_color">Op kleur</string>
|
<string name="by_color">Op kleur</string>
|
||||||
<string name="by_score">Op score</string>
|
<string name="by_score">Op score</string>
|
||||||
|
<string name="by_status">Per status</string>
|
||||||
<string name="export">Exporteren</string>
|
<string name="export">Exporteren</string>
|
||||||
<string name="long_press_to_edit">Ingedrukt houden om de waarde te wijzigen</string>
|
<string name="long_press_to_edit">Ingedrukt houden om de waarde te wijzigen</string>
|
||||||
<string name="change_value">Waarde wijzigen</string>
|
<string name="change_value">Waarde wijzigen</string>
|
||||||
@@ -150,17 +164,18 @@
|
|||||||
<string name="no">Nee</string>
|
<string name="no">Nee</string>
|
||||||
<string name="customize_notification_summary">Wijzig geluid, trilling, licht en andere instellingen voor meldingen</string>
|
<string name="customize_notification_summary">Wijzig geluid, trilling, licht en andere instellingen voor meldingen</string>
|
||||||
<string name="customize_notification">Meldingen aanpassen</string>
|
<string name="customize_notification">Meldingen aanpassen</string>
|
||||||
<string name="pref_view_privacy">Bekijk privacybeleid</string>
|
<string name="pref_view_privacy">Privacybeleid bekijken</string>
|
||||||
<string name="view_all_contributors">Bekijk alle bijdragers…</string>
|
<string name="view_all_contributors">Bekijk alle bijdragers…</string>
|
||||||
<string name="database">Database</string>
|
<string name="database">Database</string>
|
||||||
<string name="widget_opacity_title">Widget doorzichtigheid</string>
|
<string name="widget_opacity_title">Widget doorzichtigheid</string>
|
||||||
<string name="widget_opacity_description">Maakt widgets transparanter of minder doorschijnend op je home screen.</string>
|
<string name="widget_opacity_description">Maakt widgets transparanter of minder doorschijnend op je start scherm.</string>
|
||||||
<string name="first_day_of_the_week">Eerste dag van de week</string>
|
<string name="first_day_of_the_week">Eerste dag van de week</string>
|
||||||
<string name="default_reminder_question">Heb je deze gewoonte vandaag voltooid?</string>
|
<string name="default_reminder_question">Heb je deze gewoonte vandaag voltooid?</string>
|
||||||
<string name="notes">Notities</string>
|
<string name="notes">Notities</string>
|
||||||
<string name="example_notes">(Optioneel)</string>
|
<string name="example_notes">(Optioneel)</string>
|
||||||
<string name="yes_or_no_example">bijv. Ben je vandaag vroeg wakker geworden? Heb je gesport? Heb je geschaakt?</string>
|
<string name="yes_or_no_example">bijv. Ben je vandaag vroeg wakker geworden? Heb je gesport? Heb je geschaakt?</string>
|
||||||
<string name="measurable">Meetbaar</string>
|
<string name="measurable">Meetbaar</string>
|
||||||
|
<string name="measurable_example">bijv. Hoeveel kilometer heb je vandaag gelopen? Hoeveel pagina\'s heb je gelezen?</string>
|
||||||
<string name="x_times_per_week">%d keer per week</string>
|
<string name="x_times_per_week">%d keer per week</string>
|
||||||
<string name="x_times_per_month">%d keer per maand</string>
|
<string name="x_times_per_month">%d keer per maand</string>
|
||||||
<string name="yes_or_no_short_example">bijv. Sporten</string>
|
<string name="yes_or_no_short_example">bijv. Sporten</string>
|
||||||
@@ -172,4 +187,18 @@
|
|||||||
<string name="every_month">Elke maand</string>
|
<string name="every_month">Elke maand</string>
|
||||||
<string name="validation_cannot_be_blank">Mag niet leeg zijn</string>
|
<string name="validation_cannot_be_blank">Mag niet leeg zijn</string>
|
||||||
<string name="today">Vandaag</string>
|
<string name="today">Vandaag</string>
|
||||||
|
<string name="enter">Voer in</string>
|
||||||
|
<string name="no_habits">Geen gewoontes gevonden</string>
|
||||||
|
<string name="no_numerical_habits">Geen meetbare gewoontes gevonden</string>
|
||||||
|
<string name="no_boolean_habits">Geen ja-of-nee-gewoontes gevonden</string>
|
||||||
|
<string name="increment">Verhogen</string>
|
||||||
|
<string name="decrement">Verlagen</string>
|
||||||
|
<string name="pref_skip_title">Overgeslagen dagen inschakelen</string>
|
||||||
|
<string name="pref_skip_description">Schakel tweemaal om een overgeslagen dag toe te voegen in plaats van een vinkje. Overgeslagen dagen houden je score ongewijzigd en verbreken je streak niet.</string>
|
||||||
|
<string name="pref_unknown_title">Vraagtekens weergeven wanneer gegevens ontbreken</string>
|
||||||
|
<string name="pref_unknown_description">Onderscheid dagen zonder gegevens van daadwerkelijke verlopen dagen. Klik twee keer om een verlopen dag in te voeren.</string>
|
||||||
|
<string name="you_are_now_a_developer">Je bent nu een ontwikkelaar!</string>
|
||||||
|
<string name="activity_not_found">Er is geen app gevonden om deze actie uit te voeren.</string>
|
||||||
|
<string name="pref_midnight_delay_title">Verleng de dag tot een paar uur na middernacht</string>
|
||||||
|
<string name="pref_midnight_delay_description">Wacht tot 3:00 uur om een nieuwe dag te beginnen. Handig als je normaal gesproken na middernacht gaat slapen. Dit vereist het opnieuw opstarten van de app.</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -28,6 +28,30 @@
|
|||||||
<string name="add_habit">Dodaj nawyk</string>
|
<string name="add_habit">Dodaj nawyk</string>
|
||||||
<string name="color_picker_default_title">Zmień kolor</string>
|
<string name="color_picker_default_title">Zmień kolor</string>
|
||||||
<string name="toast_habit_created">Utworzono nawyk</string>
|
<string name="toast_habit_created">Utworzono nawyk</string>
|
||||||
|
<plurals name="toast_habits_changed">
|
||||||
|
<item quantity="one">Zmieniono nawyk</item>
|
||||||
|
<item quantity="few">Zmieniono nawyki</item>
|
||||||
|
<item quantity="many">Zmieniono nawyki</item>
|
||||||
|
<item quantity="other">Zmieniono nawyki</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="toast_habits_deleted">
|
||||||
|
<item quantity="one">Nawyk usunięty</item>
|
||||||
|
<item quantity="few">Nawyki usunięte</item>
|
||||||
|
<item quantity="many">Nawyki usunięte</item>
|
||||||
|
<item quantity="other">Usunięto nawyki</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="toast_habits_archived">
|
||||||
|
<item quantity="one">Zarchiwizowano nawyk</item>
|
||||||
|
<item quantity="few">Zarchiwizowano nawyki</item>
|
||||||
|
<item quantity="many">Zarchiwizowano nawyki</item>
|
||||||
|
<item quantity="other">Zarchiwizowano nawyki</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="toast_habits_unarchived">
|
||||||
|
<item quantity="one">Nawyk przywrócony z archiwum</item>
|
||||||
|
<item quantity="few">Nawyki przywrócone z archiwum</item>
|
||||||
|
<item quantity="many">Nawyk przywrócony z archiwum</item>
|
||||||
|
<item quantity="other">Nawyki zostały przywrócone z archiwum</item>
|
||||||
|
</plurals>
|
||||||
<string name="overview">Przegląd</string>
|
<string name="overview">Przegląd</string>
|
||||||
<string name="habit_strength">Siła nawyku</string>
|
<string name="habit_strength">Siła nawyku</string>
|
||||||
<string name="history">Historia</string>
|
<string name="history">Historia</string>
|
||||||
@@ -70,6 +94,18 @@
|
|||||||
<string name="hint_title">Czy wiesz że?</string>
|
<string name="hint_title">Czy wiesz że?</string>
|
||||||
<string name="hint_drag">Aby zmienić kolejność naciśnij i przytrzymaj na nazwie nawyku i przesuń go na odpowiednie miejsce.</string>
|
<string name="hint_drag">Aby zmienić kolejność naciśnij i przytrzymaj na nazwie nawyku i przesuń go na odpowiednie miejsce.</string>
|
||||||
<string name="hint_landscape">Możesz zobaczyć więcej dni trzymając telefon poziomo.</string>
|
<string name="hint_landscape">Możesz zobaczyć więcej dni trzymając telefon poziomo.</string>
|
||||||
|
<plurals name="delete_habits_title">
|
||||||
|
<item quantity="one">Usunąć nawyk?</item>
|
||||||
|
<item quantity="few">Usunąć nawyki?</item>
|
||||||
|
<item quantity="many">Usunąć nawyki?</item>
|
||||||
|
<item quantity="other">Usunąć nawyki?</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="delete_habits_message">
|
||||||
|
<item quantity="one">Nawyk zostanie trwale usunięty. Tej czynności nie można cofnąć.</item>
|
||||||
|
<item quantity="few">Nawyki zostaną trwale usunięte. Tej czynności nie można cofnąć.</item>
|
||||||
|
<item quantity="many">Nawyki zostaną trwale usunięte. Tej czynności nie można cofnąć.</item>
|
||||||
|
<item quantity="other">Nawyki zostaną trwale usunięte. Tej operacji nie można cofnąć.</item>
|
||||||
|
</plurals>
|
||||||
<string name="habit_not_found">Nawyk usunięty/nie znaleziony</string>
|
<string name="habit_not_found">Nawyk usunięty/nie znaleziony</string>
|
||||||
<string name="weekends">Weekendy</string>
|
<string name="weekends">Weekendy</string>
|
||||||
<string name="any_weekday">Dni robocze</string>
|
<string name="any_weekday">Dni robocze</string>
|
||||||
|
|||||||
@@ -28,6 +28,22 @@
|
|||||||
<string name="add_habit">Alışkanlık ekle</string>
|
<string name="add_habit">Alışkanlık ekle</string>
|
||||||
<string name="color_picker_default_title">Renk Değiştir</string>
|
<string name="color_picker_default_title">Renk Değiştir</string>
|
||||||
<string name="toast_habit_created">Alışkanlık oluşturuldu.</string>
|
<string name="toast_habit_created">Alışkanlık oluşturuldu.</string>
|
||||||
|
<plurals name="toast_habits_changed">
|
||||||
|
<item quantity="one">Alışkanlık değiştirildi</item>
|
||||||
|
<item quantity="other">Alışkanlıklar değiştirildi</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="toast_habits_deleted">
|
||||||
|
<item quantity="one">Alışkanlık silindi</item>
|
||||||
|
<item quantity="other">Alışkanlıklar silindi</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="toast_habits_archived">
|
||||||
|
<item quantity="one">Alışkanlık arşivlendi</item>
|
||||||
|
<item quantity="other">Alışkanlıklar arşivlendi</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="toast_habits_unarchived">
|
||||||
|
<item quantity="one">Alışkanlık arşivden çıkarıldı</item>
|
||||||
|
<item quantity="other">Alışkanlıklar arşivden çıkarıldı</item>
|
||||||
|
</plurals>
|
||||||
<string name="overview">Genel Bakış</string>
|
<string name="overview">Genel Bakış</string>
|
||||||
<string name="habit_strength">Alışkanlık gücü</string>
|
<string name="habit_strength">Alışkanlık gücü</string>
|
||||||
<string name="history">Geçmiş</string>
|
<string name="history">Geçmiş</string>
|
||||||
@@ -40,11 +56,11 @@
|
|||||||
<string name="reminder_off">Kapalı</string>
|
<string name="reminder_off">Kapalı</string>
|
||||||
<string name="create_habit">Alışkanlık oluştur</string>
|
<string name="create_habit">Alışkanlık oluştur</string>
|
||||||
<string name="edit_habit">Alışkanlık düzenle</string>
|
<string name="edit_habit">Alışkanlık düzenle</string>
|
||||||
<string name="check">Yaptım</string>
|
<string name="check">İşaretle</string>
|
||||||
<string name="snooze">Sonra</string>
|
<string name="snooze">Sonra</string>
|
||||||
<string name="intro_title_1">Hoşgeldin</string>
|
<string name="intro_title_1">Hoşgeldin</string>
|
||||||
<string name="intro_description_1">Loop Alışkanlık Takibi, iyi alışkanlıklar edinmene ve sürdürmene yardımcı olur.</string>
|
<string name="intro_description_1">Loop Alışkanlık Takibi, iyi alışkanlıklar edinmene ve sürdürmene yardımcı olur.</string>
|
||||||
<string name="intro_title_2">Yeni alışkanlıklar oluştur</string>
|
<string name="intro_title_2">Yeni alışkanlıklar oluşturun</string>
|
||||||
<string name="intro_description_2">Alışkanlığınızı gerçekleştirdikten sonra her gün uygulamada yapıldı işareti koyun.</string>
|
<string name="intro_description_2">Alışkanlığınızı gerçekleştirdikten sonra her gün uygulamada yapıldı işareti koyun.</string>
|
||||||
<string name="intro_title_4">Gelişimini izle</string>
|
<string name="intro_title_4">Gelişimini izle</string>
|
||||||
<string name="intro_description_4">Detaylı grafiklerle, zaman içinde alışkanlıklarının nasıl geliştiğini gör.</string>
|
<string name="intro_description_4">Detaylı grafiklerle, zaman içinde alışkanlıklarının nasıl geliştiğini gör.</string>
|
||||||
@@ -68,7 +84,11 @@
|
|||||||
<string name="select_snooze_delay">Erteleme süresini ayarla</string>
|
<string name="select_snooze_delay">Erteleme süresini ayarla</string>
|
||||||
<string name="hint_title">Biliyor muydun?</string>
|
<string name="hint_title">Biliyor muydun?</string>
|
||||||
<string name="hint_drag">Girdileri sıralamak için, alışkanlık adının üstüne basılı tut ve doğru yere sürükle.</string>
|
<string name="hint_drag">Girdileri sıralamak için, alışkanlık adının üstüne basılı tut ve doğru yere sürükle.</string>
|
||||||
<string name="hint_landscape">Cihazını yatay tutarak daha fazla gün görebilirsin.</string>
|
<string name="hint_landscape">Cihazınızı yatay tutarak daha fazla gün görüntüleyebilirsiniz.</string>
|
||||||
|
<plurals name="delete_habits_title">
|
||||||
|
<item quantity="one">Alışkanlık silinsin mi?</item>
|
||||||
|
<item quantity="other">Alışkanlıklar silinsin mi?</item>
|
||||||
|
</plurals>
|
||||||
<string name="habit_not_found">Alışkanlık silinmiş ya da bulunamadı</string>
|
<string name="habit_not_found">Alışkanlık silinmiş ya da bulunamadı</string>
|
||||||
<string name="weekends">Hafta sonları</string>
|
<string name="weekends">Hafta sonları</string>
|
||||||
<string name="any_weekday">Pazartesinden Cumaya</string>
|
<string name="any_weekday">Pazartesinden Cumaya</string>
|
||||||
@@ -99,12 +119,12 @@
|
|||||||
<string name="export_as_csv_summary">Üretilen dosyalar, Microsoft Excel veya OpenOffice Calc. gibi hesap taplosu uygulamaları ile açılabilir. Bu dosya yeniden içeri aktarılamaz.</string>
|
<string name="export_as_csv_summary">Üretilen dosyalar, Microsoft Excel veya OpenOffice Calc. gibi hesap taplosu uygulamaları ile açılabilir. Bu dosya yeniden içeri aktarılamaz.</string>
|
||||||
<string name="export_full_backup_summary">Tüm verilerini içeren bir dosya üretir. Bu dosya yeniden içeri aktarılabilir.</string>
|
<string name="export_full_backup_summary">Tüm verilerini içeren bir dosya üretir. Bu dosya yeniden içeri aktarılabilir.</string>
|
||||||
<string name="bug_report_failed">Hata raporu oluşturulamadı.</string>
|
<string name="bug_report_failed">Hata raporu oluşturulamadı.</string>
|
||||||
<string name="generate_bug_report">Hata raporu üret</string>
|
<string name="generate_bug_report">Hata raporu oluştur</string>
|
||||||
<string name="troubleshooting">Sorun Giderme</string>
|
<string name="troubleshooting">Sorun Giderme</string>
|
||||||
<string name="help_translate">Bu uygulamanın çevirisine yardım et</string>
|
<string name="help_translate">Bu uygulamanın çevirisine yardım et</string>
|
||||||
<string name="night_mode" comment="dark_theme">Gece kipi</string>
|
<string name="night_mode" comment="dark_theme">Gece modu</string>
|
||||||
<string name="use_pure_black">Gece kipinde saf siyah kullan</string>
|
<string name="use_pure_black">Gece modunda saf siyah kullan</string>
|
||||||
<string name="pure_black_description">Gece kipinde gri arkaplanını, saf siyah ile değiştir. AMOLED ekranlı cihazlarda pil kullanımını azaltabilir.</string>
|
<string name="pure_black_description">Gece modunda gri arkaplanı saf siyah ile değiştirir. AMOLED ekranlı cihazlarda pil kullanımını azaltır.</string>
|
||||||
<string name="interface_preferences">Arayüz</string>
|
<string name="interface_preferences">Arayüz</string>
|
||||||
<string name="reverse_days">Günleri ters sırala</string>
|
<string name="reverse_days">Günleri ters sırala</string>
|
||||||
<string name="reverse_days_description">Ana ekranda günleri tersten göster</string>
|
<string name="reverse_days_description">Ana ekranda günleri tersten göster</string>
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
<item quantity="other">习惯已存档</item>
|
<item quantity="other">习惯已存档</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
<plurals name="toast_habits_unarchived">
|
<plurals name="toast_habits_unarchived">
|
||||||
<item quantity="other">已对习惯进行了取消存档操作</item>
|
<item quantity="other">习惯已取消存档</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
<string name="overview">总览</string>
|
<string name="overview">总览</string>
|
||||||
<string name="habit_strength">习惯强度</string>
|
<string name="habit_strength">习惯强度</string>
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
<string name="save">保存</string>
|
<string name="save">保存</string>
|
||||||
<string name="streaks">连续完成次数</string>
|
<string name="streaks">连续完成次数</string>
|
||||||
<string name="no_habits_found">你还没有任何习惯</string>
|
<string name="no_habits_found">你还没有任何习惯</string>
|
||||||
<string name="no_habits_left_to_do">你今天的工作完成了!</string>
|
<string name="no_habits_left_to_do">你已经完成了今天所有的习惯!</string>
|
||||||
<string name="long_press_to_toggle">长按 标记/取消标记</string>
|
<string name="long_press_to_toggle">长按 标记/取消标记</string>
|
||||||
<string name="reminder_off">关闭</string>
|
<string name="reminder_off">关闭</string>
|
||||||
<string name="create_habit">新建习惯</string>
|
<string name="create_habit">新建习惯</string>
|
||||||
@@ -70,7 +70,7 @@
|
|||||||
<string name="interval_24_hour">24 小时</string>
|
<string name="interval_24_hour">24 小时</string>
|
||||||
<string name="interval_always_ask">总是询问</string>
|
<string name="interval_always_ask">总是询问</string>
|
||||||
<string name="interval_custom">自定义</string>
|
<string name="interval_custom">自定义</string>
|
||||||
<string name="pref_toggle_title">轻触以启动重复</string>
|
<string name="pref_toggle_title">短按切换</string>
|
||||||
<string name="pref_toggle_description">更加方便,但有可能造成意外记录</string>
|
<string name="pref_toggle_description">更加方便,但有可能造成意外记录</string>
|
||||||
<string name="pref_rate_this_app">去 Play 商店评价这个应用</string>
|
<string name="pref_rate_this_app">去 Play 商店评价这个应用</string>
|
||||||
<string name="pref_send_feedback">发送反馈给开发者</string>
|
<string name="pref_send_feedback">发送反馈给开发者</string>
|
||||||
@@ -122,8 +122,8 @@
|
|||||||
<string name="troubleshooting">故障排除</string>
|
<string name="troubleshooting">故障排除</string>
|
||||||
<string name="help_translate">帮助翻译这个应用</string>
|
<string name="help_translate">帮助翻译这个应用</string>
|
||||||
<string name="night_mode" comment="dark_theme">深色主题</string>
|
<string name="night_mode" comment="dark_theme">深色主题</string>
|
||||||
<string name="use_pure_black">在夜间模式中使用纯黑色</string>
|
<string name="use_pure_black">在深色主题中使用纯黑色</string>
|
||||||
<string name="pure_black_description">以纯黑色背景代替夜间模式中的灰色背景。
|
<string name="pure_black_description">以纯黑色背景代替深色主题中的灰色背景。
|
||||||
这可以降低 AMOLED 屏幕手机的耗电量。</string>
|
这可以降低 AMOLED 屏幕手机的耗电量。</string>
|
||||||
<string name="interface_preferences">界面</string>
|
<string name="interface_preferences">界面</string>
|
||||||
<string name="reverse_days">反向顺序的日子</string>
|
<string name="reverse_days">反向顺序的日子</string>
|
||||||
@@ -134,19 +134,19 @@
|
|||||||
<string name="quarter">季度</string>
|
<string name="quarter">季度</string>
|
||||||
<string name="year">年</string>
|
<string name="year">年</string>
|
||||||
<string name="total">总数</string>
|
<string name="total">总数</string>
|
||||||
<string name="yes_or_no">是或否</string>
|
<string name="yes_or_no">完成与否</string>
|
||||||
<string name="every_x_days">每 %d 天</string>
|
<string name="every_x_days">每 %d 天</string>
|
||||||
<string name="every_x_weeks">每 %d 周</string>
|
<string name="every_x_weeks">每 %d 周</string>
|
||||||
<string name="score">成绩</string>
|
<string name="score">成绩</string>
|
||||||
<string name="reminder_sound">提醒声音</string>
|
<string name="reminder_sound">提醒声音</string>
|
||||||
<string name="none">无</string>
|
<string name="none">无</string>
|
||||||
<string name="filter">筛选</string>
|
<string name="filter">筛选</string>
|
||||||
<string name="hide_completed">隐藏已完成项目</string>
|
<string name="hide_completed">隐藏已完成</string>
|
||||||
<string name="hide_archived">隐藏已存档</string>
|
<string name="hide_archived">隐藏已存档</string>
|
||||||
<string name="sticky_notifications">使提醒持久</string>
|
<string name="sticky_notifications">使提醒持久</string>
|
||||||
<string name="sticky_notifications_description">防止提醒被滑掉</string>
|
<string name="sticky_notifications_description">防止提醒被滑掉</string>
|
||||||
<string name="led_notifications">提示灯</string>
|
<string name="led_notifications">通知指示灯</string>
|
||||||
<string name="led_notifications_description">仅有 LED 提示灯的手机才有闪烁提醒。</string>
|
<string name="led_notifications_description">通过闪烁指示灯来提醒。仅限于有 LED 通知指示灯的手机。</string>
|
||||||
<string name="repair_database">修复数据库</string>
|
<string name="repair_database">修复数据库</string>
|
||||||
<string name="database_repaired">数据库已修复</string>
|
<string name="database_repaired">数据库已修复</string>
|
||||||
<string name="uncheck">取消选中</string>
|
<string name="uncheck">取消选中</string>
|
||||||
@@ -175,11 +175,11 @@
|
|||||||
<string name="view_all_contributors">查看所有贡献者</string>
|
<string name="view_all_contributors">查看所有贡献者</string>
|
||||||
<string name="database">数据库</string>
|
<string name="database">数据库</string>
|
||||||
<string name="widget_opacity_title">微件不透明度</string>
|
<string name="widget_opacity_title">微件不透明度</string>
|
||||||
<string name="widget_opacity_description">使微件在主屏幕上更加透明或更加不透明。</string>
|
<string name="widget_opacity_description">调整主屏幕上微件的不透明度</string>
|
||||||
<string name="first_day_of_the_week">一周的起始日</string>
|
<string name="first_day_of_the_week">一周的第一天</string>
|
||||||
<string name="default_reminder_question">你今天养成这个习惯了吗?</string>
|
<string name="default_reminder_question">你今天完成这个习惯了吗?</string>
|
||||||
<string name="notes">备注</string>
|
<string name="notes">备注</string>
|
||||||
<string name="example_notes">(可选)</string>
|
<string name="example_notes">(选填)</string>
|
||||||
<string name="yes_or_no_example">例如:你今天早起了吗?你锻炼了吗?你下棋了吗?</string>
|
<string name="yes_or_no_example">例如:你今天早起了吗?你锻炼了吗?你下棋了吗?</string>
|
||||||
<string name="measurable">可量化的</string>
|
<string name="measurable">可量化的</string>
|
||||||
<string name="measurable_example">例如:今天你跑了几公里?你阅读了几页书?</string>
|
<string name="measurable_example">例如:今天你跑了几公里?你阅读了几页书?</string>
|
||||||
@@ -206,6 +206,6 @@
|
|||||||
<string name="pref_unknown_description">区分没有数据和实际犯错的日子。要输一个过失,请切换两次。</string>
|
<string name="pref_unknown_description">区分没有数据和实际犯错的日子。要输一个过失,请切换两次。</string>
|
||||||
<string name="you_are_now_a_developer">你现在是一个开发者!</string>
|
<string name="you_are_now_a_developer">你现在是一个开发者!</string>
|
||||||
<string name="activity_not_found">找不到支持此操作的应用</string>
|
<string name="activity_not_found">找不到支持此操作的应用</string>
|
||||||
<string name="pref_midnight_delay_title">将一天延长到午夜过后几个小时</string>
|
<string name="pref_midnight_delay_title">将一天延长到午夜后的几个小时</string>
|
||||||
<string name="pref_midnight_delay_description">等到凌晨3点再展现新的一天。如果你通常在午夜后入睡,这很有用。需要重新启动应用程序。</string>
|
<string name="pref_midnight_delay_description">凌晨 3 点后再显示新的一天。如果你通常在午夜后入睡,这会很有用。重启应用后生效。</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -28,6 +28,18 @@
|
|||||||
<string name="add_habit">加入新習慣</string>
|
<string name="add_habit">加入新習慣</string>
|
||||||
<string name="color_picker_default_title">選擇顏色</string>
|
<string name="color_picker_default_title">選擇顏色</string>
|
||||||
<string name="toast_habit_created">習慣已增加</string>
|
<string name="toast_habit_created">習慣已增加</string>
|
||||||
|
<plurals name="toast_habits_changed">
|
||||||
|
<item quantity="other">習慣更改完成</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="toast_habits_deleted">
|
||||||
|
<item quantity="other">習慣已刪除</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="toast_habits_archived">
|
||||||
|
<item quantity="other">習慣已封存</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="toast_habits_unarchived">
|
||||||
|
<item quantity="other">習慣已取消封存</item>
|
||||||
|
</plurals>
|
||||||
<string name="overview">總覽</string>
|
<string name="overview">總覽</string>
|
||||||
<string name="habit_strength">習慣強度</string>
|
<string name="habit_strength">習慣強度</string>
|
||||||
<string name="history">歴史紀錄</string>
|
<string name="history">歴史紀錄</string>
|
||||||
@@ -36,6 +48,7 @@
|
|||||||
<string name="save">儲存</string>
|
<string name="save">儲存</string>
|
||||||
<string name="streaks">記錄</string>
|
<string name="streaks">記錄</string>
|
||||||
<string name="no_habits_found">你還沒有建立任何習慣</string>
|
<string name="no_habits_found">你還沒有建立任何習慣</string>
|
||||||
|
<string name="no_habits_left_to_do">今天預定的任務已全數完成!</string>
|
||||||
<string name="long_press_to_toggle">請以長按來標記或取消標記</string>
|
<string name="long_press_to_toggle">請以長按來標記或取消標記</string>
|
||||||
<string name="reminder_off">關閉</string>
|
<string name="reminder_off">關閉</string>
|
||||||
<string name="create_habit">新增習慣</string>
|
<string name="create_habit">新增習慣</string>
|
||||||
@@ -69,6 +82,12 @@
|
|||||||
<string name="hint_title">你知道嗎?</string>
|
<string name="hint_title">你知道嗎?</string>
|
||||||
<string name="hint_drag">如果要重新排列習慣,可以將其拖曳到理想的位置</string>
|
<string name="hint_drag">如果要重新排列習慣,可以將其拖曳到理想的位置</string>
|
||||||
<string name="hint_landscape">把手機橫放可以看到更多天數</string>
|
<string name="hint_landscape">把手機橫放可以看到更多天數</string>
|
||||||
|
<plurals name="delete_habits_title">
|
||||||
|
<item quantity="other">你確定要刪除習慣?</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="delete_habits_message">
|
||||||
|
<item quantity="other">此習慣會被永久刪除,而且無法復原</item>
|
||||||
|
</plurals>
|
||||||
<string name="habit_not_found">習慣已刪除 / 搜尋不到</string>
|
<string name="habit_not_found">習慣已刪除 / 搜尋不到</string>
|
||||||
<string name="weekends">週末</string>
|
<string name="weekends">週末</string>
|
||||||
<string name="any_weekday">工作日</string>
|
<string name="any_weekday">工作日</string>
|
||||||
@@ -142,6 +161,7 @@
|
|||||||
<string name="by_name">根據名稱</string>
|
<string name="by_name">根據名稱</string>
|
||||||
<string name="by_color">根據顏色</string>
|
<string name="by_color">根據顏色</string>
|
||||||
<string name="by_score">根據分數</string>
|
<string name="by_score">根據分數</string>
|
||||||
|
<string name="by_status">依據狀態</string>
|
||||||
<string name="export">匯出</string>
|
<string name="export">匯出</string>
|
||||||
<string name="long_press_to_edit">持續按住來改換數值</string>
|
<string name="long_press_to_edit">持續按住來改換數值</string>
|
||||||
<string name="change_value">更改數值</string>
|
<string name="change_value">更改數值</string>
|
||||||
@@ -164,7 +184,8 @@
|
|||||||
<string name="notes">備註</string>
|
<string name="notes">備註</string>
|
||||||
<string name="example_notes">(非必要的)</string>
|
<string name="example_notes">(非必要的)</string>
|
||||||
<string name="yes_or_no_example">例如: 你今天有早起嗎?你有運動嗎?你有下棋嗎?</string>
|
<string name="yes_or_no_example">例如: 你今天有早起嗎?你有運動嗎?你有下棋嗎?</string>
|
||||||
<string name="measurable">可測量進度</string>
|
<string name="measurable">可量化的</string>
|
||||||
|
<string name="measurable_example">例如:今天你跑了幾英哩?你讀了幾頁書?</string>
|
||||||
<string name="x_times_per_week">每周 %d 次</string>
|
<string name="x_times_per_week">每周 %d 次</string>
|
||||||
<string name="x_times_per_month">每月 %d 次</string>
|
<string name="x_times_per_month">每月 %d 次</string>
|
||||||
<string name="yes_or_no_short_example">例如:運動</string>
|
<string name="yes_or_no_short_example">例如:運動</string>
|
||||||
@@ -176,4 +197,18 @@
|
|||||||
<string name="every_month">每個月</string>
|
<string name="every_month">每個月</string>
|
||||||
<string name="validation_cannot_be_blank">必填</string>
|
<string name="validation_cannot_be_blank">必填</string>
|
||||||
<string name="today">今天</string>
|
<string name="today">今天</string>
|
||||||
|
<string name="enter">輸入</string>
|
||||||
|
<string name="no_habits">找不到任何習慣</string>
|
||||||
|
<string name="no_numerical_habits">找不到可衡量的習慣</string>
|
||||||
|
<string name="no_boolean_habits">找不到是非題的習慣</string>
|
||||||
|
<string name="increment">遞增</string>
|
||||||
|
<string name="decrement">遞减</string>
|
||||||
|
<string name="pref_skip_title">啟用跳過天數功能</string>
|
||||||
|
<string name="pref_skip_description">切換兩次、設定跳過,以取代完成標記。跳過功能將維持你的分數不變,不打破你的連續紀錄。</string>
|
||||||
|
<string name="pref_unknown_title">在資料缺漏處顯示問號</string>
|
||||||
|
<string name="pref_unknown_description">將沒有數據的天數與逾期者分開。要更改逾期設定,請切換兩次。</string>
|
||||||
|
<string name="you_are_now_a_developer">你現在已成為開發人員!</string>
|
||||||
|
<string name="activity_not_found">找不到可以處理這個動作的應用程式。</string>
|
||||||
|
<string name="pref_midnight_delay_title">將一天延長到午夜過後幾個小時</string>
|
||||||
|
<string name="pref_midnight_delay_description">凌晨3點後再顯示新的一天。如果你通常在午夜以後才睡,這能幫上忙。重新啟動後才生效。</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -262,7 +262,7 @@ open class Preferences(private val storage: Storage) {
|
|||||||
putString(key, joinLongs(values))
|
putString(key, joinLongs(values))
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getLongArray(key: String, defValue: LongArray): LongArray? {
|
fun getLongArray(key: String, defValue: LongArray): LongArray {
|
||||||
val string = getString(key, "")
|
val string = getString(key, "")
|
||||||
return if (string.isEmpty()) defValue else splitLongs(
|
return if (string.isEmpty()) defValue else splitLongs(
|
||||||
string
|
string
|
||||||
|
|||||||
@@ -27,19 +27,18 @@ class WidgetPreferences @Inject constructor(private val storage: Preferences.Sto
|
|||||||
storage.putLongArray(getHabitIdKey(widgetId), habitIds)
|
storage.putLongArray(getHabitIdKey(widgetId), habitIds)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getHabitIdsFromWidgetId(widgetId: Int): LongArray? {
|
fun getHabitIdsFromWidgetId(widgetId: Int): LongArray {
|
||||||
var habitIds: LongArray?
|
|
||||||
val habitIdKey = getHabitIdKey(widgetId)
|
val habitIdKey = getHabitIdKey(widgetId)
|
||||||
try {
|
return try {
|
||||||
habitIds = storage.getLongArray(habitIdKey, longArrayOf(-1))
|
storage.getLongArray(habitIdKey, longArrayOf())
|
||||||
} catch (e: ClassCastException) {
|
} catch (e: ClassCastException) {
|
||||||
// Up to Loop 1.7.11, this preference was not an array, but a single
|
// Up to Loop 1.7.11, this preference was not an array, but a single
|
||||||
// long. Trying to read the old preference causes a cast exception.
|
// long. Trying to read the old preference causes a cast exception.
|
||||||
habitIds = LongArray(1)
|
when (val habitId = storage.getLong(habitIdKey, -1)) {
|
||||||
habitIds[0] = storage.getLong(habitIdKey, -1)
|
-1L -> longArrayOf()
|
||||||
storage.putLongArray(habitIdKey, habitIds)
|
else -> longArrayOf(habitId)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return habitIds
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun removeWidget(id: Int) {
|
fun removeWidget(id: Int) {
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import org.isoron.uhabits.core.AppScope
|
|||||||
import org.isoron.uhabits.core.commands.Command
|
import org.isoron.uhabits.core.commands.Command
|
||||||
import org.isoron.uhabits.core.commands.CommandRunner
|
import org.isoron.uhabits.core.commands.CommandRunner
|
||||||
import org.isoron.uhabits.core.commands.CreateRepetitionCommand
|
import org.isoron.uhabits.core.commands.CreateRepetitionCommand
|
||||||
|
import org.isoron.uhabits.core.io.Logging
|
||||||
import org.isoron.uhabits.core.models.Habit
|
import org.isoron.uhabits.core.models.Habit
|
||||||
import org.isoron.uhabits.core.models.HabitList
|
import org.isoron.uhabits.core.models.HabitList
|
||||||
import org.isoron.uhabits.core.models.HabitList.Order
|
import org.isoron.uhabits.core.models.HabitList.Order
|
||||||
@@ -54,8 +55,12 @@ import javax.inject.Inject
|
|||||||
class HabitCardListCache @Inject constructor(
|
class HabitCardListCache @Inject constructor(
|
||||||
private val allHabits: HabitList,
|
private val allHabits: HabitList,
|
||||||
private val commandRunner: CommandRunner,
|
private val commandRunner: CommandRunner,
|
||||||
taskRunner: TaskRunner
|
taskRunner: TaskRunner,
|
||||||
|
logging: Logging,
|
||||||
) : CommandRunner.Listener {
|
) : CommandRunner.Listener {
|
||||||
|
|
||||||
|
private val logger = logging.getLogger("HabitCardListCache")
|
||||||
|
|
||||||
private var checkmarkCount = 0
|
private var checkmarkCount = 0
|
||||||
private var currentFetchTask: Task? = null
|
private var currentFetchTask: Task? = null
|
||||||
private var listener: Listener
|
private var listener: Listener
|
||||||
@@ -316,8 +321,17 @@ class HabitCardListCache @Inject constructor(
|
|||||||
toPosition: Int
|
toPosition: Int
|
||||||
) {
|
) {
|
||||||
data.habits.removeAt(fromPosition)
|
data.habits.removeAt(fromPosition)
|
||||||
data.habits.add(toPosition, habit)
|
|
||||||
listener.onItemMoved(fromPosition, toPosition)
|
// Workaround for https://github.com/iSoron/uhabits/issues/968
|
||||||
|
val checkedToPosition = if (toPosition > data.habits.size) {
|
||||||
|
logger.error("performMove: $toPosition is strictly higher than ${data.habits.size}")
|
||||||
|
data.habits.size
|
||||||
|
} else {
|
||||||
|
toPosition
|
||||||
|
}
|
||||||
|
|
||||||
|
data.habits.add(checkedToPosition, habit)
|
||||||
|
listener.onItemMoved(fromPosition, checkedToPosition)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Synchronized
|
@Synchronized
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ data class ShowHabitState(
|
|||||||
val frequency: FrequencyCardState,
|
val frequency: FrequencyCardState,
|
||||||
val history: HistoryCardState,
|
val history: HistoryCardState,
|
||||||
val bar: BarCardState,
|
val bar: BarCardState,
|
||||||
|
val theme: Theme,
|
||||||
)
|
)
|
||||||
|
|
||||||
class ShowHabitPresenter(
|
class ShowHabitPresenter(
|
||||||
@@ -94,11 +95,14 @@ class ShowHabitPresenter(
|
|||||||
title = habit.name,
|
title = habit.name,
|
||||||
color = habit.color,
|
color = habit.color,
|
||||||
isNumerical = habit.isNumerical,
|
isNumerical = habit.isNumerical,
|
||||||
|
theme = theme,
|
||||||
subtitle = SubtitleCardPresenter.buildState(
|
subtitle = SubtitleCardPresenter.buildState(
|
||||||
habit = habit,
|
habit = habit,
|
||||||
|
theme = theme,
|
||||||
),
|
),
|
||||||
overview = OverviewCardPresenter.buildState(
|
overview = OverviewCardPresenter.buildState(
|
||||||
habit = habit,
|
habit = habit,
|
||||||
|
theme = theme,
|
||||||
),
|
),
|
||||||
notes = NotesCardPresenter.buildState(
|
notes = NotesCardPresenter.buildState(
|
||||||
habit = habit,
|
habit = habit,
|
||||||
@@ -106,18 +110,22 @@ class ShowHabitPresenter(
|
|||||||
target = TargetCardPresenter.buildState(
|
target = TargetCardPresenter.buildState(
|
||||||
habit = habit,
|
habit = habit,
|
||||||
firstWeekday = preferences.firstWeekdayInt,
|
firstWeekday = preferences.firstWeekdayInt,
|
||||||
|
theme = theme,
|
||||||
),
|
),
|
||||||
streaks = StreakCartPresenter.buildState(
|
streaks = StreakCartPresenter.buildState(
|
||||||
habit = habit,
|
habit = habit,
|
||||||
|
theme = theme,
|
||||||
),
|
),
|
||||||
scores = ScoreCardPresenter.buildState(
|
scores = ScoreCardPresenter.buildState(
|
||||||
spinnerPosition = preferences.scoreCardSpinnerPosition,
|
spinnerPosition = preferences.scoreCardSpinnerPosition,
|
||||||
habit = habit,
|
habit = habit,
|
||||||
firstWeekday = preferences.firstWeekdayInt,
|
firstWeekday = preferences.firstWeekdayInt,
|
||||||
|
theme = theme,
|
||||||
),
|
),
|
||||||
frequency = FrequencyCardPresenter.buildState(
|
frequency = FrequencyCardPresenter.buildState(
|
||||||
habit = habit,
|
habit = habit,
|
||||||
firstWeekday = preferences.firstWeekdayInt,
|
firstWeekday = preferences.firstWeekdayInt,
|
||||||
|
theme = theme,
|
||||||
),
|
),
|
||||||
history = HistoryCardPresenter.buildState(
|
history = HistoryCardPresenter.buildState(
|
||||||
habit = habit,
|
habit = habit,
|
||||||
|
|||||||
@@ -22,12 +22,14 @@ package org.isoron.uhabits.core.ui.screens.habits.show.views
|
|||||||
import org.isoron.uhabits.core.models.Habit
|
import org.isoron.uhabits.core.models.Habit
|
||||||
import org.isoron.uhabits.core.models.PaletteColor
|
import org.isoron.uhabits.core.models.PaletteColor
|
||||||
import org.isoron.uhabits.core.models.Timestamp
|
import org.isoron.uhabits.core.models.Timestamp
|
||||||
|
import org.isoron.uhabits.core.ui.views.Theme
|
||||||
import java.util.HashMap
|
import java.util.HashMap
|
||||||
|
|
||||||
data class FrequencyCardState(
|
data class FrequencyCardState(
|
||||||
val color: PaletteColor,
|
val color: PaletteColor,
|
||||||
val firstWeekday: Int,
|
val firstWeekday: Int,
|
||||||
val frequency: HashMap<Timestamp, Array<Int>>,
|
val frequency: HashMap<Timestamp, Array<Int>>,
|
||||||
|
val theme: Theme,
|
||||||
)
|
)
|
||||||
|
|
||||||
class FrequencyCardPresenter {
|
class FrequencyCardPresenter {
|
||||||
@@ -35,12 +37,14 @@ class FrequencyCardPresenter {
|
|||||||
fun buildState(
|
fun buildState(
|
||||||
habit: Habit,
|
habit: Habit,
|
||||||
firstWeekday: Int,
|
firstWeekday: Int,
|
||||||
|
theme: Theme
|
||||||
) = FrequencyCardState(
|
) = FrequencyCardState(
|
||||||
color = habit.color,
|
color = habit.color,
|
||||||
frequency = habit.originalEntries.computeWeekdayFrequency(
|
frequency = habit.originalEntries.computeWeekdayFrequency(
|
||||||
isNumerical = habit.isNumerical
|
isNumerical = habit.isNumerical
|
||||||
),
|
),
|
||||||
firstWeekday = firstWeekday,
|
firstWeekday = firstWeekday,
|
||||||
|
theme = theme,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ package org.isoron.uhabits.core.ui.screens.habits.show.views
|
|||||||
import org.isoron.uhabits.core.models.Entry
|
import org.isoron.uhabits.core.models.Entry
|
||||||
import org.isoron.uhabits.core.models.Habit
|
import org.isoron.uhabits.core.models.Habit
|
||||||
import org.isoron.uhabits.core.models.PaletteColor
|
import org.isoron.uhabits.core.models.PaletteColor
|
||||||
|
import org.isoron.uhabits.core.ui.views.Theme
|
||||||
import org.isoron.uhabits.core.utils.DateUtils
|
import org.isoron.uhabits.core.utils.DateUtils
|
||||||
|
|
||||||
data class OverviewCardState(
|
data class OverviewCardState(
|
||||||
@@ -30,11 +31,12 @@ data class OverviewCardState(
|
|||||||
val scoreYearDiff: Float,
|
val scoreYearDiff: Float,
|
||||||
val scoreToday: Float,
|
val scoreToday: Float,
|
||||||
val totalCount: Long,
|
val totalCount: Long,
|
||||||
|
val theme: Theme,
|
||||||
)
|
)
|
||||||
|
|
||||||
class OverviewCardPresenter {
|
class OverviewCardPresenter {
|
||||||
companion object {
|
companion object {
|
||||||
fun buildState(habit: Habit): OverviewCardState {
|
fun buildState(habit: Habit, theme: Theme): OverviewCardState {
|
||||||
val today = DateUtils.getTodayWithOffset()
|
val today = DateUtils.getTodayWithOffset()
|
||||||
val lastMonth = today.minus(30)
|
val lastMonth = today.minus(30)
|
||||||
val lastYear = today.minus(365)
|
val lastYear = today.minus(365)
|
||||||
@@ -52,6 +54,7 @@ class OverviewCardPresenter {
|
|||||||
scoreMonthDiff = scoreToday - scoreLastMonth,
|
scoreMonthDiff = scoreToday - scoreLastMonth,
|
||||||
scoreYearDiff = scoreToday - scoreLastYear,
|
scoreYearDiff = scoreToday - scoreLastYear,
|
||||||
totalCount = totalCount,
|
totalCount = totalCount,
|
||||||
|
theme = theme,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import org.isoron.uhabits.core.models.Habit
|
|||||||
import org.isoron.uhabits.core.models.PaletteColor
|
import org.isoron.uhabits.core.models.PaletteColor
|
||||||
import org.isoron.uhabits.core.models.Score
|
import org.isoron.uhabits.core.models.Score
|
||||||
import org.isoron.uhabits.core.preferences.Preferences
|
import org.isoron.uhabits.core.preferences.Preferences
|
||||||
|
import org.isoron.uhabits.core.ui.views.Theme
|
||||||
import org.isoron.uhabits.core.utils.DateUtils
|
import org.isoron.uhabits.core.utils.DateUtils
|
||||||
|
|
||||||
data class ScoreCardState(
|
data class ScoreCardState(
|
||||||
@@ -30,6 +31,7 @@ data class ScoreCardState(
|
|||||||
val bucketSize: Int,
|
val bucketSize: Int,
|
||||||
val spinnerPosition: Int,
|
val spinnerPosition: Int,
|
||||||
val color: PaletteColor,
|
val color: PaletteColor,
|
||||||
|
val theme: Theme,
|
||||||
)
|
)
|
||||||
|
|
||||||
class ScoreCardPresenter(
|
class ScoreCardPresenter(
|
||||||
@@ -53,6 +55,7 @@ class ScoreCardPresenter(
|
|||||||
habit: Habit,
|
habit: Habit,
|
||||||
firstWeekday: Int,
|
firstWeekday: Int,
|
||||||
spinnerPosition: Int,
|
spinnerPosition: Int,
|
||||||
|
theme: Theme,
|
||||||
): ScoreCardState {
|
): ScoreCardState {
|
||||||
val bucketSize = BUCKET_SIZES[spinnerPosition]
|
val bucketSize = BUCKET_SIZES[spinnerPosition]
|
||||||
val today = DateUtils.getTodayWithOffset()
|
val today = DateUtils.getTodayWithOffset()
|
||||||
@@ -77,6 +80,7 @@ class ScoreCardPresenter(
|
|||||||
scores = scores,
|
scores = scores,
|
||||||
bucketSize = bucketSize,
|
bucketSize = bucketSize,
|
||||||
spinnerPosition = spinnerPosition,
|
spinnerPosition = spinnerPosition,
|
||||||
|
theme = theme,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,18 +22,21 @@ package org.isoron.uhabits.core.ui.screens.habits.show.views
|
|||||||
import org.isoron.uhabits.core.models.Habit
|
import org.isoron.uhabits.core.models.Habit
|
||||||
import org.isoron.uhabits.core.models.PaletteColor
|
import org.isoron.uhabits.core.models.PaletteColor
|
||||||
import org.isoron.uhabits.core.models.Streak
|
import org.isoron.uhabits.core.models.Streak
|
||||||
|
import org.isoron.uhabits.core.ui.views.Theme
|
||||||
|
|
||||||
data class StreakCardState(
|
data class StreakCardState(
|
||||||
val color: PaletteColor,
|
val color: PaletteColor,
|
||||||
val bestStreaks: List<Streak>
|
val bestStreaks: List<Streak>,
|
||||||
|
val theme: Theme,
|
||||||
)
|
)
|
||||||
|
|
||||||
class StreakCartPresenter {
|
class StreakCartPresenter {
|
||||||
companion object {
|
companion object {
|
||||||
fun buildState(habit: Habit): StreakCardState {
|
fun buildState(habit: Habit, theme: Theme): StreakCardState {
|
||||||
return StreakCardState(
|
return StreakCardState(
|
||||||
color = habit.color,
|
color = habit.color,
|
||||||
bestStreaks = habit.streaks.getBest(10),
|
bestStreaks = habit.streaks.getBest(10),
|
||||||
|
theme = theme,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import org.isoron.uhabits.core.models.Frequency
|
|||||||
import org.isoron.uhabits.core.models.Habit
|
import org.isoron.uhabits.core.models.Habit
|
||||||
import org.isoron.uhabits.core.models.PaletteColor
|
import org.isoron.uhabits.core.models.PaletteColor
|
||||||
import org.isoron.uhabits.core.models.Reminder
|
import org.isoron.uhabits.core.models.Reminder
|
||||||
|
import org.isoron.uhabits.core.ui.views.Theme
|
||||||
|
|
||||||
data class SubtitleCardState(
|
data class SubtitleCardState(
|
||||||
val color: PaletteColor,
|
val color: PaletteColor,
|
||||||
@@ -32,12 +33,14 @@ data class SubtitleCardState(
|
|||||||
val reminder: Reminder?,
|
val reminder: Reminder?,
|
||||||
val targetValue: Double,
|
val targetValue: Double,
|
||||||
val unit: String,
|
val unit: String,
|
||||||
|
val theme: Theme,
|
||||||
)
|
)
|
||||||
|
|
||||||
class SubtitleCardPresenter {
|
class SubtitleCardPresenter {
|
||||||
companion object {
|
companion object {
|
||||||
fun buildState(
|
fun buildState(
|
||||||
habit: Habit,
|
habit: Habit,
|
||||||
|
theme: Theme,
|
||||||
): SubtitleCardState = SubtitleCardState(
|
): SubtitleCardState = SubtitleCardState(
|
||||||
color = habit.color,
|
color = habit.color,
|
||||||
frequency = habit.frequency,
|
frequency = habit.frequency,
|
||||||
@@ -46,6 +49,7 @@ class SubtitleCardPresenter {
|
|||||||
reminder = habit.reminder,
|
reminder = habit.reminder,
|
||||||
targetValue = habit.targetValue,
|
targetValue = habit.targetValue,
|
||||||
unit = habit.unit,
|
unit = habit.unit,
|
||||||
|
theme = theme,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ package org.isoron.uhabits.core.ui.screens.habits.show.views
|
|||||||
import org.isoron.uhabits.core.models.Habit
|
import org.isoron.uhabits.core.models.Habit
|
||||||
import org.isoron.uhabits.core.models.PaletteColor
|
import org.isoron.uhabits.core.models.PaletteColor
|
||||||
import org.isoron.uhabits.core.models.groupedSum
|
import org.isoron.uhabits.core.models.groupedSum
|
||||||
|
import org.isoron.uhabits.core.ui.views.Theme
|
||||||
import org.isoron.uhabits.core.utils.DateUtils
|
import org.isoron.uhabits.core.utils.DateUtils
|
||||||
import java.util.ArrayList
|
import java.util.ArrayList
|
||||||
import java.util.Calendar
|
import java.util.Calendar
|
||||||
@@ -31,6 +32,7 @@ data class TargetCardState(
|
|||||||
val values: List<Double> = listOf(),
|
val values: List<Double> = listOf(),
|
||||||
val targets: List<Double> = listOf(),
|
val targets: List<Double> = listOf(),
|
||||||
val intervals: List<Int> = listOf(),
|
val intervals: List<Int> = listOf(),
|
||||||
|
val theme: Theme,
|
||||||
)
|
)
|
||||||
|
|
||||||
class TargetCardPresenter {
|
class TargetCardPresenter {
|
||||||
@@ -38,6 +40,7 @@ class TargetCardPresenter {
|
|||||||
fun buildState(
|
fun buildState(
|
||||||
habit: Habit,
|
habit: Habit,
|
||||||
firstWeekday: Int,
|
firstWeekday: Int,
|
||||||
|
theme: Theme,
|
||||||
): TargetCardState {
|
): TargetCardState {
|
||||||
val today = DateUtils.getTodayWithOffset()
|
val today = DateUtils.getTodayWithOffset()
|
||||||
val oldest = habit.computedEntries.getKnown().lastOrNull()?.timestamp ?: today
|
val oldest = habit.computedEntries.getKnown().lastOrNull()?.timestamp ?: today
|
||||||
@@ -106,6 +109,7 @@ class TargetCardPresenter {
|
|||||||
values = values,
|
values = values,
|
||||||
targets = targets,
|
targets = targets,
|
||||||
intervals = intervals,
|
intervals = intervals,
|
||||||
|
theme = theme,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
package org.isoron.uhabits.core.ui.views
|
package org.isoron.uhabits.core.ui.views
|
||||||
|
|
||||||
import org.isoron.platform.gui.Color
|
import org.isoron.platform.gui.Color
|
||||||
|
import org.isoron.uhabits.core.models.PaletteColor
|
||||||
|
|
||||||
abstract class Theme {
|
abstract class Theme {
|
||||||
open val appBackgroundColor = Color(0xf4f4f4)
|
open val appBackgroundColor = Color(0xf4f4f4)
|
||||||
@@ -35,6 +36,10 @@ abstract class Theme {
|
|||||||
open val toolbarBackgroundColor = Color(0xf4f4f4)
|
open val toolbarBackgroundColor = Color(0xf4f4f4)
|
||||||
open val toolbarColor = Color(0xffffff)
|
open val toolbarColor = Color(0xffffff)
|
||||||
|
|
||||||
|
fun color(paletteColor: PaletteColor): Color {
|
||||||
|
return color(paletteColor.paletteIndex)
|
||||||
|
}
|
||||||
|
|
||||||
open fun color(paletteIndex: Int): Color {
|
open fun color(paletteIndex: Int): Color {
|
||||||
return when (paletteIndex) {
|
return when (paletteIndex) {
|
||||||
0 -> Color(0xD32F2F)
|
0 -> Color(0xD32F2F)
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ class HabitCardListCacheTest : BaseUnitTest() {
|
|||||||
for (i in 0..9) {
|
for (i in 0..9) {
|
||||||
if (i == 3) habitList.add(fixtures.createLongHabit()) else habitList.add(fixtures.createShortHabit())
|
if (i == 3) habitList.add(fixtures.createLongHabit()) else habitList.add(fixtures.createShortHabit())
|
||||||
}
|
}
|
||||||
cache = HabitCardListCache(habitList, commandRunner, taskRunner)
|
cache = HabitCardListCache(habitList, commandRunner, taskRunner, mock())
|
||||||
cache.setCheckmarkCount(10)
|
cache.setCheckmarkCount(10)
|
||||||
cache.refreshAllHabits()
|
cache.refreshAllHabits()
|
||||||
cache.onAttached()
|
cache.onAttached()
|
||||||
|
|||||||