From 8a8564cfdaed6a445cca63f18fa071287ef673cb Mon Sep 17 00:00:00 2001 From: Dmitry Tretyakov <76806170+tretdm@users.noreply.github.com> Date: Tue, 16 Apr 2024 08:24:56 +0700 Subject: [PATCH 01/23] Remove experimental features --- .gitmodules | 3 - app/src/main/AndroidManifest.xml | 9 - .../ExperimentalFeaturesActivity.java | 137 ---- ndk-modules/ovkmplayer/ovkmplay.cpp | 600 ------------------ 4 files changed, 749 deletions(-) delete mode 100644 .gitmodules delete mode 100644 app/src/main/java/uk/openvk/android/legacy/core/activities/settings/ExperimentalFeaturesActivity.java delete mode 100644 ndk-modules/ovkmplayer/ovkmplay.cpp diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 367de8b0f..000000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "builder"] - path = ndk-modules/ovkmplayer/ffmpeg-android-builder - url = https://github.com/tinelix/ffmpeg-android-builder diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index bb997a4d1..6952d3e24 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -306,15 +306,6 @@ android:resizeableActivity="false" /> - - = Build.VERSION_CODES.HONEYCOMB) { - ((LinearLayout.LayoutParams) findViewById(android.R.id.list).getLayoutParams()).topMargin = - (int) (8 * getResources().getDisplayMetrics().scaledDensity); - } - - global_prefs = android.preference.PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); - if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { - getActionBar().setHomeButtonEnabled(true); - } - getActionBar().setDisplayHomeAsUpEnabled(true); - if(global_prefs.getString("uiTheme", "blue").equals("Gray")) { - getActionBar().setBackgroundDrawable( - getResources().getDrawable(R.drawable.bg_actionbar_gray)); - } else if(global_prefs.getString("uiTheme", "blue").equals("Black")) { - getActionBar().setBackgroundDrawable( - getResources().getDrawable(R.drawable.bg_actionbar_black)); - } - } else { - final ActionBar actionBar = findViewById(R.id.actionbar); - actionBar.setTitle(R.string.experimental_features); - actionBar.setHomeLogo(R.drawable.ic_ab_app); - actionBar.setBackgroundDrawable(getResources().getDrawable(R.drawable.bg_actionbar)); - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setHomeAction(new ActionBar.AbstractAction(0) { - @Override - public void performAction(View view) { - onBackPressed(); - } - }); - switch (global_prefs.getString("uiTheme", "blue")) { - case "Gray": - actionBar.setBackgroundDrawable(getResources().getDrawable(R.drawable.bg_actionbar)); - break; - case "Black": - actionBar.setBackgroundDrawable(getResources().getDrawable(R.drawable.bg_actionbar_black)); - break; - default: - actionBar.setBackgroundDrawable(getResources().getDrawable(R.drawable.bg_actionbar)); - break; - } - } - listenPreferences(); - } - - @Override - public boolean onMenuItemSelected(int featureId, MenuItem item) { - if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { - if(item.getItemId() == android.R.id.home) { - onBackPressed(); - } - } - return super.onMenuItemSelected(featureId, item); - } - - private void listenPreferences() { - final SharedPreferences experimental_pref = getSharedPreferences("experimental", 0); - try { - final CheckBoxPreference ffmpeg_player = - (CheckBoxPreference) findPreference("video_ffmpeg_player"); - if(ffmpeg_player != null) { - ffmpeg_player.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { - @Override - public boolean onPreferenceChange(Preference preference, Object o) { - ((CheckBoxPreference) preference).setChecked(!((CheckBoxPreference) preference).isChecked()); - final SharedPreferences.Editor editor = experimental_pref.edit(); - editor.putBoolean("video_ffmpeg_player", ((CheckBoxPreference) preference).isChecked()); - editor.commit(); - return false; - } - }); - ffmpeg_player.setChecked(experimental_pref.getBoolean("video_ffmpeg_player", false)); - } - - CheckBoxPreference tSysUI_v14 = - (CheckBoxPreference) findPreference("core_translucent_systemui_v14"); - if(tSysUI_v14 != null) { - tSysUI_v14.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { - @Override - public boolean onPreferenceChange(Preference preference, Object o) { - ((CheckBoxPreference) preference).setChecked(!((CheckBoxPreference) preference).isChecked()); - final SharedPreferences.Editor editor = experimental_pref.edit(); - editor.putBoolean("core_translucent_systemui_v14", ((CheckBoxPreference) preference).isChecked()); - editor.commit(); - return false; - } - }); - tSysUI_v14.setChecked(experimental_pref.getBoolean("core_translucent_systemui_v14", false)); - } - - CheckBoxPreference xmas_mood = - (CheckBoxPreference) findPreference("core_xmas_mood"); - if(xmas_mood != null) { - xmas_mood.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { - @Override - public boolean onPreferenceChange(Preference preference, Object o) { - ((CheckBoxPreference) preference).setChecked(!((CheckBoxPreference) preference).isChecked()); - final SharedPreferences.Editor editor = experimental_pref.edit(); - editor.putBoolean("core_xmas_mood", ((CheckBoxPreference) preference).isChecked()); - editor.commit(); - return false; - } - }); - xmas_mood.setChecked(experimental_pref.getBoolean("core_xmas_mood", false)); - } - } catch (Exception e) { - e.printStackTrace(); - } - } -} diff --git a/ndk-modules/ovkmplayer/ovkmplay.cpp b/ndk-modules/ovkmplayer/ovkmplay.cpp deleted file mode 100644 index 4680c5029..000000000 --- a/ndk-modules/ovkmplayer/ovkmplay.cpp +++ /dev/null @@ -1,600 +0,0 @@ -/** - * OPENVK LEGACY LICENSE NOTIFICATION - * - * This file is part of OpenVK Legacy. - * - * OpenVK Legacy is free software: you can redistribute it and/or modify it under the terms of - * the GNU Affero General Public License as published by the Free Software Foundation, either - * version 3 of the License, or (at your option) any later version. - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * See the GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License along with this - * program. If not, see https://www.gnu.org/licenses/. - * - * Source code: https://github.com/openvk/mobile-android-legacy - */ - -// Java/C++ standard implementations headers -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -// Non-standard 'stdint' implementation -#pragma clang diagnostic push -#pragma ide diagnostic ignored "OCDFAInspection" -extern "C"{ - #ifdef __cplusplus - #define __STDC_CONSTANT_MACROS - #ifdef _STDINT_H - #undef _STDINT_H - #endif - # include - #endif -} -#ifndef INT64_C -#define INT64_C(c) (c ## LL) -#define UINT64_C(c) (c ## ULL) -#endif - -// Android implementations headers -#include - -// FFmpeg implementation headers (using LGPLv3.0 model) -extern "C" { - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include -} - -/*for Android logs*/ -#define LOG_TAG "OVK-MPLAY-LIB" -#define LOG_LEVEL 10 -#define LOGD(level, ...) if (level <= LOG_LEVEL) {__android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__);} -#define LOGI(level, ...) if (level <= LOG_LEVEL) {__android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__);} -#define LOGW(level, ...) if (level <= LOG_LEVEL) {__android_log_print(ANDROID_LOG_WARN, LOG_TAG, __VA_ARGS__);} -#define LOGE(level, ...) if (level <= LOG_LEVEL) {__android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__);} - -char version[7] = "0.0.1"; -char *gFileName; // file name of the video -int gErrorCode; - -AVFormatContext *gFormatCtx; - -int gVideoStreamIndex; // video stream index -int gAudioStreamIndex; // audio stream index - -AVCodecContext *gVideoCodecCtx; -AVCodecContext *gAudioCodecCtx; - -AVCodec *gVideoCodec; -AVCodec *gAudioCodec; - - -bool debug_mode; -int gMinAudioBufferSize; - -AVDictionary *avFormatOptions = NULL; -AVDictionary *avCodecOptions = NULL; - -jint g_playbackState; -jint FFMPEG_PLAYBACK_STOPPED = 0; -jint FFMPEG_PLAYBACK_PLAYING = 1; -jint FFMPEG_PLAYBACK_PAUSED = 2; -int gFramesCount; - -struct SwrContext *swrCtx; - -int gFrameCount; - -JNIEXPORT void JNICALL naInit(JNIEnv *env, jobject instance) { - if(debug_mode) { - LOGD(10, "[DEBUG] Initializing FFmpeg..."); - } - av_register_all(); - avcodec_register_all(); - avformat_network_init(); - gFormatCtx = avformat_alloc_context(); -} - -JNIEXPORT jstring JNICALL naShowLogo(JNIEnv *env, jobject instance) { - char logo[256] = "Logo"; - sprintf(logo, "OpenVK Media Player ver. %s for Android" - "\r\nOpenVK Media Player for Android is part of OpenVK Legacy Android app " - "licensed under AGPLv3 or later version." - "\r\nUsing FFmpeg licensed under LGPLv3 or later version.", version); - return env->NewStringUTF(logo); -} - -JNIEXPORT void JNICALL naSetDebugMode(JNIEnv *env, jobject instance, jboolean value) { - if(value == JNI_TRUE) { - debug_mode = true; - LOGD(10, "[DEBUG] Enabled Debug Mode"); - } else { - LOGD(10, "[DEBUG] Disabled Debug Mode"); - } -} - -JNIEXPORT void JNICALL naSetMinAudioBufferSize(JNIEnv *env, jobject instance, jint minBuffSize) { - gMinAudioBufferSize = (int)minBuffSize; -} - -JNIEXPORT jint JNICALL naOpenFile(JNIEnv *env, jobject instance, jstring filename) { - AVDictionary *optionsDict = NULL; - AVFrame *decodedFrame = NULL; - AVFrame *frameRGBA = NULL; - jobject bitmap; - int result, - aCodecResult, - vCodecResult; - char errorString[192]; - - gFileName = (char *)env->GetStringUTFChars(filename, NULL); - if((result = avformat_open_input(&gFormatCtx, gFileName, NULL, NULL))!=0){ - if(result == -2) { - sprintf(errorString, "File not found"); - } else if (av_strerror(result, errorString, 192) < 0) { - strerror_r(-gErrorCode, errorString, 192); - } - LOGE(10, "[ERROR] Cannot open file %s (%d, %s)", gFileName, result, errorString); - return -1; - } - - if(avformat_find_stream_info(gFormatCtx, NULL)<0){ - LOGE(10, "FAILED to find stream info %s", gFileName); - return -1; - } - - av_dump_format(gFormatCtx, 0, gFileName, 0); - - gVideoStreamIndex = -1; - for(int i = 0; inb_streams; i++) { - if(gFormatCtx->streams[i]->codec->codec_type == AVMEDIA_TYPE_VIDEO) { - gVideoStreamIndex = i; - } else if(gFormatCtx->streams[i]->codec->codec_type == AVMEDIA_TYPE_AUDIO) { - gAudioStreamIndex = i; - } - } - if(gVideoStreamIndex == -1){ - LOGE(10, "Didn't find a video stream"); - } else if(gAudioStreamIndex == -1){ - LOGE(10, "Didn't find a audio stream"); - } else if(gVideoStreamIndex == -1 && gAudioStreamIndex == -1){ - LOGE(10, "Media streams not found"); - return -1; - } - - if(gVideoStreamIndex != -1) { - gVideoCodecCtx = gFormatCtx->streams[gVideoStreamIndex]->codec; - gVideoCodec = avcodec_find_decoder(gVideoCodecCtx->codec_id); - if(gVideoCodec==NULL) { - LOGE(10, "Unsupported video codec"); - vCodecResult = -1; - } else if(avcodec_open2(gVideoCodecCtx, gVideoCodec, &optionsDict)<0){ - LOGE(10, "Could not open video codec"); - vCodecResult = -1; - } - } - if(gAudioStreamIndex != -1) { - gAudioCodecCtx = gFormatCtx->streams[gAudioStreamIndex]->codec; - gAudioCodec = avcodec_find_decoder(gAudioCodecCtx->codec_id); - if(gAudioCodec == NULL) { - LOGE(10, "Unsupported audio codec"); - aCodecResult = -1; - } else if(avcodec_open2(gAudioCodecCtx, gAudioCodec, &optionsDict)<0){ - LOGE(10, "Could not open audio codec"); - aCodecResult = -1; - } - } - - if(aCodecResult != -1 || vCodecResult != -1) { - return 0; - } else { - return -1; - } -} - -JNIEXPORT uint8_t* JNICALL convertYuv2Rgb(AVPixelFormat pxf, AVFrame* frame, int length) { - uint8_t *buffer = (uint8_t*) malloc((size_t)length); - AVFrame* frameRGB = av_frame_alloc(); - - AVPixelFormat output_pxf = pxf; - - avpicture_fill((AVPicture *)frameRGB, (uint8_t*)buffer, output_pxf, - gVideoCodecCtx->width, gVideoCodecCtx->height); - SwsContext* sws_ctx = sws_getContext - ( - gVideoCodecCtx->width, - gVideoCodecCtx->height, - gVideoCodecCtx->pix_fmt, - gVideoCodecCtx->width, - gVideoCodecCtx->height, - output_pxf, - SWS_BILINEAR, - NULL, - NULL, - NULL - ); - const int width = gVideoCodecCtx->width, height = gVideoCodecCtx->height; - SwsContext* img_convert_ctx = sws_getContext(width, height, - gVideoCodecCtx->pix_fmt, - width, height, output_pxf, SWS_BICUBIC, - NULL, NULL, NULL); - - - if(img_convert_ctx == NULL) { - LOGE(10, "Cannot initialize the conversion context!"); - return NULL; - } - int Y, Cr, Cb; - int R, G, B; - - int ret = sws_scale(img_convert_ctx, (const uint8_t* const*)frame->data, frame->linesize, 0, - gVideoCodecCtx->height, frameRGB->data, frameRGB->linesize); - if(frameRGB->data[0] == NULL) { - LOGE(10, "SWS_Scale failed"); - } - - avpicture_layout((AVPicture*)frameRGB, output_pxf, width, height, (unsigned char*)buffer, length); - av_free(frameRGB); - return buffer; -} - -JNIEXPORT void JNICALL decodeAudioFromPacket( // Decoding audio packets - JNIEnv* env, jobject instance, jclass jmplay, - AVPacket avPkt, int tAudioFrames, - uint8_t* buffer, jbyteArray buffer2, - int audioBufferLength -) { - - AVFrame *pFrame = av_frame_alloc(); - int AUDIO_INBUF_SIZE = 4096; - int dataSize = 192000 * 4; - int decodedDataSize = 0; - int packetSize = avPkt.size; - int status = 0; - jmethodID renderAudioMid = env->GetMethodID(jmplay, "renderAudio", "([BI)V"); - - // Allocate audio frame - pFrame = av_frame_alloc(); - int len = avcodec_decode_audio4( - gAudioCodecCtx, - pFrame, - &status, - &avPkt - ); - if (status) { - int sampleSize = av_samples_get_buffer_size(NULL, - gAudioCodecCtx->channels, - pFrame->nb_samples, - gAudioCodecCtx->sample_fmt, - 1); - if(debug_mode) { - LOGD(10, "[DEBUG] Decoding audio frame #%d | Length: %d of %d", - tAudioFrames + 1, len, packetSize); - } - buffer = (uint8_t *) pFrame->data[0]; - env->SetByteArrayRegion(buffer2, 0, (jsize) sampleSize, (jbyte *) buffer); - env->CallVoidMethod(instance, renderAudioMid, buffer2, sampleSize); - } - //env->ReleaseByteArrayElements(buffer2, (jbyte *) buffer, 0); - av_free(pFrame); - tAudioFrames++; -} - -JNIEXPORT void JNICALL decodeVideoFromPacket( // Decoding video packets - JNIEnv* env, jobject instance, jclass jmplay, - AVPacket avPkt, int tVideoFrames, uint8_t* buffer, - jbyteArray buffer2, int videoBufferLength -) { - int vWidth = gVideoCodecCtx->width; - int vHeight = gVideoCodecCtx->height; - int dataSize = avpicture_get_size(AV_PIX_FMT_RGB32, vWidth, vHeight); - int decodedDataSize = 0; - int packetSize = avPkt.size; - int frameDecoded; - jmethodID renderVideoMid = env->GetMethodID(jmplay, "renderVideo", "([BI)V"); - AVFrame *pFrame = av_frame_alloc(), - *pFrameRGB = av_frame_alloc(); - - avpicture_fill((AVPicture*) pFrame, - (const uint8_t*) buffer, - gVideoCodecCtx->pix_fmt, - gVideoCodecCtx->width, - gVideoCodecCtx->height - ); - - if (avPkt.stream_index == gVideoStreamIndex) { - int size = avPkt.size; - if (debug_mode) { - LOGD(10, "[DEBUG] Decoding video frame #%d... | Length: %d", tVideoFrames, avPkt.size); - } - - struct SwsContext *img_convert_ctx = NULL; - avcodec_decode_video2(gVideoCodecCtx, pFrame, &frameDecoded, &avPkt); - - if (!frameDecoded || pFrame == NULL) { - if (debug_mode) { - LOGE(10, "[ERROR] Frame #%d not decoded.", tVideoFrames - 1); - } - return; - } - - try { - AVPixelFormat pxf; - - // RGB565 by default for Android Canvas in pre-Gingerbread devices. - if(android::getApiLevel(env) >= OS_CODENAME_GINGERBREAD) { - pxf = AV_PIX_FMT_BGR32; - } else { - pxf = AV_PIX_FMT_RGB565; - } - - buffer = (uint8_t*) convertYuv2Rgb(pxf, pFrame, videoBufferLength); - - if(buffer == NULL) { - LOGE(10, "[ERROR] Conversion failed"); - return; - } - - env->SetByteArrayRegion(buffer2, 0, (jsize) videoBufferLength, (jbyte *) buffer); - env->CallVoidMethod(instance, renderVideoMid, buffer2, videoBufferLength); - } catch (...) { - if (debug_mode) { - LOGE(10, "[ERROR] Render video frames failed"); - return; - } - } - } - av_free(pFrame); - av_free(pFrameRGB); - tVideoFrames++; - gFramesCount = tVideoFrames; - env->ReleaseByteArrayElements(buffer2, (jbyte *) buffer, 0); // clear buffer before next frame -} - -int decodeMediaFile(JNIEnv* env, jobject instance) { - if(debug_mode) { - LOGD(10, "[DEBUG] Decoding audio stream #%d and video stream #%d...", - gAudioStreamIndex + 1, gVideoStreamIndex + 1 - ) - } - - int aBuffLength = 8192; - int vWidth = 0; - int vHeight = 0; - - if(gVideoStreamIndex != -1) { - vWidth = gVideoCodecCtx->width; - vHeight = gVideoCodecCtx->height; - } else { - vWidth = 320; - vHeight = 240; - } - - jclass jmplay = env->GetObjectClass(instance); - jmethodID completePlayback = env->GetMethodID(jmplay, "completePlayback", "()V"); - AVPacket avPkt; - uint8_t *audioBuffer, - *videoBuffer; - int receivedFrame = 0; - int tAudioFrames = 0; - int tVideoFrames = 0; - int status = -1; - int vBuffLength = avpicture_get_size(AV_PIX_FMT_RGB32, vWidth, vHeight); - av_init_packet(&avPkt); - if(!gVideoCodec && !gAudioCodec) { - return -1; - } - - jbyteArray jVideoBuffer = env->NewByteArray((jsize) vBuffLength);; - jbyteArray jAudioBuffer = env->NewByteArray((jsize) aBuffLength); - - while ((status = av_read_frame(gFormatCtx, &avPkt)) >= 0) { - if (avPkt.stream_index == gAudioStreamIndex) { - if(gAudioStreamIndex != -1) { - audioBuffer = (uint8_t*)malloc(aBuffLength); - decodeAudioFromPacket( - env, instance, jmplay, - avPkt, tAudioFrames++, - audioBuffer, jAudioBuffer, - aBuffLength - ); - free(audioBuffer); - } - } else if(avPkt.stream_index == gVideoStreamIndex) { - if(gVideoStreamIndex != -1) { - videoBuffer = (uint8_t*)malloc(vBuffLength); - decodeVideoFromPacket( - env, instance, jmplay, - avPkt, tVideoFrames++, - videoBuffer, jVideoBuffer, - vBuffLength - ); - free(videoBuffer); - } - } - av_packet_unref(&avPkt); - } - jmethodID completePbMid = env->GetMethodID(jmplay, "completePlayback", "()V"); - env->CallVoidMethod(instance, completePbMid); - env->DeleteLocalRef(jmplay); - env->DeleteLocalRef(jAudioBuffer); - env->DeleteLocalRef(jVideoBuffer); - if(gVideoStreamIndex != -1) { - avcodec_close(gVideoCodecCtx); - } - if(gAudioStreamIndex != -1) { - avcodec_close(gAudioCodecCtx); - } - avformat_close_input(&gFormatCtx); - return 0; -} - -JNIEXPORT jint JNICALL naPlay(JNIEnv *env, jobject instance) { - return (jint)decodeMediaFile(env, instance); -} - -JNIEXPORT jobject JNICALL naGenerateTrackInfo( - JNIEnv* env, jobject instance, jint type -) { - // JNI field types (bad stuff, don't you agree?) - // [JNI] => [java] - // "[?" => ?[] == int[], bool[], long[] and etc. - // "I" => int - // "J" => long (aka. int64) - // "Z" => boolean - // "D" => double - // "F" => float - - jclass track_class; - try { - AVStream *pStream; - if (type == AVMEDIA_TYPE_VIDEO) { - if(gVideoStreamIndex != -1) { - pStream = gFormatCtx->streams[gVideoStreamIndex]; - // Load OvkVideoTrack class - track_class = env->FindClass( - "uk/openvk/android/legacy/utils/media/OvkVideoTrack" - ); - // Load OvkVideoTrack class method - jmethodID video_track_init = env->GetMethodID( - track_class, "", "()V" - ); - jfieldID codec_name_field = env->GetFieldID( - track_class, "codec_name", "Ljava/lang/String;" - ); - jfieldID frame_size_field = env->GetFieldID(track_class, "frame_size", "[I"); - jfieldID bitrate_field = env->GetFieldID( - track_class, "bitrate", "J" - ); - jfieldID frame_rate_field = env->GetFieldID( - track_class, "frame_rate", "F" - ); - - jobject track = env->NewObject(track_class, video_track_init); - - // Load OvkVideoTrack values form fields (class variables) - env->SetObjectField(track, codec_name_field, env->NewStringUTF(gVideoCodec->name)); - jintArray array = (jintArray) env->GetObjectField(track, frame_size_field); - jint *frame_size = env->GetIntArrayElements(array, 0); - frame_size[0] = gVideoCodecCtx->width; - frame_size[1] = gVideoCodecCtx->height; - env->ReleaseIntArrayElements(array, frame_size, 0); - env->SetLongField(track, bitrate_field, gVideoCodecCtx->bit_rate); - env->SetFloatField(track, frame_rate_field, pStream->avg_frame_rate.num); - return track; - } else { - return NULL; - } - } else { - if(gAudioStreamIndex != -1) { - pStream = gFormatCtx->streams[gAudioStreamIndex]; - // Load OvkAudioTrack class - track_class = env->FindClass( - "uk/openvk/android/legacy/utils/media/OvkAudioTrack" - ); - // Load OvkVideoTrack class methods - jmethodID audio_track_init = env->GetMethodID( - track_class, "", "()V" - ); - - jobject track = env->NewObject(track_class, audio_track_init); - - jfieldID codec_name_field = env->GetFieldID( - track_class, "codec_name", "Ljava/lang/String;" - ); - jfieldID sample_rate_field = env->GetFieldID( - track_class, "sample_rate", "J" - ); - jfieldID bitrate_field = env->GetFieldID( - track_class, "bitrate", "J" - ); - jfieldID channels_field = env->GetFieldID( - track_class, "channels", "I" - ); - - // Load OvkAudioTrack values form fields (class variables) - env->SetObjectField(track, codec_name_field, env->NewStringUTF(gAudioCodec->name)); - env->SetLongField(track, sample_rate_field, gAudioCodecCtx->sample_rate); - env->SetLongField(track, bitrate_field, gAudioCodecCtx->bit_rate); - env->SetIntField(track, channels_field, gAudioCodecCtx->channels); - return track; - } else { - return NULL; - } - } - } catch (...) { - if(debug_mode) { - LOGE(1, "[ERROR] Track not found"); - } - return NULL; - } - return NULL; -} -#pragma clang diagnostic pop - -jint JNI_OnLoad(JavaVM* pVm, void* reserved) { - JNIEnv* env; - if (pVm->GetEnv((void **)&env, JNI_VERSION_1_6) != JNI_OK) { - return -1; - } - JNINativeMethod nm[7]; - nm[0].name = "naInit"; - nm[0].signature = "()V"; - nm[0].fnPtr = (void*)naInit; - - nm[1].name = "naShowLogo"; - nm[1].signature = "()Ljava/lang/String;"; - nm[1].fnPtr = (void*)naShowLogo; - - nm[2].name = "naSetDebugMode"; - nm[2].signature = "(Z)V"; // мда - nm[2].fnPtr = (void*)naSetDebugMode; - - nm[3].name = "naOpenFile"; - nm[3].signature = "(Ljava/lang/String;)I"; - nm[3].fnPtr = (void*)naOpenFile; - - nm[4].name = "naGenerateTrackInfo"; - nm[4].signature = "(I)Ljava/lang/Object;"; - nm[4].fnPtr = (void*)naGenerateTrackInfo; - - nm[5].name = "naPlay"; - nm[5].signature = "()I"; - nm[5].fnPtr = (void*)naPlay; - - nm[6].name = "naSetMinAudioBufferSize"; - nm[6].signature = "(I)V"; - nm[6].fnPtr = (void*)naSetMinAudioBufferSize; - - /* nm[3].name = "naStop"; - nm[3].signature = "()V"; - nm[3].fnPtr = (void*)naStop; - */ - jclass cls = env->FindClass("uk/openvk/android/legacy/utils/media/OvkMediaPlayer"); - //Register methods with env->RegisterNatives. - env->RegisterNatives(cls, nm, 7); - return JNI_VERSION_1_6; -} \ No newline at end of file From 962f432d670f9e8123f53f6b2ae79a37ee3f7558 Mon Sep 17 00:00:00 2001 From: Dmitry Tretyakov <76806170+tretdm@users.noreply.github.com> Date: Tue, 16 Apr 2024 08:25:51 +0700 Subject: [PATCH 02/23] Update DebugMenuActivity.java --- .../core/activities/settings/DebugMenuActivity.java | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/app/src/main/java/uk/openvk/android/legacy/core/activities/settings/DebugMenuActivity.java b/app/src/main/java/uk/openvk/android/legacy/core/activities/settings/DebugMenuActivity.java index 97c96e9fc..efba14f49 100644 --- a/app/src/main/java/uk/openvk/android/legacy/core/activities/settings/DebugMenuActivity.java +++ b/app/src/main/java/uk/openvk/android/legacy/core/activities/settings/DebugMenuActivity.java @@ -157,16 +157,6 @@ public boolean onPreferenceClick(Preference preference) { } }); - Preference experimentalFeats = findPreference("experimentalFeats"); - experimentalFeats.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { - @Override - public boolean onPreferenceClick(Preference preference) { - Intent intent = new Intent(DebugMenuActivity.this, ExperimentalFeaturesActivity.class); - startActivity(intent); - return false; - } - }); - Preference causeAppToCrash = findPreference("causeAppToCrash"); causeAppToCrash.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override From 74bb4dc3b1638fdafb04e635f291f1b32665b5d6 Mon Sep 17 00:00:00 2001 From: Dmitry Tretyakov <76806170+tretdm@users.noreply.github.com> Date: Tue, 16 Apr 2024 10:48:41 +0700 Subject: [PATCH 03/23] fix(auth): Gap when using `minvk.ru` proxy --- .../legacy/core/activities/AuthActivity.java | 21 ++++++++++++------- .../legacy/receivers/OvkAPIReceiver.java | 11 ++++++++++ .../client/entities/Authorization.java | 12 +++++++---- 3 files changed, 33 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/uk/openvk/android/legacy/core/activities/AuthActivity.java b/app/src/main/java/uk/openvk/android/legacy/core/activities/AuthActivity.java index 7a0f1e20e..d0ae415e3 100644 --- a/app/src/main/java/uk/openvk/android/legacy/core/activities/AuthActivity.java +++ b/app/src/main/java/uk/openvk/android/legacy/core/activities/AuthActivity.java @@ -74,7 +74,7 @@ public class AuthActivity extends NetworkAuthActivity { private Account account; private JSONParser jsonParser = new JSONParser(); private int twofactor_fail = -1; - private Authorization auth; + public Authorization auth; private ArrayList instances_list; @Override @@ -413,13 +413,20 @@ public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) { twofactor_dlg.setCancelable(false); if (!AuthActivity.this.isFinishing()) twofactor_dlg.show(); } else if (message == HandlerMessages.AUTHORIZED) { - auth = new Authorization(response); - if(connectionDialog.isShowing()) { - connectionDialog.setProgressText(getResources().getString(R.string.creating_account)); + try { + if (connectionDialog.isShowing()) { + connectionDialog.setProgressText(getResources().getString(R.string.creating_account)); + } + account = new Account(this); + ovk_api.wrapper.setAccessToken(auth.getAccessToken()); + account.getProfileInfo(ovk_api.wrapper); + } catch (Exception e) { + e.printStackTrace(); + alertDialog.build(new AlertDialog.Builder(this).setNeutralButton(R.string.ok, null), + getResources().getString(R.string.auth_error_title), + getResources().getString(R.string.auth_error, getReason(message)), null); + alertDialog.show(); } - account = new Account(this); - ovk_api.wrapper.setAccessToken(auth.getAccessToken()); - account.getProfileInfo(ovk_api.wrapper); } else if(message == HandlerMessages.ACCOUNT_PROFILE_INFO) { String server = ((EditTextAction) findViewById(R.id.instance_name)).getText(); String username = ((EditText) findViewById(R.id.auth_login)).getText().toString(); diff --git a/app/src/main/java/uk/openvk/android/legacy/receivers/OvkAPIReceiver.java b/app/src/main/java/uk/openvk/android/legacy/receivers/OvkAPIReceiver.java index 5f470466b..dc999ad4d 100644 --- a/app/src/main/java/uk/openvk/android/legacy/receivers/OvkAPIReceiver.java +++ b/app/src/main/java/uk/openvk/android/legacy/receivers/OvkAPIReceiver.java @@ -30,8 +30,11 @@ import android.support.v7.preference.PreferenceManager; import android.util.Log; +import org.json.JSONException; + import java.util.ArrayList; +import uk.openvk.android.client.entities.Authorization; import uk.openvk.android.legacy.BuildConfig; import uk.openvk.android.legacy.OvkApplication; import uk.openvk.android.client.OpenVKAPI; @@ -302,9 +305,17 @@ public Message parseJSONData(OvkAPIWrapper wrapper, Handler handler, Bundle data } if (activity instanceof AuthActivity) { + AuthActivity auth_a = (AuthActivity) activity; assert method != null; switch (method) { case "Account.getProfileInfo": + try { + auth_a.auth = new Authorization(data.getString("response")); + } catch (JSONException e) { + msg.what = HandlerMessages.INTERNAL_ERROR; + } catch (IllegalAccessException e) { + msg.what = HandlerMessages.INVALID_USERNAME_OR_PASSWORD; + } msg.what = HandlerMessages.ACCOUNT_PROFILE_INFO; break; } diff --git a/modules/ovk-api/src/main/java/uk/openvk/android/client/entities/Authorization.java b/modules/ovk-api/src/main/java/uk/openvk/android/client/entities/Authorization.java index e14af47dc..9df7831c7 100644 --- a/modules/ovk-api/src/main/java/uk/openvk/android/client/entities/Authorization.java +++ b/modules/ovk-api/src/main/java/uk/openvk/android/client/entities/Authorization.java @@ -26,6 +26,8 @@ import org.json.JSONException; import org.json.JSONObject; +import java.lang.Error; + import uk.openvk.android.client.wrappers.JSONParser; public class Authorization { @@ -34,15 +36,17 @@ public class Authorization { private JSONParser jsonParser; public static String ACCOUNT_TYPE = "uk.openvk.android.legacy.account"; - public Authorization(String response) { + public Authorization(String response) throws JSONException, IllegalAccessException { this.response = response; jsonParser = new JSONParser(); JSONObject json = jsonParser.parseJSON(response); if(json != null) { - try { + if(json.has("error")) { + throw new IllegalAccessException( + String.format("Authorization error occurred: %s", json.get("error_description")) + ); + } else if(json.has("access_token")) { this.access_token = json.getString("access_token"); - } catch (JSONException e) { - e.printStackTrace(); } } } From 8b2607e35f96c999ad5c39e268849f17fab33152 Mon Sep 17 00:00:00 2001 From: Dmitry Tretyakov <76806170+tretdm@users.noreply.github.com> Date: Tue, 16 Apr 2024 10:51:42 +0700 Subject: [PATCH 04/23] Update OvkAPIReceiver.java --- .../java/uk/openvk/android/legacy/receivers/OvkAPIReceiver.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/uk/openvk/android/legacy/receivers/OvkAPIReceiver.java b/app/src/main/java/uk/openvk/android/legacy/receivers/OvkAPIReceiver.java index dc999ad4d..9a5e92c79 100644 --- a/app/src/main/java/uk/openvk/android/legacy/receivers/OvkAPIReceiver.java +++ b/app/src/main/java/uk/openvk/android/legacy/receivers/OvkAPIReceiver.java @@ -311,12 +311,12 @@ public Message parseJSONData(OvkAPIWrapper wrapper, Handler handler, Bundle data case "Account.getProfileInfo": try { auth_a.auth = new Authorization(data.getString("response")); + msg.what = HandlerMessages.ACCOUNT_PROFILE_INFO; } catch (JSONException e) { msg.what = HandlerMessages.INTERNAL_ERROR; } catch (IllegalAccessException e) { msg.what = HandlerMessages.INVALID_USERNAME_OR_PASSWORD; } - msg.what = HandlerMessages.ACCOUNT_PROFILE_INFO; break; } } else if (activity instanceof NetworkFragmentActivity) { From 8ead44dd3cecb6ca45ea41745a8175005dc4e36f Mon Sep 17 00:00:00 2001 From: Dmitry Tretyakov <76806170+tretdm@users.noreply.github.com> Date: Tue, 16 Apr 2024 10:58:16 +0700 Subject: [PATCH 05/23] Update OvkAPIReceiver.java --- .../legacy/receivers/OvkAPIReceiver.java | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/uk/openvk/android/legacy/receivers/OvkAPIReceiver.java b/app/src/main/java/uk/openvk/android/legacy/receivers/OvkAPIReceiver.java index 9a5e92c79..96bce185f 100644 --- a/app/src/main/java/uk/openvk/android/legacy/receivers/OvkAPIReceiver.java +++ b/app/src/main/java/uk/openvk/android/legacy/receivers/OvkAPIReceiver.java @@ -306,18 +306,20 @@ public Message parseJSONData(OvkAPIWrapper wrapper, Handler handler, Bundle data if (activity instanceof AuthActivity) { AuthActivity auth_a = (AuthActivity) activity; - assert method != null; - switch (method) { - case "Account.getProfileInfo": - try { - auth_a.auth = new Authorization(data.getString("response")); + if(method != null) { + switch (method) { + case "Account.getProfileInfo": msg.what = HandlerMessages.ACCOUNT_PROFILE_INFO; - } catch (JSONException e) { - msg.what = HandlerMessages.INTERNAL_ERROR; - } catch (IllegalAccessException e) { - msg.what = HandlerMessages.INVALID_USERNAME_OR_PASSWORD; - } - break; + break; + } + } else { + try { + auth_a.auth = new Authorization(data.getString("response")); + } catch (JSONException e) { + msg.what = HandlerMessages.INTERNAL_ERROR; + } catch (IllegalAccessException e) { + msg.what = HandlerMessages.INVALID_USERNAME_OR_PASSWORD; + } } } else if (activity instanceof NetworkFragmentActivity) { NetworkFragmentActivity net_a = (NetworkFragmentActivity) activity; From bc3c005b067413d496b7aad321b48044496299fa Mon Sep 17 00:00:00 2001 From: Dmitry Tretyakov <76806170+tretdm@users.noreply.github.com> Date: Tue, 16 Apr 2024 11:04:50 +0700 Subject: [PATCH 06/23] fix(auth): Finally --- .../legacy/receivers/OvkAPIReceiver.java | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/uk/openvk/android/legacy/receivers/OvkAPIReceiver.java b/app/src/main/java/uk/openvk/android/legacy/receivers/OvkAPIReceiver.java index 96bce185f..7806a5d6f 100644 --- a/app/src/main/java/uk/openvk/android/legacy/receivers/OvkAPIReceiver.java +++ b/app/src/main/java/uk/openvk/android/legacy/receivers/OvkAPIReceiver.java @@ -306,20 +306,11 @@ public Message parseJSONData(OvkAPIWrapper wrapper, Handler handler, Bundle data if (activity instanceof AuthActivity) { AuthActivity auth_a = (AuthActivity) activity; - if(method != null) { - switch (method) { - case "Account.getProfileInfo": - msg.what = HandlerMessages.ACCOUNT_PROFILE_INFO; - break; - } - } else { - try { - auth_a.auth = new Authorization(data.getString("response")); - } catch (JSONException e) { - msg.what = HandlerMessages.INTERNAL_ERROR; - } catch (IllegalAccessException e) { - msg.what = HandlerMessages.INVALID_USERNAME_OR_PASSWORD; - } + assert method != null; + switch (method) { + case "Account.getProfileInfo": + msg.what = HandlerMessages.ACCOUNT_PROFILE_INFO; + break; } } else if (activity instanceof NetworkFragmentActivity) { NetworkFragmentActivity net_a = (NetworkFragmentActivity) activity; From 2200c9f4d6bbf46a65a0d09481f82fd6bfa4dac9 Mon Sep 17 00:00:00 2001 From: Dmitry Tretyakov <76806170+tretdm@users.noreply.github.com> Date: Tue, 16 Apr 2024 11:04:53 +0700 Subject: [PATCH 07/23] Update AuthActivity.java --- .../android/legacy/core/activities/AuthActivity.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/app/src/main/java/uk/openvk/android/legacy/core/activities/AuthActivity.java b/app/src/main/java/uk/openvk/android/legacy/core/activities/AuthActivity.java index d0ae415e3..e6467a270 100644 --- a/app/src/main/java/uk/openvk/android/legacy/core/activities/AuthActivity.java +++ b/app/src/main/java/uk/openvk/android/legacy/core/activities/AuthActivity.java @@ -41,6 +41,8 @@ import android.widget.TextView; import android.widget.Toast; +import org.json.JSONException; + import java.util.ArrayList; import java.util.Arrays; import java.util.Locale; @@ -413,6 +415,15 @@ public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) { twofactor_dlg.setCancelable(false); if (!AuthActivity.this.isFinishing()) twofactor_dlg.show(); } else if (message == HandlerMessages.AUTHORIZED) { + try { + auth = new Authorization(data.getString("response")); + } catch (JSONException e) { + receiveState(HandlerMessages.INTERNAL_ERROR, data); + return; + } catch (IllegalAccessException e) { + receiveState(HandlerMessages.INVALID_USERNAME_OR_PASSWORD, data); + return; + } try { if (connectionDialog.isShowing()) { connectionDialog.setProgressText(getResources().getString(R.string.creating_account)); From 794b1a28d1d0fdf6c397ec7ff1c1b427fbf65386 Mon Sep 17 00:00:00 2001 From: Dmitry Tretyakov <76806170+tretdm@users.noreply.github.com> Date: Tue, 16 Apr 2024 11:10:56 +0700 Subject: [PATCH 08/23] fix(auth): 2FA for `minvk.ru` proxy --- .../android/legacy/core/activities/AuthActivity.java | 7 ++++++- .../uk/openvk/android/client/entities/Authorization.java | 8 +++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/uk/openvk/android/legacy/core/activities/AuthActivity.java b/app/src/main/java/uk/openvk/android/legacy/core/activities/AuthActivity.java index e6467a270..e99586801 100644 --- a/app/src/main/java/uk/openvk/android/legacy/core/activities/AuthActivity.java +++ b/app/src/main/java/uk/openvk/android/legacy/core/activities/AuthActivity.java @@ -421,7 +421,12 @@ public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) { receiveState(HandlerMessages.INTERNAL_ERROR, data); return; } catch (IllegalAccessException e) { - receiveState(HandlerMessages.INVALID_USERNAME_OR_PASSWORD, data); + if(auth.getErrorMessage() != null && + auth.getErrorMessage().equals("need_validation")) { + receiveState(HandlerMessages.TWOFACTOR_CODE_REQUIRED, data); + } else { + receiveState(HandlerMessages.INVALID_USERNAME_OR_PASSWORD, data); + } return; } try { diff --git a/modules/ovk-api/src/main/java/uk/openvk/android/client/entities/Authorization.java b/modules/ovk-api/src/main/java/uk/openvk/android/client/entities/Authorization.java index 9df7831c7..05b9f2679 100644 --- a/modules/ovk-api/src/main/java/uk/openvk/android/client/entities/Authorization.java +++ b/modules/ovk-api/src/main/java/uk/openvk/android/client/entities/Authorization.java @@ -33,6 +33,7 @@ public class Authorization { private String access_token; private String response; + private String error_msg; private JSONParser jsonParser; public static String ACCOUNT_TYPE = "uk.openvk.android.legacy.account"; @@ -42,8 +43,9 @@ public Authorization(String response) throws JSONException, IllegalAccessExcepti JSONObject json = jsonParser.parseJSON(response); if(json != null) { if(json.has("error")) { + error_msg = json.getString("error"); throw new IllegalAccessException( - String.format("Authorization error occurred: %s", json.get("error_description")) + String.format("Authorization error occurred: %s", json.getString("error_description")) ); } else if(json.has("access_token")) { this.access_token = json.getString("access_token"); @@ -54,4 +56,8 @@ public Authorization(String response) throws JSONException, IllegalAccessExcepti public String getAccessToken() { return access_token; } + + public String getErrorMessage() { + return error_msg; + } } From 32315e4dbf73edc150223694e26761ed82cbfe53 Mon Sep 17 00:00:00 2001 From: Dmitry Tretyakov <76806170+tretdm@users.noreply.github.com> Date: Tue, 16 Apr 2024 11:25:09 +0700 Subject: [PATCH 09/23] Update Authorization.java --- .../client/entities/Authorization.java | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/modules/ovk-api/src/main/java/uk/openvk/android/client/entities/Authorization.java b/modules/ovk-api/src/main/java/uk/openvk/android/client/entities/Authorization.java index 05b9f2679..ae32d3a1a 100644 --- a/modules/ovk-api/src/main/java/uk/openvk/android/client/entities/Authorization.java +++ b/modules/ovk-api/src/main/java/uk/openvk/android/client/entities/Authorization.java @@ -37,18 +37,21 @@ public class Authorization { private JSONParser jsonParser; public static String ACCOUNT_TYPE = "uk.openvk.android.legacy.account"; - public Authorization(String response) throws JSONException, IllegalAccessException { + public Authorization(String response) { this.response = response; jsonParser = new JSONParser(); JSONObject json = jsonParser.parseJSON(response); if(json != null) { - if(json.has("error")) { - error_msg = json.getString("error"); - throw new IllegalAccessException( - String.format("Authorization error occurred: %s", json.getString("error_description")) - ); - } else if(json.has("access_token")) { - this.access_token = json.getString("access_token"); + try { + if (json.has("error")) { + throw new IllegalAccessException( + String.format("Authorization error occurred: %s", json.getString("error_description")) + ); + } else if (json.has("access_token")) { + this.access_token = json.getString("access_token"); + } + } catch (Exception e) { + e.printStackTrace(); } } } From a63e511d34224e415fd4ee4144bd06463bb309ab Mon Sep 17 00:00:00 2001 From: Dmitry Tretyakov <76806170+tretdm@users.noreply.github.com> Date: Tue, 16 Apr 2024 11:50:40 +0700 Subject: [PATCH 10/23] fix(auth): Test 2FA auth --- .../legacy/core/activities/AuthActivity.java | 20 ++++++++----------- .../client/entities/Authorization.java | 4 +--- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/uk/openvk/android/legacy/core/activities/AuthActivity.java b/app/src/main/java/uk/openvk/android/legacy/core/activities/AuthActivity.java index e99586801..0d43b49c4 100644 --- a/app/src/main/java/uk/openvk/android/legacy/core/activities/AuthActivity.java +++ b/app/src/main/java/uk/openvk/android/legacy/core/activities/AuthActivity.java @@ -417,19 +417,15 @@ public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) { } else if (message == HandlerMessages.AUTHORIZED) { try { auth = new Authorization(data.getString("response")); - } catch (JSONException e) { - receiveState(HandlerMessages.INTERNAL_ERROR, data); - return; - } catch (IllegalAccessException e) { - if(auth.getErrorMessage() != null && - auth.getErrorMessage().equals("need_validation")) { - receiveState(HandlerMessages.TWOFACTOR_CODE_REQUIRED, data); - } else { - receiveState(HandlerMessages.INVALID_USERNAME_OR_PASSWORD, data); + if(auth.getErrorMessage() != null) { + Log.d(OvkApplication.APP_TAG, "Getting auth error..."); + if (auth.getErrorMessage().equals("need_validation")) { + receiveState(HandlerMessages.TWOFACTOR_CODE_REQUIRED, data); + } else { + receiveState(HandlerMessages.INTERNAL_ERROR, data); + } + return; } - return; - } - try { if (connectionDialog.isShowing()) { connectionDialog.setProgressText(getResources().getString(R.string.creating_account)); } diff --git a/modules/ovk-api/src/main/java/uk/openvk/android/client/entities/Authorization.java b/modules/ovk-api/src/main/java/uk/openvk/android/client/entities/Authorization.java index ae32d3a1a..dd74811f9 100644 --- a/modules/ovk-api/src/main/java/uk/openvk/android/client/entities/Authorization.java +++ b/modules/ovk-api/src/main/java/uk/openvk/android/client/entities/Authorization.java @@ -44,9 +44,7 @@ public Authorization(String response) { if(json != null) { try { if (json.has("error")) { - throw new IllegalAccessException( - String.format("Authorization error occurred: %s", json.getString("error_description")) - ); + error_msg = json.getString("error"); } else if (json.has("access_token")) { this.access_token = json.getString("access_token"); } From 0eb238e8003b827af8af82379bda92f7fd9c1c38 Mon Sep 17 00:00:00 2001 From: Dmitry Tretyakov <76806170+tretdm@users.noreply.github.com> Date: Tue, 16 Apr 2024 11:57:52 +0700 Subject: [PATCH 11/23] imrpove(debug): Remove experimental features --- app/src/main/res/xml/preferences_debug.xml | 8 +---- .../main/res/xml/preferences_experimental.xml | 30 ------------------- 2 files changed, 1 insertion(+), 37 deletions(-) delete mode 100644 app/src/main/res/xml/preferences_experimental.xml diff --git a/app/src/main/res/xml/preferences_debug.xml b/app/src/main/res/xml/preferences_debug.xml index 9e7dfff33..c83313aa0 100644 --- a/app/src/main/res/xml/preferences_debug.xml +++ b/app/src/main/res/xml/preferences_debug.xml @@ -41,13 +41,7 @@ android:layout="@layout/pref_widget_checkbox" android:title="@string/use_legacy_http_client" android:summary="@string/use_legacy_http_client_description"/> - - - - + - - - - - - - \ No newline at end of file From 56a4211ff8b7a43736abca9fbae6d6f2cc3198fc Mon Sep 17 00:00:00 2001 From: Dmitry Tretyakov <76806170+tretdm@users.noreply.github.com> Date: Tue, 16 Apr 2024 12:04:24 +0700 Subject: [PATCH 12/23] fix(ui): Special for Honeycomb --- .../legacy/core/fragments/AudiosFragment.java | 20 +++++++++++++++---- app/src/main/res/xml/preferences_debug.xml | 2 +- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/uk/openvk/android/legacy/core/fragments/AudiosFragment.java b/app/src/main/java/uk/openvk/android/legacy/core/fragments/AudiosFragment.java index 64abcf009..7e02d3100 100644 --- a/app/src/main/java/uk/openvk/android/legacy/core/fragments/AudiosFragment.java +++ b/app/src/main/java/uk/openvk/android/legacy/core/fragments/AudiosFragment.java @@ -157,14 +157,22 @@ public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); - inflater.inflate(R.menu.audio, menu); - fragment_menu = menu; + try { + inflater.inflate(R.menu.audio, menu); + fragment_menu = menu; + } catch (Exception e) { + e.printStackTrace(); + } } @Override public void onPrepareOptionsMenu(Menu menu) { super.onPrepareOptionsMenu(menu); - createSearchItem(menu); + try { + createSearchItem(menu); + } catch (Exception e){ + + } } private void createSearchItem(Menu menu) { @@ -265,7 +273,11 @@ public void closeSearchItem() { ab.getCustomView() .findViewById(R.id.custom_ab_layout) .setVisibility(View.VISIBLE); - searchView.setIconified(true); + try { + searchView.setIconified(true); + } catch (Exception e) { + e.printStackTrace(); + } createSearchResultsAdapter(audios); } else { final dev.tinelix.retro_ab.ActionBar actionBar = getActivity().findViewById(R.id.actionbar); diff --git a/app/src/main/res/xml/preferences_debug.xml b/app/src/main/res/xml/preferences_debug.xml index c83313aa0..906c9e6d6 100644 --- a/app/src/main/res/xml/preferences_debug.xml +++ b/app/src/main/res/xml/preferences_debug.xml @@ -41,7 +41,7 @@ android:layout="@layout/pref_widget_checkbox" android:title="@string/use_legacy_http_client" android:summary="@string/use_legacy_http_client_description"/> - + Date: Tue, 16 Apr 2024 15:05:51 +0700 Subject: [PATCH 13/23] improve(readme): Add 4PDA link --- README.md | 1 + README_RU.md | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3a52dda25..235ae2072 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ We will be happy to accept your bugreports [in our bug-tracker](https://github.c * **via [Releases page](https://github.com/openvk/mobile-android-legacy/releases/latest)** * **via [NashStore](https://store.nashstore.ru/store/637cc36cfb3ed38835524503)** _(for Russian phones kinda 😂)_ * **via [Trashbox](https://trashbox.ru/topics/164477/openvk-legacy)** +* **via [4PDA](https://4pda.to/forum/index.php?showtopic=1057695)** ## Building We recommend using [Android Studio 3.1.2](https://developer.android.com/studio/archive) and Java 7 for perfect support of libraries developed for Android 2.1 Eclair and above. diff --git a/README_RU.md b/README_RU.md index 5467f0787..fe65c72df 100644 --- a/README_RU.md +++ b/README_RU.md @@ -15,11 +15,12 @@ _Работает на OpenVK API._ * **через F-Droid** * [f-droid.org](https://f-droid.org/packages/uk.openvk.android.legacy/) * [izzysoft.de](https://apt.izzysoft.de/fdroid/index/apk/uk.openvk.android.legacy) - * [tinelix.ru](https://fdroid.tinelix.ru) + * [tinelix.ru](https://repo.tinelix.ru) * **через [Telegram-канал](https://t.me/+nPLHBZqAsFlhYmIy)** * **через [страницу релизов](https://github.com/openvk/mobile-android-legacy/releases/latest)** -* **через [NashStore](https://store.nashstore.ru/store/637cc36cfb3ed38835524503)** _(как бы для российских телефонов 😂)_ +* **через [NashStore](https://store.nashstore.ru/store/637cc36cfb3ed38835524503)** _(а почему бы и нет?)_ * **через [Trashbox](https://trashbox.ru/topics/164477/openvk-legacy)** +* **через [4PDA](https://4pda.to/forum/index.php?showtopic=1057695)** ## Сборка Мы советуем использовать [Android Studio 3.1.2](https://developer.android.com/studio/archive) вместе с Java 7 для идеальной поддержки библиотек, разработанные для Android 2.1 Eclair и выше. From 8705eecc95bb48621f6968132306faba67b94a57 Mon Sep 17 00:00:00 2001 From: Dmitry Tretyakov Date: Sat, 11 May 2024 18:43:07 +0700 Subject: [PATCH 14/23] Upgrade to Android Studio 3.3.1 --- app/app.iml | 147 +++++++++++++--------------- mobile-android-legacy.iml | 1 + modules/actionbar/actionbar.iml | 25 ++--- modules/modules.iml | 8 +- modules/ovk-api/ovk-api.iml | 22 ++--- modules/popupmenu/popupmenu.iml | 22 ++--- modules/slidingmenu/slidingmenu.iml | 8 +- modules/twemojicon/twemojicon.iml | 13 +-- modules/wrhttp/wrhttp.iml | 22 ++--- 9 files changed, 114 insertions(+), 154 deletions(-) diff --git a/app/app.iml b/app/app.iml index 7708950a2..35341ef21 100644 --- a/app/app.iml +++ b/app/app.iml @@ -8,11 +8,11 @@ - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -111,44 +111,37 @@ - + + - - - - - - - - - + + - - - + - + + + - - - - - - - + + + + + + - + diff --git a/mobile-android-legacy.iml b/mobile-android-legacy.iml index 0221e8aea..6e3c46b13 100644 --- a/mobile-android-legacy.iml +++ b/mobile-android-legacy.iml @@ -12,6 +12,7 @@ + diff --git a/modules/actionbar/actionbar.iml b/modules/actionbar/actionbar.iml index 670276cc7..43529e996 100644 --- a/modules/actionbar/actionbar.iml +++ b/modules/actionbar/actionbar.iml @@ -28,7 +28,6 @@ - @@ -63,13 +62,6 @@ - - - - - - - @@ -77,25 +69,28 @@ - + + + + + + + + + - - - - - - + diff --git a/modules/modules.iml b/modules/modules.iml index ac369fcf5..fa3ef458d 100644 --- a/modules/modules.iml +++ b/modules/modules.iml @@ -1,11 +1,6 @@ - - - - \ No newline at end of file diff --git a/modules/ovk-api/ovk-api.iml b/modules/ovk-api/ovk-api.iml index aef4f0792..af6b839c6 100644 --- a/modules/ovk-api/ovk-api.iml +++ b/modules/ovk-api/ovk-api.iml @@ -28,7 +28,6 @@ - @@ -63,13 +62,6 @@ - - - - - - - @@ -77,20 +69,24 @@ + + + + + + + + + - - - - - diff --git a/modules/popupmenu/popupmenu.iml b/modules/popupmenu/popupmenu.iml index a46ea2bd0..4b493fea8 100644 --- a/modules/popupmenu/popupmenu.iml +++ b/modules/popupmenu/popupmenu.iml @@ -26,7 +26,6 @@ - @@ -61,13 +60,6 @@ - - - - - - - @@ -75,18 +67,22 @@ + + + + + + + + + - - - - - diff --git a/modules/slidingmenu/slidingmenu.iml b/modules/slidingmenu/slidingmenu.iml index cb51be6e2..2443db8ae 100644 --- a/modules/slidingmenu/slidingmenu.iml +++ b/modules/slidingmenu/slidingmenu.iml @@ -1,11 +1,6 @@ - - - - \ No newline at end of file diff --git a/modules/twemojicon/twemojicon.iml b/modules/twemojicon/twemojicon.iml index b09ca7a79..dae591df3 100644 --- a/modules/twemojicon/twemojicon.iml +++ b/modules/twemojicon/twemojicon.iml @@ -28,7 +28,6 @@ - @@ -77,26 +76,22 @@ - + + - - - - - - - + + \ No newline at end of file diff --git a/modules/wrhttp/wrhttp.iml b/modules/wrhttp/wrhttp.iml index a7be22673..0df424eb1 100644 --- a/modules/wrhttp/wrhttp.iml +++ b/modules/wrhttp/wrhttp.iml @@ -28,7 +28,6 @@ - @@ -63,13 +62,6 @@ - - - - - - - @@ -77,18 +69,22 @@ + + + + + + + + + - - - - - From 48921f699f238ccaa5f654157912ab073bf4eeb4 Mon Sep 17 00:00:00 2001 From: Dmitry Tretyakov Date: Sat, 11 May 2024 21:48:30 +0700 Subject: [PATCH 15/23] feat(notes): Add notes editor (works only if note exist) --- app/src/main/res/menu/note.xml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 app/src/main/res/menu/note.xml diff --git a/app/src/main/res/menu/note.xml b/app/src/main/res/menu/note.xml new file mode 100644 index 000000000..fe187c0cf --- /dev/null +++ b/app/src/main/res/menu/note.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file From a0cc5dac0534bc4677676bce84a2957a3e46edf0 Mon Sep 17 00:00:00 2001 From: Dmitry Tretyakov Date: Sat, 11 May 2024 21:49:54 +0700 Subject: [PATCH 16/23] prerel: Build 241 --- app/app.iml | 8 ++ app/build.gradle | 16 +-- .../legacy/core/activities/NoteActivity.java | 108 +++++++++++++++++- .../legacy/receivers/OvkAPIReceiver.java | 12 ++ .../ui/list/adapters/NotesListAdapter.java | 2 + .../legacy/ui/views/PostAttachmentsView.java | 1 + .../main/res/layout-sw600dp/activity_note.xml | 83 +++++++++++++- app/src/main/res/layout-v11/activity_note.xml | 87 +++++++++++++- app/src/main/res/layout-v19/activity_note.xml | 87 +++++++++++++- app/src/main/res/layout/activity_note.xml | 86 +++++++++++++- app/src/main/res/menu/note.xml | 14 ++- app/src/main/res/values-ru/strings.xml | 3 + app/src/main/res/values-uk/strings.xml | 3 + app/src/main/res/values/strings.xml | 3 + mobile-android-legacy.iml | 3 +- modules/actionbar/actionbar.iml | 6 + modules/modules.iml | 2 +- modules/ovk-api/ovk-api.iml | 5 + .../client/enumerations/HandlerMessages.java | 6 +- .../openvk/android/client/models/Notes.java | 39 +++++++ modules/popupmenu/popupmenu.iml | 5 + modules/slidingmenu/slidingmenu.iml | 2 +- modules/twemojicon/twemojicon.iml | 6 + modules/wrhttp/wrhttp.iml | 5 + 24 files changed, 552 insertions(+), 40 deletions(-) diff --git a/app/app.iml b/app/app.iml index 35341ef21..55aff64a6 100644 --- a/app/app.iml +++ b/app/app.iml @@ -113,13 +113,21 @@ + + + + + + + + diff --git a/app/build.gradle b/app/build.gradle index 5cdf78087..c241aa41f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -79,8 +79,8 @@ android { minSdkVersion 7 //noinspection GradleDependency,OldTargetApi targetSdkVersion 29 - versionCode 240 - versionName "1.2.240-u" + versionCode 241 + versionName "1.2.241-u" } buildTypes { release { @@ -99,16 +99,16 @@ android { minSdkVersion 7 //noinspection OldTargetApi targetSdkVersion 29 - versionCode 240 - versionName "1.2.240-d" + versionCode 241 + versionName "1.2.241-d" signingConfig signingConfigs.debug } releaseConfig { minSdkVersion 7 applicationId 'uk.openvk.android.legacy' targetSdkVersion 29 - versionCode 240 - versionName '1.2.240' + versionCode 241 + versionName '1.2.241' if (file('.signing/app-release.prop').exists()) { signingConfig signingConfigs.release } @@ -119,8 +119,8 @@ android { minSdkVersion 7 //noinspection OldTargetApi targetSdkVersion 29 - versionCode 240 - versionName "1.2.240-f" + versionCode 241 + versionName "1.2.241-f" if (file('.signing/app-fdroid.prop').exists()) { signingConfig signingConfigs.fdroid } diff --git a/app/src/main/java/uk/openvk/android/legacy/core/activities/NoteActivity.java b/app/src/main/java/uk/openvk/android/legacy/core/activities/NoteActivity.java index bd8c90c4f..d5eb8c9ed 100644 --- a/app/src/main/java/uk/openvk/android/legacy/core/activities/NoteActivity.java +++ b/app/src/main/java/uk/openvk/android/legacy/core/activities/NoteActivity.java @@ -28,23 +28,35 @@ import android.os.Bundle; import android.preference.PreferenceManager; import android.support.annotation.Nullable; +import android.text.Html; import android.util.Log; +import android.view.Menu; import android.view.MenuItem; +import android.view.View; import android.webkit.WebResourceRequest; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; +import android.widget.EditText; import android.widget.TextView; +import android.widget.Toast; +import uk.openvk.android.client.enumerations.HandlerMessages; import uk.openvk.android.legacy.OvkApplication; import uk.openvk.android.legacy.R; +import uk.openvk.android.legacy.core.activities.base.NetworkActivity; import uk.openvk.android.legacy.core.activities.base.TranslucentActivity; import uk.openvk.android.legacy.core.methods.CustomLinkMovementMethod; -public class NoteActivity extends TranslucentActivity { +public class NoteActivity extends NetworkActivity { private WebView webView; private SharedPreferences global_prefs; private String page; + private long note_id; + private Menu menu; + private boolean editor_mode; + private long owner_id; + @Override protected void onCreate(@Nullable Bundle savedInstanceState) { @@ -63,8 +75,30 @@ protected void onCreate(@Nullable Bundle savedInstanceState) { getResources().getDrawable(R.drawable.bg_actionbar_black)); } } + ((TextView) findViewById(R.id.note_some_xhtml_features)).setText( + Html.fromHtml(getResources().getString(R.string.some_xhtml_features_text)) + ); webView = findViewById(R.id.webview); - loadNote(); + Bundle data = getIntent().getExtras(); + if(data != null) { + if (data.containsKey("id")) { + note_id = data.getLong("id"); + } else { + finish(); + } + + if (data.containsKey("owner_id")) { + owner_id = data.getLong("owner_id"); + } else { + finish(); + } + ovk_api.notes.getById(ovk_api.wrapper, owner_id, note_id); + findViewById(R.id.note_viewer).setVisibility(View.GONE); + findViewById(R.id.note_editor).setVisibility(View.GONE); + findViewById(R.id.progress_layout).setVisibility(View.VISIBLE); + } else { + finish(); + } forceBrowserForExternalLinks(); } @@ -97,15 +131,29 @@ public boolean shouldOverrideUrlLoading(WebView view, String url) { } } + @Override + public boolean onCreateOptionsMenu(Menu menu) { + this.menu = menu; + getMenuInflater().inflate(R.menu.note, menu); + return true; + } + @Override public boolean onOptionsItemSelected(MenuItem item) { if(item.getItemId() == android.R.id.home) { onBackPressed(); + } else if(item.getItemId() == R.id.edit){ + switchToEditorMode(true); + } else if(item.getItemId() == R.id.note_save) { + switchToEditorMode(false); + String new_title = ((EditText) findViewById(R.id.note_title_editor)).getText().toString(); + String new_content = ((EditText) findViewById(R.id.note_content_editor)).getText().toString(); + ovk_api.notes.edit(ovk_api.wrapper, note_id, new_title, new_content); } return super.onOptionsItemSelected(item); } - private void loadNote() { + private void loadNote(String text) { Bundle data = getIntent().getExtras(); String instance = ((OvkApplication) getApplication()).getCurrentInstance(); if(data != null) { @@ -120,7 +168,7 @@ private void loadNote() { " " + " " + "
" + - data.getString("content") + text .replace("&", "&") .replace(" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + android:layout_marginEnd="12dp" + android:layout_marginRight="12dp" + android:layout_marginBottom="12dp" + android:orientation="vertical"> + android:background="@color/statusbar_color" /> + + + + + + + + + + + + + + + + + android:layout_marginEnd="12dp" + android:layout_marginRight="12dp" + android:layout_marginBottom="12dp" + android:orientation="vertical"> + android:background="@color/statusbar_color" /> + + + + + + + + + + + + + + + + + android:visibility="visible"> + android:background="@color/statusbar_color" /> - + + + \ No newline at end of file diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index dc8928e84..988912983 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -752,4 +752,7 @@ Пожаловаться Сохранение... + Кое-что из (X)HTML поддерживается. + ]]> diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 4f545a1f3..795adb955 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -769,4 +769,7 @@ Поскаржитись Збереження… Ви не можете увійти в обліковий запис, оскільки Вашу сторінку видалено. Якщо Ви вважаєте, що виникла помилка, відновіть її або зверніться до служби підтримки. + Щось з (X)HTML підтримується. + ]]> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8541ab34b..7245a7884 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -736,4 +736,7 @@ Report You cannot log into your account because your page has been deleted. If you think an error has occurred, please restore it or contact support. + Something from (X)HTML supported. + ]]> diff --git a/mobile-android-legacy.iml b/mobile-android-legacy.iml index 6e3c46b13..7c5910cda 100644 --- a/mobile-android-legacy.iml +++ b/mobile-android-legacy.iml @@ -12,9 +12,8 @@ - - + \ No newline at end of file diff --git a/modules/actionbar/actionbar.iml b/modules/actionbar/actionbar.iml index 43529e996..a537f6691 100644 --- a/modules/actionbar/actionbar.iml +++ b/modules/actionbar/actionbar.iml @@ -78,15 +78,21 @@ + + + + + + diff --git a/modules/modules.iml b/modules/modules.iml index fa3ef458d..a9abc0798 100644 --- a/modules/modules.iml +++ b/modules/modules.iml @@ -13,7 +13,7 @@ - + \ No newline at end of file diff --git a/modules/ovk-api/ovk-api.iml b/modules/ovk-api/ovk-api.iml index af6b839c6..3a7945163 100644 --- a/modules/ovk-api/ovk-api.iml +++ b/modules/ovk-api/ovk-api.iml @@ -80,13 +80,18 @@ + + + + + diff --git a/modules/ovk-api/src/main/java/uk/openvk/android/client/enumerations/HandlerMessages.java b/modules/ovk-api/src/main/java/uk/openvk/android/client/enumerations/HandlerMessages.java index a393c70ff..f899a2ba4 100644 --- a/modules/ovk-api/src/main/java/uk/openvk/android/client/enumerations/HandlerMessages.java +++ b/modules/ovk-api/src/main/java/uk/openvk/android/client/enumerations/HandlerMessages.java @@ -94,8 +94,10 @@ public class HandlerMessages { public static int NEWSFEED_GET_MORE_GLOBAL = 803; // Notes (/method/Notes) - public static int NOTES_GET = 900; - public static int NOTES_GET_BY_ID = 901; + public static int NOTES_ADD = 900; + public static int NOTES_GET = 901; + public static int NOTES_GET_BY_ID = 902; + public static int NOTES_EDIT = 903; // Photos (/method/Photos) public static int PHOTOS_GET = 1000; diff --git a/modules/ovk-api/src/main/java/uk/openvk/android/client/models/Notes.java b/modules/ovk-api/src/main/java/uk/openvk/android/client/models/Notes.java index eef8d5e46..817545fff 100644 --- a/modules/ovk-api/src/main/java/uk/openvk/android/client/models/Notes.java +++ b/modules/ovk-api/src/main/java/uk/openvk/android/client/models/Notes.java @@ -21,15 +21,18 @@ package uk.openvk.android.client.models; +import android.os.Bundle; import android.util.Log; import org.json.JSONArray; import org.json.JSONObject; +import java.net.URLEncoder; import java.util.ArrayList; import uk.openvk.android.client.OpenVKAPI; import uk.openvk.android.client.entities.Note; +import uk.openvk.android.client.enumerations.HandlerMessages; import uk.openvk.android.client.wrappers.JSONParser; import uk.openvk.android.client.wrappers.OvkAPIWrapper; @@ -47,6 +50,12 @@ public void get(OvkAPIWrapper wrapper, long user_id, int count, int sort) { ); } + public void getById(OvkAPIWrapper wrapper, long owner_id, long note_id) { + wrapper.sendAPIMethod("Notes.getById", + String.format("owner_id=%s¬e_id=%s", owner_id, note_id) + ); + } + public void parse(String response) { try { JSONObject json = jsonParser.parseJSON(response); @@ -71,4 +80,34 @@ public void parse(String response) { ex.printStackTrace(); } } + + public void parseNote(String response) { + try { + JSONObject json = jsonParser.parseJSON(response); + list = new ArrayList<>(); + JSONObject item = json.getJSONObject("response"); + Note note = new Note(); + note.id = item.getLong("id"); + note.owner_id = item.getLong("owner_id"); + note.title = item.getString("title"); + note.content = item.getString("text"); + note.date = item.getLong("date"); + try { // handle floating crash + list.add(note); + } catch (ArrayIndexOutOfBoundsException ignored) { + Log.e(OpenVKAPI.TAG, "WTF? The length itself in an array must not " + + "be overestimated."); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + public void edit(OvkAPIWrapper wrapper, long note_id, String new_title, String new_content) { + wrapper.sendAPIMethod("Notes.edit", + String.format("note_id=%s&title=%s&text=%s", + note_id, URLEncoder.encode(new_title), URLEncoder.encode(new_content) + ) + ); + } } diff --git a/modules/popupmenu/popupmenu.iml b/modules/popupmenu/popupmenu.iml index 4b493fea8..fd23c52a7 100644 --- a/modules/popupmenu/popupmenu.iml +++ b/modules/popupmenu/popupmenu.iml @@ -77,12 +77,17 @@ + + + + + diff --git a/modules/slidingmenu/slidingmenu.iml b/modules/slidingmenu/slidingmenu.iml index 2443db8ae..404a5c81a 100644 --- a/modules/slidingmenu/slidingmenu.iml +++ b/modules/slidingmenu/slidingmenu.iml @@ -13,7 +13,7 @@ - + \ No newline at end of file diff --git a/modules/twemojicon/twemojicon.iml b/modules/twemojicon/twemojicon.iml index dae591df3..dc5db124f 100644 --- a/modules/twemojicon/twemojicon.iml +++ b/modules/twemojicon/twemojicon.iml @@ -78,15 +78,21 @@ + + + + + + diff --git a/modules/wrhttp/wrhttp.iml b/modules/wrhttp/wrhttp.iml index 0df424eb1..334bb64a0 100644 --- a/modules/wrhttp/wrhttp.iml +++ b/modules/wrhttp/wrhttp.iml @@ -79,12 +79,17 @@ + + + + + From ea35ba7958823aa8c4d60ad35d709276935d5842 Mon Sep 17 00:00:00 2001 From: Dmitry Tretyakov Date: Sat, 11 May 2024 23:31:09 +0700 Subject: [PATCH 17/23] Update default config --- app/app.iml | 115 +++++++++++++++++++++++++++------------------------- 1 file changed, 60 insertions(+), 55 deletions(-) diff --git a/app/app.iml b/app/app.iml index 55aff64a6..265aa4efd 100644 --- a/app/app.iml +++ b/app/app.iml @@ -8,11 +8,11 @@ - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -155,5 +155,10 @@ + + + + + \ No newline at end of file From d59e5671566cc74ace9d9df866755bc9d06496e6 Mon Sep 17 00:00:00 2001 From: Dmitry Tretyakov Date: Sat, 14 Sep 2024 18:26:28 +0700 Subject: [PATCH 18/23] Replace JCenter to MVN Repository (some dependencies were lost) --- app/app.iml | 11 --- app/build.gradle | 18 ++--- app/src/main/AndroidManifest.xml | 3 +- .../activities/AboutApplicationActivity.java | 45 +++++++++-- .../core/activities/NewPostActivity.java | 1 + .../core/activities/PhotoAlbumActivity.java | 2 +- .../core/activities/WallPostActivity.java | 11 +-- .../settings/AdvancedSettingsActivity.java | 70 +++++++++++------- .../settings/DebugMenuActivity.java | 29 ++++---- .../core/fragments/MainSettingsFragment.java | 10 +-- .../drawable-hdpi/checkbox_disabled_on.png | Bin 0 -> 1050 bytes ..._disabled.png => checkbox_disabled_on.png} | Bin ...heckbox_unchecked.png => checkbox_off.png} | Bin .../{checkbox_checked.png => checkbox_on.png} | Bin .../res/drawable-mdpi/checkbox_disabled.png | Bin 0 -> 473 bytes .../drawable-mdpi/checkbox_disabled_on.png | Bin 0 -> 788 bytes .../res/drawable-nodpi/checkbox_checked.png | Bin 2567 -> 0 bytes .../checkbox_checked_disabled.png | Bin 2584 -> 0 bytes .../res/drawable-nodpi/checkbox_disabled.png | Bin 2131 -> 506 bytes .../res/drawable-nodpi/checkbox_unchecked.png | Bin 2114 -> 0 bytes .../drawable-nodpi/ee_adrod_13_installer.jpg | Bin 0 -> 28606 bytes .../res/drawable-nodpi/ee_freakbarinov.jpg | Bin 0 -> 60436 bytes .../res/drawable-nodpi/ee_ovksome_people.png | Bin 0 -> 81010 bytes .../drawable-xhdpi/checkbox_disabled_on.png | Bin 0 -> 1241 bytes app/src/main/res/drawable/checkbox.xml | 6 +- .../activity_about_application.xml | 38 +++++++--- .../activity_about_application.xml | 58 +++++++++------ .../activity_about_application.xml | 51 ++++++++----- .../layout-v11/activity_about_application.xml | 50 ++++++++----- app/src/main/res/layout-v8/pref_list.xml | 4 +- .../res/layout/activity_about_application.xml | 55 +++++++++----- build.gradle | 7 +- .../client/wrappers/DownloadManager.java | 14 +++- 33 files changed, 301 insertions(+), 182 deletions(-) create mode 100644 app/src/main/res/drawable-hdpi/checkbox_disabled_on.png rename app/src/main/res/drawable-ldpi/{checkbox_checked_disabled.png => checkbox_disabled_on.png} (100%) rename app/src/main/res/drawable-ldpi/{checkbox_unchecked.png => checkbox_off.png} (100%) rename app/src/main/res/drawable-ldpi/{checkbox_checked.png => checkbox_on.png} (100%) create mode 100644 app/src/main/res/drawable-mdpi/checkbox_disabled.png create mode 100644 app/src/main/res/drawable-mdpi/checkbox_disabled_on.png delete mode 100644 app/src/main/res/drawable-nodpi/checkbox_checked.png delete mode 100644 app/src/main/res/drawable-nodpi/checkbox_checked_disabled.png delete mode 100644 app/src/main/res/drawable-nodpi/checkbox_unchecked.png create mode 100644 app/src/main/res/drawable-nodpi/ee_adrod_13_installer.jpg create mode 100644 app/src/main/res/drawable-nodpi/ee_freakbarinov.jpg create mode 100644 app/src/main/res/drawable-nodpi/ee_ovksome_people.png create mode 100644 app/src/main/res/drawable-xhdpi/checkbox_disabled_on.png diff --git a/app/app.iml b/app/app.iml index 265aa4efd..c53cdff86 100644 --- a/app/app.iml +++ b/app/app.iml @@ -131,7 +131,6 @@ - @@ -139,13 +138,8 @@ - - - - - @@ -155,10 +149,5 @@ - - - - - \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index c241aa41f..18ebaa22c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -79,8 +79,8 @@ android { minSdkVersion 7 //noinspection GradleDependency,OldTargetApi targetSdkVersion 29 - versionCode 241 - versionName "1.2.241-u" + versionCode 242 + versionName "1.2.242-u" } buildTypes { release { @@ -99,16 +99,16 @@ android { minSdkVersion 7 //noinspection OldTargetApi targetSdkVersion 29 - versionCode 241 - versionName "1.2.241-d" + versionCode 242 + versionName "1.2.242-d" signingConfig signingConfigs.debug } releaseConfig { minSdkVersion 7 applicationId 'uk.openvk.android.legacy' targetSdkVersion 29 - versionCode 241 - versionName '1.2.241' + versionCode 242 + versionName '1.2.242' if (file('.signing/app-release.prop').exists()) { signingConfig signingConfigs.release } @@ -119,8 +119,8 @@ android { minSdkVersion 7 //noinspection OldTargetApi targetSdkVersion 29 - versionCode 241 - versionName "1.2.241-f" + versionCode 242 + versionName "1.2.242-f" if (file('.signing/app-fdroid.prop').exists()) { signingConfig signingConfigs.fdroid } @@ -148,7 +148,7 @@ dependencies { compile project(':modules:actionbar') compile project(':modules:popupmenu') compile 'com.reginald.swiperefresh:library:1.1.2' - compile 'com.seppius.plurals:android-i18n-plurals:1.1' + compile 'com.seppius.plurals:android-i18n-plurals:1.0' // Android 2.x plurals patch compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' compile 'ch.acra:acra:4.6.0' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6952d3e24..d034690bd 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -27,7 +27,8 @@ android:theme="@style/BaseStyleNoTitle" android:largeHeap="true" tools:ignore="UnusedAttribute" - android:usesCleartextTraffic="true"> + android:usesCleartextTraffic="true" + android:installLocation="auto"> = Build.VERSION_CODES.FROYO) { - showConfirmDialog("access_token"); + showConfirmDialog(); } return false; } @@ -208,7 +209,7 @@ public boolean onPreferenceClick(Preference preference) { } @RequiresApi(api = Build.VERSION_CODES.FROYO) - private void showConfirmDialog(final String target) { + private void showConfirmDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(DebugMenuActivity.this); final View confirm_view = getLayoutInflater().inflate(R.layout.dialog_confirm_with_passw, null, false); final EditText password_edit = confirm_view.findViewById(R.id.password_edit); @@ -228,18 +229,20 @@ public void onClick(View view) { try { if(instance_prefs.getString("account_password_hash", "") .equals(Global.GetSHA256Hash(password_edit.getText().toString()))) { - if (target.equals("access_token")) { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { - android.text.ClipboardManager clipboard = - (android.text.ClipboardManager) - getSystemService(Context.CLIPBOARD_SERVICE); + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { + android.text.ClipboardManager clipboard = + (android.text.ClipboardManager) + getSystemService(Context.CLIPBOARD_SERVICE); + if (clipboard != null) { clipboard.setText(instance_prefs.getString("access_token", "")); - } else { - android.content.ClipboardManager clipboard = - (android.content.ClipboardManager) - getSystemService(Context.CLIPBOARD_SERVICE); - android.content.ClipData clip = android.content.ClipData - .newPlainText("OpenVK API Access Token", instance_prefs.getString("access_token", "")); + } + } else { + android.content.ClipboardManager clipboard = + (android.content.ClipboardManager) + getSystemService(Context.CLIPBOARD_SERVICE); + android.content.ClipData clip = android.content.ClipData + .newPlainText("OpenVK API Access Token", instance_prefs.getString("access_token", "")); + if (clipboard != null) { clipboard.setPrimaryClip(clip); } } diff --git a/app/src/main/java/uk/openvk/android/legacy/core/fragments/MainSettingsFragment.java b/app/src/main/java/uk/openvk/android/legacy/core/fragments/MainSettingsFragment.java index c8247c490..02b10a6aa 100644 --- a/app/src/main/java/uk/openvk/android/legacy/core/fragments/MainSettingsFragment.java +++ b/app/src/main/java/uk/openvk/android/legacy/core/fragments/MainSettingsFragment.java @@ -266,15 +266,9 @@ public boolean onPreferenceClick(Preference preference) { public boolean onPreferenceClick(Preference preference) { if (instance_prefs.getString("access_token", "").length() > 0) { danger_zone_multiple_tap += 1; - if (danger_zone_multiple_tap == 1) { - Timer timer = new Timer(); - //timer.schedule(new MainSettingsActivity.HideDangerZone(), 8000, 8000); - } if (danger_zone_multiple_tap < 5) { Intent intent = new Intent(getContext(), DebugMenuActivity.class); startActivity(intent); - } else if (danger_zone_multiple_tap == 5) { - Toast.makeText(getContext(), "злой армянин кушает", Toast.LENGTH_LONG).show(); } else if (danger_zone_multiple_tap == 10) { global_prefs.edit().putBoolean("debugDangerZone", true).commit(); Intent intent = new Intent(getContext(), DebugMenuActivity.class); @@ -294,7 +288,6 @@ public boolean onPreferenceClick(Preference preference) { private void showUiLanguageSelectionDialog() { int valuePos = 0; String value = global_prefs.getString("uiLanguage", "System"); - String[] array = getResources().getStringArray(R.array.interface_languages); selectedPosition = 0; switch (value) { default: @@ -345,7 +338,6 @@ public void onClick(DialogInterface dialog, int which) { private void showUiThemeSelectionDialog() { int valuePos = 0; String value = global_prefs.getString("uiTheme", "Blue"); - String[] array = getResources().getStringArray(R.array.ui_themes); selectedPosition = 0; switch (value) { default: @@ -556,7 +548,7 @@ public void setNotificationSound(String uri) { editor.commit(); Preference notif_ringtone = findPreference("notifyRingtone"); if (notif_ringtone != null) { - Uri notif_uri = Uri.parse("content://settings/system/notification_sound"); + Uri notif_uri; if (global_prefs.getString("notifyRingtone", "content://settings/system/notification_sound") .equals("content://settings/system/notification_sound")) { notif_ringtone.setSummary("OpenVK"); diff --git a/app/src/main/res/drawable-hdpi/checkbox_disabled_on.png b/app/src/main/res/drawable-hdpi/checkbox_disabled_on.png new file mode 100644 index 0000000000000000000000000000000000000000..6db89aebed611a1c576eb25a018f52c06676f2c2 GIT binary patch literal 1050 zcmV+#1m*jQP)VLLewHIXO5f001bFm5;wl!%!55zZ*rxp;idu;BY5VP;Aw~j7eLHAXuwIlC4QY zm0}WZu7COvj&2=X+19L@owV%MF9QHJwat9H|o zuIJ0y7iO3OfKHgDcB^#&5GQfO7~k&*fY(jC?li{xe=;AYN&_QcyBlR8hziiZ(y0b9 z1k9kHY7h^AsZQE85KlmSpba5<&^`D)xbCM|PoRkg67`7S5r`jv$fXDVB)HgZVJW3$_TZKfm%l1x zv)Sj=^m#kK%slf>2gPEsuZp6a5<)0gfDl3&#`xUW>2$sTfMF3(002S=r6|g&QHMGl z4rLKwNs=%jgj(24-|9d3Q-v``3kL@R0sHas@ft-@L*a7)`~Ci*M3&%(=cB z3;@9Myu$PRhi|0+=AG-W1RDXM2LJ|1lJKPB&k{mNGnmchZwR434u?5HRgCfZFF`H- U4%Ln>-v9sr07*qoM6N<$f`Yr=od5s; literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-ldpi/checkbox_checked_disabled.png b/app/src/main/res/drawable-ldpi/checkbox_disabled_on.png similarity index 100% rename from app/src/main/res/drawable-ldpi/checkbox_checked_disabled.png rename to app/src/main/res/drawable-ldpi/checkbox_disabled_on.png diff --git a/app/src/main/res/drawable-ldpi/checkbox_unchecked.png b/app/src/main/res/drawable-ldpi/checkbox_off.png similarity index 100% rename from app/src/main/res/drawable-ldpi/checkbox_unchecked.png rename to app/src/main/res/drawable-ldpi/checkbox_off.png diff --git a/app/src/main/res/drawable-ldpi/checkbox_checked.png b/app/src/main/res/drawable-ldpi/checkbox_on.png similarity index 100% rename from app/src/main/res/drawable-ldpi/checkbox_checked.png rename to app/src/main/res/drawable-ldpi/checkbox_on.png diff --git a/app/src/main/res/drawable-mdpi/checkbox_disabled.png b/app/src/main/res/drawable-mdpi/checkbox_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..94601fe003edf2c0da4fef857272868fa7246ad6 GIT binary patch literal 473 zcmV;~0Ve*5P)VLLewHIXO5f001bFm5;wl!%!55zZ*rxp;idu;BY5VP;Aw~j7eLHAXuwIlC4QY zm0}WZu7COvj&2=X+19L@owV%MF9QHJwat9H|o zuIJ0y7iO3OfKHgDcB^#&5GQfO7~k&*fY(jC?li{xe=;AYN&_QcyBlR8hziiZ(y0b9 z1k9kHY7h^AsZQE85Klm0xhC}W z^}*RiMMeLasNgCTFlykafujbF8aQeo1h6nLFdSiEVE9k20Yybc$lRjWP)VLLewHIXO5f001bFm5;wl!%!55zZ*rxp;idu;BY5VP;Aw~j7eLHAXuwIlC4QY zm0}WZu7COvj&2=X+19L@owV%MF9QHJwat9H|o zuIJ0y7iO3OfKHgDcB^#&5GQfO7~k&*fY(jC?li{xe=;AYN&_QcyBlR8hziiZ(y0b9 z1k9kHY7h^AsZQE85Klm6h?2tnAs2%88#?bL^~U` zu&_^Op^b%Utb7jNNure&iwY47LCAuo!Cu^TGK!MTY$b?^uB<6M2y9k z&nrL#AcSn>d0rtNkDsCtQc4SA6rxLBOPI-IVvz|em5S18wca&Nlb#k9i$z)2^~8R^ z_cxo3_mnW7&%afx)gacDP65rf#VhsDvBbON+tQa zo=&G@jYfkYgoO2aeH@R+ZrGyex=^pzli6$*r&6ida5&s?&Vdku48tH8V}UW|ce~v$ z&Uxq*fex3;z>%%d)8BICrmU=%&nOGiF&91pqk99LG6MCX>+I{uBZLj7B4OKA$rH0LIvl zX__~4yCg93C4<3WCrOfE+xFpJZVw9q0Q&v@_amY+ul3r5fe=DAr8KH9;PV$s$CiC? Sw+vzc0000p%NPcU5)0_xjcQReiN% zS@2?WQ#(@t0L%mY1tDll)IG+A=v$eZ`T}iC z)Yt$REuLVQw)1tDI$k@oviPMP(6Ui$pbdvy2K6S@4|v8a_5*bo@4$++>x`RDl~q-Y zpR2+VqQ~ryNLF85X0t2?fB#;n?=xpC5tG(z8Rk6P&(sSGT8GJR)c(rhDTB%q9qyd6 zv+%u?(#{wiNv~R5S)aG>_;Kub@1=3~PaF>*k5q z4~22^;%>XCYSXdxr#RAs}eYR-(QS;-zID{a{`GG5vGH}xGz83Tw5`&G^d3g12y&OcIKTW&|%S3OJW z*1{&{8|DzIY18cV+EuF;XHL_fUW#anLwG;*wQV`sg8e?+-muHcuEKtnQ)_5g;oeDu z&YEKf(^}=H(H#i{_ywa$uiZi)NH4MVKkDd$xX-JrKk07rgND7i%E2+LG+NW|p0SecRwfnKC&l}gT~P~-`USXV?Lp+F!7j)mh;n36(s zrBOa&<$m7>JIw*F;>|36y)5Gxohl1X65i$o#m7DM^7D3pJ%*Sk3Z ztOONOxvoSX;UR*rb=_nxN{B;G4?6HpmW#j`SVe?osI-FQy(p4)6-4jFWAE?9pK|&B zVSI;+o38hES#_MYsw$mtsSK?-$uQqy{P&jN!MO|5hX~X7CQiw?thqZ#rLK`DLkWj# zeEr+~+=~2MR!%FaHonpchj*`9eWLYjt>gNJ;p(N$ZD3Pg%Dt!NZmn;nKE_?4%heen z*%Mq-3~QMlbZEad(4an^5uDL&q@Pc~=GTz4WG!_;a@lL1m5c^;W_PPWt#!@#)=gan zVT-w|?i!WUvtL~8kfyFNKWLAC)*JUGQ}eBQJ}*(FzO(bnZ5!O$e20mgDWQRUkT*;# z)vPg6pA9;b3dGK2uQYqKgeY7&N9|(ISbkX&#%ydET%`vbGB_1}+3LGaCB_5Ew{99VD_0Qyw7vz>rDMp=RIqRFp`O%!D3qnC$-}pdC4lTsD9&~ z;eCX$7qfZ6h6Q(vQfpt)FEl_k9eCElfor?h@muCtq~R`Du=Gc_W#yhyIQMv(<=I0X zt)|&I(@D#hdT*9^R>^&VJsx!>My~@8R9-gGbnZE1atnWM!lkwu)Q{XG^h}EY)Kx&w zP{!U&+7ec((RdW zrY5}QenlScS5e$1O?f;HvE%v9i!3xv#^?*p@I$uWq#kd=4wp8Y-)=maeo)*0`Ca!f DZUyu; diff --git a/app/src/main/res/drawable-nodpi/checkbox_checked_disabled.png b/app/src/main/res/drawable-nodpi/checkbox_checked_disabled.png deleted file mode 100644 index 203c150573d3e2008e987f2b71a0184fa07f91bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2584 zcmcImdsGuw8lUhsMNx_v6d@;|0wwPkiNW{?0-7K}5VbxSW+urf$;2c;s3IVU;;}wT zl>#0`s3@y|Xp7*BxS&=+EOc4$ATJRSSp-BuYt^0Lqjt}3>pwf^+`0G8{e9p4-S79! ze3KCx5;&1Kod^KH#NZ%F7~Yf3&CUkD>%aQyDc()c2CdQqz-OPE8v)2UL;?Vd&B2ld z;VZY_%4%3bk-P4wnt;?u(jHJqT%vP^_je8U7rt(>ZAr|wF8y*89VHxmoN2Gnq_4P$ zS~2q}bu}5&#}*zxq&swK(!gN-n?v1WFWhfu3mUb4_t~FYo>*}bSf9M!#eZJq^ZOUjY?g>4$Bl~>YFJX(8ZcOiP>Z#gdPD*Eoy z0m8yAprk*#wfxQS7s>Q}qqaNitvtBiL+BKr)8*yY@T-nlmL1u#zo!S`@%j5bGbEH0 zG)E*7T_nx<-m=e-6IPVw84SQ@SCyBS7w&nbC9FDF6z)^gJv{$X(}s*`JFiB^U|6Pf zwq-= zwe}ulXa>ywtN?&e2+$%rXM6$QR zwpFb*Wf|Ku3JN^Vw>{47V)VW=_4RpIckOFxidbFjj1wB%cAE+mgrp7Z!fqsugtS<% z`_~2v>&inJ(G^hT%ntv%_`BUBwufI^MnpwMG}VnL&*!b#o4t4D^V)}}MrTw^vAgWT z_JL+MD&23tAvkYrPqi0OPUE==1P6pjN)|?K(+iDitxV=mQ5g(cA)T(#(?A%DMraVG zrW-*mok?TR)oMD0Y*fc+^g_KMAkOgTXnlBs7NLhBdMs84ApvoS#^CYZ9ELvFYGZXV zG)$+Y!w?;bLDV=*kMG9(u$5MY88E#H(|$1d1Gx{&;}p#sXoZV(2x!1`;TRU%BiRKqR06@u#pDEEbi)p)v&FOoou-CuFg|VDN0)2Tr`Pf#_eMCe+Ll0yES%_1xY)5$Oxk2#w%k1QI`Kw%K7$E8ca z=Q>y+T#jsdH;O^Y<4Gq3Ap?qO{3(!GWCW(XdyM|K=zS8;w{GKA2=4Sx#D5FZV+un& zs6!Sg@ksw=a?$@6c|92S7t}vV`2QpIcVUH8phk(n{uDaJd>H!gqR{_SukkerqK9;- z)-2I`c$j3dd1y3$V$}HCgHOapEeLHy3}i%uyVg;}^YSl8ZO7~4nYVTEYSyigd!eLs zcc0>*Ja3Kf;+RIK4LciZWNT-zr!n;G%(|_tNPIMGk$%aMm}cks{Osf~JBn9be&^5L zV%F-!_{7_Siw?&-(5m#s1ykIM7^c^+=N&|jrMR2C$+qA20!mZ!8d{`KERHAm*0NGM zk{v^bB&;D9zcSx`(&_5%l)>c24L_a;_p!H0o!=NBmo&#Z1<0>uuTL9p@t&;mGet4- z!iuCcF+mF4zmb;5JuoHL#!mW;C)L%#Y5qZEl7oXh;@K+#WxriINVc=cDLjf!KN|Wl z5s=7hI5LTR%V>DSEVsS34)|iWG(E`k-f;gj;ht_QhbWRw*~+@^w)XZ$6-QB@v^+W7 zCxEhl$hfCln~)%gzqK%V)mY47ys);kw~rdzG+EJQKjlwrUt`Aca%W{rX%m-uI;wIW z4FCFSUb%YY>C+#y1JY!e_2M@yEA*#(jgd+=N*m8o;LR#iE*+meGF=gyt$ zwk#r|v5&Kj{QN;qVc&3I!IU0dw&vUg&X(Dxi^Z*X@4^_iSKE@9Qc_$D<`fRfzbsyX z@^b0KBNG5k&x4VK4(Ds#o6g+v?eFi0SuXhvCzKZ(R9d}$Q(Epu`#zK z2ue*&wS@1qa=5v&N6&s;()Ag^bZO>`Er;VS46J>+jA{_hyxH^QX4g^z;O6e`?L@rW z)^^J^$!N@5>C1ARlu7``RvuU~tE99vaqH1gV}!@q#)68~#bGC#fU$}@<+9S|mxEf; zxt@~`A3fR?a(q!~^X5!v4FZ@Vzb%z_`s03GO}|{RI##s1o?~)JF6mEM7-arM$gEvI zbk627Va~36ufV{-6oRyfTW^RbXVp$khC1gA#Z7$>x%tp0QN8EWh9kX6K!$9z<<{Ef JD<7BBe*-T<0+Ij# diff --git a/app/src/main/res/drawable-nodpi/checkbox_disabled.png b/app/src/main/res/drawable-nodpi/checkbox_disabled.png index 350111218d6dbdc2b46562b2f85033f1d1a17c07..91e286edd457d049452e88dcb24873cedabd1427 100644 GIT binary patch delta 440 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 QL|IG0=}X2Dl{g{)2B3Y;LI3~& diff --git a/app/src/main/res/drawable-nodpi/ee_adrod_13_installer.jpg b/app/src/main/res/drawable-nodpi/ee_adrod_13_installer.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0de3f0c4ab815e0094287f2252e30829d3772970 GIT binary patch literal 28606 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

    i6Mroe+{60ZsuSZ;j+iYA;`-TtCVX`pbK82` zED&xLmm?7GoIgap|E>AH-yRXgdmnwQw{7%2)QQa1jNuzHbEf_0T+PAKfn~?dw-%rM zp5L-1l0#%kTV_-Jlb%J7KOWdZM=jCHyc9Mo4yb>myhO9(^s+v8Np5a=shrf0Vm8P< z>Se(04zxr!Vtf4s`v{W6+eZF_|NZ#v*-c4DsCm}M5TeLxLTYR#Sm@_lSztjyN}$rR zCw2HQqxV9TG1H$;#cfVmZy|5h=%_D0j7}ov&r5*wczyZ%&{LH5;rXYWs|fC7yPf_xR))`As(x#+j^321wES?57-Rv z0+d7iEPF*|5dI$R3*UfVAymz@Y&%KC9qKL!x$V`_Piw>s-33{yamS$E5&CClj_t^F zLhARcBL!v8w7Fus0Rk^xGKEWJIJmVgeM1|q`dljv*7gq7E#YDh#W4TP~UdGSAl^9Fo&7G9tY`{(=EwXN-RsCmNQ}h$VV9< z*_0!xG-jncb}sTJ)zI(#rK^!k$&Sc5#+=;eea<3TA`S$o{1;z}8S*FluZgQkX1478 z-c}0tBd68Q8Kw!8-v_VG1@E!b8$so1WXm)!Qjcn+V>U*c*Dc1)jzO(YKy><=^o$Qn zizNZrn_(|`!T1#WQeMY%i<|9;MqhG8bm7yjnISoc5s=YRI?+yqdPBQ~z1Ln7ec$m-r) z!$-%=dQ87P4&Bz>bpNgN&Vx`q9NIw4u+zLo*?4AE0n7$seDkz>=(*!s3kY<~_Xhr^ zcvVQ%etpNyAv0+q+d~(c%lPW_oez4`X`6e8XUUEe-vL{;AI=HpK+Ziwx>({~Pl2*Bn21 zTOeZh4uDZ(O9$aX0G-KSAE%vfU^k9;{ol{~zn?`urg)YI>o|x%y!-GV@Zn$nzr^a7 z&q_*NLVVx9`uP7#6&rs6o&Pq}WBh;iU)kvV##V3+_&^Hk80YJ_Yzg(U6u+=^?`{4A z{3jH{4Msi3p?C!_FfjiwuK;Q$gn)(q@d`v;GG#3YR<$55b`)*@AF%*<*%Rb}Pp{|t z$^+3}B$Z`b`$^+-Jk?}ss?2Ba&N@M}FTez&(I-Nj+8#iPZP8gRMHxh#a!FxeBoeI10@sctkT z?KGtEuAP@+cCa1#!0NQjyI!|Cs^e2ql+@uFb?n+F*oq8s(Kbm3cHIb%ta(4~qS1QO zSQb(^DICt&7AP1cV7>=kJj9XyS5Z z@Ic6XM_-`INYd3vRCB&kwP2IX%OLf`nftjbH^%&g7X#HZF+blr&Z6a_+v29FV9-UX zJz5JaTCj*Y_?EDfr}lp2OKU7NFef1*4T_?r!}ySI=OCmjj4;F^5(IHCy{{@05m3Qn zRRlKcBT3XyoU6(W>H^=R(Ho;UYe1X8@I?B3@cWeFb$t{I!7!H}+ov%mMJcm)F%CyT zVd4RCx?0A&3DI@QuObx@RIeh5I;uF|zjwO)$ex0Rh$D@WCt!Xf-$bmf0x{VmcgpI5Yk{@#%uf{0h8Y1G;eyoW$*D@_0eB=moEd ziwZr+F^dR}FRCdMXl+x7+8hBHt0F*Ti$cfKT6K2duj~3NW6VA7xp-?E@bdhL;Y|0% zDJ`Ps=b{acsh<|gF@W#G+4Mbg6~x6eBfAwVc)jO!v>C9i71+V4DtxZ_vO$@G)g5iy zw%4be)t9WmSm=W1LlS432P{69$rcv2E4>uyc_dOGW0f`6h_0F`8rl*1R^eJO$?1=> ze24e2Ro4GaF}({VKqq-Sd6~1r-12+;8v4&sn5o}J-ljg>NZwiA z=w(LM_ht+m@M0r;g~71!hH7LK=B+^!C+kP7nBiOd$>%Pmd?SQBp) z{QL_D>lC_4*KiAS8u%IU2jKX~G&mK}12=vQFYQLDku7&>e7u&f*uUYosyBD}BRlvP zkS6kZ{+$o&0JhMK^35XvUj|ojg@A39E#e{)GS)dHQInZgV;#844Fero(+1Bn_+t`XgqVrsQT#-kTkEEp)m2J8a-Ia{l;b$Ryr` z-FdG<)nj+W|A>IaBmvsMvS#SLgmz!9XErJuu*loRn0#^*qFO%lc2y|`IjVT*@ukz< z8sqN?ko^#9c$HFWD9< ztL-2*o6At~wsxRE0yC0Bs;5TTL^PTG5uY^nb`C^HUiOR4D`uE%a#@|-%ELb+ZL8*K z&Pm1wG2#B^4VD;Rx1B$CGUC~}*s{a@J2Q2OL-ziwdy&y^j6*XP-<2B9?B87;V9ime z_ChDI?-`FHD*x0m$iLUr0VYsRjUPpRzn~+Dl+HoBAFRGj@11Eb@l~uJ38I}P{9;|e zRa%=aA9Lr3z~^++*dK8=ZK`R0OdCuycrJF7WHlYBP?GC^Ti_7VE}ZQzx;v_Gl54l` z>-`syQWP6ttX4U9elw4|6~>fKK5!a0Sm`f)V92DsYVQs)2<^PL#Xf`G>thr}ln@&& zzaVA&b-)^P?`jsa6Z8!7IV82QJ!@Ir|e#}ei@P&+_`f*MR^kt%;95RA!c+K!> z%-L5i5Oo| z9@8hS>d9ZEr2Pe$UPT>08BXNq($+xL6pHkqb61n(u!~VYFv%i1|ZWUVe zcyX;jZn!VYvHmt@qM(h!+VZ3KqY=s%!`!e^EAL)!RU6J+o#ObpaO$1P%heAtAF?b3 z%-E%w#wu9-FUm$j~J&=RQke30yRv zm{Ny$jzgwt)ek_HYBR@n(QtfZ?pt!f22buuP<1lXSb6kt#}a&o4a-!}3k}V@Yu@Q6 z<4|*$Ez|Dq6aBBwf{9Z3EJW12Ymps(Q|-$?39yTUUfKtJD}V7V+cA&m4H4*44@8;! zgRK`?x+7RUXt0I_O&{zY2o)a#!?wYU9| zIq*8~qR6#aPC7M5@K9q+#QBi1K7C>(@7|$Qp&E?>*E$I)M$Thn%r>7XpEq4_&0iwg zP)tvH)T_ns3-%hOP1kY?5|m;Ka5``ipG*5m^6vr;Z&WS*Ci8V3rTS69{a<9M5U$|= zuOywZ;H>cBPRnm4Kf={v;Im$q`kxP>Qyg~&$$GkfMuy=H{7G^kE^&=BXTZ+u~Jj%3EKmuNGhB zA8-bMda>jslKE^nNNjzOP=Lly*ryC72J&)Yf1fjUZOjpq1wdb7LA20^SnQa@TDAhd z-gVMY7L$f1Ro%2YPNIYoeNQmx#()-*e>VT&s6?5IJP?bigSAd2x(bHU9`lH25KI{$ z*?`D=(!tuF(~n=Idx8D3oJ#+O#C;Jz)6vfOXQe7Z&YN}oXBMU}TO8@ySITub3TnL+ zHoC{no~c``zm5;J*(BusL2n4^pXrxlW`mL!Xu#bZDV(8NM_mbSlxIm@ARt&qa3A5t zl57xT0@Zagb8LRq?vg7cO5&EHsZPUhS5`wH5)gj|t{Xxhq2#Vlky?Yt-HCuVCb?uk za+gPZKzorED|Wm`fv@ATwK+&R6>%ZAyOa7mDODzNj0Z$cCF%TL(0wxLEj#L7;8)yP z-3VqpK%V2XhjsYkHO1%x35Ju#3l(4lC;Q;Tt8{krS80apy2jkaO+y?-sjtnb*n>VW z-9V?cG_;*`dcn2^bvn}zDkVAMX!DXRV=UZ>T;zVl31<68s?#dAAp15q-%#b(w&&Qq z#_5i|&aT7mW^?ApHec$cZ=tkC0c!GjGv2yZgCSiSuM%o`(B}k)zpFA5$5@au*|&L? z64f@jae*6ig?DHi3hZBV@()uHMtwC2$lrWpiuSfLXfBmOMeERKhfycRyBYSx1;(jH zH^vt4Bt9JaIAiBR>xUPc231;a!YX(h2^9mdSs^PwlYwUMN!mdTZaTtMorNEg(38xH zI8{C(fL4R)ED|KXmEDiH+7vf4%?ii5nm`}R}LUyO&w>`CJ$Ac2SKV#gt%u-+uW0*?IPL1g%L)Ds?3 z+s)$x&ADXyG*$Ft^C+-@)>oq1cA?pETZcRD4c)p~ZpX;{5kJ0A6?!`H5_;v#oLOV! zmQX?0G|2dC`b%GG^XAC$gLV5a`9vzcJs>*nqEQ=rx9r&lSP5VMoFmr^+z7;waExwc zP1DvzFdMs_y=67TG5eX+dnX;(wDWmijj6t%B>iBr>^T0N_rTMHkq`}9B4v?PQ5h%? zMO=Pk`mSNPW6RoloBHjtw^oUvl^C%lL8=--G0BsxFG<8n8sf1X)>KWg!e?|J99y>! zoLzsCR;rur{#KzU%Po|eKM)bF4^o+=?U10hQf_Ls9d>va?=teEd@=L3W&Q-{ zHcLN!Df}MY>+8{r;3s=y)vsrJmL;&nT&GF#al8%44d**YWXdSa*R;+mJ>fkF0w%9=>J;;|I;6eY&a>_8{`c~$-349V)Px{FTwv7(%Un#KexFS-$wG_C< zg(-VjW^-hjrEDX^uZzzTYvGqPD?C9)<>51ic)u4nmy{9I-L5H}EVOk@6dvvu=aYr+ z{wR0bk<-f`I(`!QJ!JcGj<)UxPRG+zSJuNI#ChVFm(_g5sa)FL>!`r^#VlTLT1~^& zUS+LA&n+QBD^IRvBeD>Pi3!)jg4eXz{7$rnP8j=i206KuNjN(eJYjLFtS5~9Maa58 z{oCYFH$K9AeD&tHJL86*4k$oFnWC&V)M-?Vf(^ft>jp?!%2GYe1W-UXK0hfXEkF3<+qBeSIpt$yjB)Q^D7kqu49h zLrNd@(L_b&p6k!m2OVx!H&b`w(7{O7KyNc$1FI-oO_=Msj49T4@E&VQ3Y>1&3&!~N zW_%iN_1Gn_Spu%UzI%~(I9P6V7hm7oiw^y2Yi@0|{2HHz*nc;?@Np+JoYXCt(LZ9VXiMrkYuib#e*bnqY!kM4mWg_Gvok#S(rBAvmv3L185c z@%+-Q3^L<0J{`w=k(E#L$wvFQB?WL?c+9HLcta%$&;7kwZMk~|3pc)%3WtT>aAQ%p zMz5_r6q&);>(I|Kuv}ipgl{Ii@)yzx9}cWb;2ymq7EBGP=^!$qx`{~2y(cNjT5Xm+ z5OYehlicHCK5DP$D#O=*nkX3s6txOVHi=7T2m7oNQF>(Xr1|w{uVD)urm0Qi$x9w&t>6YVdaBdh z^64wRXS9@8_$P{2arn7mTLL9&pQno5b?DM@?(4UQXM`|Z7LeI*-#y_8%)`5W@fKzy zEM8D-GEJ>V826lbiDor3-LNR&nb#Yk+k#_jSKKOQ(WEhKi`HGBtNDzqMw z23wzL;hnXkO=Bq-yApyzg24W)*)yKkslBs_KCv})L!_?OJT%yE3H%aNZL_ix;H0=B zZgN64y-ztin98;_rH4l1EnkEmyWy~ra|jOs&E7>DYpL$E;a>|EXcKJB#T%Sl=h4ik z8fJ_4ZnETbT{3P}<&VKCZ7SJ5Y@lOql2jp1V>LS}wsfowh>t!zGZT!Qbz&Fo28;`t z%6Jls8fK33DI$8fFZZ_L(YP&8aFw)dsET$0txR?8bt*PjyQybdvlw+z za`2PFKw68IGultG*%Q6b+s`PZ36JkjnJB4TU(r$f@8b@`0 z6m6lR2zngr1#UDEi6&1A1CqBlUv1YP>PGerT{^AI0LvR{0b5yc?H5MS?P2Qf3}nVm9VY$q<_iENY8U|zpuF@{Q6&UJIr>;wpzTJwUZOM zl?9gDpF<2_QN%}(jz~Nirud6Ncl{H*mgdH$a)+j@Abt7yJbqj|_woq4O;`A~;HyCU z`jg0Et|)yEG=oou3*^LH^!-^n;2OaVlD7n2azXK(=-MT`Z-b)!1+vgO}p>9PmAsqmtyGIm0K z1h!$_3y>7^u~-=MS}FP2#AEBv3atZ~I11mt{c4P@IBB9c?)Cn95+CIB(QM;cE79F) zy}&g8SZNEDs}w0?Hv3nT-9fKGUQrSDk2uPE*xtabwHwNVjs62*{_sx020=Pif{cq3 zmZrZ2KnHg$(%axWg=SZLkL`tGqQv<$ZE>zTXlh=PKJlzKk83K5I%+IcdyCENiT+-0 zSL`jjxeJhd`I)D)&d|(QbY)9Zlh;&sFJjzc;|en0wNWue<#hz@XR2H7t|ZT)zI$P_lf*j!97ZF*egZn~ z2Crnm8F9X3P7%L?!lqhjt-@=;DDMesT6Nwbd3LoKPU6O1;y8nZg=li%m>)reQi!VH z`>=vHoJ&R{R1dYASUi8{1J<=z6hRt6a~Z7wvwMP0fA~S)P#O#i)Y@JEuit>H>f_6 zGnppOkeslG&%cr;y(GTT&v>5Y;UHmuLNqnfM-XE%m<%zTTM+(vdB{U+GJ|x;VP|dN ztf0C?JE(3D{{U9w&v+Fj8@UNv$oURk?zxp-+BvC7T%tYh94eRj_=^=vZ%wNy5_e>k zD~VK@J!l>|+2J{53{iu9GC)qJ%ITr>PZ?6H2Jj8*$`<$e5l;Y80bTQ5pc^ zG^gsr>j!%jB~G>;34Xo^wq_f4+5}zF_;(!3`g%hJ`yrLN+IAvptB=t!J|`no5it8S zN=gyDEWyXv4mY2{6NItEo^_jPb~c1MAhjvQdlAu1kv=1NFy0{A(Dyo*_LQaD(EO6_ z{{XY@N-aV%{xtx24Ec}33>kV^AO(vcYC4UT~+wg!s?txBMqL$Y0$21|6s zCNkEMWXc(tUNq`2jl^kbFtNS@Vy41pBVbE7LCssRoO@6{a5=~xhz^YLCEStQ7UH1Y z>m1>Vk+r*dxoC`BqPiw7{XlCV=*EL26{I-)@fGbeuvN7%KsCtkY!x;%A#LbOa-f{S zh7+=3;xgsMh#>%-+&nO61uhZ;SmA=3qK3C>Q&%WwIf@z$if0PC7_nfNh#EW<6kS6h zyFEnC#;<*K7yajHjEKp#nZi}sK30u>Nkaw$@P?c<2f-USM}w%-Fum>Na*eeaXe8O7 zFcu8NDS~wKzz23_HIz-6O1%kl_d!QVLKKBhwu*N(Hi1S%lzS708!b&KPKWbKks+0{Nioi9fZO3^W!NO>L zNVK%f-T{;%ot=r{h}W>Y*v4_%;%JS(3`#~DNP2hDc05b8m3VrJy|l6W5^or@F==v4 z)Wj*RElt2NgQ0TfstmncwMzrZp@ih0I+;__bkFaYzLVPldW3tPxb@1!%798VU#LD) zMo>i3HkQ^FnImCAD*_HWQ1ao2Mf)CN0q#=p$FIWZ7+7pW;nN#O-lk~E2NBNE!YI~) zJ3%RXR(LT9(G5xZWG$uHdAuK;(BZw!-&NiHS11#a47?UlIL2})2?6y z#7HJe6BT|8p*WMM?$C5B%vWv%TIAo_#$!|9CM(KRM)7Hpz?krW;tx`ZsU1bqRp5u? zgnLb|yrjkH-ONJ!$VY&!&e-YH#oA=Fv&k+{C1B$-0o) zcOp~5bVFS9VdyfngQo)Jml>R(D0mWgqJj^Ppl<147 zk)Z{bayTVo-vq@~2Nh9K1rgl>lV)aE)Nw;&**yFSW+>_Fw8JB2Crn|&)KJFnjWtfu zl|d3l3#dRAxJ+KGK5@A{PMLa)W;0?hH_Tl^5|$9c{D{CY2KZtiSt%y1Xe%05WMe)A zK!%?T*+XU^j!ES$O!SI67_^N!_y`IF&E;MuIbanHUcORzMw1e>dd?+mEM^d@w)Wo= z@H%Yn`G`bWYrHxbd5c(hn1>Xtby#?gN{(|G3g$1kw_Qp=|oe9$Q3PAjAyJ*@U|-13=``i2MRQml2g?1RBCFG&g~(lp4iV20dJI7lIn*JHr!` z>j-A9o9UQnsAas03GLYdE9|~#*J(&L%nC5%FsAA3u0H5I8e#~2kY-uSIe@GbcSXlc z?rw*rFYJ>DdB;gxBIG$GY`i*&r#>+WP(Xo$ADYuKA&RGHQK%nPjW83j0T@86HtsVX zlDpPB9ZRbkrgY|CXq4R&tZHv4(9$vx)x@ujr1WF>rwlD6zGYEzG8DaBy+_Jks6+59 zpg)W-?4#23if57ZkFf0pKKKHqg~MogQW$`0TrmWhrWbhe&Okp|0q$7YJa%aSviya~plcb8aRuM&;(4 zD%w3}HChUo#TkV0u%CM&K}NhtA|p<3wh5Ki7tIh8-^}~7wM30d4j8I0qrrqH9vU$H znO92;XA-n>%!>uoZw9u}^ye;A@fn-&%jeP=ha`H9?mQC4mj(?;M)qOs19lJG5XjQR#uc$R5P6| zEfKGgI7%iTeas?tvKv&%IE=jM+EaVOE6WVk&i7eMTc#nJv_}48tIoVD5}(u z_qgA)s8;qc`8b?Y8FuILK}FE4a7)nd(6}oirr6#i@9l?dbZ!$6WQHw&k#xpm%IxMA*j6{;0hon1N1{q& z0NTV1^@pO)Nnj>fOVWM3CT8}nGC|+e_!r!|2w!Mn8-q>k5srm|xfFv0 zdWg7N7cQ8&V6p9&>!weak*okqFLGB!neV8qKIBO1tS|_;b0ig@Ua3 zrf%}iPiBF<$GnEbCA>joIlQJZBe7$?TYSN`u+>1bPI?LzUi2#yEWr_)=?q~cVoc_X zG-tVEC099^%vr(?@{5USn0$~P12KRP7R{TSNaKd*I?cD9Rt;1G$!q+Yhz%*RF*xPy6=Hz5%l z2K{Kh{6$6&9S5r~XCLBSxE#E|%x9=L;=+2CgenXoz%SN!*URq-Ms(J8CL^7LgkMlt zsJm@j3ze;fK|rYaLGJ)!GnO49xquImhNGK+3A=_ER5@dG-^wh)I)#?ngdwns(on)E z;ie%~11bxI)@=qn#$k=~3jm82EFp=W;oF0lVYdzE9TuPlfhn1Zf%l?m(GNYePG|%6 z5bjjfBtP_rLxgy7Qj-V^fePKpMAuhpTs0NN>>|+uQ?g#28JU9-h|NThhPmXJG|`1m zImz{3-cXXcQQfN0S)9mWJTwvC>k~M1qV{$|ogSk}r!w;DDz;&{j?jYffMN+(f=@Ex z9i%_Fa99gKu z5?ksmRH`eWru=we2vZiL3bEt@0c76?)AF zFpM~o)Wl}Tc-vyR+}18vl9f3+sco`B7@RM=$2q`aKUD-OLNCrSmV8EG5jjV5>Xb~> zAXhQ-826NWpe2kQVG27&Pxp-umo&f}&xl~}F~VW3bCnB1c;zLpTT5Y7 zb~wz;d+AIt(=P-hm6;rIpi!dN)P-H3nmUxLNq9JrUBo_t#uRtxLI7+4dqs3(41##?h7g+sg(Z6#>t3!*rW zkL^%zl8Yg8;xjF{ifz(XmfXS2P+JEvpzSJvxQfI`kc@bDp{&D|12BqNg&*q<5Zuoi zLpmiAoywBP%ECEMmFHrz>A@D|JGx^C#6So@*&Go4Ral0!QpibEDJq>Pb&;@WuMrKA zAZ98UE-i1OGwrTC5&CjQ5dbcwr&-=3R?HJ9LOcc%8*&yZ0vgIav8&|gN3DSQ3?p?g zl-*!?ir87bAOxZv#%p2A9I(PhEFeWOb|st8N95G{K}MYd3`L8GxT$!$mS-|ll}hR!CNl9FoMqYuGK^ii9U{I&ZjgKk8K8bO4+hB_m;D`@_Rh7~b|e)QMue^e=6L7-?Uc?p_FG)e*tr zW@Tb66m*C~CN)rIt+7z*M=ux+M!f{JoX)b05^a!3XoGHG#k9PaqXIkcuIA7%tlX{6 zrx3X!(21QlrL0-R2D9gc<1ao*Zzz^ezvi4!lT-#9IPzuY3?joAMkN@$KxEl|$ge8k zyE&DOvJk^P-8Y8FP0GP7pc6DiRin(S6EgCO-ULNv%e|1qM74D+k`mTsvpA?zXY&nL z4BRXtmW8e5?iZsiB8~MsM%q=ISh|)Vn3Q48=2$U|F|JTmo3+GGLZ#q&2#&)Un=n8e z=@^hwdBlbmE_Nj$90=S{U8uA9sk&M-bQ*WWF6E;wsJD7ClGVY07FWFW0#@K1foT}P zmAAyMb7{UR!&-x7CF#iHl4o8J2m%yTd&XI_D#H|_46f3cFblbKIW3utV-*;vRFJus zhsmXa1{}D?Eu!}ff*<)y&DF=wY{Oz=32Kpng630$Ig0E+N>d4v$K?{|@n>z2=HY|W z0mLO`-!ZpAqM((zWREEe5cj-dDh-@27}qHGLGpx)=DT+Gl&XR1}skSkQ9cEq$T%tA3Y2WX{{Q*=esvK6c+ zfgjbxwd>q=+H5-#{m1DtFbdv0qzy?KoIuOk5|+fb2w^iSqsyXQw=WfOE?%MAG8nvquOWWCDAK+Qr~Vv++)6FMBAo1=J?WaT)iFK z81H1wgjRvN5x4ad>)DtMP1A_ctQG{7afVVE$w2TghN7&#Nq^81=qO*f;;sFmrY{=j zIE8pa?!-kzki}(Y7ah#KBHumo6AgPK$3{E!%36;i7ug{_C)3a@+BMxEAKB2gf*1LD`sH@=K>|$vhb8GO8n|sxg~I5Kh8t7dQI=V**4d@Gn=`B@odFsPJBYN6y)*b%=6?yiaoN6 zipe;lhXBG+$jaw#Ug%^POO7aiXaPDT=i{48wL56QmYA(er6)Kl`RFmFw)^1oA2N28 zMiVfXsn}w|@vxh0LT_Of_ z;n=hx7kOhHFkbSo2*P|1gpR@HI1vrvUiNFaN~WXC9|;PhEOH^fu zV=M>^Z0Qil%rk2ZrIq8@Weh~&5X59u~Taz+tnSz+YQc{Uc;VavR;G6 zY`;zPp`h`E3uK^RTJYhUKCum?rK!tG%-v@TZjc*#C4+XEo)^C8!p&HVR#CUo^#w^X zLEJUV1GxIYhA5#EO8gUl*;58h!lwOZGcGo7PZv6@LVQx*`G{S%5)n>_u3Q*##uX81 z%c#25tBMRg@MQQDUHeK3SvtVr>y)X0KpTqdKvp1QOB!4Pq=4pv&XAa>g#%#~ zRDNZa1f_u0$<9-IEH{d+k-G8r7?i|M;(u5YhxVis{1m{#P8lGi6dX7bAENDShVc1c zQKFiwiZO3MiEbg%&C8e+jP5Nh^Z_bVV>rOUj9|uVaJ;>43|VsZULeD#GNQCn0ib9k zW$3*FE-bjZIl@LUv6m2whAu(+0dzF!ucujZ<>+S?482QEnDko>1F1A_Ux|7t1}-5x z<;{|8MbidB&?rHyxpDeDlUK!;X}I97;AH4btgKR?O)}CSLZ&DkE?m!|KR~&1<>(l) z^PpnO#JO_wpxvQ_-05(16L8aIbPRPkV(3;HR~B4hv2KT0x&XmhfF)5k#2P_jveMGptuH~$HvJ{tCF&V+^juv7h*?bpX@fUG55_a%bKo=JbKrB}asL2;pNKJk#gF`~AMjwG>dKGcXT)d6XTxX4;`QkS3X5n- zH!c!opQ;nlIq*n-%4wJW5_}RLg(LXVAMummli-u#k^caQ(w_{U4S@duNgu|sv+Wpu z0iPA06^H!HuW0NoE>lA+tU%?9@u|?++QZi!SYT~u=%bgf>2#%QTGq9v>2)bfTGq6@ z`xKeo%SNc*x^_BdwJkPhM{M+aIEn}V066_?TGq9U)$|fZDLTzhe)<+J zhoDn9At>v@PFG@A#eRMGMC6}W>Z%H=Q@Kv%JCyEIxlZLfl^Q`J3F)jd$+`n_4=DzUD z#P49~Yr7A-4}k%E1og+LjjuEq3zfk$QbTFMW{OHrSJ3@hJs+k3T3Thv1L68iRv%p< zy+3{vH^O8y%Need3n4_!FNykq^=b7?bo%G6dgc3i&ySh*L5H$fGi43N2cC~5X4 zZQFj#cj&=#;3p}4tUr=5`~D3EyWD0bKu4S-Q=<87xdt9k@}9Zso~Y5Wa6y$I)=}@9 zi9mPNu_2x%QTD@e&Ek@e*^cWHHEFkjpSZZHbjDH_Y!$!SD0bt_w6yeL{H5D^71l(k zUryEy+=TXdH#yQ9qBkD0L)iKd1SE-x0y-lzvmOy7b?=oTg%>*^5sJxsXdeW_Eq7?! zVARpf$B6rsSS^8*Yl+|y`4LtOSBKPvS!4s(P+Rcr;GxqP-ycI=MU zh6n{WryZru-B$9^=iMO9@vGCxUrdWhKkxaM{xyOcG+TmLQm-_7^k7Heb|*1YE2{W(#^Acg9^xeDpFUjy+bA=2S|Xl^ zt&&>B^jQIuVU6N|_L@gLJJWxB%3uv4%MM6jz<&&3KWXS++|5!DA9yDjq2U#&K?4xk zQJ@a-;9>kF$$qDb6TAKfSN^-eB}z)x`v|QMGacL<(xp5~Fx?3ZjQ7f!_LC)p%2DD| zsYqqQ*wB%k#oYbgNQZ(ST%_yQ2P=`cA@0?lT+4rQ4?oz4+9wlRet{+Ko+;V2#r!{4yD@N?kx06^>Bv0Pvp?(rVGI;35AFi zR???ZkUdMpdizZwy?IQrue?i8aHixE8Q{VZNWh51II@8em3LT)Jw(gx+;F>fNcJ-2 za>fI|!Rpa$=Hj&lH)o~HZ)&s^A1UtD`^CA6+_&N`s0+R8x|v#gd1LXLy!$7UE>>=4 zh4dpS6otDYWAOeMQwRFP=wJ4UP?9`-O)M1_@{+n#m6etHYN;uuSy@R*Nl8sKl!53F zyH|eb^D+F(`wXf0H?$D=IQ2uXRT!dKNt;Nn&%A{1UD_lA4u%+7n-9riX1z+qBC%Mk zRx1ITO(wBe@lO<_5b}!lQHnXI74!oT%FZZRU$)5opwEs(4^zb+h;(WX1n@=&M0z37 zpn4$>7wJ|10H>Y>4(tN#Xs=jTGp|QV;IIUjAua@`UD{e$A;}E zdwE(10aS~@tR-5li|%A zoAHFE=0=N=88$aE&uqvQMOEcvjYeZrr$F%Qjy{)h2Cb00a6oWuD> zK1=wYA&;8J&12@V^H}+;eAYf|A2pAf!T$hDA1#Oe);>cA=NQbNcl<@iUr_z1ick%! zKG6VegKK}s3e=B|<{{WZxm-(OK7HZgb{7)zE{6*HspW=Mi z@jh$#pEdkP{@3w7d-$K0zlci5f81!P552{kM=2%j8nuNwUXRd((PA)vMR97hP0tLQ zvp2fGYbZi7v5LG@S9~>sl}5r?QY5_x(2Yy9Bcy;|buJ>f^YB38gj(`C9A)G5MiIk( zJ0OKLmyNpn-2^>0{(^_l5&8!>`Ul(?IL>gK#gt8$I>}vq0ve7^g$O~22#$%I-Xj+# Ti~3p7S9)t=ag3Qjvw8p73<1x) literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-nodpi/ee_ovksome_people.png b/app/src/main/res/drawable-nodpi/ee_ovksome_people.png new file mode 100644 index 0000000000000000000000000000000000000000..95a13f4e038f73ef06e68c573e1608bfbea2d89a GIT binary patch literal 81010 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 DxkX2C literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/checkbox.xml b/app/src/main/res/drawable/checkbox.xml index 273108a93..5a1822f87 100644 --- a/app/src/main/res/drawable/checkbox.xml +++ b/app/src/main/res/drawable/checkbox.xml @@ -16,8 +16,8 @@ Source code: https://github.com/openvk/mobile-android-legacy !--> - + - - + + \ No newline at end of file diff --git a/app/src/main/res/layout-land-v11/activity_about_application.xml b/app/src/main/res/layout-land-v11/activity_about_application.xml index b4f6e2ffa..6ec6833e3 100644 --- a/app/src/main/res/layout-land-v11/activity_about_application.xml +++ b/app/src/main/res/layout-land-v11/activity_about_application.xml @@ -25,6 +25,22 @@ android:fitsSystemWindows="true"> + + + + + @@ -95,9 +111,9 @@ android:id="@+id/app_links_title" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="3dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="3dp" android:layout_weight="1" android:gravity="center" android:text="@string/about_app_links" @@ -107,9 +123,9 @@ android:id="@+id/app_links_text" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="8dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="8dp" android:layout_weight="1" android:gravity="center" android:text="[this is app links]" @@ -121,9 +137,9 @@ android:id="@+id/app_translations_title" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="3dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="3dp" android:gravity="center" android:text="@string/credits" android:textStyle="bold" /> @@ -195,9 +211,9 @@ android:id="@+id/app_development_team_title" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="3dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="3dp" android:gravity="center" android:text="@string/openvk_legacy_devteam" android:textStyle="bold" /> @@ -206,9 +222,9 @@ android:id="@+id/app_development_text" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="8dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="8dp" android:layout_weight="1" android:gravity="center" android:text="@string/app_devteam" @@ -219,9 +235,9 @@ android:id="@+id/app_credits_title" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="3dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="3dp" android:gravity="center" android:text="@string/about_app_translations" android:textStyle="bold" /> @@ -327,9 +343,9 @@ android:id="@+id/app_license_title" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="3dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="3dp" android:gravity="center" android:text="@string/app_license_title" android:textStyle="bold" @@ -339,9 +355,9 @@ android:id="@+id/agpl_logo" android:layout_width="match_parent" android:layout_height="80dp" - android:layout_marginBottom="3dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="3dp" android:layout_weight="5.92" android:adjustViewBounds="false" android:scaleType="fitCenter" @@ -351,9 +367,9 @@ android:id="@+id/app_license_text" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="8dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="8dp" android:layout_weight="1" android:gravity="center" android:text="@string/app_license_text" @@ -365,9 +381,9 @@ android:id="@+id/app_disclaimer_title" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="3dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="3dp" android:gravity="center" android:text="@string/app_disclaimer_title" android:textStyle="bold" @@ -377,9 +393,9 @@ android:id="@+id/app_disclaimer_text" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="8dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="8dp" android:layout_weight="1" android:gravity="center" android:text="@string/app_disclaimer" diff --git a/app/src/main/res/layout-land/activity_about_application.xml b/app/src/main/res/layout-land/activity_about_application.xml index 46cbdd2bf..3670bc0b6 100644 --- a/app/src/main/res/layout-land/activity_about_application.xml +++ b/app/src/main/res/layout-land/activity_about_application.xml @@ -18,22 +18,38 @@ + android:orientation="vertical"> + + + + + + + - - + android:layout_height="match_parent"> @@ -200,9 +216,9 @@ android:id="@+id/app_development_team_title" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="3dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="3dp" android:gravity="center" android:text="@string/openvk_legacy_devteam" android:textStyle="bold" /> @@ -211,9 +227,9 @@ android:id="@+id/app_development_text" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="8dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="8dp" android:layout_weight="1" android:gravity="center" android:text="@string/app_devteam" @@ -224,9 +240,9 @@ android:id="@+id/app_translations_title" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="3dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="3dp" android:gravity="center" android:text="@string/about_app_translations" android:textStyle="bold" /> @@ -332,9 +348,9 @@ android:id="@+id/app_license_title" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="3dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="3dp" android:gravity="center" android:text="@string/app_license_title" android:textStyle="bold" @@ -344,9 +360,9 @@ android:id="@+id/agpl_logo" android:layout_width="match_parent" android:layout_height="80dp" - android:layout_marginBottom="3dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="3dp" android:layout_weight="5.92" android:adjustViewBounds="false" android:scaleType="fitCenter" @@ -356,9 +372,9 @@ android:id="@+id/app_license_text" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="8dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="8dp" android:layout_weight="1" android:gravity="center" android:text="@string/app_license_text" @@ -370,9 +386,9 @@ android:id="@+id/app_disclaimer_title" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="3dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="3dp" android:gravity="center" android:text="@string/app_disclaimer_title" android:textStyle="bold" @@ -382,9 +398,9 @@ android:id="@+id/app_disclaimer_text" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="8dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="8dp" android:layout_weight="1" android:gravity="center" android:text="@string/app_disclaimer" diff --git a/app/src/main/res/layout-sw600dp/activity_about_application.xml b/app/src/main/res/layout-sw600dp/activity_about_application.xml index 3b7e6bb87..cffea4439 100644 --- a/app/src/main/res/layout-sw600dp/activity_about_application.xml +++ b/app/src/main/res/layout-sw600dp/activity_about_application.xml @@ -17,16 +17,33 @@ !--> + android:orientation="horizontal" + android:visibility="gone"> + + + + + + android:text="Application version" + android:textSize="12dp" /> + android:fillViewport="false"> @@ -180,9 +197,9 @@ android:id="@+id/app_development_team_title" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="3dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="3dp" android:gravity="center" android:text="@string/openvk_legacy_devteam" android:textStyle="bold" /> @@ -191,9 +208,9 @@ android:id="@+id/app_development_text" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="8dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="8dp" android:layout_weight="1" android:gravity="center" android:text="@string/app_devteam" @@ -204,9 +221,9 @@ android:id="@+id/app_credits_title" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="3dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="3dp" android:gravity="center" android:text="@string/about_app_translations" android:textStyle="bold" /> @@ -312,9 +329,9 @@ android:id="@+id/app_license_title" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="3dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="3dp" android:gravity="center" android:text="@string/app_license_title" android:textStyle="bold" @@ -324,9 +341,9 @@ android:id="@+id/agpl_logo" android:layout_width="match_parent" android:layout_height="80dp" - android:layout_marginBottom="3dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="3dp" android:layout_weight="5.92" android:adjustViewBounds="false" android:scaleType="fitCenter" @@ -336,9 +353,9 @@ android:id="@+id/app_license_text" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="8dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="8dp" android:layout_weight="1" android:gravity="center" android:text="@string/app_license_text" @@ -350,9 +367,9 @@ android:id="@+id/app_disclaimer_title" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="3dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="3dp" android:gravity="center" android:text="@string/app_disclaimer_title" android:textStyle="bold" @@ -362,9 +379,9 @@ android:id="@+id/app_disclaimer_text" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="8dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="8dp" android:layout_weight="1" android:gravity="center" android:text="@string/app_disclaimer" diff --git a/app/src/main/res/layout-v11/activity_about_application.xml b/app/src/main/res/layout-v11/activity_about_application.xml index d758639e1..4a645f0ba 100644 --- a/app/src/main/res/layout-v11/activity_about_application.xml +++ b/app/src/main/res/layout-v11/activity_about_application.xml @@ -23,10 +23,26 @@ android:id="@+id/about_layout"> + android:orientation="horizontal" + android:visibility="gone"> + + + + + + android:text="Application version" + android:textSize="12dp" /> + android:layout_height="match_parent"> @@ -179,9 +195,9 @@ android:id="@+id/app_development_team_title" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="3dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="3dp" android:gravity="center" android:text="@string/openvk_legacy_devteam" android:textStyle="bold" /> @@ -190,9 +206,9 @@ android:id="@+id/app_development_text" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="8dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="8dp" android:layout_weight="1" android:gravity="center" android:text="@string/app_devteam" @@ -203,9 +219,9 @@ android:id="@+id/app_translations_title" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="3dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="3dp" android:gravity="center" android:text="@string/about_app_translations" android:textStyle="bold" /> @@ -311,9 +327,9 @@ android:id="@+id/app_license_title" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="3dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="3dp" android:gravity="center" android:text="@string/app_license_title" android:textStyle="bold" @@ -323,9 +339,9 @@ android:id="@+id/agpl_logo" android:layout_width="match_parent" android:layout_height="80dp" - android:layout_marginBottom="3dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="3dp" android:layout_weight="5.92" android:adjustViewBounds="false" android:scaleType="fitCenter" @@ -335,9 +351,9 @@ android:id="@+id/app_license_text" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="8dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="8dp" android:layout_weight="1" android:gravity="center" android:text="@string/app_license_text" @@ -349,9 +365,9 @@ android:id="@+id/app_disclaimer_title" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="3dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="3dp" android:gravity="center" android:text="@string/app_disclaimer_title" android:textStyle="bold" @@ -361,9 +377,9 @@ android:id="@+id/app_disclaimer_text" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="8dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="8dp" android:layout_weight="1" android:gravity="center" android:text="@string/app_disclaimer" diff --git a/app/src/main/res/layout-v8/pref_list.xml b/app/src/main/res/layout-v8/pref_list.xml index 848db4f90..bc87d4a67 100644 --- a/app/src/main/res/layout-v8/pref_list.xml +++ b/app/src/main/res/layout-v8/pref_list.xml @@ -61,9 +61,9 @@ diff --git a/app/src/main/res/layout/activity_about_application.xml b/app/src/main/res/layout/activity_about_application.xml index 4088d0717..4bcf5e63c 100644 --- a/app/src/main/res/layout/activity_about_application.xml +++ b/app/src/main/res/layout/activity_about_application.xml @@ -23,16 +23,31 @@ android:layout_height="match_parent" android:id="@+id/about_layout"> + + + android:orientation="horizontal" + android:visibility="gone"> - + + + + + android:layout_height="match_parent"> @@ -185,9 +200,9 @@ android:id="@+id/app_development_team_title" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="3dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="3dp" android:gravity="center" android:text="@string/openvk_legacy_devteam" android:textStyle="bold" /> @@ -196,9 +211,9 @@ android:id="@+id/app_development_text" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="8dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="8dp" android:layout_weight="1" android:gravity="center" android:text="@string/app_devteam" @@ -209,9 +224,9 @@ android:id="@+id/app_translations_title" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="3dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="3dp" android:gravity="center" android:text="@string/about_app_translations" android:textStyle="bold" /> @@ -317,9 +332,9 @@ android:id="@+id/app_license_title" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="3dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="3dp" android:gravity="center" android:text="@string/app_license_title" android:textStyle="bold" @@ -329,9 +344,9 @@ android:id="@+id/agpl_logo" android:layout_width="match_parent" android:layout_height="80dp" - android:layout_marginBottom="3dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="3dp" android:layout_weight="5.92" android:adjustViewBounds="false" android:scaleType="fitCenter" @@ -341,9 +356,9 @@ android:id="@+id/app_license_text" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="8dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="8dp" android:layout_weight="1" android:gravity="center" android:text="@string/app_license_text" @@ -355,9 +370,9 @@ android:id="@+id/app_disclaimer_title" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="3dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="3dp" android:gravity="center" android:text="@string/app_disclaimer_title" android:textStyle="bold" @@ -367,9 +382,9 @@ android:id="@+id/app_disclaimer_text" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="8dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" + android:layout_marginBottom="8dp" android:layout_weight="1" android:gravity="center" android:text="@string/app_disclaimer" diff --git a/build.gradle b/build.gradle index 8edb37f72..7d9cc53e6 100644 --- a/build.gradle +++ b/build.gradle @@ -2,12 +2,13 @@ buildscript { repositories { - jcenter() + maven { url "https://mvnrepository.com/artifact" } + mavenCentral() google() } dependencies { //noinspection GradleDependency - classpath 'com.android.tools.build:gradle:2.3.2' + classpath 'com.android.tools.build:gradle:2.3.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files @@ -18,8 +19,10 @@ allprojects { repositories { jcenter() mavenCentral() + maven { url "https://mvnrepository.com/artifact" } maven { url "https://jitpack.io" } maven { url 'https://oss.sonatype.org/content/repositories/snapshots' } + maven { url 'https://repo.spring.io/plugins-release/'} google() } } diff --git a/modules/ovk-api/src/main/java/uk/openvk/android/client/wrappers/DownloadManager.java b/modules/ovk-api/src/main/java/uk/openvk/android/client/wrappers/DownloadManager.java index 6d80a4114..9a7dd0d60 100644 --- a/modules/ovk-api/src/main/java/uk/openvk/android/client/wrappers/DownloadManager.java +++ b/modules/ovk-api/src/main/java/uk/openvk/android/client/wrappers/DownloadManager.java @@ -236,10 +236,16 @@ private String generateUserAgent() { client_name = "OpenVK API"; version = BuildConfig.VERSION_NAME; } finally { - user_agent = String.format("%s/%s (Android %s; SDK %s; %s; %s %s; %s)", - client_name, version, Build.VERSION.RELEASE, Build.VERSION.SDK_INT, - Build.CPU_ABI, Build.MANUFACTURER, Build.MODEL, System.getProperty("user.language") - ); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.DONUT) { + user_agent = String.format("%s/%s (Android %s; SDK %s; %s; %s %s; %s)", + client_name, version, Build.VERSION.RELEASE, Build.VERSION.SDK_INT, + Build.CPU_ABI, Build.MANUFACTURER, Build.MODEL, System.getProperty("user.language") + ); + } else { + user_agent = String.format("%s/%s (Android %s; SDK %s; %s)", + client_name, version, Build.VERSION.RELEASE, 3, System.getProperty("user.language") + ); + } } return user_agent; } From fc4a377acc3e3b15f22ab0abdb4ff418566fcc6a Mon Sep 17 00:00:00 2001 From: Dmitry Tretyakov Date: Sat, 14 Sep 2024 21:44:02 +0700 Subject: [PATCH 19/23] Add Vriska Maven repository to return non-existent dependencies to JCenter --- app/app.iml | 2 ++ app/build.gradle | 4 ++-- build.gradle | 10 ++++++++-- modules/modules.iml | 6 ++++++ modules/slidingmenu/slidingmenu.iml | 6 ++++++ 5 files changed, 24 insertions(+), 4 deletions(-) diff --git a/app/app.iml b/app/app.iml index c53cdff86..29230473f 100644 --- a/app/app.iml +++ b/app/app.iml @@ -138,8 +138,10 @@ + + diff --git a/app/build.gradle b/app/build.gradle index 18ebaa22c..885115f4f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -143,12 +143,12 @@ dependencies { //noinspection GradleDependency,GradleCompatible compile 'com.android.support:appcompat-v7:24.0.0' //noinspection GradleDependency - compile 'com.takisoft.fix:preference-v7:24.0.0.1' + compile 'com.takisoft.fix:preference-v7:24.0.0' compile 'com.readystatesoftware.systembartint:systembartint:1.0.3' compile project(':modules:actionbar') compile project(':modules:popupmenu') compile 'com.reginald.swiperefresh:library:1.1.2' - compile 'com.seppius.plurals:android-i18n-plurals:1.0' + compile 'com.seppius.plurals:android-i18n-plurals:1.0.1' // Android 2.x plurals patch compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' compile 'ch.acra:acra:4.6.0' diff --git a/build.gradle b/build.gradle index 7d9cc53e6..e2f664a8c 100644 --- a/build.gradle +++ b/build.gradle @@ -19,10 +19,16 @@ allprojects { repositories { jcenter() mavenCentral() - maven { url "https://mvnrepository.com/artifact" } maven { url "https://jitpack.io" } maven { url 'https://oss.sonatype.org/content/repositories/snapshots' } - maven { url 'https://repo.spring.io/plugins-release/'} + maven { url "https://maven.aliyun.com/repository/jcenter" } google() + maven { + url "https://maven.vriska.ru/" + credentials { + username "gradle" + password "gradle" + } + } } } diff --git a/modules/modules.iml b/modules/modules.iml index a9abc0798..92d39aa06 100644 --- a/modules/modules.iml +++ b/modules/modules.iml @@ -7,11 +7,17 @@