Compare commits

..

No commits in common. "master" and "4.4.0" have entirely different histories.

911 changed files with 43934 additions and 61079 deletions

View File

@ -15,10 +15,10 @@ jobs:
encodedString: ${{ secrets.KEYSTORE_BASE64 }} encodedString: ${{ secrets.KEYSTORE_BASE64 }}
- name: Create key.properties - name: Create key.properties
run: | run: |
echo "storeFile=${{ steps.android_keystore.outputs.filePath }}" > refilc/android/key.properties echo "storeFile=${{ steps.android_keystore.outputs.filePath }}" > filcnaplo/android/key.properties
echo "storePassword=${{ secrets.STORE_PASSWORD }}" >> refilc/android/key.properties echo "storePassword=${{ secrets.STORE_PASSWORD }}" >> filcnaplo/android/key.properties
echo "keyPassword=${{ secrets.KEY_PASSWORD }}" >> refilc/android/key.properties echo "keyPassword=${{ secrets.KEY_PASSWORD }}" >> filcnaplo/android/key.properties
echo "keyAlias=${{ secrets.KEY_ALIAS }}" >> refilc/android/key.properties echo "keyAlias=${{ secrets.KEY_ALIAS }}" >> filcnaplo/android/key.properties
- uses: actions/setup-java@v3 - uses: actions/setup-java@v3
with: with:
distribution: "zulu" distribution: "zulu"
@ -32,7 +32,7 @@ jobs:
- name: Install dependencies - name: Install dependencies
run: ./fix-pub.sh run: ./fix-pub.sh
- name: Build - name: Build
run: cd refilc && ./build.sh run: cd filcnaplo && ./build.sh
- name: Upload Android Release - name: Upload Android Release
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v2
with: with:

View File

