diff --git a/app/build.gradle.kts b/app/build.gradle.kts index a5a88f521f2288c470b364a147790609ec854607..16103cc43fc4aebc3705431b1db5037351ee606c 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -98,6 +98,8 @@ dependencies { implementation("com.android.support", "customtabs", version) implementation("com.android.support", "cardview-v7", version) implementation("com.android.support", "recyclerview-v7", version) + implementation("com.android.support", "preference-v7", version) + implementation("com.android.support", "preference-v14", version) } implementation("com.android.support.constraint", "constraint-layout", "1.0.2") diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e3e33c813a0b2af20545db59ba0b19a585cd643..b1135242e292019ef715e70701cee3402160e80a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -28,6 +28,12 @@ android:label="@string/app_name" android:parentActivityName=".ui.setup.accounts.AccountSelectionActivity" android:windowSoftInputMode="adjustResize" /> + <activity + android:name=".ui.settings.SettingsActivity" + android:exported="false" + android:label="@string/app_name" + android:parentActivityName=".ui.chat.ChatActivity" + android:windowSoftInputMode="adjustResize" /> <activity android:name=".ui.setup.accounts.AccountSelectionActivity" android:exported="true" diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/QuasseldroidNG.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/QuasseldroidNG.kt index 16c3177cf8eea0c51e9c9365baed107c3d07c389..47dbac27c84cc912f7b7d2c85a50d697919c95e9 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/QuasseldroidNG.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/QuasseldroidNG.kt @@ -27,6 +27,9 @@ class QuasseldroidNG : Application() { AndroidThreeTenBackport.init(this) + // Initialize preferences unless already set + android.support.v7.preference.PreferenceManager.setDefaultValues(this, R.xml.preferences, false) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { systemService<ShortcutManager>().dynamicShortcuts = listOf( ShortcutInfo.Builder(this, "id1") diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.kt index 6d22c4ca94af489a36c3887220a3d704369f7c2d..0f7582815c4ea428ccfa2d65faa54dedf29c54d2 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.kt @@ -4,6 +4,7 @@ import android.app.Activity import android.arch.lifecycle.Observer import android.arch.lifecycle.ViewModelProviders import android.content.Context +import android.content.Intent import android.os.Bundle import android.support.design.widget.Snackbar import android.support.v4.widget.DrawerLayout @@ -22,6 +23,7 @@ import de.kuschku.quasseldroid_ng.Keys import de.kuschku.quasseldroid_ng.R import de.kuschku.quasseldroid_ng.persistence.AccountDatabase import de.kuschku.quasseldroid_ng.persistence.QuasselDatabase +import de.kuschku.quasseldroid_ng.ui.settings.SettingsActivity import de.kuschku.quasseldroid_ng.ui.settings.data.BacklogSettings import de.kuschku.quasseldroid_ng.ui.viewmodel.QuasselViewModel import de.kuschku.quasseldroid_ng.util.AndroidHandlerThread @@ -195,6 +197,10 @@ class ChatActivity : ServiceBoundActivity() { } true } + R.id.settings -> { + startActivity(Intent(applicationContext, SettingsActivity::class.java)) + true + } R.id.disconnect -> { handler.post { getSharedPreferences(Keys.Status.NAME, Context.MODE_PRIVATE).editApply { diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/NickListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/NickListFragment.kt index 4888f685780605ca04f42dceaedc2daa8998aaf7..9f169131840c4d45388c15e1f27ee9b83ad8d9aa 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/NickListFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/NickListFragment.kt @@ -11,6 +11,7 @@ import android.view.ViewGroup import butterknife.BindView import butterknife.ButterKnife import de.kuschku.quasseldroid_ng.R +import de.kuschku.quasseldroid_ng.ui.settings.Settings import de.kuschku.quasseldroid_ng.ui.settings.data.AppearanceSettings import de.kuschku.quasseldroid_ng.ui.viewmodel.QuasselViewModel import de.kuschku.quasseldroid_ng.util.AndroidHandlerThread @@ -27,18 +28,14 @@ class NickListFragment : ServiceBoundFragment() { lateinit var nickList: RecyclerView private var ircFormatDeserializer: IrcFormatDeserializer? = null - private val renderingSettings = AppearanceSettings( - showPrefix = AppearanceSettings.ShowPrefixMode.FIRST, - colorizeNicknames = AppearanceSettings.ColorizeNicknamesMode.ALL_BUT_MINE, - colorizeMirc = true, - timeFormat = "" - ) + private lateinit var appearanceSettings: AppearanceSettings override fun onCreate(savedInstanceState: Bundle?) { handlerThread.onCreate() super.onCreate(savedInstanceState) viewModel = ViewModelProviders.of(activity!!)[QuasselViewModel::class.java] + appearanceSettings = Settings.appearance(activity!!) if (ircFormatDeserializer == null) { ircFormatDeserializer = IrcFormatDeserializer(context!!) @@ -56,7 +53,7 @@ class NickListFragment : ServiceBoundFragment() { it.map { it.copy( realname = ircFormatDeserializer?.formatString( - it.realname.toString(), renderingSettings.colorizeMirc + it.realname.toString(), appearanceSettings.colorizeMirc ) ?: it.realname ) } diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ToolbarFragment.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ToolbarFragment.kt index 999c4121d22194669b11c835bf1f36d0893f0d7e..28725d2a3bf19d207fc0e3799683d0c959f741a6 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ToolbarFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ToolbarFragment.kt @@ -14,6 +14,7 @@ import de.kuschku.libquassel.quassel.BufferInfo import de.kuschku.libquassel.quassel.syncables.interfaces.INetwork import de.kuschku.libquassel.util.hasFlag import de.kuschku.quasseldroid_ng.R +import de.kuschku.quasseldroid_ng.ui.settings.Settings import de.kuschku.quasseldroid_ng.ui.settings.data.AppearanceSettings import de.kuschku.quasseldroid_ng.ui.viewmodel.QuasselViewModel import de.kuschku.quasseldroid_ng.util.helper.visibleIf @@ -32,12 +33,7 @@ class ToolbarFragment : ServiceBoundFragment() { private lateinit var viewModel: QuasselViewModel private var ircFormatDeserializer: IrcFormatDeserializer? = null - private val appearanceSettings = AppearanceSettings( - showPrefix = AppearanceSettings.ShowPrefixMode.FIRST, - colorizeNicknames = AppearanceSettings.ColorizeNicknamesMode.ALL_BUT_MINE, - colorizeMirc = true, - timeFormat = "" - ) + private lateinit var appearanceSettings: AppearanceSettings var title: CharSequence? get() = toolbarTitle.text @@ -59,6 +55,7 @@ class ToolbarFragment : ServiceBoundFragment() { super.onCreate(savedInstanceState) viewModel = ViewModelProviders.of(activity!!)[QuasselViewModel::class.java] + appearanceSettings = Settings.appearance(activity!!) if (ircFormatDeserializer == null) { ircFormatDeserializer = IrcFormatDeserializer(context!!) diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/buffers/BufferViewConfigFragment.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/buffers/BufferViewConfigFragment.kt index 5b2aa53e9617f2543ab120461ad1dda03411efe1..d2e8bfb0dc65a1d334591afa1012aeb4aeec532c 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/buffers/BufferViewConfigFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/buffers/BufferViewConfigFragment.kt @@ -11,6 +11,7 @@ import butterknife.BindView import butterknife.ButterKnife import de.kuschku.libquassel.protocol.BufferId import de.kuschku.quasseldroid_ng.R +import de.kuschku.quasseldroid_ng.ui.settings.Settings import de.kuschku.quasseldroid_ng.ui.settings.data.AppearanceSettings import de.kuschku.quasseldroid_ng.ui.viewmodel.QuasselViewModel import de.kuschku.quasseldroid_ng.util.AndroidHandlerThread @@ -33,18 +34,14 @@ class BufferViewConfigFragment : ServiceBoundFragment() { private lateinit var viewModel: QuasselViewModel private var ircFormatDeserializer: IrcFormatDeserializer? = null - private val renderingSettings = AppearanceSettings( - showPrefix = AppearanceSettings.ShowPrefixMode.FIRST, - colorizeNicknames = AppearanceSettings.ColorizeNicknamesMode.ALL_BUT_MINE, - colorizeMirc = true, - timeFormat = "" - ) + private lateinit var appearanceSettings: AppearanceSettings override fun onCreate(savedInstanceState: Bundle?) { handlerThread.onCreate() super.onCreate(savedInstanceState) viewModel = ViewModelProviders.of(activity!!)[QuasselViewModel::class.java] + appearanceSettings = Settings.appearance(activity!!) if (ircFormatDeserializer == null) { ircFormatDeserializer = IrcFormatDeserializer(context!!) @@ -77,7 +74,7 @@ class BufferViewConfigFragment : ServiceBoundFragment() { it.map { it.copy( description = ircFormatDeserializer?.formatString( - it.description.toString(), renderingSettings.colorizeMirc + it.description.toString(), appearanceSettings.colorizeMirc ) ?: it.description ) } diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/MessageAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/MessageAdapter.kt index 41d648d42164a19c805c15e40ffac2163247e2fc..0d9ea45bbced1de8d9cc3fa368b21fcf6a255548 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/MessageAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/MessageAdapter.kt @@ -15,6 +15,7 @@ import de.kuschku.quasseldroid_ng.util.helper.getOrPut class MessageAdapter( context: Context, + appearanceSettings: AppearanceSettings, var markerLinePosition: Pair<MsgId, MsgId>? = null ) : PagedListAdapter<QuasselDatabase.DatabaseMessage, QuasselMessageViewHolder>( object : DiffCallback<QuasselDatabase.DatabaseMessage>() { @@ -31,12 +32,7 @@ class MessageAdapter( ) { private val messageRenderer: MessageRenderer = QuasselMessageRenderer( context, - AppearanceSettings( - showPrefix = AppearanceSettings.ShowPrefixMode.FIRST, - colorizeNicknames = AppearanceSettings.ColorizeNicknamesMode.ALL_BUT_MINE, - colorizeMirc = true, - timeFormat = "" - ) + appearanceSettings ) private val messageCache = LruCache<Int, FormattedMessage>(512) diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/MessageListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/MessageListFragment.kt index 3494f74def587dbdaeba6331b6da61159a9defa3..1b5a929789e6d29695ef0113069f429319a25a94 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/MessageListFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/MessageListFragment.kt @@ -18,6 +18,8 @@ import de.kuschku.libquassel.protocol.MsgId import de.kuschku.libquassel.quassel.syncables.BufferSyncer import de.kuschku.quasseldroid_ng.R import de.kuschku.quasseldroid_ng.persistence.QuasselDatabase +import de.kuschku.quasseldroid_ng.ui.settings.Settings +import de.kuschku.quasseldroid_ng.ui.settings.data.AppearanceSettings import de.kuschku.quasseldroid_ng.ui.settings.data.BacklogSettings import de.kuschku.quasseldroid_ng.ui.viewmodel.QuasselViewModel import de.kuschku.quasseldroid_ng.util.AndroidHandlerThread @@ -32,6 +34,7 @@ class MessageListFragment : ServiceBoundFragment() { lateinit var scrollDown: FloatingActionButton private lateinit var viewModel: QuasselViewModel + private lateinit var appearanceSettings: AppearanceSettings private val handler = AndroidHandlerThread("Chat") @@ -48,6 +51,7 @@ class MessageListFragment : ServiceBoundFragment() { handler.onCreate() super.onCreate(savedInstanceState) viewModel = ViewModelProviders.of(activity!!)[QuasselViewModel::class.java] + appearanceSettings = Settings.appearance(activity!!) setHasOptionsMenu(true) } @@ -65,7 +69,7 @@ class MessageListFragment : ServiceBoundFragment() { linearLayoutManager = LinearLayoutManager(context) linearLayoutManager.reverseLayout = true - adapter = MessageAdapter(context!!) + adapter = MessageAdapter(context!!, appearanceSettings) messageList.adapter = adapter messageList.layoutManager = linearLayoutManager messageList.itemAnimator = null diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/QuasselMessageRenderer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/QuasselMessageRenderer.kt index 3f250853e4d5927c25e590cc2b51d8ef92628260..c797b728a3b0c822f21ff78c2c7f8131d94e3b14 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/QuasselMessageRenderer.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/QuasselMessageRenderer.kt @@ -4,7 +4,6 @@ import android.content.Context import android.graphics.Typeface import android.text.SpannableString import android.text.Spanned -import android.text.format.DateFormat import android.text.style.ForegroundColorSpan import android.text.style.StyleSpan import android.text.style.URLSpan @@ -26,19 +25,24 @@ import de.kuschku.quasseldroid_ng.util.ui.SpanFormatter import org.intellij.lang.annotations.Language import org.threeten.bp.ZoneId import org.threeten.bp.format.DateTimeFormatter -import java.text.SimpleDateFormat class QuasselMessageRenderer( private val context: Context, private val appearanceSettings: AppearanceSettings ) : MessageRenderer { private val timeFormatter = DateTimeFormatter.ofPattern( - if (appearanceSettings.timeFormat.isNotBlank()) { - appearanceSettings.timeFormat - } else { - (DateFormat.getTimeFormat(context) as SimpleDateFormat).toLocalizedPattern() - } + timePattern(appearanceSettings.showSeconds, appearanceSettings.use24hClock) ) + + private fun timePattern(showSeconds: Boolean, + use24hClock: Boolean) = when (use24hClock to showSeconds) { + false to true -> "hh:mm:ss a" + false to false -> "hh:mm a" + + true to true -> "HH:mm:ss" + else -> "HH:mm" + } + private lateinit var senderColors: IntArray private val zoneId = ZoneId.systemDefault() @@ -324,8 +328,8 @@ class QuasselMessageRenderer( private fun formatPrefix(prefix: String, highlight: Boolean) = when (appearanceSettings.showPrefix) { - ShowPrefixMode.ALL -> prefix - ShowPrefixMode.FIRST -> prefix.substring(0, Math.min(prefix.length, 1)) - ShowPrefixMode.NONE -> "" + ShowPrefixMode.ALL -> prefix + ShowPrefixMode.HIGHEST -> prefix.substring(0, Math.min(prefix.length, 1)) + ShowPrefixMode.NONE -> "" } } \ No newline at end of file diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/Settings.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/Settings.kt index 91a4ab81801e1e5d16c6da6783d040fa6a66b806..402daaf10441bb60695037988afd03ee7595cc4d 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/Settings.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/Settings.kt @@ -1,10 +1,61 @@ package de.kuschku.quasseldroid_ng.ui.settings import android.content.Context +import android.content.SharedPreferences +import android.preference.PreferenceManager +import de.kuschku.quasseldroid_ng.R import de.kuschku.quasseldroid_ng.ui.settings.data.AppearanceSettings +import de.kuschku.quasseldroid_ng.ui.settings.data.AppearanceSettings.* import de.kuschku.quasseldroid_ng.ui.settings.data.BacklogSettings object Settings { - fun appearance(context: Context) = AppearanceSettings() - fun backlog(context: Context) = BacklogSettings() + private fun <T> settings(context: Context, + f: SharedPreferences.() -> T) = PreferenceManager.getDefaultSharedPreferences( + context + ).f() + + fun appearance(context: Context) = settings(context) { + AppearanceSettings( + theme = Theme.valueOf( + getString( + context.getString(R.string.preference_theme_key), + AppearanceSettings.DEFAULT.theme.name + ) + ), + showPrefix = ShowPrefixMode.valueOf( + getString( + context.getString(R.string.preference_show_prefix_key), + AppearanceSettings.DEFAULT.showPrefix.name + ) + ), + colorizeNicknames = ColorizeNicknamesMode.valueOf( + getString( + context.getString(R.string.preference_colorize_nicknames_key), + AppearanceSettings.DEFAULT.colorizeNicknames.name + ) + ), + colorizeMirc = getBoolean( + context.getString(R.string.preference_colorize_mirc_key), + AppearanceSettings.DEFAULT.colorizeMirc + ), + showSeconds = getBoolean( + context.getString(R.string.preference_show_seconds_key), + AppearanceSettings.DEFAULT.showSeconds + ), + use24hClock = getBoolean( + context.getString(R.string.preference_use_24h_clock_key), + AppearanceSettings.DEFAULT.use24hClock + ), + showLag = getBoolean( + context.getString(R.string.preference_show_lag_key), + AppearanceSettings.DEFAULT.showLag + ) + ) + } + + fun backlog(context: Context) = settings(context) { + BacklogSettings( + + ) + } } \ No newline at end of file diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/SettingsActivity.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/SettingsActivity.kt new file mode 100644 index 0000000000000000000000000000000000000000..c5515e7109d8908e8eef61040fe4f6ff5130b7cc --- /dev/null +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/SettingsActivity.kt @@ -0,0 +1,22 @@ +package de.kuschku.quasseldroid_ng.ui.settings + +import android.os.Bundle +import android.support.v7.widget.Toolbar +import butterknife.BindView +import butterknife.ButterKnife +import de.kuschku.quasseldroid_ng.R +import de.kuschku.quasseldroid_ng.util.service.ServiceBoundActivity + +class SettingsActivity : ServiceBoundActivity() { + @BindView(R.id.toolbar) + lateinit var toolbar: Toolbar + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_settings) + ButterKnife.bind(this) + + setSupportActionBar(toolbar) + supportActionBar?.setDisplayHomeAsUpEnabled(true) + } +} \ No newline at end of file diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/SettingsFragment.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/SettingsFragment.kt new file mode 100644 index 0000000000000000000000000000000000000000..7c6442061668417a3f0156120429b224983f8167 --- /dev/null +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/SettingsFragment.kt @@ -0,0 +1,57 @@ +package de.kuschku.quasseldroid_ng.ui.settings + +import android.content.SharedPreferences +import android.os.Bundle +import android.support.v7.preference.ListPreference +import android.support.v7.preference.Preference +import android.support.v7.preference.PreferenceFragmentCompat +import android.support.v7.preference.PreferenceGroup +import de.kuschku.quasseldroid_ng.R +import de.kuschku.quasseldroid_ng.ui.settings.data.AppearanceSettings + +class SettingsFragment : PreferenceFragmentCompat(), + SharedPreferences.OnSharedPreferenceChangeListener { + var appearanceSettings: AppearanceSettings? = null + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + appearanceSettings = Settings.appearance(context!!) + } + + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { + setPreferencesFromResource(R.xml.preferences, rootKey) + } + + override fun onStart() { + super.onStart() + preferenceScreen.sharedPreferences.registerOnSharedPreferenceChangeListener(this) + initSummary(preferenceScreen) + } + + override fun onStop() { + preferenceScreen.sharedPreferences.unregisterOnSharedPreferenceChangeListener(this) + super.onStop() + } + + override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) { + updateSummary(findPreference(key)) + if (appearanceSettings?.theme != null && + appearanceSettings?.theme != Settings.appearance(context!!).theme) { + activity?.recreate() + } + } + + fun updateSummary(preference: Preference) { + if (preference is ListPreference) { + preference.summary = preference.entry + } + } + + fun initSummary(preference: Preference) { + if (preference is PreferenceGroup) { + (0 until preference.preferenceCount).map(preference::getPreference).forEach(::initSummary) + } else { + updateSummary(preference) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/data/AppearanceSettings.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/data/AppearanceSettings.kt index 0051ebaebbcf57879697222ceea303bf256befef..fa9d8f49a594d5ebb027fe5a3bb8d57f21a045a6 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/data/AppearanceSettings.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/data/AppearanceSettings.kt @@ -4,10 +4,11 @@ import android.support.annotation.StyleRes import de.kuschku.quasseldroid_ng.R data class AppearanceSettings( - val showPrefix: ShowPrefixMode = ShowPrefixMode.FIRST, + val showPrefix: ShowPrefixMode = ShowPrefixMode.HIGHEST, val colorizeNicknames: ColorizeNicknamesMode = ColorizeNicknamesMode.ALL_BUT_MINE, val colorizeMirc: Boolean = true, - val timeFormat: String = "", + val showSeconds: Boolean = false, + val use24hClock: Boolean = true, val showLag: Boolean = true, val theme: Theme = Theme.QUASSEL_LIGHT ) { @@ -19,15 +20,19 @@ data class AppearanceSettings( enum class ShowPrefixMode { ALL, - FIRST, + HIGHEST, NONE } enum class Theme(@StyleRes val style: Int) { QUASSEL_LIGHT(R.style.Theme_ChatTheme_Quassel_Light), QUASSEL_DARK(R.style.Theme_ChatTheme_Quassel_Dark), + AMOLED(R.style.Theme_ChatTheme_Amoled), SOLARIZED_LIGHT(R.style.Theme_ChatTheme_Solarized_Light), - SOLARIZED_DARK(R.style.Theme_ChatTheme_Solarized_Dark), - AMOLED(R.style.Theme_ChatTheme_Amoled) + SOLARIZED_DARK(R.style.Theme_ChatTheme_Solarized_Dark) + } + + companion object { + val DEFAULT = AppearanceSettings() } } \ No newline at end of file diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/data/BacklogSettings.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/data/BacklogSettings.kt index f72172969267f4fc249b5f10398dec2e626db9b5..f432c9262a628fc0923a4d226b6c4d45dd61fd01 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/data/BacklogSettings.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/data/BacklogSettings.kt @@ -2,4 +2,8 @@ package de.kuschku.quasseldroid_ng.ui.settings.data data class BacklogSettings( val dynamicAmount: Int = 20 -) \ No newline at end of file +) { + companion object { + val DEFAULT = BacklogSettings() + } +} \ No newline at end of file diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/SetupActivity.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/SetupActivity.kt index cbee7923d676562964e11aec724af13b0153db99..8ff4782130e2cf162e5752af6694eeab6f4367d6 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/SetupActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/SetupActivity.kt @@ -60,6 +60,7 @@ abstract class SetupActivity : AppCompatActivity() { else R.drawable.ic_arrow_right button.setImageResource(drawable) + currentPage.value?.requestFocus() } fun updateRecentsHeader() diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/SlideFragment.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/SlideFragment.kt index b06899e1aa18be27c87eebc5db1f532bff9cd9be..c12ea229705da9ef48a0db7d21f2824998a55409 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/SlideFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/SlideFragment.kt @@ -69,6 +69,10 @@ abstract class SlideFragment : Fragment() { abstract fun getData(data: Bundle) var initData: Bundle? = null + fun requestFocus() { + this.view?.requestFocus() + } + protected abstract fun onCreateContent(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View } diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/service/ServiceBoundActivity.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/util/service/ServiceBoundActivity.kt index b2367185da0446939567b18fd6ff0ec22fb0b369..a64921334a1d183457d7e4512689446bd747db67 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/util/service/ServiceBoundActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/util/service/ServiceBoundActivity.kt @@ -24,6 +24,7 @@ abstract class ServiceBoundActivity : AppCompatActivity() { protected lateinit var appearanceSettings: AppearanceSettings override fun onCreate(savedInstanceState: Bundle?) { + connection.context = this appearanceSettings = Settings.appearance(this) setTheme(appearanceSettings.theme.style) @@ -41,6 +42,9 @@ abstract class ServiceBoundActivity : AppCompatActivity() { } override fun onStart() { + if (Settings.appearance(this) != appearanceSettings) { + recreate() + } connection.bind() super.onStart() } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 4361f9d801378105f163e11c864b1d99afebffaf..076e9706c5fe5d02e1f76218a4eef174a8ad151f 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -4,8 +4,7 @@ android:id="@+id/drawerLayout" android:layout_width="match_parent" android:layout_height="match_parent" - android:fitsSystemWindows="true" - tools:theme="@style/Theme.ChatTheme.Quassel_Light"> + android:fitsSystemWindows="true"> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml new file mode 100644 index 0000000000000000000000000000000000000000..f9a771bbe46637ac6b2284845cc97b1b0cd773c3 --- /dev/null +++ b/app/src/main/res/layout/activity_settings.xml @@ -0,0 +1,38 @@ +<android.support.v4.widget.DrawerLayout 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" + android:fitsSystemWindows="true"> + + <LinearLayout 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" + android:fitsSystemWindows="true" + android:orientation="vertical"> + + <android.support.design.widget.AppBarLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:theme="?attr/actionBarTheme"> + + <android.support.v7.widget.Toolbar + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="?attr/actionBarSize" + app:contentInsetStartWithNavigation="0dp" + app:popupTheme="@style/Widget.PopupOverlay" /> + + </android.support.design.widget.AppBarLayout> + + <fragment + android:id="@+id/settingsFragment" + android:name="de.kuschku.quasseldroid_ng.ui.settings.SettingsFragment" + android:layout_width="fill_parent" + android:layout_height="fill_parent" + tools:layout="@xml/preferences" /> + </LinearLayout> + +</android.support.v4.widget.DrawerLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_setup.xml b/app/src/main/res/layout/activity_setup.xml index 81175f0858495b6b50730a826bcc93c7773f14f2..a0a74dc86be303ce563739282ede233f79587ee3 100644 --- a/app/src/main/res/layout/activity_setup.xml +++ b/app/src/main/res/layout/activity_setup.xml @@ -2,8 +2,7 @@ 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:theme="@style/Theme.SetupTheme"> + android:layout_height="match_parent"> <android.support.v4.view.ViewPager android:id="@+id/view_pager" diff --git a/app/src/main/res/layout/fragment_chat_list.xml b/app/src/main/res/layout/fragment_chat_list.xml index 1dc6351ef4238da43b6c5155a0b9e161a55d59e3..58460b41ae84529c3c0440d6f78e1002b06d03cf 100644 --- a/app/src/main/res/layout/fragment_chat_list.xml +++ b/app/src/main/res/layout/fragment_chat_list.xml @@ -3,9 +3,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:orientation="vertical" - tools:background="@android:color/background_light" - tools:theme="@style/Theme.ChatTheme.Quassel_Light"> + android:orientation="vertical"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" diff --git a/app/src/main/res/layout/fragment_messages.xml b/app/src/main/res/layout/fragment_messages.xml index e8323981d4ac003c92ac61fff54b2727255a973a..86ae1bcc52ac85d1f79cb8721aff7a4ecf60dcec 100644 --- a/app/src/main/res/layout/fragment_messages.xml +++ b/app/src/main/res/layout/fragment_messages.xml @@ -5,8 +5,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:background="?attr/colorBackground" - tools:background="@android:color/background_light" - tools:theme="@style/Theme.ChatTheme.Quassel_Light"> + tools:showIn="@layout/activity_main"> <android.support.v7.widget.RecyclerView android:id="@+id/messages" diff --git a/app/src/main/res/layout/fragment_toolbar.xml b/app/src/main/res/layout/fragment_toolbar.xml index 6a2d724136b56e93bf09cff79b8275f274cd94c1..ee13a2287cf686b2c10a14933bb914dc009a7f6f 100644 --- a/app/src/main/res/layout/fragment_toolbar.xml +++ b/app/src/main/res/layout/fragment_toolbar.xml @@ -12,8 +12,7 @@ android:minHeight="?attr/actionBarSize" android:orientation="vertical" android:theme="?attr/actionBarTheme" - tools:showIn="@layout/activity_main" - tools:theme="@style/Widget.AppBarOverlay"> + tools:showIn="@layout/activity_main"> <LinearLayout android:layout_width="wrap_content" diff --git a/app/src/main/res/layout/setup_account_connection.xml b/app/src/main/res/layout/setup_account_connection.xml index 162ac43213371937e15b09ad92ace3b9e260f9f8..499b64e16bb60a4abfd27541a86389de1490debb 100644 --- a/app/src/main/res/layout/setup_account_connection.xml +++ b/app/src/main/res/layout/setup_account_connection.xml @@ -2,13 +2,10 @@ <LinearLayout 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" android:orientation="vertical" - android:padding="32dp" - tools:background="@android:color/background_light" - tools:theme="@style/Theme.SetupTheme"> + android:padding="32dp"> <android.support.design.widget.TextInputLayout android:id="@+id/hostWrapper" diff --git a/app/src/main/res/layout/setup_account_edit.xml b/app/src/main/res/layout/setup_account_edit.xml index bfc7e62d96e36e2c5b9b82284df2bc032a5aa20d..715e30623c0fea8627fa90c4af2bb122f10bed2e 100644 --- a/app/src/main/res/layout/setup_account_edit.xml +++ b/app/src/main/res/layout/setup_account_edit.xml @@ -2,9 +2,7 @@ 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:background="@android:color/background_light" - tools:theme="@style/Theme.SetupTheme"> + android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" diff --git a/app/src/main/res/layout/setup_account_name.xml b/app/src/main/res/layout/setup_account_name.xml index 0bf1ecfcdeeaf9322f9ecf13f360f136a173b77e..591099361b76cb3175f4103e944b9ce1295ed465 100644 --- a/app/src/main/res/layout/setup_account_name.xml +++ b/app/src/main/res/layout/setup_account_name.xml @@ -1,12 +1,9 @@ <LinearLayout 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" android:orientation="vertical" - android:padding="32dp" - tools:background="@android:color/background_light" - tools:theme="@style/Theme.SetupTheme"> + android:padding="32dp"> <android.support.design.widget.TextInputLayout android:id="@+id/nameWrapper" diff --git a/app/src/main/res/layout/setup_account_user.xml b/app/src/main/res/layout/setup_account_user.xml index e75a654c6b53b5f8353ebaadceaf6e238e60a3d7..4468f2c97765ce2638a7e3fa30af1144cd47ea9a 100644 --- a/app/src/main/res/layout/setup_account_user.xml +++ b/app/src/main/res/layout/setup_account_user.xml @@ -1,12 +1,9 @@ <LinearLayout 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" android:orientation="vertical" - android:padding="32dp" - tools:background="@android:color/background_light" - tools:theme="@style/Theme.SetupTheme"> + android:padding="32dp"> <android.support.design.widget.TextInputLayout android:id="@+id/userWrapper" diff --git a/app/src/main/res/layout/setup_select_account.xml b/app/src/main/res/layout/setup_select_account.xml index b2e81ee8696bf6dd335f13139136d036d7cdc812..7961fd8dd0ef319afe62a4845749d9642e19615c 100644 --- a/app/src/main/res/layout/setup_select_account.xml +++ b/app/src/main/res/layout/setup_select_account.xml @@ -1,7 +1,4 @@ <android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" android:id="@+id/account_list" android:layout_width="match_parent" - android:layout_height="match_parent" - tools:background="@android:color/background_light" - tools:theme="@style/Theme.SetupTheme" /> + android:layout_height="match_parent" /> diff --git a/app/src/main/res/layout/setup_slide.xml b/app/src/main/res/layout/setup_slide.xml index 46f172494356c4b87a2d4ebabec78d8c9c227f1c..54045a751331f258934787416c9624d046f47ba1 100644 --- a/app/src/main/res/layout/setup_slide.xml +++ b/app/src/main/res/layout/setup_slide.xml @@ -2,9 +2,7 @@ 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:background="@android:color/background_light" - tools:theme="@style/Theme.SetupTheme"> + android:layout_height="match_parent"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" diff --git a/app/src/main/res/layout/widget_buffer.xml b/app/src/main/res/layout/widget_buffer.xml index 12fdcea158a009b13a8f0c76df5e2ef3f6b7ec14..d181160f35ab0807698ebb607967154d133a5294 100644 --- a/app/src/main/res/layout/widget_buffer.xml +++ b/app/src/main/res/layout/widget_buffer.xml @@ -8,9 +8,7 @@ android:paddingBottom="8dp" android:paddingLeft="16dp" android:paddingRight="16dp" - android:paddingTop="8dp" - tools:background="@android:color/background_light" - tools:theme="@style/Theme.ChatTheme.Quassel_Light"> + android:paddingTop="8dp"> <ImageView android:id="@+id/status" diff --git a/app/src/main/res/layout/widget_chatmessage_action.xml b/app/src/main/res/layout/widget_chatmessage_action.xml index b23606b69d52da75e35d8a0c2bf6241006157b2c..43dc3ce6c0c3bda44dba857ed6ac535b2bc9def2 100644 --- a/app/src/main/res/layout/widget_chatmessage_action.xml +++ b/app/src/main/res/layout/widget_chatmessage_action.xml @@ -26,9 +26,7 @@ android:clickable="true" android:focusable="true" android:orientation="vertical" - android:textAppearance="?android:attr/textAppearanceListItemSmall" - tools:background="@android:color/background_light" - tools:theme="@style/Theme.ChatTheme.Quassel_Light"> + android:textAppearance="?android:attr/textAppearanceListItemSmall"> <LinearLayout android:layout_width="match_parent" diff --git a/app/src/main/res/layout/widget_chatmessage_error.xml b/app/src/main/res/layout/widget_chatmessage_error.xml index 1485a969af193deb83031debda53c1c9338ceea2..9b8eac026f9133171996190ef6e38b707fe341c5 100644 --- a/app/src/main/res/layout/widget_chatmessage_error.xml +++ b/app/src/main/res/layout/widget_chatmessage_error.xml @@ -6,9 +6,7 @@ android:clickable="true" android:focusable="true" android:orientation="vertical" - android:textAppearance="?android:attr/textAppearanceListItemSmall" - tools:background="@android:color/background_light" - tools:theme="@style/Theme.ChatTheme.Quassel_Light"> + android:textAppearance="?android:attr/textAppearanceListItemSmall"> <LinearLayout android:layout_width="match_parent" diff --git a/app/src/main/res/layout/widget_chatmessage_info.xml b/app/src/main/res/layout/widget_chatmessage_info.xml index b6d1f048cf71aa700b0b50619f8fb86bfcf1b1c2..0748dd14c9a74f76a7f7ed3f44919772606f04b6 100644 --- a/app/src/main/res/layout/widget_chatmessage_info.xml +++ b/app/src/main/res/layout/widget_chatmessage_info.xml @@ -6,9 +6,7 @@ android:clickable="true" android:focusable="true" android:orientation="vertical" - android:textAppearance="?android:attr/textAppearanceListItemSmall" - tools:background="@android:color/background_light" - tools:theme="@style/Theme.ChatTheme.Quassel_Light"> + android:textAppearance="?android:attr/textAppearanceListItemSmall"> <LinearLayout android:layout_width="match_parent" diff --git a/app/src/main/res/layout/widget_chatmessage_notice.xml b/app/src/main/res/layout/widget_chatmessage_notice.xml index 755a7d1009183e6a0f1db14538a4c104f9cee9e4..facbf98b298215e434b981ce39342d80292e5349 100644 --- a/app/src/main/res/layout/widget_chatmessage_notice.xml +++ b/app/src/main/res/layout/widget_chatmessage_notice.xml @@ -6,9 +6,7 @@ android:clickable="true" android:focusable="true" android:orientation="vertical" - android:textAppearance="?android:attr/textAppearanceListItemSmall" - tools:background="@android:color/background_light" - tools:theme="@style/Theme.ChatTheme.Quassel_Light"> + android:textAppearance="?android:attr/textAppearanceListItemSmall"> <LinearLayout android:layout_width="match_parent" diff --git a/app/src/main/res/layout/widget_chatmessage_placeholder.xml b/app/src/main/res/layout/widget_chatmessage_placeholder.xml index 5021308b2aa74232060e1d5f153874017275b83f..bb9e5c8eb5c2f7713a24fea296ca64afe822f3b2 100644 --- a/app/src/main/res/layout/widget_chatmessage_placeholder.xml +++ b/app/src/main/res/layout/widget_chatmessage_placeholder.xml @@ -1,10 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" - android:layout_height="48dp" - tools:background="@android:color/background_light" - tools:theme="@style/Theme.ChatTheme.Quassel_Light"> + android:layout_height="48dp"> <TextView android:id="@+id/time" diff --git a/app/src/main/res/layout/widget_chatmessage_plain.xml b/app/src/main/res/layout/widget_chatmessage_plain.xml index 54b7db7320d4b5ccd225a3c5537e2bc93d805013..6828a4424a1e38d8324d098652e02176a5ec8061 100644 --- a/app/src/main/res/layout/widget_chatmessage_plain.xml +++ b/app/src/main/res/layout/widget_chatmessage_plain.xml @@ -6,9 +6,7 @@ android:clickable="true" android:focusable="true" android:orientation="vertical" - android:textAppearance="?android:attr/textAppearanceListItemSmall" - tools:background="@android:color/background_light" - tools:theme="@style/Theme.ChatTheme.Quassel_Light"> + android:textAppearance="?android:attr/textAppearanceListItemSmall"> <LinearLayout android:layout_width="match_parent" diff --git a/app/src/main/res/layout/widget_chatmessage_server.xml b/app/src/main/res/layout/widget_chatmessage_server.xml index b9ba45aec48dfe43ce75bc1ee94207abec9bd7cd..7e5f7caf9918fa222f1e5489657dd71efd491537 100644 --- a/app/src/main/res/layout/widget_chatmessage_server.xml +++ b/app/src/main/res/layout/widget_chatmessage_server.xml @@ -6,9 +6,7 @@ android:clickable="true" android:focusable="true" android:orientation="vertical" - android:textAppearance="?android:attr/textAppearanceListItemSmall" - tools:background="@android:color/background_light" - tools:theme="@style/Theme.ChatTheme.Quassel_Light"> + android:textAppearance="?android:attr/textAppearanceListItemSmall"> <LinearLayout android:layout_width="match_parent" diff --git a/app/src/main/res/layout/widget_core_account.xml b/app/src/main/res/layout/widget_core_account.xml index 041147810d3df2fa90cd0e5f81fd9e1552b392f4..0a8e02ba005d22125458cdbd53f529e53797e47a 100644 --- a/app/src/main/res/layout/widget_core_account.xml +++ b/app/src/main/res/layout/widget_core_account.xml @@ -9,8 +9,7 @@ android:focusableInTouchMode="false" android:orientation="horizontal" android:paddingLeft="16dp" - android:paddingRight="16dp" - tools:theme="@style/Theme.ChatTheme.Quassel_Light"> + android:paddingRight="16dp"> <LinearLayout android:layout_width="48dp" diff --git a/app/src/main/res/layout/widget_core_account_add.xml b/app/src/main/res/layout/widget_core_account_add.xml index 464c45b4e06c2476f6d530314b308b3bbaa1f2b1..f6c839109aa5e42884d241cceb53dad7092f69d1 100644 --- a/app/src/main/res/layout/widget_core_account_add.xml +++ b/app/src/main/res/layout/widget_core_account_add.xml @@ -9,8 +9,7 @@ android:focusableInTouchMode="false" android:orientation="horizontal" android:paddingLeft="16dp" - android:paddingRight="16dp" - tools:theme="@style/Theme.ChatTheme.Quassel_Light"> + android:paddingRight="16dp"> <ImageView android:layout_width="32dp" diff --git a/app/src/main/res/layout/widget_network.xml b/app/src/main/res/layout/widget_network.xml index 8d68d7c8e3f95f8a3391829603947a1dc80aec04..89af4b1c52a445d50db5290544a8f48f6b85554e 100644 --- a/app/src/main/res/layout/widget_network.xml +++ b/app/src/main/res/layout/widget_network.xml @@ -5,9 +5,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/selectableItemBackground" - android:orientation="vertical" - tools:background="@android:color/background_light" - tools:theme="@style/Theme.ChatTheme.Quassel_Light"> + android:orientation="vertical"> <View android:layout_width="match_parent" diff --git a/app/src/main/res/layout/widget_nick.xml b/app/src/main/res/layout/widget_nick.xml index 16673d31abc06a35d8416281e92252be682a5c7c..91a35f4a4011392f176da556fdf62473a385ad13 100644 --- a/app/src/main/res/layout/widget_nick.xml +++ b/app/src/main/res/layout/widget_nick.xml @@ -10,9 +10,7 @@ android:paddingEnd="?listPreferredItemPaddingRight" android:paddingLeft="?listPreferredItemPaddingLeft" android:paddingRight="?listPreferredItemPaddingRight" - android:paddingStart="?listPreferredItemPaddingLeft" - tools:background="@android:color/background_light" - tools:theme="@style/Theme.ChatTheme.Quassel_Light"> + android:paddingStart="?listPreferredItemPaddingLeft"> <FrameLayout android:id="@+id/modesContainer" diff --git a/app/src/main/res/layout/widget_nick_away.xml b/app/src/main/res/layout/widget_nick_away.xml index d97fe0069cca1ac730c3f1806fdd38814a875e61..29837a9bc98f54f398eaab81535d007cc54cf2a3 100644 --- a/app/src/main/res/layout/widget_nick_away.xml +++ b/app/src/main/res/layout/widget_nick_away.xml @@ -10,9 +10,7 @@ android:paddingEnd="?listPreferredItemPaddingRight" android:paddingLeft="?listPreferredItemPaddingLeft" android:paddingRight="?listPreferredItemPaddingRight" - android:paddingStart="?listPreferredItemPaddingLeft" - tools:background="@android:color/background_light" - tools:theme="@style/Theme.ChatTheme.Quassel_Light"> + android:paddingStart="?listPreferredItemPaddingLeft"> <FrameLayout android:id="@+id/modesContainer" diff --git a/app/src/main/res/layout/widget_spinner_item_inline.xml b/app/src/main/res/layout/widget_spinner_item_inline.xml index bdbc09345fbc542033624b6800f2103c5f504507..b21fc81584630bf85d2771c9dd2c164f7013e61c 100644 --- a/app/src/main/res/layout/widget_spinner_item_inline.xml +++ b/app/src/main/res/layout/widget_spinner_item_inline.xml @@ -1,9 +1,7 @@ <TextView xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" android:id="@android:id/text1" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:minHeight="48dp" - android:textAppearance="?android:attr/textAppearanceListItemSmall" - tools:theme="@style/Theme.ChatTheme.Quassel_Light" /> + android:textAppearance="?android:attr/textAppearanceListItemSmall" /> diff --git a/app/src/main/res/layout/widget_spinner_item_toolbar.xml b/app/src/main/res/layout/widget_spinner_item_toolbar.xml index 5c14c6cad6ed5af209553ebc36142ecfab1d4d1f..fa2ad16dc1baf60651bce7e96127b01ba6600e77 100644 --- a/app/src/main/res/layout/widget_spinner_item_toolbar.xml +++ b/app/src/main/res/layout/widget_spinner_item_toolbar.xml @@ -8,5 +8,4 @@ android:paddingLeft="16dp" android:paddingRight="16dp" android:textAppearance="?android:attr/textAppearanceListItemSmall" - tools:text="All Chats" - tools:theme="@style/Theme.ChatTheme.Quassel_Light" /> + tools:text="All Chats" /> diff --git a/app/src/main/res/values/preferences.xml b/app/src/main/res/values/preferences.xml new file mode 100644 index 0000000000000000000000000000000000000000..6af1e9c181ce0a20d51d166578ad447bbb541859 --- /dev/null +++ b/app/src/main/res/values/preferences.xml @@ -0,0 +1,80 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <string name="preference_appearance_title">Appearance</string> + + <string name="preference_theme_key" translatable="false">theme</string> + <string name="preference_theme_title">Theme</string> + <string name="preference_theme_entry_quassel_light">Quassel (Light)</string> + <string name="preference_theme_entry_quassel_dark">Quassel (Dark)</string> + <string name="preference_theme_entry_amoled">AMOLED</string> + <string name="preference_theme_entry_solarized_light">Solarized (Light)</string> + <string name="preference_theme_entry_solarized_dark">Solarized (Dark)</string> + <string-array name="preference_theme_entries"> + <item>@string/preference_theme_entry_quassel_light</item> + <item>@string/preference_theme_entry_quassel_dark</item> + <item>@string/preference_theme_entry_amoled</item> + <item>@string/preference_theme_entry_solarized_light</item> + <item>@string/preference_theme_entry_solarized_dark</item> + </string-array> + <string-array name="preference_theme_entryvalues"> + <item>QUASSEL_LIGHT</item> + <item>QUASSEL_DARK</item> + <item>AMOLED</item> + <item>SOLARIZED_LIGHT</item> + <item>SOLARIZED_DARK</item> + </string-array> + + <string name="preference_colorize_mirc_key" translatable="false">colorize_mirc</string> + <string name="preference_colorize_mirc_title">Use mIRC Colors</string> + <string name="preference_colorize_mirc_summaryon">Show mIRC colors in messages</string> + <string name="preference_colorize_mirc_summaryoff">Strip mIRC colors from messages</string> + + <string name="preference_colorize_nicknames_key" translatable="false">colorize_nicknames</string> + <string name="preference_colorize_nicknames_title">Colorize nicknames</string> + <string name="preference_colorize_nicknames_entry_all">All nicks</string> + <string name="preference_colorize_nicknames_entry_all_but_mine">All but own nick</string> + <string name="preference_colorize_nicknames_entry_none">No nicks</string> + <string-array name="preference_colorize_nicknames_entries"> + <item>@string/preference_colorize_nicknames_entry_all</item> + <item>@string/preference_colorize_nicknames_entry_all_but_mine</item> + <item>@string/preference_colorize_nicknames_entry_none</item> + </string-array> + <string-array name="preference_colorize_nicknames_entryvalues"> + <item>ALL</item> + <item>ALL_BUT_MINE</item> + <item>NONE</item> + </string-array> + + <string name="preference_show_prefix_key" translatable="false">show_prefix</string> + <string name="preference_show_prefix_title">Show sendermodes</string> + <string name="preference_show_prefix_entry_all">Allv modes</string> + <string name="preference_show_prefix_entry_highest">Highest mode</string> + <string name="preference_show_prefix_entry_none">No modes</string> + <string-array name="preference_show_prefix_entries"> + <item>@string/preference_show_prefix_entry_all</item> + <item>@string/preference_show_prefix_entry_highest</item> + <item>@string/preference_show_prefix_entry_none</item> + </string-array> + <string-array name="preference_show_prefix_entryvalues"> + <item>ALL</item> + <item>HIGHEST</item> + <item>NONE</item> + </string-array> + + <string name="preference_show_seconds_key" translatable="false">show_seconds</string> + <string name="preference_show_seconds_title">Show Seconds</string> + + <string name="preference_use_24h_clock_key" translatable="false">use_24h_clock</string> + <string name="preference_use_24h_clock_title">Use 24h Clock</string> + + <string name="preference_show_lag_key" translatable="false">show_lag</string> + <string name="preference_show_lag_title">Show lag</string> + <string name="preference_show_lag_summary">Displays the lag between client and core in the action bar</string> + + + <string name="preference_backlog_title">Backlog</string> + + <string name="preference_dynamic_fetch_key" translatable="false">dynamic_fetch</string> + <string name="preference_dynamic_fetch_title">Dynamic Fetch Amount</string> + <string name="preference_dynamic_fetch_summary">The number of backlog messages to fetch each time</string> +</resources> \ No newline at end of file diff --git a/app/src/main/res/values/themes_amoled.xml b/app/src/main/res/values/themes_amoled.xml index 342af0aa28e27c0392b8c4f69a43110a01530f17..378dccbf5bc13c6936de26d49ee42ef9bda18adc 100644 --- a/app/src/main/res/values/themes_amoled.xml +++ b/app/src/main/res/values/themes_amoled.xml @@ -1,9 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <resources> - <string name="themeAmoledkName">AMOLED (Black)</string> - <string name="themeAmoledId">AMOLED</string> - + <color name="amoled_background">#000000</color> <style name="Theme.ChatTheme.Amoled" parent="Theme.ChatTheme"> <item name="colorPrimary">#000</item> <item name="colorPrimaryDark">#000</item> @@ -48,6 +46,4 @@ <item name="colorTintMessage">#2277dd</item> <item name="colorTintHighlight">#ff8811</item> </style> - - <color name="amoled_background">#000000</color> </resources> diff --git a/app/src/main/res/values/themes_base.xml b/app/src/main/res/values/themes_base.xml index 7557a2d36936e6d70d64d99774c67d13280c0a2b..a0d987b33571b22b6075cc78a7fc4da508b94394 100644 --- a/app/src/main/res/values/themes_base.xml +++ b/app/src/main/res/values/themes_base.xml @@ -35,8 +35,7 @@ <style name="Theme.ChatTheme" parent="Base.ChatTheme"> <item name="actionBarTheme">@style/Widget.AppBarOverlay</item> <item name="formatBarTheme">@style/Widget.AppBarOverlay</item> - - <item name="android:windowBackground">@null</item> + <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item> <item name="windowActionModeOverlay">true</item> @@ -71,8 +70,7 @@ <style name="Theme.ChatTheme.Light" parent="Base.ChatTheme.Light"> <item name="actionBarTheme">@style/Widget.AppBarOverlay</item> <item name="formatBarTheme">@style/Widget.AppBarOverlay.Light</item> - - <item name="android:windowBackground">@null</item> + <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item> <item name="windowActionModeOverlay">true</item> diff --git a/app/src/main/res/values/themes_quassel.xml b/app/src/main/res/values/themes_quassel.xml index 918278e903c36915395890ca9f31c675143df6b8..aa5fab1c6367b353290dda0d95cd7a4cef3d250e 100644 --- a/app/src/main/res/values/themes_quassel.xml +++ b/app/src/main/res/values/themes_quassel.xml @@ -1,9 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <resources> - <string name="themeQuasselLightName">Quasselâ„¢ (Light)</string> - <string name="themeQuasselLightId">QUASSEL_LIGHT</string> - + <color name="quassel_light_background">#fafafa</color> <style name="Theme.ChatTheme.Quassel_Light" parent="Theme.ChatTheme.Light"> <item name="senderColor0">#cc0000</item> <item name="senderColor1">#006cad</item> @@ -31,6 +29,7 @@ <item name="colorForegroundMirc">0x1</item> + <item name="android:windowBackground">@color/quassel_light_background</item> <item name="colorBackground">#FAFAFA</item> <item name="colorBackgroundHighlight">#FFA726</item> <item name="colorBackgroundSecondary">@null</item> @@ -44,9 +43,7 @@ <item name="colorTintHighlight">#ff8811</item> </style> - <string name="themeQuasselDarkName">Quasselâ„¢ (Dark)</string> - <string name="themeQuasselDarkId">QUASSEL_DARK</string> - + <color name="quassel_dark_background">#303030</color> <style name="Theme.ChatTheme.Quassel_Dark" parent="Theme.ChatTheme"> <item name="senderColor0">#cc0000</item> <item name="senderColor1">#006cad</item> @@ -74,6 +71,7 @@ <item name="colorForegroundMirc">0x0</item> + <item name="android:windowBackground">@color/quassel_dark_background</item> <item name="colorBackground">#303030</item> <item name="colorBackgroundHighlight">#FFA726</item> <item name="colorBackgroundSecondary">@null</item> diff --git a/app/src/main/res/values/themes_solarized.xml b/app/src/main/res/values/themes_solarized.xml index 926604c427c343b434fe8fcd278ead43a54238fa..38d84d9c7ba5de97e3765aa899ea544ed9dcfd37 100644 --- a/app/src/main/res/values/themes_solarized.xml +++ b/app/src/main/res/values/themes_solarized.xml @@ -1,9 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <resources> - <string name="themeSolarizedLightName">Solarized (Light)</string> - <string name="themeSolarizedLightId">SOLARIZED_LIGHT</string> - + <color name="solarized_light_background">#FDF6E3</color> <style name="Theme.ChatTheme.Solarized_Light" parent="Theme.ChatTheme.Light"> <item name="colorPrimary">?attr/colorBackgroundCard</item> <item name="colorPrimaryDark">#b0ac9e</item> @@ -35,8 +33,9 @@ <item name="colorForegroundNotice">#B58900</item> <item name="colorForegroundError">#B00000</item> - <item name="colorForegroundMirc">0xF</item> + <item name="colorForegroundMirc">0x1</item> + <item name="android:windowBackground">@color/solarized_light_background</item> <item name="colorBackground">#FDF6E3</item> <item name="colorBackgroundHighlight">#D5A920</item> <item name="colorBackgroundSecondary">@null</item> @@ -50,9 +49,7 @@ <item name="colorTintHighlight">#EB6B36</item> </style> - <string name="themeSolarizedDarkName">Solarized (Dark)</string> - <string name="themeSolarizedDarkId">SOLARIZED_DARK</string> - + <color name="solarized_dark_background">#002B36</color> <style name="Theme.ChatTheme.Solarized_Dark" parent="Theme.ChatTheme"> <item name="colorPrimary">?attr/colorBackgroundCard</item> <item name="colorPrimaryDark">?attr/colorBackground</item> @@ -82,8 +79,9 @@ <item name="colorForegroundNotice">#B58900</item> <item name="colorForegroundError">#B00000</item> - <item name="colorForegroundMirc">0xF</item> + <item name="colorForegroundMirc">0x0</item> + <item name="android:windowBackground">@color/solarized_dark_background</item> <item name="colorBackground">#002B36</item> <item name="colorBackgroundHighlight">#D5A920</item> <item name="colorBackgroundSecondary">@null</item> diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml new file mode 100644 index 0000000000000000000000000000000000000000..d6438d601958ca62e03ac9ff15379eee5a04a059 --- /dev/null +++ b/app/src/main/res/xml/preferences.xml @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="utf-8"?> +<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> + <PreferenceCategory android:title="@string/preference_appearance_title"> + <ListPreference + android:defaultValue="QUASSEL_LIGHT" + android:entries="@array/preference_theme_entries" + android:entryValues="@array/preference_theme_entryvalues" + android:key="@string/preference_theme_key" + android:title="@string/preference_theme_title" /> + + <SwitchPreference + android:defaultValue="true" + android:key="@string/preference_colorize_mirc_key" + android:summaryOff="@string/preference_colorize_mirc_summaryoff" + android:summaryOn="@string/preference_colorize_mirc_summaryon" + android:title="@string/preference_colorize_mirc_title" /> + + <DropDownPreference + android:defaultValue="ALL_BUT_MINE" + android:entries="@array/preference_colorize_nicknames_entries" + android:entryValues="@array/preference_colorize_nicknames_entryvalues" + android:key="@string/preference_colorize_nicknames_key" + android:title="@string/preference_colorize_nicknames_title" /> + + <DropDownPreference + android:defaultValue="HIGHEST" + android:entries="@array/preference_show_prefix_entries" + android:entryValues="@array/preference_show_prefix_entryvalues" + android:key="@string/preference_show_prefix_key" + android:title="@string/preference_show_prefix_title" /> + + <SwitchPreference + android:defaultValue="false" + android:key="@string/preference_show_seconds_key" + android:title="@string/preference_show_seconds_title" /> + + <SwitchPreference + android:defaultValue="true" + android:key="@string/preference_use_24h_clock_key" + android:title="@string/preference_use_24h_clock_title" /> + + <SwitchPreference + android:defaultValue="false" + android:key="@string/preference_show_lag_key" + android:summary="@string/preference_show_lag_summary" + android:title="@string/preference_show_lag_title" /> + </PreferenceCategory> + + <PreferenceCategory android:title="@string/preference_backlog_title"> + <EditTextPreference + android:defaultValue="20" + android:inputType="number" + android:key="@string/preference_dynamic_fetch_key" + android:summary="@string/preference_dynamic_fetch_summary" + android:title="@string/preference_dynamic_fetch_title" /> + </PreferenceCategory> +</PreferenceScreen> \ No newline at end of file diff --git a/malheur/src/main/java/de/kuschku/malheur/collectors/ReportCollector.kt b/malheur/src/main/java/de/kuschku/malheur/collectors/ReportCollector.kt index 7c0eb23e6e9908d3b2347504454b316b85883028..ef90a81de53cbf54e454667f1aca6e9908a801e2 100644 --- a/malheur/src/main/java/de/kuschku/malheur/collectors/ReportCollector.kt +++ b/malheur/src/main/java/de/kuschku/malheur/collectors/ReportCollector.kt @@ -16,7 +16,7 @@ class ReportCollector(application: Application) : Collector<Report, ReportConfig override fun collect(context: CrashContext, config: ReportConfig) = Report( crash = crashCollector.collectIf(context, config.crash), threads = threadCollector.collectIf(context, config.threads), - logcat = logcatCollector.collectIf(context, config.logcat), + /*logcat = logcatCollector.collectIf(context, config.logcat),*/ application = applicationCollector.collectIf(context, config.application), device = deviceCollector.collectIf(context, config.device), environment = environmentCollector.collectIf(context, config.environment) diff --git a/malheur/src/main/java/de/kuschku/malheur/data/Report.kt b/malheur/src/main/java/de/kuschku/malheur/data/Report.kt index 8cb399f449c99a4005cd1bbe472c668bca48a394..ad675f7520824ac75aebed562223c4c584ee4a64 100644 --- a/malheur/src/main/java/de/kuschku/malheur/data/Report.kt +++ b/malheur/src/main/java/de/kuschku/malheur/data/Report.kt @@ -1,10 +1,10 @@ package de.kuschku.malheur.data data class Report( - val crash: CrashInfo?, - val threads: ThreadsInfo?, - val logcat: Map<String, List<String>?>?, - val application: AppInfo?, - val device: DeviceInfo?, - val environment: EnvInfo? + val crash: CrashInfo? = null, + val threads: ThreadsInfo? = null, + val logcat: Map<String, List<String>?>? = null, + val application: AppInfo? = null, + val device: DeviceInfo? = null, + val environment: EnvInfo? = null )