diff --git a/app/build.gradle b/app/build.gradle index fa293b4..2816855 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,8 +20,8 @@ android { applicationId "ch.dissem.apps." + appName.toLowerCase() minSdkVersion 19 targetSdkVersion 25 - versionCode 16 - versionName "1.0-beta16" + versionCode 17 + versionName "1.0-beta17" multiDexEnabled true } compileOptions { @@ -39,7 +39,7 @@ android { } //ext.jabitVersion = '2.0.4' -ext.jabitVersion = 'feature-exports-SNAPSHOT' +ext.jabitVersion = 'development-SNAPSHOT' ext.supportVersion = '25.3.1' dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) diff --git a/app/src/main/java/ch/dissem/apps/abit/MainActivity.kt b/app/src/main/java/ch/dissem/apps/abit/MainActivity.kt index 6d2e6b8..7734e09 100644 --- a/app/src/main/java/ch/dissem/apps/abit/MainActivity.kt +++ b/app/src/main/java/ch/dissem/apps/abit/MainActivity.kt @@ -29,7 +29,6 @@ import ch.dissem.apps.abit.drawer.ProfileImageListener import ch.dissem.apps.abit.drawer.ProfileSelectionListener import ch.dissem.apps.abit.listener.ListSelectionListener import ch.dissem.apps.abit.repository.AndroidMessageRepository.Companion.LABEL_ARCHIVE -import ch.dissem.apps.abit.service.BitmessageService.Companion.isRunning import ch.dissem.apps.abit.service.Singleton import ch.dissem.apps.abit.synchronization.SyncAdapter import ch.dissem.apps.abit.util.Labels @@ -99,8 +98,8 @@ class MainActivity : AppCompatActivity(), ListSelectionListener { private lateinit var drawer: Drawer private lateinit var nodeSwitch: SwitchDrawerItem - val floatingActionButton: FabSpeedDial - get() = fab + val floatingActionButton: FabSpeedDial? + get() = findViewById(R.id.fab) as FabSpeedDial? override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -241,7 +240,7 @@ class MainActivity : AppCompatActivity(), ListSelectionListener { .withIdentifier(ID_NODE_SWITCH) .withName(R.string.full_node) .withIcon(CommunityMaterial.Icon.cmd_cloud_outline) - .withChecked(isRunning) + .withChecked(Preferences.isFullNodeActive(this)) .withOnCheckedChangeListener { _, _, isChecked -> if (isChecked) { NetworkUtils.enableNode(this@MainActivity) @@ -359,11 +358,12 @@ class MainActivity : AppCompatActivity(), ListSelectionListener { } override fun onRestoreInstanceState(savedInstanceState: Bundle) { - selectedLabel = savedInstanceState.getSerializable("selectedLabel") as Label + selectedLabel = savedInstanceState.getSerializable("selectedLabel") as Label? - val selectedItem = drawer.getDrawerItem(selectedLabel) - if (selectedItem != null) { - drawer.setSelection(selectedItem) + selectedLabel?.let { selectedLabel -> + drawer.getDrawerItem(selectedLabel)?.let { selectedItem -> + drawer.setSelection(selectedItem) + } } super.onRestoreInstanceState(savedInstanceState) } @@ -373,7 +373,6 @@ class MainActivity : AppCompatActivity(), ListSelectionListener { if (Preferences.isFullNodeActive(this) && Preferences.isConnectionAllowed(this@MainActivity)) { NetworkUtils.enableNode(this, false) } - updateNodeSwitch() Singleton.getMessageListener(this).resetNotification() active = true super.onResume() diff --git a/app/src/main/java/ch/dissem/apps/abit/MessageDetailFragment.kt b/app/src/main/java/ch/dissem/apps/abit/MessageDetailFragment.kt index 51a1bdd..2f62832 100644 --- a/app/src/main/java/ch/dissem/apps/abit/MessageDetailFragment.kt +++ b/app/src/main/java/ch/dissem/apps/abit/MessageDetailFragment.kt @@ -111,14 +111,7 @@ class MessageDetailFragment : Fragment() { text.linksClickable = true text.setTextIsSelectable(true) - var removed = false - val labels = item.labels.iterator() - while (labels.hasNext()) { - if (labels.next().type == Label.Type.UNREAD) { - labels.remove() - removed = true - } - } + val removed = item.labels.removeAll { it.type==Label.Type.UNREAD } val messageRepo = Singleton.getMessageRepository(context) if (removed) { if (activity is MainActivity) { @@ -167,29 +160,29 @@ class MessageDetailFragment : Fragment() { } R.id.delete -> { if (isInTrash(item)) { + Singleton.labeler.delete(item) messageRepo.remove(item) } else { - item.labels.clear() - item.addLabels(messageRepo.getLabels(Label.Type.TRASH)) + Singleton.labeler.delete(item) messageRepo.save(item) } + (activity as? MainActivity)?.updateUnread() activity.onBackPressed() return true } R.id.mark_unread -> { - item.addLabels(messageRepo.getLabels(Label.Type.UNREAD)) + Singleton.labeler.markAsUnread(item) messageRepo.save(item) - if (activity is MainActivity) { - (activity as MainActivity).updateUnread() - } + (activity as? MainActivity)?.updateUnread() return true } R.id.archive -> { if (item.isUnread() && activity is MainActivity) { (activity as MainActivity).updateUnread() } - item.labels.clear() + Singleton.labeler.archive(item) messageRepo.save(item) + (activity as? MainActivity)?.updateUnread() return true } else -> return false diff --git a/app/src/main/java/ch/dissem/apps/abit/MessageListFragment.kt b/app/src/main/java/ch/dissem/apps/abit/MessageListFragment.kt index 9974878..3e68de5 100644 --- a/app/src/main/java/ch/dissem/apps/abit/MessageListFragment.kt +++ b/app/src/main/java/ch/dissem/apps/abit/MessageListFragment.kt @@ -16,12 +16,14 @@ package ch.dissem.apps.abit + import android.content.Intent import android.os.Bundle import android.support.v4.app.Fragment import android.support.v4.content.ContextCompat import android.support.v7.widget.LinearLayoutManager import android.support.v7.widget.RecyclerView +import android.support.v7.widget.RecyclerView.OnScrollListener import android.view.* import android.widget.Toast import ch.dissem.apps.abit.ComposeMessageActivity.Companion.EXTRA_BROADCAST @@ -41,9 +43,12 @@ import com.h6ah4i.android.widget.advrecyclerview.utils.WrapperAdapterUtils import io.github.kobakei.materialfabspeeddial.FabSpeedDialMenu import kotlinx.android.synthetic.main.fragment_message_list.* import org.jetbrains.anko.doAsync +import org.jetbrains.anko.support.v4.onUiThread import org.jetbrains.anko.uiThread import java.util.* +private const val PAGE_SIZE = 15 + /** * A list fragment representing a list of Messages. This fragment * also supports tablet devices by allowing list items to be given an @@ -56,12 +61,32 @@ import java.util.* */ class MessageListFragment : Fragment(), ListHolder