Compare commits
75 Commits
v2.2.0
...
release/2.
| Author | SHA1 | Date | |
|---|---|---|---|
| 70dab74528 | |||
| 7e5d2fa207 | |||
| 0e432fb332 | |||
| 897a236501 | |||
| 0cccecec77 | |||
| f1ed875256 | |||
| e82bd47aab | |||
| e9517f7378 | |||
| 12cc70a51a | |||
| fa670b19b7 | |||
| 45b100aad9 | |||
| 3c0c0b77ff | |||
| 66fa56ea62 | |||
| 951dabea8b | |||
| 76b9dd8bd9 | |||
| f68510f860 | |||
| 245b0eb4d6 | |||
| 4a0599fce4 | |||
| abbfe87260 | |||
| 3330014fa9 | |||
|
|
cc720e3dcb | ||
|
|
6e3d06cff9 | ||
|
|
d458cbd47a | ||
|
|
74ce269446 | ||
|
|
9eb8624863 | ||
|
|
c4bc301fb2 | ||
|
|
107c898f51 | ||
|
|
4a7d7ef490 | ||
|
|
13ecc2a386 | ||
|
|
2296a49999 | ||
|
|
303020a8c0 | ||
|
|
37219cb13f | ||
|
|
62d9d29e91 | ||
| 451b536e71 | |||
| 14dbf90c23 | |||
| 280a5ddceb | |||
| 22331ed364 | |||
| d0a45eb523 | |||
|
|
fec73af665 | ||
|
fc9cc423d0
|
|||
|
e7165d993f
|
|||
|
732ec1c70a
|
|||
|
e823cd5758
|
|||
| 46fe683d71 | |||
|
7f6248123c
|
|||
|
2024277ebe
|
|||
| c216fb01d6 | |||
|
7cb32f486b
|
|||
|
093591fbaf
|
|||
|
985234cdf3
|
|||
|
06090e238a
|
|||
|
e48452f724
|
|||
|
|
936986e110 | ||
|
|
4b3910aea8 | ||
|
|
10074ded32 | ||
|
|
1280e798d2
|
||
|
|
b09306e793
|
||
|
|
e30636a447
|
||
|
|
ad8738180c
|
||
|
|
08410c59d0
|
||
|
|
ab86cee70b | ||
|
|
3a0603605b
|
||
|
|
6a78b4d853 | ||
|
|
fe43b1435d | ||
|
|
12503b8a6d | ||
|
|
ef7f78bff0 | ||
|
|
53c208ded5 | ||
|
|
1bdc83e92f | ||
|
|
680c1cdc76 | ||
|
|
80916bac50 | ||
|
|
a5e3e9b3cf | ||
|
248ba50a8e
|
|||
|
|
45a82b3c2d
|
||
|
770d1293dc
|
|||
|
|
25cff3d9b0 |
11
.github/dependabot.yml
vendored
@@ -1,11 +0,0 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "gradle"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "monthly"
|
||||
open-pull-requests-limit: 10
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "monthly"
|
||||
2
.github/workflows/main.yml
vendored
@@ -22,7 +22,7 @@ jobs:
|
||||
|
||||
- name: Upload artifacts
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: build
|
||||
path: |
|
||||
|
||||
16
CHANGELOG.md
@@ -1,5 +1,21 @@
|
||||
# Changelog
|
||||
|
||||
## [2.3.0] -- 2025-06-23
|
||||
### Added
|
||||
- Add support for Android 15 and 16 (@iSoron)
|
||||
- Show confetti animation (@gokulk16, @iSoron, #1743)
|
||||
- Show streaks for measurable habits (@teckwarz, #2059)
|
||||
- Allow user to unset measurable habits (@leontodd, @kalina559, #1899, #2109)
|
||||
|
||||
### Changed
|
||||
- Change background widget color for habits with implicit checks (@wobbba, #1915)
|
||||
|
||||
### Fixed
|
||||
- Fix notification when goal type is set to maximum (@manish99verma, #1931)
|
||||
- Never mark "at most" habits as completed for the day (@kalina559, #2077)
|
||||
- Increase minimum widget size (@iSoron, #2118)
|
||||
- Improve Gradle configuration (@jimlyas, #2108)
|
||||
|
||||
## [2.2.0] -- 2024-01-30
|
||||
### Added
|
||||
- Add support for Android 14 (@iSoron, @hiqua)
|
||||
|
||||
24
NOTICE.md
@@ -1,6 +1,6 @@
|
||||
# Copyright Notices
|
||||
|
||||
### ActiveAndroid
|
||||
## ActiveAndroid
|
||||
|
||||
<https://github.com/pardom/ActiveAndroid>
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
### Android Open Source Project
|
||||
## Android Open Source Project
|
||||
|
||||
<https://source.android.com/>
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
### FontAwesome
|
||||
## FontAwesome
|
||||
|
||||
<http://fontawesome.io>
|
||||
|
||||
@@ -59,7 +59,7 @@ under the SIL OFL 1.1.
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
### Material Design Icons
|
||||
## Material Design Icons
|
||||
|
||||
<https://github.com/google/material-design-icons>
|
||||
|
||||
@@ -67,7 +67,7 @@ Material design icons are the official icon set from Google that are designed
|
||||
under the material design guidelines. Available under the Creative Common
|
||||
Attribution 4.0 International License (CC-BY 4.0).
|
||||
|
||||
### Android Flow Layout
|
||||
## Android Flow Layout
|
||||
|
||||
<https://github.com/ApmeM/android-flowlayout>
|
||||
|
||||
@@ -87,7 +87,7 @@ Extended linear layout that wrap its content when there is no place in the curre
|
||||
License for the specific language governing permissions and limitations
|
||||
under the License.
|
||||
|
||||
### Dagger 2
|
||||
## Dagger 2
|
||||
|
||||
<https://github.com/google/dagger>
|
||||
|
||||
@@ -108,7 +108,7 @@ A fast dependency injector for Android and Java.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
### AutoFactory
|
||||
## AutoFactory
|
||||
|
||||
<https://github.com/google/auto/tree/master/factory>
|
||||
|
||||
@@ -128,7 +128,7 @@ A source code generator for JSR-330-compatible factories.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
### Retrolambda
|
||||
## Retrolambda
|
||||
|
||||
<https://github.com/orfjackal/retrolambda>
|
||||
|
||||
@@ -138,7 +138,7 @@ Backport of Java 8's lambda expressions to Java 7, 6 and 5
|
||||
This software is released under the Apache License 2.0.
|
||||
The license text is at http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
### PebbleKit SDK
|
||||
## PebbleKit SDK
|
||||
|
||||
<https://github.com/pebble/pebble-android-sdk/>
|
||||
|
||||
@@ -147,7 +147,7 @@ Android PebbleKit SDK to talk to the Pebble via Bluetooth
|
||||
The MIT License (MIT)
|
||||
Copyright (c) 2014 - 2015 Pebble Technology
|
||||
|
||||
### AppIntro
|
||||
## AppIntro
|
||||
|
||||
<https://github.com/PaoloRotolo/AppIntro>
|
||||
|
||||
@@ -168,7 +168,7 @@ Make a cool intro for your Android app.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
### ButterKnife
|
||||
## ButterKnife
|
||||
|
||||
<https://github.com/JakeWharton/butterknife>
|
||||
|
||||
@@ -188,7 +188,7 @@ Bind Android views and callbacks to fields and methods
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
### opencsv
|
||||
## opencsv
|
||||
|
||||
<http://opencsv.sourceforge.net/>
|
||||
|
||||
|
||||
35
README.md
@@ -1,13 +1,13 @@
|
||||
<h1 align="center">Loop Habit Tracker</h1>
|
||||
<p align="center">
|
||||
<a href="https://github.com/iSoron/uhabits/actions?query=workflow%3A%22Build+%26+Test%22">
|
||||
<img src="https://github.com/iSoron/uhabits/workflows/Build%20&%20Test/badge.svg" />
|
||||
<img alt="Build & Test" src="https://github.com/iSoron/uhabits/workflows/Build%20&%20Test/badge.svg" />
|
||||
</a>
|
||||
<a href="https://github.com/iSoron/uhabits/releases/latest">
|
||||
<img src="https://img.shields.io/github/v/release/iSoron/uhabits" />
|
||||
<img alt="release" src="https://img.shields.io/github/v/release/iSoron/uhabits" />
|
||||
</a>
|
||||
<a href="https://github.com/iSoron/uhabits/discussions">
|
||||
<img src="https://img.shields.io/badge/GitHub-Discussions-%23fc4ebc" />
|
||||
<img alt="GitHub" src="https://img.shields.io/badge/GitHub-Discussions-%23fc4ebc" />
|
||||
</a>
|
||||
</p>
|
||||
|
||||
@@ -32,32 +32,23 @@ source.
|
||||
|
||||
## Features
|
||||
|
||||
* <b>Beautiful, minimalistic and lightweight interface.</b>
|
||||
Loop has an elegant and minimalistic interface that is very easy to use, even for first-time users. Highly optimized for speed, the app works well even on older phones.
|
||||
* **Beautiful, minimalistic and lightweight interface.** Loop has an elegant and minimalistic interface that is very easy to use, even for first-time users. Highly optimized for speed, the app works well even on older phones.
|
||||
|
||||
* <b>Habit score.</b>
|
||||
Loop has an advanced formula for calculating the strength of your habits. Every repetition makes your habit stronger and every missed day makes it weaker. A few missed days after a long streak, however, will not completely destroy your progress, unlike many other don't-break-the-chain apps.
|
||||
* **Habit score.** Loop has an advanced formula for calculating the strength of your habits. Every repetition makes your habit stronger and every missed day makes it weaker. A few missed days after a long streak, however, will not completely destroy your progress, unlike many other don't-break-the-chain apps.
|
||||
|
||||
* <b>Flexible schedules.</b>
|
||||
In addition to daily habits, Loop supports habits with more complex schedules, such as 3 times per week or every other day.
|
||||
* **Flexible schedules.** In addition to daily habits, Loop supports habits with more complex schedules, such as 3 times per week or every other day.
|
||||
|
||||
* <b>Reminders.</b>
|
||||
Schedule notifications to remind you of your habits. Each habit can have its own reminder, at a chosen time of the day. Easily check or dismiss your habit directly from the notification.
|
||||
* **Reminders.** Schedule notifications to remind you of your habits. Each habit can have its own reminder, at a chosen time of the day. Easily check or dismiss your habit directly from the notification.
|
||||
|
||||
* <b>Widgets.</b>
|
||||
Be reminded of your habits whenever you unlock your phone. Colorful widgets allow you to track your habits directly from your home screen, without even opening the app.
|
||||
* **Widgets.** Be reminded of your habits whenever you unlock your phone. Colorful widgets allow you to track your habits directly from your home screen, without even opening the app.
|
||||
|
||||
* <b>Take control of your data.</b>
|
||||
If you want to further analyze your data, or move it to another service, Loop allows you to export it to spreadsheets (CSV) or to a database file (SQLite). For power users, checkmarks can be added through other apps, such as Tasker.
|
||||
* **Take control of your data.** If you want to further analyze your data, or move it to another service, Loop allows you to export it to spreadsheets (CSV) or to a database file (SQLite). For power users, checkmarks can be added through other apps, such as Tasker.
|
||||
|
||||
* <b>No limitations.</b>
|
||||
Track as many habits as you wish. Loop imposes no artificial limits on how many habits you can have. All features are available to all users. There are no in-app purchases.
|
||||
* **No limitations.** Track as many habits as you wish. Loop imposes no artificial limits on how many habits you can have. All features are available to all users. There are no in-app purchases.
|
||||
|
||||
* <b>Completely ad-free and open source.</b>
|
||||
There are no advertisements, annoying notifications or intrusive permissions in this app, and there will never be. The app is completely open-source (GPLv3).
|
||||
* **Completely ad-free and open source.** There are no advertisements, annoying notifications or intrusive permissions in this app, and there will never be. The app is completely open-source (GPLv3).
|
||||
|
||||
* <b>Works offline and respects your privacy.</b>
|
||||
Loop doesn't require an Internet connection or online account registration. Your confidential data is never sent to anyone. Neither the developers nor any third-parties have access to it.
|
||||
* **Works offline and respects your privacy.** Loop doesn't require an Internet connection or online account registration. Your confidential data is never sent to anyone. Neither the developers nor any third-parties have access to it.
|
||||
|
||||
## Installing
|
||||
|
||||
@@ -94,7 +85,7 @@ contribute, even if you are not a software developer.
|
||||
|
||||
## License
|
||||
|
||||
<img align="right" src="https://www.gnu.org/graphics/gplv3-88x31.png">
|
||||
<img align="right" alt="GPL v3" src="https://www.gnu.org/graphics/gplv3-88x31.png">
|
||||
|
||||
Copyright (C) 2016-2021 Álinson Santos Xavier <isoron@gmail.com>
|
||||
|
||||
|
||||
@@ -1,22 +1,11 @@
|
||||
plugins {
|
||||
val kotlinVersion = "1.9.21"
|
||||
id("com.android.application") version "8.1.4" apply (false)
|
||||
id("org.jetbrains.kotlin.android") version kotlinVersion apply (false)
|
||||
id("org.jetbrains.kotlin.kapt") version kotlinVersion apply (false)
|
||||
id("org.jetbrains.kotlin.multiplatform") version kotlinVersion apply (false)
|
||||
id("org.jlleitschuh.gradle.ktlint") version "11.6.1"
|
||||
alias(libs.plugins.agp) apply false
|
||||
alias(libs.plugins.kotlin.android) apply false
|
||||
alias(libs.plugins.ksp) apply false
|
||||
alias(libs.plugins.ktlint.plugin) apply false
|
||||
alias(libs.plugins.shadow) apply false
|
||||
}
|
||||
|
||||
apply {
|
||||
from("translators.gradle.kts")
|
||||
}
|
||||
|
||||
allprojects {
|
||||
repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
maven(url = "https://plugins.gradle.org/m2/")
|
||||
maven(url = "https://oss.sonatype.org/content/repositories/snapshots/")
|
||||
maven(url = "https://jitpack.io")
|
||||
}
|
||||
from("gradle/translators.gradle.kts")
|
||||
}
|
||||
|
||||
9
build.sh
@@ -21,7 +21,7 @@ ADB="${ANDROID_HOME}/platform-tools/adb"
|
||||
ANDROID_OUTPUTS_DIR="uhabits-android/build/outputs"
|
||||
AVDMANAGER="${ANDROID_HOME}/cmdline-tools/latest/bin/avdmanager"
|
||||
AVD_PREFIX="uhabitsTest"
|
||||
EMULATOR="${ANDROID_HOME}/tools/emulator"
|
||||
EMULATOR="${ANDROID_HOME}/emulator/emulator"
|
||||
GRADLE="./gradlew --stacktrace --quiet"
|
||||
PACKAGE_NAME=org.isoron.uhabits
|
||||
SDKMANAGER="${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager"
|
||||
@@ -38,6 +38,11 @@ if [ ! -f "${ANDROID_HOME}/platform-tools/adb" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -f "$EMULATOR" ]; then
|
||||
echo "Error: Not found: $EMULATOR"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Logging
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
@@ -64,6 +69,7 @@ fail() {
|
||||
core_build() {
|
||||
log_info "Building uhabits-core..."
|
||||
$GRADLE ktlintCheck || fail
|
||||
$GRADLE lintDebug || fail
|
||||
$GRADLE :uhabits-core:build || fail
|
||||
}
|
||||
|
||||
@@ -216,6 +222,7 @@ android_test_parallel() {
|
||||
for API in $*; do
|
||||
(
|
||||
LOG=build/android-test-$API.log
|
||||
mkdir -p build
|
||||
log_info "API $API: Running tests..."
|
||||
android_test $API 1>$LOG 2>&1
|
||||
ret_code=$?
|
||||
|
||||
@@ -9,17 +9,17 @@ This pages describes how to download and build the app from the source code. If
|
||||
|
||||
## Build using Android Studio
|
||||
|
||||
**Step 1: Install git**
|
||||
### Step 1: Install git
|
||||
|
||||
The package `git` is required for downloading the source code of the app and submitting changes GitHub. Please see [the git book](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) for further instructions. If you are planning to submit pull requests in the future, it is recommended to [generate and configure your SSH keys](https://help.github.com/en/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent).
|
||||
|
||||
**Step 2: Download and install Android Studio**
|
||||
### Step 2: Download and install Android Studio
|
||||
|
||||
Although Android Studio can be downloaded [from their official website](https://developer.android.com/studio/), a much better option is to install it through [JetBrains Toolbox](https://www.jetbrains.com/toolbox-app/). This tool, developed by the same developers of Android Studio, allows you to easily upgrade and downgrade the IDE, or switch between stable, beta and canary versions. After downloading and installing JetBrains Toolbox, simply click the install button near Android Studio to install the newest stable version of IDE. Beta and canary versions have not been tested and may not work correctly.
|
||||
|
||||
After installation, launch Android Studio. If this is the first time you launch it, you will need to go through a wizard to setup the IDE. The default options should work fine. The wizard will download all additional components necessary for development, including the emulator, so it may take a while.
|
||||
|
||||
**Step 3: Download the source code**
|
||||
### Step 3: Download the source code
|
||||
|
||||
To create a complete copy of the source code repository, open the terminal (Linux/macOS) or Git Bash (Windows), navigate to the desired folder, then run:
|
||||
```bash
|
||||
@@ -27,7 +27,7 @@ git clone https://github.com/iSoron/uhabits.git
|
||||
```
|
||||
The repository will be downloaded to the directory `uhabits`.
|
||||
|
||||
**Step 4: Open and run the project on Android Studio**
|
||||
### Step 4: Open and run the project on Android Studio
|
||||
|
||||
1. Launch Android Studio and select "Open an existing Android Studio project".
|
||||
2. When the IDE asks you for the project location, select `uhabits` and click "Ok".
|
||||
@@ -41,7 +41,7 @@ The repository will be downloaded to the directory `uhabits`.
|
||||
|
||||
The following instructions were tested on **Ubuntu Linux 18.04 LTS** and may need to be modified for other operating systems.
|
||||
|
||||
**Step 1: Install basic packages**
|
||||
### Step 1: Install basic packages
|
||||
|
||||
To build the application, some basic packages are required. The package `git` is required to download the source code, while `openjdk-8-jdk-headless` is required for compiling Java and Kotlin files.
|
||||
|
||||
@@ -53,14 +53,14 @@ sudo apt-get install -y git openjdk-8-jdk-headless
|
||||
**IMPORTANT:** Newer JDK versions have not been tested and may not work correctly.
|
||||
|
||||
|
||||
**Step 2: Install Android SDK tools**
|
||||
### Step 2: Install Android SDK tools
|
||||
|
||||
The Android SDK tools contains many necessary tools for developing and debugging Android applications. It can be obtained as part of Android Studio, but, for simple command line usage, it can also be downloaded individually.
|
||||
|
||||
1. Download the file `sdk-tools-linux-4333796.zip` (or a newer version) from https://developer.android.com/studio/#downloads, and extract it somewhere. In this guide, we assume that it was extracted to `/opt/android-sdk/tools`; that is, the script `/opt/android-sdk/tools/bin/sdkmanager` should exist.
|
||||
1. Download the file `sdk-tools-linux-4333796.zip` (or a newer version) from <https://developer.android.com/studio/#downloads>, and extract it somewhere. In this guide, we assume that it was extracted to `/opt/android-sdk/tools`; that is, the script `/opt/android-sdk/tools/bin/sdkmanager` should exist.
|
||||
|
||||
2. Append the following lines to `~/.profile`, so that other tools can locate your Android SDK installation. It is necessary to restart your terminal for these changes to take effect.
|
||||
```
|
||||
```bash
|
||||
export PATH="$PATH:/opt/android-sdk/tools/bin"
|
||||
export PATH="$PATH:/opt/android-sdk/platform-tools"
|
||||
export ANDROID_HOME="/opt/android-sdk"
|
||||
@@ -71,7 +71,7 @@ export ANDROID_HOME="/opt/android-sdk"
|
||||
yes | sdkmanager --licenses
|
||||
```
|
||||
|
||||
**Step 3: Download the source code**
|
||||
### Step 3: Download the source code
|
||||
|
||||
To create a complete copy of the source code repository, navigate to your home directory and run:
|
||||
```bash
|
||||
@@ -79,13 +79,11 @@ git clone https://github.com/iSoron/uhabits.git
|
||||
```
|
||||
The repository will be downloaded to the directory `uhabits`.
|
||||
|
||||
**Step 4: Compile the source code**
|
||||
### Step 4: Compile the source code
|
||||
|
||||
1. Navigate to the directory `uhabits`
|
||||
2. Run `./gradlew assembleDebug --stacktrace`
|
||||
|
||||
If the compilation is successful, a debug APK will be generated somewhere inside the folder `uhabits-android/build/`. Currently, the full path is the following, but it may change in the future:
|
||||
If the compilation is successful, a debug APK will be generated somewhere inside the folder `uhabits-android/build/`. Currently, the full path is `./uhabits-android/build/outputs/apk/debug/uhabits-android-debug.apk`, but it may change in the future.
|
||||
|
||||
./uhabits-android/build/outputs/apk/debug/uhabits-android-debug.apk
|
||||
|
||||
The APK can be installed using the tool `adb`, which should have been automatically installed at `/opt/android-sdk/platform-tools/adb` during compilation of the project.
|
||||
|
||||
@@ -12,17 +12,6 @@
|
||||
|
||||
Please see `docs/BUILD.md` and `docs/TEST.md`
|
||||
|
||||
## Directory Layout
|
||||
|
||||
* `docs` Documentation for developers.
|
||||
* `landing` Source code for our [landing page](http://loophabits.org/).
|
||||
* `uhabits-android` Android-specific code.
|
||||
* `uhabits-core` Common code used by all platforms (Android, iOS).
|
||||
* `uhabits-core-legacy` Proof-of-concept module, developed to evaluate the feasibility of using Kotlin multiplatform for the app; not currently used, and it will be removed soon, once all useful code is ported to the other modules.
|
||||
* `uhabits-ios` Experimental iOS port of Loop. Not currently used in production.
|
||||
* `uhabits-server` Source code for any server-side components the app (for example, device sync).
|
||||
* `uhabits-web` Experimental web port of Loop. Not currently used in production.
|
||||
|
||||
## Branching Policy
|
||||
|
||||
This repository uses the [git-flow branching model](https://nvie.com/posts/a-successful-git-branching-model/). Basically, there are two main branches, `dev` and `master`. All the development takes place in the `dev` branch. After the new features have been implemented and tested, they are merged into the `master` branch and a new version of the app is released. Please submit your pull requests against the `dev` branch.
|
||||
|
||||
@@ -6,3 +6,6 @@ android.enableJetifier=true
|
||||
android.defaults.buildfeatures.buildconfig=true
|
||||
android.nonTransitiveRClass=false
|
||||
android.nonFinalResIds=false
|
||||
org.gradle.configureondemand=true
|
||||
org.gradle.warning.mode=all
|
||||
org.gradle.caching=true
|
||||
102
gradle/libs.versions.toml
Normal file
@@ -0,0 +1,102 @@
|
||||
[versions]
|
||||
agp = "8.9.2"
|
||||
annotation = "1.9.1"
|
||||
appcompat = "1.7.0"
|
||||
appintro = "6.3.1"
|
||||
commonsCodec = "1.16.0"
|
||||
commonsIo = "1.3.2"
|
||||
commonsLang3 = "3.14.0"
|
||||
dagger = "2.55"
|
||||
desugar = "2.1.4"
|
||||
dexmaker = "2.28.3"
|
||||
espresso = "3.6.1"
|
||||
guava = "33.2.1-android"
|
||||
hamcrest = "2.2"
|
||||
jsr250 = "1.0"
|
||||
jsr305 = "3.0.2"
|
||||
junit = "1.2.1"
|
||||
junitJupiter = "5.10.1"
|
||||
junitVersion = "4.13.2"
|
||||
konfetti-xml = "2.0.2"
|
||||
kotlin = "2.1.10"
|
||||
kotlinxCoroutinesCoreCommon = "1.3.8"
|
||||
ksp = "2.1.10-1.0.30"
|
||||
ktlint-plugin = "11.6.1"
|
||||
ktor = "1.6.8"
|
||||
ktxCoroutine = "1.10.1"
|
||||
legacy-support = "1.0.0"
|
||||
material = "1.12.0"
|
||||
mockito-kotlin = "5.4.0"
|
||||
opencsv = "5.9"
|
||||
rules = "1.6.1"
|
||||
shadow = "8.1.1"
|
||||
sqliteJdbc = "3.45.1.0"
|
||||
uiautomator = "2.3.0"
|
||||
|
||||
[libraries]
|
||||
annotation = { group = "androidx.annotation", name = "annotation", version.ref = "annotation" }
|
||||
appIntro = { group = "com.github.AppIntro", name = "AppIntro", version.ref = "appintro" }
|
||||
appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" }
|
||||
commons-codec = { module = "commons-codec:commons-codec", version.ref = "commonsCodec" }
|
||||
commons-io = { module = "org.apache.commons:commons-io", version.ref = "commonsIo" }
|
||||
commons-lang3 = { module = "org.apache.commons:commons-lang3", version.ref = "commonsLang3" }
|
||||
dagger = { group = "com.google.dagger", name = "dagger", version.ref = "dagger" }
|
||||
dagger-compiler = { group = "com.google.dagger", name = "dagger-compiler", version.ref = "dagger" }
|
||||
desugar_jdk_libs = { group = "com.android.tools", name = "desugar_jdk_libs", version.ref = "desugar" }
|
||||
dexmaker-mockito = { group = "com.linkedin.dexmaker", name = "dexmaker-mockito", version.ref = "dexmaker" }
|
||||
espresso-contrib = { group = "androidx.test.espresso", name = "espresso-contrib", version.ref = "espresso" }
|
||||
espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espresso" }
|
||||
guava = { group = "com.google.guava", name = "guava", version.ref = "guava" }
|
||||
hamcrest = { module = "org.hamcrest:hamcrest", version.ref = "hamcrest" }
|
||||
jsr250-api = { group = "javax.annotation", name = "jsr250-api", version.ref = "jsr250" }
|
||||
jsr305 = { group = "com.google.code.findbugs", name = "jsr305", version.ref = "jsr305" }
|
||||
junit = { group = "androidx.test.ext", name = "junit", version.ref = "junit" }
|
||||
junit-junit = { module = "junit:junit", version.ref = "junitVersion" }
|
||||
junit-jupiter = { module = "org.junit.jupiter:junit-jupiter", version.ref = "junitJupiter" }
|
||||
konfetti-xml = { group = "nl.dionsegijn", name = "konfetti-xml", version.ref = "konfetti-xml" }
|
||||
kotlin-stdlib-jdk8 = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib-jdk8", version.ref = "kotlin" }
|
||||
kotlinx-coroutines-android = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-android", version.ref = "ktxCoroutine" }
|
||||
kotlinx-coroutines-core = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-core", version.ref = "ktxCoroutine" }
|
||||
kotlinx-coroutines-core-common = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core-common", version.ref = "kotlinxCoroutinesCoreCommon" }
|
||||
kotlinx-coroutines-core-jvm = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm", version.ref = "ktxCoroutine" }
|
||||
ktor-client-android = { group = "io.ktor", name = "ktor-client-android", version.ref = "ktor" }
|
||||
ktor-client-core = { group = "io.ktor", name = "ktor-client-core", version.ref = "ktor" }
|
||||
ktor-client-jackson = { group = "io.ktor", name = "ktor-client-jackson", version.ref = "ktor" }
|
||||
ktor-client-json = { group = "io.ktor", name = "ktor-client-json", version.ref = "ktor" }
|
||||
ktor-client-mock = { group = "io.ktor", name = "ktor-client-mock", version.ref = "ktor" }
|
||||
ktor-jackson = { group = "io.ktor", name = "ktor-jackson", version.ref = "ktor" }
|
||||
legacy-preference-v14 = { group = "androidx.legacy", name = "legacy-preference-v14", version.ref = "legacy-support" }
|
||||
legacy-support-v4 = { group = "androidx.legacy", name = "legacy-support-v4", version.ref = "legacy-support" }
|
||||
material = { group = "com.google.android.material", name = "material", version.ref = "material" }
|
||||
mockito-kotlin = { group = "org.mockito.kotlin", name = "mockito-kotlin", version.ref = "mockito-kotlin" }
|
||||
opencsv = { group = "com.opencsv", name = "opencsv", version.ref = "opencsv" }
|
||||
rules = { group = "androidx.test", name = "rules", version.ref = "rules" }
|
||||
sqlite-jdbc = { module = "org.xerial:sqlite-jdbc", version.ref = "sqliteJdbc" }
|
||||
uiautomator = { group = "androidx.test.uiautomator", name = "uiautomator", version.ref = "uiautomator" }
|
||||
|
||||
[bundles]
|
||||
androidTest = [
|
||||
"annotation",
|
||||
"dagger",
|
||||
"dexmaker-mockito",
|
||||
"espresso-contrib",
|
||||
"espresso-core",
|
||||
"junit",
|
||||
"ktor-client-mock",
|
||||
"ktor-jackson",
|
||||
"mockito-kotlin",
|
||||
"rules",
|
||||
"uiautomator"
|
||||
]
|
||||
test = [
|
||||
"dagger",
|
||||
"junit-junit",
|
||||
"mockito-kotlin",
|
||||
]
|
||||
|
||||
[plugins]
|
||||
agp = { id = "com.android.application", version.ref = "agp" }
|
||||
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
|
||||
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
|
||||
ktlint-plugin = { id = "org.jlleitschuh.gradle.ktlint", version.ref = "ktlint-plugin" }
|
||||
shadow = { id = "com.github.johnrengelman.shadow", version.ref = "shadow" }
|
||||
2
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -1,5 +1,5 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
||||
@@ -1,13 +1,32 @@
|
||||
pluginManagement {
|
||||
repositories {
|
||||
gradlePluginPortal()
|
||||
google()
|
||||
}
|
||||
resolutionStrategy.eachPlugin {
|
||||
if (requested.id.id == "com.android.application") {
|
||||
useModule("com.android.tools.build:gradle:${requested.version}")
|
||||
google {
|
||||
content {
|
||||
includeGroupByRegex("com\\.android.*")
|
||||
includeGroupByRegex("com\\.google.*")
|
||||
includeGroupByRegex("androidx.*")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
include(":uhabits-android", ":uhabits-core", ":uhabits-server")
|
||||
include(":uhabits-android", ":uhabits-core")
|
||||
dependencyResolutionManagement {
|
||||
@Suppress("UnstableApiUsage")
|
||||
repositories {
|
||||
google {
|
||||
content {
|
||||
includeGroupByRegex("com\\.android.*")
|
||||
includeGroupByRegex("com\\.google.*")
|
||||
includeGroupByRegex("androidx.*")
|
||||
}
|
||||
}
|
||||
mavenCentral()
|
||||
maven(url = "https://plugins.gradle.org/m2/")
|
||||
maven(url = "https://oss.sonatype.org/content/repositories/snapshots/")
|
||||
maven(url = "https://jitpack.io")
|
||||
}
|
||||
}
|
||||
|
||||
include(":uhabits-android", ":uhabits-core")
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
#!/bin/bash
|
||||
input=$1
|
||||
locale_name=$2
|
||||
|
||||
cat <<END
|
||||
// --------------------------------------------------------------------------
|
||||
// THIS FILE WAS AUTOMATICALLY GENERATED
|
||||
//
|
||||
// Please do not submit pull request to modify it. Corrections to translations
|
||||
// may be submitted at https://translate.loophabits.org/
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
package org.isoron.uhabits.i18n
|
||||
|
||||
END
|
||||
|
||||
prefix="override "
|
||||
if [ "$locale_name" == "" ]; then
|
||||
prefix="open "
|
||||
echo "open class Strings() {"
|
||||
else
|
||||
echo "class Strings$locale_name : Strings() {"
|
||||
fi
|
||||
|
||||
grep "<string name" "$1" | \
|
||||
grep -v translatable | \
|
||||
sed 's/&/\&/g' | \
|
||||
sed 's/^.*name="\([^"]*\)">\([^<]*\)<.*/ '"$prefix"'val \1 = "\2"/'
|
||||
|
||||
echo "}"
|
||||
@@ -1,46 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
INPUT_DIR=../android/uhabits-android/src/main/res/
|
||||
OUTPUT_DIR=../core/src/commonMain/kotlin/org/isoron/uhabits/i18n/
|
||||
|
||||
convert() {
|
||||
./androidStringsToKt.sh $INPUT_DIR/$1/strings.xml "$2" > $OUTPUT_DIR/Strings$2.kt
|
||||
}
|
||||
|
||||
#convert values ""
|
||||
convert values-ar Arabic
|
||||
convert values-bg Bulgarian
|
||||
convert values-ca Catalan
|
||||
convert values-cs Czech
|
||||
convert values-da Danish
|
||||
convert values-de German
|
||||
convert values-el Greek
|
||||
convert values-eo Esperanto
|
||||
convert values-es Spanish
|
||||
convert values-eu Basque
|
||||
convert values-fa Persian
|
||||
convert values-fi Finnish
|
||||
convert values-fr French
|
||||
convert values-hi Hindi
|
||||
convert values-hr Croatian
|
||||
convert values-hu Hungarian
|
||||
convert values-in Indonesian
|
||||
convert values-it Italian
|
||||
convert values-iw Hebrew
|
||||
convert values-ja Japanese
|
||||
convert values-ko Korean
|
||||
convert values-nl Dutch
|
||||
convert values-no-rNO Norwegian
|
||||
convert values-pl Polish
|
||||
convert values-pt-rBR PortugueseBR
|
||||
convert values-pt-rPT PortuguesePT
|
||||
convert values-ro Romanian
|
||||
convert values-ru Russian
|
||||
convert values-sl Slovak
|
||||
convert values-sr Serbian
|
||||
convert values-sv Swedish
|
||||
convert values-tr Turkish
|
||||
convert values-uk Ukrainian
|
||||
convert values-vi Vietnamese
|
||||
convert values-zh-rCN ChineseCN
|
||||
convert values-zh-rTW ChineseTW
|
||||
@@ -1,415 +1,536 @@
|
||||
Name,Languages,"Translated (Words)","Target Words","Approved (Words)",Voted,"""+"" votes received","""-"" votes received","Winning (Words)",Joined
|
||||
"Alinson Xavier (iSoron)","Portuguese, Brazilian; Japanese; Chinese Simplified; Italian; Spanish; Portuguese; French; Hungarian; Chinese Traditional; Turkish; Russian; Polish; Arabic; German; Korean; Greek; Catalan; Bulgarian; Hindi; Slovenian; Ukrainian; Serbian (Cyrillic); Czech; Indonesian; Croatian; Danish; Dutch; Romanian; Swedish; Basque; Persian; Finnish; Vietnamese; Tamil; Telugu; Hebrew; Esperanto; Norwegian; Afrikaans; Slovak; Armenian; Serbian (Latin); Uyghur",15497,18825,1308,0,1896,84,4315,"2016-03-05 18:35:27"
|
||||
"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,"2017-03-31 09:13:19"
|
||||
dukelc,Slovak,1046,993,0,0,0,0,0,"2020-08-27 14:02:41"
|
||||
"David (Cliff122)",Swedish,1040,1019,725,6,0,0,700,"2020-01-21 13:56:55"
|
||||
"Omer I.S. (omeritzics)",Hebrew,1040,927,1122,14,1,0,975,"2020-10-11 20:10:51"
|
||||
"Alinson Xavier (iSoron)","Portuguese, Brazilian; Japanese; Chinese Simplified; Italian; Spanish; Portuguese; French; Hungarian; Chinese Traditional; Turkish; Russian; Arabic; Polish; German; Korean; Bulgarian; Catalan; Greek; Slovenian; Hindi; Serbian (Cyrillic); Ukrainian; Czech; Danish; Dutch; Indonesian; Croatian; Romanian; Swedish; Basque; Persian; Finnish; Vietnamese; Tamil; Telugu; Hebrew; Esperanto; Afrikaans; Norwegian; Armenian; Slovak; Serbian (Latin); Uyghur",15497,18825,1308,0,2094,111,4315,"2016-03-05 18:35:27"
|
||||
"Slobodan Simić (Слободан Симић) (slsimic)","Serbian (Latin); Serbian (Cyrillic)",2072,1852,2139,12,30,0,2015,"2021-02-03 14:26:07"
|
||||
dukelc,Slovak,1107,1052,0,0,0,0,0,"2020-08-27 14:02:41"
|
||||
"Oglaigh Rystard (oglaignaheireann)","Ukrainian; Portuguese; Catalan; Greek; Basque; Romanian; Italian",1103,1037,1327,1,22,13,954,"2017-03-31 09:13:19"
|
||||
Avalysion,Georgian,1057,895,0,0,0,0,0,"2023-06-30 20:05:15"
|
||||
"Mathew TK (mathew2006)",Malayalam,1057,1885,0,0,0,0,0,"2023-12-16 01:57:49"
|
||||
REMOVED_USER,Hebrew,1051,944,1122,14,1,0,954,"2020-10-11 20:10:51"
|
||||
"David (Cliff122)",Swedish,1040,1019,725,6,37,0,700,"2020-01-21 13:56:55"
|
||||
"Intan Ayunda (Intan_Ayunda)",Indonesian,818,811,985,0,0,0,729,"2020-10-14 07:51:58"
|
||||
"Mihail Stefanov (MStefanov)",Bulgarian,755,794,3,0,2,0,2,"2017-03-31 16:09:02"
|
||||
dusanstrgar,Slovenian,770,730,0,0,0,0,0,"2017-03-31 10:30:28"
|
||||
"Mihail Stefanov (MStefanov)",Bulgarian,755,794,3,0,2,4,2,"2017-03-31 16:09:02"
|
||||
Osoitz,Basque,751,683,0,9,0,0,3,"2018-01-23 14:07:47"
|
||||
KMakoto,"Chinese Traditional",745,1146,949,0,0,0,745,"2019-10-22 04:19:52"
|
||||
"Evren (evrenkiymaz)",Turkish,688,604,0,71,28,22,0,"2020-10-04 03:39:16"
|
||||
andaryon,Czech,681,606,0,108,0,0,0,"2021-11-25 10:20:45"
|
||||
Tomairuka,Japanese,709,1842,1033,43,12,0,585,"2020-12-12 12:14:22"
|
||||
"Evren (evrenkiymaz)",Turkish,688,604,0,71,31,22,0,"2020-10-04 03:39:16"
|
||||
andaryon,Czech,681,606,0,108,21,0,0,"2021-11-25 10:20:45"
|
||||
"Antti Kallio (antti.kallio)",Finnish,668,539,0,5,0,0,0,"2021-07-03 05:54:44"
|
||||
"David Nos (david.nos)","Catalan; Spanish",667,731,0,0,1,0,0,"2020-01-04 10:15:36"
|
||||
androide74,Italian,662,681,0,2,0,0,0,"2020-02-06 15:46:28"
|
||||
Osoitz,Basque,655,595,0,9,0,0,3,"2018-01-23 14:07:47"
|
||||
"Dmitriy Bogdanov (di72nn)",Russian,643,589,1197,0,36,0,515,"2017-03-31 10:00:48"
|
||||
Tomairuka,Japanese,633,1636,909,43,0,0,564,"2020-12-12 12:14:22"
|
||||
reyhoon,Persian,624,759,0,1,3,1,0,"2020-10-01 18:17:23"
|
||||
"Dmitriy Bogdanov (di72nn)",Russian,643,589,1197,0,50,0,515,"2017-03-31 10:00:48"
|
||||
reyhoon,Persian,624,759,0,1,3,2,0,"2020-10-01 18:17:23"
|
||||
"Saeed Esmaili (saaeed.es20)",Persian,586,795,0,5,4,0,0,"2020-11-26 15:41:15"
|
||||
fabian.bouchal,German,548,527,0,6,0,3,72,"2020-01-07 06:43:37"
|
||||
"Isti (eisti)",Hungarian,528,476,0,0,0,0,0,"2020-12-03 12:02:51"
|
||||
boban77,Czech,509,461,0,2,29,0,0,"2020-04-30 13:18:24"
|
||||
fabian.bouchal,German,548,527,0,6,4,5,72,"2020-01-07 06:43:37"
|
||||
"Isti (eisti)",Hungarian,528,476,0,0,1,0,0,"2020-12-03 12:02:51"
|
||||
Aravinth_Earth,Tamil,511,961,0,12,0,0,0,"2024-02-23 12:37:28"
|
||||
boban77,Czech,509,461,0,2,45,0,0,"2020-04-30 13:18:24"
|
||||
"Martim Parente (martimparente)",Portuguese,505,542,0,38,0,0,0,"2020-08-26 10:22:11"
|
||||
"Yoav Argov (YoavArgov)",Hebrew,501,461,0,0,1,8,91,"2017-04-28 07:23:01"
|
||||
REMOVED_USER,Norwegian,501,498,501,0,148,0,501,"2017-07-05 19:02:25"
|
||||
"chrrris1987 (Chrrris1987)",Dutch,467,478,0,23,0,0,0,"2020-02-03 05:26:04"
|
||||
"黄克 (hk13127)","Chinese Simplified",461,765,0,1,0,0,24,"2020-01-17 23:16:03"
|
||||
"黄克 (hk13127)","Chinese Simplified",461,765,0,1,0,0,22,"2020-01-17 23:16:03"
|
||||
"Huy Ngo (huyngo)",Vietnamese,461,695,0,1,0,0,0,"2020-01-26 11:58:36"
|
||||
"Arkadiusz Bubak (epitek)",Polish,458,416,52,24,9,4,0,"2020-11-05 05:11:58"
|
||||
"Arkadiusz Bubak (epitek)",Polish,458,416,52,24,15,4,0,"2020-11-05 05:11:58"
|
||||
"Radek Kuklík (kuklik.radek)",Czech,453,392,0,100,0,0,0,"2022-10-08 10:04:24"
|
||||
marco.baturan,Esperanto,452,452,0,0,0,0,0,"2020-06-23 02:49:46"
|
||||
"Sief Tarek (sieftarek135)",Arabic,447,455,0,0,0,0,0,"2021-02-07 14:35:21"
|
||||
"Alparslan Şakçi (sakci)",Turkish,436,372,0,118,1,0,0,"2022-01-14 12:03:11"
|
||||
JY3,"Chinese Simplified",427,727,295,0,1,0,222,"2021-03-08 08:53:35"
|
||||
"Sief Tarek (sieftarek135)",Arabic,447,455,0,0,1,4,0,"2021-02-07 14:35:21"
|
||||
"Alparslan Şakçi (sakci)",Turkish,436,372,0,118,2,0,0,"2022-01-14 12:03:11"
|
||||
JY3,"Chinese Simplified",432,741,298,0,2,0,227,"2021-03-08 08:53:35"
|
||||
"Samuel Guay (SamGuay)",French,426,486,0,6,0,0,0,"2020-06-25 07:14:38"
|
||||
"Diana Karaseva (Sun_Dianka)",Russian,399,373,0,10,1,0,209,"2020-01-30 06:40:02"
|
||||
"Alexander Jansson (dalecarlian)",Swedish,396,406,507,0,0,3,399,"2017-06-21 01:37:32"
|
||||
"Alexander Jansson (dalecarlian)",Swedish,396,406,507,0,29,6,399,"2017-06-21 01:37:32"
|
||||
luiandresgonzalez,Spanish,383,403,0,1,28,0,0,"2020-07-11 14:20:44"
|
||||
"Thamara Andrade (tkcandrade)","Portuguese, Brazilian",380,387,0,0,1,0,239,"2020-01-09 19:35:48"
|
||||
"Sølv Ræven (soelvraeven)",Danish,370,370,0,0,0,0,0,"2020-11-28 16:46:18"
|
||||
strikeCunny2245,Icelandic,363,368,0,0,0,0,0,"2023-08-07 08:05:53"
|
||||
"Anh Quân (dangquanuet)",Vietnamese,362,530,0,42,2,0,0,"2017-10-29 12:27:44"
|
||||
"Alexander Haronitakis (kanakis)",Greek,349,372,0,0,0,0,0,"2023-09-13 04:10:43"
|
||||
gapszi,Hungarian,348,301,0,86,0,0,0,"2019-04-08 01:35:54"
|
||||
"Mahdi Nasiri (mahdi.nasiri)",Persian,343,465,0,39,3,1,0,"2017-07-14 09:17:25"
|
||||
Seoyul,Korean,339,825,0,0,27,0,0,"2017-06-21 08:11:39"
|
||||
"Magimai Prakasam (magimai)",Tamil,336,831,0,12,0,0,0,"2018-04-15 21:16:08"
|
||||
"Michael Malak (MichaelKMalak)",Arabic,304,271,0,0,1,0,0,"2020-05-26 19:47:58"
|
||||
Blinkin,Dutch,297,334,0,5,0,0,0,"2021-06-14 10:30:05"
|
||||
"Magimai Prakasam (magimai)",Tamil,336,831,0,12,2,0,0,"2018-04-15 21:16:08"
|
||||
"Star7 (Star7-crowdin)","Chinese Simplified",330,561,0,0,0,0,0,"2025-02-10 08:41:34"
|
||||
Susanamesa,Spanish,306,342,0,11,0,0,0,"2023-01-01 23:56:35"
|
||||
"Michael Malak (MichaelKMalak)",Arabic,304,271,0,0,4,2,0,"2020-05-26 19:47:58"
|
||||
"Elina Salminen (salminen.elina.m)",Finnish,297,227,0,0,0,0,0,"2021-01-06 01:28:57"
|
||||
ayane.m,Japanese,292,863,0,1,5,0,22,"2019-11-20 03:28:26"
|
||||
"Marius Teufelweich (teufelweich)",German,267,272,611,4,13,1,146,"2021-03-12 04:11:38"
|
||||
Blinkin,Dutch,297,334,0,5,1,0,0,"2021-06-14 10:30:05"
|
||||
ayane.m,Japanese,292,863,0,1,8,0,23,"2019-11-20 03:28:26"
|
||||
c.m,Greek,276,293,0,124,0,0,0,"2024-07-13 14:49:43"
|
||||
"Marius Teufelweich (teufelweich)",German,267,272,611,4,23,3,146,"2021-03-12 04:11:38"
|
||||
"Sumin Son (todaypp)",Korean,266,221,0,7,0,0,0,"2023-06-09 05:28:30"
|
||||
hypnotichemionus,"Chinese Simplified",249,430,0,0,8,0,19,"2020-03-08 01:46:25"
|
||||
"Israa Z (sosozozo)",Arabic,240,266,0,81,14,0,3,"2017-11-27 14:10:50"
|
||||
cobalt59,German,237,234,0,1,24,1,132,"2017-06-05 05:18:33"
|
||||
beriain,Basque,234,235,0,0,2,0,0,"2017-03-31 15:42:28"
|
||||
pnhpnh,Vietnamese,225,343,0,1,3,0,0,"2017-11-27 12:06:07"
|
||||
"Dika Fitrian Dwi Putra (OsamuDazai)",Indonesian,221,215,0,0,0,0,48,"2020-07-13 04:40:27"
|
||||
easyrepro,Telugu,214,297,0,0,4,0,0,"2020-06-12 12:52:10"
|
||||
taras-ko,Ukrainian,211,183,0,1,4,0,19,"2017-10-26 16:52:22"
|
||||
"vinayak sharma (vinayak0504)",Hindi,211,456,0,0,0,0,0,"2023-05-18 18:31:51"
|
||||
sojusnik,German,207,200,1,0,30,0,66,"2017-04-03 17:11:56"
|
||||
"Andrij Mizyk (andmizyk)",Ukrainian,204,178,0,40,0,0,53,"2021-04-01 03:56:20"
|
||||
"Andrij Mizyk (andm)",Ukrainian,204,178,0,40,1,0,53,"2021-04-01 03:56:20"
|
||||
"Heru Yen (heruyen)",Indonesian,201,201,0,0,0,0,25,"2020-06-29 18:39:15"
|
||||
"Vijaykumar Borkar (vjkumar)",Hindi,200,364,0,11,0,0,0,"2021-08-06 16:12:15"
|
||||
_translator,French,199,227,0,11,0,0,0,"2021-07-06 07:54:12"
|
||||
bearsdens,Romanian,198,210,0,0,0,0,0,"2022-08-28 17:08:33"
|
||||
Ishmaeel,Turkish,193,174,0,129,17,6,0,"2017-10-04 03:54:00"
|
||||
oscfd,Spanish,192,201,0,2,4,0,0,"2021-05-21 17:58:22"
|
||||
REMOVED_USER,Spanish,192,201,0,2,5,0,0,"2021-05-21 17:58:22"
|
||||
bruhwut,Vietnamese,189,292,0,1,0,0,0,"2021-05-21 07:16:30"
|
||||
"Aputsiak Niels Janussen (aputtu)",Danish,187,200,0,0,0,0,0,"2019-08-28 05:47:42"
|
||||
fbruna17,Danish,181,179,0,1,0,0,0,"2021-01-28 15:48:47"
|
||||
Bryanx,Dutch,179,168,0,5,2,0,0,"2019-11-21 17:08:12"
|
||||
"Omry Cohen (omrycohen)",Hebrew,175,156,0,1,0,0,33,"2021-01-18 07:33:23"
|
||||
"Ivan Vlahov (vlahovivan)",Croatian,179,176,0,0,0,0,0,"2024-01-25 08:12:11"
|
||||
"Omry Cohen (omrycohen)",Hebrew,175,156,0,1,0,0,12,"2021-01-18 07:33:23"
|
||||
"Pierre GALIEGUE (pierre.galiegue)",French,171,194,0,24,4,0,0,"2020-08-16 11:41:35"
|
||||
plitwin,Polish,168,151,0,2,31,0,49,"2021-01-20 06:18:37"
|
||||
DionysosDV,Greek,165,153,0,0,0,0,0,"2021-02-27 19:05:25"
|
||||
plitwin,Polish,168,151,0,2,55,0,49,"2021-01-20 06:18:37"
|
||||
DionysosDV,Greek,165,153,0,0,27,4,0,"2021-02-27 19:05:25"
|
||||
"Gustavo Lima (GustavoLima)",Portuguese,158,177,0,1,4,10,0,"2020-08-26 10:35:05"
|
||||
"Alex V. (elvitalex)",Romanian,154,166,0,24,0,0,0,"2022-08-03 17:40:00"
|
||||
"Ravi Rami (ramiravi)",Hindi,151,248,0,0,0,0,0,"2021-10-10 09:19:40"
|
||||
"Lương Vĩnh Khang (LuongVinhKhang)",Vietnamese,144,256,0,0,46,1,0,"2017-08-10 10:05:58"
|
||||
azzamsa,Indonesian,142,136,0,48,0,1,26,"2017-06-16 18:29:45"
|
||||
"yoding (yodingc)","Chinese Traditional; Chinese Simplified",141,271,0,10,0,0,0,"2021-07-07 01:45:45"
|
||||
"Neysa Nasywa (neysanasywa)",Indonesian,140,141,0,0,0,0,60,"2020-11-18 10:32:10"
|
||||
mohmans,Arabic,139,141,0,12,1,0,0,"2020-11-23 02:48:00"
|
||||
"Eilif Adelvice (adelvice)",Spanish,139,154,0,96,1,0,0,"2021-08-05 07:20:21"
|
||||
"Mohammed Imthath (mimthath4)",Tamil,136,274,0,0,11,0,0,"2018-02-15 22:41:15"
|
||||
mohmans,Arabic,139,141,0,12,7,1,0,"2020-11-23 02:48:00"
|
||||
"Eilif Adelvice (adelvice)",Spanish,139,154,0,96,6,0,0,"2021-08-05 07:20:21"
|
||||
"Mohammed Imthath (mimthath4)",Tamil,136,274,0,0,13,1,0,"2018-02-15 22:41:15"
|
||||
carllacan,Catalan,134,155,0,2,0,0,0,"2021-11-13 13:12:07"
|
||||
roptat,French,132,154,0,112,89,5,0,"2017-04-19 16:54:47"
|
||||
"Trần Thái (tranhoangthai2001)",Vietnamese,127,186,0,8,1,0,0,"2018-03-01 10:51:39"
|
||||
"OP Smosher (teenwolffan44)","Serbian (Cyrillic)",124,122,0,0,0,0,18,"2020-11-05 09:41:35"
|
||||
"Tad Wohlrapp (TadWohlrapp)",German,124,122,0,0,2,0,0,"2022-06-28 04:55:41"
|
||||
4001982248998,Esperanto,122,119,0,0,0,0,0,"2017-10-08 04:13:02"
|
||||
"StoP4Me (Lcqp)",Romanian,121,119,0,0,3,0,0,"2018-05-06 18:51:59"
|
||||
alalloush,Arabic,118,129,0,2,14,3,0,"2017-03-31 12:37:17"
|
||||
"StoP4Me (Lcqp)",Romanian,121,119,0,0,6,0,0,"2018-05-06 18:51:59"
|
||||
alalloush,Arabic,118,129,0,2,17,6,0,"2017-03-31 12:37:17"
|
||||
"Brenda Correa (brenda.14)",Spanish,117,127,0,0,0,1,0,"2022-05-16 02:34:13"
|
||||
Sebastian05067,Spanish,114,133,0,55,32,0,0,"2017-05-14 00:48:16"
|
||||
"Tanya (MagicUnderHood)",Russian,114,98,0,19,0,0,54,"2019-04-21 10:44:03"
|
||||
Sebastian05067,Spanish,114,133,0,55,28,0,0,"2017-05-14 00:48:16"
|
||||
REMOVED_USER,Arabic,111,106,0,22,22,2,0,"2018-01-05 07:01:45"
|
||||
"Iabin Arteaga (iabin)",Spanish,108,111,0,4,21,0,0,"2017-08-26 21:08:54"
|
||||
REMOVED_USER,Arabic,111,106,0,22,23,3,0,"2018-01-05 07:01:45"
|
||||
"Ivan Krušlin (krux3r)",Croatian,108,122,503,0,0,0,108,"2017-03-31 09:15:24"
|
||||
2kaafone,Finnish,105,90,0,0,0,0,0,"2019-08-12 06:58:48"
|
||||
"Iabin Arteaga (iabin)",Spanish,108,111,0,4,21,1,0,"2017-08-26 21:08:54"
|
||||
REMOVED_USER,Finnish,105,90,0,0,0,0,0,"2019-08-12 06:58:48"
|
||||
"Adam Jurkiewicz (hasztagg)",Polish,104,105,529,0,0,0,104,"2017-03-31 09:50:51"
|
||||
"PILHA PARK (pilhaha)",Korean,101,88,0,0,0,0,0,"2023-06-30 23:51:41"
|
||||
"just a name bro (justanamebr0)",Danish,98,109,0,0,1,0,0,"2019-06-19 11:57:55"
|
||||
"Nam Nguyen (namnl2706)",Vietnamese,95,137,0,0,0,0,0,"2020-08-18 23:02:33"
|
||||
"손유정 (yuwon1213)",Korean,95,57,0,0,1,0,0,"2021-03-30 05:25:33"
|
||||
"손유정 (yuwon1213)",Korean,95,57,0,0,1,3,0,"2021-03-30 05:25:33"
|
||||
ranmagen,Hebrew,91,78,0,0,0,0,0,"2021-02-16 05:44:31"
|
||||
LoneWanderer,"Chinese Traditional",90,137,0,4,0,0,0,"2020-09-29 05:24:48"
|
||||
ikkaz,Indonesian,89,84,0,5,0,0,4,"2019-09-02 19:58:54"
|
||||
"Vo - (voyl)","Chinese Traditional",89,126,0,0,5,0,0,"2020-09-02 23:34:42"
|
||||
"Irene K (Heaun)",Korean,88,75,0,25,0,0,0,"2020-03-16 11:31:12"
|
||||
"Irene K (Heaun)",Korean,88,75,0,25,2,0,0,"2020-03-16 11:31:12"
|
||||
Prosta4ok_ua,Ukrainian,87,84,0,1,0,0,17,"2020-01-23 19:43:41"
|
||||
"Kumar Anand (kumar0500)",Hindi,87,125,0,0,0,0,0,"2020-11-07 02:46:09"
|
||||
G.kio,Russian,87,82,0,0,1,0,0,"2023-08-24 19:43:00"
|
||||
"Ohad Edri (ohadalte)",Hebrew,85,79,0,0,1,3,13,"2020-07-04 03:42:09"
|
||||
helectron,Persian,84,102,0,1,0,0,0,"2021-03-02 04:10:51"
|
||||
"Radu Cebotari (wildProgrammer)",Romanian,84,92,0,1,0,0,0,"2020-02-05 01:20:00"
|
||||
"Bruces Lee (aplusbdesign)",Korean,82,66,0,0,0,0,0,"2021-08-23 11:27:18"
|
||||
"Israa Z (sosozozo)",Arabic,79,87,0,43,14,0,3,"2017-11-27 14:10:50"
|
||||
"Sofia Neves (sofiasonev)","Portuguese, Brazilian",79,84,0,1,0,0,46,"2020-03-12 18:19:46"
|
||||
"Jacob Roller (jdr28070)",Korean,79,61,0,0,1,0,0,"2020-01-03 11:36:40"
|
||||
"Radu Cebotari (wildProgrammer)",Romanian,84,92,0,1,1,0,0,"2020-02-05 01:20:00"
|
||||
helectron,Persian,84,102,0,1,1,0,0,"2021-03-02 04:10:51"
|
||||
"Bruces Lee (aplusbdesign)",Korean,82,66,0,0,2,0,0,"2021-08-23 11:27:18"
|
||||
Tiralka,French,79,91,0,92,1,0,0,"2018-02-09 18:39:01"
|
||||
"Jacob Roller (jdr28070)",Korean,79,61,0,0,1,1,0,"2020-01-03 11:36:40"
|
||||
"Sofia Neves (sofiasonev)","Portuguese, Brazilian",79,84,0,1,0,0,46,"2020-03-12 18:19:46"
|
||||
"Toni Mustonen (toni.mustonen)",Finnish,78,72,0,0,5,0,0,"2017-09-02 05:34:12"
|
||||
"Michael (quelbs)",German,76,75,0,1,0,0,39,"2020-08-18 07:39:26"
|
||||
"Fauz Aladeem (topfauz)",Arabic,76,77,0,0,0,1,0,"2020-02-21 22:46:12"
|
||||
"Radoslaw Biernacki (radoslaw.biernacki)",Polish,70,74,0,56,1,0,1,"2020-12-15 17:55:31"
|
||||
"Oliver Gronowski (OliverGronowski)",German,70,69,0,5,2,0,0,"2021-05-14 16:37:10"
|
||||
"Michael (quelbs)",German,76,75,0,1,0,0,39,"2020-08-18 07:39:26"
|
||||
"Anna Maria Stålberg (stalberg.annamaria)",Swedish,76,77,0,111,4,0,0,"2023-01-16 04:08:25"
|
||||
"Radoslaw Biernacki (radoslaw.biernacki)",Polish,70,74,0,56,5,0,1,"2020-12-15 17:55:31"
|
||||
"Oliver Gronowski (OliverGronowski)",German,70,69,0,5,3,0,0,"2021-05-14 16:37:10"
|
||||
mimizuk,Japanese,68,193,0,0,2,1,39,"2022-05-18 10:10:38"
|
||||
Ryeore,Polish,68,61,0,66,0,0,0,"2022-07-27 12:22:33"
|
||||
RealDonald,Dutch,67,69,0,121,10,0,0,"2017-06-23 20:10:12"
|
||||
"Dpd Eng (dpdeng)",Korean,67,48,0,0,1,0,0,"2022-10-15 10:56:44"
|
||||
sirekanyan,"Armenian; Russian",66,65,0,0,0,0,0,"2020-04-18 11:32:52"
|
||||
"Константин К. (kocyak1991)",Russian,64,60,0,0,1,2,0,"2018-06-10 13:39:37"
|
||||
yukitsubaki,Japanese,64,185,0,32,0,0,36,"2020-01-01 13:17:44"
|
||||
Suuis,Hindi,64,110,0,0,0,0,0,"2023-07-02 11:50:22"
|
||||
"Laura Sophie (laurasophie20)",German,62,67,0,4,0,0,0,"2018-01-06 14:21:24"
|
||||
raden20,Indonesian,61,62,177,0,1,0,64,"2017-04-09 22:04:23"
|
||||
"Peter Williams (williamspete001)",Japanese,60,173,0,2,0,0,3,"2020-01-01 13:17:44"
|
||||
"y (veggente)",Korean,61,56,0,0,0,1,0,"2022-06-28 10:41:18"
|
||||
"Jan Wojtecki (j4nw)",Polish,58,46,0,0,0,0,26,"2017-11-02 05:42:14"
|
||||
"Deepak Bharathi (deepakbharathi1994)",Tamil,56,107,0,0,11,4,0,"2017-09-17 08:00:31"
|
||||
"Deepak Bharathi (deepakbharathi1994)",Tamil,56,107,0,0,13,4,0,"2017-09-17 08:00:31"
|
||||
"Андрій Козицький (andriikozytskyi1108)",Ukrainian,52,52,0,0,1,0,0,"2018-10-22 01:45:08"
|
||||
"Nil riera (nilriera2000)",Catalan,52,61,0,1,2,0,0,"2021-06-22 16:37:44"
|
||||
"Neoone (Neooneqq)",Romanian,51,54,0,0,0,0,0,"2022-05-05 20:42:11"
|
||||
REMOVED_USER,Italian,51,52,0,2,0,0,0,"2017-08-21 05:15:31"
|
||||
govindap,"Japanese; Hindi",51,114,0,6,1,0,0,"2020-06-02 20:15:52"
|
||||
govindap,"Japanese; Hindi",51,114,0,6,3,1,0,"2020-06-02 20:15:52"
|
||||
"Neoone (Neooneqq)",Romanian,51,54,0,0,0,0,0,"2022-05-05 20:42:11"
|
||||
"Mare Geldenhuys (mare.geldenhuys)",Afrikaans,50,57,0,0,0,0,0,"2017-10-20 18:00:14"
|
||||
"Mahmoud Magdy (M7moudManson)",Arabic,49,60,0,6,8,1,0,"2021-08-21 09:01:38"
|
||||
"Behnood HRazy (behnoodhr)",Persian,49,70,0,0,0,0,0,"2017-11-25 10:57:21"
|
||||
"Mahmoud Magdy (M7moudManson)",Arabic,49,60,0,6,12,6,0,"2021-08-21 09:01:38"
|
||||
J3ll3nl,Dutch,48,48,0,0,17,1,3,"2017-03-31 11:56:09"
|
||||
"tat bz (Tat_i)",German,48,56,0,55,0,1,27,"2021-03-26 05:12:54"
|
||||
vach,Armenian,47,36,0,0,0,0,0,"2020-04-18 16:53:12"
|
||||
"Andrew Firnes (Anechan)",Russian,47,47,0,3,0,0,29,"2019-09-18 09:51:59"
|
||||
andowero,Czech,47,38,0,0,3,0,0,"2020-01-20 02:29:01"
|
||||
andowero,Czech,47,38,0,0,8,0,0,"2020-01-20 02:29:01"
|
||||
vach,Armenian,47,36,0,0,0,0,0,"2020-04-18 16:53:12"
|
||||
"Rahul Shishodia (rahul.shishodia.10)",Hindi,46,85,0,6,5,1,0,"2018-12-24 22:18:19"
|
||||
"Coni Ragni (coni2ragnii)",Spanish,46,46,0,0,0,0,0,"2021-02-28 20:18:37"
|
||||
Cp0204,"Chinese Simplified",45,72,0,0,0,0,0,"2019-08-20 11:04:27"
|
||||
"cc (cavaz)",Italian,44,41,0,0,0,0,0,"2017-04-01 04:21:08"
|
||||
"Boban Jagertraum (boban40)",Czech,43,38,0,2,18,1,0,"2017-03-31 09:39:16"
|
||||
"Kamil Dziadek (prso94)",Polish,43,39,0,0,6,0,0,"2020-04-06 17:12:06"
|
||||
"Andrej Šutovský (16andrej.s)",Slovak,44,41,0,0,0,0,0,"2022-06-12 18:01:16"
|
||||
"Boban Jagertraum (boban40)",Czech,43,38,0,2,31,1,0,"2017-03-31 09:39:16"
|
||||
"Kamil Dziadek (prso94)",Polish,43,39,0,0,11,0,0,"2020-04-06 17:12:06"
|
||||
"Balázs Keresztury (belidzs)",Hungarian,42,41,501,0,7,0,38,"2017-04-06 02:40:24"
|
||||
andreea.muscalagiu,Romanian,42,52,0,1,0,0,0,"2017-10-22 07:19:49"
|
||||
"Me Me (gentelwom)",Arabic,42,40,0,0,0,0,0,"2020-11-08 20:44:01"
|
||||
"Balázs Keresztury (belidzs)",Hungarian,42,41,501,0,7,0,38,"2017-04-06 02:40:24"
|
||||
"Mateusz Duda (MateuszDuda)",Polish,42,42,0,0,6,0,0,"2021-08-17 11:27:11"
|
||||
"Ali Elsheikh (aelsheikh1987)",Arabic,42,41,0,0,0,0,0,"2021-06-16 10:17:26"
|
||||
"Ali Zali (stm19951995)",Persian,40,60,0,0,0,0,0,"2020-03-23 19:57:26"
|
||||
"Mateusz Duda (MateuszDuda)",Polish,42,42,0,0,20,0,0,"2021-08-17 11:27:11"
|
||||
"Mr Habti (donhabti)",Arabic,41,40,0,0,0,0,0,"2023-02-20 10:52:50"
|
||||
"Sofia Veijonen (Suklaa) (sofia.veijonen)",Finnish,40,33,0,0,0,0,0,"2018-03-07 09:24:22"
|
||||
dusanstrgar,Slovenian,39,41,0,0,0,0,0,"2017-03-31 10:30:28"
|
||||
"Neeraj Verma (verma.neeraj.in)",Hindi,40,65,0,0,1,0,0,"2018-07-23 07:16:41"
|
||||
"Ali Zali (stm19951995)",Persian,40,60,0,0,0,0,0,"2020-03-23 19:57:26"
|
||||
"Limin Lu (liminlu)","Chinese Simplified",39,79,503,0,0,0,39,"2017-03-31 09:49:35"
|
||||
Anshoe,Tamil,38,65,0,14,0,0,0,"2018-01-02 11:06:52"
|
||||
Anshoe,Tamil,38,65,0,14,3,0,0,"2018-01-02 11:06:52"
|
||||
"Pavel Protasov (pvphome)",Russian,38,33,0,0,0,0,0,"2024-02-09 03:40:33"
|
||||
anasshm,Arabic,37,36,0,9,0,0,0,"2019-01-27 04:07:22"
|
||||
hrexen,Armenian,37,37,0,0,0,0,0,"2020-12-09 02:30:34"
|
||||
"Abdulrahman (D7M)",Arabic,36,39,0,0,0,0,0,"2020-01-29 18:55:30"
|
||||
REMOVED_USER,Swedish,36,33,0,5,1,0,0,"2018-09-29 17:47:33"
|
||||
xphsis,Basque,36,31,0,0,0,0,0,"2022-01-02 08:16:19"
|
||||
REMOVED_USER,Swedish,36,33,0,5,2,0,0,"2018-09-29 17:47:33"
|
||||
"Abdulrahman (D7M)",Arabic,36,39,0,0,4,0,0,"2020-01-29 18:55:30"
|
||||
"Maria Chushnyakova (maria.ch)",Russian,36,31,0,3,0,0,0,"2021-08-17 03:23:58"
|
||||
"長谷川知里 (chase0213)",Japanese,34,138,0,13,0,0,24,"2018-12-14 10:52:44"
|
||||
"Piotr Łuczyński (peterluczynski)",Polish,33,30,0,6,10,0,2,"2020-01-29 07:27:40"
|
||||
"Luis E. Perichon (luisperichon)",Spanish,33,40,0,104,0,0,0,"2017-09-04 13:46:06"
|
||||
xphsis,Basque,36,31,0,0,0,0,0,"2022-01-02 08:16:19"
|
||||
"長谷川知里 (chase0213)",Japanese,34,138,0,13,0,0,32,"2018-12-14 10:52:44"
|
||||
"milad farahani (miladfarmahini90)",Persian,33,44,0,18,1,0,3,"2017-08-31 16:09:00"
|
||||
"Luis E. Perichon (luisperichon)",Spanish,33,40,0,104,0,0,0,"2017-09-04 13:46:06"
|
||||
"Piotr Łuczyński (peterluczynski)",Polish,33,30,0,6,17,0,2,"2020-01-29 07:27:40"
|
||||
JoeLi,"Chinese Traditional",31,70,0,12,0,0,24,"2017-06-25 05:32:48"
|
||||
andriikozytskyi2625,Ukrainian,31,23,0,0,0,0,0,"2019-07-08 00:16:41"
|
||||
REMOVED_USER,Russian,31,30,0,2,4,0,3,"2018-12-03 23:55:47"
|
||||
Moastafa,Arabic,31,25,0,0,0,0,0,"2020-07-06 11:37:53"
|
||||
"hamza gamal (hamzagamal4444)",Arabic,31,28,0,0,0,0,0,"2020-08-03 15:23:34"
|
||||
andriikozytskyi2625,Ukrainian,31,23,0,0,0,0,0,"2019-07-08 00:16:41"
|
||||
Moastafa,Arabic,31,25,0,0,0,4,0,"2020-07-06 11:37:53"
|
||||
"hamza gamal (hamzagamal4444)",Arabic,31,28,0,0,1,0,0,"2020-08-03 15:23:34"
|
||||
yancyn,"Chinese Simplified",30,40,0,0,0,0,1,"2020-05-18 20:06:03"
|
||||
"Siniša Sabljić (ssabljic)",Croatian,30,37,0,0,0,0,0,"2023-11-13 15:51:00"
|
||||
"Ruud Schouten (ruudschouten)",Dutch,29,32,0,41,3,0,0,"2017-07-22 17:49:17"
|
||||
"비니몬youtube (khj01025276475)",Korean,29,25,0,0,0,0,0,"2020-02-09 20:44:35"
|
||||
"비니몬youtube (khj01025276475)",Korean,29,25,0,0,0,1,0,"2020-02-09 20:44:35"
|
||||
avelneve,Indonesian,29,28,0,0,0,0,0,"2022-04-13 13:26:10"
|
||||
bzhn,Ukrainian,29,26,0,0,4,0,0,"2022-06-18 17:09:13"
|
||||
"Gergő Mihály (mihalygergo97)",Hungarian,28,69,0,0,0,0,0,"2024-02-13 08:35:57"
|
||||
"Niraj Yadav (neverforgetniraj)",Hindi,26,48,0,0,0,0,0,"2017-04-11 02:26:50"
|
||||
"Aaron Dalton (Perlkonig)",French,26,25,0,141,1,0,0,"2018-01-14 12:58:19"
|
||||
"Jonny I (jonny99dj)",Italian,26,26,0,5,0,0,0,"2017-10-07 07:35:34"
|
||||
"Guillaume Collic (gcollic)",French,26,28,0,126,11,0,0,"2017-05-05 16:13:00"
|
||||
Pan_Filuta,Czech,25,21,0,5,8,0,3,"2017-04-29 12:55:14"
|
||||
"Jonny I (jonny99dj)",Italian,26,26,0,5,0,0,0,"2017-10-07 07:35:34"
|
||||
"Aaron Dalton (Perlkonig)",French,26,25,0,141,1,0,0,"2018-01-14 12:58:19"
|
||||
Pan_Filuta,Czech,25,21,0,5,11,0,3,"2017-04-29 12:55:14"
|
||||
"Eddie (eddieattaboy)","Chinese Traditional",25,34,0,1,0,0,0,"2020-11-04 21:48:05"
|
||||
"eduard83 (barbany.eduard)",Catalan,24,25,0,2,0,0,0,"2019-06-26 14:59:47"
|
||||
"A Aa (ylayzlmimashisafyoutub)",Arabic,23,33,0,34,1,1,0,"2021-09-27 15:34:26"
|
||||
REMOVED_USER,Catalan,24,25,0,2,0,0,0,"2019-06-26 14:59:47"
|
||||
"Caner Başaran (basarancaner)",Turkish,23,21,0,0,26,1,0,"2017-04-09 06:34:59"
|
||||
"Ľuboš Čaky (lubos.caky)",Slovak,23,22,0,0,0,0,0,"2019-07-02 16:51:44"
|
||||
"Neeraj Verma (verma.neeraj.in)",Hindi,22,37,0,0,1,0,0,"2018-07-23 07:16:41"
|
||||
gnu-ewm,Polish,22,23,0,6,2,0,0,"2021-02-24 03:42:01"
|
||||
"A Aa (ylayzlmimashisafyoutub)",Arabic,23,33,0,34,3,2,0,"2021-09-27 15:34:26"
|
||||
hodanli,Turkish,22,26,0,0,1,0,0,"2017-11-03 14:33:41"
|
||||
REMOVED_USER,Polish,22,23,0,6,9,0,0,"2021-02-24 03:42:01"
|
||||
"Alcarkse (alexis.brusle)",French,21,25,0,7,11,0,0,"2017-08-06 09:32:29"
|
||||
"Hugo Nogueira (hfrnogueira86)",Portuguese,21,22,0,0,0,0,0,"2023-01-09 22:51:24"
|
||||
"Shashwat (goforgold)",Hindi,20,33,0,0,0,0,0,"2020-05-17 10:34:42"
|
||||
olbotta,Italian,20,25,0,2,0,0,0,"2021-06-06 04:22:55"
|
||||
can13,Turkish,19,14,0,8,0,0,0,"2021-01-03 10:39:03"
|
||||
"사자솥 (toke1597)",Korean,19,19,0,0,0,0,0,"2020-02-04 13:36:11"
|
||||
KenKailer,Arabic,19,25,0,0,0,0,0,"2022-05-10 06:16:54"
|
||||
"İsa Eş (IsaEs)",Turkish,19,17,0,0,6,2,0,"2017-06-20 07:30:22"
|
||||
"Magdalena Urbańczyk (madziia139)",Polish,19,19,0,0,0,0,0,"2017-10-21 03:01:04"
|
||||
sheeCesu,French,19,18,0,48,4,0,0,"2017-12-21 17:01:39"
|
||||
"사자솥 (toke1597)",Korean,19,19,0,0,0,0,0,"2020-02-04 13:36:11"
|
||||
can13,Turkish,19,14,0,8,0,0,0,"2021-01-03 10:39:03"
|
||||
KenKailer,Arabic,19,25,0,0,0,0,0,"2022-05-10 06:16:54"
|
||||
axikman11111,Uyghur,18,19,0,0,0,0,0,"2018-10-13 12:25:31"
|
||||
Adeline31,French,17,20,0,3,0,0,0,"2019-12-06 00:00:11"
|
||||
"Hoon Jung (hooni100)",Korean,17,10,0,0,0,0,0,"2021-01-03 02:26:54"
|
||||
takoyakibento,Korean,17,13,0,3,0,0,0,"2020-08-01 08:44:15"
|
||||
"Sanjay Krishna (sjaykh)",Malayalam,18,42,0,0,0,0,0,"2024-06-01 08:57:37"
|
||||
"Chuang-Chen Chiu (peterChiu9952)","Chinese Traditional",18,28,0,0,0,0,0,"2024-07-02 09:36:59"
|
||||
AlexanderS,German,18,16,0,8,0,0,0,"2025-02-02 16:58:09"
|
||||
"Ceara Lopez (cealopez)",Spanish,17,18,0,0,5,1,0,"2017-08-22 22:56:13"
|
||||
bretzel15,German,16,20,0,0,0,0,0,"2020-04-06 02:49:14"
|
||||
DebatablySane,Bulgarian,16,15,0,48,0,0,0,"2017-07-10 15:13:18"
|
||||
Adeline31,French,17,20,0,3,1,0,0,"2019-12-06 00:00:11"
|
||||
takoyakibento,Korean,17,13,0,3,0,0,0,"2020-08-01 08:44:15"
|
||||
"Hoon Jung (hooni100)",Korean,17,10,0,0,0,0,0,"2021-01-03 02:26:54"
|
||||
Annelotte,Dutch,17,20,0,0,0,0,0,"2022-11-09 08:33:20"
|
||||
wppoqqqi,Korean,17,18,0,4,0,0,0,"2024-11-30 04:22:21"
|
||||
"Şamil Ateşoğlu (m.samilatesoglu)",Turkish,16,22,0,11,6,3,0,"2017-07-05 18:37:08"
|
||||
DebatablySane,Bulgarian,16,15,0,48,0,0,0,"2017-07-10 15:13:18"
|
||||
bretzel15,German,16,20,0,0,1,0,0,"2020-04-06 02:49:14"
|
||||
engineeringforgood,Russian,16,15,0,0,0,0,16,"2021-01-22 03:32:35"
|
||||
"M7md Salahaddin (m7mdsalahaddin)",Arabic,16,16,0,1,0,0,0,"2024-07-17 18:49:07"
|
||||
"Bhava Tharini (bhavidanush)",Tamil,15,37,0,0,0,0,0,"2019-10-09 05:43:11"
|
||||
"Maro Chr (caprisunglasses)",Greek,14,17,0,0,0,0,0,"2021-08-17 06:53:33"
|
||||
"Zeynep Esen (nezihaesen50)",Turkish,14,13,0,0,0,0,0,"2020-01-28 07:05:15"
|
||||
"Ch. (sftblw)",Korean,15,17,0,1,0,0,0,"2023-01-25 19:22:34"
|
||||
iamsurajbobade,Hindi,14,30,0,0,0,0,0,"2018-05-21 11:23:27"
|
||||
"Faiz Ahamed (faiznewton)",Tamil,14,31,0,0,0,0,0,"2021-05-06 23:06:46"
|
||||
"Zeynep Esen (nezihaesen50)",Turkish,14,13,0,0,0,0,0,"2020-01-28 07:05:15"
|
||||
"Sanji Vinsmock (mukanzhanbolat4)",Russian,14,14,0,0,0,0,0,"2020-02-18 12:38:54"
|
||||
"Zeeshan Rabbani (Zeera)",Hindi,14,25,0,0,0,0,0,"2020-09-15 11:32:01"
|
||||
"pi hobbes (uwe_silv)",Japanese,14,46,0,0,0,0,0,"2022-01-15 02:57:14"
|
||||
"Anastasia Borchuk (al2.borchuk)",Russian,14,14,0,0,0,0,0,"2020-04-14 13:22:49"
|
||||
"Fikret Bilici (fikretbilici)",Turkish,14,13,0,0,0,0,0,"2020-06-21 17:16:11"
|
||||
"EuiHo Hwang (euiho.hwang)",Korean,14,16,0,0,0,0,0,"2020-06-23 02:40:01"
|
||||
"Uwe Mönks (schirinowski)",German,13,12,0,0,0,0,0,"2021-02-18 04:00:41"
|
||||
"Dave (xdave)",Hungarian,13,11,0,0,0,0,0,"2020-03-02 20:56:50"
|
||||
"Ana Kelly Vale (anakvale)","Portuguese, Brazilian",13,21,0,4,0,0,2,"2022-03-30 00:15:37"
|
||||
GiorgioHerbie,Italian,13,15,0,0,0,0,0,"2022-01-17 17:35:40"
|
||||
"EuiHo Hwang (euiho.hwang)",Korean,14,16,0,0,1,0,0,"2020-06-23 02:40:01"
|
||||
"Zeeshan Rabbani (Zeera)",Hindi,14,25,0,0,0,0,0,"2020-09-15 11:32:01"
|
||||
"Faiz Ahamed (faiznewton)",Tamil,14,31,0,0,0,0,0,"2021-05-06 23:06:46"
|
||||
"Maro Chr (caprisunglasses)",Greek,14,17,0,0,0,0,0,"2021-08-17 06:53:33"
|
||||
"pi hobbes (uwe_silv)",Japanese,14,46,0,0,0,0,14,"2022-01-15 02:57:14"
|
||||
"Mar Tous (mtousfernandez)",Catalan,14,18,0,0,0,0,0,"2022-08-16 17:55:28"
|
||||
Ferhatt,Turkish,14,13,0,3,0,0,0,"2022-12-13 12:52:20"
|
||||
alchemiker,German,14,13,0,0,0,0,0,"2024-09-03 10:16:04"
|
||||
"Nenad Vukotic (vukotic.nenad)","Serbian (Cyrillic)",13,13,0,1,2,6,0,"2019-01-31 14:29:15"
|
||||
soura2,Arabic,12,13,0,0,0,0,0,"2020-01-13 19:23:47"
|
||||
"Dave (xdave)",Hungarian,13,11,0,0,0,0,0,"2020-03-02 20:56:50"
|
||||
"Uwe Mönks (schirinowski)",German,13,12,0,0,0,0,0,"2021-02-18 04:00:41"
|
||||
Herbie_23,Italian,13,15,0,0,0,0,0,"2022-01-17 17:35:40"
|
||||
"Ana Kelly Vale (anakvale)","Portuguese, Brazilian",13,21,0,4,0,0,2,"2022-03-30 00:15:37"
|
||||
"Minsu (cknblue)",Korean,13,10,0,1,0,0,0,"2022-05-18 00:26:54"
|
||||
"shreyas (techiespace)",Hindi,12,20,0,0,0,0,0,"2018-06-10 01:14:26"
|
||||
soura2,Arabic,12,13,0,0,0,0,0,"2020-01-13 19:23:47"
|
||||
"Ammar Naif (Ammar_Naif)",Arabic,12,12,0,6,0,0,0,"2022-01-15 05:16:41"
|
||||
"Jo Chuang (josephch405)","Chinese Traditional",11,24,0,0,0,0,11,"2017-06-16 20:21:06"
|
||||
Vmrc,French,11,12,0,2,0,0,0,"2020-11-02 05:35:06"
|
||||
"Ammar Naif (Ammar_Naif)",Arabic,11,11,0,4,0,0,0,"2022-01-15 05:16:41"
|
||||
"Sonu Sharma (riteetude)",Hindi,11,23,0,0,0,0,0,"2021-05-30 19:38:00"
|
||||
"Lucas Depetris (lucasdepetrisd)","Spanish; Catalan; Italian; French",11,12,0,12,0,0,0,"2023-10-24 21:16:21"
|
||||
"Mihael Wagner (miha.wagner)",Slovenian,10,9,0,7,0,0,0,"2017-10-18 18:26:29"
|
||||
"Anonymous edgy nerd (yamentaad)",Arabic,10,13,0,1,0,0,0,"2018-05-06 09:23:57"
|
||||
"Edwin van Rooij (edwinvrooij)",Dutch,10,13,0,17,0,0,0,"2018-11-05 03:59:10"
|
||||
"Brian Camacho (bmcamacho)",Polish,10,11,0,0,1,1,0,"2020-08-03 02:27:28"
|
||||
"Mihael Wagner (miha.wagner)",Slovenian,10,9,0,7,0,0,0,"2017-10-18 18:26:29"
|
||||
"Hrant Hakobian (hrastgh1)",Armenian,10,9,0,0,0,0,0,"2021-08-29 15:22:10"
|
||||
"sathvic k (sathvictripleseven)",Telugu,10,17,0,0,0,0,0,"2020-09-11 08:11:32"
|
||||
"Ahmed Mosaad (ahmed.mosaad2018)",Arabic,10,12,0,6,0,0,0,"2021-02-03 18:45:43"
|
||||
"Anonymous edgy nerd (yamentaad)",Arabic,10,13,0,1,0,0,0,"2018-05-06 09:23:57"
|
||||
"Hrant Hakobian (hrastgh1)",Armenian,10,9,0,0,0,0,0,"2021-08-29 15:22:10"
|
||||
"Milan Siebenbürger (lennyd)",Czech,10,7,0,1,1,0,0,"2022-01-30 07:09:42"
|
||||
"Zesar Cebrián (Txorrota)",Spanish,10,44,0,0,0,0,0,"2022-02-09 01:34:32"
|
||||
"Milan Siebenbürger (lennyd)",Czech,10,7,0,1,0,0,0,"2022-01-30 07:09:42"
|
||||
"Suhaili Hassan (kucingsyg96)",Indonesian,9,10,0,0,0,0,0,"2018-06-10 11:55:09"
|
||||
"Слави Велчев (BRO36S) (gg13656)",Bulgarian,10,11,0,9,0,0,0,"2025-01-09 08:47:04"
|
||||
"Sourire Lucide (sourire_lucide)",Russian,9,10,0,0,1,0,0,"2018-03-22 01:37:55"
|
||||
"Martin Vostatek (martinvostatek)",Czech,9,8,0,32,2,0,0,"2019-01-21 13:52:36"
|
||||
"Seweryn Piotrowski (Draxxsx)",Polish,9,10,0,0,19,0,0,"2020-01-02 09:55:48"
|
||||
"Jakob Weickmann (jweickm)",Japanese,8,21,0,0,0,0,0,"2021-10-05 11:10:25"
|
||||
"Suhaili Hassan (kucingsyg96)",Indonesian,9,10,0,0,0,0,0,"2018-06-10 11:55:09"
|
||||
"Martin Vostatek (martinvostatek)",Czech,9,8,0,32,3,0,0,"2019-01-21 13:52:36"
|
||||
"Seweryn Piotrowski (Draxxsx)",Polish,9,10,0,0,26,0,0,"2020-01-02 09:55:48"
|
||||
omoise,French,9,11,0,1,0,0,0,"2023-12-26 14:27:17"
|
||||
Rex123,Persian,8,8,0,0,0,0,0,"2017-07-01 00:47:42"
|
||||
"Jakob Weickmann (jweickm)",Japanese,8,21,0,0,0,0,8,"2021-10-05 11:10:25"
|
||||
"Andrey ZaXeLoN (waragaa)",Russian,7,7,0,8,1,0,0,"2017-09-18 21:37:42"
|
||||
"Konstantin (KZhidovinov)",Russian,7,7,0,0,0,0,0,"2020-01-29 13:35:12"
|
||||
ftfoi,Norwegian,7,6,0,0,0,0,0,"2020-04-11 20:42:35"
|
||||
"Vladimir Pavlychev (vovs03)",Russian,7,9,0,0,0,0,0,"2017-12-18 02:46:56"
|
||||
"Felipe Chagas (chagretes)","Portuguese, Brazilian",7,8,0,0,3,0,5,"2022-01-10 12:20:25"
|
||||
"Konstantin (KZhidovinov)",Russian,7,7,0,0,0,0,0,"2020-01-29 13:35:12"
|
||||
pkorove,Greek,7,7,0,0,1,0,0,"2020-03-07 11:36:12"
|
||||
ftfoi,Norwegian,7,6,0,0,0,0,0,"2020-04-11 20:42:35"
|
||||
"Андрій Козицький (andriikozytskyi3807)",Ukrainian,7,12,0,2,0,0,0,"2020-09-26 20:31:56"
|
||||
pkorove,Greek,7,7,0,0,0,0,0,"2020-03-07 11:36:12"
|
||||
ChloeLiang,Japanese,6,22,0,0,1,0,3,"2017-08-08 05:02:59"
|
||||
"Felipe Chagas (chagretes)","Portuguese, Brazilian",7,8,0,0,3,0,5,"2022-01-10 12:20:25"
|
||||
"Tomáš Miklovič (zyppi)",Slovak,7,7,0,0,0,0,0,"2022-09-11 15:12:06"
|
||||
"Sam (SorodonSorodon)",German,6,6,0,13,0,0,0,"2017-04-14 11:09:27"
|
||||
ChloeLiang,Japanese,6,22,0,0,1,0,3,"2017-08-08 05:02:59"
|
||||
"닉닉 (seohu9466)",Korean,6,14,0,13,0,0,0,"2017-10-09 23:08:15"
|
||||
"Sarita Cajas (sarayanacajas)",Spanish,6,4,0,0,1,0,0,"2021-05-14 14:27:59"
|
||||
erfan2927,Persian,6,6,0,0,0,0,0,"2018-04-09 02:12:44"
|
||||
"Burak Ceylan (7burakceylan)",Turkish,6,6,0,0,0,0,0,"2018-05-20 17:24:19"
|
||||
andriikozytskyi2018,Ukrainian,5,5,0,0,0,0,0,"2017-09-03 05:24:43"
|
||||
"Vitor Henrique (vitorhcl)","Portuguese, Brazilian",5,8,0,1,0,0,0,"2022-03-08 20:00:59"
|
||||
"Sarita Cajas (sarayanacajas)",Spanish,6,4,0,0,1,0,0,"2021-05-14 14:27:59"
|
||||
"خالد (mkhrafi1999)",Arabic,6,3,0,6,0,0,0,"2023-06-25 00:36:13"
|
||||
"Matthias Joly (joly.matt12)",French,5,8,0,27,1,0,0,"2017-08-28 09:53:59"
|
||||
"Tomáš Hrabáček (Hrabyyy)",Czech,5,3,0,0,1,0,0,"2021-05-27 11:58:11"
|
||||
"Guerra Ivaneth (rossanaiva-04)",Spanish,5,7,0,0,0,0,0,"2019-02-03 16:48:59"
|
||||
andriikozytskyi2018,Ukrainian,5,5,0,0,0,0,0,"2017-09-03 05:24:43"
|
||||
"Дмитрий Хапенков (d.khapenkov)",Russian,5,5,0,6,4,0,2,"2018-01-06 23:00:43"
|
||||
"Guerra Ivaneth (rossanaiva-04)",Spanish,5,7,0,0,0,0,0,"2019-02-03 16:48:59"
|
||||
"Micaela Pighin (micaelapiighin)",Spanish,5,6,0,1,0,0,0,"2019-10-09 23:32:42"
|
||||
"Manuel Tassi (Mannivu)",Italian,5,6,0,0,0,0,0,"2021-01-03 11:00:33"
|
||||
"Neko123 (emandic11)","Serbian (Cyrillic)",4,4,0,57,0,0,0,"2021-04-21 15:33:29"
|
||||
"Manuel (Mannivu)",Italian,5,6,0,0,0,0,0,"2021-01-03 11:00:33"
|
||||
"Tomáš Hrabáček (Hrabyyy)",Czech,5,3,0,0,2,0,0,"2021-05-27 11:58:11"
|
||||
"Vitor Henrique (vitorhcl)","Portuguese, Brazilian",5,8,0,1,0,0,0,"2022-03-08 20:00:59"
|
||||
SubhamJena,Hindi,5,12,0,3,0,0,0,"2023-04-19 11:13:19"
|
||||
"Lopo Isaac Fernández (rocapata)",Spanish,4,3,0,0,0,0,0,"2018-09-20 11:46:22"
|
||||
"Eli Besirov (elibesirov07)",Turkish,4,4,0,0,0,0,0,"2019-03-25 07:12:34"
|
||||
bziuum,Polish,4,4,0,0,6,0,0,"2020-09-01 09:08:01"
|
||||
marmo,German,4,4,0,0,0,0,0,"2021-01-13 01:16:35"
|
||||
bziuum,Polish,4,4,0,0,3,0,0,"2020-09-01 09:08:01"
|
||||
"Craig Foobar (craig.foobar)",German,3,3,0,25,0,0,0,"2022-02-20 16:55:47"
|
||||
Katarin,Ukrainian,3,3,0,0,0,0,0,"2022-03-17 14:44:59"
|
||||
"Sarath S (CyberShark)",Tamil,3,7,0,0,0,0,0,"2020-08-27 22:43:16"
|
||||
"Neko123 (emandic11)","Serbian (Cyrillic)",4,4,0,57,0,0,1,"2021-04-21 15:33:29"
|
||||
"Mo Heydari (Mrheydari)",Dutch,4,4,0,0,0,0,0,"2023-02-21 04:54:49"
|
||||
"Srekaravarshan N K (srekaravarshan)",Tamil,4,4,0,0,0,0,0,"2023-04-22 06:08:57"
|
||||
"Thoum Ptrgnt (thomas.petrignet)",French,3,3,0,2,0,3,0,"2017-09-23 19:25:52"
|
||||
carsten_kafke,German,3,3,0,43,0,0,3,"2017-10-27 13:27:47"
|
||||
"Vagner Roberto (vagner.trompete)","Portuguese, Brazilian",3,3,0,0,0,0,0,"2017-12-30 17:54:26"
|
||||
"Igor Piskun (i_piskun)",Ukrainian,3,3,0,0,0,0,0,"2018-01-19 15:20:27"
|
||||
"Cláudio Bernardo (claudiobernardo.ti)","Portuguese, Brazilian",3,4,0,1,0,0,0,"2019-01-08 14:41:10"
|
||||
"Unnie Here (Carb)",Hindi,3,8,0,0,0,0,0,"2020-03-18 23:34:35"
|
||||
REMOVED_USER,"Portuguese, Brazilian",3,4,0,0,0,0,0,"2018-11-18 09:02:37"
|
||||
"Thoum Ptrgnt (thomas.petrignet)",French,3,3,0,2,0,3,0,"2017-09-23 19:25:52"
|
||||
"Oleg Kogut (kogut_oleg)",Ukrainian,3,3,0,0,0,0,0,"2018-12-28 14:31:02"
|
||||
carsten_kafke,German,3,3,0,43,0,0,3,"2017-10-27 13:27:47"
|
||||
Magidxz,Arabic,3,3,0,0,0,0,0,"2021-01-05 05:02:54"
|
||||
"Péter Bernát (bernatp)",Hungarian,3,2,0,0,0,0,0,"2019-11-30 15:50:33"
|
||||
"joabe gabriel (joabegabrielcma1)","Portuguese, Brazilian",3,4,0,0,0,0,0,"2018-08-21 09:08:59"
|
||||
"Gabriel Cavalcante (gabrielc.alves14)","Portuguese, Brazilian",3,4,0,0,0,0,0,"2018-08-06 22:24:54"
|
||||
"Martin Zimdahl (zimdahlmartin)",Swedish,3,2,0,0,1,0,3,"2018-09-15 04:39:22"
|
||||
atomjani,Hungarian,3,3,0,0,0,0,0,"2019-01-19 00:49:25"
|
||||
"mohammadali barati (mabaraty)",Persian,3,3,0,0,0,0,0,"2021-07-10 05:54:44"
|
||||
"Hiohana Rilary (hiohanarilary)","Portuguese, Brazilian",3,4,0,0,0,0,0,"2019-07-31 20:42:20"
|
||||
"Tejaswini Boppana (Tejaswini)",Telugu,3,1,0,0,0,0,0,"2021-08-27 23:48:55"
|
||||
"Andrea Bianchi (andreawhite1597)",Italian,3,1,0,1,0,0,0,"2018-01-21 17:45:48"
|
||||
"Ño Bí Tã (pt614553)",Arabic,2,8,0,1,0,2,0,"2021-05-22 20:41:01"
|
||||
"Judith Ayala (Azul1612)",Spanish,2,1,0,0,0,1,0,"2021-05-18 17:07:19"
|
||||
"Valerij D (vala.dobler)",German,2,2,0,0,0,0,0,"2018-09-22 09:38:27"
|
||||
"Balthazar Aubard (Balatzar)",French,2,5,0,0,1,0,0,"2017-09-23 01:42:57"
|
||||
"Ahmed Bazazo (ahmedbazazo)",Arabic,2,2,0,0,0,0,0,"2022-02-19 20:11:09"
|
||||
"Ali Zaida (alizaeda92)",Arabic,2,2,0,0,0,0,0,"2019-12-01 11:47:00"
|
||||
"FAy FAy (fayfayfay52)","Chinese Traditional",2,5,0,0,0,0,0,"2017-10-06 08:53:21"
|
||||
Soroor_SI,Persian,2,2,0,0,0,0,0,"2018-06-10 06:28:27"
|
||||
chavs1997,Russian,2,2,0,9,0,0,0,"2018-05-18 16:58:19"
|
||||
"Naveen jai krishna (njsbpolymer1)",Tamil,2,5,0,0,0,0,0,"2020-01-10 14:19:41"
|
||||
omerfarukbas,Turkish,2,3,0,19,2,0,0,"2017-08-14 16:10:35"
|
||||
"Ilyas Fekhar (il47yas)",Arabic,2,2,0,0,0,0,0,"2018-04-17 22:00:41"
|
||||
"Héctor Mañas García (hectodium)",Catalan,2,3,0,0,0,0,0,"2021-10-02 20:32:09"
|
||||
"Walid Baazia (walidbaazia2005)",Arabic,2,1,0,0,0,0,0,"2021-01-27 12:47:34"
|
||||
"fatemeh s (fargolseifoori3)",Persian,2,2,0,0,0,0,0,"2019-01-31 12:06:57"
|
||||
"hesamiranii (esam.matouri)",Persian,2,2,0,0,0,0,0,"2018-09-22 16:33:36"
|
||||
"Gabriel Cavalcante (gabrielc.alves14)","Portuguese, Brazilian",3,4,0,0,0,0,0,"2018-08-06 22:24:54"
|
||||
"joabe gabriel (joabegabrielcma1)","Portuguese, Brazilian",3,4,0,0,0,0,0,"2018-08-21 09:08:59"
|
||||
"Martin Zimdahl (zimdahlmartin)",Swedish,3,2,0,0,2,0,3,"2018-09-15 04:39:22"
|
||||
REMOVED_USER,"Portuguese, Brazilian",3,4,0,0,0,0,0,"2018-11-18 09:02:37"
|
||||
"Oleg Kogut (kogut_oleg)",Ukrainian,3,3,0,0,0,0,0,"2018-12-28 14:31:02"
|
||||
"Cláudio Bernardo (claudiobernardo.ti)","Portuguese, Brazilian",3,4,0,1,0,0,0,"2019-01-08 14:41:10"
|
||||
atomjani,Hungarian,3,3,0,0,0,0,0,"2019-01-19 00:49:25"
|
||||
"Hiohana Rilary (hiohanarilary)","Portuguese, Brazilian",3,4,0,0,0,0,0,"2019-07-31 20:42:20"
|
||||
"Péter Bernát (bernatp)",Hungarian,3,2,0,0,0,0,0,"2019-11-30 15:50:33"
|
||||
"Unnie Here (Carb)",Hindi,3,8,0,0,0,0,0,"2020-03-18 23:34:35"
|
||||
"Sarath S (CyberShark)",Tamil,3,7,0,0,0,0,0,"2020-08-27 22:43:16"
|
||||
Magidxz,Arabic,3,3,0,0,0,0,0,"2021-01-05 05:02:54"
|
||||
"mohammadali barati (mabaraty)",Persian,3,3,0,0,0,0,0,"2021-07-10 05:54:44"
|
||||
"Tejaswini Boppana (Tejaswini)",Telugu,3,1,0,0,0,0,0,"2021-08-27 23:48:55"
|
||||
"Craig Foobar (craig.foobar)",German,3,3,0,25,1,0,0,"2022-02-20 16:55:47"
|
||||
Katarin,Ukrainian,3,3,0,0,0,0,0,"2022-03-17 14:44:59"
|
||||
ayet,Arabic,3,3,0,0,0,0,0,"2023-08-16 20:18:12"
|
||||
REMOVED_USER,Ukrainian,2,2,0,0,0,0,0,"2017-06-15 12:24:44"
|
||||
"Alex Stein (diefaust1993)",Russian,2,2,0,4,4,0,2,"2017-07-13 06:56:17"
|
||||
omerfarukbas,Turkish,2,3,0,19,2,0,0,"2017-08-14 16:10:35"
|
||||
"Balthazar Aubard (Balatzar)",French,2,5,0,0,1,0,0,"2017-09-23 01:42:57"
|
||||
"FAy FAy (fayfayfay52)","Chinese Traditional",2,5,0,0,0,0,0,"2017-10-06 08:53:21"
|
||||
"Ilyas Fekhar (il47yas)",Arabic,2,2,0,0,0,0,0,"2018-04-17 22:00:41"
|
||||
amei,"Portuguese, Brazilian",2,2,0,0,0,0,0,"2018-04-19 19:42:28"
|
||||
"أم محمد تقي (souadboudia19)",Arabic,2,2,0,0,0,0,0,"2020-06-13 15:24:17"
|
||||
LNDDYL,"Chinese Traditional",2,4,0,0,0,0,2,"2018-04-22 04:00:19"
|
||||
"조화정 (yunjoo337)",Korean,2,2,0,0,0,0,0,"2019-06-16 22:25:31"
|
||||
"Sidali Aymen (sidaliaymen950)",Arabic,2,2,0,0,0,0,0,"2022-01-31 18:50:59"
|
||||
"Jimmy Young (Jimmyyoung)","Chinese Traditional",2,4,0,0,0,0,2,"2018-04-22 04:00:19"
|
||||
chavs1997,Russian,2,2,0,9,0,0,0,"2018-05-18 16:58:19"
|
||||
Soroor_SI,Persian,2,2,0,0,0,0,0,"2018-06-10 06:28:27"
|
||||
"Valerij D (vala.dobler)",German,2,2,0,0,0,0,0,"2018-09-22 09:38:27"
|
||||
"hesamiranii (esam.matouri)",Persian,2,2,0,0,0,0,0,"2018-09-22 16:33:36"
|
||||
"fatemeh s (fargolseifoori3)",Persian,2,2,0,0,0,0,0,"2019-01-31 12:06:57"
|
||||
"Danial Agh (danialagh)",Persian,2,3,0,0,0,0,0,"2019-03-30 13:24:16"
|
||||
"조화정 (yunjoo337)",Korean,2,2,0,0,0,0,0,"2019-06-16 22:25:31"
|
||||
"Ali Zaida (alizaeda92)",Arabic,2,2,0,0,0,0,0,"2019-12-01 11:47:00"
|
||||
"Naveen jai krishna (njsbpolymer1)",Tamil,2,5,0,0,1,0,0,"2020-01-10 14:19:41"
|
||||
"أم محمد تقي (souadboudia19)",Arabic,2,2,0,0,0,0,0,"2020-06-13 15:24:17"
|
||||
"Walid Baazia (walidbaazia2005)",Arabic,2,1,0,0,0,0,0,"2021-01-27 12:47:34"
|
||||
"Judith Ayala (Azul1612)",Spanish,2,1,0,0,0,1,0,"2021-05-18 17:07:19"
|
||||
"Ño Bí Tã (pt614553)",Arabic,2,8,0,1,0,2,0,"2021-05-22 20:41:01"
|
||||
"Héctor Mañas García (hectodium)",Catalan,2,3,0,0,0,0,0,"2021-10-02 20:32:09"
|
||||
"Sidali Aymen (sidaliaymen950)",Arabic,2,2,0,0,0,0,0,"2022-01-31 18:50:59"
|
||||
"Ahmed Bazazo (ahmedbazazo)",Arabic,2,2,0,0,0,0,0,"2022-02-19 20:11:09"
|
||||
"HypemanKEK (rocasta.dodvi)",Russian,2,2,0,0,0,0,0,"2023-01-13 03:45:06"
|
||||
"Gmas (gustmaes1)",Dutch,2,2,0,0,0,0,0,"2023-01-26 13:52:54"
|
||||
"Катерина Ховалкина (katerina959)",Russian,2,2,0,1,0,0,0,"2023-05-18 14:50:30"
|
||||
"Pratheba Devanathan (devprath05)",Tamil,2,2,0,0,1,0,0,"2023-06-05 12:35:45"
|
||||
"Gordon James Campbell (gordonjamescampbell)",Catalan,2,2,0,0,0,0,0,"2023-06-23 23:23:46"
|
||||
"Suren Airyanam (suren.airyanam)",Persian,2,2,0,0,0,0,0,"2023-10-21 18:01:41"
|
||||
axq,German,2,1,0,1,0,0,0,"2024-02-29 17:14:13"
|
||||
"Hades Mori (Hades_Mori)",Ukrainian,2,2,0,0,0,0,0,"2024-07-03 07:14:58"
|
||||
iSoron2,"Portuguese, Brazilian",1,1,0,0,0,0,0,"2017-03-18 17:56:29"
|
||||
"Anton (tT0NG)","Chinese Traditional",1,2,0,0,0,0,1,"2017-07-06 14:18:39"
|
||||
"Luca Gori (grolcu)",Italian,1,2,0,0,0,0,0,"2020-09-26 23:26:15"
|
||||
axd,Spanish,1,1,0,15,0,0,0,"2017-09-12 05:48:51"
|
||||
REMOVED_USER,Russian,1,2,0,6,1,0,1,"2019-12-26 05:37:01"
|
||||
jonesses,German,1,1,0,1,0,0,1,"2021-01-01 08:03:18"
|
||||
"Alan Jeon (skyisle)",Korean,1,2,0,8,0,0,0,"2018-01-09 10:46:00"
|
||||
"Maria Fefelova (mashafefel)",Russian,1,1,0,0,0,0,0,"2019-05-18 02:03:56"
|
||||
"Patrick Pimenta (trickap1)","Portuguese, Brazilian",1,1,0,0,0,0,0,"2018-12-01 14:31:21"
|
||||
"박찌 (perpact20)",Korean,1,1,0,0,0,0,0,"2018-02-10 10:11:44"
|
||||
"Kan Black (kanblack.va)",Vietnamese,1,2,0,0,0,1,0,"2019-01-15 03:50:10"
|
||||
"Anastasiia Bondarenko (nastasya.bondarenko.97)",Russian,1,1,0,0,0,0,0,"2019-06-07 17:43:08"
|
||||
axd,Spanish,1,1,0,15,1,0,0,"2017-09-12 05:48:51"
|
||||
"Wibi Cahyo (wbcahyoh)",Indonesian,1,3,0,0,0,0,0,"2017-12-14 06:35:58"
|
||||
sanyoniket,,0,0,0,0,0,0,0,"2019-07-23 12:58:40"
|
||||
"Sri Harsha Bhogi (sriharshabhogi)",,0,0,0,0,0,0,0,"2018-09-02 05:31:53"
|
||||
Irsgram,Russian,0,0,0,1,0,0,0,"2019-09-30 16:42:20"
|
||||
"Baran Özavcı (n2141n)",Turkish,0,0,0,1,0,0,0,"2022-02-26 04:32:51"
|
||||
"Masataka Yakura (myakura)",Japanese,0,0,0,1,0,0,0,"2021-09-03 22:10:36"
|
||||
ava_rfie,Persian,0,0,0,1,0,0,0,"2019-06-09 16:19:24"
|
||||
T-v-Gerwen,Dutch,0,0,0,47,0,0,0,"2018-03-02 10:26:33"
|
||||
"George Merkulov (george142.emarket)",Russian,0,0,0,11,0,0,0,"2019-06-09 19:47:02"
|
||||
philfr49,French,0,0,0,2,0,0,0,"2018-09-03 14:20:32"
|
||||
"عبد الناصر سعيد الثبيتي (asaeed)",,0,0,0,0,0,0,0,"2018-03-13 02:09:35"
|
||||
"Thomas Orlita (Thomas995)",Czech,0,0,0,1,0,0,0,"2017-12-24 04:08:27"
|
||||
"Edmunds Edmundam (edmundam)",,0,0,0,0,0,0,0,"2020-06-01 14:18:18"
|
||||
"Elmo (oberknecht)",,0,0,0,0,0,0,0,"2020-04-16 08:45:50"
|
||||
"Равиль Мифтахов (ravilmif47)",Russian,0,0,0,1,0,0,0,"2019-08-12 21:58:30"
|
||||
"Manny Farsangy (manifarsangi)",Persian,0,0,0,12,0,0,0,"2021-08-10 05:32:28"
|
||||
"Samuel Przeździęk (samek22)",Polish,0,0,0,1,0,0,0,"2021-08-01 00:49:01"
|
||||
"Saiprasath B (Saiprasath)",,0,0,0,0,0,0,0,"2021-07-11 11:10:41"
|
||||
REMOVED_USER,,0,0,0,0,0,0,0,"2018-08-24 00:17:43"
|
||||
REMOVED_USER,,0,0,0,0,0,0,0,"2020-02-01 03:47:48"
|
||||
"Arjun K. (arjunkdot)",,0,0,0,0,0,0,0,"2020-09-20 11:16:18"
|
||||
EwanB,,0,0,0,0,0,0,0,"2019-11-19 10:04:38"
|
||||
shuvo786,,0,0,0,0,0,0,0,"2019-11-13 00:18:12"
|
||||
"Pro AAA (pro1010)",Arabic,0,0,0,1,0,0,0,"2022-02-14 03:32:44"
|
||||
"manu (manuL96)",,0,0,0,0,0,0,0,"2022-05-06 23:34:55"
|
||||
"Rivo Zängov (Eraser)",,0,0,0,0,0,0,0,"2020-10-13 04:38:26"
|
||||
ashik8113,,0,0,0,0,0,0,0,"2022-04-13 11:58:26"
|
||||
deepbird,,0,0,0,0,0,0,0,"2022-04-11 03:21:05"
|
||||
REMOVED_USER,,0,0,0,0,0,0,0,"2018-10-27 15:34:36"
|
||||
Elham1361,,0,0,0,0,0,0,0,"2018-10-27 12:01:06"
|
||||
"Ahnaf Tajwar (atn4404)",,0,0,0,0,0,0,0,"2018-10-16 11:13:30"
|
||||
martyaberger,,0,0,0,0,0,0,0,"2019-01-01 18:48:08"
|
||||
AsadullahIlyas,,0,0,0,0,0,0,0,"2019-01-04 06:14:15"
|
||||
"akmal shafiq (mohdakmalshafiq)",,0,0,0,0,0,0,0,"2021-11-01 01:04:50"
|
||||
"Sylwuskak (sylwuskak)",Polish,0,0,0,1,0,0,0,"2022-01-25 04:19:53"
|
||||
"Yunsu Kim (yunsukim86)",Korean,0,0,0,2,0,0,0,"2022-01-14 06:33:43"
|
||||
"Pumpith Ungsupanit (pumpithu)",,0,0,0,0,0,0,0,"2019-01-19 23:47:57"
|
||||
"Nat Fomicheva (natac)",Russian,0,0,0,3,0,0,0,"2019-01-25 14:35:02"
|
||||
HemanthMeda,Telugu,0,0,0,4,0,0,0,"2021-12-01 14:02:14"
|
||||
"darkkingredian (rediancool)",,0,0,0,0,0,0,0,"2021-07-27 16:04:32"
|
||||
catemlitten,Japanese,0,0,0,1,0,0,0,"2021-11-17 15:06:02"
|
||||
"Said Tahsin Dane (tasomaniac)",,0,0,0,0,0,0,0,"2021-09-25 05:31:01"
|
||||
"Matus Zdansky (matuszdansky)",,0,0,0,0,0,0,0,"2019-10-20 13:52:24"
|
||||
mdrobulis,,0,0,0,0,0,0,0,"2018-05-24 01:40:42"
|
||||
valney.faria,"Portuguese, Brazilian",0,0,0,1,0,0,0,"2020-02-02 14:45:02"
|
||||
"Petros Bleyan (coolbleyan)",Russian,0,0,0,14,0,0,0,"2017-08-18 18:37:18"
|
||||
"Карлен Шаухаев (KarlenShaukhaev)",,0,0,0,0,0,0,0,"2020-04-27 08:53:49"
|
||||
"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"
|
||||
"Dagna Q (dagnaq)",,0,0,0,0,0,0,0,"2017-08-06 01:42:52"
|
||||
Sandhu564.,,0,0,0,0,0,0,0,"2020-12-14 01:27:45"
|
||||
AhmedDz,Arabic,0,0,0,1,0,0,0,"2017-12-31 10:12:31"
|
||||
"Quentin Hibon (hiq)",,0,0,0,0,0,0,0,"2021-02-07 16:39:31"
|
||||
"Ahmed Nazir (ahmednazir333)",,0,0,0,0,0,0,0,"2018-05-06 12:10:27"
|
||||
"박인호 (wphestiraid)",Korean,0,0,0,2,0,0,0,"2018-01-05 00:33:14"
|
||||
Raulbertassi,,0,0,0,0,0,0,0,"2018-01-07 17:23:18"
|
||||
"Javid IRAN (twitteriran98)",Persian,0,0,0,1,0,0,0,"2017-11-25 16:47:25"
|
||||
"Wellington Ribeiro (wellington.rib)",,0,0,0,0,0,0,0,"2017-11-16 07:32:25"
|
||||
dimateos,,0,0,0,0,0,0,0,"2021-01-10 06:29:52"
|
||||
"Balaji Jayaraman (jkbalaji1103)",,0,0,0,0,0,0,0,"2017-10-30 22:12:27"
|
||||
"reza golestanzadeh (reza.golestanzadeh)",Persian,0,0,0,1,0,0,0,"2020-10-21 12:07:20"
|
||||
"Muhammet Furkan ALMACI (furkan.almaci)",Turkish,0,0,0,1,0,0,0,"2017-10-29 13:44:56"
|
||||
dongchen.yue,German,0,0,0,4,0,0,0,"2020-09-12 15:05:59"
|
||||
"Алтынбек Наурызғали (altinbeknaurizgali)",Russian,0,0,0,1,0,0,0,"2020-08-12 13:03:49"
|
||||
rooban23,,0,0,0,0,0,0,0,"2020-09-15 11:49:14"
|
||||
NairaDNV,Spanish,0,0,0,9,0,0,0,"2018-01-05 19:10:33"
|
||||
"Katherine Alexandra Flórez Ramírez (katherine.florez12)",Spanish,0,0,0,46,0,0,0,"2018-01-20 02:18:32"
|
||||
Itch,,0,0,0,0,0,0,0,"2017-10-16 09:18:42"
|
||||
"Yasin Okumus (lacivert)",Turkish,0,0,0,1,0,0,0,"2018-02-07 04:13:51"
|
||||
"Eduard Boboc (edi.boboc33)",Romanian,0,0,0,4,0,0,0,"2019-12-16 09:08:39"
|
||||
Hayder21,,0,0,0,0,0,0,0,"2019-12-31 10:56:24"
|
||||
"Eliška Roubalová (roubaeli)",Czech,0,0,0,6,0,0,0,"2019-12-31 12:47:29"
|
||||
Fazy1380,,0,0,0,0,0,0,0,"2021-04-10 11:02:53"
|
||||
"Arttu Ylhävuori (arttu.ylhavuori)",,0,0,0,0,0,0,0,"2019-07-24 15:03:42"
|
||||
"Alan Jeon (skyisle)",Korean,1,2,0,8,0,0,0,"2018-01-09 10:46:00"
|
||||
"박찌 (perpact20)",Korean,1,1,0,0,0,0,0,"2018-02-10 10:11:44"
|
||||
"Patrick Pimenta (trickap1)","Portuguese, Brazilian",1,1,0,0,0,0,0,"2018-12-01 14:31:21"
|
||||
"Kan Black (kanblack.va)",Vietnamese,1,2,0,0,0,1,0,"2019-01-15 03:50:10"
|
||||
"Maria Fefelova (mashafefel)",Russian,1,1,0,0,0,0,0,"2019-05-18 02:03:56"
|
||||
"Anastasiia Bondarenko (nastasya.bondarenko.97)",Russian,1,1,0,0,0,0,0,"2019-06-07 17:43:08"
|
||||
REMOVED_USER,Russian,1,2,0,6,1,0,1,"2019-12-26 05:37:01"
|
||||
"Luca Gori (grolcu)",Italian,1,2,0,0,0,0,0,"2020-09-26 23:26:15"
|
||||
jonesses,German,1,1,0,1,0,0,1,"2021-01-01 08:03:18"
|
||||
"monir s (ms.alam)",Persian,1,1,0,1,0,0,0,"2022-05-23 06:34:00"
|
||||
"Daniel Luque (LuqueDaniel)",Spanish,1,1,0,0,0,0,0,"2022-06-30 20:37:07"
|
||||
Liboide,Spanish,1,1,0,0,0,0,0,"2022-11-03 23:57:45"
|
||||
"K RITE (kriteshojha5)",Hindi,1,1,0,1,0,0,0,"2024-08-14 17:28:55"
|
||||
"Angelos (angelos1993)",Arabic,1,1,0,0,0,0,0,"2024-11-20 07:38:18"
|
||||
"Bora Atıcı (Brtc)",Turkish,1,2,0,0,0,0,0,"2025-03-07 20:33:19"
|
||||
EmanAmini,,0,0,0,0,0,0,0,"2017-03-31 13:27:43"
|
||||
AnggaRifandi,,0,0,0,0,0,0,0,"2017-03-31 19:28:35"
|
||||
"Lori Amico (lavodkaclyde2323)",Italian,0,0,0,1,0,0,0,"2017-04-09 10:08:13"
|
||||
"Florian Stuhlmann (stuhlmann)",German,0,0,0,10,0,0,0,"2017-04-15 04:04:00"
|
||||
Kamalakannan,,0,0,0,0,0,0,0,"2017-05-14 11:40:23"
|
||||
farbod66,Persian,0,0,0,1,0,0,0,"2018-01-20 11:04:23"
|
||||
"vi ve (VimalV)",,0,0,0,0,0,0,0,"2021-02-08 02:35:45"
|
||||
"Éjbãss Übbeî (littlebittlebottle)",Norwegian,0,0,0,152,0,0,0,"2017-07-05 21:12:02"
|
||||
"LeMeD (LeMeS)",French,0,0,0,2,0,0,0,"2021-02-06 15:35:00"
|
||||
BongTran,Vietnamese,0,0,0,2,0,0,0,"2018-04-24 05:16:07"
|
||||
REMOVED_USER,Czech,0,0,0,18,0,0,0,"2018-03-27 06:19:52"
|
||||
mushin,,0,0,0,0,0,0,0,"2020-02-02 04:08:05"
|
||||
"Mateusz Teteruk (mttet)",Polish,0,0,0,1,0,0,0,"2021-01-23 13:09:59"
|
||||
"Sarah BCNN (fsarahboucenna)",French,0,0,0,16,0,0,0,"2018-02-11 11:07:36"
|
||||
"Dagna Q (dagnaq)",,0,0,0,0,0,0,0,"2017-08-06 01:42:52"
|
||||
"Petros Bleyan (coolbleyan)",Russian,0,0,0,14,0,0,0,"2017-08-18 18:37:18"
|
||||
Itch,,0,0,0,0,0,0,0,"2017-10-16 09:18:42"
|
||||
"Muhammet Furkan ALMACI (furkan.almaci)",Turkish,0,0,0,1,0,0,0,"2017-10-29 13:44:56"
|
||||
"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"
|
||||
REMOVED_USER,Czech,0,0,0,1,0,0,0,"2017-12-24 04:08:27"
|
||||
AhmedDz,Arabic,0,0,0,1,0,0,0,"2017-12-31 10:12:31"
|
||||
"박인호 (wphestiraid)",Korean,0,0,0,2,0,0,0,"2018-01-05 00:33:14"
|
||||
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"
|
||||
"Katherine Alexandra Flórez Ramírez (katherine.florez12)",Spanish,0,0,0,46,0,0,0,"2018-01-20 02:18:32"
|
||||
farbod66,Persian,0,0,0,1,0,0,0,"2018-01-20 11:04:23"
|
||||
droidahmed,Arabic,0,0,0,7,0,0,0,"2018-01-31 02:18:49"
|
||||
"Yasin Okumus (lacivert)",Turkish,0,0,0,1,0,0,0,"2018-02-07 04:13:51"
|
||||
"Sarah BCNN (fsarahboucenna)",French,0,0,0,16,0,0,0,"2018-02-11 11:07:36"
|
||||
T-v-Gerwen,Dutch,0,0,0,47,0,0,0,"2018-03-02 10:26:33"
|
||||
"عبد الناصر سعيد الثبيتي (asaeed)",,0,0,0,0,0,0,0,"2018-03-13 02:09:35"
|
||||
REMOVED_USER,Czech,0,0,0,18,0,0,0,"2018-03-27 06:19:52"
|
||||
BongTran,Vietnamese,0,0,0,2,0,0,0,"2018-04-24 05:16:07"
|
||||
"Ahmed Nazir (ahmednazir333)",,0,0,0,0,0,0,0,"2018-05-06 12:10:27"
|
||||
mdrobulis,,0,0,0,0,0,0,0,"2018-05-24 01:40:42"
|
||||
REMOVED_USER,,0,0,0,0,0,0,0,"2018-08-24 00:17:43"
|
||||
"Sri Harsha Bhogi (sriharshabhogi)",,0,0,0,0,0,0,0,"2018-09-02 05:31:53"
|
||||
philfr49,French,0,0,0,2,0,0,0,"2018-09-03 14:20:32"
|
||||
"Ahnaf Tajwar (atn4404)",,0,0,0,0,0,0,0,"2018-10-16 11:13:30"
|
||||
Elham1361,,0,0,0,0,0,0,0,"2018-10-27 12:01:06"
|
||||
REMOVED_USER,,0,0,0,0,0,0,0,"2018-10-27 15:34:36"
|
||||
"Никита Карамов (nikita.karamoff)",Russian,0,0,0,10,0,0,0,"2018-10-29 03:57:21"
|
||||
martyaberger,,0,0,0,0,0,0,0,"2019-01-01 18:48:08"
|
||||
AsadullahIlyas,,0,0,0,0,0,0,0,"2019-01-04 06:14:15"
|
||||
"Pumpith Ungsupanit (pumpithu)",,0,0,0,0,0,0,0,"2019-01-19 23:47:57"
|
||||
"Nat Fomicheva (natac)",Russian,0,0,0,3,0,0,0,"2019-01-25 14:35:02"
|
||||
ava_rfie,Persian,0,0,0,1,0,0,0,"2019-06-09 16:19:24"
|
||||
"George Merkulov (george142.emarket)",Russian,0,0,0,11,0,0,0,"2019-06-09 19:47:02"
|
||||
sanyoniket,,0,0,0,0,0,0,0,"2019-07-23 12:58:40"
|
||||
"Arttu Ylhävuori (arttu.ylhavuori)",,0,0,0,0,0,0,0,"2019-07-24 15:03:42"
|
||||
"Равиль Мифтахов (ravilmif47)",Russian,0,0,0,1,0,0,0,"2019-08-12 21:58:30"
|
||||
Irsgram,Russian,0,0,0,1,0,0,0,"2019-09-30 16:42:20"
|
||||
"Matus Zdansky (matuszdansky)",,0,0,0,0,0,0,0,"2019-10-20 13:52:24"
|
||||
shuvo786,,0,0,0,0,0,0,0,"2019-11-13 00:18:12"
|
||||
EwanB,,0,0,0,0,0,0,0,"2019-11-19 10:04:38"
|
||||
"Eduard Boboc (edi.boboc33)",Romanian,0,0,0,4,0,0,0,"2019-12-16 09:08:39"
|
||||
Hayder21,,0,0,0,0,0,0,0,"2019-12-31 10:56:24"
|
||||
"Eliška Roubalová (roubaeli)",Czech,0,0,0,6,0,0,0,"2019-12-31 12:47:29"
|
||||
REMOVED_USER,,0,0,0,0,0,0,0,"2020-02-01 03:47:48"
|
||||
mushin,,0,0,0,0,0,0,0,"2020-02-02 04:08:05"
|
||||
valney.faria,"Portuguese, Brazilian",0,0,0,1,0,0,0,"2020-02-02 14:45:02"
|
||||
"Elmo (oberknecht)",,0,0,0,0,0,0,0,"2020-04-16 08:45:50"
|
||||
"Карлен Шаухаев (KarlenShaukhaev)",,0,0,0,0,0,0,0,"2020-04-27 08:53:49"
|
||||
"Edmunds Edmundam (edmundam)",,0,0,0,0,0,0,0,"2020-06-01 14:18:18"
|
||||
"Алтынбек Наурызғали (altinbeknaurizgali)",Russian,0,0,0,1,0,0,0,"2020-08-12 13:03:49"
|
||||
dongchen.yue,German,0,0,0,4,0,0,0,"2020-09-12 15:05:59"
|
||||
rooban23,,0,0,0,0,0,0,0,"2020-09-15 11:49:14"
|
||||
REMOVED_USER,,0,0,0,0,0,0,0,"2020-09-17 09:10:09"
|
||||
"Arjun K. (arjunkdot)",,0,0,0,0,0,0,0,"2020-09-20 11:16:18"
|
||||
"Rivo Zängov (Eraser)",,0,0,0,0,0,0,0,"2020-10-13 04:38:26"
|
||||
"reza golestanzadeh (reza.golestanzadeh)",Persian,0,0,0,1,0,0,0,"2020-10-21 12:07:20"
|
||||
Sandhu564.,,0,0,0,0,0,0,0,"2020-12-14 01:27:45"
|
||||
dimateos,,0,0,0,0,0,0,0,"2021-01-10 06:29:52"
|
||||
"Mateusz Teteruk (mttet)",Polish,0,0,0,1,0,0,0,"2021-01-23 13:09:59"
|
||||
"LeMeD (LeMeS)",French,0,0,0,2,0,0,0,"2021-02-06 15:35:00"
|
||||
"Quentin Hibon (hiq)",,0,0,0,0,0,0,0,"2021-02-07 16:39:31"
|
||||
"vi ve (VimalV)",,0,0,0,0,0,0,0,"2021-02-08 02:35:45"
|
||||
Fazy1380,,0,0,0,0,0,0,0,"2021-04-10 11:02:53"
|
||||
"Saiprasath B (Saiprasath)",,0,0,0,0,0,0,0,"2021-07-11 11:10:41"
|
||||
"darkkingredian (rediancool)",,0,0,0,0,0,0,0,"2021-07-27 16:04:32"
|
||||
"Samuel Przeździęk (samek22)",Polish,0,0,0,1,0,0,0,"2021-08-01 00:49:01"
|
||||
"Manny Farsangy (manifarsangi)",Persian,0,0,0,12,0,0,0,"2021-08-10 05:32:28"
|
||||
"Masataka Yakura (myakura)",Japanese,0,0,0,1,0,0,0,"2021-09-03 22:10:36"
|
||||
"Said Tahsin Dane (tasomaniac)",,0,0,0,0,0,0,0,"2021-09-25 05:31:01"
|
||||
"akmal shafiq (mohdakmalshafiq)",,0,0,0,0,0,0,0,"2021-11-01 01:04:50"
|
||||
catemlitten,Japanese,0,0,0,1,0,0,0,"2021-11-17 15:06:02"
|
||||
HemanthMeda,Telugu,0,0,0,4,0,0,0,"2021-12-01 14:02:14"
|
||||
"Yunsu Kim (yunsukim86)",Korean,0,0,0,2,0,0,0,"2022-01-14 06:33:43"
|
||||
"Sylwuskak (sylwuskak)",Polish,0,0,0,1,0,0,0,"2022-01-25 04:19:53"
|
||||
"Pro AAA (pro1010)",Arabic,0,0,0,1,0,0,0,"2022-02-14 03:32:44"
|
||||
"Baran Özavcı (n2141n)",Turkish,0,0,0,1,0,0,0,"2022-02-26 04:32:51"
|
||||
deepbird,,0,0,0,0,0,0,0,"2022-04-11 03:21:05"
|
||||
ashik8113,,0,0,0,0,0,0,0,"2022-04-13 11:58:26"
|
||||
"manu (manuL96)",,0,0,0,0,0,0,0,"2022-05-06 23:34:55"
|
||||
"Agnel (agnelwaghela)",,0,0,0,0,0,0,0,"2022-06-19 10:32:33"
|
||||
"Ruslan Zaynetdinov (theRuslan)",Russian,0,0,0,6,0,0,0,"2022-07-06 10:48:31"
|
||||
"Marcel (flaced)",German,0,0,0,1,0,0,0,"2022-08-19 15:19:26"
|
||||
pixx1,German,0,0,0,6,0,0,0,"2022-08-22 00:38:13"
|
||||
"Onder Nuray (ondernuray)",,0,0,0,0,0,0,0,"2022-08-30 08:16:27"
|
||||
"Md Faridul Islam (mdfaridulislam509)",,0,0,0,0,0,0,0,"2022-09-04 06:25:20"
|
||||
Felone,,0,0,0,0,0,0,0,"2022-09-10 08:04:02"
|
||||
Sawwwwwplan,,0,0,0,0,0,0,0,"2022-09-10 11:35:14"
|
||||
"Fatima (fatima.a)",Arabic,0,0,0,1,0,0,0,"2022-09-20 09:48:25"
|
||||
DomiAlt,,0,0,0,0,0,0,0,"2022-10-02 15:44:26"
|
||||
Erwindly,Polish,0,0,0,1,0,0,0,"2022-11-01 04:12:58"
|
||||
"Deniz Çelik (DenizCelik)",,0,0,0,0,0,0,0,"2022-11-09 02:13:11"
|
||||
Watashiwanilli,,0,0,0,0,0,0,0,"2022-11-14 10:12:21"
|
||||
"Maxence LIGAN (Daddy_Caramel)",,0,0,0,0,0,0,0,"2022-12-23 04:43:30"
|
||||
wstroobandt,Dutch,0,0,0,1,0,0,0,"2023-01-03 17:52:42"
|
||||
"ニキホロブ蒼井 (abhigyahazra)",,0,0,0,0,0,0,0,"2023-01-08 21:37:53"
|
||||
"Afrim Kamberi (afrimkamberi)",,0,0,0,0,0,0,0,"2023-01-17 05:20:06"
|
||||
ViacheslavLabs,Ukrainian,0,0,0,5,0,0,0,"2023-01-21 15:34:40"
|
||||
Basta,,0,0,0,0,0,0,0,"2023-03-04 16:13:57"
|
||||
raselh,,0,0,0,0,0,0,0,"2023-03-15 03:33:21"
|
||||
"Adrian Miozga (AdrianMiozga)",Polish,0,0,0,13,0,0,0,"2023-03-25 17:00:53"
|
||||
"Atlas Steel (atlas.steel.erbil)",,0,0,0,0,0,0,0,"2023-05-16 05:23:32"
|
||||
"Sathyakumar Ps (sathyakumar63)",,0,0,0,0,0,0,0,"2023-05-24 11:44:23"
|
||||
"Abdul nafih (nafih_zain_)",,0,0,0,0,0,0,0,"2023-05-25 06:24:31"
|
||||
"Bernhard (bernikr)",German,0,0,0,1,0,0,0,"2023-06-12 11:18:18"
|
||||
"Anna Boda (annaboda08)",Hungarian,0,0,0,1,0,0,0,"2023-07-03 13:28:12"
|
||||
"Rubén CH (chruben45)",Spanish,0,0,0,1,0,0,0,"2023-07-24 12:39:51"
|
||||
"Vinicius (exteraDev)",,0,0,0,0,0,0,0,"2023-08-08 15:47:45"
|
||||
"mugdad alhammad (alhammad5057)",,0,0,0,0,0,0,0,"2023-08-13 22:36:01"
|
||||
"Arthur Waldes (arthurwaldes)",,0,0,0,0,0,0,0,"2023-08-22 15:38:12"
|
||||
"Mahmoud Hatem (mahmoudhatem)",Arabic,0,0,0,1,0,0,0,"2023-09-12 05:12:34"
|
||||
"Jacques Francky Salomon (jacquesfranckysalomon)",,0,0,0,0,0,0,0,"2023-10-14 20:55:30"
|
||||
"Mohammad Hashem (hashemchattogram)",,0,0,0,0,0,0,0,"2023-10-27 02:15:39"
|
||||
Aylinddd,Persian,0,0,0,1,0,0,0,"2023-11-07 22:50:37"
|
||||
Dinock,German,0,0,0,1,0,0,0,"2023-11-10 07:08:23"
|
||||
zelfoxx,German,0,0,0,12,0,0,0,"2023-11-22 11:11:44"
|
||||
REMOVED_USER,,0,0,0,0,0,0,0,"2023-11-28 17:42:55"
|
||||
"Dennis Li (Dennis_Li)","Chinese Simplified",0,0,0,1,0,0,0,"2023-12-24 21:12:43"
|
||||
REMOVED_USER,Russian,0,0,0,5,0,0,0,"2024-01-01 17:15:06"
|
||||
"Daniill l (daniill)",,0,0,0,0,0,0,0,"2024-01-12 02:42:52"
|
||||
"NONE NAME (RagnarGraves)",Spanish,0,0,0,1,0,0,0,"2024-02-18 01:39:39"
|
||||
lu21232512,,0,0,0,0,0,0,0,"2024-04-15 12:40:05"
|
||||
"Oscariño (oscarinhooo)",,0,0,0,0,0,0,0,"2024-07-07 08:47:25"
|
||||
"Vladimir Sveshnikov (proloxy)",Russian,0,0,0,6,0,0,0,"2024-07-12 03:27:39"
|
||||
L0f3n,Swedish,0,0,0,2,0,0,0,"2024-08-06 17:13:50"
|
||||
"Christer Fletcher (chrfle)",Swedish,0,0,0,2,0,0,0,"2024-08-15 04:15:49"
|
||||
"Moaid alzawy (dodoalzawy200)",Arabic,0,0,0,1,0,0,0,"2024-09-18 12:17:31"
|
||||
"Eduardo Ferreira (eduu)",,0,0,0,0,0,0,0,"2024-10-27 19:09:20"
|
||||
"عبد الملك بلكم (aboodpvp555)",Arabic,0,0,0,1,0,0,0,"2024-12-12 02:42:14"
|
||||
4Kio,Russian,0,0,0,1,0,0,0,"2024-12-12 12:31:25"
|
||||
"رودينه (rwdynh874)",Arabic,0,0,0,1,0,0,0,"2024-12-24 18:31:33"
|
||||
"zahra ghasemi (z.ghasemizahra)",Persian,0,0,0,1,0,0,0,"2024-12-29 04:36:27"
|
||||
"Mustafa Işıksız (mustafalordon27)",Turkish,0,0,0,1,0,0,0,"2025-01-15 13:52:32"
|
||||
"Ahlem Ben (ahlemben1513)",Arabic,0,0,0,1,0,0,0,"2025-02-12 11:09:57"
|
||||
"Francisco Parra (Frn_7)",Spanish,0,0,0,1,0,0,0,"2025-02-18 22:57:05"
|
||||
"mizumoto (yuta-mizumoto)",Japanese,0,0,0,2,0,0,0,"2025-03-03 18:35:56"
|
||||
|
||||
|
@@ -18,11 +18,10 @@
|
||||
*/
|
||||
|
||||
plugins {
|
||||
id("com.github.triplet.play") version "3.8.6"
|
||||
id("com.android.application") version "8.1.4"
|
||||
id("org.jetbrains.kotlin.android")
|
||||
id("org.jetbrains.kotlin.kapt")
|
||||
id("org.jlleitschuh.gradle.ktlint")
|
||||
alias(libs.plugins.agp)
|
||||
alias(libs.plugins.kotlin.android)
|
||||
alias(libs.plugins.ksp)
|
||||
alias(libs.plugins.ktlint.plugin)
|
||||
}
|
||||
|
||||
tasks.compileLint {
|
||||
@@ -41,15 +40,14 @@ kotlin {
|
||||
}
|
||||
|
||||
android {
|
||||
|
||||
namespace = "org.isoron.uhabits"
|
||||
compileSdk = 34
|
||||
compileSdk = 36
|
||||
|
||||
defaultConfig {
|
||||
versionCode = 20200
|
||||
versionName = "2.2.0"
|
||||
versionCode = 20300
|
||||
versionName = "2.3.0"
|
||||
minSdk = 28
|
||||
targetSdk = 34
|
||||
targetSdk = 36
|
||||
applicationId = "org.isoron.uhabits"
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
@@ -66,7 +64,7 @@ android {
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
getByName("release") {
|
||||
release {
|
||||
isMinifyEnabled = true
|
||||
proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.txt")
|
||||
if (signingConfigs.findByName("release") != null) {
|
||||
@@ -74,8 +72,8 @@ android {
|
||||
}
|
||||
}
|
||||
|
||||
getByName("debug") {
|
||||
isTestCoverageEnabled = true
|
||||
debug {
|
||||
enableUnitTestCoverage = true
|
||||
}
|
||||
}
|
||||
|
||||
@@ -84,64 +82,35 @@ android {
|
||||
targetCompatibility(JavaVersion.VERSION_11)
|
||||
sourceCompatibility(JavaVersion.VERSION_11)
|
||||
}
|
||||
kotlinOptions {
|
||||
jvmTarget = JavaVersion.VERSION_11.toString()
|
||||
}
|
||||
|
||||
buildFeatures {
|
||||
viewBinding = true
|
||||
}
|
||||
kotlinOptions.jvmTarget = JavaVersion.VERSION_11.toString()
|
||||
buildFeatures.viewBinding = true
|
||||
lint.abortOnError = false
|
||||
}
|
||||
|
||||
dependencies {
|
||||
val daggerVersion = "2.48.1"
|
||||
val kotlinVersion = "1.9.21"
|
||||
val kxCoroutinesVersion = "1.7.3"
|
||||
val ktorVersion = "1.6.8"
|
||||
val espressoVersion = "3.5.1"
|
||||
|
||||
androidTestImplementation("androidx.test.espresso:espresso-contrib:$espressoVersion")
|
||||
androidTestImplementation("androidx.test.espresso:espresso-core:$espressoVersion")
|
||||
androidTestImplementation("com.google.dagger:dagger:$daggerVersion")
|
||||
androidTestImplementation("com.linkedin.dexmaker:dexmaker-mockito:2.28.3")
|
||||
androidTestImplementation("io.ktor:ktor-client-mock:$ktorVersion")
|
||||
androidTestImplementation("io.ktor:ktor-jackson:$ktorVersion")
|
||||
androidTestImplementation("androidx.annotation:annotation:1.7.0")
|
||||
androidTestImplementation("androidx.test.ext:junit:1.1.5")
|
||||
androidTestImplementation("androidx.test.uiautomator:uiautomator:2.2.0")
|
||||
androidTestImplementation("androidx.test:rules:1.5.0")
|
||||
androidTestImplementation("org.mockito.kotlin:mockito-kotlin:5.1.0")
|
||||
compileOnly("javax.annotation:jsr250-api:1.0")
|
||||
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.0.4")
|
||||
implementation("com.github.AppIntro:AppIntro:6.3.1")
|
||||
implementation("com.google.code.findbugs:jsr305:3.0.2")
|
||||
implementation("com.google.dagger:dagger:$daggerVersion")
|
||||
implementation("com.google.guava:guava:32.1.3-android")
|
||||
implementation("io.ktor:ktor-client-android:$ktorVersion")
|
||||
implementation("io.ktor:ktor-client-core:$ktorVersion")
|
||||
implementation("io.ktor:ktor-client-jackson:$ktorVersion")
|
||||
implementation("io.ktor:ktor-client-json:$ktorVersion")
|
||||
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlinVersion")
|
||||
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:$kxCoroutinesVersion")
|
||||
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kxCoroutinesVersion")
|
||||
implementation("androidx.appcompat:appcompat:1.6.1")
|
||||
implementation("androidx.legacy:legacy-preference-v14:1.0.0")
|
||||
implementation("androidx.legacy:legacy-support-v4:1.0.0")
|
||||
implementation("com.google.android.material:material:1.10.0")
|
||||
implementation("com.opencsv:opencsv:5.9")
|
||||
compileOnly(libs.jsr250.api)
|
||||
coreLibraryDesugaring(libs.desugar.jdk.libs)
|
||||
implementation(libs.appIntro)
|
||||
implementation(libs.jsr305)
|
||||
implementation(libs.dagger)
|
||||
implementation(libs.guava)
|
||||
implementation(libs.ktor.client.android)
|
||||
implementation(libs.ktor.client.core)
|
||||
implementation(libs.ktor.client.jackson)
|
||||
implementation(libs.ktor.client.json)
|
||||
implementation(libs.kotlin.stdlib.jdk8)
|
||||
implementation(libs.kotlinx.coroutines.android)
|
||||
implementation(libs.kotlinx.coroutines.core)
|
||||
implementation(libs.appcompat)
|
||||
implementation(libs.legacy.preference.v14)
|
||||
implementation(libs.legacy.support.v4)
|
||||
implementation(libs.material)
|
||||
implementation(libs.opencsv)
|
||||
implementation(libs.konfetti.xml)
|
||||
implementation(project(":uhabits-core"))
|
||||
kapt("com.google.dagger:dagger-compiler:$daggerVersion")
|
||||
kaptAndroidTest("com.google.dagger:dagger-compiler:$daggerVersion")
|
||||
testImplementation("com.google.dagger:dagger:$daggerVersion")
|
||||
testImplementation("junit:junit:4.13.2")
|
||||
testImplementation("org.mockito.kotlin:mockito-kotlin:5.1.0")
|
||||
}
|
||||
ksp(libs.dagger.compiler)
|
||||
|
||||
kapt {
|
||||
correctErrorTypes = true
|
||||
}
|
||||
|
||||
play {
|
||||
serviceAccountCredentials.set(file("../.secret/gcp-key.json"))
|
||||
track.set("alpha")
|
||||
androidTestImplementation(libs.bundles.androidTest)
|
||||
testImplementation(libs.bundles.test)
|
||||
}
|
||||
|
||||
8248
uhabits-android/lint-baseline.xml
Normal file
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 8.8 KiB After Width: | Height: | Size: 9.5 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
@@ -132,7 +132,7 @@ object CommonSteps : BaseUserInterfaceTest() {
|
||||
}
|
||||
|
||||
@Throws(Exception::class)
|
||||
fun verifyOpensWebsite(url: String?) {
|
||||
fun verifyOpensWebsite(url: String) {
|
||||
var browserPkg = "org.chromium.webview_shell"
|
||||
if (SDK_INT <= Build.VERSION_CODES.M) {
|
||||
browserPkg = "com.android.browser"
|
||||
|
||||
@@ -26,6 +26,7 @@ import org.isoron.uhabits.BuildConfig
|
||||
import org.isoron.uhabits.R
|
||||
import org.isoron.uhabits.core.models.PaletteColor
|
||||
import org.isoron.uhabits.databinding.AboutBinding
|
||||
import org.isoron.uhabits.utils.applyRootViewInsets
|
||||
import org.isoron.uhabits.utils.currentTheme
|
||||
import org.isoron.uhabits.utils.setupToolbar
|
||||
|
||||
@@ -54,5 +55,6 @@ class AboutView(
|
||||
binding.tvTranslate.setOnClickListener { screen.showTranslationWebsite() }
|
||||
binding.tvVersion.setOnClickListener { screen.onPressDeveloperCountdown() }
|
||||
binding.tvVersion.text = String.format(version, BuildConfig.VERSION_NAME)
|
||||
applyRootViewInsets()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,8 +42,9 @@ class CheckmarkDialog : AppCompatDialogFragment() {
|
||||
val appComponent = (requireActivity().application as HabitsApplication).component
|
||||
val prefs = appComponent.preferences
|
||||
val view = CheckmarkPopupBinding.inflate(LayoutInflater.from(context))
|
||||
val color = requireArguments().getInt("color")
|
||||
arrayOf(view.yesBtn, view.skipBtn).forEach {
|
||||
it.setTextColor(requireArguments().getInt("color"))
|
||||
it.setTextColor(color)
|
||||
}
|
||||
arrayOf(view.noBtn, view.unknownBtn).forEach {
|
||||
it.setTextColor(view.root.sres.getColor(R.attr.contrast60))
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
package org.isoron.uhabits.activities.common.dialogs
|
||||
|
||||
import android.content.Context
|
||||
import com.android.colorpicker.ColorPickerDialog.SIZE_SMALL
|
||||
import org.isoron.platform.gui.toInt
|
||||
import org.isoron.uhabits.R
|
||||
import org.isoron.uhabits.core.models.PaletteColor
|
||||
@@ -39,7 +40,7 @@ class ColorPickerDialogFactory @Inject constructor(@param:ActivityContext privat
|
||||
res.getPalette(),
|
||||
androidColor,
|
||||
4,
|
||||
com.android.colorpicker.ColorPickerDialog.SIZE_SMALL
|
||||
SIZE_SMALL
|
||||
)
|
||||
return dialog
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ import org.isoron.uhabits.R
|
||||
import org.isoron.uhabits.core.models.Entry
|
||||
import org.isoron.uhabits.databinding.CheckmarkPopupBinding
|
||||
import org.isoron.uhabits.utils.InterfaceUtils
|
||||
import org.isoron.uhabits.utils.getCenter
|
||||
import org.isoron.uhabits.utils.requestFocusWithKeyboard
|
||||
import org.isoron.uhabits.utils.sres
|
||||
import java.text.DecimalFormat
|
||||
@@ -35,16 +36,17 @@ class NumberDialog : AppCompatDialogFragment() {
|
||||
val appComponent = (requireActivity().application as HabitsApplication).component
|
||||
val prefs = appComponent.preferences
|
||||
view = CheckmarkPopupBinding.inflate(LayoutInflater.from(context))
|
||||
arrayOf(view.yesBtn, view.skipBtn).forEach {
|
||||
arrayOf(view.yesBtn).forEach {
|
||||
it.setTextColor(requireArguments().getInt("color"))
|
||||
}
|
||||
arrayOf(view.noBtn, view.unknownBtn).forEach {
|
||||
arrayOf(view.noBtn, view.unknownBtnNumber).forEach {
|
||||
it.setTextColor(view.root.sres.getColor(R.attr.contrast60))
|
||||
}
|
||||
arrayOf(view.yesBtn, view.noBtn, view.skipBtn, view.unknownBtn).forEach {
|
||||
arrayOf(view.yesBtn, view.noBtn, view.unknownBtnNumber).forEach {
|
||||
it.typeface = InterfaceUtils.getFontAwesome(requireContext())
|
||||
}
|
||||
if (!prefs.isSkipEnabled) view.skipBtnNumber.visibility = View.GONE
|
||||
if (!prefs.areQuestionMarksEnabled) view.unknownBtnNumber.visibility = View.GONE
|
||||
view.numberButtons.visibility = View.VISIBLE
|
||||
fixDecimalSeparator(view)
|
||||
originalNotes = requireArguments().getString("notes")!!
|
||||
@@ -70,6 +72,12 @@ class NumberDialog : AppCompatDialogFragment() {
|
||||
view.value.setText(DecimalFormat("#.###").format((Entry.SKIP.toDouble() / 1000)))
|
||||
save()
|
||||
}
|
||||
|
||||
view.unknownBtnNumber.setOnClickListener {
|
||||
view.value.setText(DecimalFormat("#.###").format((Entry.UNKNOWN.toDouble() / 1000)))
|
||||
save()
|
||||
}
|
||||
|
||||
view.notes.setOnEditorActionListener { v, actionId, event ->
|
||||
save()
|
||||
true
|
||||
@@ -104,11 +112,16 @@ class NumberDialog : AppCompatDialogFragment() {
|
||||
try {
|
||||
val numberFormat = NumberFormat.getInstance()
|
||||
val valueStr = view.value.text.toString()
|
||||
value = numberFormat.parse(valueStr)!!.toDouble()
|
||||
value = if (valueStr.isNotEmpty()) {
|
||||
numberFormat.parse(valueStr)!!.toDouble()
|
||||
} else {
|
||||
Entry.UNKNOWN.toDouble() / 1000
|
||||
}
|
||||
} catch (e: ParseException) {
|
||||
// NOP
|
||||
}
|
||||
val notes = view.notes.text.toString()
|
||||
val location = view.saveBtn.getCenter()
|
||||
onToggle(value, notes)
|
||||
requireDialog().dismiss()
|
||||
}
|
||||
|
||||
@@ -58,6 +58,7 @@ class RingView : View {
|
||||
private var em = 0f
|
||||
private var text: String?
|
||||
private var textSize: Float
|
||||
private var isStrokedTextEnabled: Boolean = false
|
||||
private var enableFontAwesome = false
|
||||
private var internalDrawingCache: Bitmap? = null
|
||||
private var cacheCanvas: Canvas? = null
|
||||
@@ -131,6 +132,10 @@ class RingView : View {
|
||||
invalidate()
|
||||
}
|
||||
|
||||
fun setIsStrokedTextEnabled(isStroked: Boolean) {
|
||||
this.isStrokedTextEnabled = isStroked
|
||||
}
|
||||
|
||||
override fun onDraw(canvas: Canvas) {
|
||||
super.onDraw(canvas)
|
||||
val activeCanvas: Canvas?
|
||||
@@ -159,6 +164,12 @@ class RingView : View {
|
||||
pRing!!.xfermode = null
|
||||
pRing!!.color = color
|
||||
pRing!!.textSize = textSize
|
||||
|
||||
if (isStrokedTextEnabled) {
|
||||
pRing!!.style = Paint.Style.STROKE
|
||||
pRing!!.strokeWidth = textSize / 15f
|
||||
}
|
||||
|
||||
if (enableFontAwesome) pRing!!.typeface = getFontAwesome(context)
|
||||
activeCanvas.drawText(
|
||||
text!!,
|
||||
|
||||
@@ -22,7 +22,6 @@ package org.isoron.uhabits.activities.habits.edit
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.res.ColorStateList
|
||||
import android.content.res.Resources
|
||||
import android.graphics.Color
|
||||
import android.os.Bundle
|
||||
import android.text.Html
|
||||
import android.text.Spanned
|
||||
@@ -53,7 +52,8 @@ import org.isoron.uhabits.core.models.PaletteColor
|
||||
import org.isoron.uhabits.core.models.Reminder
|
||||
import org.isoron.uhabits.core.models.WeekdayList
|
||||
import org.isoron.uhabits.databinding.ActivityEditHabitBinding
|
||||
import org.isoron.uhabits.utils.ColorUtils
|
||||
import org.isoron.uhabits.utils.applyRootViewInsets
|
||||
import org.isoron.uhabits.utils.applyToolbarInsets
|
||||
import org.isoron.uhabits.utils.dismissCurrentAndShow
|
||||
import org.isoron.uhabits.utils.formatTime
|
||||
import org.isoron.uhabits.utils.toFormattedString
|
||||
@@ -94,6 +94,8 @@ class EditHabitActivity : AppCompatActivity() {
|
||||
themeSwitcher.apply()
|
||||
|
||||
binding = ActivityEditHabitBinding.inflate(layoutInflater)
|
||||
binding.root.applyRootViewInsets()
|
||||
binding.toolbar.applyToolbarInsets()
|
||||
setContentView(binding.root)
|
||||
|
||||
if (intent.hasExtra("habitId")) {
|
||||
@@ -352,8 +354,7 @@ class EditHabitActivity : AppCompatActivity() {
|
||||
androidColor = themeSwitcher.currentTheme.color(color).toInt()
|
||||
binding.colorButton.backgroundTintList = ColorStateList.valueOf(androidColor)
|
||||
if (!themeSwitcher.isNightMode) {
|
||||
val darkerAndroidColor = ColorUtils.mixColors(Color.BLACK, androidColor, 0.15f)
|
||||
window.statusBarColor = darkerAndroidColor
|
||||
window.statusBarColor = androidColor
|
||||
binding.toolbar.setBackgroundColor(androidColor)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,6 +45,7 @@ import org.isoron.uhabits.inject.ActivityContextModule
|
||||
import org.isoron.uhabits.inject.DaggerHabitsActivityComponent
|
||||
import org.isoron.uhabits.inject.HabitsActivityComponent
|
||||
import org.isoron.uhabits.inject.HabitsApplicationComponent
|
||||
import org.isoron.uhabits.utils.applyRootViewInsets
|
||||
import org.isoron.uhabits.utils.dismissCurrentDialog
|
||||
import org.isoron.uhabits.utils.restartWithFade
|
||||
|
||||
@@ -100,6 +101,7 @@ class ListHabitsActivity : AppCompatActivity(), Preferences.Listener {
|
||||
menu = component.listHabitsMenu
|
||||
Thread.setDefaultUncaughtExceptionHandler(BaseExceptionHandler(this))
|
||||
component.listHabitsBehavior.onStartup()
|
||||
rootView.applyRootViewInsets()
|
||||
setContentView(rootView)
|
||||
}
|
||||
|
||||
@@ -178,7 +180,7 @@ class ListHabitsActivity : AppCompatActivity(), Preferences.Listener {
|
||||
val timestamp = intent.extras?.getLong("timestamp")
|
||||
if (habitId != null && timestamp != null) {
|
||||
val habit = appComponent.habitList.getById(habitId)!!
|
||||
component.listHabitsBehavior.onEdit(habit, Timestamp(timestamp))
|
||||
component.listHabitsBehavior.onEdit(habit, Timestamp(timestamp), 0f, 0f)
|
||||
}
|
||||
}
|
||||
intent = null
|
||||
|
||||
@@ -23,6 +23,7 @@ import android.content.Context
|
||||
import android.view.ViewGroup.LayoutParams.MATCH_PARENT
|
||||
import android.widget.FrameLayout
|
||||
import android.widget.RelativeLayout
|
||||
import nl.dionsegijn.konfetti.xml.KonfettiView
|
||||
import org.isoron.uhabits.R
|
||||
import org.isoron.uhabits.activities.common.views.ScrollableChart
|
||||
import org.isoron.uhabits.activities.common.views.TaskProgressBar
|
||||
@@ -69,6 +70,9 @@ class ListHabitsRootView @Inject constructor(
|
||||
val listView: HabitCardListView = habitCardListViewFactory.create()
|
||||
val llEmpty = EmptyListView(context)
|
||||
val tbar = buildToolbar()
|
||||
val konfettiView = KonfettiView(context).apply {
|
||||
translationZ = 10f
|
||||
}
|
||||
val progressBar = TaskProgressBar(context, runner)
|
||||
val hintView: HintView
|
||||
val header = HeaderView(context, preferences, midnightTimer)
|
||||
@@ -80,6 +84,7 @@ class ListHabitsRootView @Inject constructor(
|
||||
|
||||
val rootView = RelativeLayout(context).apply {
|
||||
background = sres.getDrawable(R.attr.windowBackgroundColor)
|
||||
addAtTop(konfettiView)
|
||||
addAtTop(tbar)
|
||||
addBelow(header, tbar)
|
||||
addBelow(listView, header, height = MATCH_PARENT)
|
||||
|
||||
@@ -25,6 +25,9 @@ import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import dagger.Lazy
|
||||
import nl.dionsegijn.konfetti.core.Party
|
||||
import nl.dionsegijn.konfetti.core.Position
|
||||
import nl.dionsegijn.konfetti.core.emitter.Emitter
|
||||
import org.isoron.platform.gui.toInt
|
||||
import org.isoron.uhabits.R
|
||||
import org.isoron.uhabits.activities.common.dialogs.CheckmarkDialog
|
||||
@@ -63,6 +66,7 @@ import org.isoron.uhabits.intents.IntentFactory
|
||||
import org.isoron.uhabits.tasks.ExportDBTaskFactory
|
||||
import org.isoron.uhabits.tasks.ImportDataTask
|
||||
import org.isoron.uhabits.tasks.ImportDataTaskFactory
|
||||
import org.isoron.uhabits.utils.ColorUtils
|
||||
import org.isoron.uhabits.utils.copyTo
|
||||
import org.isoron.uhabits.utils.currentTheme
|
||||
import org.isoron.uhabits.utils.dismissCurrentAndShow
|
||||
@@ -72,6 +76,7 @@ import org.isoron.uhabits.utils.showSendEmailScreen
|
||||
import org.isoron.uhabits.utils.showSendFileScreen
|
||||
import java.io.File
|
||||
import java.io.IOException
|
||||
import java.util.concurrent.TimeUnit
|
||||
import javax.inject.Inject
|
||||
|
||||
const val RESULT_IMPORT_DATA = 101
|
||||
@@ -218,6 +223,30 @@ class ListHabitsScreen
|
||||
activity.showSendFileScreen(filename)
|
||||
}
|
||||
|
||||
override fun showConfetti(color: PaletteColor, x: Float, y: Float) {
|
||||
if (x == 0f && y == 0f) return
|
||||
if (preferences.isConfettiAnimationDisabled) return
|
||||
val baseColor = themeSwitcher.currentTheme!!.color(color).toInt()
|
||||
rootView.get().konfettiView.start(
|
||||
Party(
|
||||
speed = 0f,
|
||||
maxSpeed = 16f,
|
||||
damping = 0.9f,
|
||||
spread = 360,
|
||||
angle = 0,
|
||||
colors = listOf(
|
||||
ColorUtils.changeHue(baseColor, 180f),
|
||||
ColorUtils.changeHue(baseColor, 20f),
|
||||
ColorUtils.changeHue(baseColor, -20f),
|
||||
baseColor
|
||||
),
|
||||
position = Position.Absolute(x, y),
|
||||
emitter = Emitter(duration = 25, TimeUnit.MILLISECONDS).max(25),
|
||||
timeToLive = 0
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
override fun showSettingsScreen() {
|
||||
val intent = intentFactory.startSettingsActivity(activity)
|
||||
activity.startActivityForResult(intent, REQUEST_SETTINGS)
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
package org.isoron.uhabits.activities.habits.list.views
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.PointF
|
||||
import android.graphics.text.LineBreaker.BREAK_STRATEGY_BALANCED
|
||||
import android.os.Build
|
||||
import android.os.Build.VERSION.SDK_INT
|
||||
@@ -154,11 +155,22 @@ class HabitCardView(
|
||||
checkmarkPanel = checkmarkPanelFactory.create().apply {
|
||||
onToggle = { timestamp, value, notes ->
|
||||
triggerRipple(timestamp)
|
||||
habit?.let { behavior.onToggle(it, timestamp, value, notes) }
|
||||
val location = getAbsoluteButtonLocation(timestamp)
|
||||
habit?.let {
|
||||
behavior.onToggle(
|
||||
it,
|
||||
timestamp,
|
||||
value,
|
||||
notes,
|
||||
location.x,
|
||||
location.y
|
||||
)
|
||||
}
|
||||
}
|
||||
onEdit = { timestamp ->
|
||||
triggerRipple(timestamp)
|
||||
habit?.let { behavior.onEdit(it, timestamp) }
|
||||
val location = getAbsoluteButtonLocation(timestamp)
|
||||
habit?.let { behavior.onEdit(it, timestamp, location.x, location.y) }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -166,7 +178,8 @@ class HabitCardView(
|
||||
visibility = GONE
|
||||
onEdit = { timestamp ->
|
||||
triggerRipple(timestamp)
|
||||
habit?.let { behavior.onEdit(it, timestamp) }
|
||||
val location = getAbsoluteButtonLocation(timestamp)
|
||||
habit?.let { behavior.onEdit(it, timestamp, location.x, location.y) }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -206,12 +219,37 @@ class HabitCardView(
|
||||
}
|
||||
|
||||
fun triggerRipple(timestamp: Timestamp) {
|
||||
val location = getRelativeButtonLocation(timestamp)
|
||||
triggerRipple(location.x, location.y)
|
||||
}
|
||||
|
||||
private fun getRelativeButtonLocation(timestamp: Timestamp): PointF {
|
||||
val today = DateUtils.getTodayWithOffset()
|
||||
val offset = timestamp.daysUntil(today) - dataOffset
|
||||
val button = checkmarkPanel.buttons[offset]
|
||||
val panel = when (habit!!.isNumerical) {
|
||||
true -> numberPanel
|
||||
false -> checkmarkPanel
|
||||
}
|
||||
val button = panel.buttons[offset]
|
||||
val y = button.height / 2.0f
|
||||
val x = checkmarkPanel.x + button.x + (button.width / 2).toFloat()
|
||||
triggerRipple(x, y)
|
||||
val x = panel.x + button.x + (button.width / 2).toFloat()
|
||||
return PointF(x, y)
|
||||
}
|
||||
|
||||
private fun getAbsoluteButtonLocation(timestamp: Timestamp): PointF {
|
||||
val containerLocation = IntArray(2)
|
||||
this.getLocationOnScreen(containerLocation)
|
||||
val relButtonLocation = getRelativeButtonLocation(timestamp)
|
||||
val windowInsets = rootWindowInsets
|
||||
val statusBarHeight = if (SDK_INT <= Build.VERSION_CODES.VANILLA_ICE_CREAM) {
|
||||
windowInsets?.systemWindowInsetTop ?: 0
|
||||
} else {
|
||||
0
|
||||
}
|
||||
return PointF(
|
||||
containerLocation[0].toFloat() + relButtonLocation.x,
|
||||
containerLocation[1].toFloat() + relButtonLocation.y - statusBarHeight
|
||||
)
|
||||
}
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
|
||||
@@ -141,7 +141,7 @@ class HeaderView(
|
||||
|
||||
val y1 = rect.centerY() - 0.25 * em
|
||||
val y2 = rect.centerY() + 1.25 * em
|
||||
val lines = DateUtils.formatHeaderDate(day).toUpperCase().split("\n")
|
||||
val lines = DateUtils.formatHeaderDate(day).uppercase().split("\n")
|
||||
canvas.drawText(lines[0], rect.centerX(), y1.toFloat(), paint)
|
||||
canvas.drawText(lines[1], rect.centerX(), y2.toFloat(), paint)
|
||||
day.add(GregorianCalendar.DAY_OF_MONTH, -1)
|
||||
|
||||
@@ -49,6 +49,7 @@ import org.isoron.uhabits.core.ui.screens.habits.show.ShowHabitMenuPresenter
|
||||
import org.isoron.uhabits.core.ui.screens.habits.show.ShowHabitPresenter
|
||||
import org.isoron.uhabits.core.ui.views.OnDateClickedListener
|
||||
import org.isoron.uhabits.intents.IntentFactory
|
||||
import org.isoron.uhabits.utils.applyRootViewInsets
|
||||
import org.isoron.uhabits.utils.currentTheme
|
||||
import org.isoron.uhabits.utils.dismissCurrentAndShow
|
||||
import org.isoron.uhabits.utils.dismissCurrentDialog
|
||||
@@ -109,6 +110,7 @@ class ShowHabitActivity : AppCompatActivity(), CommandRunner.Listener {
|
||||
)
|
||||
|
||||
view.setListener(presenter)
|
||||
view.applyRootViewInsets()
|
||||
setContentView(view)
|
||||
}
|
||||
|
||||
|
||||
@@ -25,12 +25,14 @@ import android.widget.FrameLayout
|
||||
import org.isoron.uhabits.core.ui.screens.habits.show.ShowHabitPresenter
|
||||
import org.isoron.uhabits.core.ui.screens.habits.show.ShowHabitState
|
||||
import org.isoron.uhabits.databinding.ShowHabitBinding
|
||||
import org.isoron.uhabits.utils.applyToolbarInsets
|
||||
import org.isoron.uhabits.utils.setupToolbar
|
||||
|
||||
class ShowHabitView(context: Context) : FrameLayout(context) {
|
||||
private val binding = ShowHabitBinding.inflate(LayoutInflater.from(context))
|
||||
|
||||
init {
|
||||
binding.toolbar.applyToolbarInsets()
|
||||
addView(binding.root)
|
||||
}
|
||||
|
||||
@@ -52,7 +54,6 @@ class ShowHabitView(context: Context) : FrameLayout(context) {
|
||||
binding.barCard.setState(data.bar)
|
||||
if (data.isNumerical) {
|
||||
binding.overviewCard.visibility = GONE
|
||||
binding.streakCard.visibility = GONE
|
||||
} else {
|
||||
binding.targetCard.visibility = GONE
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ import org.isoron.uhabits.R
|
||||
import org.isoron.uhabits.activities.AndroidThemeSwitcher
|
||||
import org.isoron.uhabits.core.models.PaletteColor
|
||||
import org.isoron.uhabits.databinding.SettingsActivityBinding
|
||||
import org.isoron.uhabits.utils.applyRootViewInsets
|
||||
import org.isoron.uhabits.utils.setupToolbar
|
||||
|
||||
class SettingsActivity : AppCompatActivity() {
|
||||
@@ -42,6 +43,7 @@ class SettingsActivity : AppCompatActivity() {
|
||||
color = PaletteColor(11),
|
||||
theme = themeSwitcher.currentTheme
|
||||
)
|
||||
binding.root.applyRootViewInsets()
|
||||
setContentView(binding.root)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ import androidx.appcompat.app.AppCompatActivity
|
||||
import org.isoron.uhabits.HabitsApplication
|
||||
import org.isoron.uhabits.activities.AndroidThemeSwitcher
|
||||
import org.isoron.uhabits.core.models.HabitMatcher
|
||||
import org.isoron.uhabits.utils.applyRootViewInsets
|
||||
|
||||
class EditSettingActivity : AppCompatActivity() {
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
@@ -45,6 +46,7 @@ class EditSettingActivity : AppCompatActivity() {
|
||||
onSave = controller::onSave,
|
||||
args = args
|
||||
)
|
||||
view.applyRootViewInsets()
|
||||
setContentView(view)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,6 +36,13 @@ object ColorUtils {
|
||||
return a or r or g or b
|
||||
}
|
||||
|
||||
fun changeHue(color: Int, delta: Float): Int {
|
||||
val hsv = FloatArray(3)
|
||||
Color.colorToHSV(color, hsv)
|
||||
hsv[0] = (hsv[0] + delta).mod(360f)
|
||||
return Color.HSVToColor(hsv)
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun setAlpha(color: Int, newAlpha: Float): Int {
|
||||
val intAlpha = (newAlpha * 255).toInt()
|
||||
|
||||
@@ -26,6 +26,7 @@ import android.content.Intent
|
||||
import android.graphics.Canvas
|
||||
import android.graphics.Color
|
||||
import android.graphics.Paint
|
||||
import android.graphics.PointF
|
||||
import android.graphics.drawable.ColorDrawable
|
||||
import android.os.Handler
|
||||
import android.os.SystemClock
|
||||
@@ -45,6 +46,8 @@ import androidx.annotation.StringRes
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import androidx.core.content.FileProvider
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import org.isoron.platform.gui.toInt
|
||||
import org.isoron.uhabits.HabitsApplication
|
||||
@@ -135,7 +138,11 @@ fun Activity.startActivitySafely(intent: Intent) {
|
||||
}
|
||||
}
|
||||
|
||||
fun Activity.showSendEmailScreen(@StringRes toId: Int, @StringRes subjectId: Int, content: String?) {
|
||||
fun Activity.showSendEmailScreen(
|
||||
@StringRes toId: Int,
|
||||
@StringRes subjectId: Int,
|
||||
content: String?
|
||||
) {
|
||||
val to = this.getString(toId)
|
||||
val subject = this.getString(subjectId)
|
||||
this.startActivity(
|
||||
@@ -175,10 +182,10 @@ fun View.setupToolbar(
|
||||
} else {
|
||||
theme.color(color).toInt()
|
||||
}
|
||||
val darkerColor = ColorUtils.mixColors(toolbarColor, Color.BLACK, 0.75f)
|
||||
toolbar.background = ColorDrawable(toolbarColor)
|
||||
toolbar.applyToolbarInsets()
|
||||
val activity = context as AppCompatActivity
|
||||
activity.window.statusBarColor = darkerColor
|
||||
activity.window.statusBarColor = toolbarColor
|
||||
activity.setSupportActionBar(toolbar)
|
||||
activity.supportActionBar?.setDisplayHomeAsUpEnabled(displayHomeAsUpEnabled)
|
||||
}
|
||||
@@ -232,3 +239,33 @@ fun View.requestFocusWithKeyboard() {
|
||||
dispatchTouchEvent(MotionEvent.obtain(time, time, MotionEvent.ACTION_UP, 0f, 0f, 0))
|
||||
}, 250)
|
||||
}
|
||||
|
||||
fun View.getCenter(): PointF {
|
||||
val viewLocation = IntArray(2)
|
||||
this.getLocationOnScreen(viewLocation)
|
||||
viewLocation[0] += this.width / 2
|
||||
viewLocation[1] -= this.height / 2
|
||||
return PointF(viewLocation[0].toFloat(), viewLocation[1].toFloat())
|
||||
}
|
||||
|
||||
fun View.applyRootViewInsets() {
|
||||
ViewCompat.setOnApplyWindowInsetsListener(this) { view, insets ->
|
||||
val systemBarsInsets = insets.getInsets(WindowInsetsCompat.Type.systemBars())
|
||||
val displayCutoutInsets = insets.getInsets(WindowInsetsCompat.Type.displayCutout())
|
||||
val left = maxOf(systemBarsInsets.left, displayCutoutInsets.left)
|
||||
val right = maxOf(systemBarsInsets.right, displayCutoutInsets.right)
|
||||
view.setPadding(left, 0, right, 0)
|
||||
view.background = ColorDrawable(Color.BLACK)
|
||||
insets
|
||||
}
|
||||
}
|
||||
|
||||
fun View.applyToolbarInsets() {
|
||||
ViewCompat.setOnApplyWindowInsetsListener(this) { view, insets ->
|
||||
val systemBarsInsets = insets.getInsets(WindowInsetsCompat.Type.systemBars())
|
||||
val displayCutoutInsets = insets.getInsets(WindowInsetsCompat.Type.displayCutout())
|
||||
val top = maxOf(systemBarsInsets.top, displayCutoutInsets.top)
|
||||
view.setPadding(0, top, 0, 0)
|
||||
insets
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,7 +75,8 @@ class HistoryWidget(
|
||||
firstWeekday = prefs.firstWeekday,
|
||||
series = listOf(),
|
||||
defaultSquare = HistoryChart.Square.OFF,
|
||||
notesIndicators = listOf()
|
||||
notesIndicators = listOf(),
|
||||
padding = 2.5
|
||||
)
|
||||
}
|
||||
).apply {
|
||||
|
||||
@@ -68,13 +68,13 @@ class CheckmarkWidgetView : HabitWidgetView {
|
||||
val fgColor: Int
|
||||
setShadowAlpha(0x4f)
|
||||
when (entryState) {
|
||||
YES_MANUAL, SKIP -> {
|
||||
YES_MANUAL, SKIP, YES_AUTO -> {
|
||||
bgColor = activeColor
|
||||
fgColor = res.getColor(R.attr.contrast0)
|
||||
backgroundPaint!!.color = bgColor
|
||||
frame!!.setBackgroundDrawable(background)
|
||||
}
|
||||
YES_AUTO, NO, UNKNOWN -> {
|
||||
NO, UNKNOWN -> {
|
||||
bgColor = res.getColor(R.attr.cardBgColor)
|
||||
fgColor = res.getColor(R.attr.contrast60)
|
||||
}
|
||||
@@ -87,12 +87,23 @@ class CheckmarkWidgetView : HabitWidgetView {
|
||||
ring.setColor(fgColor)
|
||||
ring.setBackgroundColor(bgColor)
|
||||
ring.setText(text)
|
||||
ring.setIsStrokedTextEnabled(strokedTextEnabled)
|
||||
label.text = name
|
||||
label.setTextColor(fgColor)
|
||||
requestLayout()
|
||||
postInvalidate()
|
||||
}
|
||||
|
||||
private val strokedTextEnabled: Boolean
|
||||
get() = if (isNumerical) {
|
||||
false
|
||||
} else {
|
||||
when (entryState) {
|
||||
YES_AUTO -> true
|
||||
else -> false
|
||||
}
|
||||
}
|
||||
|
||||
private val text: String
|
||||
get() = if (isNumerical) {
|
||||
(max(0, entryValue) / 1000.0).toShortString()
|
||||
|
||||
@@ -69,7 +69,7 @@ abstract class HabitWidgetView : FrameLayout {
|
||||
val shadowRadius = dpToPixels(context, 2f).toInt()
|
||||
val shadowOffset = dpToPixels(context, 1f).toInt()
|
||||
val shadowColor = Color.argb(shadowAlpha, 0, 0, 0)
|
||||
val cornerRadius = dpToPixels(context, 12f)
|
||||
val cornerRadius = dpToPixels(context, 18f)
|
||||
val radii = FloatArray(8)
|
||||
Arrays.fill(radii, cornerRadius)
|
||||
val shape = RoundRectShape(radii, null, null)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
يساعدك Loop Habit Tracker على إنشاء عادات إيجابية طويلة المدى والحفاظ عليها في حياتك. تعطيكم الرسوم البيانية والإحصاءات التفصيلية صورة واضحة للكيفية التي تحسنت بها عاداتك مع مرور الوقت. التطبيق خالٍ تمامًا من الإعلانات ومفتوح المصدر ويحترم خصوصيتك.
|
||||
يساعدك Loop Habit Tracker على إنشاء عادات إيجابية طويلة المدى والحفاظ عليها في حياتك. تمنحك المخططات والإحصاءات التفصيلية صورة واضحة عن مدى تحسن عاداتك بمرور الوقت. التطبيق خالٍ تمامًا من الإعلانات ومفتوح المصدر ويحترم خصوصيتك.
|
||||
|
||||
<b>واجهة جميلة وبسيطة</b>
|
||||
يحتوي Loop على واجهة أنيقة وبسيطة وسهلة الاستخدام للغاية ، حتى للمستخدمين لأول مرة. تم تحسين التطبيق ليكون ذي سرعة عالية ، ويعمل التطبيق بشكل جيد حتى على الهواتف القديمة.
|
||||
@@ -19,11 +19,11 @@
|
||||
إذا كنت تريد إجراء مزيد من التحليل لبياناتك ، أو نقلها إلى خدمة أخرى ، فإن Loop تسمح لك بتصديرها إلى جداول البيانات (CSV) أو إلى ملف قاعدة بيانات (SQLite). بالنسبة للمستخدمين المحترفين، يمكن إضافة علامات الاختيار من خلال تطبيقات أخرى ، مثل تاسكر.
|
||||
|
||||
<b>لا قيود</b>
|
||||
تتبع العديد من العادات كما يحلو لك. Loop imposes no artificial limits on how many habits you can have. All features are available to all users. There are no in-app purchases.
|
||||
تتبع العديد من العادات كما يحلو لك. لا تفرض Loop قيودًا مصطنعة على عدد العادات التي يمكنك ممارستها. جميع الميزات متاحة لجميع المستخدمين. لا توجد عمليات شراء داخل التطبيق.
|
||||
|
||||
Arabic
|
||||
<b>خالي تماما من الإعلانات ومفتوح المصدر</b>
|
||||
لا توجد إعلانات أو إشعارات مزعجة أو أذونات تدخلية في هذا التطبيق ، ولن تكون هناك أبدًا. التطبيق مفتوح المصدر بالكامل (GPLv3).
|
||||
|
||||
<b>يعمل دون اتصال ويحترم خصوصيتك</b>
|
||||
Loop لا يتطلب اتصالاً بالإنترنت أو تسجيل حساب عبر الإنترنت. لا يتم إرسال البيانات السرية الخاصة بك إلى أي شخص. لا يتمكن المطورين ولا أي طرف ثالث من الوصول إليها.
|
||||
لا يتطلب Loop اتصالاً بالإنترنت أو تسجيل حساب عبر الإنترنت. لا يتم إرسال البيانات السرية الخاصة بك إلى أي شخص. لا يتمكن المطورين ولا أي طرف ثالث من الوصول إليها.
|
||||
|
||||
|
||||
@@ -1,2 +1 @@
|
||||
اخلق عادات جيدة وتابع تطورها مع مرور الوقت
|
||||
(خالية من الإعلانات)
|
||||
ربي عادات جيدة وتتبع تقدمها مع مرور الوقت (دون إعلانات)
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
Loop Следене на навици ви помага да създавате и поддържате дългосрочни положителни навици във вашия живот. Подробни диаграми и статистики ви дават ясна картина как вашите навици са се подобрили във времето. Приложението е изцяло без реклами, с отворен код и зачита вашата поверителност.
|
||||
|
||||
<b>Красив, минималистичен и лек интерфейс</b>
|
||||
Loop има елегантен и минималистичен интерфейс, който е много лесен за използване, дори за нови потребители. Силно оптимизирано за скорост, приложението работи добре дори и на по-стари телефони.
|
||||
|
||||
<b>Сила на навиците</b>
|
||||
Loop има усъвършенствана формула за изчисляване на силата на вашите навици. Всяко повторение прави навика ви по-силен, а всеки пропуснат ден го прави по-слаб. Въпреки това, няколко пропуснати дни след продължителна поредица няма напълно да унищожат вашия напредък, за разлика от много други приложения, които следят поредици.
|
||||
|
||||
<b>Гъвкави графици</b>
|
||||
В допълнение на ежедневни навици, Loop поддържа навици с по-сложни графици, като 3 пъти седмично или през ден.
|
||||
|
||||
<b>Напомняния</b>
|
||||
Планирайте напомняния за да ви подсещат за вашите навици. Всеки навик може да си има собствено напомняне в избрано време от деня. Лесно потвърдете или отхвърлете вашия навик директно от известието.
|
||||
|
||||
<b>Приспособления</b>
|
||||
Напомняйте си за вашите навици винаги когато си отключите телефона. Цветни приспособления ви позволяват да следите навиците си директно от вашия начален екран без дори да отваряте приложението.
|
||||
|
||||
<b>Поемете контрол над вашите данни</b>
|
||||
Ако искате допълнително да анализирате вашите данни или да ги прехвърлите към друга услуга, Loop ви позволява да ги експортирате като електронни таблици (CSV) или като файл за база данни (SQLite). Напреднали потребители могат да добавят отметки от други приложения, като Tasker.
|
||||
|
||||
<b>Без ограничения</b>
|
||||
Следете толкова навика, колкото пожелаете. Loop не налага изкуствени ограничения на бройката навици, които може да имате. Всички функции са достъпни за всички потребители. Няма покупки в приложението.
|
||||
|
||||
<b>Изцяло без реклами и с отворен код</b>
|
||||
В това приложение няма реклами, досадни известия или натрапчиви разрешения, и никога няма да има. Приложението е изцяло с отворен код (GPLv3).
|
||||
|
||||
<b>Работи офлайн и уважава вашата поверителност</b>
|
||||
Loop не изисква интернет връзка или регистрация на онлайн акаунт Вашите поверителни данни никога не се изпращат на никого. Нито разработчиците, нито трети лица имат достъп до тях.
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
Създайте добри навици и следете напредъка им във времето (без реклами)
|
||||
@@ -1,6 +1,6 @@
|
||||
Loop Habit Tracker hilft dir dabei gute Gewohnheiten zu erlangen und sie ein Leben lang zu pflegen. Detaillierte Diagramme und Statistiken geben Aufschluss darüber, wie sich die Gewohnheiten über die Zeit verändern und verbessern. Die App ist werbefrei, open source und respektiert die Privatsphäre.
|
||||
Loop Habit Tracker hilft dir dabei, positive Gewohnheiten in dein Leben zu integrieren und sie dauerhaft zu verfolgen. Detaillierte Diagramme und Statistiken geben Aufschluss darüber, wie sich die Gewohnheiten über die Zeit verändern und verbessern. Die App ist werbefrei, open source und respektiert die Privatsphäre.
|
||||
|
||||
<b>Schöne, minimalistisch und übersichtliche Benutzeroberfläche</b>
|
||||
<b>Schöne, minimalistische und übersichtliche Benutzeroberfläche</b>
|
||||
Loop hat eine elegante und minimalistische Benutzeroberfläche, die selbst für Erstnutzer eine einfache Verwendung möglich macht. Dank vieler Geschwindigkeitsoptimierungen funktioniert die App auch auf älteren Geräten einwandfrei.
|
||||
|
||||
<b>Gewohnheitserfolge</b>
|
||||
@@ -10,20 +10,20 @@ Loop berechnet mit einer ausgereiften Berechnungsart die Stärke der Gewohnheite
|
||||
Zusätzlich zu täglichen Gewohnheiten bietet Loop auch eine komplexere Zeitplanung an, wie zum Beispiel drei mal pro Woche oder jeden zweiten Tag.
|
||||
|
||||
<b>Erinnerungen</b>
|
||||
Benachrichtigungen können zeitlich konfiguriert und als Erinnerung verwendet werden. Für jede Gewohnheit kann eine individuelle Erinnerungen zu einer einstellbaren Tageszeit aktiviert werden. Die Gewohnheiten können dann einfach über die Benachrichtigung überprüft oder verworfen werden.
|
||||
Benachrichtigungen können zeitlich konfiguriert und als Erinnerung verwendet werden. Für jede Gewohnheit kann eine individuelle Erinnerung zu einer einstellbaren Tageszeit aktiviert werden. Die Gewohnheit kann dann einfach über die Benachrichtigung abgehakt oder verworfen werden.
|
||||
|
||||
<b>Widgets</b>
|
||||
Denken Sie immer an Erinnerungen, Sie ihr Telefon entsperren. Mit farbenfrohen Widgets behalten Sie Ihre Gewohnheiten immer im Überblick, direkt auf dem Homescreen ihn die App zu öffnen.
|
||||
Lassen Sie sich an Ihre Gewohnheiten erinnern, wenn Sie Ihr Telefon entsperren. Farbenfrohe Widgets ermöglichen es Ihnen, Ihre Gewohnheiten direkt von Ihrem Startbildschirm aus zu verfolgen, ohne die App zu öffnen.
|
||||
|
||||
<b>Behalten Sie die Kontrolle über Ihre Daten</b>
|
||||
Daten können zur weiteren Analyse, oder auch zum Verschieben zu einem weiteren Anbieter, als Tabelle (CSV) oder Datenbank (SQLite) exportiert werden. Power User können Häkchen durch andere Apps hinzufügen, wie zum Beispiel Tasker.
|
||||
Wenn Sie Ihre Daten weiter analysieren oder zu einem anderen Dienst verschieben möchten, können Sie sie mit Loop als Tabelle (CSV) oder Datenbankdatei (SQLite) exportieren. Power-User können Häkchen durch andere Apps hinzufügen, wie zum Beispiel Tasker.
|
||||
|
||||
<b>Keine Einschränkungen</b>
|
||||
Erstellen Sie so viele Gewohnheiten, wie Sie möchten. Loop setzt keinerlei Einschränkungen was die Anzahl der erstellbaren Gewohnheiten betrifft. Alle Funktionen sind für alle User verfügbar. Es gibt keine In-App-Käufe.
|
||||
|
||||
<b>Komplett werbefrei und open source</b>
|
||||
Loop beinhaltet keine Werbung, lästige Benachrichtigungen oder unnötige Berechtigungen - und wir so wird es auch immer bleiben. Die App ist komplett open source (GPLv3).
|
||||
Es gibt keinerlei Werbung, lästige Benachrichtigungen oder aufdringliche Berechtigungen in dieser App – und das wird auch immer so bleiben. Die App ist komplett open source (GPLv3).
|
||||
|
||||
<b>Funktioniert offline und respektiert Ihre Privatsphäre</b>
|
||||
Loop benötigt keine Internetverbindung oder Online-Registrierung. Ihre privaten Daten werden nie an Dritte weitergegeben. Weder die Entwickler, noch Dritte haben Zugriff darauf.
|
||||
Loop benötigt keine Internetverbindung oder Online-Registrierung. Ihre privaten Daten werden nie an Dritte weitergegeben. Weder die Entwickler noch Dritte haben darauf Zugriff.
|
||||
|
||||
|
||||
@@ -1 +1 @@
|
||||
Erlange gute Gewohnheiten und verfolge dessen Fortschritte (ohne Werbung)
|
||||
Schaffe gute Gewohnheiten und verfolge ihre Fortschritte (ohne Werbung)
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
Το Loop Habit Tracker σας βοηθά να δημιουργήσετε και να διατηρήσετε μακροπρόθεσμες θετικές συνήθειες στη ζωή σας. Λεπτομερή διαγράμματα και στατιστικά στοιχεία σας δίνουν μια σαφή εικόνα του πώς οι συνήθειές σας έχουν βελτιωθεί με την πάροδο του χρόνου. Η εφαρμογή είναι εντελώς χωρίς διαφημίσεις, ανοιχτού κώδικα και σέβεται το απόρρητό σας.
|
||||
|
||||
<b>Όμορφη, μινιμαλιστική και ελαφριά διεπαφή</b>
|
||||
Η εφαρμογή έχει ένα κομψό και μινιμαλιστικό περιβάλλον που είναι πολύ εύκολο στη χρήση, ακόμη και για τους χρήστες πρώτης φοράς.
|
||||
|
||||
Σκόρ Συνηθειών
|
||||
Η εφαρμογή έχει μια προηγμένη φόρμουλα για τον υπολογισμό της δύναμης των συνηθειών σας. Κάθε επανάληψη καθιστά τη συνήθειά σας ισχυρότερη και κάθε χαμένη μέρα καθιστά ασθενέστερη. Λίγες χαμένες ημέρες μετά από μια μεγάλη περίοδο, ωστόσο, δεν θα καταστρέψουν εντελώς την πρόοδό σας, σε αντίθεση με πολλές άλλες εφαρμογές τύπου don't-break-the-chain.
|
||||
|
||||
<b>Εύελικτα Προγράμματα</b>
|
||||
Εκτός από τις καθημερινές συνήθειες, το Loop υποστηρίζει συνήθειες με πιο σύνθετα προγράμματα, όπως 3 φορές την εβδομάδα ή κάθε δεύτερη μέρα.
|
||||
|
||||
<b>Υπενθυμίσεις</b>
|
||||
Προγραμματισμός ειδοποιήσεων για να σας υπενθυμίσουν τις συνήθειές σας. Κάθε συνήθεια μπορεί να έχει τη δική της υπενθύμιση, σε μια επιλεγμένη ώρα της ημέρας. Ελέγξτε εύκολα ή απορρίψτε τη συνήθειά σας απευθείας από την ειδοποίηση.
|
||||
|
||||
<b>Widget</b>
|
||||
Υπενθύμιση των συνηθειών σας κάθε φορά που ξεκλειδώνετε το τηλέφωνό σας. Πολύχρωμα widgets σας επιτρέπουν να παρακολουθείτε τις συνήθειές σας απευθείας από την αρχική οθόνη σας, χωρίς καν να ανοίξετε την εφαρμογή.
|
||||
|
||||
<b>Παρτε τον έλεγχο των δεδομένων σας</b>
|
||||
Αν θέλετε να αναλύσετε περαιτέρω τα δεδομένα σας, ή να τα μετακινήσετε σε άλλη υπηρεσία, Το Loop σας επιτρέπει να το εξάγετε σε υπολογιστικά φύλλα (CSV) ή σε αρχείο βάσης δεδομένων (SQLite). Για τους προχωρημένους χρήστες , τα checkmark ελέγχου μπορούν να προστεθούν και μέσω άλλων εφαρμογών, όπως το Tasker.
|
||||
|
||||
<b>Χωρίς περιορισμούς</b>
|
||||
Παρακολουθήστε όσες συνήθειες επιθυμείτε. Το Loop δεν επιβάλλει τεχνητά όρια στο πόσες συνήθειες μπορείτε να έχετε. Όλες οι δυνατότητες είναι διαθέσιμες σε όλους τους χρήστες. Δεν υπάρχουν αγορές εντός της εφαρμογής.
|
||||
|
||||
<b>Πλήρως χωρίς διαφημίσεις και ανοικτού κώδικα</b>
|
||||
Δεν υπάρχουν διαφημίσεις, ενοχλητικές ειδοποιήσεις ή παρεμβατικά δικαιώματα σε αυτήν την εφαρμογή, και δεν θα υπάρξουν ποτέ. Η εφαρμογή είναι εντελώς ανοιχτού κώδικα (GPLv3).
|
||||
|
||||
<b>Δουλέυει και χωρίς σύνδεση και σέβεται την ιδιωτικότητα σας </b>
|
||||
Η εφαρμογή δεν απαιτεί σύνδεση στο διαδίκτυο ή εγγραφή online λογαριασμού. Τα εμπιστευτικά δεδομένα σας δεν αποστέλλονται ποτέ σε κανέναν. Ούτε οι προγραμματιστές ούτε τρίτοι έχουν πρόσβαση σε αυτό.
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
Loop Habit Tracker helps you create and maintain long-term positive habits in your life. Detailed charts and statistics give you a clear picture of how your habits have improved over time. The app is completely ad-free, open source and it respects your privacy.
|
||||
|
||||
<b>Beautiful, minimalistic and lightweight interface</b>
|
||||
Loop has an elegant and minimalistic interface that is very easy to use, even for first-time users. Highly optimized for speed, the app works well even on older phones.
|
||||
|
||||
<b>Habit score</b>
|
||||
Loop has an advanced formula for calculating the strength of your habits. Every repetition makes your habit stronger and every missed day makes it weaker. A few missed days after a long streak, however, will not completely destroy your progress, unlike many other don't-break-the-chain apps.
|
||||
|
||||
<b>Flexible schedules</b>
|
||||
In addition to daily habits, Loop supports habits with more complex schedules, such as 3 times per week or every other day.
|
||||
|
||||
<b>Reminders</b>
|
||||
Schedule notifications to remind you of your habits. Each habit can have its own reminder, at a chosen time of the day. Easily check or dismiss your habit directly from the notification.
|
||||
|
||||
<b>Widgets</b>
|
||||
Be reminded of your habits whenever you unlock your phone. Colorful widgets allow you to track your habits directly from your home screen, without even opening the app.
|
||||
|
||||
<b>Take control of your data</b>
|
||||
If you want to further analyze your data, or move it to another service, Loop allows you to export it to spreadsheets (CSV) or to a database file (SQLite). For power users, checkmarks can be added through other apps, such as Tasker.
|
||||
|
||||
<b>No limitations</b>
|
||||
Track as many habits as you wish. Loop imposes no artificial limits on how many habits you can have. All features are available to all users. There are no in-app purchases.
|
||||
|
||||
<b>Completely ad-free and open source</b>
|
||||
There are no advertisements, annoying notifications or intrusive permissions in this app, and there will never be. The app is completely open-source (GPLv3).
|
||||
|
||||
<b>Works offline and respects your privacy</b>
|
||||
Loop doesn't require an Internet connection or online account registration. Your confidential data is never sent to anyone. Neither the developers nor any third-parties have access to it.
|
||||
|
||||
@@ -16,7 +16,7 @@ Programa notificaciones para recordarte tus hábitos. Cada hábito puede tener s
|
||||
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>
|
||||
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.
|
||||
Si quieres analizar más a fondo tus 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>
|
||||
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.
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
Loop Habit Tracker auttaa kehittämään ja ylläpitämään pitkäkestoisia hyviä rutiineja. Yksityiskohtaiset kaaviot ja tilastot antavat selkeän kuvan siitä, miten rutiinisi ovat parantuneet ajan kuluessa. Sovellus on mainokseton, sen lähdekoodi on avoin, ja sovellus kunnioittaa yksityisyyttäsi.
|
||||
|
||||
<b>Kaunis, minimalistinen ja kevyt käyttöliittymä</b>
|
||||
Loopin käyttöliittymä on tyylikäs ja minimalistinen. Se on helppokäyttöinen jopa uusille käyttäjille. Sovellus on optimoitu nopeaksi ja toimii hyvin myös vanhoissa puhelimissa.
|
||||
|
||||
<b>Rutiinipisteet</b>
|
||||
Loopilla on kehittynyt laskentakaava joka mittaa rutiiniesi vahvuutta. Jokainen toisto tekee rutiinistasi vahvemman ja jokainen ohitettu päivä tekee siitä heikomman. Muutama ohitettu päivä pitkän putken jälkeen ei kuitenkaan täysin tuhoa edistystäsi, toisin kuin monissa muissa älä-riko-putkea-sovelluksissa.
|
||||
|
||||
<b>Joustavat aikataulut</b>
|
||||
Päivittäisten rutiinien lisäksi Loop tukee rutiineja joilla on monimutkaisempi aikataulu, esimerkiksi kolmesti viikossa tai joka toinen päivä.
|
||||
|
||||
<b>Muistutukset</b>
|
||||
Ajasta ilmoituksia muistuttamaan sinua rutiineistasi. Jokaisella rutiinilla on oma muistutuksensa, valittuna päivän hetkenä. Kuittaa rutiinisi tehdyksi tai merkitse se hylätyksi helposti ilmoituksesta.
|
||||
|
||||
<b>Widgetit</b>
|
||||
Näe muistutuksia rutiineistasi aina kun avaat puhelimesi. Värikkäät widgetit auttavat sinua seuraamaan rutiinejasi suoraan kotinäkymästäsi, ilman että avaat sovellusta.
|
||||
|
||||
<b>Hallitse tietojasi</b>
|
||||
Jos haluat analysoida tietojasi, tai siirtää ne toiseen palveluun, Loop antaa sinun viedä ne laskentataulukoihin (CSV) tai tietokantatiedostoon (SQLite). Tehokäyttäjät voivat lisätä merkintöjä muiden sovellusten, kuten Taskerin, kautta.
|
||||
|
||||
<b>Ei rajoituksia</b>
|
||||
Seuraa niin montaa rutiinia kuin haluat. Loop ei aseta keinotekoisia rajoituksia rutiiniesi määrälle. Kaikki toiminnot ovat kaikkien käytettävissä. Sovelluksen sisäisiä ostoja ei ole.
|
||||
|
||||
<b>Täysin mainokseton ja avointa lähdekoodia</b>
|
||||
Sovelluksessa ei ole mainoksia, häiritseviä ilmoituksia tai turhia käyttöoikeusvaatimuksia, eikä tule koskaan olemaan. Sovellus on täysin avointa lähdekoodia (GPLv3).
|
||||
|
||||
<b>Toimii offline-tilassa ja kunnioittaa yksityisyyttäsi</b>
|
||||
Loop ei vaadi Internet-yhteyttä tai online-tilin rekisteröintiä. Luottamuksellisia tietojasi ei koskaan lähetetä kenellekään. Kehittäjillä ja kolmansilla osapuolilla ei ole pääsyä niihin.
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
Loop Habit Tracker helps you create and maintain long-term positive habits in your life. Detailed charts and statistics give you a clear picture of how your habits have improved over time. The app is completely ad-free, open source and it respects your privacy.
|
||||
|
||||
<b>Beautiful, minimalistic and lightweight interface</b>
|
||||
Loop has an elegant and minimalistic interface that is very easy to use, even for first-time users. Highly optimized for speed, the app works well even on older phones.
|
||||
|
||||
<b>Habit score</b>
|
||||
Loop has an advanced formula for calculating the strength of your habits. Every repetition makes your habit stronger and every missed day makes it weaker. A few missed days after a long streak, however, will not completely destroy your progress, unlike many other don't-break-the-chain apps.
|
||||
|
||||
<b>Flexible schedules</b>
|
||||
In addition to daily habits, Loop supports habits with more complex schedules, such as 3 times per week or every other day.
|
||||
|
||||
<b>Reminders</b>
|
||||
Schedule notifications to remind you of your habits. Each habit can have its own reminder, at a chosen time of the day. Easily check or dismiss your habit directly from the notification.
|
||||
|
||||
<b>Widgets</b>
|
||||
Be reminded of your habits whenever you unlock your phone. Colorful widgets allow you to track your habits directly from your home screen, without even opening the app.
|
||||
|
||||
<b>Take control of your data</b>
|
||||
If you want to further analyze your data, or move it to another service, Loop allows you to export it to spreadsheets (CSV) or to a database file (SQLite). For power users, checkmarks can be added through other apps, such as Tasker.
|
||||
|
||||
<b>No limitations</b>
|
||||
Track as many habits as you wish. Loop imposes no artificial limits on how many habits you can have. All features are available to all users. There are no in-app purchases.
|
||||
|
||||
<b>Completely ad-free and open source</b>
|
||||
There are no advertisements, annoying notifications or intrusive permissions in this app, and there will never be. The app is completely open-source (GPLv3).
|
||||
|
||||
<b>Works offline and respects your privacy</b>
|
||||
Loop doesn't require an Internet connection or online account registration. Your confidential data is never sent to anyone. Neither the developers nor any third-parties have access to it.
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
Create good habits and track their progress over time (ad-free)
|
||||
1
uhabits-android/src/main/play/listings/gu-rIN/title.txt
Normal file
@@ -0,0 +1 @@
|
||||
Loop Habit Tracker
|
||||
@@ -0,0 +1,29 @@
|
||||
लूप हैबिट ट्रैकर आपको अपने जीवन में सकारात्मक आदतों को बनाने और बनाए रखने में मदद करता है। विस्तृत चार्ट और आंकड़े आपको एक स्पष्ट तस्वीर देते हैं कि समय के साथ आपकी आदतों में कैसे सुधार हुआ है। ब्लोकडा नि: शुल्क और खुला स्रोत है और यह आपकी गोपनीयता का सम्मान करता है
|
||||
|
||||
<b>सुंदर, न्यूनतर और हल्का इंटरफ़ेस</b>
|
||||
लूप में एक सुरुचिपूर्ण और न्यूनतर इंटरफ़ेस है जिसका उपयोग करना बहुत आसान है, यहां तक कि पहली बार उपयोगकर्ताओं के लिए भी। गति के लिए अत्यधिक अनुकूलित, ऐप पुराने फोन पर भी अच्छा काम करता है।
|
||||
|
||||
<b>आदत स्कोर</b>
|
||||
लूप में आपकी आदतों की ताकत की गणना के लिए एक उन्नत सूत्र है। हर दोहराव आपकी आदत को मजबूत बनाता है और हर छूटा हुआ दिन इसे कमजोर बनाता है। हालांकि, एक लंबी स्ट्रीक के बाद कुछ छूटे हुए दिन आपकी प्रगति को पूरी तरह से नष्ट नहीं करेंगे, कई अन्य नॉट-ब्रेक-द-चेन ऐप्स के विपरीत।
|
||||
|
||||
<b>लचीली अनुसूचियां</b>
|
||||
दैनिक आदतों के अलावा, लूप अधिक जटिल शेड्यूल वाली आदतों का समर्थन करता है, जैसे प्रति सप्ताह 3 बार या हर दूसरे दिन।
|
||||
|
||||
<b>अनुस्मारक</b>
|
||||
आपको अपनी आदतों की याद दिलाने के लिए नोटिफिकेशन शेड्यूल करें। हर आदत का अपना रिमाइंडर सेट किया जा सकता है, वह भी अपने चाहे किसी भी दिन के किसी भी समय पर। अधिसूचना पट्टी यानी "नोटिफिकेशन बार" से आप "हैबिट" (आदत/व्यवहार) की पूर्वनियोजित कार्यप्रणाली को "खारिज" (डिसमिस/dismiss) या "हां हो गया है" (चैक/check) बड़ी आसानी से कर सकते है।
|
||||
|
||||
विजेट
|
||||
क्या आप जब भी अपने फोन को खोले, तब आपको अपनी पूर्वनिर्धारित आदतों/व्यवहारों को आसानी से याद दिलाया जाए? रंग बिरंगे वी आकर्षक "विजेट" प्रणाली की सुविधा से आप बड़ी आसानी से अपने मोबाइल के होम स्क्रीन से अपनी आदतों वी व्यावहार संबंधित जानकारी ले सके है, वह भी ऐप को खोले बिना।
|
||||
|
||||
अपनी डाटा के बारे में नियंत्रण संबंधित जानकारी वी सुविधाएं।
|
||||
यदि आप अपने डेटा का और विश्लेषण करना चाहते हैं, या इसे किसी अन्य सेवा में ले जाना चाहते हैं, तो लूप आपको इसे स्प्रेडशीट (CSV) या डेटाबेस फ़ाइल (SQLite) में निर्यात करने की अनुमति देता है। "पावर" उपयोगकर्ताओं के लिए, अन्य ऐप्स जैसे "टास्कर ऐप" के माध्यम से चेकमार्क जोड़े जा सकते हैं।
|
||||
|
||||
सीमाहीन
|
||||
जितनी चाहें उतनी आदतों वी व्यवहारों को ट्रैक करें। यह "लूप ऐप" आपकी कितनी आदतें हो सकती हैं, इस पर कोई कृत्रिम सीमा नहीं लगाता है। इसलिए जितनी चाहे, उतनी आदतों को बनाएं और ट्रैक करें। सभी सुविधाएँ सभी उपयोगकर्ताओं के लिए उपलब्ध हैं। इन-ऐप खरीदारी नहीं है।
|
||||
|
||||
<b>पूरी तरह से विज्ञापन-मुक्त और खुला स्रोत</b>
|
||||
इस ऐप में कोई विज्ञापन, कष्टप्रद सूचनाएं या घुसपैठ की अनुमति नहीं है, और कभी नहीं होगी। ऐप पूरी तरह से ओपन-सोर्स (GPLv3) है।
|
||||
|
||||
<b>ऑफ़लाइन काम करता है और आपकी गोपनीयता का सम्मान करता है</b>
|
||||
लूप को इंटरनेट कनेक्शन या ऑनलाइन खाता पंजीकरण की आवश्यकता नहीं है। आपका गोपनीय डेटा कभी किसी को नहीं भेजा जाता है। न तो डेवलपर्स और न ही किसी तीसरे पक्ष के पास इसकी डाटा की पहुंच है।
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
अच्छी आदतें बनाएं और समय के साथ उनकी प्रगति को ट्रैक करें (विज्ञापन-मुक्त)
|
||||
@@ -0,0 +1,29 @@
|
||||
Loop Habit Tracker helps you create and maintain long-term positive habits in your life. Detailed charts and statistics give you a clear picture of how your habits have improved over time. The app is completely ad-free, open source and it respects your privacy.
|
||||
|
||||
<b>Beautiful, minimalistic and lightweight interface</b>
|
||||
Loop has an elegant and minimalistic interface that is very easy to use, even for first-time users. Highly optimized for speed, the app works well even on older phones.
|
||||
|
||||
<b>Habit score</b>
|
||||
Loop has an advanced formula for calculating the strength of your habits. Every repetition makes your habit stronger and every missed day makes it weaker. A few missed days after a long streak, however, will not completely destroy your progress, unlike many other don't-break-the-chain apps.
|
||||
|
||||
<b>Flexible schedules</b>
|
||||
In addition to daily habits, Loop supports habits with more complex schedules, such as 3 times per week or every other day.
|
||||
|
||||
<b>Reminders</b>
|
||||
Schedule notifications to remind you of your habits. Each habit can have its own reminder, at a chosen time of the day. Easily check or dismiss your habit directly from the notification.
|
||||
|
||||
<b>Widgets</b>
|
||||
Be reminded of your habits whenever you unlock your phone. Colorful widgets allow you to track your habits directly from your home screen, without even opening the app.
|
||||
|
||||
<b>Take control of your data</b>
|
||||
If you want to further analyze your data, or move it to another service, Loop allows you to export it to spreadsheets (CSV) or to a database file (SQLite). For power users, checkmarks can be added through other apps, such as Tasker.
|
||||
|
||||
<b>No limitations</b>
|
||||
Track as many habits as you wish. Loop imposes no artificial limits on how many habits you can have. All features are available to all users. There are no in-app purchases.
|
||||
|
||||
<b>Completely ad-free and open source</b>
|
||||
There are no advertisements, annoying notifications or intrusive permissions in this app, and there will never be. The app is completely open-source (GPLv3).
|
||||
|
||||
<b>Works offline and respects your privacy</b>
|
||||
Loop doesn't require an Internet connection or online account registration. Your confidential data is never sent to anyone. Neither the developers nor any third-parties have access to it.
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
Create good habits and track their progress over time (ad-free)
|
||||
@@ -0,0 +1,29 @@
|
||||
Loop Habit Tracker helps you create and maintain long-term positive habits in your life. Detailed charts and statistics give you a clear picture of how your habits have improved over time. The app is completely ad-free, open source and it respects your privacy.
|
||||
|
||||
<b>Beautiful, minimalistic and lightweight interface</b>
|
||||
Loop has an elegant and minimalistic interface that is very easy to use, even for first-time users. Highly optimized for speed, the app works well even on older phones.
|
||||
|
||||
<b>Habit score</b>
|
||||
Loop has an advanced formula for calculating the strength of your habits. Every repetition makes your habit stronger and every missed day makes it weaker. A few missed days after a long streak, however, will not completely destroy your progress, unlike many other don't-break-the-chain apps.
|
||||
|
||||
<b>Flexible schedules</b>
|
||||
In addition to daily habits, Loop supports habits with more complex schedules, such as 3 times per week or every other day.
|
||||
|
||||
<b>Reminders</b>
|
||||
Schedule notifications to remind you of your habits. Each habit can have its own reminder, at a chosen time of the day. Easily check or dismiss your habit directly from the notification.
|
||||
|
||||
<b>Widgets</b>
|
||||
Be reminded of your habits whenever you unlock your phone. Colorful widgets allow you to track your habits directly from your home screen, without even opening the app.
|
||||
|
||||
<b>Take control of your data</b>
|
||||
If you want to further analyze your data, or move it to another service, Loop allows you to export it to spreadsheets (CSV) or to a database file (SQLite). For power users, checkmarks can be added through other apps, such as Tasker.
|
||||
|
||||
<b>No limitations</b>
|
||||
Track as many habits as you wish. Loop imposes no artificial limits on how many habits you can have. All features are available to all users. There are no in-app purchases.
|
||||
|
||||
<b>Completely ad-free and open source</b>
|
||||
There are no advertisements, annoying notifications or intrusive permissions in this app, and there will never be. The app is completely open-source (GPLv3).
|
||||
|
||||
<b>Works offline and respects your privacy</b>
|
||||
Loop doesn't require an Internet connection or online account registration. Your confidential data is never sent to anyone. Neither the developers nor any third-parties have access to it.
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
Create good habits and track their progress over time (ad-free)
|
||||
1
uhabits-android/src/main/play/listings/is-rIS/title.txt
Normal file
@@ -0,0 +1 @@
|
||||
Loop Habit Tracker
|
||||
@@ -1,29 +1,29 @@
|
||||
יישום ”Loop לניהול הרגלים“ מסייע לך ביצירה ובשימור הרגלים טובים וארוכי טווח. תרשימים וסטטיסטיקה מפורטים נותנים לך תמונה ברורה כיצד ההרגלים שלך השתפרו לאורך זמן. היישום נטול פרסומות לחלוטין, קוד המקור שלו פתוח והוא מכבד את הפרטיות שלך.
|
||||
יישום ”Loop לניהול הרגלים“ מסייע לך להתחיל ולשמר הרגלים טובים לאורך זמן. תרשימים וסטטיסטיקה מפורטים מראים לך בדיוק כיצד ההרגלים שלך משתפרים לאורך הזמן. היישום כולו נטול פרסומות, קוד המקור שלו פתוח והוא מכבד את הפרטיות שלך.
|
||||
|
||||
<b>ממשק יפה, חסכוני וקליל</b>
|
||||
הממשק של Loop אלגנטי, חסכוני וקל לשימוש אפילו בפעם הראשונה. היישום מותאם במיוחד למהירות, ועובד היטב גם בטלפונים ישנים.
|
||||
הממשק של Loop אלגנטי, חסכוני וקל לשימוש אפילו בפעם הראשונה. היישום מותאם לפעול במהירות, ועובד היטב גם בטלפונים ישנים.
|
||||
|
||||
<b>ציון הרגל</b>
|
||||
ל־Loop יש נוסחה מתקדמת לחישוב חוזק ההרגלים שלך. כל חזרה על ההרגל מחזקת אותו, וכל יום שהוחמץ מחליש אותו. כמה ימים שהוחמצו לאחר רצף ארוך, לעומת זאת, לא יהרסו לחלוטין את ההתקדמות, בניגוד ליישומים רבים אחרים מסוג ”לא לשבור את השרשרת“.
|
||||
<b>ציונים של הרגלים</b>
|
||||
יש ל־Loop נוסחה מתקדמת לחישוב חוזק ההרגלים שלך. כל חזרה על ההרגל מחזקת אותו, וכל יום שהוחמץ מחליש אותו. למרות זאת, כמה ימים שהוחמצו לאחר רצף ארוך לא יהרסו לחלוטין את ההתקדמות, בניגוד ליישומים רבים אחרים מסוג ”לא לשבור את השרשרת“.
|
||||
|
||||
<b>לוחות זמנים גמישים</b>
|
||||
בנוסף להרגלים יומיומיים, Loop תומך בהרגלים עם לוחות זמנים מורכבים יותר, כמו 3 פעמים בשבוע או ”יום כן ויום לא“.
|
||||
|
||||
<b>תזכורות</b>
|
||||
אפשר לתזמן התראות קבועות עם תזכורות לגבי ההרגלים שלך. לכל הרגל יכולה להיות תזכורת משלו, בשעה שנבחרה ביום. אפשר לסמן או לדחות את עשיית ההרגל ישירות מההתראה בקלות.
|
||||
אפשר לתזמן התראות קבועות עם תזכורות לגבי ההרגלים שלך. לכל הרגל אפשר להגדיר תזכורת, ואפשר לבחור כל שעה ביום. אפשר לסמן או לדחות את הרגלים בקלות וישירות מתוך ההתראה.
|
||||
|
||||
<b>יישומונים</b>
|
||||
להיזכר בהרגלים בכל שחרור נעילת הטלפון. יישומונים צבעוניים שמאפשרים לך לעקוב אחר ההרגלים ישירות ממסך הבית, מבלי לפתוח אפילו את היישום.
|
||||
אפשר לקבל תזכורות לגבי ההרגלים בכל פתיחה של נעילת הטלפון. עם היישומונים הצבעוניים של Loop אפשר לעקוב אחר ההרגלים ישירות ממסך הבית, ומבלי לפתוח את היישום.
|
||||
|
||||
<b>השליטה בנתונים היא בידיים שלך</b>
|
||||
אם ברצונך לנתח יותר לעומק את הנתונים שלך, או להעבירם לשירות אחר, Loop מאפשרת לך לייצא אותם לגיליונות אלקטרוניים (CSV) או לקובץ מסד נתונים (SQLite). למשתמשים מתקדמים, אפשר לסמן הרגלים דרך יישומים אחרים, כגון Tasker.
|
||||
<b>שליטה בנתונים שלך</b>
|
||||
אם ברצונך לחקור את הנתונים שלך לעומק, או להעביר אותם לשירות אחר, Loop מאפשר לך לייצא אותם לגיליונות אלקטרוניים (CSV) או לקובץ מסד נתונים (SQLite). משתמשים מתקדמים יכולים לסמן הרגלים אפילו דרך יישומים אחרים, כמו Tasker.
|
||||
|
||||
<b>בלי הגבלות</b>
|
||||
אפשר לעקוב אחר כמה הרגלים שרוצים. Loop לא מגבילה את כמות ההרגלים שאפשר להוסיף. כל התכונות זמינות לכל המשתמשים. אין רכישות מתוך היישום.
|
||||
אפשר לעקוב אחר כמה הרגלים שרוצים. ב־Loop אפשר ליצור כמה הרגלים שרוצים, ללא הגבלה. כל התכונות זמינות לכל המשתמשים. אין רכישות מתוך היישום.
|
||||
|
||||
<b>היישום נטול פרסומות במלואו וקוד המקור שלו פתוח</b>
|
||||
אין שום פרסומות, התראות מעצבנות או הרשאות פולשניות ביישום הזה, ולעולם לא יהיו. קוד היישום הזה פתוח לחלוטין (GPLv3).
|
||||
<b>היישום כולו נטול פרסומות וקוד המקור שלו פתוח</b>
|
||||
אין שום פרסומות, התראות מעצבנות או הרשאות פולשניות ביישום הזה, ולעולם לא יהיו. קוד המקור של היישום הזה פתוח לחלוטין (GPLv3).
|
||||
|
||||
<b>עובד במצב לא מקוון ומכבד את פרטיותך</b>
|
||||
ל־Loop לא נחוצים חיבור לאינטרנט או הרשמה לחשבון מקוון. הנתונים הסודיים שלך לא נשלחים לאחרים כלל. גם למפתחים וגם לגורמי צד שלישי כלשהם אין גישה אליהם.
|
||||
לא צריך חיבור לאינטרנט או חשבון מקוון כדי להשתמש ב־Loop. הנתונים הפרטיים שלך לא נשלחים לאף אחד. גם למפתחים ולכל מיני גורמי צד שלישי אין גישה אליהם.
|
||||
|
||||
|
||||
@@ -1 +1 @@
|
||||
良い習慣を作り、その進捗を長期にわたって追跡できる便利なツール(広告なし)
|
||||
よい習慣を身につけ、その進捗を記録しましょう (広告なし)
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
Loop ჩვევების ტრეკერია, რომელიც გეხმარება ყოველდღიურობისთვის სასარგებლო ჩვევები გამოიმუშავო და ხანგრძლივად შეინარჩუნო. დეტალური დიაგრამებითა და სტატისტიკით წარმოდგენა გექმნება, თუ როგორ ვითარდება და მყარდება შენი ჩვევები. აპლიკაცია ურეკლამო და ღია კოდის მქონეა და ის იცავს შენს კონფიდენციალურობას.
|
||||
|
||||
<b>ლამაზი, მინიმალისტური და მსუბუქი ინტერფეისი</b>
|
||||
Loop-ს ელეგანტური და მინიმალისტური ინტერფეისი აქვს, რომელიც დამწყები მომხმარებლებისთვისაც კი ადვილად მოსახმარია. აპლიკაცია დახვეწილია სიჩქარისთვის, ამიტომ ძველ მოწყობილობებზეც კარგად მუშაობს.
|
||||
|
||||
<b>ჩვევების შეფასება</b>
|
||||
Loop დახვეწილი ფორმულის მეშვეობით ითვლის ჩვევების გაჯდომის დონეს. ყოველი გამეორებით იზრდება ჩვევის გაჯდომის დონე, გაცდენილი დღეების შემთხვევაში კი მცირდება. თუმცა ხანგრძლივი სერიის შემდეგ რამდენიმე დღის გაცდენით არ მოიშლება შენი მთლიანი პროგრესი, ბევრი სხვა „შეინარჩუნე-სერია“ სახის აპლიკაციისგან განსხვავებით.
|
||||
|
||||
<b>მორგებადი განრიგი</b>
|
||||
ყოველდღიური ჩვევების გარდა Loop-ში ასევე ისეთი ჩვევების შექმნა შეიძლება, რომლებსაც უფრო რთული განრიგი აქვთ. მაგალითად: „კვირაში 3-ჯერ“ ან „ყოველ მე-2 დღეს“.
|
||||
|
||||
<b>შემახსენებელი შეტყობინებები</b>
|
||||
დააყენე შეტყობინებები, რათა ჩვევები გაგახსენდეს. ყველა ჩვევას შეუძლია საკუთარი შემახსენებელი შეტყობინება ჰქონდეს დღის სასურველ დროს. ჩვევასთან თოლიის (✓) ჩანიშვნა შეტყობინებიდანვე შეგიძლია.
|
||||
|
||||
<b>ვიჯეტები</b>
|
||||
გაიხსენე ჩვევები ტელეფონის ყოველ განბლოკვაზე. ფერადი ვიჯეტებით გეძლევა იმის საშუალება, რომ ჩვევები საწყისი ეკრანიდანვე, აპლიკაციის გახსნის გარეშე, მართო.
|
||||
|
||||
<b>უხელმძღვანელე შენს მონაცემებს</b>
|
||||
მონაცემთა უფრო დეტალური ანალიზის გაკეთების ან სხვა სერვისზე გადატანის სურვილის არსებობის შემთხვევაში Loop საშუალებას გაძლევს, ისინი ელექტრონული ცხრილის (CSV) ან მონაცემთა ბაზის ფაილად (SQLite) დააექსპორტო. გამოცდილ მომხმარებლებს შეუძლიათ თოლიები (✓) ჩაამატონ სხვა აპლიკაციებით, როგორიცაა, მაგალითად, Tasker.
|
||||
|
||||
<b>შეუზღუდავი</b>
|
||||
იმდენ ჩვევას ადევნე თვალი, რამდენსაც ისურვებ. Loop არ ზღუდავს ჩვევების შესაძლო რაოდენობას. ყველა ფუნქცია ხელმისაწვდომია ნებისმიერი მომხმარებელისთვის. არ აქვს აპლიკაციის შიდა შენაძენები.
|
||||
|
||||
<b>ურეკლამო და ღია კოდით</b>
|
||||
აპლიკაციას არ აქვს და არც არასდროს ექნება რეკლამები, შემაწუხებელი შეტყობინებები, ან მოთხოვნა ზედმეტ ნებართვაზე. აპლიკაციის საწყისი კოდი მთლიანად ღიაა. (GPLv3)
|
||||
|
||||
<b>მუშაობს ხაზგარეშე რეჟიმში და პატივს სცემს შენს კონფიდენციალურობას</b>
|
||||
Loop არ საჭიროებს ინტერნეტკავშირს ან ონლაინ ანგარიშის რეგისტრაციას. შენი პირადი მონაცემები არასდროს გაზიარდება მესამე პირებთან. მონაცემებზე წვდომა არც დეველოპერს და არც მესამე პირებს გააჩნიათ.
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
გამოიმუშავე კარგი ჩვევები და თან ადევნე თვალი შენს პროგრესს (ურეკლამო)
|
||||
1
uhabits-android/src/main/play/listings/ka-rGE/title.txt
Normal file
@@ -0,0 +1 @@
|
||||
Loop — ჩვევების ტრეკერი
|
||||
@@ -0,0 +1,29 @@
|
||||
Loop Habit Tracker는 여러분의 인생에 있어 좋은 습관을 만들고 이를 장기적으로 유지하는 데 도움을 주는 앱입니다. 좋은 습관들이 나날이 늘어가는 모습을 자세한 차트와 통계를 통해 확인할 수 있습니다. Loop Habit Tracker는 오픈소스 프로젝트로 광고가 없으며 사용자의 개인정보를 수집하지 않습니다.
|
||||
|
||||
<b>아름답고 미니멀하며 가벼운 인터페이스</b>
|
||||
Loop는 누구나 간편하게 사용하기 쉽도록 세련되고 미니멀한 인터페이스를 제공합니다. 또한 최적화가 잘 되어있어 최신형 휴대폰이 아니더라도 끊김없이 부드럽게 작동합니다.
|
||||
|
||||
<b>습관 점수</b>
|
||||
Loop는 특수한 공식을 이용하여 사용자의 습관화가 얼마나 진척되었는지 계산합니다. 습관화의 정도는 반복되면 될수록 강해지지만 놓치는 날이 많아진다면 점차 약해집니다. 하지만 한 번 습관이 잘 형성되었다면 며칠 정도 놓치더라도 전반적인 흐름에 큰 영향을 주지 않습니다. 다른 앱에서 반복을 놓치지 말라고 강조하는 것과 차별화되는 점이죠.
|
||||
|
||||
<b>유연한 일정관리</b>
|
||||
Loop는 매일 반복되는 일정 외에도 일주일에 3번 또는 격일로 반복하는 것처럼 더 복잡한 일정도 유연하게 관리할 수 있습니다.
|
||||
|
||||
<b>알림</b>
|
||||
하루의 일정을 잊지 않도록 알림을 설정해보세요. 각각의 습관 일정에 맞추어 알림을 별도로 설정할 수 있습니다. 또한 상단메뉴바에서 손쉽게 일정을 확인하고 해제할 수 있습니다.
|
||||
|
||||
<b>위젯</b>
|
||||
휴대폰을 잠금 해제할 때마다 하루의 일정을 떠올려 보세요. 다양한 위젯을 통해 앱을 열지 않고도 홈 화면에서 직접 습관목록을 관리할 수 있습니다.
|
||||
|
||||
<b>통계데이터 관리</b>
|
||||
그동안 모은 통계데이터를 별도로 분석하거나 다른 서비스로 옮길 수 있도록 스프레드시트(CSV), 데이터베이스 파일(SQLite)의 형식으로 내보낼 수 있습니다. 고급 사용자의 경우 Tasker와 같은 다른 앱을 통해 자동으로 일정에 완료 표시하는 등 범용적으로 활용할 수도 있습니다.
|
||||
|
||||
<b>제한없이 사용하기</b>
|
||||
원하는 만큼 습관을 추적해 보세요. Loop는 설정 할 수 있는 습관의 수를 제한하고 있지 않습니다. 유저들은 모든 기능을 이용할 수 있습니다. 인앱 구매가 필요하지 않습니다.
|
||||
|
||||
<b>완벽하게 광고가 없는 오픈소스 앱입니다.</b>
|
||||
Loop Habit Tracker에는 광고, 귀찮은 알림, 혹은 권한 설정이 필요 없으며, 앞으로 또한 그럴 것입니다. 이 앱은 완벽한 오픈소스입니다. (GPLv3)
|
||||
|
||||
<b>오프라인 환경에서도 작동하며 개인 정보를 존중합니다.</b>
|
||||
Loop Habit Tracker는 인터넷 연결이나 온라인 계정 등록을 필요로 하지 않습니다. 이용자의 소중한 데이터는 그 누구에게도 제공되지 않습니다. 개발자나 제3자 모두 접근할 수 없습니다.
|
||||
|
||||
@@ -1 +1 @@
|
||||
좋은 습관을 만들고, 시간이 지나면서 습관이 어떻게 발전하는지 지켜보세요.
|
||||
좋은 습관을 만들고, 시간이 지나면서 습관이 어떻게 발전하는지 지켜보세요. (광고 없음)
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
നിങ്ങളുടെ ജീവിതത്തിൽ ദീർഘകാല പോസിറ്റീവ് ശീലങ്ങൾ സൃഷ്ടിക്കാനും നിലനിർത്താനും ലൂപ്പ് ഹാബിറ്റ് ട്രാക്കർ നിങ്ങളെ സഹായിക്കുന്നു. വിശദമായ ചാർട്ടുകളും സ്ഥിതിവിവരക്കണക്കുകളും നിങ്ങളുടെ ശീലങ്ങൾ കാലക്രമേണ എങ്ങനെ മെച്ചപ്പെട്ടുവെന്നതിന്റെ വ്യക്തമായ ചിത്രം നൽകുന്നു. ആപ്പ് പൂർണ്ണമായും പരസ്യരഹിതമാണ്, ഓപ്പൺ സോഴ്സ് ആണ്, ഇത് നിങ്ങളുടെ സ്വകാര്യതയെ മാനിക്കുന്നു.
|
||||
|
||||
<b>മനോഹരവും ചുരുങ്ങിയതും ഭാരം കുറഞ്ഞതുമായ ഇന്റർഫേസ്</b>
|
||||
ലൂപ്പിന് ഗംഭീരവും ചുരുങ്ങിയതുമായ ഒരു ഇന്റർഫേസ് ഉണ്ട്, അത് ആദ്യമായി ഉപയോഗിക്കുന്നവർക്ക് പോലും ഉപയോഗിക്കാൻ വളരെ എളുപ്പമാണ്. വേഗതയ്ക്കായി വളരെ ഒപ്റ്റിമൈസ് ചെയ്തിരിക്കുന്ന ആപ്പ് പഴയ ഫോണുകളിൽ പോലും നന്നായി പ്രവർത്തിക്കുന്നു.
|
||||
|
||||
<b>ശീല സ്കോർ</b>
|
||||
നിങ്ങളുടെ ശീലങ്ങളുടെ ശക്തി കണക്കാക്കുന്നതിനുള്ള വിപുലമായ ഫോർമുല ലൂപ്പിനുണ്ട്. ഓരോ ആവർത്തനവും നിങ്ങളുടെ ശീലത്തെ കൂടുതൽ ശക്തമാക്കുന്നു, കൂടാതെ നഷ്ടപ്പെട്ട ഓരോ ദിവസവും അതിനെ ദുർബലമാക്കുന്നു. എന്നിരുന്നാലും, നീണ്ട ഇടവേളയ്ക്ക് ശേഷം നഷ്ടമായ കുറച്ച് ദിവസങ്ങൾ, മറ്റ് പല ഡോൺ-ബ്രേക്ക്-ദി-ചെയിൻ ആപ്പുകളിൽ നിന്ന് വ്യത്യസ്തമായി നിങ്ങളുടെ പുരോഗതിയെ പൂർണ്ണമായും നശിപ്പിക്കില്ല.
|
||||
|
||||
<b>ഫ്ലെക്സിബിൾ ഷെഡ്യൂളുകൾ</b>
|
||||
ദൈനംദിന ശീലങ്ങൾക്ക് പുറമേ, ആഴ്ചയിൽ 3 തവണ അല്ലെങ്കിൽ മറ്റെല്ലാ ദിവസവും പോലെ കൂടുതൽ സങ്കീർണ്ണമായ ഷെഡ്യൂളുകളുള്ള ശീലങ്ങളെ ലൂപ്പ് പിന്തുണയ്ക്കുന്നു.
|
||||
|
||||
<b>ഓർമ്മപ്പെടുത്തലുകൾ</b>
|
||||
നിങ്ങളുടെ ശീലങ്ങളെക്കുറിച്ച് ഓർമ്മപ്പെടുത്തുന്നതിന് അറിയിപ്പുകൾ ഷെഡ്യൂൾ ചെയ്യുക. ഓരോ ശീലത്തിനും അതിന്റേതായ ഓർമ്മപ്പെടുത്തൽ ഉണ്ടായിരിക്കാം, ദിവസത്തിലെ തിരഞ്ഞെടുത്ത സമയത്ത്. അറിയിപ്പിൽ നിന്ന് നേരിട്ട് നിങ്ങളുടെ ശീലം എളുപ്പത്തിൽ പരിശോധിക്കുക അല്ലെങ്കിൽ നിരസിക്കുക.
|
||||
|
||||
<b>വിജറ്റുകൾ</b>
|
||||
നിങ്ങളുടെ ഫോൺ അൺലോക്ക് ചെയ്യുമ്പോഴെല്ലാം നിങ്ങളുടെ ശീലങ്ങൾ ഓർമ്മിപ്പിക്കുക. ആപ്പ് തുറക്കാതെ തന്നെ ഹോം സ്ക്രീനിൽ നിന്ന് നേരിട്ട് നിങ്ങളുടെ ശീലങ്ങൾ ട്രാക്ക് ചെയ്യാൻ വർണ്ണാഭമായ വിജറ്റുകൾ നിങ്ങളെ അനുവദിക്കുന്നു.
|
||||
|
||||
<b>നിങ്ങളുടെ ഡാറ്റയുടെ നിയന്ത്രണം ഏറ്റെടുക്കുക</b>
|
||||
നിങ്ങളുടെ ഡാറ്റ കൂടുതൽ വിശകലനം ചെയ്യാനോ മറ്റൊരു സേവനത്തിലേക്ക് നീക്കാനോ നിങ്ങൾ ആഗ്രഹിക്കുന്നുവെങ്കിൽ, അത് സ്പ്രെഡ്ഷീറ്റുകളിലേക്കോ (CSV) അല്ലെങ്കിൽ ഒരു ഡാറ്റാബേസ് ഫയലിലേക്കോ (SQLite) കയറ്റുമതി ചെയ്യാൻ ലൂപ്പ് നിങ്ങളെ അനുവദിക്കുന്നു. പവർ ഉപയോക്താക്കൾക്ക്, ടാസ്കർ പോലുള്ള മറ്റ് ആപ്പുകൾ വഴി ചെക്ക്മാർക്കുകൾ ചേർക്കാവുന്നതാണ്.
|
||||
|
||||
<b>പരിമിതികളില്ല</b>
|
||||
നിങ്ങൾ ആഗ്രഹിക്കുന്നത്രയും ശീലങ്ങൾ ട്രാക്ക് ചെയ്യുക. നിങ്ങൾക്ക് എത്ര ശീലങ്ങൾ ഉണ്ടായിരിക്കാം എന്നതിന് ലൂപ്പ് കൃത്രിമ പരിധികളൊന്നും ഏർപ്പെടുത്തുന്നില്ല. എല്ലാ ഫീച്ചറുകളും എല്ലാ ഉപയോക്താക്കൾക്കും ലഭ്യമാണ്. ഇൻ-ആപ്പ് വാങ്ങലുകളൊന്നുമില്ല.
|
||||
|
||||
<b>പൂർണ്ണമായും പരസ്യരഹിതവും ഓപ്പൺ സോഴ്സും</b>
|
||||
ഈ ആപ്പിൽ പരസ്യങ്ങളോ ശല്യപ്പെടുത്തുന്ന അറിയിപ്പുകളോ നുഴഞ്ഞുകയറ്റ അനുമതികളോ ഇല്ല, ഒരിക്കലും ഉണ്ടാകില്ല. ആപ്പ് പൂർണ്ണമായും ഓപ്പൺ സോഴ്സ് ആണ് (GPLv3).
|
||||
|
||||
<b>ഓഫ്ലൈനായി പ്രവർത്തിക്കുകയും നിങ്ങളുടെ സ്വകാര്യതയെ മാനിക്കുകയും ചെയ്യുന്നു</b>
|
||||
ലൂപ്പിന് ഇന്റർനെറ്റ് കണക്ഷനോ ഓൺലൈൻ അക്കൗണ്ട് രജിസ്ട്രേഷനോ ആവശ്യമില്ല. നിങ്ങളുടെ രഹസ്യസ്വഭാവമുള്ള ഡാറ്റ ഒരിക്കലും ആർക്കും അയയ്ക്കില്ല. ഡവലപ്പർമാർക്കോ ഏതെങ്കിലും മൂന്നാം കക്ഷിക്കോ ഇതിലേക്ക് ആക്സസ് ഇല്ല.
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
നല്ല ശീലങ്ങൾ സൃഷ്ടിക്കുകയും കാലക്രമേണ അവരുടെ പുരോഗതി ട്രാക്ക് ചെയ്യുകയും ചെയ്യുക (പരസ്യരഹിതം)
|
||||
1
uhabits-android/src/main/play/listings/ml-rIN/title.txt
Normal file
@@ -0,0 +1 @@
|
||||
ലൂപ്പ് ഹാബിറ്റ് ട്രാക്കർ
|
||||
@@ -0,0 +1,29 @@
|
||||
Loop Habit Tracker helps you create and maintain long-term positive habits in your life. Detailed charts and statistics give you a clear picture of how your habits have improved over time. The app is completely ad-free, open source and it respects your privacy.
|
||||
|
||||
<b>Beautiful, minimalistic and lightweight interface</b>
|
||||
Loop has an elegant and minimalistic interface that is very easy to use, even for first-time users. Highly optimized for speed, the app works well even on older phones.
|
||||
|
||||
<b>Habit score</b>
|
||||
Loop has an advanced formula for calculating the strength of your habits. Every repetition makes your habit stronger and every missed day makes it weaker. A few missed days after a long streak, however, will not completely destroy your progress, unlike many other don't-break-the-chain apps.
|
||||
|
||||
<b>Flexible schedules</b>
|
||||
In addition to daily habits, Loop supports habits with more complex schedules, such as 3 times per week or every other day.
|
||||
|
||||
<b>Reminders</b>
|
||||
Schedule notifications to remind you of your habits. Each habit can have its own reminder, at a chosen time of the day. Easily check or dismiss your habit directly from the notification.
|
||||
|
||||
<b>Widgets</b>
|
||||
Be reminded of your habits whenever you unlock your phone. Colorful widgets allow you to track your habits directly from your home screen, without even opening the app.
|
||||
|
||||
<b>Take control of your data</b>
|
||||
If you want to further analyze your data, or move it to another service, Loop allows you to export it to spreadsheets (CSV) or to a database file (SQLite). For power users, checkmarks can be added through other apps, such as Tasker.
|
||||
|
||||
<b>No limitations</b>
|
||||
Track as many habits as you wish. Loop imposes no artificial limits on how many habits you can have. All features are available to all users. There are no in-app purchases.
|
||||
|
||||
<b>Completely ad-free and open source</b>
|
||||
There are no advertisements, annoying notifications or intrusive permissions in this app, and there will never be. The app is completely open-source (GPLv3).
|
||||
|
||||
<b>Works offline and respects your privacy</b>
|
||||
Loop doesn't require an Internet connection or online account registration. Your confidential data is never sent to anyone. Neither the developers nor any third-parties have access to it.
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
Create good habits and track their progress over time (ad-free)
|
||||
@@ -0,0 +1,29 @@
|
||||
Loop Habit Tracker te ajută să creezi și să menții obiceiuri pozitive pe termen lung în viața ta. Detailed charts and statistics give you a clear picture of how your habits have improved over time. The app is completely ad-free, open source and it respects your privacy.
|
||||
|
||||
<b>Beautiful, minimalistic and lightweight interface</b>
|
||||
Loop are o interfață elegantă și minimalistă, care este foarte ușor de utilizat, chiar și pentru utilizatorii începători. Foarte optimizată pentru viteză, aplicația funcționează bine chiar și pe telefoanele mai vechi.
|
||||
|
||||
<b>Scorul obiceiului</b>
|
||||
Loop has an advanced formula for calculating the strength of your habits. Every repetition makes your habit stronger and every missed day makes it weaker. A few missed days after a long streak, however, will not completely destroy your progress, unlike many other don't-break-the-chain apps.
|
||||
|
||||
<b>Flexible schedules</b>
|
||||
Pe lângă obiceiurile zilnice, Loop susține obiceiuri cu programe mai complexe, cum ar fi, de 3 ori pe săptămână sau din două în două zile.
|
||||
|
||||
<b>Reminders</b>
|
||||
Programează notificări pentru a-ți aminti de obiceiurile tale. Each habit can have its own reminder, at a chosen time of the day. Easily check or dismiss your habit directly from the notification.
|
||||
|
||||
<b>Widgets</b>
|
||||
Be reminded of your habits whenever you unlock your phone. Colorful widgets allow you to track your habits directly from your home screen, without even opening the app.
|
||||
|
||||
<b>Preia controlul asupra datelor tale</b>
|
||||
If you want to further analyze your data, or move it to another service, Loop allows you to export it to spreadsheets (CSV) or to a database file (SQLite). For power users, checkmarks can be added through other apps, such as Tasker.
|
||||
|
||||
<b>Fără limitări</b>
|
||||
Track as many habits as you wish. Loop nu impune limite artificiale asupra numărului de obiceiuri pe care le poți avea. Toate funcțiile sunt disponibile pentru toți utilizatorii. There are no in-app purchases.
|
||||
|
||||
<b>Complet fără reclame și open-source</b>
|
||||
Nu există reclame, notificări enervante sau permisiuni intruzive în această aplicație și nu vor exista niciodată. Aplicația este complet open-source (GPLv3).
|
||||
|
||||
<b>Funcționează offline și respectă confidențialitatea ta</b>
|
||||
Loop nu necesită o conexiune la internet sau înregistrarea unui cont online. Datele tale confidențiale nu au fost trimise nimănui. Neither the developers nor any third-parties have access to it.
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
Creați obiceiuri bune și urmăriți progresul lor în timp (fără reclame)
|
||||
@@ -0,0 +1,29 @@
|
||||
Loop Habit Tracker vam pomaga ustvariti in ohraniti dolgoročne pozitivne navade v vašem življenju. Podrobni grafikoni in statistični podatki vam dajejo jasno sliko o tem, kako so se vaše navade sčasoma izboljšale. Aplikacija je popolnoma brez oglasov, odprtokodna in spoštuje vašo zasebnost.
|
||||
|
||||
<b>Lep, minimalističen in lahek vmesnik</b>
|
||||
Loop ima eleganten in minimalističen vmesnik, ki je zelo enostaven za uporabo, tudi za začetnike. Aplikacija je zelo optimizirana za hitrost, dobro deluje tudi na starejših telefonih.
|
||||
|
||||
<b>Ocena navade</b>
|
||||
Loop ima napredno formulo za izračun moči vaših navad. Vsako ponavljanje naredi vašo navado močnejšo in vsak zamujeni dan jo oslabi. Nekaj zamujenih dni po dolgem nizu pa ne bo popolnoma uničilo vašega napredka, za razliko od mnogih drugih aplikacij, ki ne prekinjajo verige.
|
||||
|
||||
<b>Prilagodljivi urniki</b>
|
||||
Poleg dnevnih navad Loop podpira navade z bolj zapletenimi urniki, na primer 3-krat na teden ali vsak drugi dan.
|
||||
|
||||
<b>Opomniki</b>
|
||||
Načrtujte obvestila, ki vas bodo spomnila na vaše navade. Vsaka navada ima lahko svoj opomnik, ob izbrani uri dneva. Preprosto preverite ali opustite svojo navado neposredno iz obvestila.
|
||||
|
||||
<b>Pripomočki</b>
|
||||
Ko odklenete telefon, se opomnite na svoje navade. Pisani pripomočki vam omogočajo, da spremljate svoje navade neposredno z začetnega zaslona, ne da bi sploh odprli aplikacijo.
|
||||
|
||||
<b>Prevzemite nadzor nad svojimi podatki</b>
|
||||
Če želite svoje podatke dodatno analizirati ali jih premakniti v drugo storitev, vam Loop omogoča, da jih izvozite v preglednice (CSV) ali v datoteko zbirke podatkov (SQLite). Za napredne uporabnike lahko kljukice dodate prek drugih aplikacij, kot je Tasker.
|
||||
|
||||
<b>Brez omejitev</b>
|
||||
Spremljajte toliko navad, kot želite. Loop ne postavlja nobenih umetnih omejitev glede števila navad, ki jih lahko imate. Vse funkcije so na voljo vsem uporabnikom. Nakupov v aplikaciji ni.
|
||||
|
||||
<b>Popolnoma brez oglasov in odprtokoden</b>
|
||||
V tej aplikaciji ni oglasov, nadležnih obvestil ali vsiljivih dovoljenj in jih nikoli ne bo. Aplikacija je popolnoma odprtokodna (GPLv3).
|
||||
|
||||
<b>Deluje brez povezave in spoštuje vašo zasebnost</b>
|
||||
Loop ne zahteva internetne povezave ali spletne registracije računa. Vaši zaupni podatki niso nikoli nikomur poslani. Niti razvijalci niti katere koli tretje osebe nimajo dostopa do njega.
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
Ustvarite dobre navade in spremljajte njihov napredek skozi čas (brez oglasov)
|
||||
@@ -0,0 +1,29 @@
|
||||
உங்கள் வாழ்க்கையில் நீண்டகால நேர்மறையான பழக்கங்களை உருவாக்கவும் பராமரிக்கவும் லூப் ஹாபிட் டிராக்கர் உதவுகிறது. உங்களின் பழக்கவழக்கங்கள், காலப்போக்கில் எவ்வாறு முன்னேறியுள்ளன என்பதை விரிவான அட்டவணைகளும் புள்ளிவிவரங்களும் தெளிவாக காண்பிக்கும் இந்தப் பயன்பாடானது முற்றிலும் விளம்பரங்களற்றது, திறந்த மூலம் மற்றும் உங்களின் தனியுரிமையை மதிக்கும்.
|
||||
|
||||
<b>அழகான, குறைந்தபட்சமான மற்றும் இலகுரக இடைமுகம்</b>
|
||||
Loop இலகுவாகப் பயன்படுத்தக்கூடிய, முதல் முறையிலேயே பயன்படுத்துவோருக்கும் எளிதான, நேர்த்தியான மற்றும் குறைந்தபட்சமான இடைமுகத்தைக் கொண்டுள்ளது. வேகத்திற்காக மிகவும் திறமையாகக் கட்டமைக்கப்பட்ட, இந்தப் பயன்பாடு பழைய தொலைபேசிகளில் கூட நன்கு செயல்படுகிறது.
|
||||
|
||||
பழக்க மதிப்பெண்
|
||||
Loop உங்களின் பழக்கங்களின் வலிமையை கணக்கிடுவதற்கு மேம்பட்ட சூத்திரத்தைக் கொண்டுள்ளது. ஒவ்வொரு மீளுருவாக்கமும் உங்கள் பழக்கத்தை வலுவாக்குகிறது, மேலும் ஒவ்வொரு தவறிய நாளும் அதைப் பலவீனப்படுத்துகிறது. A few missed days after a long streak, however, will not completely destroy your progress, unlike many other don't-break-the-chain apps.
|
||||
|
||||
மாற்றியமைக்கக்கூடிய நாள்காட்டி
|
||||
In addition to daily habits, Loop supports habits with more complex schedules, such as 3 times per week or every other day.
|
||||
|
||||
நினைவூட்டல்கள்
|
||||
உங்கள் பழக்கங்களை நினைவூட்ட உதவிக்கான அறிவிப்புகளைத் திட்டமிடவும் ஒவ்வொரு பழக்கத்திற்கும், நாளில் தேர்ந்தெடுக்கப்பட்ட நேரத்தில் தனித்துவமான நினைவூட்டலைக் கொடுக்கலாம் அறிவிப்பிலிருந்து உங்கள் பழக்கத்தை எளிதாக முடிக்கவும் அல்லது மறுக்கவும்.
|
||||
|
||||
<b>Widgets</b>
|
||||
Be reminded of your habits whenever you unlock your phone. Colorful widgets allow you to track your habits directly from your home screen, without even opening the app.
|
||||
|
||||
உங்கள் தரவு உங்கள் கட்டுப்பாட்டில்
|
||||
If you want to further analyze your data, or move it to another service, Loop allows you to export it to spreadsheets (CSV) or to a database file (SQLite). For power users, checkmarks can be added through other apps, such as Tasker.
|
||||
|
||||
எந்த வரம்புகளும் இல்லை
|
||||
Track as many habits as you wish. Loop imposes no artificial limits on how many habits you can have. All features are available to all users. There are no in-app purchases.
|
||||
|
||||
<b>Completely ad-free and open source</b>
|
||||
இந்தச் செயலியில் விளம்பரங்கள், சிரமமான அறிவிப்புகள் அல்லது அடி முறைகளைப் பொருந்தும் அனுமதிகள் எதுவும் இல்லை, மற்றும் எப்போது இல்லை. இந்தச் செயலி முழுமையாகத் திறந்த மூல குறியீட்டுடன் (GPLv3) உள்ளது.
|
||||
|
||||
<b>Works offline and respects your privacy</b>
|
||||
Loop doesn't require an Internet connection or online account registration. Your confidential data is never sent to anyone. Neither the developers nor any third-parties have access to it.
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
நல்ல பழக்கங்களை உருவாக்க, அவற்றின் முன்னேற்றங்களைக் கண்காணிக்க (விளம்பரம் அற்றது)
|
||||
@@ -10,7 +10,7 @@ Loop, alışkanlıklarınızın kalıcılığını hesaplamak için gelişmiş b
|
||||
Loop, günlük alışkanlıkların yanında, daha karmaşık programları da (örneğin haftada 3 kez veya gün aşırı gibi) destekler.
|
||||
|
||||
<b>Hatırlatmalar</b>
|
||||
Alışkanlıklarınızı size hatırlatması için bildirimler ayarlayabilirsiniz. Her alışkanlık için özel bir bildirim ayarlayabilirsiniz, belirlediğiniz zamanda hatırlatmak üzere. Alışkanlığınızı doğrudan bildirimlerden kolayca işaretleyin veya erteleyin.
|
||||
Alışkanlıklarınızı size hatırlatması için bildirimler ayarlayabilirsiniz. Her bir alışkanlık için gün içinde seçilecek bir zamanda ayrı ayrı bildirim ayarlayabilirsiniz, Alışkanlığınızı doğrudan bildirimlerden kolayca işaretleyin veya erteleyin.
|
||||
|
||||
<b>Widget'lar</b>
|
||||
Telefonunuzun kilidini her açtığınızda alışkanlıklarınız size hatırlatılır. Renkli widget'lar, uygulamayı açmadan bile alışkanlıklarınızı doğrudan ana ekranınızdan izlemenizi sağlar.
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
Loop 习惯记录(以下简称“Loop”)能帮你养成和长期保持好习惯。 详细的图表和统计数据能让您更清楚地看到自己的进步。 这是一个完全无广告的开源应用,它尊重您的隐私。
|
||||
Loop 习惯记录(以下简称“Loop”)能帮你养成和长期保持好习惯。 通过详细的图表和统计数据,你可以清晰地看到自己的习惯是如何随着时间的推移而逐步改善的。 这是一个完全无广告的开源应用,它尊重您的隐私。
|
||||
|
||||
<b>优雅、简约、轻巧</b>
|
||||
Loop 具有优雅而简约的界面,即使对于初次使用的用户,也非常易于使用。 该应用针对速度进行了高度优化,即使在较旧的手机上也可以正常运行。
|
||||
Loop 的界面优雅而简约,即便初次使用,也能轻松上手。 该应用针对运行速度进行了高度优化,在旧手机上也表现良好。
|
||||
|
||||
<b>习惯强度</b>
|
||||
Loop 有高级的公式来计算您习惯的强度。 多多重复会使你的习惯更牢固, 但是,与其他记录的应用不同,即便您有几天没有记录习惯,依然不会破坏您的进度。
|
||||
<b>习惯分</b>
|
||||
Loop 有高级的公式来计算您习惯的养成程度。 每次重复打卡都会让习惯更牢固,而每一次错过都会削弱。 不过与其他打卡的APP不同,即便您有几天没有记录习惯,依然不会破坏您的进度。
|
||||
|
||||
<b>弹性计划</b>
|
||||
除了每天习惯之外,Loop 还支持更加复杂的时间安排,例如每周三次或每天三次。
|
||||
除了每日打卡之外,Loop 还支持更加复杂的时间安排,例如每周3次或每天3次。
|
||||
|
||||
<b>提醒</b>
|
||||
设定通知以提醒您完成习惯。 您可以为每个习惯单独设置提醒,选定当天的某个时间提醒该习惯。 同时从通知中轻松地检查或取消您的习惯。
|
||||
您可以设定通知以提醒您完成习惯, 也可以为每个习惯单独设置提醒,并选定每日的提醒时间。 同时可以从通知中轻松地记录或取消打卡。
|
||||
|
||||
<b>微件</b>
|
||||
当您解锁手机时, 多彩的小部件可让您直接从主屏幕记录自己的习惯,而无需打开应用程序。
|
||||
当您解锁手机时, 缤纷的小部件可让您直接从桌面记录自己的习惯,而无需打开应用程序。
|
||||
|
||||
<b>掌控您的数据</b>
|
||||
如果您想进一步分析数据或将数据备份,则可以使用 Loop 将其导出为电子表格(CSV)或数据库文件(SQLite)。 对于高级用户,可以通过其他应用如 Tasker 实现自动化添加标记。
|
||||
如果您想进一步分析数据或将数据备份,则可以使用 Loop 将其导出为电子表格(CSV)或数据库文件(SQLite)。 对于高级用户,可以通过其他应用如 Tasker 实现自动化打卡。
|
||||
|
||||
<b>无限制</b>
|
||||
想记录多少习惯都没问题! Loop 对您的习惯没有任何限制, 所有用户均可使用所有功能, 并且没有应用内购买。
|
||||
@@ -24,6 +24,6 @@ Loop 有高级的公式来计算您习惯的强度。 多多重复会使你的
|
||||
<b>完全无广告的开源软件</b>
|
||||
本应用永远都不会有广告和烦人的通知,也不会索取侵入性权限。 本应用是完全开源的(GPLv3)。
|
||||
|
||||
<b>脱机工作并尊重您的隐私</b>
|
||||
Loop 不需要网络连接或在线帐户注册。 您的用户数据永远不会发送给任何人, 包括开发人员和任何第三方都无法访问它。
|
||||
<b>离线运行,尊重隐私</b>
|
||||
Loop 不需要联网运行或注册在线帐号。 您的用户数据永远不会发送给任何人, 包括开发人员和任何第三方都无法访问它。
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 9.5 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 16 KiB |
@@ -28,7 +28,7 @@
|
||||
|
||||
<item android:id="@android:id/mask">
|
||||
<shape android:shape="rectangle">
|
||||
<corners android:radius="12dp"/>
|
||||
<corners android:radius="18dp"/>
|
||||
<solid android:color="?android:colorPrimary"/>
|
||||
</shape>
|
||||
<color android:color="@color/white"/>
|
||||
|
||||
@@ -25,17 +25,19 @@
|
||||
<TextView style="@style/About.Item" android:text="Marius Teufelweich" />
|
||||
<TextView style="@style/About.Item" android:text="Matthias Meisser" />
|
||||
<TextView style="@style/About.Item" android:text="Michael" />
|
||||
<TextView style="@style/About.Item" android:text="Tad Wohlrapp" />
|
||||
<TextView style="@style/About.Item" android:text="cobalt59" />
|
||||
<TextView style="@style/About.Item" android:text="fabian.bouchal" />
|
||||
<TextView style="@style/About.Item" android:text="sojusnik" />
|
||||
<TextView style="@style/About.Item" android:text="tat bz" />
|
||||
<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="Brenda Correa" />
|
||||
<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="Sebastian05067" />
|
||||
<TextView style="@style/About.Item" android:text="Susanamesa" />
|
||||
<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" android:text="4001982248998" />
|
||||
<TextView style="@style/About.Item" android:text="marco.baturan" />
|
||||
@@ -57,11 +59,17 @@
|
||||
<TextView style="@style/About.Item" android:text="Behnood HRazy" />
|
||||
<TextView style="@style/About.Item" android:text="Eman" />
|
||||
<TextView style="@style/About.Item" android:text="Saeed Esmaili" />
|
||||
<TextView style="@style/About.Item.Language" android:text="Georgian" />
|
||||
<TextView style="@style/About.Item" android:text="Avalysion" />
|
||||
<TextView style="@style/About.Item.Language" android:text="Hindi" />
|
||||
<TextView style="@style/About.Item" android:text="Ravi Rami" />
|
||||
<TextView style="@style/About.Item" android:text="Vijaykumar Borkar" />
|
||||
<TextView style="@style/About.Item" android:text="vinayak sharma" />
|
||||
<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 Vlahov" />
|
||||
<TextView style="@style/About.Item.Language" android:text="Icelandic" />
|
||||
<TextView style="@style/About.Item" android:text="strikeCunny2245" />
|
||||
<TextView style="@style/About.Item.Language" android:text="Italiano" />
|
||||
<TextView style="@style/About.Item" android:text="Marco Cavazza" />
|
||||
<TextView style="@style/About.Item" android:text="androide74" />
|
||||
@@ -69,6 +77,8 @@
|
||||
<TextView style="@style/About.Item" android:text="Balázs Keresztury" />
|
||||
<TextView style="@style/About.Item" android:text="Isti" />
|
||||
<TextView style="@style/About.Item" android:text="gapszi" />
|
||||
<TextView style="@style/About.Item.Language" android:text="Malayalam" />
|
||||
<TextView style="@style/About.Item" android:text="Mathew TK" />
|
||||
<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" />
|
||||
@@ -90,15 +100,18 @@
|
||||
<TextView style="@style/About.Item" android:text="Sofia Neves" />
|
||||
<TextView style="@style/About.Item" android:text="Thamara Andrade" />
|
||||
<TextView style="@style/About.Item.Language" android:text="Română" />
|
||||
<TextView style="@style/About.Item" android:text="Alex V." />
|
||||
<TextView style="@style/About.Item" android:text="Andreea Muscalagiu" />
|
||||
<TextView style="@style/About.Item" android:text="Andrei Pleș" />
|
||||
<TextView style="@style/About.Item" android:text="StoP4Me" />
|
||||
<TextView style="@style/About.Item" android:text="bearsdens" />
|
||||
<TextView style="@style/About.Item.Language" android:text="Slovak" />
|
||||
<TextView style="@style/About.Item" android:text="dukelc" />
|
||||
<TextView style="@style/About.Item.Language" android:text="Slovenian" />
|
||||
<TextView style="@style/About.Item" android:text="dusanstrgar" />
|
||||
<TextView style="@style/About.Item.Language" android:text="Slovenščina" />
|
||||
<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" 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="Sofia Veijonen" />
|
||||
@@ -122,12 +135,15 @@
|
||||
<TextView style="@style/About.Item" android:text="Ishmaeel" />
|
||||
<TextView style="@style/About.Item" android:text="hodanli" />
|
||||
<TextView style="@style/About.Item.Language" android:text="Čeština" />
|
||||
<TextView style="@style/About.Item" android:text="Radek Kuklík" />
|
||||
<TextView style="@style/About.Item" android:text="Tomáš Borovec" />
|
||||
<TextView style="@style/About.Item" android:text="andaryon" />
|
||||
<TextView style="@style/About.Item" android:text="boban77" />
|
||||
<TextView style="@style/About.Item.Language" android:text="Ελληνικά" />
|
||||
<TextView style="@style/About.Item" android:text="Alexander Haronitakis" />
|
||||
<TextView style="@style/About.Item" android:text="Andreas Michelakis" />
|
||||
<TextView style="@style/About.Item" android:text="DionysosDV" />
|
||||
<TextView style="@style/About.Item" android:text="c.m" />
|
||||
<TextView style="@style/About.Item.Language" android:text="Български" />
|
||||
<TextView style="@style/About.Item" android:text="Mihail Stefanov" />
|
||||
<TextView style="@style/About.Item.Language" android:text="Русский" />
|
||||
@@ -149,7 +165,6 @@
|
||||
<TextView style="@style/About.Item" android:text="Đorđe Vasiljević" />
|
||||
<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="Omry Cohen" />
|
||||
<TextView style="@style/About.Item" android:text="Yoav Argov" />
|
||||
<TextView style="@style/About.Item.Language" android:text="العَرَبِية" />
|
||||
@@ -170,6 +185,7 @@
|
||||
<TextView style="@style/About.Item" android:text="Niraj Yadav" />
|
||||
<TextView style="@style/About.Item.Language" android:text="தமிழ்" />
|
||||
<TextView style="@style/About.Item" android:text="Anshoe" />
|
||||
<TextView style="@style/About.Item" android:text="Aravinth_Earth" />
|
||||
<TextView style="@style/About.Item" android:text="Magimai Prakasam" />
|
||||
<TextView style="@style/About.Item" android:text="Mohammed Imthath" />
|
||||
<TextView style="@style/About.Item" android:text="magimai" />
|
||||
@@ -182,6 +198,7 @@
|
||||
<TextView style="@style/About.Item" android:text="Lee" />
|
||||
<TextView style="@style/About.Item" android:text="Limin Lu" />
|
||||
<TextView style="@style/About.Item" android:text="Liveeasy" />
|
||||
<TextView style="@style/About.Item" android:text="Star7" />
|
||||
<TextView style="@style/About.Item" android:text="Ting-Hua" />
|
||||
<TextView style="@style/About.Item" android:text="XuToTo" />
|
||||
<TextView style="@style/About.Item" android:text="hypnotichemionus" />
|
||||
@@ -191,8 +208,13 @@
|
||||
<TextView style="@style/About.Item" android:text="Naofumi F" />
|
||||
<TextView style="@style/About.Item" android:text="Tomairuka" />
|
||||
<TextView style="@style/About.Item" android:text="ayane.m" />
|
||||
<TextView style="@style/About.Item" android:text="mimizuk" />
|
||||
<TextView style="@style/About.Item" android:text="pi hobbes" />
|
||||
<TextView style="@style/About.Item" android:text="yukitsubaki" />
|
||||
<TextView style="@style/About.Item" android:text="長谷川知里" />
|
||||
<TextView style="@style/About.Item.Language" android:text="한국어" />
|
||||
<TextView style="@style/About.Item" android:text="Josh Graham" />
|
||||
<TextView style="@style/About.Item" android:text="PILHA PARK" />
|
||||
<TextView style="@style/About.Item" android:text="Seoyul" />
|
||||
<TextView style="@style/About.Item" android:text="Sumin Son" />
|
||||
</LinearLayout>
|
||||
@@ -18,7 +18,8 @@
|
||||
~ with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
@@ -61,8 +62,10 @@
|
||||
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior"
|
||||
android:background="?attr/contrast0">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
@@ -265,4 +268,4 @@
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
</LinearLayout>
|
||||
|
||||