Able to fetch all of the songs. Create Token repository to store tokens. Next need to transition from the login screen to the song view screen.

This commit is contained in:
kdeng00
2019-10-08 23:28:19 -04:00
parent 9483c6b834
commit 6b746cd1d0
13 changed files with 589 additions and 412 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+322 -361
View File
@@ -112,18 +112,10 @@
</component>
<component name="ChangeListManager">
<list default="true" id="a8334612-2e51-4ba4-b605-06a26be592d3" name="Default Changelist" comment="Able to do a demo stream, not via jni but with android's media player">
<change afterPath="$PROJECT_DIR$/app/src/main/java/com/example/mear/constants/AppDataPath.kt" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/java/com/example/mear/models/Token.kt" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/java/com/example/mear/models/User.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/5.4.1/executionHistory/executionHistory.bin" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/5.4.1/executionHistory/executionHistory.bin" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/java/com/example/mear/activities/IcarusSongActivity.kt" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/layout/activity_icarus_song.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/5.4.1/executionHistory/executionHistory.lock" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/5.4.1/executionHistory/executionHistory.lock" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/5.4.1/fileHashes/fileHashes.bin" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/5.4.1/fileHashes/fileHashes.bin" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/5.4.1/fileHashes/fileHashes.lock" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/5.4.1/fileHashes/fileHashes.lock" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/5.4.1/fileHashes/resourceHashesCache.bin" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/5.4.1/fileHashes/resourceHashesCache.bin" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/5.4.1/javaCompile/classAnalysis.bin" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/5.4.1/javaCompile/classAnalysis.bin" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/5.4.1/javaCompile/jarAnalysis.bin" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/5.4.1/javaCompile/jarAnalysis.bin" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/5.4.1/javaCompile/javaCompile.lock" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/5.4.1/javaCompile/javaCompile.lock" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/5.4.1/javaCompile/taskHistory.bin" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/5.4.1/javaCompile/taskHistory.bin" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/buildOutputCleanup/buildOutputCleanup.lock" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/buildOutputCleanup/buildOutputCleanup.lock" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/caches/build_file_checksums.ser" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/caches/build_file_checksums.ser" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
@@ -131,16 +123,11 @@
<change beforePath="$PROJECT_DIR$/app/src/main/cpp/3rdparty/json" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/cpp/3rdparty/json" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/cpp/3rdparty/json/ChangeLog.md" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/cpp/3rdparty/json/ChangeLog.md" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/cpp/3rdparty/json/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/cpp/3rdparty/json/README.md" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/cpp/BaseRepository.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/cpp/BaseRepository.cpp" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/cpp/Demo.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/cpp/Demo.cpp" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/cpp/UserRepository.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/cpp/UserRepository.cpp" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/cpp/UserRepository.h" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/cpp/UserRepository.h" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/cpp/model/Song.h" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/cpp/model/Song.h" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/cpp/model/Token.h" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/cpp/model/Token.h" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/cpp/model/User.h" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/cpp/model/User.h" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/example/mear/activities/DemoStreamActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/example/mear/activities/LoginActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/activity_demo_stream.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/activity_login.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/content_demo_stream.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/content_login.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/cpp/SongRepository.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/cpp/SongRepository.cpp" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/cpp/SongRepository.h" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/cpp/SongRepository.h" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/example/mear/activities/LoginActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/example/mear/activities/LoginActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/content_login.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/content_login.xml" afterDir="false" />
</list>
<ignored path="$PROJECT_DIR$/.gradle/" />
<ignored path="$PROJECT_DIR$/build/classes/" />
@@ -219,76 +206,62 @@
</system>
</component>
<component name="FileEditorManager">
<splitter split-orientation="horizontal" split-proportion="0.5">
<split-first>
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file pinned="false" current-in-tab="false">
<file pinned="true" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/app/src/main/java/com/example/mear/activities/LoginActivity.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="904">
<caret line="92" selection-start-line="92" selection-end-line="92" />
<state relative-caret-position="200">
<caret line="85" selection-start-line="85" selection-end-line="85" />
<folding>
<element signature="e#37#378#0" expanded="true" />
<element signature="e#3295#3342#0" expanded="true" />
<element signature="e#37#408#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/app/src/main/java/com/example/mear/models/Song.kt">
<file pinned="true" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/app/src/main/res/layout/activity_icarus_song.xml">
<provider editor-type-id="android-designer2" />
<provider selected="true" editor-type-id="text-editor" />
</entry>
</file>
<file pinned="true" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/app/src/main/java/com/example/mear/activities/SongViewActivity.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="13">
<caret line="28" column="23" selection-start-line="28" selection-start-column="23" selection-end-line="28" selection-end-column="23" />
<folding>
<element signature="e#37#805#0" expanded="true" />
<element signature="e#1556#1602#0" />
<element signature="e#1637#1742#0" />
<element signature="e#1787#1862#0" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="true" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/app/src/main/res/layout/activity_song_view.xml">
<provider editor-type-id="android-designer2" />
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="48">
<caret line="3" column="61" selection-start-line="3" selection-start-column="61" selection-end-line="3" selection-end-column="61" />
<caret line="3" column="49" selection-start-line="3" selection-start-column="49" selection-end-line="3" selection-end-column="49" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/app/src/main/cpp/model/Song.h">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="416">
<caret line="26" column="11" selection-start-line="26" selection-start-column="11" selection-end-line="26" selection-end-column="11" />
</state>
</provider>
<file pinned="true" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/app/src/main/res/layout/content_song_view.xml">
<provider editor-type-id="android-designer2" />
<provider selected="true" editor-type-id="text-editor" />
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/app/src/main/cpp/Demo.cpp">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="280">
<caret line="49" selection-start-line="49" selection-end-line="49" />
<folding>
<element signature="e#41#60#0" expanded="true" />
<element signature="e#1952#2273#0" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/app/src/main/cpp/model/Token.h">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="256">
<caret line="16" column="45" selection-start-line="16" selection-start-column="45" selection-end-line="16" selection-end-column="45" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/app/src/main/cpp/model/User.h">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="128">
<caret line="8" column="17" selection-start-line="8" selection-start-column="17" selection-end-line="8" selection-end-column="17" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/app/src/main/java/com/example/mear/models/User.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="32">
<caret line="2" column="62" selection-start-line="2" selection-start-column="62" selection-end-line="2" selection-end-column="62" />
</state>
</provider>
<file pinned="true" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/app/src/main/res/layout/fragment_song_view.xml">
<provider selected="true" editor-type-id="android-designer2" />
<provider editor-type-id="text-editor" />
</entry>
</file>
<file pinned="false" current-in-tab="false">
@@ -300,31 +273,63 @@
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/app/src/main/cpp/BaseRepository.cpp">
<file pinned="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/app/src/main/res/layout/content_login.xml">
<provider selected="true" editor-type-id="android-designer2" />
<provider editor-type-id="text-editor">
<state relative-caret-position="720">
<caret line="45" column="4" selection-start-line="45" selection-start-column="4" selection-end-line="45" selection-end-column="4" />
</state>
</provider>
</entry>
</file>
<file pinned="true" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/app/src/main/cpp/Demo.cpp">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="800">
<caret line="50" selection-start-line="50" selection-end-line="50" />
<state relative-caret-position="70">
<caret line="42" column="28" lean-forward="true" selection-start-line="42" selection-start-column="28" selection-end-line="42" selection-end-column="28" />
<folding>
<element signature="e#41#68#0" expanded="true" />
<element signature="e#41#60#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/app/src/main/cpp/SongRepository.cpp">
<entry file="file://$PROJECT_DIR$/app/src/main/res/layout/activity_login.xml">
<provider selected="true" editor-type-id="android-designer2" />
<provider editor-type-id="text-editor" />
</entry>
</file>
</leaf>
</split-first>
<split-second>
<leaf>
<file pinned="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/app/src/main/res/layout/activity_icarus_song.xml">
<provider editor-type-id="android-designer2" />
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="160">
<caret line="10" column="22" selection-start-line="10" selection-start-column="22" selection-end-line="10" selection-end-column="22" />
<state relative-caret-position="192">
<caret line="12" column="52" selection-start-line="12" selection-start-column="52" selection-end-line="12" selection-end-column="52" />
</state>
</provider>
</entry>
</file>
<file pinned="true" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/app/src/main/java/com/example/mear/activities/IcarusSongActivity.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="502">
<caret line="39" column="13" selection-start-line="39" selection-start-column="13" selection-end-line="39" selection-end-column="13" />
<folding>
<element signature="e#41#68#0" expanded="true" />
<element signature="e#37#567#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
</leaf>
</split-second>
</splitter>
</component>
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
@@ -357,9 +362,7 @@
<option value="$PROJECT_DIR$/app/src/main/java/com/example/mear/Song.kt" />
<option value="$PROJECT_DIR$/app/src/main/java/com/example/mear/models/Song.kt" />
<option value="$PROJECT_DIR$/app/src/main/cpp/Tok.cpp" />
<option value="$PROJECT_DIR$/app/src/main/cpp/SongRepository.h" />
<option value="$PROJECT_DIR$/app/src/main/java/com/example/mear/playback/service/MusicService.kt" />
<option value="$PROJECT_DIR$/app/src/main/cpp/SongRepository.cpp" />
<option value="$PROJECT_DIR$/app/src/main/cpp/Token.h" />
<option value="$PROJECT_DIR$/app/src/main/res/values/strings.xml" />
<option value="$PROJECT_DIR$/app/src/main/cpp/CMakeLists.txt" />
@@ -369,15 +372,22 @@
<option value="$PROJECT_DIR$/app/src/main/java/com/example/mear/constants/AppDataPath.kt" />
<option value="$PROJECT_DIR$/app/src/main/cpp/UserRepository.h" />
<option value="$PROJECT_DIR$/app/src/main/cpp/UserRepository.cpp" />
<option value="$PROJECT_DIR$/app/src/main/res/layout/content_login.xml" />
<option value="$PROJECT_DIR$/app/src/main/java/com/example/mear/models/User.kt" />
<option value="$PROJECT_DIR$/app/src/main/cpp/model/Song.h" />
<option value="$PROJECT_DIR$/app/src/main/java/com/example/mear/activities/LoginActivity.kt" />
<option value="$PROJECT_DIR$/app/src/main/cpp/Demo.cpp" />
<option value="$PROJECT_DIR$/app/src/main/java/com/example/mear/models/Token.kt" />
<option value="$PROJECT_DIR$/app/src/main/cpp/model/User.h" />
<option value="$PROJECT_DIR$/app/src/main/cpp/model/Token.h" />
<option value="$PROJECT_DIR$/app/src/main/cpp/BaseRepository.cpp" />
<option value="$PROJECT_DIR$/app/src/main/java/com/example/mear/activities/MainActivity.kt" />
<option value="$PROJECT_DIR$/app/src/main/res/layout/activity_song_view.xml" />
<option value="$PROJECT_DIR$/app/src/main/res/layout/activity_icarus_song.xml" />
<option value="$PROJECT_DIR$/app/src/main/java/com/example/mear/activities/SongViewActivity.kt" />
<option value="$PROJECT_DIR$/app/src/main/java/com/example/mear/activities/IcarusSongActivity.kt" />
<option value="$PROJECT_DIR$/app/src/main/java/com/example/mear/activities/LoginActivity.kt" />
<option value="$PROJECT_DIR$/app/src/main/cpp/SongRepository.h" />
<option value="$PROJECT_DIR$/app/src/main/cpp/SongRepository.cpp" />
<option value="$PROJECT_DIR$/app/src/main/cpp/Demo.cpp" />
<option value="$PROJECT_DIR$/app/src/main/res/layout/content_login.xml" />
</list>
</option>
</component>
@@ -392,9 +402,9 @@
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="PackagesPane" />
<pane id="ProjectPane" />
<pane id="Scope" />
<pane id="ProjectPane" />
<pane id="PackagesPane" />
<pane id="AndroidView">
<subPane>
<expand>
@@ -405,20 +415,13 @@
<path>
<item name="mear" type="1abcf292:AndroidViewProjectNode" />
<item name="app" type="feadf853:AndroidModuleNode" />
<item name="cpp" type="9a30073f:AndroidJniFolderNode" />
<item name="res" type="d4f16f75:AndroidResFolderNode" />
</path>
<path>
<item name="mear" type="1abcf292:AndroidViewProjectNode" />
<item name="app" type="feadf853:AndroidModuleNode" />
<item name="cpp" type="9a30073f:AndroidJniFolderNode" />
<item name="" type="557542c:NdkLibraryEnhancedHeadersNode" />
</path>
<path>
<item name="mear" type="1abcf292:AndroidViewProjectNode" />
<item name="app" type="feadf853:AndroidModuleNode" />
<item name="cpp" type="9a30073f:AndroidJniFolderNode" />
<item name="" type="557542c:NdkLibraryEnhancedHeadersNode" />
<item name="model" type="462c0819:PsiDirectoryNode" />
<item name="res" type="d4f16f75:AndroidResFolderNode" />
<item name="layout" type="ddeffd01:AndroidResFolderTypeNode" />
</path>
</expand>
<select />
@@ -441,6 +444,9 @@
<key name="MoveKotlinTopLevelDeclarationsDialog.RECENTS_KEY">
<recent name="com.example.mear.models" />
</key>
<key name="android.template.packageName">
<recent name="com.example.mear.activities" />
</key>
<key name="MoveFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/app/src/main/cpp" />
<recent name="$PROJECT_DIR$/app/src/main/cpp/model" />
@@ -545,7 +551,14 @@
<option name="project" value="LOCAL" />
<updated>1570328051146</updated>
</task>
<option name="localTasksCounter" value="3" />
<task id="LOCAL-00003" summary="User credentials are saved and retrieved from the SQLite database. Next I want to retrieve all songs from icarus and return it to java/kotlin. Some code cleanup">
<created>1570499060130</created>
<option name="number" value="00003" />
<option name="presentableId" value="LOCAL-00003" />
<option name="project" value="LOCAL" />
<updated>1570499060130</updated>
</task>
<option name="localTasksCounter" value="4" />
<servers />
</component>
<component name="ToolWindowManager">
@@ -569,7 +582,7 @@
<window_info anchor="bottom" id="Event Log" order="5" sideWeight="0.5010672" side_tool="true" weight="0.32917964" />
<window_info anchor="bottom" id="Build" order="6" sideWeight="0.49893278" weight="0.32541323" />
<window_info anchor="bottom" id="Run" order="7" />
<window_info anchor="bottom" id="Debug" order="8" sideWeight="0.49893278" visible="true" weight="0.3285124" />
<window_info anchor="bottom" id="Debug" order="8" sideWeight="0.49893278" weight="0.3285124" />
<window_info anchor="bottom" id="Find" order="9" weight="0.32954547" />
<window_info anchor="right" id="Device File Explorer" order="0" sideWeight="0.50153846" side_tool="true" weight="0.32995737" />
<window_info anchor="right" id="Capture Analysis" order="1" />
@@ -582,7 +595,8 @@
<component name="VcsManagerConfiguration">
<MESSAGE value="JNI is wanky. Finally about to return an object from C++ to Java/Kotlin" />
<MESSAGE value="Able to do a demo stream, not via jni but with android's media player. Need to integrate sqlite to save token, username, password, and uri" />
<option name="LAST_COMMIT_MESSAGE" value="Able to do a demo stream, not via jni but with android's media player. Need to integrate sqlite to save token, username, password, and uri" />
<MESSAGE value="User credentials are saved and retrieved from the SQLite database. Next I want to retrieve all songs from icarus and return it to java/kotlin. Some code cleanup" />
<option name="LAST_COMMIT_MESSAGE" value="User credentials are saved and retrieved from the SQLite database. Next I want to retrieve all songs from icarus and return it to java/kotlin. Some code cleanup" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager>
@@ -595,45 +609,15 @@
</line-breakpoint>
<line-breakpoint enabled="true" type="kotlin-line">
<url>file://$PROJECT_DIR$/app/src/main/java/com/example/mear/activities/LoginActivity.kt</url>
<line>78</line>
<properties />
<option name="timeStamp" value="87" />
</line-breakpoint>
<line-breakpoint enabled="true" type="kotlin-line">
<url>file://$PROJECT_DIR$/app/src/main/java/com/example/mear/activities/LoginActivity.kt</url>
<line>86</line>
<properties />
<option name="timeStamp" value="126" />
</line-breakpoint>
<line-breakpoint enabled="true" type="kotlin-line">
<url>file://$PROJECT_DIR$/app/src/main/java/com/example/mear/activities/LoginActivity.kt</url>
<line>42</line>
<properties />
<option name="timeStamp" value="127" />
</line-breakpoint>
<line-breakpoint enabled="true" type="kotlin-line">
<url>file://$PROJECT_DIR$/app/src/main/java/com/example/mear/activities/LoginActivity.kt</url>
<line>87</line>
<properties />
<option name="timeStamp" value="136" />
</line-breakpoint>
<line-breakpoint enabled="true" type="kotlin-line">
<url>file://$PROJECT_DIR$/app/src/main/java/com/example/mear/activities/LoginActivity.kt</url>
<line>43</line>
<properties />
<option name="timeStamp" value="138" />
</line-breakpoint>
<line-breakpoint enabled="true" type="kotlin-line">
<url>file://$PROJECT_DIR$/app/src/main/java/com/example/mear/activities/LoginActivity.kt</url>
<line>44</line>
<line>45</line>
<properties />
<option name="timeStamp" value="144" />
</line-breakpoint>
<line-breakpoint enabled="true" type="kotlin-line">
<url>file://$PROJECT_DIR$/app/src/main/java/com/example/mear/activities/LoginActivity.kt</url>
<line>91</line>
<line>85</line>
<properties />
<option name="timeStamp" value="145" />
<option name="timeStamp" value="151" />
</line-breakpoint>
<line-breakpoint enabled="true" type="com.jetbrains.cidr.execution.debugger.OCBreakpointType">
<url>file://$PROJECT_DIR$/app/src/main/cpp/BaseRepository.cpp</url>
@@ -662,7 +646,7 @@
</line-breakpoint>
<line-breakpoint enabled="true" type="com.jetbrains.cidr.execution.debugger.OCBreakpointType">
<url>file://$PROJECT_DIR$/app/src/main/cpp/Demo.cpp</url>
<line>116</line>
<line>165</line>
<option name="timeStamp" value="104" />
</line-breakpoint>
<line-breakpoint enabled="true" type="com.jetbrains.cidr.execution.debugger.OCBreakpointType">
@@ -692,12 +676,12 @@
</line-breakpoint>
<line-breakpoint enabled="true" type="com.jetbrains.cidr.execution.debugger.OCBreakpointType">
<url>file://$PROJECT_DIR$/app/src/main/cpp/Demo.cpp</url>
<line>114</line>
<line>163</line>
<option name="timeStamp" value="113" />
</line-breakpoint>
<line-breakpoint enabled="true" type="com.jetbrains.cidr.execution.debugger.OCBreakpointType">
<url>file://$PROJECT_DIR$/app/src/main/cpp/Demo.cpp</url>
<line>117</line>
<line>166</line>
<option name="timeStamp" value="114" />
</line-breakpoint>
<line-breakpoint enabled="true" type="com.jetbrains.cidr.execution.debugger.OCBreakpointType">
@@ -712,161 +696,38 @@
</line-breakpoint>
<line-breakpoint enabled="true" type="com.jetbrains.cidr.execution.debugger.OCBreakpointType">
<url>file://$PROJECT_DIR$/app/src/main/cpp/Demo.cpp</url>
<line>47</line>
<line>95</line>
<option name="timeStamp" value="146" />
</line-breakpoint>
<line-breakpoint enabled="true" type="com.jetbrains.cidr.execution.debugger.OCBreakpointType">
<url>file://$PROJECT_DIR$/app/src/main/cpp/Demo.cpp</url>
<line>141</line>
<line>217</line>
<option name="timeStamp" value="147" />
</line-breakpoint>
<line-breakpoint enabled="true" type="com.jetbrains.cidr.execution.debugger.OCBreakpointType">
<url>file://$PROJECT_DIR$/app/src/main/cpp/SongRepository.cpp</url>
<line>29</line>
<option name="timeStamp" value="148" />
</line-breakpoint>
<line-breakpoint enabled="true" type="com.jetbrains.cidr.execution.debugger.OCBreakpointType">
<url>file://$PROJECT_DIR$/app/src/main/cpp/SongRepository.cpp</url>
<line>13</line>
<option name="timeStamp" value="149" />
</line-breakpoint>
<line-breakpoint enabled="true" type="com.jetbrains.cidr.execution.debugger.OCBreakpointType">
<url>file://$PROJECT_DIR$/app/src/main/cpp/Demo.cpp</url>
<line>50</line>
<option name="timeStamp" value="150" />
</line-breakpoint>
<line-breakpoint enabled="true" type="com.jetbrains.cidr.execution.debugger.OCBreakpointType">
<url>file://$PROJECT_DIR$/app/src/main/cpp/SongRepository.cpp</url>
<line>55</line>
<option name="timeStamp" value="155" />
</line-breakpoint>
</breakpoints>
</breakpoint-manager>
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/app/src/main/java/com/example/mear/models/PlayCount.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="32">
<caret line="2" column="11" selection-start-line="2" selection-start-column="11" selection-end-line="2" selection-end-column="11" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/cpp/Tok.h">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="336">
<caret line="21" selection-start-line="21" selection-end-line="21" />
<folding>
<element signature="e#80#97#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/java/com/example/mear/AppCompatPreferenceActivity.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-672">
<caret line="17" column="15" selection-start-line="17" selection-start-column="15" selection-end-line="17" selection-end-column="15" />
</state>
</provider>
</entry>
<entry file="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.anko/commons-base/0.10.8/a7b9886dd34c114aebcbcd7c492855425b2300e1/commons-base-0.10.8-sources.jar!/dialogs/Toasts.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="561">
<caret line="73" selection-start-line="73" selection-end-line="73" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/java/com/example/mear/playback/PlayMusic.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="32">
<caret line="2" column="6" selection-start-line="2" selection-start-column="6" selection-end-line="2" selection-end-column="6" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/java/com/example/mear/activities/SongViewActivity.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="96">
<caret line="26" column="6" selection-start-line="26" selection-start-column="6" selection-end-line="26" selection-end-column="6" />
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/Android/Sdk/sources/android-28/android/content/ContextWrapper.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="206">
<caret line="612" selection-start-line="612" selection-end-line="612" />
</state>
</provider>
</entry>
<entry file="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlinx/kotlinx-coroutines-core-common/1.0.0/fbe00e9f1a3138c7d138fe4e02724366e9e42f24/kotlinx-coroutines-core-common-1.0.0-sources.jar!/AbstractCoroutine.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="222">
<caret line="117" selection-start-line="117" selection-end-line="117" />
</state>
</provider>
</entry>
<entry file="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlinx/kotlinx-coroutines-core-common/1.0.0/fbe00e9f1a3138c7d138fe4e02724366e9e42f24/kotlinx-coroutines-core-common-1.0.0-sources.jar!/Dispatched.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="197">
<caret line="80" selection-start-line="80" selection-end-line="80" />
</state>
</provider>
</entry>
<entry file="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlinx/kotlinx-coroutines-core/1.0.0/25f38c379fd216bf66c638fc5f5b595650c1bd64/kotlinx-coroutines-core-1.0.0-sources.jar!/EventLoop.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="206">
<caret line="123" selection-start-line="123" selection-end-line="123" />
</state>
</provider>
</entry>
<entry file="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlinx/kotlinx-coroutines-core/1.0.0/25f38c379fd216bf66c638fc5f5b595650c1bd64/kotlinx-coroutines-core-1.0.0-sources.jar!/Builders.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="197">
<caret line="44" selection-start-line="44" selection-end-line="44" />
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/Android/Sdk/sources/android-28/android/app/LoadedApk.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="197">
<caret line="1478" selection-start-line="1478" selection-end-line="1478" />
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/Android/Sdk/sources/android-28/android/os/Looper.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="501">
<caret line="154" selection-start-line="154" selection-end-line="154" />
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/Android/Sdk/sources/android-28/android/os/Handler.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="197">
<caret line="92" selection-start-line="92" selection-end-line="92" />
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/Android/Sdk/sources/android-28/android/view/View.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="197">
<caret line="22431" selection-start-line="22431" selection-end-line="22431" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/cpp/3rdparty/json/single_include/nlohmann/json.hpp">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="352">
<caret line="4459" selection-start-line="4459" selection-end-line="4459" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/java/com/example/mear/activities/BaseServiceActivity.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="416">
<caret line="38" column="26" selection-start-line="38" selection-start-column="26" selection-end-line="38" selection-end-column="26" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/cpp/Tok.cpp">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1024">
<caret line="64" column="28" selection-start-line="64" selection-start-column="28" selection-end-line="64" selection-end-column="28" />
<folding>
<element signature="e#41#57#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/AndroidStudio/DeviceExplorer/motorola-moto_e__4__plus-ZY2248HP8X/data/data/com.example.mear/databases/Mear" />
<entry file="file://$PROJECT_DIR$/app/src/main/java/com/example/mear/repositories/TrackRepository.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1318">
<caret line="9" column="6" selection-start-line="9" selection-start-column="6" selection-end-line="9" selection-end-column="6" />
<folding>
<element signature="e#39#172#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/java/com/example/mear/management/TrackManager.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-2048">
@@ -927,42 +788,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/java/com/example/mear/activities/MainActivity.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1056">
<caret line="105" column="61" selection-start-line="105" selection-start-column="61" selection-end-line="105" selection-end-column="61" />
<folding>
<element signature="e#37#1543#0" expanded="true" />
<element signature="e#2611#2644#0" />
<element signature="e#2675#2981#0" />
<element signature="e#3445#3714#0" />
<element signature="e#3758#4433#0" />
<element signature="e#4539#4882#0" />
<element signature="e#4918#5283#0" />
<element signature="e#5317#6013#0" />
<element signature="e#6045#6682#0" />
<element signature="e#6716#7108#0" />
<element signature="e#7145#7462#0" />
<element signature="e#7503#7832#0" />
<element signature="e#9292#9477#0" />
<element signature="e#9517#9713#0" />
<element signature="e#9761#10165#0" />
<element signature="e#10202#10701#0" />
<element signature="e#10741#11801#0" />
<element signature="e#11908#12272#0" />
<element signature="e#12428#12844#0" />
<element signature="e#12894#13172#0" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/cpp/SongRepository.h">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="320">
<caret line="20" column="90" selection-start-line="20" selection-start-column="90" selection-end-line="20" selection-end-column="90" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/java/com/example/mear/constants/ControlTypes.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="32">
@@ -970,10 +795,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/res/layout/activity_login.xml">
<provider selected="true" editor-type-id="android-designer2" />
<provider editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/res/values/strings.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="112">
@@ -1008,14 +829,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/res/layout/content_login.xml">
<provider selected="true" editor-type-id="android-designer2" />
<provider editor-type-id="text-editor">
<state relative-caret-position="542">
<caret line="45" column="4" selection-start-line="45" selection-start-column="4" selection-end-line="45" selection-end-column="4" />
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/Android/Sdk/ndk/20.0.5594570/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/jni.h">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="206">
@@ -1033,17 +846,10 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/java/com/example/mear/models/Token.kt">
<entry file="file://$USER_HOME$/Android/Sdk/ndk/20.0.5594570/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1/string">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="32">
<caret line="2" selection-start-line="2" selection-end-line="2" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/java/com/example/mear/models/User.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="32">
<caret line="2" column="62" selection-start-line="2" selection-start-column="62" selection-end-line="2" selection-end-column="62" />
<state relative-caret-position="16">
<caret line="819" selection-start-line="819" selection-end-line="819" />
</state>
</provider>
</entry>
@@ -1054,10 +860,10 @@
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/Android/Sdk/ndk/20.0.5594570/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1/string">
<entry file="file://$PROJECT_DIR$/app/src/main/java/com/example/mear/models/User.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="16">
<caret line="819" selection-start-line="819" selection-end-line="819" />
<state relative-caret-position="32">
<caret line="2" column="62" selection-start-line="2" selection-start-column="62" selection-end-line="2" selection-end-column="62" />
</state>
</provider>
</entry>
@@ -1071,23 +877,166 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/cpp/SongRepository.cpp">
<entry file="file://$PROJECT_DIR$/app/src/main/cpp/model/Token.h">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="160">
<caret line="10" column="22" selection-start-line="10" selection-start-column="22" selection-end-line="10" selection-end-column="22" />
<state relative-caret-position="256">
<caret line="16" column="45" selection-start-line="16" selection-start-column="45" selection-end-line="16" selection-end-column="45" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/res/layout/activity_main.xml">
<provider selected="true" editor-type-id="android-designer2" />
<provider editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/res/layout/activity_settings.xml">
<provider selected="true" editor-type-id="android-designer2" />
<provider editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/res/layout/popup_layout.xml">
<provider selected="true" editor-type-id="android-designer2" />
<provider editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/res/layout/fragment_track_flow.xml">
<provider selected="true" editor-type-id="android-designer2" />
<provider editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/res/layout/fragment_track_elapsing.xml">
<provider selected="true" editor-type-id="android-designer2" />
<provider editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/res/menu/menu_song_view.xml">
<provider selected="true" editor-type-id="android-designer2" />
<provider editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/res/menu/popup_menu.xml">
<provider selected="true" editor-type-id="android-designer2" />
<provider editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/res/menu/main.xml">
<provider selected="true" editor-type-id="android-designer2" />
<provider editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/res/layout/fragment_settings_view.xml">
<provider selected="true" editor-type-id="android-designer2" />
<provider editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/res/layout/fragment_play_controls.xml">
<provider selected="true" editor-type-id="android-designer2" />
<provider editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/res/layout/content_settings.xml">
<provider selected="true" editor-type-id="android-designer2" />
<provider editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/res/menu/activity_main_drawer.xml">
<provider selected="true" editor-type-id="android-designer2" />
<provider editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/res/layout/content_main.xml">
<provider selected="true" editor-type-id="android-designer2" />
<provider editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/java/com/example/mear/activities/MainActivity.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="342">
<caret line="348" column="20" selection-start-line="348" selection-start-column="20" selection-end-line="348" selection-end-column="20" />
<folding>
<element signature="e#41#68#0" expanded="true" />
<element signature="e#37#1543#0" expanded="true" />
<element signature="e#2611#2644#0" />
<element signature="e#2675#2981#0" />
<element signature="e#3445#3714#0" />
<element signature="e#4471#4502#0" />
<element signature="e#4539#4882#0" />
<element signature="e#4918#5283#0" />
<element signature="e#5317#6013#0" />
<element signature="e#6045#6682#0" />
<element signature="e#6716#7108#0" />
<element signature="e#7145#7462#0" />
<element signature="e#7503#7832#0" />
<element signature="e#7874#9258#0" />
<element signature="e#9292#9477#0" />
<element signature="e#9517#9713#0" />
<element signature="e#9761#10165#0" />
<element signature="e#10202#10701#0" />
<element signature="e#11908#12272#0" />
<element signature="e#12428#12844#0" />
<element signature="e#12894#13172#0" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/res/layout/activity_song_view.xml">
<provider editor-type-id="android-designer2" />
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="48">
<caret line="3" column="49" selection-start-line="3" selection-start-column="49" selection-end-line="3" selection-end-column="49" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/res/layout/content_song_view.xml">
<provider editor-type-id="android-designer2" />
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/java/com/example/mear/activities/IcarusSongActivity.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="502">
<caret line="39" column="13" selection-start-line="39" selection-start-column="13" selection-end-line="39" selection-end-column="13" />
<folding>
<element signature="e#37#567#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/cpp/model/Song.h">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="416">
<caret line="26" column="11" selection-start-line="26" selection-start-column="11" selection-end-line="26" selection-end-column="11" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/java/com/example/mear/activities/SongViewActivity.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="13">
<caret line="28" column="23" selection-start-line="28" selection-start-column="23" selection-end-line="28" selection-end-column="23" />
<folding>
<element signature="e#37#805#0" expanded="true" />
<element signature="e#1556#1602#0" />
<element signature="e#1637#1742#0" />
<element signature="e#1787#1862#0" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/Android/Sdk/ndk/20.0.5594570/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1/stdexcept">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="208">
<caret line="235" selection-start-line="235" selection-end-line="235" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/java/com/example/mear/activities/LoginActivity.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="904">
<caret line="92" selection-start-line="92" selection-end-line="92" />
<state relative-caret-position="200">
<caret line="85" selection-start-line="85" selection-end-line="85" />
<folding>
<element signature="e#37#378#0" expanded="true" />
<element signature="e#3295#3342#0" expanded="true" />
<element signature="e#37#408#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/cpp/SongRepository.h">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="176">
<caret line="11" column="23" selection-start-line="11" selection-start-column="23" selection-end-line="11" selection-end-column="23" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/cpp/SongRepository.cpp">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="144">
<caret line="9" selection-start-line="9" selection-end-line="9" />
<folding>
<element signature="e#41#68#0" expanded="true" />
</folding>
</state>
</provider>
@@ -1099,30 +1048,42 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/cpp/model/Song.h">
<entry file="file://$PROJECT_DIR$/app/src/main/res/layout/fragment_song_view.xml">
<provider selected="true" editor-type-id="android-designer2" />
<provider editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/res/layout/activity_icarus_song.xml">
<provider editor-type-id="android-designer2" />
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/java/com/example/mear/models/Token.kt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="416">
<caret line="26" column="11" selection-start-line="26" selection-start-column="11" selection-end-line="26" selection-end-column="11" />
<state relative-caret-position="32">
<caret line="2" selection-start-line="2" selection-end-line="2" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/cpp/Demo.cpp">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="280">
<caret line="49" selection-start-line="49" selection-end-line="49" />
<state relative-caret-position="70">
<caret line="42" column="28" lean-forward="true" selection-start-line="42" selection-start-column="28" selection-end-line="42" selection-end-column="28" />
<folding>
<element signature="e#41#60#0" expanded="true" />
<element signature="e#1952#2273#0" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/cpp/model/Token.h">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="256">
<caret line="16" column="45" selection-start-line="16" selection-start-column="45" selection-end-line="16" selection-end-column="45" />
<entry file="file://$PROJECT_DIR$/app/src/main/res/layout/activity_login.xml">
<provider editor-type-id="text-editor" />
<provider selected="true" editor-type-id="android-designer2" />
</entry>
<entry file="file://$PROJECT_DIR$/app/src/main/res/layout/content_login.xml">
<provider editor-type-id="text-editor">
<state relative-caret-position="720">
<caret line="45" column="4" selection-start-line="45" selection-start-column="4" selection-end-line="45" selection-end-column="4" />
</state>
</provider>
<provider selected="true" editor-type-id="android-designer2" />
</entry>
</component>
</project>
+4 -3
View File
@@ -2,6 +2,9 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.mear">
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
@@ -9,6 +12,7 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".activities.IcarusSongActivity"></activity>
<activity
android:name=".activities.LoginActivity"
android:label="@string/title_activity_demo_stream"
@@ -53,7 +57,4 @@
<service android:name=".playback.service.MusicService" />
</application>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>
+76
View File
@@ -24,11 +24,15 @@
#include <sqlite3.h>
#include "model/Song.h"
#include "model/Token.h"
#include "model/User.h"
#include "SongRepository.h"
#include "Tok.h"
#include "UserRepository.h"
std::vector<model::Song> retrieveSongs(const model::Token&, const std::string&);
jobject songToObj(JNIEnv *env, const model::Song&);
model::Song retrieveSong(const std::string&, const std::string&, const int);
@@ -42,6 +46,50 @@ bool userCredentialExist(const std::string&);
void saveCredentials(const model::User&, const std::string&);
std::vector<model::Song> retrieveSongs(const model::Token& token, const std::string& baseUri)
{
std::vector<model::Song> songs;
repository::SongRepository songRepo;
songs = songRepo.fetchSongs(token, baseUri);
return songs;
}
jobject songToObj(JNIEnv *env, const model::Song& song)
{
jclass songClass = env->FindClass( "com/example/mear/models/Song");
jmethodID jconstructor = env->GetMethodID( songClass, "<init>", "()V" );
jobject songObj = env->NewObject( songClass, jconstructor );
jmethodID songId = env->GetMethodID( songClass, "setId", "(I)V" );
jmethodID songTitle = env->GetMethodID( songClass, "setTitle", "(Ljava/lang/String;)V" );
jmethodID songAlbum = env->GetMethodID( songClass, "setAlbum", "(Ljava/lang/String;)V" );
jmethodID songArtist = env->GetMethodID( songClass, "setArtist", "(Ljava/lang/String;)V" );
jmethodID songGenre = env->GetMethodID( songClass, "setGenre", "(Ljava/lang/String;)V" );
jmethodID songDuration = env->GetMethodID( songClass, "setDuration", "(I)V" );
jmethodID songYear = env->GetMethodID( songClass, "setYear", "(I)V" );
jint id = song.id;
jstring title = env->NewStringUTF(song.title.c_str());
jstring album = env->NewStringUTF(song.album.c_str());
jstring artist = env->NewStringUTF(song.artist.c_str());
jstring genre = env->NewStringUTF(song.genre.c_str());
jint duration = song.duration;
jint year = song.year;
env->CallVoidMethod( songObj, songId, id );
env->CallVoidMethod(songObj, songTitle, title);
env->CallVoidMethod(songObj, songAlbum, album);
env->CallVoidMethod(songObj, songArtist, artist);
env->CallVoidMethod(songObj, songGenre, genre);
env->CallVoidMethod(songObj, songDuration, duration);
env->CallVoidMethod(songObj, songYear, year);
return songObj;
}
model::Song retrieveSong(const std::string& token, const std::string& baseUri, const int songId)
{
repository::SongRepository songRepo;
@@ -49,6 +97,7 @@ model::Song retrieveSong(const std::string& token, const std::string& baseUri, c
420, 420);
song = songRepo.retrieveSong(token, baseUri, song);
auto songs = songRepo.fetchSongs(model::Token(token), baseUri);
return song;
}
@@ -126,6 +175,33 @@ void saveCredentials(const model::User& user, const std::string& appDirectory)
}
extern "C"
JNIEXPORT jobjectArray
JNICALL
Java_com_example_mear_activities_IcarusSongActivity_retrieveSongs(
JNIEnv *env,
jobject thisOnj,
jobject token,
jstring baseUri
) {
jclass songClass = env->FindClass( "com/example/mear/models/Song");
jclass tokenClass = env->FindClass("com/example/mear/models/Token");
jobjectArray songs = env->NewObjectArray(2, songClass, nullptr);
auto tok = env->CallObjectMethod(token, env->GetMethodID(tokenClass, "setAccessToken", "(Ljava/lang/String;)V"));
std::string tokStr = env->GetStringUTFChars((jstring)tok, nullptr);
model::Token tk(tokStr);
const std::string uri = env->GetStringUTFChars(baseUri, nullptr);
auto allSongs = retrieveSongs(tk, uri);
for (auto i = 0; i != allSongs.size(); ++i) {
auto song = songToObj(env, allSongs[i]);
env->SetObjectArrayElement(songs, i, song);
}
return songs;
}
extern "C"
JNIEXPORT jobject
JNICALL
+43 -2
View File
@@ -8,12 +8,53 @@
#include <nlohmann/json.hpp>
namespace repository {
// TODO: implement this
std::vector<model::Song> SongRepository::fetchSongs(const std::string& token,
std::vector<model::Song> SongRepository::fetchSongs(const model::Token& token,
const std::string& uri)
{
std::string fullUri(uri);
if (fullUri.at(fullUri.size()-1) != '/') {
fullUri.append("/");
}
fullUri.append("api/v1/song");
std::vector<model::Song> songs;
CURL *curl;
CURLcode res;
struct curl_slist *chunk = nullptr;
curl = curl_easy_init();
if (!curl) {
return songs;
}
constexpr auto EXPECTED_CHAR_AMOUNT = 100000;
auto resp = std::make_unique<char[]>(EXPECTED_CHAR_AMOUNT);
std::string authInfo("Authorization: Bearer ");
authInfo.append(token.accessToken);
chunk = curl_slist_append(chunk, authInfo.c_str());
curl_easy_setopt(curl, CURLOPT_URL, fullUri.c_str());
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, respBodyRetriever);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, resp.get());
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
if (res == CURLE_OK) {
auto songsJson = nlohmann::json::parse(resp.get());
for (auto& songJson: songsJson) {
model::Song song(songJson["id"].get<int>(), songJson["title"].get<std::string>(),
songJson["artist"].get<std::string>(), songJson["album"].get<std::string>(),
songJson["genre"].get<std::string>(), songJson["duration"].get<int>(),
songJson["year"].get<int>());
songs.push_back(song);
}
}
return songs;
}
+2 -1
View File
@@ -9,12 +9,13 @@
#include <vector>
#include "model/Song.h"
#include "model/Token.h"
namespace repository {
class SongRepository {
public:
std::vector<model::Song> fetchSongs(const std::string&, const std::string&);
std::vector<model::Song> fetchSongs(const model::Token&, const std::string&);
model::Song retrieveSong(const std::string&, const int);
model::Song retrieveSong(const std::string&, const std::string&, const int);
@@ -0,0 +1,59 @@
package com.example.mear.activities
import android.os.Build
import android.os.Bundle
import android.support.annotation.RequiresApi
import android.support.v7.widget.LinearLayoutManager
import android.support.v7.app.AppCompatActivity
import android.support.v7.widget.SearchView
import kotlinx.android.synthetic.main.activity_icarus_song.*
import kotlinx.android.synthetic.main.content_song_view.*
import com.example.mear.activities.BaseServiceActivity
import com.example.mear.adapters.RecyclerAdapter
import com.example.mear.models.TrackItems
import com.example.mear.models.Song
import com.example.mear.R
import com.example.mear.repositories.TrackRepository
class IcarusSongActivity : BaseServiceActivity() {
private lateinit var adapter: RecyclerAdapter
private lateinit var linearLayoutManager: LinearLayoutManager
private var songs: ArrayList<Song>? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_icarus_song)
setSupportActionBar(toolbar)
supportActionBar?.setDisplayHomeAsUpEnabled(true)
try {
val colr = R.color.track_seek
window.statusBarColor = resources.getColor(R.color.track_seek)
doBindService()
initializeAdapter()
//initializeSongSearchListener()
}
catch (ex: Exception) {
val msg = ex.message
}
}
private fun initializeAdapter() {
try {
linearLayoutManager = LinearLayoutManager(this)
trackList.layoutManager = linearLayoutManager
songs!!.sortedWith(compareBy{it.title})
}
catch (ex: Exception) {
val msg = ex.message
}
}
}
@@ -1,5 +1,6 @@
package com.example.mear.activities
import android.content.Intent
import android.os.Bundle
import android.os.Environment
import android.support.design.widget.Snackbar
@@ -87,6 +88,7 @@ class LoginActivity : BaseServiceActivity() {
if (saveCred && isUserTableEmpty(pa)) {
saveUserCredentials(usernameStr, passwordStr, pa)
}
//startActivity(Intent(this, IcarusSongActivity::class.java))
}
catch (ex: Exception) {
val msg = ex.message
@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activities.IcarusSongActivity">
<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/color_background"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
<include
android:id="@+id/include2"
layout="@layout/content_song_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
@@ -51,7 +51,6 @@
android:ems="10"
android:hint="apiUri"
android:inputType="textPersonName"
android:text="https://www.soaricarus.com"
app:layout_constraintBottom_toTopOf="@+id/saveUserCred"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />