updating some things related to adding Commons library

This commit is contained in:
tibbi 2016-12-13 23:53:59 +01:00
parent 13b00b7089
commit e7b307401b
13 changed files with 89 additions and 379 deletions

View file

@ -66,14 +66,14 @@
</activity> </activity>
<activity <activity
android:name=".activities.AboutActivity" android:name="com.simplemobiletools.commons.activities.AboutActivity"
android:label="@string/about" android:label="@string/about"
android:parentActivityName=".activities.MainActivity"/> android:parentActivityName=".activities.MainActivity"/>
<activity <activity
android:name=".activities.LicenseActivity" android:name=".activities.LicenseActivity"
android:label="@string/third_party_licences" android:label="@string/third_party_licences"
android:parentActivityName=".activities.AboutActivity"/> android:parentActivityName="com.simplemobiletools.commons.activities.AboutActivity"/>
<activity <activity
android:name=".activities.SettingsActivity" android:name=".activities.SettingsActivity"

View file

@ -1,114 +0,0 @@
package com.simplemobiletools.gallery.activities
import android.content.ActivityNotFoundException
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.text.Html
import android.text.method.LinkMovementMethod
import android.view.View
import com.simplemobiletools.gallery.BuildConfig
import com.simplemobiletools.gallery.R
import kotlinx.android.synthetic.main.activity_about.*
import java.util.*
class AboutActivity : SimpleActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_about)
setupEmail()
setupMoreApps()
setupRateUs()
setupInvite()
setupLicense()
setupDonate()
setupFacebook()
setupGPlus()
setupCopyright()
}
private fun setupEmail() {
val email = getString(R.string.email)
val appName = getString(R.string.app_name)
val href = "<a href=\"mailto:$email?subject=$appName\">$email</a>"
about_email.text = Html.fromHtml(href)
about_email.movementMethod = LinkMovementMethod.getInstance()
}
private fun setupMoreApps() {
about_more_apps.setOnClickListener {
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/dev?id=9070296388022589266")))
}
}
private fun setupCopyright() {
val versionName = BuildConfig.VERSION_NAME
val year = Calendar.getInstance().get(Calendar.YEAR)
val copyrightText = String.format(getString(R.string.copyright), versionName, year)
about_copyright.text = copyrightText
}
private fun setupRateUs() {
if (mConfig.isFirstRun) {
about_rate_us.visibility = View.GONE
} else {
about_rate_us.setOnClickListener {
val uri = Uri.parse("market://details?id=$packageName")
try {
startActivity(Intent(Intent.ACTION_VIEW, uri))
} catch (ignored: ActivityNotFoundException) {
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(getStoreUrl())))
}
}
}
}
fun setupInvite() {
about_invite.setOnClickListener {
val text = String.format(getString(R.string.share_text), getString(R.string.app_name), getStoreUrl())
Intent().apply {
action = Intent.ACTION_SEND
putExtra(Intent.EXTRA_SUBJECT, getString(R.string.app_name))
putExtra(Intent.EXTRA_TEXT, text)
type = "text/plain"
startActivity(Intent.createChooser(this, getString(R.string.invite_via)))
}
}
}
fun setupLicense() {
about_license.setOnClickListener {
val intent = Intent(applicationContext, LicenseActivity::class.java)
startActivity(intent)
}
}
fun setupDonate() {
about_donate.setOnClickListener {
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("http://simplemobiletools.github.io/donate")))
}
}
fun setupFacebook() {
about_facebook.setOnClickListener {
var link = "https://www.facebook.com/simplemobiletools"
try {
packageManager.getPackageInfo("com.facebook.katana", 0)
link = "fb://page/150270895341774"
} catch (ignored: Exception) {
}
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(link)))
}
}
fun setupGPlus() {
about_gplus.setOnClickListener {
val link = "https://plus.google.com/communities/104880861558693868382"
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(link)))
}
}
private fun getStoreUrl() = "https://play.google.com/store/apps/details?id=$packageName"
}

View file

