kaptures) {
+ "" + KFile.formatFileSize(kapture.getSize()) + " "
+ "";
+ if(c) {
+ hasScreenshots = true;
+
+ String screenshotsBody = "";
+
+ final ArrayList screenshots = kapture.getScreenshots();
+
+
+ for(int i = 0; i < screenshots.size(); i++) {
+ Kapture.Screenshot screenshot = screenshots.get(i);
+
+ try {
+ final JSONObject json = new JSONObject();
+
+ json.put("n", new File(screenshot.getLocation()).getName());
+ json.put("l", screenshot.getLocation());
+
+ screenshotsBody += json + ((i == screenshots.size() - 1) ? "" : ",");
+ } catch (Exception ignore) {
+ hasScreenshots = false;
+ }
+ }
+
+ body += "
";
+ }
+
if(b) {
hasExtra = true;
@@ -89,6 +118,14 @@ public String getList(ArrayList kaptures) {
JAVASCRIPT.addList();
+ if(hasScreenshots) {
+ CSS.addScreenshot();
+
+ JAVASCRIPT.addScreenshot();
+
+ body += getScreenshotString();
+ }
+
if(hasExtra) {
CSS.addExtra();
@@ -110,6 +147,10 @@ private String getExtraString() {
return "";
}
+ private String getScreenshotString() {
+ return "" + CONTEXT.getString(R.string.popup_title_screenshot) + " " + CONTEXT.getString(R.string.popup_btn_close) + "
";
+ }
+
private String getPlayersString() {
return "" + CONTEXT.getString(R.string.popup_btn_close) + "
";
}
diff --git a/app/src/main/java/dev/dect/kapture/server/KJavascript.java b/app/src/main/java/dev/dect/kapture/server/KJavascript.java
index 0ba47d3..c5c2a76 100644
--- a/app/src/main/java/dev/dect/kapture/server/KJavascript.java
+++ b/app/src/main/java/dev/dect/kapture/server/KJavascript.java
@@ -13,6 +13,10 @@ public void addExtra() {
SCRIPT += "const extras=document.getElementById(\"extras\"),extrasTitle=document.getElementById(\"extras-title\");document.getElementById(\"closeExtras\").addEventListener(\"click\",()=>extras.style.display=\"none\"),window.addEventListener(\"load\",()=>{document.querySelectorAll(\".extra\").forEach(e=>{e.addEventListener(\"click\",()=>{document.querySelectorAll(\"#extras-body .row\").forEach(e=>e.remove()),JSON.parse(e.dataset.extras).forEach(e=>{var t=window.location.origin+window.location.pathname;\"/\"===t[t.length-1]&&(t=t.substring(0,t.length-1));let a=document.createElement(\"div\");a.className=\"row\";let l=document.createElement(\"div\");l.className=\"play\";l.dataset.href = e.l;l.dataset.type = e.l.includes(\".mp4\") ? \"video\" : \"audio\";addPlayerListener(l);let r=document.createElement(\"a\");r.className=\"download\",r.href=t+e.l;let n=document.createElement(\"span\");n.innerHTML=e.n,a.appendChild(l),a.appendChild(r),a.appendChild(n),extrasTitle.after(a)}),extras.style.display=\"block\"})})});";
}
+ public void addScreenshot() {
+ SCRIPT += "const screenshots=document.getElementById(\"screenshots\"),screenshotsTitle=document.getElementById(\"screenshots-title\");document.getElementById(\"closeScreenshots\").addEventListener(\"click\",()=>screenshots.style.display=\"none\"),window.addEventListener(\"load\",()=>{document.querySelectorAll(\".screenshot\").forEach(e=>{e.addEventListener(\"click\",()=>{document.querySelectorAll(\"#screenshots-body .row\").forEach(e=>e.remove()),JSON.parse(e.dataset.screenshots).forEach(e=>{var t=window.location.origin+window.location.pathname;\"/\"===t[t.length-1]&&(t=t.substring(0,t.length-1));let s=document.createElement(\"div\");s.className=\"row\";let n=document.createElement(\"a\");n.className=\"download\",n.href=t+e.l;let r=document.createElement(\"span\");r.innerHTML=e.n,s.appendChild(n),s.appendChild(r),screenshotsTitle.after(s)}),screenshots.style.display=\"block\"})})});";
+ }
+
public void addList() {
SCRIPT += "window.addEventListener(\"load\",function(){var l=window.location.origin+window.location.pathname;if(l[l.length-1]===\"/\"){l=l.substring(0,l.length-1)}document.querySelectorAll(\"a\").forEach(function(a){a.href=l+a.getAttribute(\"href\")})},false);";
diff --git a/app/src/main/java/dev/dect/kapture/server/WifiShare.java b/app/src/main/java/dev/dect/kapture/server/WifiShare.java
index d680ac3..d51802e 100644
--- a/app/src/main/java/dev/dect/kapture/server/WifiShare.java
+++ b/app/src/main/java/dev/dect/kapture/server/WifiShare.java
@@ -12,12 +12,17 @@
import java.util.ArrayList;
import dev.dect.kapture.R;
+import dev.dect.kapture.data.DB;
import dev.dect.kapture.model.Kapture;
import dev.dect.kapture.popup.WiFiSharePopup;
import dev.dect.kapture.utils.KFile;
import fi.iki.elonen.NanoHTTPD;
public class WifiShare extends NanoHTTPD {
+ public interface OnWifiShareListener {
+ void onStop();
+ }
+
public static final int PORT = 8080;
private final Context CONTEXT;
@@ -26,6 +31,12 @@ public class WifiShare extends NanoHTTPD {
private final ArrayList LOCATIONS = new ArrayList<>();
+ private OnWifiShareListener LISTENER;
+
+ public WifiShare(Context ctx) {
+ this(ctx, new DB(ctx).selectAllKaptures(true));
+ }
+
public WifiShare(Context ctx, ArrayList kaptures) {
super(PORT);
@@ -38,6 +49,10 @@ public WifiShare(Context ctx, ArrayList kaptures) {
for(Kapture.Extra extra : kapture.getExtras()) {
LOCATIONS.add(extra.getLocation());
}
+
+ for(Kapture.Screenshot screenshot : kapture.getScreenshots()) {
+ LOCATIONS.add(screenshot.getLocation());
+ }
}
}
@@ -70,6 +85,12 @@ public Response serve(IHTTPSession session) {
}
}
+ public WifiShare setListener(OnWifiShareListener listener) {
+ this.LISTENER = listener;
+
+ return this;
+ }
+
public void start() {
final String ip = getIdAddress();
@@ -91,7 +112,13 @@ public void start() {
ip,
PORT,
KAPTURES.size(),
- this::stop
+ () -> {
+ stop();
+
+ if(LISTENER != null) {
+ LISTENER.onStop();
+ }
+ }
).show();
} catch (Exception ignore) {
diff --git a/app/src/main/java/dev/dect/kapture/service/CapturingService.java b/app/src/main/java/dev/dect/kapture/service/CapturingService.java
index 5a76df9..9355624 100644
--- a/app/src/main/java/dev/dect/kapture/service/CapturingService.java
+++ b/app/src/main/java/dev/dect/kapture/service/CapturingService.java
@@ -51,6 +51,8 @@ public class CapturingService extends AccessibilityService {
private StopOption STOP_OPTION;
+ private Kapture KAPTURE;
+
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {}
@@ -86,9 +88,17 @@ public void onDestroy() {
CAPTURING_SERVICE = null;
+ KAPTURE = null;
+
super.onDestroy();
}
+ public static void screenshotTaken(Kapture.Screenshot screenshot) {
+ if(CAPTURING_SERVICE.KAPTURE != null) {
+ CAPTURING_SERVICE.KAPTURE.addScreenshot(screenshot);
+ }
+ }
+
public static void requestStartRecording(Context ctx) {
if(!IS_RECORDING && !IS_PROCESSING && !IS_PAUSED) {
if(IS_SERVICE_RUNNING) {
@@ -192,6 +202,10 @@ private void startRecording() {
}
private void stopRecording() {
+ if(!TokenActivity.isToRecycle(this)) {
+ TokenActivity.clearToken();
+ }
+
STOP_OPTION.destroy();
NOTIFICATION.destroy();
@@ -213,17 +227,17 @@ private void stopRecording() {
KMediaProjection.destroy();
new Thread(() -> {
- final Kapture kapture = processAndSave();
+ processAndSave();
SCREEN_MIC_RECORDER.destroy();
INTERNAL_AUDIO_RECORDER.destroy();
- new SavedNotification(this).createAndShow(kapture);
+ new SavedNotification(this).createAndShow(KAPTURE);
IS_PROCESSING = false;
- requestUIsUpdate(kapture);
+ requestUIsUpdate(KAPTURE);
if(Utils.hasWriteSecureSettings(this)) {
disableSelf();
@@ -269,6 +283,8 @@ private void initVariables() {
OVERLAY_UI = new Overlay(this, KSETTINGS);
STOP_OPTION = new StopOption(this, KSETTINGS, this::stopRecording);
+
+ KAPTURE = new Kapture(this);
}
private void initRecorders() {
@@ -297,6 +313,8 @@ private void requestUIsStateChange() {
if(MainActivity.getInstance() != null) {
MainActivity.getInstance().getKaptureFragment().requestFloatingButtonUpdate();
}
+
+ Utils.updateWidgets(this);
}
private void requestUIsUpdate(Kapture kapture) {
@@ -305,14 +323,16 @@ private void requestUIsUpdate(Kapture kapture) {
if(MainActivity.getInstance() != null) {
MainActivity.getInstance().requestUiUpdate(kapture);
}
+
+ Utils.updateWidgets(this);
}
- public Kapture processAndSave() {
+ public void processAndSave() {
final File videoMicFile = SCREEN_MIC_RECORDER.getFile(),
internalAudioFile = INTERNAL_AUDIO_RECORDER.getFile(),
kaptureFile = KFile.generateNewEmptyKaptureFile(this, KSETTINGS);
- final Kapture kapture = new Kapture(this, kaptureFile);
+ KAPTURE.setFile(kaptureFile);
if(KSETTINGS.isToRecordInternalAudio()) {
if(KSETTINGS.isToRecordMic()) {
@@ -376,7 +396,7 @@ public Kapture processAndSave() {
KFile.copyFile(internalAudioFile, f);
}
- kapture.addExtra(new Kapture.Extra(Kapture.Extra.EXTRA_MP3_AUDIO, f));
+ KAPTURE.addExtra(new Kapture.Extra(Kapture.Extra.EXTRA_MP3_AUDIO, f));
}
if(KSETTINGS.isToGenerateMp3OnlyInternal() && KSETTINGS.isToRecordInternalAudio()) {
@@ -387,7 +407,7 @@ public Kapture processAndSave() {
KFile.copyFile(internalAudioFile, f);
- kapture.addExtra(new Kapture.Extra(Kapture.Extra.EXTRA_MP3_INTERNAL_ONLY, f));
+ KAPTURE.addExtra(new Kapture.Extra(Kapture.Extra.EXTRA_MP3_INTERNAL_ONLY, f));
}
if(KSETTINGS.isToGenerateMp3OnlyMic() && KSETTINGS.isToRecordMic()) {
@@ -403,7 +423,7 @@ public Kapture processAndSave() {
+ f.getAbsolutePath() + "\""
);
- kapture.addExtra(new Kapture.Extra(Kapture.Extra.EXTRA_MP3_MIC_ONLY, f));
+ KAPTURE.addExtra(new Kapture.Extra(Kapture.Extra.EXTRA_MP3_MIC_ONLY, f));
}
if(KSETTINGS.isToGenerateMp4NoAudio()) {
@@ -423,7 +443,7 @@ public Kapture processAndSave() {
KFile.copyFile(videoMicFile, f);
}
- kapture.addExtra(new Kapture.Extra(Kapture.Extra.EXTRA_MP4_NO_AUDIO, f));
+ KAPTURE.addExtra(new Kapture.Extra(Kapture.Extra.EXTRA_MP4_NO_AUDIO, f));
}
if(KSETTINGS.isToRecordMic() && KSETTINGS.isToRecordInternalAudio()) {
@@ -435,7 +455,7 @@ public Kapture processAndSave() {
KFile.copyFile(videoMicFile, f);
- kapture.addExtra(new Kapture.Extra(Kapture.Extra.EXTRA_MP4_MIC_ONLY, f));
+ KAPTURE.addExtra(new Kapture.Extra(Kapture.Extra.EXTRA_MP4_MIC_ONLY, f));
}
if(KSETTINGS.isToGenerateMp4OnlyInternalAudio()) {
@@ -453,13 +473,13 @@ public Kapture processAndSave() {
+ f.getAbsolutePath() + "\""
);
- kapture.addExtra(new Kapture.Extra(Kapture.Extra.EXTRA_MP4_INTERNAL_ONLY, f));
+ KAPTURE.addExtra(new Kapture.Extra(Kapture.Extra.EXTRA_MP4_INTERNAL_ONLY, f));
}
}
- kapture.notifyMediaScanner();
+ KAPTURE.notifyAllMediaScanner();
- return new DB(this).insertKapture(kapture);
+ new DB(this).insertKapture(KAPTURE);
}
}
diff --git a/app/src/main/java/dev/dect/kapture/utils/KFile.java b/app/src/main/java/dev/dect/kapture/utils/KFile.java
index a2e085d..b89c66b 100644
--- a/app/src/main/java/dev/dect/kapture/utils/KFile.java
+++ b/app/src/main/java/dev/dect/kapture/utils/KFile.java
@@ -1,7 +1,9 @@
package dev.dect.kapture.utils;
+import android.app.Activity;
import android.content.Context;
import android.content.Intent;
+import android.media.MediaScannerConnection;
import android.net.Uri;
import android.os.Environment;
import android.webkit.MimeTypeMap;
@@ -14,6 +16,7 @@
import java.io.File;
import java.net.URLDecoder;
import java.nio.file.Files;
+import java.nio.file.StandardCopyOption;
import java.text.DecimalFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
@@ -22,9 +25,13 @@
import dev.dect.kapture.R;
import dev.dect.kapture.activity.viewer.AudioActivity;
+import dev.dect.kapture.activity.viewer.ImageActivity;
import dev.dect.kapture.activity.viewer.VideoActivity;
import dev.dect.kapture.data.Constants;
+import dev.dect.kapture.data.DB;
import dev.dect.kapture.data.KSettings;
+import dev.dect.kapture.model.Kapture;
+import dev.dect.kapture.service.CapturingService;
/** @noinspection ResultOfMethodCallIgnored*/
public class KFile {
@@ -61,8 +68,14 @@ public static String uriToAbsolutPath(Context ctx, Uri uri) {
String path;
+ boolean isFile = false;
+
if(uriString.startsWith("content://com.android.externalstorage.documents/tree/primary%3A")) {
path = uriString.replaceFirst("content://com.android.externalstorage.documents/tree/primary%3A", "");
+ } else if(uriString.startsWith("content://com.android.externalstorage.documents/document/primary%3A")) {
+ isFile = true;
+
+ path = uriString.replaceFirst("content://com.android.externalstorage.documents/document/primary%3A", "");
} else {
path = uriString.replaceFirst("content://com.sec.android.app.myfiles.FileProvider/device_storage/0/", "");
}
@@ -73,15 +86,15 @@ public static String uriToAbsolutPath(Context ctx, Uri uri) {
Toast.makeText(ctx, ctx.getString(R.string.toast_error_generic), Toast.LENGTH_SHORT).show();
}
- File folder = new File(INTERNAL_STORAGE_PATH, path);
+ File f = new File(INTERNAL_STORAGE_PATH, path);
- if(!folder.exists()) {
- folder = getDefaultFileLocation(ctx);
+ if(!isFile && !f.exists()) {
+ f = getDefaultFileLocation(ctx);
Toast.makeText(ctx, ctx.getString(R.string.toast_error_generic), Toast.LENGTH_SHORT).show();
}
- return folder.getAbsolutePath();
+ return f.getAbsolutePath();
}
public static String formatAndroidPathToUser(Context ctx, String path) {
@@ -148,13 +161,24 @@ public static void openFile(Context ctx, File f, boolean external) {
if(type.contains("audio/")) {
i.setClass(ctx, AudioActivity.class);
i.putExtra(AudioActivity.INTENT_URL, f.getAbsolutePath());
- } else if(type.contains("video/")) {
- i.setClass(ctx, VideoActivity.class);
- i.putExtra(VideoActivity.INTENT_URL, f.getAbsolutePath());
} else {
- openFile(ctx, f, true);
-
- return;
+ try {
+ if(((Activity) ctx).isInMultiWindowMode()) {
+ i.setFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
+ }
+ } catch (Exception ignore) {}
+
+ if(type.contains("video/")) {
+ i.setClass(ctx, VideoActivity.class);
+ i.putExtra(VideoActivity.INTENT_URL, f.getAbsolutePath());
+ } else if(type.contains("image/")) {
+ i.setClass(ctx, ImageActivity.class);
+ i.putExtra(ImageActivity.INTENT_URL, f.getAbsolutePath());
+ } else {
+ openFile(ctx, f, true);
+
+ return;
+ }
}
}
@@ -180,7 +204,7 @@ public static void shareFile(Context ctx, File f) {
ctx.startActivity(Intent.createChooser(i, "Share").addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
}
- public static void shareFiles(Context ctx, ArrayList uris) {
+ public static void shareVideoFiles(Context ctx, ArrayList uris) {
final Intent i = new Intent(Intent.ACTION_SEND_MULTIPLE);
i.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
@@ -203,7 +227,11 @@ public static File renameFile(String name, String path) {
}
public static File renameFile(String name, File f) {
- final File newFile = new File(f.getParentFile(), name + "." + getFileExtension(f));
+ File newFile = new File(f.getParentFile(), name + "." + getFileExtension(f));
+
+ if(newFile.exists()) {
+ newFile = generateFileIncrementalName(f.getParentFile(), name, "." + getFileExtension(f));
+ }
f.renameTo(newFile);
@@ -216,6 +244,12 @@ public static void copyFile(File from, File to) {
} catch (Exception ignore) {}
}
+ public static void replaceFile(File replace, File by) {
+ try {
+ Files.move(by.toPath(), replace.toPath(), StandardCopyOption.REPLACE_EXISTING);
+ } catch (Exception ignore) {}
+ }
+
public static void pmcToMp3(File pmc, File mp3) {
FFmpegKit.execute(
"-f s16le -ar 44.1k -ac 2 -i " + pmc.getAbsolutePath() + " -y " + mp3.getAbsolutePath()
@@ -230,7 +264,7 @@ public static String getDefaultScreenshotName(Context ctx) {
return formatStringResource(ctx, R.string.file_name_screenshot);
}
- public static File generateFileIncrementalName(File parent, String name, String ext) {
+ private static File generateFileIncrementalName(File parent, String name, String ext) {
File f = new File(parent, name + FILE_SEPARATOR + 0 + ext);
int i = 0;
@@ -242,4 +276,126 @@ public static File generateFileIncrementalName(File parent, String name, String
return f;
}
+ public static File generateScreenshotFile(Context ctx, KSettings ks) {
+ final String fileName = KFile.getFileIdNotGenerated(ctx)
+ + KFile.FILE_SEPARATOR
+ + KFile.getDefaultScreenshotName(ctx);
+
+ return KFile.generateFileIncrementalName(ks.getSavingScreenshotLocationFile(), fileName, ".png");
+ }
+
+ public static void notifyMediaScanner(Context ctx, File f) {
+ notifyMediaScanner(ctx, f.getAbsolutePath());
+ }
+
+ public static void notifyMediaScanner(Context ctx, String path) {
+ try {
+ MediaScannerConnection.scanFile(ctx, new String[]{path}, null, null);
+ } catch (Exception ignore) {}
+ }
+
+ public static void clearCache(Context ctx) {
+ if(CapturingService.isRecording()) {
+ Toast.makeText(ctx, ctx.getString(R.string.toast_info_while_recording), Toast.LENGTH_SHORT).show();
+
+ return;
+ }
+
+ deleteDirectory(ctx.getCacheDir());
+ deleteDirectory(ctx.getExternalCacheDir());
+ }
+
+ public static long getCacheSize(Context ctx) {
+ return getDirectorySize(ctx.getCacheDir()) + getDirectorySize(ctx.getExternalCacheDir());
+ }
+
+ public static long getAppTotalFilesSize(Context ctx, boolean includeCache) {
+ long size = 0;
+
+ if(includeCache) {
+ size += getCacheSize(ctx);
+ }
+
+ for(Kapture kapture : new DB(ctx).selectAllKaptures(true)) {
+ if(kapture.getFile().exists()) {
+ size += kapture.getSize();
+
+ for(Kapture.Extra extra : kapture.getExtras()) {
+ final File f = new File(extra.getLocation());
+
+ if(f.exists()) {
+ size += f.length();
+ }
+ }
+
+ for(Kapture.Screenshot screenshot : kapture.getScreenshots()) {
+ final File f = new File(screenshot.getLocation());
+
+ if(f.exists()) {
+ size += f.length();
+ }
+ }
+ }
+ }
+
+ return size;
+ }
+
+ private static long getDirectorySize(File f) {
+ if(f == null) {
+ return 0;
+ }
+
+ long size = 0;
+
+ for(File file : f.listFiles()) {
+ if(file != null) {
+ if(file.isDirectory()) {
+ size += getDirectorySize(file);
+ } else {
+ size += file.length();
+ }
+ }
+ }
+
+ return size;
+ }
+
+ private static boolean deleteDirectory(File directory) {
+ try {
+ directory.delete();
+ } catch (Exception ignore) {}
+
+ if(directory == null) {
+ return false;
+ }
+
+ if(!directory.exists()) {
+ return true;
+ }
+
+ if(!directory.isDirectory()) {
+ return false;
+ }
+
+ String[] list = directory.list();
+
+ if(list != null) {
+ for(String s : list) {
+ File entry = new File(directory, s);
+
+ if(entry.isDirectory()) {
+ if(!deleteDirectory(entry)) {
+ return false;
+ }
+ } else {
+ if(!entry.delete()) {
+ return false;
+ }
+ }
+ }
+ }
+
+ return directory.delete();
+ }
}
diff --git a/app/src/main/java/dev/dect/kapture/utils/Utils.java b/app/src/main/java/dev/dect/kapture/utils/Utils.java
index a6af717..5656f6a 100644
--- a/app/src/main/java/dev/dect/kapture/utils/Utils.java
+++ b/app/src/main/java/dev/dect/kapture/utils/Utils.java
@@ -6,10 +6,14 @@
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
+import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PixelFormat;
+import android.graphics.PorterDuff;
+import android.graphics.PorterDuffXfermode;
+import android.graphics.Rect;
import android.graphics.RectF;
import android.net.Uri;
import android.provider.Settings;
@@ -22,6 +26,7 @@
import android.view.animation.AnimationUtils;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
+import android.widget.ImageView;
import android.widget.Toast;
import androidx.constraintlayout.widget.ConstraintLayout;
@@ -33,8 +38,15 @@
import dev.dect.kapture.R;
import dev.dect.kapture.data.Constants;
+import dev.dect.kapture.widget.BasicWidget;
+import dev.dect.kapture.widget.FullWidget;
public class Utils {
+ public static void updateWidgets(Context ctx) {
+ BasicWidget.requestUpdateAllFromType(ctx);
+ FullWidget.requestUpdateAllFromType(ctx);
+ }
+
public static boolean hasWriteSecureSettings(Context ctx) {
return ctx.checkSelfPermission(Manifest.permission.WRITE_SECURE_SETTINGS) == PackageManager.PERMISSION_GRANTED;
}
@@ -43,9 +55,19 @@ public static int generateTimeId() {
return (int) new Date().getTime();
}
- public static void drawTransparencyBackground(Canvas canvas) {
+ public static void drawTransparencyBackgroundOnImageView(ImageView imageView) {
+ final Bitmap b = Bitmap.createBitmap(imageView.getWidth(), imageView.getHeight(), Bitmap.Config.ARGB_8888);
+
+ final Canvas c = new Canvas(b);
+
+ Utils.drawTransparencyBackgroundOnCanvas(c);
+
+ imageView.setImageBitmap(b);
+ }
+
+ public static void drawTransparencyBackgroundOnCanvas(Canvas canvas) {
final float height = canvas.getHeight(),
- width = canvas.getWidth();
+ width = canvas.getWidth();
final Paint paint = new Paint();
@@ -67,11 +89,51 @@ public static void drawTransparencyBackground(Canvas canvas) {
y = size * i;
canvas.drawRect(new RectF(x, y, x + size, y + size), paint);
-
}
}
}
+ public static void drawColorSampleOnImageView(ImageView imageView, int color) {
+ final int colorSize = 100;
+
+ final Bitmap bitmap = Bitmap.createBitmap(colorSize, colorSize, Bitmap.Config.ARGB_8888);
+
+ final Canvas canvas = new Canvas(bitmap);
+
+ Utils.drawTransparencyBackgroundOnCanvas(canvas);
+
+ final Paint paintColor = new Paint();
+
+ paintColor.setStyle(Paint.Style.FILL);
+ paintColor.setColor(color);
+
+ canvas.drawRect(new RectF(0, 0, colorSize, colorSize), paintColor);
+
+ final Bitmap cuttedBitmap = Bitmap.createBitmap(colorSize, colorSize, Bitmap.Config.ARGB_8888);
+
+ final Canvas canvasCut = new Canvas(cuttedBitmap);
+
+ final Rect rect = new Rect(0, 0, colorSize, colorSize);
+
+ final Paint paintCut = new Paint();
+
+ paintCut.setAntiAlias(true);
+
+ canvasCut.drawARGB(0, 0, 0, 0);
+
+ canvasCut.drawCircle(colorSize / 2f, colorSize / 2f, colorSize / 2f, paintCut);
+
+ paintCut.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
+
+ canvasCut.drawBitmap(bitmap, rect, rect, paintCut);
+
+ imageView.setImageBitmap(cuttedBitmap);
+ }
+
+ public static boolean isInRange(int value, int min, int max) {
+ return (max > min) ? (value >= min && value <= max) : (value >= max && value <= min);
+ }
+
public static class Converter {
public static int dpToPx(Context ctx, int dp) {
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, ctx.getResources().getDisplayMetrics());
diff --git a/app/src/main/java/dev/dect/kapture/widget/BasicWidget.java b/app/src/main/java/dev/dect/kapture/widget/BasicWidget.java
new file mode 100644
index 0000000..0eaa75f
--- /dev/null
+++ b/app/src/main/java/dev/dect/kapture/widget/BasicWidget.java
@@ -0,0 +1,74 @@
+package dev.dect.kapture.widget;
+
+import android.app.PendingIntent;
+import android.appwidget.AppWidgetManager;
+import android.appwidget.AppWidgetProvider;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.widget.RemoteViews;
+
+import dev.dect.kapture.R;
+import dev.dect.kapture.activity.ActionActivity;
+import dev.dect.kapture.data.Constants;
+import dev.dect.kapture.service.CapturingService;
+
+public class BasicWidget extends AppWidgetProvider {
+
+ @Override
+ public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
+ for(int appWidgetId : appWidgetIds) {
+ renderUI(context, appWidgetId, appWidgetManager);
+ }
+ }
+
+ public static void requestUpdateAllFromType(Context ctx) {
+ final AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(ctx);
+
+ for(int appWidgetId : appWidgetManager.getAppWidgetIds(new ComponentName(ctx, BasicWidget.class))) {
+ renderUI(ctx, appWidgetId, appWidgetManager);
+ }
+ }
+
+ private static void renderUI(Context ctx, int appWidgetId, AppWidgetManager appWidgetManager) {
+ final RemoteViews views = new RemoteViews(ctx.getPackageName(), R.layout.widget_basic);
+
+ final Intent intentStartStop = new Intent(ctx, ActionActivity.class);
+
+ intentStartStop.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+
+ if(CapturingService.isRecording()) {
+ intentStartStop.putExtra(ActionActivity.INTENT_ACTION, Constants.SHORTCUT_STATIC_ACTION_STOP);
+
+ views.setTextViewCompoundDrawables(
+ R.id.startStopCapturing,
+ R.drawable.icon_capture_stop,
+ 0,
+ 0,
+ 0
+ );
+
+ } else {
+ intentStartStop.putExtra(ActionActivity.INTENT_ACTION, Constants.SHORTCUT_STATIC_ACTION_START);
+
+ views.setTextViewCompoundDrawables(
+ R.id.startStopCapturing,
+ R.drawable.icon_capture_start,
+ 0,
+ 0,
+ 0
+ );
+ }
+
+ final PendingIntent pendingIntentStartStop = PendingIntent.getActivity(
+ ctx,
+ appWidgetId,
+ intentStartStop,
+ PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE
+ );
+
+ views.setOnClickPendingIntent(R.id.startStopCapturing, pendingIntentStartStop);
+
+ appWidgetManager.updateAppWidget(appWidgetId, views);
+ }
+}
diff --git a/app/src/main/java/dev/dect/kapture/widget/FullWidget.java b/app/src/main/java/dev/dect/kapture/widget/FullWidget.java
new file mode 100644
index 0000000..af9ab09
--- /dev/null
+++ b/app/src/main/java/dev/dect/kapture/widget/FullWidget.java
@@ -0,0 +1,137 @@
+package dev.dect.kapture.widget;
+
+import android.app.PendingIntent;
+import android.appwidget.AppWidgetManager;
+import android.appwidget.AppWidgetProvider;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.widget.RemoteViews;
+
+import java.util.SplittableRandom;
+
+import dev.dect.kapture.R;
+import dev.dect.kapture.activity.ActionActivity;
+import dev.dect.kapture.data.Constants;
+import dev.dect.kapture.service.CapturingService;
+
+public class FullWidget extends AppWidgetProvider {
+
+ @Override
+ public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
+ for(int appWidgetId : appWidgetIds) {
+ renderUI(context, appWidgetId, appWidgetManager);
+ }
+ }
+
+ public static void requestUpdateAllFromType(Context ctx) {
+ final AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(ctx);
+
+ for(int appWidgetId : appWidgetManager.getAppWidgetIds(new ComponentName(ctx, FullWidget.class))) {
+ renderUI(ctx, appWidgetId, appWidgetManager);
+ }
+ }
+
+ private static void renderUI(Context ctx, int appWidgetId, AppWidgetManager appWidgetManager) {
+ final Bundle options = appWidgetManager.getAppWidgetOptions(appWidgetId);
+
+ final int minWidth = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH),
+ minHeight = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT);
+
+ final boolean isVertical = minWidth <= minHeight;
+
+ final RemoteViews views = new RemoteViews(ctx.getPackageName(), isVertical? R.layout.widget_full_vertical : R.layout.widget_full_horizontal);
+
+ final Intent intentStartStop = new Intent(ctx, ActionActivity.class);
+
+ intentStartStop.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+
+ if(CapturingService.isRecording()) {
+ intentStartStop.putExtra(ActionActivity.INTENT_ACTION, Constants.SHORTCUT_STATIC_ACTION_STOP);
+
+ views.setTextViewCompoundDrawables(
+ R.id.startStopCapturing,
+ R.drawable.icon_capture_stop,
+ 0,
+ 0,
+ 0
+ );
+
+ final Intent intentPauseResume = new Intent(ctx, ActionActivity.class);
+
+ intentPauseResume.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+
+ views.setInt(R.id.pauseResumeCapturing, "setBackgroundResource", R.drawable.btn_floating_background_circle);
+
+ if(CapturingService.isPaused()) {
+ intentPauseResume.putExtra(ActionActivity.INTENT_ACTION, Constants.SHORTCUT_STATIC_ACTION_RESUME);
+
+ views.setTextViewCompoundDrawables(
+ R.id.pauseResumeCapturing,
+ R.drawable.icon_capture_resume,
+ 0,
+ 0,
+ 0
+ );
+ } else {
+ intentPauseResume.putExtra(ActionActivity.INTENT_ACTION, Constants.SHORTCUT_STATIC_ACTION_PAUSE);
+
+ views.setTextViewCompoundDrawables(
+ R.id.pauseResumeCapturing,
+ R.drawable.icon_capture_pause,
+ 0,
+ 0,
+ 0
+ );
+ }
+
+ final PendingIntent pendingIntentPauseResume = PendingIntent.getActivity(
+ ctx,
+ appWidgetId + new SplittableRandom().nextInt(90, 999),
+ intentPauseResume,
+ PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE
+ );
+
+ views.setOnClickPendingIntent(R.id.pauseResumeCapturing, pendingIntentPauseResume);
+ } else {
+ intentStartStop.putExtra(ActionActivity.INTENT_ACTION, Constants.SHORTCUT_STATIC_ACTION_START);
+
+ views.setTextViewCompoundDrawables(
+ R.id.startStopCapturing,
+ R.drawable.icon_capture_start,
+ 0,
+ 0,
+ 0
+ );
+
+ views.setInt(R.id.pauseResumeCapturing, "setBackgroundResource", R.drawable.btn_floating_background_circle_widget_disabled);
+
+ views.setTextViewCompoundDrawables(
+ R.id.pauseResumeCapturing,
+ R.drawable.icon_capture_pause_widget_disabled,
+ 0,
+ 0,
+ 0
+ );
+ }
+
+ final PendingIntent pendingIntentStartStop = PendingIntent.getActivity(
+ ctx,
+ appWidgetId,
+ intentStartStop,
+ PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE
+ );
+
+ views.setOnClickPendingIntent(R.id.startStopCapturing, pendingIntentStartStop);
+
+ appWidgetManager.updateAppWidget(appWidgetId, views);
+ }
+
+ @Override
+ public void onAppWidgetOptionsChanged(Context context, AppWidgetManager appWidgetManager, int appWidgetId, Bundle newOptions) {
+ super.onAppWidgetOptionsChanged(context, appWidgetManager, appWidgetId, newOptions);
+
+ renderUI(context, appWidgetId, appWidgetManager);
+ }
+}
diff --git a/app/src/main/java/dev/dect/kapture/widget/WifiShareWidget.java b/app/src/main/java/dev/dect/kapture/widget/WifiShareWidget.java
new file mode 100644
index 0000000..4e798c7
--- /dev/null
+++ b/app/src/main/java/dev/dect/kapture/widget/WifiShareWidget.java
@@ -0,0 +1,41 @@
+package dev.dect.kapture.widget;
+
+import android.app.PendingIntent;
+import android.appwidget.AppWidgetManager;
+import android.appwidget.AppWidgetProvider;
+import android.content.Context;
+import android.content.Intent;
+import android.widget.RemoteViews;
+
+import dev.dect.kapture.R;
+import dev.dect.kapture.activity.ActionActivity;
+import dev.dect.kapture.data.Constants;
+
+public class WifiShareWidget extends AppWidgetProvider {
+
+ @Override
+ public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
+ for(int appWidgetId : appWidgetIds) {
+ renderUI(context, appWidgetId, appWidgetManager);
+ }
+ }
+
+ private static void renderUI(Context ctx, int appWidgetId, AppWidgetManager appWidgetManager) {
+ final RemoteViews views = new RemoteViews(ctx.getPackageName(), R.layout.widget_wifi_share);
+
+ final Intent intentWifiShare = new Intent(ctx, ActionActivity.class);
+
+ intentWifiShare.putExtra(ActionActivity.INTENT_ACTION, Constants.SHORTCUT_STATIC_ACTION_WIFI_SHARE);
+
+ final PendingIntent pendingIntentWifiShare = PendingIntent.getActivity(
+ ctx,
+ appWidgetId,
+ intentWifiShare,
+ PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE
+ );
+
+ views.setOnClickPendingIntent(R.id.btnWifiShare, pendingIntentWifiShare);
+
+ appWidgetManager.updateAppWidget(appWidgetId, views);
+ }
+}
diff --git a/app/src/main/res/anim/popup_background_in.xml b/app/src/main/res/anim/popup_background_in.xml
deleted file mode 100644
index 8703fa9..0000000
--- a/app/src/main/res/anim/popup_background_in.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/anim/popup_in.xml b/app/src/main/res/anim/popup_in.xml
deleted file mode 100644
index e97f2a0..0000000
--- a/app/src/main/res/anim/popup_in.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/drawable/btn_extra.xml b/app/src/main/res/drawable/btn_extra.xml
index fdebcf1..1765c87 100644
--- a/app/src/main/res/drawable/btn_extra.xml
+++ b/app/src/main/res/drawable/btn_extra.xml
@@ -1,8 +1,8 @@
-
+ android:height="@dimen/kapture_list_btn"
+ android:width="@dimen/kapture_list_btn">
@@ -10,7 +10,7 @@
\ No newline at end of file
diff --git a/app/src/main/res/drawable/btn_floating_background_circle.xml b/app/src/main/res/drawable/btn_floating_background_circle.xml
new file mode 100644
index 0000000..b6e39ba
--- /dev/null
+++ b/app/src/main/res/drawable/btn_floating_background_circle.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/btn_floating_background_circle_widget_disabled.xml b/app/src/main/res/drawable/btn_floating_background_circle_widget_disabled.xml
new file mode 100644
index 0000000..e8c116b
--- /dev/null
+++ b/app/src/main/res/drawable/btn_floating_background_circle_widget_disabled.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/btn_floating_background_pause.xml b/app/src/main/res/drawable/btn_floating_background_pause.xml
index b989be1..59f581f 100644
--- a/app/src/main/res/drawable/btn_floating_background_pause.xml
+++ b/app/src/main/res/drawable/btn_floating_background_pause.xml
@@ -2,16 +2,11 @@
-
-
-
-
-
-
-
+ android:width="@dimen/floating_btn_secondary_size"
+ android:drawable="@drawable/btn_floating_background_circle"/>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/btn_floating_background_resume.xml b/app/src/main/res/drawable/btn_floating_background_resume.xml
index 90da981..ee22dfb 100644
--- a/app/src/main/res/drawable/btn_floating_background_resume.xml
+++ b/app/src/main/res/drawable/btn_floating_background_resume.xml
@@ -2,16 +2,11 @@
-
-
-
-
-
-
-
+ android:width="@dimen/floating_btn_secondary_size"
+ android:drawable="@drawable/btn_floating_background_circle"/>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/btn_floating_background_start.xml b/app/src/main/res/drawable/btn_floating_background_start.xml
index c595e93..5126327 100644
--- a/app/src/main/res/drawable/btn_floating_background_start.xml
+++ b/app/src/main/res/drawable/btn_floating_background_start.xml
@@ -2,16 +2,11 @@
-
-
-
-
-
-
-
+ android:width="@dimen/floating_btn_size"
+ android:drawable="@drawable/btn_floating_background_circle"/>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/btn_floating_background_stop.xml b/app/src/main/res/drawable/btn_floating_background_stop.xml
index f4a3c9d..21ab600 100644
--- a/app/src/main/res/drawable/btn_floating_background_stop.xml
+++ b/app/src/main/res/drawable/btn_floating_background_stop.xml
@@ -2,16 +2,11 @@
-
-
-
-
-
-
-
+ android:width="@dimen/floating_btn_size"
+ android:drawable="@drawable/btn_floating_background_circle"/>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/btn_no_design.xml b/app/src/main/res/drawable/btn_no_design.xml
deleted file mode 100644
index 25342ce..0000000
--- a/app/src/main/res/drawable/btn_no_design.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/drawable/btn_screenshot.xml b/app/src/main/res/drawable/btn_screenshot.xml
new file mode 100644
index 0000000..3ca2cbf
--- /dev/null
+++ b/app/src/main/res/drawable/btn_screenshot.xml
@@ -0,0 +1,16 @@
+
+
+ -
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/btn_tool_bar_effect.xml b/app/src/main/res/drawable/btn_tool_bar_effect.xml
deleted file mode 100644
index 4a6e609..0000000
--- a/app/src/main/res/drawable/btn_tool_bar_effect.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
- -
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/drawable/frame_tablet_design.xml b/app/src/main/res/drawable/frame_tablet_design.xml
new file mode 100644
index 0000000..b6bbb28
--- /dev/null
+++ b/app/src/main/res/drawable/frame_tablet_design.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/grid_el_background.xml b/app/src/main/res/drawable/grid_el_background.xml
new file mode 100644
index 0000000..826d25e
--- /dev/null
+++ b/app/src/main/res/drawable/grid_el_background.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/grid_time_background.xml b/app/src/main/res/drawable/grid_time_background.xml
deleted file mode 100644
index 3d6a3b8..0000000
--- a/app/src/main/res/drawable/grid_time_background.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/drawable/icon_capture_pause.xml b/app/src/main/res/drawable/icon_capture_pause.xml
index 69e1183..e31e4f5 100644
--- a/app/src/main/res/drawable/icon_capture_pause.xml
+++ b/app/src/main/res/drawable/icon_capture_pause.xml
@@ -1,8 +1,8 @@
+ android:width="@dimen/floating_btn_icon_pause_resume">
+
+
+
diff --git a/app/src/main/res/drawable/icon_capture_resume.xml b/app/src/main/res/drawable/icon_capture_resume.xml
index c170e87..8ab92a8 100644
--- a/app/src/main/res/drawable/icon_capture_resume.xml
+++ b/app/src/main/res/drawable/icon_capture_resume.xml
@@ -1,9 +1,9 @@
-
+ android:width="@dimen/floating_btn_icon_pause_resume">
+
diff --git a/app/src/main/res/drawable/icon_capture_stop.xml b/app/src/main/res/drawable/icon_capture_stop.xml
index e83fce6..dac72a1 100644
--- a/app/src/main/res/drawable/icon_capture_stop.xml
+++ b/app/src/main/res/drawable/icon_capture_stop.xml
@@ -1,13 +1,14 @@
+
+ android:viewportHeight="24">
-
-
+ android:fillType="evenOdd"
+ android:pathData="M16.875,5.125L7.125,5.125C6.025,5.125 5.125,6.025 5.125,7.125L5.125,16.875C5.125,17.975 6.025,18.875 7.125,18.875L16.875,18.875C17.975,18.875 18.875,17.975 18.875,16.875L18.875,7.125C18.875,6.025 17.975,5.125 16.875,5.125"
+ android:strokeWidth="1"
+ android:strokeColor="#00000000" />
diff --git a/app/src/main/res/drawable/icon_kapture_extra.xml b/app/src/main/res/drawable/icon_kapture_extra.xml
index f504e15..b8476d2 100644
--- a/app/src/main/res/drawable/icon_kapture_extra.xml
+++ b/app/src/main/res/drawable/icon_kapture_extra.xml
@@ -5,7 +5,7 @@
android:viewportWidth="24"
android:viewportHeight="24">
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/icon_kapture_screenshot_delete.xml b/app/src/main/res/drawable/icon_kapture_screenshot_delete.xml
new file mode 100644
index 0000000..ed29753
--- /dev/null
+++ b/app/src/main/res/drawable/icon_kapture_screenshot_delete.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/icon_kapture_screenshot_share.xml b/app/src/main/res/drawable/icon_kapture_screenshot_share.xml
new file mode 100644
index 0000000..af29610
--- /dev/null
+++ b/app/src/main/res/drawable/icon_kapture_screenshot_share.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/icon_tool_bar_settings.xml b/app/src/main/res/drawable/icon_tool_bar_settings.xml
new file mode 100644
index 0000000..af89797
--- /dev/null
+++ b/app/src/main/res/drawable/icon_tool_bar_settings.xml
@@ -0,0 +1,13 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/kapture_item_divisor_horizontal_bottom.xml b/app/src/main/res/drawable/kapture_item_divisor_horizontal_bottom.xml
new file mode 100644
index 0000000..891ceb5
--- /dev/null
+++ b/app/src/main/res/drawable/kapture_item_divisor_horizontal_bottom.xml
@@ -0,0 +1,14 @@
+
+
+ -
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/list_item_divisor_horizontal_bottom.xml b/app/src/main/res/drawable/list_item_divisor_horizontal_bottom.xml
index 891ceb5..5a7e362 100644
--- a/app/src/main/res/drawable/list_item_divisor_horizontal_bottom.xml
+++ b/app/src/main/res/drawable/list_item_divisor_horizontal_bottom.xml
@@ -1,14 +1,16 @@
-
+ android:gravity="bottom"
+ android:left="@dimen/group_padding_sides"
+ android:right="@dimen/group_padding_sides">
-
-
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/menu_divisor.xml b/app/src/main/res/drawable/menu_divisor.xml
deleted file mode 100644
index 017bb74..0000000
--- a/app/src/main/res/drawable/menu_divisor.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/drawable/overlay_btn_stop.xml b/app/src/main/res/drawable/overlay_btn_stop.xml
index 7771dd7..602183d 100644
--- a/app/src/main/res/drawable/overlay_btn_stop.xml
+++ b/app/src/main/res/drawable/overlay_btn_stop.xml
@@ -1,6 +1,5 @@
-
-
@@ -12,7 +11,7 @@
\ No newline at end of file
diff --git a/app/src/main/res/drawable/overlay_menu_draw_icon_screenshot_draw.xml b/app/src/main/res/drawable/overlay_menu_draw_icon_screenshot_draw.xml
new file mode 100644
index 0000000..b4bb601
--- /dev/null
+++ b/app/src/main/res/drawable/overlay_menu_draw_icon_screenshot_draw.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/overlay_menu_draw_icon_size_color_background.xml b/app/src/main/res/drawable/overlay_menu_draw_icon_size_color_background.xml
index 4eda47e..1fbb538 100644
--- a/app/src/main/res/drawable/overlay_menu_draw_icon_size_color_background.xml
+++ b/app/src/main/res/drawable/overlay_menu_draw_icon_size_color_background.xml
@@ -1,6 +1,5 @@
-
\ No newline at end of file
diff --git a/app/src/main/res/drawable/progress_bar_design.xml b/app/src/main/res/drawable/progress_bar_design.xml
new file mode 100644
index 0000000..379b49d
--- /dev/null
+++ b/app/src/main/res/drawable/progress_bar_design.xml
@@ -0,0 +1,18 @@
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/widget_background.xml b/app/src/main/res/drawable/widget_background.xml
new file mode 100644
index 0000000..7be6c65
--- /dev/null
+++ b/app/src/main/res/drawable/widget_background.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-land/popup_picker_color.xml b/app/src/main/res/layout-land/popup_picker_color.xml
new file mode 100644
index 0000000..d704659
--- /dev/null
+++ b/app/src/main/res/layout-land/popup_picker_color.xml
@@ -0,0 +1,307 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-w600dp/activity_main.xml b/app/src/main/res/layout-w600dp/activity_main.xml
new file mode 100644
index 0000000..594c9b4
--- /dev/null
+++ b/app/src/main/res/layout-w600dp/activity_main.xml
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-w600dp/fragment_kaptures.xml b/app/src/main/res/layout-w600dp/fragment_kaptures.xml
new file mode 100644
index 0000000..b572095
--- /dev/null
+++ b/app/src/main/res/layout-w600dp/fragment_kaptures.xml
@@ -0,0 +1,344 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-w600dp/fragment_settings.xml b/app/src/main/res/layout-w600dp/fragment_settings.xml
new file mode 100644
index 0000000..96adab9
--- /dev/null
+++ b/app/src/main/res/layout-w600dp/fragment_settings.xml
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_about.xml b/app/src/main/res/layout/activity_about.xml
index 8765872..25884d2 100644
--- a/app/src/main/res/layout/activity_about.xml
+++ b/app/src/main/res/layout/activity_about.xml
@@ -1,186 +1,227 @@
-
-
-
-
-
-
-
-
-
+ android:fitsSystemWindows="true"
+ app:expanded="false"
+ android:background="@color/activity_background">
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+ android:orientation="vertical">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_credits.xml b/app/src/main/res/layout/activity_credits.xml
index c4510e4..020df90 100644
--- a/app/src/main/res/layout/activity_credits.xml
+++ b/app/src/main/res/layout/activity_credits.xml
@@ -18,6 +18,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/activity_background"
+ app:contentScrim="@color/activity_background"
app:layout_scrollFlags="scroll|snap|exitUntilCollapsed">
+ android:foreground="@drawable/btn_floating_effect"
+ android:contentDescription="@string/tooltip_go_back"
+ android:longClickable="true"/>
+ android:layout_width="@dimen/app_bar_container_height"
+ android:layout_height="match_parent">
@@ -40,7 +41,8 @@
android:foreground="@drawable/btn_viewer_effect"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintStart_toStartOf="parent"/>
+ app:layout_constraintStart_toStartOf="parent"
+ android:tooltipText="@string/tooltip_play_pause_file"/>
+ app:layout_constraintEnd_toEndOf="parent"
+ android:tooltipText="@string/tooltip_close"/>
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_viewer_video.xml b/app/src/main/res/layout/activity_viewer_video.xml
index 6d02ee0..e8422ca 100644
--- a/app/src/main/res/layout/activity_viewer_video.xml
+++ b/app/src/main/res/layout/activity_viewer_video.xml
@@ -8,7 +8,7 @@
android:background="@color/activity_background"
android:id="@+id/window">
-
-
+ android:layout_width="fill_parent"
+ android:layout_centerInParent="true"
+ android:layout_height="fill_parent"/>
+
+
+
+
+
+
+
+
+ android:foreground="@drawable/btn_viewer_effect"
+ android:tooltipText="@string/tooltip_rewind"/>
+ android:foreground="@drawable/btn_viewer_effect"
+ android:tooltipText="@string/tooltip_play_pause_file"/>
+ android:foreground="@drawable/btn_viewer_effect"
+ android:tooltipText="@string/tooltip_forward"/>
+ android:id="@+id/time"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="@dimen/video_option_margin"
+ android:text="00:00/00:00"
+ android:textColor="@color/viewer_option_time"
+ android:textSize="@dimen/video_option_time"
+ app:layout_constraintBottom_toTopOf="@+id/timeBar"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"/>
+ app:layout_constraintStart_toStartOf="parent"
+ android:tooltipText="tooltip_select_all"/>
-
-
-
+ app:layout_constraintEnd_toEndOf="parent">
-
+
+
+
+
+
+
+ android:foreground="@drawable/btn_floating_effect"
+ android:contentDescription="@string/tooltip_view_style"
+ android:longClickable="true"/>
+ android:foreground="@drawable/btn_floating_effect"
+ android:contentDescription="@string/tooltip_search"
+ android:longClickable="true"/>
+ android:foreground="@drawable/btn_floating_effect"
+ android:contentDescription="@string/tooltip_more_options"
+ android:longClickable="true"/>
+ android:layout_width="@dimen/app_bar_container_height"
+ android:layout_height="match_parent">
+
+
+
+
+
+ android:drawableLeft="@drawable/icon_capture_pause"
+ android:paddingLeft="@dimen/floating_btn_padding_secondary"
+ app:elevation="@dimen/floating_btn_elevation"
+ android:tooltipText="@string/tooltip_pause"/>
+ android:drawableLeft="@drawable/icon_capture_start"
+ android:paddingLeft="@dimen/floating_btn_padding"
+ app:elevation="@dimen/floating_btn_elevation"
+ android:tooltipText="@string/tooltip_start"/>
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml
index d880660..017f8d0 100644
--- a/app/src/main/res/layout/fragment_settings.xml
+++ b/app/src/main/res/layout/fragment_settings.xml
@@ -20,6 +20,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/activity_background"
+ app:contentScrim="@color/activity_background"
app:layout_scrollFlags="scroll|snap|exitUntilCollapsed">
+ android:foreground="@drawable/btn_floating_effect"
+ android:contentDescription="@string/tooltip_more_options"
+ android:longClickable="true"/>
+ android:layout_width="@dimen/app_bar_container_height"
+ android:layout_height="match_parent">
+ app:layout_constraintBottom_toBottomOf="parent"
+ android:tooltipText="@string/tooltip_play_file"/>
+ app:layout_constraintBottom_toBottomOf="parent"
+ android:tooltipText="@string/tooltip_share_file"/>
+ app:layout_constraintBottom_toBottomOf="parent"
+ android:tooltipText="@string/tooltip_delete_file"/>
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/layout_kapture_grid_big.xml b/app/src/main/res/layout/layout_kapture_grid_big.xml
index 36ae091..36fd2d7 100644
--- a/app/src/main/res/layout/layout_kapture_grid_big.xml
+++ b/app/src/main/res/layout/layout_kapture_grid_big.xml
@@ -59,7 +59,7 @@
android:lines="1"
android:textSize="@dimen/kapture_grid_sub_title"
android:textColor="@color/kapture_grid_time"
- android:background="@drawable/grid_time_background"
+ android:background="@drawable/grid_el_background"
android:paddingStart="@dimen/kapture_grid_time_padding_sides"
android:paddingEnd="@dimen/kapture_grid_time_padding_sides"
android:visibility="gone"
@@ -69,8 +69,34 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/layout_kapture_grid_small.xml b/app/src/main/res/layout/layout_kapture_grid_small.xml
index 018eeeb..973f5a7 100644
--- a/app/src/main/res/layout/layout_kapture_grid_small.xml
+++ b/app/src/main/res/layout/layout_kapture_grid_small.xml
@@ -55,10 +55,36 @@
android:lines="1"
android:textSize="@dimen/kapture_grid_sub_title"
android:textColor="@color/kapture_grid_time"
- android:background="@drawable/grid_time_background"
+ android:background="@drawable/grid_el_background"
android:paddingStart="@dimen/kapture_grid_time_padding_sides"
android:paddingEnd="@dimen/kapture_grid_time_padding_sides"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="@id/thumbnail"
app:layout_constraintBottom_toBottomOf="@id/thumbnail"/>
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/layout_kapture_list.xml b/app/src/main/res/layout/layout_kapture_list.xml
index b7ae1b5..1f3c261 100644
--- a/app/src/main/res/layout/layout_kapture_list.xml
+++ b/app/src/main/res/layout/layout_kapture_list.xml
@@ -29,9 +29,11 @@
android:src="@drawable/checkbox_off"
android:layout_marginBottom="@dimen/kapture_list_padding_top_bottom"
android:visibility="gone"
+ android:paddingEnd="5dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintStart_toStartOf="parent"/>
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintEnd_toStartOf="@id/thumbnail"/>
-
+ app:layout_constraintEnd_toEndOf="parent">
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/layout_list_button.xml b/app/src/main/res/layout/layout_list_button.xml
index a3bf8cd..6956df1 100644
--- a/app/src/main/res/layout/layout_list_button.xml
+++ b/app/src/main/res/layout/layout_list_button.xml
@@ -8,6 +8,8 @@
android:minHeight="@dimen/list_item_min_height"
android:paddingTop="@dimen/list_item_padding_top_bottom"
android:paddingBottom="@dimen/list_item_padding_top_bottom"
+ android:paddingStart="@dimen/group_padding_sides"
+ android:paddingEnd="@dimen/group_padding_sides"
android:foreground="@drawable/list_item_effect"
android:clickable="true"
android:id="@+id/listContainer">
diff --git a/app/src/main/res/layout/layout_list_button_color.xml b/app/src/main/res/layout/layout_list_button_color.xml
index 69b3f39..011df5b 100644
--- a/app/src/main/res/layout/layout_list_button_color.xml
+++ b/app/src/main/res/layout/layout_list_button_color.xml
@@ -8,6 +8,8 @@
android:minHeight="@dimen/list_item_min_height"
android:paddingTop="@dimen/list_item_padding_top_bottom"
android:paddingBottom="@dimen/list_item_padding_top_bottom"
+ android:paddingStart="@dimen/group_padding_sides"
+ android:paddingEnd="@dimen/group_padding_sides"
android:foreground="@drawable/list_item_effect"
android:clickable="true"
android:id="@+id/listContainer">
diff --git a/app/src/main/res/layout/layout_list_button_sub_text.xml b/app/src/main/res/layout/layout_list_button_sub_text.xml
index d74d4df..207fdb6 100644
--- a/app/src/main/res/layout/layout_list_button_sub_text.xml
+++ b/app/src/main/res/layout/layout_list_button_sub_text.xml
@@ -8,6 +8,8 @@
android:minHeight="@dimen/list_item_min_height"
android:paddingTop="@dimen/list_item_padding_top_bottom"
android:paddingBottom="@dimen/list_item_padding_top_bottom"
+ android:paddingStart="@dimen/group_padding_sides"
+ android:paddingEnd="@dimen/group_padding_sides"
android:foreground="@drawable/list_item_effect"
android:clickable="true"
android:id="@+id/listContainer">
diff --git a/app/src/main/res/layout/layout_list_button_sub_text_switch.xml b/app/src/main/res/layout/layout_list_button_sub_text_switch.xml
index 40a39e4..d122dba 100644
--- a/app/src/main/res/layout/layout_list_button_sub_text_switch.xml
+++ b/app/src/main/res/layout/layout_list_button_sub_text_switch.xml
@@ -5,6 +5,8 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:paddingStart="@dimen/group_padding_sides"
+ android:paddingEnd="@dimen/group_padding_sides"
android:minHeight="@dimen/list_item_min_height"
android:id="@+id/listContainer">
diff --git a/app/src/main/res/layout/layout_list_camera_size.xml b/app/src/main/res/layout/layout_list_camera_size.xml
index 00019a7..7b18370 100644
--- a/app/src/main/res/layout/layout_list_camera_size.xml
+++ b/app/src/main/res/layout/layout_list_camera_size.xml
@@ -7,7 +7,9 @@
android:layout_height="wrap_content"
android:minHeight="@dimen/list_item_min_height"
android:paddingTop="@dimen/list_item_padding_top_bottom"
- android:paddingBottom="@dimen/list_item_padding_top_bottom">
+ android:paddingBottom="@dimen/list_item_padding_top_bottom"
+ android:paddingStart="@dimen/group_padding_sides"
+ android:paddingEnd="@dimen/group_padding_sides">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/layout_list_picker.xml b/app/src/main/res/layout/layout_list_picker.xml
index d74d4df..207fdb6 100644
--- a/app/src/main/res/layout/layout_list_picker.xml
+++ b/app/src/main/res/layout/layout_list_picker.xml
@@ -8,6 +8,8 @@
android:minHeight="@dimen/list_item_min_height"
android:paddingTop="@dimen/list_item_padding_top_bottom"
android:paddingBottom="@dimen/list_item_padding_top_bottom"
+ android:paddingStart="@dimen/group_padding_sides"
+ android:paddingEnd="@dimen/group_padding_sides"
android:foreground="@drawable/list_item_effect"
android:clickable="true"
android:id="@+id/listContainer">
diff --git a/app/src/main/res/layout/layout_list_simple_text.xml b/app/src/main/res/layout/layout_list_simple_text.xml
index 90c5403..1c407f3 100644
--- a/app/src/main/res/layout/layout_list_simple_text.xml
+++ b/app/src/main/res/layout/layout_list_simple_text.xml
@@ -6,7 +6,10 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/list_item_padding_top_bottom"
- android:paddingBottom="@dimen/list_item_padding_top_bottom">
+ android:paddingBottom="@dimen/list_item_padding_top_bottom"
+ android:paddingStart="@dimen/group_padding_sides"
+ android:paddingEnd="@dimen/group_padding_sides"
+ android:id="@+id/container">
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/layout_list_storage_item.xml b/app/src/main/res/layout/layout_list_storage_item.xml
new file mode 100644
index 0000000..b10eadb
--- /dev/null
+++ b/app/src/main/res/layout/layout_list_storage_item.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/layout_list_switch.xml b/app/src/main/res/layout/layout_list_switch.xml
index ebefe75..0788037 100644
--- a/app/src/main/res/layout/layout_list_switch.xml
+++ b/app/src/main/res/layout/layout_list_switch.xml
@@ -8,6 +8,8 @@
android:minHeight="@dimen/list_item_min_height"
android:paddingTop="@dimen/list_item_padding_top_bottom"
android:paddingBottom="@dimen/list_item_padding_top_bottom"
+ android:paddingStart="@dimen/group_padding_sides"
+ android:paddingEnd="@dimen/group_padding_sides"
android:foreground="@drawable/list_item_effect"
android:clickable="true"
android:id="@+id/switchContainer">
diff --git a/app/src/main/res/layout/layout_screenshot_item.xml b/app/src/main/res/layout/layout_screenshot_item.xml
new file mode 100644
index 0000000..4cd8a1b
--- /dev/null
+++ b/app/src/main/res/layout/layout_screenshot_item.xml
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/overlay_recording_draw.xml b/app/src/main/res/layout/overlay_recording_draw.xml
index ec0fca6..06e782e 100644
--- a/app/src/main/res/layout/overlay_recording_draw.xml
+++ b/app/src/main/res/layout/overlay_recording_draw.xml
@@ -10,6 +10,11 @@
android:layout_width="match_parent"
android:layout_height="match_parent"/>
+
+
+ android:clickable="true"
+ android:tooltipText="@string/tooltip_pen_settings">
+
+
+
+
+
+
+ android:foreground="?android:attr/selectableItemBackground"
+ android:contentDescription="@string/tooltip_clear"
+ android:longClickable="true"/>
+ android:foreground="?android:attr/selectableItemBackground"
+ android:contentDescription="@string/tooltip_undo"
+ android:longClickable="true"/>
+ android:foreground="?android:attr/selectableItemBackground"
+ android:contentDescription="@string/tooltip_redo"
+ android:longClickable="true"/>
+ android:layout_gravity="center"
+ android:contentDescription="@string/tooltip_close"
+ android:longClickable="true"/>
+ android:layout_margin="@dimen/overlay_menu_space"
+ android:contentDescription="@string/tooltip_previous_color"
+ android:longClickable="true"/>
+ android:layout_margin="@dimen/overlay_menu_space"
+ android:contentDescription="@string/tooltip_previous_color"
+ android:longClickable="true"/>
+ android:layout_margin="@dimen/overlay_menu_space"
+ android:contentDescription="@string/tooltip_previous_color"
+ android:longClickable="true"/>
+ android:layout_margin="@dimen/overlay_menu_space"
+ android:contentDescription="@string/tooltip_previous_color"
+ android:longClickable="true"/>
+ android:layout_margin="@dimen/overlay_menu_space"
+ android:contentDescription="@string/tooltip_previous_color"
+ android:longClickable="true"/>
+ android:layout_margin="@dimen/overlay_menu_space"
+ android:contentDescription="@string/tooltip_picker"
+ android:longClickable="true"/>
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/overlay_recording_menu_horizontal.xml b/app/src/main/res/layout/overlay_recording_menu_horizontal.xml
index 68a214d..af3d349 100644
--- a/app/src/main/res/layout/overlay_recording_menu_horizontal.xml
+++ b/app/src/main/res/layout/overlay_recording_menu_horizontal.xml
@@ -25,7 +25,9 @@
android:id="@+id/btnStop"
android:layout_width="@dimen/overlay_menu_height"
android:layout_height="@dimen/overlay_menu_height"
- android:background="@drawable/overlay_btn_stop"/>
+ android:background="@drawable/overlay_btn_stop"
+ android:contentDescription="@string/tooltip_start"
+ android:longClickable="true"/>
+ android:foreground="?android:attr/selectableItemBackground"
+ android:contentDescription="@string/tooltip_pause"
+ android:longClickable="true"/>
+ android:layout_gravity="center"
+ android:contentDescription="@string/tooltip_camera"
+ android:longClickable="true"/>
+ android:foreground="?android:attr/selectableItemBackground"
+ android:contentDescription="@string/tooltip_screenshot_screen"
+ android:longClickable="true"/>
+ android:layout_gravity="center"
+ android:contentDescription="@string/tooltip_draw"
+ android:longClickable="true"/>
+ android:layout_gravity="center"
+ android:contentDescription="@string/tooltip_minimize"
+ android:longClickable="true"/>
+ android:layout_gravity="center"
+ android:contentDescription="@string/tooltip_close"
+ android:longClickable="true"/>
\ No newline at end of file
diff --git a/app/src/main/res/layout/overlay_recording_menu_vertical.xml b/app/src/main/res/layout/overlay_recording_menu_vertical.xml
index 803b0c9..a95eb6e 100644
--- a/app/src/main/res/layout/overlay_recording_menu_vertical.xml
+++ b/app/src/main/res/layout/overlay_recording_menu_vertical.xml
@@ -26,7 +26,9 @@
android:id="@+id/btnStop"
android:layout_width="@dimen/overlay_menu_height"
android:layout_height="@dimen/overlay_menu_height"
- android:background="@drawable/overlay_btn_stop"/>
+ android:background="@drawable/overlay_btn_stop"
+ android:contentDescription="@string/tooltip_start"
+ android:longClickable="true"/>
+ android:foreground="?android:attr/selectableItemBackground"
+ android:contentDescription="@string/tooltip_pause"
+ android:longClickable="true"/>
+ android:scaleType="fitCenter"
+ android:contentDescription="@string/tooltip_camera"
+ android:longClickable="true"/>
+ android:foreground="?android:attr/selectableItemBackground"
+ android:contentDescription="@string/tooltip_screenshot_screen"
+ android:longClickable="true"/>
+ android:contentDescription="@string/tooltip_draw"
+ android:longClickable="true"/>
+ android:layout_gravity="center"
+ android:contentDescription="@string/tooltip_minimize"
+ android:longClickable="true"/>
+ android:layout_gravity="center"
+ android:contentDescription="@string/tooltip_close"
+ android:longClickable="true"/>
\ No newline at end of file
diff --git a/app/src/main/res/layout/popup_dialog.xml b/app/src/main/res/layout/popup_dialog.xml
index c67fc9b..8382828 100644
--- a/app/src/main/res/layout/popup_dialog.xml
+++ b/app/src/main/res/layout/popup_dialog.xml
@@ -16,6 +16,7 @@
android:layout_margin="@dimen/popup_margin"
android:background="@drawable/popup_background"
android:clickable="true"
+ app:layout_constraintWidth_percent="@dimen/popup_width_percentage"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent">
diff --git a/app/src/main/res/layout/popup_extra.xml b/app/src/main/res/layout/popup_extra.xml
index 7f7d27e..68a846c 100644
--- a/app/src/main/res/layout/popup_extra.xml
+++ b/app/src/main/res/layout/popup_extra.xml
@@ -16,6 +16,7 @@
android:layout_margin="@dimen/popup_margin"
android:background="@drawable/popup_background"
android:clickable="true"
+ app:layout_constraintWidth_percent="@dimen/popup_width_percentage"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent">
diff --git a/app/src/main/res/layout/popup_input.xml b/app/src/main/res/layout/popup_input.xml
index 415a7f9..137dbd4 100644
--- a/app/src/main/res/layout/popup_input.xml
+++ b/app/src/main/res/layout/popup_input.xml
@@ -16,6 +16,7 @@
android:layout_margin="@dimen/popup_margin"
android:background="@drawable/popup_background"
android:clickable="true"
+ app:layout_constraintWidth_percent="@dimen/popup_width_percentage"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent">
diff --git a/app/src/main/res/layout/popup_picker.xml b/app/src/main/res/layout/popup_picker.xml
index 85c888b..d9d0a8d 100644
--- a/app/src/main/res/layout/popup_picker.xml
+++ b/app/src/main/res/layout/popup_picker.xml
@@ -16,6 +16,7 @@
android:layout_margin="@dimen/popup_margin"
android:background="@drawable/popup_background"
android:clickable="true"
+ app:layout_constraintWidth_percent="@dimen/popup_width_percentage"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent">
diff --git a/app/src/main/res/layout/popup_picker_color.xml b/app/src/main/res/layout/popup_picker_color.xml
index 3ebc5d2..fc164de 100644
--- a/app/src/main/res/layout/popup_picker_color.xml
+++ b/app/src/main/res/layout/popup_picker_color.xml
@@ -16,220 +16,233 @@
android:layout_margin="@dimen/popup_margin"
android:background="@drawable/popup_background"
android:clickable="true"
+ app:layout_constraintWidth_percent="@dimen/popup_color_width_percentage"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent">
-
-
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="@dimen/color_picker_space">
-
+
+
-
+ android:layout_height="wrap_content">
-
+
+ android:id="@+id/transparency"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/color_picker_hue_height"
+ android:layout_marginBottom="@dimen/color_picker_space"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintTop_toBottomOf="@id/hue"
+ app:layout_constraintBottom_toTopOf="@id/info"/>
-
+ android:orientation="horizontal"
+ android:layout_marginBottom="@dimen/color_picker_space"
+ android:weightSum="7"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintTop_toBottomOf="@id/transparency"
+ app:layout_constraintBottom_toBottomOf="parent">
-
+
-
-
+ android:layout_weight="2">
-
+
-
+
+
-
-
+ android:layout_weight="1">
-
+
-
+
+
-
-
+ android:layout_weight="1">
-
+
-
+
+
-
-
+ android:layout_weight="1">
-
+
-
+
+
-
-
-
-
+ android:layout_weight="1"
+ android:id="@+id/alphaLabelContainer">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/popup_screenshot.xml b/app/src/main/res/layout/popup_screenshot.xml
new file mode 100644
index 0000000..8b479c2
--- /dev/null
+++ b/app/src/main/res/layout/popup_screenshot.xml
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/popup_sort.xml b/app/src/main/res/layout/popup_sort.xml
index 145d1c3..98ba7cd 100644
--- a/app/src/main/res/layout/popup_sort.xml
+++ b/app/src/main/res/layout/popup_sort.xml
@@ -16,6 +16,7 @@
android:layout_margin="@dimen/popup_margin"
android:background="@drawable/popup_background"
android:clickable="true"
+ app:layout_constraintWidth_percent="@dimen/popup_width_percentage"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent">
diff --git a/app/src/main/res/layout/popup_time.xml b/app/src/main/res/layout/popup_time.xml
index a5a6ffd..2c6c4e5 100644
--- a/app/src/main/res/layout/popup_time.xml
+++ b/app/src/main/res/layout/popup_time.xml
@@ -16,6 +16,7 @@
android:layout_margin="@dimen/popup_margin"
android:background="@drawable/popup_background"
android:clickable="true"
+ app:layout_constraintWidth_percent="@dimen/popup_width_percentage"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent">
@@ -54,7 +55,8 @@
android:id="@+id/hour"
android:layout_width="0dp"
android:layout_height="match_parent"
- android:layout_weight="1"/>
+ android:layout_weight="1"
+ android:tooltipText="@string/tooltip_hour"/>
+ android:layout_weight="1"
+ android:tooltipText="@string/tooltip_minute"/>
+ android:layout_weight="1"
+ android:tooltipText="@string/tooltip_second"/>
diff --git a/app/src/main/res/layout/widget_basic.xml b/app/src/main/res/layout/widget_basic.xml
new file mode 100644
index 0000000..5b75cfa
--- /dev/null
+++ b/app/src/main/res/layout/widget_basic.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/widget_full_horizontal.xml b/app/src/main/res/layout/widget_full_horizontal.xml
new file mode 100644
index 0000000..0ac128c
--- /dev/null
+++ b/app/src/main/res/layout/widget_full_horizontal.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/widget_full_vertical.xml b/app/src/main/res/layout/widget_full_vertical.xml
new file mode 100644
index 0000000..e4dc16f
--- /dev/null
+++ b/app/src/main/res/layout/widget_full_vertical.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/widget_wifi_share.xml b/app/src/main/res/layout/widget_wifi_share.xml
new file mode 100644
index 0000000..87c6a4b
--- /dev/null
+++ b/app/src/main/res/layout/widget_wifi_share.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/menu/capture_bottom_bar_more.xml b/app/src/main/res/menu/capture_bottom_bar_more.xml
index 23f2f5b..d4e8be3 100644
--- a/app/src/main/res/menu/capture_bottom_bar_more.xml
+++ b/app/src/main/res/menu/capture_bottom_bar_more.xml
@@ -23,4 +23,14 @@
android:id="@+id/menuDeleteExtra"
android:title="@string/bottom_bar_more_delete_extra" />
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/menu/capture_more.xml b/app/src/main/res/menu/capture_more.xml
index 78d967b..a327df9 100644
--- a/app/src/main/res/menu/capture_more.xml
+++ b/app/src/main/res/menu/capture_more.xml
@@ -19,10 +19,6 @@
-
-
diff --git a/app/src/main/res/menu/settings_more.xml b/app/src/main/res/menu/settings_more.xml
index 6f9eb7f..5e8f7c7 100644
--- a/app/src/main/res/menu/settings_more.xml
+++ b/app/src/main/res/menu/settings_more.xml
@@ -7,10 +7,6 @@
-
-
diff --git a/app/src/main/res/menu/view_video_more.xml b/app/src/main/res/menu/view_video_more.xml
new file mode 100644
index 0000000..c34d4d8
--- /dev/null
+++ b/app/src/main/res/menu/view_video_more.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-land/dimens.xml b/app/src/main/res/values-land/dimens.xml
new file mode 100644
index 0000000..3f41874
--- /dev/null
+++ b/app/src/main/res/values-land/dimens.xml
@@ -0,0 +1,13 @@
+
+
+ 0.6
+
+ 0.8
+ 0.8
+
+ @dimen/tool_bar_height
+
+ 0dp
+
+ 0.5
+
\ No newline at end of file
diff --git a/app/src/main/res/values-land/integers.xml b/app/src/main/res/values-land/integers.xml
new file mode 100644
index 0000000..4fc6926
--- /dev/null
+++ b/app/src/main/res/values-land/integers.xml
@@ -0,0 +1,4 @@
+
+
+ 90
+
\ No newline at end of file
diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml
index 40f9cdb..96e7929 100644
--- a/app/src/main/res/values-night/colors.xml
+++ b/app/src/main/res/values-night/colors.xml
@@ -3,7 +3,7 @@
#EB3B2E
#7A1F18
- #B4000000
+ #C9000000
#000000
@color/background_transparent
@@ -20,7 +20,6 @@
@color/c1
@color/c0
- #C1EDEDED
@color/main
@color/c0
@@ -36,10 +35,8 @@
@color/c2
@color/c0
@color/c1
- #151515
#676767
-
@color/main
@color/background_transparent
@@ -63,10 +60,17 @@
@color/c6
@color/default_seekbar_thumb
+ @color/default_seekbar_progress
+ @color/c6
+ @color/default_seekbar_thumb
+
@color/default_seekbar_progress
@color/c6
@color/default_seekbar_thumb
+ @color/main
+ @color/c6
+
@color/activity_background
@color/c0
@color/c1
@@ -74,6 +78,7 @@
@color/c1
@color/main
+ @color/c0
#191919
@@ -130,9 +135,9 @@
@color/c0
@color/c1
@color/c3
- @color/c1
+ @color/c1
@color/kapture_title
- #703B3B40
+ #923B3B40
@color/c5
@color/c0
@@ -152,11 +157,23 @@
@color/main
@color/btn_main_color
@color/main
- @color/countdown_border
@color/main
@color/popup_text
@color/c1
@color/c0
+
+ @color/activity_background
+ @color/c0
+
+ @color/main_darker
+ @color/main
+ @color/c1
+ @color/c2
+
+ #181818
+ @color/c1
+ @color/c3
+ @color/c2
\ No newline at end of file
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index f887a3b..8e3f610 100644
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -66,8 +66,8 @@
Nenhum visualizador externo encontrado!
Arquivo não encontrado!
Nenhum extra encontrado!
+ Nenhum screenshot encontrado!
Algo deu errado!
- O acesso é necessário!
Não foi possivel procurar por novas versões. Tente manualmente!
Não foi possivel baixar o arquivo. Tente manualmente!
Conecte-se a um WiFi primeiro!
@@ -86,6 +86,8 @@
screenshot
Extra
+ Screenshot
+ Convertendo...
Áudio
Áudio: internal
@@ -97,6 +99,7 @@
Você deseja apagar o seguinte arquivo:
Você deseja apagar o(s) arquivo(s) selecionado(s)?
Você deseja apagar os extras do(s) arquivo(s) selecionado(s)?
+ Você deseja apagar os screenshots do(s) arquivo(s) selecionado(s)?
Você deseja remover o(s) arquivo(s) selecionado(s) do app? Nenhum arquivo será apagado do seu celular.
@@ -112,6 +115,7 @@
Kapturas
Configurações
+ Créditos
Pasta
@@ -121,14 +125,13 @@
Vídeo
Resolução
- Resolução do dispositivo
+ Automático
Qualidade
FPS
Formato de saída
- O formato do arquivo de vídeo de saída.
MP4
Orientação
@@ -158,6 +161,7 @@
Por limite de tempo
Por tela bloqueada
Por agitação
+ Por nível de bateria
Interface flutuante
@@ -222,6 +226,18 @@
Mostrar os botões de desfazer/refazer
Mostrar o botão de limpar
+ Imagem
+ Mostrar imagem
+ Localização da imagem
+ Tamanho padrão
+ Não há imagem
+
+ Mostrar o botão de screenshot
+ Tira um screenshot da tela, incluindo o desenho.
+
+ Mostrar o botão de screenshot do desenho
+ Tira um screenshot apenas do desenho.
+
Texto
Mostrar texto
Texto
@@ -257,12 +273,12 @@
Inclui o audio do microfone apenas. Somenge gerado se estiver capturando o microfone.
Formato de saída
- O formato de saída dos arquivo de áudio.
MP3
App
Interface
+ Armazenamento
Idioma
Tema
@@ -277,6 +293,11 @@
Escuro
Claro
+ Token
+ Limpar token
+ Reciclar token
+ O app irá tentar reciclar o token par que você não tenha que dar permissão toda vez. Esta opção pode causar erros!
+
Cancelar
Ok
Fechar
@@ -293,11 +314,10 @@
Armazenamento interno
Atualizar
- Selecionar todos
+ Selecionar tudo
Ordenar
Compartilhar no WiFi
- Limpar token de captura
Abrir acessibilidade
Mostrar comando
Sobre
@@ -306,6 +326,10 @@
@string/popup_btn_confirm
Restaurar todas as configurações para os valores iniciais?
+ Tornar vídeo seekable
+ Abrir externamente
+ @string/bottom_bar_share
+
adb shell pm grant dev.dect.kapture android.permission.WRITE_SECURE_SETTINGS
Kapture foi feito por DS.
@@ -320,14 +344,12 @@
Atualizar
Baixe o \".apk\" mais recente e instale-o para atualizar o app.
- Créditos
-
Este app foi feito por Douglas Silva apenas.
\n\nOs recursos utilizados estão listados abaixo. As licenças podem ser acessada no final da página.
\n\n\u2022 Interface (UI) inpirada na OneUI da Samsung, documentação disponível em https://design.samsung.com/global/contents/one-ui/download/oneui_design_guide_eng.pdf .
\n\n\u2022 Alguns icones são do Google Fonts , disponível em https://fonts.google.com/icons , sob a Licença Apache versão 2.0.
\n\n\u2022 Alguns icones são do OneUIProject , disponível em https://github.com/OneUIProject/oneui-icons , sob a Licença MIT.
- \n\n\u2022 \"FFmpegKit\" de arthenica , disponível, junto com os guias de instalação e documentações, em https://arthenica.github.io/ffmpeg-kit/ , sob a licença LGPL v3.0.
+ \n\n\u2022 \"FFmpegKit\" de arthenica , disponível, junto com os guias de instalação e documentações, em https://arthenica.github.io/ffmpeg-kit/ , sob a licença GPL v3.0.
\n\n\u2022 \"lottie-android\" de LottieFiles , disponível em https://github.com/LottieFiles/lottie-android , sob a Licença Apache versão 2.0.
\n\n\u2022 \"Free Loader Animation\", animação, de Turlo , disponível em https://lottiefiles.com/free-animation/loader-qJ1iQwatfl , sob a Licença Lottie Simples.
\n\n\u2022 \"NanoHttpd\" de Paul S. Hawke, 2001,2005-2013 de Jarno Elonen, 2010 de Konstantinos Togias , disponível em https://github.com/NanoHttpd/nanohttpd , sob a Licença BSD-3-Clause.
@@ -345,7 +367,7 @@
" Licença MIT"
Licença Apache Versão 2.0
- LGPL v3.0
+ GPL v3.0
Licença Lottie Simples
Licença BSD-3-Clause
Licença Open Font
@@ -364,6 +386,8 @@
Remover
Mostrar extras
Apagar extras
+ Mostrar screenshots
+ Apagar screenshots
Abrir com
Pesquisar
@@ -378,7 +402,6 @@
Tamanho
Compartilhando
- Unknown
Pular contagem
@@ -391,4 +414,67 @@
Fontes (.ttf) adicionadas à pasta selecionada irão aparecer aqui quando o aplicativo for reiniciado.
Para evitar erros é recomendado reiniciar o application!
+
+ Iniciar
+ Parar
+ Pausar
+ Resumir
+
+ Uso do armazenamento
+ Outros apps
+ Arquivos do Kapture
+ Cache do Kapture
+ Disponível
+
+ Kapturas removidas pelo app ou removidas externamente, e os seus arquivos correspondentes, não são incluidos na categoria \"Arquivos do Kapture\".
+
+ Limpar cache
+ Kapturas, arquivos extras e screenshots não serão removidos.
+
+ Voltar
+ App info
+ Fechar
+ Avançar
+ Retroceder
+ @string/bottom_bar_more
+ Pesquisar
+ Estilo
+ Fechar pesquisa
+ Pesquisa por voz
+ @string/floating_btn_start
+ @string/floating_btn_stop
+ @string/floating_btn_pause
+ @string/floating_btn_resume
+ @string/menu_capture_select_all
+ @string/title_settings
+ Reproduzir/Parar
+ Reproduzir
+ @string/bottom_bar_share
+ @string/bottom_bar_delete
+ @string/bottom_bar_more_show_screenshot
+ @string/bottom_bar_more_show_extra
+ Tamanho/Cor
+ Screenshot da tela
+ Screenshot do desenho
+ Limpar
+ Desfazer
+ Refazer
+ Cor anterior
+ Seletor de cor
+ Câmera
+ Desenhar
+ Minimizar
+ Hora
+ Minuto
+ Segundo
+
+ Básico
+ Inicie ou pare uma captura
+
+ Completo
+ Inicie, pare, pause ou resuma uma captura
+
+ @string/bottom_bar_wifi_share
+ Atalho para compartilhar todas as kapturas por wifi
+ Compartilhar\nno WiFi
\ No newline at end of file
diff --git a/app/src/main/res/values-w600dp-land/dimens.xml b/app/src/main/res/values-w600dp-land/dimens.xml
new file mode 100644
index 0000000..79f9bc2
--- /dev/null
+++ b/app/src/main/res/values-w600dp-land/dimens.xml
@@ -0,0 +1,16 @@
+
+
+ 0.375
+
+ 450dp
+
+ @dimen/tool_bar_height
+
+ 0dp
+
+ 0.35
+
+ @dimen/wrap_content
+
+ 35dp
+
\ No newline at end of file
diff --git a/app/src/main/res/values-w600dp/booleans.xml b/app/src/main/res/values-w600dp/booleans.xml
new file mode 100644
index 0000000..5fc3a0d
--- /dev/null
+++ b/app/src/main/res/values-w600dp/booleans.xml
@@ -0,0 +1,4 @@
+
+
+ true
+
\ No newline at end of file
diff --git a/app/src/main/res/values-w600dp/dimens.xml b/app/src/main/res/values-w600dp/dimens.xml
new file mode 100644
index 0000000..5237dd1
--- /dev/null
+++ b/app/src/main/res/values-w600dp/dimens.xml
@@ -0,0 +1,13 @@
+
+
+ 0.6
+
+ 0.8
+ 0.8
+
+ 180dp
+
+ 20dp
+
+ 0.5
+
\ No newline at end of file
diff --git a/app/src/main/res/values/booleans.xml b/app/src/main/res/values/booleans.xml
new file mode 100644
index 0000000..84d7d2f
--- /dev/null
+++ b/app/src/main/res/values/booleans.xml
@@ -0,0 +1,4 @@
+
+
+ false
+
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index d59b562..c41cefc 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -3,7 +3,7 @@
#EB3B2E
#7A1F18
- #A3000000
+ #B5000000
#F6F6F6
@color/background_transparent
@@ -20,7 +20,6 @@
@color/c2
@color/c0
- #C1EDEDED
@color/main
@color/c3
@@ -36,7 +35,6 @@
@color/c2
#2B2B2B
#5E5E5E
- #F6F6F6
#B4B4B4
@color/main
@@ -62,10 +60,17 @@
@color/c6
@color/default_seekbar_thumb
+ @color/default_seekbar_progress
+ @color/c6
+ @color/default_seekbar_thumb
+
@color/default_seekbar_progress
@color/c6
@color/default_seekbar_thumb
+ @color/main
+ @color/c6
+
@color/activity_background
@color/c0
@color/c1
@@ -73,6 +78,7 @@
@color/c1
@color/main
+ @color/c3
#FFFFFF
@@ -129,9 +135,9 @@
@color/c0
@color/c1
@color/c3
- @color/c1
+ @color/c3
@color/c3
- #703B3B40
+ #883B3B40
@color/c5
@color/c0
@@ -151,7 +157,6 @@
@color/main
@color/btn_main_color
@color/main
- @color/countdown_border
@color/main
@color/popup_text
@@ -159,7 +164,16 @@
@color/c2
@color/c0
+ @color/activity_background
+ @color/c0
+ @color/main_darker
+ @color/main
+ @color/c3
+ @color/c6
-
+ #E2E2E2
+ @color/c2
+ @color/c6
+ #5E5E5E
\ No newline at end of file
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index 7c8117e..fcd0985 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -1,5 +1,8 @@
-
+
+ - -1
+ - -2
+
17sp
15sp
13sp
@@ -10,10 +13,8 @@
19sp
@dimen/default_font_secondary
@dimen/default_font
- @dimen/default_font_secondary
@dimen/default_font
@dimen/default_font_secondary_list
- 16sp
14sp
40dp
@@ -60,40 +61,50 @@
60dp
30dp
+ @dimen/match_parent
+ 0dp
+
4dp
8dp
@dimen/default_font_button
2dp
@dimen/default_font_tertiary
+ 35dp
+ 28dp
+
75dp
55dp
12dp
500dp
- 25dp
+ 15dp
2dp
- 35dp
- 75dp
- 28dp
+
+ 20dp
+ 13.5dp
+ @dimen/default_font
+ @dimen/default_font_secondary
300dp
@dimen/default_font_extended_title
@dimen/default_font_extended_subtitle
5dp
+ @dimen/match_parent
+
@dimen/default_font_collapsed_title
@dimen/default_font_sub_title
10dp
8dp
- @dimen/default_space_sides
70dp
15dp
24dp
12dp
- 500dp
9dp
+ @dimen/match_parent
+
1px
26dp
@@ -118,6 +129,7 @@
2dp
2dp
+ 1
10dp
22dp
26dp
@@ -125,8 +137,12 @@
33dp
1dp
@dimen/default_font
+ @dimen/default_font_secondary
10dp
+ 1
+ 1
+
10dp
3dp
@@ -137,7 +153,7 @@
26dp
4dp
- 40dp
+ 65dp
12dp
@dimen/default_font
@@ -150,8 +166,8 @@
@dimen/default_font
@dimen/default_font_secondary_list
30dp
- 40dp
- 25dp
+ 40dp
+ 25dp
200dp
280dp
@@ -160,7 +176,7 @@
@dimen/default_font_secondary_list
25dp
5dp
- @dimen/default_btn_radius
+ @dimen/default_btn_radius
@dimen/default_font_list_title
@@ -181,20 +197,21 @@
10dp
@dimen/default_seekbar_height
- 10dp
+ 10dp
29dp
15dp
@dimen/default_font_list_title
15dp
+ 2dp
+
2dp
@dimen/default_font_secondary
90dp
@dimen/default_font_title
- @dimen/default_font
28dp
1dp
@@ -208,6 +225,11 @@
25dp
+ 15dp
+ 7dp
+ 8dp
+ 15dp
+
15dp
17dp
@@ -216,4 +238,15 @@
@dimen/default_font_tertiary
@dimen/default_font_secondary
+ 26dp
+ 1dp
+ 4dp
+ 400dp
+ @dimen/match_parent
+ 10dp
+
+ 4dp
+ 500dp
+
+ 26dp
\ No newline at end of file
diff --git a/app/src/main/res/values/integers.xml b/app/src/main/res/values/integers.xml
index 190d696..c4adcb4 100644
--- a/app/src/main/res/values/integers.xml
+++ b/app/src/main/res/values/integers.xml
@@ -1,9 +1,12 @@
80
- 150
+
150
200
50
+
+ 200
+ 50
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 4f04c77..1391b00 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -4,13 +4,14 @@
Português (BR)
English (US)
- Auto
Kapture
Kaptures
+ Auto
+
Start screen capture
Stop screen capture
Processing capture
@@ -75,8 +76,8 @@
No external viewer found!
File not found!
No extras found!
+ No screenshots found!
Something went wrong!
- Access is required!
Could not check if new versions are available. Do it manually!
Could not download the file. Do it manually!
Connect to a WiFi first!
@@ -98,6 +99,8 @@
screenshot
Extra
+ Screenshot
+ Converting...
Audio
Audio: internal
@@ -109,6 +112,7 @@
Do you want to delete the file:
Do you want to delete the selected file(s)?
Do you want to delete the extra files from the selected file(s)?
+ Do you want to delete the screenshots files from the selected file(s)?
Do you want to remove the selected file(s) from the app? No file will be deleted from the device.
@@ -124,6 +128,7 @@
Kaptures
Settings
+ Credits
Folder
@@ -133,14 +138,13 @@
Video
Resolution
- Device resolution
+ Auto
Quality
FPS
Output format
- The format of the video output file.
MP4
Orientation
@@ -170,6 +174,7 @@
On time limit
On screen off
On shake
+ On battery level
Floating UI
@@ -234,6 +239,18 @@
Show undo/redo buttons
Show clear button
+ Image
+ Show image
+ Image location
+ Default size
+ No image
+
+ Show screenshot button
+ Takes a screenshot of the screen, including the drawing.
+
+ Show draw screenshot button
+ Takes a screenshot of the draw only.
+
Text
Show text
Text
@@ -269,13 +286,14 @@
Includes microphone audio. Ignores internal audio. Only generated if capturing microphone audio.
Output format
- The format of the audio output file(s).
MP3
App
UI
+ Storage
+
Language
Theme
@@ -283,6 +301,12 @@
Dark
Light
+ Token
+
+ Clear token
+ Recycle token
+ The app will try to recycle the token, so you will not have to grant access multiple times. This option may cause crashes!
+
Notification
Performance
@@ -310,7 +334,6 @@
Sort
WiFi share
- Clear permission token
Open accessibility
Show command
About
@@ -319,6 +342,10 @@
@string/popup_btn_confirm
Reset all settings to the default values?
+ Make video seekable
+ Open externally
+ @string/bottom_bar_share
+
adb shell pm grant dev.dect.kapture android.permission.WRITE_SECURE_SETTINGS
Kapture was made by DS.
@@ -333,14 +360,12 @@
Update
Download the latest \".apk\" and install it to update your app.
- Credits
-
This application was made by Douglas Silva only.
\n\nResources used are listed bellow. Licenses text can be accessed at the bottom of the page.
\n\n\u2022 User Interface (UI) was inspired on OneUI from Samsung, documentation is available at https://design.samsung.com/global/contents/one-ui/download/oneui_design_guide_eng.pdf .
\n\n\u2022 Some icons are from Google Fonts , available at https://fonts.google.com/icons under the Apache License Version 2.0.
\n\n\u2022 Some icons are from OneUIProject , available at https://github.com/OneUIProject/oneui-icons under the MIT License.
- \n\n\u2022 \"FFmpegKit\" library collection by arthenica , available, along with installation guides and documentation, at https://arthenica.github.io/ffmpeg-kit/ , under the LGPL v3.0 License.
+ \n\n\u2022 \"FFmpegKit\" library collection by arthenica , available, along with installation guides and documentation, at https://arthenica.github.io/ffmpeg-kit/ , under the GPL v3.0 License.
\n\n\u2022 \"lottie-android\" library by LottieFiles , available at https://github.com/LottieFiles/lottie-android , under the Apache License Version 2.0.
\n\n\u2022 \"Free Loader Animation\" lottie animation by Turlo , available at https://lottiefiles.com/free-animation/loader-qJ1iQwatfl , under the Lottie Simple License.
\n\n\u2022 \"NanoHttpd\" library by Paul S. Hawke, 2001,2005-2013 by Jarno Elonen, 2010 by Konstantinos Togias , available at https://github.com/NanoHttpd/nanohttpd , under the BSD-3-Clause License.
@@ -356,7 +381,7 @@
MIT License
Apache License Version 2.0
- LGPL v3.0
+ GPL v3.0
Lottie Simple License
BSD-3-Clause License
Open Font License
@@ -375,6 +400,8 @@
Remove
Show extras
Delete extras
+ Show screenshots
+ Delete screenshots
Open with
Search
@@ -389,7 +416,6 @@
Size
Sharing
- Unknown
Skip countdown
@@ -402,4 +428,67 @@
Fonts (.ttf) added at the app selected folder will be listed here once the app is restarted.
Relaunch is required to prevent errors!
+
+ Start
+ Stop
+ Pause
+ Resume
+
+ Storage usage
+ Other apps
+ Kapture files
+ Kapture cache
+ Free
+
+ Kaptures removed from the app or removed externally, and their corresponding files, are not included in the \"Kapture files\" category.
+
+ Clear cache
+ Kaptures, extra files and screenshots will not be removed.
+
+ Go back
+ App info
+ Close
+ Forward
+ Rewind
+ @string/bottom_bar_more
+ Search
+ View style
+ Close search
+ Voice search
+ @string/floating_btn_start
+ @string/floating_btn_stop
+ @string/floating_btn_pause
+ @string/floating_btn_resume
+ @string/menu_capture_select_all
+ @string/title_settings
+ Play/Pause
+ Play
+ @string/bottom_bar_share
+ @string/bottom_bar_delete
+ @string/bottom_bar_more_show_screenshot
+ @string/bottom_bar_more_show_extra
+ Size/Color
+ Screen screenshot
+ Draw screenshot
+ Clear
+ Undo
+ Redo
+ Previous color
+ Picker
+ Camera
+ Draw
+ Minimize
+ Hour
+ Minute
+ Second
+
+ Basic
+ Start or stop a capture
+
+ Full
+ Start, stop, pause or resume a capture
+
+ @string/bottom_bar_wifi_share
+ Shortcut to share all kaptures over wifi
+ WiFi\nshare
\ No newline at end of file
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index f6801a6..8f06be3 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -24,11 +24,6 @@
- always
-
-