diff --git a/.gitignore b/.gitignore
index d71f6ea..1824e04 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,3 +6,8 @@
build/
.idea/
+
+# For library packages, don’t commit the pubspec.lock file.
+# Regenerating the pubspec.lock file lets you test your package against the latest compatible versions of its dependencies.
+# See https://dart.dev/guides/libraries/private-files#pubspeclock
+pubspec.lock
\ No newline at end of file
diff --git a/.idea/libraries/Dart_SDK.xml b/.idea/libraries/Dart_SDK.xml
deleted file mode 100644
index f531cdf..0000000
--- a/.idea/libraries/Dart_SDK.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/libraries/Flutter_Plugins.xml b/.idea/libraries/Flutter_Plugins.xml
deleted file mode 100644
index b0f6971..0000000
--- a/.idea/libraries/Flutter_Plugins.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
deleted file mode 100644
index 495cc81..0000000
--- a/.idea/workspace.xml
+++ /dev/null
@@ -1,158 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<<<<<<< HEAD
-
-
-=======
-
-
-
-
-
-
-
-
->>>>>>> f06b0bb206c33bb1f8f227db0dbabc7631a00d79
-
-
-
-
-
-<<<<<<< HEAD
-
-=======
->>>>>>> f06b0bb206c33bb1f8f227db0dbabc7631a00d79
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1617164535287
-
-
- 1617164535287
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- file://$PROJECT_DIR$/example/lib/main.dart
- 100
-
-
-
- file://$PROJECT_DIR$/example/lib/main.dart
- 101
-
-
-
- file://$PROJECT_DIR$/example/lib/main.dart
- 105
-
-
-
- file://$PROJECT_DIR$/example/lib/main.dart
- 362
-
-
-
-
-
-
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4668a77..d08980f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -53,4 +53,40 @@
- Fixes toMap on TbModel.
## 0.0.22
-- PaperSize now shares common interface as other labels.
\ No newline at end of file
+- PaperSize now shares common interface as other labels.
+
+## 0.0.23
+- Fixes issue with startPTTPrint. Special thanks to rendesg for the fixes.
+
+## 0.0.24
+- Fixes exception on iOS print. Special thanks to BentEngbers for the report.
+
+## 0.0.25
+- Moved from JCenter to MavenCentral for Android dependencies.
+
+## 0.0.26
+- Added Bluetooth permissions required by Android 12
+
+## 0.0.27
+- Replaces flutter_blue with flutter_blu_plus
+
+## 0.0.28
+- Resolves issue where app UI freezes while calling printImage on iOS.
+
+## 0.0.29
+- Upgrades Android libs to v4.6.1 of the Brother SDK.
+
+## 0.0.30
+- Adds support for getPDFFilePages on iOS.
+
+## 0.0.31
+- Adds orientation support for PT printers on iOS.
+
+## 0.0.32
+- Updates Bluetooth printer filter on Android.
+
+## 0.0.33
+- Updates USB permissions check for Android 13.
+
+## 0.0.34
+- Adds support for: RJ_3230B, RJ_3250WB, PT_D410, PT_D460BT, PT_D610BT, PJ_822, PJ_823, PJ_862, PJ_863, PJ_883, TD_2030A, TD_2125N, TD_2125NWB, TD_2135N, TD_2135NWB.
\ No newline at end of file
diff --git a/README.md b/README.md
index ff98e1f..e9f830c 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# another_brother
-Another Bother SDK library for Flutter.
+Another Bother SDK library for Flutter. For full demo app see Another-Brother-Demo-Prime https://github.com/CodeMinion/Demo-Another-Brother-Prime
## Android Support
- Bluetooth/BLE
@@ -52,3 +52,25 @@ Add the following to your Info.plist
```
On your Runner make sure to mark: Allow non-modular includes as yes.
Also make sure to mark the libBROTHERSDK.a as belonging to another_brother in xCode: https://www.youtube.com/watch?v=42dBVdXU8gk
+
+iOS Setup Video: https://www.youtube.com/watch?v=AcFnd-6hSew
+
+
+
+## Apps Built with another_brother
+Have an app built using another_brother let me know and I will add it here!
+
+- Easy Menu: https://www.youtube.com/watch?v=xy9qYo03pOQ
+- QR Storage: https://play.google.com/store/apps/details?id=com.rouninlabs.qrstorage
+- Speed Dater: https://youtu.be/z4jxO9HWze8
+- 4.events: https://play.google.com/store/apps/details?id=com.fourevents.app
+- PoachMe.dev: https://poachme.dev/#/devLand?reqCode=SAVETIME&
+- OkosHACCP: https://play.google.com/store/apps/details?id=hu.okoshaccp.operator built by https://wunderbytes.eu/
+
+# Brother Hackathon
+Feel free to use any of my GitHub repositories in your apps. You should also consider
+attending the free Brother Hackathon happening this year. You get a free Brother QL-1110NWB,
+a PT-P910BT, and possibly an awesome DS-940DW mobile scanner. Visit brotherhackathon.com for
+more information. I will be teaching workshops, and they are free. You can ask me any questions.
+Thank you.
+
diff --git a/android/build.gradle b/android/build.gradle
index a7ea4dd..e869fec 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -1,16 +1,16 @@
+
group 'com.rouninlabs.another_brother'
version '1.0-SNAPSHOT'
buildscript {
- ext.kotlin_version = '1.3.50'
+ ext.kotlin_version = '1.8.21'
repositories {
google()
- jcenter()
+ mavenCentral()
}
dependencies {
- //classpath 'com.android.tools.build:gradle:4.1.0'
- classpath 'com.android.tools.build:gradle:3.5.4'
+ classpath 'com.android.tools.build:gradle:7.4.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
@@ -18,7 +18,7 @@ buildscript {
rootProject.allprojects {
repositories {
google()
- jcenter()
+ mavenCentral()
maven {
url "https://rouninlabs.jfrog.io/artifactory/rounin-libs-external/"
}
@@ -29,7 +29,7 @@ apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
android {
- compileSdkVersion 30
+ compileSdkVersion 31
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
@@ -38,11 +38,19 @@ android {
minSdkVersion 19 // Bumped up because of Type B SDK
consumerProguardFiles 'consumer-rules.pro'
}
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+
+ kotlinOptions {
+ jvmTarget = JavaVersion.VERSION_1_8.toString()
+ }
}
dependencies {
- implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
- implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9'
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
+ implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.1'
implementation 'com.brother.sdk:printer:4.6.1'
implementation 'com.brother.typeb:print:1.0.0'
}
diff --git a/android/gradle/wrapper/gradle-wrapper.jar b/android/gradle/wrapper/gradle-wrapper.jar
index 13372ae..7454180 100644
Binary files a/android/gradle/wrapper/gradle-wrapper.jar and b/android/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties
index 3c9d085..994ea6a 100644
--- a/android/gradle/wrapper/gradle-wrapper.properties
+++ b/android/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,6 @@
+#Sun May 28 20:31:35 CEST 2023
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
diff --git a/android/gradlew b/android/gradlew
old mode 100644
new mode 100755
index 9d82f78..1b6c787
--- a/android/gradlew
+++ b/android/gradlew
@@ -1,74 +1,129 @@
-#!/usr/bin/env bash
+#!/bin/sh
+
+#
+# Copyright © 2015-2021 the original authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
##############################################################################
-##
-## Gradle start up script for UN*X
-##
+#
+# Gradle start up script for POSIX generated by Gradle.
+#
+# Important for running:
+#
+# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
+# noncompliant, but you have some other compliant shell such as ksh or
+# bash, then to run this script, type that shell name before the whole
+# command line, like:
+#
+# ksh Gradle
+#
+# Busybox and similar reduced shells will NOT work, because this script
+# requires all of these POSIX shell features:
+# * functions;
+# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
+# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
+# * compound commands having a testable exit status, especially «case»;
+# * various built-in commands including «command», «set», and «ulimit».
+#
+# Important for patching:
+#
+# (2) This script targets any POSIX shell, so it avoids extensions provided
+# by Bash, Ksh, etc; in particular arrays are avoided.
+#
+# The "traditional" practice of packing multiple parameters into a
+# space-separated string is a well documented source of bugs and security
+# problems, so this is (mostly) avoided, by progressively accumulating
+# options in "$@", and eventually passing that to Java.
+#
+# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
+# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
+# see the in-line comments for details.
+#
+# There are tweaks for specific operating systems such as AIX, CygWin,
+# Darwin, MinGW, and NonStop.
+#
+# (3) This script is generated from the Groovy template
+# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+# within the Gradle project.
+#
+# You can find Gradle at https://github.com/gradle/gradle/.
+#
##############################################################################
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS=""
+# Attempt to set APP_HOME
+
+# Resolve links: $0 may be a link
+app_path=$0
+
+# Need this for daisy-chained symlinks.
+while
+ APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
+ [ -h "$app_path" ]
+do
+ ls=$( ls -ld "$app_path" )
+ link=${ls#*' -> '}
+ case $link in #(
+ /*) app_path=$link ;; #(
+ *) app_path=$APP_HOME$link ;;
+ esac
+done
+
+APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
+APP_BASE_NAME=${0##*/}
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
+MAX_FD=maximum
-warn ( ) {
+warn () {
echo "$*"
-}
+} >&2
-die ( ) {
+die () {
echo
echo "$*"
echo
exit 1
-}
+} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
-case "`uname`" in
- CYGWIN* )
- cygwin=true
- ;;
- Darwin* )
- darwin=true
- ;;
- MINGW* )
- msys=true
- ;;
+nonstop=false
+case "$( uname )" in #(
+ CYGWIN* ) cygwin=true ;; #(
+ Darwin* ) darwin=true ;; #(
+ MSYS* | MINGW* ) msys=true ;; #(
+ NONSTOP* ) nonstop=true ;;
esac
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG=`dirname "$PRG"`"/$link"
- fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >/dev/null
-APP_HOME="`pwd -P`"
-cd "$SAVED" >/dev/null
-
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
- JAVACMD="$JAVA_HOME/jre/sh/java"
+ JAVACMD=$JAVA_HOME/jre/sh/java
else
- JAVACMD="$JAVA_HOME/bin/java"
+ JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
@@ -77,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
- JAVACMD="java"
+ JAVACMD=java
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
@@ -85,76 +140,95 @@ location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
- MAX_FD_LIMIT=`ulimit -H -n`
- if [ $? -eq 0 ] ; then
- if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
- MAX_FD="$MAX_FD_LIMIT"
- fi
- ulimit -n $MAX_FD
- if [ $? -ne 0 ] ; then
- warn "Could not set maximum file descriptor limit: $MAX_FD"
- fi
- else
- warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
- fi
+if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
+ case $MAX_FD in #(
+ max*)
+ MAX_FD=$( ulimit -H -n ) ||
+ warn "Could not query maximum file descriptor limit"
+ esac
+ case $MAX_FD in #(
+ '' | soft) :;; #(
+ *)
+ ulimit -n "$MAX_FD" ||
+ warn "Could not set maximum file descriptor limit to $MAX_FD"
+ esac
fi
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
- GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
+# Collect all arguments for the java command, stacking in reverse order:
+# * args from the command line
+# * the main class name
+# * -classpath
+# * -D...appname settings
+# * --module-path (only if needed)
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if "$cygwin" || "$msys" ; then
+ APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
+ CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
+
+ JAVACMD=$( cygpath --unix "$JAVACMD" )
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
- APP_HOME=`cygpath --path --mixed "$APP_HOME"`
- CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
- JAVACMD=`cygpath --unix "$JAVACMD"`
-
- # We build the pattern for arguments to be converted via cygpath
- ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
- SEP=""
- for dir in $ROOTDIRSRAW ; do
- ROOTDIRS="$ROOTDIRS$SEP$dir"
- SEP="|"
- done
- OURCYGPATTERN="(^($ROOTDIRS))"
- # Add a user-defined pattern to the cygpath arguments
- if [ "$GRADLE_CYGPATTERN" != "" ] ; then
- OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
- fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
- i=0
- for arg in "$@" ; do
- CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
- CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
-
- if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
- eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
- else
- eval `echo args$i`="\"$arg\""
+ for arg do
+ if
+ case $arg in #(
+ -*) false ;; # don't mess with options #(
+ /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
+ [ -e "$t" ] ;; #(
+ *) false ;;
+ esac
+ then
+ arg=$( cygpath --path --ignore --mixed "$arg" )
fi
- i=$((i+1))
+ # Roll the args list around exactly as many times as the number of
+ # args, so each arg winds up back in the position where it started, but
+ # possibly modified.
+ #
+ # NB: a `for` loop captures its iteration list before it begins, so
+ # changing the positional parameters here affects neither the number of
+ # iterations, nor the values presented in `arg`.
+ shift # remove old arg
+ set -- "$@" "$arg" # push replacement arg
done
- case $i in
- (0) set -- ;;
- (1) set -- "$args0" ;;
- (2) set -- "$args0" "$args1" ;;
- (3) set -- "$args0" "$args1" "$args2" ;;
- (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
- (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
- (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
- (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
- (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
- (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
- esac
fi
-# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
-function splitJvmOpts() {
- JVM_OPTS=("$@")
-}
-eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
-JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
-
-exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
+# Collect all arguments for the java command;
+# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
+# shell script including quotes and variable substitutions, so put them in
+# double quotes to make sure that they get re-expanded; and
+# * put everything else in single quotes, so that it's not re-expanded.
+
+set -- \
+ "-Dorg.gradle.appname=$APP_BASE_NAME" \
+ -classpath "$CLASSPATH" \
+ org.gradle.wrapper.GradleWrapperMain \
+ "$@"
+
+# Use "xargs" to parse quoted args.
+#
+# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
+#
+# In Bash we could simply go:
+#
+# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
+# set -- "${ARGS[@]}" "$@"
+#
+# but POSIX shell has neither arrays nor command substitution, so instead we
+# post-process each arg (as a line of input to sed) to backslash-escape any
+# character that might be a shell metacharacter, then use eval to reverse
+# that process (while maintaining the separation between arguments), and wrap
+# the whole thing up as a single "set" statement.
+#
+# This will of course break if any of these variables contains a newline or
+# an unmatched quote.
+#
+
+eval "set -- $(
+ printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
+ xargs -n1 |
+ sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
+ tr '\n' ' '
+ )" '"$@"'
+
+exec "$JAVACMD" "$@"
diff --git a/android/gradlew.bat b/android/gradlew.bat
index 8a0b282..ac1b06f 100644
--- a/android/gradlew.bat
+++ b/android/gradlew.bat
@@ -1,90 +1,89 @@
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto init
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:init
-@rem Get command-line arguments, handling Windowz variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-if "%@eval[2+2]" == "4" goto 4NT_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-goto execute
-
-:4NT_args
-@rem Get arguments from the 4NT Shell from JP Software
-set CMD_LINE_ARGS=%$
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/android/src/main/AndroidManifest.xml b/android/src/main/AndroidManifest.xml
index 74d0790..fd06b30 100644
--- a/android/src/main/AndroidManifest.xml
+++ b/android/src/main/AndroidManifest.xml
@@ -3,9 +3,11 @@
-
-
+
+
+
+
diff --git a/android/src/main/kotlin/com/rouninlabs/another_brother/BrotherManager.kt b/android/src/main/kotlin/com/rouninlabs/another_brother/BrotherManager.kt
index 5cd5b15..9807abb 100644
--- a/android/src/main/kotlin/com/rouninlabs/another_brother/BrotherManager.kt
+++ b/android/src/main/kotlin/com/rouninlabs/another_brother/BrotherManager.kt
@@ -1,11 +1,11 @@
package com.rouninlabs.another_brother
import android.app.PendingIntent
-import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.hardware.usb.UsbDevice
import android.hardware.usb.UsbManager
+import android.os.Build
import androidx.annotation.WorkerThread
import com.brother.ptouch.sdk.Printer
import com.rouninlabs.another_brother.method.typeb.ITbPrinterAdapter
@@ -18,12 +18,12 @@ import java.util.concurrent.BlockingQueue
*/
object BrotherManager {
- val mActivePrinters:MutableMap = hashMapOf()
- val mActiveTypeBPrinters:MutableMap = hashMapOf()
+ val mActivePrinters: MutableMap = hashMapOf()
+ val mActiveTypeBPrinters: MutableMap = hashMapOf()
val mUsbPermissionRequests: MutableMap> = hashMapOf()
- fun getPrinter(printerId:String):Printer? {
+ fun getPrinter(printerId: String): Printer? {
return mActivePrinters[printerId]
}
@@ -35,7 +35,7 @@ object BrotherManager {
mActivePrinters.remove(printerId)
}
- fun trackTypeBPrinter(printerId:String, printer:ITbPrinterAdapter) {
+ fun trackTypeBPrinter(printerId: String, printer: ITbPrinterAdapter) {
mActiveTypeBPrinters.put(printerId, printer)
}
@@ -43,7 +43,7 @@ object BrotherManager {
mActiveTypeBPrinters.remove(printerId)
}
- fun getTypeBPrinter(printerId:String):ITbPrinterAdapter? {
+ fun getTypeBPrinter(printerId: String): ITbPrinterAdapter? {
return mActiveTypeBPrinters[printerId]
}
@@ -51,7 +51,11 @@ object BrotherManager {
* Makes a permission request to get access to the usb device
*/
@WorkerThread
- fun requestUsbPermission(context: Context, usbManager: UsbManager, usbDevice: UsbDevice) : Boolean {//:BlockingQueue {
+ fun requestUsbPermission(
+ context: Context,
+ usbManager: UsbManager,
+ usbDevice: UsbDevice
+ ): Boolean {//:BlockingQueue {
val requestId = usbDevice.deviceId
if (mUsbPermissionRequests.containsKey(requestId)) {
return mUsbPermissionRequests[requestId]!!.take()
@@ -60,18 +64,29 @@ object BrotherManager {
val completableFuture = ArrayBlockingQueue(1)
mUsbPermissionRequests.put(requestId, completableFuture)
val intent = Intent(context, UsbPermissionsReceiver::class.java)
- usbManager.requestPermission(usbDevice, PendingIntent.getBroadcast(context, 1234, intent, 0))
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ usbManager.requestPermission(
+ usbDevice,
+ PendingIntent.getBroadcast(context, 1234, intent, PendingIntent.FLAG_IMMUTABLE)
+ )
+ } else {
+ usbManager.requestPermission(
+ usbDevice,
+ PendingIntent.getBroadcast(context, 1234, intent, 0)
+ )
+ }
return completableFuture.take()
}
- fun completePermissionRequest(usbDevice: UsbDevice, granted:Boolean) {
+ fun completePermissionRequest(usbDevice: UsbDevice, granted: Boolean) {
val requestId = usbDevice.deviceId
if (!mUsbPermissionRequests.containsKey(requestId)) {
return
}
- mUsbPermissionRequests[requestId]?.put(granted)
+ mUsbPermissionRequests[requestId]?.put(granted)
mUsbPermissionRequests.remove(requestId)
}
-}
\ No newline at end of file
+}
diff --git a/android/src/main/kotlin/com/rouninlabs/another_brother/method/BrotherUtils.kt b/android/src/main/kotlin/com/rouninlabs/another_brother/method/BrotherUtils.kt
index aa578c8..ce98f9f 100644
--- a/android/src/main/kotlin/com/rouninlabs/another_brother/method/BrotherUtils.kt
+++ b/android/src/main/kotlin/com/rouninlabs/another_brother/method/BrotherUtils.kt
@@ -3,8 +3,10 @@ package com.rouninlabs.another_brother.method
import android.bluetooth.BluetoothAdapter
import android.bluetooth.BluetoothDevice
import android.content.Context
+import android.content.pm.PackageManager
import android.hardware.usb.UsbManager
import android.util.Log
+import androidx.core.content.ContextCompat
import com.brother.ptouch.sdk.*
import com.brother.ptouch.sdk.Unit
import com.rouninlabs.another_brother.BrotherManager
@@ -102,6 +104,8 @@ fun customPaperInfoFromMap(map:Map?):CustomPaperInfo? {
PaperKind.DIE_CUT -> {
CustomPaperInfo.newCustomDieCutPaper(printerModel,
unit, tapeWidth, tapeLength, rightMargin, leftMargin, topMargin, bottomMargin, labelPitch)
+ //CustomPaperInfo.newCustomDiaCutPaper(printerModel,
+ // unit, tapeWidth, tapeLength, rightMargin, leftMargin, topMargin, bottomMargin, labelPitch)
}
PaperKind.MARKED_ROLL -> {
CustomPaperInfo.newCustomMarkRollPaper(printerModel,
@@ -269,7 +273,16 @@ fun powerSaveModeFromMap(map:Map):BluetoothPreference.PowerSaveMode
}
-fun PrinterInfo.ErrorCode.toMap(): Map {
+fun PrinterInfo.ErrorCode.toMap(context:Context? = null): Map {
+ // TODO IF it is ERROR_INCORRECT_LABEL check if we have Storage permission
+ if (context != null && name == PrinterInfo.ErrorCode.ERROR_WRONG_LABEL.name && ContextCompat.checkSelfPermission(context, "android.permission.WRITE_EXTERNAL_STORAGE") != PackageManager.PERMISSION_GRANTED){
+ // When the App does not have storage permissions the Brother libs fail with this error ERROR_WRONG_LABEL
+ // We convert it to a more meaningful one.
+ return hashMapOf(
+ "id" to 9999,
+ "name" to "ERROR_STORAGE_PERMISSION_NOT_GRANTED"
+ )
+ }
return hashMapOf(
"id" to -1,
"name" to name
@@ -300,9 +313,9 @@ fun JNIStatus.BatteryTernary.toMap(): Map {
)
}
-fun PrinterStatus.toMap(): Map {
+fun PrinterStatus.toMap(context:Context? = null): Map {
return hashMapOf(
- "errorCode" to errorCode.toMap(),
+ "errorCode" to errorCode.toMap(context),
"labelId" to labelId,
"labelType" to labelType,
"isACConnected" to isACConnected.toMap(),
diff --git a/android/src/main/kotlin/com/rouninlabs/another_brother/method/GetBluetoothPrintersMethodCall.kt b/android/src/main/kotlin/com/rouninlabs/another_brother/method/GetBluetoothPrintersMethodCall.kt
index 48bb472..2fe384d 100644
--- a/android/src/main/kotlin/com/rouninlabs/another_brother/method/GetBluetoothPrintersMethodCall.kt
+++ b/android/src/main/kotlin/com/rouninlabs/another_brother/method/GetBluetoothPrintersMethodCall.kt
@@ -67,7 +67,9 @@ class GetBluetoothPrintersMethodCall(val flutterAssets: FlutterPlugin.FlutterAss
// TODO Only select the devices containing the model in them.
// Brother names their printers with the model followed by what seems to be 4 digits.
val matchingPrinters = BluetoothAdapter.getDefaultAdapter().bondedDevices.filter {
- bluetoothDevice -> models.filter { modelName -> bluetoothDevice.name.contains(modelName) }.isNotEmpty()
+ bluetoothDevice -> models.filter { modelName ->
+ bluetoothDevice.name.contains(modelName) || bluetoothDevice.name.replace("-", "_").contains(modelName)
+ }.isNotEmpty()
}
//Log.e("Frank", "Found Printers ${BluetoothAdapter.getDefaultAdapter().bondedDevices}")
diff --git a/android/src/main/kotlin/com/rouninlabs/another_brother/method/PrintFileMethodCall.kt b/android/src/main/kotlin/com/rouninlabs/another_brother/method/PrintFileMethodCall.kt
index 5ccb291..c461b0b 100644
--- a/android/src/main/kotlin/com/rouninlabs/another_brother/method/PrintFileMethodCall.kt
+++ b/android/src/main/kotlin/com/rouninlabs/another_brother/method/PrintFileMethodCall.kt
@@ -74,7 +74,7 @@ class PrintFileMethodCall(val flutterAssets: FlutterPlugin.FlutterAssets, val co
}
// Encode PrinterStatus
- val dartPrintStatus = printResult.toMap()
+ val dartPrintStatus = printResult.toMap(context = context)
withContext(Dispatchers.Main) {
// Set result Printer status.
result.success(dartPrintStatus)
diff --git a/android/src/main/kotlin/com/rouninlabs/another_brother/method/PrintImageMethodCall.kt b/android/src/main/kotlin/com/rouninlabs/another_brother/method/PrintImageMethodCall.kt
index 58d023d..2cad14a 100644
--- a/android/src/main/kotlin/com/rouninlabs/another_brother/method/PrintImageMethodCall.kt
+++ b/android/src/main/kotlin/com/rouninlabs/another_brother/method/PrintImageMethodCall.kt
@@ -93,7 +93,7 @@ class PrintImageMethodCall(val flutterAssets: FlutterPlugin.FlutterAssets, val c
}
// Encode PrinterStatus
- val dartPrintStatus = printResult.toMap()
+ val dartPrintStatus = printResult.toMap(context = context)
withContext(Dispatchers.Main) {
// Set result Printer status.
result.success(dartPrintStatus)
diff --git a/android/src/main/kotlin/com/rouninlabs/another_brother/method/PrintPdfFileMethodCall.kt b/android/src/main/kotlin/com/rouninlabs/another_brother/method/PrintPdfFileMethodCall.kt
index c06ad25..cac8c7e 100644
--- a/android/src/main/kotlin/com/rouninlabs/another_brother/method/PrintPdfFileMethodCall.kt
+++ b/android/src/main/kotlin/com/rouninlabs/another_brother/method/PrintPdfFileMethodCall.kt
@@ -75,7 +75,7 @@ class PrintPdfFileMethodCall(val flutterAssets: FlutterPlugin.FlutterAssets, val
}
// Encode PrinterStatus
- val dartPrintStatus = printResult.toMap()
+ val dartPrintStatus = printResult.toMap(context = context)
withContext(Dispatchers.Main) {
// Set result Printer status.
result.success(dartPrintStatus)
diff --git a/android/src/main/kotlin/com/rouninlabs/another_brother/method/PrintPdfMethodCall.kt b/android/src/main/kotlin/com/rouninlabs/another_brother/method/PrintPdfMethodCall.kt
index 88687b1..336f2a8 100644
--- a/android/src/main/kotlin/com/rouninlabs/another_brother/method/PrintPdfMethodCall.kt
+++ b/android/src/main/kotlin/com/rouninlabs/another_brother/method/PrintPdfMethodCall.kt
@@ -75,7 +75,7 @@ class PrintPdfMethodCall(val flutterAssets: FlutterPlugin.FlutterAssets, val con
}
// Encode PrinterStatus
- val dartPrintStatus = printResult.toMap()
+ val dartPrintStatus = printResult.toMap(context = context)
withContext(Dispatchers.Main) {
// Set result Printer status.
result.success(dartPrintStatus)
diff --git a/android/src/main/kotlin/com/rouninlabs/another_brother/method/typeb/internal/BrotherUSBActivity.java b/android/src/main/kotlin/com/rouninlabs/another_brother/method/typeb/internal/BrotherUSBActivity.java
index bf53761..da83247 100644
--- a/android/src/main/kotlin/com/rouninlabs/another_brother/method/typeb/internal/BrotherUSBActivity.java
+++ b/android/src/main/kotlin/com/rouninlabs/another_brother/method/typeb/internal/BrotherUSBActivity.java
@@ -135,7 +135,7 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(2130903040);
this.mUsbManager = (UsbManager)this.getSystemService("usb");
- BrotherUSBActivity.mPermissionIntent = PendingIntent.getBroadcast(this, 0, new Intent("com.android.example.USB_PERMISSION"), 0);
+ BrotherUSBActivity.mPermissionIntent = PendingIntent.getBroadcast(this, 0, new Intent("com.android.example.USB_PERMISSION"), Build.VERSION.SDK_INT >= Build.VERSION_CODES.M ? PendingIntent.FLAG_IMMUTABLE : 0);
IntentFilter filter = new IntentFilter("com.android.example.USB_PERMISSION");
this.registerReceiver(this.mUsbReceiver_main, filter);
UsbAccessory[] accessoryList = this.mUsbManager.getAccessoryList();
diff --git a/custom_paper/CustomTD2125NPaper/TD2125N-40mm40mm.bin b/custom_paper/CustomTD2125NPaper/TD2125N-40mm40mm.bin
new file mode 100644
index 0000000..773c4d4
Binary files /dev/null and b/custom_paper/CustomTD2125NPaper/TD2125N-40mm40mm.bin differ
diff --git a/custom_paper/CustomTD2125NPaper/TD2125N-57mm.bin b/custom_paper/CustomTD2125NPaper/TD2125N-57mm.bin
new file mode 100644
index 0000000..a0b4cf9
Binary files /dev/null and b/custom_paper/CustomTD2125NPaper/TD2125N-57mm.bin differ
diff --git a/custom_paper/CustomTD2125NWBPaper/TD2125NWB-40mm40mm.bin b/custom_paper/CustomTD2125NWBPaper/TD2125NWB-40mm40mm.bin
new file mode 100644
index 0000000..a52bca3
Binary files /dev/null and b/custom_paper/CustomTD2125NWBPaper/TD2125NWB-40mm40mm.bin differ
diff --git a/custom_paper/CustomTD2125NWBPaper/TD2125NWB-51x26mm.bin b/custom_paper/CustomTD2125NWBPaper/TD2125NWB-51x26mm.bin
new file mode 100644
index 0000000..c313652
Binary files /dev/null and b/custom_paper/CustomTD2125NWBPaper/TD2125NWB-51x26mm.bin differ
diff --git a/custom_paper/CustomTD2125NWBPaper/TD2125NWB-57mm.bin b/custom_paper/CustomTD2125NWBPaper/TD2125NWB-57mm.bin
new file mode 100644
index 0000000..aa8ae80
Binary files /dev/null and b/custom_paper/CustomTD2125NWBPaper/TD2125NWB-57mm.bin differ
diff --git a/custom_paper/CustomTD2125NWBPaper/TD2125NWB-57x76mm.bin b/custom_paper/CustomTD2125NWBPaper/TD2125NWB-57x76mm.bin
new file mode 100644
index 0000000..cece0fc
Binary files /dev/null and b/custom_paper/CustomTD2125NWBPaper/TD2125NWB-57x76mm.bin differ
diff --git a/example/.gitignore b/example/.gitignore
deleted file mode 100644
index 0fa6b67..0000000
--- a/example/.gitignore
+++ /dev/null
@@ -1,46 +0,0 @@
-# Miscellaneous
-*.class
-*.log
-*.pyc
-*.swp
-.DS_Store
-.atom/
-.buildlog/
-.history
-.svn/
-
-# IntelliJ related
-*.iml
-*.ipr
-*.iws
-.idea/
-
-# The .vscode folder contains launch configuration and tasks you configure in
-# VS Code which you may wish to be included in version control, so this line
-# is commented out by default.
-#.vscode/
-
-# Flutter/Dart/Pub related
-**/doc/api/
-**/ios/Flutter/.last_build_id
-.dart_tool/
-.flutter-plugins
-.flutter-plugins-dependencies
-.packages
-.pub-cache/
-.pub/
-/build/
-
-# Web related
-lib/generated_plugin_registrant.dart
-
-# Symbolication related
-app.*.symbols
-
-# Obfuscation related
-app.*.map.json
-
-# Android Studio will place build artifacts here
-/android/app/debug
-/android/app/profile
-/android/app/release
diff --git a/example/.metadata b/example/.metadata
deleted file mode 100644
index 140b929..0000000
--- a/example/.metadata
+++ /dev/null
@@ -1,10 +0,0 @@
-# This file tracks properties of this Flutter project.
-# Used by Flutter tool to assess capabilities and perform upgrades etc.
-#
-# This file should be version controlled and should not be manually edited.
-
-version:
- revision: 4d7946a68d26794349189cf21b3f68cc6fe61dcb
- channel: stable
-
-project_type: app
diff --git a/example/README.md b/example/README.md
deleted file mode 100644
index 22ce18d..0000000
--- a/example/README.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# another_brother_example
-
-Demonstrates how to use the another_brother plugin.
-
-## Getting Started
-
-This project is a starting point for a Flutter application.
-
-A few resources to get you started if this is your first Flutter project:
-
-- [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab)
-- [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook)
-
-For help getting started with Flutter, view our
-[online documentation](https://flutter.dev/docs), which offers tutorials,
-samples, guidance on mobile development, and a full API reference.
diff --git a/example/android/.gitignore b/example/android/.gitignore
deleted file mode 100644
index 0a741cb..0000000
--- a/example/android/.gitignore
+++ /dev/null
@@ -1,11 +0,0 @@
-gradle-wrapper.jar
-/.gradle
-/captures/
-/gradlew
-/gradlew.bat
-/local.properties
-GeneratedPluginRegistrant.java
-
-# Remember to never publicly share your keystore.
-# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
-key.properties
diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle
deleted file mode 100644
index d10edef..0000000
--- a/example/android/app/build.gradle
+++ /dev/null
@@ -1,59 +0,0 @@
-def localProperties = new Properties()
-def localPropertiesFile = rootProject.file('local.properties')
-if (localPropertiesFile.exists()) {
- localPropertiesFile.withReader('UTF-8') { reader ->
- localProperties.load(reader)
- }
-}
-
-def flutterRoot = localProperties.getProperty('flutter.sdk')
-if (flutterRoot == null) {
- throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
-}
-
-def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
-if (flutterVersionCode == null) {
- flutterVersionCode = '1'
-}
-
-def flutterVersionName = localProperties.getProperty('flutter.versionName')
-if (flutterVersionName == null) {
- flutterVersionName = '1.0'
-}
-
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
-apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
-
-android {
- compileSdkVersion 30
-
- sourceSets {
- main.java.srcDirs += 'src/main/kotlin'
- }
-
- defaultConfig {
- // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
- applicationId "com.rouninlabs.another_brother_example"
- minSdkVersion 21 // Bummped to 21 as a result of Type B Sdk print Pdf
- targetSdkVersion 28
- versionCode flutterVersionCode.toInteger()
- versionName flutterVersionName
- }
-
- buildTypes {
- release {
- // TODO: Add your own signing config for the release build.
- // Signing with the debug keys for now, so `flutter run --release` works.
- signingConfig signingConfigs.debug
- }
- }
-}
-
-flutter {
- source '../..'
-}
-
-dependencies {
- implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
-}
diff --git a/example/android/app/src/debug/AndroidManifest.xml b/example/android/app/src/debug/AndroidManifest.xml
deleted file mode 100644
index a113b49..0000000
--- a/example/android/app/src/debug/AndroidManifest.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
diff --git a/example/android/app/src/main/AndroidManifest.xml b/example/android/app/src/main/AndroidManifest.xml
deleted file mode 100644
index 30c5df4..0000000
--- a/example/android/app/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/example/android/app/src/main/kotlin/com/rouninlabs/another_brother_example/MainActivity.kt b/example/android/app/src/main/kotlin/com/rouninlabs/another_brother_example/MainActivity.kt
deleted file mode 100644
index 23e1e48..0000000
--- a/example/android/app/src/main/kotlin/com/rouninlabs/another_brother_example/MainActivity.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.rouninlabs.another_brother_example
-
-import io.flutter.embedding.android.FlutterActivity
-
-class MainActivity: FlutterActivity() {
-}
diff --git a/example/android/app/src/main/res/drawable-v21/launch_background.xml b/example/android/app/src/main/res/drawable-v21/launch_background.xml
deleted file mode 100644
index f74085f..0000000
--- a/example/android/app/src/main/res/drawable-v21/launch_background.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/example/android/app/src/main/res/drawable/launch_background.xml b/example/android/app/src/main/res/drawable/launch_background.xml
deleted file mode 100644
index 304732f..0000000
--- a/example/android/app/src/main/res/drawable/launch_background.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
deleted file mode 100644
index db77bb4..0000000
Binary files a/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png and /dev/null differ
diff --git a/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
deleted file mode 100644
index 17987b7..0000000
Binary files a/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png and /dev/null differ
diff --git a/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
deleted file mode 100644
index 09d4391..0000000
Binary files a/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ
diff --git a/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
deleted file mode 100644
index d5f1c8d..0000000
Binary files a/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ
diff --git a/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
deleted file mode 100644
index 4d6372e..0000000
Binary files a/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ
diff --git a/example/android/app/src/main/res/values-night/styles.xml b/example/android/app/src/main/res/values-night/styles.xml
deleted file mode 100644
index 449a9f9..0000000
--- a/example/android/app/src/main/res/values-night/styles.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
diff --git a/example/android/app/src/main/res/values/styles.xml b/example/android/app/src/main/res/values/styles.xml
deleted file mode 100644
index d74aa35..0000000
--- a/example/android/app/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
diff --git a/example/android/app/src/profile/AndroidManifest.xml b/example/android/app/src/profile/AndroidManifest.xml
deleted file mode 100644
index a113b49..0000000
--- a/example/android/app/src/profile/AndroidManifest.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
diff --git a/example/android/build.gradle b/example/android/build.gradle
deleted file mode 100644
index 4f38659..0000000
--- a/example/android/build.gradle
+++ /dev/null
@@ -1,35 +0,0 @@
-buildscript {
- ext.kotlin_version = '1.3.50'
- repositories {
- google()
- jcenter()
- }
-
- dependencies {
- //classpath 'com.android.tools.build:gradle:4.1.0'
- classpath 'com.android.tools.build:gradle:3.5.4'
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
- }
-}
-
-allprojects {
- repositories {
- google()
- jcenter()
- maven {
- url "https://rouninlabs.jfrog.io/artifactory/rounin-libs-external/"
- }
- }
-}
-
-rootProject.buildDir = '../build'
-subprojects {
- project.buildDir = "${rootProject.buildDir}/${project.name}"
-}
-subprojects {
- project.evaluationDependsOn(':app')
-}
-
-task clean(type: Delete) {
- delete rootProject.buildDir
-}
diff --git a/example/android/gradle.properties b/example/android/gradle.properties
deleted file mode 100644
index 94adc3a..0000000
--- a/example/android/gradle.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-org.gradle.jvmargs=-Xmx1536M
-android.useAndroidX=true
-android.enableJetifier=true
diff --git a/example/android/gradle/wrapper/gradle-wrapper.properties b/example/android/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index bc6a58a..0000000
--- a/example/android/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-#Fri Jun 23 08:50:38 CEST 2017
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
diff --git a/example/android/settings.gradle b/example/android/settings.gradle
deleted file mode 100644
index 44e62bc..0000000
--- a/example/android/settings.gradle
+++ /dev/null
@@ -1,11 +0,0 @@
-include ':app'
-
-def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
-def properties = new Properties()
-
-assert localPropertiesFile.exists()
-localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
-
-def flutterSdkPath = properties.getProperty("flutter.sdk")
-assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
-apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
diff --git a/example/android/settings_aar.gradle b/example/android/settings_aar.gradle
deleted file mode 100644
index e7b4def..0000000
--- a/example/android/settings_aar.gradle
+++ /dev/null
@@ -1 +0,0 @@
-include ':app'
diff --git a/example/assets/LOGO.BMP b/example/assets/LOGO.BMP
deleted file mode 100644
index 8d0d052..0000000
Binary files a/example/assets/LOGO.BMP and /dev/null differ
diff --git a/example/assets/RJ-2035B_EZC_B1.00.Q38.NEW b/example/assets/RJ-2035B_EZC_B1.00.Q38.NEW
deleted file mode 100644
index be2f024..0000000
Binary files a/example/assets/RJ-2035B_EZC_B1.00.Q38.NEW and /dev/null differ
diff --git a/example/assets/RJ-3035B_EZC_B1.00.Q38.NEW b/example/assets/RJ-3035B_EZC_B1.00.Q38.NEW
deleted file mode 100644
index a441bba..0000000
Binary files a/example/assets/RJ-3035B_EZC_B1.00.Q38.NEW and /dev/null differ
diff --git a/example/assets/UL.PCX b/example/assets/UL.PCX
deleted file mode 100644
index e5ccff6..0000000
Binary files a/example/assets/UL.PCX and /dev/null differ
diff --git a/example/assets/brother_hack.png b/example/assets/brother_hack.png
deleted file mode 100644
index b5dc42f..0000000
Binary files a/example/assets/brother_hack.png and /dev/null differ
diff --git a/example/assets/logos.bmp b/example/assets/logos.bmp
deleted file mode 100644
index 8d0d052..0000000
Binary files a/example/assets/logos.bmp and /dev/null differ
diff --git a/example/ios/.gitignore b/example/ios/.gitignore
deleted file mode 100644
index e96ef60..0000000
--- a/example/ios/.gitignore
+++ /dev/null
@@ -1,32 +0,0 @@
-*.mode1v3
-*.mode2v3
-*.moved-aside
-*.pbxuser
-*.perspectivev3
-**/*sync/
-.sconsign.dblite
-.tags*
-**/.vagrant/
-**/DerivedData/
-Icon?
-**/Pods/
-**/.symlinks/
-profile
-xcuserdata
-**/.generated/
-Flutter/App.framework
-Flutter/Flutter.framework
-Flutter/Flutter.podspec
-Flutter/Generated.xcconfig
-Flutter/app.flx
-Flutter/app.zip
-Flutter/flutter_assets/
-Flutter/flutter_export_environment.sh
-ServiceDefinitions.json
-Runner/GeneratedPluginRegistrant.*
-
-# Exceptions to above rules.
-!default.mode1v3
-!default.mode2v3
-!default.pbxuser
-!default.perspectivev3
diff --git a/example/ios/Flutter/AppFrameworkInfo.plist b/example/ios/Flutter/AppFrameworkInfo.plist
deleted file mode 100644
index 9367d48..0000000
--- a/example/ios/Flutter/AppFrameworkInfo.plist
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
- CFBundleDevelopmentRegion
- en
- CFBundleExecutable
- App
- CFBundleIdentifier
- io.flutter.flutter.app
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- App
- CFBundlePackageType
- FMWK
- CFBundleShortVersionString
- 1.0
- CFBundleSignature
- ????
- CFBundleVersion
- 1.0
- MinimumOSVersion
- 8.0
-
-
diff --git a/example/ios/Flutter/Debug.xcconfig b/example/ios/Flutter/Debug.xcconfig
deleted file mode 100644
index ec97fc6..0000000
--- a/example/ios/Flutter/Debug.xcconfig
+++ /dev/null
@@ -1,2 +0,0 @@
-#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
-#include "Generated.xcconfig"
diff --git a/example/ios/Flutter/Release.xcconfig b/example/ios/Flutter/Release.xcconfig
deleted file mode 100644
index c4855bf..0000000
--- a/example/ios/Flutter/Release.xcconfig
+++ /dev/null
@@ -1,2 +0,0 @@
-#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
-#include "Generated.xcconfig"
diff --git a/example/ios/Podfile b/example/ios/Podfile
deleted file mode 100644
index 252d9ec..0000000
--- a/example/ios/Podfile
+++ /dev/null
@@ -1,41 +0,0 @@
-# Uncomment this line to define a global platform for your project
-platform :ios, '9.0'
-
-# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
-ENV['COCOAPODS_DISABLE_STATS'] = 'true'
-
-project 'Runner', {
- 'Debug' => :debug,
- 'Profile' => :release,
- 'Release' => :release,
-}
-
-def flutter_root
- generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
- unless File.exist?(generated_xcode_build_settings_path)
- raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
- end
-
- File.foreach(generated_xcode_build_settings_path) do |line|
- matches = line.match(/FLUTTER_ROOT\=(.*)/)
- return matches[1].strip if matches
- end
- raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
-end
-
-require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
-
-flutter_ios_podfile_setup
-
-target 'Runner' do
- use_frameworks!
- use_modular_headers!
-
- flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
-end
-
-post_install do |installer|
- installer.pods_project.targets.each do |target|
- flutter_additional_ios_build_settings(target)
- end
-end
diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock
deleted file mode 100644
index abd1664..0000000
--- a/example/ios/Podfile.lock
+++ /dev/null
@@ -1,98 +0,0 @@
-PODS:
- - another_brother (0.0.1):
- - BRLMPrinterKit
- - Flutter
- - BRLMPrinterKit (4.0.2.1)
- - DKImagePickerController/Core (4.3.2):
- - DKImagePickerController/ImageDataManager
- - DKImagePickerController/Resource
- - DKImagePickerController/ImageDataManager (4.3.2)
- - DKImagePickerController/PhotoGallery (4.3.2):
- - DKImagePickerController/Core
- - DKPhotoGallery
- - DKImagePickerController/Resource (4.3.2)
- - DKPhotoGallery (0.0.17):
- - DKPhotoGallery/Core (= 0.0.17)
- - DKPhotoGallery/Model (= 0.0.17)
- - DKPhotoGallery/Preview (= 0.0.17)
- - DKPhotoGallery/Resource (= 0.0.17)
- - SDWebImage
- - SwiftyGif
- - DKPhotoGallery/Core (0.0.17):
- - DKPhotoGallery/Model
- - DKPhotoGallery/Preview
- - SDWebImage
- - SwiftyGif
- - DKPhotoGallery/Model (0.0.17):
- - SDWebImage
- - SwiftyGif
- - DKPhotoGallery/Preview (0.0.17):
- - DKPhotoGallery/Model
- - DKPhotoGallery/Resource
- - SDWebImage
- - SwiftyGif
- - DKPhotoGallery/Resource (0.0.17):
- - SDWebImage
- - SwiftyGif
- - file_picker (0.0.1):
- - DKImagePickerController/PhotoGallery
- - Flutter
- - Flutter (1.0.0)
- - flutter_blue (0.0.1):
- - Flutter
- - flutter_blue/Protos (= 0.0.1)
- - flutter_blue/Protos (0.0.1):
- - Flutter
- - Protobuf (~> 3.11.4)
- - path_provider (0.0.1):
- - Flutter
- - Protobuf (3.11.4)
- - SDWebImage (5.11.0):
- - SDWebImage/Core (= 5.11.0)
- - SDWebImage/Core (5.11.0)
- - SwiftyGif (5.4.0)
-
-DEPENDENCIES:
- - another_brother (from `.symlinks/plugins/another_brother/ios`)
- - file_picker (from `.symlinks/plugins/file_picker/ios`)
- - Flutter (from `Flutter`)
- - flutter_blue (from `.symlinks/plugins/flutter_blue/ios`)
- - path_provider (from `.symlinks/plugins/path_provider/ios`)
-
-SPEC REPOS:
- trunk:
- - BRLMPrinterKit
- - DKImagePickerController
- - DKPhotoGallery
- - Protobuf
- - SDWebImage
- - SwiftyGif
-
-EXTERNAL SOURCES:
- another_brother:
- :path: ".symlinks/plugins/another_brother/ios"
- file_picker:
- :path: ".symlinks/plugins/file_picker/ios"
- Flutter:
- :path: Flutter
- flutter_blue:
- :path: ".symlinks/plugins/flutter_blue/ios"
- path_provider:
- :path: ".symlinks/plugins/path_provider/ios"
-
-SPEC CHECKSUMS:
- another_brother: d81929220683ec2e9c1d66f9c4c190300e26c599
- BRLMPrinterKit: 79ca593275bdae5309c8ee93674df2e5177a1b52
- DKImagePickerController: b5eb7f7a388e4643264105d648d01f727110fc3d
- DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179
- file_picker: 3e6c3790de664ccf9b882732d9db5eaf6b8d4eb1
- Flutter: 434fef37c0980e73bb6479ef766c45957d4b510c
- flutter_blue: eeb381dc4727a0954dede73515f683865494b370
- path_provider: abfe2b5c733d04e238b0d8691db0cfd63a27a93c
- Protobuf: 176220c526ad8bd09ab1fb40a978eac3fef665f7
- SDWebImage: 7acbb57630ac7db4a495547fb73916ff3e432f6b
- SwiftyGif: 5d4af95df24caf1c570dbbcb32a3b8a0763bc6d7
-
-PODFILE CHECKSUM: a75497545d4391e2d394c3668e20cfb1c2bbd4aa
-
-COCOAPODS: 1.10.1
diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/example/ios/Runner.xcodeproj/project.pbxproj
deleted file mode 100644
index f82d408..0000000
--- a/example/ios/Runner.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,557 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 51;
- objects = {
-
-/* Begin PBXBuildFile section */
- 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
- 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
- 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
- 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
- 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
- 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
- BD63EE218CE1D7439F4CFC7C /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8D23BADDEECED74C6D352640 /* Pods_Runner.framework */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXCopyFilesBuildPhase section */
- 9705A1C41CF9048500538489 /* Embed Frameworks */ = {
- isa = PBXCopyFilesBuildPhase;
- buildActionMask = 2147483647;
- dstPath = "";
- dstSubfolderSpec = 10;
- files = (
- );
- name = "Embed Frameworks";
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXCopyFilesBuildPhase section */
-
-/* Begin PBXFileReference section */
- 1285FB1E8614C8D101A98880 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; };
- 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; };
- 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; };
- 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
- 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; };
- 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
- 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; };
- 8D23BADDEECED74C6D352640 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; };
- 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; };
- 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
- 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
- 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
- 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
- 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
- C36FF9A7B03C7509582DDF6E /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; };
- D123B919579AC2C54031810C /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- 97C146EB1CF9000F007C117D /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- BD63EE218CE1D7439F4CFC7C /* Pods_Runner.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 19BB0C78820EC2122CF409BE /* Pods */ = {
- isa = PBXGroup;
- children = (
- C36FF9A7B03C7509582DDF6E /* Pods-Runner.debug.xcconfig */,
- 1285FB1E8614C8D101A98880 /* Pods-Runner.release.xcconfig */,
- D123B919579AC2C54031810C /* Pods-Runner.profile.xcconfig */,
- );
- path = Pods;
- sourceTree = "";
- };
- 2A74DC37E4625A21324FFAEE /* Frameworks */ = {
- isa = PBXGroup;
- children = (
- 8D23BADDEECED74C6D352640 /* Pods_Runner.framework */,
- );
- name = Frameworks;
- sourceTree = "";
- };
- 9740EEB11CF90186004384FC /* Flutter */ = {
- isa = PBXGroup;
- children = (
- 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
- 9740EEB21CF90195004384FC /* Debug.xcconfig */,
- 7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
- 9740EEB31CF90195004384FC /* Generated.xcconfig */,
- );
- name = Flutter;
- sourceTree = "";
- };
- 97C146E51CF9000F007C117D = {
- isa = PBXGroup;
- children = (
- 9740EEB11CF90186004384FC /* Flutter */,
- 97C146F01CF9000F007C117D /* Runner */,
- 97C146EF1CF9000F007C117D /* Products */,
- 19BB0C78820EC2122CF409BE /* Pods */,
- 2A74DC37E4625A21324FFAEE /* Frameworks */,
- );
- sourceTree = "";
- };
- 97C146EF1CF9000F007C117D /* Products */ = {
- isa = PBXGroup;
- children = (
- 97C146EE1CF9000F007C117D /* Runner.app */,
- );
- name = Products;
- sourceTree = "";
- };
- 97C146F01CF9000F007C117D /* Runner */ = {
- isa = PBXGroup;
- children = (
- 97C146FA1CF9000F007C117D /* Main.storyboard */,
- 97C146FD1CF9000F007C117D /* Assets.xcassets */,
- 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
- 97C147021CF9000F007C117D /* Info.plist */,
- 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
- 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
- 74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
- 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,
- );
- path = Runner;
- sourceTree = "";
- };
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
- 97C146ED1CF9000F007C117D /* Runner */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
- buildPhases = (
- B2E62E5DDA9518603D715144 /* [CP] Check Pods Manifest.lock */,
- 9740EEB61CF901F6004384FC /* Run Script */,
- 97C146EA1CF9000F007C117D /* Sources */,
- 97C146EB1CF9000F007C117D /* Frameworks */,
- 97C146EC1CF9000F007C117D /* Resources */,
- 9705A1C41CF9048500538489 /* Embed Frameworks */,
- 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
- 557559944B913943DC11B8BE /* [CP] Embed Pods Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = Runner;
- productName = Runner;
- productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
- productType = "com.apple.product-type.application";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- 97C146E61CF9000F007C117D /* Project object */ = {
- isa = PBXProject;
- attributes = {
- LastUpgradeCheck = 1020;
- ORGANIZATIONNAME = "";
- TargetAttributes = {
- 97C146ED1CF9000F007C117D = {
- CreatedOnToolsVersion = 7.3.1;
- LastSwiftMigration = 1100;
- };
- };
- };
- buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
- compatibilityVersion = "Xcode 9.3";
- developmentRegion = en;
- hasScannedForEncodings = 0;
- knownRegions = (
- en,
- Base,
- );
- mainGroup = 97C146E51CF9000F007C117D;
- productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
- projectDirPath = "";
- projectRoot = "";
- targets = (
- 97C146ED1CF9000F007C117D /* Runner */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
- 97C146EC1CF9000F007C117D /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
- 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
- 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
- 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXShellScriptBuildPhase section */
- 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputPaths = (
- );
- name = "Thin Binary";
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
- };
- 557559944B913943DC11B8BE /* [CP] Embed Pods Frameworks */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
- );
- name = "[CP] Embed Pods Frameworks";
- outputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
- showEnvVarsInLog = 0;
- };
- 9740EEB61CF901F6004384FC /* Run Script */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputPaths = (
- );
- name = "Run Script";
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
- };
- B2E62E5DDA9518603D715144 /* [CP] Check Pods Manifest.lock */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputFileListPaths = (
- );
- inputPaths = (
- "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
- "${PODS_ROOT}/Manifest.lock",
- );
- name = "[CP] Check Pods Manifest.lock";
- outputFileListPaths = (
- );
- outputPaths = (
- "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
- showEnvVarsInLog = 0;
- };
-/* End PBXShellScriptBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
- 97C146EA1CF9000F007C117D /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
- 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXVariantGroup section */
- 97C146FA1CF9000F007C117D /* Main.storyboard */ = {
- isa = PBXVariantGroup;
- children = (
- 97C146FB1CF9000F007C117D /* Base */,
- );
- name = Main.storyboard;
- sourceTree = "";
- };
- 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
- isa = PBXVariantGroup;
- children = (
- 97C147001CF9000F007C117D /* Base */,
- );
- name = LaunchScreen.storyboard;
- sourceTree = "";
- };
-/* End PBXVariantGroup section */
-
-/* Begin XCBuildConfiguration section */
- 249021D3217E4FDB00AE95B9 /* Profile */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
- CLANG_ANALYZER_NONNULL = YES;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
- CLANG_CXX_LIBRARY = "libc++";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
- CLANG_WARN_BOOL_CONVERSION = YES;
- CLANG_WARN_COMMA = YES;
- CLANG_WARN_CONSTANT_CONVERSION = YES;
- CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_EMPTY_BODY = YES;
- CLANG_WARN_ENUM_CONVERSION = YES;
- CLANG_WARN_INFINITE_RECURSION = YES;
- CLANG_WARN_INT_CONVERSION = YES;
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
- CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_STRICT_PROTOTYPES = YES;
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
- CLANG_WARN_UNREACHABLE_CODE = YES;
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- COPY_PHASE_STRIP = NO;
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- ENABLE_NS_ASSERTIONS = NO;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- GCC_C_LANGUAGE_STANDARD = gnu99;
- GCC_NO_COMMON_BLOCKS = YES;
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_UNDECLARED_SELECTOR = YES;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GCC_WARN_UNUSED_FUNCTION = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 9.0;
- MTL_ENABLE_DEBUG_INFO = NO;
- SDKROOT = iphoneos;
- SUPPORTED_PLATFORMS = iphoneos;
- TARGETED_DEVICE_FAMILY = "1,2";
- VALIDATE_PRODUCT = YES;
- VALIDATE_WORKSPACE = YES;
- };
- name = Profile;
- };
- 249021D4217E4FDB00AE95B9 /* Profile */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CLANG_ENABLE_MODULES = YES;
- CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
- DEVELOPMENT_TEAM = YM3NZ7J25J;
- ENABLE_BITCODE = NO;
- INFOPLIST_FILE = Runner/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = (
- "$(inherited)",
- "@executable_path/Frameworks",
- );
- PRODUCT_BUNDLE_IDENTIFIER = com.rouninlabs.anotherBrotherExample;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
- SWIFT_VERSION = 5.0;
- VERSIONING_SYSTEM = "apple-generic";
- };
- name = Profile;
- };
- 97C147031CF9000F007C117D /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
- CLANG_ANALYZER_NONNULL = YES;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
- CLANG_CXX_LIBRARY = "libc++";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
- CLANG_WARN_BOOL_CONVERSION = YES;
- CLANG_WARN_COMMA = YES;
- CLANG_WARN_CONSTANT_CONVERSION = YES;
- CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_EMPTY_BODY = YES;
- CLANG_WARN_ENUM_CONVERSION = YES;
- CLANG_WARN_INFINITE_RECURSION = YES;
- CLANG_WARN_INT_CONVERSION = YES;
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
- CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_STRICT_PROTOTYPES = YES;
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
- CLANG_WARN_UNREACHABLE_CODE = YES;
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- COPY_PHASE_STRIP = NO;
- DEBUG_INFORMATION_FORMAT = dwarf;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- ENABLE_TESTABILITY = YES;
- GCC_C_LANGUAGE_STANDARD = gnu99;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_NO_COMMON_BLOCKS = YES;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "DEBUG=1",
- "$(inherited)",
- );
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_UNDECLARED_SELECTOR = YES;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GCC_WARN_UNUSED_FUNCTION = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 9.0;
- MTL_ENABLE_DEBUG_INFO = YES;
- ONLY_ACTIVE_ARCH = YES;
- SDKROOT = iphoneos;
- TARGETED_DEVICE_FAMILY = "1,2";
- VALIDATE_WORKSPACE = YES;
- };
- name = Debug;
- };
- 97C147041CF9000F007C117D /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
- CLANG_ANALYZER_NONNULL = YES;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
- CLANG_CXX_LIBRARY = "libc++";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
- CLANG_WARN_BOOL_CONVERSION = YES;
- CLANG_WARN_COMMA = YES;
- CLANG_WARN_CONSTANT_CONVERSION = YES;
- CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_EMPTY_BODY = YES;
- CLANG_WARN_ENUM_CONVERSION = YES;
- CLANG_WARN_INFINITE_RECURSION = YES;
- CLANG_WARN_INT_CONVERSION = YES;
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
- CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_STRICT_PROTOTYPES = YES;
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
- CLANG_WARN_UNREACHABLE_CODE = YES;
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- COPY_PHASE_STRIP = NO;
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- ENABLE_NS_ASSERTIONS = NO;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- GCC_C_LANGUAGE_STANDARD = gnu99;
- GCC_NO_COMMON_BLOCKS = YES;
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_UNDECLARED_SELECTOR = YES;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GCC_WARN_UNUSED_FUNCTION = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 9.0;
- MTL_ENABLE_DEBUG_INFO = NO;
- SDKROOT = iphoneos;
- SUPPORTED_PLATFORMS = iphoneos;
- SWIFT_COMPILATION_MODE = wholemodule;
- SWIFT_OPTIMIZATION_LEVEL = "-O";
- TARGETED_DEVICE_FAMILY = "1,2";
- VALIDATE_PRODUCT = YES;
- VALIDATE_WORKSPACE = YES;
- };
- name = Release;
- };
- 97C147061CF9000F007C117D /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CLANG_ENABLE_MODULES = YES;
- CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
- DEVELOPMENT_TEAM = YM3NZ7J25J;
- ENABLE_BITCODE = NO;
- INFOPLIST_FILE = Runner/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = (
- "$(inherited)",
- "@executable_path/Frameworks",
- );
- PRODUCT_BUNDLE_IDENTIFIER = com.rouninlabs.anotherBrotherExample;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
- SWIFT_OPTIMIZATION_LEVEL = "-Onone";
- SWIFT_VERSION = 5.0;
- VERSIONING_SYSTEM = "apple-generic";
- };
- name = Debug;
- };
- 97C147071CF9000F007C117D /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CLANG_ENABLE_MODULES = YES;
- CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
- DEVELOPMENT_TEAM = YM3NZ7J25J;
- ENABLE_BITCODE = NO;
- INFOPLIST_FILE = Runner/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = (
- "$(inherited)",
- "@executable_path/Frameworks",
- );
- PRODUCT_BUNDLE_IDENTIFIER = com.rouninlabs.anotherBrotherExample;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
- SWIFT_VERSION = 5.0;
- VERSIONING_SYSTEM = "apple-generic";
- };
- name = Release;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 97C147031CF9000F007C117D /* Debug */,
- 97C147041CF9000F007C117D /* Release */,
- 249021D3217E4FDB00AE95B9 /* Profile */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 97C147061CF9000F007C117D /* Debug */,
- 97C147071CF9000F007C117D /* Release */,
- 249021D4217E4FDB00AE95B9 /* Profile */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
-/* End XCConfigurationList section */
- };
- rootObject = 97C146E61CF9000F007C117D /* Project object */;
-}
diff --git a/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
deleted file mode 100644
index 919434a..0000000
--- a/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
diff --git a/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
deleted file mode 100644
index 18d9810..0000000
--- a/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
- IDEDidComputeMac32BitWarning
-
-
-
diff --git a/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
deleted file mode 100644
index f9b0d7c..0000000
--- a/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
- PreviewsEnabled
-
-
-
diff --git a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
deleted file mode 100644
index 46d2d0d..0000000
--- a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
+++ /dev/null
@@ -1,87 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/example/ios/Runner.xcworkspace/contents.xcworkspacedata b/example/ios/Runner.xcworkspace/contents.xcworkspacedata
deleted file mode 100644
index 21a3cc1..0000000
--- a/example/ios/Runner.xcworkspace/contents.xcworkspacedata
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
diff --git a/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
deleted file mode 100644
index 18d9810..0000000
--- a/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
- IDEDidComputeMac32BitWarning
-
-
-
diff --git a/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
deleted file mode 100644
index f9b0d7c..0000000
--- a/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
- PreviewsEnabled
-
-
-
diff --git a/example/ios/Runner/AppDelegate.swift b/example/ios/Runner/AppDelegate.swift
deleted file mode 100644
index 70693e4..0000000
--- a/example/ios/Runner/AppDelegate.swift
+++ /dev/null
@@ -1,13 +0,0 @@
-import UIKit
-import Flutter
-
-@UIApplicationMain
-@objc class AppDelegate: FlutterAppDelegate {
- override func application(
- _ application: UIApplication,
- didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
- ) -> Bool {
- GeneratedPluginRegistrant.register(with: self)
- return super.application(application, didFinishLaunchingWithOptions: launchOptions)
- }
-}
diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
deleted file mode 100644
index d36b1fa..0000000
--- a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
+++ /dev/null
@@ -1,122 +0,0 @@
-{
- "images" : [
- {
- "size" : "20x20",
- "idiom" : "iphone",
- "filename" : "Icon-App-20x20@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "20x20",
- "idiom" : "iphone",
- "filename" : "Icon-App-20x20@3x.png",
- "scale" : "3x"
- },
- {
- "size" : "29x29",
- "idiom" : "iphone",
- "filename" : "Icon-App-29x29@1x.png",
- "scale" : "1x"
- },
- {
- "size" : "29x29",
- "idiom" : "iphone",
- "filename" : "Icon-App-29x29@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "29x29",
- "idiom" : "iphone",
- "filename" : "Icon-App-29x29@3x.png",
- "scale" : "3x"
- },
- {
- "size" : "40x40",
- "idiom" : "iphone",
- "filename" : "Icon-App-40x40@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "40x40",
- "idiom" : "iphone",
- "filename" : "Icon-App-40x40@3x.png",
- "scale" : "3x"
- },
- {
- "size" : "60x60",
- "idiom" : "iphone",
- "filename" : "Icon-App-60x60@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "60x60",
- "idiom" : "iphone",
- "filename" : "Icon-App-60x60@3x.png",
- "scale" : "3x"
- },
- {
- "size" : "20x20",
- "idiom" : "ipad",
- "filename" : "Icon-App-20x20@1x.png",
- "scale" : "1x"
- },
- {
- "size" : "20x20",
- "idiom" : "ipad",
- "filename" : "Icon-App-20x20@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "29x29",
- "idiom" : "ipad",
- "filename" : "Icon-App-29x29@1x.png",
- "scale" : "1x"
- },
- {
- "size" : "29x29",
- "idiom" : "ipad",
- "filename" : "Icon-App-29x29@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "40x40",
- "idiom" : "ipad",
- "filename" : "Icon-App-40x40@1x.png",
- "scale" : "1x"
- },
- {
- "size" : "40x40",
- "idiom" : "ipad",
- "filename" : "Icon-App-40x40@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "76x76",
- "idiom" : "ipad",
- "filename" : "Icon-App-76x76@1x.png",
- "scale" : "1x"
- },
- {
- "size" : "76x76",
- "idiom" : "ipad",
- "filename" : "Icon-App-76x76@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "83.5x83.5",
- "idiom" : "ipad",
- "filename" : "Icon-App-83.5x83.5@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "1024x1024",
- "idiom" : "ios-marketing",
- "filename" : "Icon-App-1024x1024@1x.png",
- "scale" : "1x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-}
diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
deleted file mode 100644
index dc9ada4..0000000
Binary files a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png and /dev/null differ
diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
deleted file mode 100644
index 28c6bf0..0000000
Binary files a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png and /dev/null differ
diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
deleted file mode 100644
index 2ccbfd9..0000000
Binary files a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png and /dev/null differ
diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
deleted file mode 100644
index f091b6b..0000000
Binary files a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png and /dev/null differ
diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
deleted file mode 100644
index 4cde121..0000000
Binary files a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png and /dev/null differ
diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
deleted file mode 100644
index d0ef06e..0000000
Binary files a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png and /dev/null differ
diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
deleted file mode 100644
index dcdc230..0000000
Binary files a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png and /dev/null differ
diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
deleted file mode 100644
index 2ccbfd9..0000000
Binary files a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png and /dev/null differ
diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
deleted file mode 100644
index c8f9ed8..0000000
Binary files a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png and /dev/null differ
diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
deleted file mode 100644
index a6d6b86..0000000
Binary files a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png and /dev/null differ
diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
deleted file mode 100644
index a6d6b86..0000000
Binary files a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png and /dev/null differ
diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
deleted file mode 100644
index 75b2d16..0000000
Binary files a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png and /dev/null differ
diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
deleted file mode 100644
index c4df70d..0000000
Binary files a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png and /dev/null differ
diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
deleted file mode 100644
index 6a84f41..0000000
Binary files a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png and /dev/null differ
diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
deleted file mode 100644
index d0e1f58..0000000
Binary files a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png and /dev/null differ
diff --git a/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
deleted file mode 100644
index 0bedcf2..0000000
--- a/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "LaunchImage.png",
- "scale" : "1x"
- },
- {
- "idiom" : "universal",
- "filename" : "LaunchImage@2x.png",
- "scale" : "2x"
- },
- {
- "idiom" : "universal",
- "filename" : "LaunchImage@3x.png",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-}
diff --git a/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
deleted file mode 100644
index 9da19ea..0000000
Binary files a/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png and /dev/null differ
diff --git a/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
deleted file mode 100644
index 9da19ea..0000000
Binary files a/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png and /dev/null differ
diff --git a/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
deleted file mode 100644
index 9da19ea..0000000
Binary files a/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png and /dev/null differ
diff --git a/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
deleted file mode 100644
index 89c2725..0000000
--- a/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# Launch Screen Assets
-
-You can customize the launch screen with your own desired assets by replacing the image files in this directory.
-
-You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
\ No newline at end of file
diff --git a/example/ios/Runner/Base.lproj/LaunchScreen.storyboard b/example/ios/Runner/Base.lproj/LaunchScreen.storyboard
deleted file mode 100644
index f2e259c..0000000
--- a/example/ios/Runner/Base.lproj/LaunchScreen.storyboard
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/example/ios/Runner/Base.lproj/Main.storyboard b/example/ios/Runner/Base.lproj/Main.storyboard
deleted file mode 100644
index e4c2481..0000000
--- a/example/ios/Runner/Base.lproj/Main.storyboard
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/example/ios/Runner/Info.plist b/example/ios/Runner/Info.plist
deleted file mode 100644
index 29e7674..0000000
--- a/example/ios/Runner/Info.plist
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
-
- UIBackgroundModes
-
- fetch
- remote-notifications
-
- CFBundleDevelopmentRegion
- $(DEVELOPMENT_LANGUAGE)
- CFBundleExecutable
- $(EXECUTABLE_NAME)
- CFBundleIdentifier
- $(PRODUCT_BUNDLE_IDENTIFIER)
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- another_brother_example
- CFBundlePackageType
- APPL
- CFBundleShortVersionString
- $(FLUTTER_BUILD_NAME)
- CFBundleSignature
- ????
- CFBundleVersion
- $(FLUTTER_BUILD_NUMBER)
- LSRequiresIPhoneOS
-
- UILaunchStoryboardName
- LaunchScreen
- UIMainStoryboardFile
- Main
- UISupportedInterfaceOrientations
-
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
-
- UISupportedInterfaceOrientations~ipad
-
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationPortraitUpsideDown
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
-
- UIViewControllerBasedStatusBarAppearance
-
-
- NSLocalNetworkUsageDescription
- Looking for local tcp Bonjour service
- NSBonjourServices
-
- _ipp._tcp
- _printer._tcp
- _pdl-datastream._tcp
-
- UIBackgroundModes
-
- fetch
- remote-notifications
-
- NSBluetoothAlwaysUsageDescription
- Need BLE permission
- NSBluetoothPeripheralUsageDescription
- Need BLE permission
- NSLocationAlwaysAndWhenInUseUsageDescription
- Need Location permission
- NSLocationAlwaysUsageDescription
- Need Location permission
- NSLocationWhenInUseUsageDescription
- Need Location permission
- UISupportedExternalAccessoryProtocols
-
- com.brother.ptcbp
- com.issc.datapath
-
-
-
diff --git a/example/ios/Runner/Runner-Bridging-Header.h b/example/ios/Runner/Runner-Bridging-Header.h
deleted file mode 100644
index 308a2a5..0000000
--- a/example/ios/Runner/Runner-Bridging-Header.h
+++ /dev/null
@@ -1 +0,0 @@
-#import "GeneratedPluginRegistrant.h"
diff --git a/example/lib/main.dart b/example/lib/main.dart
deleted file mode 100644
index 7b308a7..0000000
--- a/example/lib/main.dart
+++ /dev/null
@@ -1,857 +0,0 @@
-import 'dart:io';
-import 'dart:typed_data';
-import 'dart:ui';
-
-import 'package:another_brother/custom_paper.dart';
-import 'package:another_brother/label_info.dart';
-import 'package:another_brother/printer_info.dart';
-import 'package:another_brother/type_b_commands.dart';
-import 'package:another_brother/type_b_printer.dart';
-import 'package:file_picker/file_picker.dart';
-import 'package:flutter/cupertino.dart';
-import 'package:flutter/material.dart';
-import "dart:ui" as ui;
-import 'dart:async';
-
-import 'package:flutter/services.dart';
-import 'package:another_brother/another_brother.dart';
-import 'package:flutter_blue_plus/flutter_blue_plus.dart';
-
-//import 'package:flutter_scan_bluetooth/flutter_scan_bluetooth.dart';
-// To add platforms, run `flutter create -t plugin --platforms .` under another_brother.
-void main() {
- runApp(MyApp());
- //runApp(TbPrinterSetup());
-}
-
-class MyApp extends StatefulWidget {
- @override
- _MyAppState createState() => _MyAppState();
-}
-
-class _MyAppState extends State {
- String _platformVersion = 'Unknown';
- File _selectedImage = null;
-
- ui.Image _imageToShow = null;
- Uint8List _imageBytes = null;
-
- @override
- void initState() {
- super.initState();
- initPlatformState();
- }
-
- // Platform messages are asynchronous, so we initialize in an async method.
- Future initPlatformState() async {
- String platformVersion;
- // Platform messages may fail, so we use a try/catch PlatformException.
- try {
- //platformVersion = await AnotherBrother.platformVersion;
- platformVersion = await Printer.platformVersion;
- } on PlatformException {
- platformVersion = 'Failed to get platform version.';
- }
-
- // If the widget was removed from the tree while the asynchronous platform
- // message was in flight, we want to discard the reply rather than calling
- // setState to update our non-existent appearance.
- if (!mounted) return;
-
- setState(() {
- _platformVersion = platformVersion;
- });
- }
-
- Future printLabelTypeB() async {
-
- TbPrinterInfo printerInfo = TbPrinterInfo(
- printerModel: TbModel.RJ_3035B,
- port: Port.BLUETOOTH,
- //port: Port.USB,
- //btAddress: "34:81:F4:9A:5A:EC"
- );
-
-
- //TbPrinterInfo printerInfo =
- // TbPrinterInfo(port: Port.NET, ipAddress: "10.0.0.35");
-
- /*
- TbPrinterInfo printerInfo = TbPrinterInfo(
- port: Port.USB);
- */
- TbPrinter printer = TbPrinter();
-
- await printer.setPrinterInfo(printerInfo);
-
- //var printersFound = await printer.getBLEPrinters();
- //print ("Found LE Printers: $printersFound");
- var printerFound = await printer.getBluetoothPrinters([TbModel.RJ_3035B.getName()]);
- print("Found Printers: $printerFound");
-
- printerInfo.btAddress = printerFound.single.macAddress;
- await printer.setPrinterInfo(printerInfo);
-
- bool success = false;
- success = await printer.startCommunication();
- print("TypeB: Connection Success? $success");
-
- //bool bleEnabled = await printer.toggleBle(false);
- //print("BLE Enabled: $bleEnabled");
-
- //success = await printer.formFeed();
- //print ("TypeB: Form Feed Success? $success");
-
- //success = await printer.downloadPcxAsset("assets/UL.PCX");
- //print ("TypeB: Download PCX Success? $success");
-
- //success = await printer.downloadBmpAsset("assets/LOGO.BMP");
- //print ("TypeB: Download BMP Success? $success");
-
- success = await printer.setup();
- print ("TypeB: Print Setup Success? $success");
-
- success = await printer.clearBuffer();
- print ("TypeB: Clear Buffer Success? $success");
-
- //success = await printer.barcode("1234567");
- //print ("TypeB: Barcode Success? $success");
-
- //success = await printer.printerFont("printerFont", x: 10, y: 150);
- //print ("TypeB: Printer Font Success? $success");
-
- //success = await printer.sendCommand("PUTPCX 145,15,\"UL.PCX\"\r\n");
- //success = await printer.sendTbCommand(TbCommandPutPcx(145, 15, "assets/UL.PCX"));
- //print ("TypeB: Send Command Success? $success");
-
- //success = await printer.sendCommand("PUTBMP 10,190,\"LOGO.BMP\"\r\n");
- //success = await printer.sendTbCommand(TbCommandPutBmp(10, 190, "assets/LOGO.BMP"));
- //print ("TypeB: Send Command Success? $success");
-
- //var assetImage = await loadImage("assets/brother_hack.png");
- //success = await printer.downloadImage(assetImage, scale: 0.6);
- success = await printer.downloadImageAsset("assets/brother_hack.png", x: 10, y:10, scale: 0.6);
- //success = await printer.downloadImageAsset("assets/LOGO.BMP", scale: 1, printerDpi: 95);
- print ("TypeB: Image Download Success? $success");
-
- //var grayImage = await printer.downloadImageAsset("assets/brother_hack.png", scale: 0.2);
- //_imageBytes = (await grayImage.toByteData(format: ImageByteFormat.rawUnmodified)).buffer.asUint8List();
- //setState(() {
- //_imageToShow = grayImage;
- //});
-
- //print ("TypeB: Image Download Success? $success");
-
- //success = await printer.printLabel();
- //print ("TypeB: Print Success? $success");
-
- //success = await printer.sendTbCommand(TbCommandSetWlanSsid(""));
- //success = await printer.sendTbCommand(TbCommandSetWlanSsid(null));
- //print("TypeB: WLAN Set Command Success? $success");
-
- //success = await printer.sendTbCommand(TbCommandSetWlanWpa(passKey: ""));
- //print("TypeB: WPA Set Command Success? $success");
-
- //success = await printer.sendTbCommand(TbCommandSetWlanIp(ipAddress: "10.0.0.35", gatewayAddress: "10.0.0.1"));
- //print("TypeB: WPA Set Command Success? $success");
-
- //success = await printer.sendTbCommand(TbCommandSetWlanDhcp());
- //print ("TypeB: DHCP Set Command Success? $success");
-
- //success = await printer.sendTbCommand(TbCommandSelfTest(page: TbSelfTestPage.SYSTEM));
- //print("TypeB: WLAN Test Command Success? $success");
-
- success = await printer.printLabel();
- print ("TypeB: Print Success? $success");
-
- TbPrinterStatus printerStatus = await printer.printerStatus();
- print ("TypeB: Printer Status? ${printerStatus.getStatusValue()}");
-
- // Delete all files downloaded to the printer memory
- success = await printer.sendTbCommand(TbCommandDeleteFile());
- print ("TypeB: Delete delete Success? $success");
-
- //bool fileSent = await printer.updateFirmAsset("assets/RJ-3035B_EZC_B1.00.Q38.NEW");
- //print("File Sent: $fileSent");
-
- success = await printer.endCommunication(timeoutMillis: 50000);
- print("TypeB: Connection Closed? $success");
-
- }
-
- Future loadImage(String assetPath) async {
- final ByteData img = await rootBundle.load(assetPath);
- final Completer completer = new Completer();
- ui.decodeImageFromList(new Uint8List.view(img.buffer), (ui.Image img) {
- return completer.complete(img);
- });
- return completer.future;
- }
-
- Future printImageUsb() async {
- PictureRecorder recorder = PictureRecorder();
- Canvas c = Canvas(recorder);
- Paint paint = new Paint();
- paint.color = Color.fromRGBO(255, 0, 0, 1);
- Rect bounds = new Rect.fromLTWH(0, 0, 300, 100);
- c.save();
- c.translate(150, 150);
- c.rotate(1.57);
- c.translate(-150, -150);
- c.drawRect(bounds, paint);
-
- c.restore();
-
- var picture = await recorder.endRecording().toImage(300, 300);
-
- _imageBytes = (await picture.toByteData(format: ImageByteFormat.png))
- .buffer
- .asUint8List();
- setState(() {
- //_imageToShow = picture;
- });
-
- var printer = new Printer();
- var printInfo = PrinterInfo();
- printInfo.port = Port.BLUETOOTH;
- //printInfo.printerModel = Model.QL_1110NWB;
- //printInfo.macAddress = "58:93:D8:BD:69:95"; // Printer Bluetooth Mac
- printInfo.printerModel = Model.RJ_4250WB;
- //printInfo.macAddress = "F8:5B:3B:70:BF:57"; // Printer Bluetooth Mac
- printInfo.macAddress = "69:50:C6:D5:33:0E"; // Printer Bluetooth Mac
- printInfo.printMode = PrintMode.FIT_TO_PAGE;
- printInfo.isAutoCut = true;
-
- printInfo.paperSize = PaperSize.CUSTOM;
- printInfo.binCustomPaper = BinPaper_RJ4250.RD_W4in;
-
- /*
- double width = 102.0;
- double rightMargin = 0.0;
- double leftMargin = 0.0;
- double topMargin = 0.0;
- CustomPaperInfo customPaperInfo = CustomPaperInfo.newCustomRollPaper(printInfo.printerModel,
- Unit.Mm,
- width,
- rightMargin,
- leftMargin,
- topMargin);
- printInfo.customPaperInfo = customPaperInfo;
- */
- //printInfo.port = Port.NET;
- //printInfo.ipAddress = "192.168.1.80"; // Printer Bluetooth Mac
- //printInfo.port = Port.USB;
- // Note: This request stopped working, revisit.
- //LabelInfo info = await printer.getLabelInfo();
- //print ("Label Info $info");
-
- //printInfo.labelNameIndex = info.labelNameIndex; //QL1100.ordinalFromID(QL1100.W103.getId());
- //printInfo.labelNameIndex = QL1100.ordinalFromID(QL1100.W103.getId());
-
- PrinterStatus status = PrinterStatus();
-
- //await printer.setPrinterInfo(printInfo);
- //status = await printer.printImage(picture);
- //print ("Got Status: $status and Error: ${status.errorCode.getName()}");
-
- //LabelInfo info = await printer.getLabelInfo();
- //print ("Label Info $info");
-
- // Alternatively we can startCommunication/endCommunication if we
- // want to do a batch operation.
- //bool opened = await printer.startCommunication();
-
- // Print
- //PrinterStatus status = await printer.printImage(picture);
-
- //var netPrinters = await printer.getNetPrinters([Model.QL_1110NWB.getName()]);
- //print ("Found Printers: $netPrinters");
-
- //List templates = [];
- //status = await printer.getTemplateList(templates);
- //print ("Found Templates: $templates");
-
- //BatteryInfo battInfo = await printer.getBatteryInfo();
- //print ("Found Battery Info: $battInfo");
-
- //status = await printer.updatePrinterSettings({PrinterSettingItem.RESET: ""});
- //print("Settings Status $status");
-
- //status = await printer.updatePrinterSettings({PrinterSettingItem.BT_DEVICENAME: "QL-1110NWB7078"});
- //print("Settings Status $status");
-
- //Map outValues = {};
- //status = await printer.getPrinterSettings([PrinterSettingItem.BT_DEVICENAME], outValues);
- //print ("Settings: ${outValues}");
-
- //var netPrinter = await printer.getNetPrinterInfo("192.168.1.80");
- //print ("Net Printer: $netPrinter");
-
- var blePrinters = await printer.getBLEPrinters(3000);
- print("BLE Printer: $blePrinters");
-
- if (blePrinters.isNotEmpty) {
- printInfo.port = Port.BLE;
- printInfo.setLocalName(blePrinters.single.localName);
- printer.setPrinterInfo(printInfo);
- status = await printer.printImage(picture);
- }
-
- /*
- FilePickerResult result = await FilePicker.platform.pickFiles(
- allowMultiple: true,
- type: FileType.custom,
- allowedExtensions: ['jpg', /*'pdf' ,*/ 'png']);
-
- //PrinterStatus status = PrinterStatus();
- if(result != null) {
- setState(() {
- //_selectedImage = File(result.files.single.path);
- });
- status = await printer.printFile(result.files.single.path);
- //int pages = await printer.getPdfFilePages(result.files.single.path);
- //print ("Pages in PDF: $pages");
- //status = await printer.printPdfFile(result.paths.single, 1);
-
- } else {
- // User canceled the picker
- }
-*/
-
- //bool closed = await printer.endCommunication();
-
- //print ("Got Status: $status and Error: ${status.errorCode.getName()}");
- print("Got Status: $status and Error: ${status.errorCode.getName()}");
- return status;
- //return PrinterStatus();
- }
-
- Future sleep() {
- return new Future.delayed(const Duration(seconds: 50), () => "5");
- }
-
- Future printBle() async {
- /*
- final String ip = await WifiInfo().getWifiIP();
- final String subnet = ip.substring(0, ip.lastIndexOf('.'));
- final int port = 80;
-
- final stream = NetworkAnalyzer.discover2(subnet, port);
- stream.listen((NetworkAddress addr) {
- if (addr.exists) {
- print('Found device: ${addr.ip}');
- }
- });
-
- */
-
- /*
- var reusePort = false;
- if (Platform.isIOS) {
- reusePort = true;
- }
- const String name = '_ipp._tcp';
- // https://github.com/flutter/flutter/issues/27346#issuecomment-594021847
- var factory = (dynamic host, int port,
- {bool reuseAddress, bool reusePort, int ttl}) {
- return RawDatagramSocket.bind(host, port, reuseAddress: true, reusePort: reusePort, ttl: 255);
- };
-
- var client = MDnsClient(rawDatagramSocketFactory: factory);
- //final MDnsClient client = MDnsClient();
- await client.start();
-
- // Get the PTR recod for the service.
- await for (PtrResourceRecord ptr in client
- .lookup(ResourceRecordQuery.serverPointer(name))) {
- await for (SrvResourceRecord srv in client.lookup(
- ResourceRecordQuery.service(ptr.domainName))) {
- String model =
- ptr.domainName.substring(0, ptr.domainName.indexOf('._printer'));
- print('Dart observatory instance found at '
- '${srv.target}:${srv.port} for "$model".');
- await for (IPAddressResourceRecord ipr in client.lookup(
- ResourceRecordQuery.addressIPv4(srv.target))) {
- debugPrint('Printer found at '
- '${ipr.address} with "$model".');
- model = "(mDNS)"+model;
- }
- }
- }
- client.stop();
- print('Done.');
- */
-
- /*
- final flutterNsd = FlutterNsd();
-
- await flutterNsd.discoverServices('_printer._tcp');
-
- flutterNsd.stream.listen((nsdServiceInfo) {
- print('Discovered service name: ${nsdServiceInfo.name}');
- print('Discovered service hostname/IP: ${nsdServiceInfo.hostname}');
- print('Discovered service port: ${nsdServiceInfo.port}');
-
- }, onError: (e) async {
- print("Error: ${e.errorCode}");
- });
-
- await Future.delayed(Duration(seconds: 4), () {flutterNsd.stopDiscovery();});
-
- */
-
- /*
- // This is the type of service we're looking for :
- String type = '_printer._tcp';//'_printer._tcp';
-// Once defined, we can start the discovery :
- BonsoirDiscovery discovery = BonsoirDiscovery(type: type);
- await discovery.ready;
- await discovery.start();
-
-// If you want to listen to the discovery :
- discovery.eventStream.listen((event) {
- print("Event $event");
- if (event.type == BonsoirDiscoveryEventType.DISCOVERY_SERVICE_FOUND) {
- print('Service found : ${event.service.toJson()}');
- } else if (event.type == BonsoirDiscoveryEventType.DISCOVERY_SERVICE_LOST) {
- print('Service lost : ${event.service.toJson()}');
- }
- });
-
-// Then if you want to stop the discovery :
- await Future.delayed(Duration(seconds: 40), () async {
- await discovery.stop();
- });
-
- */
- /*
- MDNSPlugin mdns = new MDNSPlugin(Delegate());
- await mdns.startDiscovery("_pdl-datastream._tcp",enableUpdating: true);
- await sleep();
- await mdns.stopDiscovery();
- await sleep();
- */
- var printer = new Printer();
- var printInfo = PrinterInfo();
- //printInfo.printerModel = Model.RJ_4250WB;
- printInfo.printerModel = Model.RJ_4250WB;
- printInfo.printMode = PrintMode.FIT_TO_PAGE;
- printInfo.isAutoCut = true;
- printInfo.rotate180 = false;
- printInfo.numberOfCopies = 2;
- printInfo.port = Port.BLE;
- //printInfo.setLocalName("RJ-4250WB_5113");
- //printInfo.port = Port.BLUETOOTH;
- //printInfo.macAddress = "795B8714-AC40-6FFE-C8D0-4FFF6D67D056";
- //printInfo.setLocalName("RJ-4250WB_5113");
-
- // Set the label type.
- double width = 102.0;
- double rightMargin = 0.0;
- double leftMargin = 0.0;
- double topMargin = 0.0;
- CustomPaperInfo customPaperInfo = CustomPaperInfo.newCustomRollPaper(
- printInfo.printerModel,
- Unit.Mm,
- width,
- rightMargin,
- leftMargin,
- topMargin);
- printInfo.customPaperInfo = customPaperInfo;
-
- // Set the printer info so we can use the SDK to get the printers.
- await printer.setPrinterInfo(printInfo);
-
- // Get a list of printers with my model available in the network.
- List printers = await printer.getBLEPrinters(3000);
- // Get the BT name from the first printer found.
- printInfo.setLocalName(printers.single.localName);
-
- //List netPrinters = await printer.getNetPrinters([Model.QL_1110NWB.getName()]);
- //print ("Net Printers Found: $netPrinters");
-
- //List netPrinters = await printer.getBluetoothPrinters([Model.RJ_4250WB.getName()]);
- //print ("Bt Printers Found: $netPrinters");
- //printInfo.macAddress = netPrinters.single.macAddress;
-
- printer.setPrinterInfo(printInfo);
-
- PictureRecorder recorder = PictureRecorder();
- Canvas c = Canvas(recorder);
- Paint paint = new Paint();
- paint.color = Color.fromRGBO(255, 0, 0, 1);
- Rect bounds = new Rect.fromLTWH(0, 0, 300, 100);
- c.drawRect(bounds, paint);
- var picture = await recorder.endRecording().toImage(300, 100);
- PrinterStatus status = await printer.printImage(picture);
-
- //FilePickerResult result = await FilePicker.platform.pickFiles();
-
- /*
- FilePickerResult result = await FilePicker.platform.pickFiles(allowMultiple: true,
- type: FileType.custom,
- allowedExtensions: ['jpg', 'pdf', 'png']);
-
-
- PrinterStatus status = PrinterStatus();
- if(result != null) {
- setState(() {
- _selectedImage = File(result.files.first.path);
- });
- //status = await printer.printFile(result.files.single.path);
- status = await printer.getPrinterStatus();
- print ("Got Status $status");
- // Get Information about currently loaded paper
- //LabelInfo labelInfo = await printer.getLabelInfo();
- //print ("Label Info: $labelInfo");
- //LabelParam labelParam = await printer.getLabelParam();
- //print ("Label Param $labelParam");
-
- //status = await printer.printFileList(result.paths);
- //status = await printer.printPdfFile(result.paths.first, 2);
-
- } else {
- // User canceled the picker
- }
-
- */
- }
-
- Future printImageBluetooth() async {
- var printer = new Printer();
- var printInfo = PrinterInfo();
- printInfo.printerModel = Model.QL_1110NWB;
- printInfo.printMode = PrintMode.FIT_TO_PAGE;
- printInfo.isAutoCut = true;
- printInfo.port = Port.NET;
- printInfo.numberOfCopies = 2;
- //printInfo.macAddress = "58:93:D8:BD:69:95"; // Printer BLuetooth Mac
- //printInfo.port = Port.NET;
- //printInfo.ipAddress = "192.168.1.80"; // Printer Bluetooth Mac
-
- // Ask the printer what label it has on.
- //printInfo.labelNameIndex = (await printer.getLabelInfo()).labelNameIndex; //QL1100.ordinalFromID(QL1100.W103.getId());
- printInfo.labelNameIndex = QL1100.ordinalFromID(QL1100.W62.getId());
-
- /*
- List netPrinters =
- await printer.getBluetoothPrinters([Model.QL_1110NWB.getName()]);
- print("Bt Printers Found: $netPrinters");
- printInfo.macAddress = netPrinters.single.macAddress;
-*/
- List netPrinters =
- await printer.getNetPrinters([Model.QL_1110NWB.getName()]);
- print("Net Printers Found: $netPrinters");
- printInfo.ipAddress = netPrinters.single.ipAddress;
-
- /*
- var printer = new Printer();
- var printInfo = PrinterInfo();
- printInfo.printerModel = Model.PJ_773;
- printInfo.printMode = PrintMode.FIT_TO_PAGE;
- printInfo.isAutoCut = true;
- printInfo.port = Port.NET;
- // Set the label type.
- printInfo.paperSize = PaperSize.A4;
-
- // Set the printer info so we can use the SDK to get the printers.
- await printer.setPrinterInfo(printInfo);
-
- // Get a list of printers with my model available in the network.
- List printers = await printer.getNetPrinters([Model.PJ_773.getName()]);
- // Get the IP Address from the first printer found.
- printInfo.ipAddress = printers.single.ipAddress;
-*/
- printer.setPrinterInfo(printInfo);
-
- await printer.setPrinterInfo(printInfo);
-
- /*
- PictureRecorder recorder = PictureRecorder();
- Canvas c = Canvas(recorder);
- Paint paint = new Paint();
- paint.color = Color.fromRGBO(255, 0, 0, 1);
- Rect bounds = new Rect.fromLTWH(0, 0, 300, 100);
- c.drawRect(bounds, paint);
- var picture = await recorder.endRecording().toImage(300, 100);
- PrinterStatus status = await printer.printImage(picture);
-*/
-
- TextStyle style = TextStyle(
- color: Colors.black,
- fontSize: 30,
- fontWeight: FontWeight.bold
- );
-
- ui.ParagraphBuilder paragraphBuilder = ui.ParagraphBuilder(
- ui.ParagraphStyle(
- fontSize: style.fontSize,
- fontFamily: style.fontFamily,
- fontStyle: style.fontStyle,
- fontWeight: style.fontWeight,
- textAlign: TextAlign.center,
- maxLines: 10,
- )
- )
- ..pushStyle(style.getTextStyle())
- ..addText("Hello World This is a long text ");
-
- ui.Paragraph paragraph = paragraphBuilder.build()..layout(ui.ParagraphConstraints(width: 300));
-
- PrinterStatus status = await printer.printText(paragraph);
-
- //FilePickerResult result = await FilePicker.platform.pickFiles();
-
- //FilePickerResult result = await FilePicker.platform.pickFiles(allowMultiple: true,
- // type: FileType.custom,
- // allowedExtensions: ['jpg', 'pdf', 'png']);
-
- /*
- PrinterStatus status = PrinterStatus();
- if(result != null) {
- setState(() {
- _selectedImage = File(result.files.single.path);
- });
- status = await printer.printFile(result.files.single.path);
- // Get Information about currently loaded paper
- //LabelInfo labelInfo = await printer.getLabelInfo();
- //print ("Label Info: $labelInfo");
- //LabelParam labelParam = await printer.getLabelParam();
- //print ("Label Param $labelParam");
-
- //status = await printer.printFileList(result.paths);
-
- } else {
- // User canceled the picker
- }
- */
-
- print("Got Status: $status and Error: ${status.errorCode.getName()}");
- return status;
- }
-
- @override
- Widget build(BuildContext context) {
- return MaterialApp(
- home: Scaffold(
- appBar: AppBar(
- title: const Text('Plugin example app'),
- ),
- body: Column(
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- Center(
- child: Text('Running on: $_platformVersion\n'),
- ),
- _selectedImage != null
- ? Image.file(_selectedImage)
- : Text("No Image Selected"),
- _imageBytes != null
- ? Image.memory(_imageBytes)
- : Text("No Image From Canvas"),
- Row(
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- Padding(
- padding: const EdgeInsets.all(8.0),
- child: ElevatedButton(
- onPressed: () {
- printImageUsb();
- },
- child: Text("Print USB")),
- ),
- Padding(
- padding: const EdgeInsets.all(8.0),
- child: ElevatedButton(
- onPressed: () {
- //printBle();
- //printImageBluetooth();
- printLabelTypeB();
- },
- child: Text("Print Bluetooth")),
- ),
- ],
- )
- ],
- ),
- ),
- );
- }
-}
-/*
-class Delegate implements MDNSPluginDelegate {
- void onDiscoveryStarted() {
- print("Discovery started");
- }
- void onDiscoveryStopped() {
- print("Discovery stopped");
- }
- bool onServiceFound(MDNSService service) {
- print("Found: $service");
- // Always returns true which begins service resolution
- return true;
- }
- void onServiceResolved(MDNSService service) {
- print("Resolved: $service");
- }
- void onServiceUpdated(MDNSService service) {
- print("Updated: $service");
- }
- void onServiceRemoved(MDNSService service) {
- print("Removed: $service");
- }
-}
-
- */
-
-class TbPrinterSetup extends StatefulWidget {
- @override
- _TbPrinterSetupState createState() => _TbPrinterSetupState();
-}
-
-class _TbPrinterSetupState extends State {
-
- final _ssidEditController = TextEditingController();
- final _ssidWPAKeyController = TextEditingController();
-
- TbPrinterInfo printerInfo = TbPrinterInfo(port: Port.USB);
- TbPrinter printer = TbPrinter();
-/*
- TbPrinterInfo printerInfo = TbPrinterInfo(
- port: Port.BLUETOOTH,
- btAddress: "00:80:A3:8B:51:FD");
-*/
-
- @override
- void initState() {
- super.initState();
- }
-
- @override
- void dispose(){
- // TODO: implement dispose
- super.dispose();
-
- _ssidEditController.dispose();
- _ssidWPAKeyController.dispose();
-
- }
-
- Future configureSSid(String ssid, String passkey) async {
-
-
- await printer.setPrinterInfo(printerInfo);
- bool success = await printer.startCommunication();
- print("Connected to printer? $success");
-
- success = await printer.clearBuffer();
-
- success = await printer.sendTbCommand(TbCommandSetWlanSsid(ssid));
- print("TypeB: WLAN Set Command Success? $success");
-
- success = success && await printer
- .sendTbCommand(TbCommandSetWlanWpa(passKey: passkey));
- print("TypeB: WPA Set Command Success? $success");
-
- success = await printer.sendTbCommand(TbCommandSetWlanDhcp());
- print("TypeB: DHCP Set Command Success? $success");
-
- success = await printer.barcode(ssid);
- await printer.printLabel();
- success = await printer.endCommunication();
-
- return success;
- }
-
- Future printBtInfo () async {
-
- await printer.setPrinterInfo(printerInfo);
- bool success = await printer.startCommunication();
- print("Connected to printer? $success");
-
- success = await printer.clearBuffer();
-
- success = await printer.sendTbCommand(TbCommandSelfTest(page: TbSelfTestPage.BT));
- print("TypeB: BT Test Set Command Success? $success");
-
- success = await printer.endCommunication();
-
- return success;
-
- }
-
- Future printAllSettings() async {
- await printer.setPrinterInfo(printerInfo);
- bool success = await printer.startCommunication();
- print("Connected to printer? $success");
-
- success = await printer.clearBuffer();
-
- success = await printer.sendTbCommand(TbCommandSelfTest());
- print("TypeB: All Test Set Command Success? $success");
-
- success = await printer.endCommunication();
-
- return success;
- }
-
- @override
- Widget build(BuildContext context) {
- return MaterialApp(
- home: Scaffold(
- appBar: AppBar(
- title: const Text('Type B WiFi Configuration'),
- ),
- body: Column(
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- Padding(
- padding: const EdgeInsets.all(8.0),
- child: TextFormField(
- controller: _ssidEditController,
- decoration: InputDecoration(
- border: UnderlineInputBorder(),
- labelText: 'Enter Network SSID',
- ),
- ),
- ),
- Padding(
- padding: const EdgeInsets.all(8.0),
- child: TextFormField(
- controller: _ssidWPAKeyController,
- decoration: InputDecoration(
- border: UnderlineInputBorder(),
- labelText: 'Enter Network PASSKEY',
- ),
- ),
- ),
- Padding(
- padding: const EdgeInsets.only(top: 18.0),
- child: Row(
- mainAxisAlignment: MainAxisAlignment.spaceEvenly,
- children: [
- ElevatedButton(
- child: Text("Print BT Settings"),
- onPressed: () {
- // Print BT Info
- printBtInfo();
- }),
- ElevatedButton(onPressed: () {
- printAllSettings();
- //printer.sendTbCommand(TbCommandSelfTest());
- }, child: Text("Print All Settings"))
- ],
- ),
- ),
- Padding(
- padding: const EdgeInsets.only(top:28.0),
- child: ElevatedButton(onPressed: (){
- configureSSid(_ssidEditController.value.text, _ssidWPAKeyController.value.text);
- }, child: Text("Configure WiFI")),
- )
- ],
- ),
- ),
- );
- }
-}
diff --git a/example/pubspec.lock b/example/pubspec.lock
deleted file mode 100644
index 02ee7b8..0000000
--- a/example/pubspec.lock
+++ /dev/null
@@ -1,327 +0,0 @@
-# Generated by pub
-# See https://dart.dev/tools/pub/glossary#lockfile
-packages:
- another_brother:
- dependency: "direct main"
- description:
- path: ".."
- relative: true
- source: path
- version: "0.0.22"
- async:
- dependency: transitive
- description:
- name: async
- url: "https://pub.dartlang.org"
- source: hosted
- version: "2.8.2"
- boolean_selector:
- dependency: transitive
- description:
- name: boolean_selector
- url: "https://pub.dartlang.org"
- source: hosted
- version: "2.1.0"
- characters:
- dependency: transitive
- description:
- name: characters
- url: "https://pub.dartlang.org"
- source: hosted
- version: "1.2.0"
- charcode:
- dependency: transitive
- description:
- name: charcode
- url: "https://pub.dartlang.org"
- source: hosted
- version: "1.3.1"
- clock:
- dependency: transitive
- description:
- name: clock
- url: "https://pub.dartlang.org"
- source: hosted
- version: "1.1.0"
- collection:
- dependency: transitive
- description:
- name: collection
- url: "https://pub.dartlang.org"
- source: hosted
- version: "1.16.0"
- convert:
- dependency: transitive
- description:
- name: convert
- url: "https://pub.dartlang.org"
- source: hosted
- version: "3.0.2"
- cupertino_icons:
- dependency: "direct main"
- description:
- name: cupertino_icons
- url: "https://pub.dartlang.org"
- source: hosted
- version: "1.0.3"
- fake_async:
- dependency: transitive
- description:
- name: fake_async
- url: "https://pub.dartlang.org"
- source: hosted
- version: "1.3.0"
- ffi:
- dependency: transitive
- description:
- name: ffi
- url: "https://pub.dartlang.org"
- source: hosted
- version: "2.0.0"
- file:
- dependency: transitive
- description:
- name: file
- url: "https://pub.dartlang.org"
- source: hosted
- version: "6.1.0"
- file_picker:
- dependency: "direct main"
- description:
- name: file_picker
- url: "https://pub.dartlang.org"
- source: hosted
- version: "3.0.1"
- fixnum:
- dependency: transitive
- description:
- name: fixnum
- url: "https://pub.dartlang.org"
- source: hosted
- version: "1.0.0"
- flutter:
- dependency: "direct main"
- description: flutter
- source: sdk
- version: "0.0.0"
- flutter_blue_plus:
- dependency: "direct main"
- description:
- name: flutter_blue_plus
- url: "https://pub.dartlang.org"
- source: hosted
- version: "1.1.3"
- flutter_plugin_android_lifecycle:
- dependency: transitive
- description:
- name: flutter_plugin_android_lifecycle
- url: "https://pub.dartlang.org"
- source: hosted
- version: "2.0.1"
- flutter_test:
- dependency: "direct dev"
- description: flutter
- source: sdk
- version: "0.0.0"
- flutter_web_plugins:
- dependency: transitive
- description: flutter
- source: sdk
- version: "0.0.0"
- js:
- dependency: transitive
- description:
- name: js
- url: "https://pub.dartlang.org"
- source: hosted
- version: "0.6.4"
- matcher:
- dependency: transitive
- description:
- name: matcher
- url: "https://pub.dartlang.org"
- source: hosted
- version: "0.12.11"
- material_color_utilities:
- dependency: transitive
- description:
- name: material_color_utilities
- url: "https://pub.dartlang.org"
- source: hosted
- version: "0.1.4"
- meta:
- dependency: transitive
- description:
- name: meta
- url: "https://pub.dartlang.org"
- source: hosted
- version: "1.7.0"
- path:
- dependency: transitive
- description:
- name: path
- url: "https://pub.dartlang.org"
- source: hosted
- version: "1.8.1"
- path_provider:
- dependency: transitive
- description:
- name: path_provider
- url: "https://pub.dartlang.org"
- source: hosted
- version: "2.0.11"
- path_provider_android:
- dependency: transitive
- description:
- name: path_provider_android
- url: "https://pub.dartlang.org"
- source: hosted
- version: "2.0.14"
- path_provider_ios:
- dependency: transitive
- description:
- name: path_provider_ios
- url: "https://pub.dartlang.org"
- source: hosted
- version: "2.0.9"
- path_provider_linux:
- dependency: transitive
- description:
- name: path_provider_linux
- url: "https://pub.dartlang.org"
- source: hosted
- version: "2.1.7"
- path_provider_macos:
- dependency: transitive
- description:
- name: path_provider_macos
- url: "https://pub.dartlang.org"
- source: hosted
- version: "2.0.0"
- path_provider_platform_interface:
- dependency: transitive
- description:
- name: path_provider_platform_interface
- url: "https://pub.dartlang.org"
- source: hosted
- version: "2.0.1"
- path_provider_windows:
- dependency: transitive
- description:
- name: path_provider_windows
- url: "https://pub.dartlang.org"
- source: hosted
- version: "2.1.0"
- platform:
- dependency: transitive
- description:
- name: platform
- url: "https://pub.dartlang.org"
- source: hosted
- version: "3.0.0"
- plugin_platform_interface:
- dependency: transitive
- description:
- name: plugin_platform_interface
- url: "https://pub.dartlang.org"
- source: hosted
- version: "2.0.0"
- process:
- dependency: transitive
- description:
- name: process
- url: "https://pub.dartlang.org"
- source: hosted
- version: "4.2.1"
- protobuf:
- dependency: transitive
- description:
- name: protobuf
- url: "https://pub.dartlang.org"
- source: hosted
- version: "2.0.1"
- rxdart:
- dependency: transitive
- description:
- name: rxdart
- url: "https://pub.dartlang.org"
- source: hosted
- version: "0.27.4"
- sky_engine:
- dependency: transitive
- description: flutter
- source: sdk
- version: "0.0.99"
- source_span:
- dependency: transitive
- description:
- name: source_span
- url: "https://pub.dartlang.org"
- source: hosted
- version: "1.8.2"
- stack_trace:
- dependency: transitive
- description:
- name: stack_trace
- url: "https://pub.dartlang.org"
- source: hosted
- version: "1.10.0"
- stream_channel:
- dependency: transitive
- description:
- name: stream_channel
- url: "https://pub.dartlang.org"
- source: hosted
- version: "2.1.0"
- string_scanner:
- dependency: transitive
- description:
- name: string_scanner
- url: "https://pub.dartlang.org"
- source: hosted
- version: "1.1.0"
- term_glyph:
- dependency: transitive
- description:
- name: term_glyph
- url: "https://pub.dartlang.org"
- source: hosted
- version: "1.2.0"
- test_api:
- dependency: transitive
- description:
- name: test_api
- url: "https://pub.dartlang.org"
- source: hosted
- version: "0.4.9"
- typed_data:
- dependency: transitive
- description:
- name: typed_data
- url: "https://pub.dartlang.org"
- source: hosted
- version: "1.3.0"
- vector_math:
- dependency: transitive
- description:
- name: vector_math
- url: "https://pub.dartlang.org"
- source: hosted
- version: "2.1.2"
- win32:
- dependency: transitive
- description:
- name: win32
- url: "https://pub.dartlang.org"
- source: hosted
- version: "2.7.0"
- xdg_directories:
- dependency: transitive
- description:
- name: xdg_directories
- url: "https://pub.dartlang.org"
- source: hosted
- version: "0.2.0"
-sdks:
- dart: ">=2.17.0 <3.0.0"
- flutter: ">=3.0.0"
diff --git a/example/pubspec.yaml b/example/pubspec.yaml
deleted file mode 100644
index 9204dd8..0000000
--- a/example/pubspec.yaml
+++ /dev/null
@@ -1,80 +0,0 @@
-name: another_brother_example
-description: Demonstrates how to use the another_brother plugin.
-
-# The following line prevents the package from being accidentally published to
-# pub.dev using `pub publish`. This is preferred for private packages.
-publish_to: 'none' # Remove this line if you wish to publish to pub.dev
-
-environment:
- sdk: ">=2.7.0 <3.0.0"
-
-dependencies:
- flutter:
- sdk: flutter
- file_picker: ^3.0.1
-
- flutter_blue_plus: ^1.1.3
-
- another_brother:
- # When depending on this package from a real application you should use:
- # another_brother: ^x.y.z
- # See https://dart.dev/tools/pub/dependencies#version-constraints
- # The example app is bundled with the plugin so we use a path dependency on
- # the parent directory to use the current plugin's version.
- path: ../
-
- # The following adds the Cupertino Icons font to your application.
- # Use with the CupertinoIcons class for iOS style icons.
- cupertino_icons: ^1.0.2
-
-
-dev_dependencies:
- flutter_test:
- sdk: flutter
-
-# For information on the generic Dart part of this file, see the
-# following page: https://dart.dev/tools/pub/pubspec
-
-# The following section is specific to Flutter.
-flutter:
-
- # The following line ensures that the Material Icons font is
- # included with your application, so that you can use the icons in
- # the material Icons class.
- uses-material-design: true
-
- # To add assets to your application, add an assets section, like this:
- assets:
- - assets/LOGO.BMP
- - assets/UL.PCX
- - assets/brother_hack.png
- - assets/logos.bmp
- - assets/RJ-2035B_EZC_B1.00.Q38.NEW
- - assets/RJ-3035B_EZC_B1.00.Q38.NEW
- # - images/a_dot_ham.jpeg
-
- # An image asset can refer to one or more resolution-specific "variants", see
- # https://flutter.dev/assets-and-images/#resolution-aware.
-
- # For details regarding adding assets from package dependencies, see
- # https://flutter.dev/assets-and-images/#from-packages
-
- # To add custom fonts to your application, add a fonts section here,
- # in this "flutter" section. Each entry in this list should have a
- # "family" key with the font family name, and a "fonts" key with a
- # list giving the asset and other descriptors for the font. For
- # example:
- # fonts:
- # - family: Schyler
- # fonts:
- # - asset: fonts/Schyler-Regular.ttf
- # - asset: fonts/Schyler-Italic.ttf
- # style: italic
- # - family: Trajan Pro
- # fonts:
- # - asset: fonts/TrajanPro.ttf
- # - asset: fonts/TrajanPro_Bold.ttf
- # weight: 700
- #
- # For details regarding fonts from package dependencies,
- # see https://flutter.dev/custom-fonts/#from-packages
diff --git a/example/test/widget_test.dart b/example/test/widget_test.dart
deleted file mode 100644
index c1e0541..0000000
--- a/example/test/widget_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// This is a basic Flutter widget test.
-//
-// To perform an interaction with a widget in your test, use the WidgetTester
-// utility that Flutter provides. For example, you can send tap and scroll
-// gestures. You can also use WidgetTester to find child widgets in the widget
-// tree, read text, and verify that the values of widget properties are correct.
-
-import 'package:flutter/material.dart';
-import 'package:flutter_test/flutter_test.dart';
-
-import 'package:another_brother_example/main.dart';
-
-void main() {
- testWidgets('Verify Platform version', (WidgetTester tester) async {
- // Build our app and trigger a frame.
- await tester.pumpWidget(MyApp());
-
- // Verify that platform version is retrieved.
- expect(
- find.byWidgetPredicate(
- (Widget widget) => widget is Text &&
- widget.data.startsWith('Running on:'),
- ),
- findsOneWidget,
- );
- });
-}
diff --git a/ios/Classes/AnotherBrotherPlugin.m b/ios/Classes/AnotherBrotherPlugin.m
index e000653..bbc3958 100644
--- a/ios/Classes/AnotherBrotherPlugin.m
+++ b/ios/Classes/AnotherBrotherPlugin.m
@@ -21,6 +21,22 @@
#import "Method/GetBluetoothPrintersMethodCall.h"
#import "Method/StartCommunicationMethodCall.h"
#import "Method/EndCommunicationMethodCall.h"
+//#import "Method/GetPdfFilePagesMethodCall.h"
+//#import "Method/TypeB/TbStartCommunicationMethodCall.h"
+//#import "Method/TypeB/TbEndCommunicationMethodCall.h"
+//#import "Method/TypeB/TbSendCommandMethodCall.h"
+//#import "Method/TypeB/TbSendCommandBinMethodCall.h"
+//#import "Method/TypeB/TbGetBluetoothPrintersMethodCall.h"
+//#import "Method/TypeB/TbSetupMethodCall.h"
+//#import "Method/TypeB/TbBarcodeMethodCall.h"
+//#import "Method/TypeB/TbClearBufferMethodCall.h"
+//#import "Method/TypeB/TbDownloadBmpMethodCall.h"
+//#import "Method/TypeB/TbDownloadPcxMethodCall.h"
+//#import "Method/TypeB/TbFormFeedMethodCall.h"
+//#import "Method/TypeB/TbNoBackFeedMethodCall.h"
+//#import "Method/TypeB/TbPrintLabelMethodCall.h"
+//#import "Method/TypeB/TbPrinterFontMethodCall.h"
+//#import "Method/TypeB/TbGetPrinterStatusMethodCall.h"
/*
@implementation AnotherBrotherPlugin
@@ -81,9 +97,58 @@ - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result {
else if ([[EndCommunicationMethodCall METHOD_NAME] isEqualToString:call.method]) {
[[[EndCommunicationMethodCall alloc] initWithCall:call result:result] execute];
}
- else {
- result(FlutterMethodNotImplemented);
- }
+// else if ([[GetPdfFilePagesMethodCall METHOD_NAME] isEqualToString:call.method]) {
+// [[[GetPdfFilePagesMethodCall alloc] initWithCall:call result:result] execute];
+// }
+// // TYPE B
+// else if ([[TbStartCommunicationMethodCall METHOD_NAME] isEqualToString:call.method]) {
+// [[[TbStartCommunicationMethodCall alloc] initWithCall:call result:result plugin:self] execute];
+// }
+// else if ([[TbEndCommunicationMethodCall METHOD_NAME] isEqualToString:call.method]) {
+// [[[TbEndCommunicationMethodCall alloc] initWithCall:call result:result plugin:self] execute];
+// }
+// else if ([[TbSendCommandMethodCall METHOD_NAME] isEqualToString:call.method]) {
+// [[[TbSendCommandMethodCall alloc] initWithCall:call result:result plugin:self] execute];
+// }
+// else if ([[TbSendCommandBinMethodCall METHOD_NAME] isEqualToString:call.method]) {
+// [[[TbSendCommandBinMethodCall alloc] initWithCall:call result:result plugin:self] execute];
+// }
+// else if ([[TbGetBluetoothPrintersMethodCall METHOD_NAME] isEqualToString:call.method]) {
+// [[[TbGetBluetoothPrintersMethodCall alloc] initWithCall:call result:result plugin:self ] execute];
+// }
+// else if ([[TbSetupMethodCall METHOD_NAME] isEqualToString:call.method ]) {
+// [[[TbSetupMethodCall alloc] initWithCall:call result:result plugin:self] execute];
+// }
+// else if ([[TbBarcodeMethodCall METHOD_NAME] isEqualToString:call.method]) {
+// [[[TbBarcodeMethodCall alloc] initWithCall:call result:result plugin:self] execute];
+// }
+// else if ([[TbClearBufferMethodCall METHOD_NAME] isEqualToString:call.method]) {
+// [[[TbClearBufferMethodCall alloc] initWithCall:call result:result plugin:self] execute];
+// }
+// else if ([[TbDownloadPcxMethodCall METHOD_NAME] isEqualToString:call.method]) {
+// [[[TbDownloadPcxMethodCall alloc] initWithCall:call result:result plugin:self] execute];
+// }
+// else if ([[TbDownloadBmpMethodCall METHOD_NAME] isEqualToString:call.method]) {
+// [[[TbDownloadBmpMethodCall alloc] initWithCall:call result:result plugin:self] execute];
+// }
+// else if ([[TbFormFeedMethodCall METHOD_NAME] isEqualToString:call.method]) {
+// [[[TbFormFeedMethodCall alloc] initWithCall:call result:result plugin:self] execute];
+// }
+// else if ([[TbNoBackFeedMethodCall METHOD_NAME] isEqualToString:call.method]) {
+// [[[TbNoBackFeedMethodCall alloc] initWithCall:call result:result plugin:self] execute];
+// }
+// else if ([[TbPrintLabelMethodCall METHOD_NAME] isEqualToString:call.method]) {
+// [[[TbPrintLabelMethodCall alloc] initWithCall:call result:result plugin:self] execute];
+// }
+// else if ([[TbPrinterFontMethodCall METHOD_NAME] isEqualToString:call.method]) {
+// [[[TbPrinterFontMethodCall alloc] initWithCall:call result:result plugin:self] execute];
+// }
+// else if ([[TbGetPrinterStatusMethodCall METHOD_NAME] isEqualToString:call.method]) {
+// [[[TbGetPrinterStatusMethodCall alloc] initWithCall:call result:result plugin:self] execute];
+// }
+// else {
+// result(FlutterMethodNotImplemented);
+// }
}
diff --git a/ios/Classes/Method/BrotherUtils.h b/ios/Classes/Method/BrotherUtils.h
index 94164dc..154c490 100644
--- a/ios/Classes/Method/BrotherUtils.h
+++ b/ios/Classes/Method/BrotherUtils.h
@@ -81,10 +81,25 @@
// DONE
+ (BRLMMWPrintSettings *) mwPrintSettingsFromMapWithValue:(NSDictionary *) map;
++ (NSNumber *) labelIdTypeToNumberWithValue:(LabelIdType) labelTypeId;
+
++ (NSNumber *) colorTypeToNumberWithValue:(ColorType) colorType;
++ (NSString *) colorTypeToNameWithValue:(ColorType) colorType;
+
++ (NSDictionary *) colorTypeToMapWithValue:(ColorType)colorType;
+
+ (NSDictionary *) errorCodeToMapWithValue:(BRLMPrintErrorCode)error;
+//+ (NSDictionary *) statusErrorCodeToMapWithValue:(BRLMPrinterStatusErrorCode)error;
+
++ (BRLMPrintErrorCode) statusErrorCodeToMapWithRawStatus:(BRLMPrinterStatusRawDataStructure)status;
+
++ (NSDictionary *) errorCodeToMapWithId:(NSNumber* )errorId;
+
+ (NSDictionary *) printerStatusToMapWithError:(BRLMPrintErrorCode)error status:(BRLMPrinterStatus *) status;
++ (NSDictionary *) labelInfoStatuesToMapWithStatus:(BRPtouchLabelInfoStatus *) status;
+
+ (NSDictionary *) bRPtouchDeviceInfoToNetPrinterMap:(BRPtouchDeviceInfo *) deviceInfo;
+ (NSDictionary *) bRPtouchDeviceInfoToBlePrinterMap:(BRPtouchDeviceInfo *) deviceInfo;
diff --git a/ios/Classes/Method/BrotherUtils.m b/ios/Classes/Method/BrotherUtils.m
index 3c2d598..612463d 100644
--- a/ios/Classes/Method/BrotherUtils.m
+++ b/ios/Classes/Method/BrotherUtils.m
@@ -153,6 +153,10 @@ + (BRLMPrinterModel)modelFromMapWithValue:(NSDictionary *
else if([@"PT_E850TKW" isEqualToString:name]) {
return BRLMPrinterModelPT_E850TKW;
}
+ else if([@"PT_D610BT" isEqualToString:name]) {
+ // Returns some PT model to see if we can print since the sdk doesn't seem to have a constant for it.
+ return BRLMPrinterModelPT_D800W;
+ }
else if([@"PT_D800W" isEqualToString:name]) {
return BRLMPrinterModelPT_D800W;
}
@@ -679,6 +683,7 @@ + (BRLMQLPrintSettings *) qlPrintSettingsFromMapWithValue:(NSDictionary * dartOrientation = (NSDictionary *)[map objectForKey:@"orientation"];
BRLMPTPrintSettings * printerSettings = [[BRLMPTPrintSettings alloc] initDefaultPrintSettingsWithPrinterModel:printerModel];
@@ -1279,6 +1285,8 @@ + (BRLMPTPrintSettings *)ptPrintSettingsFromMapWithValue:(NSDictionary *) errorCodeToMapWithId:(NSNumber *)errorId {
+
+ NSString * errorName = @"ERROR_NONE";
+ if ([errorId isEqualToNumber:@1]) {
+ errorName = @"ERROR_NONE";
+ }
+ else if ([errorId isEqualToNumber:@2]) {
+ errorName = @"ERROR_NOT_SAME_MODEL";
+ }
+ else if ([errorId isEqualToNumber:@3]) {
+ errorName = @"ERROR_BROTHER_PRINTER_NOT_FOUND";
+ }
+ else if ([errorId isEqualToNumber:@4]) {
+ errorName = @"ERROR_PAPER_EMPTY";
+ }
+ else if ([errorId isEqualToNumber:@5]) {
+ errorName = @"ERROR_BATTERY_EMPTY";
+ }
+ else if ([errorId isEqualToNumber:@6]) {
+ errorName = @"ERROR_COMMUNICATION_ERROR";
+ }
+ else if ([errorId isEqualToNumber:@7]) {
+ errorName = @"ERROR_OVERHEAT";
+ }
+ else if ([errorId isEqualToNumber:@8]) {
+ errorName = @"ERROR_PAPER_JAM";
+ }
+ else if ([errorId isEqualToNumber:@9]) {
+ errorName = @"ERROR_HIGH_VOLTAGE_ADAPTER";
+ }
+ else if ([errorId isEqualToNumber:@10]) {
+ errorName = @"ERROR_CHANGE_CASSETTE";
+ }
+ else if ([errorId isEqualToNumber:@11]) {
+ errorName = @"ERROR_FEED_OR_CASSETTE_EMPTY";
+ }
+ else if ([errorId isEqualToNumber:@12]) {
+ errorName = @"ERROR_SYSTEM_ERROR";
+ }
+ else if ([errorId isEqualToNumber:@13]) {
+ errorName = @"ERROR_NO_CASSETTE";
+ }
+ else if ([errorId isEqualToNumber:@14]) {
+ errorName = @"ERROR_WRONG_CASSETTE_DIRECT";
+ }
+ else if ([errorId isEqualToNumber:@15]) {
+ errorName = @"ERROR_CREATE_SOCKET_FAILED";
+ }
+ else if ([errorId isEqualToNumber:@16]) {
+ errorName = @"ERROR_CONNECT_SOCKET_FAILED";
+ }
+ else if ([errorId isEqualToNumber:@17]) {
+ errorName = @"ERROR_GET_OUTPUT_STREAM_FAILED";
+ }
+ else if ([errorId isEqualToNumber:@18]) {
+ errorName = @"ERROR_GET_INPUT_STREAM_FAILED";
+ }
+ else if ([errorId isEqualToNumber:@19]) {
+ errorName = @"ERROR_CLOSE_SOCKET_FAILED";
+ }
+ else if ([errorId isEqualToNumber:@20]) {
+ errorName = @"ERROR_OUT_OF_MEMORY";
+ }
+ else if ([errorId isEqualToNumber:@21]) {
+ errorName = @"ERROR_SET_OVER_MARGIN";
+ }
+ else if ([errorId isEqualToNumber:@22]) {
+ errorName = @"ERROR_NO_SD_CARD";
+ }
+ else if ([errorId isEqualToNumber:@23]) {
+ errorName = @"ERROR_FILE_NOT_SUPPORTED";
+ }
+ else if ([errorId isEqualToNumber:@24]) {
+ errorName = @"ERROR_EVALUATION_TIMEUP";
+ }
+ else if ([errorId isEqualToNumber:@25]) {
+ errorName = @"ERROR_WRONG_CUSTOM_INFO";
+ }
+ else if ([errorId isEqualToNumber:@26]) {
+ errorName = @"ERROR_NO_ADDRESS";
+ }
+ else if ([errorId isEqualToNumber:@27]) {
+ errorName = @"ERROR_NOT_MATCH_ADDRESS";
+ }
+ else if ([errorId isEqualToNumber:@28]) {
+ errorName = @"ERROR_FILE_NOT_FOUND";
+ }
+ else if ([errorId isEqualToNumber:@29]) {
+ errorName = @"ERROR_TEMPLATE_FILE_NOT_MATCH_MODEL";
+ }
+ else if ([errorId isEqualToNumber:@30]) {
+ errorName = @"ERROR_TEMPLATE_NOT_TRANS_MODEL";
+ }
+ else if ([errorId isEqualToNumber:@31]) {
+ errorName = @"ERROR_COVER_OPEN";
+ }
+ else if ([errorId isEqualToNumber:@32]) {
+ errorName = @"ERROR_WRONG_LABEL";
+ }
+ else if ([errorId isEqualToNumber:@33]) {
+ errorName = @"ERROR_PORT_NOT_SUPPORTED";
+ }
+ else if ([errorId isEqualToNumber:@34]) {
+ errorName = @"ERROR_WRONG_TEMPLATE_KEY";
+ }
+ else if ([errorId isEqualToNumber:@35]) {
+ errorName = @"ERROR_BUSY";
+ }
+ else if ([errorId isEqualToNumber:@36]) {
+ errorName = @"ERROR_TEMPLATE_NOT_PRINT_MODEL";
+ }
+ else if ([errorId isEqualToNumber:@37]) {
+ errorName = @"ERROR_CANCEL";
+ }
+ else if ([errorId isEqualToNumber:@38]) {
+ errorName = @"ERROR_PRINTER_SETTING_NOT_SUPPORTED";
+ }
+ else if ([errorId isEqualToNumber:@39]) {
+ errorName = @"ERROR_INVALID_PARAMETER";
+ }
+ else if ([errorId isEqualToNumber:@40]) {
+ errorName = @"ERROR_INTERNAL_ERROR";
+ }
+ else if ([errorId isEqualToNumber:@41]) {
+ errorName = @"ERROR_TEMPLATE_NOT_CONTROL_MODEL";
+ }
+ else if ([errorId isEqualToNumber:@42]) {
+ errorName = @"ERROR_TEMPLATE_NOT_EXIST";
+ }
+ else if ([errorId isEqualToNumber:@44]) {
+ errorName = @"ERROR_BUFFER_FULL";
+ }
+ else if ([errorId isEqualToNumber:@45]) {
+ errorName = @"ERROR_TUBE_EMPTY";
+ }
+ else if ([errorId isEqualToNumber:@46]) {
+ errorName = @"ERROR_TUBE_RIBBON_EMPTY";
+ }
+ else if ([errorId isEqualToNumber:@47]) {
+ errorName = @"ERROR_UPDATE_FRIM_NOT_SUPPORTED";
+ }
+ else if ([errorId isEqualToNumber:@48]) {
+ errorName = @"ERROR_OS_VERSION_NOT_SUPPORTED";
+ }
+ else if ([errorId isEqualToNumber:@49]) {
+ errorName = @"ERROR_RESOLUTION_MODE";
+ }
+ else if ([errorId isEqualToNumber:@50]) {
+ errorName = @"ERROR_POWER_CABLE_UNPLUGGING";
+ }
+ else if ([errorId isEqualToNumber:@51]) {
+ errorName = @"ERROR_BATTERY_TROUBLE";
+ }
+ else if ([errorId isEqualToNumber:@52]) {
+ errorName = @"ERROR_UNSUPPORTED_MEDIA";
+ }
+ else if ([errorId isEqualToNumber:@53]) {
+ errorName = @"ERROR_TUBE_CUTTER";
+ }
+ else if ([errorId isEqualToNumber:@54]) {
+ errorName = @"ERROR_UNSUPPORTED_TWO_COLOR";
+ }
+ else if ([errorId isEqualToNumber:@55]) {
+ errorName = @"ERROR_UNSUPPORTED_MONO_COLOR";
+ }
+ else if ([errorId isEqualToNumber:@56]) {
+ errorName = @"ERROR_MINIMUM_LENGTH_LIMIT";
+ }
+ else if ([errorId isEqualToNumber:@57]) {
+ errorName = @"ERROR_WORKPATH_NOT_SET";
+ }
+
+ NSDictionary * dartErrorCode = @{
+ @"name":errorName,
+ @"id": errorId
+ };
+
+ return dartErrorCode;
+}
+
++ (BRLMPrintErrorCode) statusErrorCodeToMapWithRawStatus:(BRLMPrinterStatusRawDataStructure)status {
+
+ Byte statusType = status.byStatusType;
+ Byte errorInfo1 = status.byErrorInf;
+ Byte errorInfo2 = status.byErrorInf2;
+
+ if ((errorInfo1 & 1) > 0) {
+ return BRLMPrintErrorCodePrinterStatusErrorPaperEmpty;
+ }
+
+ if ((errorInfo1 & 2) > 0) {
+ return BRLMPrintErrorCodePrinterStatusErrorMediaCannotBeFed;
+ }
+
+ if ((errorInfo1 & 4) > 0) {
+ return BRLMPrintErrorCodePrinterStatusErrorPaperJam;
+ }
+
+ if ((errorInfo1 & 10) > 0) {
+ return BRLMPrintErrorCodePrinterStatusErrorBusy;
+ }
+
+ if ((errorInfo1 & 20) > 0) {
+ return BRLMPrintErrorCodePrinterStatusErrorPrinterTurnedOff;
+ }
+
+ if ((errorInfo1 & 40) > 0) {
+ return BRLMPrintErrorCodePrinterStatusErrorHighVoltageAdapter;
+ }
+
+ if ((errorInfo1 & 80) > 0) {
+ return BRLMPrintErrorCodePrinterStatusErrorOverHeat;
+ }
+
+ if ((errorInfo2 & 1) > 0) {
+ return BRLMPrintErrorCodeSetLabelSizeError;
+ }
+
+ if ((errorInfo2 & 2) > 0) {
+ return BRLMPrintErrorCodePrinterStatusErrorExpansionBufferFull;
+ }
+
+ if ((errorInfo2 & 4) > 0) {
+ return BRLMPrintErrorCodePrinterStatusErrorCommunicationError;
+ }
+
+ if ((errorInfo2 & 8) > 0) {
+ return BRLMPrintErrorCodeDataBufferError;
+ }
+
+ if ((errorInfo2 & 10) > 0) {
+ return BRLMPrintErrorCodePrinterStatusErrorCoverOpen;
+ }
+
+ if ((errorInfo2 & 20) > 0) {
+ return BRLMPrintErrorCodeCanceled;
+ }
+
+ if ((errorInfo2 & 40) > 0) {
+ return BRLMPrintErrorCodePrinterStatusErrorPaperJam;
+ }
+
+ if ((errorInfo2 & 80) > 0) {
+ return BRLMPrintErrorCodePrinterStatusErrorUnknownError;
+ }
+
+
+
+ return BRLMPrintErrorCodeNoError;
+}
+
++ (NSNumber *) labelIdTypeToNumberWithValue:(LabelIdType) labelTypeId {
+
+ if (labelTypeId == LabelIdTypeW17H54) {
+ return [[NSNumber alloc] initWithInt:(0x01)];
+ }
+ if (labelTypeId == LabelIdTypeW17H87) {
+ return [[NSNumber alloc] initWithInt:(0x02)];
+ }
+ if (labelTypeId == LabelIdTypeW23H23) {
+ return [[NSNumber alloc] initWithInt:(0x03)];
+ }
+ if (labelTypeId == LabelIdTypeW29H42) {
+ return [[NSNumber alloc] initWithInt:(0x04)];
+ }
+ if (labelTypeId == LabelIdTypeW29H90) {
+ return [[NSNumber alloc] initWithInt:(0x05)];
+ }
+ if (labelTypeId == LabelIdTypeW38H90) {
+ return [[NSNumber alloc] initWithInt:(0x06)];
+ }
+ if (labelTypeId == LabelIdTypeW39H48) {
+ return [[NSNumber alloc] initWithInt:(0x07)];
+ }
+ if (labelTypeId == LabelIdTypeW52H29) {
+ return [[NSNumber alloc] initWithInt:(0x08)];
+ }
+ if (labelTypeId == LabelIdTypeW62H29) {
+ return [[NSNumber alloc] initWithInt:(0x09)];
+ }
+ if (labelTypeId == LabelIdTypeW62H100) {
+ return [[NSNumber alloc] initWithInt:(0x0a)];
+ }
+ if (labelTypeId == LabelIdTypeW12) {
+ return [[NSNumber alloc] initWithInt:(0x0b)];
+ }
+ if (labelTypeId == LabelIdTypeW29) {
+ return [[NSNumber alloc] initWithInt:(0x0c)];
+ }
+ if (labelTypeId == LabelIdTypeW38) {
+ return [[NSNumber alloc] initWithInt:(0x0d)];
+ }
+ if (labelTypeId == LabelIdTypeW50) {
+ return [[NSNumber alloc] initWithInt:(0x0e)];
+ }
+ if (labelTypeId == LabelIdTypeW54) {
+ return [[NSNumber alloc] initWithInt:(0x0f)];
+ }
+ if (labelTypeId == LabelIdTypeW62) {
+ return [[NSNumber alloc] initWithInt:(0x10)];
+ }
+ if (labelTypeId == LabelIdTypeW60H86) {
+ return [[NSNumber alloc] initWithInt:(0x11)];
+ }
+ //PT
+ if (labelTypeId == LabelIdTypeW3_5) {
+ return [[NSNumber alloc] initWithInt:(0x12)];
+ }
+ if (labelTypeId == LabelIdTypeW6) {
+ return [[NSNumber alloc] initWithInt:(0x13)];
+ }
+ if (labelTypeId == LabelIdTypeW9) {
+ return [[NSNumber alloc] initWithInt:(0x14)];
+ }
+ if (labelTypeId == LabelIdTypeW18) {
+ return [[NSNumber alloc] initWithInt:(0x15)];
+ }
+ if (labelTypeId == LabelIdTypeW24) {
+ return [[NSNumber alloc] initWithInt:(0x16)];
+ }
+ if (labelTypeId == LabelIdTypeHS_W6) {
+ return [[NSNumber alloc] initWithInt:(0x17)];
+ }
+ if (labelTypeId == LabelIdTypeHS_W9) {
+ return [[NSNumber alloc] initWithInt:(0x18)];
+ }
+ if (labelTypeId == LabelIdTypeHS_W12) {
+ return [[NSNumber alloc] initWithInt:(0x19)];
+ }
+ if (labelTypeId == LabelIdTypeHS_W18) {
+ return [[NSNumber alloc] initWithInt:(0x1a)];
+ }
+ if (labelTypeId == LabelIdTypeHS_W24) {
+ return [[NSNumber alloc] initWithInt:(0x1b)];
+ }
+ if (labelTypeId == LabelIdTypeW36) {
+ return [[NSNumber alloc] initWithInt:(0x1c)];
+ }
+ if (labelTypeId == LabelIdTypeR6_5) {
+ return [[NSNumber alloc] initWithInt:(0x1d)];
+ }
+ if (labelTypeId == LabelIdTypeR6_0) {
+ return [[NSNumber alloc] initWithInt:(0x1f)];
+ }
+ if (labelTypeId == LabelIdTypeR5_0) {
+ return [[NSNumber alloc] initWithInt:(0x20)];
+ }
+ if (labelTypeId == LabelIdTypeR4_0) {
+ return [[NSNumber alloc] initWithInt:(0x21)];
+ }
+ if (labelTypeId == LabelIdTypeR3_5) {
+ return [[NSNumber alloc] initWithInt:(0x22)];
+ }
+ if (labelTypeId == LabelIdTypeR3_0) {
+ return [[NSNumber alloc] initWithInt:(0x23)];
+ }
+ if (labelTypeId == LabelIdTypeR2_5) {
+ return [[NSNumber alloc] initWithInt:(0x24)];
+ }
+ if (labelTypeId == LabelIdTypeFLE_W21H45) {
+ return [[NSNumber alloc] initWithInt:(0x25)];
+ }
+ //QL-8対応
+ if (labelTypeId == LabelIdTypeW62RB) {
+ return [[NSNumber alloc] initWithInt:(0x26)];
+ }
+ if (labelTypeId == LabelIdTypeW54H29) {
+ return [[NSNumber alloc] initWithInt:(0x27)];
+ }
+ //QL_1100
+ if (labelTypeId == LabelIdTypeW102) {
+ return [[NSNumber alloc] initWithInt:(0x28)];
+ }
+ if (labelTypeId == LabelIdTypeW102H51) {
+ return [[NSNumber alloc] initWithInt:(0x29)];
+ }
+ if (labelTypeId == LabelIdTypeW102H152) {
+ return [[NSNumber alloc] initWithInt:(0x30)];
+ }
+ if (labelTypeId == LabelIdTypeW103) {
+ return [[NSNumber alloc] initWithInt:(0x31)];
+ }
+ if (labelTypeId == LabelIdTypeW103H164) {
+ return [[NSNumber alloc] initWithInt:(0x32)];
+ }
+ if (labelTypeId == LabelIdTypeDT_W90) {
+ return [[NSNumber alloc] initWithInt:(0x33)];
+ }
+ if (labelTypeId == LabelIdTypeDT_W102) {
+ return [[NSNumber alloc] initWithInt:(0x34)];
+ }
+ if (labelTypeId == LabelIdTypeDT_W102H51) {
+ return [[NSNumber alloc] initWithInt:(0x35)];
+ }
+ if (labelTypeId == LabelIdTypeDT_W102H152) {
+ return [[NSNumber alloc] initWithInt:(0x36)];
+ }
+
+ return [[NSNumber alloc] initWithInt:(-1)];
+}
+
++ (NSNumber *) colorTypeToNumberWithValue:(ColorType) colorType {
+
+ if (colorType == WHITE) {
+ return [[NSNumber alloc] initWithInt:(0x01)];
+ }
+ if (colorType == OTHERS) {
+ return [[NSNumber alloc] initWithInt:(0x02)];
+ }
+ if (colorType == CLEAR) {
+ return [[NSNumber alloc] initWithInt:(0x03)];
+ }
+ if (colorType == RED) {
+ return [[NSNumber alloc] initWithInt:(0x04)];
+ }
+ if (colorType == BLUE) {
+ return [[NSNumber alloc] initWithInt:(0x05)];
+ }
+ if (colorType == YELLOW) {
+ return [[NSNumber alloc] initWithInt:(0x06)];
+ }
+ if (colorType == GREEN) {
+ return [[NSNumber alloc] initWithInt:(0x07)];
+ }
+ if (colorType == BLACK) {
+ return [[NSNumber alloc] initWithInt:(0x08)];
+ }
+ if (colorType == CLEAR_WHITE) {
+ return [[NSNumber alloc] initWithInt:(0x09)];
+ }
+ if (colorType == GOLD) {
+ return [[NSNumber alloc] initWithInt:(0x0A)];
+ }
+ if (colorType == GOLD_PREMIUM) {
+ return [[NSNumber alloc] initWithInt:(0x0B)];
+ }
+ if (colorType == SILVER_PREMIUM) {
+ return [[NSNumber alloc] initWithInt:(0x0C)];
+ }
+ if (colorType == OTHERS_PREMIUM) {
+ return [[NSNumber alloc] initWithInt:(0x0D)];
+ }
+ if (colorType == OTHERS_MASKING) {
+ return [[NSNumber alloc] initWithInt:(0x0E)];
+ }
+ if (colorType == SATIN_LIGHTBLUE) {
+ return [[NSNumber alloc] initWithInt:(0x0F)];
+ }
+ if (colorType == SATIN_MINT) {
+ return [[NSNumber alloc] initWithInt:(0x10)];
+ }
+ /*
+ if (colorType == SILVER_SATIN) {
+ return [[NSNumber alloc] initWithInt:(0x11)];
+ }
+ */
+ if (colorType == MATTE_WHITE) {
+ return [[NSNumber alloc] initWithInt:(0x20)];
+ }
+ if (colorType == MATTE_CLEAR) {
+ return [[NSNumber alloc] initWithInt:(0x21)];
+ }
+ if (colorType == MATTE_SILVER) {
+ return [[NSNumber alloc] initWithInt:(0x22)];
+ }
+ if (colorType == SATIN_GOLD) {
+ return [[NSNumber alloc] initWithInt:(0x23)];
+ }
+ if (colorType == SATIN_SILVER) {
+ return [[NSNumber alloc] initWithInt:(0x24)];
+ }
+ /*
+ if (colorType == PASTEL_PURPLE) {
+ return [[NSNumber alloc] initWithInt:(0x25)];
+ }
+ */
+ if (colorType == BLUE_WHITE) {
+ return [[NSNumber alloc] initWithInt:(0x30)];
+ }
+ if (colorType == RED_WHITE) {
+ return [[NSNumber alloc] initWithInt:(0x31)];
+ }
+ if (colorType == FLOURESCENT_ORANGE) {
+ return [[NSNumber alloc] initWithInt:(0x40)];
+ }
+ if (colorType == FLOURESCENT_YELLOW) {
+ return [[NSNumber alloc] initWithInt:(0x41)];
+ }
+ if (colorType == BERRY_PINK) {
+ return [[NSNumber alloc] initWithInt:(0x50)];
+ }
+ if (colorType == LIGHT_GLAY) {
+ return [[NSNumber alloc] initWithInt:(0x51)];
+ }
+ if (colorType == LIME_GREEN) {
+ return [[NSNumber alloc] initWithInt:(0x52)];
+ }
+ /*
+ if (colorType == NAVY_BLUE_SATIN) {
+ return [[NSNumber alloc] initWithInt:(0x53)];
+ }
+ */
+ /*
+ if (colorType == WINE_RED_SATIN) {
+ return [[NSNumber alloc] initWithInt:(0x54)];
+ }
+ */
+ if (colorType == FABRIC_YELLOW) {
+ return [[NSNumber alloc] initWithInt:(0x60)];
+ }
+ if (colorType == FABRIC_PINK) {
+ return [[NSNumber alloc] initWithInt:(0x61)];
+ }
+ if (colorType == FABRIC_BLUE) {
+ return [[NSNumber alloc] initWithInt:(0x62)];
+ }
+ if (colorType == TUBE_WHITE) {
+ return [[NSNumber alloc] initWithInt:(0x70)];
+ }
+ if (colorType == SELF_WHITE) {
+ return [[NSNumber alloc] initWithInt:(0x80)];
+ }
+ if (colorType == FLEXIBLE_WHITE) {
+ return [[NSNumber alloc] initWithInt:(0x90)];
+ }
+ if (colorType == FLEXIBLE_YELLOW) {
+ return [[NSNumber alloc] initWithInt:(0x91)];
+ }
+ if (colorType == CLEANING) {
+ return [[NSNumber alloc] initWithInt:(0xF0)];
+ }
+ if (colorType == STENCIL) {
+ return [[NSNumber alloc] initWithInt:(0xF1)];
+ }
+ if (colorType == UNSUPPORT) {
+ return [[NSNumber alloc] initWithInt:(0xFF)];
+ }
+ return [[NSNumber alloc] initWithInt:(-1)];
+}
+
++ (NSString *) colorTypeToNameWithValue:(ColorType) colorType {
+
+ if (colorType == WHITE) {
+ return @"WHITE";
+ }
+ if (colorType == OTHERS) {
+ return @"OTHERS";
+ }
+ if (colorType == CLEAR) {
+ return @"CLEAR";
+ }
+ if (colorType == RED) {
+ return @"RED";
+ }
+ if (colorType == BLUE) {
+ return @"BLUE";
+ }
+ if (colorType == YELLOW) {
+ return @"YELLOW";
+ }
+ if (colorType == GREEN) {
+ return @"GREEN";
+ }
+ if (colorType == BLACK) {
+ return @"BLACK";
+ }
+ if (colorType == CLEAR_WHITE) {
+ return @"CLEAR_WHITE";
+ }
+ if (colorType == GOLD) {
+ return @"GOLD";
+ }
+ if (colorType == GOLD_PREMIUM) {
+ return @"GOLD_PREMIUM";
+ }
+ if (colorType == SILVER_PREMIUM) {
+ return @"SILVER_PREMIUM";
+ }
+ if (colorType == OTHERS_PREMIUM) {
+ return @"OTHERS_PREMIUM";
+ }
+ if (colorType == OTHERS_MASKING) {
+ return @"OTHERS_MASKING";
+ }
+ if (colorType == SATIN_LIGHTBLUE) {
+ return @"SATIN_LIGHTBLUE";
+ }
+ if (colorType == SATIN_MINT) {
+ return @"SATIN_MINT";
+ }
+ /*
+ if (colorType == SILVER_SATIN) {
+ return @"SILVER_SATIN";
+ }
+ */
+ if (colorType == MATTE_WHITE) {
+ return @"MATTE_WHITE";
+ }
+ if (colorType == MATTE_CLEAR) {
+ return @"MATTE_CLEAR";
+ }
+ if (colorType == MATTE_SILVER) {
+ return @"MATTE_SILVER";
+ }
+ if (colorType == SATIN_GOLD) {
+ return @"SATIN_GOLD";
+ }
+ if (colorType == SATIN_SILVER) {
+ return @"SATIN_SILVER";
+ }
+ /*
+ if (colorType == PASTEL_PURPLE) {
+ return @"PASTEL_PURPLE";
+ }
+ */
+ if (colorType == BLUE_WHITE) {
+ return @"BLUE_WHITE";
+ }
+ if (colorType == RED_WHITE) {
+ return @"RED_WHITE";
+ }
+ if (colorType == FLOURESCENT_ORANGE) {
+ return [[NSNumber alloc] initWithInt:(0x40)];
+ }
+ if (colorType == FLOURESCENT_YELLOW) {
+ return @"FLOURESCENT_ORANGE";
+ }
+ if (colorType == BERRY_PINK) {
+ return @"BERRY_PINK";
+ }
+ if (colorType == LIGHT_GLAY) {
+ return @"LIGHT_GLAY";
+ }
+ if (colorType == LIME_GREEN) {
+ return @"LIME_GREEN";
+ }
+ /*
+ if (colorType == NAVY_BLUE_SATIN) {
+ return @"NAVY_BLUE_SATIN";
+ }
+ */
+ /*
+ if (colorType == WINE_RED_SATIN) {
+ return @"WINE_RED_SATIN";
+ }
+ */
+ if (colorType == FABRIC_YELLOW) {
+ return @"FABRIC_YELLOW";
+ }
+ if (colorType == FABRIC_PINK) {
+ return @"FABRIC_PINK";
+ }
+ if (colorType == FABRIC_BLUE) {
+ return @"FABRIC_BLUE";
+ }
+ if (colorType == TUBE_WHITE) {
+ return @"TUBE_WHITE";
+ }
+ if (colorType == SELF_WHITE) {
+ return @"SELF_WHITE";
+ }
+ if (colorType == FLEXIBLE_WHITE) {
+ return @"FLEXIBLE_WHITE";
+ }
+ if (colorType == FLEXIBLE_YELLOW) {
+ return @"FLEXIBLE_YELLOW";
+ }
+ if (colorType == CLEANING) {
+ return @"CLEANING";
+ }
+ if (colorType == STENCIL) {
+ return @"STENCIL";
+ }
+ if (colorType == UNSUPPORT) {
+ return @"UNSUPPORT";
+ }
+ return @"UNSUPPORT";
+}
+
++ (NSDictionary *) colorTypeToMapWithValue:(ColorType)colorType {
+
+ NSDictionary * dartLabelColor = @{
+ @"id":[BrotherUtils colorTypeToNumberWithValue:colorType],
+ @"name": [BrotherUtils colorTypeToNameWithValue:colorType]
+ };
+
+ return dartLabelColor;
+
+}
+
+ (NSDictionary *)printerStatusToMapWithError:(BRLMPrintErrorCode)error status:(BRLMPrinterStatus *)status {
NSObject * dartError = [BrotherUtils errorCodeToMapWithValue: error];
+ // TODO Figure out good way to get status from raw status data.
+ //NSObject * dartError2 = [BrotherUtils errorCodeToMapWithId: [NSNumber numberWithInt:status.ptStatus.byStatusType] ];
+
// TODO Translate status if not nill
NSDictionary * dartPrintStatus = @{
- @"errorCode":dartError,
+ @"errorCode":dartError,//dartError,
@"labelId": [[NSNumber alloc] initWithInt:(-1)], // TODO
@"labelType": [[NSNumber alloc] initWithInt:(-1)], // TODO
@"isACConnected": @{@"id": [[NSNumber alloc] initWithInt:(-1)], @"name": @"Unknown" }, // TODO
@@ -1508,6 +2209,25 @@ + (BRLMMWPrintSettings *)mwPrintSettingsFromMapWithValue:(NSDictionary *) labelInfoStatuesToMapWithStatus:(BRPtouchLabelInfoStatus *) status{
+
+ // TODO Continue implementation after color type is added
+ NSDictionary * dartLabelInfoStatus = @{
+ @"labelNameIndex": [BrotherUtils labelIdTypeToNumberWithValue: [status labelID ]],
+ @"isAutoCut": @FALSE, // TODO
+ @"isEndCut": @FALSE, // TODO
+ @"isHalfCut": @FALSE, // TODO
+ @"isSpecialTape": @FALSE, // TODO
+ @"isCutMark": @FALSE, // TODO
+ @"labelColor": [BrotherUtils colorTypeToMapWithValue:[status labelColor]],
+ @"labelFontColor": [BrotherUtils colorTypeToMapWithValue:[status fontColor]],
+ @"labelType": [BrotherUtils labelIdTypeToNumberWithValue: [status labelID ]]
+ };
+
+ return dartLabelInfoStatus;
+}
+
+
+ (NSDictionary *)bRPtouchDeviceInfoToNetPrinterMap:(BRPtouchDeviceInfo *)deviceInfo {
NSDictionary * dartNetPrinter = @{
diff --git a/ios/Classes/Method/GetPdfFilePagesMethodCall.h b/ios/Classes/Method/GetPdfFilePagesMethodCall.h
new file mode 100644
index 0000000..23fe143
--- /dev/null
+++ b/ios/Classes/Method/GetPdfFilePagesMethodCall.h
@@ -0,0 +1,27 @@
+//
+// GetPdfFilePagesMethodCall.h
+// another_brother
+//
+// Created by Frank Hernandez on 11/26/22.
+//
+
+#ifndef GetPdfFilePagesMethodCall_h
+#define GetPdfFilePagesMethodCall_h
+
+#import
+#import "BrotherUtils.h"
+
+@interface GetPdfFilePagesMethodCall : NSObject
+
+@property (strong, nonatomic) FlutterMethodCall* call;
+@property (strong, nonatomic) FlutterResult result;
+@property (class, nonatomic, assign, readonly) NSString * METHOD_NAME;
+
+- (instancetype)initWithCall:(FlutterMethodCall *)call
+ result:(FlutterResult) result;
+
+- (void) execute;
+@end
+
+
+#endif /* GetPdfFilePagesMethodCall_h */
diff --git a/ios/Classes/Method/GetPdfFilePagesMethodCall.m b/ios/Classes/Method/GetPdfFilePagesMethodCall.m
new file mode 100644
index 0000000..ba4766c
--- /dev/null
+++ b/ios/Classes/Method/GetPdfFilePagesMethodCall.m
@@ -0,0 +1,88 @@
+//
+// GetPdfFilePagesMethodCall.m
+// another_brother
+//
+// Created by Frank Hernandez on 11/26/22.
+//
+
+#import
+#import "GetPdfFilePagesMethodCall.h"
+
+@implementation GetPdfFilePagesMethodCall
+static NSString * METHOD_NAME = @"getPDFFilePages";
+
+- (instancetype)initWithCall:(FlutterMethodCall *)call
+ result:(FlutterResult) result {
+ self = [super init];
+ if (self) {
+ _call = call;
+ _result = result;
+
+ }
+ return self;
+}
+
++ (NSString *) METHOD_NAME {
+ return METHOD_NAME;
+}
+- (void)execute {
+ // TODO Move to background thread.
+ // Get printInfo dart params from call
+ //NSDictionary * dartPrintInfo = _call.arguments[@"printInfo"];
+ // Get file path from call
+ NSString * filePath = _call.arguments[@"filePath"];
+ // Get the printer ID
+ //NSString * printerId = _call.arguments[@"printerId"];
+
+
+ //NSURL * url = [NSURL fileURLWithPath:filePath];
+ CFURLRef url = CFURLCreateWithFileSystemPath (NULL, (__bridge CFStringRef)filePath, kCFURLPOSIXPathStyle, 0);
+ CGPDFDocumentRef pdf = CGPDFDocumentCreateWithURL(url);
+ //CGPDFPageRef myPageRef = CGPDFDocumentGetPage(pdf, 1);
+ int totalPages= CGPDFDocumentGetNumberOfPages(pdf);
+
+ NSNumber *outPages = [NSNumber numberWithInt:totalPages];
+ _result(outPages);
+
+ /*
+ // TODO Get channel from printInfo
+ BRLMChannel *channel = [BrotherUtils printChannelWithPrintSettingsMap:dartPrintInfo];
+
+ // TODO Generate printer driver
+ BRLMPrinterDriverGenerateResult * driverGenerateResult = [BRLMPrinterDriverGenerator openChannel:channel];
+ if (driverGenerateResult.error.code != BRLMOpenChannelErrorCodeNoError ||
+ driverGenerateResult.driver == nil) {
+
+ // On Error report error
+ NSDictionary * printStatus = [BrotherUtils printerStatusToMapWithError:BRLMPrintErrorCodePrinterStatusErrorCommunicationError status:nil];
+ _result(printStatus);
+ return;
+ }
+
+
+ BRLMPrinterDriver *printerDriver = driverGenerateResult.driver;
+
+ // Get printer settings.
+ id printerSettings = [BrotherUtils printSettingsFromMapWithValue:dartPrintInfo];
+
+ // If no error create URL from path
+
+ NSURL * url = [NSURL fileURLWithPath:filePath];
+
+ // Call print method
+ BRLMPrintError * printError = [printerDriver printPDFWithURL:url pages:[NSArray arrayWithObject:pageNum] settings:printerSettings];
+
+
+ [printerDriver closeChannel];
+
+ // Notify status to Flutter.
+ NSDictionary * printStatus = [BrotherUtils printerStatusToMapWithError:printError.code status:nil];
+
+ _result(printStatus);
+ */
+
+}
+
+
+@end
+
diff --git a/ios/Classes/Method/GetPrinterStatusMethodCall.m b/ios/Classes/Method/GetPrinterStatusMethodCall.m
index 6f81a73..060698c 100644
--- a/ios/Classes/Method/GetPrinterStatusMethodCall.m
+++ b/ios/Classes/Method/GetPrinterStatusMethodCall.m
@@ -52,8 +52,11 @@ - (void)execute {
[printerDriver closeChannel];
+
+ BRLMPrintErrorCode errorCode = [BrotherUtils statusErrorCodeToMapWithRawStatus:status.status.ptStatus];
+
// Notify status to Flutter.
- NSDictionary * printStatus = [BrotherUtils printerStatusToMapWithError:BRLMPrintErrorCodeNoError status:status.status];
+ NSDictionary * printStatus = [BrotherUtils printerStatusToMapWithError:errorCode status:status.status];
_result(printStatus);
diff --git a/ios/Classes/Method/PrintFileMethodCall.m b/ios/Classes/Method/PrintFileMethodCall.m
index abdc63e..fa249e5 100644
--- a/ios/Classes/Method/PrintFileMethodCall.m
+++ b/ios/Classes/Method/PrintFileMethodCall.m
@@ -26,6 +26,8 @@ + (NSString *) METHOD_NAME {
return METHOD_NAME;
}
- (void)execute {
+ // TODO Move to background thread.
+
// Get printInfo dart params from call
NSDictionary * dartPrintInfo = _call.arguments[@"printInfo"];
// Get file path from call
diff --git a/ios/Classes/Method/PrintImageMethodCall.m b/ios/Classes/Method/PrintImageMethodCall.m
index 8f35390..3cc9e22 100644
--- a/ios/Classes/Method/PrintImageMethodCall.m
+++ b/ios/Classes/Method/PrintImageMethodCall.m
@@ -50,12 +50,14 @@ - (void)execute {
// On Error report error
NSDictionary * printStatus = [BrotherUtils printerStatusToMapWithError:BRLMPrintErrorCodePrinterStatusErrorCommunicationError status:nil];
//_result(printStatus);
+ BRLMPrinterDriver *printerDriver = driverGenerateResult.driver;
+ [printerDriver closeChannel];
+
dispatch_sync(dispatch_get_main_queue(), ^{
// Update UI
self->_result(printStatus);
});
-
return;
}
@@ -79,14 +81,14 @@ - (void)execute {
NSDictionary * printStatus = [BrotherUtils printerStatusToMapWithError:printError.code status:nil];
//_result(printStatus);
-
+
// Notify on the UI thread.
dispatch_sync(dispatch_get_main_queue(), ^{
// Update UI
// Call the desired channel message here.
self->_result(printStatus);
});
-
+
});
}
diff --git a/ios/Classes/Method/PrintPdfFileMethodCall.m b/ios/Classes/Method/PrintPdfFileMethodCall.m
index 1fe179e..34eb22d 100644
--- a/ios/Classes/Method/PrintPdfFileMethodCall.m
+++ b/ios/Classes/Method/PrintPdfFileMethodCall.m
@@ -26,6 +26,7 @@ + (NSString *) METHOD_NAME {
return METHOD_NAME;
}
- (void)execute {
+ // TODO Move to background thread.
// Get printInfo dart params from call
NSDictionary * dartPrintInfo = _call.arguments[@"printInfo"];
// Get file path from call
diff --git a/lib/another_brother.dart b/lib/another_brother.dart
index cecab0e..f50aeff 100644
--- a/lib/another_brother.dart
+++ b/lib/another_brother.dart
@@ -2,9 +2,6 @@
import 'dart:async';
import 'package:flutter/services.dart';
-import 'package:another_brother/label_info.dart';
-import 'package:another_brother/printer_info.dart';
-
class AnotherBrother {
static const MethodChannel _channel =
const MethodChannel('another_brother');
diff --git a/lib/custom_paper.dart b/lib/custom_paper.dart
index c42b08d..e6e06d0 100644
--- a/lib/custom_paper.dart
+++ b/lib/custom_paper.dart
@@ -620,6 +620,96 @@ class BinPaper_TD2120N implements ACustomPaper {
}
}
+class BinPaper_TD2125N implements ACustomPaper {
+ final String _name;
+ final String _assetPath;
+
+ static const String _rootDir = "packages/another_brother/custom_paper/CustomTD2125NPaper";
+ const BinPaper_TD2125N._internal(this._name, this._assetPath);
+
+ static const W40_H40mm = const BinPaper_TD2125N._internal("TD2125N-40mm40mm", "$_rootDir/TD2125N-40mm40mm.bin");
+ static const W57mm = const BinPaper_TD2125N._internal("TD2125N-57mm", "$_rootDir/TD2125N-57mm.bin");
+ static const UNSUPPORTED = const BinPaper_TD2125N._internal("UNSUPPORTED", "");
+
+ static final _values = [
+ W40_H40mm,
+ W57mm,
+ UNSUPPORTED
+ ];
+
+ static List getValues() => List.from(_values);
+
+ @override
+ String getName() {
+ return _name;
+ }
+
+ static BinPaper_TD2125N valueFromName(String name) {
+ for (int i = 0; i < _values.length; i++) {
+ if (_values[i].getName() == name) {
+ return _values[i];
+ }
+ }
+ return UNSUPPORTED;
+ }
+
+ @override
+ Map toMap() {
+ return {
+ "name": _name,
+ "assetPath": _assetPath
+ };
+ }
+}
+
+class BinPaper_TD2125NWB implements ACustomPaper {
+ final String _name;
+ final String _assetPath;
+
+ static const String _rootDir = "packages/another_brother/custom_paper/CustomTD2125NWBPaper";
+ const BinPaper_TD2125NWB._internal(this._name, this._assetPath);
+
+ static const W40_H40mm = const BinPaper_TD2125NWB._internal("TD2125NWB-40mm40mm", "$_rootDir/TD2125NWB-40mm40mm.bin");
+ static const W57mm = const BinPaper_TD2125NWB._internal("TD2125NWB-57mm", "$_rootDir/TD2125NWB-57mm.bin");
+ static const W51_H26mm = const BinPaper_TD2125NWB._internal("TD2125NWB-51x26mm", "$_rootDir/TD2125NWB-51x26mm.bin");
+ static const W57_H76mm = const BinPaper_TD2125NWB._internal("TD2125NWB-57x76mm", "$_rootDir/TD2125NWB-57x76mm.bin");
+
+ static const UNSUPPORTED = const BinPaper_TD2125NWB._internal("UNSUPPORTED", "");
+
+ static final _values = [
+ W40_H40mm,
+ W51_H26mm,
+ W57mm,
+ W57_H76mm,
+ UNSUPPORTED
+ ];
+
+ static List getValues() => List.from(_values);
+
+ @override
+ String getName() {
+ return _name;
+ }
+
+ static BinPaper_TD2125NWB valueFromName(String name) {
+ for (int i = 0; i < _values.length; i++) {
+ if (_values[i].getName() == name) {
+ return _values[i];
+ }
+ }
+ return UNSUPPORTED;
+ }
+
+ @override
+ Map toMap() {
+ return {
+ "name": _name,
+ "assetPath": _assetPath
+ };
+ }
+}
+
+
class BinPaper_TD2130N implements ACustomPaper {
final String _name;
final String _assetPath;
diff --git a/lib/printer_info.dart b/lib/printer_info.dart
index 5d4c051..437e754 100644
--- a/lib/printer_info.dart
+++ b/lib/printer_info.dart
@@ -167,6 +167,27 @@ class Model implements AModel {
static final PT_P715eBT = Model._internal2("PT_P715eBT", 69, PT_E550W);
static final PT_P910BT = Model._internal(
"PT_P910BT", 68, PT.W36.getId(), PrinterSeries.PT_LABEL_PRINTER);
+ static final RJ_3230B = Model._internal2(
+ "RJ_3230B", 70, RJ_4030);
+ static final RJ_3250WB = Model._internal2(
+ "RJ_3250WB", 71, RJ_4030);
+ static final PT_D410 = Model._internal(
+ "PT_D410", 72, PT.W18.getId(), PrinterSeries.PT_LABEL_PRINTER);
+ static final PT_D460BT = Model._internal2("PT_D460BT", 73, PT_D410);
+ static final PT_D610BT = Model._internal(
+ "PT_D610BT", 74, PT.W24.getId(), PrinterSeries.PT_LABEL_PRINTER);
+ static final PJ_822 = Model._internal2("PJ_822", 75, PJ_522);
+ static final PJ_823 = Model._internal2("PJ_823", 76, PJ_522);
+ static final PJ_862 = Model._internal2("PJ_862", 77, PJ_522);
+ static final PJ_863 = Model._internal2("PJ_863", 78, PJ_522);
+ static final PJ_883 = Model._internal2("PJ_883", 79, PJ_522);
+ static final TD_2030A = Model._internal2("TD_2030A", 80, RJ_4030);
+ static final TD_2125N = Model._internal2("TD_2125N", 81, RJ_4030);
+ static final TD_2125NWB = Model._internal2("TD_2125NWB", 82, RJ_4030);
+ static final TD_2135N = Model._internal2("TD_2135N", 83, RJ_4030);
+ static final TD_2135NWB = Model._internal2("TD_2135NWB", 84, RJ_4030);
+
+
static final UNSUPPORTED = Model._internal("UNSUPPORTED", 255,
PaperSize.CUSTOM.getPaperId(), PrinterSeries.UNSUPPORTED);
@@ -238,6 +259,21 @@ class Model implements AModel {
MW_270,
PT_P715eBT,
PT_P910BT,
+ RJ_3230B,
+ RJ_3250WB,
+ PT_D410,
+ PT_D460BT,
+ PT_D610BT,
+ PJ_822,
+ PJ_823,
+ PJ_862,
+ PJ_863,
+ PJ_883,
+ TD_2030A,
+ TD_2125N,
+ TD_2125NWB,
+ TD_2135N,
+ TD_2135NWB,
UNSUPPORTED
];
@@ -869,6 +905,8 @@ class ErrorCode {
static const ERROR_UNSUPPORTED_MONO_COLOR = ErrorCode._internal(55, "ERROR_UNSUPPORTED_MONO_COLOR");
static const ERROR_MINIMUM_LENGTH_LIMIT = ErrorCode._internal(56, "ERROR_MINIMUM_LENGTH_LIMIT");
static const ERROR_WORKPATH_NOT_SET = ErrorCode._internal(57, "ERROR_WORKPATH_NOT_SET");
+ // Another_Brother specific error. Sent when the Android device does not have storage permissions granted.
+ static const ERROR_STORAGE_PERMISSION_NOT_GRANTED = ErrorCode._internal(9999, "ERROR_STORAGE_PERMISSION_NOT_GRANTED");
static final _values = [
ERROR_NONE,
@@ -926,7 +964,8 @@ class ErrorCode {
ERROR_UNSUPPORTED_TWO_COLOR,
ERROR_UNSUPPORTED_MONO_COLOR,
ERROR_MINIMUM_LENGTH_LIMIT,
- ERROR_WORKPATH_NOT_SET
+ ERROR_WORKPATH_NOT_SET,
+ ERROR_STORAGE_PERMISSION_NOT_GRANTED
];
int getId() {
diff --git a/pubspec.lock b/pubspec.lock
deleted file mode 100644
index eae9e3d..0000000
--- a/pubspec.lock
+++ /dev/null
@@ -1,287 +0,0 @@
-# Generated by pub
-# See https://dart.dev/tools/pub/glossary#lockfile
-packages:
- async:
- dependency: transitive
- description:
- name: async
- url: "https://pub.dartlang.org"
- source: hosted
- version: "2.8.2"
- boolean_selector:
- dependency: transitive
- description:
- name: boolean_selector
- url: "https://pub.dartlang.org"
- source: hosted
- version: "2.1.0"
- characters:
- dependency: transitive
- description:
- name: characters
- url: "https://pub.dartlang.org"
- source: hosted
- version: "1.2.0"
- charcode:
- dependency: transitive
- description:
- name: charcode
- url: "https://pub.dartlang.org"
- source: hosted
- version: "1.3.1"
- clock:
- dependency: transitive
- description:
- name: clock
- url: "https://pub.dartlang.org"
- source: hosted
- version: "1.1.0"
- collection:
- dependency: transitive
- description:
- name: collection
- url: "https://pub.dartlang.org"
- source: hosted
- version: "1.16.0"
- convert:
- dependency: transitive
- description:
- name: convert
- url: "https://pub.dartlang.org"
- source: hosted
- version: "3.0.2"
- fake_async:
- dependency: transitive
- description:
- name: fake_async
- url: "https://pub.dartlang.org"
- source: hosted
- version: "1.3.0"
- ffi:
- dependency: transitive
- description:
- name: ffi
- url: "https://pub.dartlang.org"
- source: hosted
- version: "2.0.0"
- file:
- dependency: transitive
- description:
- name: file
- url: "https://pub.dartlang.org"
- source: hosted
- version: "6.1.1"
- fixnum:
- dependency: transitive
- description:
- name: fixnum
- url: "https://pub.dartlang.org"
- source: hosted
- version: "1.0.0"
- flutter:
- dependency: "direct main"
- description: flutter
- source: sdk
- version: "0.0.0"
- flutter_blue_plus:
- dependency: "direct main"
- description:
- name: flutter_blue_plus
- url: "https://pub.dartlang.org"
- source: hosted
- version: "1.1.3"
- flutter_test:
- dependency: "direct dev"
- description: flutter
- source: sdk
- version: "0.0.0"
- matcher:
- dependency: transitive
- description:
- name: matcher
- url: "https://pub.dartlang.org"
- source: hosted
- version: "0.12.11"
- material_color_utilities:
- dependency: transitive
- description:
- name: material_color_utilities
- url: "https://pub.dartlang.org"
- source: hosted
- version: "0.1.4"
- meta:
- dependency: transitive
- description:
- name: meta
- url: "https://pub.dartlang.org"
- source: hosted
- version: "1.7.0"
- path:
- dependency: transitive
- description:
- name: path
- url: "https://pub.dartlang.org"
- source: hosted
- version: "1.8.1"
- path_provider:
- dependency: "direct main"
- description:
- name: path_provider
- url: "https://pub.dartlang.org"
- source: hosted
- version: "2.0.11"
- path_provider_android:
- dependency: transitive
- description:
- name: path_provider_android
- url: "https://pub.dartlang.org"
- source: hosted
- version: "2.0.14"
- path_provider_ios:
- dependency: transitive
- description:
- name: path_provider_ios
- url: "https://pub.dartlang.org"
- source: hosted
- version: "2.0.9"
- path_provider_linux:
- dependency: transitive
- description:
- name: path_provider_linux
- url: "https://pub.dartlang.org"
- source: hosted
- version: "2.1.7"
- path_provider_macos:
- dependency: transitive
- description:
- name: path_provider_macos
- url: "https://pub.dartlang.org"
- source: hosted
- version: "2.0.0"
- path_provider_platform_interface:
- dependency: transitive
- description:
- name: path_provider_platform_interface
- url: "https://pub.dartlang.org"
- source: hosted
- version: "2.0.1"
- path_provider_windows:
- dependency: transitive
- description:
- name: path_provider_windows
- url: "https://pub.dartlang.org"
- source: hosted
- version: "2.1.0"
- platform:
- dependency: transitive
- description:
- name: platform
- url: "https://pub.dartlang.org"
- source: hosted
- version: "3.0.0"
- plugin_platform_interface:
- dependency: transitive
- description:
- name: plugin_platform_interface
- url: "https://pub.dartlang.org"
- source: hosted
- version: "2.0.0"
- process:
- dependency: transitive
- description:
- name: process
- url: "https://pub.dartlang.org"
- source: hosted
- version: "4.2.1"
- protobuf:
- dependency: transitive
- description:
- name: protobuf
- url: "https://pub.dartlang.org"
- source: hosted
- version: "2.0.1"
- rxdart:
- dependency: transitive
- description:
- name: rxdart
- url: "https://pub.dartlang.org"
- source: hosted
- version: "0.27.4"
- sky_engine:
- dependency: transitive
- description: flutter
- source: sdk
- version: "0.0.99"
- source_span:
- dependency: transitive
- description:
- name: source_span
- url: "https://pub.dartlang.org"
- source: hosted
- version: "1.8.2"
- stack_trace:
- dependency: transitive
- description:
- name: stack_trace
- url: "https://pub.dartlang.org"
- source: hosted
- version: "1.10.0"
- stream_channel:
- dependency: transitive
- description:
- name: stream_channel
- url: "https://pub.dartlang.org"
- source: hosted
- version: "2.1.0"
- string_scanner:
- dependency: transitive
- description:
- name: string_scanner
- url: "https://pub.dartlang.org"
- source: hosted
- version: "1.1.0"
- term_glyph:
- dependency: transitive
- description:
- name: term_glyph
- url: "https://pub.dartlang.org"
- source: hosted
- version: "1.2.0"
- test_api:
- dependency: transitive
- description:
- name: test_api
- url: "https://pub.dartlang.org"
- source: hosted
- version: "0.4.9"
- typed_data:
- dependency: transitive
- description:
- name: typed_data
- url: "https://pub.dartlang.org"
- source: hosted
- version: "1.3.0"
- vector_math:
- dependency: transitive
- description:
- name: vector_math
- url: "https://pub.dartlang.org"
- source: hosted
- version: "2.1.2"
- win32:
- dependency: transitive
- description:
- name: win32
- url: "https://pub.dartlang.org"
- source: hosted
- version: "2.7.0"
- xdg_directories:
- dependency: transitive
- description:
- name: xdg_directories
- url: "https://pub.dartlang.org"
- source: hosted
- version: "0.2.0"
-sdks:
- dart: ">=2.17.0 <3.0.0"
- flutter: ">=3.0.0"
diff --git a/pubspec.yaml b/pubspec.yaml
index 7607288..ae44e99 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,20 +1,18 @@
name: another_brother
description: A flutter plugin for printing with the Brother label and TypeB printers.
-version: 0.0.27
+version: 0.0.34
repository: https://github.com/CodeMinion/another_brother
environment:
- sdk: ">=2.12.0 <3.0.0"
+ sdk: ">=2.12.0 <4.0.0"
flutter: ">=1.20.0"
dependencies:
flutter:
sdk: flutter
-
flutter_blue_plus: ^1.1.3
path_provider: ^2.0.11
-
dev_dependencies:
flutter_test:
sdk: flutter
@@ -50,6 +48,8 @@ flutter:
- custom_paper/CustomRJ4230Paper/
- custom_paper/CustomRJ4250Paper/
- custom_paper/CustomTD2120NPaper/
+ - custom_paper/CustomTD2125NPaper/
+ - custom_paper/CustomTD2125NWBPaper/
- custom_paper/CustomTD2130NPaper/
- custom_paper/CustomTD4550Paper/
# - images/a_dot_burr.jpeg