Skip to content

Commit

Permalink
Merge branch 'release-1.18.0' into feature/schedule-listening-suwar
Browse files Browse the repository at this point in the history
  • Loading branch information
ghassenbenzahra123 authored Dec 17, 2024
2 parents ff8cc0c + f0a3b63 commit fcc0a25
Show file tree
Hide file tree
Showing 84 changed files with 5,916 additions and 2,059 deletions.
1 change: 1 addition & 0 deletions android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
</intent-filter>
</activity>


<meta-data
android:name="google_analytics_adid_collection_enabled"
Expand Down
66 changes: 63 additions & 3 deletions android/app/src/main/kotlin/com/flyweb/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,11 @@ import android.util.Log
import android.net.wifi.WifiConfiguration
import android.net.wifi.WifiManager
import android.net.ConnectivityManager

import java.util.concurrent.Executors
import android.os.Looper
import android.os.Handler
import android.content.BroadcastReceiver
import android.content.IntentFilter
class MainActivity : FlutterActivity() {
private lateinit var mAdminComponentName: ComponentName
private lateinit var mDevicePolicyManager: DevicePolicyManager
Expand All @@ -50,6 +54,8 @@ class MainActivity : FlutterActivity() {
"checkRoot" -> result.success(checkRoot())
"toggleBoxScreenOff" -> toggleBoxScreenOff(call, result)
"toggleBoxScreenOn" -> toggleBoxScreenOn(call, result)
"toggleTabletScreenOff" -> toggleTabletScreenOff(call, result)
"toggleTabletScreenOn" -> toggleTabletScreenOn(call, result)
"connectToNetworkWPA" -> connectToNetworkWPA(call, result)
"addLocationPermission" -> addLocationPermission(call, result)
"grantFineLocationPermission" -> grantFineLocationPermission(call, result)
Expand All @@ -59,8 +65,36 @@ class MainActivity : FlutterActivity() {
val isSuccess = clearDataRestart()
result.success(isSuccess)
}

else -> result.notImplemented()
"installApk" -> {
val filePath = call.argument<String>("filePath")
if (filePath != null) {
AsyncTask.execute {
try {
// Check if file exists
val file = java.io.File(filePath)
if (!file.exists()) {
Log.e("APK_INSTALL", "APK file not found at path: $filePath")
result.error("FILE_NOT_FOUND", "APK file not found", null)
return@execute
}
// Check if device is rooted
if (!checkRoot()) {
Log.e("APK_INSTALL", "Device is not rooted")
result.error("NOT_ROOTED", "Device is not rooted", null)
return@execute
}
val commands = listOf("pm install -r -d $filePath")
executeCommand(commands, result)
} catch (e: Exception) {
Log.e("APK_INSTALL", "Failed to install APK", e)
result.error("INSTALL_FAILED", e.message, null)
}
}
} else {
result.error("INVALID_PATH", "File path is null", null)
}
}
else -> result.notImplemented()
}
}
}
Expand Down Expand Up @@ -127,6 +161,7 @@ class MainActivity : FlutterActivity() {
}
}