@ -129,7 +129,7 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener
if (isShowingPermDialog(file)) if (isShowingPermDialog(file))
return return
var document = getFileDocument(path, mConfig.treeUri) var document = getFileDocument(path, config.treeUri)
if (!file.exists()) { if (!file.exists()) {
document = document.createFile("", file.name) document = document.createFile("", file.name)
} }

View file

@ -19,6 +19,9 @@ import com.simplemobiletools.gallery.R
import com.simplemobiletools.gallery.adapters.DirectoryAdapter import com.simplemobiletools.gallery.adapters.DirectoryAdapter
import com.simplemobiletools.gallery.asynctasks.GetDirectoriesAsynctask import com.simplemobiletools.gallery.asynctasks.GetDirectoriesAsynctask
import com.simplemobiletools.gallery.dialogs.ChangeSortingDialog import com.simplemobiletools.gallery.dialogs.ChangeSortingDialog
import com.simplemobiletools.gallery.extensions.launchAbout
import com.simplemobiletools.gallery.extensions.launchCamera
import com.simplemobiletools.gallery.extensions.launchSettings
import com.simplemobiletools.gallery.helpers.* import com.simplemobiletools.gallery.helpers.*
import com.simplemobiletools.gallery.models.Directory import com.simplemobiletools.gallery.models.Directory
import com.simplemobiletools.gallery.views.MyScalableRecyclerView import com.simplemobiletools.gallery.views.MyScalableRecyclerView
@ -110,12 +113,12 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
override fun onDestroy() { override fun onDestroy() {
super.onDestroy() super.onDestroy()
mConfig.isFirstRun = false config.isFirstRun = false
} }
private fun tryloadGallery() { private fun tryloadGallery() {
if (hasStoragePermission()) { if (hasStoragePermission()) {
if (mConfig.showAll) if (config.showAll)
showAllMedia() showAllMedia()
else else
getDirectories() getDirectories()
@ -155,7 +158,7 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
} }
private fun showAllMedia() { private fun showAllMedia() {
mConfig.showAll = true config.showAll = true
Intent(this, MediaActivity::class.java).apply { Intent(this, MediaActivity::class.java).apply {
putExtra(DIRECTORY, "/") putExtra(DIRECTORY, "/")
startActivity(this) startActivity(this)
@ -215,7 +218,7 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
private fun deleteItem(file: File) { private fun deleteItem(file: File) {
if (needsStupidWritePermissions(file.absolutePath)) { if (needsStupidWritePermissions(file.absolutePath)) {
if (!isShowingPermDialog(file)) { if (!isShowingPermDialog(file)) {
val document = getFileDocument(file.absolutePath, mConfig.treeUri) val document = getFileDocument(file.absolutePath, config.treeUri)
// double check we have the uri to the proper file path, not some parent folder // double check we have the uri to the proper file path, not some parent folder
if (document.uri.toString().endsWith(file.absolutePath.getFilenameFromPath()) && !document.isDirectory) if (document.uri.toString().endsWith(file.absolutePath.getFilenameFromPath()) && !document.isDirectory)
@ -234,18 +237,18 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
private fun handleZooming() { private fun handleZooming() {
val layoutManager = directories_grid.layoutManager as GridLayoutManager val layoutManager = directories_grid.layoutManager as GridLayoutManager
layoutManager.spanCount = mConfig.dirColumnCnt layoutManager.spanCount = config.dirColumnCnt
MyScalableRecyclerView.mListener = object : MyScalableRecyclerView.ZoomListener { MyScalableRecyclerView.mListener = object : MyScalableRecyclerView.ZoomListener {
override fun zoomIn() { override fun zoomIn() {
if (layoutManager.spanCount > 1) { if (layoutManager.spanCount > 1) {
mConfig.dirColumnCnt = --layoutManager.spanCount config.dirColumnCnt = --layoutManager.spanCount
DirectoryAdapter.actMode?.finish() DirectoryAdapter.actMode?.finish()
} }
} }
override fun zoomOut() { override fun zoomOut() {
if (layoutManager.spanCount < 10) { if (layoutManager.spanCount < 10) {
mConfig.dirColumnCnt = ++layoutManager.spanCount config.dirColumnCnt = ++layoutManager.spanCount
DirectoryAdapter.actMode?.finish() DirectoryAdapter.actMode?.finish()
} }
} }

View file

@ -19,6 +19,9 @@ import com.simplemobiletools.gallery.adapters.MediaAdapter
import com.simplemobiletools.gallery.asynctasks.GetMediaAsynctask import com.simplemobiletools.gallery.asynctasks.GetMediaAsynctask
import com.simplemobiletools.gallery.dialogs.ChangeSortingDialog import com.simplemobiletools.gallery.dialogs.ChangeSortingDialog
import com.simplemobiletools.gallery.extensions.getHumanizedFilename import com.simplemobiletools.gallery.extensions.getHumanizedFilename
import com.simplemobiletools.gallery.extensions.launchAbout
import com.simplemobiletools.gallery.extensions.launchCamera
import com.simplemobiletools.gallery.extensions.launchSettings
import com.simplemobiletools.gallery.helpers.* import com.simplemobiletools.gallery.helpers.*
import com.simplemobiletools.gallery.models.Medium import com.simplemobiletools.gallery.models.Medium
import com.simplemobiletools.gallery.views.MyScalableRecyclerView import com.simplemobiletools.gallery.views.MyScalableRecyclerView
@ -53,7 +56,7 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
media_holder.setOnRefreshListener({ getMedia() }) media_holder.setOnRefreshListener({ getMedia() })
mPath = intent.getStringExtra(DIRECTORY) mPath = intent.getStringExtra(DIRECTORY)
mMedia = ArrayList<Medium>() mMedia = ArrayList<Medium>()
mShowAll = mConfig.showAll mShowAll = config.showAll
if (mShowAll) if (mShowAll)
supportActionBar?.setDisplayHomeAsUpEnabled(false) supportActionBar?.setDisplayHomeAsUpEnabled(false)
} }
@ -93,14 +96,16 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
override fun onCreateOptionsMenu(menu: Menu): Boolean { override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.menu_media, menu) menuInflater.inflate(R.menu.menu_media, menu)
val isFolderHidden = mConfig.getIsFolderHidden(mPath) val isFolderHidden = config.getIsFolderHidden(mPath)
menu.findItem(R.id.hide_folder).isVisible = !isFolderHidden && !mShowAll menu.apply {
menu.findItem(R.id.unhide_folder).isVisible = isFolderHidden && !mShowAll findItem(R.id.hide_folder).isVisible = !isFolderHidden && !mShowAll
findItem(R.id.unhide_folder).isVisible = isFolderHidden && !mShowAll
menu.findItem(R.id.folder_view).isVisible = mShowAll findItem(R.id.folder_view).isVisible = mShowAll
menu.findItem(R.id.open_camera).isVisible = mShowAll findItem(R.id.open_camera).isVisible = mShowAll
menu.findItem(R.id.settings).isVisible = mShowAll findItem(R.id.settings).isVisible = mShowAll
menu.findItem(R.id.about).isVisible = mShowAll findItem(R.id.about).isVisible = mShowAll
}
return true return true
} }
@ -144,9 +149,9 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
} }
private fun toggleFilenameVisibility() { private fun toggleFilenameVisibility() {
mConfig.displayFileNames = !mConfig.displayFileNames config.displayFileNames = !config.displayFileNames
if (media_grid.adapter != null) if (media_grid.adapter != null)
(media_grid.adapter as MediaAdapter).updateDisplayFilenames(mConfig.displayFileNames) (media_grid.adapter as MediaAdapter).updateDisplayFilenames(config.displayFileNames)
} }
private fun showSortingDialog() { private fun showSortingDialog() {
@ -156,22 +161,22 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
} }
private fun switchToFolderView() { private fun switchToFolderView() {
mConfig.showAll = false config.showAll = false
startActivity(Intent(this, MainActivity::class.java)) startActivity(Intent(this, MainActivity::class.java))
finish() finish()
} }
private fun hideFolder() { private fun hideFolder() {
mConfig.addHiddenFolder(mPath) config.addHiddenFolder(mPath)
if (!mConfig.showHiddenFolders) if (!config.showHiddenFolders)
finish() finish()
else else
invalidateOptionsMenu() invalidateOptionsMenu()
} }
private fun unhideFolder() { private fun unhideFolder() {
mConfig.removeHiddenFolder(mPath) config.removeHiddenFolder(mPath)
invalidateOptionsMenu() invalidateOptionsMenu()
} }
@ -203,18 +208,18 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
private fun handleZooming() { private fun handleZooming() {
val layoutManager = media_grid.layoutManager as GridLayoutManager val layoutManager = media_grid.layoutManager as GridLayoutManager
layoutManager.spanCount = mConfig.mediaColumnCnt layoutManager.spanCount = config.mediaColumnCnt
MyScalableRecyclerView.mListener = object : MyScalableRecyclerView.ZoomListener { MyScalableRecyclerView.mListener = object : MyScalableRecyclerView.ZoomListener {
override fun zoomIn() { override fun zoomIn() {
if (layoutManager.spanCount > 1) { if (layoutManager.spanCount > 1) {
mConfig.mediaColumnCnt = --layoutManager.spanCount config.mediaColumnCnt = --layoutManager.spanCount
MediaAdapter.actMode?.finish() MediaAdapter.actMode?.finish()
} }
} }
override fun zoomOut() { override fun zoomOut() {
if (layoutManager.spanCount < 10) { if (layoutManager.spanCount < 10) {
mConfig.mediaColumnCnt = ++layoutManager.spanCount config.mediaColumnCnt = ++layoutManager.spanCount
MediaAdapter.actMode?.finish() MediaAdapter.actMode?.finish()
} }
} }
@ -228,7 +233,7 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
if (isShowingPermDialog(it)) if (isShowingPermDialog(it))
return return
val document = getFileDocument(it.absolutePath, mConfig.treeUri) val document = getFileDocument(it.absolutePath, config.treeUri)
// double check we have the uri to the proper file path, not some parent folder // double check we have the uri to the proper file path, not some parent folder
if (document.uri.toString().endsWith(it.absolutePath.getFilenameFromPath()) && !document.isDirectory) { if (document.uri.toString().endsWith(it.absolutePath.getFilenameFromPath()) && !document.isDirectory) {

View file

@ -20,42 +20,42 @@ class SettingsActivity : SimpleActivity() {
} }
private fun setupDarkTheme() { private fun setupDarkTheme() {
settings_dark_theme.isChecked = mConfig.isDarkTheme settings_dark_theme.isChecked = config.isDarkTheme
settings_dark_theme_holder.setOnClickListener { settings_dark_theme_holder.setOnClickListener {
settings_dark_theme.toggle() settings_dark_theme.toggle()
mConfig.isDarkTheme = settings_dark_theme.isChecked config.isDarkTheme = settings_dark_theme.isChecked
restartActivity() restartActivity()
} }
} }
private fun setupSameSorting() { private fun setupSameSorting() {
settings_same_sorting.isChecked = mConfig.isSameSorting settings_same_sorting.isChecked = config.isSameSorting
settings_same_sorting_holder.setOnClickListener { settings_same_sorting_holder.setOnClickListener {
settings_same_sorting.toggle() settings_same_sorting.toggle()
mConfig.isSameSorting = settings_same_sorting.isChecked config.isSameSorting = settings_same_sorting.isChecked
} }
} }
private fun setupShowHiddenFolders() { private fun setupShowHiddenFolders() {
settings_show_hidden_folders.isChecked = mConfig.showHiddenFolders settings_show_hidden_folders.isChecked = config.showHiddenFolders
settings_show_hidden_folders_holder.setOnClickListener { settings_show_hidden_folders_holder.setOnClickListener {
settings_show_hidden_folders.toggle() settings_show_hidden_folders.toggle()
mConfig.showHiddenFolders = settings_show_hidden_folders.isChecked config.showHiddenFolders = settings_show_hidden_folders.isChecked
} }
} }
private fun setupAutoplayVideos() { private fun setupAutoplayVideos() {
settings_autoplay_videos_holder.setOnClickListener { settings_autoplay_videos_holder.setOnClickListener {
settings_autoplay_videos.toggle() settings_autoplay_videos.toggle()
mConfig.autoplayVideos = settings_autoplay_videos.isChecked config.autoplayVideos = settings_autoplay_videos.isChecked
} }
} }
private fun setupShowMedia() { private fun setupShowMedia() {
settings_show_media.setSelection(mConfig.showMedia) settings_show_media.setSelection(config.showMedia)
settings_show_media.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { settings_show_media.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) { override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
mConfig.showMedia = settings_show_media.selectedItemPosition config.showMedia = settings_show_media.selectedItemPosition
} }
override fun onNothingSelected(parent: AdapterView<*>?) { override fun onNothingSelected(parent: AdapterView<*>?) {

View file

@ -1,88 +1,14 @@
package com.simplemobiletools.gallery.activities package com.simplemobiletools.gallery.activities
import android.annotation.TargetApi
import android.app.Activity
import android.content.Intent
import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.provider.MediaStore import com.simplemobiletools.commons.activities.BaseSimpleActivity
import android.support.v7.app.AppCompatActivity
import android.view.MenuItem
import android.view.View
import com.simplemobiletools.filepicker.extensions.isShowingWritePermissions
import com.simplemobiletools.gallery.R
import com.simplemobiletools.gallery.helpers.Config import com.simplemobiletools.gallery.helpers.Config
import com.simplemobiletools.gallery.helpers.OPEN_DOCUMENT_TREE
import java.io.File
open class SimpleActivity : AppCompatActivity() { open class SimpleActivity : BaseSimpleActivity() {
lateinit var mConfig: Config lateinit var config: Config
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
mConfig = Config.newInstance(applicationContext) config = Config.newInstance(applicationContext)
var theme = if (mConfig.isDarkTheme) R.style.AppTheme_Dark else R.style.AppTheme
if (this is ViewPagerActivity || this is PhotoActivity || this is VideoActivity) {
theme = if (mConfig.isDarkTheme) R.style.FullScreenTheme_Dark else R.style.FullScreenTheme
}
setTheme(theme)
super.onCreate(savedInstanceState) 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 launchCamera() {
startActivity(Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA))
}
fun launchSettings() {
startActivity(Intent(applicationContext, SettingsActivity::class.java))
}
fun launchAbout() {
startActivity(Intent(applicationContext, AboutActivity::class.java))
}
fun isShowingPermDialog(file: File) = isShowingWritePermissions(file, mConfig.treeUri, OPEN_DOCUMENT_TREE)
fun showSystemUI() {
supportActionBar?.show()
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
}
fun hideSystemUI() {
supportActionBar?.hide()
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or
View.SYSTEM_UI_FLAG_LOW_PROFILE or
View.SYSTEM_UI_FLAG_FULLSCREEN or
View.SYSTEM_UI_FLAG_IMMERSIVE
}
} }

View file

@ -19,10 +19,7 @@ import com.simplemobiletools.gallery.adapters.MyPagerAdapter
import com.simplemobiletools.gallery.asynctasks.GetMediaAsynctask import com.simplemobiletools.gallery.asynctasks.GetMediaAsynctask
import com.simplemobiletools.gallery.dialogs.CopyDialog import com.simplemobiletools.gallery.dialogs.CopyDialog
import com.simplemobiletools.gallery.dialogs.RenameFileDialog import com.simplemobiletools.gallery.dialogs.RenameFileDialog
import com.simplemobiletools.gallery.extensions.openEditor import com.simplemobiletools.gallery.extensions.*
import com.simplemobiletools.gallery.extensions.openWith
import com.simplemobiletools.gallery.extensions.setAsWallpaper
import com.simplemobiletools.gallery.extensions.shareMedium
import com.simplemobiletools.gallery.fragments.ViewPagerFragment import com.simplemobiletools.gallery.fragments.ViewPagerFragment
import com.simplemobiletools.gallery.helpers.MEDIUM import com.simplemobiletools.gallery.helpers.MEDIUM
import com.simplemobiletools.gallery.helpers.REQUEST_EDIT_IMAGE import com.simplemobiletools.gallery.helpers.REQUEST_EDIT_IMAGE
@ -66,7 +63,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
} }
} else { } else {
mPath = intent.getStringExtra(MEDIUM) mPath = intent.getStringExtra(MEDIUM)
mShowAll = mConfig.showAll mShowAll = config.showAll
} }
if (mPath.isEmpty()) { if (mPath.isEmpty()) {
@ -204,7 +201,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
if (needsStupidWritePermissions(mPath)) { if (needsStupidWritePermissions(mPath)) {
if (!isShowingPermDialog(file)) { if (!isShowingPermDialog(file)) {
val document = getFileDocument(mPath, mConfig.treeUri) val document = getFileDocument(mPath, config.treeUri)
if (document.uri.toString().endsWith(file.absolutePath.getFilenameFromPath()) && !document.isDirectory) if (document.uri.toString().endsWith(file.absolutePath.getFilenameFromPath()) && !document.isDirectory)
document.delete() document.delete()
} }

View file

@ -4,9 +4,11 @@ import android.app.Activity
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
import android.os.Build import android.os.Build
import android.support.v7.app.AppCompatActivity
import android.util.DisplayMetrics import android.util.DisplayMetrics
import android.view.KeyCharacterMap import android.view.KeyCharacterMap
import android.view.KeyEvent import android.view.KeyEvent
import android.view.View
import android.view.ViewConfiguration import android.view.ViewConfiguration
import com.simplemobiletools.filepicker.extensions.getMimeType import com.simplemobiletools.filepicker.extensions.getMimeType
import com.simplemobiletools.filepicker.extensions.toast import com.simplemobiletools.filepicker.extensions.toast
@ -104,3 +106,21 @@ fun Activity.hasNavBar(): Boolean {
!hasMenuKey && !hasBackKey !hasMenuKey && !hasBackKey
} }
} }
fun AppCompatActivity.showSystemUI() {
supportActionBar?.show()
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
}
fun AppCompatActivity.hideSystemUI() {
supportActionBar?.hide()
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or
View.SYSTEM_UI_FLAG_LOW_PROFILE or
View.SYSTEM_UI_FLAG_FULLSCREEN or
View.SYSTEM_UI_FLAG_IMMERSIVE
}

View file

@ -1,10 +1,13 @@
package com.simplemobiletools.gallery.extensions package com.simplemobiletools.gallery.extensions
import android.content.Context import android.content.Context
import android.content.Intent
import android.database.Cursor import android.database.Cursor
import android.net.Uri import android.net.Uri
import android.provider.MediaStore import android.provider.MediaStore
import com.simplemobiletools.commons.activities.AboutActivity
import com.simplemobiletools.filepicker.extensions.humanizePath import com.simplemobiletools.filepicker.extensions.humanizePath
import com.simplemobiletools.gallery.activities.SettingsActivity
fun Context.getRealPathFromURI(uri: Uri): String? { fun Context.getRealPathFromURI(uri: Uri): String? {
var cursor: Cursor? = null var cursor: Cursor? = null
@ -25,3 +28,15 @@ fun Context.getHumanizedFilename(path: String): String {
val humanized = humanizePath(path) val humanized = humanizePath(path)
return humanized.substring(humanized.lastIndexOf("/") + 1) return humanized.substring(humanized.lastIndexOf("/") + 1)
} }
fun Context.launchCamera() {
startActivity(Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA))
}
fun Context.launchSettings() {
startActivity(Intent(this, SettingsActivity::class.java))
}
fun Context.launchAbout() {
startActivity(Intent(this, AboutActivity::class.java))
}

View file

@ -2,10 +2,11 @@ package com.simplemobiletools.gallery.helpers
import android.content.Context import android.content.Context
import android.content.SharedPreferences import android.content.SharedPreferences
import com.simplemobiletools.commons.helpers.BaseConfig
import com.simplemobiletools.gallery.R import com.simplemobiletools.gallery.R
import java.util.* import java.util.*
class Config private constructor(val context: Context) { class Config(val context: Context) : BaseConfig(context) {
private val mPrefs: SharedPreferences private val mPrefs: SharedPreferences
companion object { companion object {
@ -16,14 +17,6 @@ class Config private constructor(val context: Context) {
mPrefs = context.getSharedPreferences(PREFS_KEY, Context.MODE_PRIVATE) mPrefs = context.getSharedPreferences(PREFS_KEY, Context.MODE_PRIVATE)
} }
var isFirstRun: Boolean
get() = mPrefs.getBoolean(IS_FIRST_RUN, true)
set(isFirstRun) = mPrefs.edit().putBoolean(IS_FIRST_RUN, isFirstRun).apply()
var isDarkTheme: Boolean
get() = mPrefs.getBoolean(IS_DARK_THEME, true)
set(isDarkTheme) = mPrefs.edit().putBoolean(IS_DARK_THEME, isDarkTheme).apply()
var isSameSorting: Boolean var isSameSorting: Boolean
get() = mPrefs.getBoolean(IS_SAME_SORTING, true) get() = mPrefs.getBoolean(IS_SAME_SORTING, true)
set(isSameSorting) = mPrefs.edit().putBoolean(IS_SAME_SORTING, isSameSorting).apply() set(isSameSorting) = mPrefs.edit().putBoolean(IS_SAME_SORTING, isSameSorting).apply()
@ -90,10 +83,6 @@ class Config private constructor(val context: Context) {
get() = mPrefs.getBoolean(AUTOPLAY_VIDEOS, false) get() = mPrefs.getBoolean(AUTOPLAY_VIDEOS, false)
set(autoplay) = mPrefs.edit().putBoolean(AUTOPLAY_VIDEOS, autoplay).apply() set(autoplay) = mPrefs.edit().putBoolean(AUTOPLAY_VIDEOS, autoplay).apply()
var treeUri: String
get() = mPrefs.getString(TREE_URI, "")
set(uri) = mPrefs.edit().putString(TREE_URI, uri).apply()
var displayFileNames: Boolean var displayFileNames: Boolean
get() = mPrefs.getBoolean(DISPLAY_FILE_NAMES, false) get() = mPrefs.getBoolean(DISPLAY_FILE_NAMES, false)
set(display) = mPrefs.edit().putBoolean(DISPLAY_FILE_NAMES, display).apply() set(display) = mPrefs.edit().putBoolean(DISPLAY_FILE_NAMES, display).apply()

View file

@ -2,15 +2,12 @@ package com.simplemobiletools.gallery.helpers
// shared preferences // shared preferences
val PREFS_KEY = "Gallery" val PREFS_KEY = "Gallery"
val IS_FIRST_RUN = "is_first_run"
val IS_DARK_THEME = "is_dark_theme"
val IS_SAME_SORTING = "is_same_sorting" val IS_SAME_SORTING = "is_same_sorting"
val SORT_ORDER = "sort_order" val SORT_ORDER = "sort_order"
val DIRECTORY_SORT_ORDER = "directory_sort_order" val DIRECTORY_SORT_ORDER = "directory_sort_order"
val HIDDEN_FOLDERS = "hidden_folders" val HIDDEN_FOLDERS = "hidden_folders"
val SHOW_HIDDEN_FOLDERS = "show_hidden_folders" val SHOW_HIDDEN_FOLDERS = "show_hidden_folders"
val AUTOPLAY_VIDEOS = "autoplay_videos" val AUTOPLAY_VIDEOS = "autoplay_videos"
val TREE_URI = "tree_uri"
val DISPLAY_FILE_NAMES = "display_file_names" val DISPLAY_FILE_NAMES = "display_file_names"
val PINNED_FOLDERS = "pinned_folders" val PINNED_FOLDERS = "pinned_folders"
val DIR_COLUMN_CNT = "dir_column_cnt" val DIR_COLUMN_CNT = "dir_column_cnt"
@ -23,11 +20,8 @@ val SORT_BY_NAME = 1
val SORT_BY_DATE_MODIFIED = 2 val SORT_BY_DATE_MODIFIED = 2
val SORT_BY_SIZE = 4 val SORT_BY_SIZE = 4
val SORT_BY_DATE_TAKEN = 8 val SORT_BY_DATE_TAKEN = 8
val SORT_DESCENDING = 1024 val SORT_DESCENDING = 1024
// global intents
val OPEN_DOCUMENT_TREE = 1000
val DIRECTORY = "directory" val DIRECTORY = "directory"
val MEDIUM = "medium" val MEDIUM = "medium"

View file

@ -1,125 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/about_scrollview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<RelativeLayout
android:id="@+id/about_holder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/activity_margin">
<TextView
android:id="@+id/about_website"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:autoLink="web"
android:text="@string/website"/>
<TextView
android:id="@+id/about_email_label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/about_website"
android:layout_marginTop="@dimen/activity_margin"
android:text="@string/email_label"/>
<TextView
android:id="@+id/about_email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/about_email_label"
android:paddingBottom="@dimen/activity_margin"
android:text="@string/email"/>
<TextView
android:id="@+id/about_more_apps"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/about_email"
android:paddingBottom="@dimen/activity_margin"
android:paddingTop="@dimen/activity_margin"
android:text="@string/more_apps_underlined"
android:textColor="@color/colorPrimary"/>
<TextView
android:id="@+id/about_invite"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/about_more_apps"
android:paddingBottom="@dimen/activity_margin"
android:paddingTop="@dimen/activity_margin"
android:text="@string/invite_friends_underlined"
android:textColor="@color/colorPrimary"/>
<TextView
android:id="@+id/about_rate_us"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/about_invite"
android:paddingBottom="@dimen/activity_margin"
android:paddingTop="@dimen/activity_margin"
android:text="@string/rate_us_underlined"
android:textColor="@color/colorPrimary"/>
<TextView
android:id="@+id/about_license"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/about_rate_us"
android:paddingBottom="@dimen/activity_margin"
android:paddingTop="@dimen/activity_margin"
android:text="@string/third_party_licences_underlined"
android:textColor="@color/colorPrimary"/>
<TextView
android:id="@+id/about_donate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/about_license"
android:paddingBottom="@dimen/activity_margin"
android:paddingTop="@dimen/activity_margin"
android:text="@string/donate_underlined"
android:textColor="@color/colorPrimary"/>
<TextView
android:id="@+id/about_follow_us"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/about_donate"
android:paddingBottom="@dimen/social_padding"
android:paddingTop="@dimen/activity_margin"
android:text="@string/follow_us"/>
<ImageView
android:id="@+id/about_facebook"
android:layout_width="@dimen/social_logo"
android:layout_height="@dimen/social_logo"
android:layout_below="@+id/about_follow_us"
android:src="@mipmap/facebook"/>
<ImageView
android:id="@+id/about_gplus"
android:layout_width="@dimen/social_logo"
android:layout_height="@dimen/social_logo"
android:layout_below="@+id/about_follow_us"
android:layout_marginLeft="@dimen/social_padding"
android:layout_marginRight="@dimen/social_padding"
android:layout_toEndOf="@+id/about_facebook"
android:layout_toRightOf="@+id/about_facebook"
android:src="@mipmap/gplus"/>
<TextView
android:id="@+id/about_copyright"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:layout_below="@+id/about_gplus"
android:gravity="center_horizontal|bottom"
android:paddingTop="@dimen/activity_margin"
android:text="v1.0\nCopyright © Simple Mobile Tools 2016"/>
</RelativeLayout>
</ScrollView>