@ -46,7 +46,7 @@ jobs:
# Build and sign the ipa using a single flutter command # Build and sign the ipa using a single flutter command
- name: Building IPA - name: Building IPA
working-directory: refilc working-directory: filcnaplo
run: bash build-ipa.sh run: bash build-ipa.sh
# Collect the file and upload as artifact # Collect the file and upload as artifact
@ -55,7 +55,7 @@ jobs:
with: with:
name: release-ipa name: release-ipa
# Path to the release files # Path to the release files
path: refilc/build/ios/ipa/*.ipa path: filcnaplo/build/ios/ipa/*.ipa
# Important! Cleanup: remove the certificate and provisioning profile from the runner! # Important! Cleanup: remove the certificate and provisioning profile from the runner!
- name: Clean up keychain and provisioning profile - name: Clean up keychain and provisioning profile

74
.gitignore vendored
View File

@ -1,57 +1,37 @@
refilc/.flutter-plugins filcnaplo/.flutter-plugins
refilc/.flutter-plugins-dependencies filcnaplo/.flutter-plugins-dependencies
refilc/pubspec.lock filcnaplo/pubspec.lock
refilc/.dart_tool/ filcnaplo/.dart_tool/
# refilc/android/ filcnaplo/android/
# refilc/ios/ filcnaplo/ios/
# refilc/windows/ filcnaplo/windows/
# refilc/linux/ filcnaplo/linux/
# refilc/macos/ filcnaplo/macos/
refilc/build/ filcnaplo/build/
refilc/android/key.properties
refilc/android/debug.keystore
# refilc_desktop_ui/.flutter-plugins filcnaplo_desktop_ui/.flutter-plugins
# refilc_desktop_ui/.flutter-plugins-dependencies filcnaplo_desktop_ui/.flutter-plugins-dependencies
# refilc_desktop_ui/pubspec.lock filcnaplo_desktop_ui/pubspec.lock
# refilc_desktop_ui/.dart_tool/ filcnaplo_desktop_ui/.dart_tool/
refilc_kreta_api/.flutter-plugins filcnaplo_kreta_api/.flutter-plugins
refilc_kreta_api/.flutter-plugins-dependencies filcnaplo_kreta_api/.flutter-plugins-dependencies
refilc_kreta_api/pubspec.lock filcnaplo_kreta_api/pubspec.lock
refilc_kreta_api/.dart_tool/ filcnaplo_kreta_api/.dart_tool/
refilc_mobile_ui/.flutter-plugins filcnaplo_mobile_ui/.flutter-plugins
refilc_mobile_ui/.flutter-plugins-dependencies filcnaplo_mobile_ui/.flutter-plugins-dependencies
refilc_mobile_ui/pubspec.lock filcnaplo_mobile_ui/pubspec.lock
refilc_mobile_ui/.dart_tool/ filcnaplo_mobile_ui/.dart_tool/
# filcnaplo_premium/.flutter-plugins filcnaplo_premium/.flutter-plugins
# filcnaplo_premium/.flutter-plugins-dependencies filcnaplo_premium/.flutter-plugins-dependencies
# filcnaplo_premium/pubspec.lock filcnaplo_premium/pubspec.lock
# filcnaplo_premium/.dart_tool/ filcnaplo_premium/.dart_tool/
filcnaplo_premium/android/
.vscode .vscode
.github .github
.idea .idea
.gitmodules .gitmodules
.gradle
.kotlin
refilc/.DS_Store
.DS_Store
refilc/linux/flutter/
.plugin_symlinks/
refilc/macos/Flutter/
refilc/ios/Flutter/
refilc/ios/Runner/GeneratedPluginRegistrant.h
refilc/ios/Runner/GeneratedPluginRegistrant.m
refilc/android/local.properties
refilc/android/debugkey.properties
refilc/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java
tool_logs/build/*.log
tool_logs/d8dx_fix/*.log
tool_logs/pub_fix/*.log
refilc_mobile_ui/android/local.properties

1286
.idea/libraries/Dart_Packages.xml generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,28 +1,25 @@
<component name="libraryTable"> <component name="libraryTable">
<library name="Dart SDK"> <library name="Dart SDK">
<CLASSES> <CLASSES>
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/async" /> <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/async" />
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/cli" /> <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/cli" />
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/collection" /> <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/collection" />
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/concurrent" /> <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/convert" />
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/convert" /> <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/core" />
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/core" /> <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/developer" />
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/developer" /> <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/ffi" />
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/ffi" /> <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/html" />
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/html" /> <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/indexed_db" />
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/indexed_db" /> <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/io" />
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/io" /> <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/isolate" />
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/isolate" /> <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/js" />
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/js" /> <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/js_util" />
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/js_interop" /> <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/math" />
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/js_interop_unsafe" /> <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/mirrors" />
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/js_util" /> <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/svg" />
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/math" /> <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/typed_data" />
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/mirrors" /> <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/web_audio" />
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/svg" /> <root url="file:///opt/flutter/bin/cache/dart-sdk/lib/web_gl" />
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/typed_data" />
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/web_audio" />
<root url="file://P:/flutter/bin/cache/dart-sdk/lib/web_gl" />
</CLASSES> </CLASSES>
<JAVADOC /> <JAVADOC />
<SOURCES /> <SOURCES />

1
.idea/misc.xml generated
View File

@ -1,3 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Android API 33, extension level 3 Platform" project-jdk-type="Android SDK" /> <component name="ProjectRootManager" version="2" project-jdk-name="Android API 33, extension level 3 Platform" project-jdk-type="Android SDK" />
</project> </project>

13
.idea/naplo.iml generated
View File

@ -60,21 +60,8 @@
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/flutter_acrylic/build" /> <excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/flutter_acrylic/build" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/flutter_acrylic/.pub" /> <excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/flutter_acrylic/.pub" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/flutter_acrylic/.dart_tool" /> <excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/flutter_acrylic/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/refilc/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/refilc/.pub" />
<excludeFolder url="file://$MODULE_DIR$/refilc/build" />
<excludeFolder url="file://$MODULE_DIR$/refilc_kreta_api/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/refilc_kreta_api/.pub" />
<excludeFolder url="file://$MODULE_DIR$/refilc_kreta_api/build" />
<excludeFolder url="file://$MODULE_DIR$/refilc_mobile_ui/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/refilc_mobile_ui/.pub" />
<excludeFolder url="file://$MODULE_DIR$/refilc_mobile_ui/build" />
<excludeFolder url="file://$MODULE_DIR$/refilc_plus/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/refilc_plus/.pub" />
<excludeFolder url="file://$MODULE_DIR$/refilc_plus/build" />
</content> </content>
<orderEntry type="inheritedJdk" /> <orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Dart SDK" level="project" />
</component> </component>
</module> </module>

5
.idea/vcs.xml generated
View File

@ -2,6 +2,9 @@
<project version="4"> <project version="4">
<component name="VcsDirectoryMappings"> <component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" /> <mapping directory="" vcs="Git" />
<mapping directory="$PROJECT_DIR$/refilc_plus" vcs="Git" /> <mapping directory="$PROJECT_DIR$/filcnaplo_desktop_ui" vcs="Git" />
<mapping directory="$PROJECT_DIR$/filcnaplo_kreta_api" vcs="Git" />
<mapping directory="$PROJECT_DIR$/filcnaplo_mobile_ui" vcs="Git" />
<mapping directory="$PROJECT_DIR$/filcnaplo_premium" vcs="Git" />
</component> </component>
</project> </project>

View File

@ -1,7 +1,7 @@
# Contribution guide (Hozzájárulási útmutató) # Contribution guide
Köszönjük, ha programozással segíted a munkánkat! Köszönjük, ha programozással segíted a munkánkat!
A folytatáshoz szükséged lesz egy MacOS-t, Linux-ot vagy Windows-t futtató számítógépre, minimális programozási tapasztalatra és egy kis angoltudásra. A folytatáshoz szükséged lesz egy Linux-ot vagy Windows-t futtató számítógépre, minimális programozási tapasztalatra és egy kis angoltudásra.
Segít, ha már gyakorlottabb vagy a programozásban, és ha ismered a [Git](https://git-scm.com/) és a [GitHub](https://github.com/) működését. ;) Segít, ha már gyakorlottabb vagy a programozásban, és ha ismered a [Git](https://git-scm.com/) és a [GitHub](https://github.com/) működését. ;)
## Miben segítsek? ## Miben segítsek?
@ -14,7 +14,7 @@ A legjobban annak örülünk, ha az [Issues](https://github.com/refilc/naplo/iss
## Hogyan segítsek? ## Hogyan segítsek?
Nem ígérhetünk itt sem programozás-, sem Git-kurzust, de a projektspecifikus dolgokat leírjuk, és segítünk a Flutter telepítésében. Nem ígérhetünk itt sem programozás-, sem Git-kurzust, de a projektspecifikus dolgokat leírjuk, és segítünk a Flutter telepítésében.
A **reFilc** a Google által pár éve létrehozott **[Flutter](https://flutter.dev/)** keretrendszert használja, aminek nyelve a **[Dart](https://dart.dev/)**. Ha ismered a JavaScript, C#, Java, C++, vagy egyéb hasonló programnyelvek működését, **nem fog nagy gondot okozni a használata.** A felhasználói felület létrehozásában az is segíthet, ha foglalkoztál már korábban weboldalakkal vagy alkalmazásfejlesztéssel. A **reFilc** a Google által pár éve létrehozott **[Flutter](https://flutter.dev/)** keretrendszert használja, aminek nyelve a **[Dart](https://dart.dev/)**. Ha ismered a C#, Java, C++, vagy egyéb hasonló programnyelvek működését, **nem fog nagy gondot okozni a használata.** A felhasználói felület létrehozásában az is segíthet, ha foglalkoztál már korábban weboldalakkal vagy alkalmazásfejlesztéssel.
Ha még nem használtad a Flutter-t, mindenképp böngészd át a [YouTube csatornájukat](https://www.youtube.com/channel/UCwXdFgeE9KYzlDdR7TG9cMw). Ha még nem használtad a Flutter-t, mindenképp böngészd át a [YouTube csatornájukat](https://www.youtube.com/channel/UCwXdFgeE9KYzlDdR7TG9cMw).
Kód vagy UI teszteléséhez Flutter telepítése nélkül is használhatod a [DartPad](https://dartpad.dev/)-et. Kód vagy UI teszteléséhez Flutter telepítése nélkül is használhatod a [DartPad](https://dartpad.dev/)-et.
@ -24,13 +24,13 @@ Kód vagy UI teszteléséhez Flutter telepítése nélkül is használhatod a [D
Ha nem értessz a Git-hez vagy a GitHub-hoz, ajánljuk figyelmedbe [ezt a cikket](https://medium.com/envienta-magyarorsz%C3%A1g/git-%C3%A9s-github-gyorstalpal%C3%B3-f2d78a732deb), viszont arra kérünk, hogy a használatukat ne a **reFilc**en próbáld ki először. Hozz létre egy saját Repo-t és abban tesztelgess. Ha már nagyjából kitapasztaltad, várjuk hozzájárulásodat. Ha nem értessz a Git-hez vagy a GitHub-hoz, ajánljuk figyelmedbe [ezt a cikket](https://medium.com/envienta-magyarorsz%C3%A1g/git-%C3%A9s-github-gyorstalpal%C3%B3-f2d78a732deb), viszont arra kérünk, hogy a használatukat ne a **reFilc**en próbáld ki először. Hozz létre egy saját Repo-t és abban tesztelgess. Ha már nagyjából kitapasztaltad, várjuk hozzájárulásodat.
Készíts egy Fork-ot a saját GitHub fiókod alá. Készíts egy Fork-ot a saját GitHub fiókod alá.
A **reFilc** legfrissebb, **épp fejlesztés alatt álló verzióját a [dev branch](https://github.com/refilc/naplo/tree/dev)-en találod**. Kérjük ide Commit-olj és ide célozd a Fork-odból a Pull Request-edet. Írd le benne, hogy mit változtattál és ha lehet, csatolj képernyőképet is. A **reFilc** legfrissebb, **épp fejlesztés alatt álló verzióját a [master branch](https://github.com/refilc/naplo/tree/master)-en találod**. Kérjük ide Commit-olj és ide célozd a Fork-odból a Pull Request-edet. Írd le benne, hogy mit változtattál és ha lehet, csatolj képernyőképet is.
Minél gyakrabban készíts minél részletesebben elnevezett Commit-okat, hogy mások is el tudjanak igazodni az általad beküldött kódban. Minél gyakrabban készíts minél részletesebben elnevezett Commit-okat, hogy mások is el tudjanak igazodni az általad beküldött kódban.
--- ---
Az általad fejlesztett funkciók mellé a Changelog-ba odakerül a GitHub felhasználóneved. Az általad fejlesztett funkciók mellé a Changelog-ba odakerül a GitHub felhasználóneved.
Ha jelentős és rendszeres hozzájáruló vagy, Discord-on megkaphatod a `Contributor` rangot, valamint kaphatsz kedvezményt a reFilc+ előfizetésekből és Merch-ekből! Ha jelentős és rendszeres hozzájáruló vagy, Discord-on megkaphatod a `DEV` rangot.
Ha bárhol elakadtál vagy kérdésed van, keress bátran Discord-on! Ha bárhol elakadtál vagy kérdésed van, keress bátran Discordon!
**Jó fejlesztést kívánunk!** **Jó fejlesztést kívánunk!**

119
README.md
View File

@ -1,67 +1,52 @@
<p align=center> <p align=center>
<img src="https://raw.githubusercontent.com/Laky2k8/Refilc-2-Episode-1/refs/heads/master/refilc-2-real.png" width=150> <img src="https://media.discordapp.net/attachments/1111727410677825596/1113217167513624646/reFilc_Logo_Squircle.png?width=671&height=671" width=150>
<h1 align=center><b>reFilc</b></h1> <h1 align=center><b>reFilc</b></h1>
</p> </p>
#### Nem hivatalos e-napló alkalmazás az e-KRÉTA rendszerhez - tanulóktól, tanulóknak. #### Nem hivatalos e-napló alkalmazás az e-KRÉTA rendszerhez - tanulóktól, tanulóknak.
[![Downloads](https://img.shields.io/github/downloads-pre/refilc/naplo/total?&logo=github&label=Downloads)](https://github.com/refilc/naplo/releases) &nbsp; [![Discord](https://img.shields.io/discord/1111649116020285532?logo=discord&label=Discord)](https://discord.gg/refilc-1111649116020285532) [![Downloads](https://img.shields.io/github/downloads-pre/refilc/naplo/total?&logo=github&label=Downloads)](https://github.com/refilc/naplo/releases) &nbsp; [![Discord](https://img.shields.io/discord/1111649116020285532?logo=discord&label=Discord)](https://dc.refilc.hu)
## Környezet felállítása ## Setup
### Source code letöltése ### Clone the project
*Az építhéshez szükséged lesz a refilc_plus repora is, amit itt találsz: [student-plus](https://git.qwit.cloud/refilc/student-plus)* ```sh
git clone https://github.com/refilc/naplo
```sh cd naplo
git clone https://git.qwit.cloud/refilc/student-legacy.git --recursive ```
cd naplo
# ha ez nem töltött le refilc plus repoba értelmes dolgokat futtasd a többi parancsot is ### Install packages
rm -rf refilc_plus
git clone https://git.qwit.cloud/refilc/student-plus.git refilc_plus Run `fix-pub.sh`
```
### Run the app
### Csomagok telepítése
```sh
Menj be minden mappába és futtasd a következő parancsokat: cd filcnaplo
```sh flutter run
flutter clean ```
flutter pub get
``` ### Contribution
### Alkalmazás építése **Nézd meg a [Contribution guide](CONTRIBUTING.md)-ot!**
```sh Az összes (ugyan azon verzióhoz tartozó) contribution meg fog jelenni a release-nél. Kérjük, írd le a Discord nevedet a Description-be, hogy adhassunk rangot.
cd refilc
flutter build apk --release -------
```
# Team
*Ez egy apk fájlt fog építeni*
**kima:** head developer / project manager
### Contribution
**Reiner, pdf, Pearoo, Zizi:** community- and project manager / developer
**Nézd meg a [Contribution guide](CONTRIBUTING.md)-ot!**
**vrolandd, TMarccci:** head developer
Az összes (ugyan azon verzióhoz tartozó) contribution meg fog jelenni a release-nél. Kérjük, írd le a Discord nevedet a Description-be, hogy adhassunk rangot.
**dwe., xou, SebRHQ:** designer
-------
**Péter:** video editor
# Csapatunk
**annon:** a régi Filc Napló fejlesztője (ez az app, ha bár sokban változott, alapjaiban a Filc-re épül)
**Management**
- Zypherift <sup>Ez a projekt egy fork; az eredeti projektet megtaláljátok itt: [filc/naplo-archive](https://github.com/filc/naplo-archive) (köszi, annon)</sup>
- hayn
- Pearoo
- Zizi
- mnus
- xou
**Designerek**
- dwe
- xou
**vrolandd, TMarccci:** head developer
**Péter:** video editor
***annon:** a régi Filc Napló fejlesztője (ez az app, ha bár sokban változott, alapjaiban a Filc-re épül)*

13
changelog.md Normal file
View File

@ -0,0 +1,13 @@
What's new:
- design tweak
- new premium ui
- premium fix
- rounding fix
- graph percentage fix
- fail warning
- Widget
- fix sent messages
- fix ios live activities
- Hibajavítások 🐛
- **Megérkezett a Filc Premium!**

View File

@ -1,7 +0,0 @@
cd refilc && flutter pub outdated && cd ..
cd refilc_kreta_api && flutter pub outdated && cd ..
cd refilc_mobile_ui && flutter pub outdated && cd ..
# cd refilc_desktop_ui && flutter pub upgrade && cd ..
cd refilc_plus && flutter pub outdated && cd ..
echo Outdated version list above.

30
filcnaplo/.metadata Normal file
View File

@ -0,0 +1,30 @@
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled.
version:
revision: f468f3366c26a5092eb964a230ce7892fda8f2f8
channel: stable
project_type: app
# Tracks metadata for the flutter migrate command
migration:
platforms:
- platform: root
create_revision: f468f3366c26a5092eb964a230ce7892fda8f2f8
base_revision: f468f3366c26a5092eb964a230ce7892fda8f2f8
- platform: web
create_revision: f468f3366c26a5092eb964a230ce7892fda8f2f8
base_revision: f468f3366c26a5092eb964a230ce7892fda8f2f8
# User provided section
# List of Local paths (relative to this file) that should be
# ignored by the migrate tool.
#
# Files that are not part of the templates will be ignored by default.
unmanaged_files:
- 'lib/main.dart'
- 'ios/Runner.xcodeproj/project.pbxproj'

View File

@ -1,3 +1,3 @@
# refilc # refilc
Main lib Main lib

View File

@ -0,0 +1,29 @@
# This file configures the analyzer, which statically analyzes Dart code to
# check for errors, warnings, and lints.
#
# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
# invoked from the command line by running `flutter analyze`.
# The following line activates a set of recommended lints for Flutter apps,
# packages, and plugins designed to encourage good coding practices.
include: package:flutter_lints/flutter.yaml
linter:
# The lint rules applied to this project can be customized in the
# section below to disable rules from the `package:flutter_lints/flutter.yaml`
# included above or to enable additional rules. A list of all available lints
# and their documentation is published at
# https://dart-lang.github.io/linter/lints/index.html.
#
# Instead of disabling a lint rule for the entire project in the
# section below, it can also be suppressed for a single line of code
# or a specific dart file by using the `// ignore: name_of_lint` and
# `// ignore_for_file: name_of_lint` syntax on the line or in the file
# producing the lint.
rules:
# avoid_print: false # Uncomment to disable the `avoid_print` rule
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
# Additional information about this file can be found at
# https://dart.dev/guides/language/analysis-options

View File

@ -0,0 +1,99 @@
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
throw new GradleException("Undefined VersionCode")
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
throw new GradleException("Undefined VersionName")
}
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file("key.properties")
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
android {
compileSdkVersion rootProject.ext.compileSdkVersion
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
lintOptions {
disable 'InvalidPackage'
disable "Instantiatable"
checkReleaseBuilds false
abortOnError false
}
defaultConfig {
applicationId "hu.refilc.naplo"
minSdkVersion 21
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
compileOptions {
// Flag to enable support for the new language APIs
coreLibraryDesugaringEnabled true
// Sets Java compatibility to Java 8
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
shrinkResources false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
buildFeatures {
viewBinding true
}
}
flutter {
source '../..'
}
dependencies {
implementation 'com.android.support:multidex:2.0.1'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'joda-time:joda-time:2.9.4'
androidTestImplementation 'androidx.test:runner:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
implementation 'androidx.window:window:1.0.0'
implementation 'androidx.window:window-java:1.0.0'
}

View File

@ -0,0 +1,5 @@
-keep class io.flutter.plugin.editing.** { *; }
-keep class androidx.lifecycle.DefaultLifecycleObserver
-keep class com.pauldemarco.flutter_blue.** { *; }
-keep class com.mr.flutter.plugin.filepicker.** { *; }
-keep class com.shockwave.**

View File

@ -1,8 +1,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="hu.refilc.naplo"> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="hu.refilc.naplo">
<!-- Permissions --> <!-- Permissions -->
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" /> <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
</manifest> </manifest>

View File

@ -0,0 +1,86 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" package="hu.refilc.naplo">
<application android:name="${applicationName}" android:label="reFilc" tools:replace="android:label" android:icon="@mipmap/ic_launcher"
android:requestLegacyExternalStorage="true">
<activity android:exported="true" android:name="hu.refilc.naplo.MainActivity"
android:launchMode="singleTop" android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize"
android:showWhenLocked="true"
android:turnScreenOn="true">
<meta-data android:name="io.flutter.embedding.android.SplashScreenDrawable"
android:resource="@drawable/launch_background" />
<meta-data android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- Accepts URIs that begin with https://api.refilcapp.hu -->
<data
android:scheme="https"
android:host="api.refilcapp.hu"
android:pathPrefix="/v1/auth/callback" />
</intent-filter>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- Accepts URIs that begin with https://refilc.hu -->
<data
android:scheme="https"
android:host="refilc.hu"
android:pathPrefix="/app" />
</intent-filter>
</activity>
<meta-data android:name="flutterEmbedding" android:value="2" />
<receiver android:name="hu.refilc.naplo.widget_timetable.WidgetTimetable"
android:exported="true">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="list_widget.ACTION_WIDGET_CLICK_NAV_LEFT" />
<action android:name="list_widget.ACTION_WIDGET_CLICK_NAV_RIGHT" />
<action android:name="list_widget.ACTION_WIDGET_CLICK_NAV_TODAY" />
<action android:name="list_widget.ACTION_WIDGET_CLICK_NAV_REFRESH" />
<action android:name="list_widget.ACTION_WIDGET_CLICK_BUY_PREMIUM" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/home_widget_test_info" />
</receiver>
<service android:name="hu.refilc.naplo.widget_timetable.WidgetTimetableService"
android:permission="android.permission.BIND_REMOTEVIEWS" />
<receiver android:name="es.antonborri.home_widget.HomeWidgetBackgroundReceiver"
android:exported="true">
<intent-filter>
<action android:name="es.antonborri.home_widget.action.BACKGROUND" />
</intent-filter>
</receiver>
<service android:name="es.antonborri.home_widget.HomeWidgetBackgroundService"
android:permission="android.permission.BIND_JOB_SERVICE" android:exported="true" />
</application>
<meta-data android:name="flutterEmbedding" android:value="2" />
<!-- Permissions -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
</manifest>

View File

@ -0,0 +1,7 @@
package hu.refilc.naplo;
import io.flutter.embedding.android.FlutterActivity;
public class MainActivity extends FlutterActivity {
}

View File

@ -0,0 +1,119 @@
package hu.refilc.naplo.database;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import java.sql.SQLException;
import hu.refilc.naplo.database.SQLiteHelper;
public class DBManager {
private Context context;
private SQLiteDatabase database;
private SQLiteHelper dbHelper;
public DBManager(Context c) {
this.context = c;
}
public DBManager open() throws SQLException {
this.dbHelper = new SQLiteHelper(this.context);
this.database = this.dbHelper.getWritableDatabase();
return this;
}
public void close() {
this.dbHelper.close();
}
public Cursor fetchWidget(int wid) {
Cursor cursor = this.database.query(SQLiteHelper.TABLE_NAME_WIDGETS, new String[]{SQLiteHelper._ID, SQLiteHelper.DAY_SEL}, SQLiteHelper._ID + " = " + wid, null, null, null, null);
if (cursor != null) {
cursor.moveToFirst();
}
return cursor;
}
public Cursor fetchTimetable() {
Cursor cursor = this.database.query(SQLiteHelper.TABLE_NAME_USER_DATA, new String[]{SQLiteHelper.TIMETABLE}, null, null, null, null, null);
if (cursor != null) {
cursor.moveToFirst();
}
return cursor;
}
public Cursor fetchLastUser() {
Cursor cursor = this.database.query(SQLiteHelper.TABLE_NAME_SETTINGS, new String[]{SQLiteHelper.LAST_ACCOUNT_ID}, null, null, null, null, null);
if (cursor != null) {
cursor.moveToFirst();
}
return cursor;
}
public Cursor fetchTheme() {
Cursor cursor = this.database.query(SQLiteHelper.TABLE_NAME_SETTINGS, new String[]{SQLiteHelper.THEME, SQLiteHelper.ACCENT_COLOR}, null, null, null, null, null);
if (cursor != null) {
cursor.moveToFirst();
}
return cursor;
}
public Cursor fetchPremiumToken() {
Cursor cursor = this.database.query(SQLiteHelper.TABLE_NAME_SETTINGS, new String[]{SQLiteHelper.PREMIUM_TOKEN}, null, null, null, null, null);
if (cursor != null) {
cursor.moveToFirst();
}
return cursor;
}
public Cursor fetchPremiumScopes() {
Cursor cursor = this.database.query(SQLiteHelper.TABLE_NAME_SETTINGS, new String[]{SQLiteHelper.PREMIUM_SCOPES}, null, null, null, null, null);
if (cursor != null) {
cursor.moveToFirst();
}
return cursor;
}
public Cursor fetchLocale() {
Cursor cursor = this.database.query(SQLiteHelper.TABLE_NAME_SETTINGS, new String[]{SQLiteHelper.LOCALE}, null, null, null, null, null);
if (cursor != null) {
cursor.moveToFirst();
}
return cursor;
}
public void deleteWidget(int _id) {
this.database.delete(SQLiteHelper.TABLE_NAME_WIDGETS, "_id=" + _id, null);
}
/*public void changeSettings(int _id, Map<String, String> map) {
ContentValues con = new ContentValues();
for(Map.Entry<String, String> e: map.entrySet()){
con.put(e.getKey(), e.getValue());
}
this.database.update(SQLiteHelper.TABLE_NAME_WIDGETS, con, "_id = " + _id, null);
}
public void insertSettings(int _id, Map<String, String> map) {
ContentValues con = new ContentValues();
for(Map.Entry<String, String> e: map.entrySet()){
con.put(e.getKey(), e.getValue());
//Log.d("Settings added", e.getKey() + " - " + e.getValue());
}
this.database.insert(SQLiteHelper.TABLE_NAME_WIDGETS, null, con);
}*/
public void insertSelDay(int _id, int day_sel) {
ContentValues con = new ContentValues();
con.put(SQLiteHelper._ID, _id);
con.put(SQLiteHelper.DAY_SEL, day_sel);
this.database.insert(SQLiteHelper.TABLE_NAME_WIDGETS, null, con);
}
public int update(int _id, int day_sel) {
ContentValues con = new ContentValues();
con.put(SQLiteHelper.DAY_SEL, day_sel);
return this.database.update(SQLiteHelper.TABLE_NAME_WIDGETS, con, SQLiteHelper._ID + " = " + _id, null);
}
}

