mirror of
https://github.com/akaessens/NoFbEventScraper
synced 2025-06-05 23:29:13 +02:00
Compare commits
12 Commits
Author | SHA1 | Date | |
---|---|---|---|
dbde1188dc | |||
d37a8362a6 | |||
53ff8e4609 | |||
b88d429af1 | |||
bbadfef7d3 | |||
3f37c9b2b3 | |||
25f763ae1f | |||
3c119f8209 | |||
c9db3d61cd | |||
43365350b7 | |||
ed27561506 | |||
5e90eea230 |
21
.github/workflows/android.yml
vendored
Normal file
21
.github/workflows/android.yml
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
name: Android CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: set up JDK 1.8
|
||||
uses: actions/setup-java@v1
|
||||
with:
|
||||
java-version: 1.8
|
||||
- name: Build with Gradle
|
||||
run: ./gradlew build
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -14,3 +14,4 @@ app/release
|
||||
/captures
|
||||
.externalNativeBuild
|
||||
.cxx
|
||||
.idea
|
||||
|
1
.idea/.name
generated
1
.idea/.name
generated
@ -1 +0,0 @@
|
||||
NoFb Event Scraper
|
116
.idea/codeStyles/Project.xml
generated
116
.idea/codeStyles/Project.xml
generated
@ -1,116 +0,0 @@
|
||||
<component name="ProjectCodeStyleConfiguration">
|
||||
<code_scheme name="Project" version="173">
|
||||
<codeStyleSettings language="XML">
|
||||
<indentOptions>
|
||||
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
||||
</indentOptions>
|
||||
<arrangement>
|
||||
<rules>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>xmlns:android</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>xmlns:.*</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
<order>BY_NAME</order>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>.*:id</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>.*:name</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>name</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>style</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>.*</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
<order>BY_NAME</order>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>.*</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
<order>ANDROID_ATTRIBUTE_ORDER</order>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>.*</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>.*</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
<order>BY_NAME</order>
|
||||
</rule>
|
||||
</section>
|
||||
</rules>
|
||||
</arrangement>
|
||||
</codeStyleSettings>
|
||||
</code_scheme>
|
||||
</component>
|
20
.idea/gradle.xml
generated
20
.idea/gradle.xml
generated
@ -1,20 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="GradleMigrationSettings" migrationVersion="1" />
|
||||
<component name="GradleSettings">
|
||||
<option name="linkedExternalProjectsSettings">
|
||||
<GradleProjectSettings>
|
||||
<option name="testRunner" value="PLATFORM" />
|
||||
<option name="distributionType" value="DEFAULT_WRAPPED" />
|
||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||
<option name="modules">
|
||||
<set>
|
||||
<option value="$PROJECT_DIR$" />
|
||||
<option value="$PROJECT_DIR$/app" />
|
||||
</set>
|
||||
</option>
|
||||
<option name="resolveModulePerSourceSet" value="false" />
|
||||
</GradleProjectSettings>
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
9
.idea/misc.xml
generated
9
.idea/misc.xml
generated
@ -1,9 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||
</component>
|
||||
<component name="ProjectType">
|
||||
<option name="id" value="Android" />
|
||||
</component>
|
||||
</project>
|
12
.idea/runConfigurations.xml
generated
12
.idea/runConfigurations.xml
generated
@ -1,12 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="RunConfigurationProducerService">
|
||||
<option name="ignoredProducers">
|
||||
<set>
|
||||
<option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" />
|
||||
<option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" />
|
||||
<option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" />
|
||||
</set>
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
6
.idea/vcs.xml
generated
6
.idea/vcs.xml
generated
@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
10
README.md
10
README.md
@ -1,4 +1,6 @@
|
||||
# NoFbEventScraper
|
||||

|
||||
|
||||
# NoFb Event Scraper
|
||||
|
||||
This application was developed to be used without a facebook account.
|
||||
|
||||
@ -6,7 +8,11 @@ Therefore it does not use the facebook API.
|
||||
Instead it opens the facebook event URI and downloads the website source code.
|
||||
This source contains the information which is used to create a calendar entry.
|
||||
|
||||
# Download
|
||||
Currently this application is in the submitting process to FDroid. see also [#2](/../../issues/2).
|
||||
|
||||
Until it is published at FDroid, use [release v0.1.0](https://github.com/akaessens/NoFbEventScraper/releases/download/v0.1.0/app-release.apk).
|
||||
|
||||
# Screenshot
|
||||
|
||||

|
||||
<img src="/fastlane/metadata/android/en-US/images/phoneScreenshots/1.png" alt="Screenshot" width="250">
|
||||
|
@ -8,8 +8,8 @@ android {
|
||||
applicationId "com.akdev.nofbeventscraper"
|
||||
minSdkVersion 26
|
||||
targetSdkVersion 29
|
||||
versionCode 1
|
||||
versionName "0.1.0"
|
||||
versionCode 2
|
||||
versionName "0.1.1"
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
@ -29,8 +29,8 @@ dependencies {
|
||||
implementation 'androidx.appcompat:appcompat:1.1.0'
|
||||
implementation 'com.google.android.material:material:1.1.0'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
|
||||
implementation 'androidx.navigation:navigation-fragment:2.2.1'
|
||||
implementation 'androidx.navigation:navigation-ui:2.2.1'
|
||||
implementation 'androidx.navigation:navigation-fragment:2.3.0'
|
||||
implementation 'androidx.navigation:navigation-ui:2.3.0'
|
||||
|
||||
// jsoup HTML parser library @ https://jsoup.org/
|
||||
implementation 'org.jsoup:jsoup:1.11.1'
|
||||
|
@ -12,6 +12,7 @@
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/AppTheme">
|
||||
<activity android:name=".AboutActivity"></activity>
|
||||
<activity android:name=".HelpActivity"></activity>
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:label="@string/app_name"
|
||||
|
@ -2,7 +2,11 @@ package com.akdev.nofbeventscraper;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
|
||||
public class AboutActivity extends AppCompatActivity {
|
||||
|
||||
@ -10,5 +14,20 @@ public class AboutActivity extends AppCompatActivity {
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_about);
|
||||
|
||||
|
||||
ImageView img = (ImageView)findViewById(R.id.paypal_image);
|
||||
|
||||
img.setOnClickListener(new View.OnClickListener(){
|
||||
public void onClick(View v){
|
||||
Intent intent = new Intent();
|
||||
intent.setAction(Intent.ACTION_VIEW);
|
||||
intent.addCategory(Intent.CATEGORY_BROWSABLE);
|
||||
intent.setData(Uri.parse("https://www.paypal.me/andreaskaessens"));
|
||||
startActivity(intent);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -30,27 +30,37 @@ public class FbScraper extends AsyncTask<Void, Void, Void> {
|
||||
this.main = main;
|
||||
|
||||
}
|
||||
private String readFromLocJson(String location_json) {
|
||||
private String fixLocation(String location_json) {
|
||||
|
||||
String name = "";
|
||||
String street_address = "";
|
||||
String postal_code = "";
|
||||
String address_locality = "";
|
||||
|
||||
try {
|
||||
JSONObject reader = new JSONObject(location_json);
|
||||
|
||||
name = reader.getString("name");
|
||||
|
||||
JSONObject address = reader.getJSONObject("address");
|
||||
street_address = ", " + address.getString("streetAddress");
|
||||
postal_code = ", " + address.getString("postalCode");
|
||||
address_locality = " " + address.getString("addressLocality");
|
||||
|
||||
String type = address.getString("@type");
|
||||
|
||||
if (type.equals("PostalAddress"))
|
||||
{
|
||||
String postal_code = address.getString("postalCode");
|
||||
String address_locality = address.getString("addressLocality");
|
||||
String address_country = address.getString("addressCountry");
|
||||
String street_address = address.getString("streetAddress");
|
||||
|
||||
return name + ", " + street_address + ", " + postal_code + " " + address_locality;
|
||||
}
|
||||
else
|
||||
{
|
||||
return name;
|
||||
}
|
||||
|
||||
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
return name;
|
||||
}
|
||||
|
||||
return name + street_address + postal_code + address_locality;
|
||||
}
|
||||
|
||||
private String fixTimezone(String time_in) {
|
||||
@ -62,7 +72,19 @@ public class FbScraper extends AsyncTask<Void, Void, Void> {
|
||||
return editable.insert(22, ":").toString();
|
||||
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
e.printStackTrace();
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
private String fixLinks(String description_in) {
|
||||
try {
|
||||
// @[152580919265:274:MagentaMusik 360] -> m.facebook.com/152580919265
|
||||
return description_in.replaceAll("@\\[([0-9]{10,}):[0-9]{3}:([^\\]]*)\\]", "m.facebook.com/$1 ($2)");
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return description_in;
|
||||
}
|
||||
}
|
||||
|
||||
@ -72,7 +94,7 @@ public class FbScraper extends AsyncTask<Void, Void, Void> {
|
||||
}
|
||||
catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
return "";
|
||||
}
|
||||
}
|
||||
@Override
|
||||
@ -92,12 +114,10 @@ public class FbScraper extends AsyncTask<Void, Void, Void> {
|
||||
String event_start = fixTimezone(readFromJson(reader, "startDate"));
|
||||
String event_end = fixTimezone(readFromJson(reader, "endDate"));
|
||||
|
||||
String event_description = readFromJson(reader, "description");
|
||||
String location_json = readFromJson(reader, "location");
|
||||
String event_description = fixLinks(readFromJson(reader, "description"));
|
||||
String location = fixLocation(readFromJson(reader, "location"));
|
||||
|
||||
|
||||
String location = readFromLocJson(location_json);
|
||||
|
||||
if (event_name == null) {
|
||||
this.event = null;
|
||||
throw new Exception();
|
||||
|
@ -0,0 +1,14 @@
|
||||
package com.akdev.nofbeventscraper;
|
||||
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
public class HelpActivity extends AppCompatActivity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_help);
|
||||
}
|
||||
}
|
@ -262,6 +262,10 @@ public class MainActivity extends AppCompatActivity {
|
||||
startActivity(new Intent(this, AboutActivity.class));
|
||||
return true;
|
||||
}
|
||||
if (id == R.id.action_help) {
|
||||
startActivity(new Intent(this, HelpActivity.class));
|
||||
return true;
|
||||
}
|
||||
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
108
app/src/main/res/drawable/ic_banner_foreground.xml
Normal file
108
app/src/main/res/drawable/ic_banner_foreground.xml
Normal file
@ -0,0 +1,108 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="320dp"
|
||||
android:height="180dp"
|
||||
android:viewportWidth="320"
|
||||
android:viewportHeight="180">
|
||||
<group android:scaleX="0.6666667"
|
||||
android:scaleY="0.6666667"
|
||||
android:translateX="53.333332"
|
||||
android:translateY="30">
|
||||
<group android:scaleX="0.10934579"
|
||||
android:scaleY="0.10934579"
|
||||
android:translateX="38.5"
|
||||
android:translateY="54.9">
|
||||
<path
|
||||
android:pathData="M0.5,0.5h640v640h-640z"
|
||||
android:fillColor="#ffffff"
|
||||
android:strokeColor="#00000000"/>
|
||||
<path
|
||||
android:pathData="M0.5,120.5h640v410h-640z"
|
||||
android:fillColor="#297da6"
|
||||
android:strokeColor="#00000000"/>
|
||||
<path
|
||||
android:pathData="M6.5,40.5L634.5,40.5A6,6 0,0 1,640.5 46.5L640.5,134.5A6,6 0,0 1,634.5 140.5L6.5,140.5A6,6 0,0 1,0.5 134.5L0.5,46.5A6,6 0,0 1,6.5 40.5z"
|
||||
android:fillColor="#74b42b"
|
||||
android:strokeColor="#00000000"/>
|
||||
<path
|
||||
android:pathData="M519.5,0.5L561.5,0.5A9,9 0,0 1,570.5 9.5L570.5,101.5A9,9 0,0 1,561.5 110.5L519.5,110.5A9,9 0,0 1,510.5 101.5L510.5,9.5A9,9 0,0 1,519.5 0.5z"
|
||||
android:fillColor="#ffffff"
|
||||
android:strokeColor="#00000000"/>
|
||||
<path
|
||||
android:pathData="M399.5,0.5L441.5,0.5A9,9 0,0 1,450.5 9.5L450.5,101.5A9,9 0,0 1,441.5 110.5L399.5,110.5A9,9 0,0 1,390.5 101.5L390.5,9.5A9,9 0,0 1,399.5 0.5z"
|
||||
android:fillColor="#ffffff"
|
||||
android:strokeColor="#00000000"/>
|
||||
<path
|
||||
android:pathData="M199.5,0.5L241.5,0.5A9,9 0,0 1,250.5 9.5L250.5,101.5A9,9 0,0 1,241.5 110.5L199.5,110.5A9,9 0,0 1,190.5 101.5L190.5,9.5A9,9 0,0 1,199.5 0.5z"
|
||||
android:fillColor="#ffffff"
|
||||
android:strokeColor="#00000000"/>
|
||||
<path
|
||||
android:pathData="M79.5,0.5L121.5,0.5A9,9 0,0 1,130.5 9.5L130.5,101.5A9,9 0,0 1,121.5 110.5L79.5,110.5A9,9 0,0 1,70.5 101.5L70.5,9.5A9,9 0,0 1,79.5 0.5z"
|
||||
android:fillColor="#ffffff"
|
||||
android:strokeColor="#00000000"/>
|
||||
<path
|
||||
android:pathData="M526.5,10.5L554.5,10.5A6,6 0,0 1,560.5 16.5L560.5,94.5A6,6 0,0 1,554.5 100.5L526.5,100.5A6,6 0,0 1,520.5 94.5L520.5,16.5A6,6 0,0 1,526.5 10.5z"
|
||||
android:fillColor="#42a3d2"
|
||||
android:strokeColor="#00000000"/>
|
||||
<path
|
||||
android:pathData="M406.5,10.5L434.5,10.5A6,6 0,0 1,440.5 16.5L440.5,94.5A6,6 0,0 1,434.5 100.5L406.5,100.5A6,6 0,0 1,400.5 94.5L400.5,16.5A6,6 0,0 1,406.5 10.5z"
|
||||
android:fillColor="#42a3d2"
|
||||
android:strokeColor="#00000000"/>
|
||||
<path
|
||||
android:pathData="M86.5,10.5L114.5,10.5A6,6 0,0 1,120.5 16.5L120.5,94.5A6,6 0,0 1,114.5 100.5L86.5,100.5A6,6 0,0 1,80.5 94.5L80.5,16.5A6,6 0,0 1,86.5 10.5z"
|
||||
android:fillColor="#42a3d2"
|
||||
android:strokeColor="#00000000"/>
|
||||
<path
|
||||
android:pathData="M206.5,10.5L234.5,10.5A6,6 0,0 1,240.5 16.5L240.5,94.5A6,6 0,0 1,234.5 100.5L206.5,100.5A6,6 0,0 1,200.5 94.5L200.5,16.5A6,6 0,0 1,206.5 10.5z"
|
||||
android:fillColor="#42a3d2"
|
||||
android:strokeColor="#00000000"/>
|
||||
<path
|
||||
android:pathData="M9.5,490.5L631.5,490.5A9,9 0,0 1,640.5 499.5L640.5,631.5A9,9 0,0 1,631.5 640.5L9.5,640.5A9,9 0,0 1,0.5 631.5L0.5,499.5A9,9 0,0 1,9.5 490.5z"
|
||||
android:fillColor="#297da6"
|
||||
android:strokeColor="#00000000"/>
|
||||
<path
|
||||
android:pathData="M155.5,295.5L281.94,295.5L320.5,174.5L359.06,295.5L485.5,295.5L384.76,376.53L424.71,504.5L320.5,425.3L216.29,504.5L256.24,376.53Z"
|
||||
android:fillColor="#ffffff"
|
||||
android:strokeColor="#00000000"/>
|
||||
</group>
|
||||
|
||||
<group android:scaleX="0.1463197"
|
||||
android:scaleY="0.1463197"
|
||||
android:translateX="128"
|
||||
android:translateY="78.51848">
|
||||
<group android:translateY="115.171875">
|
||||
<path android:pathData="M74.390625,-85.078125L74.390625,9.421875L60.75,9.421875L11.953125,-67.15625L11.953125,9.421875L0.5,9.421875L0.5,-85.078125L13.5,-85.078125L62.9375,-7.734375L62.9375,-85.078125L74.390625,-85.078125Z"
|
||||
android:fillColor="#000000"/>
|
||||
<path android:pathData="M112.28125,-63.140625Q129.71875,-63.140625,137.59375,-49.859375Q143.07812,-40.640625,143.07812,-26.234375Q143.07812,-7.53125,132.875,2.109375Q125.640625,8.9375,114.53125,9.5625Q113.46875,9.640625,112.34375,9.640625Q96.109375,9.640625,87.953125,-2.390625Q81.609375,-11.75,81.609375,-26.71875Q81.609375,-46.125,92.09375,-55.828125Q99.96875,-63.140625,112.28125,-63.140625ZM112.34375,-53.234375Q101.875,-53.234375,96.734375,-43.953125Q92.9375,-37.125,92.9375,-26.71875Q92.9375,-11.1875,100.890625,-4.359375Q105.59375,-0.359375,112.34375,-0.359375Q122.6875,-0.359375,127.953125,-9.359375Q131.82812,-16.03125,131.82812,-26.296875Q131.82812,-42.6875,123.53125,-49.5Q118.953125,-53.234375,112.34375,-53.234375Z"
|
||||
android:fillColor="#000000"/>
|
||||
<path android:pathData="M163.04688,-33.609375L163.04688,9.421875L150.95312,9.421875L150.95312,-85.078125L214.375,-85.078125L214.375,-74.390625L163.04688,-74.390625L163.04688,-44.234375L208.04688,-44.234375L208.04688,-33.609375L163.04688,-33.609375Z"
|
||||
android:fillColor="#000000"/>
|
||||
<path android:pathData="M217.57812,-85.359375L228.26562,-85.359375L228.26562,-49.640625Q235.15625,-60.046875,247.53125,-60.609375Q248.375,-60.6875,249.21875,-60.6875Q263.5,-60.6875,271.375,-50Q278.32812,-40.5,278.32812,-25.171875Q278.32812,-6.96875,269.125,3.3125Q268.14062,4.4375,267.07812,5.34375Q267.01562,5.484375,266.875,5.5625Q259.42188,12.171875,248.73438,12.171875Q235.57812,12.171875,228.0625,1.6875Q227.64062,1.125,227.21875,0.5L227.21875,9.140625L217.57812,9.140625L217.57812,-85.359375ZM247.1875,-50.5625Q237.76562,-50.5625,232.5625,-42.046875L232.48438,-41.984375Q228.26562,-35.015625,228.26562,-24.328125Q228.26562,-10.0625,235.29688,-2.890625Q240.15625,2.046875,247.1875,2.046875Q256.60938,2.046875,262.15625,-5.984375Q267.01562,-13.015625,267.01562,-23.90625Q267.01562,-38.25,259.70312,-45.5Q254.64062,-50.5625,247.1875,-50.5625Z"
|
||||
android:fillColor="#000000"/>
|
||||
<path android:pathData="M345.625,-33.609375L345.625,-1.203125L401.3125,-1.203125L401.3125,9.421875L333.53125,9.421875L333.53125,-85.078125L399,-85.078125L399,-74.390625L345.625,-74.390625L345.625,-44.234375L397.09375,-44.234375L397.09375,-33.609375L345.625,-33.609375Z"
|
||||
android:fillColor="#000000"/>
|
||||
<path android:pathData="M438.53125,6.75L426.71875,6.75L402.9375,-61.109375L415.1875,-61.109375L433.32812,-6.046875L452.45312,-61.109375L464.60938,-61.109375L438.53125,6.75Z"
|
||||
android:fillColor="#000000"/>
|
||||
<path android:pathData="M525.5,-23.625L475.35938,-23.625Q475.5,-15.046875,478.25,-10.203125Q478.53125,-9.640625,478.875,-9.140625Q484.15625,-1.125,493.64062,-0.421875Q494.42188,-0.359375,495.26562,-0.359375Q508.48438,-0.359375,513.1875,-14L523.9531,-14Q521.4844,-0.28125,510.65625,5.765625Q503.90625,9.640625,494.84375,9.640625Q479.57812,9.640625,471.28125,-1.34375Q464.03125,-10.828125,464.03125,-26.296875Q464.03125,-44.015625,473.46875,-54.140625Q481.82812,-63.140625,495.1875,-63.140625Q507.78125,-63.140625,516.1406,-55.125Q520.4375,-50.984375,522.6875,-45.28125Q525.5,-38.046875,525.5,-23.625ZM475.5,-32.421875L513.75,-32.421875Q513.8281,-32.765625,513.8281,-33.265625Q513.8281,-42.046875,507.92188,-47.953125Q502.57812,-53.234375,495.125,-53.234375Q485.42188,-53.234375,479.9375,-45.5625Q476.14062,-40.21875,475.5,-32.421875Z"
|
||||
android:fillColor="#000000"/>
|
||||
<path android:pathData="M531.8281,-60.890625L541.8906,-60.890625L541.8906,-49.5Q547.9375,-59.140625,555.9531,-61.671875Q559.6719,-62.859375,564.3125,-62.859375Q576.0625,-62.859375,581.8906,-55.90625Q585.8281,-51.1875,585.8281,-44.375L585.8281,7.03125L575.0781,7.03125L575.0781,-40.078125Q575.0781,-47.953125,569.09375,-51.40625Q569.03125,-51.46875,568.9531,-51.46875L568.9531,-51.546875Q565.65625,-53.296875,561.21875,-53.296875Q551.59375,-53.296875,546.59375,-45.421875L546.53125,-45.359375Q546.53125,-45.359375,546.4531,-45.28125Q542.7969,-39.453125,542.7344,-30.453125L542.7344,7.03125L531.8281,7.03125L531.8281,-60.890625Z"
|
||||
android:fillColor="#000000"/>
|
||||
<path android:pathData="M623.46875,-59.5625L623.46875,-50.703125L612.21875,-50.703125L612.21875,-4.21875Q612.21875,0.21875,614.3906,1.265625L614.46875,1.34375Q615.7344,1.96875,618.3281,1.96875Q621.9219,1.96875,623.46875,1.265625L623.46875,10.484375Q618.8906,11.328125,614.6719,11.328125Q604.2656,11.328125,602.0156,4.21875Q601.53125,2.609375,601.53125,0.5625L601.53125,-50.703125L592.3125,-50.703125L592.3125,-59.5625L601.53125,-59.5625L601.53125,-78.1875L612.21875,-78.1875L612.21875,-59.5625L623.46875,-59.5625Z"
|
||||
android:fillColor="#000000"/>
|
||||
<path android:pathData="M743.78125,-57.453125L732.1719,-57.453125Q732.1094,-69.828125,721.4844,-74.328125Q716.1406,-76.640625,708.6875,-76.640625Q697.15625,-76.640625,691.3281,-70.453125L691.25,-70.390625Q687.4531,-66.375,687.4531,-60.75Q687.4531,-54.359375,692.4531,-50.984375Q695.96875,-48.59375,703.0625,-46.6875L726.6875,-40.21875Q740.40625,-36.5625,744.96875,-26.234375Q746.875,-21.875,746.875,-16.59375Q746.875,-7.453125,741.25,0.140625Q739.1406,2.953125,736.53125,5Q727.1875,12.234375,710.03125,12.234375Q688.7969,12.234375,678.8125,-0.5Q678.4531,-0.921875,678.1719,-1.265625Q673.25,-8.015625,672.6875,-18.140625Q672.6094,-19.40625,672.6094,-20.75L684.0156,-20.75Q683.875,-12.3125,689,-6.328125Q695.46875,1.625,710.65625,1.625Q722.40625,1.625,728.09375,-2.25Q732.875,-5.703125,734.3594,-11.8125Q734.84375,-13.640625,734.84375,-15.46875Q734.84375,-23.765625,725,-28.203125Q721.84375,-29.609375,717.40625,-30.796875L694.0625,-36.984375Q675.5,-41.703125,675.5,-58.921875Q675.5,-72.921875,686.0469,-80.4375Q694.84375,-86.765625,708.96875,-86.765625Q729.21875,-86.765625,738.0781,-75.3125L738.15625,-75.234375Q743.6406,-68.140625,743.78125,-57.453125Z"
|
||||
android:fillColor="#000000"/>
|
||||
<path android:pathData="M806.5,-38.46875L795.59375,-38.46875Q794.125,-49.15625,785.8281,-52.171875Q782.9375,-53.234375,779.5,-53.234375Q768.9531,-53.234375,764.03125,-43.25Q764.03125,-43.171875,763.9531,-43.171875Q760.71875,-36.359375,760.71875,-26.15625Q760.71875,-10.265625,769.0156,-3.796875Q773.4531,-0.359375,779.84375,-0.359375Q793.625,-0.359375,796.375,-16.59375L807.2031,-16.59375Q806.0781,-1.484375,795.7344,5.28125Q789.0625,9.640625,779.5,9.640625Q765.0781,9.640625,756.9219,-0.921875Q749.46875,-10.484375,749.46875,-26.15625Q749.46875,-44.09375,758.75,-54.28125Q766.84375,-63.140625,779.7031,-63.140625Q791.4531,-63.140625,799.0469,-56.1875Q800.65625,-54.703125,801.9219,-53.015625Q805.7969,-47.328125,806.5,-38.46875Z"
|
||||
android:fillColor="#000000"/>
|
||||
<path android:pathData="M813.875,-60.890625L823.8594,-60.890625L823.8594,-48.59375Q830.3281,-59.0625,836.5156,-61.671875Q839.25,-62.859375,842.4219,-62.859375Q844.03125,-62.859375,846.5625,-62.515625L846.5625,-51.46875Q838.0625,-51.265625,834.125,-49.21875Q833.28125,-48.734375,832.3594,-48.09375Q824.7656,-42.609375,824.7656,-28.265625L824.7656,7.03125L813.875,7.03125L813.875,-60.890625Z"
|
||||
android:fillColor="#000000"/>
|
||||
<path android:pathData="M909.03125,0.359375L909.03125,8.4375Q904.8125,9.640625,901.5,9.640625Q893.28125,9.640625,891.2344,3.453125Q890.6719,1.765625,890.46875,-0.359375Q881.1094,8.09375,871.6875,9.359375Q869.5781,9.640625,867.3281,9.640625Q855.03125,9.640625,849.0469,2.046875Q845.03125,-3.03125,845.03125,-10.40625Q845.03125,-23.765625,856.8594,-28.546875Q861.0781,-30.171875,868.53125,-31.296875Q871.96875,-31.859375,878.71875,-32.765625Q887.15625,-33.75,889.125,-36.640625Q890.0469,-38.046875,890.0469,-40.21875L890.0469,-43.109375Q890.0469,-50.140625,882.03125,-52.390625Q878.9375,-53.234375,874.8594,-53.234375Q862.625,-53.234375,859.7344,-45.21875Q859.7344,-45.078125,859.6719,-44.9375Q859.1094,-43.25,858.8906,-41.203125L848,-41.203125Q848.34375,-49.578125,851.7969,-54.140625Q852.21875,-54.640625,852.6406,-55.203125Q858.6094,-61.8125,870.9844,-62.9375Q873.09375,-63.140625,875.28125,-63.140625Q895.25,-63.140625,899.6094,-51.46875Q900.7344,-48.453125,900.7344,-44.71875L900.7344,-4.71875Q900.7344,0,905.5156,0.5625Q906,0.5625,906.5625,0.5625Q907.7656,0.5625,909.03125,0.359375ZM890.0469,-14.703125L890.0469,-26.859375Q886.4531,-25.171875,879.84375,-24.1875Q877.53125,-23.84375,872.53125,-23.140625Q860.65625,-21.3125,857.625,-16.109375Q856.2969,-13.859375,856.2969,-10.625Q856.2969,-3.59375,862.6875,-0.984375Q865.71875,0.28125,869.71875,0.28125Q878.9375,0.28125,885.75,-5.90625Q889.40625,-9.421875,889.90625,-12.875Q890.0469,-13.71875,890.0469,-14.703125Z"
|
||||
android:fillColor="#000000"/>
|
||||
<path android:pathData="M910.5781,32.421875L910.5781,-63.78125L920.4219,-63.78125L920.4219,-53.515625Q928.0156,-65.671875,942.15625,-65.671875Q956.3594,-65.671875,964.2344,-54.703125Q971.3281,-44.859375,971.3281,-28.6875Q971.3281,-11.328125,962.3281,-1.484375Q954.53125,7.109375,942.21875,7.109375Q931.3281,7.109375,924.0781,-0.078125Q922.75,-1.40625,921.4844,-3.03125L921.4844,32.421875L910.5781,32.421875ZM940.3906,-55.546875Q930.8281,-55.546875,925.7031,-46.96875Q921.7656,-40.5,921.4844,-30.65625Q921.4844,-29.953125,921.4844,-29.25Q921.4844,-15.046875,928.5156,-7.875Q933.3594,-3.03125,940.3906,-3.03125Q949.8125,-3.03125,955.2969,-11.1875Q960.0156,-18.140625,960.0156,-28.828125Q960.0156,-43.109375,952.84375,-50.421875Q947.78125,-55.546875,940.3906,-55.546875Z"
|
||||
android:fillColor="#000000"/>
|
||||
<path android:pathData="M1034.5,-23.625L984.3594,-23.625Q984.5,-15.046875,987.25,-10.203125Q987.53125,-9.640625,987.875,-9.140625Q993.15625,-1.125,1002.6406,-0.421875Q1003.4219,-0.359375,1004.2656,-0.359375Q1017.4844,-0.359375,1022.1875,-14L1032.9531,-14Q1030.4844,-0.28125,1019.65625,5.765625Q1012.90625,9.640625,1003.84375,9.640625Q988.5781,9.640625,980.28125,-1.34375Q973.03125,-10.828125,973.03125,-26.296875Q973.03125,-44.015625,982.46875,-54.140625Q990.8281,-63.140625,1004.1875,-63.140625Q1016.78125,-63.140625,1025.1406,-55.125Q1029.4375,-50.984375,1031.6875,-45.28125Q1034.5,-38.046875,1034.5,-23.625ZM984.5,-32.421875L1022.75,-32.421875Q1022.8281,-32.765625,1022.8281,-33.265625Q1022.8281,-42.046875,1016.9219,-47.953125Q1011.5781,-53.234375,1004.125,-53.234375Q994.4219,-53.234375,988.9375,-45.5625Q985.1406,-40.21875,984.5,-32.421875Z"
|
||||
android:fillColor="#000000"/>
|
||||
<path android:pathData="M1042.875,-60.890625L1052.8594,-60.890625L1052.8594,-48.59375Q1059.3281,-59.0625,1065.5156,-61.671875Q1068.25,-62.859375,1071.4219,-62.859375Q1073.0312,-62.859375,1075.5625,-62.515625L1075.5625,-51.46875Q1067.0625,-51.265625,1063.125,-49.21875Q1062.2812,-48.734375,1061.3594,-48.09375Q1053.7656,-42.609375,1053.7656,-28.265625L1053.7656,7.03125L1042.875,7.03125L1042.875,-60.890625Z"
|
||||
android:fillColor="#000000"/>
|
||||
</group>
|
||||
</group>
|
||||
</group>
|
||||
</vector>
|
63
app/src/main/res/drawable/ic_channel_foreground.xml
Normal file
63
app/src/main/res/drawable/ic_channel_foreground.xml
Normal file
@ -0,0 +1,63 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="120dp"
|
||||
android:height="120dp"
|
||||
android:viewportWidth="120"
|
||||
android:viewportHeight="120">
|
||||
<group android:scaleX="0.078457944"
|
||||
android:scaleY="0.078457944"
|
||||
android:translateX="34.815"
|
||||
android:translateY="34.815">
|
||||
<path
|
||||
android:pathData="M0.5,0.5h640v640h-640z"
|
||||
android:fillColor="#ffffff"
|
||||
android:strokeColor="#00000000"/>
|
||||
<path
|
||||
android:pathData="M0.5,120.5h640v410h-640z"
|
||||
android:fillColor="#297da6"
|
||||
android:strokeColor="#00000000"/>
|
||||
<path
|
||||
android:pathData="M6.5,40.5L634.5,40.5A6,6 0,0 1,640.5 46.5L640.5,134.5A6,6 0,0 1,634.5 140.5L6.5,140.5A6,6 0,0 1,0.5 134.5L0.5,46.5A6,6 0,0 1,6.5 40.5z"
|
||||
android:fillColor="#74b42b"
|
||||
android:strokeColor="#00000000"/>
|
||||
<path
|
||||
android:pathData="M519.5,0.5L561.5,0.5A9,9 0,0 1,570.5 9.5L570.5,101.5A9,9 0,0 1,561.5 110.5L519.5,110.5A9,9 0,0 1,510.5 101.5L510.5,9.5A9,9 0,0 1,519.5 0.5z"
|
||||
android:fillColor="#ffffff"
|
||||
android:strokeColor="#00000000"/>
|
||||
<path
|
||||
android:pathData="M399.5,0.5L441.5,0.5A9,9 0,0 1,450.5 9.5L450.5,101.5A9,9 0,0 1,441.5 110.5L399.5,110.5A9,9 0,0 1,390.5 101.5L390.5,9.5A9,9 0,0 1,399.5 0.5z"
|
||||
android:fillColor="#ffffff"
|
||||
android:strokeColor="#00000000"/>
|
||||
<path
|
||||
android:pathData="M199.5,0.5L241.5,0.5A9,9 0,0 1,250.5 9.5L250.5,101.5A9,9 0,0 1,241.5 110.5L199.5,110.5A9,9 0,0 1,190.5 101.5L190.5,9.5A9,9 0,0 1,199.5 0.5z"
|
||||
android:fillColor="#ffffff"
|
||||
android:strokeColor="#00000000"/>
|
||||
<path
|
||||
android:pathData="M79.5,0.5L121.5,0.5A9,9 0,0 1,130.5 9.5L130.5,101.5A9,9 0,0 1,121.5 110.5L79.5,110.5A9,9 0,0 1,70.5 101.5L70.5,9.5A9,9 0,0 1,79.5 0.5z"
|
||||
android:fillColor="#ffffff"
|
||||
android:strokeColor="#00000000"/>
|
||||
<path
|
||||
android:pathData="M526.5,10.5L554.5,10.5A6,6 0,0 1,560.5 16.5L560.5,94.5A6,6 0,0 1,554.5 100.5L526.5,100.5A6,6 0,0 1,520.5 94.5L520.5,16.5A6,6 0,0 1,526.5 10.5z"
|
||||
android:fillColor="#42a3d2"
|
||||
android:strokeColor="#00000000"/>
|
||||
<path
|
||||
android:pathData="M406.5,10.5L434.5,10.5A6,6 0,0 1,440.5 16.5L440.5,94.5A6,6 0,0 1,434.5 100.5L406.5,100.5A6,6 0,0 1,400.5 94.5L400.5,16.5A6,6 0,0 1,406.5 10.5z"
|
||||
android:fillColor="#42a3d2"
|
||||
android:strokeColor="#00000000"/>
|
||||
<path
|
||||
android:pathData="M86.5,10.5L114.5,10.5A6,6 0,0 1,120.5 16.5L120.5,94.5A6,6 0,0 1,114.5 100.5L86.5,100.5A6,6 0,0 1,80.5 94.5L80.5,16.5A6,6 0,0 1,86.5 10.5z"
|
||||
android:fillColor="#42a3d2"
|
||||
android:strokeColor="#00000000"/>
|
||||
<path
|
||||
android:pathData="M206.5,10.5L234.5,10.5A6,6 0,0 1,240.5 16.5L240.5,94.5A6,6 0,0 1,234.5 100.5L206.5,100.5A6,6 0,0 1,200.5 94.5L200.5,16.5A6,6 0,0 1,206.5 10.5z"
|
||||
android:fillColor="#42a3d2"
|
||||
android:strokeColor="#00000000"/>
|
||||
<path
|
||||
android:pathData="M9.5,490.5L631.5,490.5A9,9 0,0 1,640.5 499.5L640.5,631.5A9,9 0,0 1,631.5 640.5L9.5,640.5A9,9 0,0 1,0.5 631.5L0.5,499.5A9,9 0,0 1,9.5 490.5z"
|
||||
android:fillColor="#297da6"
|
||||
android:strokeColor="#00000000"/>
|
||||
<path
|
||||
android:pathData="M155.5,295.5L281.94,295.5L320.5,174.5L359.06,295.5L485.5,295.5L384.76,376.53L424.71,504.5L320.5,425.3L216.29,504.5L256.24,376.53Z"
|
||||
android:fillColor="#ffffff"
|
||||
android:strokeColor="#00000000"/>
|
||||
</group>
|
||||
</vector>
|
BIN
app/src/main/res/drawable/paypal.png
Normal file
BIN
app/src/main/res/drawable/paypal.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 13 KiB |
@ -13,31 +13,30 @@
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
android:orientation="vertical"
|
||||
android:layout_margin="16dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/about_heading"
|
||||
android:id="@+id/description_heading"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="16dp"
|
||||
android:text="@string/action_about"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:text="@string/description_heading"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/about_text"
|
||||
android:id="@+id/description_text"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="16dp"
|
||||
android:text="@string/about_text"
|
||||
android:text="@string/description_text"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/open_source_heading"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginTop="32dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:text="@string/open_source_heading"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
|
||||
|
||||
@ -45,30 +44,52 @@
|
||||
android:id="@+id/open_source_text"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="16dp"
|
||||
android:autoLink="web"
|
||||
android:text="@string/open_source_text"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/changelog_heading"
|
||||
android:id="@+id/issues_heading"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginTop="32dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:text="@string/changelog_heading"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:text="@string/issues_heading"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/issues_text"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:autoLink="web"
|
||||
android:text="@string/issues_text"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/donate_heading"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:text="@string/donate_heading"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/changelog_text"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="16dp"
|
||||
android:autoLink="web"
|
||||
android:text="@string/changelog_text"
|
||||
android:text="@string/donate_text"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/paypal_image"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="PayPal Donate"
|
||||
android:scaleType="fitStart"
|
||||
android:src="@drawable/paypal" />
|
||||
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
|
||||
|
76
app/src/main/res/layout/activity_help.xml
Normal file
76
app/src/main/res/layout/activity_help.xml
Normal file
@ -0,0 +1,76 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:context=".HelpActivity">
|
||||
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:layout_margin="16dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/faq_heading"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:text="@string/faq_heading"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/faq_0q"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="0dp"
|
||||
android:layout_marginBottom="4dp"
|
||||
android:text="@string/faq_0q"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
|
||||
<TextView
|
||||
android:id="@+id/faq_0a"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/faq_0a"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Small" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/faq_1q"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginBottom="4dp"
|
||||
android:text="@string/faq_1q"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
|
||||
<TextView
|
||||
android:id="@+id/faq_1a"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/faq_1a"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Small" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/faq_2q"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginBottom="4dp"
|
||||
android:text="@string/faq_2q"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
|
||||
<TextView
|
||||
android:id="@+id/faq_2a"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/faq_2a"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Small" />
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
@ -7,4 +7,9 @@
|
||||
android:icon="@android:drawable/ic_menu_info_details"
|
||||
android:orderInCategory="100"
|
||||
android:title="@string/action_about" />
|
||||
<item
|
||||
android:id="@+id/action_help"
|
||||
android:icon="@android:drawable/ic_menu_info_details"
|
||||
android:orderInCategory="100"
|
||||
android:title="@string/action_help" />
|
||||
</menu>
|
||||
|
5
app/src/main/res/mipmap-anydpi-v26/ic_banner.xml
Normal file
5
app/src/main/res/mipmap-anydpi-v26/ic_banner.xml
Normal file
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@color/ic_banner_background"/>
|
||||
<foreground android:drawable="@drawable/ic_banner_foreground"/>
|
||||
</adaptive-icon>
|
5
app/src/main/res/mipmap-anydpi-v26/ic_channel.xml
Normal file
5
app/src/main/res/mipmap-anydpi-v26/ic_channel.xml
Normal file
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@color/ic_channel_background"/>
|
||||
<foreground android:drawable="@drawable/ic_channel_foreground"/>
|
||||
</adaptive-icon>
|
BIN
app/src/main/res/mipmap-xhdpi/ic_banner.png
Normal file
BIN
app/src/main/res/mipmap-xhdpi/ic_banner.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.9 KiB |
BIN
app/src/main/res/mipmap-xhdpi/ic_channel.png
Normal file
BIN
app/src/main/res/mipmap-xhdpi/ic_channel.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.7 KiB |
4
app/src/main/res/values/ic_banner_background.xml
Normal file
4
app/src/main/res/values/ic_banner_background.xml
Normal file
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="ic_banner_background">#FFFFFF</color>
|
||||
</resources>
|
4
app/src/main/res/values/ic_channel_background.xml
Normal file
4
app/src/main/res/values/ic_channel_background.xml
Normal file
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="ic_channel_background">#FFFFFF</color>
|
||||
</resources>
|
@ -1,8 +1,11 @@
|
||||
<resources>
|
||||
<string name="app_name">NoFb Event Scraper</string>
|
||||
<string name="action_about">About</string>
|
||||
<string name="action_help">Help</string>
|
||||
<string name="add_link_hint">Paste facebook link to the event.</string>
|
||||
<string name="about_text">This application was developed to be used without a facebook account.
|
||||
|
||||
<string name="description_heading">Description</string>
|
||||
<string name="description_text">This application was developed to be used without a facebook account.
|
||||
\nTherefore it does not use the facebook API.
|
||||
Instead it opens the facebook event URI and downloads the website source code.
|
||||
This source contains the information which is used to create a calendar entry.
|
||||
@ -10,6 +13,20 @@
|
||||
<string name="open_source_heading"> Open Source </string>
|
||||
<string name="open_source_text"> The source code for this application can be found at https://github.com/akaessens/NoFbEventScraper .</string>
|
||||
|
||||
<string name="changelog_heading"> Changelog </string>
|
||||
<string name="changelog_text"> v0.1.0\t\tInitial release.</string>
|
||||
<string name="issues_heading" > Report a bug</string>
|
||||
<string name="issues_text" >If you encounter a bug please report it to me anonymously at https://gitreports.com/issue/akaessens/NoFbEventScraper or directly at Github with the link above.</string>
|
||||
|
||||
<string name="faq_heading"> FAQ </string>
|
||||
<string name="faq_0q"> What links can be used with this app? </string>
|
||||
<string name="faq_0a"> All facebook subdomains are supported, whether mobile (m.facebook.com) or language-specific (de-de.facebook.com). The link must contain an event ID.</string>
|
||||
<string name="faq_1q"> How to use this application? </string>
|
||||
<string name="faq_1a"> You can use the paste button to paste a previously copied link into the URL bar.
|
||||
Alternatively you can use the "share" function e.g. from the Android browser.
|
||||
A third option is to click on a facebook link and use the "open with"-dialog. </string>
|
||||
<string name="faq_2q"> Why does event X not work? </string>
|
||||
<string name="faq_2a"> Current limitations are events in the past or events with multiple instances. If you find some other event that does not work, please let me know.</string>
|
||||
|
||||
<string name="donate_heading"> Donations </string>
|
||||
<string name="donate_text">Click on the PayPal image to send me a coffee if you like :) </string>
|
||||
|
||||
</resources>
|
||||
|
@ -8,7 +8,7 @@ buildscript {
|
||||
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:3.6.1'
|
||||
classpath 'com.android.tools.build:gradle:4.0.0'
|
||||
|
||||
// NOTE: Do not place your application dependencies here; they belong
|
||||
// in the individual module build.gradle files
|
||||
|
3
fastlane/metadata/android/en-US/changelogs/2.txt
Normal file
3
fastlane/metadata/android/en-US/changelogs/2.txt
Normal file
@ -0,0 +1,3 @@
|
||||
Added help and reports section.
|
||||
Fix for some locations not scraped correctly.
|
||||
Resolve fb-internal links.
|
BIN
fastlane/metadata/android/en-US/images/featureGraphic.png
Normal file
BIN
fastlane/metadata/android/en-US/images/featureGraphic.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.9 KiB |
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
5
gradle/wrapper/gradle-wrapper.properties
vendored
5
gradle/wrapper/gradle-wrapper.properties
vendored
@ -1,6 +1,7 @@
|
||||
#Wed Mar 25 12:20:43 CET 2020
|
||||
#Thu Jun 04 13:39:14 CEST 2020
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip
|
||||
distributionSha256Sum=23e7d37e9bb4f8dabb8a3ea7fdee9dd0428b9b1a71d298aefd65b11dccea220f
|
||||
|
22
gradlew
vendored
22
gradlew
vendored
@ -1,5 +1,21 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
#
|
||||
# Copyright 2015 the original author or authors.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
##############################################################################
|
||||
##
|
||||
## Gradle start up script for UN*X
|
||||
@ -28,7 +44,7 @@ APP_NAME="Gradle"
|
||||
APP_BASE_NAME=`basename "$0"`
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS=""
|
||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD="maximum"
|
||||
@ -109,8 +125,8 @@ if $darwin; then
|
||||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
||||
fi
|
||||
|
||||
# For Cygwin, switch paths to Windows format before running java
|
||||
if $cygwin ; then
|
||||
# For Cygwin or MSYS, switch paths to Windows format before running java
|
||||
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
|
||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
||||
JAVACMD=`cygpath --unix "$JAVACMD"`
|
||||
|
18
gradlew.bat
vendored
18
gradlew.bat
vendored
@ -1,3 +1,19 @@
|
||||
@rem
|
||||
@rem Copyright 2015 the original author or authors.
|
||||
@rem
|
||||
@rem Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@rem you may not use this file except in compliance with the License.
|
||||
@rem You may obtain a copy of the License at
|
||||
@rem
|
||||
@rem https://www.apache.org/licenses/LICENSE-2.0
|
||||
@rem
|
||||
@rem Unless required by applicable law or agreed to in writing, software
|
||||
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
||||
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
@rem See the License for the specific language governing permissions and
|
||||
@rem limitations under the License.
|
||||
@rem
|
||||
|
||||
@if "%DEBUG%" == "" @echo off
|
||||
@rem ##########################################################################
|
||||
@rem
|
||||
@ -14,7 +30,7 @@ set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
set DEFAULT_JVM_OPTS=
|
||||
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
|
||||
|
||||
@rem Find java.exe
|
||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||
|
Reference in New Issue
Block a user