private fun connectToWifi(call: MethodCall, result: MethodChannel.Result) {
AsyncTask.execute {
try {
Expand Down Expand Up @@ -222,6 +257,30 @@ fun connectToNetworkWPA(call: MethodCall, result: MethodChannel.Result) {
}
}
}
private fun toggleTabletScreenOff(call: MethodCall, result: MethodChannel.Result) {
AsyncTask.execute {
try {
val commands = listOf(
"input keyevent 26"
)
executeCommand(commands, result) // Lock the device
} catch (e: Exception) {
handleCommandException(e, result)
}
}
}
private fun toggleTabletScreenOn(call: MethodCall, result: MethodChannel.Result) {
AsyncTask.execute {
try {
val commands = listOf(
"input keyevent 82"
)
executeCommand(commands, result) // Lock the device
} catch (e: Exception) {
handleCommandException(e, result)
}
}
}
private fun grantFineLocationPermission(call: MethodCall, result: MethodChannel.Result) {
AsyncTask.execute {
try {
Expand Down Expand Up @@ -251,6 +310,7 @@ fun connectToNetworkWPA(call: MethodCall, result: MethodChannel.Result) {
}
}
}

private fun sendDownArrowEvent(call: MethodCall, result: MethodChannel.Result) {
AsyncTask.execute {
try {
Expand Down
Binary file added assets/img/flag/cnr.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/img/flag/he.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/img/flag/th.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
90 changes: 68 additions & 22 deletions lib/l10n/intl_ar.arb
Original file line number Diff line number Diff line change
Expand Up @@ -68,19 +68,19 @@
"@azkarList1": {
"description": "سُـبْحانَ اللهِ، والحَمْـدُ لله، واللهُ أكْـبَر 33 مرة لا إِلَٰهَ إلاّ اللّهُ وَحْـدَهُ لا شريكَ لهُ، لهُ الملكُ ولهُ الحَمْد، وهُوَ على كُلّ شَيءٍ قَـدير"
},
"azkarList2": "بِسۡمِ ٱللَّهِ ٱلرَّحۡمَٰنِ ٱلرَّحِيمِ قُلۡ أَعُوذُ بِرَبِّ ٱلنَّاسِ ، مَلِكِ ٱلنَّاسِ ، إِلَٰهِ ٱلنَّاسِ ، مِن شَرِّ ٱلۡوَسۡوَاسِ ٱلۡخَنَّاسِ ، ٱلَّذِي يُوَسۡوِسُ فِي صُدُورِ ٱلنَّاسِ ، مِنَ ٱلۡجِنَّةِ وَٱلنَّاس",
"azkarList2": "",
"@azkarList2": {
"description": "بِسۡمِ ٱللَّهِ ٱلرَّحۡمَٰنِ ٱلرَّحِيمِ قُلۡ أَعُوذُ بِرَبِّ ٱلنَّاسِ ، مَلِكِ ٱلنَّاسِ ، إِلَٰهِ ٱلنَّاسِ ، مِن شَرِّ ٱلۡوَسۡوَاسِ ٱلۡخَنَّاسِ ، ٱلَّذِي يُوَسۡوِسُ فِي صُدُورِ ٱلنَّاسِ ، مِنَ ٱلۡجِنَّةِ وَٱلنَّاس"
},
"azkarList3": "بِسۡمِ ٱللَّهِ ٱلرَّحۡمَٰنِ ٱلرَّحِيمِ قُلۡ أَعُوذُ بِرَبِّ ٱلۡفَلَقِ ، مِن شَرِّ مَا خَلَقَ ، وَمِن شَرِّ غَاسِقٍ إِذَا وَقَبَ ، وَمِن شَرِ ٱلنَّفَّٰثَٰتِ فِي ٱلۡعُقَدِ ، وَمِن شَرِّ حَاسِدٍ إِذَا حَسَدَ",
"azkarList3": "",
"@azkarList3": {
"description": "بِسۡمِ ٱللَّهِ ٱلرَّحۡمَٰنِ ٱلرَّحِيمِقُلۡ أَعُوذُ بِرَبِّ ٱلۡفَلَقِ ، مِن شَرِّ مَا خَلَقَ ، وَمِن شَرِّ غَاسِقٍ إِذَا وَقَبَ ، وَمِن شَرِ ٱلنَّفَّٰثَٰتِ فِي ٱلۡعُقَدِ ، وَمِن شَرِّ حَاسِدٍ إِذَا حَسَدَ"
},
"azkarList4": "بِسۡمِ ٱللَّهِ ٱلرَّحۡمَٰنِ ٱلرَّحِيمِ قُلۡ هُوَ ٱللَّهُ أَحَدٌ ، ٱللَّهُ ٱلصَّمَدُ ، لَمۡ يَلِدۡ وَلَمۡ يُولَدۡ ، وَلَمۡ يَكُن لَّهُۥ كُفُوًا أَحَدُۢ",
"azkarList4": "",
"@azkarList4": {
"description": "بِسۡمِ ٱللَّهِ ٱلرَّحۡمَٰنِ ٱلرَّحِيمِ قُلۡ هُوَ ٱللَّهُ أَحَدٌ ، ٱللَّهُ ٱلصَّمَدُ ، لَمۡ يَلِدۡ وَلَمۡ يُولَدۡ ، وَلَمۡ يَكُن لَّهُۥ كُفُوًا أَحَدُۢ"
},
"azkarList5": "ٱللَّهُ لَآ إِلَٰهَ إِلَّا هُوَ ٱلۡحَيُّ ٱلۡقَيُّومُۚ لَا تَأۡخُذُهُۥ سِنَةٞ وَلَا نَوۡمٞۚ لَّهُۥ مَا فِي ٱلسَّمَٰوَٰتِ وَمَا فِي ٱلۡأَرۡضِۗ مَن ذَا ٱلَّذِي يَشۡفَعُ عِندَهُۥٓ إِلَّا بِإِذۡنِهِۦۚ يَعۡلَمُ مَا بَيۡنَ أَيۡدِيهِمۡ وَمَا خَلۡفَهُمۡۖ وَلَا يُحِيطُونَ بِشَيۡءٖ مِّنۡ عِلۡمِهِۦٓ إِلَّا بِمَا شَآءَۚ وَسِعَ كُرۡسِيُّهُ ٱلسَّمَٰوَٰتِ وَٱلۡأَرۡضَۖ وَلَا يَ‍ُٔودُهُۥ حِفۡظُهُمَاۚ وَهُوَ ٱلۡعَلِيُّ ٱلۡعَظِيمُ",
"azkarList5": "",
"@azkarList5": {
"description": "ٱللَّهُ لَآ إِلَٰهَ إِلَّا هُوَ ٱلۡحَيُّ ٱلۡقَيُّومُۚ لَا تَأۡخُذُهُۥ سِنَةٞ وَلَا نَوۡمٞۚ لَّهُۥ مَا فِي ٱلسَّمَٰوَٰتِ وَمَا فِي ٱلۡأَرۡضِۗ مَن ذَا ٱلَّذِي يَشۡفَعُ عِندَهُۥٓ إِلَّا بِإِذۡنِهِۦۚ يَعۡلَمُ مَا بَيۡنَ أَيۡدِيهِمۡ وَمَا خَلۡفَهُمۡۖ وَلَا يُحِيطُونَ بِشَيۡءٖ مِّنۡ عِلۡمِهِۦٓ إِلَّا بِمَا شَآءَۚ وَسِعَ كُرۡسِيُّهُ ٱلسَّمَٰوَٰتِ وَٱلۡأَرۡضَۖ وَلَا يَ‍ُٔودُهُۥ حِفۡظُهُمَاۚ وَهُوَ ٱلۡعَلِيُّ ٱلۡعَظِيمُ"
},
Expand Down Expand Up @@ -128,7 +128,7 @@
"safar": "صفر",
"rabiAlawwal": "ربيع الأول",
"rabiAlthani": "ربيع الثاني",
"jumadaAlula": "جماد الأول",
"jumadaAlula": "جمادى الأولى",
"jumadaAlakhirah": "جمادة الآخرة",
"rajab": "رجب",
"shaban": "شعبان",
Expand Down Expand Up @@ -168,7 +168,7 @@
"announcementOnlyMode": "وضع الإعلانات",
"normalMode": "الوضع العادي",
"announcementOnlyModeEXPLINATION": "اختر إذا كنت تود أن تعرض شاشة الإعلانات طوال الوقت، هذا يمكن أن يكون مفيداً إذا قمت بتثبيت الشاشة على سبيل المثال في المدخل.",
"duaaElEftarText": "اللهُمَّ إِنِّي لَكَ صُمْتُ وَعَلَى رِزْقِكَ أَفْطَرْتُ، وَإِلَيْكَ انْبَتُّ، وَعَلَيْكَ تَوَكَّلْتُ، ذَهَبَ الظَّمَأُ وَابْتلّت الْعُرُوِقُ، وَثَبَتَ الْأَجْرُ إِنْ شَاءَ اللَّهُ.",
"duaaElEftarText": "",
"@duaaElEftarText": {
"description": "اللهم اني لگ صمت وعلى رزقك افطرت واليك انبت وعليگ توكلت ذهب الظما وابتلت العروق وثبت الاجر انشاء الله"
},
Expand Down Expand Up @@ -243,8 +243,8 @@
"screenLockMode": "وضع تشغيل/إيقاف الشاشة",
"screenLockDesc": "تشغيل/إيقاف الشاشة قبل وبعد كل صلاة لتوفير الطاقة",
"screenLockDesc2": "هذه ميزة تشغيل/إيقاف الشاشة قبل وبعد كل صلاة أذان",
"before": "دقائق قبل كل وقت للصلاة",
"after": "دقائق بعد كل وقت للصلاة",
"before": "الدقائق قبل كل صلاة",
"after": "الدقائق بعد كل صلاة",
"updateAvailable": "التحديث متاح",
"seeMore": "مشاهدة المزيد",
"whatIsNew": "ما الجديد",
Expand Down Expand Up @@ -290,6 +290,20 @@
}
}
},
"quranReadingPagePortrait": "الصفحة {currentPage} / {totalPages}",
"@quranReadingPagePortrait": {
"description": "Placeholder text for displaying Quran reading page portrait numbers",
"placeholders": {
"currentPage": {
"type": "int",
"example": "1"
},
"totalPages": {
"type": "int",
"example": "604"
}
}
},
"chooseQuranPage": "اختر الصفحة",
"checkingForUpdates": "التحقق من وجود تحديث...",
"chooseQuranType": "إختر الرواية",
Expand Down Expand Up @@ -323,34 +337,66 @@
},
"noReciterSearchResult": "لم يتم العثور على نتائج لبحثك",
"searchForReciter": "ابحث عن قارئ",
"downloadAllSuwarSuccessfully": "تم تحميل القرآن بالكامل",
"downloadAllSuwarSuccessfully": "تم تحميل القرآن كاملاً",
"noSuwarDownload": "لا يوجد سور لتحميلها",
"connectDownloadQuran": "الرجاء الاتصال بالإنترنت لتنزيل القرآن",
"playInOnlineModeQuran": "الرجاء الاتصال بالإنترنت لتشغيل القرآن",
"connectDownloadQuran": "الرجاء الاتصال بالإنترنت للتنزيل",
"playInOnlineModeQuran": "الرجاء الاتصال بالإنترنت للتشغيل",
"downloaded": "تم التحميل",
"switchQuranType": "انتقل إلى {name}",
"@switchQuranType": {
"description": "رسالة تظهر عند إضافة قارئ إلى المفضلة",
"description": "Message shown when a reciter is added to favorites",
"placeholders": {
"name": {
"type": "String",
"example": "ورش"
"example": "Warsh"
}
}
},
"surahSelector": "اختر السورة",
"quranReadingPagePortrait": "الصفحة {currentPage} / {totalPages}",
"@quranReadingPagePortrait": {
"description": "Placeholder text for displaying Quran reading page portrait numbers",
"checkForUpdates": "التحقق من التحديثات",
"checkForNewVersion": "تحقق مما إذا كانت هناك نسخة جديدة متوفرة",
"wouldYouLikeToUpdate": "هل ترغب في تحديث التطبيق؟",
"updateCompleted": "تم التحديث بنجاح!",
"noUpdates": "لا توجد تحديثات",
"usingLatestVersion": "أنت تستخدم أحدث إصدار.",
"updateCancelled": "تم إلغاء التحديث",
"checkingUpdates": "جارٍ التحقق من التحديثات...",
"downloadingUpdate": "جارٍ تنزيل التحديث...",
"installingUpdate": "جارٍ تنزيل التحديث...",
"updateCompletedSuccessfully": "تم التحديث بنجاح",
"updateFailed": "فشل التحديث",
"save": "حفظ",
"enterRtspUrl": "أدخل رابط RTSP أو YouTube Live",
"addRtspUrl": "أضف رابط بث كاميرا RTSP الخاص بك أدناه",
"enableRtspCamera": "تفعيل بث الكاميرا",
"rtspCameraSettings": "إعدادات الكاميرا",
"invalidRtspUrl": "رابط RTSP غير صالح. يرجى التحقق من الرابط والمحاولة مرة أخرى.",
"validRtspUrl": "تم التحقق من رابط RTSP وحفظه بنجاح.",
"rtspCameraSettingTitle": "اتصال الكاميرا المباشر",
"rtspCameraSettingDesc": "اتصل بالكاميرا المحلية واعرض بث صلاة الجمعة على شاشة التلفاز.",
"rtspCameraSettingScreenDesc": "إذا أدخلت رابطًا هنا، ستتحول شاشتك تلقائيًا إلى وضع بث الفيديو عند وصول وقت الجمعة.",
"validatingStream": "جارٍ التحقق من البث...",
"checkInternetLiveCamera": "يجب عليك الاتصال بالإنترنت لإعداد الكاميرا ",
"somethingWentWrong": "حدث خطأ ما! يرجى المحاولة مرة أخرى",
"somethingWrong": "حدث خطأ ما",
"tryAgainLater": "يرجى المحاولة لاحقًا",
"checkInternetUpdate": "يجب عليك الاتصال بالإنترنت للتحقق من وجود تحديثات جديدة",
"appUpdateAvailable": "تطبيقك يعمل بالإصدار {currentVersion}. تحديث جديد (الإصدار {updatedVersion}) متوفر مع أحدث الميزات والتحسينات.",
"@appUpdateAvailable": {
"description": "نص بديل لعرض رسالة التحديث المتاح",
"placeholders": {
"currentPage": {
"type": "int",
"currentVersion": {
"type": "String",
"example": "1"
},
"totalPages": {
"type": "int",
"updatedVersion": {
"type": "String",
"example": "604"
}
}
}
}
},
"ishaAndFajrOnly": "فقط صلاتي الفجر و العشاء",
"minutesBeforeFajrPrayer": "دقائق قبل وقت صلاة الفجر",
"minutesAfterIshaPrayer": "دقائق بعد وقت صلاة العشاء"

}
36 changes: 34 additions & 2 deletions lib/l10n/intl_bs.arb
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,20 @@
}
}
},
"quranReadingPagePortrait": "Strana {currentPage} / {totalPages}",
"@quranReadingPagePortrait": {
"description": "Placeholder text for displaying Quran reading page portrait numbers",
"placeholders": {
"currentPage": {
"type": "int",
"example": "1"
},
"totalPages": {
"type": "int",
"example": "604"
}
}
},
"chooseQuranPage": "Odaberite stranicu",
"checkingForUpdates": "Provjera za ažuriranje...",
"chooseQuranType": "Izaberi Kur'an",
Expand Down Expand Up @@ -320,5 +334,23 @@
"noFavoriteReciters": "Nema omiljenih učača. Pokušajte dodati jednog na listu",
"@noFavoriteReciters": {
"description": "Message shown when there are no favorite reciters"
}
}
},
"noReciterSearchResult": "Bez rezultata za vašu pretragu.",
"searchForReciter": "Potraži učača",
"downloadAllSuwarSuccessfully": "Kompletan Kur'an je preuzet",
"noSuwarDownload": "Nema novih sura za preuzimanje",
"connectDownloadQuran": "Da bi ste preuzeli molimo vas da se povežete na internetu",
"playInOnlineModeQuran": "Da bi ste slušali učenje Kur'ana molimo vas da se povežete na internetu",
"downloaded": "Preuzeto",
"switchQuranType": "Idi na {name}",
"@switchQuranType": {
"description": "Message shown when a reciter is added to favorites",
"placeholders": {
"name": {
"type": "String",
"example": "Warsh"
}
}
},
"surahSelector": "Odaberi suru"
}
Loading

0 comments on commit fcc0a25

Please sign in to comment.