adding Commons library + initial changes just to make it compilable

This commit is contained in:
tibbi 2017-03-10 22:46:29 +01:00
parent 3e4eba3c9c
commit c9de559fac
21 changed files with 75 additions and 219 deletions

View File

@ -3,8 +3,8 @@ apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.simplemobiletools.filemanager"
@ -26,28 +26,19 @@ android {
}
}
packagingOptions {
exclude 'META-INF/library-compileDebugKotlin.kotlin_module'
}
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
}
dependencies {
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:design:23.4.0'
compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'com.simplemobiletools:filepicker:1.5.6@aar'
compile 'com.simplemobiletools:fileproperties:1.0.7@aar'
compile 'com.simplemobiletools:commons:2.9.8'
compile 'com.bignerdranch.android:recyclerview-multiselect:0.2'
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}
buildscript {
ext.kotlin_version = '1.0.5-2'
ext.kotlin_version = '1.1.0'
repositories {
mavenCentral()
}
@ -63,12 +54,11 @@ def propFile = new File('signing.properties')
if (propFile.canRead()) {
props.load(new FileInputStream(propFile))
if (props != null && props.containsKey('STORE_FILE') && props.containsKey('STORE_PASSWORD') &&
props.containsKey('KEY_ALIAS') && props.containsKey('KEY_PASSWORD')) {
if (props != null && props.containsKey('STORE_FILE') && props.containsKey('KEY_ALIAS') && props.containsKey('PASSWORD')) {
android.signingConfigs.release.storeFile = file(props['STORE_FILE'])
android.signingConfigs.release.storePassword = props['STORE_PASSWORD']
android.signingConfigs.release.storePassword = props['PASSWORD']
android.signingConfigs.release.keyAlias = props['KEY_ALIAS']
android.signingConfigs.release.keyPassword = props['KEY_PASSWORD']
android.signingConfigs.release.keyPassword = props['PASSWORD']
} else {
println 'signing.properties found but some entries are missing'
android.buildTypes.release.signingConfig = null

View File

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.simplemobiletools.filemanager"
xmlns:android="http://schemas.android.com/apk/res/android">
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.simplemobiletools.filemanager">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

View File

@ -1,32 +1,14 @@
package com.simplemobiletools.filemanager
import android.content.Context
import android.content.SharedPreferences
class Config(context: Context) {
private val mPrefs: SharedPreferences
import com.simplemobiletools.commons.helpers.BaseConfig
class Config(context: Context) : BaseConfig(context) {
companion object {
fun newInstance(context: Context) = Config(context)
}
init {
mPrefs = context.getSharedPreferences(PREFS_KEY, Context.MODE_PRIVATE)
}
var isFirstRun: Boolean
get() = mPrefs.getBoolean(IS_FIRST_RUN, true)
set(firstRun) = mPrefs.edit().putBoolean(IS_FIRST_RUN, firstRun).apply()
var isDarkTheme: Boolean
get() = mPrefs.getBoolean(IS_DARK_THEME, false)
set(isDarkTheme) = mPrefs.edit().putBoolean(IS_DARK_THEME, isDarkTheme).apply()
var showHidden: Boolean
get() = mPrefs.getBoolean(SHOW_HIDDEN, false)
set(show) = mPrefs.edit().putBoolean(SHOW_HIDDEN, show).apply()
var treeUri: String
get() = mPrefs.getString(TREE_URI, "")
set(uri) = mPrefs.edit().putString(TREE_URI, uri).apply()
get() = prefs.getBoolean(SHOW_HIDDEN, false)
set(show) = prefs.edit().putBoolean(SHOW_HIDDEN, show).apply()
}

View File

@ -4,11 +4,4 @@ val PATH = "path"
val SCROLL_STATE = "scroll_state"
// shared preferences
val PREFS_KEY = "File Manager"
val IS_FIRST_RUN = "is_first_run"
val IS_DARK_THEME = "is_dark_theme"
val SHOW_HIDDEN = "show_hidden"
val TREE_URI = "tree_uri"
// global intents
val OPEN_DOCUMENT_TREE = 1000

View File

@ -9,6 +9,7 @@ import android.text.method.LinkMovementMethod
import android.view.View
import com.simplemobiletools.filemanager.BuildConfig
import com.simplemobiletools.filemanager.R
import com.simplemobiletools.filemanager.extensions.config
import kotlinx.android.synthetic.main.activity_about.*
import java.util.*
@ -42,7 +43,7 @@ class AboutActivity : SimpleActivity() {
}
private fun setupRateUs() {
if (mConfig.isFirstRun) {
if (config.isFirstRun) {
about_rate_us.visibility = View.GONE
} else {
about_rate_us.setOnClickListener {

View File

@ -4,22 +4,22 @@ import android.Manifest
import android.content.Intent
import android.content.pm.PackageManager
import android.os.Bundle
import android.os.Handler
import android.os.Parcelable
import android.support.v4.app.ActivityCompat
import android.view.Menu
import android.view.MenuItem
import com.simplemobiletools.commons.dialogs.StoragePickerDialog
import com.simplemobiletools.commons.extensions.getInternalStoragePath
import com.simplemobiletools.commons.extensions.hasWriteStoragePermission
import com.simplemobiletools.commons.extensions.storeStoragePaths
import com.simplemobiletools.commons.extensions.toast
import com.simplemobiletools.commons.models.FileDirItem
import com.simplemobiletools.commons.views.Breadcrumbs
import com.simplemobiletools.filemanager.PATH
import com.simplemobiletools.filemanager.R
import com.simplemobiletools.filemanager.SCROLL_STATE
import com.simplemobiletools.filemanager.extensions.config
import com.simplemobiletools.filemanager.fragments.ItemsFragment
import com.simplemobiletools.filepicker.dialogs.StoragePickerDialog
import com.simplemobiletools.filepicker.extensions.getInternalStoragePath
import com.simplemobiletools.filepicker.extensions.hasStoragePermission
import com.simplemobiletools.filepicker.extensions.toast
import com.simplemobiletools.filepicker.models.FileDirItem
import com.simplemobiletools.filepicker.views.Breadcrumbs
import kotlinx.android.synthetic.main.activity_main.*
import java.io.File
import java.util.*
@ -38,17 +38,18 @@ class MainActivity : SimpleActivity(), ItemsFragment.ItemInteractionListener, Br
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
breadcrumbs.setListener(this)
//breadcrumbs.setListener(this)
tryInitFileManager()
storeStoragePaths()
}
override fun onDestroy() {
super.onDestroy()
mConfig.isFirstRun = false
config.isFirstRun = false
}
private fun tryInitFileManager() {
if (hasStoragePermission()) {
if (hasWriteStoragePermission()) {
initRootFileManager()
} else {
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), STORAGE_PERMISSION)
@ -60,7 +61,7 @@ class MainActivity : SimpleActivity(), ItemsFragment.ItemInteractionListener, Br
}
private fun openPath(path: String) {
breadcrumbs.setBreadcrumb(path)
//breadcrumbs.setBreadcrumb(path)
val bundle = Bundle()
bundle.putString(PATH, path)
@ -97,7 +98,7 @@ class MainActivity : SimpleActivity(), ItemsFragment.ItemInteractionListener, Br
}
}
override fun onBackPressed() {
/*override fun onBackPressed() {
if (breadcrumbs.childCount <= 1) {
if (!mWasBackJustPressed) {
mWasBackJustPressed = true
@ -111,7 +112,7 @@ class MainActivity : SimpleActivity(), ItemsFragment.ItemInteractionListener, Br
val item = breadcrumbs.lastItem
openPath(item.path)
}
}
}*/
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
@ -136,8 +137,8 @@ class MainActivity : SimpleActivity(), ItemsFragment.ItemInteractionListener, Br
changePath(it)
}
} else {
val item = breadcrumbs.getChildAt(id).tag as FileDirItem
openPath(item.path)
/*val item = breadcrumbs.getChildAt(id).tag as FileDirItem
openPath(item.path)*/
}
}

View File

@ -1,8 +1,8 @@
package com.simplemobiletools.filemanager.activities
import android.os.Bundle
import android.support.v4.app.TaskStackBuilder
import com.simplemobiletools.filemanager.R
import com.simplemobiletools.filemanager.extensions.config
import kotlinx.android.synthetic.main.activity_settings.*
class SettingsActivity : SimpleActivity() {
@ -10,28 +10,14 @@ class SettingsActivity : SimpleActivity() {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_settings)
setupDarkTheme()
setupShowHidden()
}
private fun setupDarkTheme() {
settings_dark_theme.isChecked = mConfig.isDarkTheme
settings_dark_theme_holder.setOnClickListener {
settings_dark_theme.toggle()
mConfig.isDarkTheme = settings_dark_theme.isChecked
restartActivity()
}
}
private fun setupShowHidden() {
settings_show_hidden.isChecked = mConfig.showHidden
settings_show_hidden.isChecked = config.showHidden
settings_show_hidden_holder.setOnClickListener {
settings_show_hidden.toggle()
mConfig.showHidden = settings_show_hidden.isChecked
config.showHidden = settings_show_hidden.isChecked
}
}
private fun restartActivity() {
TaskStackBuilder.create(applicationContext).addNextIntentWithParentStack(intent).startActivities()
}
}

View File

@ -1,52 +1,10 @@
package com.simplemobiletools.filemanager.activities
import android.annotation.TargetApi
import android.app.Activity
import android.content.Intent
import android.os.Build
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.view.MenuItem
import com.simplemobiletools.filemanager.Config
import com.simplemobiletools.filemanager.OPEN_DOCUMENT_TREE
import com.simplemobiletools.filemanager.R
import com.simplemobiletools.filepicker.extensions.isShowingWritePermissions
import java.io.File
open class SimpleActivity : AppCompatActivity() {
lateinit var mConfig: Config
import com.simplemobiletools.commons.activities.BaseSimpleActivity
open class SimpleActivity : BaseSimpleActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
mConfig = Config.newInstance(applicationContext)
setTheme(if (mConfig.isDarkTheme) R.style.AppTheme_Dark else R.style.AppTheme)
super.onCreate(savedInstanceState)
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
android.R.id.home -> {
finish()
true
}
else -> super.onOptionsItemSelected(item)
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) {
super.onActivityResult(requestCode, resultCode, resultData)
if (requestCode == OPEN_DOCUMENT_TREE && resultCode == Activity.RESULT_OK && resultData != null) {
saveTreeUri(resultData)
}
}
@TargetApi(Build.VERSION_CODES.KITKAT)
fun saveTreeUri(resultData: Intent) {
val treeUri = resultData.data
mConfig.treeUri = treeUri.toString()
val takeFlags = Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION
contentResolver.takePersistableUriPermission(treeUri, takeFlags)
}
fun isShowingPermDialog(file: File) = isShowingWritePermissions(file, mConfig.treeUri, OPEN_DOCUMENT_TREE)
}

View File

@ -10,18 +10,18 @@ import com.bignerdranch.android.multiselector.MultiSelector
import com.bignerdranch.android.multiselector.SwappingHolder
import com.bumptech.glide.Glide
import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.simplemobiletools.commons.asynctasks.CopyMoveTask
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
import com.simplemobiletools.commons.dialogs.PropertiesDialog
import com.simplemobiletools.commons.extensions.formatSize
import com.simplemobiletools.commons.extensions.isGif
import com.simplemobiletools.commons.extensions.toast
import com.simplemobiletools.commons.models.FileDirItem
import com.simplemobiletools.filemanager.Config
import com.simplemobiletools.filemanager.R
import com.simplemobiletools.filemanager.activities.SimpleActivity
import com.simplemobiletools.filemanager.dialogs.CopyDialog
import com.simplemobiletools.filemanager.dialogs.RenameItemDialog
import com.simplemobiletools.filepicker.asynctasks.CopyMoveTask
import com.simplemobiletools.filepicker.dialogs.ConfirmationDialog
import com.simplemobiletools.filepicker.extensions.formatSize
import com.simplemobiletools.filepicker.extensions.isGif
import com.simplemobiletools.filepicker.extensions.toast
import com.simplemobiletools.filepicker.models.FileDirItem
import com.simplemobiletools.fileproperties.dialogs.PropertiesDialog
import kotlinx.android.synthetic.main.list_item.view.*
import java.io.File
import java.util.*

View File

@ -4,15 +4,14 @@ import android.app.AlertDialog
import android.support.v4.util.Pair
import android.view.LayoutInflater
import android.view.WindowManager
import com.simplemobiletools.commons.asynctasks.CopyMoveTask
import com.simplemobiletools.commons.extensions.humanizePath
import com.simplemobiletools.commons.extensions.isPathOnSD
import com.simplemobiletools.commons.extensions.scanFiles
import com.simplemobiletools.commons.extensions.toast
import com.simplemobiletools.filemanager.Config
import com.simplemobiletools.filemanager.R
import com.simplemobiletools.filemanager.activities.SimpleActivity
import com.simplemobiletools.filepicker.asynctasks.CopyMoveTask
import com.simplemobiletools.filepicker.dialogs.FilePickerDialog
import com.simplemobiletools.filepicker.extensions.humanizePath
import com.simplemobiletools.filepicker.extensions.isPathOnSD
import com.simplemobiletools.filepicker.extensions.scanFiles
import com.simplemobiletools.filepicker.extensions.toast
import kotlinx.android.synthetic.main.copy_item.view.*
import java.io.File
import java.util.*
@ -27,7 +26,7 @@ class CopyDialog(val activity: SimpleActivity, val files: ArrayList<File>, val c
view.source.text = "${context.humanizePath(sourcePath)}/"
val config = Config.newInstance(context)
view.destination.setOnClickListener {
/*view.destination.setOnClickListener {
FilePickerDialog(activity, destinationPath, false, config.showHidden, object : FilePickerDialog.OnFilePickerListener {
override fun onFail(error: FilePickerDialog.FilePickerResult) {
}
@ -37,7 +36,7 @@ class CopyDialog(val activity: SimpleActivity, val files: ArrayList<File>, val c
view.destination.text = context.humanizePath(pickedPath)
}
})
}
}*/
AlertDialog.Builder(context)
.setTitle(context.resources.getString(if (files.size == 1) R.string.copy_item else R.string.copy_items))

View File

@ -5,9 +5,9 @@ import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.WindowManager
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.filemanager.Config
import com.simplemobiletools.filemanager.R
import com.simplemobiletools.filepicker.extensions.*
import kotlinx.android.synthetic.main.create_new.view.*
import java.io.File
import java.io.IOException
@ -54,7 +54,7 @@ class CreateNewItemDialog(val context: Context, val path: String, val listener:
private fun createDirectory(file: File, alertDialog: AlertDialog): Boolean {
return if (context.needsStupidWritePermissions(path)) {
val documentFile = context.getFileDocument(file.absolutePath, Config.newInstance(context).treeUri)
val documentFile = context.getFileDocument(file.absolutePath, Config.newInstance(context).treeUri) ?: return false
documentFile.createDirectory(file.name)
success(alertDialog)
true
@ -72,7 +72,7 @@ class CreateNewItemDialog(val context: Context, val path: String, val listener:
private fun createFile(file: File, alertDialog: AlertDialog): Boolean {
try {
if (context.needsStupidWritePermissions(path)) {
val documentFile = context.getFileDocument(file.absolutePath, Config.newInstance(context).treeUri)
val documentFile = context.getFileDocument(file.absolutePath, Config.newInstance(context).treeUri) ?: return false
documentFile.createFile("", file.name)
success(alertDialog)
return true

View File

@ -4,10 +4,10 @@ import android.app.AlertDialog
import android.content.Context
import android.view.LayoutInflater
import android.view.WindowManager
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.models.FileDirItem
import com.simplemobiletools.filemanager.Config
import com.simplemobiletools.filemanager.R
import com.simplemobiletools.filepicker.extensions.*
import com.simplemobiletools.filepicker.models.FileDirItem
import kotlinx.android.synthetic.main.rename_item.view.*
import java.io.File
@ -44,7 +44,7 @@ class RenameItemDialog(val context: Context, val item: FileDirItem, val listener
}
if (context.needsStupidWritePermissions(path)) {
val document = context.getFileDocument(currFile.absolutePath, Config.newInstance(context).treeUri)
val document = context.getFileDocument(currFile.absolutePath, Config.newInstance(context).treeUri) ?: return@setOnClickListener
if (document.canWrite())
document.renameTo(newName)
sendSuccess(newFile)

View File

@ -0,0 +1,6 @@
package com.simplemobiletools.filemanager.extensions
import android.content.Context
import com.simplemobiletools.filemanager.Config
val Context.config: Config get() = Config.newInstance(this)

View File

@ -12,6 +12,9 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.webkit.MimeTypeMap
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.models.FileDirItem
import com.simplemobiletools.commons.views.RecyclerViewDivider
import com.simplemobiletools.filemanager.Config
import com.simplemobiletools.filemanager.PATH
import com.simplemobiletools.filemanager.R
@ -19,9 +22,6 @@ import com.simplemobiletools.filemanager.SCROLL_STATE
import com.simplemobiletools.filemanager.activities.SimpleActivity
import com.simplemobiletools.filemanager.adapters.ItemsAdapter
import com.simplemobiletools.filemanager.dialogs.CreateNewItemDialog
import com.simplemobiletools.filepicker.extensions.*
import com.simplemobiletools.filepicker.models.FileDirItem
import com.simplemobiletools.filepicker.views.RecyclerViewDivider
import kotlinx.android.synthetic.main.items_fragment.*
import java.io.File
import java.util.*
@ -241,7 +241,7 @@ class ItemsFragment : android.support.v4.app.Fragment(), ItemsAdapter.ItemOperat
}
if (context.needsStupidWritePermissions(item.absolutePath)) {
val document = context.getFileDocument(item.absolutePath, mConfig.treeUri)
val document = context.getFileDocument(item.absolutePath, mConfig.treeUri) ?: return
// double check we have the uri to the proper file path, not some parent folder
if (document.uri.toString().endsWith(item.absolutePath.getFilenameFromPath()))

View File

@ -1,33 +0,0 @@
package com.simplemobiletools.filemanager.views
import android.content.Context
import android.graphics.Canvas
import android.graphics.drawable.Drawable
import android.support.v7.widget.RecyclerView
import com.simplemobiletools.filemanager.R
class RecyclerViewDivider(context: Context) : RecyclerView.ItemDecoration() {
private val mDivider: Drawable
init {
mDivider = context.resources.getDrawable(R.drawable.divider)
}
override fun onDrawOver(c: Canvas, parent: RecyclerView, state: RecyclerView.State) {
val left = parent.paddingLeft
val right = parent.width - parent.paddingRight
val childCount = parent.childCount
for (i in 0..childCount - 1) {
val child = parent.getChildAt(i)
val params = child.layoutParams as RecyclerView.LayoutParams
val top = child.bottom + params.bottomMargin
val bottom = top + mDivider.intrinsicHeight
mDivider.setBounds(left, top, right, bottom)
mDivider.draw(c)
}
}
}

View File

@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:id="@+id/main_screen"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_screen"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.simplemobiletools.filepicker.views.Breadcrumbs
<com.simplemobiletools.commons.views.Breadcrumbs
android:id="@+id/breadcrumbs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@ -13,7 +13,6 @@
<FrameLayout
android:id="@+id/fragment_holder"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/breadcrumbs"/>

View File

@ -11,32 +11,6 @@
android:layout_height="wrap_content"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/settings_dark_theme_holder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/settings_padding"
android:background="?attr/selectableItemBackground"
android:padding="@dimen/activity_margin">
<TextView
android:id="@+id/settings_dark_theme_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:paddingLeft="@dimen/settings_padding"
android:text="@string/dark_theme"/>
<android.support.v7.widget.SwitchCompat
android:id="@+id/settings_dark_theme"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:background="@null"
android:clickable="false"/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_show_hidden_holder"
android:layout_width="match_parent"

View File

@ -6,7 +6,7 @@
android:layout_height="wrap_content"
android:orientation="vertical">
<com.simplemobiletools.filepicker.views.Breadcrumbs
<com.simplemobiletools.commons.views.Breadcrumbs
android:id="@+id/directory_picker_breadcrumbs"
android:layout_width="match_parent"
android:layout_height="wrap_content"

View File

@ -5,7 +5,7 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
classpath 'com.android.tools.build:gradle:2.3.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files

View File

@ -1,6 +1,6 @@
#Mon Aug 22 21:44:03 CEST 2016
#Fri Mar 10 22:27:02 CET 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip

View File

@ -1,4 +1,3 @@
STORE_FILE=/path/to/your.keystore
STORE_PASSWORD=yourkeypass
KEY_ALIAS=projectkeyalias
KEY_PASSWORD=yourkeypass
PASSWORD=yourkeypass