View File

@ -0,0 +1,36 @@
package hu.refilc.naplo.database;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class SQLiteHelper extends SQLiteOpenHelper {
private static final String CREATE_TABLE_WIDGET = " create table widgets ( _id INTEGER NOT NULL, day_sel INTEGER NOT NULL);";
private static final String DB_NAME = "app.db";
private static final int DB_VERSION = 1;
public static final String _ID = "_id";
public static final String DAY_SEL = "day_sel";
public static final String TIMETABLE = "timetable";
public static final String LAST_ACCOUNT_ID = "last_account_id";
public static final String THEME = "theme";
public static final String PREMIUM_TOKEN = "premium_token";
public static final String PREMIUM_SCOPES = "premium_scopes";
public static final String LOCALE = "language";
public static final String ACCENT_COLOR = "accent_color";
public static final String TABLE_NAME_WIDGETS = "widgets";
public static final String TABLE_NAME_USER_DATA = "user_data";
public static final String TABLE_NAME_SETTINGS = "settings";
public SQLiteHelper(Context context) {
super(context, DB_NAME, null, 7);
}
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE_WIDGET);
}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS widgets");
onCreate(db);
}
}

View File

@ -0,0 +1,36 @@
package hu.refilc.naplo.utils;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import java.util.Calendar;
import java.util.Date;
public class Utils {
public static boolean hasNetwork(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnectedOrConnecting()) {
return true;
}
return false;
}
public static Date getWeekStartDate() {
Calendar calendar = Calendar.getInstance();
while (calendar.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) {
calendar.add(Calendar.DATE, -1);
}
return calendar.getTime();
}
public static Date getWeekEndDate() {
Calendar calendar = Calendar.getInstance();
while (calendar.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) {
calendar.add(Calendar.DATE, 1);
}
calendar.add(Calendar.DATE, -1);
return calendar.getTime();
}
}

View File

@ -0,0 +1,65 @@
package hu.refilc.naplo.utils;
import java.time.DayOfWeek;
import java.time.Duration;
import java.time.LocalDate;
public class Week {
private final LocalDate start;
private final LocalDate end;
private Week(LocalDate start, LocalDate end) {
this.start = start;
this.end = end;
}
public static Week current() {
return fromDate(LocalDate.now());
}
public static Week fromId(int id) {
LocalDate _now = getYearStart().plusDays(id * 7L);
return new Week(_now.minusDays(_now.getDayOfWeek().getValue() - 1), _now.plusDays(7 - _now.getDayOfWeek().getValue()));
}
public static Week fromDate(LocalDate date) {
return new Week(date.minusDays(date.getDayOfWeek().getValue() - 1), date.plusDays(7 - date.getDayOfWeek().getValue()));
}
public Week next() {
return Week.fromDate(start.plusDays(8));
}
public int id() {
return (int) Math.ceil(Duration.between(getYearStart().atStartOfDay(), start.atStartOfDay()).toDays() / 7f);
}
private static LocalDate getYearStart() {
LocalDate now = LocalDate.now();
LocalDate start = getYearStart(now.getYear());
return start.isBefore(now) ? start : getYearStart(now.getYear() -1);
}
private static LocalDate getYearStart(int year) {
LocalDate time = LocalDate.of(year, 9, 1);
if (time.getDayOfWeek() == DayOfWeek.SATURDAY)
return time.plusDays(2);
else if (time.getDayOfWeek() == DayOfWeek.SUNDAY)
return time.plusDays(1);
return time;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Week week = (Week) o;
return this.id() == week.id();
}
@Override
public int hashCode() {
return id();
}
}

View File

@ -0,0 +1,392 @@
package hu.refilc.naplo.widget_timetable;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.net.Uri;
import android.os.Build;
import android.util.Log;
import android.view.View;
import android.widget.RemoteViews;
import android.widget.Toast;
import org.joda.time.DateTime;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.time.DayOfWeek;
import java.time.format.TextStyle;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.HashMap;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import hu.refilc.naplo.database.DBManager;
import hu.refilc.naplo.MainActivity;
import hu.refilc.naplo.R;
import hu.refilc.naplo.utils.Week;
import static android.app.PendingIntent.FLAG_UPDATE_CURRENT;
import es.antonborri.home_widget.HomeWidgetBackgroundIntent;
import es.antonborri.home_widget.HomeWidgetLaunchIntent;
import es.antonborri.home_widget.HomeWidgetProvider;
public class WidgetTimetable extends HomeWidgetProvider {
private static final String ACTION_WIDGET_CLICK_NAV_LEFT = "list_widget.ACTION_WIDGET_CLICK_NAV_LEFT";
private static final String ACTION_WIDGET_CLICK_NAV_RIGHT = "list_widget.ACTION_WIDGET_CLICK_NAV_RIGHT";
private static final String ACTION_WIDGET_CLICK_NAV_TODAY = "list_widget.ACTION_WIDGET_CLICK_NAV_TODAY";
private static final String ACTION_WIDGET_CLICK_NAV_REFRESH = "list_widget.ACTION_WIDGET_CLICK_NAV_REFRESH";
private static final String ACTION_WIDGET_CLICK_BUY_PREMIUM = "list_widget.ACTION_WIDGET_CLICK_BUY_PREMIUM";
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds, SharedPreferences widgetData) {
for (int i = 0; i < appWidgetIds.length; i++) {
RemoteViews views = generateView(context, appWidgetIds[i]);
if(premiumEnabled(context) && userLoggedIn(context)) {
int rday = selectDay(context, appWidgetIds[i], 0, true);
views.setTextViewText(R.id.nav_current, convertDayOfWeek(context, rday));
}
pushUpdate(context, views, appWidgetIds[i]);
}
}
public static void pushUpdate(Context context, RemoteViews remoteViews, int appWidgetSingleId) {
AppWidgetManager manager = AppWidgetManager.getInstance(context);
manager.updateAppWidget(appWidgetSingleId, remoteViews);
manager.notifyAppWidgetViewDataChanged(appWidgetSingleId, R.id.widget_list);
}
public static RemoteViews generateView(Context context, int appId) {
Intent serviceIntent = new Intent(context, WidgetTimetableService.class);
serviceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appId);
serviceIntent.setData(Uri.parse(serviceIntent.toUri(Intent.URI_INTENT_SCHEME)));
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_timetable);
views.setViewVisibility(R.id.need_premium, View.GONE);
views.setViewVisibility(R.id.need_login, View.GONE);
views.setViewVisibility(R.id.tt_grid_cont, View.GONE);
if(!userLoggedIn(context)) {
views.setViewVisibility(R.id.need_login, View.VISIBLE);
views.setOnClickPendingIntent(R.id.open_login, makePending(context, ACTION_WIDGET_CLICK_BUY_PREMIUM, appId));
} else if(premiumEnabled(context)) {
views.setViewVisibility(R.id.tt_grid_cont, View.VISIBLE);
views.setOnClickPendingIntent(R.id.nav_to_left, makePending(context, ACTION_WIDGET_CLICK_NAV_LEFT, appId));
views.setOnClickPendingIntent(R.id.nav_to_right, makePending(context, ACTION_WIDGET_CLICK_NAV_RIGHT, appId));
views.setOnClickPendingIntent(R.id.nav_current, makePending(context, ACTION_WIDGET_CLICK_NAV_TODAY, appId));
views.setOnClickPendingIntent(R.id.nav_refresh, makePending(context, ACTION_WIDGET_CLICK_NAV_REFRESH, appId));
views.setRemoteAdapter(R.id.widget_list, serviceIntent);
views.setEmptyView(R.id.widget_list, R.id.empty_view);
} else {
views.setViewVisibility(R.id.need_premium, View.VISIBLE);
views.setOnClickPendingIntent(R.id.buy_premium, makePending(context, ACTION_WIDGET_CLICK_BUY_PREMIUM, appId));
}
return views;
}
static PendingIntent makePending(Context context, String action, int appWidgetId) {
Intent activebtnnext = new Intent(context, WidgetTimetable.class);
activebtnnext.setAction(action);
activebtnnext.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
return PendingIntent.getBroadcast(context, appWidgetId, activebtnnext , PendingIntent.FLAG_IMMUTABLE);
}
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
if(intent.hasExtra(AppWidgetManager.EXTRA_APPWIDGET_ID)) {
int appId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
RemoteViews views = generateView(context, appId);
try {
if(premiumEnabled(context) && userLoggedIn(context)) {
if (intent.getAction().equals(ACTION_WIDGET_CLICK_NAV_LEFT)) {
int rday = selectDay(context, appId, -1, false);
views.setTextViewText(R.id.nav_current, convertDayOfWeek(context, rday));
pushUpdate(context, views, appId);
} else if (intent.getAction().equals(ACTION_WIDGET_CLICK_NAV_RIGHT)) {
int rday = selectDay(context, appId, 1, false);
views.setTextViewText(R.id.nav_current, convertDayOfWeek(context, rday));
pushUpdate(context, views, appId);
} else if (intent.getAction().equals(ACTION_WIDGET_CLICK_NAV_TODAY)) {
int rday = getToday(context);
setSelectedDay(context, appId, rday);
views.setTextViewText(R.id.nav_current, convertDayOfWeek(context, rday));
pushUpdate(context, views, appId);
} else if (intent.getAction().equals(ACTION_WIDGET_CLICK_NAV_REFRESH)) {
PendingIntent pendingIntent = HomeWidgetLaunchIntent.INSTANCE.getActivity(context, MainActivity.class, Uri.parse("timetable://refresh"));
pendingIntent.send();
} else if (intent.getAction().equals("android.appwidget.action.APPWIDGET_DELETED")) {
DBManager dbManager = new DBManager(context.getApplicationContext());
try {
dbManager.open();
dbManager.deleteWidget(appId);
dbManager.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
if(intent.getAction().equals(ACTION_WIDGET_CLICK_BUY_PREMIUM)) {
PendingIntent pendingIntent = HomeWidgetLaunchIntent.INSTANCE.getActivity(context, MainActivity.class, Uri.parse("settings://premium"));
pendingIntent.send();
}
}
catch (Exception e) {
e.printStackTrace();
}
}
}
public static String convertDayOfWeek(Context context, int rday) {
/*if(rday == -1) return DayOfWeek.of(1).getDisplayName(TextStyle.FULL, new Locale("hu", "HU"));
String dayOfWeek = DayOfWeek.of(rday + 1).getDisplayName(TextStyle.FULL, new Locale("hu", "HU"));*/
String dayOfWeek = "Unknown";
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
Locale loc = getLocale(context);
if (rday == -1)
return DayOfWeek.of(1).getDisplayName(TextStyle.FULL, loc);
dayOfWeek = DayOfWeek.of(rday + 1).getDisplayName(TextStyle.FULL, loc);
}
return dayOfWeek.substring(0, 1).toUpperCase() + dayOfWeek.substring(1).toLowerCase();
}
public static void setSelectedDay(Context context, int wid, int day) {
DBManager dbManager = new DBManager(context.getApplicationContext());
try {
dbManager.open();
dbManager.update(wid, day);
dbManager.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static int getToday(Context context) {
int rday = new DateTime().getDayOfWeek() - 1;
List<JSONArray> s = genJsonDays(context);
try {
if(checkIsAfter(s, rday)) rday += 1;
} catch (Exception e) {
e.printStackTrace();
}
return retDay(rday, s.size());
}
public static int selectDay(Context context, int wid, int add, Boolean afterSubjects) {
DBManager dbManager = new DBManager(context.getApplicationContext());
try {
dbManager.open();
Cursor cursor = dbManager.fetchWidget(wid);
List<JSONArray> s = genJsonDays(context);
int retday = new DateTime().getDayOfWeek() - 1;
if(cursor.getCount() != 0) retday = retDay(cursor.getInt(1) + add, s.size());
if(afterSubjects) if(checkIsAfter(s, retday)) retday += 1;
retday = retDay(retday, s.size());
if(cursor.getCount() == 0) dbManager.insertSelDay(wid, retday);
else dbManager.update(wid, retday);
dbManager.close();
return retday;
} catch (Exception e) {
e.printStackTrace();
}
return 0;
}
public static Boolean checkIsAfter(List<JSONArray> s, int retday) throws Exception {
retday = retDay(retday, s.size());
String vegIdopont = s.get(retday).getJSONObject(s.get(retday).length() - 1).getString("VegIdopont");
return new DateTime().isAfter(new DateTime(vegIdopont));
}
public static int retDay(int retday, int size) {
if (retday < 0) retday = size - 1;
else if (retday > size - 1) retday = 0;
return retday;
}
public static List<JSONArray> genJsonDays(Context context) {
List<JSONArray> genDays = new ArrayList<>();
Map<String, JSONArray> dayMap = new HashMap<>();
DBManager dbManager = new DBManager(context.getApplicationContext());
try {
dbManager.open();
Cursor ct = dbManager.fetchTimetable();
if (ct.getCount() == 0) {
return genDays;
}
JSONObject fetchedTimetable = new JSONObject(ct.getString(0));
String currentWeek = String.valueOf(Week.current().id());
JSONArray week = fetchedTimetable.getJSONArray(currentWeek);
// Organize lessons into dates
for (int i = 0; i < week.length(); i++) {
try {
JSONObject entry = week.getJSONObject(i);
String date = entry.getString("Datum");
dayMap.computeIfAbsent(date, k -> new JSONArray()).put(entry);
} catch (JSONException e) {
e.printStackTrace();
}
}
genDays.addAll(dayMap.values());
// Sort the 'genDays' list of JSON based on the start time of the first entry
genDays.sort((day1, day2) -> {
try {
// Extract the start time of the first entry in each day's JSON
String startTime1 = day1.getJSONObject(0).getString("KezdetIdopont");
String startTime2 = day2.getJSONObject(0).getString("KezdetIdopont");
// Compare the start times and return the result for sorting
return startTime1.compareTo(startTime2);
} catch (JSONException e) {
e.printStackTrace();
return 0;
}
});
} catch (Exception e) {
e.printStackTrace();
} finally {
dbManager.close();
}
return genDays;
}
public static String zeroPad(int value, int padding){
StringBuilder b = new StringBuilder();
b.append(value);
while(b.length() < padding){
b.insert(0,"0");
}
return b.toString();
}
public static Locale getLocale(Context context) {
DBManager dbManager = new DBManager(context.getApplicationContext());
try {
dbManager.open();
String loc = dbManager.fetchLocale().getString(0);
dbManager.close();
if(loc.equals("hu") || loc.equals("de")) {
return new Locale(loc, loc.toUpperCase());
}
} catch (Exception e) {
e.printStackTrace();
}
return new Locale("en", "GB");
}
public static boolean premiumEnabled(Context context) {
DBManager dbManager = new DBManager(context.getApplicationContext());
try {
dbManager.open();
String premium_token = dbManager.fetchPremiumToken().getString(0);
String premium_scopes_raw = dbManager.fetchPremiumScopes().getString(0);
dbManager.close();
JSONArray arr = new JSONArray(premium_scopes_raw);
List<String> premium_scopes = new ArrayList<>();
for(int i = 0; i < arr.length(); i++){
String scope = arr.getString(i);
premium_scopes.add(scope.substring(scope.lastIndexOf('.') + 1));
}
if(!premium_token.equals("") && (premium_scopes.contains("*") || premium_scopes.contains("TIMETALBE_WIDGET"))) {
return true;
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
public static boolean userLoggedIn(Context context) {
return !lastUserId(context).equals("");
}
public static String lastUserId(Context context) {
DBManager dbManager = new DBManager(context.getApplicationContext());
try {
dbManager.open();
Cursor cursor = dbManager.fetchLastUser();
dbManager.close();
if(cursor != null && !cursor.getString(0).equals("")) {
String last_user = cursor.getString(0);
return last_user;
}
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
@Override
public void onEnabled(Context context) {
}
@Override
public void onDisabled(Context context) {
}
}

View File

@ -0,0 +1,356 @@
package hu.refilc.naplo.widget_timetable;
import android.appwidget.AppWidgetManager;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.os.Build;
import android.util.Log;
import android.view.View;
import android.widget.RemoteViews;
import android.widget.RemoteViewsService;
import org.joda.time.DateTime;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import hu.refilc.naplo.database.DBManager;
import hu.refilc.naplo.R;
public class WidgetTimetableDataProvider implements RemoteViewsService.RemoteViewsFactory {
private Context context;
private int appWidgetId;
private int rday = 0;
private int theme;
private Integer[] colorValues;
List<Lesson> day_subjects = new ArrayList<>();
List<Integer> lessonIndexes = new ArrayList<>();
Item witem;
/* Default values */
static class Item {
int Layout;
int NumVisibility;
int NameVisibility;
int NameNodescVisibility;
int DescVisibility;
int RoomVisibility;
int TimeVisibility;
int NumColor;
int NameColor;
int NameNodescColor;
int DescColor;
Integer[] NameNodescPadding = {0, 0, 0, 0};
public Item(int Layout, int NumVisibility,int NameVisibility,int NameNodescVisibility,int DescVisibility,int RoomVisibility,int TimeVisibility,int NumColor,int NameColor,int NameNodescColor,int DescColor) {
this.Layout = Layout;
this.NumVisibility = NumVisibility;
this.NameVisibility = NameVisibility;
this.NameNodescVisibility = NameNodescVisibility;
this.DescVisibility = DescVisibility;
this.RoomVisibility = RoomVisibility;
this.TimeVisibility = TimeVisibility;
this.NumColor = NumColor;
this.NameColor = NameColor;
this.NameNodescColor = NameNodescColor;
this.DescColor = DescColor;
}
}
static class Lesson {
String status;
String lessonIndex;
String lessonName;
String lessonTopic;
String lessonRoom;
long lessonStart;
long lessonEnd;
String substituteTeacher;
public Lesson(String status, String lessonIndex,String lessonName,String lessonTopic, String lessonRoom,long lessonStart,long lessonEnd,String substituteTeacher) {
this.status = status;
this.lessonIndex = lessonIndex;
this.lessonName = lessonName;
this.lessonTopic = lessonTopic;
this.lessonRoom = lessonRoom;
this.lessonStart = lessonStart;
this.lessonEnd = lessonEnd;
this.substituteTeacher = substituteTeacher;
}
}
Integer[] itemNameNodescPadding = {0, 0, 0, 0};
public WidgetTimetableDataProvider(Context context, Intent intent) {
this.context = context;
this.appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
this.theme = getThemeAccent(context);
this.colorValues = new Integer[]{R.color.filc,
R.color.blue_shade300,
R.color.green_shade300,
R.color.lime_shade300,
R.color.yellow_shade300,
R.color.orange_shade300,
R.color.red_shade300,
R.color.pink_shade300,
R.color.purple_shade300};
}
@Override
public void onCreate() {
initData();
}
@Override
public void onDataSetChanged() {
initData();
}
@Override
public void onDestroy() {
}
@Override
public int getCount() {
return day_subjects.size();
}
public void setLayout(final RemoteViews view) {
/* Visibilities */
view.setViewVisibility(R.id.tt_item_num, witem.NumVisibility);
view.setViewVisibility(R.id.tt_item_name, witem.NameVisibility);
view.setViewVisibility(R.id.tt_item_name_nodesc, witem.NameNodescVisibility);
view.setViewVisibility(R.id.tt_item_desc, witem.DescVisibility);
view.setViewVisibility(R.id.tt_item_room, witem.RoomVisibility);
view.setViewVisibility(R.id.tt_item_time, witem.TimeVisibility);
/* backgroundResources */
view.setInt(R.id.main_lay, "setBackgroundResource", witem.Layout);
/* Paddings */
view.setViewPadding(R.id.tt_item_name_nodesc, witem.NameNodescPadding[0], witem.NameNodescPadding[1], witem.NameNodescPadding[2], witem.NameNodescPadding[3]);
/* Text Colors */
view.setInt(R.id.tt_item_num, "setTextColor", getColor(context, witem.NumColor));
view.setInt(R.id.tt_item_name, "setTextColor", getColor(context, witem.NameColor));
view.setInt(R.id.tt_item_name_nodesc, "setTextColor", getColor(context, witem.NameNodescColor));
view.setInt(R.id.tt_item_desc, "setTextColor", getColor(context, witem.DescColor));
}
public int getColor(Context context, int color) {
return context.getResources().getColor(color);
}
@Override
public RemoteViews getViewAt(int position) {
RemoteViews view = new RemoteViews(context.getPackageName(), R.layout.timetable_item);
witem = defaultItem(theme);
Lesson curr_subject = day_subjects.get(position);
if (curr_subject.status.equals("empty")) {
witem.NumColor = R.color.text_miss_num;
witem.TimeVisibility = View.GONE;
witem.RoomVisibility = View.GONE;
witem.NameNodescColor = R.color.text_miss;
}
if (!curr_subject.substituteTeacher.equals("null")) {
witem.NumColor = R.color.yellow;
witem.Layout = R.drawable.card_layout_tile_helyetesitett;
}
if (curr_subject.status.equals("Elmaradt")) {
witem.NumColor = R.color.red;
witem.Layout = R.drawable.card_layout_tile_elmarad;
} else if (curr_subject.status.equals("TanevRendjeEsemeny")) {
witem.NumVisibility = View.GONE;
witem.TimeVisibility = View.GONE;
witem.RoomVisibility = View.GONE;
witem.NameNodescPadding[0] = 50;
witem.NameNodescPadding[2] = 50;
witem.NameNodescColor = R.color.text_miss;
}
if (curr_subject.lessonTopic.equals("null")) {
witem.DescVisibility = View.GONE;
witem.NameVisibility = View.GONE;
witem.NameNodescVisibility = View.VISIBLE;
}
setLayout(view);
String lessonIndexTrailing = curr_subject.lessonIndex.equals("+") ? "" : ".";
view.setTextViewText(R.id.tt_item_num, curr_subject.lessonIndex + lessonIndexTrailing);
view.setTextViewText(R.id.tt_item_name, curr_subject.lessonName);
view.setTextViewText(R.id.tt_item_name_nodesc, curr_subject.lessonName);
view.setTextViewText(R.id.tt_item_desc, curr_subject.lessonTopic);
view.setTextViewText(R.id.tt_item_room, curr_subject.lessonRoom);
if(curr_subject.lessonStart != 0 && curr_subject.lessonEnd != 0)
view.setTextViewText(R.id.tt_item_time, WidgetTimetable.zeroPad(new DateTime(curr_subject.lessonStart).getHourOfDay(), 2) + ":" + WidgetTimetable.zeroPad(new DateTime(curr_subject.lessonStart).getMinuteOfHour(), 2) +
"\n" + WidgetTimetable.zeroPad(new DateTime(curr_subject.lessonEnd).getHourOfDay(), 2) + ":" + WidgetTimetable.zeroPad(new DateTime(curr_subject.lessonEnd).getMinuteOfHour(),2));
return view;
}
@Override
public RemoteViews getLoadingView() {
return null;
}
@Override
public int getViewTypeCount() {
return 1;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public boolean hasStableIds() {
return true;
}
private void initData() {
theme = getThemeAccent(context);
rday = WidgetTimetable.selectDay(context, appWidgetId, 0, false);
day_subjects.clear();
lessonIndexes.clear();
try {
List<JSONArray> arr = WidgetTimetable.genJsonDays(context);
if(arr.isEmpty()) {
return;
}
JSONArray arr_lessons = WidgetTimetable.genJsonDays(context).get(rday);
for (int i = 0; i < arr_lessons.length(); i++) {
JSONObject obj_lessons = arr_lessons.getJSONObject(i);
day_subjects.add(jsonToLesson(obj_lessons));
}
} catch (JSONException e) {
e.printStackTrace();
}
if(day_subjects.size() > 0) {
Collections.sort(day_subjects, new Comparator<Lesson>() {
public int compare(Lesson o1, Lesson o2) {
return new DateTime(o1.lessonStart).compareTo(new DateTime(o2.lessonStart));
}
});
for (int i = 0; i < day_subjects.size(); i++) {
if(!day_subjects.get(i).lessonIndex.equals("+")) {
lessonIndexes.add(Integer.valueOf(day_subjects.get(i).lessonIndex));
}
}
if(lessonIndexes.size() > 0) {
int lessonsChecked = Collections.min(lessonIndexes);
int i = 0;
while(lessonsChecked < Collections.max(lessonIndexes)) {
if(!lessonIndexes.contains(lessonsChecked)) {
day_subjects.add(i, emptyLesson(lessonsChecked));
}
lessonsChecked++;
i++;
}
}
}
}
public static Integer getThemeAccent(Context context) {
DBManager dbManager = new DBManager(context.getApplicationContext());
try {
dbManager.open();
Cursor cursor = dbManager.fetchTheme();
dbManager.close();
return cursor.getInt(1);
} catch (Exception e) {
e.printStackTrace();
}
return 0;
}
public Item defaultItem(int theme) {
return new Item(
R.drawable.card_layout_tile,
View.VISIBLE,
View.VISIBLE,
View.INVISIBLE,
View.VISIBLE,
View.VISIBLE,
View.VISIBLE,
colorValues[theme >= colorValues.length ? 0 : theme],
R.color.text,
R.color.text,
R.color.text_desc
);
}
public Lesson emptyLesson(int lessonIndex) {
return new Lesson("empty", String.valueOf(lessonIndex), "Lyukasóra", "null", "null", 0, 0, "null");
}
public Lesson jsonToLesson(JSONObject json) {
try {
String name = json.getString("Nev");
name = name.substring(0, 1).toUpperCase() + name.substring(1); // Capitalize name
return new Lesson(
json.getJSONObject("Allapot").getString("Nev"),
!json.getString("Oraszam").equals("null") ? json.getString("Oraszam") : "+",
name,
json.getString("Tema"),
json.getString("TeremNeve"),
new DateTime(json.getString("KezdetIdopont")).getMillis(),
new DateTime(json.getString("VegIdopont")).getMillis(),
json.getString("HelyettesTanarNeve")
);
}catch (Exception e) {
Log.d("Filc", "exception: " + e);
};
return null;
}
}

View File

@ -0,0 +1,12 @@
package hu.refilc.naplo.widget_timetable;
import android.content.Intent;
import android.os.Build;
import android.widget.RemoteViewsService;
public class WidgetTimetableService extends RemoteViewsService {
@Override
public RemoteViewsFactory onGetViewFactory(Intent intent) {
return new WidgetTimetableDataProvider(getApplicationContext(), intent);
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

View File

Before

Width:  |  Height:  |  Size: 146 KiB

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -1,13 +1,13 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp" android:width="24dp"
android:height="24dp" android:height="24dp"
android:viewportWidth="24" android:viewportWidth="24"
android:viewportHeight="24"> android:viewportHeight="24">
<path <path
android:pathData="M20,6l-11,11l-5,-5" android:pathData="M20,6l-11,11l-5,-5"
android:strokeLineJoin="round" android:strokeLineJoin="round"
android:strokeWidth="2" android:strokeWidth="2"
android:fillColor="#00000000" android:fillColor="#00000000"
android:strokeColor="#ff141516" android:strokeColor="#ff141516"
android:strokeLineCap="round"/> android:strokeLineCap="round"/>
</vector> </vector>

View File

@ -1,13 +1,13 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp" android:width="24dp"
android:height="24dp" android:height="24dp"
android:viewportWidth="24" android:viewportWidth="24"
android:viewportHeight="24"> android:viewportHeight="24">
<path <path
android:pathData="M15,18l-6,-6l6,-6" android:pathData="M15,18l-6,-6l6,-6"
android:strokeLineJoin="round" android:strokeLineJoin="round"
android:strokeWidth="2" android:strokeWidth="2"
android:fillColor="#00000000" android:fillColor="#00000000"
android:strokeColor="#ff141516" android:strokeColor="#ff141516"
android:strokeLineCap="round"/> android:strokeLineCap="round"/>
</vector> </vector>

View File

@ -1,13 +1,13 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp" android:width="24dp"
android:height="24dp" android:height="24dp"
android:viewportWidth="24" android:viewportWidth="24"
android:viewportHeight="24"> android:viewportHeight="24">
<path <path
android:pathData="M9,18l6,-6l-6,-6" android:pathData="M9,18l6,-6l-6,-6"
android:strokeLineJoin="round" android:strokeLineJoin="round"
android:strokeWidth="2" android:strokeWidth="2"
android:fillColor="#00000000" android:fillColor="#00000000"
android:strokeColor="#ff141516" android:strokeColor="#ff141516"
android:strokeLineCap="round"/> android:strokeLineCap="round"/>
</vector> </vector>

View File

@ -1,13 +1,13 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp" android:width="24dp"
android:height="24dp" android:height="24dp"
android:viewportWidth="24" android:viewportWidth="24"
android:viewportHeight="24"> android:viewportHeight="24">
<path <path
android:pathData="M12,2.69l5.66,5.66a8,8 0,1 1,-11.31 0z" android:pathData="M12,2.69l5.66,5.66a8,8 0,1 1,-11.31 0z"
android:strokeLineJoin="round" android:strokeLineJoin="round"
android:strokeWidth="2" android:strokeWidth="2"
android:fillColor="#00000000" android:fillColor="#00000000"
android:strokeColor="#ff141516" android:strokeColor="#ff141516"
android:strokeLineCap="round"/> android:strokeLineCap="round"/>
</vector> </vector>

View File

@ -1,170 +1,170 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp" android:width="108dp"
android:height="108dp" android:height="108dp"
android:viewportWidth="108" android:viewportWidth="108"
android:viewportHeight="108"> android:viewportHeight="108">
<path <path
android:fillColor="#3DDC84" android:fillColor="#3DDC84"
android:pathData="M0,0h108v108h-108z" /> android:pathData="M0,0h108v108h-108z" />
<path <path
android:fillColor="#00000000" android:fillColor="#00000000"
android:pathData="M9,0L9,108" android:pathData="M9,0L9,108"
android:strokeWidth="0.8" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" /> android:strokeColor="#33FFFFFF" />
<path <path
android:fillColor="#00000000" android:fillColor="#00000000"
android:pathData="M19,0L19,108" android:pathData="M19,0L19,108"
android:strokeWidth="0.8" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" /> android:strokeColor="#33FFFFFF" />
<path <path
android:fillColor="#00000000" android:fillColor="#00000000"
android:pathData="M29,0L29,108" android:pathData="M29,0L29,108"
android:strokeWidth="0.8" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" /> android:strokeColor="#33FFFFFF" />
<path <path
android:fillColor="#00000000" android:fillColor="#00000000"
android:pathData="M39,0L39,108" android:pathData="M39,0L39,108"
android:strokeWidth="0.8" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" /> android:strokeColor="#33FFFFFF" />
<path <path
android:fillColor="#00000000" android:fillColor="#00000000"
android:pathData="M49,0L49,108" android:pathData="M49,0L49,108"
android:strokeWidth="0.8" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" /> android:strokeColor="#33FFFFFF" />
<path <path
android:fillColor="#00000000" android:fillColor="#00000000"
android:pathData="M59,0L59,108" android:pathData="M59,0L59,108"
android:strokeWidth="0.8" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" /> android:strokeColor="#33FFFFFF" />
<path <path
android:fillColor="#00000000" android:fillColor="#00000000"
android:pathData="M69,0L69,108" android:pathData="M69,0L69,108"
android:strokeWidth="0.8" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" /> android:strokeColor="#33FFFFFF" />
<path <path
android:fillColor="#00000000" android:fillColor="#00000000"
android:pathData="M79,0L79,108" android:pathData="M79,0L79,108"
android:strokeWidth="0.8" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" /> android:strokeColor="#33FFFFFF" />
<path <path
android:fillColor="#00000000" android:fillColor="#00000000"
android:pathData="M89,0L89,108" android:pathData="M89,0L89,108"
android:strokeWidth="0.8" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" /> android:strokeColor="#33FFFFFF" />
<path <path
android:fillColor="#00000000" android:fillColor="#00000000"
android:pathData="M99,0L99,108" android:pathData="M99,0L99,108"
android:strokeWidth="0.8" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" /> android:strokeColor="#33FFFFFF" />
<path <path
android:fillColor="#00000000" android:fillColor="#00000000"
android:pathData="M0,9L108,9" android:pathData="M0,9L108,9"
android:strokeWidth="0.8" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" /> android:strokeColor="#33FFFFFF" />
<path <path
android:fillColor="#00000000" android:fillColor="#00000000"
android:pathData="M0,19L108,19" android:pathData="M0,19L108,19"
android:strokeWidth="0.8" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" /> android:strokeColor="#33FFFFFF" />
<path <path
android:fillColor="#00000000" android:fillColor="#00000000"
android:pathData="M0,29L108,29" android:pathData="M0,29L108,29"
android:strokeWidth="0.8" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" /> android:strokeColor="#33FFFFFF" />
<path <path
android:fillColor="#00000000" android:fillColor="#00000000"
android:pathData="M0,39L108,39" android:pathData="M0,39L108,39"
android:strokeWidth="0.8" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" /> android:strokeColor="#33FFFFFF" />
<path <path
android:fillColor="#00000000" android:fillColor="#00000000"
android:pathData="M0,49L108,49" android:pathData="M0,49L108,49"
android:strokeWidth="0.8" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" /> android:strokeColor="#33FFFFFF" />
<path <path
android:fillColor="#00000000" android:fillColor="#00000000"
android:pathData="M0,59L108,59" android:pathData="M0,59L108,59"
android:strokeWidth="0.8" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" /> android:strokeColor="#33FFFFFF" />
<path <path
android:fillColor="#00000000" android:fillColor="#00000000"
android:pathData="M0,69L108,69" android:pathData="M0,69L108,69"
android:strokeWidth="0.8" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" /> android:strokeColor="#33FFFFFF" />
<path <path
android:fillColor="#00000000" android:fillColor="#00000000"
android:pathData="M0,79L108,79" android:pathData="M0,79L108,79"
android:strokeWidth="0.8" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" /> android:strokeColor="#33FFFFFF" />
<path <path
android:fillColor="#00000000" android:fillColor="#00000000"
android:pathData="M0,89L108,89" android:pathData="M0,89L108,89"
android:strokeWidth="0.8" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" /> android:strokeColor="#33FFFFFF" />
<path <path
android:fillColor="#00000000" android:fillColor="#00000000"
android:pathData="M0,99L108,99" android:pathData="M0,99L108,99"
android:strokeWidth="0.8" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" /> android:strokeColor="#33FFFFFF" />
<path <path
android:fillColor="#00000000" android:fillColor="#00000000"
android:pathData="M19,29L89,29" android:pathData="M19,29L89,29"
android:strokeWidth="0.8" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" /> android:strokeColor="#33FFFFFF" />
<path <path
android:fillColor="#00000000" android:fillColor="#00000000"
android:pathData="M19,39L89,39" android:pathData="M19,39L89,39"
android:strokeWidth="0.8" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" /> android:strokeColor="#33FFFFFF" />
<path <path
android:fillColor="#00000000" android:fillColor="#00000000"
android:pathData="M19,49L89,49" android:pathData="M19,49L89,49"
android:strokeWidth="0.8" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" /> android:strokeColor="#33FFFFFF" />
<path <path
android:fillColor="#00000000" android:fillColor="#00000000"
android:pathData="M19,59L89,59" android:pathData="M19,59L89,59"
android:strokeWidth="0.8" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" /> android:strokeColor="#33FFFFFF" />
<path <path
android:fillColor="#00000000" android:fillColor="#00000000"
android:pathData="M19,69L89,69" android:pathData="M19,69L89,69"
android:strokeWidth="0.8" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" /> android:strokeColor="#33FFFFFF" />
<path <path
android:fillColor="#00000000" android:fillColor="#00000000"
android:pathData="M19,79L89,79" android:pathData="M19,79L89,79"
android:strokeWidth="0.8" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" /> android:strokeColor="#33FFFFFF" />
<path <path
android:fillColor="#00000000" android:fillColor="#00000000"
android:pathData="M29,19L29,89" android:pathData="M29,19L29,89"
android:strokeWidth="0.8" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" /> android:strokeColor="#33FFFFFF" />
<path <path
android:fillColor="#00000000" android:fillColor="#00000000"
android:pathData="M39,19L39,89" android:pathData="M39,19L39,89"
android:strokeWidth="0.8" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" /> android:strokeColor="#33FFFFFF" />
<path <path
android:fillColor="#00000000" android:fillColor="#00000000"
android:pathData="M49,19L49,89" android:pathData="M49,19L49,89"
android:strokeWidth="0.8" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" /> android:strokeColor="#33FFFFFF" />
<path <path
android:fillColor="#00000000" android:fillColor="#00000000"
android:pathData="M59,19L59,89" android:pathData="M59,19L59,89"
android:strokeWidth="0.8" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" /> android:strokeColor="#33FFFFFF" />
<path <path
android:fillColor="#00000000" android:fillColor="#00000000"
android:pathData="M69,19L69,89" android:pathData="M69,19L69,89"
android:strokeWidth="0.8" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" /> android:strokeColor="#33FFFFFF" />
<path <path
android:fillColor="#00000000" android:fillColor="#00000000"
android:pathData="M79,19L79,89" android:pathData="M79,19L79,89"
android:strokeWidth="0.8" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" /> android:strokeColor="#33FFFFFF" />
</vector> </vector>

View File

@ -1,30 +1,30 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt" xmlns:aapt="http://schemas.android.com/aapt"
android:width="108dp" android:width="108dp"
android:height="108dp" android:height="108dp"
android:viewportWidth="108" android:viewportWidth="108"
android:viewportHeight="108"> android:viewportHeight="108">
<path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z"> <path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
<aapt:attr name="android:fillColor"> <aapt:attr name="android:fillColor">
<gradient <gradient
android:endX="85.84757" android:endX="85.84757"
android:endY="92.4963" android:endY="92.4963"
android:startX="42.9492" android:startX="42.9492"
android:startY="49.59793" android:startY="49.59793"
android:type="linear"> android:type="linear">
<item <item
android:color="#44000000" android:color="#44000000"
android:offset="0.0" /> android:offset="0.0" />
<item <item
android:color="#00000000" android:color="#00000000"
android:offset="1.0" /> android:offset="1.0" />
</gradient> </gradient>
</aapt:attr> </aapt:attr>
</path> </path>
<path <path
android:fillColor="#FFFFFF" android:fillColor="#FFFFFF"
android:fillType="nonZero" android:fillType="nonZero"
android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z" android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
android:strokeWidth="1" android:strokeWidth="1"
android:strokeColor="#00000000" /> android:strokeColor="#00000000" />
</vector> </vector>

View File

@ -1,13 +1,13 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp" android:width="24dp"
android:height="24dp" android:height="24dp"
android:viewportWidth="24" android:viewportWidth="24"
android:viewportHeight="24"> android:viewportHeight="24">
<path <path
android:pathData="M12,2l7,19l-7,-4l-7,4l7,-19z" android:pathData="M12,2l7,19l-7,-4l-7,4l7,-19z"
android:strokeLineJoin="round" android:strokeLineJoin="round"
android:strokeWidth="2" android:strokeWidth="2"
android:fillColor="#00000000" android:fillColor="#00000000"
android:strokeColor="#ff141516" android:strokeColor="#ff141516"
android:strokeLineCap="round"/> android:strokeLineCap="round"/>
</vector> </vector>

View File

@ -1,27 +1,27 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp" android:width="24dp"
android:height="24dp" android:height="24dp"
android:viewportWidth="24" android:viewportWidth="24"
android:viewportHeight="24"> android:viewportHeight="24">
<path <path
android:pathData="M23,4l0,6l-6,0" android:pathData="M23,4l0,6l-6,0"
android:strokeLineJoin="round" android:strokeLineJoin="round"
android:strokeWidth="2" android:strokeWidth="2"
android:fillColor="#00000000" android:fillColor="#00000000"
android:strokeColor="#ff141516" android:strokeColor="#ff141516"
android:strokeLineCap="round"/> android:strokeLineCap="round"/>
<path <path
android:pathData="M1,20l0,-6l6,0" android:pathData="M1,20l0,-6l6,0"
android:strokeLineJoin="round" android:strokeLineJoin="round"
android:strokeWidth="2" android:strokeWidth="2"
android:fillColor="#00000000" android:fillColor="#00000000"
android:strokeColor="#ff141516" android:strokeColor="#ff141516"
android:strokeLineCap="round"/> android:strokeLineCap="round"/>
<path <path
android:pathData="M3.51,9a9,9 0,0 1,14.85 -3.36L23,10M1,14l4.64,4.36A9,9 0,0 0,20.49 15" android:pathData="M3.51,9a9,9 0,0 1,14.85 -3.36L23,10M1,14l4.64,4.36A9,9 0,0 0,20.49 15"
android:strokeLineJoin="round" android:strokeLineJoin="round"
android:strokeWidth="2" android:strokeWidth="2"
android:fillColor="#00000000" android:fillColor="#00000000"
android:strokeColor="#ff141516" android:strokeColor="#ff141516"
android:strokeLineCap="round"/> android:strokeLineCap="round"/>
</vector> </vector>

View File

@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?><!-- <?xml version="1.0" encoding="utf-8"?><!--
Background for widgets to make the rounded corners based on the Background for widgets to make the rounded corners based on the
appWidgetRadius attribute value appWidgetRadius attribute value
--> -->
<shape xmlns:android="http://schemas.android.com/apk/res/android" <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"> android:shape="rectangle">
<corners android:radius="?attr/appWidgetRadius" /> <corners android:radius="?attr/appWidgetRadius" />
<solid android:color="?android:attr/colorBackground" /> <solid android:color="?android:attr/colorBackground" />
</shape> </shape>

View File

@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?><!-- <?xml version="1.0" encoding="utf-8"?><!--
Background for views inside widgets to make the rounded corners based on the Background for views inside widgets to make the rounded corners based on the
appWidgetInnerRadius attribute value appWidgetInnerRadius attribute value
--> -->
<shape xmlns:android="http://schemas.android.com/apk/res/android" <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"> android:shape="rectangle">
<corners android:radius="?attr/appWidgetInnerRadius" /> <corners android:radius="?attr/appWidgetInnerRadius" />
<solid android:color="?android:attr/colorAccent" /> <solid android:color="?android:attr/colorAccent" />
</shape> </shape>

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#00FFFFFF"/> <solid android:color="@color/white"/>
<stroke android:width="1dp" android:color="#00FFFFFF" /> <stroke android:width="1dp" android:color="#D8E0E1" />
<corners android:topLeftRadius="14dp" android:topRightRadius="14dp"/> <corners android:radius="10dp"/>
<padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp"/> <padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp"/>
</shape> </shape>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#00FFFFFF"/> <solid android:color="#00FFFFFF"/>
<corners android:radius="10dp"/> <corners android:radius="10dp"/>
<padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp"/> <padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp"/>
</shape> </shape>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/light_red"/> <solid android:color="@color/light_red"/>
<corners android:radius="10dp"/> <corners android:radius="10dp"/>
<padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp"/> <padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp"/>
</shape> </shape>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/light_yellow"/> <solid android:color="@color/light_yellow"/>
<corners android:radius="10dp"/> <corners android:radius="10dp"/>
<padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp"/> <padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp"/>
</shape> </shape>

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/highlight_light"/> <solid android:color="@color/highlight_light"/>
<stroke android:width="1dp" android:color="@color/highlight_light" /> <stroke android:width="1dp" android:color="@color/highlight_light" />
<corners android:bottomLeftRadius="14dp" android:bottomRightRadius="14dp"/> <corners android:bottomLeftRadius="14dp" android:bottomRightRadius="14dp"/>
<padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp"/> <padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp"/>
</shape> </shape>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#00FFFFFF"/> <solid android:color="@color/highlight"/>
<stroke android:width="1dp" android:color="#00FFFFFF" /> <stroke android:width="1dp" android:color="@color/highlight" />
<corners android:bottomLeftRadius="14dp" android:bottomRightRadius="14dp"/> <corners android:bottomLeftRadius="14dp" android:bottomRightRadius="14dp"/>
<padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp"/> <padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp"/>
</shape> </shape>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/highlight_light"/> <solid android:color="@color/highlight_light"/>
<stroke android:width="1dp" android:color="@color/highlight_light" /> <stroke android:width="1dp" android:color="@color/highlight_light" />
<corners android:topLeftRadius="14dp" android:topRightRadius="14dp"/> <corners android:topLeftRadius="14dp" android:topRightRadius="14dp"/>
<padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp"/> <padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp"/>
</shape> </shape>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/highlight"/> <solid android:color="@color/highlight"/>
<stroke android:width="1dp" android:color="@color/highlight" /> <stroke android:width="1dp" android:color="@color/highlight" />
<corners android:radius="10dp"/> <corners android:topLeftRadius="14dp" android:topRightRadius="14dp"/>
<padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp"/> <padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp"/>
</shape> </shape>

View File

@ -1,17 +1,17 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" > <shape xmlns:android="http://schemas.android.com/apk/res/android" >
<!--<gradient <!--<gradient
android:angle="45" android:angle="45"
android:endColor="@color/filc" android:endColor="@color/filc"
android:startColor="@color/filc" />--> android:startColor="@color/filc" />-->
<solid android:color="@color/highlight_light"/> <solid android:color="@color/highlight_light"/>
<corners android:radius="12dp" /> <corners android:radius="12dp" />
<size android:width="2dp"/> <size android:width="2dp"/>
<padding <padding
android:left="0.5dp" android:left="0.5dp"
android:right="0.5dp" /> android:right="0.5dp" />
</shape> </shape>

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 B

View File

@ -1,18 +1,18 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"> <item android:state_pressed="true">
<shape android:shape="rectangle"> <shape android:shape="rectangle">
<solid android:color="#ffE0CCEC"></solid> <solid android:color="#ffE0CCEC"></solid>
<corners android:radius="10dp" /> <corners android:radius="10dp" />
</shape> </shape>
</item> </item>
<item> <item>
<shape android:shape="rectangle"> <shape android:shape="rectangle">
<gradient android:endColor="#ffE0CCEC" android:startColor="#ffC9ABDC" /> <gradient android:endColor="#ffE0CCEC" android:startColor="#ffC9ABDC" />
<corners android:radius="10dp" /> <corners android:radius="10dp" />
</shape> </shape>
</item> </item>
</selector> </selector>

View File

@ -1,18 +1,18 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"> <item android:state_pressed="true">
<shape android:shape="rectangle"> <shape android:shape="rectangle">
<solid android:color="@color/filc"></solid> <solid android:color="#ff1D8868"></solid>
<corners android:radius="10dp" /> <corners android:radius="10dp" />
</shape> </shape>
</item> </item>
<item> <item>
<shape android:shape="rectangle"> <shape android:shape="rectangle">
<gradient android:endColor="@color/filc" android:startColor="@color/filc_gradient" /> <gradient android:endColor="#ff1D8868" android:startColor="#ff1EA18F" />
<corners android:radius="10dp" /> <corners android:radius="10dp" />
</shape> </shape>
</item> </item>
</selector> </selector>

View File

Before

Width:  |  Height:  |  Size: 7.7 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

View File

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

Before

Width:  |  Height:  |  Size: 185 KiB

After

Width:  |  Height:  |  Size: 185 KiB

View File

@ -1,26 +1,26 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_margin="8dp" android:layout_margin="8dp"
android:orientation="vertical" android:orientation="vertical"
android:background="@drawable/app_widget_background" android:background="@drawable/app_widget_background"
android:padding="8dp" android:padding="8dp"
android:id="@+id/widget_container"> android:id="@+id/widget_container">
<TextView <TextView
android:id="@+id/widget_title" android:id="@+id/widget_title"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textSize="36sp" android:textSize="36sp"
android:textStyle="bold" android:textStyle="bold"
tools:text="Title" /> tools:text="Title" />
<TextView <TextView
android:id="@+id/widget_message" android:id="@+id/widget_message"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textSize="18sp" android:textSize="18sp"
tools:text="Message" /> tools:text="Message" />
</LinearLayout> </LinearLayout>

View File

@ -1,113 +1,113 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:id="@+id/main_lay" android:id="@+id/main_lay"
android:layout_height="50dp" android:layout_height="50dp"
android:paddingTop="0dp" android:paddingTop="0dp"
android:paddingBottom="0dp" android:paddingBottom="0dp"
android:layout_marginTop="2.5dp" android:layout_marginTop="2.5dp"
android:layout_marginBottom="2.5dp" android:layout_marginBottom="2.5dp"
android:layout_marginLeft="7.5dp" android:layout_marginLeft="7.5dp"
android:layout_marginRight="7.5dp" android:layout_marginRight="7.5dp"
android:background="@drawable/card_layout_tile"> android:background="@drawable/card_layout_tile">
<TextView <TextView
android:id="@+id/tt_item_num" android:id="@+id/tt_item_num"
android:layout_width="50dp" android:layout_width="50dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:fontFamily="@font/montserrat_medium" android:fontFamily="@font/montserrat_medium"
android:gravity="center" android:gravity="center"
android:text="1." android:text="1."
android:textColor="@color/filc" android:textColor="@color/filc"
android:textColorLink="#ff052460" android:textColorLink="#ff3D7BF4"
android:textSize="30sp" android:textSize="30sp"
android:textStyle="bold" android:textStyle="bold"
tools:ignore="HardcodedText" /> tools:ignore="HardcodedText" />
<TextView <TextView
android:id="@+id/tt_item_name" android:id="@+id/tt_item_name"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="20dp" android:layout_height="20dp"
android:textSize="15.5sp" android:textSize="15.5sp"
android:textFontWeight="700" android:textFontWeight="700"
android:fontFamily="@font/montserrat_medium" android:fontFamily="@font/montserrat_medium"
android:layout_marginTop="2.5dp" android:layout_marginTop="2.5dp"
android:text="Óra neve" android:text="Óra neve"
android:maxLines="1" android:maxLines="1"
android:ellipsize="end" android:ellipsize="end"
android:layout_toStartOf="@id/tt_item_room" android:layout_toStartOf="@id/tt_item_room"
android:gravity="center_vertical" android:gravity="center_vertical"
android:layout_toEndOf="@id/tt_item_num" android:layout_toEndOf="@id/tt_item_num"
android:textColor="@color/text" android:textColor="@color/text"
tools:ignore="HardcodedText" /> tools:ignore="HardcodedText" />
<TextView <TextView
android:id="@+id/tt_item_name_nodesc" android:id="@+id/tt_item_name_nodesc"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:textSize="15.5sp" android:textSize="15.5sp"
android:textStyle="bold" android:textStyle="bold"
android:fontFamily="@font/montserrat_medium" android:fontFamily="@font/montserrat_medium"
android:visibility="gone" android:visibility="gone"
android:layout_marginTop="2.5dp" android:layout_marginTop="2.5dp"
android:layout_toStartOf="@id/tt_item_room" android:layout_toStartOf="@id/tt_item_room"
android:text="Óra neve" android:text="Óra neve"
android:maxLines="1" android:maxLines="1"
android:ellipsize="end" android:ellipsize="end"
android:gravity="center_vertical" android:gravity="center_vertical"
android:layout_toEndOf="@id/tt_item_num" android:layout_toEndOf="@id/tt_item_num"
android:textColor="@color/text" android:textColor="@color/text"
tools:ignore="HardcodedText" /> tools:ignore="HardcodedText" />
<TextView <TextView
android:id="@+id/tt_item_desc" android:id="@+id/tt_item_desc"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="20dp" android:layout_height="20dp"
android:textSize="14sp" android:textSize="14sp"
android:textStyle="bold" android:textStyle="bold"
android:textFontWeight="600" android:textFontWeight="600"
android:fontFamily="@font/montserrat_medium" android:fontFamily="@font/montserrat_medium"
android:text="Óra leírása" android:text="Óra leírása"
android:maxLines="1" android:maxLines="1"
android:ellipsize="end" android:ellipsize="end"
android:gravity="center_vertical" android:gravity="center_vertical"
android:layout_toEndOf="@id/tt_item_num" android:layout_toEndOf="@id/tt_item_num"
android:layout_toStartOf="@id/tt_item_room" android:layout_toStartOf="@id/tt_item_room"
android:layout_below="@id/tt_item_name" android:layout_below="@id/tt_item_name"
android:textColor="@color/text_desc" android:textColor="@color/text_desc"
tools:ignore="HardcodedText" /> tools:ignore="HardcodedText" />
<TextView <TextView
android:id="@+id/tt_item_room" android:id="@+id/tt_item_room"
android:layout_width="40dp" android:layout_width="40dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:textSize="14sp" android:textSize="14sp"
android:textFontWeight="500" android:textFontWeight="500"
android:fontFamily="@font/montserrat_medium" android:fontFamily="@font/montserrat_medium"
android:textStyle="bold" android:textStyle="bold"
android:text="56." android:text="56."
android:ellipsize="end" android:ellipsize="end"
android:maxLines="2" android:maxLines="2"
android:gravity="center" android:gravity="center"
android:layout_toStartOf="@id/tt_item_time" android:layout_toStartOf="@id/tt_item_time"
android:textColor="@color/text_desc" android:textColor="@color/text_desc"
tools:ignore="HardcodedText" /> tools:ignore="HardcodedText" />
<TextView <TextView
android:id="@+id/tt_item_time" android:id="@+id/tt_item_time"
android:layout_width="50dp" android:layout_width="50dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:textSize="14sp" android:textSize="14sp"
android:textFontWeight="500" android:textFontWeight="500"
android:fontFamily="@font/montserrat_medium" android:fontFamily="@font/montserrat_medium"
android:textStyle="bold" android:textStyle="bold"
android:layout_marginStart="2dp" android:layout_marginStart="2dp"
android:layout_marginTop="-2dp" android:layout_marginTop="-2dp"
android:text="8:30\n9:10" android:text="8:30\n9:10"
android:gravity="center" android:gravity="center"
android:layout_alignParentEnd="true" android:layout_alignParentEnd="true"
android:textColor="@color/white" android:textColor="@color/white"
tools:ignore="HardcodedText" /> tools:ignore="HardcodedText" />
</RelativeLayout> </RelativeLayout>

View File

@ -1,154 +1,232 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_margin="@dimen/widget_margin"> android:layout_margin="@dimen/widget_margin">
<RelativeLayout <RelativeLayout
android:id="@+id/tt_grid_cont" android:id="@+id/tt_grid_cont"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/card_layout_bg" android:backgroundTint="#00000000"
android:orientation="vertical"> android:background="@drawable/card_layout_bg"
android:orientation="vertical">
<TextView
android:id="@+id/empty_view" <TextView
android:layout_width="match_parent" android:id="@+id/empty_view"
android:layout_height="match_parent" android:layout_width="match_parent"
android:gravity="center" android:layout_height="match_parent"
android:text="Üres / Empty" android:gravity="center"
android:background="@drawable/widget_card_bottom_dark" android:text="Üres / Empty"
android:textColor="@color/text" android:background="@drawable/widget_card_bottom_dark"
android:textSize="20sp" android:textColor="@color/text"
android:textStyle="bold" android:textSize="20sp"
tools:ignore="HardcodedText" /> android:textStyle="bold"
tools:ignore="HardcodedText" />
<ListView
android:id="@+id/widget_list" <ListView
android:layout_width="match_parent" android:id="@+id/widget_list"
android:layout_height="match_parent" android:layout_width="match_parent"
android:layout_below="@id/bottom_nav" android:layout_height="match_parent"
android:layout_marginTop="-8dp" android:layout_below="@id/bottom_nav"
android:background="@drawable/widget_card_bottom_dark" android:layout_marginTop="-8dp"
android:divider="#00000000" android:background="@drawable/widget_card_bottom_dark"
android:paddingTop="5dp" android:divider="#00000000"
android:paddingBottom="16dp" android:paddingTop="5dp"
android:scrollbarFadeDuration="150" android:paddingBottom="16dp"
android:scrollbarSize="10dp" android:scrollbarFadeDuration="150"
android:scrollbarThumbVertical="@drawable/widget_scroll_style" /> android:scrollbarSize="10dp"
android:scrollbarThumbVertical="@drawable/widget_scroll_style" />
<RelativeLayout
android:id="@+id/bottom_nav" <RelativeLayout
android:layout_width="match_parent" android:id="@+id/bottom_nav"
android:layout_height="45dp" android:layout_width="match_parent"
android:background="@drawable/widget_card_top_dark"> android:layout_height="45dp"
android:background="@drawable/widget_card_top_dark">
<ImageView
android:id="@+id/nav_refresh" <ImageView
android:layout_width="40dp" android:id="@+id/nav_refresh"
android:layout_height="match_parent" android:layout_width="40dp"
android:layout_toStartOf="@id/nav_to_left" android:layout_height="match_parent"
android:clickable="true" android:layout_toStartOf="@id/nav_to_left"
android:foreground="?android:attr/selectableItemBackground" android:clickable="true"
android:padding="10dp" android:foreground="?android:attr/selectableItemBackground"
android:src="@drawable/ic_refresh_cw" android:padding="10dp"
android:tint="@color/text_desc" android:src="@drawable/ic_refresh_cw"
tools:ignore="UseAppTint" android:tint="@color/text_desc"
android:focusable="true" /> tools:ignore="UseAppTint"
android:focusable="true" />
<ImageView
android:id="@+id/nav_to_left" <ImageView
android:layout_width="45dp" android:id="@+id/nav_to_left"
android:layout_height="match_parent" android:layout_width="45dp"
android:layout_toStartOf="@id/nav_to_right" android:layout_height="match_parent"
android:clickable="true" android:layout_toStartOf="@id/nav_to_right"
android:foreground="?android:attr/selectableItemBackground" android:clickable="true"
android:padding="10dp" android:foreground="?android:attr/selectableItemBackground"
android:src="@drawable/ic_chevron_left" android:padding="10dp"
android:tint="@color/text_desc" android:src="@drawable/ic_chevron_left"
tools:ignore="UseAppTint" android:tint="@color/text_desc"
android:focusable="true" /> tools:ignore="UseAppTint"
android:focusable="true" />
<ImageView
android:id="@+id/nav_to_right" <ImageView
android:layout_width="45dp" android:id="@+id/nav_to_right"
android:layout_height="match_parent" android:layout_width="45dp"
android:layout_alignParentEnd="true" android:layout_height="match_parent"
android:layout_marginEnd="5dp" android:layout_alignParentEnd="true"
android:clickable="true" android:layout_marginEnd="5dp"
android:foreground="?android:attr/selectableItemBackground" android:clickable="true"
android:padding="10dp" android:foreground="?android:attr/selectableItemBackground"
android:src="@drawable/ic_chevron_right" android:padding="10dp"
android:tint="@color/text_desc" android:src="@drawable/ic_chevron_right"
tools:ignore="UseAppTint" android:tint="@color/text_desc"
android:focusable="true" /> tools:ignore="UseAppTint"
android:focusable="true" />
<TextView
android:id="@+id/nav_current" <TextView
android:layout_width="wrap_content" android:id="@+id/nav_current"
android:layout_height="match_parent" android:layout_width="wrap_content"
android:layout_alignParentStart="true" android:layout_height="match_parent"
android:layout_marginStart="15sp" android:layout_alignParentStart="true"
android:layout_marginTop="2sp" android:layout_marginStart="15sp"
android:layout_toStartOf="@id/nav_refresh" android:layout_marginTop="2sp"
android:fontFamily="@font/montserrat_medium" android:layout_toStartOf="@id/nav_refresh"
android:gravity="center_vertical" android:fontFamily="@font/montserrat_medium"
android:maxLines="1" android:gravity="center_vertical"
android:text="Órarend" android:maxLines="1"
android:textColor="@color/text" android:text="Órarend"
android:textSize="22sp" android:textColor="@color/text"
android:textStyle="bold" android:textSize="22sp"
tools:ignore="HardcodedText" /> android:textStyle="bold"
</RelativeLayout> tools:ignore="HardcodedText" />
</RelativeLayout> </RelativeLayout>
</RelativeLayout>
<RelativeLayout
android:visibility="gone" <RelativeLayout
android:id="@+id/need_login" android:visibility="gone"
android:layout_width="match_parent" android:id="@+id/need_login"
android:layout_height="match_parent" android:layout_width="match_parent"
android:background="@drawable/card_layout_bg" android:layout_height="match_parent"
android:orientation="vertical" > android:backgroundTint="#ffF4F4F4"
android:background="@drawable/card_layout_bg"
<ImageView android:orientation="vertical" >
android:id="@+id/iv_1"
android:layout_width="match_parent" <!--<ImageView
android:layout_height="wrap_content" android:layout_width="45dp"
android:adjustViewBounds="true" android:layout_height="45dp"
android:paddingHorizontal="10dp" android:paddingHorizontal="10dp"
android:paddingTop="10dp" android:paddingTop="5dp"
android:src="@drawable/tinta_image" /> android:src="@drawable/tinta_icon" />-->
<TextView <ImageView
android:layout_width="wrap_content" android:id="@+id/iv_1"
android:layout_height="wrap_content" android:layout_width="match_parent"
android:layout_below="@id/iv_1" android:layout_height="wrap_content"
android:layout_marginHorizontal="15dp" android:adjustViewBounds="true"
android:fontFamily="@font/montserrat_medium" android:paddingHorizontal="10dp"
android:text="A widget használatához bejelentkezés szükséges." android:paddingTop="10dp"
android:textColor="@color/text" android:src="@drawable/tinta_image" />
android:paddingTop="10dp"
android:textSize="17sp" <TextView
android:textStyle="bold" android:layout_width="wrap_content"
tools:ignore="HardcodedText" /> android:layout_height="wrap_content"
android:layout_below="@id/iv_1"
<Button android:layout_marginHorizontal="15dp"
android:id="@+id/open_login" android:fontFamily="@font/montserrat_medium"
android:layout_width="match_parent" android:text="A widget használatához bejelentkezés szükséges."
android:layout_height="40dp" android:textColor="@color/black"
android:layout_alignParentBottom="true" android:paddingTop="10dp"
android:background="@drawable/btn_shape_login" android:textSize="17sp"
android:text="Alkalmazás megnyitása" android:textStyle="bold"
android:padding="0dp" tools:ignore="HardcodedText" />
android:layout_margin="10dp"
android:textColor="@color/text" <Button
android:fontFamily="@font/montserrat_medium" android:id="@+id/open_login"
android:textSize="16sp" android:layout_width="match_parent"
android:textStyle="bold" android:layout_height="40dp"
tools:ignore="HardcodedText" /> android:layout_alignParentBottom="true"
android:background="@drawable/btn_shape_login"
</RelativeLayout> android:text="Alkalmazás megnyitása"
android:padding="0dp"
</RelativeLayout> android:layout_margin="10dp"
android:textColor="@color/white"
android:fontFamily="@font/montserrat_medium"
android:textSize="16sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
</RelativeLayout>
<RelativeLayout
android:visibility="gone"
android:id="@+id/need_premium"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:backgroundTint="#ffF4F4F4"
android:background="@drawable/card_layout_bg"
android:orientation="vertical" >
<!--<ImageView
android:layout_width="45dp"
android:layout_height="45dp"
android:paddingHorizontal="10dp"
android:paddingTop="5dp"
android:src="@drawable/tinta_icon" />-->
<ImageView
android:id="@+id/iv_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:paddingHorizontal="10dp"
android:paddingTop="10dp"
android:src="@drawable/tinta_image" />
<TextView
android:id="@+id/tw_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/iv_2"
android:layout_marginHorizontal="15dp"
android:fontFamily="@font/montserrat_medium"
android:text="Órák a kezdőképernyőd kényelméből."
android:textColor="@color/black"
android:paddingTop="10dp"
android:textSize="16sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tw_1"
android:fontFamily="@font/montserrat_medium"
android:text="Támogass Tinta szinten és helyezz egy widgetet a kezdőképernyődre."
android:textColor="@color/black"
android:layout_marginTop="0dp"
android:layout_marginHorizontal="15dp"
android:textSize="14sp"
tools:ignore="HardcodedText" />
<Button
android:id="@+id/buy_premium"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@drawable/btn_shape"
android:gravity="center"
android:text="Vigyél oda!"
android:padding="0dp"
android:layout_alignParentBottom="true"
android:layout_margin="10dp"
android:textColor="#ff691A9B"
android:fontFamily="@font/montserrat_medium"
android:textSize="16sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
</RelativeLayout>
</RelativeLayout>

View File

@ -1,9 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/> <background android:drawable="@color/ic_launcher_background"/>
<foreground> <foreground android:drawable="@drawable/ic_launcher_foreground"/>
<inset <monochrome android:drawable="@mipmap/ic_launcher_monochrome" />
android:drawable="@drawable/ic_launcher_foreground"
android:inset="16%" />
</foreground>
</adaptive-icon> </adaptive-icon>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@mipmap/ic_launcher_background"/> <background android:drawable="@mipmap/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/> <foreground android:drawable="@mipmap/ic_launcher_foreground"/>
<monochrome android:drawable="@mipmap/ic_launcher_monochrome" /> <monochrome android:drawable="@mipmap/ic_launcher_monochrome" />
</adaptive-icon> </adaptive-icon>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Some files were not shown because too many files have changed in this diff Show More